%PDF- %PDF-
Mini Shell

Mini Shell

Direktori : /proc/thread-self/root/usr/lib/python2.7/site-packages/salt/utils/openstack/
Upload File :
Create Path :
Current File : //proc/thread-self/root/usr/lib/python2.7/site-packages/salt/utils/openstack/nova.pyo

�
���^c@�sTdZddlmZmZmZmZddlZddlZddlZddl	m
Z
eZyrddl
Z
ddl
mZddlmZddlZ
ddlZ
ddlZ
ddlZ
ddlZ
eZWnek
r�nXeZy"ddlZddlZeZWnek
r#nXddlZddlZddlm Z ddl!m"Z#ej$e%�Z&d	Z'd
Z(i
dd6d
d6dd6dd6dd6dd6dd6dd6dd6dd6Z)d�Z*d e+fd!��YZ,dddddd"�Z.d#e+fd$��YZ/ed%�Z0ed&�Z1d'�Z2d(�Z3d)e+fd*��YZ4dS(+u
Nova class
i(tabsolute_importtwith_statementtunicode_literalstprint_functionN(tsix(tclient(tOpenStackComputeShell(tSaltCloudSystemExit(tLooseVersionu2.6.1u6.0.1uuuiduidusource_typeusourceudestination_typeudestudisk_busubusudevice_nameudeviceuvolume_sizeusizeuguest_formatuformatu
boot_indexu	bootindexudevice_typeutypeudelete_on_terminationushutdowncC�s�tr�ttj�}tt�}tt�}||koD|knrMtS||krmtjdt�tStjdt�ntS(Nu.Older novaclient version required. Maximum: %su/Newer novaclient version required.  Minimum: %s(	tHAS_NOVAt
_LooseVersiont
novaclientt__version__tNOVACLIENT_MINVERtNOVACLIENT_MAXVERtlogtdebugtFalse(tnovaclient_vertmin_vertmax_ver((s=/usr/lib/python2.7/site-packages/salt/utils/openstack/nova.pyt
check_novaBs		
tKwargsStructcB�seZd�ZRS(cK�s|jj|�dS(N(t__dict__tupdate(tselftentries((s=/usr/lib/python2.7/site-packages/salt/utils/openstack/nova.pyt__init__Ts(t__name__t
__module__R(((s=/usr/lib/python2.7/site-packages/salt/utils/openstack/nova.pyRSscC�s!g}|dkrg}n|dkr0g}n|dk	rui|d6dd6dd6dd6td6}|j|�n|dk	r�i|d6dd6dd6dd6td6}|j|�nx�|D]�}i}x+tj|�D]\}}	|	|t|<q�Wd|kr$|d}
|
d	k|d<n"|jd�d
krFt|d<n|j|�q�Wxw|D]o}idd6d
d6dd6td6}d
|kr�|d
|d<nd|kr�|d|d<n|j|�q^W|dk	ridd6d
d6dd6td6dd6|d6}|j|�n|S(Nuuuiduvolumeusource_typeudestination_typeiu
boot_indexudelete_on_terminationusnapshoturemoveulocalublanki����usizeuvolume_sizeuformatuguest_formatuswap(tNoneRtappendRt	iteritemstCLIENT_BDM2_KEYStgettTrue(tblock_devicetboot_volumetsnapshott	ephemeraltswaptbdmtbdm_dicttdevice_spectkeytvaluetactiontephemeral_spec((s=/usr/lib/python2.7/site-packages/salt/utils/openstack/nova.pyt_parse_block_device_mapping_v2XsN		





t
NovaServercB�seZdd�Zd�ZRS(cC�s�||_|d|_|jdi�jdd�|_|dd|_|d|_d|_i|dd6|dd6|_|jd	i�|_	gg|_
|_gg|_|_
x�|j	j�D]�}x�|D]�}tjjj|d
�r|j
j|d
�n|jj|d
�|jd�dkrK|j
j|d
�q�|jj|d
�q�Wq�W|r}||jd
<ndS(uG
        Make output look like libcloud output for consistency
        uiduimageuBoot From Volumeuflavorustateumetadatau
accessIPv4u	access_ipu	addressesuaddruOS-EXT-IPS:typeufloatingupasswordN(tnametidR"timagetsizetstateRt_uuidtextrat	addressest
public_ipstprivate_ipst	fixed_ipstfloating_ipstvaluestsalttutilstcloudtis_public_ipR(RR2tservertpasswordtnetworktaddr((s=/usr/lib/python2.7/site-packages/salt/utils/openstack/nova.pyR�s,	
!
	
cC�s|jS(N(R(R((s=/usr/lib/python2.7/site-packages/salt/utils/openstack/nova.pyt__str__�sN(RRRRRG(((s=/usr/lib/python2.7/site-packages/salt/utils/openstack/nova.pyR1�s cC�sPx"|D]}|||kr|SqW|tkrLtdj||���niS(NuUnable to find {0} in {1}.(R#Rtformat(tdict_R,R-traise_errortentry((s=/usr/lib/python2.7/site-packages/salt/utils/openstack/nova.pyt	get_entry�s
cC�soxA|D]9}tg|D]\}}|||k^q�r|SqW|tkrktdj||���niS(NuUnable to find {0} in {1}.(tallR#RRH(RItpairsRJRKR,R-((s=/usr/lib/python2.7/site-packages/salt/utils/openstack/nova.pytget_entry_multi�s
/cC�sex^|D]V}|d|krx=|dD].}|d|kr(|ddkr(|dSq(WqqWdS(Nutypeu	endpointsuregionu	interfaceupublicuurl(R(tcatalogtservice_typetregion_namet
service_entrytendpoint_entry((s=/usr/lib/python2.7/site-packages/salt/utils/openstack/nova.pytget_endpoint_url_v3�s
cC�s>d}i}x+|D]#}||kr||||<qqW|S(Nuusernameuapi_keyu
project_iduauth_urluinsecureutimeoutuproxy_tenant_iduproxy_tokenuregion_nameu
endpoint_typeu
extensionsuservice_typeuservice_nameuvolume_service_nameutimingsu
bypass_urluos_cacheuno_cacheuhttp_log_debuguauth_systemuauth_pluginu
auth_tokenucacertu	tenant_id(uusernameuapi_keyu
project_iduauth_urluinsecureutimeoutuproxy_tenant_iduproxy_tokenuregion_nameu
endpoint_typeu
extensionsuservice_typeuservice_nameuvolume_service_nameutimingsu
bypass_urluos_cacheuno_cacheuhttp_log_debuguauth_systemuauth_pluginu
auth_tokenucacertu	tenant_id((tkwargst	variablestrettvar((s=/usr/lib/python2.7/site-packages/salt/utils/openstack/nova.pytsanatize_novaclient�s
tSaltNovacB�sreZdZgZd>d>d>ed�Zd>ed�Zd�Z	d�Z
d�Zd�Zd�Z
d�Zd	d	d
d�Zd�Zd
�Zd�Zd�Zd>d�Zd�Zdd>d>d>d�Zd�Zd
d�Zdd
d�Zd�Zd�Zd�Zd�Zd�ZeZd	d	d	dd�Z d�Z!d �Z"d>d>d!�Z#d"�Z$d#�Z%d>d$�Z&e&Z'd>d>d%�Z(d>d>d>d&�Z)d'�Z*d(�Z+d)�Z,d*�Z-d+�Z.d,�Z/d-�Z0d.�Z1d/�Z2d0�Z3d1�Z4d2�Z5d3�Z6d4�Z7d5�Z8d6�Z9d7�Z:d8�Z;d9�Z<d>d:�Z=d;�Z>d<�Z?d=�Z@RS(?u,
    Class for all novaclient functions
    c	K�s{t|tg�rF|jd|d|d|d|d|d||�n1|jd|d|d|d|d|d||�dS(u)
        Set up nova credentials
        tusernamet
project_idtauth_urlRRRDtos_auth_pluginN(RMtHAS_KEYSTONEAUTHt	_new_initt	_old_init(	RR\R]R^RRRDR_tuse_keystoneauthRV((s=/usr/lib/python2.7/site-packages/salt/utils/openstack/nova.pyR�s
c	K�s�|dkri}ntjj|p'd�}
|	j�|_|j�|_|js�tt	d�r{t	�j
d�|_ntjd�|_x|jD]}|j
d�q�W|j|jd<n||jd<||jd<||jd<||jd<|jd	�r9|	jd
d�|jd
<|	jdd�|jd<n||jd
<d|jd<t|d�r�t|j�|_x$|jD]}|j
d|j�q~W|jj|_ntj|	jdd��|_t|j�|_|
j|j�}tjjd|d|�|_tjd|jd|j|j�}
|
jjj�|jd<|	jdd�}|
jjjddi|d6�j�jdg�|_|
jjd|�jd�r�|j|�n
|j |�dS(Nupasswordu_discover_extensionsu2.0u__pre_parse_args__u
extensionsuusernameuproject_nameuauth_urlu3uuser_domain_nameudefaultuproject_domain_nameuregion_nameucomputeuservice_typeu__post_parse_args__uversionitauthtverifytversiontsessionu
auth_tokenuidentity_service_typeuidentityu
/auth/catalogtendpoint_filterucatalogRQuv3(!Rt
keystoneauth1tloadingtget_plugin_loadertcopyt
client_kwargsRVt
extensionsthasattrRt_discover_extensionsRtdiscover_extensionst	run_hookstendswithR"RtkwargstructRRt	text_typeRfRZtload_from_optionsRgtSessiontClientt	get_tokentjsonRPtget_endpointt	_v3_setupt	_v2_setup(RR\R]R^RRRDR_RdReRVtloadert	extensiontoptionstconntidentity_service_type((s=/usr/lib/python2.7/site-packages/salt/utils/openstack/nova.pyRasJ		





$7cK�sU|j�|_|js�ttd�r?t�jd�|_ntjd�|_x|jD]}|jd�q[W|j|jd<n||jd<||jd<||jd<||jd<d	|jd
<||jd<|dk	rt
jj�t
jj
|�}	|	|jd<||jd
<n|jjdd�s@||jd<nt|d�r�t|j�|_x$|jD]}|jd|j�qkW|jj|_nt|j�|_tj|jdd��|jd<tj|j�}
y|
jj�Wn#t
jjk
rtd��nX|
jj|jd<|
jjjdd|_|j|�dS(Nu_discover_extensionsu2.0u__pre_parse_args__u
extensionsuusernameu
project_iduauth_urluregion_nameucomputeuservice_typeuos_auth_urluauth_pluginuauth_systemuapi_keyu__post_parse_args__uversioniu6Nova provider requires a 'region_name' to be specifiedu
auth_tokenuaccessuserviceCatalog(RlRVRnRoRRpRRqRrRRtauth_plugintdiscover_auth_systemstload_pluginR"RRtRRZRRuRxtauthenticatet
exceptionstAmbiguousEndpointsRt
auth_tokentservice_catalogRPR}(RR\R]R^RRRDR_RVRR�R�((s=/usr/lib/python2.7/site-packages/salt/utils/openstack/nova.pyRb8sJ	







"
cC�s+|dk	rBt|jd|�|jd<tjd|jd�ntjd|jd|j	|j�|_
t|jdddt�j
d	i�}|r|dk	r�t|jd|�|jd<tjd
|jd�ntjd|jd|j	|j�|_t|d�r'|j�q'n	d|_dS(Nucomputeu
bypass_urluUsing Nova bypass_url: %sRfRgutypeuvolumeRJu	endpointsuUsing Cinder bypass_url: %su
extensions(RRURPRmRRRRxRfRgtcompute_connRLRR"tvolume_connRotexpand_extensions(RRRtvolume_endpoints((s=/usr/lib/python2.7/site-packages/salt/utils/openstack/nova.pyR|ps	''	'cC�s�|dk	rEt|jdd�d}t|d|�d|jd<ntj|j�|_t|jdddt�jdi�}|r�|dk	r�t|d|�d|jd<ntj|j�|_	t
|d	�r�|j�q�n	d|_	dS(
Nutypeucomputeu	endpointsuregionu	publicURLu
bypass_urluvolumeRJu
extensions(RRLRPRVRRxR�RR"R�RoR�(RRRtservers_endpointsR�((s=/usr/lib/python2.7/site-packages/salt/utils/openstack/nova.pyR}�s('c	C�s�x�|j|jfD]�}|dkr+qnx�|jD]�}x�|jjD]�}tjt|j|��soqHnxit	j
|j�D]U\}}t|tj
j�s�q�n|jj|kr�t|||j|��q�q�WqHWq5WqWdS(N(R�R�RRntmoduleRtinspecttisclasstgetattrRR t
isinstanceRtbasetManagert	__class__Rtsetattrt
manager_class(Rt
connectionRtattrR,R-((s=/usr/lib/python2.7/site-packages/salt/utils/openstack/nova.pyR��scC�s|jS(u(
        Return service catalog
        (RP(R((s=/usr/lib/python2.7/site-packages/salt/utils/openstack/nova.pytget_catalog�scC�sm|j|�}ttj|��}ttj|��}t|d�sTd|_nt|||j�}|S(uG
        Make output look like libcloud output for consistency
        upasswordN(	tserver_showtnextRt
itervaluestiterkeysRoRRDR1(Rtuuidtserver_infoRCtserver_nameRX((s=/usr/lib/python2.7/site-packages/salt/utils/openstack/nova.pytserver_show_libcloud�sii,cK�s�|j}||d<||d<|p&d|d<|jdg�}|jdg�}|jdd�}	|jdd�}
|jdd�}td	|d
|	d|
d|d
|�|d<|jj|�}|j|_t|dd�|_	t
j
�}
d}x�tr�|d7}y|j|j�SWq�t
k
r�}tjd|�t
jd�t
j
�|
|krwtjd|�tStjd|�q�Xq�WdS(u&
        Boot a cloud server.
        unameuflavoruimageu	ephemeralublock_deviceuboot_volumeusnapshotuswapR$R%R&R'R(ublock_device_mapping_v2u	adminPassiiu(Server information not yet available: %su1Timed out after %s seconds while waiting for datauRetrying server_show() (try %s)N(R�RtpopR0tserverstcreateR3R�R�RDttimeR#R�t	ExceptionRRtsleepterrorR(RR2t	flavor_idtimage_idttimeoutRVtnt_ksR'R$R%R&R(tresponsetstartttrycounttexc((s=/usr/lib/python2.7/site-packages/salt/utils/openstack/nova.pytboot�s>	

	


	cC�s
|j|�S(u6
        Find a server by its name (libcloud)
        (tserver_by_name(RR2((s=/usr/lib/python2.7/site-packages/salt/utils/openstack/nova.pyt
show_instance�scC�s |j}|jj||�dS(u5
        Change server(uuid's) root password
        N(R�R�tchange_password(Rt	server_idRDR�((s=/usr/lib/python2.7/site-packages/salt/utils/openstack/nova.pyt
root_password�s	cC�s+|j|j�j|i�jdd��S(u+
        Find a server by its name
        uidu(R�tserver_listR"(RR2((s=/usr/lib/python2.7/site-packages/salt/utils/openstack/nova.pyR��scC�s|jdkrtd��n|j}|jj|�}i|jd6|jd6|jd6|jd6|j	d6|j
d6}|S(	uH
        Organize information about a volume from the volume_id
        uNo cinder endpoint availableunameusizeuidudescriptionuattachmentsustatusN(R�RRtvolumesR"tdisplay_nameR5R3tdisplay_descriptiontattachmentststatus(Rt	volume_idR�tvolumeR�((s=/usr/lib/python2.7/site-packages/salt/utils/openstack/nova.pyt_volume_get�s	





cC�s�|jd	krtd��n|j}|jjd|�}i}xW|D]O}i|jd6|jd6|jd6|jd6|j	d6|j
d6||j<qIW|S(
u(
        List all block volumes
        uNo cinder endpoint availabletsearch_optsunameusizeuidudescriptionuattachmentsustatusN(R�RRR�tlistR�R5R3R�R�R�(RR�R�R�R�R�((s=/usr/lib/python2.7/site-packages/salt/utils/openstack/nova.pytvolume_lists	





cC�sN|jdkrtd��n|j}|jdi|d6�}||}|S(u!
        Show one volume
        uNo cinder endpoint availableR�udisplay_nameN(R�RRR�(RR2R�R�R�((s=/usr/lib/python2.7/site-packages/salt/utils/openstack/nova.pytvolume_show#s		
idcC�sd|jdkrtd��n|j}|jjd|d|d|d|d|�}|j|j�S(u'
        Create a block device
        uNo cinder endpoint availableR5R�tvolume_typetsnapshot_idtavailability_zoneN(R�RRR�R�R�R3(RR2R5R&tvoltypeR�R�R�((s=/usr/lib/python2.7/site-packages/salt/utils/openstack/nova.pyt
volume_create5s		cC�s�|jdkrtd��n|j}y|j|�}Wn+tk
rg}tdj||���nX|ddkr||S|jj|d�}|S(u'
        Delete a block device
        uNo cinder endpoint availableuUnable to find {0} volume: {1}ustatusudeleteduidN(R�RRR�tKeyErrorRHR�tdelete(RR2R�R�R�R�((s=/usr/lib/python2.7/site-packages/salt/utils/openstack/nova.pyt
volume_deleteGs	cC�sDy|j|�}Wn+tk
r@}tdj||���nX|dsOtS|jjj|ddd|ddd�}d}tj�}x�tr?|d7}y+|j	|d�}|ddkr�|SWq�t
k
r;}tjd	|�tj
d�tj�||kr(tjd
|�tStjd|�q�Xq�WdS(
u'
        Detach a block device
        uUnable to find {0} volume: {1}uattachmentsiu	server_iduidiustatusu	availableuVolume is detaching: %su1Timed out after %d seconds while waiting for datauRetrying volume_show() (try %d)N(R�R�RRHR#R�R�tdelete_server_volumeR�R�R�RRR�R�R(RR2R�R�R�R�R�R�((s=/usr/lib/python2.7/site-packages/salt/utils/openstack/nova.pyt
volume_detachWs4
	

	u	/dev/xvdbcC�s:y|j|�}Wn+tk
r@}tdj||���nX|j|�}|jjj|j|dd|�}d}	t	j	�}
x�t
r5|	d7}	y+|j|d�}|ddkr�|SWq�tk
r1}t
jd|�t	jd�t	j	�|
|krt
jd	|�tSt
jd
|	�q�Xq�WdS(u'
        Attach a block device
        uUnable to find {0} volume: {1}uidtdeviceiiustatusuin-useuVolume is attaching: %su1Timed out after %s seconds while waiting for datauRetrying volume_show() (try %s)N(R�R�RRHR�R�R�tcreate_server_volumeR3R�R#R�R�RRR�R�R(RR2R�R�R�R�R�RCR�R�R�((s=/usr/lib/python2.7/site-packages/salt/utils/openstack/nova.pyt
volume_attach{s4
		

	cC�s|j}|jj|�}tS(u"
        Suspend a server
        (R�R�tsuspendR#(Rtinstance_idR�R�((s=/usr/lib/python2.7/site-packages/salt/utils/openstack/nova.pyR��s	cC�s|j}|jj|�}tS(u!
        Resume a server
        (R�R�tresumeR#(RR�R�R�((s=/usr/lib/python2.7/site-packages/salt/utils/openstack/nova.pyR��s	cC�s|j}|jj|�}tS(u"
        Lock an instance
        (R�R�tlockR#(RR�R�R�((s=/usr/lib/python2.7/site-packages/salt/utils/openstack/nova.pyR��s	cC�s|j}|jj|�}tS(u!
        Delete a server
        (R�R�R�R#(RR�R�R�((s=/usr/lib/python2.7/site-packages/salt/utils/openstack/nova.pyR��s	cC�s�|j}i}x�|jj�D]�}i}x#|jD]}|d||d<q5Wi|jd6|jd6|jd6|jd6|jd6|j	d6|d	6||j<t
|d
�r|j||jd
<qqW|S(uG
        Return a list of available flavors (nova flavor-list)
        uhrefureludiskuidunameuramuswapuvcpusulinksurxtx_factor(R�tflavorsR�tlinkstdiskR3R2tramR(tvcpusRotrxtx_factor(RR�RXtflavorR�tlink((s=/usr/lib/python2.7/site-packages/salt/utils/openstack/nova.pytflavor_list�s"	





icC�s[|j}|jjd|d|d|d|d|�i|d6|d6|d6|d	6|d
6S(u!
        Create a flavor
        R2tflavoridR�R�R�unameuiduramudiskuvcpus(R�R�R�(RR2R�R�R�R�R�((s=/usr/lib/python2.7/site-packages/salt/utils/openstack/nova.pyt
flavor_create�s		
cC�s&|j}|jj|�dj|�S(u!
        Delete a flavor
        uFlavor deleted: {0}(R�R�R�RH(RR�R�((s=/usr/lib/python2.7/site-packages/salt/utils/openstack/nova.pyt
flavor_delete�s	cC�sX|j}i}xB|jj�D]1}i|jd6|jd6|jd6||j<qW|S(u
        List keypairs
        unameufingerprintu
public_key(R�tkeypairsR�R2tfingerprintt
public_key(RR�RXtkeypair((s=/usr/lib/python2.7/site-packages/salt/utils/openstack/nova.pytkeypair_list�s	

cC�s�|j}|rNtjjj|d��"}tjjj|j��}WdQXn|sXtS|j	j
|d|�i|d6|d6}|S(u
        Add a keypair
        urNR�unameupubkey(R�R?R@tfilestfopentstringutilst
to_unicodetreadRR�R�(RR2tpubfiletpubkeyR�tfp_RX((s=/usr/lib/python2.7/site-packages/salt/utils/openstack/nova.pytkeypair_adds	$cC�s&|j}|jj|�dj|�S(u"
        Delete a keypair
        uKeypair deleted: {0}(R�R�R�RH(RR2R�((s=/usr/lib/python2.7/site-packages/salt/utils/openstack/nova.pytkeypair_deletes	cC�s�|j}|jj|�}i}x#|jD]}|d||d<q+Wi|jd6|jd6|jd6|jd6|jd6|j	d6|j
d	6|d
6}t|d�r�|j|d<nt|d�r�|j
|d<n|S(
u1
        Show image details and metadata
        uhrefurelunameuidustatusuprogressucreateduupdatedumetadataulinksuminDiskuminRam(R�timagesR"R�R2R3R�tprogresstcreatedtupdatedtmetadataRotminDisktminRam(RR�R�R4R�R�RX((s=/usr/lib/python2.7/site-packages/salt/utils/openstack/nova.pyt
image_shows&	







cC�s|j}i}x�|jj�D]�}i}x#|jD]}|d||d<q5Wi|jd6|jd6|jd6|jd6|jd6|j	d6|j
d	6|d
6||j<t|d�r�|j||jd<nt|d�r|j
||jd<qqW|ri|||6S|S(
u$
        List server images
        uhrefurelunameuidustatusuprogressucreateduupdatedumetadataulinksuminDiskuminRam(R�R�R�R�R2R3R�R�R�R�R�RoR�R�(RR2R�RXR4R�R�((s=/usr/lib/python2.7/site-packages/salt/utils/openstack/nova.pyt
image_list3s,	






cK�sv|j}|rGx5|jj�D]!}|j|kr|j}qqWn|sXidd6S|jj||�i||6S(u$
        Set image metadata
        u*A valid image name or id was not specifieduError(R�R�R�R2R3tset_meta(RR�R2RVR�R4((s=/usr/lib/python2.7/site-packages/salt/utils/openstack/nova.pytimage_meta_setQs	cC�s�|j}|rGx5|jj�D]!}|j|kr|j}qqWn|jd�}|sgidd6S|jj||�idj|�|6S(u'
        Delete image metadata
        u,u*A valid image name or id was not specifieduErroruDeleted: {0}(R�R�R�R2R3tsplittdelete_metaRH(RR�R2tkeysR�R4RN((s=/usr/lib/python2.7/site-packages/salt/utils/openstack/nova.pytimage_meta_deletebs	cC�s�|j}i}x�|jj�D]�}y�i|jd6|jd6|jd6|jd6|jd6i|jdd6|jdd6d6i|j	r�|j	dndd6|j	r�|j	dnd	d6d
6||j<Wqt
k
r�qXqW|S(u
        List servers
        uidunameustateu
accessIPv4u
accessIPv6ulinksuflavoruBoot From Volumeuuimage(R�R�R�R3R2R�t
accessIPv4t
accessIPv6R�R4t	TypeError(RR�RXtitem((s=/usr/lib/python2.7/site-packages/salt/utils/openstack/nova.pyR�ts"	




 /
cC�si|j}i}xS|jjdt�D]<}y"i|jd6dd6||j<Wq%tk
r`q%Xq%W|S(u8
        List minimal information about servers
        tdetaileduiduRunningustate(R�R�R�RR3R2R(RR�RXR((s=/usr/lib/python2.7/site-packages/salt/utils/openstack/nova.pytserver_list_min�s	

cC�s�|j}i}x�|jj�D]�}yiid6id6|jd6|jd6|jd6|jd6i|jdd6|jdd6d	6|jd
6|j	d6i|j
r�|j
dndd6|j
r�|j
dndd6d
6|jd6|jd6|j
d6|jd6|jd6|jd6|jd6|jd6||j<Wntk
rJqnXt|dd�||jd<t|jd�r�i|jdd6||jd<nt|jd�r�|jd||jdd<nt|jd�r�|jd||jdd<nt|jd�r/|jd||jdd<nt|jd �r`|jd ||jdd!<nt|jd"�r�|jd"||jdd#<nt|jd$�r�|jd$||jdd%<nt|jd&�r|jd&||jd&<qqW|S('u*
        Detailed list of servers
        uOS-EXT-SRV-ATTRu
OS-EXT-STSu
accessIPv4u
accessIPv6u	addressesucreateduidulinksuflavoruhostIduBoot From Volumeuuimageukey_nameumetadataunameustateu	tenant_iduupdateduuser_iduprogressu0uOS-DCF:diskConfigu
diskConfiguOS-DCFuOS-EXT-SRV-ATTR:hostuhostu#OS-EXT-SRV-ATTR:hypervisor_hostnameuhypervisor_hostnameuOS-EXT-SRV-ATTR:instance_nameu
instance_nameuOS-EXT-STS:power_stateupower_stateuOS-EXT-STS:task_stateu
task_stateuOS-EXT-STS:vm_stateuvm_stateusecurity_groups(R�R�R�RRR9R�R�thostIdR3R4tkey_nameR�R�R2R�t	tenant_idR�tuser_idRR�RoR(RR�RXR((s=/usr/lib/python2.7/site-packages/salt/utils/openstack/nova.pytserver_list_detailed�s\	





 !







cC�s�i}y|j�}Wntk
r5td��nXxCtj|�D]2\}}tj|d�|krF|||<qFqFW|S(u,
        Show details of one server
        u?Corrupt server in server_list_detailed. Remove corrupt servers.uid(RtAttributeErrorRRR Ru(RR�RXR�R�RC((s=/usr/lib/python2.7/site-packages/salt/utils/openstack/nova.pyR��s
cC�s4|j}|jj||�i|d6|d6}|S(u)
        Create a security group
        unameudescription(R�tsecurity_groupsR�(RR2tdescriptionR�RX((s=/usr/lib/python2.7/site-packages/salt/utils/openstack/nova.pytsecgroup_create�s	cC�sf|j}xM|jj�D]<}|j|kr|jj|j�idj|�|6SqWdj|�S(u)
        Delete a security group
        uDeleted security group: {0}uSecurity group not found: {0}(R�RR�R2R�R3RH(RR2R�R((s=/usr/lib/python2.7/site-packages/salt/utils/openstack/nova.pytsecgroup_delete�s	cC�sl|j}i}xV|jj�D]E}i|jd6|jd6|jd6|jd6|jd6||j<qW|S(u&
        List security groups
        unameudescriptionuidu	tenant_idurules(R�RR�R2RR3R
trules(RR�RXR((s=/usr/lib/python2.7/site-packages/salt/utils/openstack/nova.pyt
secgroup_list�s	



cC�s=|j}g}x'|jj�D]}|j|j�qW|S(u
        List items
        (R�titemsR�RR(RR�RXR((s=/usr/lib/python2.7/site-packages/salt/utils/openstack/nova.pyt
_item_lists
	cC�s+x$|D]}|j|kr|jSqWiS(u1
        Parse the returned network list
        (tlabelR(RR2tnetwork_lsttnet((s=/usr/lib/python2.7/site-packages/salt/utils/openstack/nova.pyt
_network_shows
cC�s(|j}|jj�}|j||�S(u*
        Show network information
        (R�tnetworksR�R(RR2R�tnet_list((s=/usr/lib/python2.7/site-packages/salt/utils/openstack/nova.pytnetwork_shows	cC�s,|j}g|jj�D]}|j^qS(u-
        List extra private networks
        (R�RR�R(RR�RE((s=/usr/lib/python2.7/site-packages/salt/utils/openstack/nova.pytnetwork_list&s	cC�sgddddddddd	d
ddd
ddg}x-tj|�D]}||krC||=qCqCW|S(u8
        Sanatize novaclient network parameters
        ulabelubridgeubridge_interfaceucidrucidr_v6udns1udns2u
fixed_cidrugatewayu
gateway_v6u
multi_hostupriorityu
project_idu
vlan_startu	vpn_start(RR�(RRVtparamstvariable((s=/usr/lib/python2.7/site-packages/salt/utils/openstack/nova.pyt_sanatize_network_params-scK�s;|j}||d<|j|�}|jj|�}|jS(u.
        Create extra private network
        ulabel(R�R RR�R(RR2RVR�R((s=/usr/lib/python2.7/site-packages/salt/utils/openstack/nova.pytnetwork_create<s
	
cC�s"|j�j|i�jdd�S(u+
        Get server uuid from name
        uidu(R�R"(RR2((s=/usr/lib/python2.7/site-packages/salt/utils/openstack/nova.pyt_server_uuid_from_nameFscC�s>|j}|jj|j|��}g|D]}|j^q+S(u1
        Get virtual interfaces on slice
        (R�tvirtual_interfacesR�R"R(RR2R�tnetsRE((s=/usr/lib/python2.7/site-packages/salt/utils/openstack/nova.pytvirtual_interface_listLs	cC�sc|j}|j|�}|j|�jdd�}|dkrJit|6S|jj||�}|S(u.
        Add an interfaces to a slice
        uidN(R�R"RR"RRR#R�(RR2tnet_nameR�tserveridt	networkidR$((s=/usr/lib/python2.7/site-packages/salt/utils/openstack/nova.pytvirtual_interface_createTs	cC�sJ|j}|jj�}i}x%|D]}i|jd6||j<q%W|S(uP
        List all floating IP pools

        .. versionadded:: 2016.3.0
        uname(R�tfloating_ip_poolsR�R2(RR�tpoolsR�tpool((s=/usr/lib/python2.7/site-packages/salt/utils/openstack/nova.pytfloating_ip_pool_list`s	
cC�sr|j}|jj�}i}xM|D]E}i|jd6|jd6|jd6|jd6|jd6||j<q%W|S(uG
        List floating IPs

        .. versionadded:: 2016.3.0
        uipufixed_ipuiduinstance_idupool(R�R=R�tiptfixed_ipR3R�R,(RR�R=R�tfloating_ip((s=/usr/lib/python2.7/site-packages/salt/utils/openstack/nova.pytfloating_ip_listos	




cC�sx|j}|jj�}xY|D]Q}|j|kri|jd6|jd6|jd6|jd6|jd6}|SqWiS(uW
        Show info on specific floating IP

        .. versionadded:: 2016.3.0
        uipufixed_ipuiduinstance_idupool(R�R=R�R.R/R3R�R,(RR.R�R=R0R�((s=/usr/lib/python2.7/site-packages/salt/utils/openstack/nova.pytfloating_ip_show�s	





cC�sW|j}|jj|�}i|jd6|jd6|jd6|jd6|jd6}|S(uL
        Allocate a floating IP

        .. versionadded:: 2016.3.0
        uipufixed_ipuiduinstance_idupool(R�R=R�R.R/R3R�R,(RR,R�R0R�((s=/usr/lib/python2.7/site-packages/salt/utils/openstack/nova.pytfloating_ip_create�s	




cC�s(|j|�}|j}|jj|�S(uO
        De-allocate a floating IP

        .. versionadded:: 2016.3.0
        (R2R�R=R�(RR0R.R�((s=/usr/lib/python2.7/site-packages/salt/utils/openstack/nova.pytfloating_ip_delete�s	cC�sL|j}|j|�}|jj|jd�}|j|�|j�|S(u]
        Associate floating IP address to server

        .. versionadded:: 2016.3.0
        uid(R�R�R�R"Rtadd_floating_ipR1(RR�R0R�tserver_RC((s=/usr/lib/python2.7/site-packages/salt/utils/openstack/nova.pytfloating_ip_associate�s
	
cC�sL|j}|j|�}|jj|jd�}|j|�|j�|S(u\
        Disassociate a floating IP from server

        .. versionadded:: 2016.3.0
        uid(R�R�R�R"Rtremove_floating_ipR1(RR�R0R�R6RC((s=/usr/lib/python2.7/site-packages/salt/utils/openstack/nova.pytfloating_ip_disassociate�s
	
N(ARRt__doc__RnRRRR#RaRbR|R}R�R�R�R�R�R�R�R�R�R�R�R�R�R�R�R�R�R�R�t
list_sizesR�R�R�R�R�R�R�tlist_imagesR�RR�RRR�RRRRRRRR R!R"R%R)R-R1R2R3R4R7R9(((s=/usr/lib/python2.7/site-packages/salt/utils/openstack/nova.pyR[�s�2	8					
)							%"												>						
						
							
	(5R:t
__future__RRRRR�tloggingR�tsalt.extRRR	RRtnovaclient.shellRtnovaclient.utilstnovaclient.auth_plugintnovaclient.exceptionstnovaclient.extensiontnovaclient.baseR#tImportErrorR`tkeystoneauth1.loadingRitkeystoneauth1.sessiontsalt.utils.cloudR?tsalt.utils.filestsalt.exceptionsRtsalt.utils.versionsRR
t	getLoggerRRR
RR!RtobjectRRR0R1RLRORURZR[(((s=/usr/lib/python2.7/site-packages/salt/utils/openstack/nova.pyt<module>sh"




	6%			
	

Zerion Mini Shell 1.0