mirror of
https://github.com/apache/cloudstack.git
synced 2025-11-03 04:12:31 +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_events,
|
||||||
list_zones,
|
list_zones,
|
||||||
get_free_vlan,
|
get_free_vlan,
|
||||||
get_hypervisor_type,
|
|
||||||
update_resource_limit
|
update_resource_limit
|
||||||
)
|
)
|
||||||
|
|
||||||
from marvin.integration.lib.utils import (validateList,
|
from marvin.integration.lib.utils import (validateList,
|
||||||
random_gen)
|
random_gen,
|
||||||
|
get_hypervisor_type)
|
||||||
|
|
||||||
from marvin.cloudstackAPI import (addNicToVirtualMachine,
|
from marvin.cloudstackAPI import (addNicToVirtualMachine,
|
||||||
removeNicFromVirtualMachine,
|
removeNicFromVirtualMachine,
|
||||||
|
|||||||
@ -36,12 +36,13 @@ from marvin.integration.lib.common import (get_domain,
|
|||||||
list_snapshots,
|
list_snapshots,
|
||||||
list_templates,
|
list_templates,
|
||||||
list_virtual_machines,
|
list_virtual_machines,
|
||||||
get_hypervisor_type)
|
)
|
||||||
|
|
||||||
from marvin.integration.lib.utils import (cleanup_resources,
|
from marvin.integration.lib.utils import (cleanup_resources,
|
||||||
format_volume_to_ext3,
|
format_volume_to_ext3,
|
||||||
random_gen,
|
random_gen,
|
||||||
is_snapshot_on_nfs)
|
is_snapshot_on_nfs,
|
||||||
|
get_hypervisor_type)
|
||||||
|
|
||||||
from marvin.cloudstackAPI import detachVolume
|
from marvin.cloudstackAPI import detachVolume
|
||||||
import time
|
import time
|
||||||
|
|||||||
@ -18,11 +18,56 @@
|
|||||||
"""
|
"""
|
||||||
|
|
||||||
#Import Local Modules
|
#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 marvin.sshClient import SshClient
|
||||||
from utils import *
|
import random
|
||||||
from base import *
|
|
||||||
from marvin.codes import PASS
|
|
||||||
|
|
||||||
#Import System modules
|
#Import System modules
|
||||||
import time
|
import time
|
||||||
@ -91,7 +136,7 @@ def add_netscaler(apiclient, zoneid, NSservice):
|
|||||||
cmd = updateNetworkServiceProvider.updateNetworkServiceProviderCmd()
|
cmd = updateNetworkServiceProvider.updateNetworkServiceProviderCmd()
|
||||||
cmd.id = netscaler_provider.id
|
cmd.id = netscaler_provider.id
|
||||||
cmd.state = 'Enabled'
|
cmd.state = 'Enabled'
|
||||||
response = apiclient.updateNetworkServiceProvider(cmd)
|
apiclient.updateNetworkServiceProvider(cmd)
|
||||||
|
|
||||||
return netscaler
|
return netscaler
|
||||||
|
|
||||||
@ -199,19 +244,6 @@ def get_template(apiclient, zoneid, ostype, services=None):
|
|||||||
ostypeid)
|
ostypeid)
|
||||||
return
|
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):
|
def download_systemplates_sec_storage(server, services):
|
||||||
"""Download System templates on sec storage"""
|
"""Download System templates on sec storage"""
|
||||||
|
|
||||||
|
|||||||
@ -28,10 +28,13 @@ import email
|
|||||||
import socket
|
import socket
|
||||||
import urlparse
|
import urlparse
|
||||||
import datetime
|
import datetime
|
||||||
from marvin.cloudstackAPI import *
|
from marvin.cloudstackAPI import cloudstackAPIClient, listHosts
|
||||||
from marvin.sshClient import SshClient
|
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):
|
def restart_mgmt_server(server):
|
||||||
"""Restarts the management server"""
|
"""Restarts the management server"""
|
||||||
@ -237,6 +240,18 @@ def xsplit(txt, seps):
|
|||||||
txt = txt.replace(sep, default_sep)
|
txt = txt.replace(sep, default_sep)
|
||||||
return [i.strip() for i in txt.split(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):
|
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
|
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
|
@param snapshotid: uuid of the snapshot
|
||||||
@return: True if snapshot is found, False otherwise
|
@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)
|
secondaryStores = ImageStore.list(apiclient, zoneid=zoneid)
|
||||||
|
|
||||||
assert isinstance(secondaryStores, list), "Not a valid response for listImageStores"
|
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
|
#Snapshot does not exist
|
||||||
return False
|
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
|
nfsurl = secondaryStore.url
|
||||||
from urllib2 import urlparse
|
from urllib2 import urlparse
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user