%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/mongodb.pyo

�
���^c	@@s�dZddlmZmZmZddlZddlZddlZddl	m
Zddlm
ZddlmZyddlZeZWnek
r�eZnXeje�Zd�Zddddddd	�Zd
�Zdddddd�Zdddddd�Zdddddd
�Zd�Z ddddddd�Z!ddddddd�Z"ddddddd�Z#ddddddd�Z$dddddddd�Z%ddddddd�Z&dddddd�Z'dddddd�Z(dddddd�Z)ddddddd�Z*ddddddd�Z+dddddddd�Z,ddddddddd�Z-dS(u�
Module to provide MongoDB functionality to Salt

:configuration: This module uses PyMongo, and accepts configuration details as
    parameters as well as configuration settings::

        mongodb.host: 'localhost'
        mongodb.port: 27017
        mongodb.user: ''
        mongodb.password: ''

    This data can also be passed into pillar. Options passed into opts will
    overwrite options passed into pillar.
i(tabsolute_importtprint_functiontunicode_literalsN(tLooseVersion(tget_error_message(tsixcC@str
dStdfSdS(u7
    Only load this module if pymongo is installed
    umongodbuTThe mongodb execution module cannot be loaded: the pymongo library is not available.N(tHAS_MONGODBtFalse(((s8/usr/lib/python2.7/site-packages/salt/modules/mongodb.pyt__virtual__'suadmincC@s�|stdd�}n|s2tdd�}n|sKtdd�}n|sdtdd�}n|ss|}nyVtjd|d|�}tjj||�}|r�|r�|j||d|�nWn(tjjk
r�tj	d	|�t
SX|S(
uv
    Returns a tuple of (user, host, port) with config, pillar, or default
    values assigned to missing values.
    u
config.optionumongodb.userumongodb.passwordumongodb.hostumongodb.portthosttporttsourceuError connecting to database %s(t__salt__tpymongotMongoClienttdatabasetDatabasetauthenticateterrorstPyMongoErrortlogterrorR(tusertpasswordR	R
Rtauthdbtconntmdb((s8/usr/lib/python2.7/site-packages/salt/modules/mongodb.pyt_connect1s&	cC@s^y.t|tj�r-tjjj|�}nWn)tk
rY}tj	d|�|�nX|S(uF
    Potentially interprets a string as JSON for usage with mongo
    uCould not parse objects: %s(
t
isinstanceRtstring_typestsalttutilstjsontloadst
ValueErrorRR(tobjectsterr((s8/usr/lib/python2.7/site-packages/salt/modules/mongodb.pyt_to_dictMs
cC@swt||||d|�}|s%dSytjd�|j�SWn0tjjk
rr}tj|�tj	|�SXdS(u�
    List all MongoDB databases

    CLI Example:

    .. code-block:: bash

        salt '*' mongodb.db_list <user> <password> <host> <port>
    Ru#Failed to connect to mongo databaseuListing databasesN(
RRtinfotdatabase_namesR
RRRRt	text_type(RRR	R
RRR$((s8/usr/lib/python2.7/site-packages/salt/modules/mongodb.pytdb_list[s


cC@s;t||||d|�}t|tj�r1tS||kS(u�
    Checks if a database exists in MongoDB

    CLI Example:

    .. code-block:: bash

        salt '*' mongodb.db_exists <name> <user> <password> <host> <port>
    R(R)RRRR(tnameRRR	R
Rtdbs((s8/usr/lib/python2.7/site-packages/salt/modules/mongodb.pyt	db_existsqs
cC@s�t||||d|�}|s%dSy!tjd|�|j|�Wn6tjjk
r~}tjd||�tj	|�SXt
S(u�
    Remove a MongoDB database

    CLI Example:

    .. code-block:: bash

        salt '*' mongodb.db_remove <name> <user> <password> <host> <port>
    Ru#Failed to connect to mongo databaseuRemoving database %su*Removing database %s failed with error: %s(RRR&t
drop_databaseR
RRRRR(tTrue(R*RRR	R
RRR$((s8/usr/lib/python2.7/site-packages/salt/modules/mongodb.pyt	db_remove�s
cC@s|jd�dS(Nu	buildInfouversion(tcommand(R((s8/usr/lib/python2.7/site-packages/salt/modules/mongodb.pyt_version�sc
C@s�t||||d|�}|sJdj||�}tj|�t|fSy#tjj||�}t|�SWn3tj	j
k
r�}	tjd|	�tj|	�SXdS(u�
    Get MongoDB instance version

    CLI Example:

    .. code-block:: bash

        salt '*' mongodb.version <user> <password> <host> <port> <database>
    Ru-Failed to connect to MongoDB database {0}:{1}u#Listing users failed with error: %sN(
RtformatRRRR
RRR1RRRR((
RRR	R
RRRterr_msgRR$((s8/usr/lib/python2.7/site-packages/salt/modules/mongodb.pytversion�s


cC@s�t||||d|�}|sJdj||�}tj|�t|fStjj||�}	y|	jd|�dSWn9tj	j
k
r�}
tjd|
�ttj|
�fSXdS(u�
    Get single user from MongoDB

    CLI Example:

    .. code-block:: bash

        salt '*' mongodb.user_find <name> <user> <password> <host> <port> <database> <authdb>
    Ru-Failed to connect to MongoDB database {0}:{1}u	usersInfouusersu#Listing users failed with error: %sN(
RR2RRRR
RRR0RRRR((R*RRR	R
RRRR3RR$((s8/usr/lib/python2.7/site-packages/salt/modules/mongodb.pyt	user_find�s

cC@s?t||||d|�}|s%dSy�tjd�tjj||�}g}t|�}	t|	�td�kr�x�|jd�dD])}|j	i|dd6|dd6�q�WnHxE|j
jj�D]1}|j	i|dd6|j
d	d
�d	6�q�W|SWn3tjjk
r:}
tjd|
�tj|
�SXdS(
u�
    List users of a MongoDB database

    CLI Example:

    .. code-block:: bash

        salt '*' mongodb.user_list <user> <password> <host> <port> <database>
    Ru#Failed to connect to mongo databaseu
Listing usersu2.6u	usersInfouusersuuserurolesureadOnlyuNoneu#Listing users failed with error: %sN(RRR&R
RRR1t
_LooseVersionR0tappendtsystemtuserstfindtgetRRRRR((RRR	R
RRRRtoutputtmongodb_versionR$((s8/usr/lib/python2.7/site-packages/salt/modules/mongodb.pyt	user_list�s*

cC@set||||||�}t|tj�r1dSx-|D]%}|t|�jd�kr8tSq8WtS(u�
    Checks if a user exists in MongoDB

    CLI Example:

    .. code-block:: bash

        salt '*' mongodb.user_exists <name> <user> <password> <host> <port> <database>
    u#Failed to connect to mongo databaseuuser(R>RRRtdictR;R.R(R*RRR	R
RRR9((s8/usr/lib/python2.7/site-packages/salt/modules/mongodb.pytuser_exists�s
c	C@s�t||||d|�}	|	s%dS|s4g}ny?tjd|�tjj|	|�}
|
j||d|�Wn6tjjk
r�}tj	d||�t
j|�SXtS(u�
    Create a MongoDB user

    CLI Example:

    .. code-block:: bash

        salt '*' mongodb.user_create <user_name> <user_password> <roles> <user> <password> <host> <port> <database>
    Ru#Failed to connect to mongo databaseuCreating user %strolesu*Creating database %s failed with error: %s(
RRR&R
RRtadd_userRRRRR(R.(R*tpasswdRRR	R
RRRARRR$((s8/usr/lib/python2.7/site-packages/salt/modules/mongodb.pytuser_creates	c
C@s�t||||�}|sdSy6tjd|�tjj||�}|j|�Wn6tjjk
r�}	tj	d||	�t
j|	�SXtS(u�
    Remove a MongoDB user

    CLI Example:

    .. code-block:: bash

        salt '*' mongodb.user_remove <name> <user> <password> <host> <port> <database>
    u#Failed to connect to mongo databaseuRemoving user %su*Creating database %s failed with error: %s(
RRR&R
RRtremove_userRRRRR(R.(
R*RRR	R
RRRRR$((s8/usr/lib/python2.7/site-packages/salt/modules/mongodb.pytuser_remove+sc
C@s�yt|�}Wntk
r$dSXt||||||�}t|tj�rVdSx�|D]~}|t|�jd�kr]xV|D]N}	t|	t�s�i|	d6|d6}	n|	t|�jdg�kr�tSq�Wt	Sq]WtS(u�
    Checks if a user of a MongoDB database has specified roles

    CLI Examples:

    .. code-block:: bash

        salt '*' mongodb.user_roles_exists johndoe '["readWrite"]' dbname admin adminpwd localhost 27017

    .. code-block:: bash

        salt '*' mongodb.user_roles_exists johndoe '[{"role": "readWrite", "db": "dbname" }, {"role": "read", "db": "otherdb"}]' dbname admin adminpwd localhost 27017
    uRoles provided in wrong formatu#Failed to connect to mongo databaseuuseruroleudburoles(
R%t	ExceptionR>RRRR?R;RR.(
R*RARRRR	R
RR9trole((s8/usr/lib/python2.7/site-packages/salt/modules/mongodb.pytuser_roles_existsEs 


cC@s�t||||d|�}|s%dSyt|�}Wntk
rIdSXyBtjd||�tjj||�}	|	jd|d|�Wn9tj	j
k
r�}
tjd|||
�tj
|
�SXtS(u�
    Grant one or many roles to a MongoDB user

    CLI Examples:

    .. code-block:: bash

        salt '*' mongodb.user_grant_roles johndoe '["readWrite"]' dbname admin adminpwd localhost 27017

    .. code-block:: bash

        salt '*' mongodb.user_grant_roles janedoe '[{"role": "readWrite", "db": "dbname" }, {"role": "read", "db": "otherdb"}]' dbname admin adminpwd localhost 27017
    Ru#Failed to connect to mongo databaseuRoles provided in wrong formatuGranting roles %s to user %sugrantRolesToUserRAu2Granting roles %s to user %s failed with error: %s(RR%RGRR&R
RRR0RRRRR(R.(R*RARRRR	R
RRRR$((s8/usr/lib/python2.7/site-packages/salt/modules/mongodb.pytuser_grant_rolesks
cC@s�t||||d|�}|s%dSyt|�}Wntk
rIdSXyBtjd||�tjj||�}	|	jd|d|�Wn9tj	j
k
r�}
tjd|||
�tj
|
�SXtS(u�
    Revoke one or many roles to a MongoDB user

    CLI Examples:

    .. code-block:: bash

        salt '*' mongodb.user_revoke_roles johndoe '["readWrite"]' dbname admin adminpwd localhost 27017

    .. code-block:: bash

        salt '*' mongodb.user_revoke_roles janedoe '[{"role": "readWrite", "db": "dbname" }, {"role": "read", "db": "otherdb"}]' dbname admin adminpwd localhost 27017
    Ru#Failed to connect to mongo databaseuRoles provided in wrong formatuRevoking roles %s from user %surevokeRolesFromUserRAu4Revoking roles %s from user %s failed with error: %s(RR%RGRR&R
RRR0RRRRR(R.(R*RARRRR	R
RRRR$((s8/usr/lib/python2.7/site-packages/salt/modules/mongodb.pytuser_revoke_roles�s
c
C@s�t||||||�}|s%dSyt|�}Wntk
rK}	|	SXyQtjd|||�tjj||�}
t|
|�}|j	|�}|SWn-tj
jk
r�}	tjd||	�|	SXdS(u
    Insert an object or list of objects into a collection

    CLI Example:

    .. code-block:: bash

        salt '*' mongodb.insert '[{"foo": "FOO", "bar": "BAR"}, {"foo": "BAZ", "bar": "BAM"}]' mycollection <user> <password> <host> <port> <database>

    u#Failed to connect to mongo databaseuInserting %r into %s.%su)Inserting objects %r failed with error %sN(
RR%RGRR&R
RRtgetattrtinsertRRR(
R#t
collectionRRR	R
RRRR$Rtcoltids((s8/usr/lib/python2.7/site-packages/salt/modules/mongodb.pyRM�s c	C@s�t||||||�}|s%dStj|�}tjd|�}	t|	�dk	r`ddS|	dd|	d<d|	d	|	d	<g}
xB|	D]:}yt|�}|
j|�Wq�tk
r�}|SXq�W|
d}
|
d	}t	||	d||||||�}t
|t�sd
St|�d	kr1dSt|�d	krGdSymtj
d
|
||�tjj||�}t||�}|j|
i|d6�}|j}dj|�SWn-tjjk
r�}tjd||�|SXdS(ul
    Update an object into a collection
    http://api.mongodb.com/python/current/api/pymongo/collection.html#pymongo.collection.Collection.update_one

    .. versionadded:: 2016.11.0

    CLI Example:

    .. code-block:: bash

        salt '*' mongodb.update_one '{"_id": "my_minion"} {"bar": "BAR"}' mycollection <user> <password> <host> <port> <database>

    u#Failed to connect to mongo databaseu}\s+{iu&Your request does not contain a valid u''{_"id": "my_id"} {"my_doc": "my_val"}'iu}u{iuGThe find result is not well formatted. An error appears; cannot update.u9Did not find any result. You should try an insert before.u1Too many results. Please try to be more specific.uUpdating %r into %s.%su$setu{0} objects updatedu'Updating object %s failed with error %sN(RRR(tretsplittlenR%R7RGR:RtlistRR&R
RRRLt
update_onetmodified_countR2RRR(R#RNRRR	R
RRRtobjstdocumenttobjR$t	_id_fieldt_update_docttest_fRRORPtnb_mod((s8/usr/lib/python2.7/site-packages/salt/modules/mongodb.pyRU�sV
	

		c
C@s�t||||||�}|s%dSyt|�}Wntk
rK}	|	SXyTtjd||�tjj||�}
t|
|�}|j	|�}t
|�SWn*tjjk
r�}	tj
d|	�|	SXdS(u�
    Find an object or list of objects in a collection

    CLI Example:

    .. code-block:: bash

        salt '*' mongodb.find mycollection '[{"foo": "FOO", "bar": "BAR"}]' <user> <password> <host> <port> <database>

    u#Failed to connect to mongo databaseuSearching for %r in %su'Searching objects failed with error: %sN(RR%RGRR&R
RRRLR:RTRRR(
RNtqueryRRR	R
RRRR$RROtret((s8/usr/lib/python2.7/site-packages/salt/modules/mongodb.pyR:s ic	C@s�t||||||�}	|	s%dSyt|�}Wntk
rQ}
t|
�SXyatjd||�tjj|	|�}t	||�}|j
|d|�}
dj|
d�SWn6tjj
k
r�}
tjdt|
��t|
�SXdS(u
    Remove an object or list of objects into a collection

    CLI Example:

    .. code-block:: bash

        salt '*' mongodb.remove mycollection '[{"foo": "FOO", "bar": "BAR"}, {"foo": "BAZ", "bar": "BAM"}]' <user> <password> <host> <port> <database>

    u#Failed to connect to mongo databaseuRemoving %r from %stwu{0} objects removedunu&Removing objects failed with error: %sN(RR%RGt_get_error_messageRR&R
RRRLtremoveR2RRR(RNR^RRR	R
RR`RRR$RROR_((s8/usr/lib/python2.7/site-packages/salt/modules/mongodb.pyRb5s (.t__doc__t
__future__RRRtloggingRQtsalt.utils.jsonRtsalt.utils.versionsRR6tsalt.exceptionsRRatsalt.extRR
R.RtImportErrorRt	getLoggert__name__RRtNoneRR%R)R,R/R1R4R5R>R@RDRFRIRJRKRMRUR:Rb(((s8/usr/lib/python2.7/site-packages/salt/modules/mongodb.pyt<module>sV


	
		(	%	"	"D		

Zerion Mini Shell 1.0