%PDF- %PDF-
Mini Shell

Mini Shell

Direktori : /usr/lib/python2.7/site-packages/salt/cloud/clouds/
Upload File :
Create Path :
Current File : //usr/lib/python2.7/site-packages/salt/cloud/clouds/saltify.pyo

�
���^c@@s�dZddlmZmZmZddlZddlZddlZddl	j
Z
ddlZddlj
jZddlmZddlmZmZeje�Zy*ddlmZddlmZeZWnek
r�eZnXyNddl m!Z!ddl"m#Z#m$Z$m%Z%m&Z&m'Z'm(Z(m)Z)eZ*Wnek
rSeZ*nXd	�Z+dd
�Z-dd�Z.dd�Z/dd
�Z0d�Z1dd�Z2dd�Z3dd�Z4dd�Z5d�Z6d�Z7d�Z8dd�Z9dd�Z:dS(u0
.. _`saltify-module`:

Saltify Module
==============

The Saltify module is designed to install Salt on a remote machine, virtual or
bare metal, using SSH. This module is useful for provisioning machines which
are already installed, but not Salted.

.. versionchanged:: 2018.3.0
    The wake_on_lan capability, and actions destroy, reboot, and query functions were added.

Use of this module requires some configuration in cloud profile and provider
files as described in the
:ref:`Gettting Started with Saltify <getting-started-with-saltify>` documentation.
i(tabsolute_importtprint_functiontunicode_literalsN(t	ipaddress(tSaltCloudExceptiontSaltCloudSystemExit(tSessionError(tWinRMTransportError(tConnectionErrortConnectTimeouttReadTimeouttSSLErrort
ProxyErrort
RetryErrort
InvalidSchemacC@stS(u(
    Needs no special configuration
    (tTrue(((s=/usr/lib/python2.7/site-packages/salt/cloud/clouds/saltify.pyt__virtual__8scC@siS(u�
    This function returns a list of locations available.

    .. code-block:: bash

        salt-cloud --list-locations my-cloud-provider

    [ saltify will always return an empty dictionary ]
    ((tcall((s=/usr/lib/python2.7/site-packages/salt/cloud/clouds/saltify.pytavail_locations?scC@s+t�}ig|dD]}|^qd6S(u�
    This function returns a list of images available for this cloud provider.

    .. code-block:: bash

        salt-cloud --list-images saltify

    returns a list of available profiles.

    ..versionadded:: 2018.3.0

    uprofilesuProfiles(tget_configured_provider(Rtvm_tprofile((s=/usr/lib/python2.7/site-packages/salt/cloud/clouds/saltify.pytavail_imagesMs
	cC@siS(u�
    This function returns a list of sizes available for this cloud provider.

    .. code-block:: bash

        salt-cloud --list-sizes saltify

    [ saltify always returns an empty dictionary ]
    ((R((s=/usr/lib/python2.7/site-packages/salt/cloud/clouds/saltify.pytavail_sizes^s
cC@st|�}t|�S(u�
    List the nodes which have salt-cloud:driver:saltify grains.

    .. code-block:: bash

        salt-cloud -Q

    returns a list of dictionaries of defined standard fields.

    ..versionadded:: 2018.3.0

    (t_list_nodes_fullt_build_required_items(Rtnodes((s=/usr/lib/python2.7/site-packages/salt/cloud/clouds/saltify.pyt
list_nodesks
c	C@s�i}x�|j�D]�\}}|rg}g}|d|d}xO|D]G}tj|�}|jsJ|jr�|j|�q�|j|�qJqJWi|dd6|ddd6|d6|d6d	d
6dd6||<qqW|S(
Nuipv4uipv6uidu
salt-clouduprofileuimageuprivate_ipsu
public_ipsuusizeurunningustate(titemsRt
ip_addresstis_loopbackt
is_privatetappend(	Rtrettnametgrainstprivate_ipst
public_ipstipstadrstip_((s=/usr/lib/python2.7/site-packages/salt/cloud/clouds/saltify.pyR|s(
		cC@s�t|�}xl|j�D]^\}}y'|d=|d=|d=|d=|d=Wqtk
r_qtk
rv||=qXqWt|�}x#|D]}||j||�q�W|S(u�
    Lists complete information for all nodes.

    .. code-block:: bash

        salt-cloud -F

    returns a list of dictionaries.

    for 'saltify' minions, returns dict of grains (enhanced).

    ..versionadded:: 2018.3.0
    u	cpu_flagsudisksu
pythonpathudnsugpus(RRtKeyErrort	TypeErrorRtupdate(RR!tkeyR#treqsR"((s=/usr/lib/python2.7/site-packages/salt/cloud/clouds/saltify.pytlist_nodes_full�s'


cC@s(tjj�}|jddddd�S(uK
    List the nodes, ask all 'saltify' minions, return dict of grains.
    usalt-cloud:driver:saltifyugrains.itemsuttgt_typeugrain(tsalttclienttLocalClienttcmd(Rtlocal((s=/usr/lib/python2.7/site-packages/salt/cloud/clouds/saltify.pyR�scC@s#tjjjtd�td|�S(u[
    Return a list of the minions that have salt-cloud grains, with
    select fields.
    ufunctionuquery.selection(R0tutilstcloudtlist_nodes_selectR.t__opts__(R((s=/usr/lib/python2.7/site-packages/salt/cloud/clouds/saltify.pyR7�scC@s8tjj�}|j|d�}|jt|��|S(u8
    List the a single node, return dict of grains.
    ugrains.items(R0R1R2R3R+R(R"RR4R!((s=/usr/lib/python2.7/site-packages/salt/cloud/clouds/saltify.pyt
show_instance�scC@s�tjd|tdt�}|r�tjd|tdd�}tjd|tdd�}|r�|r�t}tjj�}tjd|tdd�}|r�tjd|�tj	j
j�r�dnd	}d
j||�}|j
|d|g�dk}n|rtjd
�q�tjd||�t|tj�rA|g}n|j
|d|�}	tjd|	�|	r�|	|r�tjd|tdd�}
|
dkr�tjd|
�tj|
�q�q�ntjd|d�td|t�}	nt|�}	|	S(u�
    if configuration parameter ``deploy`` is ``True``,

        Provision a single machine, adding its keys to the salt master

    else,

        Test ssh connections to the machine

    Configuration parameters:

    - deploy:  (see above)
    - provider:  name of entry in ``salt/cloud.providers.d/???`` file
    - ssh_host: IP address or DNS name of the new machine
    - ssh_username:  name used to log in to the new machine
    - ssh_password:  password to log in (unless key_filename is used)
    - key_filename:  (optional) SSH private key for passwordless login
    - ssh_port: (default=22) TCP port for SSH connection
    - wake_on_lan_mac:  (optional) hardware (MAC) address for wake on lan
    - wol_sender_node:  (optional) salt minion to send wake on lan command
    - wol_boot_wait:  (default=30) seconds to delay while client boots
    - force_minion_config: (optional) replace the minion configuration files on the new machine

    See also
    :ref:`Miscellaneous Salt Cloud Options <misc-salt-cloud-options>`
    and
    :ref:`Getting Started with Saltify <getting-started-with-saltify>`

    CLI Example:

    .. code-block:: bash

        salt-cloud -p mymachine my_new_id
    udeploytdefaultuwake_on_lan_macuuwol_sender_nodeussh_hostutrying to ping %sunucu
ping -{} 1 {}ucmd.retcodeiusuccessful ping.u'sending wake-on-lan to %s using node %sunetwork.wolunetwork.wol returned value %su
wol_boot_waitigudelaying %d seconds for bootu Provisioning existing machine %sunameucloud.bootstrap(tconfigtget_cloud_config_valueR8tFalseR0R1R2tlogtinfoR5tplatformt
is_windowstformatR3t
isinstancetsixtstring_typesttimetsleept	__utils__t_verify(Rt
deploy_configtwol_mactwol_hostt	good_pingR4tssh_hosttcountR3R!t
sleep_time((s=/usr/lib/python2.7/site-packages/salt/cloud/clouds/saltify.pytcreate�sF#!	
cC@stjttpdd�S(u/
    Return the first configured instance.
    usaltify((R;tis_provider_configuredR8t__active_provider_name__(((s=/usr/lib/python2.7/site-packages/salt/cloud/clouds/saltify.pyR"s	cC@stjd|d�tjd|t�}|r�tjd|d�tsZtjd�tSi|dd6tjd|td	d
�d6tjd|td	d
�d6}y2tjd|d�t	d|�tkr�tSWn*t
tfk
r}tjd|�tSXtjd|td	t�}|r�tjd|d�tsNtjd�tStjd|td	d�|d<d|d<y,tjd|d�t	d|�d)k	SWq�ttttttttfk
r�}tjd|�tSXntStjd|d�i|dd6tjd|td	d�d6tjd|td	d �d6tjd|td!t�d6tjd"|td!td	tjd#|td!td	d)��d"6|jd$d)�d$6d%d&6}tjd'|d�yt	d(|�tkSWn$tk
r}tjd|�tSXd)S(*u3
    Verify credentials for an exsiting system
    uVerifying credentials for %sunameu
win_installeru,Testing Windows authentication method for %suImpacket library not foundussh_hostuhostuwin_usernameR:u
Administratoruusernameuwin_passworduupassworduTesting SMB protocol for %susmb.get_connu
Exception: %su	use_winrmuWinRM protocol requested for %suWinRM library not foundu
winrm_portibuporti
utimeoutuTesting WinRM protocol for %sucloud.wait_for_winrmu(Testing SSH authentication method for %sussh_portiussh_usernameuroott
search_globalukey_filenameussh_keyfileugatewayiumaxtriesuTesting SSH protocol for %sucloud.wait_for_passwdN(R>R?R;R<R8tdebugtHAS_IMPACKETterrorR=RHtsmbSessionErrortsmb3SessionErrort	HAS_WINRMtNoneRR	R
RRR
RRRtgetR(Rt
win_installertkwargstexct	use_winrm((s=/usr/lib/python2.7/site-packages/salt/cloud/clouds/saltify.pyRI-sz





c	C@s�|dkrtd��nt}tddddj|�di|d6d	|d
d|d�t�}tjj�}|j|d
dg�}y|j	||�Wnt
tfk
r�nXtj
d||dt�r�|j|ddg�}|r||rtjd|�n|j|ddg�}|r�||r�||}|j|d|g�}|r�||r�tjd||�q�n|j|ddg�}|r�||r�||}|j|d|g�}|r�||r�tjd||�q�q�ntj
d||dt�rP|j|d�}|rP||rPtjd|�qPntddddj|�di|d6d	|d
d|d�idj|�d 6S(!u� Destroy a node.

    .. versionadded:: 2018.3.0

    Disconnect a minion from the master, and remove its keys.

    Optionally, (if ``remove_config_on_destroy`` is ``True``),
      disables salt-minion from running on the minion, and
      erases the Salt configuration files from it.

    Optionally, (if ``shutdown_on_destroy`` is ``True``),
      orders the minion to halt.

    CLI Example:

    .. code-block:: bash

        salt-cloud --destroy mymachine

    ufunctionuFThe destroy action must be called with -d, --destroy, -a, or --action.ucloud.fire_eventueventudestroying instanceusalt/cloud/{0}/destroyingtargsunametsock_dirusock_dirt	transportu	transportu
grains.getu
salt-clouduremove_config_on_destroyR:uservice.disableusalt-minionu"disabled salt-minion service on %su
config.getu	conf_fileufile.removeu'removed minion %s configuration file %supki_diru!removed minion %s key files in %sushutdown_on_destroyusystem.shutdownu(system.shutdown for minion %s successfuludestroyed instanceusalt/cloud/{0}/destroyedu{0} was destroyed.u	Destroyed(RR8RHRBRR0R1R2R3R+t
IndexErrorR*R;R<RR>R?R=(	R"RtoptsRR4tmy_infoR!tconfiletpki_dir((s=/usr/lib/python2.7/site-packages/salt/cloud/clouds/saltify.pytdestroy�sl

		
	


cC@s:|dkrtd��ntjj�}|j|d�S(u�
    Reboot a saltify minion.

    ..versionadded:: 2018.3.0

    name
        The name of the VM to reboot.

    CLI Example:

    .. code-block:: bash

        salt-cloud -a reboot vm_name
    uactionu5The reboot action must be called with -a or --action.u
system.reboot(RR0R1R2R3(R"RR4((s=/usr/lib/python2.7/site-packages/salt/cloud/clouds/saltify.pytreboot�s
(;t__doc__t
__future__RRRtloggingRFtsalt.utils.cloudR0tsalt.configR;tsalt.clienttsalt.ext.sixtextRDtsalt._compatRtsalt.exceptionsRRt	getLoggert__name__R>timpacket.smbconnectionRRXt
impacket.smb3RYRRVtImportErrorR=twinrm.exceptionsRtrequests.exceptionsRR	R
RRR
RRZRR[RRRRRR.RR7R9RQRRIRiRj(((s=/usr/lib/python2.7/site-packages/salt/cloud/clouds/saltify.pyt<module>sJ


4


	
	!	

	M		^Y

Zerion Mini Shell 1.0