[libvirt] [sandbox][PATCH v2] Fix delete of running container

Wayne Sun gsun at redhat.com
Thu Aug 8 07:41:38 UTC 2013


On 08/07/2013 09:34 PM, Daniel P. Berrange wrote:
> On Wed, Aug 07, 2013 at 09:24:14PM +0800, Wayne Sun wrote:
>> Delete running container is not supprted and will report an error.
>>
>> Related to bug:
>> https://bugzilla.redhat.com/show_bug.cgi?id=994495
>>
>> Signed-off-by: Wayne Sun <gsun at redhat.com>
>> ---
>>   bin/virt-sandbox-service |   15 ++++++++++-----
>>   1 files changed, 10 insertions(+), 5 deletions(-)
>>
>> diff --git a/bin/virt-sandbox-service b/bin/virt-sandbox-service
>> index 550d46c..c07c33b 100755
>> --- a/bin/virt-sandbox-service
>> +++ b/bin/virt-sandbox-service
>> @@ -254,11 +254,16 @@ class Container:
>>   
>>       def delete(self):
>>           self.connect()
>> -        # Stop service if it is running
>> -        try:
>> -            self.stop()
>> -        except:
>> -            pass
>> +        # Check container is running or not
>> +        cmd = "/usr/bin/virsh -c %s list | sed '1d;2d;$d' | awk -F' '\
>> +               '{ print $2}'" % self.uri
>> +        p = Popen(cmd, shell=True, stdout=PIPE, stderr=PIPE)
>> +        out, err = p.communicate()
>> +        if p.returncode and p.returncode != 0:
>> +            raise OSError(_("Failed to list running domain"))
>> +
>> +        if self.name in out.splitlines():
>> +            raise ValueError([_("Delete running container is not supported")])
> virt-sandbox-service already has a connection to libvirt - no need to
> spawn virsh here. Just do something like this (untested):
>
>      self.conn.fetch_domains()
>      dom  = self.conn.find_domain_by_name(self.name)
>      info = dom.get_info()
>      if info.state == LibvirtGObject.DomainState.RUNNING:
>           .....error...
>
>
> Daniel
My limit thought is use virsh or libvirt python api to check domain 
state, apparently this is better here.
This totally works as I tested, v3 on the way.
Thanks!

Wayne Sun
2013-08-08




More information about the libvir-list mailing list