def tc_ID246858_ESX_add_new_host(params):
    """ Execute virt-who in a registered host, verify add new esx host """
    try:
        try:
            logger = params['logger']
            eu().RESET_RESULT()
            logger.info(
                "=============== Begin of Running Test Case: %s ==============="
                % __name__[str.rindex(__name__, ".") + 1:])
            eu().esx_add_host()

            eu().SET_RESULT(1)
        except Exception, e:
            logger.error("Test Failed due to error happened: " + str(e))
            logger.error(traceback.format_exc())
            eu().SET_RESULT(1)
    finally:
        logger.info(
            "=============== End of Running Test Case: %s ===============" %
            __name__[str.rindex(__name__, ".") + 1:])
        return eu().TEST_RESULT()
def tc_ID246858_ESX_add_new_host(params):
    """ Execute virt-who in a registered host, verify add new esx host """
    try:
        try:
            logger = params["logger"]
            eu().RESET_RESULT()
            logger.info(
                "=============== Begin of Running Test Case: %s ==============="
                % __name__[str.rindex(__name__, ".") + 1 :]
            )
            eu().esx_add_host()

            eu().SET_RESULT(1)
        except Exception, e:
            logger.error("Test Failed due to error happened: " + str(e))
            logger.error(traceback.format_exc())
            eu().SET_RESULT(1)
    finally:
        logger.info(
            "=============== End of Running Test Case: %s ===============" % __name__[str.rindex(__name__, ".") + 1 :]
        )
        return eu().TEST_RESULT()
Esempio n. 3
0
def tc_ID155173_ESX_check_uuid_when_guest_paused_or_shutdown(params):
	"""tc_ID155173_ESX_check_uuid_when_guest_paused_or_shutdown"""
	try:
		try:
			logger = params['logger']
			eu().RESET_RESULT()
			logger.info("=============== Begin of Running Test Case: %s ===============" % __name__[str.rindex(__name__, ".") + 1:])
			guest_name = "ESX_" + params['handleguest']
			samhostip = params['samhostip']
			destination_ip = ee.esx_host_ip
			# (1) start a guest	
			eu().esx_start_guest(logger, guest_name)
			# check if the uuid is correctly monitored by virt-who.
			eu().esx_check_uuid(logger, guest_name, destination_ip)

			# (2)pause a guest
			eu().esx_pause_guest(logger, guest_name, destination_ip)
			# check if the uuid is correctly monitored by virt-who.
			eu().esx_check_uuid(logger, guest_name, destination_ip)

			# (3)resume a guest
			eu().esx_resume_guest(logger, guest_name, destination_ip)
			# check if the uuid is correctly monitored by virt-who.
			eu().esx_check_uuid(logger, guest_name, destination_ip)

			# (4)shutdown a guest
			eu().esx_stop_guest(logger, guest_name, destination_ip)
			# check if the uuid is correctly monitored by virt-who.
			eu().esx_check_uuid(logger, guest_name, destination_ip)
			eu().SET_RESULT(0)
		except Exception, e:
			logger.error("Test Failed due to error happened: " + str(e))
			logger.error(traceback.format_exc())
			eu().SET_RESULT(1)
	finally:
		logger.info("=============== End of Running Test Case: %s ===============" % __name__[str.rindex(__name__, ".") + 1:])
		return eu().TEST_RESULT()
def tc_ID173049_ESX_remove_deletion_record_of_hypervisor_to_re_register(
        params):
    """ remove_deletion_record_of_hypervisor_to_re_register """
    try:
        try:
            logger = params['logger']
            eu().RESET_RESULT()
            logger.info(
                "=============== Begin of Running Test Case: %s ==============="
                % __name__[str.rindex(__name__, ".") + 1:])
            # guest_name = "ESX_" + params['handleguest']
            samhostip = params['samhostip']
            destination_ip = ee.esx_host_ip
            # Start a guest by start from host machine.
            # eu().esx_start_guest(logger, guest_name, destination_ip)
            # Get guest IP
            # guestip = None
            # guestip = eu().esx_get_guest_ip(logger, guest_name, destination_ip)
            # if guestip == None:
            # 	logger.error("Faild to get guest ip.")
            # 	eu().SET_RESULT(1)
            # Register guest to SAM
            # if not eu().sub_isregistered(logger, guestip):
            # 	eu().configure_host(logger, params.get("samhostname"), params.get("samhostip"), guestip)
            # 	eu().sub_register(logger, eu().get_env(logger)["username"], eu().get_env(logger)["password"], guestip)
            # restart virt-who service
            eu().vw_restart_virtwho(logger)
            host_uuid = eu().esx_get_host_uuid(logger, destination_ip)
            eu().esx_check_host_in_samserv(logger, host_uuid, samhostip)
            eu().vw_stop_virtwho(logger)
            eu().esx_remove_host_in_samserv(logger, host_uuid, samhostip)
            eu().esx_remove_deletion_record_in_samserv(logger, host_uuid,
                                                       samhostip)

            eu().vw_restart_virtwho(logger)
            eu().esx_check_host_in_samserv(logger, host_uuid, samhostip)
            eu().SET_RESULT(0)
        except Exception, e:
            logger.error("Test Failed due to error happened: " + str(e))
            logger.error(traceback.format_exc())
            eu().SET_RESULT(1)
    finally:
        # if guestip != None:
        # 	eu().sub_unregister(logger, guestip)
        # eu().esx_stop_guest(logger, guest_name, destination_ip)
        logger.info(
            "=============== End of Running Test Case: %s ===============" %
            __name__[str.rindex(__name__, ".") + 1:])
        return eu().TEST_RESULT()
def tc_ID155120_ESX_check_guest_consumer_uuid_on_server(params):
    """ Execute virt-who in a registered host to Check UUIDs of running guests """
    try:
        try:
            logger = params["logger"]
            eu().RESET_RESULT()
            logger.info(
                "=============== Begin of Running Test Case: %s ==============="
                % __name__[str.rindex(__name__, ".") + 1 :]
            )
            guest_name = "ESX_" + params["handleguest"]
            destination_ip = ee.esx_host_ip
            # Start a guest by start from host machine.
            eu().esx_start_guest(logger, guest_name)
            # Get guest IP
            guestip = None
            guestip = eu().esx_get_guest_ip(logger, guest_name, destination_ip)
            if guestip == None:
                logger.error("Faild to get guest ip.")
                eu().SET_RESULT(1)
                # Register guest to SAM
            if not eu().sub_isregistered(logger, guestip):
                eu().configure_host(logger, params.get("samhostname"), params.get("samhostip"), guestip)
                eu().sub_register(logger, eu().get_env(logger)["username"], eu().get_env(logger)["password"], guestip)
                # Get uuid of host and guest consumer
            cmd = "grep 'Sending update in hosts-to-guests mapping' /var/log/rhsm/rhsm.log | tail -1"
            ret, output = eu().runcmd(logger, cmd, "get host consumer uuid")
            hostuuid = output.split("{")[1].split(":")[0].strip()
            cmd = "subscription-manager identity | grep identity"
            ret, output = eu().runcmd(logger, cmd, "get guest subscription-manager identity", guestip)
            guestuuid = output.split(":")[1].strip()
            # Check whether guest is included in host info
            samhostip = params["samhostip"]
            cmd = "curl -u admin:admin -k https://%s/sam/api/consumers/%s" % (samhostip, hostuuid)
            ret, output = eu().runcmd(logger, cmd, "Check whether guest is included in host info")
            if ret == 0 and guestuuid in output:
                logger.info("Succeeded to check guest in host info.")
                eu().SET_RESULT(0)
            else:
                logger.error("Failed to check guest in host info.")
                eu().SET_RESULT(1)
        except Exception, e:
            logger.error("Test Failed due to error happened: " + str(e))
            logger.error(traceback.format_exc())
            eu().SET_RESULT(1)
    finally:
        if guestip != None:
            eu().sub_unregister(logger, guestip)
        eu().esx_stop_guest(logger, guest_name, destination_ip)
        logger.info(
            "=============== End of Running Test Case: %s ===============" % __name__[str.rindex(__name__, ".") + 1 :]
        )
        return eu().TEST_RESULT()
