def secret_validate(file=None, **virsh_dargs): """ Test for schema secret """ tmp_dir = data_dir.get_tmp_dir() volume_path = os.path.join(tmp_dir, "secret_volume") ephemeral = "no" private = "no" secret_xml_obj = SecretXML(ephemeral, private) status, uuid = commands.getstatusoutput("uuidgen") if status: raise error.TestNAError("Failed to generate valid uuid") secret_xml_obj.uuid = uuid secret_xml_obj.volume = volume_path secret_xml_obj.usage = "volume" secret_obj_xmlfile = os.path.join(SECRET_DIR, uuid + ".xml") cmd_result = virsh.secret_define(secret_xml_obj.xml, debug=True) cmd_result = virsh.secret_list(**virsh_dargs) libvirt.check_exit_status(cmd_result) try: uuid = re.findall(r"(\S+)\ +(\S+)[\ +\n]", str(cmd_result.stdout))[1][0] except IndexError: raise error.TestError("Fail to get secret uuid") if uuid: try: virsh.secret_dumpxml(uuid, to_file=file, **virsh_dargs) except error.CmdError, e: raise error.TestError(str(e))
def run(test, params, env): """ Test command: virsh secret-list Returns a list of secrets """ # MAIN TEST CODE ### # Process cartesian parameters status_error = ("yes" == params.get("status_error", "no")) secret_list_option = params.get("secret_list_option", "") # acl polkit params uri = params.get("virsh_uri") unprivileged_user = params.get('unprivileged_user') if unprivileged_user: if unprivileged_user.count('EXAMPLE'): unprivileged_user = '******' if not libvirt_version.version_compare(1, 1, 1): if params.get('setup_libvirt_polkit') == 'yes': test.cancel("API acl test not supported in current" " libvirt version.") virsh_dargs = {'debug': True} if params.get('setup_libvirt_polkit') == 'yes': virsh_dargs['unprivileged_user'] = unprivileged_user virsh_dargs['uri'] = uri uuid_list = [] for i in ['yes', 'no']: for j in ['yes', 'no']: # Generate valid uuid cmd = "uuidgen" status, uuid = process.getstatusoutput(cmd) if status: test.cancel("Failed to generate valid uuid") uuid_list.append(uuid) # Get a full path of tmpfile, the tmpfile need not exist tmp_dir = data_dir.get_tmp_dir() volume_path = os.path.join(tmp_dir, "secret_volume_%s_%s" % (i, j)) secret_xml_obj = SecretXML(ephemeral=i, private=j) secret_xml_obj.uuid = uuid secret_xml_obj.volume = volume_path secret_xml_obj.usage = "volume" secret_xml_obj.description = "test" virsh.secret_define(secret_xml_obj.xml, debug=True) try: cmd_result = virsh.secret_list(secret_list_option, **virsh_dargs) output = cmd_result.stdout.strip() exit_status = cmd_result.exit_status if not status_error and exit_status != 0: test.fail("Run failed with right command") if status_error and exit_status == 0: test.fail("Run successfully with wrong command!") # Reture if secret-list failed if exit_status != 0: return # Check the result m1 = re.search(uuid_list[0], output) m2 = re.search(uuid_list[1], output) m3 = re.search(uuid_list[2], output) m4 = re.search(uuid_list[3], output) if secret_list_option.find("--no-ephemeral") >= 0: if m1 or m2: test.fail("Secret object %s, %s shouldn't be listed" " out" % (uuid_list[0], uuid_list[1])) if secret_list_option.find("--private") >= 0: if not m3: test.fail("Failed list secret object %s" % uuid_list[2]) if m4: test.fail("Secret object %s shouldn't be listed" " out" % uuid_list[3]) elif secret_list_option.find("--no-private") >= 0: if not m4: test.fail("Failed list secret object %s" % uuid_list[3]) if m3: test.fail("Secret object %s shouldn't be listed" " out" % uuid_list[2]) else: if not m3 or not m4: test.fail("Failed list secret object %s, %s" % (uuid_list[2], uuid_list[3])) elif secret_list_option.find("--ephemeral") >= 0: if m3 or m4: test.fail("Secret object %s, %s shouldn't be listed" " out" % (uuid_list[2], uuid_list[3])) if secret_list_option.find("--private") >= 0: if not m1: test.fail("Failed list secret object %s" % uuid_list[0]) if m2: test.fail("Secret object %s shouldn't be listed" " out" % uuid_list[1]) elif secret_list_option.find("--no-private") >= 0: if not m2: test.fail("Failed list secret object %s" % uuid_list[1]) if m1: test.fail("Secret object %s shouldn't be listed" " out" % uuid_list[0]) else: if not m1 or not m2: test.fail("Failed list secret object %s, %s" % (uuid_list[0], uuid_list[1])) elif secret_list_option.find("--private") >= 0: if not m1 or not m3: test.fail("Failed list secret object %s, %s" % (uuid_list[0], uuid_list[2])) if m2 or m4: test.fail("Secret object %s and %s should't be " "listed out" % (uuid_list[1], uuid_list[3])) elif secret_list_option.find("--no-private") >= 0: if not m2 or not m4: test.fail("Failed list secret object %s, %s" % (uuid_list[1], uuid_list[3])) if m1 or m3: test.fail("Secret object %s and %s shouldn't be " "listed out" % (uuid_list[0], uuid_list[2])) elif secret_list_option is None: if not m1 or not m2 or not m3 or not m4: test.fail("Fail to list all secret objects: %s" % uuid_list) finally: #Cleanup for i in range(0, 4): virsh.secret_undefine(uuid_list[i], debug=True)
def run(test, params, env): """ Test command: virsh secret-define <file> secret-undefine <secret> The testcase is to define or modify a secret from an XML file, then undefine it """ # MAIN TEST CODE ### # Process cartesian parameters secret_ref = params.get("secret_ref") ephemeral = params.get("ephemeral_value", "no") private = params.get("private_value", "no") modify_volume = ("yes" == params.get("secret_modify_volume", "no")) remove_uuid = ("yes" == params.get("secret_remove_uuid", "no")) if secret_ref == "secret_valid_uuid": # Generate valid uuid cmd = "uuidgen" status, uuid = commands.getstatusoutput(cmd) if status: raise error.TestNAError("Failed to generate valid uuid") elif secret_ref == "secret_invalid_uuid": uuid = params.get(secret_ref) # libvirt acl related params uri = params.get("virsh_uri") unprivileged_user = params.get('unprivileged_user') define_acl = "yes" == params.get("define_acl", "no") undefine_acl = "yes" == params.get("undefine_acl", "no") get_value_acl = "yes" == params.get("get_value_acl", "no") define_error = "yes" == params.get("define_error", "no") undefine_error = "yes" == params.get("undefine_error", "no") get_value_error = "yes" == params.get("get_value_error", "no") if unprivileged_user: if unprivileged_user.count('EXAMPLE'): unprivileged_user = '******' if not libvirt_version.version_compare(1, 1, 1): if params.get('setup_libvirt_polkit') == 'yes': raise error.TestNAError("API acl test not supported in current" " libvirt version.") acl_dargs = { 'uri': uri, 'unprivileged_user': unprivileged_user, 'debug': True } # Get a full path of tmpfile, the tmpfile need not exist tmp_dir = data_dir.get_tmp_dir() volume_path = os.path.join(tmp_dir, "secret_volume") secret_xml_obj = SecretXML(ephemeral, private) secret_xml_obj.uuid = uuid secret_xml_obj.volume = volume_path secret_xml_obj.usage = "volume" secret_obj_xmlfile = os.path.join(SECRET_DIR, uuid + ".xml") # Run the test try: if define_acl: utils.run("chmod 666 %s" % secret_xml_obj.xml) cmd_result = virsh.secret_define(secret_xml_obj.xml, **acl_dargs) else: cmd_result = virsh.secret_define(secret_xml_obj.xml, debug=True) libvirt.check_exit_status(cmd_result, define_error) if cmd_result.exit_status: return # Check ephemeral attribute exist = os.path.exists(secret_obj_xmlfile) if (ephemeral == "yes" and exist) or \ (ephemeral == "no" and not exist): raise error.TestFail("The ephemeral attribute worked not expected") # Check private attrbute virsh.secret_set_value(uuid, SECRET_BASE64, debug=True) if get_value_acl: cmd_result = virsh.secret_get_value(uuid, **acl_dargs) else: cmd_result = virsh.secret_get_value(uuid, debug=True) libvirt.check_exit_status(cmd_result, get_value_error) status = cmd_result.exit_status err_msg = "The private attribute worked not expected" if private == "yes" and not status: raise error.TestFail(err_msg) if private == "no" and status: if not get_value_error: raise error.TestFail(err_msg) if modify_volume: volume_path = os.path.join(tmp_dir, "secret_volume_modify") secret_xml_obj.volume = volume_path cmd_result = virsh.secret_define(secret_xml_obj.xml, debug=True) if cmd_result.exit_status == 0: raise error.TestFail("Expect fail on redefine after modify " "volume, but success indeed") if remove_uuid: secret_xml_obj2 = SecretXML(ephemeral, private) secret_xml_obj2.volume = volume_path secret_xml_obj2.usage = "volume" cmd_result = virsh.secret_define(secret_xml_obj2.xml, debug=True) if cmd_result.exit_status == 0: raise error.TestFail("Expect fail on redefine after remove " "uuid, but success indeed") if undefine_acl: cmd_result = virsh.secret_undefine(uuid, **acl_dargs) else: cmd_result = virsh.secret_undefine(uuid, debug=True) libvirt.check_exit_status(cmd_result, undefine_error) finally: # cleanup virsh.secret_undefine(uuid, ignore_status=True) if os.path.exists(volume_path): os.unlink(volume_path) if os.path.exists(secret_obj_xmlfile): os.unlink(secret_obj_xmlfile)
def run(test, params, env): """ Test command: virsh secret-define <file> secret-undefine <secret> The testcase is to define or modify a secret from an XML file, then undefine it """ # MAIN TEST CODE ### # Process cartesian parameters secret_ref = params.get("secret_ref") ephemeral = params.get("ephemeral_value", "no") private = params.get("private_value", "no") modify_volume = ("yes" == params.get("secret_modify_volume", "no")) remove_uuid = ("yes" == params.get("secret_remove_uuid", "no")) if secret_ref == "secret_valid_uuid": # Generate valid uuid cmd = "uuidgen" status, uuid = process.getstatusoutput(cmd) if status: test.cancel("Failed to generate valid uuid") elif secret_ref == "secret_invalid_uuid": uuid = params.get(secret_ref) # libvirt acl related params uri = params.get("virsh_uri") unprivileged_user = params.get('unprivileged_user') define_acl = "yes" == params.get("define_acl", "no") undefine_acl = "yes" == params.get("undefine_acl", "no") get_value_acl = "yes" == params.get("get_value_acl", "no") define_error = "yes" == params.get("define_error", "no") undefine_error = "yes" == params.get("undefine_error", "no") get_value_error = "yes" == params.get("get_value_error", "no") define_readonly = "yes" == params.get("secret_define_readonly", "no") undefine_readonly = "yes" == params.get("secret_undefine_readonly", "no") expect_msg = params.get("secret_err_msg", "") if unprivileged_user: if unprivileged_user.count('EXAMPLE'): unprivileged_user = '******' if not libvirt_version.version_compare(1, 1, 1): if params.get('setup_libvirt_polkit') == 'yes': test.cancel("API acl test not supported in current" " libvirt version.") acl_dargs = {'uri': uri, 'unprivileged_user': unprivileged_user, 'debug': True} # Get a full path of tmpfile, the tmpfile need not exist tmp_dir = data_dir.get_tmp_dir() volume_path = os.path.join(tmp_dir, "secret_volume") secret_xml_obj = SecretXML(ephemeral, private) secret_xml_obj.uuid = uuid secret_xml_obj.volume = volume_path secret_xml_obj.usage = "volume" secret_obj_xmlfile = os.path.join(SECRET_DIR, uuid + ".xml") # Run the test try: if define_acl: process.run("chmod 666 %s" % secret_xml_obj.xml, shell=True) cmd_result = virsh.secret_define(secret_xml_obj.xml, **acl_dargs) else: cmd_result = virsh.secret_define(secret_xml_obj.xml, debug=True, readonly=define_readonly) libvirt.check_exit_status(cmd_result, define_error) if cmd_result.exit_status: if define_readonly: if not re.search(expect_msg, cmd_result.stderr.strip()): test.fail("Fail to get expect err msg: %s" % expect_msg) else: logging.info("Get expect err msg: %s", expect_msg) return # Check ephemeral attribute exist = os.path.exists(secret_obj_xmlfile) if (ephemeral == "yes" and exist) or \ (ephemeral == "no" and not exist): test.fail("The ephemeral attribute worked not expected") # Check private attrbute virsh.secret_set_value(uuid, SECRET_BASE64, debug=True) if get_value_acl: cmd_result = virsh.secret_get_value(uuid, **acl_dargs) else: cmd_result = virsh.secret_get_value(uuid, debug=True) libvirt.check_exit_status(cmd_result, get_value_error) status = cmd_result.exit_status err_msg = "The private attribute worked not expected" if private == "yes" and not status: test.fail(err_msg) if private == "no" and status: if not get_value_error: test.fail(err_msg) if modify_volume: volume_path = os.path.join(tmp_dir, "secret_volume_modify") secret_xml_obj.volume = volume_path cmd_result = virsh.secret_define(secret_xml_obj.xml, debug=True) if cmd_result.exit_status == 0: test.fail("Expect fail on redefine after modify " "volume, but success indeed") if remove_uuid: secret_xml_obj2 = SecretXML(ephemeral, private) secret_xml_obj2.volume = volume_path secret_xml_obj2.usage = "volume" cmd_result = virsh.secret_define(secret_xml_obj2.xml, debug=True) if cmd_result.exit_status == 0: test.fail("Expect fail on redefine after remove " "uuid, but success indeed") if undefine_acl: cmd_result = virsh.secret_undefine(uuid, **acl_dargs) else: cmd_result = virsh.secret_undefine(uuid, debug=True, readonly=undefine_readonly) libvirt.check_exit_status(cmd_result, undefine_error) if undefine_readonly: if not re.search(expect_msg, cmd_result.stderr.strip()): test.fail("Fail to get expect err msg: %s" % expect_msg) else: logging.info("Get expect err msg: %s", expect_msg) finally: # cleanup virsh.secret_undefine(uuid, ignore_status=True) if os.path.exists(volume_path): os.unlink(volume_path) if os.path.exists(secret_obj_xmlfile): os.unlink(secret_obj_xmlfile)
def run(test, params, env): """ Test command: virsh secret-list Returns a list of secrets """ # MAIN TEST CODE ### # Process cartesian parameters status_error = ("yes" == params.get("status_error", "no")) secret_list_option = params.get("secret_list_option", "") # acl polkit params uri = params.get("virsh_uri") unprivileged_user = params.get('unprivileged_user') if unprivileged_user: if unprivileged_user.count('EXAMPLE'): unprivileged_user = '******' if not libvirt_version.version_compare(1, 1, 1): if params.get('setup_libvirt_polkit') == 'yes': raise error.TestNAError("API acl test not supported in current" " libvirt version.") virsh_dargs = {'debug': True} if params.get('setup_libvirt_polkit') == 'yes': virsh_dargs['unprivileged_user'] = unprivileged_user virsh_dargs['uri'] = uri uuid_list = [] for i in ['yes', 'no']: for j in ['yes', 'no']: # Generate valid uuid cmd = "uuidgen" status, uuid = commands.getstatusoutput(cmd) if status: raise error.TestNAError("Failed to generate valid uuid") uuid_list.append(uuid) # Get a full path of tmpfile, the tmpfile need not exist tmp_dir = data_dir.get_tmp_dir() volume_path = os.path.join(tmp_dir, "secret_volume_%s_%s" % (i, j)) secret_xml_obj = SecretXML(ephemeral=i, private=j) secret_xml_obj.uuid = uuid secret_xml_obj.volume = volume_path secret_xml_obj.usage = "volume" secret_xml_obj.description = "test" virsh.secret_define(secret_xml_obj.xml, debug=True) try: cmd_result = virsh.secret_list(secret_list_option, **virsh_dargs) output = cmd_result.stdout.strip() exit_status = cmd_result.exit_status if not status_error and exit_status != 0: raise error.TestFail("Run failed with right command") if status_error and exit_status == 0: raise error.TestFail("Run successfully with wrong command!") # Reture if secret-list failed if exit_status != 0: return # Check the result m1 = re.search(uuid_list[0], output) m2 = re.search(uuid_list[1], output) m3 = re.search(uuid_list[2], output) m4 = re.search(uuid_list[3], output) if secret_list_option.find("--no-ephemeral") >= 0: if m1 or m2: raise error.TestFail("Secret object %s, %s shouldn't be listed" " out" % (uuid_list[0], uuid_list[1])) if secret_list_option.find("--private") >= 0: if not m3: raise error.TestFail("Failed list secret object %s" % uuid_list[2]) if m4: raise error.TestFail("Secret object %s shouldn't be listed" " out" % uuid_list[3]) elif secret_list_option.find("--no-private") >= 0: if not m4: raise error.TestFail("Failed list secret object %s" % uuid_list[3]) if m3: raise error.TestFail("Secret object %s shouldn't be listed" " out" % uuid_list[2]) else: if not m3 or not m4: raise error.TestFail("Failed list secret object %s, %s" % (uuid_list[2], uuid_list[3])) elif secret_list_option.find("--ephemeral") >= 0: if m3 or m4: raise error.TestFail("Secret object %s, %s shouldn't be listed" " out" % (uuid_list[2], uuid_list[3])) if secret_list_option.find("--private") >= 0: if not m1: raise error.TestFail("Failed list secret object %s" % uuid_list[0]) if m2: raise error.TestFail("Secret object %s shouldn't be listed" " out" % uuid_list[1]) elif secret_list_option.find("--no-private") >= 0: if not m2: raise error.TestFail("Failed list secret object %s" % uuid_list[1]) if m1: raise error.TestFail("Secret object %s shouldn't be listed" " out" % uuid_list[0]) else: if not m1 or not m2: raise error.TestFail("Failed list secret object %s, %s" % (uuid_list[0], uuid_list[1])) elif secret_list_option.find("--private") >= 0: if not m1 or not m3: raise error.TestFail("Failed list secret object %s, %s" % (uuid_list[0], uuid_list[2])) if m2 or m4: raise error.TestFail("Secret object %s and %s should't be " "listed out" % (uuid_list[1], uuid_list[3])) elif secret_list_option.find("--no-private") >= 0: if not m2 or not m4: raise error.TestFail("Failed list secret object %s, %s" % (uuid_list[1], uuid_list[3])) if m1 or m3: raise error.TestFail("Secret object %s and %s shouldn't be " "listed out" % (uuid_list[0], uuid_list[2])) elif secret_list_option is None: if not m1 or not m2 or not m3 or not m4: raise error.TestFail("Fail to list all secret objects: %s" % uuid_list) finally: #Cleanup for i in range(0, 4): virsh.secret_undefine(uuid_list[i], debug=True)
def run(test, params, env): """ Test command: virsh secret-list Returns a list of secrets """ # MAIN TEST CODE ### # Process cartesian parameters status_error = ("yes" == params.get("status_error", "no")) secret_list_option = params.get("secret_list_option", "") num = 0 uuid_list = [] for i in ['yes', 'no']: for j in ['yes', 'no']: # Generate valid uuid cmd = "uuidgen" status, uuid = commands.getstatusoutput(cmd) if status: raise error.TestNAError("Failed to generate valid uuid") uuid_list.append(uuid) # Get a full path of tmpfile, the tmpfile need not exist tmp_dir = data_dir.get_tmp_dir() volume_path = os.path.join(tmp_dir, "secret_volume_%s_%s" % (i, j)) secret_xml_obj = SecretXML(ephemeral=i, private=j) secret_xml_obj.uuid = uuid secret_xml_obj.volume = volume_path secret_xml_obj.usage = "volume" secret_xml_obj.description = "test" virsh.secret_define(secret_xml_obj.xml, debug=True) try: cmd_result = virsh.secret_list(secret_list_option, debug=True) output = cmd_result.stdout.strip() exit_status = cmd_result.exit_status if not status_error and exit_status != 0: raise error.TestFail("Run failed with right command") if status_error and exit_status == 0: raise error.TestFail("Run successfully with wrong command!") # Reture if secret-list failed if exit_status != 0: return # Check the result m1 = re.search(uuid_list[0], output) m2 = re.search(uuid_list[1], output) m3 = re.search(uuid_list[2], output) m4 = re.search(uuid_list[3], output) if secret_list_option.find("--no-ephemeral") >= 0: if m1 or m2: raise error.TestFail("Secret object %s, %s shouldn't be listed" " out" % (uuid_list[0], uuid_list[1])) if secret_list_option.find("--private") >= 0: if not m3: raise error.TestFail("Failed list secret object %s" % uuid_list[2]) if m4: raise error.TestFail("Secret object %s shouldn't be listed" " out" % uuid_list[3]) elif secret_list_option.find("--no-private") >= 0: if not m4: raise error.TestFail("Failed list secret object %s" % uuid_list[3]) if m3: raise error.TestFail("Secret object %s shouldn't be listed" " out" % uuid_list[2]) else: if not m3 or not m4: raise error.TestFail("Failed list secret object %s, %s" % (uuid_list[2], uuid_list[3])) elif secret_list_option.find("--ephemeral") >= 0: if m3 or m4: raise error.TestFail("Secret object %s, %s shouldn't be listed" " out" % (uuid_list[2], uuid_list[3])) if secret_list_option.find("--private") >= 0: if not m1: raise error.TestFail("Failed list secret object %s" % uuid_list[0]) if m2: raise error.TestFail("Secret object %s shouldn't be listed" " out" % uuid_list[1]) elif secret_list_option.find("--no-private") >= 0: if not m2: raise error.TestFail("Failed list secret object %s" % uuid_list[1]) if m1: raise error.TestFail("Secret object %s shouldn't be listed" " out" % uuid_list[0]) else: if not m1 or not m2: raise error.TestFail("Failed list secret object %s, %s" % (uuid_list[0], uuid_list[1])) elif secret_list_option.find("--private") >= 0: if not m1 or not m3: raise error.TestFail("Failed list secret object %s, %s" % (uuid_list[0], uuid_list[2])) if m2 or m4: raise error.TestFail("Secret object %s and %s should't be " "listed out" % (uuid_list[1], uuid_list[3])) elif secret_list_option.find("--no-private") >= 0: if not m2 or not m4: raise error.TestFail("Failed list secret object %s, %s" % (uuid_list[1], uuid_list[3])) if m1 or m3: raise error.TestFail("Secret object %s and %s shouldn't be " "listed out" % (uuid_list[0], uuid_list[2])) elif secret_list_option is None: if not m1 or not m2 or not m3 or not m4: raise error.TestFail("Fail to list all secret objects: %s" % uuid_list) finally: #Cleanup for i in range(0, 4): virsh.secret_undefine(uuid_list[i], debug=True)