
    g                     p    S SK Jr  S SKrS SKJr  SSKJrJr  SSKJ	r	J
r
  SSKJr  SSKJr   " S	 S
5      rg)    )StringION)IO   )ffilib)NetDefinitionNetDefinitionIterator)Parser)_checked_lib_callc                      \ rS rSrS rS rS\4S jrS rS\	4S jr
S!S
\S\4S jjrS"S\S\4S jjrS\4S jr\S\4S j5       r\S\4S j5       r\S\4S j5       r\S\4S j5       r\S\4S j5       r\S\4S j5       r\S\4S j5       r\S\4S j5       r\S\4S j5       r\S\4S j5       r\S\4S j5       r\S\4S j5       r\S\4S j5       r\S\4S j5       rS rg	)#State!   c                 8    [         R                  " 5       U l        g N)r   netplan_state_new_ptrselfs    //usr/lib/python3/dist-packages/netplan/state.py__init__State.__init__"   s    ))+	    c                 r    [         R                  " SU R                  5      n[        R                  " U5        g )NzNetplanState **)r   newr   r   netplan_state_clear)r   refs     r   __del__State.__del__%   s%    gg'3$r   	netdef_idc                     [         R                  " U R                  UR                  S5      5      nU(       d
  [	        5       e[        X5      $ Nutf-8)r   netplan_state_get_netdefr   encode
IndexErrorr   )r   r   ptrs      r   __getitem__State.__getitem__)   s9    **499i6F6Fw6OP,T''r   c                 B    [         R                  " U R                  5      $ r   )r   netplan_state_get_netdefs_sizer   r   s    r   __len__State.__len__/   s    11$))<<r   parserc                 b    [        [        R                  U R                  UR                  5        g r   )r   r   #netplan_state_import_parser_resultsr   )r   r-   s     r   import_parser_resultsState.import_parser_results2   s    #AA499fkkZr   Nfilenamerootdirc                     U(       a  UR                  S5      O[        R                  nU(       a  UR                  S5      O[        R                  n[        [        R
                  U R                  X45        g r!   )r$   r   NULLr   r   netplan_state_write_yaml_filer   )r   r2   r3   nameroots        r   _write_yaml_fileState._write_yaml_file:   sD    +3xw'*1w~~g&sxx#;;TYYSr   default_filenamec                     UR                  S5      nU(       a  UR                  S5      O[        R                  n[        [        R
                  U R                  X45        g r!   )r$   r   r5   r   r   #netplan_state_update_yaml_hierarchyr   )r   r;   r3   r7   r8   s        r   _update_yaml_hierarchyState._update_yaml_hierarchy?   s>    &&w/*1w~~g&sxx#AA499dYr   output_filec                 <   [        U[        5      (       a  [        R                  " SS9n[	        [
        R                  U R                  U5        [        R                  " US[        R                  5      n[        R                  " US[        R                  5        [        R                  " X#5      n[        R                  " U5        UR                  UR                  S5      5        g UR                  5       n[	        [
        R                  U R                  U5        g )Nnetplan_temp_file)r7   r   r"   )
isinstancer   osmemfd_creater   r   netplan_state_dump_yamlr   lseekSEEK_CURSEEK_SETreadclosewritedecodefileno)r   r@   fdsizedatas        r   
_dump_yamlState._dump_yamlD   s    k8,,&9:Bc99499bI88B2;;/DHHRBKK(772$DHHRLdkk'23##%Bc99499bIr   returnc                     [         R                  " [        R                  " [        R                  " U R
                  5      5      5      R                  S5      $ r!   )r   stringr   netplan_backend_namenetplan_state_get_backendr   rM   r   s    r   backendState.backendQ   s:    zz#2233P3PQUQZQZ3[\]ddelmmr   c                 :    [        S [        U S 5       5       5      $ )Nc              3   <   #    U  H  oR                   U4v   M     g 7fr   id.0nds     r   	<genexpr> State.netdefs.<locals>.<genexpr>W   s     L*KBUUBK*K   dictr	   r   s    r   netdefsState.netdefsU   s    L*?d*KLLLr   c                 :    [        S [        U S5       5       5      $ )Nc              3   <   #    U  H  oR                   U4v   M     g 7fr   r]   r_   s     r   rb   "State.ethernets.<locals>.<genexpr>[   s     S*RBUUBK*Rrd   	ethernetsre   r   s    r   rl   State.ethernetsY   s    S*?k*RSSSr   c                 :    [        S [        U S5       5       5      $ )Nc              3   <   #    U  H  oR                   U4v   M     g 7fr   r]   r_   s     r   rb   State.modems.<locals>.<genexpr>_   s     P*OBUUBK*Ord   modemsre   r   s    r   rq   State.modems]   s    P*?h*OPPPr   c                 :    [        S [        U S5       5       5      $ )Nc              3   <   #    U  H  oR                   U4v   M     g 7fr   r]   r_   s     r   rb   State.wifis.<locals>.<genexpr>c        O*NBUUBK*Nrd   wifisre   r   s    r   rw   State.wifisa       O*?g*NOOOr   c                 :    [        S [        U S5       5       5      $ )Nc              3   <   #    U  H  oR                   U4v   M     g 7fr   r]   r_   s     r   rb   State.vlans.<locals>.<genexpr>g   rv   rd   vlansre   r   s    r   r}   State.vlanse   ry   r   c                 :    [        S [        U S5       5       5      $ )Nc              3   <   #    U  H  oR                   U4v   M     g 7fr   r]   r_   s     r   rb    State.bridges.<locals>.<genexpr>k        Q*PBUUBK*Prd   bridgesre   r   s    r   r   State.bridgesi       Q*?i*PQQQr   c                 :    [        S [        U S5       5       5      $ )Nc              3   <   #    U  H  oR                   U4v   M     g 7fr   r]   r_   s     r   rb   State.bonds.<locals>.<genexpr>o   rv   rd   bondsre   r   s    r   r   State.bondsm   ry   r   c                 :    [        S [        U S5       5       5      $ )Nc              3   <   #    U  H  oR                   U4v   M     g 7fr   r]   r_   s     r   rb   &State.dummy_devices.<locals>.<genexpr>s   s     W*VBUUBK*Vrd   zdummy-devicesre   r   s    r   dummy_devicesState.dummy_devicesq   s    W*?o*VWWWr   c                 :    [        S [        U S5       5       5      $ )Nc              3   <   #    U  H  oR                   U4v   M     g 7fr   r]   r_   s     r   rb    State.tunnels.<locals>.<genexpr>w   r   rd   tunnelsre   r   s    r   r   State.tunnelsu   r   r   c                 :    [        S [        U S5       5       5      $ )Nc              3   <   #    U  H  oR                   U4v   M     g 7fr   r]   r_   s     r   rb   *State.virtual_ethernets.<locals>.<genexpr>{   s     [*ZBUUBK*Zrd   zvirtual-ethernetsre   r   s    r   virtual_ethernetsState.virtual_ethernetsy   s    [*?FY*Z[[[r   c                 :    [        S [        U S5       5       5      $ )Nc              3   <   #    U  H  oR                   U4v   M     g 7fr   r]   r_   s     r   rb   State.vrfs.<locals>.<genexpr>   s     N*MBUUBK*Mrd   vrfsre   r   s    r   r   
State.vrfs}   s    N*?f*MNNNr   c                 :    [        S [        U S5       5       5      $ )Nc              3   <   #    U  H  oR                   U4v   M     g 7fr   r]   r_   s     r   rb   "State.ovs_ports.<locals>.<genexpr>        T*SBUUBK*Srd   z
_ovs-portsre   r   s    r   	ovs_portsState.ovs_ports       T*?l*STTTr   c                 :    [        S [        U S5       5       5      $ )Nc              3   <   #    U  H  oR                   U4v   M     g 7fr   r]   r_   s     r   rb   #State.nm_devices.<locals>.<genexpr>   r   rd   z
nm-devicesre   r   s    r   
nm_devicesState.nm_devices   r   r   )r   )NNr   ) __name__
__module____qualname____firstlineno__r   r   strr'   r+   r
   r0   r9   r>   r   rR   propertyrY   r	   rg   rl   rq   rw   r}   r   r   r   r   r   r   r   r   __static_attributes__ r   r   r   r   !   s   ,%(S (=[F [T Tc T
Zs ZS Z
Jb J n n n M. M M T0 T T Q- Q Q P, P P P, P P R. R R P, P P X4 X X R. R R \#8 \ \ O+ O O U0 U U U1 U Ur   r   )ior   rD   typingr   _netplan_cffir   r   netdefr   r	   r-   r
   _utilsr   r   r   r   r   <module>r      s*   "  	  # 8  %fU fUr   