%PDF- %PDF-
Mini Shell

Mini Shell

Direktori : /proc/self/root/usr/lib/python2.7/site-packages/salt/cloud/clouds/
Upload File :
Create Path :
Current File : //proc/self/root/usr/lib/python2.7/site-packages/salt/cloud/clouds/scaleway.pyc

�
���^c@@sydZddlmZmZmZddlZddlZddlZddlZddl	m
Z
ddlmZddl
ZddlZddljZddlmZmZmZmZmZeje�ZdZd�Zd	�Zdd
�Zdd�Z dd�Z!dd
�Z"d�Z#d�Z$d�Z%dddddd�Z&d�Z'dd�Z(d�Z)dd�Z*dS(u,
Scaleway Cloud Module
=====================

.. versionadded:: 2015.8.0

The Scaleway cloud module is used to interact with your Scaleway BareMetal
Servers.

Use of this module only requires the ``api_key`` parameter to be set. Set up
the cloud configuration at ``/etc/salt/cloud.providers`` or
``/etc/salt/cloud.providers.d/scaleway.conf``:

.. code-block:: yaml

    scaleway-config:
      # Scaleway organization and token
      access_key: 0e604a2c-aea6-4081-acb2-e1d1258ef95c
      token: be8fd96b-04eb-4d39-b6ba-a9edbcf17f12
      driver: scaleway