def tc_Setup_Virtwho(params):
	""" Set up virt-who environment """
	try:
		try:
			logger = params['logger']
			eu().RESET_RESULT()
			logger.info("=============== Begin of Running Test Case: %s ===============" % __name__[str.rindex(__name__, ".") + 1:])
			if "server_hostname" in params.keys():
					# (1)set cpu socket
					eu().set_cpu_socket(logger)
					# (2)configure and register the host
					if not eu().sub_isregistered(logger):
						eu().configure_stage_host(logger, params.get("server_hostname"))
						eu().sub_register(logger, eu().get_env(logger)["username"], eu().get_env(logger)["password"])
					# (3)update virt-who configure file
					eu().update_vw_configure(logger)
					# (4)restart virt-who service
					eu().vw_restart_virtwho(logger)
					# (5)copy all needed guests
					testtype = params['testtype']
					copyimages = params['copyimages']
					if copyimages == "yes":
						eu().copy_images(logger, testtype, ee.image_machine_ip, ee.image_machine_imagepath, ee.imagenfspath)
					# (6)export image path as nfs
					eu().export_dir_as_nfs(logger, ee.imagenfspath)
					# (7)mount image nfs path
					eu().mount_images_in_sourcemachine(logger, ee.imagenfspath, ee.imagepath)
					# (8)add some guests by define from host machine.
					eu().vw_define_all_guests(logger, testtype, params)
					# (9)set up env for migration if needed
					if params.has_key("targetmachine_ip") and params.has_key("targetmachine_hostname"):
						logger.info("-------- Begin to set up env for migration -------- ")
						targetmachine_ip = params["targetmachine_ip"]
						targetmachine_hostname = params["targetmachine_hostname"]
						# 1)mount image path in target machine
						eu().mount_images_in_targetmachine(logger, targetmachine_ip, ee.imagenfspath, ee.imagepath)
						# 2)mount the rhsm log of the target machine into source machine.
						eu().mount_rhsmlog_of_targetmachine(logger, targetmachine_ip, ee.rhsmlog_for_targetmachine)
						# 3)update /etc/hosts file
						eu().update_hosts_file(logger, targetmachine_ip, targetmachine_hostname)
						# 4)set cpu socket
						eu().set_cpu_socket(logger, targetmachine_ip=targetmachine_ip)
						# 5)stop firewall of two host machines for migration
						eu().stop_firewall(logger)
						eu().stop_firewall(logger, targetmachine_ip)
						# 6)update xen configuration file /etc/xen/xend-config.sxp of two host machines for migration to 
						# make sure contain necessary config options, and then restart service xend.
						if testtype == "xen":
							eu().update_xen_configure(logger)
							eu().update_xen_configure(logger, targetmachine_ip)
						# 7)configure and register the host
						if not eu().sub_isregistered(logger, targetmachine_ip):
							eu().configure_stage_host(logger, params.get("server_hostname"), targetmachine_ip)
							username = eu().get_env(logger)["username"]
							password = eu().get_env(logger)["password"]
							eu().sub_register(logger, username, password, targetmachine_ip)
						# 8)update virt-who configure file
						eu().update_vw_configure(logger, targetmachine_ip=targetmachine_ip)
						# 9)restart virt-who service in target machine
						eu().vw_restart_virtwho(logger, targetmachine_ip)
						logger.info("-------- End to set up env for migration -------- ")
					else:
						logger.info("There is no target machine ip/hostname provided, so does not setup env for migration.")
					# if got here, this script run well
					eu().SET_RESULT(0)
			else:
				if "vcentermachine_ip" in params.keys():
					VIRTWHO_ESX_OWNER = "ACME_Corporation"
					VIRTWHO_ESX_ENV = "Library"
					VIRTWHO_ESX_SERVER = params['vcentermachine_ip']
					VIRTWHO_ESX_USERNAME = params.get("vcentermachine_username")
					VIRTWHO_ESX_PASSWORD = params.get("vcentermachine_password")
					ESX_HOST = ee.esx_host_ip
					# update virt-who configure file
					eu().update_esx_vw_configure(logger, VIRTWHO_ESX_OWNER, VIRTWHO_ESX_ENV, VIRTWHO_ESX_SERVER, VIRTWHO_ESX_USERNAME, VIRTWHO_ESX_PASSWORD)
					# restart virt-who service
					eu().vw_restart_virtwho(logger)
					if not eu().sub_isregistered(logger):
						eu().configure_host(logger, params.get("samhostname"), params.get("samhostip"))
						eu().sub_register(logger, eu().get_env(logger)["username"], eu().get_env(logger)["password"])
					# wget all needed guests
					copyimages = params['copyimages']
					guest_name = "ESX_" + params['handleguest']
					if eu().esx_check_host_exist(logger, ESX_HOST, VIRTWHO_ESX_SERVER, VIRTWHO_ESX_USERNAME, VIRTWHO_ESX_PASSWORD):
						if copyimages == "yes":
							wget_url = "http://hp-z220-11.qe.lab.eng.nay.redhat.com/projects/sam-virtwho/esx_guest/"
							# eu().esx_remove_all_guests()
							eu().wget_images(logger, wget_url, guest_name, ESX_HOST)
						# eu().esx_add_guest_first(logger, guest_name, ESX_HOST, VIRTWHO_ESX_SERVER, VIRTWHO_ESX_USERNAME, VIRTWHO_ESX_PASSWORD, vmware_cmd_ip)
						eu().esx_add_guest(logger, guest_name, ESX_HOST)
						eu().esx_start_guest_first(logger, guest_name, ESX_HOST)
						eu().esx_service_restart(logger, ESX_HOST)
						eu().esx_stop_guest(logger, guest_name, ESX_HOST)
						# restart virt-who service
						eu().vw_restart_virtwho(logger)
						# if got here, this script run well
						eu().SET_RESULT(0)
					else:
						logger.error("ESX host:'%s' has not been added to vCenter yet, add it manually first!" % ESX_HOST)
	
				if "rhevmmachine_ip" in params.keys():
					DNSserver_ip = "10.66.12.112"
					NFSserver_ip = "10.66.13.170"
					proxy_ip = "proxy=https:\/\/squid.corp.redhat.com:3128"
					nfs_dir_for_storage = "/home/vol/data5"
					nfs_dir_for_export = "/home/vol/data7"
					handleguest = params["handleguest"]
					rhevmmachine_ip = params['rhevmmachine_ip']
					rhevmmachine_name = eu().get_hostname(logger, rhevmmachine_ip)
					rhevm_host1_ip = params["rhel_host_ip"]
					rhevm_host1_name = eu().get_hostname(logger, rhevm_host1_ip)
					# virt-who configure for rhevm mode
					VIRTWHO_RHEVM_OWNER = "ACME_Corporation"
					VIRTWHO_RHEVM_ENV = "Library"
					VIRTWHO_RHEVM_SERVER = "https:\/\/" + rhevmmachine_ip + ":443"
					VIRTWHO_RHEVM_USERNAME = "******"
					VIRTWHO_RHEVM_PASSWORD = "******"
					copyimages = params['copyimages']
					if copyimages == "yes":
						# update virt-who configure file
						eu().rhevm_update_vw_configure(logger, VIRTWHO_RHEVM_OWNER, VIRTWHO_RHEVM_ENV, VIRTWHO_RHEVM_SERVER, VIRTWHO_RHEVM_USERNAME, VIRTWHO_RHEVM_PASSWORD, background=1, debug=1)
						# configure dns server, add rhel host
						eu().config_dnsserver(logger, rhevm_host1_ip, rhevm_host1_name, DNSserver_ip)
						# configure /etc/yum.conf
						eu().config_yum(logger, proxy_ip, rhevm_host1_ip)
						# add rhevm to rhel host in /etc/hosts
						eu().add_rhevm_server_to_host(logger, rhevmmachine_name, rhevmmachine_ip, rhevm_host1_ip)
						# add rhevm bridge in rhel host
						eu().configure_host_bridge(logger, rhevmmachine_name, rhevmmachine_ip, rhevm_host1_ip)
						# stop firewall
						eu().stop_firewall(logger, rhevm_host1_ip)
						if not eu().sub_isregistered(logger, rhevm_host1_ip):
							eu().conf_rhsm_candlepin(logger, rhevm_host1_ip)
							eu().sub_register(logger, ee.username_qa, ee.password_qa, rhevm_host1_ip)
							# Subscribe host to a physical pool which has a guest limit (not unlimited)
							eu().sub_subscribetopool_of_product(logger, ee.productid_guest, rhevm_host1_ip)
							# Subscribe host to Vitalization subscription
							eu().sub_subscribetopool_of_product(logger, ee.productid_Virtual_guest, rhevm_host1_ip)
						# add repo to rhel host
						eu().get_rhevm_repo_file(logger, rhevm_host1_ip)
						# Add host1 to rhevm
						eu().rhevm_add_host(logger, rhevm_host1_name, rhevm_host1_ip, rhevmmachine_ip)
						# auto connect rhevm-shell
						eu().config_rhevm_shell(logger, rhevmmachine_ip)
						# configure and register rhel host
						if eu().sub_isregistered(logger, rhevm_host1_ip):
							eu().sub_unregister(logger, rhevm_host1_ip)
							# add dns server to /etc/resolve.conf
							eu().rhevm_add_dns_to_host(logger, DNSserver_ip, rhevm_host1_ip)
							eu().conf_rhsm_sam(logger, rhevm_host1_ip)
							eu().configure_host(logger, params.get("samhostname"), params.get("samhostip"), rhevm_host1_ip)
							eu().sub_register(logger, eu().get_env(logger)["username"], eu().get_env(logger)["password"], rhevm_host1_ip)
							eu().sub_autosubscribe(logger, eu().get_env(logger)["autosubprod"], rhevm_host1_ip)
						# configure and register execute virt-who host
						if not eu().sub_isregistered(logger):
							eu().configure_host(logger, params.get("samhostname"), params.get("samhostip"))
							eu().sub_register(logger, eu().get_env(logger)["username"], eu().get_env(logger)["password"])
							eu().sub_autosubscribe(logger, eu().get_env(logger)["autosubprod"])
						# Add storagedomain to rhevm
						eu().add_storagedomain_to_rhevm(logger, "data_storage", rhevm_host1_name, "data", "v3", NFSserver_ip, nfs_dir_for_storage, rhevmmachine_ip)
						eu().add_storagedomain_to_rhevm(logger, "export_storage", rhevm_host1_name, "export", "v1", NFSserver_ip, nfs_dir_for_export, rhevmmachine_ip)
						eu().activate_storagedomain(logger, "export_storage", rhevmmachine_ip)
						eu().rhevm_define_guest(logger)
						eu().create_storage_pool(logger)
						# yum install virt-V2V
						eu().install_virtV2V(logger, rhevmmachine_name, rhevmmachine_ip)
						eu().convert_guest_to_nfs(logger, NFSserver_ip, nfs_dir_for_export, handleguest)
						eu().import_vm_to_rhevm(logger, handleguest, "data_storage", "export_storage", rhevmmachine_ip)
					eu().SET_RESULT(0)
	
				if "targetmachine_ip" in params.keys():
					# (1)set cpu socket
					eu().set_cpu_socket(logger)
					# (2)configure and register the host
					if not eu().sub_isregistered(logger):
						eu().configure_host(logger, params.get("samhostname"), params.get("samhostip"))
						eu().sub_register(logger, eu().get_env(logger)["username"], eu().get_env(logger)["password"])
					# (3)update virt-who configure file
					eu().update_vw_configure(logger)
					# (4)restart virt-who service
					eu().vw_restart_virtwho(logger)
					# (5)copy all needed guests
					testtype = params['testtype']
					copyimages = params['copyimages']
					if copyimages == "yes":
						# if "beaker" in params.keys() and params['beaker'] == "yes":
						if "redhat.com" in params['targetmachine_ip']:
							eu().copy_images(logger, testtype, ee.beaker_image_machine_ip, ee.image_machine_imagepath, ee.imagenfspath)
						else:
							eu().copy_images(logger, testtype, ee.image_machine_ip, ee.image_machine_imagepath, ee.imagenfspath)
					# (6)export image path as nfs
					eu().export_dir_as_nfs(logger, ee.imagenfspath)
					# (7)mount image nfs path
					eu().mount_images_in_sourcemachine(logger, ee.imagenfspath, ee.imagepath)
					# (8)add some guests by define from host machine.
					eu().vw_define_all_guests(logger, testtype, params)
					# (9)set up env for migration if needed
					if params.has_key("targetmachine_ip") and params.has_key("targetmachine_hostname"):
						logger.info("-------- Begin to set up env for migration -------- ")
						targetmachine_ip = params["targetmachine_ip"]
						targetmachine_hostname = params["targetmachine_hostname"]
						# 1)mount image path in target machine
						eu().mount_images_in_targetmachine(logger, targetmachine_ip, ee.imagenfspath, ee.imagepath)
						# 2)mount the rhsm log of the target machine into source machine.
						eu().mount_rhsmlog_of_targetmachine(logger, targetmachine_ip, ee.rhsmlog_for_targetmachine)
						# 3)update /etc/hosts file
						eu().update_hosts_file(logger, targetmachine_ip, targetmachine_hostname)
						# 4)set cpu socket
						eu().set_cpu_socket(logger, targetmachine_ip=targetmachine_ip)
						# 5)stop firewall of two host machines for migration
						eu().stop_firewall(logger)
						eu().stop_firewall(logger, targetmachine_ip)
						# 6)update xen configuration file /etc/xen/xend-config.sxp of two host machines for migration to 
						# make sure contain necessary config options, and then restart service xend.
						if testtype == "xen":
							eu().update_xen_configure(logger)
							eu().update_xen_configure(logger, targetmachine_ip)
						# 7)configure and register the host
						if not eu().sub_isregistered(logger, targetmachine_ip):
							eu().configure_host(logger, params.get("samhostname"), params.get("samhostip"), targetmachine_ip)
							username = eu().get_env(logger)["username"]
							password = eu().get_env(logger)["password"]
							eu().sub_register(logger, username, password, targetmachine_ip)
						# 8)update virt-who configure file
						eu().update_vw_configure(logger, targetmachine_ip=targetmachine_ip)
						# 9)restart virt-who service in target machine
						eu().vw_restart_virtwho(logger, targetmachine_ip)
						logger.info("-------- End to set up env for migration -------- ")
					else:
						logger.info("There is no target machine ip/hostname provided, so does not setup env for migration.")
					# if got here, this script run well
					eu().SET_RESULT(0)
		except Exception, e:
			logger.error("Test Failed due to error happened: " + str(e))
			logger.error(traceback.format_exc())
			eu().SET_RESULT(1)
	finally:
		logger.info("=============== End of Running Test Case: %s ===============" % __name__[str.rindex(__name__, ".") + 1:])
		return eu().TEST_RESULT()
def tc_ID155171_ESX_check_uuid_after_deleting_guests(params):
	''' check_uuid_after_adding_guests '''
	try:
		try:
			logger = params['logger']
			eu().RESET_RESULT()
			logger.info("=============== Begin of Running Test Case: %s ===============" % __name__[str.rindex(__name__, ".") + 1:])
			handleguest = "ESX_" + params['handleguest']
			destination_ip = ee.esx_host_ip
			vCenter = params['vcentermachine_ip']
			vCenter_user = params['vcentermachine_username']
			vCenter_pass = params['vcentermachine_password']
			host_uuid = eu().esx_get_host_uuid(logger, destination_ip)
			# delete guest
			eu().esx_remove_guest(logger, handleguest, destination_ip, vCenter, vCenter_user, vCenter_pass)
			# restart virt-who service
			eu().vw_restart_virtwho(logger)
			eu().vw_restart_virtwho(logger)
			# check log info in rhsm.log with none guest
			cmd = "sleep 30; tail -1 /var/log/rhsm/rhsm.log"
			expected_info = "Sending update in hosts-to-guests mapping: {%s: []}" % host_uuid
			(ret, output) = eu().runcmd(logger, cmd, "check log info in rhsm.log with none guest")
			if ret == 0 and expected_info in output:
				logger.info("Succeeded to check_uuid_after_adding_guests.")
				eu().SET_RESULT(0)
			else:
				logger.error("Failed to check_uuid_after_adding_guests.")
				eu().SET_RESULT(1)
		except Exception, e:
			logger.error("Test Failed due to error happened: " + str(e))
			logger.error(traceback.format_exc())
			eu().SET_RESULT(1)
	finally:
		eu().esx_add_guest(logger, handleguest, destination_ip)
		logger.info("=============== End of Running Test Case: %s ===============" % __name__[str.rindex(__name__, ".") + 1:])
		return eu().TEST_RESULT()
