
    >Tf ;                        d dl mZ d dlmZ d dlmZ d dlT d dlT d dlm	Z	m
Z
mZmZmZmZmZmZmZmZmZ d dlmZ d dlmZ d dlmZ d d	lmZmZmZ d d
lmZm Z  d dl!m"Z" d dl#m$Z$ d dl%m&Z& d dl'm(Z( d dl)T d dl*m+Z+ ddl,m-Z- ddl.m/Z/ ddl0m1Z1m2Z2m3Z3 ddl4m5Z5 ddl6m7Z7 ddl8m9Z9 dZ: G d dee/e-          Z; G d dee/e-          Z< G d dee/e-          Z= G d dee/e-          Z> G d  d!ee/e-          Z? G d" d#ee/          Z@ G d$ d%e           ZA G d& d'ee/          ZB G d( d)e          ZC G d* d+e          ZD G d, d-e          ZEd.S )/    )ContentType)extend_schema_field)serializers)*)ConsolePortConsoleServerPort	DeviceBay	FrontPort	InterfaceInventoryItem	ModuleBayPowerOutlet	PowerPortRearPortVirtualDeviceContext)VLANSerializer)VRFSerializer)VLAN)ChoiceFieldContentTypeFieldSerializedPKRelatedField)NetBoxModelSerializerWritableNestedSerializer)get_serializer_for_model)L2VPNTerminationSerializer)NestedWirelessLinkSerializer)WirelessLANSerializer)WirelessLAN   )ConnectedEndpointsSerializer)CabledObjectSerializer)DeviceSerializerModuleSerializerVirtualDeviceContextSerializer)ManufacturerSerializer)NestedInterfaceSerializer)InventoryItemRoleSerializer)
ConsolePortSerializerConsoleServerPortSerializerDeviceBaySerializerFrontPortSerializerInterfaceSerializerInventoryItemSerializerModuleBaySerializerPowerOutletSerializerPowerPortSerializerRearPortSerializerc                       e Zd Z ed          Z edddd          Z eedd          Z	 ee
dd          Z G d d	          Zd
S )r)   Tnestedidurldisplaydevice
module_bayFr4   fieldsrequired
allow_nullchoicesallow_blankr=   r@   r>   r=   c                       e Zd ZeZg dZdZdS ) ConsoleServerPortSerializer.Metar6   r7   display_urlr8   r9   modulenamelabeltypespeeddescriptionmark_connectedcable	cable_end
link_peerslink_peers_typeconnected_endpointsconnected_endpoints_typeconnected_endpoints_reachabletagscustom_fieldscreatedlast_updated	_occupiedr6   r7   r8   r9   rH   rL   rN   rY   N)__name__
__module____qualname__r   modelr<   brief_fields     L/var/www/html/netbox-4.1.3/netbox/dcim/api/serializers_/device_components.pyMetarD   >   s,        !
 
 
 gra   rc   Nr[   r\   r]   r"   r9   r#   rG   r   ConsolePortTypeChoicesrJ   ConsolePortSpeedChoicesrK   rc   r`   ra   rb   r)   r)   +           T***F?	  F ;&  D
 K'  Eg g g g g g g g g gra   r)   c                       e Zd Z ed          Z edddd          Z eedd          Z	 ee
dd          Z G d d	          Zd
S )r(   Tr3   r5   Fr;   r?   rB   c                       e Zd ZeZg dZdZdS )ConsolePortSerializer.MetarE   rZ   N)r[   r\   r]   r   r^   r<   r_   r`   ra   rb   rc   rj   \   ,        
 
 
 gra   rc   Nrd   r`   ra   rb   r(   r(   I   rg   ra   r(   c                   |    e Zd Z ed          Z edddd          Z eeddd          Z	 G d d          Z
d	S )
r0   Tr3   r5   Fr;   r@   rA   r=   r>   c                       e Zd ZeZg dZdZdS )PowerPortSerializer.Meta)r6   r7   rF   r8   r9   rG   rH   rI   rJ   maximum_drawallocated_drawrL   rM   rN   rO   rP   rQ   rR   rS   rT   rU   rV   rW   rX   rY   rZ   N)r[   r\   r]   r   r^   r<   r_   r`   ra   rb   rc   ro   v   s,        
 
 
 gra   rc   N)r[   r\   r]   r"   r9   r#   rG   r   PowerPortTypeChoicesrJ   rc   r`   ra   rb   r0   r0   g   s        T***F?	  F ;$	  Dg g g g g g g g g gra   r0   c                       e Zd Z ed          Z edddd          Z eeddd          Z	 e
