mirror of
				https://github.com/apache/cloudstack.git
				synced 2025-11-04 00:02:37 +01:00 
			
		
		
		
	CLOUDSTACK-4780: Changes related to checking snapshot on NFS server
This commit is contained in:
		
							parent
							
								
									13ba5e45a1
								
							
						
					
					
						commit
						33fb241fdf
					
				@ -47,12 +47,12 @@ from marvin.integration.lib.common import (get_domain,
 | 
			
		||||
                                        list_events,
 | 
			
		||||
                                        list_zones,
 | 
			
		||||
                                        get_free_vlan,
 | 
			
		||||
                                        get_hypervisor_type,
 | 
			
		||||
                                        update_resource_limit
 | 
			
		||||
                                        )
 | 
			
		||||
 | 
			
		||||
from marvin.integration.lib.utils import (validateList,
 | 
			
		||||
					                      random_gen)
 | 
			
		||||
					                      random_gen,
 | 
			
		||||
                                          get_hypervisor_type)
 | 
			
		||||
 | 
			
		||||
from marvin.cloudstackAPI import (addNicToVirtualMachine,
 | 
			
		||||
                                  removeNicFromVirtualMachine,
 | 
			
		||||
 | 
			
		||||
@ -36,12 +36,13 @@ from marvin.integration.lib.common import   (get_domain,
 | 
			
		||||
                                             list_snapshots,
 | 
			
		||||
                                             list_templates,
 | 
			
		||||
                                             list_virtual_machines,
 | 
			
		||||
                                             get_hypervisor_type)
 | 
			
		||||
                                             )
 | 
			
		||||
 | 
			
		||||
from marvin.integration.lib.utils import    (cleanup_resources,
 | 
			
		||||
                                             format_volume_to_ext3,
 | 
			
		||||
                                             random_gen,
 | 
			
		||||
                                             is_snapshot_on_nfs)
 | 
			
		||||
                                             is_snapshot_on_nfs,
 | 
			
		||||
                                             get_hypervisor_type)
 | 
			
		||||
 | 
			
		||||
from marvin.cloudstackAPI import            detachVolume
 | 
			
		||||
import time
 | 
			
		||||
 | 
			
		||||
@ -18,11 +18,56 @@
 | 
			
		||||
"""
 | 
			
		||||
 | 
			
		||||
#Import Local Modules
 | 
			
		||||
from marvin.cloudstackAPI import *
 | 
			
		||||
from marvin.cloudstackAPI import (listConfigurations,
 | 
			
		||||
                                  listPhysicalNetworks,
 | 
			
		||||
                                  listRegions,
 | 
			
		||||
                                  addNetworkServiceProvider,
 | 
			
		||||
                                  updateNetworkServiceProvider,
 | 
			
		||||
                                  listDomains,
 | 
			
		||||
                                  listZones,
 | 
			
		||||
                                  listPods,
 | 
			
		||||
                                  listOsTypes,
 | 
			
		||||
                                  listTemplates,
 | 
			
		||||
                                  updateResourceLimit,
 | 
			
		||||
                                  listRouters,
 | 
			
		||||
                                  listNetworks,
 | 
			
		||||
                                  listClusters,
 | 
			
		||||
                                  listSystemVms,
 | 
			
		||||
                                  listStoragePools,
 | 
			
		||||
                                  listVirtualMachines,
 | 
			
		||||
                                  listLoadBalancerRuleInstances,
 | 
			
		||||
                                  listFirewallRules,
 | 
			
		||||
                                  listVolumes,
 | 
			
		||||
                                  listIsos,
 | 
			
		||||
                                  listAccounts,
 | 
			
		||||
                                  listSnapshotPolicies,
 | 
			
		||||
                                  listDiskOfferings,
 | 
			
		||||
                                  listVlanIpRanges,
 | 
			
		||||
                                  listUsageRecords,
 | 
			
		||||
                                  listNetworkServiceProviders,
 | 
			
		||||
                                  listHosts,
 | 
			
		||||
                                  listPublicIpAddresses,
 | 
			
		||||
                                  listPortForwardingRules,
 | 
			
		||||
                                  listLoadBalancerRules,
 | 
			
		||||
                                  listSnapshots,
 | 
			
		||||
                                  listUsers,
 | 
			
		||||
                                  listEvents,
 | 
			
		||||
                                  listServiceOfferings,
 | 
			
		||||
                                  listVirtualRouterElements,
 | 
			
		||||
                                  listNetworkOfferings,
 | 
			
		||||
                                  listResourceLimits,
 | 
			
		||||
                                  listVPCOfferings)
 | 
			
		||||
from marvin.integration.lib.base import (Configurations,
 | 
			
		||||
                                         NetScaler,
 | 
			
		||||
                                         Template,
 | 
			
		||||
                                         Resources,
 | 
			
		||||
                                         PhysicalNetwork,
 | 
			
		||||
                                         Host)
 | 
			
		||||
from marvin.integration.lib.utils import (get_process_status,
 | 
			
		||||
                                          xsplit)
 | 
			
		||||
 | 
			
		||||
from marvin.sshClient import SshClient
 | 
			
		||||
from utils import *
 | 
			
		||||
from base import *
 | 
			
		||||
from marvin.codes import PASS
 | 
			
		||||
import random
 | 
			
		||||
 | 
			
		||||
#Import System modules
 | 
			
		||||
import time
 | 
			
		||||
@ -91,7 +136,7 @@ def add_netscaler(apiclient, zoneid, NSservice):
 | 
			
		||||
      cmd = updateNetworkServiceProvider.updateNetworkServiceProviderCmd()
 | 
			
		||||
      cmd.id = netscaler_provider.id
 | 
			
		||||
      cmd.state =  'Enabled'
 | 
			
		||||
      response = apiclient.updateNetworkServiceProvider(cmd)
 | 
			
		||||
      apiclient.updateNetworkServiceProvider(cmd)
 | 
			
		||||
 | 
			
		||||
    return netscaler
 | 
			
		||||
 | 
			
		||||
@ -199,19 +244,6 @@ def get_template(apiclient, zoneid, ostype, services=None):
 | 
			
		||||
                                                                    ostypeid)
 | 
			
		||||
    return
 | 
			
		||||
 | 
			
		||||
def get_hypervisor_type(apiclient):
 | 
			
		||||
 | 
			
		||||
    """Return the hypervisor type of the hosts in setup"""
 | 
			
		||||
 | 
			
		||||
    hosts = list_hosts(apiclient, type='Routing', listall=True)
 | 
			
		||||
 | 
			
		||||
    hosts_list_validation_result = validateList(hosts)
 | 
			
		||||
 | 
			
		||||
    assert hosts_list_validation_result[0] == PASS, "host list validation failed"
 | 
			
		||||
 | 
			
		||||
    return hosts_list_validation_result[1].hypervisor
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
def download_systemplates_sec_storage(server, services):
 | 
			
		||||
    """Download System templates on sec storage"""
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -28,10 +28,13 @@ import email
 | 
			
		||||
import socket
 | 
			
		||||
import urlparse
 | 
			
		||||
import datetime
 | 
			
		||||
from marvin.cloudstackAPI import *
 | 
			
		||||
from marvin.cloudstackAPI import cloudstackAPIClient, listHosts
 | 
			
		||||
from marvin.sshClient import SshClient
 | 
			
		||||
from marvin.codes import *
 | 
			
		||||
 | 
			
		||||
from marvin.codes import (FAIL,
 | 
			
		||||
                          PASS,
 | 
			
		||||
                          MATCH_NOT_FOUND,
 | 
			
		||||
                          INVALID_INPUT,
 | 
			
		||||
                          EMPTY_LIST)
 | 
			
		||||
 | 
			
		||||
def restart_mgmt_server(server):
 | 
			
		||||
    """Restarts the management server"""
 | 
			
		||||
@ -237,6 +240,18 @@ def xsplit(txt, seps):
 | 
			
		||||
        txt = txt.replace(sep, default_sep)
 | 
			
		||||
    return [i.strip() for i in txt.split(default_sep)]
 | 
			
		||||
 | 
			
		||||
def get_hypervisor_type(apiclient):
 | 
			
		||||
 | 
			
		||||
    """Return the hypervisor type of the hosts in setup"""
 | 
			
		||||
 | 
			
		||||
    cmd = listHosts.listHostsCmd()
 | 
			
		||||
    cmd.type = 'Routing'
 | 
			
		||||
    cmd.listall = True
 | 
			
		||||
    hosts = apiclient.listHosts(cmd)
 | 
			
		||||
    hosts_list_validation_result = validateList(hosts)
 | 
			
		||||
    assert hosts_list_validation_result[0] == PASS, "host list validation failed"
 | 
			
		||||
    return hosts_list_validation_result[1].hypervisor
 | 
			
		||||
 | 
			
		||||
def is_snapshot_on_nfs(apiclient, dbconn, config, zoneid, snapshotid):
 | 
			
		||||
    """
 | 
			
		||||
    Checks whether a snapshot with id (not UUID) `snapshotid` is present on the nfs storage
 | 
			
		||||
@ -248,8 +263,12 @@ def is_snapshot_on_nfs(apiclient, dbconn, config, zoneid, snapshotid):
 | 
			
		||||
    @param snapshotid: uuid of the snapshot
 | 
			
		||||
    @return: True if snapshot is found, False otherwise
 | 
			
		||||
    """
 | 
			
		||||
    # snapshot extension to be appended to the snapshot path obtained from db
 | 
			
		||||
    snapshot_extensions = {"vmware": ".ovf",
 | 
			
		||||
                            "kvm": "",
 | 
			
		||||
                            "xenserver": ".vhd"}
 | 
			
		||||
 | 
			
		||||
    from base import ImageStore, Snapshot
 | 
			
		||||
    from base import ImageStore
 | 
			
		||||
    secondaryStores = ImageStore.list(apiclient, zoneid=zoneid)
 | 
			
		||||
 | 
			
		||||
    assert isinstance(secondaryStores, list), "Not a valid response for listImageStores"
 | 
			
		||||
@ -281,7 +300,9 @@ def is_snapshot_on_nfs(apiclient, dbconn, config, zoneid, snapshotid):
 | 
			
		||||
        #Snapshot does not exist
 | 
			
		||||
        return False
 | 
			
		||||
 | 
			
		||||
    snapshotPath = qresultset[0][0]
 | 
			
		||||
    hypervisor = get_hypervisor_type(apiclient)
 | 
			
		||||
    # append snapshot extension based on hypervisor, to the snapshot path
 | 
			
		||||
    snapshotPath = str(qresultset[0][0]) + snapshot_extensions[str(hypervisor).lower()]
 | 
			
		||||
 | 
			
		||||
    nfsurl = secondaryStore.url
 | 
			
		||||
    from urllib2 import urlparse
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user