Ejemplo n.º 1
0
def servicemigrate(argv,param):
	'''Migrate global controller service(webapi,dhcp server) to target host;
	Usage:
		servicemigrate SERVICE_NAME TARGET_HOST_ID
		SERVICE_NAME=global		is migration of webapi,dhcp server
		SERVICE_NAME=database	is migration of database
		SERVICE_NAME=ca			is migration of certificate authority
		SERVICE_NAME=nfs		is migration of nfs server
	'''

	if len(argv)==2:
		try:
			targetService=argv[0]
			if targetService not in ['global','database','ca','nfs']:
				print "invalid SERVICE_NAME"
				return
			targetHostID=int(argv[1])
		except:
			print "invalid data."
			return
	else:
		print param[3][getMyFunctionName()].__doc__
		return
	
	if targetService=='global':
		commandString='migrateGlobalController'
		
		#must get ip address of targetHostID from /host/getInfo
		hostInfo=requestTo(param[0],param[1],'/host/getInfo?hostID=%s'%(str(targetHostID)))
		dom = minidom.parseString(hostInfo)
		backupIP=getValue(dom,'IP')

	elif targetService=='database':
		commandString='migrateInformationService'
	elif targetService=='ca':
		commandString='migrateCA'
	elif targetService=='nfs':
		commandString='migrateNFS'

	if commandString!='migrateGlobalController':
		finishInfo=requestAndWait(param[0],param[1],'/cloud/%s?targetHostID=%s'%(commandString,str(targetHostID)))
		dom = minidom.parseString(finishInfo)
		result=getValue(dom,'finishStatus')
		if result=='1':
			print 'Success.'
		else:
			print 'Error:',getValue(dom,'finishMessage')
	
	else:
		finishInfo=requestAndWait(param[0],param[1],'/cloud/%s?targetHostID=%s'%(commandString,str(targetHostID)),backupIP=backupIP)
		dom = minidom.parseString(finishInfo)
		result=getValue(dom,'finishStatus')
		if result=='1':
			print 'Success.'
			return {
				'newIP':backupIP,
				#'newPort':port,
				}
		else:
			print 'Error:',getValue(dom,'finishMessage')
Ejemplo n.º 2
0
def guestrestore(argv,param):
	'''Restore guest from saved state;
	Usage:
		guestrestore GUEST_ID [TARGET_HOST_ID]
	'''
	if len(argv) in [1,2]:
		try:
			guestID=int(argv[0])
			if len(argv)==2:
				targetHostID=int(argv[1])
				optional="&targetHostID=%s"%(str(targetHostID))
			else:
				targetHostID=None
				optional=''
		except:
			print "invalid data"
			return
	else:
		print param[3][getMyFunctionName()].__doc__
		return
	
	finishInfo=requestAndWait(param[0],param[1],('/guest/restore?guestID=%s'%(str(guestID)))+optional)
	dom = minidom.parseString(finishInfo)
	result=getValue(dom,'finishStatus')
	if result=='1':
		print 'Success, target host ID='+getValue(dom,'hostID')
	else:
		print 'Error:',getValue(dom,'finishMessage')
Ejemplo n.º 3
0
def guestcreate(argv,param):
	'''Create new guest;
	Usage:
		guestcreate TEMPLATE_ID GUEST_NAME MEMORY_SIZE(MB) CPU 
	'''
	if len(argv)==4:
		try:
			templateID=int(argv[0])
			guestName=argv[1]
			memSize=int(argv[2])
			CPU=int(argv[3])
		except:
			print "invalid data"
			return
	else:
		print param[3][getMyFunctionName()].__doc__
		return
	
	finishInfo=requestAndWait(param[0],param[1],'/guest/create?guestName=%s&templateID=%s&memory=%s&vCPU=%s'%(guestName,str(templateID),str(memSize),str(CPU)))
	dom = minidom.parseString(finishInfo)
	guestID=getValue(dom,'guest','guestID')
	if guestID==None:
		print 'Creating error:',getValue(dom,'finishMessage')
	else:
		print "Finish, guestID="+guestID