ddd          Z eeddd          Z G d d	          Zd
S )r/   Tr3   r5   Fr;   rm   r4   r=   r>   c                       e Zd ZeZg dZdZdS )PowerOutletSerializer.Meta)r6   r7   rF   r8   r9   rG   rH   rI   rJ   
power_portfeed_legrL   rM   rN   rO   rP   rQ   rR   rS   rT   rU   rV   rW   rX   rY   rZ   N)r[   r\   r]   r   r^   r<   r_   r`   ra   rb   rc   rv      rk   ra   rc   N)r[   r\   r]   r"   r9   r#   rG   r   PowerOutletTypeChoicesrJ   r0   rw   PowerOutletFeedLegChoicesrx   rc   r`   ra   rb   r/   r/      s        T***F?	  F ;&	  D %$  J
 {)	  Hg g g g g g g g g gra   r/   c                   j    e Zd Z ed          Z eej                                        e	ddd          Z
 edddd          Z ee          Z edd          Z edd          Z edd          Z eedd	          Z eeddd
          Z eedd	          Z eedd	          Z eedd	          Z eedd	          Z e ddd          Z! ee"j                                        e ddd          Z# e$ddd          Z% e&ddd          Z' e(dd          Z) ee*j                                        e+ddd          Z, e-j.        d          Z/ e-j.        d          Z0 e-j1        dddd          Z2 e-j1        dddd          Z3 G d d          Z4 fdZ5 xZ6S )r,   Tr3   F)queryset
