def check(self): super(zstack_kvm_vm_stopped_checker, self).check() return self.judge(self.exp_result) vm = self.test_obj.vm host = test_lib.lib_get_vm_host(vm) test_lib.lib_install_testagent_to_host(host) test_lib.lib_set_vm_host_l2_ip(vm) cmd = vm_plugin.VmStatusCmd() cmd.vm_uuids = [vm.uuid] test_util.test_logger( 'Check [vm:] %s stopped status on host [name:] %s [uuid:] %s.' % (vm.uuid, host.name, host.uuid)) rspstr = http.json_dump_post( testagent.build_http_path(host.managementIp, vm_plugin.VM_STATUS), cmd) rsp = jsonobject.loads(rspstr) check_result = rsp.vm_status[vm.uuid].strip() if check_result == vm_plugin.VmAgent.VM_STATUS_STOPPED: test_util.test_logger( 'Check result: [vm:] %s is STOPPED on [host:] %s .' % (vm.uuid, host.name)) return self.judge(True) else: test_util.test_logger( 'Check result: [vm:] %s is NOT STOPPED on [host:] %s . ; Expected status: %s ; Actual status: %s' % (vm.uuid, host.name, vm_plugin.VmAgent.VM_STATUS_STOPPED, check_result)) return self.judge(False)
def setup_fake_ceph(host, total, avail): test_lib.lib_install_testagent_to_host(host) rsp = test_lib.lib_execute_sh_cmd_by_agent(host.managementIp, "ls /usr/bin/ceph.real") if rsp.return_code != 0: rsp = test_lib.lib_execute_sh_cmd_by_agent( host.managementIp, 'cp /usr/bin/ceph /usr/bin/ceph.real') used = int(total) - int(avail) rsp = test_lib.lib_execute_sh_cmd_by_agent( host.managementIp, '''echo '[ "$1 $2 $3" != "df -f json" ] && ceph.real "$@"' >/usr/bin/ceph.fake''' ) rsp = test_lib.lib_execute_sh_cmd_by_agent( host.managementIp, '''echo '[ "$1 $2 $3" != "df -f json" ] && exit' >>/usr/bin/ceph.fake''' ) rsp = test_lib.lib_execute_sh_cmd_by_agent( host.managementIp, "/usr/bin/ceph.real df -f json") df = jsonobject.loads(rsp.stdout) df.stats.total_bytes = total df.stats.total_avail_bytes = avail rsp = test_lib.lib_execute_sh_cmd_by_agent( host.managementIp, '''echo "echo ''" >>/usr/bin/ceph.fake''') string = jsonobject.dumps(df).replace('"', '\\"') rsp = test_lib.lib_execute_sh_cmd_by_agent( host.managementIp, '''echo "echo '%s'" >>/usr/bin/ceph.fake''' % (string)) rsp = test_lib.lib_execute_sh_cmd_by_agent( host.managementIp, 'rm -rf /usr/bin/ceph; ln -s /usr/bin/ceph.fake /usr/bin/ceph; chmod a+x /usr/bin/ceph' )
def check(self): super(zstack_kvm_vm_network_checker, self).check() vm = self.test_obj.vm host = test_lib.lib_get_vm_host(vm) test_lib.lib_install_testagent_to_host(host) test_lib.lib_set_vm_host_l2_ip(vm) vr_vms = test_lib.lib_find_vr_by_vm(vm) if not vr_vms: test_util.test_warn('No Virtual Router was found for VM: %s. Skip testing.' % vm.uuid) return self.judge(self.exp_result) for vr_vm in vr_vms: nic = test_lib.lib_get_vm_nic_by_vr(vm, vr_vm) if not 'DHCP' in test_lib.lib_get_l3_service_type(nic.l3NetworkUuid): test_util.test_logger("Skip [VR:] %s, since it doesn't provide DHCP service" % vr_vm.uuid) continue guest_ip = nic.ip command = 'ping -c 5 -W 5 %s >/tmp/ping_result 2>&1; ret=$?; cat /tmp/ping_result; exit $ret' % guest_ip if not test_lib.lib_execute_sh_cmd_by_agent_with_retry(host.managementIp, command, self.exp_result): test_util.test_logger('Checker result: FAIL to ping [target:] %s [ip:] %s from [host:] %s' % (vm.uuid, guest_ip, host.uuid)) if self.exp_result == True: test_util.test_logger("network connection result is not expected pass, will print VR's network configuration:") test_lib.lib_print_vr_network_conf(vr_vm) return self.judge(False) else: test_util.test_logger('Checker result: SUCCESSFULLY ping [target:] %s [ip:] %s from [host:] %s' % (vm.uuid, guest_ip, host.uuid)) test_util.test_logger("Checker result: ping target [vm:] %s from [host:] %s SUCCESS" % (vm.uuid, host.uuid)) return self.judge(True)
def check_iscsi(self, volume, volume_installPath, ps): host = test_lib.lib_find_host_by_iscsi_ps(ps) if not host: test_util.test_logger('Check result: can not find Host, who owns iscsi filesystem backend. [volume uuid: ] %s. Can not check volume file existence' % volume.uuid) return self.judge(False) test_lib.lib_install_testagent_to_host(host) volume_file_path = volume_installPath.split(';')[1].split('file://')[1] self.check_file_exist(volume, volume_file_path, host)
def check_iscsi(self, volume, volume_installPath, ps): host = test_lib.lib_find_host_by_iscsi_ps(ps) if not host: test_util.test_logger('Check result: can not find Host, who owns iscsi filesystem backend. [volume uuid: ] %s. Can not check volume file existence' % volume.uuid) return self.judge(False) test_lib.lib_install_testagent_to_host(host) volume_file_path = volume_installPath.split(';')[1].split('file://')[1] self.check_file_exist(volume, volume_file_path, host)
def check(self): super(zstack_kvm_vm_dns_checker, self).check() vm = self.test_obj.vm test_lib.lib_install_testagent_to_vr(vm) host = test_lib.lib_get_vm_host(vm) test_lib.lib_install_testagent_to_host(host) test_lib.lib_set_vm_host_l2_ip(vm) default_l3_uuid = vm.defaultL3NetworkUuid vr = test_lib.lib_find_vr_by_pri_l3(default_l3_uuid) nic = test_lib.lib_get_vm_nic_by_vr(vm, vr) test_util.test_logger("Begin to check [vm:] %s DNS setting" % vm.uuid) if not 'DNS' in test_lib.lib_get_l3_service_type(nic.l3NetworkUuid): test_util.test_logger( 'Checker result: SKIP DNS checker, since VM [VR:] %s does not provide DNS service. ' % vr.uuid) return self.judge(self.exp_result) command = 'cat /etc/resolv.conf' cmd_result = test_lib.lib_ssh_vm_cmd_by_agent_with_retry( host.managementIp, nic.ip, test_lib.lib_get_vm_username(vm), test_lib.lib_get_vm_password(vm), command, self.exp_result) if not cmd_result: test_util.test_logger( 'Checker result: FAIL to execute test ssh command in test [vm:] %s throught [host:] %s.' % (vm.uuid, host.name)) return self.judge(False) vr_guest_ip = test_lib.lib_find_vr_private_ip(vr) if isinstance(cmd_result, str) and vr_guest_ip in cmd_result: test_util.test_logger( 'Checker result: VR [IP:] %s is SUCCESSFULLY set in guest [vm:] %s /etc/resolv.conf. ' % (vr_guest_ip, vm.uuid)) else: test_util.test_logger( 'Checker result: VR [IP:] %s is NOT set in guest [vm:] %s /etc/resolv.conf' % (vr_guest_ip, vm.uuid)) return self.judge(False) l3_inv = test_lib.lib_get_l3_by_uuid(default_l3_uuid) if l3_inv.domainName: if not l3_inv.domainName in cmd_result: test_util.test_logger( 'Checker result: L3: %s, Domain Name: %s is NOT set in guest [vm:] %s /etc/resolv.conf' % (l3_inv.uuid, l3_inv.domainName, vm.uuid)) return self.judge(False) else: test_util.test_logger( 'Checker result: L3: %s, Domain Name: %s is set in guest [vm:] %s /etc/resolv.conf' % (l3_inv.uuid, l3_inv.domainName, vm.uuid)) return self.judge(True)
def check(self): super(zstack_kvm_vm_default_l3_checker, self).check() vm = self.test_obj.vm default_l3_uuid \ = self.test_obj.get_creation_option().get_default_l3_uuid() if vm.defaultL3NetworkUuid != default_l3_uuid: test_util.test_logger( 'Checker Fail: VM: %s setting default l3 uuid: %s is different with the one in database: %s' % (vm.uuid, default_l3_uuid, vm.defaultL3NetworkUuid)) return self.judge(False) for vm_nic in vm.vmNics: if vm_nic.l3NetworkUuid == default_l3_uuid: gateway = vm_nic.gateway break else: test_util.test_logger( 'Checker Fail: Did not find default l3: %s is belonged to any VM: %s vmNics: %s' % (default_l3_uuid, vm.uuid, vm.vmNics)) return self.judge(False) test_lib.lib_install_testagent_to_vr(vm) host = test_lib.lib_get_vm_host(vm) test_lib.lib_install_testagent_to_host(host) test_lib.lib_set_vm_host_l2_ip(vm) nic = test_lib.lib_get_vm_nic_by_l3(vm, default_l3_uuid) command = 'route|grep default' cmd_result = test_lib.lib_ssh_vm_cmd_by_agent_with_retry( host.managementIp, nic.ip, test_lib.lib_get_vm_username(vm), test_lib.lib_get_vm_password(vm), command, self.exp_result) if not cmd_result: test_util.test_logger( 'Checker result: FAIL to execute test ssh command in test [vm:] %s throught [host:] %s.' % (vm.uuid, host.name)) return self.judge(False) if isinstance(cmd_result, str) and gateway in cmd_result: test_util.test_logger( 'Checker result: gateway %s is SUCCESSFULLY set in guest [vm:] %s default router. ' % (gateway, vm.uuid)) return self.judge(True) else: test_util.test_logger( 'Checker result: gateway: %s is NOT set in guest [vm:] %s default router. The default route is : %s' % (gateway, vm.uuid, cmd_result)) return self.judge(False)
def check(self): super(zstack_kvm_vm_ssh_no_vr_checker, self).check() vm = self.test_obj.vm host = test_lib.lib_get_vm_host(vm) test_lib.lib_install_testagent_to_host(host) test_lib.lib_set_vm_host_l2_ip(vm) nic = vm.vmNics[0] ip = nic.ip shell_command = 'exit 0' vm_cmd_result = test_lib.lib_ssh_vm_cmd_by_agent_with_retry(host.managementIp, ip, test_lib.lib_get_vm_username(vm), test_lib.lib_get_vm_password(vm), shell_command, self.exp_result) if not vm_cmd_result: test_util.test_logger('Checker result: FAIL to execute test ssh command in test [vm:] %s throught [host:] %s.' % (vm.uuid, host.name)) return self.judge(False) test_util.test_logger('Checker result: Success to execute test ssh command in test [vm:] %s throught [host:] %s.' % (vm.uuid, host.name)) return self.judge(True)
def check(self): super(zstack_kvm_vm_ssh_no_vr_checker, self).check() vm = self.test_obj.vm host = test_lib.lib_get_vm_host(vm) test_lib.lib_install_testagent_to_host(host) test_lib.lib_set_vm_host_l2_ip(vm) nic = vm.vmNics[0] ip = nic.ip shell_command = 'exit 0' vm_cmd_result = test_lib.lib_ssh_vm_cmd_by_agent_with_retry(host.managementIp, ip, test_lib.lib_get_vm_username(vm), test_lib.lib_get_vm_password(vm), shell_command, self.exp_result) if not vm_cmd_result: test_util.test_logger('Checker result: FAIL to execute test ssh command in test [vm:] %s throught [host:] %s.' % (vm.uuid, host.name)) return self.judge(False) test_util.test_logger('Checker result: Success to execute test ssh command in test [vm:] %s throught [host:] %s.' % (vm.uuid, host.name)) return self.judge(True)
def setup_fake_ceph(host, total, avail): test_lib.lib_install_testagent_to_host(host) rsp = test_lib.lib_execute_sh_cmd_by_agent(host.managementIp, "ls /usr/bin/ceph.real") if rsp.return_code != 0: rsp = test_lib.lib_execute_sh_cmd_by_agent(host.managementIp, 'cp /usr/bin/ceph /usr/bin/ceph.real') used = int(total) - int(avail) rsp = test_lib.lib_execute_sh_cmd_by_agent(host.managementIp, '''echo '[ "$1 $2 $3" != "df -f json" ] && ceph.real "$@"' >/usr/bin/ceph.fake''') rsp = test_lib.lib_execute_sh_cmd_by_agent(host.managementIp, '''echo '[ "$1 $2 $3" != "df -f json" ] && exit' >>/usr/bin/ceph.fake''') rsp = test_lib.lib_execute_sh_cmd_by_agent(host.managementIp, "/usr/bin/ceph.real df -f json") df = jsonobject.loads(rsp.stdout) df.stats.total_bytes = total df.stats.total_avail_bytes = avail rsp = test_lib.lib_execute_sh_cmd_by_agent(host.managementIp, '''echo "echo ''" >>/usr/bin/ceph.fake''') string = jsonobject.dumps(df).replace('"', '\\"') rsp = test_lib.lib_execute_sh_cmd_by_agent(host.managementIp, '''echo "echo '%s'" >>/usr/bin/ceph.fake''' % (string)) rsp = test_lib.lib_execute_sh_cmd_by_agent(host.managementIp, 'rm -rf /usr/bin/ceph; ln -s /usr/bin/ceph.fake /usr/bin/ceph; chmod a+x /usr/bin/ceph')
def check(self): super(zstack_kvm_vm_destroyed_checker, self).check() vm = self.test_obj.vm host = test_lib.lib_get_vm_host(vm) test_lib.lib_install_testagent_to_host(host) test_lib.lib_set_vm_host_l2_ip(vm) cmd = vm_plugin.VmStatusCmd() cmd.vm_uuids = [vm.uuid] test_util.test_logger('Check [vm:] %s status on host [name:] %s [uuid:] %s.' % (vm.uuid, host.name, host.uuid)) rspstr = http.json_dump_post(testagent.build_http_path(host.managementIp, vm_plugin.VM_STATUS), cmd) rsp = jsonobject.loads(rspstr) check_result = rsp.vm_status[vm.uuid].strip() if check_result != vm_plugin.VmAgent.VM_STATUS_RUNNING and check_result != vm_plugin.VmAgent.VM_STATUS_STOPPED: test_util.test_logger('Check result: [vm:] %s is DESTROYED on [host:] %s .' % (vm.uuid, host.name)) return self.judge(True) else: test_util.test_logger('Check result: [vm:] %s is NOT DESTROYED on [host:] %s . vm status is: %s' % (vm.uuid, host.name, check_result)) return self.judge(False)
def check(self): super(zstack_kvm_vm_dns_checker, self).check() vm = self.test_obj.vm test_lib.lib_install_testagent_to_vr(vm) host = test_lib.lib_get_vm_host(vm) test_lib.lib_install_testagent_to_host(host) test_lib.lib_set_vm_host_l2_ip(vm) default_l3_uuid = vm.defaultL3NetworkUuid vr = test_lib.lib_find_vr_by_pri_l3(default_l3_uuid) nic = test_lib.lib_get_vm_nic_by_vr(vm, vr) test_util.test_logger("Begin to check [vm:] %s DNS setting" % vm.uuid) if not 'DNS' in test_lib.lib_get_l3_service_type(nic.l3NetworkUuid): test_util.test_logger('Checker result: SKIP DNS checker, since VM [VR:] %s does not provide DNS service. ' % vr.uuid) return self.judge(self.exp_result) command = 'cat /etc/resolv.conf' cmd_result = test_lib.lib_ssh_vm_cmd_by_agent_with_retry(host.managementIp, nic.ip, test_lib.lib_get_vm_username(vm), test_lib.lib_get_vm_password(vm), command, self.exp_result) if not cmd_result: test_util.test_logger('Checker result: FAIL to execute test ssh command in test [vm:] %s throught [host:] %s.' % (vm.uuid, host.name)) return self.judge(False) vr_guest_ip = test_lib.lib_find_vr_private_ip(vr) if isinstance(cmd_result, str) and vr_guest_ip in cmd_result: test_util.test_logger('Checker result: VR [IP:] %s is SUCCESSFULLY set in guest [vm:] %s /etc/resolv.conf. ' % (vr_guest_ip, vm.uuid)) else: test_util.test_logger('Checker result: VR [IP:] %s is NOT set in guest [vm:] %s /etc/resolv.conf' % (vr_guest_ip, vm.uuid)) return self.judge(False) l3_inv = test_lib.lib_get_l3_by_uuid(default_l3_uuid) if l3_inv.domainName: if not l3_inv.domainName in cmd_result: test_util.test_logger('Checker result: L3: %s, Domain Name: %s is NOT set in guest [vm:] %s /etc/resolv.conf' % (l3_inv.uuid, l3_inv.domainName, vm.uuid)) return self.judge(False) else: test_util.test_logger('Checker result: L3: %s, Domain Name: %s is set in guest [vm:] %s /etc/resolv.conf' % (l3_inv.uuid, l3_inv.domainName, vm.uuid)) return self.judge(True)
def check(self): super(zstack_kvm_vm_default_l3_checker, self).check() vm = self.test_obj.vm default_l3_uuid \ = self.test_obj.get_creation_option().get_default_l3_uuid() if vm.defaultL3NetworkUuid != default_l3_uuid: test_util.test_logger('Checker Fail: VM: %s setting default l3 uuid: %s is different with the one in database: %s' % (vm.uuid, default_l3_uuid, vm.defaultL3NetworkUuid)) return self.judge(False) for vm_nic in vm.vmNics: if vm_nic.l3NetworkUuid == default_l3_uuid: gateway = vm_nic.gateway break else: test_util.test_logger('Checker Fail: Did not find default l3: %s is belonged to any VM: %s vmNics: %s' % (default_l3_uuid, vm.uuid, vm.vmNics)) return self.judge(False) test_lib.lib_install_testagent_to_vr(vm) host = test_lib.lib_get_vm_host(vm) test_lib.lib_install_testagent_to_host(host) test_lib.lib_set_vm_host_l2_ip(vm) nic = test_lib.lib_get_vm_nic_by_l3(vm, default_l3_uuid) command = 'route -n |grep ^0.0.0.0' cmd_result = test_lib.lib_ssh_vm_cmd_by_agent_with_retry(host.managementIp, nic.ip, test_lib.lib_get_vm_username(vm), test_lib.lib_get_vm_password(vm), command, self.exp_result) if not cmd_result: test_util.test_logger('Checker result: FAIL to execute test ssh command in test [vm:] %s throught [host:] %s.' % (vm.uuid, host.name)) return self.judge(False) if isinstance(cmd_result, str) and gateway in cmd_result: test_util.test_logger('Checker result: gateway %s is SUCCESSFULLY set in guest [vm:] %s default router. ' % (gateway, vm.uuid)) return self.judge(True) else: test_util.test_logger('Checker result: gateway: %s is NOT set in guest [vm:] %s default router. The default route is : %s' % (gateway, vm.uuid, cmd_result)) return self.judge(False)
def check(self): super(zstack_kvm_vm_dhcp_checker, self).check() vm = self.test_obj.vm test_lib.lib_install_testagent_to_vr(vm) host = test_lib.lib_get_vm_host(vm) test_lib.lib_install_testagent_to_host(host) test_lib.lib_set_vm_host_l2_ip(vm) vm_cmd_result = None vr_vms = test_lib.lib_find_vr_by_vm(vm) print('find %d vr vms.' % len(vr_vms)) for vr_vm in vr_vms: test_util.test_logger( "Begin to check [vm:] %s DHCP binding setting in [VR:] %s" % (vm.uuid, vr_vm.uuid)) nic = test_lib.lib_get_vm_nic_by_vr(vm, vr_vm) if not 'DHCP' in \ test_lib.lib_get_l3_service_type(nic.l3NetworkUuid): test_util.test_logger( "Skip [VR:] %s, since it doesn't provide DHCP service" % vr_vm.uuid) continue guest_ip = nic.ip guest_mac = nic.mac vr_ip = test_lib.lib_find_vr_mgmt_ip(vr_vm) if vr_vm.hasattr( 'applianceVmType') and vr_vm.applianceVmType == 'vrouter': command = '/bin/cli-shell-api showCfg' else: command = 'cat /etc/hosts.dhcp' vr_cmd_result = test_lib.lib_execute_sh_cmd_by_agent_with_retry( vr_ip, command, self.exp_result) if not vr_cmd_result: test_util.test_logger( 'Checker result: FAIL to execute shell commaond in [vm:] %s' % vr_vm.uuid) return self.judge(False) if vr_cmd_result == True: test_util.test_logger( 'Checker result: FAIL to get ssh result in [vm:] %s' % vr_vm.uuid) return self.judge(False) if not guest_mac in vr_cmd_result or not guest_ip in vr_cmd_result: test_util.test_logger( 'Checker result: [vm:] %s [mac:] %s is not found in [vr:] %s. VR ip/mac result is %s.' % (vm.uuid, guest_mac, vr_vm.uuid, vr_cmd_result)) return self.judge(False) else: test_util.test_logger( 'Checker result: [vm:] %s [mac:] %s is found in VR %s .' % (vm.uuid, guest_mac, vr_vm.uuid)) test_util.test_logger("Begin to check VM DHCP in VM: %s" % vm.uuid) if not vm_cmd_result: vm_command = '/sbin/ip a' vm_cmd_result = test_lib.lib_ssh_vm_cmd_by_agent_with_retry( host.managementIp, nic.ip, test_lib.lib_get_vm_username(vm), test_lib.lib_get_vm_password(vm), vm_command, self.exp_result) if not vm_cmd_result: test_util.test_logger( 'Checker result: FAIL to execute test ssh command in test [vm:] %s throught [host:] %s.' % (vm.uuid, host.name)) return self.judge(False) if isinstance(vm_cmd_result, str) and guest_ip in vm_cmd_result: test_util.test_logger( 'Checker result: guest [ip:] %s is SET in guest [vm:] %s.' % (guest_ip, vm.uuid)) else: test_util.test_logger( 'Checker result: guest [ip:] %s is NOT found in guest [vm:] %s. \n Will Try again. It might be because the ifconfig is not reflect the ip address yet. \n The current ifconfig result is: %s' % (guest_ip, vm.uuid, vm_cmd_result)) vm_cmd_result = test_lib.lib_ssh_vm_cmd_by_agent_with_retry( host.managementIp, nic.ip, test_lib.lib_get_vm_username(vm), test_lib.lib_get_vm_password(vm), vm_command, self.exp_result) if not vm_cmd_result: test_util.test_logger( 'Checker result: FAIL to execute test ssh command in test [vm:] %s throught [host:] %s.' % (vm.uuid, host.name)) return self.judge(False) if isinstance(vm_cmd_result, str) and guest_ip in vm_cmd_result: test_util.test_logger( 'Checker result: guest [ip:] %s is SET in guest [vm:] %s.' % (guest_ip, vm.uuid)) else: if not guest_ip in vm_cmd_result: test_util.test_logger( 'Checker result: guest [ip:] %s is NOT found in guest [vm:] %s. The current ifconfig result is: %s' % (guest_ip, vm.uuid, vm_cmd_result)) else: test_util.test_logger( 'vm_cmd_result: %s is not string type. It is: %s .' % (vm_cmd_result, type(vm_cmd_result))) return self.judge(False) return self.judge(True)
def check(self): super(zstack_kvm_vm_dhcp_checker, self).check() vm = self.test_obj.vm test_lib.lib_install_testagent_to_vr(vm) host = test_lib.lib_get_vm_host(vm) test_lib.lib_install_testagent_to_host(host) test_lib.lib_set_vm_host_l2_ip(vm) vm_cmd_result = None vr_vms = test_lib.lib_find_vr_by_vm(vm) print('find %d vr vms.' % len(vr_vms)) for vr_vm in vr_vms: test_util.test_logger("Begin to check [vm:] %s DHCP binding setting in [VR:] %s" % (vm.uuid, vr_vm.uuid)) nic = test_lib.lib_get_vm_nic_by_vr(vm, vr_vm) if not 'DHCP' in \ test_lib.lib_get_l3_service_type(nic.l3NetworkUuid): test_util.test_logger("Skip [VR:] %s, since it doesn't provide DHCP service" % vr_vm.uuid) continue for i in range(300): cond = res_ops.gen_query_conditions('uuid', '=', vr_vm.uuid) vr = res_ops.query_resource_fields(res_ops.VM_INSTANCE, cond, None)[0] if "connected" in vr.status.lower(): test_util.test_logger("vr.uuid=%s vr.status=%s" %(vr_vm.uuid, vr.status.lower())) break time.sleep(1) else: test_util.test_fail("vr.uuid=%s is not changed to changed within max waiting time." %(vr_vm.uuid)) guest_ip = nic.ip guest_mac = nic.mac vr_ip = test_lib.lib_find_vr_mgmt_ip(vr_vm) if vr_vm.hasattr('applianceVmType') and vr_vm.applianceVmType == 'vrouter': command = '/bin/cli-shell-api showCfg' else: command = 'cat /etc/hosts.dhcp' vr_cmd_result = test_lib.lib_execute_sh_cmd_by_agent_with_retry(vr_ip, command, self.exp_result) if not vr_cmd_result: test_util.test_logger('Checker result: FAIL to execute shell commaond in [vm:] %s' % vr_vm.uuid) return self.judge(False) if vr_cmd_result == True: test_util.test_logger('Checker result: FAIL to get ssh result in [vm:] %s' % vr_vm.uuid) return self.judge(False) if not guest_mac in vr_cmd_result or not guest_ip in vr_cmd_result: test_util.test_logger('Checker result: [vm:] %s [mac:] %s is not found in [vr:] %s. VR ip/mac result is %s.' % (vm.uuid, guest_mac, vr_vm.uuid, vr_cmd_result)) return self.judge(False) else: test_util.test_logger('Checker result: [vm:] %s [mac:] %s is found in VR %s .' % (vm.uuid, guest_mac, vr_vm.uuid)) test_util.test_logger("Begin to check VM DHCP in VM: %s" % vm.uuid) if not vm_cmd_result: vm_command = '/sbin/ip a' vm_cmd_result = test_lib.lib_ssh_vm_cmd_by_agent_with_retry(host.managementIp, nic.ip, test_lib.lib_get_vm_username(vm), test_lib.lib_get_vm_password(vm), vm_command, self.exp_result) if not vm_cmd_result: test_util.test_logger('Checker result: FAIL to execute test ssh command in test [vm:] %s throught [host:] %s.' % (vm.uuid, host.name)) return self.judge(False) if isinstance(vm_cmd_result, str) and guest_ip in vm_cmd_result: test_util.test_logger('Checker result: guest [ip:] %s is SET in guest [vm:] %s.' % (guest_ip, vm.uuid)) else: test_util.test_logger('Checker result: guest [ip:] %s is NOT found in guest [vm:] %s. \n Will Try again. It might be because the ifconfig is not reflect the ip address yet. \n The current ifconfig result is: %s' % (guest_ip, vm.uuid, vm_cmd_result)) vm_cmd_result = test_lib.lib_ssh_vm_cmd_by_agent_with_retry(host.managementIp, nic.ip, test_lib.lib_get_vm_username(vm), test_lib.lib_get_vm_password(vm), vm_command, self.exp_result) if not vm_cmd_result: test_util.test_logger('Checker result: FAIL to execute test ssh command in test [vm:] %s throught [host:] %s.' % (vm.uuid, host.name)) return self.judge(False) if isinstance(vm_cmd_result, str) and guest_ip in vm_cmd_result: test_util.test_logger('Checker result: guest [ip:] %s is SET in guest [vm:] %s.' % (guest_ip, vm.uuid)) else: if not guest_ip in vm_cmd_result: test_util.test_logger('Checker result: guest [ip:] %s is NOT found in guest [vm:] %s. The current ifconfig result is: %s' % (guest_ip, vm.uuid, vm_cmd_result)) else: test_util.test_logger('vm_cmd_result: %s is not string type. It is: %s .' % (vm_cmd_result, type(vm_cmd_result))) return self.judge(False) return self.judge(True)
def check(self): super(zstack_kvm_vm_data_integrity_checker, self).check() if isinstance(self.test_obj, volume_header.TestVolume): volume = self.test_obj.volume vm = self.test_obj.target_vm.vm if isinstance(self.test_obj, vm_header.TestVm): vm = self.test_obj.vm if isinstance(self.test_obj, zstack_sp_header.ZstackVolumeSnapshot): volume_obj = self.test_obj.get_target_volume() vm = volume_obj.get_target_vm() if vm.state != "Running": test_util.test_logger('Check result: Skip attach_volume_checker since VM is not in Running state') return self.judge(True) time.sleep(30) #test_lib.lib_install_testagent_to_vr(vm) host = test_lib.lib_get_vm_host(vm) test_lib.lib_install_testagent_to_host(host) test_lib.lib_set_vm_host_l2_ip(vm) default_l3_uuid = vm.defaultL3NetworkUuid #vr = test_lib.lib_find_vr_by_pri_l3(default_l3_uuid) #nic = test_lib.lib_get_vm_nic_by_vr(vm, vr) nic = vm.vmNics[0] #print partition information cmd = 'ls -l /dev/disk/by-id/' cmd_res = test_lib.lib_ssh_vm_cmd_by_agent_with_retry(host.managementIp, nic.ip, test_lib.lib_get_vm_username(vm), test_lib.lib_get_vm_password(vm), cmd, self.exp_result) test_util.test_logger("partition information: %s" % cmd_res) #exec vdbench command = 'python /root/vdbench_test.py | tee result' cmd_result = test_lib.lib_ssh_vm_cmd_by_agent_with_retry(host.managementIp, nic.ip, test_lib.lib_get_vm_username(vm), test_lib.lib_get_vm_password(vm), command, self.exp_result) test_util.test_logger("czhou: %s" % cmd_result) if isinstance(cmd_result, str) and "generate successfully" in cmd_result: test_util.test_logger("Checker result: Success to validate data integrity, output: %s" % cmd_result) return self.judge(True) if isinstance(cmd_result, str) and "no disk attached, skip generating" in cmd_result: test_util.test_logger("Checker result: No validationg and no generating, output: %s" % cmd_result) return self.judge(True) #if isinstance(cmd_result, str) and "All old disks have been removed,skip validation" in cmd_result: # if "generate successfully" in cmd_result or "skip generating" in cmd_result: # test_util.test_logger("Checker result: Skip validation checker since all disks have been removed") # return self.judge(True) # else: # test_util.test_logger("Checker result: Skip validation checker since all disks have been removed, but generating data failed on volume output: %s" % cmd_result) # return self.judge(False) #if isinstance(cmd_result, str) and "validate successfully" in cmd_result: # if "generate successfully" in cmd_result or "skip generating" in cmd_result: # test_util.test_logger("Checker result: Success to validate data integrity, output: %s" % cmd_result) # return self.judge(True) # else: # test_util.test_logger("Checker result: Success to validate data integrity, but generating data failed on volume output: %s" % cmd_result) # return self.judge(False) #if isinstance(cmd_result, str) and "validate failed on" in cmd_result: # test_util.test_logger("Checker result: Fail to validate data integrity, output: %s" % cmd_result) # return self.judge(False) return self.judge(False)
def check(self): super(zstack_kvm_vm_dhcp_checker, self).check() vm = self.test_obj.vm test_lib.lib_install_testagent_to_vr(vm) host = test_lib.lib_get_vm_host(vm) test_lib.lib_install_testagent_to_host(host) test_lib.lib_set_vm_host_l2_ip(vm) vm_cmd_result = None vr_vms = test_lib.lib_find_vr_by_vm(vm) print('find %d vr vms.' % len(vr_vms)) for vr_vm in vr_vms: test_util.test_logger("Begin to check [vm:] %s DHCP binding setting in [VR:] %s" % (vm.uuid, vr_vm.uuid)) nic = test_lib.lib_get_vm_nic_by_vr(vm, vr_vm) if not 'DHCP' in \ test_lib.lib_get_l3_service_type(nic.l3NetworkUuid): test_util.test_logger("Skip [VR:] %s, since it doesn't provide DHCP service" % vr_vm.uuid) continue guest_ip = nic.ip guest_mac = nic.mac vr_ip = test_lib.lib_find_vr_mgmt_ip(vr_vm) command = 'cat /etc/hosts.dhcp' vr_cmd_result = test_lib.lib_execute_sh_cmd_by_agent_with_retry(vr_ip, command, self.exp_result) if not vr_cmd_result: test_util.test_logger('Checker result: FAIL to execute shell commaond in [vm:] %s' % vr_vm.uuid) return self.judge(False) if vr_cmd_result == True: test_util.test_logger('Checker result: FAIL to get ssh result in [vm:] %s' % vr_vm.uuid) return self.judge(False) if not guest_mac in vr_cmd_result or not guest_ip in vr_cmd_result: test_util.test_logger('Checker result: [vm:] %s [mac:] %s is not found in [vr:] %s. VR ip/mac result is %s.' % (vm.uuid, guest_mac, vr_vm.uuid, vr_cmd_result)) return self.judge(False) else: test_util.test_logger('Checker result: [vm:] %s [mac:] %s is found in VR %s .' % (vm.uuid, guest_mac, vr_vm.uuid)) test_util.test_logger("Begin to check VM DHCP in VM: %s" % vm.uuid) if not vm_cmd_result: vm_command = '/sbin/ip a' vm_cmd_result = test_lib.lib_ssh_vm_cmd_by_agent_with_retry(host.managementIp, nic.ip, test_lib.lib_get_vm_username(vm), test_lib.lib_get_vm_password(vm), vm_command, self.exp_result) if not vm_cmd_result: test_util.test_logger('Checker result: FAIL to execute test ssh command in test [vm:] %s throught [host:] %s.' % (vm.uuid, host.name)) return self.judge(False) if isinstance(vm_cmd_result, str) and guest_ip in vm_cmd_result: test_util.test_logger('Checker result: guest [ip:] %s is SET in guest [vm:] %s.' % (guest_ip, vm.uuid)) else: test_util.test_logger('Checker result: guest [ip:] %s is NOT found in guest [vm:] %s. \n Will Try again. It might be because the ifconfig is not reflect the ip address yet. \n The current ifconfig result is: %s' % (guest_ip, vm.uuid, vm_cmd_result)) vm_cmd_result = test_lib.lib_ssh_vm_cmd_by_agent_with_retry(host.managementIp, nic.ip, test_lib.lib_get_vm_username(vm), test_lib.lib_get_vm_password(vm), vm_command, self.exp_result) if not vm_cmd_result: test_util.test_logger('Checker result: FAIL to execute test ssh command in test [vm:] %s throught [host:] %s.' % (vm.uuid, host.name)) return self.judge(False) if isinstance(vm_cmd_result, str) and guest_ip in vm_cmd_result: test_util.test_logger('Checker result: guest [ip:] %s is SET in guest [vm:] %s.' % (guest_ip, vm.uuid)) else: if not guest_ip in vm_cmd_result: test_util.test_logger('Checker result: guest [ip:] %s is NOT found in guest [vm:] %s. The current ifconfig result is: %s' % (guest_ip, vm.uuid, vm_cmd_result)) else: test_util.test_logger('vm_cmd_result: %s is not string type. It is: %s .' % (vm_cmd_result, type(vm_cmd_result))) return self.judge(False) return self.judge(True)
def check(self): super(zstack_kvm_vm_attach_volume_checker, self).check() volume = self.test_obj.volume vm = self.test_obj.target_vm.vm if vm.state != "Running": test_util.test_logger('Check result: Skip attach_volume_checker since VM is not in Running state') return self.judge(True) # test_lib.lib_install_testagent_to_vr(vm) host = test_lib.lib_get_vm_host(vm) test_lib.lib_install_testagent_to_host(host) test_lib.lib_set_vm_host_l2_ip(vm) default_l3_uuid = vm.defaultL3NetworkUuid # vr = test_lib.lib_find_vr_by_pri_l3(default_l3_uuid) # nic = test_lib.lib_get_vm_nic_by_vr(vm, vr) nic = vm.vmNics[0] command = 'cat /root/result' cmd_result = test_lib.lib_ssh_vm_cmd_by_agent_with_retry(host.managementIp, nic.ip, test_lib.lib_get_vm_username(vm), test_lib.lib_get_vm_password(vm), command, self.exp_result) test_util.test_logger("czhou: %s" % cmd_result) #If it's a virtio-scsi volume, check the wwn in the output conditions = res_ops.gen_query_conditions('tag', '=', 'capability::virtio-scsi') conditions = res_ops.gen_query_conditions('resourceUuid', '=', volume.uuid, conditions) systemtag = res_ops.query_resource(res_ops.SYSTEM_TAG, conditions) size = str(int(volume.size)/1024/1024)+'M' if int(volume.size)/1024/1024 < 1024 else str(int(volume.size)/1024/1024/1024)+'G' if isinstance(cmd_result, str) and systemtag: condition = res_ops.gen_query_conditions("resourceUuid", '=', volume.uuid) for i in res_ops.query_resource(res_ops.SYSTEM_TAG, condition): if re.split("::",i.tag)[0] == "kvm": wwn = re.split("::",i.tag)[2] for output in cmd_result.splitlines(): if "old disks:/dev/disk/by-id/wwn-"+wwn+"-part1:"+size in output: disk_md5 = re.split(":",output)[3] vol_md5 = self.test_obj.get_md5sum() if disk_md5 == vol_md5: test_util.test_logger("Checker result: Success to check md5sum of attached virtioscsi volume [%s] in vm " % wwn) continue else: test_util.test_logger("Checker result: Fail to check md5sum of attached virtioscsi volume [%s] in vm " % wwn) return self.judge(False) if "new disks:/dev/disk/by-id/wwn-"+wwn+"-part1:"+size in output: disk_md5 = re.split(":",output)[3] self.test_obj.set_md5sum(disk_md5) return self.judge(True) test_util.test_logger("Checker result: Fail to check wwn of attached virtioscsi volume [%s] in vm" % wwn) return self.judge(False) #If it's a virtio-blk volume, we can only check the volume size and 'add' label in the output if not systemtag: #Skip virtio-blk check until we have a proper solution test_util.test_logger("Checker result: Skip to check wwn of attached virtioblk volume [%s] in vm " % cmd_result) return self.judge(False) if re.split(":",cmd_result)[0] == "add" and re.split(":",cmd_result)[2] == size: test_util.test_logger("Checker result: Success to check virtioblk attached volume [%s] in vm" % cmd_result) return self.judge(True) if "present disks" in cmd_result and size in cmd_result: test_util.test_logger("Checker result: Success to attach virtioblk volume [%s] in vm" % cmd_result) return self.judge(True) if "present disks" in cmd_result and size not in cmd_result: test_util.test_logger("Checker result: Success to attach virtioblk volume [%s] in vm" % cmd_result) return self.judge(False) test_util.test_logger("Checker result: Fail to check virtioblk attached volume [%s] in vm" % cmd_result) return self.judge(False) return self.judge(False)