Ejemplo n.º 4
0
def hostshutdown(argv,param):
	'''Shutdown a specific host;
	Usage
		hostshutdown HOST_ID
	'''
	mode='shutdown'
	if len(argv)==1:
		try:
			hostID=int(argv[0])
		except:
			print "hostID must be integer"
			return
	else:
		print param[3][getMyFunctionName()].__doc__
		return
	
	finishInfo=requestAndWait(param[0],param[1],'/host/close?hostID=%s&mode=%s'%(str(hostID),mode))
	dom = minidom.parseString(finishInfo)
	
	if isinstance(finishInfo, (dict,)):
		return finishInfo
	
	result=getValue(dom,'finishStatus')
	if result=='1':
		pass
	else:
		print 'Error:',getValue(dom,'finishMessage')
Ejemplo n.º 5
0
def hostremove(argv,param):
	'''Remove a specific host from this cloud system;
	Usage
		hostremove HOST_ID
	'''
	if len(argv)==1:
		try:
			hostID=int(argv[0])
		except:
			print "hostID must be integer"
			return
	else:
		print param[3][getMyFunctionName()].__doc__
		return
	
	finishInfo=requestAndWait(param[0],param[1],'/host/remove?hostID=%s'%(str(hostID)))
	
	if isinstance(finishInfo, (dict,)):
		return finishInfo
	
	dom = minidom.parseString(finishInfo)
	result=getValue(dom,'finishStatus')
	if result=='1':
		pass
	else:
		print 'Error:',getValue(dom,'finishMessage')
Ejemplo n.º 6
0
def guestsave(argv,param):
	'''Save guest to disk(like hibernate);
	Usage:
		guestsave GUEST_ID 
	'''
	if len(argv)==1:
		try:
			guestID=int(argv[0])
		except:
			print "invalid data"
			return
	else:
		print param[3][getMyFunctionName()].__doc__
		return
	
	finishInfo=requestAndWait(param[0],param[1],'/guest/save?guestID=%s'%(str(guestID)))
	dom = minidom.parseString(finishInfo)
	result=getValue(dom,'finishStatus')
	if result=='1':
		print 'Success.'
	else:
		print 'Error:',getValue(dom,'finishMessage')
Ejemplo n.º 7
0
def guestforceoff(argv,param):
	'''Force shuting off a guest;
	Usage:
		guestforceoff GUEST_ID 
	'''
	if len(argv)==1:
		try:
			guestID=int(argv[0])
		except:
			print "invalid data"
			return
	else:
		print param[3][getMyFunctionName()].__doc__
		return
	
	finishInfo=requestAndWait(param[0],param[1],'/guest/forceOff?guestID=%s'%(str(guestID)))
	dom = minidom.parseString(finishInfo)
	result=getValue(dom,'finishStatus')
	if result=='1':
		print 'Success.'
	else:
		print 'Error:',getValue(dom,'finishMessage')
Ejemplo n.º 8
0
def hostwakeup(argv,param):
	'''Turn on or wake up a specific host;
	Usage
		hostwakeup HOST_ID
	'''
	if len(argv)==1:
		try:
			hostID=int(argv[0])
		except:
			print "hostID must be integer"
			return
	else:
		print param[3][getMyFunctionName()].__doc__
		return
	
	finishInfo=requestAndWait(param[0],param[1],'/host/wakeup?hostID=%s'%(str(hostID)))
	dom = minidom.parseString(finishInfo)
	result=getValue(dom,'finishStatus')
	if result=='1':
		pass
	else:
		print 'Error:',getValue(dom,'finishMessage')
