
    Vh                     v    d dl mZmZmZ eZdZdZdZd dl	m
Z
 d dlmZ  G d de      Zd	 Zed
k(  r e        yy)    )absolute_importdivisionprint_functionaT  
module: ip_netns
author: "Arie Bregman (@bregman-arie)"
short_description: Manage network namespaces
requirements: [ip]
description:
  - Create or delete network namespaces using the C(ip) command.
extends_documentation_fragment:
  - community.general.attributes
attributes:
  check_mode:
    support: full
  diff_mode:
    support: none
options:
  name:
    required: false
    description:
      - Name of the namespace.
    type: str
  state:
    required: false
    default: "present"
    choices: [present, absent]
    description:
      - Whether the namespace should exist.
    type: str
z
- name: Create a namespace named mario
  community.general.ip_netns:
    name: mario
    state: present

- name: Delete a namespace named luigi
  community.general.ip_netns:
    name: luigi
    state: absent
z
# Default return values
)AnsibleModule)to_textc                   :    e Zd ZdZd Zd Zd Zd Zd Zd Z	d Z
y	)
	Namespacez!Interface to network namespaces. c                 b    || _         |j                  d   | _        |j                  d   | _        y )Nnamestate)moduleparamsr   r   )selfr   s     n/home/dcms/DCMS/lib/python3.12/site-packages/ansible_collections/community/general/plugins/modules/ip_netns.py__init__zNamespace.__init__>   s)    MM&)	]]7+
    c                 B    | j                   j                  ddg|z         S )zRun ip nents commandipnetns)r   run_command)r   commands     r   _netnszNamespace._netnsC   s     {{&&g'@AAr   c                     | j                   j                  g d      \  }}}|dk7  r%| j                   j                  t        |             | j                  |v S )z%Check if the namespace already exists)r   r   listr   msg)r   r   	fail_jsonr   r   )r   rcouterrs       r   existszNamespace.existsG   sL    {{../FGC7KK!!gcl!3yyCr   c                     | j                  d| j                  g      \  }}}|dk7  r| j                  j                  |       yy)zCreate network namespaceaddr   r   Nr   r   r   r   r   rtcr   r    s       r   r#   zNamespace.addN   s@    UDII$67S#!8KK!!c!* r   c                     | j                  d| j                  g      \  }}}|dk7  r| j                  j                  |       yy)zDelete network namespacedelr   r   Nr$   r%   s       r   deletezNamespace.deleteU   s@    UDII$67S#!8KK!!c!* r   c                 
   d}| j                   dk(  r| j                         rd}nC| j                   dk(  r| j                         rd}n!| j                   dk(  r| j                         sd}| j                  j                  |       y)zRun check modeFpresentTabsentchangedN)r   r!   r   	exit_jsonr   r.   s     r   checkzNamespace.check[   sg    ::"t{{}GZZ8#GZZ9$T[[]Gg.r   c                    d}| j                   dk(  r#| j                         rD| j                          d}n1| j                   dk(  r"| j                         s| j                          d}| j                  j                  |       y)zMake the necessary changesFr,   Tr+   r-   N)r   r!   r)   r#   r   r/   r0   s     r   runzNamespace.runi   sb    ::!{{}ZZ9$;;=
g.r   N)__name__
__module____qualname____doc__r   r   r!   r#   r)   r1   r3    r   r   r	   r	   ;   s)    +,
B ++//r   r	   c                      t        ddidddgddd      } t        |       }| j                  r|j                          y|j	                          y)	zEntry point.defaultNr+   r,   )r:   choices)r   r   T)argument_specsupports_check_mode)r   r	   
check_moder1   r3   )r   network_namespaces     r   mainr@   y   sY    %!*	87LM
 !F "&)!r   __main__N)
__future__r   r   r   type__metaclass__DOCUMENTATIONEXAMPLESRETURNansible.module_utils.basicr   +ansible.module_utils.common.text.convertersr   objectr	   r@   r4   r8   r   r   <module>rK      sV    A @:

 5 ?;/ ;/| " zF r   