%PDF- %PDF-
Mini Shell

Mini Shell

Direktori : /usr/lib/python2.7/site-packages/salt/modules/
Upload File :
Create Path :
Current File : //usr/lib/python2.7/site-packages/salt/modules/keystone.pyc

�
���^c
@@s�dZddlmZmZmZddlZddlZddlm	Z	e
Zyfddlm
Z
ddlZeZddlm
ZddlmZddlmZddlmZWnek
r�nXd	ad
aeje�Zd�ZiZdd�Z!dd
�Z"dd�Z#dddddd�Z$ddddd�Z%ddddd�Z&dddd�Z'dddd�Z(dd�Z)dddddddd�Z*dddd�Z+dd�Z,dddd�Z-dddd�Z.dd�Z/ddd�Z0dddd�Z1dddd�Z2dd�Z3dedd�Z4dedd �Z5dddd!�Z6dddd"�Z7dddd#�Z8dddd$�Z9dd%�Z:dd&�Z;dddddd'�Z<dddddd(�Z=dd)�Z>dd*�Z?dddd+�Z@dedddd,�ZAdddd-�ZBddddddddd.�ZCddddd/�ZDddddd0�ZEdddddddddd1�	ZFdddddddddd2�	ZGdddddddd3�ZHdd4�ZIdS(5u�
Module for handling openstack keystone calls.

:optdepends:    - keystoneclient Python adapter
:configuration: This module is not usable until the following are specified
    either in a pillar or in the minion's config file:

    .. code-block:: yaml

        keystone.user: admin
        keystone.password: verybadpass
        keystone.tenant: admin
        keystone.tenant_id: f80919baedab48ec8931f200c65a50df
        keystone.auth_url: 'http://127.0.0.1:5000/v2.0/'

    OR (for token based authentication)

    .. code-block:: yaml

        keystone.token: 'ADMIN'
        keystone.endpoint: 'http://127.0.0.1:35357/v2.0'

    If configuration for multiple openstack accounts is required, they can be
    set up as different configuration profiles. For example:

    .. code-block:: yaml

        openstack1:
          keystone.user: admin
          keystone.password: verybadpass
          keystone.tenant: admin
          keystone.tenant_id: f80919baedab48ec8931f200c65a50df
          keystone.auth_url: 'http://127.0.0.1:5000/v2.0/'

        openstack2:
          keystone.user: admin
          keystone.password: verybadpass
          keystone.tenant: admin
          keystone.tenant_id: f80919baedab48ec8931f200c65a50df
          keystone.auth_url: 'http://127.0.0.2:5000/v2.0/'

    With this configuration in place, any of the keystone functions can make use
    of a configuration profile by declaring it explicitly.
    For example:

    .. code-block:: bash

        salt '*' keystone.tenant_list profile=openstack1