Ejemplo n.º 9
0
def templateremove(argv,param):
	'''Remove a template permanently;
	Usage:
		templateremove TEMPLATE_ID
	'''
	if len(argv)==1:
		try:
			templateID=int(argv[0])
		except:
			print "invalid data"
			return
	else:
		print param[3][getMyFunctionName()].__doc__
		return
	
	finishInfo=requestAndWait(param[0],param[1],'/template/remove?templateID=%s'%(str(templateID)))
	dom = minidom.parseString(finishInfo)
	result=getValue(dom,'finishStatus')
	if result=='1':
		print 'Success.'
	else:
		print 'Error:',getValue(dom,'finishMessage')
Ejemplo n.º 10
0
def templatecreatefromguest(argv,param):
	'''Create new template by cloning from created guest(source guest must be shutoff);
	Usage:
		templatecreatefromguest SOURCE_GUEST_ID DESCRIPTION
	'''
	if len(argv)>1:
		try:
			sourceGuestID=int(argv[0])
			description=' '.join(argv[1:])
		except:
			print "invalid data"
			return
	else:
		print param[3][getMyFunctionName()].__doc__
		return
	
	finishInfo=requestAndWait(param[0],param[1],'/template/createFromGuest?sourceGuestID=%s&description=%s'%(str(sourceGuestID),description))
	dom = minidom.parseString(finishInfo)
	templateID=getValue(dom,'template','templateID')
	if templateID==None:
		print 'Creating error:',getValue(dom,'finishMessage')
	else:
		print "Finish, templateID="+templateID
Ejemplo n.º 11
0
def guestmigrate(argv,param):
	'''Migrate a guest to target host;
	Usage:
		guestmigrate GUEST_ID TARGET_HOST_ID
	'''
	if len(argv)==2:
		try:
			guestID=int(argv[0])
			targetHostID=int(argv[1])
		except:
			print "invalid data"
			return
	else:
		print param[3][getMyFunctionName()].__doc__
		return
	
	finishInfo=requestAndWait(param[0],param[1],'/guest/migrate?guestID=%s&targetHostID=%s'%(str(guestID),str(targetHostID)))
	dom = minidom.parseString(finishInfo)
	result=getValue(dom,'finishStatus')
	if result=='1':
		print 'Success.'
	else:
		print 'Error:',getValue(dom,'finishMessage')
Ejemplo n.º 12
0
def guestduplicate(argv,param):
	'''Create new guest by cloning from created guest(source guest must be shutoff);
	Usage:
		guestduplicate SOURCE_GUEST_ID GUEST_NAME
	'''
	if len(argv)==2:
		try:
			sourceGuestID=int(argv[0])
			guestName=argv[1]
		except:
			print "invalid data"
			return
	else:
		print param[3][getMyFunctionName()].__doc__
		return
	
	finishInfo=requestAndWait(param[0],param[1],'/guest/duplicate?guestName=%s&sourceGuestID=%s'%(guestName,str(sourceGuestID)))
	dom = minidom.parseString(finishInfo)
	guestID=getValue(dom,'guest','guestID')
	if guestID==None:
		print 'Creating error:',getValue(dom,'finishMessage')
	else:
		print "Finish, guestID="+guestID
Ejemplo n.º 13
0
def hostadd(argv,param):
	'''Add new host to current cloud;
	Usage:
		hostadd HOSTNAME MACADDRESS IPADDRESS 
	'''
	if len(argv)==3:
		try:
			hostName=argv[0]
			macAddress=str(network.MACAddr(argv[1]))
			ipAddress=str(network.IPAddr(argv[2]))
		except:
			print "invalid MAC address or IP address"
			return
	else:
		print param[3][getMyFunctionName()].__doc__
		return
	
	finishInfo=requestAndWait(param[0],param[1],'/host/add?hostName=%s&MACAddress=%s&IPAddress=%s'%(hostName,macAddress,ipAddress))
	dom = minidom.parseString(finishInfo)
	hostID=getValue(dom,'host','hostID')
	if hostID==None:
		print 'Adding error:',getValue(dom,'finishMessage')
	else:
		print "Finish, hostID="+hostID