def tc_Setup_Virtwho(params):
    """ Set up virt-who environment """
    try:
        try:
            logger = params['logger']
            eu().RESET_RESULT()
            logger.info(
                "=============== Begin of Running Test Case: %s ==============="
                % __name__[str.rindex(__name__, ".") + 1:])
            if "server_hostname" in params.keys():
                # (1)set cpu socket
                eu().set_cpu_socket(logger)
                # (2)configure and register the host
                if not eu().sub_isregistered(logger):
                    eu().configure_stage_host(logger,
                                              params.get("server_hostname"))
                    eu().sub_register(logger,
                                      eu().get_env(logger)["username"],
                                      eu().get_env(logger)["password"])
                # (3)update virt-who configure file
                eu().update_vw_configure(logger)
                # (4)restart virt-who service
                eu().vw_restart_virtwho(logger)
                # (5)copy all needed guests
                testtype = params['testtype']
                copyimages = params['copyimages']
                if copyimages == "yes":
                    eu().copy_images(logger, testtype, ee.image_machine_ip,
                                     ee.image_machine_imagepath,
                                     ee.imagenfspath)
                # (6)export image path as nfs
                eu().export_dir_as_nfs(logger, ee.imagenfspath)
                # (7)mount image nfs path
                eu().mount_images_in_sourcemachine(logger, ee.imagenfspath,
                                                   ee.imagepath)
                # (8)add some guests by define from host machine.
                eu().vw_define_all_guests(logger, testtype, params)
                # (9)set up env for migration if needed
                if params.has_key("targetmachine_ip") and params.has_key(
                        "targetmachine_hostname"):
                    logger.info(
                        "-------- Begin to set up env for migration -------- ")
                    targetmachine_ip = params["targetmachine_ip"]
                    targetmachine_hostname = params["targetmachine_hostname"]
                    # 1)mount image path in target machine
                    eu().mount_images_in_targetmachine(logger,
                                                       targetmachine_ip,
                                                       ee.imagenfspath,
                                                       ee.imagepath)
                    # 2)mount the rhsm log of the target machine into source machine.
                    eu().mount_rhsmlog_of_targetmachine(
                        logger, targetmachine_ip, ee.rhsmlog_for_targetmachine)
                    # 3)update /etc/hosts file
                    eu().update_hosts_file(logger, targetmachine_ip,
                                           targetmachine_hostname)
                    # 4)set cpu socket
                    eu().set_cpu_socket(logger,
                                        targetmachine_ip=targetmachine_ip)
                    # 5)stop firewall of two host machines for migration
                    eu().stop_firewall(logger)
                    eu().stop_firewall(logger, targetmachine_ip)
                    # 6)update xen configuration file /etc/xen/xend-config.sxp of two host machines for migration to
                    # make sure contain necessary config options, and then restart service xend.
                    if testtype == "xen":
                        eu().update_xen_configure(logger)
                        eu().update_xen_configure(logger, targetmachine_ip)
                    # 7)configure and register the host
                    if not eu().sub_isregistered(logger, targetmachine_ip):
                        eu().configure_stage_host(
                            logger, params.get("server_hostname"),
                            targetmachine_ip)
                        username = eu().get_env(logger)["username"]
                        password = eu().get_env(logger)["password"]
                        eu().sub_register(logger, username, password,
                                          targetmachine_ip)
                    # 8)update virt-who configure file
                    eu().update_vw_configure(logger,
                                             targetmachine_ip=targetmachine_ip)
                    # 9)restart virt-who service in target machine
                    eu().vw_restart_virtwho(logger, targetmachine_ip)
                    logger.info(
                        "-------- End to set up env for migration -------- ")
                else:
                    logger.info(
                        "There is no target machine ip/hostname provided, so does not setup env for migration."
                    )
                # if got here, this script run well
                eu().SET_RESULT(0)
            else:
                if "vcentermachine_ip" in params.keys():
                    VIRTWHO_ESX_OWNER = "ACME_Corporation"
                    VIRTWHO_ESX_ENV = "Library"
                    VIRTWHO_ESX_SERVER = params['vcentermachine_ip']
                    VIRTWHO_ESX_USERNAME = params.get(
                        "vcentermachine_username")
                    VIRTWHO_ESX_PASSWORD = params.get(
                        "vcentermachine_password")
                    ESX_HOST = ee.esx_host_ip
                    # update virt-who configure file
                    eu().update_esx_vw_configure(logger, VIRTWHO_ESX_OWNER,
                                                 VIRTWHO_ESX_ENV,
                                                 VIRTWHO_ESX_SERVER,
                                                 VIRTWHO_ESX_USERNAME,
                                                 VIRTWHO_ESX_PASSWORD)
                    # restart virt-who service
                    eu().vw_restart_virtwho(logger)
                    if not eu().sub_isregistered(logger):
                        eu().configure_host(logger, params.get("samhostname"),
                                            params.get("samhostip"))
                        eu().sub_register(logger,
                                          eu().get_env(logger)["username"],
                                          eu().get_env(logger)["password"])
                    # wget all needed guests
                    copyimages = params['copyimages']
                    guest_name = "ESX_" + params['handleguest']
                    if eu().esx_check_host_exist(logger, ESX_HOST,
                                                 VIRTWHO_ESX_SERVER,
                                                 VIRTWHO_ESX_USERNAME,
                                                 VIRTWHO_ESX_PASSWORD):
                        if copyimages == "yes":
                            wget_url = "http://hp-z220-11.qe.lab.eng.nay.redhat.com/projects/sam-virtwho/esx_guest/"
                            # eu().esx_remove_all_guests()
                            eu().wget_images(logger, wget_url, guest_name,
                                             ESX_HOST)
                        # eu().esx_add_guest_first(logger, guest_name, ESX_HOST, VIRTWHO_ESX_SERVER, VIRTWHO_ESX_USERNAME, VIRTWHO_ESX_PASSWORD, vmware_cmd_ip)
                        eu().esx_add_guest(logger, guest_name, ESX_HOST)
                        eu().esx_start_guest_first(logger, guest_name,
                                                   ESX_HOST)
                        eu().esx_service_restart(logger, ESX_HOST)
                        eu().esx_stop_guest(logger, guest_name, ESX_HOST)
                        # restart virt-who service
                        eu().vw_restart_virtwho(logger)
                        # if got here, this script run well
                        eu().SET_RESULT(0)
                    else:
                        logger.error(
                            "ESX host:'%s' has not been added to vCenter yet, add it manually first!"
                            % ESX_HOST)

                if "rhevmmachine_ip" in params.keys():
                    DNSserver_ip = "10.66.12.112"
                    NFSserver_ip = "10.66.13.170"
                    proxy_ip = "proxy=https:\/\/squid.corp.redhat.com:3128"
                    nfs_dir_for_storage = "/home/vol/data5"
                    nfs_dir_for_export = "/home/vol/data7"
                    handleguest = params["handleguest"]
                    rhevmmachine_ip = params['rhevmmachine_ip']
                    rhevmmachine_name = eu().get_hostname(
                        logger, rhevmmachine_ip)
                    rhevm_host1_ip = params["rhel_host_ip"]
                    rhevm_host1_name = eu().get_hostname(
                        logger, rhevm_host1_ip)
                    # virt-who configure for rhevm mode
                    VIRTWHO_RHEVM_OWNER = "ACME_Corporation"
                    VIRTWHO_RHEVM_ENV = "Library"
                    VIRTWHO_RHEVM_SERVER = "https:\/\/" + rhevmmachine_ip + ":443"
                    VIRTWHO_RHEVM_USERNAME = "******"
                    VIRTWHO_RHEVM_PASSWORD = "******"
                    copyimages = params['copyimages']
                    if copyimages == "yes":
                        # update virt-who configure file
                        eu().rhevm_update_vw_configure(logger,
                                                       VIRTWHO_RHEVM_OWNER,
                                                       VIRTWHO_RHEVM_ENV,
                                                       VIRTWHO_RHEVM_SERVER,
                                                       VIRTWHO_RHEVM_USERNAME,
                                                       VIRTWHO_RHEVM_PASSWORD,
                                                       background=1,
                                                       debug=1)
                        # configure dns server, add rhel host
                        eu().config_dnsserver(logger, rhevm_host1_ip,
                                              rhevm_host1_name, DNSserver_ip)
                        # configure /etc/yum.conf
                        eu().config_yum(logger, proxy_ip, rhevm_host1_ip)
                        # add rhevm to rhel host in /etc/hosts
                        eu().add_rhevm_server_to_host(logger,
                                                      rhevmmachine_name,
                                                      rhevmmachine_ip,
                                                      rhevm_host1_ip)
                        # add rhevm bridge in rhel host
                        eu().configure_host_bridge(logger, rhevmmachine_name,
                                                   rhevmmachine_ip,
                                                   rhevm_host1_ip)
                        # stop firewall
                        eu().stop_firewall(logger, rhevm_host1_ip)
                        if not eu().sub_isregistered(logger, rhevm_host1_ip):
                            eu().conf_rhsm_candlepin(logger, rhevm_host1_ip)
                            eu().sub_register(logger, ee.username_qa,
                                              ee.password_qa, rhevm_host1_ip)
                            # Subscribe host to a physical pool which has a guest limit (not unlimited)
                            eu().sub_subscribetopool_of_product(
                                logger, ee.productid_guest, rhevm_host1_ip)
                            # Subscribe host to Vitalization subscription
                            eu().sub_subscribetopool_of_product(
                                logger, ee.productid_Virtual_guest,
                                rhevm_host1_ip)
                        # add repo to rhel host
                        eu().get_rhevm_repo_file(logger, rhevm_host1_ip)
                        # Add host1 to rhevm
                        eu().rhevm_add_host(logger, rhevm_host1_name,
                                            rhevm_host1_ip, rhevmmachine_ip)
                        # auto connect rhevm-shell
                        eu().config_rhevm_shell(logger, rhevmmachine_ip)
                        # configure and register rhel host
                        if eu().sub_isregistered(logger, rhevm_host1_ip):
                            eu().sub_unregister(logger, rhevm_host1_ip)
                            # add dns server to /etc/resolve.conf
                            eu().rhevm_add_dns_to_host(logger, DNSserver_ip,
                                                       rhevm_host1_ip)
                            eu().conf_rhsm_sam(logger, rhevm_host1_ip)
                            eu().configure_host(logger,
                                                params.get("samhostname"),
                                                params.get("samhostip"),
                                                rhevm_host1_ip)
                            eu().sub_register(logger,
                                              eu().get_env(logger)["username"],
                                              eu().get_env(logger)["password"],
                                              rhevm_host1_ip)
                            eu().sub_autosubscribe(
                                logger,
                                eu().get_env(logger)["autosubprod"],
                                rhevm_host1_ip)
                        # configure and register execute virt-who host
                        if not eu().sub_isregistered(logger):
                            eu().configure_host(logger,
                                                params.get("samhostname"),
                                                params.get("samhostip"))
                            eu().sub_register(logger,
                                              eu().get_env(logger)["username"],
                                              eu().get_env(logger)["password"])
                            eu().sub_autosubscribe(
                                logger,
                                eu().get_env(logger)["autosubprod"])
                        # Add storagedomain to rhevm
                        eu().add_storagedomain_to_rhevm(
                            logger, "data_storage", rhevm_host1_name, "data",
                            "v3", NFSserver_ip, nfs_dir_for_storage,
                            rhevmmachine_ip)
                        eu().add_storagedomain_to_rhevm(
                            logger, "export_storage", rhevm_host1_name,
                            "export", "v1", NFSserver_ip, nfs_dir_for_export,
                            rhevmmachine_ip)
                        eu().activate_storagedomain(logger, "export_storage",
                                                    rhevmmachine_ip)
                        eu().rhevm_define_guest(logger)
                        eu().create_storage_pool(logger)
                        # yum install virt-V2V
                        eu().install_virtV2V(logger, rhevmmachine_name,
                                             rhevmmachine_ip)
                        eu().convert_guest_to_nfs(logger, NFSserver_ip,
                                                  nfs_dir_for_export,
                                                  handleguest)
                        eu().import_vm_to_rhevm(logger, handleguest,
                                                "data_storage",
                                                "export_storage",
                                                rhevmmachine_ip)
                    eu().SET_RESULT(0)

                if "targetmachine_ip" in params.keys():
                    # (1)set cpu socket
                    eu().set_cpu_socket(logger)
                    # (2)configure and register the host
                    if not eu().sub_isregistered(logger):
                        eu().configure_host(logger, params.get("samhostname"),
                                            params.get("samhostip"))
                        eu().sub_register(logger,
                                          eu().get_env(logger)["username"],
                                          eu().get_env(logger)["password"])
                    # (3)update virt-who configure file
                    eu().update_vw_configure(logger)
                    # (4)restart virt-who service
                    eu().vw_restart_virtwho(logger)
                    # (5)copy all needed guests
                    testtype = params['testtype']
                    copyimages = params['copyimages']
                    if copyimages == "yes":
                        # if "beaker" in params.keys() and params['beaker'] == "yes":
                        if "redhat.com" in params['targetmachine_ip']:
                            eu().copy_images(logger, testtype,
                                             ee.beaker_image_machine_ip,
                                             ee.image_machine_imagepath,
                                             ee.imagenfspath)
                        else:
                            eu().copy_images(logger, testtype,
                                             ee.image_machine_ip,
                                             ee.image_machine_imagepath,
                                             ee.imagenfspath)
                    # (6)export image path as nfs
                    eu().export_dir_as_nfs(logger, ee.imagenfspath)
                    # (7)mount image nfs path
                    eu().mount_images_in_sourcemachine(logger, ee.imagenfspath,
                                                       ee.imagepath)
                    # (8)add some guests by define from host machine.
                    eu().vw_define_all_guests(logger, testtype, params)
                    # (9)set up env for migration if needed
                    if params.has_key("targetmachine_ip") and params.has_key(
                            "targetmachine_hostname"):
                        logger.info(
                            "-------- Begin to set up env for migration -------- "
                        )
                        targetmachine_ip = params["targetmachine_ip"]
                        targetmachine_hostname = params[
                            "targetmachine_hostname"]
                        # 1)mount image path in target machine
                        eu().mount_images_in_targetmachine(
                            logger, targetmachine_ip, ee.imagenfspath,
                            ee.imagepath)
                        # 2)mount the rhsm log of the target machine into source machine.
                        eu().mount_rhsmlog_of_targetmachine(
                            logger, targetmachine_ip,
                            ee.rhsmlog_for_targetmachine)
                        # 3)update /etc/hosts file
                        eu().update_hosts_file(logger, targetmachine_ip,
                                               targetmachine_hostname)
                        # 4)set cpu socket
                        eu().set_cpu_socket(logger,
                                            targetmachine_ip=targetmachine_ip)
                        # 5)stop firewall of two host machines for migration
                        eu().stop_firewall(logger)
                        eu().stop_firewall(logger, targetmachine_ip)
                        # 6)update xen configuration file /etc/xen/xend-config.sxp of two host machines for migration to
                        # make sure contain necessary config options, and then restart service xend.
                        if testtype == "xen":
                            eu().update_xen_configure(logger)
                            eu().update_xen_configure(logger, targetmachine_ip)
                        # 7)configure and register the host
                        if not eu().sub_isregistered(logger, targetmachine_ip):
                            eu().configure_host(logger,
                                                params.get("samhostname"),
                                                params.get("samhostip"),
                                                targetmachine_ip)
                            username = eu().get_env(logger)["username"]
                            password = eu().get_env(logger)["password"]
                            eu().sub_register(logger, username, password,
                                              targetmachine_ip)
                        # 8)update virt-who configure file
                        eu().update_vw_configure(
                            logger, targetmachine_ip=targetmachine_ip)
                        # 9)restart virt-who service in target machine
                        eu().vw_restart_virtwho(logger, targetmachine_ip)
                        logger.info(
                            "-------- End to set up env for migration -------- "
                        )
                    else:
                        logger.info(
                            "There is no target machine ip/hostname provided, so does not setup env for migration."
                        )
                    # if got here, this script run well
                    eu().SET_RESULT(0)
        except Exception, e:
            logger.error("Test Failed due to error happened: " + str(e))
            logger.error(traceback.format_exc())
            eu().SET_RESULT(1)
    finally:
        logger.info(
            "=============== End of Running Test Case: %s ===============" %
            __name__[str.rindex(__name__, ".") + 1:])
        return eu().TEST_RESULT()
def tc_Clean_Virtwho(params):
    """ Clean up virt-who test environment """
    try:
        try:
            logger = params['logger']
            eu().RESET_RESULT()
            logger.info(
                "=============== Begin of Running Test Case: %s ==============="
                % __name__[str.rindex(__name__, ".") + 1:])

            if "vcentermachine_ip" in params.keys():
                vcentermachine_ip = params['vcentermachine_ip']
                VIRTWHO_ESX_OWNER = "ACME_Corporation"
                VIRTWHO_ESX_ENV = "env1"
                VIRTWHO_ESX_SERVER = vcentermachine_ip
                VIRTWHO_ESX_USERNAME = params.get("vcentermachine_username")
                VIRTWHO_ESX_PASSWORD = params.get("vcentermachine_password")
                ESX_HOST_1 = ee.esx_host_ip
                vmware_cmd_ip = ee.vmware_cmd_ip
                eu().SET_RESULT(0)

            if "targetmachine_ip" in params.keys():
                # (1)undefine all guests
                eu().vw_undefine_all_guests(logger, params)
                # (2)stop virt-who service - restart firstly to get current all guest status inputted into the rhsm.log.
                # #restart virt-who service
                eu().vw_restart_virtwho(logger)
                # #stop virt-who service
                eu().vw_stop_virtwho(logger)
                # (3)unregister the host
                if eu().sub_isregistered(logger):
                    eu().sub_unregister(logger)
                # (4)unmount image path in source machine
                eu().unmount_imagepath_in_sourcemachine(logger, ee.imagepath)
                # (5)clean env for migration if needed
                if params.has_key("targetmachine_ip"):
                    logger.info(
                        "-------- Begin to clean env for migration --------")
                    targetmachine_ip = params["targetmachine_ip"]
                    # 1)unmount image path in target machine
                    eu().unmount_imagepath_in_targetmachine(
                        logger, ee.imagepath, targetmachine_ip)
                    # 2)unmount the rhsm log of the target machine
                    eu().unmount_rhsmlog_of_targetmachine(
                        logger, ee.rhsmlog_for_targetmachine)
                    # 3)stop virt-who service - restart firstly to get current all guest status inputted into the rhsm.log.
                    # #restart virt-who service
                    eu().vw_restart_virtwho(logger, targetmachine_ip)
                    # #stop virt-who service
                    eu().vw_stop_virtwho(logger, targetmachine_ip)
                    # 4)unregister the target machine
                    if eu().sub_isregistered(logger, targetmachine_ip):
                        eu().sub_unregister(logger, targetmachine_ip)
                    logger.info(
                        "-------- End to clean env for migration --------")
                eu().SET_RESULT(0)
        except Exception, e:
            logger.error("Test Failed due to error happened: " + str(e))
            logger.error(traceback.format_exc())
            eu().SET_RESULT(1)
    finally:
        logger.info(
            "=============== End of Running Test Case: %s ===============" %
            __name__[str.rindex(__name__, ".") + 1:])
        return eu().TEST_RESULT()
def tc_ID308833_ESX_add_large_number_guests(params):
	""" Execute virt-who with large number of guests in host """
	try:
		try:
			logger = params['logger']
			eu().RESET_RESULT()
			logger.info("=============== Begin of Running Test Case: %s ===============" % __name__[str.rindex(__name__, ".") + 1:])
			guest_name = "esx_auto_guest"
			vCenter = params['vcentermachine_ip']
			vCenter_user = params['vcentermachine_username']
			vCenter_pass = params['vcentermachine_password']
			destination_ip = ee.esx_host_ip
			guest_total = 100
			guest_uuid_list = []
			# add 100 guests in vCenter
			for i in range(0, guest_total):
				eu().esx_create_dummy_guest(logger, guest_name + "_" + str(i), destination_ip)
				guest_uuid = eu().esx_get_guest_uuid(logger, guest_name + "_" + str(i), destination_ip)
				guest_uuid_list.append(guest_uuid)
				# if not eu().esx_check_uuid_exist_in_rhsm_log(logger, guestuuid, destination_ip):
				# 	eu().SET_RESULT(1)
			# check all guest uuid is in rhsm.log
			guest_uuid_list_in_log = eu().get_uuid_list_in_rhsm_log(logger)
			for i in range(0, guest_total):
				if not guest_uuid_list[i] in guest_uuid_list_in_log:
					eu().SET_RESULT(1)
				else:
					logger.info("UUID of guest:%s exist in rhsm.log" % (guest_name + "_" + str(i)))
			# remove the 100 guests added in vCenter
			for i in range(0, guest_total):
				# guestuuid = eu().esx_get_guest_uuid(logger, guest_name + "_" + str(i), destination_ip)
				eu().esx_remove_guest(logger, guest_name + "_" + str(i), destination_ip, vCenter, vCenter_user, vCenter_pass)
				eu().esx_destroy_guest(logger, guest_name + "_" + str(i), destination_ip)
				# if eu().esx_check_uuid_exist_in_rhsm_log(logger, guestuuid, destination_ip):
				# 	eu().SET_RESULT(1)
			eu().SET_RESULT(0)
		except Exception, e:
			logger.error("Test Failed due to error happened: " + str(e))
			logger.error(traceback.format_exc())
			eu().SET_RESULT(1)
	finally:
		logger.info("=============== End of Running Test Case: %s ===============" % __name__[str.rindex(__name__, ".") + 1:])
		return eu().TEST_RESULT()
def tc_ID155170_ESX_check_uuid_after_adding_guests(params):
	''' check_uuid_after_adding_guests '''
	try:
		try:
			logger = params['logger']
			eu().RESET_RESULT()
			logger.info("=============== Begin of Running Test Case: %s ===============" % __name__[str.rindex(__name__, ".") + 1:])
			guest_name = "ESX_" + params['handleguest']
			destination_ip = ee.esx_host_ip
			# Start a guest by start from host machine.
			eu().esx_start_guest(logger, guest_name)
			# Get guest IP
			guestip = None
			guestip = eu().esx_get_guest_ip(logger, guest_name, destination_ip)
			if guestip == None:
				logger.error("Faild to get guest ip.")
				eu().SET_RESULT(1)
			# Get guest uuid
			guestuuid = eu().esx_get_guest_uuid(logger, guest_name, destination_ip)
			# Register guest to SAM
			if not eu().sub_isregistered(logger, guestip):
				eu().configure_host(logger, params.get("samhostname"), params.get("samhostip"), guestip)
				eu().sub_register(logger, eu().get_env(logger)["username"], eu().get_env(logger)["password"], guestip)
			# Check virt uuid in facts list
			cmd = "subscription-manager facts --list | grep virt.uuid"
			ret, output = eu().runcmd(logger, cmd, "list virt.uuid", guestip)
			if ret == 0:
				uuidvalue = output.split(":")[1].strip()
				if "virt.uuid" in output and uuidvalue == guestuuid:
					logger.info("Succeeded to check_uuid_after_adding_guests.")
					eu().SET_RESULT(0)
				else:
					logger.error("Failed to check_uuid_after_adding_guests.")
					eu().SET_RESULT(1)
		except Exception, e:
			logger.error("Test Failed due to error happened: " + str(e))
			logger.error(traceback.format_exc())
			eu().SET_RESULT(1)
	finally:
		if guestip != None:
			eu().sub_unregister(logger, guestip)
		eu().esx_stop_guest(logger, guest_name, destination_ip)
		logger.info("=============== End of Running Test Case: %s ===============" % __name__[str.rindex(__name__, ".") + 1:])
		return eu().TEST_RESULT()
def tc_ID155142_ESX_validate_bonus_pool_creation(params):
	''' support_for_unlimited_guest_entitlements '''
	try:
		try:
			logger = params['logger']
			eu().RESET_RESULT()
			logger.info("=============== Begin of Running Test Case: %s ===============" % __name__[str.rindex(__name__, ".") + 1:])
			guest_name = "ESX_" + params['handleguest']
			samhostip = params['samhostip']
			destination_ip = ee.esx_host_ip
			host_uuid = eu().esx_get_host_uuid(logger, destination_ip)
			# Start a guest by start from host machine.
			eu().esx_start_guest(logger, guest_name)
			# Get guest IP
			guestip = None
			guestip = eu().esx_get_guest_ip(logger, guest_name, destination_ip)
			if guestip == None:
				logger.error("Faild to get guest ip.")
				eu().SET_RESULT(1)
			# Register guest to SAM
			if not eu().sub_isregistered(logger, guestip):
				eu().configure_host(logger, params.get("samhostname"), params.get("samhostip"), guestip)
				eu().sub_register(logger, eu().get_env(logger)["username"], eu().get_env(logger)["password"], guestip)
			
			# check only physical subscription in guest
			
			# subscribe esx host with limited bonus subscription
			eu().esx_subscribe_host_in_samserv(logger, host_uuid, eu().get_poolid_by_SKU(logger, ee.productid_guest) , samhostip)
			
			# List available pools of guest, check related bonus pool generated.
			new_available_poollist = eu().sub_listavailpools(logger, ee.productid_guest, guestip)
			if new_available_poollist != None:
				bonus_pool_check = 1
				for item in range(0, len(new_available_poollist)):
					if "Available" in new_available_poollist[item]:
						SKU_Number = "Available"
					else:
						SKU_Number = "Quantity"
					if new_available_poollist[item]["SKU"] == ee.productid_guest and eu().check_type_virtual(new_available_poollist[item]) and new_available_poollist[item][SKU_Number] == ee.guestlimit:
						logger.info("Succeeded to list bonus pool of product %s" % ee.productname_unlimited_guest) 
						bonus_pool_check = 0
				eu().SET_RESULT(bonus_pool_check)
			else:
				logger.error("Failed to get available pool list from guest.")
				eu().SET_RESULT(1)
		except Exception, e:
			logger.error("Test Failed due to error happened: " + str(e))
			logger.error(traceback.format_exc())
			eu().SET_RESULT(1)
	finally:
		if guestip != None:
			eu().sub_unregister(logger, guestip)
		# Unregister the ESX host 
		eu().esx_unsubscribe_all_host_in_samserv(logger, host_uuid, samhostip)
		eu().esx_stop_guest(logger, guest_name, destination_ip)
		logger.info("=============== End of Running Test Case: %s ===============" % __name__[str.rindex(__name__, ".") + 1:])
		return eu().TEST_RESULT()
def tc_ID289675_ESX_Datacenter_repos_in_guest(params):
	''' tc_ID289675_ESX_Datacenter_repos_in_guest '''
	try:
		try:
			logger = params['logger']
			eu().RESET_RESULT()
			logger.info("=============== Begin of Running Test Case: %s ===============" % __name__[str.rindex(__name__, ".") + 1:])
			guest_name = "ESX_" + params['handleguest']
			samhostip = params['samhostip']
			destination_ip = ee.esx_host_ip
			host_uuid = eu().esx_get_host_uuid(logger, destination_ip)
			# Start a guest by start from host machine.
			eu().esx_start_guest(logger, guest_name)
			# Get guest IP
			guestip = None
			guestip = eu().esx_get_guest_ip(logger, guest_name, destination_ip)
			if guestip == None:
				logger.error("Faild to get guest ip.")
				eu().SET_RESULT(1)
			# Register guest to SAM
			if not eu().sub_isregistered(logger, guestip):
				eu().configure_host(logger, params.get("samhostname"), params.get("samhostip"), guestip)
				eu().sub_register(logger, eu().get_env(logger)["username"], eu().get_env(logger)["password"], guestip)
			# Subscribe esx host to a data center SKU
			eu().esx_subscribe_host_in_samserv(logger, host_uuid, eu().get_poolid_by_SKU(logger, ee.data_center_SKU) , samhostip)
			# Subscribe the registered guest to the corresponding bonus pool
			eu().subscribe_datacenter_bonus_pool(logger, ee.data_center_subscription_name, guestip)
			# Check repositories available in guest
			cmd = "subscription-manager repos --list | grep -A4 \"^Repo ID\""
			ret, output = eu().runcmd(logger, cmd, "Check repositories available in guest", guestip)
			if ret == 0 and "This system has no repositories available through subscriptions." not in output:
				logger.info("Succeeded to check repositories available in guest.")
			else:
				logger.error("Failed to check repositories available in guest.")
				eu().SET_RESULT(1)
			# Check content sets exist in cert file in guest
			cmd = "rct cat-cert /etc/pki/entitlement/*[^-key].pem | grep -A11 \"^Content:\""
			ret, output = eu().runcmd(logger, cmd, "Check content sets exist in cert file in guest", guestip)
			if ret == 0:
				logger.info("Succeeded to check content sets exist in cert file in guest.")
			else:
				logger.error("Failed to check content sets exist in cert file in guest.")
				eu().SET_RESULT(1)
			eu().SET_RESULT(0)
		except Exception, e:
			logger.error("Test Failed due to error happened: " + str(e))
			logger.error(traceback.format_exc())
			eu().SET_RESULT(1)
	finally:
		if guestip != None:
			eu().sub_unregister(logger, guestip)
		# Unregister the ESX host 
		eu().esx_unsubscribe_all_host_in_samserv(logger, host_uuid, samhostip)
		eu().esx_stop_guest(logger, guest_name, destination_ip)
		logger.info("=============== End of Running Test Case: %s ===============" % __name__[str.rindex(__name__, ".") + 1:])
		return eu().TEST_RESULT()
def tc_ID155171_ESX_check_uuid_after_deleting_guests(params):
    ''' check_uuid_after_adding_guests '''
    try:
        try:
            logger = params['logger']
            eu().RESET_RESULT()
            logger.info(
                "=============== Begin of Running Test Case: %s ==============="
                % __name__[str.rindex(__name__, ".") + 1:])
            handleguest = "ESX_" + params['handleguest']
            destination_ip = ee.esx_host_ip
            vCenter = params['vcentermachine_ip']
            vCenter_user = params['vcentermachine_username']
            vCenter_pass = params['vcentermachine_password']
            host_uuid = eu().esx_get_host_uuid(logger, destination_ip)
            # delete guest
            eu().esx_remove_guest(logger, handleguest, destination_ip, vCenter,
                                  vCenter_user, vCenter_pass)
            # restart virt-who service
            eu().vw_restart_virtwho(logger)
            eu().vw_restart_virtwho(logger)
            # check log info in rhsm.log with none guest
            cmd = "sleep 30; tail -1 /var/log/rhsm/rhsm.log"
            expected_info = "Sending update in hosts-to-guests mapping: {%s: []}" % host_uuid
            (ret, output) = eu().runcmd(
                logger, cmd, "check log info in rhsm.log with none guest")
            if ret == 0 and expected_info in output:
                logger.info("Succeeded to check_uuid_after_adding_guests.")
                eu().SET_RESULT(0)
            else:
                logger.error("Failed to check_uuid_after_adding_guests.")
                eu().SET_RESULT(1)
        except Exception, e:
            logger.error("Test Failed due to error happened: " + str(e))
            logger.error(traceback.format_exc())
            eu().SET_RESULT(1)
    finally:
        eu().esx_add_guest(logger, handleguest, destination_ip)
        logger.info(
            "=============== End of Running Test Case: %s ===============" %
            __name__[str.rindex(__name__, ".") + 1:])
        return eu().TEST_RESULT()
Esempio n. 15
0
def tc_ID301085_ESX_Instance_compliance_in_guest_regardless_sockets_RAM_cores(
        params):
    ''' tc_ID301085_ESX_Instance_compliance_in_guest_regardless_sockets_RAM_cores. '''
    try:
        try:
            logger = params['logger']
            eu().RESET_RESULT()
            logger.info(
                "=============== Begin of Running Test Case: %s ==============="
                % __name__[str.rindex(__name__, ".") + 1:])
            guest_name = "ESX_" + params['handleguest']
            samhostip = params['samhostip']
            destination_ip = ee.esx_host_ip
            host_uuid = eu().esx_get_host_uuid(logger, destination_ip)
            # Start a guest by start from host machine.
            eu().esx_start_guest(logger, guest_name)
            # Get guest IP
            guestip = None
            guestip = eu().esx_get_guest_ip(logger, guest_name, destination_ip)
            if guestip == None:
                logger.error("Faild to get guest ip.")
                eu().SET_RESULT(1)
            # Register guest to SAM
            if not eu().sub_isregistered(logger, guestip):
                eu().configure_host(logger, params.get("samhostname"),
                                    params.get("samhostip"), guestip)
                eu().sub_register(logger,
                                  eu().get_env(logger)["username"],
                                  eu().get_env(logger)["password"], guestip)
            # Set up facts
            eu().setup_custom_facts(logger, "cpu.cpu_socket(s)", "8", guestip)
            eu().setup_custom_facts(logger, "memory.memtotal", "30000000",
                                    guestip)
            eu().setup_custom_facts(logger, "cpu.core(s)_per_socket", "8",
                                    guestip)
            pool = eu().get_pool_by_SKU(logger, ee.instance_SKU, guestip)
            # Validate one instance-based subscription can be used for one guest
            cmd = "subscription-manager subscribe --pool=%s --quantity=1" % pool
            ret, output = eu().runcmd(
                logger, cmd,
                "Check one instance-based subscription can be used for one guest",
                guestip)
            if ret == 0 and "Successfully" in output:
                logger.info(
                    "Succeeded to check one instance-based subscription can be used for one guest."
                )
            else:
                logger.error(
                    "Failed to check one instance-based subscription can be used for one guest."
                )
                eu().SET_RESULT(1)
            # Check installed product status: Subscribed in guest
            cmd = "subscription-manager list --installed | grep 'Status:'"
            ret, output = eu().runcmd(logger, cmd,
                                      "Check installed product status",
                                      guestip)
            if ret == 0 and output.split(":")[1].strip() == "Subscribed":
                logger.info(
                    "Succeeded to check installed product status is Subscribed."
                )
            else:
                logger.error(
                    "Failed to check installed product status is Subscribed.")
                eu().SET_RESULT(1)
            # Check consumed subscription with Status Details: empty.
            cmd = "subscription-manager list --consumed | grep 'Status Details'"
            ret, output = eu().runcmd(
                logger, cmd, "Check consumed subscription 'Status Details'",
                guestip)
            if ret == 0 and output.split(":")[1].strip() == "":
                logger.info(
                    "Succeeded to check consumed subscription 'Status Details' is empty."
                )
            else:
                logger.error(
                    "Failed to check consumed subscription 'Status Details'is empty."
                )
                eu().SET_RESULT(1)
            eu().SET_RESULT(0)
        except Exception, e:
            logger.error("Test Failed due to error happened: " + str(e))
            logger.error(traceback.format_exc())
            eu().SET_RESULT(1)
    finally:
        if guestip != None:
            eu().sub_unregister(logger, guestip)
        # Unregister the ESX host
        eu().esx_unsubscribe_all_host_in_samserv(logger, host_uuid, samhostip)
        eu().esx_stop_guest(logger, guest_name, destination_ip)
        logger.info(
            "=============== End of Running Test Case: %s ===============" %
            __name__[str.rindex(__name__, ".") + 1:])
        return eu().TEST_RESULT()