serializerr4   r=   manyr5   r;   r@   )r=   r>   )r@   r=   rA   )r@   r=   rA   r>   rt   )r4   	read_onlyr>   r   r>   )r   N)r=   defaultrA   r>   c                       e Zd ZeZg dZdZdS )InterfaceSerializer.Meta)2r6   r7   rF   r8   r9   vdcsrG   rH   rI   rJ   enabledparentbridgelagmtumac_addressrK   duplexwwn	mgmt_onlyrL   moderf_role
rf_channelpoe_modepoe_typerf_channel_frequencyrf_channel_widthtx_poweruntagged_vlantagged_vlansrM   rN   rO   wireless_linkrP   rQ   wireless_lansvrfl2vpn_terminationrR   rS   rT   rU   rV   rW   rX   count_ipaddressescount_fhrp_groupsrY   rZ   N)r[   r\   r]   r   r^   r<   r_   r`   ra   rb   rc   r      s,        
 
 
 gra   rc   c                 *   | j         sk| j        r| j        j        n|                    d          }|                    dg           D ],}|j        |j        d fvrt          j        dd| di          -t                                          |          S )Nr9   r   zVLAN zU must belong to the same site as the interface's parent device, or it must be global.)	r4   instancer9   getsiter   ValidationErrorsupervalidate)selfdatar9   vlan	__class__s       rb   r   zInterfaceSerializer.validate   s     { 	-1]RT]))@R@RF44  9V[$$777%5& )A )A )A )A7    8 ww%%%ra   )7r[   r\   r]   r"   r9   r   r   objectsallr$   r   r#   rG   r   InterfaceTypeChoicesrJ   r&   r   r   r   InterfaceModeChoicesr   InterfaceDuplexChoicesr   WirelessRoleChoicesr   WirelessChannelChoicesr   InterfacePoEModeChoicesr   InterfacePoETypeChoicesr   r   r   r   r   r   r   r   r   r   r   r   r   r   r   IntegerFieldr   r   	CharFieldr   r   rc   r   __classcell__)r   s   @rb   r,   r,      s       T***F##%-11331  D ?	  F ;3444D&&$GGGF&&$GGGF
#
#Ut
D
D
DC;3eQUVVVD[!7%UYfjkkkFk"5SWXXXG%;eY]^^^J{#:UX\]]]H{#:UX\]]]H"N$4PPPM++!!##!  L -te
E
E
EC22$$[_```004DQQQM,,$((**(  M 104@@@004@@@'+'	  K  +
$[_
`
`
`Cg g g g g g g g& & & & & & & & &ra   r,   c                   v    e Zd Z ed          Z edddd          Z ee          Z	 G d d          Z
d	S )
r1   Tr3   r5   Fr;   r   c                       e Zd ZeZg dZdZdS )RearPortSerializer.Meta)r6   r7   rF   r8   r9   rG   rH   rI   rJ   color	positionsrL   rM   rN   rO   rP   rQ   rU   rV   rW   rX   rY   rZ   N)r[   r\   r]   r   r^   r<   r_   r`   ra   rb   rc   r     s,        
 
 

 gra   rc   N)r[   r\   r]   r"   r9   r#   rG   r   PortTypeChoicesrJ   rc   r`   ra   rb   r1   r1      s        T***F?	  F ;///Dg g g g g g g g g gra   r1   c                   ,    e Zd ZdZ G d d          ZdS )FrontPortRearPortSerializerzy
    NestedRearPortSerializer but with parent device omitted (since front and rear ports must belong to same device)
    c                       e Zd ZeZg dZdS ) FrontPortRearPortSerializer.Meta)r6   r7   rF   r8   rH   rI   rL   N)r[   r\   r]   r   r^   r<   r`   ra   rb   rc   r     s        XXXra   rc   N)r[   r\   r]   __doc__rc   r`   ra   rb   r   r     sP         Y Y Y Y Y Y Y Y Y Yra   r   c                       e Zd Z ed          Z edddd          Z ee          Z	 e
            Z G d d          Zd	S )