i(tabsolute_importtprint_functiontunicode_literalsN(tsix(trange(tSaltCloudConfigErrortSaltCloudNotFoundtSaltCloudSystemExittSaltCloudExecutionFailuretSaltCloudExecutionTimeoutuscalewaycC@st�tkrtStS(u,
    Check for Scaleway configurations.
    (tget_configured_providertFalset__virtualname__(((s>/usr/lib/python2.7/site-packages/salt/cloud/clouds/scaleway.pyt__virtual__4scC@stjttptd�S(u+ Return the first configured instance.
    utoken(utoken(tconfigtis_provider_configuredt__opts__t__active_provider_name__R(((s>/usr/lib/python2.7/site-packages/salt/cloud/clouds/scaleway.pyR
>s	cC@s�|dkrtd��ntdd�}i}xP|dD]D}i||d<x-|D]%}tj||�||d|<qVWq;W|S(u; Return a list of the images that are on the provider.
    uactionu`The avail_images function must be called with -f or --function, or with the --list-images optiontmethoduimagesuid(RtqueryRt	text_type(tcalltitemstrettimagetitem((s>/usr/lib/python2.7/site-packages/salt/cloud/clouds/scaleway.pytavail_imagesHs
'cC@s	|dkrtd��ntdd�}i}x�|dD]�}g}g}d}|jd�rv|ddg}n|jd�r�|dg}n|jd	�r�|d	d
}ni|d
d
6|d6|d6|d
6|dddd6|dd6||d<q;W|S(uF Return a list of the BareMetal servers that are on the provider.
    uactionu=The list_nodes function must be called with -f or --function.Ruserversuu	public_ipuaddressu
private_ipuimageuiduimage_idu
public_ipsuprivate_ipsuvolumesu0usizeustateuname(RRtget(RRRtnodet
public_ipstprivate_ipstimage_id((s>/usr/lib/python2.7/site-packages/salt/cloud/clouds/scaleway.pyt
list_nodes[s.cC@s�|dkrtd��ntdd�}i}xM|dD]A}i||d<x*|D]"}||}|||d|<qVWq;W|S(uF Return a list of the BareMetal servers that are on the provider.
    uactionu4list_nodes_full must be called with -f or --functionRuserversuname(RR(RRRRRtvalue((s>/usr/lib/python2.7/site-packages/salt/cloud/clouds/scaleway.pytlist_nodes_fulls

cC@s#tjjjtd�td|�S(u^ Return a list of the BareMetal servers that are on the provider, with
    select fields.
    ufunctionuquery.selection(tsalttutilstcloudtlist_nodes_selectR"R(R((s>/usr/lib/python2.7/site-packages/salt/cloud/clouds/scaleway.pyR&�scC@s�t�}tjtjd|tdt��}x<|D]4}|||d||dfkr4||dSq4Wtdj|���dS(u% Return the image object to use.
    uimaget
search_globalunameuidu/The specified image, '{0}', could not be found.N(	RRRRtget_cloud_config_valueRRRtformat(tserver_timagestserver_imageR((s>/usr/lib/python2.7/site-packages/salt/cloud/clouds/scaleway.pyt	get_image�s	
"cC@sUtddd|dd�}tddd|ddd	d
didd
6dd�}|S(u Create a node.
    Ruserverstargsthttp_methodupostt	server_iduserveruidtcommanduactionupoweron(R(R.Rtaction((s>/usr/lib/python2.7/site-packages/salt/cloud/clouds/scaleway.pytcreate_node�s
	c
C@s�y=|dr<tjttpd|dd|�tkr<tSWntk
rPnXtddddj|d�d	td
d|dddd
g�dtddtd�tj	d|d�tj
dt�tdt�}tj
d|tdd�}tj
d|tdtdd+�}|d+k	rMt
jj|�rMtdj|���ntj
d|t�}i|dd6|d6t|�d6|d6}tddddj|d�d	itd
d|t|��d 6dtddtd�yt|�}Wn4tk
r,}tjd!|d|d"tj�tSXd#�}y\tjjj|d$|dfd%tj
d&|tdd6�d)tj
d*|tdd'��}	Wn\ttfk
r�}z*yt|d�Wntk
r�nXWd+tt j!|���XnX|	d,d-|d.<||d<||d/<td0|t�}|j"|	�tj	d1|d�tj#d2|dt$j%|	��tddd3d4j|d�d	td
d5|dddd
g�dtddtd�|S(7u<
    Create a single BareMetal server from a data dict.
    uprofileuscalewaytvm_ucloud.fire_eventueventustarting createusalt/cloud/{0}/creatingunameR.ucloud.filter_eventucreatinguproviderudrivertsock_dirusock_dirt	transportu	transportuCreating a BareMetal server %su
access_keyR'ucommercial_typetdefaultuC1ussh_key_fileu-The defined key_filename '{0}' does not existussh_passworduorganizationuimageurequesting instanceusalt/cloud/{0}/requestingu
requestingukwargsuoError creating %s on Scaleway

The following exception was thrown when trying to run the initial deployment: %stexc_info_on_loglevelcS@s,t|d�}|r(|jd�r(|StS(u@ Called to check if the server has a public IP address.
        uactionu	public_ip(t
show_instanceRR(tserver_nametdata((s>/usr/lib/python2.7/site-packages/salt/cloud/clouds/scaleway.pyt__query_node_data	stupdate_argsttimeoutuwait_for_ip_timeouti
i<tintervaluwait_for_ip_intervalNu	public_ipuaddressussh_hostukey_filenameucloud.bootstrapuCreated BareMetal server '%s'u*'%s' BareMetal server creation details:
%sucreated instanceusalt/cloud/{0}/createducreatediX(&Rtis_profile_configuredRRRtAttributeErrort	__utils__R)tlogtinfoR(R
tNonetostpathtisfileRR-tlistR3t	ExceptionterrortloggingtDEBUGR#R$R%twait_for_ipR	RtdestroyRRRtupdatetdebugtpprinttpformat(
R*t
access_keytcommercial_typetkey_filenametssh_passwordtkwargsRtexcR<R;((s>/usr/lib/python2.7/site-packages/salt/cloud/clouds/scaleway.pytcreate�s�	

"


 


	




"
userversugetc

C@sMtjtjdt�tdtdd��}dj||�}|r[|dj|�7}n|rn||7}nt|t	�s�i}ntjdt�tdt�}t
jjj
|�}td|d	|d
|di|d6d
d6dd6�}	|	jdkr tdj|	j|	j���ntj|	j�|	jdkrCtS|	j�S(u& Make a call to the Scaleway API.
    uapi_rootR'R7uhttps://api.cloud.online.netu{0}/{1}/u{0}/utokenu
http.queryRR;theadersuX-Auth-Tokenu
salt-cloudu
User-Agentuapplication/jsonuContent-Typei+uGAn error occurred while querying Scaleway. HTTP Code: {0}  Error: '{1}'i�(RRRR(R
RRR)t
isinstancetdictR#R$tjsontdumpsRBtstatus_codeRttextRCRQturltTrue(
RR0R1R.R/t	base_pathRGttokenR;trequest((s>/usr/lib/python2.7/site-packages/salt/cloud/clouds/scaleway.pyR<s>
	


cC@sLtjjjtjd|t�|ttjjjtjjjt|���S(u* Return the script deployment object.
    uscript(	R#R$R%t	os_scriptRR(Rtsalt_config_to_yamlt
minion_config(R*((s>/usr/lib/python2.7/site-packages/salt/cloud/clouds/scaleway.pytscriptqscC@s?|dkrtd��nt|�}td|tt�|S(u8 Show the details from a Scaleway BareMetal server.
    uactionu<The show_instance action must be called with -a or --action.ucloud.cache_node(Rt	_get_nodeRBRR(tnameRR((s>/usr/lib/python2.7/site-packages/salt/cloud/clouds/scaleway.pyR9~scC@sjxctttd���D]I}yt�|SWqtk
ratjd||�tjd�qXqWiS(Ni
u<Failed to get the data for node '%s'. Remaining attempts: %sg�?(	treversedRIRR"tKeyErrorRCRQttimetsleep(Rltattempt((s>/usr/lib/python2.7/site-packages/salt/cloud/clouds/scaleway.pyRk�s

cC@s|dkrtd��ntddddj|�di|d6d	td
dtd�t|d
d�}tddd|ddddidd6dd�}tddddj|�di|d6d	td
dtd�tjdt�tkrtd|t	j
d�dt�n|S(u� Destroy a node. Will check termination protection and warn if enabled.

    CLI Example:
    .. code-block:: bash

        salt-cloud --destroy mymachine
    ufunctionuEThe destroy action must be called with -d, --destroy, -a or --action.ucloud.fire_eventueventudestroying instanceusalt/cloud/{0}/destroyingR.unameR5usock_dirR6u	transportRuactionRuserversR0uidR1u	terminateR/upostudestroyed instanceusalt/cloud/{0}/destroyeduupdate_cachedirucloud.delete_minion_cachediru:i(RRBR)RR9RRRRcRtsplit(RlRR;R((s>/usr/lib/python2.7/site-packages/salt/cloud/clouds/scaleway.pyRO�s2



(+t__doc__t
__future__RRRRLRRRFRotsalt.extRtsalt.ext.six.movesRtsalt.utils.cloudR#tsalt.utils.jsontsalt.configRtsalt.exceptionsRRRRR	t	getLoggert__name__RCRR
R
RERR R"R&R-R3RZRRjR9RkRO(((s>/usr/lib/python2.7/site-packages/salt/cloud/clouds/scaleway.pyt<module>s8(	
	
$				�4	
	

Zerion Mini Shell 1.0