i(tabsolute_importtunicode_literalstprint_functionN(tsix(tclient(tdiscover(tsession(tgenericiutenantscC@str
dStdfS(uL
    Only load this module if keystone
    is installed on this minion.
    ukeystoneuXkeystone execution module cannot be loaded: keystoneclient python library not available.(tHAS_KEYSTONEtFalse(((s9/usr/lib/python2.7/site-packages/salt/modules/keystone.pyt__virtual__Qsc@s)|r|d�nd�d��fd�}|dd�}|dd�}|dd�}|d	�}|d
d�}|dt�}|d
�}	|dd�}
|dd�}|dd�}|	r�i|	d
6|
d6}
nJi|d6|d6|d6|d	6|d
6|d6|d6}
|r%t|
d<n|
S(u
    get connection args
    u
:keystone.u	keystone.c@s%�jd|td�||��S(uL
        look in connection_args first, then default to config file
        uconnection_u
config.get(tgett__salt__(tkeytdefault(tconnection_argstprefix(s9/usr/lib/python2.7/site-packages/salt/modules/keystone.pyRgs
uuseruadminupassworduADMINutenantu	tenant_iduauth_urluhttp://127.0.0.1:35357/v2.0/uinsecureutokenuendpointuhttp://127.0.0.1:35357/v2.0uuser_domain_nameuDefaultuproject_domain_nameuusernameutenant_nameN(tNoneR	tTrue(tprofileRRtusertpasswordttenantt	tenant_idtauth_urltinsecurettokentendpointtuser_domain_nametproject_domain_nametkwargs((RRs9/usr/lib/python2.7/site-packages/salt/modules/keystone.pyt_get_kwargs^s6





cK@s~td||�}|jd|jdd��}y5tjjj|dtdddt�dd	d
SWnt	k
rydSXdS(u�
    Returns the API version derived from endpoint's response.

    CLI Example:

    .. code-block:: bash

        salt '*' keystone.api_version
    Ruauth_urluendpointtdecodetdecode_typeujsont
verify_ssludictuversionuidN(
RRRtsalttutilsthttptqueryRR	tKeyError(RRRR((s9/usr/lib/python2.7/site-packages/salt/modules/keystone.pytapi_version�s

c	K@s�tddd�td||�}tjd|d�}|jd�}|jd�}|rvd	ad
a||d<n$||d<|jd�|jd�tj	|�}t
jd
|�}|jd|�}|S(u�
    Set up keystone credentials. Only intended to be used within Keystone-enabled modules.

    CLI Example:

    .. code-block:: bash

        salt '*' keystone.auth
    uversions.warn_untiluNeonuwThe keystone module has been deprecated and will be removed in {version}.  Please update to using the keystoneng moduleRRuauth_urluv2.0uv3.0iuprojectsuuser_domain_nameuproject_domain_nametauthR(
t	__utils__RRtDiscoverturl_fort_OS_IDENTITY_API_VERSIONt_TENANTStpopRtPasswordRtSessiont
create_client(	RRRtdisctv2_auth_urltv3_auth_urlR)tsesstks_cl((s9/usr/lib/python2.7/site-packages/salt/modules/keystone.pyR)�s$




cK@s�t||�}|r8td|d||�|d}n|sIidd6S|rrtd|d||�|d}n|s�idd6S|jj||�}i|jd6|jd6|jd	6|jd
6S(uL
    Create EC2-compatible credentials for user per tenant

    CLI Examples:

    .. code-block:: bash

        salt '*' keystone.ec2_credentials_create name=admin tenant=admin

        salt '*' keystone.ec2_credentials_create         user_id=c965f79c4f864eaaa9c3b41904e67082         tenant_id=722787eb540849158668370dc627ec5f
    tnameRuiduCould not resolve User IDuErroruCould not resolve Tenant IDuaccessusecretu	tenant_iduuser_id(	R)tuser_gett
tenant_gettec2tcreatetaccesstsecretRtuser_id(R?R8RRRRtkstonetnewec2((s9/usr/lib/python2.7/site-packages/salt/modules/keystone.pytec2_credentials_create�s 


cK@slt||�}|r8td|dd|�|d}n|sIidd6S|jj||�dj||�S(uP
    Delete EC2-compatible credentials

    CLI Examples:

    .. code-block:: bash

        salt '*' keystone.ec2_credentials_delete         860f8c2c38ca4fab989f9bc56a061a64 access_key=5f66d2f24f604b8bb9cd28886106f442

        salt '*' keystone.ec2_credentials_delete name=admin         access_key=5f66d2f24f604b8bb9cd28886106f442
    R8RuiduCould not resolve User IDuErroru)ec2 key "{0}" deleted under user id "{1}"N(R)R9RR;tdeletetformat(R?R8t
access_keyRRR@((s9/usr/lib/python2.7/site-packages/salt/modules/keystone.pytec2_credentials_delete�s#	c	K@s�t||�}i}|rTx6|jj�D]"}|j|kr+|j}Pq+q+Wn|seidd6S|svidd6S|jjd|d|d||�}i|jd6|jd6|j	d	6|j
d
6||j<|S(u�
    Return ec2_credentials for a user (keystone ec2-credentials-get)

    CLI Examples:

    .. code-block:: bash

        salt '*' keystone.ec2_credentials_get c965f79c4f864eaaa9c3b41904e67082 access=722787eb540849158668370
        salt '*' keystone.ec2_credentials_get user_id=c965f79c4f864eaaa9c3b41904e67082 access=722787eb540849158668370
        salt '*' keystone.ec2_credentials_get name=nova access=722787eb540849158668370dc627ec5f
    uUnable to resolve user iduErroruAccess key is requiredR?R=Ruuser_idutenantuaccessusecret(R)tuserstlistR8tidR;RR?RR=R>(	R?R8R=RRR@tretRtec2_credentials((s9/usr/lib/python2.7/site-packages/salt/modules/keystone.pytec2_credentials_gets$
	


cK@s�t||�}i}|rTx6|jj�D]"}|j|kr+|j}Pq+q+Wn|seidd6SxO|jj|�D];}i|jd6|jd6|jd6|j	d6||j<qxW|S(um
    Return a list of ec2_credentials for a specific user (keystone ec2-credentials-list)

    CLI Examples:

    .. code-block:: bash

        salt '*' keystone.ec2_credentials_list 298ce377245c4ec9b70e1c639c89e654
        salt '*' keystone.ec2_credentials_list user_id=298ce377245c4ec9b70e1c639c89e654
        salt '*' keystone.ec2_credentials_list name=jack
    uUnable to resolve user iduErroruuser_idu	tenant_iduaccessusecret(
R)RGRHR8RIR;R?RR=R>(R?R8RRR@RJRtec2_credential((s9/usr/lib/python2.7/site-packages/salt/modules/keystone.pytec2_credentials_list#s
	


c
K@s$t||�t||�}||kr3idd6S||d}t||�}gg|j�D]Z}|d|kr�|r�|d|kntr�|r�|d|kntr�|nd^q`D]}	|	r�|	^q�}t|�dkr�idj||�d6St|�dkr|d	Sid
d6S(u�
    Return a specific endpoint (keystone endpoint-get)

    CLI Example:

    .. code-block:: bash

        salt 'v2' keystone.endpoint_get nova [region=RegionOne]

        salt 'v3' keystone.endpoint_get nova interface=admin [region=RegionOne]
    u$Could not find the specified serviceuErroruidu
service_iduregionu	interfaceiuJMultiple endpoints found ({0}) for the {1} service. Please specify region.iu1Could not find endpoint for the specified serviceN(R)tservice_listt
endpoint_listtvaluesRRtlenRD(
tservicetregionRt	interfaceRtservicest
service_idt	endpointstet_f((s9/usr/lib/python2.7/site-packages/salt/modules/keystone.pytendpoint_getAs
�c@s\t||�}i}x@|jj�D]/�t�fd�t��D��|�j<q%W|S(u�
    Return a list of available endpoints (keystone endpoints-list)

    CLI Example:

    .. code-block:: bash

        salt '*' keystone.endpoint_list
    c3@sX|]N}|jd�rtt�|�tjttf�r|t�|�fVqdS(u_N(t
startswitht
isinstancetgetattrRtstring_typestdicttbool(t.0tvalue(R(s9/usr/lib/python2.7/site-packages/salt/modules/keystone.pys	<genexpr>ns(R)RXRHR`tdirRI(RRR@RJ((Rs9/usr/lib/python2.7/site-packages/salt/modules/keystone.pyRP`s

-cK@s�t||�}	td|d||�}
|
s:d|
krEidd6Stdkr�|	jjd|
|dd|d	|d
|�n3|	jjd|d|
|dd
|d|d|�t|||||�S(uI
    Create an endpoint for an Openstack service

    CLI Examples:

    .. code-block:: bash

        salt 'v2' keystone.endpoint_create nova 'http://public/url' 'http://internal/url' 'http://adminurl/url' region

        salt 'v3' keystone.endpoint_create nova url='http://public/url' interface='public' region='RegionOne'
    R8RuErroru$Could not find the specified serviceiRSuidt	region_idturlRURTRWt	publicurltadminurltinternalurl(R)tservice_getR-RXR<R[(RSRgRiRhRTRRfRURR@tkeystone_service((s9/usr/lib/python2.7/site-packages/salt/modules/keystone.pytendpoint_createts 
	
cK@s�t||�}t|||||�}|s:d|krEidd6S|jj|d�t|||||�}|s�d|kr�tSdS(u�
    Delete endpoints of an Openstack service

    CLI Examples:

    .. code-block:: bash

        salt 'v2' keystone.endpoint_delete nova [region=RegionOne]

        salt 'v3' keystone.endpoint_delete nova interface=admin [region=RegionOne]
    uErroru,Could not find any endpoints for the serviceuidN(R)R[RXRCR(RSRTRRURR@R((s9/usr/lib/python2.7/site-packages/salt/modules/keystone.pytendpoint_delete�scK@sgt||�}dtd|d||�krAidj|�d6S|jj|�td|d||�S(uw
    Create a named role.

    CLI Example:

    .. code-block:: bash

        salt '*' keystone.role_create admin
    uErrorR8RuRole "{0}" already exists(R)trole_getRDtrolesR<(R8RRR@((s9/usr/lib/python2.7/site-packages/salt/modules/keystone.pytrole_create�s
cK@s�t||�}|rNx6|jj�D]"}|j|kr%|j}Pq%q%Wn|s_idd6S|jj|�}|jj|�dj|�}|r�|dj|�7}n|S(u$
    Delete a role (keystone role-delete)


    CLI Examples:

    .. code-block:: bash

        salt '*' keystone.role_delete c965f79c4f864eaaa9c3b41904e67082
        salt '*' keystone.role_delete role_id=c965f79c4f864eaaa9c3b41904e67082
        salt '*' keystone.role_delete name=admin
    uUnable to resolve role iduErroruRole ID {0} deletedu ({0})(R)RoRHR8RIRRCRD(trole_idR8RRR@troleRJ((s9/usr/lib/python2.7/site-packages/salt/modules/keystone.pytrole_delete�s	cK@s�t||�}i}|rTx6|jj�D]"}|j|kr+|j}Pq+q+Wn|seidd6S|jj|�}i|jd6|jd6||j<|S(u 
    Return a specific roles (keystone role-get)

    CLI Examples:

    .. code-block:: bash

        salt '*' keystone.role_get c965f79c4f864eaaa9c3b41904e67082
        salt '*' keystone.role_get role_id=c965f79c4f864eaaa9c3b41904e67082
        salt '*' keystone.role_get name=nova
    uUnable to resolve role iduErroruiduname(R)RoRHR8RIR(RqR8RRR@RJRr((s9/usr/lib/python2.7/site-packages/salt/modules/keystone.pyRn�s	
c@s\t||�}i}x@|jj�D]/�t�fd�t��D��|�j<q%W|S(u�
    Return a list of available roles (keystone role-list)

    CLI Example:

    .. code-block:: bash

        salt '*' keystone.role_list
    c3@sX|]N}|jd�rtt�|�tjttf�r|t�|�fVqdS(u_N(R\R]R^RR_R`Ra(RbRc(Rr(s9/usr/lib/python2.7/site-packages/salt/modules/keystone.pys	<genexpr>s(R)RoRHR`RdR8(RRR@RJ((Rrs9/usr/lib/python2.7/site-packages/salt/modules/keystone.pyt	role_list�s

-cK@s@t||�}|jj||d|�}t|jd||�S(u�
    Add service to Keystone service catalog

    CLI Examples:

    .. code-block:: bash

        salt '*' keystone.service_create nova compute 'OpenStack Compute Service'
    tdescriptionR(R)RVR<RjRI(R8tservice_typeRuRRR@RS((s9/usr/lib/python2.7/site-packages/salt/modules/keystone.pytservice_create
scK@sUt||�}|r8td|d||�|d}n|jj|�dj|�S(u�
    Delete a service from Keystone service catalog

    CLI Examples:

    .. code-block:: bash

        salt '*' keystone.service_delete c965f79c4f864eaaa9c3b41904e67082
        salt '*' keystone.service_delete name=nova
    R8Ruidu!Keystone service ID "{0}" deleted(R)RjRVRCRD(RWR8RRR@((s9/usr/lib/python2.7/site-packages/salt/modules/keystone.pytservice_deletesc@s�t||�}i}|rTx6|jj�D]"��j|kr+�j}Pq+q+Wn|seidd6S|jj|��t�fd�t��D��|�j<|S(u2
    Return a specific services (keystone service-get)

    CLI Examples:

    .. code-block:: bash

        salt '*' keystone.service_get c965f79c4f864eaaa9c3b41904e67082
        salt '*' keystone.service_get service_id=c965f79c4f864eaaa9c3b41904e67082
        salt '*' keystone.service_get name=nova
    uUnable to resolve service iduErrorc3@sX|]N}|jd�rtt�|�tjttf�r|t�|�fVqdS(u_N(R\R]R^RR_R`Ra(RbRc(RS(s9/usr/lib/python2.7/site-packages/salt/modules/keystone.pys	<genexpr>Gs(R)RVRHR8RIRR`Rd(RWR8RRR@RJ((RSs9/usr/lib/python2.7/site-packages/salt/modules/keystone.pyRj1s	)c@s\t||�}i}x@|jj�D]/�t�fd�t��D��|�j<q%W|S(u�
    Return a list of available services (keystone services-list)

    CLI Example:

    .. code-block:: bash

        salt '*' keystone.service_list
    c3@sX|]N}|jd�rtt�|�tjttf�r|t�|�fVqdS(u_N(R\R]R^RR_R`Ra(RbRc(RS(s9/usr/lib/python2.7/site-packages/salt/modules/keystone.pys	<genexpr>Zs(R)RVRHR`RdR8(RRR@RJ((RSs9/usr/lib/python2.7/site-packages/salt/modules/keystone.pyROMs

-cK@sFt||�}t|td�j|||�}t|jd||�S(u�
    Create a keystone tenant

    CLI Examples:

    .. code-block:: bash

        salt '*' keystone.tenant_create nova description='nova tenant'
        salt '*' keystone.tenant_create test enabled=False
    RN(R)R^R.RR<R:RI(R8RutenabledRRR@tnew((s9/usr/lib/python2.7/site-packages/salt/modules/keystone.pyt
tenant_create`s!c	K@sUt||�}t|td�jd|d|d|d|�}t|jd||�S(u�
    Create a keystone project.
    Overrides keystone tenant_create form api V2. For keystone api V3.

    .. versionadded:: 2016.11.0

    name
        The project name, which must be unique within the owning domain.

    domain
        The domain name.

    description
        The project description.

    enabled
        Enables or disables the project.

    profile
        Configuration profile - if configuration for multiple openstack accounts required.

    CLI Examples:

    .. code-block:: bash

        salt '*' keystone.project_create nova default description='Nova Compute Project'
        salt '*' keystone.project_create test default enabled=False
    R8tdomainRuRyRN(R)R^R.RR<R:RI(R8R|RuRyRRR@Rz((s9/usr/lib/python2.7/site-packages/salt/modules/keystone.pytproject_createqs!cK@s�t||�}|rWx?t|td�j�D]"}|j|kr.|j}Pq.q.Wn|shidd6St|td�j|�dj|�}|r�|dj|�7}n|S(u.
    Delete a tenant (keystone tenant-delete)

    CLI Examples:

    .. code-block:: bash

        salt '*' keystone.tenant_delete c965f79c4f864eaaa9c3b41904e67082
        salt '*' keystone.tenant_delete tenant_id=c965f79c4f864eaaa9c3b41904e67082
        salt '*' keystone.tenant_delete name=demo
    uUnable to resolve tenant iduErroruTenant ID {0} deletedu ({0})N(	R)R^R.RRHR8RIRCRD(RR8RRR@RRJ((s9/usr/lib/python2.7/site-packages/salt/modules/keystone.pyt
tenant_delete�s	cK@s=t||�tdkr5td|d|dd|�StSdS(uV
    Delete a project (keystone project-delete).
    Overrides keystone tenant-delete form api V2. For keystone api V3 only.

    .. versionadded:: 2016.11.0

    project_id
        The project id.

    name
        The project name.

    profile
        Configuration profile - if configuration for multiple openstack accounts required.

    CLI Examples:

    .. code-block:: bash

        salt '*' keystone.project_delete c965f79c4f864eaaa9c3b41904e67082
        salt '*' keystone.project_delete project_id=c965f79c4f864eaaa9c3b41904e67082
        salt '*' keystone.project_delete name=demo
    iRR8RN(R)R-R~RR	(t
project_idR8RR((s9/usr/lib/python2.7/site-packages/salt/modules/keystone.pytproject_delete�s
c@s�t||�}i}|r]x?t|td�j�D]"��j|kr4�j}Pq4q4Wn|snidd6St|td�j|��t�fd�t	��D��|�j<|S(u,
    Return a specific tenants (keystone tenant-get)

    CLI Examples:

    .. code-block:: bash

        salt '*' keystone.tenant_get c965f79c4f864eaaa9c3b41904e67082
        salt '*' keystone.tenant_get tenant_id=c965f79c4f864eaaa9c3b41904e67082
        salt '*' keystone.tenant_get name=nova
    uUnable to resolve tenant iduErrorc3@sX|]N}|jd�rtt�|�tjttf�r|t�|�fVqdS(u_N(R\R]R^RR_R`Ra(RbRc(R(s9/usr/lib/python2.7/site-packages/salt/modules/keystone.pys	<genexpr>�sN(
R)R^R.RRHR8RIRR`Rd(RR8RRR@RJ((Rs9/usr/lib/python2.7/site-packages/salt/modules/keystone.pyR:�s
	)cK@s=t||�tdkr5td|d|dd|�StSdS(uT
    Return a specific projects (keystone project-get)
    Overrides keystone tenant-get form api V2.
    For keystone api V3 only.

    .. versionadded:: 2016.11.0

    project_id
        The project id.

    name
        The project name.

    profile
        Configuration profile - if configuration for multiple openstack accounts required.

    CLI Examples:

    .. code-block:: bash

        salt '*' keystone.project_get c965f79c4f864eaaa9c3b41904e67082
        salt '*' keystone.project_get project_id=c965f79c4f864eaaa9c3b41904e67082
        salt '*' keystone.project_get name=nova
    iRR8RN(R)R-R:RR	(RR8RR((s9/usr/lib/python2.7/site-packages/salt/modules/keystone.pytproject_get�s
c@set||�}i}xIt|td�j�D]/�t�fd�t��D��|�j<q.W|S(u�
    Return a list of available tenants (keystone tenants-list)

    CLI Example:

    .. code-block:: bash

        salt '*' keystone.tenant_list
    c3@sX|]N}|jd�rtt�|�tjttf�r|t�|�fVqdS(u_N(R\R]R^RR_R`Ra(RbRc(R(s9/usr/lib/python2.7/site-packages/salt/modules/keystone.pys	<genexpr>sN(R)R^R.RRHR`RdR8(RRR@RJ((Rs9/usr/lib/python2.7/site-packages/salt/modules/keystone.pyttenant_lists

-cK@s.t||�tdkr&t||�StSdS(us
    Return a list of available projects (keystone projects-list).
    Overrides keystone tenants-list form api V2.
    For keystone api V3 only.

    .. versionadded:: 2016.11.0

    profile
        Configuration profile - if configuration for multiple openstack accounts required.

    CLI Example:

    .. code-block:: bash

        salt '*' keystone.project_list
    iN(R)R-R�R	(RR((s9/usr/lib/python2.7/site-packages/salt/modules/keystone.pytproject_list$s

c@st||�}|sWx?t|td�j�D]"}|j|kr.|j}Pq.q.Wn|shidd6St|td�j|�}|s�|j}n|s�|j}n|dkr�|j	}nt|td�j
|d|d|d|��t�fd�t��D��S(u�
    Update a tenant's information (keystone tenant-update)
    The following fields may be updated: name, description, enabled.
    Can only update name if targeting by ID

    CLI Examples:

    .. code-block:: bash

        salt '*' keystone.tenant_update name=admin enabled=True
        salt '*' keystone.tenant_update c965f79c4f864eaaa9c3b41904e67082 name=admin email=admin@domain.com
    uUnable to resolve tenant iduErrorR8RuRyc3@sX|]N}|jd�rtt�|�tjttf�r|t�|�fVqdS(u_N(R\R]R^RR_R`Ra(RbRc(tupdated(s9/usr/lib/python2.7/site-packages/salt/modules/keystone.pys	<genexpr>^sN(
R)R^R.RRHR8RIRRuRytupdateR`Rd(RR8RuRyRRR@R((R�s9/usr/lib/python2.7/site-packages/salt/modules/keystone.pyt
tenant_update=s"	-cK@sIt||�tdkrAtd|d|d|d|d||�StSdS(uJ
    Update a tenant's information (keystone project-update)
    The following fields may be updated: name, description, enabled.
    Can only update name if targeting by ID

    Overrides keystone tenant_update form api V2.
    For keystone api V3 only.

    .. versionadded:: 2016.11.0

    project_id
        The project id.

    name
        The project name, which must be unique within the owning domain.

    description
        The project description.

    enabled
        Enables or disables the project.

    profile
        Configuration profile - if configuration for multiple openstack accounts required.

    CLI Examples:

    .. code-block:: bash

        salt '*' keystone.project_update name=admin enabled=True
        salt '*' keystone.project_update c965f79c4f864eaaa9c3b41904e67082 name=admin email=admin@domain.com
    iRR8RuRyRN(R)R-R�R	(RR8RuRyRR((s9/usr/lib/python2.7/site-packages/salt/modules/keystone.pytproject_updatecs
"
cK@sNt||�}|jj�}i|dd6|dd6|dd6|dd6S(u�
    Return the configured tokens (keystone token-get)

    CLI Example:

    .. code-block:: bash

        salt '*' keystone.token_get c965f79c4f864eaaa9c3b41904e67082
    uiduexpiresuuser_idu	tenant_id(R)tservice_catalogt	get_token(RRR@R((s9/usr/lib/python2.7/site-packages/salt/modules/keystone.pyt	token_get�s
c@s�t||�}i}xl|jj�D][�t�fd�t��D��|�j<t�dd�}|r%||�jd<q%q%W|S(u�
    Return a list of available users (keystone user-list)

    CLI Example:

    .. code-block:: bash

        salt '*' keystone.user_list
    c3@s^|]T}|jd�rtt�|d�tjttf�r|t�|d�fVqdS(u_N(R\R]R^RRR_R`Ra(RbRc(R(s9/usr/lib/python2.7/site-packages/salt/modules/keystone.pys	<genexpr>�sutenantIdu	tenant_idN(R)RGRHR`RdR8R^R(RRR@RJR((Rs9/usr/lib/python2.7/site-packages/salt/modules/keystone.pyt	user_list�s
)c@st||�}i}|rTx6|jj�D]"��j|kr+�j}Pq+q+Wn|seidd6Sy|jj|��Wn;tjjk
r�dj	|�}t
j|�i|d6SXt�fd�t
��D��|�j<t�dd�}|r||�jd<n|S(u 
    Return a specific users (keystone user-get)

    CLI Examples:

    .. code-block:: bash

        salt '*' keystone.user_get c965f79c4f864eaaa9c3b41904e67082
        salt '*' keystone.user_get user_id=c965f79c4f864eaaa9c3b41904e67082
        salt '*' keystone.user_get name=nova
    uUnable to resolve user iduErroruCould not find user '{0}'c3@s^|]T}|jd�rtt�|d�tjttf�r|t�|d�fVqdS(u_N(R\R]R^RRR_R`Ra(RbRc(R(s9/usr/lib/python2.7/site-packages/salt/modules/keystone.pys	<genexpr>�sutenantIdu	tenant_idN(R)RGRHR8RIRtkeystoneclientt
exceptionstNotFoundRDtlogterrorR`RdR^R(R?R8RRR@RJtmsgR((Rs9/usr/lib/python2.7/site-packages/salt/modules/keystone.pyR9�s(	
)cK@s�t||�}	tdkrg|r1|r1|}n|	jjd|d|d|d|d|d|�}
n-|	jjd|d|d|d|d|�}
t|
jd	||�S(
u�
    Create a user (keystone user-create)

    CLI Examples:

    .. code-block:: bash

        salt '*' keystone.user_create name=jack password=zero email=jack@halloweentown.org         tenant_id=a28a7b5a999a455f84b1f5210264375e enabled=True
    iR8RtemailRRyRuRR(R)R-RGR<R9RI(R8RR�RRyRRRuRR@titem((s9/usr/lib/python2.7/site-packages/salt/modules/keystone.pytuser_create�s 
		cK@s�t||�}|rNx6|jj�D]"}|j|kr%|j}Pq%q%Wn|s_idd6S|jj|�dj|�}|r�|dj|�7}n|S(u"
    Delete a user (keystone user-delete)

    CLI Examples:

    .. code-block:: bash

        salt '*' keystone.user_delete c965f79c4f864eaaa9c3b41904e67082
        salt '*' keystone.user_delete user_id=c965f79c4f864eaaa9c3b41904e67082
        salt '*' keystone.user_delete name=nova
    uUnable to resolve user iduErroruUser ID {0} deletedu ({0})(R)RGRHR8RIRCRD(R?R8RRR@RRJ((s9/usr/lib/python2.7/site-packages/salt/modules/keystone.pytuser_delete�s	c
K@st||�}	|s_x3|	jj�D]"}
|
j|kr%|
j}Pq%q%W|s_idd6Sn|	jj|�}
|s�|
j}n|s�|
j}n|d
kr�|
j}nt	dkr}|d
kr�t
|
dd
�}ntj|�}d
}|r.x6|	j
j�D]"}|j|kr|j}PqqWn|sIt
|
dd
�}n|	jjd|d|d|d	|d
|d|�n�|	jjd|d|d|d	|�d
}
|rx3|	jj�D]"}|j|kr�|j}
Pq�q�W|
r|	jj||
�qndj|�}|S(u�
    Update a user's information (keystone user-update)
    The following fields may be updated: name, email, enabled, tenant.
    Because the name is one of the fields, a valid user id is required.

    CLI Examples:

    .. code-block:: bash

        salt '*' keystone.user_update user_id=c965f79c4f864eaaa9c3b41904e67082 name=newname
        salt '*' keystone.user_update c965f79c4f864eaaa9c3b41904e67082 name=newname email=newemail@domain.com
    uUnable to resolve user iduErroriudescriptionu
project_idRR8R�RyRuRuInfo updated for user ID {0}N(R)RGRHR8RIRR�RRyR-R^Rt	text_typetprojectsR�ttenantst
update_tenantRD(R?R8R�RyRRtprojectRuRR@RRtprojRttntRJ((s9/usr/lib/python2.7/site-packages/salt/modules/keystone.pytuser_updatesP		*
%	c	K@s%t||�}d|kr-|jd�}n5tdkrOtddd�}ntddd�}|r�x6|jj�D]"}|j|krx|j}PqxqxWn|s�idd6Si|d	6|d
6|d6}y-tdkr�tj	|�n
t
j	|�Wn$tjj
tjjfk
r tSXtS(u
    Verify a user's password

    CLI Examples:

    .. code-block:: bash

        salt '*' keystone.user_verify_password name=test password=foobar
        salt '*' keystone.user_verify_password user_id=c965f79c4f864eaaa9c3b41904e67082 password=foobar
    uconnection_endpointiu
config.optionukeystone.endpointuhttp://127.0.0.1:35357/v3uhttp://127.0.0.1:35357/v2.0uUnable to resolve user nameuErroruusernameupassworduauth_url(R)RR-RRGRHRIR8tclient3tClientRR�R�tUnauthorizedtAuthorizationFailureR	R(	R?R8RRRR@RRR((s9/usr/lib/python2.7/site-packages/salt/modules/keystone.pytuser_verify_passwordXs4

		


cK@s�t||�}|rNx6|jj�D]"}|j|kr%|j}Pq%q%Wn|s_idd6Stdkr�|jjd|d|�n|jjd|d|�dj|�}|r�|dj|�7}n|S(u~
    Update a user's password (keystone user-password-update)

    CLI Examples:

    .. code-block:: bash

        salt '*' keystone.user_password_update c965f79c4f864eaaa9c3b41904e67082 password=12345
        salt '*' keystone.user_password_update user_id=c965f79c4f864eaaa9c3b41904e67082 password=12345
        salt '*' keystone.user_password_update name=nova password=12345
    uUnable to resolve user iduErroriRRu Password updated for user ID {0}u ({0})(	R)RGRHR8RIR-R�tupdate_passwordRD(R?R8RRRR@RRJ((s9/usr/lib/python2.7/site-packages/salt/modules/keystone.pytuser_password_update�s
	c		K@s�t||	�}
|r%|r%|}n|r;|r;|}n|ritd|d||	�|jd�}n(ttjt|d||	���d}|s�idd6S|r�td|d||	�|jd�}n(ttjt|d||	���d}|s	idd6S|r2td|d||	�|d}n(ttjt|d||	���d}|skidd6Std	kr�|
j	j
|d
|d|�n|
j	j|||�d}|j|||�S(
u\
    Add role for user in tenant (keystone user-role-add)

    CLI Examples:

    .. code-block:: bash

        salt '*' keystone.user_role_add user_id=298ce377245c4ec9b70e1c639c89e654 tenant_id=7167a092ece84bae8cead4bf9d15bb3b role_id=ce377245c4ec9b70e1c639c89e8cead4
        salt '*' keystone.user_role_add user=admin tenant=admin role=admin
    R8RuidunameuUnable to resolve user iduErroru#Unable to resolve tenant/project iduUnable to resolve role idiRR�u8"{0}" role added for user "{1}" for "{2}" tenant/project(
R)R9RtnextRtiterkeysR:RnR-Rotgrantt
add_user_roleRD(R?RRRRqRrRRtproject_nameRR@tret_msg((s9/usr/lib/python2.7/site-packages/salt/modules/keystone.pyt
user_role_add�s>
	
	c		K@s�t||	�}
|r%|r%|}n|r;|r;|}n|ritd|d||	�|jd�}n(ttjt|d||	���d}|s�idd6S|r�td|d||	�|jd�}n(ttjt|d||	���d}|s	idd6S|r2td|d||	�|d}nttjt|���d}|sbidd6Std	kr�|
j	j
|d
|d|�n|
j	j|||�d}|j|||�S(
uh
    Remove role for user in tenant (keystone user-role-remove)

    CLI Examples:

    .. code-block:: bash

        salt '*' keystone.user_role_remove user_id=298ce377245c4ec9b70e1c639c89e654 tenant_id=7167a092ece84bae8cead4bf9d15bb3b role_id=ce377245c4ec9b70e1c639c89e8cead4
        salt '*' keystone.user_role_remove user=admin tenant=admin role=admin
    R8RuidunameuUnable to resolve user iduErroru#Unable to resolve tenant/project iduUnable to resolve role idiRR�u4"{0}" role removed for user "{1}" under "{2}" tenant(
R)R9RR�RR�R:RnR-Rotrevoketremove_user_roleRD(R?RRRRqRrRRR�RR@R�((s9/usr/lib/python2.7/site-packages/salt/modules/keystone.pytuser_role_remove�s<
	
	c@s�t||�}i}	|r+|r+|}n|rA|rA|}n|r�x6|jj�D]"}
|
j|krW|
j}PqWqWWn|r�x?t|td�j�D]"}|j|kr�|j}Pq�q�Wn|s�|r�idd6Stdkr?x�|j	jd|d|�D]/�t
�fd�t��D��|	�j<q	WnUxR|j	jd|d|�D]5�i�jd6�jd	6|d
6|d6|	�j<q[W|	S(
u@
    Return a list of available user_roles (keystone user-roles-list)

    CLI Examples:

    .. code-block:: bash

        salt '*' keystone.user_role_list user_id=298ce377245c4ec9b70e1c639c89e654 tenant_id=7167a092ece84bae8cead4bf9d15bb3b
        salt '*' keystone.user_role_list user_name=admin tenant_name=admin
    u+Unable to resolve user or tenant/project iduErroriRR�c3@sX|]N}|jd�rtt�|�tjttf�r|t�|�fVqdS(u_N(R\R]R^RR_R`Ra(RbRc(Rr(s9/usr/lib/python2.7/site-packages/salt/modules/keystone.pys	<genexpr><sRuidunameuuser_idu	tenant_idN(
R)RGRHR8RIR^R.RR-RoR`Rdtroles_for_user(R?Rt	user_namettenant_nameRRR�RR@RJRR((Rrs9/usr/lib/python2.7/site-packages/salt/modules/keystone.pytuser_role_lists6
	
			"0"

cK@sCt||�}g}x'|jj�D]}|j|j�q%W|S(u�
    Template for writing list functions
    Return a list of available items (keystone items-list)

    CLI Example:

    .. code-block:: bash

        salt '*' keystone.item_list
    (R)titemsRHtappendt__dict__(RRR@RJR�((s9/usr/lib/python2.7/site-packages/salt/modules/keystone.pyt
_item_listHs
(Jt__doc__t
__future__RRRtloggingtsalt.utils.httpR#tsalt.extRR	Rtkeystoneclient.v2_0Rtkeystoneclient.exceptionsR�Rtkeystoneclient.v3R�Rt
keystoneauth1Rtkeystoneauth1.identityRtImportErrorR-R.t	getLoggert__name__R�R
t__opts__RRR(R)RBRFRLRNR[RPRlRmRpRsRnRtRwRxRjROR{R}R~R�R:R�R�R�R�R�R�R�R9R�R�R�R�R�R�R�R�R�(((s9/usr/lib/python2.7/site-packages/salt/modules/keystone.pyt<module>2s�
	
,&#		 	 !$ !	%	*&?	+		8		7	0

Zerion Mini Shell 1.0