Esempio n. 16
0
def tc_ID301083_ESX_Instance_one_instance_for_one_guest(params):
    ''' tc_ID301083_ESX_Instance_one_instance_for_one_guest. '''
    try:
        try:
            logger = params['logger']
            eu().RESET_RESULT()
            logger.info(
                "=============== Begin of Running Test Case: %s ==============="
                % __name__[str.rindex(__name__, ".") + 1:])
            guest_name = "ESX_" + params['handleguest']
            samhostip = params['samhostip']
            destination_ip = ee.esx_host_ip
            host_uuid = eu().esx_get_host_uuid(logger, destination_ip)
            # Start a guest by start from host machine.
            eu().esx_start_guest(logger, guest_name)
            # Get guest IP
            guestip = None
            guestip = eu().esx_get_guest_ip(logger, guest_name, destination_ip)
            if guestip == None:
                logger.error("Faild to get guest ip.")
                eu().SET_RESULT(1)
            # Register guest to SAM
            if not eu().sub_isregistered(logger, guestip):
                eu().configure_host(logger, params.get("samhostname"),
                                    params.get("samhostip"), guestip)
                eu().sub_register(logger,
                                  eu().get_env(logger)["username"],
                                  eu().get_env(logger)["password"], guestip)
            pool = eu().get_pool_by_SKU(logger, ee.instance_SKU, guestip)
            instance_quantity_before = eu().get_SKU_attribute(
                logger, ee.instance_SKU, "Available", guestip)
            # Validate one instance-based subscription can be used for one guest
            cmd = "subscription-manager subscribe --pool=%s --quantity=1" % pool
            ret, output = eu().runcmd(
                logger, cmd,
                "Check one instance-based subscription can be used for one guest",
                guestip)
            if ret == 0 and "Successfully" in output:
                logger.info(
                    "Succeeded to check one instance-based subscription can be used for one guest."
                )
            else:
                logger.error(
                    "Failed to check one instance-based subscription can be used for one guest."
                )
                eu().SET_RESULT(1)
            # eu().sub_listconsumed(logger, ee.instance_subscription_name)
            instance_quantity_after = eu().get_SKU_attribute(
                logger, ee.instance_SKU, "Available", guestip)
            if int(instance_quantity_before) - int(
                    instance_quantity_after) == 1:
                logger.info(
                    "Succeeded to check instance quantity - 1: instance_quantity_before=%s instance_quantity_after=%s"
                    % (instance_quantity_before, instance_quantity_after))
                eu().SET_RESULT(0)
            else:
                logger.error(
                    "Failed to check instance quantity - 1: instance_quantity_before=%s instance_quantity_after=%s"
                    % (instance_quantity_before, instance_quantity_after))
                eu().SET_RESULT(1)
        except Exception, e:
            logger.error("Test Failed due to error happened: " + str(e))
            logger.error(traceback.format_exc())
            eu().SET_RESULT(1)
    finally:
        if guestip != None:
            eu().sub_unregister(logger, guestip)
        # Unregister the ESX host
        eu().esx_unsubscribe_all_host_in_samserv(logger, host_uuid, samhostip)
        eu().esx_stop_guest(logger, guest_name, destination_ip)
        logger.info(
            "=============== End of Running Test Case: %s ===============" %
            __name__[str.rindex(__name__, ".") + 1:])
        return eu().TEST_RESULT()
def tc_ID155117_ESX_check_guest_uuid(params):
	''' Check guest uuid via CLI of subscription-manager, no GUI yet '''
	try:
		try:
			logger = params['logger']
			eu().RESET_RESULT()
			logger.info("=============== Begin of Running Test Case: %s ===============" % __name__[str.rindex(__name__, ".") + 1:])
			guest_name = "ESX_" + params['handleguest']
			destination_ip = ee.esx_host_ip
			# Start a guest by start from host machine.
			eu().esx_start_guest(logger, guest_name)
			# Get guest IP
			guestip = None
			guestip = eu().esx_get_guest_ip(logger, guest_name, destination_ip)
			if guestip == None:
				logger.error("Faild to get guest ip.")
				eu().SET_RESULT(1)
			# Get guest uuid
			guestuuid = eu().esx_get_guest_uuid(logger, guest_name, destination_ip)
			# Register guest to SAM
			if not eu().sub_isregistered(logger, guestip):
				eu().configure_host(logger, params.get("samhostname"), params.get("samhostip"), guestip)
				eu().sub_register(logger, eu().get_env(logger)["username"], eu().get_env(logger)["password"], guestip)
			# Check virt uuid in facts list
			cmd = "subscription-manager facts --list | grep virt.uuid"
			ret, output = eu().runcmd(logger, cmd, "list virt.uuid", guestip)
			if ret == 0:
				uuidvalue = output.split(":")[1].strip()
				if "virt.uuid" in output and uuidvalue == guestuuid:
					logger.info("Succeeded to check virt.uuid.")
					eu().SET_RESULT(0)
				else:
					logger.error("Failed to check virt.uuid.")
					eu().SET_RESULT(1)
		except Exception, e:
			logger.error("Test Failed due to error happened: " + str(e))
			logger.error(traceback.format_exc())
			eu().SET_RESULT(1)
	finally:
		if guestip != None:
			eu().sub_unregister(logger, guestip)
		eu().esx_stop_guest(logger, guest_name, destination_ip)
		logger.info("=============== End of Running Test Case: %s ===============" % __name__[str.rindex(__name__, ".") + 1:])
		return eu().TEST_RESULT()
def tc_ID214402_ESX_execute_virtwho_o(params):
	""" Execute virt-who -o in a registered host, verify virtwho -o can work"""
	try:
		try:
			logger = params['logger']
			eu().RESET_RESULT()
			logger.info("=============== Begin of Running Test Case: %s ===============" % __name__[str.rindex(__name__, ".") + 1:])
			# (1)stop virt-who service
			eu().vw_stop_virtwho(logger)
			# run cmd virt-who with o and d option in the host
			cmd = "virt-who -o -d"
			(ret, output) = eu().runcmd(logger, cmd, "executing virt-who with one-shot mode")
			if ret == 0 and "DEBUG" in output and "ERROR" not in output:
				logger.info("Succeeded to execute virt-who with one-shot mode.")
				eu().SET_RESULT(0)
			else:
				logger.error("Failed to execute virt-who with one-shot mode.")
				eu().SET_RESULT(1)
		except Exception, e:
			logger.error("Test Failed due to error happened: " + str(e))
			logger.error(traceback.format_exc())
			eu().SET_RESULT(1)
	finally:
		logger.info("=============== End of Running Test Case: %s ===============" % __name__[str.rindex(__name__, ".") + 1:])
		return eu().TEST_RESULT()
Esempio n. 19
0
def tc_ID289675_ESX_Datacenter_repos_in_guest(params):
    ''' tc_ID289675_ESX_Datacenter_repos_in_guest '''
    try:
        try:
            logger = params['logger']
            eu().RESET_RESULT()
            logger.info(
                "=============== Begin of Running Test Case: %s ==============="
                % __name__[str.rindex(__name__, ".") + 1:])
            guest_name = "ESX_" + params['handleguest']
            samhostip = params['samhostip']
            destination_ip = ee.esx_host_ip
            host_uuid = eu().esx_get_host_uuid(logger, destination_ip)
            # Start a guest by start from host machine.
            eu().esx_start_guest(logger, guest_name)
            # Get guest IP
            guestip = None
            guestip = eu().esx_get_guest_ip(logger, guest_name, destination_ip)
            if guestip == None:
                logger.error("Faild to get guest ip.")
                eu().SET_RESULT(1)
            # Register guest to SAM
            if not eu().sub_isregistered(logger, guestip):
                eu().configure_host(logger, params.get("samhostname"),
                                    params.get("samhostip"), guestip)
                eu().sub_register(logger,
                                  eu().get_env(logger)["username"],
                                  eu().get_env(logger)["password"], guestip)
            # Subscribe esx host to a data center SKU
            eu().esx_subscribe_host_in_samserv(
                logger, host_uuid,
                eu().get_poolid_by_SKU(logger, ee.data_center_SKU), samhostip)
            # Subscribe the registered guest to the corresponding bonus pool
            eu().subscribe_datacenter_bonus_pool(
                logger, ee.data_center_subscription_name, guestip)
            # Check repositories available in guest
            cmd = "subscription-manager repos --list | grep -A4 \"^Repo ID\""
            ret, output = eu().runcmd(logger, cmd,
                                      "Check repositories available in guest",
                                      guestip)
            if ret == 0 and "This system has no repositories available through subscriptions." not in output:
                logger.info(
                    "Succeeded to check repositories available in guest.")
            else:
                logger.error(
                    "Failed to check repositories available in guest.")
                eu().SET_RESULT(1)
            # Check content sets exist in cert file in guest
            cmd = "rct cat-cert /etc/pki/entitlement/*[^-key].pem | grep -A11 \"^Content:\""
            ret, output = eu().runcmd(
                logger, cmd, "Check content sets exist in cert file in guest",
                guestip)
            if ret == 0:
                logger.info(
                    "Succeeded to check content sets exist in cert file in guest."
                )
            else:
                logger.error(
                    "Failed to check content sets exist in cert file in guest."
                )
                eu().SET_RESULT(1)
            eu().SET_RESULT(0)
        except Exception, e:
            logger.error("Test Failed due to error happened: " + str(e))
            logger.error(traceback.format_exc())
            eu().SET_RESULT(1)
    finally:
        if guestip != None:
            eu().sub_unregister(logger, guestip)
        # Unregister the ESX host
        eu().esx_unsubscribe_all_host_in_samserv(logger, host_uuid, samhostip)
        eu().esx_stop_guest(logger, guest_name, destination_ip)
        logger.info(
            "=============== End of Running Test Case: %s ===============" %
            __name__[str.rindex(__name__, ".") + 1:])
        return eu().TEST_RESULT()
def tc_ID301527_ESX_Instance_compliance_in_guest(params):
	''' tc_ID301527_ESX_Instance_compliance_in_guest. '''
	try:
		try:
			logger = params['logger']
			eu().RESET_RESULT()
			logger.info("=============== Begin of Running Test Case: %s ===============" % __name__[str.rindex(__name__, ".") + 1:])
			guest_name = "ESX_" + params['handleguest']
			samhostip = params['samhostip']
			destination_ip = ee.esx_host_ip
			host_uuid = eu().esx_get_host_uuid(logger, destination_ip)
			# Start a guest by start from host machine.
			eu().esx_start_guest(logger, guest_name)
			# Get guest IP
			guestip = None
			guestip = eu().esx_get_guest_ip(logger, guest_name, destination_ip)
			if guestip == None:
				logger.error("Faild to get guest ip.")
				eu().SET_RESULT(1)
			# Register guest to SAM
			if not eu().sub_isregistered(logger, guestip):
				eu().configure_host(logger, params.get("samhostname"), params.get("samhostip"), guestip)
				eu().sub_register(logger, eu().get_env(logger)["username"], eu().get_env(logger)["password"], guestip)
			# Set up facts
			eu().setup_custom_facts(logger, "cpu.cpu_socket(s)", "8", guestip)
			pool = eu().get_pool_by_SKU(logger, ee.instance_SKU, guestip)
			# Validate one instance-based subscription can be used for one guest
			cmd = "subscription-manager subscribe --pool=%s --quantity=1" % pool
			ret, output = eu().runcmd(logger, cmd, "Check one instance-based subscription can be used for one guest", guestip)
			if ret == 0 and "Successfully" in output:
				logger.info("Succeeded to check one instance-based subscription can be used for one guest.")
			else:
				logger.error("Failed to check one instance-based subscription can be used for one guest.")
				eu().SET_RESULT(1)
			# Check installed product status: Subscribed in guest
			cmd = "subscription-manager list --installed | grep 'Status:'"
			ret, output = eu().runcmd(logger, cmd, "Check installed product status", guestip)
			if ret == 0 and output.split(":")[1].strip() == "Subscribed":
				logger.info("Succeeded to check installed product status is Subscribed.")
			else:
				logger.error("Failed to check installed product status is Subscribed.")
				eu().SET_RESULT(1)
			# Check consumed subscription with Status Details: empty.
			cmd = "subscription-manager list --consumed | grep 'Status Details'"
			ret, output = eu().runcmd(logger, cmd, "Check consumed subscription 'Status Details'", guestip)
			if ret == 0 and output.split(":")[1].strip() == "":
				logger.info("Succeeded to check consumed subscription 'Status Details' is empty.")
			else:
				logger.error("Failed to check consumed subscription 'Status Details'is empty.")
				eu().SET_RESULT(1)
			eu().SET_RESULT(0)
		except Exception, e:
			logger.error("Test Failed due to error happened: " + str(e))
			logger.error(traceback.format_exc())
			eu().SET_RESULT(1)
	finally:
		if guestip != None:
			eu().sub_unregister(logger, guestip)
		# Unregister the ESX host 
		eu().esx_unsubscribe_all_host_in_samserv(logger, host_uuid, samhostip)
		eu().esx_stop_guest(logger, guest_name, destination_ip)
		logger.info("=============== End of Running Test Case: %s ===============" % __name__[str.rindex(__name__, ".") + 1:])
		return eu().TEST_RESULT()
def tc_ID173049_ESX_remove_deletion_record_of_hypervisor_to_re_register(params):
	""" remove_deletion_record_of_hypervisor_to_re_register """
	try:
		try:
			logger = params['logger']
			eu().RESET_RESULT()
			logger.info("=============== Begin of Running Test Case: %s ===============" % __name__[str.rindex(__name__, ".") + 1:])
			# guest_name = "ESX_" + params['handleguest']
			samhostip = params['samhostip']
			destination_ip = ee.esx_host_ip
			# Start a guest by start from host machine.
			# eu().esx_start_guest(logger, guest_name, destination_ip)
			# Get guest IP
			# guestip = None
			# guestip = eu().esx_get_guest_ip(logger, guest_name, destination_ip)
			# if guestip == None:
			# 	logger.error("Faild to get guest ip.")
			# 	eu().SET_RESULT(1)
			# Register guest to SAM
			# if not eu().sub_isregistered(logger, guestip):
			# 	eu().configure_host(logger, params.get("samhostname"), params.get("samhostip"), guestip)
			# 	eu().sub_register(logger, eu().get_env(logger)["username"], eu().get_env(logger)["password"], guestip)
			# restart virt-who service
			eu().vw_restart_virtwho(logger)
			host_uuid = eu().esx_get_host_uuid(logger, destination_ip)
			eu().esx_check_host_in_samserv(logger, host_uuid, samhostip)
			eu().vw_stop_virtwho(logger)
			eu().esx_remove_host_in_samserv(logger, host_uuid, samhostip)
			eu().esx_remove_deletion_record_in_samserv(logger, host_uuid, samhostip)
			
			eu().vw_restart_virtwho(logger)
			eu().esx_check_host_in_samserv(logger, host_uuid, samhostip)
			eu().SET_RESULT(0)
		except Exception, e:
			logger.error("Test Failed due to error happened: " + str(e))
			logger.error(traceback.format_exc())
			eu().SET_RESULT(1)
	finally:
		# if guestip != None:
		# 	eu().sub_unregister(logger, guestip)
		# eu().esx_stop_guest(logger, guest_name, destination_ip)
		logger.info("=============== End of Running Test Case: %s ===============" % __name__[str.rindex(__name__, ".") + 1:])
		return eu().TEST_RESULT()
def tc_ID289138_ESX_Datacenter_subpool_creation(params):
    ''' tc_ID289138_ESX_Datacenter_subpool_creation. '''
    try:
        try:
            logger = params['logger']
            eu().RESET_RESULT()
            logger.info(
                "=============== Begin of Running Test Case: %s ==============="
                % __name__[str.rindex(__name__, ".") + 1:])
            guest_name = "ESX_" + params['handleguest']
            samhostip = params['samhostip']
            destination_ip = ee.esx_host_ip
            host_uuid = eu().esx_get_host_uuid(logger, destination_ip)
            # Start a guest by start from host machine.
            eu().esx_start_guest(logger, guest_name)
            # Get guest IP
            guestip = None
            guestip = eu().esx_get_guest_ip(logger, guest_name, destination_ip)
            if guestip == None:
                logger.error("Faild to get guest ip.")
                eu().SET_RESULT(1)
            # Register guest to SAM
            if not eu().sub_isregistered(logger, guestip):
                eu().configure_host(logger, params.get("samhostname"),
                                    params.get("samhostip"), guestip)
                eu().sub_register(logger,
                                  eu().get_env(logger)["username"],
                                  eu().get_env(logger)["password"], guestip)
            # check only physical subscription in guest # Check bonus pool not generated yet
            eu().check_datacenter_bonus_existance(
                logger, ee.data_center_subscription_name, guestip, False)
            # Subscribe esx host to a data center SKU
            eu().esx_subscribe_host_in_samserv(
                logger, host_uuid,
                eu().get_poolid_by_SKU(logger, ee.data_center_SKU), samhostip)
            # Check bonus pool generated
            eu().check_datacenter_bonus_existance(
                logger, ee.data_center_subscription_name, guestip)
            # Subscribe the registered guest to the corresponding bonus pool
            eu().subscribe_datacenter_bonus_pool(
                logger, ee.data_center_subscription_name, guestip)
            # Check installed product status:Subscribed in guest
            cmd = "subscription-manager list --installed | grep 'Status:'"
            ret, output = eu().runcmd(logger, cmd,
                                      "Check installed product status",
                                      guestip)
            if ret == 0 and output.split(":")[1].strip() == "Subscribed":
                logger.info(
                    "Succeeded to check installed product status is Subscribed."
                )
            else:
                logger.error(
                    "Failed to check installed product status is Subscribed.")
                eu().SET_RESULT(1)
            eu().SET_RESULT(0)
        except Exception, e:
            logger.error("Test Failed due to error happened: " + str(e))
            logger.error(traceback.format_exc())
            eu().SET_RESULT(1)
    finally:
        if guestip != None:
            eu().sub_unregister(logger, guestip)
        # Unregister the ESX host
        eu().esx_unsubscribe_all_host_in_samserv(logger, host_uuid, samhostip)
        eu().esx_stop_guest(logger, guest_name, destination_ip)
        logger.info(
            "=============== End of Running Test Case: %s ===============" %
            __name__[str.rindex(__name__, ".") + 1:])
        return eu().TEST_RESULT()
def tc_ID202507_ESX_verify_virtwho_interval(params):
	""" Execute virt-who in a registered host, verify virtwho_interval can work"""
	try:
		try:
			logger = params['logger']
			eu().RESET_RESULT()
			logger.info("=============== Begin of Running Test Case: %s ===============" % __name__[str.rindex(__name__, ".") + 1:])
			# config the virt-who config file
			cmd = "sed -i 's/#VIRTWHO_INTERVAL=0/VIRTWHO_INTERVAL=5/' /etc/sysconfig/virt-who"
			(ret, output) = eu().runcmd(logger, cmd, "changing interval time in virt-who config file")
			if ret == 0:
				logger.info("Succeeded to set VIRTWHO_INTERVAL=5.")
			else:
				logger.error("Failed to set VIRTWHO_INTERVAL=5.")
				eu().SET_RESULT(1)
			# restart virt-who service
			eu().vw_restart_virtwho(logger)
			# wait 30 seconds
			time.sleep(30)
			cmd = "nohup tail -f -n 0 /var/log/rhsm/rhsm.log > /tmp/tail.rhsm.log 2>&1 &"
			# (ret, output) = eu().runcmd(logger, cmd, "generate nohup.out file by tail -f")
			eu().runcmd_subprocess(logger, cmd, "got temp file /tmp/tail.rhsm.log")
			time.sleep(23)
			cmd = "killall -9 tail ; grep 'Sending update in hosts-to-guests mapping' /tmp/tail.rhsm.log | wc -l "
			(ret, output) = eu().runcmd(logger, cmd, "get log number added to rhsm.log")
			if ret == 0 and int(output) == 4:
				logger.info("Succeeded to check the log added.")
				eu().SET_RESULT(0)
			else:
				logger.error("Failed to check the log added.")
				eu().SET_RESULT(1)
		except Exception, e:
			logger.error("Test Failed due to error happened: " + str(e))
			logger.error(traceback.format_exc())
			eu().SET_RESULT(1)
	finally:
		cmd = "sed -i 's/VIRTWHO_INTERVAL=5/#VIRTWHO_INTERVAL=0/' /etc/sysconfig/virt-who"
		(ret, output) = eu().runcmd(logger, cmd, "restoring the interval time as default setting in virt-who config file")
		cmd = "rm /tmp/tail.rhsm.log"
		(ret, output) = eu().runcmd(logger, cmd, "remove /tmp/tail.rhsm.log file generated")
		logger.info("=============== End of Running Test Case: %s ===============" % __name__[str.rindex(__name__, ".") + 1:])
		return eu().TEST_RESULT()
Esempio n. 24
0
def tc_ID155142_ESX_validate_bonus_pool_creation(params):
    ''' support_for_unlimited_guest_entitlements '''
    try:
        try:
            logger = params['logger']
            eu().RESET_RESULT()
            logger.info(
                "=============== Begin of Running Test Case: %s ==============="
                % __name__[str.rindex(__name__, ".") + 1:])
            guest_name = "ESX_" + params['handleguest']
            samhostip = params['samhostip']
            destination_ip = ee.esx_host_ip
            host_uuid = eu().esx_get_host_uuid(logger, destination_ip)
            # Start a guest by start from host machine.
            eu().esx_start_guest(logger, guest_name)
            # Get guest IP
            guestip = None
            guestip = eu().esx_get_guest_ip(logger, guest_name, destination_ip)
            if guestip == None:
                logger.error("Faild to get guest ip.")
                eu().SET_RESULT(1)
            # Register guest to SAM
            if not eu().sub_isregistered(logger, guestip):
                eu().configure_host(logger, params.get("samhostname"),
                                    params.get("samhostip"), guestip)
                eu().sub_register(logger,
                                  eu().get_env(logger)["username"],
                                  eu().get_env(logger)["password"], guestip)

            # check only physical subscription in guest

            # subscribe esx host with limited bonus subscription
            eu().esx_subscribe_host_in_samserv(
                logger, host_uuid,
                eu().get_poolid_by_SKU(logger, ee.productid_guest), samhostip)

            # List available pools of guest, check related bonus pool generated.
            new_available_poollist = eu().sub_listavailpools(
                logger, ee.productid_guest, guestip)
            if new_available_poollist != None:
                bonus_pool_check = 1
                for item in range(0, len(new_available_poollist)):
                    if "Available" in new_available_poollist[item]:
                        SKU_Number = "Available"
                    else:
                        SKU_Number = "Quantity"
                    if new_available_poollist[item][
                            "SKU"] == ee.productid_guest and eu(
                            ).check_type_virtual(
                                new_available_poollist[item]
                            ) and new_available_poollist[item][
                                SKU_Number] == ee.guestlimit:
                        logger.info(
                            "Succeeded to list bonus pool of product %s" %
                            ee.productname_unlimited_guest)
                        bonus_pool_check = 0
                eu().SET_RESULT(bonus_pool_check)
            else:
                logger.error("Failed to get available pool list from guest.")
                eu().SET_RESULT(1)
        except Exception, e:
            logger.error("Test Failed due to error happened: " + str(e))
            logger.error(traceback.format_exc())
            eu().SET_RESULT(1)
    finally:
        if guestip != None:
            eu().sub_unregister(logger, guestip)
        # Unregister the ESX host
        eu().esx_unsubscribe_all_host_in_samserv(logger, host_uuid, samhostip)
        eu().esx_stop_guest(logger, guest_name, destination_ip)
        logger.info(
            "=============== End of Running Test Case: %s ===============" %
            __name__[str.rindex(__name__, ".") + 1:])
        return eu().TEST_RESULT()
def tc_ID202506_ESX_execute_virtwho_b(params):
    """Execute virt-who with backgroud mode in a registered host via CLI"""
    try:
        try:
            logger = params["logger"]
            eu().RESET_RESULT()
            logger.info(
                "=============== Begin of Running Test Case: %s ==============="
                % __name__[str.rindex(__name__, ".") + 1 :]
            )
            # (1)stop virt-who service
            eu().vw_stop_virtwho(logger)
            # (2)Execute virt-who in the background mode.
            cmd = "virt-who -b -d"
            # ret, output = eu().runcmd(logger, cmd, "execute virt-who with background mode")
            ret, output = eu().runcmd_subprocess(logger, cmd, "run virt-who -b -d command")
            if ret == 0:
                # check the status of virt-who
                cmd = "ps -ef | grep virt-who"
                ret, output = eu().runcmd(logger, cmd, "check the process of virt-who with background mode")
                if ret == 0 and "virt-who.py -b -d" in output:
                    logger.info("Succeeded to check virt-who process.")
                else:
                    logger.error("Failed to check virt-who process.")
                    eu().SET_RESULT(1)
                handleguest = "ESX_" + params["handleguest"]
                destination_ip = ee.esx_host_ip
                vCenter = params["vcentermachine_ip"]
                vCenter_user = params["vcentermachine_username"]
                vCenter_pass = params["vcentermachine_password"]
                # (1) start a guest
                eu().esx_start_guest(logger, handleguest)
                # check if the uuid is correctly monitored by virt-who.
                eu().esx_check_uuid(logger, handleguest, destination_ip)

                # (2)pause a guest
                eu().esx_pause_guest(logger, handleguest, destination_ip)
                # check if the uuid is correctly monitored by virt-who.
                eu().esx_check_uuid(logger, handleguest, destination_ip)

                # (3)resume a guest
                eu().esx_resume_guest(logger, handleguest, destination_ip)
                # check if the uuid is correctly monitored by virt-who.
                eu().esx_check_uuid(logger, handleguest, destination_ip)

                # (4)shutdown a guest
                eu().esx_stop_guest(logger, handleguest, destination_ip)
                # check if the uuid is correctly monitored by virt-who.
                eu().esx_check_uuid(logger, handleguest, destination_ip)

                # (5)delete a guest
                guestuuid = eu().esx_get_guest_uuid(logger, handleguest, destination_ip)
                # prepare test env: undefine the guest to handle
                eu().esx_remove_guest(logger, handleguest, destination_ip, vCenter, vCenter_user, vCenter_pass)
                # check if the uuid is correctly monitored by virt-who.
                eu().esx_check_uuid(logger, handleguest, destination_ip, guestuuid, uuidexists=False)

                # (6)add a guest.
                eu().esx_add_guest(logger, handleguest, destination_ip)
                # check if the uuid is correctly monitored by virt-who.
                eu().esx_check_uuid(logger, handleguest, destination_ip)

                eu().vw_stop_virtwho(logger)
                eu().SET_RESULT(0)
            else:
                logger.error("Failed to run virt-who -b -d.")
                eu().SET_RESULT(1)
        except Exception, e:
            logger.error("Test Failed due to error happened: " + str(e))
            logger.error(traceback.format_exc())
            eu().SET_RESULT(1)
    finally:
        logger.info(
            "=============== End of Running Test Case: %s ===============" % __name__[str.rindex(__name__, ".") + 1 :]
        )
        return eu().TEST_RESULT()
def tc_ID301083_ESX_Instance_one_instance_for_one_guest(params):
	''' tc_ID301083_ESX_Instance_one_instance_for_one_guest. '''
	try:
		try:
			logger = params['logger']
			eu().RESET_RESULT()
			logger.info("=============== Begin of Running Test Case: %s ===============" % __name__[str.rindex(__name__, ".") + 1:])
			guest_name = "ESX_" + params['handleguest']
			samhostip = params['samhostip']
			destination_ip = ee.esx_host_ip
			host_uuid = eu().esx_get_host_uuid(logger, destination_ip)
			# Start a guest by start from host machine.
			eu().esx_start_guest(logger, guest_name)
			# Get guest IP
			guestip = None
			guestip = eu().esx_get_guest_ip(logger, guest_name, destination_ip)
			if guestip == None:
				logger.error("Faild to get guest ip.")
				eu().SET_RESULT(1)
			# Register guest to SAM
			if not eu().sub_isregistered(logger, guestip):
				eu().configure_host(logger, params.get("samhostname"), params.get("samhostip"), guestip)
				eu().sub_register(logger, eu().get_env(logger)["username"], eu().get_env(logger)["password"], guestip)
			pool = eu().get_pool_by_SKU(logger, ee.instance_SKU, guestip)
			instance_quantity_before = eu().get_SKU_attribute(logger, ee.instance_SKU, "Available", guestip)
			# Validate one instance-based subscription can be used for one guest
			cmd = "subscription-manager subscribe --pool=%s --quantity=1" % pool
			ret, output = eu().runcmd(logger, cmd, "Check one instance-based subscription can be used for one guest", guestip)
			if ret == 0 and "Successfully" in output:
				logger.info("Succeeded to check one instance-based subscription can be used for one guest.")
			else:
				logger.error("Failed to check one instance-based subscription can be used for one guest.")
				eu().SET_RESULT(1)
			# eu().sub_listconsumed(logger, ee.instance_subscription_name)
			instance_quantity_after = eu().get_SKU_attribute(logger, ee.instance_SKU, "Available", guestip)
			if int(instance_quantity_before) - int(instance_quantity_after) == 1 :
				logger.info("Succeeded to check instance quantity - 1: instance_quantity_before=%s instance_quantity_after=%s" % (instance_quantity_before, instance_quantity_after))
				eu().SET_RESULT(0)
			else:
				logger.error("Failed to check instance quantity - 1: instance_quantity_before=%s instance_quantity_after=%s" % (instance_quantity_before, instance_quantity_after))
				eu().SET_RESULT(1)
		except Exception, e:
			logger.error("Test Failed due to error happened: " + str(e))
			logger.error(traceback.format_exc())
			eu().SET_RESULT(1)
	finally:
		if guestip != None:
			eu().sub_unregister(logger, guestip)
		# Unregister the ESX host 
		eu().esx_unsubscribe_all_host_in_samserv(logger, host_uuid, samhostip)
		eu().esx_stop_guest(logger, guest_name, destination_ip)
		logger.info("=============== End of Running Test Case: %s ===============" % __name__[str.rindex(__name__, ".") + 1:])
		return eu().TEST_RESULT()
def tc_ID155149_ESX_validate_complaince_after_starting_resuming(params):
	"""Execute virt-who with backgroud mode in a registered host via CLI"""
	try:
		try:
			logger = params['logger']
			eu().RESET_RESULT()
			logger.info("=============== Begin of Running Test Case: %s ===============" % __name__[str.rindex(__name__, ".") + 1:])
			guest_name = "ESX_" + params['handleguest']
			samhostip = params['samhostip']
			destination_ip = ee.esx_host_ip
			host_uuid = eu().esx_get_host_uuid(logger, destination_ip)
			# Start a guest by start from host machine.
			eu().esx_start_guest(logger, guest_name)
			# Get guest IP
			guestip = None
			guestip = eu().esx_get_guest_ip(logger, guest_name, destination_ip)
			if guestip == None:
				logger.error("Faild to get guest ip.")
				eu().SET_RESULT(1)
			# Register guest to SAM
			if not eu().sub_isregistered(logger, guestip):
				eu().configure_host(logger, params.get("samhostname"), params.get("samhostip"), guestip)
				eu().sub_register(logger, eu().get_env(logger)["username"], eu().get_env(logger)["password"], guestip)
			
			# subscribe esx host with limited bonus subscription
			eu().esx_subscribe_host_in_samserv(logger, host_uuid, eu().get_poolid_by_SKU(logger, ee.productid_guest) , samhostip)
			
			# Subscribe the registered guest to the corresponding bonus pool
			eu().sub_subscribe_to_bonus_pool(logger, ee.productid_guest, guestip)
			
			# List consumed subscriptions on guest
			eu().sub_listconsumed(logger, ee.productname_guest, guestip)
			
			# Pause a guest by suspend from host machine.
			eu().esx_pause_guest(logger, guest_name, destination_ip)
			# Resume a guest by resume from host machine.
			eu().esx_resume_guest(logger, guest_name, destination_ip)
			# Refresh the guest
			eu().sub_refresh(logger, guestip)
			# List consumed subscriptions on guest
			eu().sub_listconsumed(logger, ee.productname_guest, guestip)
			
			# Shutdown a guest by shutdown from host machine.
			eu().esx_stop_guest(logger, guest_name, destination_ip)
			# Start a guest by start from host machine.
			eu().esx_start_guest(logger, guest_name)
			# Refresh the guest
			eu().sub_refresh(logger, guestip)
			# List consumed subscriptions on guest
			eu().sub_listconsumed(logger, ee.productname_guest, guestip)
			eu().SET_RESULT(0)
		except Exception, e:
			logger.error("Test Failed due to error happened: " + str(e))
			logger.error(traceback.format_exc())
			eu().SET_RESULT(1)
	finally:
		if guestip != None:
			eu().sub_unregister(logger, guestip)
		# Unregister the ESX host 
		eu().esx_unsubscribe_all_host_in_samserv(logger, host_uuid, samhostip)
		eu().esx_stop_guest(logger, guest_name, destination_ip)
		logger.info("=============== End of Running Test Case: %s ===============" % __name__[str.rindex(__name__, ".") + 1:])
		return eu().TEST_RESULT()
Esempio n. 28
0
def tc_ID202507_ESX_verify_virtwho_interval(params):
    """ Execute virt-who in a registered host, verify virtwho_interval can work"""
    try:
        try:
            logger = params['logger']
            eu().RESET_RESULT()
            logger.info(
                "=============== Begin of Running Test Case: %s ==============="
                % __name__[str.rindex(__name__, ".") + 1:])
            # config the virt-who config file
            cmd = "sed -i 's/#VIRTWHO_INTERVAL=0/VIRTWHO_INTERVAL=5/' /etc/sysconfig/virt-who"
            (ret, output) = eu().runcmd(
                logger, cmd, "changing interval time in virt-who config file")
            if ret == 0:
                logger.info("Succeeded to set VIRTWHO_INTERVAL=5.")
            else:
                logger.error("Failed to set VIRTWHO_INTERVAL=5.")
                eu().SET_RESULT(1)
            # restart virt-who service
            eu().vw_restart_virtwho(logger)
            # wait 30 seconds
            time.sleep(30)
            cmd = "nohup tail -f -n 0 /var/log/rhsm/rhsm.log > /tmp/tail.rhsm.log 2>&1 &"
            # (ret, output) = eu().runcmd(logger, cmd, "generate nohup.out file by tail -f")
            eu().runcmd_subprocess(logger, cmd,
                                   "got temp file /tmp/tail.rhsm.log")
            time.sleep(23)
            cmd = "killall -9 tail ; grep 'Sending update in hosts-to-guests mapping' /tmp/tail.rhsm.log | wc -l "
            (ret, output) = eu().runcmd(logger, cmd,
                                        "get log number added to rhsm.log")
            if ret == 0 and int(output) == 4:
                logger.info("Succeeded to check the log added.")
                eu().SET_RESULT(0)
            else:
                logger.error("Failed to check the log added.")
                eu().SET_RESULT(1)
        except Exception, e:
            logger.error("Test Failed due to error happened: " + str(e))
            logger.error(traceback.format_exc())
            eu().SET_RESULT(1)
    finally:
        cmd = "sed -i 's/VIRTWHO_INTERVAL=5/#VIRTWHO_INTERVAL=0/' /etc/sysconfig/virt-who"
        (ret, output) = eu().runcmd(
            logger, cmd,
            "restoring the interval time as default setting in virt-who config file"
        )
        cmd = "rm /tmp/tail.rhsm.log"
        (ret,
         output) = eu().runcmd(logger, cmd,
                               "remove /tmp/tail.rhsm.log file generated")
        logger.info(
            "=============== End of Running Test Case: %s ===============" %
            __name__[str.rindex(__name__, ".") + 1:])
        return eu().TEST_RESULT()
def tc_ID155149_ESX_validate_complaince_after_starting_resuming(params):
    """Execute virt-who with backgroud mode in a registered host via CLI"""
    try:
        try:
            logger = params['logger']
            eu().RESET_RESULT()
            logger.info(
                "=============== Begin of Running Test Case: %s ==============="
                % __name__[str.rindex(__name__, ".") + 1:])
            guest_name = "ESX_" + params['handleguest']
            samhostip = params['samhostip']
            destination_ip = ee.esx_host_ip
            host_uuid = eu().esx_get_host_uuid(logger, destination_ip)
            # Start a guest by start from host machine.
            eu().esx_start_guest(logger, guest_name)
            # Get guest IP
            guestip = None
            guestip = eu().esx_get_guest_ip(logger, guest_name, destination_ip)
            if guestip == None:
                logger.error("Faild to get guest ip.")
                eu().SET_RESULT(1)
            # Register guest to SAM
            if not eu().sub_isregistered(logger, guestip):
                eu().configure_host(logger, params.get("samhostname"),
                                    params.get("samhostip"), guestip)
                eu().sub_register(logger,
                                  eu().get_env(logger)["username"],
                                  eu().get_env(logger)["password"], guestip)

            # subscribe esx host with limited bonus subscription
            eu().esx_subscribe_host_in_samserv(
                logger, host_uuid,
                eu().get_poolid_by_SKU(logger, ee.productid_guest), samhostip)

            # Subscribe the registered guest to the corresponding bonus pool
            eu().sub_subscribe_to_bonus_pool(logger, ee.productid_guest,
                                             guestip)

            # List consumed subscriptions on guest
            eu().sub_listconsumed(logger, ee.productname_guest, guestip)

            # Pause a guest by suspend from host machine.
            eu().esx_pause_guest(logger, guest_name, destination_ip)
            # Resume a guest by resume from host machine.
            eu().esx_resume_guest(logger, guest_name, destination_ip)
            # Refresh the guest
            eu().sub_refresh(logger, guestip)
            # List consumed subscriptions on guest
            eu().sub_listconsumed(logger, ee.productname_guest, guestip)

            # Shutdown a guest by shutdown from host machine.
            eu().esx_stop_guest(logger, guest_name, destination_ip)
            # Start a guest by start from host machine.
            eu().esx_start_guest(logger, guest_name)
            # Refresh the guest
            eu().sub_refresh(logger, guestip)
            # List consumed subscriptions on guest
            eu().sub_listconsumed(logger, ee.productname_guest, guestip)
            eu().SET_RESULT(0)
        except Exception, e:
            logger.error("Test Failed due to error happened: " + str(e))
            logger.error(traceback.format_exc())
            eu().SET_RESULT(1)
    finally:
        if guestip != None:
            eu().sub_unregister(logger, guestip)
        # Unregister the ESX host
        eu().esx_unsubscribe_all_host_in_samserv(logger, host_uuid, samhostip)
        eu().esx_stop_guest(logger, guest_name, destination_ip)
        logger.info(
            "=============== End of Running Test Case: %s ===============" %
            __name__[str.rindex(__name__, ".") + 1:])
        return eu().TEST_RESULT()
Esempio n. 30
0
def tc_ID202506_ESX_execute_virtwho_b(params):
    """Execute virt-who with backgroud mode in a registered host via CLI"""
    try:
        try:
            logger = params['logger']
            eu().RESET_RESULT()
            logger.info(
                "=============== Begin of Running Test Case: %s ==============="
                % __name__[str.rindex(__name__, ".") + 1:])
            # (1)stop virt-who service
            eu().vw_stop_virtwho(logger)
            # (2)Execute virt-who in the background mode.
            cmd = "virt-who -b -d"
            # ret, output = eu().runcmd(logger, cmd, "execute virt-who with background mode")
            ret, output = eu().runcmd_subprocess(logger, cmd,
                                                 "run virt-who -b -d command")
            if ret == 0:
                # check the status of virt-who
                cmd = "ps -ef | grep virt-who"
                ret, output = eu().runcmd(
                    logger, cmd,
                    "check the process of virt-who with background mode")
                if ret == 0 and "virt-who.py -b -d" in output:
                    logger.info("Succeeded to check virt-who process.")
                else:
                    logger.error("Failed to check virt-who process.")
                    eu().SET_RESULT(1)
                handleguest = "ESX_" + params["handleguest"]
                destination_ip = ee.esx_host_ip
                vCenter = params['vcentermachine_ip']
                vCenter_user = params['vcentermachine_username']
                vCenter_pass = params['vcentermachine_password']
                # (1) start a guest
                eu().esx_start_guest(logger, handleguest)
                # check if the uuid is correctly monitored by virt-who.
                eu().esx_check_uuid(logger, handleguest, destination_ip)

                # (2)pause a guest
                eu().esx_pause_guest(logger, handleguest, destination_ip)
                # check if the uuid is correctly monitored by virt-who.
                eu().esx_check_uuid(logger, handleguest, destination_ip)

                # (3)resume a guest
                eu().esx_resume_guest(logger, handleguest, destination_ip)
                # check if the uuid is correctly monitored by virt-who.
                eu().esx_check_uuid(logger, handleguest, destination_ip)

                # (4)shutdown a guest
                eu().esx_stop_guest(logger, handleguest, destination_ip)
                # check if the uuid is correctly monitored by virt-who.
                eu().esx_check_uuid(logger, handleguest, destination_ip)

                # (5)delete a guest
                guestuuid = eu().esx_get_guest_uuid(logger, handleguest,
                                                    destination_ip)
                # prepare test env: undefine the guest to handle
                eu().esx_remove_guest(logger, handleguest, destination_ip,
                                      vCenter, vCenter_user, vCenter_pass)
                # check if the uuid is correctly monitored by virt-who.
                eu().esx_check_uuid(logger,
                                    handleguest,
                                    destination_ip,
                                    guestuuid,
                                    uuidexists=False)

                # (6)add a guest.
                eu().esx_add_guest(logger, handleguest, destination_ip)
                # check if the uuid is correctly monitored by virt-who.
                eu().esx_check_uuid(logger, handleguest, destination_ip)

                eu().vw_stop_virtwho(logger)
                eu().SET_RESULT(0)
            else:
                logger.error("Failed to run virt-who -b -d.")
                eu().SET_RESULT(1)
        except Exception, e:
            logger.error("Test Failed due to error happened: " + str(e))
            logger.error(traceback.format_exc())
            eu().SET_RESULT(1)
    finally:
        logger.info(
            "=============== End of Running Test Case: %s ===============" %
            __name__[str.rindex(__name__, ".") + 1:])
        return eu().TEST_RESULT()
def tc_ID155146_ESX_validate_compliance_status_when_unregister_host(params):
	''' ESX_validate_compliance_status_when_unregister_host '''
	try:
		try:
			logger = params['logger']
			eu().RESET_RESULT()
			logger.info("=============== Begin of Running Test Case: %s ===============" % __name__[str.rindex(__name__, ".") + 1:])
			guest_name = "ESX_" + params['handleguest']
			samhostip = params['samhostip']
			destination_ip = ee.esx_host_ip
			host_uuid = eu().esx_get_host_uuid(logger, destination_ip)
			# Start a guest by start from host machine.
			eu().esx_start_guest(logger, guest_name)
			# Get guest IP
			guestip = None
			guestip = eu().esx_get_guest_ip(logger, guest_name, destination_ip)
			if guestip == None:
				logger.error("Faild to get guest ip.")
				eu().SET_RESULT(1)
			# Register guest to SAM
			if not eu().sub_isregistered(logger, guestip):
				eu().configure_host(logger, params.get("samhostname"), params.get("samhostip"), guestip)
				eu().sub_register(logger, eu().get_env(logger)["username"], eu().get_env(logger)["password"], guestip)
			
			# check only physical subscription in guest
			
			# subscribe esx host with limited bonus subscription
			eu().esx_subscribe_host_in_samserv(logger, host_uuid, eu().get_poolid_by_SKU(logger, ee.productid_guest) , samhostip)
			
			# Subscribe the registered guest to the corresponding bonus pool
			eu().sub_subscribe_to_bonus_pool(logger, ee.productid_guest, guestip)
			
			# List consumed subscriptions on guest
			eu().sub_listconsumed(logger, ee.productname_guest, guestip)
			
			# Unregister the ESX host 
			eu().esx_unsubscribe_all_host_in_samserv(logger, host_uuid, samhostip)
			
			# Refresh the guest
			eu().sub_refresh(logger, guestip)
			# List available subscriptions on guest
			new_available_poollist = eu().sub_listavailpools(logger, ee.productid_guest, guestip)
			if new_available_poollist != None:
				for item in range(0, len(new_available_poollist)):
					if ee.productid_guest in new_available_poollist[item] and eu().check_type_virtual(new_available_poollist[item]):
						logger.info("listed bonus pool of product %s, but is shouldn't") % ee.productname_guest
						eu().SET_RESULT(1)
					else:
						logger.info("no bonus pool been list") 
			else:
				logger.error("Failed to get available pool list from guest.")
				eu().SET_RESULT(1)
			# List consumed subscriptions on guest
			eu().sub_listconsumed(logger, ee.productname_guest, targetmachine_ip=guestip, productexists=False)
			eu().SET_RESULT(0)
		except Exception, e:
			logger.error("Test Failed due to error happened: " + str(e))
			logger.error(traceback.format_exc())
			eu().SET_RESULT(1)
	finally:
		if guestip != None:
			eu().sub_unregister(logger, guestip)
		# re-register the host and then restart virt-who
		if not eu().sub_isregistered(logger):
			eu().configure_host(logger, params.get("samhostname"), params.get("samhostip"))
			eu().sub_register(logger, eu().get_env(logger)["username"], eu().get_env(logger)["password"])
		eu().vw_restart_virtwho(logger)
		eu().esx_stop_guest(logger, guest_name, destination_ip)
		logger.info("=============== End of Running Test Case: %s ===============" % __name__[str.rindex(__name__, ".") + 1:])
		return eu().TEST_RESULT()
Esempio n. 32
0
def tc_ID289139_ESX_Datacenter_subpool_quantity_unlimited(params):
	''' tc_ID289139_ESX_Datacenter_subpool_quantity_unlimited. '''
	try:
		try:
			logger = params['logger']
			eu().RESET_RESULT()
			logger.info("=============== Begin of Running Test Case: %s ===============" % __name__[str.rindex(__name__, ".") + 1:])
			guest_name = "ESX_" + params['handleguest']
			samhostip = params['samhostip']
			destination_ip = ee.esx_host_ip
			host_uuid = eu().esx_get_host_uuid(logger, destination_ip)
			# Start a guest by start from host machine.
			eu().esx_start_guest(logger, guest_name)
			# Get guest IP
			guestip = None
			guestip = eu().esx_get_guest_ip(logger, guest_name, destination_ip)
			if guestip == None:
				logger.error("Faild to get guest ip.")
				eu().SET_RESULT(1)
			# Register guest to SAM
			if not eu().sub_isregistered(logger, guestip):
				eu().configure_host(logger, params.get("samhostname"), params.get("samhostip"), guestip)
				eu().sub_register(logger, eu().get_env(logger)["username"], eu().get_env(logger)["password"], guestip)
			# check only physical subscription in guest # Check bonus pool not generated yet
			eu().check_datacenter_bonus_existance(logger, ee.data_center_subscription_name, guestip, False)
			# Subscribe esx host to a data center SKU
			eu().esx_subscribe_host_in_samserv(logger, host_uuid, eu().get_poolid_by_SKU(logger, ee.data_center_SKU) , samhostip)
			# Check bonus pool generated
			eu().check_datacenter_bonus_existance(logger, ee.data_center_subscription_name, guestip)
			# Check subpool quantity is unlimited
			eu().check_bonus_attribute(logger, ee.data_center_subscription_name, "Available", "Unlimited", guestip)
			eu().SET_RESULT(0)
		except Exception, e:
			logger.error("Test Failed due to error happened: " + str(e))
			logger.error(traceback.format_exc())
			eu().SET_RESULT(1)
	finally:
		if guestip != None:
			eu().sub_unregister(logger, guestip)
		# Unregister the ESX host 
		eu().esx_unsubscribe_all_host_in_samserv(logger, host_uuid, samhostip)
		eu().esx_stop_guest(logger, guest_name, destination_ip)
		logger.info("=============== End of Running Test Case: %s ===============" % __name__[str.rindex(__name__, ".") + 1:])
		return eu().TEST_RESULT()
Esempio n. 33
0
def tc_ID155120_ESX_check_guest_consumer_uuid_on_server(params):
    ''' Execute virt-who in a registered host to Check UUIDs of running guests '''
    try:
        try:
            logger = params['logger']
            eu().RESET_RESULT()
            logger.info(
                "=============== Begin of Running Test Case: %s ==============="
                % __name__[str.rindex(__name__, ".") + 1:])
            guest_name = "ESX_" + params['handleguest']
            destination_ip = ee.esx_host_ip
            # Start a guest by start from host machine.
            eu().esx_start_guest(logger, guest_name)
            # Get guest IP
            guestip = None
            guestip = eu().esx_get_guest_ip(logger, guest_name, destination_ip)
            if guestip == None:
                logger.error("Faild to get guest ip.")
                eu().SET_RESULT(1)
            # Register guest to SAM
            if not eu().sub_isregistered(logger, guestip):
                eu().configure_host(logger, params.get("samhostname"),
                                    params.get("samhostip"), guestip)
                eu().sub_register(logger,
                                  eu().get_env(logger)["username"],
                                  eu().get_env(logger)["password"], guestip)
            # Get uuid of host and guest consumer
            cmd = "grep 'Sending update in hosts-to-guests mapping' /var/log/rhsm/rhsm.log | tail -1"
            ret, output = eu().runcmd(logger, cmd, "get host consumer uuid")
            hostuuid = output.split("{")[1].split(":")[0].strip()
            cmd = "subscription-manager identity | grep identity"
            ret, output = eu().runcmd(
                logger, cmd, "get guest subscription-manager identity",
                guestip)
            guestuuid = output.split(':')[1].strip()
            # Check whether guest is included in host info
            samhostip = params["samhostip"]
            cmd = "curl -u admin:admin -k https://%s/sam/api/consumers/%s" % (
                samhostip, hostuuid)
            ret, output = eu().runcmd(
                logger, cmd, "Check whether guest is included in host info")
            if ret == 0 and guestuuid in output:
                logger.info("Succeeded to check guest in host info.")
                eu().SET_RESULT(0)
            else:
                logger.error("Failed to check guest in host info.")
                eu().SET_RESULT(1)
        except Exception, e:
            logger.error("Test Failed due to error happened: " + str(e))
            logger.error(traceback.format_exc())
            eu().SET_RESULT(1)
    finally:
        if guestip != None:
            eu().sub_unregister(logger, guestip)
        eu().esx_stop_guest(logger, guest_name, destination_ip)
        logger.info(
            "=============== End of Running Test Case: %s ===============" %
            __name__[str.rindex(__name__, ".") + 1:])
        return eu().TEST_RESULT()
def tc_ID289221_ESX_Datacenter_guest_revoke_when_unregister_host(params):
	''' tc_ID289221_ESX_Datacenter_guest_revoke_when_unregister_host '''
	try:
		try:
			logger = params['logger']
			eu().RESET_RESULT()
			logger.info("=============== Begin of Running Test Case: %s ===============" % __name__[str.rindex(__name__, ".") + 1:])
			guest_name = "ESX_" + params['handleguest']
			samhostip = params['samhostip']
			destination_ip = ee.esx_host_ip
			host_uuid = eu().esx_get_host_uuid(logger, destination_ip)
			# Start a guest by start from host machine.
			eu().esx_start_guest(logger, guest_name)
			# Get guest IP
			guestip = None
			guestip = eu().esx_get_guest_ip(logger, guest_name, destination_ip)
			if guestip == None:
				logger.error("Faild to get guest ip.")
				eu().SET_RESULT(1)
			# Register guest to SAM
			if not eu().sub_isregistered(logger, guestip):
				eu().configure_host(logger, params.get("samhostname"), params.get("samhostip"), guestip)
				eu().sub_register(logger, eu().get_env(logger)["username"], eu().get_env(logger)["password"], guestip)
			# Subscribe esx host to a data center SKU
			eu().esx_subscribe_host_in_samserv(logger, host_uuid, eu().get_poolid_by_SKU(logger, ee.data_center_SKU) , samhostip)
			# Subscribe the registered guest to the corresponding bonus pool
			eu().subscribe_datacenter_bonus_pool(logger, ee.data_center_subscription_name, guestip)
			# Check subpool are consumed
			eu().sub_listconsumed(logger, ee.data_center_subscription_name, guestip)
			# Unregister the ESX host 
			eu().esx_unsubscribe_all_host_in_samserv(logger, host_uuid, samhostip)
			# Refresh the guest
			eu().sub_refresh(logger, guestip)
			# Check list subscriptions revoked
			eu().check_datacenter_bonus_existance(logger, ee.data_center_subscription_name, guestip, False)
			# check consumed subscriptions revoked
			eu().sub_listconsumed(logger, ee.data_center_subscription_name, targetmachine_ip=guestip, productexists=False)
			# Check installed product status:Not Subscribed in guest
			cmd = "subscription-manager list --installed | grep 'Status:'"
			ret, output = eu().runcmd(logger, cmd, "Check installed product status", guestip)
			if ret == 0 and output.split(":")[1].strip() == "Not Subscribed":
				logger.info("Succeeded to check installed product status is Not Subscribed.")
			else:
				logger.error("Failed to check installed product status is Not Subscribed.")
				eu().SET_RESULT(1)
			eu().SET_RESULT(0)
		except Exception, e:
			logger.error("Test Failed due to error happened: " + str(e))
			logger.error(traceback.format_exc())
			eu().SET_RESULT(1)
	finally:
		if guestip != None:
			eu().sub_unregister(logger, guestip)
		# Unregister the ESX host 
		eu().esx_unsubscribe_all_host_in_samserv(logger, host_uuid, samhostip)
		eu().esx_stop_guest(logger, guest_name, destination_ip)
		logger.info("=============== End of Running Test Case: %s ===============" % __name__[str.rindex(__name__, ".") + 1:])
		return eu().TEST_RESULT()
def tc_ID308833_ESX_add_large_number_guests(params):
    """ Execute virt-who with large number of guests in host """
    try:
        try:
            logger = params['logger']
            eu().RESET_RESULT()
            logger.info(
                "=============== Begin of Running Test Case: %s ==============="
                % __name__[str.rindex(__name__, ".") + 1:])
            guest_name = "esx_auto_guest"
            vCenter = params['vcentermachine_ip']
            vCenter_user = params['vcentermachine_username']
            vCenter_pass = params['vcentermachine_password']
            destination_ip = ee.esx_host_ip
            guest_total = 100
            guest_uuid_list = []
            # add 100 guests in vCenter
            for i in range(0, guest_total):
                eu().esx_create_dummy_guest(logger, guest_name + "_" + str(i),
                                            destination_ip)
                guest_uuid = eu().esx_get_guest_uuid(logger,
                                                     guest_name + "_" + str(i),
                                                     destination_ip)
                guest_uuid_list.append(guest_uuid)
                # if not eu().esx_check_uuid_exist_in_rhsm_log(logger, guestuuid, destination_ip):
                # 	eu().SET_RESULT(1)
            # check all guest uuid is in rhsm.log
            guest_uuid_list_in_log = eu().get_uuid_list_in_rhsm_log(logger)
            for i in range(0, guest_total):
                if not guest_uuid_list[i] in guest_uuid_list_in_log:
                    eu().SET_RESULT(1)
                else:
                    logger.info("UUID of guest:%s exist in rhsm.log" %
                                (guest_name + "_" + str(i)))
            # remove the 100 guests added in vCenter
            for i in range(0, guest_total):
                # guestuuid = eu().esx_get_guest_uuid(logger, guest_name + "_" + str(i), destination_ip)
                eu().esx_remove_guest(logger, guest_name + "_" + str(i),
                                      destination_ip, vCenter, vCenter_user,
                                      vCenter_pass)
                eu().esx_destroy_guest(logger, guest_name + "_" + str(i),
                                       destination_ip)
                # if eu().esx_check_uuid_exist_in_rhsm_log(logger, guestuuid, destination_ip):
                # 	eu().SET_RESULT(1)
            eu().SET_RESULT(0)
        except Exception, e:
            logger.error("Test Failed due to error happened: " + str(e))
            logger.error(traceback.format_exc())
            eu().SET_RESULT(1)
    finally:
        logger.info(
            "=============== End of Running Test Case: %s ===============" %
            __name__[str.rindex(__name__, ".") + 1:])
        return eu().TEST_RESULT()