Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
R
Re2o
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Packages
Packages
Container Registry
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Levy--Falk Hugo
Re2o
Commits
aec2c645
Commit
aec2c645
authored
Jul 02, 2018
by
Gabriel Detraz
Committed by
grizzly
Sep 27, 2018
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Serialisation de la conf des swicthes
parent
916ec978
Changes
4
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
82 additions
and
2 deletions
+82
-2
serializers.py
api/serializers.py
+54
-1
urls.py
api/urls.py
+4
-1
views.py
api/views.py
+16
-0
models.py
topologie/models.py
+8
-0
No files found.
api/serializers.py
View file @
aec2c645
...
...
@@ -467,16 +467,30 @@ class BuildingSerializer(NamespacedHMSerializer):
class
SwitchPortSerializer
(
NamespacedHMSerializer
):
"""Serialize `topologie.models.Port` objects
"""
get_port_profil
=
NamespacedHIField
(
view_name
=
'portprofile-detail'
,
read_only
=
True
)
class
Meta
:
model
=
topologie
.
Port
fields
=
(
'switch'
,
'port'
,
'room'
,
'machine_interface'
,
'related'
,
'custom_profile'
,
'state'
,
'details'
,
'api_url'
)
'custom_profile'
,
'state'
,
'
get_port_profil'
,
'
details'
,
'api_url'
)
extra_kwargs
=
{
'related'
:
{
'view_name'
:
'switchport-detail'
},
'api_url'
:
{
'view_name'
:
'switchport-detail'
},
}
class
PortProfileSerializer
(
NamespacedHMSerializer
):
"""Serialize `topologie.models.Room` objects
"""
class
Meta
:
model
=
topologie
.
PortProfile
fields
=
(
'name'
,
'profil_default'
,
'vlan_untagged'
,
'vlan_tagged'
,
'radius_type'
,
'radius_mode'
,
'speed'
,
'mac_limit'
,
'flow_control'
,
'dhcp_snooping'
,
'dhcpv6_snooping'
,
'dhcpv6_snooping'
,
'arp_protect'
,
'ra_guard'
,
'loop_protect'
,
'api_url'
)
class
RoomSerializer
(
NamespacedHMSerializer
):
"""Serialize `topologie.models.Room` objects
"""
...
...
@@ -644,6 +658,45 @@ class ServiceRegenSerializer(NamespacedHMSerializer):
'api_url'
:
{
'view_name'
:
'serviceregen-detail'
}
}
# Switches et ports
class
ProfilSerializer
(
NamespacedHMSerializer
):
class
Meta
:
model
=
topologie
.
PortProfile
fields
=
(
'name'
,
'profil_default'
,
'vlan_untagged'
,
'vlan_tagged'
,
'radius_type'
,
'radius_mode'
,
'speed'
,
'mac_limit'
,
'flow_control'
,
'dhcp_snooping'
,
'dhcpv6_snooping'
,
'arp_protect'
,
'ra_guard'
,
'loop_protect'
)
class
ModelSwitchSerializer
(
NamespacedHMSerializer
):
class
Meta
:
model
=
topologie
.
ModelSwitch
fields
=
(
'reference'
,)
class
SwitchBaySerializer
(
NamespacedHMSerializer
):
class
Meta
:
model
=
topologie
.
SwitchBay
fields
=
(
'name'
,)
class
PortsSerializer
(
NamespacedHMSerializer
):
"""Serialize `machines.models.Ipv6List` objects.
"""
get_port_profil
=
ProfilSerializer
(
read_only
=
True
)
class
Meta
:
model
=
topologie
.
Port
fields
=
(
'state'
,
'port'
,
'get_port_profil'
)
class
SwitchPortSerializer
(
serializers
.
ModelSerializer
):
"""Serialize the data about the switches"""
ports
=
PortsSerializer
(
many
=
True
,
read_only
=
True
)
model
=
ModelSwitchSerializer
(
read_only
=
True
)
switchbay
=
SwitchBaySerializer
(
read_only
=
True
)
class
Meta
:
model
=
topologie
.
Switch
fields
=
(
'short_name'
,
'model'
,
'switchbay'
,
'ports'
,
'subnet'
,
'subnet6'
)
# LOCAL EMAILS
...
...
api/urls.py
View file @
aec2c645
...
...
@@ -81,7 +81,8 @@ router.register_viewset(r'topologie/modelswitch', views.ModelSwitchViewSet)
router
.
register_viewset
(
r'topologie/constructorswitch'
,
views
.
ConstructorSwitchViewSet
)
router
.
register_viewset
(
r'topologie/switchbay'
,
views
.
SwitchBayViewSet
)
router
.
register_viewset
(
r'topologie/building'
,
views
.
BuildingViewSet
)
router
.
register
(
r'topologie/switchport'
,
views
.
SwitchPortViewSet
,
base_name
=
'switchport'
)
router
.
register_viewset
(
r'topologie/switchport'
,
views
.
SwitchPortViewSet
,
base_name
=
'switchport'
)
router
.
register_viewset
(
r'topologie/portprofile'
,
views
.
PortProfileViewSet
,
base_name
=
'portprofile'
)
router
.
register_viewset
(
r'topologie/room'
,
views
.
RoomViewSet
)
router
.
register
(
r'topologie/portprofile'
,
views
.
PortProfileViewSet
)
# USERS
...
...
@@ -105,6 +106,8 @@ router.register_view(r'localemail/users', views.LocalEmailUsersView),
# Firewall
router
.
register_view
(
r'firewall/subnet-ports'
,
views
.
SubnetPortsOpenView
),
router
.
register_view
(
r'firewall/interface-ports'
,
views
.
InterfacePortsOpenView
),
# Switches config
router
.
register_view
(
r'switchs/ports-config'
,
views
.
SwitchPortView
),
# DNS
router
.
register_view
(
r'dns/zones'
,
views
.
DNSZonesView
),
router
.
register_view
(
r'dns/reverse-zones'
,
views
.
DNSReverseZonesView
),
...
...
api/views.py
View file @
aec2c645
...
...
@@ -397,6 +397,13 @@ class SwitchPortViewSet(viewsets.ReadOnlyModelViewSet):
serializer_class
=
serializers
.
SwitchPortSerializer
class
PortProfileViewSet
(
viewsets
.
ReadOnlyModelViewSet
):
"""Exposes list and details of `topologie.models.PortProfile` objects.
"""
queryset
=
topologie
.
PortProfile
.
objects
.
all
()
serializer_class
=
serializers
.
PortProfileSerializer
class
RoomViewSet
(
viewsets
.
ReadOnlyModelViewSet
):
"""Exposes list and details of `topologie.models.Room` objects.
"""
...
...
@@ -515,6 +522,15 @@ class ServiceRegenViewSet(viewsets.ModelViewSet):
queryset
=
queryset
.
filter
(
server__domain__name__iexact
=
hostname
)
return
queryset
# Config des switches
class
SwitchPortView
(
generics
.
ListAPIView
):
"""Exposes the associations between hostname, mac address and IPv4 in
order to build the DHCP lease files.
"""
queryset
=
topologie
.
Switch
.
objects
.
all
()
.
prefetch_related
(
'ports__custom_profile'
)
serializer_class
=
serializers
.
SwitchPortSerializer
# LOCAL EMAILS
...
...
topologie/models.py
View file @
aec2c645
...
...
@@ -292,6 +292,14 @@ class Switch(AclMixin, Machine):
def
get_name
(
self
):
return
self
.
name
or
self
.
main_interface
()
.
domain
.
name
@
cached_property
def
subnet
(
self
):
return
self
.
main_interface
()
.
type
.
ip_type
.
ip_set_full_info
@
cached_property
def
subnet6
(
self
):
return
self
.
main_interface
()
.
type
.
ip_type
.
ip6_set_full_info
def
__str__
(
self
):
return
str
(
self
.
get_name
)
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment