%PDF- %PDF-
Mini Shell

Mini Shell

Direktori : /usr/lib/python2.7/site-packages/salt/states/
Upload File :
Create Path :
Current File : //usr/lib/python2.7/site-packages/salt/states/netusers.pyo

�
���^c@@s�dZddlmZmZmZddlZeje�Zddl	m
Z
ddlmZm
Z
ddlmZddlZdZd�Zd	�Zd
�Zd�Zd�Zd
�Zd�Zd�Zd�Zddd�ZdS(u�
Network Users
=============

Manage the users configuration on network devices via the NAPALM proxy.

:codeauthor: Mircea Ulinic <mircea@cloudflare.com>
:maturity:   new
:depends:    napalm
:platform:   unix

Dependencies
------------
- :mod:`NAPALM proxy minion <salt.proxy.napalm>`
- :mod:`Users configuration management module <salt.modules.napalm_users>`

.. versionadded:: 2016.11.0
i(tabsolute_importtprint_functiontunicode_literalsN(tdeepcopy(tloadstdumps(tsixunetuserscC@stjjjttt�S(u_
    NAPALM library must be installed for this module to work and run in a (proxy) minion.
    (tsalttutilstnapalmtvirtualt__opts__t__virtualname__t__file__(((s8/usr/lib/python2.7/site-packages/salt/states/netusers.pyt__virtual__2scC@std�S(uRetrieves configured usersuusers.config(t__salt__(((s8/usr/lib/python2.7/site-packages/salt/states/netusers.pyt_retrieve_users=scC@stt|��S(u.(RR(tprobes((s8/usr/lib/python2.7/site-packages/salt/states/netusers.pyt_ordered_dict_to_dictDscC@st|�}|j|�|S(u6Creates a longer list of accepted users on the device.(Rtupdate(tdevice_userstcommon_userstexpected_users((s8/usr/lib/python2.7/site-packages/salt/states/netusers.pyt
_expand_usersKs
cC@s�d}t}x�tj|�D]�\}}|sPt}|djd|�7}qnt|jd�t�p�d|jd�ko�dkns|djd|�7}qqW||fS(u1Checks if the input dictionary of users is valid.uu,Please provide details for username {user}.
tuseruleveliiuMLevel must be a integer between 0 and 15 for username {user}. Will assume 0.
(tTrueRt	iteritemstFalsetformatt
isinstancetgettint(tuserstmessgtvalidRtuser_details((s8/usr/lib/python2.7/site-packages/salt/states/netusers.pyt_check_usersUs=c@sRiid6id6id6}t�j��}t�j��}||}||}||@}t�fd�|D��}t�fd�|D��}	i}
x�|D]�}�j|�}�j|�}
||
kr�q�ni|
|<xCtj|
�D]2\}}|j|�|kr�||
||<q�q�Wq�W|ji|d6|
d6|	d6�|S(uJComputes the differences between the actual config and the expected configuadduupdateuremovec3@s$|]}|�j|�fVqdS(N(R(t.0tusername(texpected(s8/usr/lib/python2.7/site-packages/salt/states/netusers.pys	<genexpr>ysc3@s$|]}|�j|�fVqdS(N(R(R%R&(t
configured(s8/usr/lib/python2.7/site-packages/salt/states/netusers.pys	<genexpr>zs(tsettkeystdictRRRR(R(R'tdifftconfigured_usersRt
add_usernamestremove_usernamestcommon_usernamestaddtremoveRR&tuser_configurationt
user_expectedtfieldtfield_value((R(R's8/usr/lib/python2.7/site-packages/salt/states/netusers.pyt
_compute_diffhs4





	cC@std|dt�S(uCalls users.set_users.uusers.set_userstcommit(RR(R ((s8/usr/lib/python2.7/site-packages/salt/states/netusers.pyt
_set_users�scC@std|dt�S(uCalls users.set_users.uusers.set_usersR8(RR(R ((s8/usr/lib/python2.7/site-packages/salt/states/netusers.pyt
_update_users�scC@std|dt�S(uCalls users.delete_users.uusers.delete_usersR8(RR(R ((s8/usr/lib/python2.7/site-packages/salt/states/netusers.pyt
_delete_users�scC@st}d}i}i|d6|d6|d6|d6}t|�}t|�}t||�}t|�\}}	|s�djd|	�|d<|St�}
|
jd�s�djd	|
jd��|d<|S|
jd
i�}||kr|jidd6td6�|St	||�}|jdi�}
|jd
i�}|jdi�}i|
d6|d6|d6}|ji|d6�t
dtkr�|jidd6dd6�|St}t}|
rt|
�}|jd�r�t}qt}|djd	|jd��7}n|rXt
|�}|jd�r0t}qXt}|djd	|jd��7}n|r�t|�}|jd�r�t}q�t}|djd	|jd��7}n|r�|r�td�\}}|}||7}n|r�|r�|r�d}n|ji|d6|d6�|S(u@
    Manages the configuration of the users on the device, as specified in the state SLS file. Users not defined in that
    file will be remove whilst users not configured on the device, will be added.

    SLS Example:

    .. code-block:: yaml

        netusers_example:
            netusers.managed:
                 - users:
                    admin:
                        level: 15
                        password: $1$knmhgPPv$g8745biu4rb.Zf.IT.F/U1
                        sshkeys: []
                    restricted:
                        level: 1
                        password: $1$j34j5k4b$4d5SVjTiz1l.Zf.IT.F/K7
                    martin:
                        level: 15
                        password: ''
                        sshkeys:
                            - ssh-dss AAAAB3NzaC1kc3MAAACBAK9dP3KariMlM/JmFW9rTSm5cXs4nR0+o6fTHP9o+bOLXMBTP8R4vwWHh0w
                                JPjQmJYafAqZTnlgi0srGjyifFwPtODppDWLCgLe2M4LXnu3OMqknr54w344zPHP3iFwWxHrBrZKtCjO8LhbWCa+
                                X528+i87t6r5e4ersdfxgchvjbknlio87t6r5drcfhgjhbknio8976tycv7t86ftyiu87Oz1nKsKuNzm2csoUQlJ
                                trmRfpjsOPNookmOz5wG0YxhwDmKeo6fWK+ATk1OiP+QT39fn4G77j8o+e4WAwxM570s35Of/vV0zoOccj753sXn
                                pvJenvwpM2H6o3a9ALvehAJKWodAgZT7X8+iu786r5drtycghvjbiu78t+wAAAIBURwSPZVElXe+9a43sF6M4ysT
                                7Xv+6wTsa8q86E3+RYyu8O2ObI2kwNLC3/HTgFniE/YqRG+WJac81/VHWQNP822gns8RVrWKjqBktmQoEm7z5yy0
                                bkjui78675dytcghvjkoi9y7t867ftcuvhbuu9t78gy/v+zvMmv8KvQgHg
                    jonathan:
                        level: 15
                        password: ''
                        sshkeys:
                            - ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDcgxE6HZF/xjFtIt0thEDKPjFJxW9BpZtTVstYbDgGR9zPkHG
                                ZJT/j345jk345jk453jk43545j35nl3kln34n5kl4ghv3/JzWt/0Js5KZp/51KRNCs9O4t07qaoqwpLB15GwLfEX
                                Bx9dW26zc4O+hi6754trxcfghvjbo98765drt/LYIEg0KSQPWyJEK1g31gacbxN7Ab006xeHh7rv7HtXF6zH3WId
                                Uhq9rtdUag6kYnv6qvjG7sbCyHGYu5vZB7GytnNuVNbZuI+RdFvmHSnErV9HCu9xZBq6DBb+sESMS4s7nFcsruMo
                                edb+BAc3aww0naeWpogjSt+We7y2N

    CLI Example:

        salt 'edge01.kix01' state.sls router.users

    Output example (raw python - can be reused in other modules):

    .. code-block:: python

        {
            'netusers_|-netusers_example_|-netusers_example_|-managed': {
                'comment': 'Configuration updated!',
                'name': 'netusers_example',
                'start_time': '10:57:08.678811',
                '__id__': 'netusers_example',
                'duration': 1620.982,
                '__run_num__': 0,
                'changes': {
                    'updated': {
                        'admin': {
                            'level': 15
                        },
                        'restricted': {
                            'level': 1
                        },
                        'martin': {
                            'sshkeys': [
                                'ssh-dss AAAAB3NzaC1kc3MAAACBAK9dP3KariMlM/JmFW9rTSm5cXs4nR0+o6fTHP9o+bOLXMBTP8R4vwWHh0w
                                JPjQmJYafAqZTnlgi0srGjyifFwPtODppDWLCgLe2M4LXnu3OMqknr54w344zPHP3iFwWxHrBrZKtCjO8LhbWCa+
                                X528+i87t6r5e4ersdfxgchvjbknlio87t6r5drcfhgjhbknio8976tycv7t86ftyiu87Oz1nKsKuNzm2csoUQlJ
                                trmRfpjsOPNookmOz5wG0YxhwDmKeo6fWK+ATk1OiP+QT39fn4G77j8o+e4WAwxM570s35Of/vV0zoOccj753sXn
                                pvJenvwpM2H6o3a9ALvehAJKWodAgZT7X8+iu786r5drtycghvjbiu78t+wAAAIBURwSPZVElXe+9a43sF6M4ysT
                                7Xv+6wTsa8q86E3+RYyu8O2ObI2kwNLC3/HTgFniE/YqRG+WJac81/VHWQNP822gns8RVrWKjqBktmQoEm7z5yy0
                                bkjui78675dytcghvjkoi9y7t867ftcuvhbuu9t78gy/v+zvMmv8KvQgHg'
                            ]
                        }
                    },
                    'added': {
                        'jonathan': {
                            'password': '',
                            'sshkeys': [
                                'ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDcgxE6HZF/xjFtIt0thEDKPjFJxW9BpZtTVstYbDgGR9zPkHG
                                ZJT/j345jk345jk453jk43545j35nl3kln34n5kl4ghv3/JzWt/0Js5KZp/51KRNCs9O4t07qaoqwpLB15GwLfEX
                                Bx9dW26zc4O+hi6754trxcfghvjbo98765drt/LYIEg0KSQPWyJEK1g31gacbxN7Ab006xeHh7rv7HtXF6zH3WId
                                Uhq9rtdUag6kYnv6qvjG7sbCyHGYu5vZB7GytnNuVNbZuI+RdFvmHSnErV9HCu9xZBq6DBb+sESMS4s7nFcsruMo
                                edb+BAc3aww0naeWpogjSt+We7y2N'
                            ],
                            'level': 15
                        }
                    },
                    'removed': {
                    }
                },
                'result': True
            }
        }

    CLI Output:

    .. code-block:: bash

        edge01.kix01:
            ----------
                      ID: netusers_example
                Function: netusers.managed
                  Result: True
                 Comment: Configuration updated!
                 Started: 11:03:31.957725
                Duration: 1220.435 ms
                 Changes:
                          ----------
                          added:
                              ----------
                              jonathan:
                                  ----------
                                  level:
                                      15
                                  password:
                                  sshkeys:
                                      - ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDcgxE6HZF/xjFtIt0thEDKPjFJxW9BpZtTVstYbDgG
                                      R9zPkHGZJT/j345jk345jk453jk43545j35nl3kln34n5kl4ghv3/JzWt/0Js5KZp/51KRNCs9O4t07qao
                                      qwpLB15GwLfEXBx9dW26zc4O+hi6754trxcfghvjbo98765drt/LYIEg0KSQPWyJEK1g31gacbxN7Ab006
                                      xeHh7rv7HtXF6zH3WIdUhq9rtdUag6kYnv6qvjG7sbCyHGYu5vZB7GytnNuVNbZuI+RdFvmHSnErV9HCu9
                                      xZBq6DBb+sESMS4s7nFcsruMoedb+BAc3aww0naeWpogjSt+We7y2N
                          removed:
                              ----------
                          updated:
                              ----------
                              martin:
                                  ----------
                                  sshkeys:
                                      - ssh-dss AAAAB3NzaC1kc3MAAACBAK9dP3KariMlM/JmFW9rTSm5cXs4nR0+o6fTHP9o+bOLXMBTP8R4
                                      vwWHh0wJPjQmJYafAqZTnlgi0srGjyifFwPtODppDWLCgLe2M4LXnu3OMqknr54w344zPHP3iFwWxHrBrZ
                                      KtCjO8LhbWCa+X528+i87t6r5e4ersdfxgchvjbknlio87t6r5drcfhgjhbknio8976tycv7t86ftyiu87
                                      Oz1nKsKuNzm2csoUQlJtrmRfpjsOPNookmOz5wG0YxhwDmKeo6fWK+ATk1OiP+QT39fn4G77j8o+e4WAwx
                                      M570s35Of/vV0zoOccj753sXnpvJenvwpM2H6o3a9ALvehAJKWodAgZT7X8+iu786r5drtycghvjbiu78t
                                      +wAAAIBURwSPZVElXe+9a43sF6M4ysT7Xv+6wTsa8q86E3+RYyu8O2ObI2kwNLC3/HTgFniE/YqRG+WJac
                                      81/VHWQNP822gns8RVrWKjqBktmQoEm7z5yy0bkjui78675dytcghvjkoi9y7t867ftcuvhbuu9t78gy/v
                                      +zvMmv8KvQgHg
                              admin:
                                  ----------
                                  level:
                                      15
                              restricted:
                                  ----------
                                  level:
                                      1
            Summary for edge01.kix01
            ------------
            Succeeded: 1 (changed=1)
            Failed:    0
            ------------
            Total states run:     1
            Total run time:   1.220 s
    uunameuchangesuresultucommentu-Please provide a valid configuration: {error}terroru/Cannot retrieve users from the device: {reason}treasonuoutu#Users already configured as needed.uadduupdateuremoveuaddeduupdateduremovedutestu,Testing mode: configuration was not changed!u$Cannot configure new users: {reason}u/Cannot update the users configuration: {reason}uCannot remove users: {reason}unet.config_controluConfiguration updated!N(RRRR$RRRRRR7RtNoneR9R:R;R(tnameR tdefaultstresulttcommenttchangestretRR"tmessagetusers_outputR-R,tusers_to_addtusers_to_updatetusers_to_removetexpected_config_changetsuccessfully_changedt_sett_updatet_deletet
config_resulttconfig_comment((s8/usr/lib/python2.7/site-packages/salt/states/netusers.pytmanaged�s��
			
					
		(t__doc__t
__future__RRRtloggingt	getLoggert__name__tlogtcopyRtjsonRRtsalt.extRtsalt.utils.napalmRRRRRRR$R7R9R:R;R>RQ(((s8/usr/lib/python2.7/site-packages/salt/states/netusers.pyt<module>s$				
		(			

Zerion Mini Shell 1.0