[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Xen-devel] [PATCH]xl: Add "xl shutdown" command



Add "xl shutdown" command.

Signed-off-by: Yang Hongyang<yanghy@xxxxxxxxxxxxxx> 

diff -r baccadfd9418 tools/libxl/xl_cmdimpl.c
--- a/tools/libxl/xl_cmdimpl.c  Fri May 14 08:05:05 2010 +0100
+++ b/tools/libxl/xl_cmdimpl.c  Tue May 18 22:47:32 2010 +0800
@@ -3667,3 +3667,66 @@
 
     exit(0);
 }
+
+int main_shutdown(int argc, char **argv)
+{
+    int all = 0, reboot = 0, halt = 0, action = 0/*default action is 
poweroff*/;
+    struct libxl_vminfo *info;
+    char *dom = NULL;
+    int nb_vm = 0;
+    int opt, i;
+
+    while ((opt = getopt(argc, argv, "haRH")) != -1) {
+        switch (opt) {
+        case 'a':
+            all = 1;
+            break;
+        case 'R':
+            reboot = 1;
+            break;
+        case 'H':
+            halt = 1;
+            break;
+        case 'h':
+            help("shutdown");
+            exit(0);
+        default:
+            fprintf(stderr, "option `%c' not supported.\n", opt);
+            break;
+        }
+    }
+
+    if (reboot && halt) {
+        fprintf(stderr, "Reboot and Halt can not be specified together.\n\n");
+        help("shutdown");
+        exit(1);
+    }
+
+    dom = argv[optind];
+    if (!dom && all == 0) {
+        fprintf(stderr, "You must specify -a or a domain id.\n\n");
+        help("shutdown");
+        exit(1);
+    }
+
+    if (reboot)
+        action = 1;
+    else if (halt)
+        action = 4;
+
+    if (all) {
+        info = libxl_list_vm(&ctx, &nb_vm);
+        for (i = 0; i < nb_vm; i++)
+            libxl_domain_shutdown(&ctx, info[i].domid, action);
+    } else {
+        find_domain(dom);
+        if (domid == 0) {
+            fprintf(stderr, "Domain 0 cannot be shutdown.\n\n");
+            exit(1);
+        }
+        libxl_domain_shutdown(&ctx, domid, action);
+    }
+
+    exit(0);
+}
+
diff -r baccadfd9418 tools/libxl/xl_cmdimpl.h
--- a/tools/libxl/xl_cmdimpl.h  Fri May 14 08:05:05 2010 +0100
+++ b/tools/libxl/xl_cmdimpl.h  Tue May 18 22:47:32 2010 +0800
@@ -52,6 +52,7 @@
 int main_blocklist(int argc, char **argv);
 int main_blockdetach(int argc, char **argv);
 int main_uptime(int argc, char **argv);
+int main_shutdown(int argc, char **argv);
 
 void help(char *command);
 
diff -r baccadfd9418 tools/libxl/xl_cmdtable.c
--- a/tools/libxl/xl_cmdtable.c Fri May 14 08:05:05 2010 +0100
+++ b/tools/libxl/xl_cmdtable.c Tue May 18 22:47:32 2010 +0800
@@ -224,6 +224,14 @@
       "Print uptime for all/some domains",
       "[-s] [Domain]",
     },
+    { "shutdown",
+      &main_shutdown,
+      "Shutdown a domain",
+      "<Domain> [-aRH]",
+      "-a  Shutdown all VMs.\n"
+      "-R  Shutdown and reboot.\n"
+      "-H  Shutdown without reboot(halt).\n"
+    },
 };
 
 int cmdtable_len = sizeof(cmd_table)/sizeof(struct cmd_spec);

-- 
Regards
Yang Hongyang

_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel


 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.