On 7/10/2012 11:44 PM, Alex Jia wrote:
> As I said, virsh domname case should receive different id or uuid
> rather than different domain name, so I thinks it's irrelevant with
> this case.
I will discuss with my partner.Thanks for your comment.^^

>
> In addition, as we discussed, if you want to operate XML, you should
> spit it into libvirt_xml relevant module, I think it should be common
> function for XML's adding, deleting, searching, modifying.
I have thought about it.
But I do not know where I should put rename_xml_utils() in.
If you have idea about it, tell me please.^_^

BTW, do you have objection with vm.rename()?
I will use it in later patchs, for example, virsh schedinfo <vm_name or id>.
vm_name will be changed to different type for command "virsh schedinfo"'s test.

>
> Alex
>
> ----- Original Message -----
> From: "Yu Mingfei"<yuming...@cn.fujitsu.com>
> To: "Chris Evich"<cev...@redhat.com>, "Lucas Meneghel 
> Rodrigues"<l...@redhat.com>, "Alex Jia"<a...@redhat.com>
> Cc: autotest@test.kernel.org
> Sent: Tuesday, July 10, 2012 8:59:34 AM
> Subject: [PATCH 1/3]Add virsh domname testcases for libvirt
>
> This patch add a function rename to VM class.
> Rename() changes VM's name to a new name.
>
> Signed-off-by: Yu Mingfei<yuming...@cn.fujitsu.com>
> ---
>    client/virt/libvirt_vm.py |   60 
> +++++++++++++++++++++++++++++++++++++++++++++
>    1 files changed, 60 insertions(+), 0 deletions(-)
>
> diff --git a/client/virt/libvirt_vm.py b/client/virt/libvirt_vm.py
> index d97ac0c..e2d0daf 100644
> --- a/client/virt/libvirt_vm.py
> +++ b/client/virt/libvirt_vm.py
> @@ -1597,3 +1597,63 @@ class VM(virt_vm.BaseVM):
>            Override BaseVM restore_from_file method
>            """
>            virsh_restore(self.name, path, uri=self.connect_uri)
> +
> +
> +    def rename(self, newname):
> +        """
> +        Rename this vm.
> +        @param newname:new name of vm.
> +        @return:True or False
> +        """
> +        def rename_xml_utils(xml_path, newname):
> +            """
> +            Modify name in an xml file.
> +            @param xml_path:xml file path
> +            """
> +            dom = minidom.parse(xml_path)
> +            root = dom.documentElement
> +            node_name = root.getElementsByTagName("name")[0]
> +            node_name.firstChild.data = "%s" % newname
> +            node_uuid = root.getElementsByTagName("uuid")[0]
> +            root.removeChild(node_uuid)
> +            f=open(xml_path, "w")
> +            dom.writexml(f)
> +            f.close()
> +
> +        if self.name == newname:
> +            logging.error("Error:Please give a different name with current.")
> +            return False
> +
> +        #Create a new xml file for new vm
> +        new_vm_tmp_xml = self.backup_xml()
> +        try:
> +            rename_xml_utils(new_vm_tmp_xml, newname)
> +        except Exception, detail:
> +            logging.error("Error:Edit xml failed: %s", detail)
> +            if os.path.exists(new_vm_tmp_xml):
> +                os.remove(new_vm_tmp_xml)
> +            return False
> +
> +        #Undefine old vm and define new vm
> +        old_vm_tmp_xml = self.backup_xml()
> +        if not self.undefine():
> +            logging.error("Error:Undefine %s failed.", self.name)
> +            if os.path.exists(new_vm_tmp_xml):
> +                os.remove(new_vm_tmp_xml)
> +            if os.path.exists(old_vm_tmp_xml):
> +                os.remove(old_vm_tmp_xml)
> +            return False
> +        if not self.define(new_vm_tmp_xml):
> +            logging.error("Error:Define %s failed.", newname)
> +            self.define(old_vm_tmp_xml)
> +            return False
> +        logging.debug("Rename %s to %s succeed.", self.name, newname)
> +        self.name = newname
> +
> +        #delete tmp files
> +        if os.path.exists(new_vm_tmp_xml):
> +            os.remove(new_vm_tmp_xml)
> +        if os.path.exists(old_vm_tmp_xml):
> +            os.remove(old_vm_tmp_xml)
> +        return True
> +
> -- 1.7.1
>
>
>

-- 
Best Regards
Yu Mingfei

_______________________________________________
Autotest mailing list
Autotest@test.kernel.org
http://test.kernel.org/cgi-bin/mailman/listinfo/autotest

Reply via email to