r+   Tr3   r5   Fr;   r   c                       e Zd ZeZg dZdZdS )FrontPortSerializer.Meta)r6   r7   rF   r8   r9   rG   rH   rI   rJ   r   	rear_portrear_port_positionrL   rM   rN   rO   rP   rQ   rU   rV   rW   rX   rY   rZ   N)r[   r\   r]   r
   r^   r<   r_   r`   ra   rb   rc   r      s,        
 
 

 gra   rc   N)r[   r\   r]   r"   r9   r#   rG   r   r   rJ   r   r   rc   r`   ra   rb   r+   r+     s        T***F?	  F ;///D++--Ig g g g g g g g g gra   r+   c                   ~    e Zd Z ed          Z eddddd          Z edddd          Z G d	 d
          ZdS )r.   Tr3   )r6   r7   r8   FN)r4   r<   r=   r>   r   )r6   r7   r8   serialrL   r;   c                       e Zd ZeZg dZdZdS )ModuleBaySerializer.Meta)r6   r7   rF   r8   r9   rG   rH   installed_modulerI   positionrL   rU   rV   rW   rX   )r6   r7   r8   r   rH   rL   N)r[   r\   r]   r   r^   r<   r_   r`   ra   rb   rc   r   :  s,        
 
 
 [ra   rc   )	r[   r\   r]   r"   r9   r#   rG   r   rc   r`   ra   rb   r.   r.   *  s        T***F'  F ('@	  [ [ [ [ [ [ [ [ [ [ra   r.   c                   \    e Zd Z ed          Z eddd          Z G d d          ZdS )r*   Tr3   Frt   c                       e Zd ZeZg dZdZdS )DeviceBaySerializer.Meta)r6   r7   rF   r8   r9   rH   rI   rL   installed_devicerU   rV   rW   rX   )r6   r7   r8   r9   rH   rL   N)r[   r\   r]   r	   r^   r<   r_   r`   ra   rb   rc   r   G  s,        
 
 
 Qra   rc   N)r[   r\   r]   r"   r9   r   rc   r`   ra   rb   r*   r*   C  sr        T***F''tePTUUUQ Q Q Q Q Q Q Q Q Qra   r*   c                      e Zd Z ed          Z ej        ej        	                                dd          Z
 eddd          Z edddd          Z eej                            e          dd          Z ej        dd	          Z ej        d
d          Z G d d          Z e ej        d                    d             ZdS )r-   Tr3   N)r|   r>   r   Frt   )r4   r=   r>   r   )r|   r=   r>   r   level)sourcer   c                       e Zd ZeZg dZdZdS )InventoryItemSerializer.Meta)r6   r7   rF   r8   r9   r   rH   rI   rolemanufacturerpart_idr   	asset_tag
discoveredrL   component_typecomponent_id	componentrU   rV   rW   rX   _depth)r6   r7   r8   r9   rH   rL   r   N)r[   r\   r]   r   r^   r<   r_   r`   ra   rb   rc   r   ]  s,        
 
 

 [ra   rc   )r>   c                     |j         d S t          |j                   }d| j        d         i} ||j         d|          j        S )NrequestT)r4   context)r   r   r   r   )r   objr}   r   s       rb   get_componentz%InventoryItemSerializer.get_componentf  sK    = 4-cm<<
dl956z#-gFFFKKra   )r[   r\   r]   r"   r9   r   PrimaryKeyRelatedFieldr   r   r   r   r'   r   r%   r   r   r   filterMODULAR_COMPONENT_MODELSr   SerializerMethodFieldr   r   r   rc   r   	JSONFieldr   r`   ra   rb   r-   r-   P  sS       T***F/[/9N9R9R9T9TaeostttF&&dUtTTTD))RV`deeeL%%$++,DEE  N
 21DTRRRI%[%WEEEF[ [ [ [ [ [ [ [ ..$???@@L L A@L L Lra   r-   N)F"django.contrib.contenttypes.modelsr   drf_spectacular.utilsr   rest_frameworkr   dcim.choicesdcim.constantsdcim.modelsr   r   r	   r
   r   r   r   r   r   r   r   ipam.api.serializers_.vlansr   ipam.api.serializers_.vrfsr   ipam.modelsr   netbox.api.fieldsr   r   r   netbox.api.serializersr   r   utilities.apir   vpn.api.serializers_.l2vpnr    wireless.api.serializers_.nestedr   &wireless.api.serializers_.wirelesslansr   wireless.choiceswireless.modelsr   baser    cablesr!   devicesr"   r#   r$   manufacturersr%   r4   r&   rolesr'   __all__r)   r(   r0   r/   r,   r1   r   r+   r.   r*   r-   r`   ra   rb   <module>r      s   : : : : : : 5 5 5 5 5 5 & & & & & &                                  7 6 6 6 6 6 4 4 4 4 4 4       U U U U U U U U U U R R R R R R R R 2 2 2 2 2 2 A A A A A A I I I I I I H H H H H H     ' ' ' ' ' ' . . . . . . * * * * * * W W W W W W W W W W 1 1 1 1 1 1 - - - - - - . . . . . .g g g g g"79OQm g g g<g g g g g13IKg g g g<g g g g g/1GIe g g g4"g "g "g "g "g13IKg "g "g "gJN& N& N& N& N&/1GIe N& N& N&bg g g g g.0F g g g(Y Y Y Y Y": Y Y Yg g g g g/1G g g g*[ [ [ [ [/ [ [ [2
Q 
Q 
Q 
Q 
Q/ 
Q 
Q 
QL L L L L3 L L L L Lra   