run virsh connected to lxc
[lxc-userspace.git] / lxcsu
diff --git a/lxcsu b/lxcsu
index 4f4a2f7..95e1bcd 100755 (executable)
--- a/lxcsu
+++ b/lxcsu
@@ -84,43 +84,17 @@ def main ():
                debug=True
 
        try:
-               cmd = 'grep %s /proc/*/cgroup | grep freezer'%slice_name
-               output = os.popen(cmd).readlines()
+               cmd = '/usr/bin/virsh --connect lxc:/// domid %s'%slice_name
+               pidnum = int(os.popen(cmd).read().rstrip())
        except:
                print "Error finding slice %s"%slice_name
                exit(1)
 
-       slice_spec = None
+        pid = '%s'%pidnum
+        cmdline = open('/proc/%s/cmdline'%pidnum).read().rstrip('\n\x00')
+        arch = getarch('/proc/%s/exe'%pid)
 
-       # provide a default as this is not always properly computed
-       arch = None
-
-       for e in output:
-               try:
-                       l = e.rstrip()
-                       path = l.split(':')[0]  
-                       comp = l.rsplit(':')[-1]
-                       slice_name_check = comp.rsplit('/')[-1]
-                       if debug: print "dealing with >%s<"%slice_name_check
-                       
-                       if (slice_name_check == slice_name):
-                               if debug: print "found %s"%slice_name
-                               slice_path = path
-                               pid = slice_path.split('/')[2]
-                               cmdline = open('/proc/%s/cmdline'%pid).read().rstrip('\n\x00')
-                               if (cmdline == '/sbin/init') or (cmdline.startswith("init [")):
-                                       slice_spec = slice_path
-                                       arch = getarch('/proc/%s/exe'%pid)
-                                       break
-               except Exception,e:
-                       if debug: 
-                               import traceback
-                               print "BEG lxcsu - ignoring exception"
-                               traceback.print_exc()
-                               print "END lxcsu - ignoring exception"
-                       pass
-
-       if (not slice_spec or not pid):
+       if (not pid):
                print "Not started: %s"%slice_name
                exit(1)
 
@@ -189,7 +163,7 @@ def main ():
        for (sysctl_file, sysctl_name, sysctl_val) in sysctls:
                                for fn in ["/sbin/sysctl", "/usr/sbin/sysctl", "/bin/sysctl", "/usr/bin/sysctl"]:
                                        if os.path.exists(fn):
-                                               os.system('%s -w %s=%s'%(fn, sysctl_name,sysctl_val))
+                                               os.system('%s -w %s=%s  >/dev/null 2>&1'%(fn, sysctl_name,sysctl_val))
                                                break
                                else:
                                        print "Error: image does not have a sysctl binary"