Hi Keir, Stefano, It''s based on my previous 2 patchs: Add "xl domid" command / Add "xl domname" command ========================================================= Add "xl rename" command, a clone of "xm rename". Signed-off-by: Yang Hongyang <yanghy@cn.fujitsu.com> diff -r 357eab43f7ee -r 636a21458395 tools/libxl/xl_cmdimpl.c --- a/tools/libxl/xl_cmdimpl.c Fri May 07 20:06:28 2010 +0800 +++ b/tools/libxl/xl_cmdimpl.c Fri May 07 22:01:41 2010 +0800 @@ -1227,6 +1227,9 @@ } else if (!strcmp(command, "domname")) { printf("Usage: xl domname <DomainId>\n\n"); printf("Convert a domain id to domain name.\n"); + } else if (!strcmp(command, "rename")) { + printf("Usage: xl rename <Domain> <NewDomainName>\n\n"); + printf("Rename a domain.\n"); } } @@ -3024,3 +3027,45 @@ exit(0); } + +int main_rename(int argc, char **argv) +{ + int opt; + char *dom; + char *new_name; + xs_transaction_t t; + + while ((opt = getopt(argc, argv, "h")) != -1) { + switch (opt) { + case ''h'': + help("rename"); + exit(0); + default: + fprintf(stderr, "option `%c'' not supported.\n", opt); + break; + } + } + + dom = argv[optind++]; + if (!dom || !argv[optind]) { + fprintf(stderr, "''xl rename'' requires 2 arguments.\n\n"); + help("rename"); + exit(1); + } + + find_domain(dom); + new_name = argv[optind]; + +retry_transaction: + t = xs_transaction_start(ctx.xsh); + if (libxl_domain_rename(&ctx, domid, common_domname, new_name, t)) { + fprintf(stderr, "Can''t rename domain ''%s''.\n", dom); + exit(1); + } + + if (!xs_transaction_end(ctx.xsh, t, 0)) + if (errno == EAGAIN) + goto retry_transaction; + + exit(0); +} diff -r 357eab43f7ee -r 636a21458395 tools/libxl/xl_cmdimpl.h --- a/tools/libxl/xl_cmdimpl.h Fri May 07 20:06:28 2010 +0800 +++ b/tools/libxl/xl_cmdimpl.h Fri May 07 22:01:41 2010 +0800 @@ -37,5 +37,6 @@ int main_sched_credit(int argc, char **argv); int main_domid(int argc, char **argv); int main_domname(int argc, char **argv); +int main_rename(int argc, char **argv); void help(char *command); diff -r 357eab43f7ee -r 636a21458395 tools/libxl/xl_cmdtable.c --- a/tools/libxl/xl_cmdtable.c Fri May 07 20:06:28 2010 +0800 +++ b/tools/libxl/xl_cmdtable.c Fri May 07 22:01:41 2010 +0800 @@ -38,6 +38,7 @@ { "sched-credit", &main_sched_credit, "get/set credit scheduler parameters" }, { "domid", &main_domid, "convert a domain name to domain id"}, { "domname", &main_domname, "convert a domain id to domain name"}, + { "rename", &main_rename, "rename a domain"}, }; int cmdtable_len = sizeof(cmd_table)/sizeof(struct cmd_spec); -- Regards Yang Hongyang _______________________________________________ Xen-devel mailing list Xen-devel@lists.xensource.com http://lists.xensource.com/xen-devel
Stefano Stabellini
2010-May-07 15:45 UTC
Re: [Xen-devel] [PATCH 3/3]xl: Add "xl rename" command
On Fri, 7 May 2010, Yang Hongyang wrote:> Hi Keir, Stefano, > > It''s based on my previous 2 patchs: Add "xl domid" command / Add "xl domname" command > > =========================================================> > Add "xl rename" command, a clone of "xm rename". > > Signed-off-by: Yang Hongyang <yanghy@cn.fujitsu.com> > > diff -r 357eab43f7ee -r 636a21458395 tools/libxl/xl_cmdimpl.c > --- a/tools/libxl/xl_cmdimpl.c Fri May 07 20:06:28 2010 +0800 > +++ b/tools/libxl/xl_cmdimpl.c Fri May 07 22:01:41 2010 +0800 > @@ -1227,6 +1227,9 @@ > } else if (!strcmp(command, "domname")) { > printf("Usage: xl domname <DomainId>\n\n"); > printf("Convert a domain id to domain name.\n"); > + } else if (!strcmp(command, "rename")) { > + printf("Usage: xl rename <Domain> <NewDomainName>\n\n"); > + printf("Rename a domain.\n"); > } > } > > @@ -3024,3 +3027,45 @@ > > exit(0); > } > + > +int main_rename(int argc, char **argv) > +{ > + int opt; > + char *dom; > + char *new_name; > + xs_transaction_t t; > + > + while ((opt = getopt(argc, argv, "h")) != -1) { > + switch (opt) { > + case ''h'': > + help("rename"); > + exit(0); > + default: > + fprintf(stderr, "option `%c'' not supported.\n", opt); > + break; > + } > + } > + > + dom = argv[optind++]; > + if (!dom || !argv[optind]) { > + fprintf(stderr, "''xl rename'' requires 2 arguments.\n\n"); > + help("rename"); > + exit(1); > + } > + > + find_domain(dom); > + new_name = argv[optind]; > + > +retry_transaction: > + t = xs_transaction_start(ctx.xsh); > + if (libxl_domain_rename(&ctx, domid, common_domname, new_name, t)) { > + fprintf(stderr, "Can''t rename domain ''%s''.\n", dom); > + exit(1); > + } > + > + if (!xs_transaction_end(ctx.xsh, t, 0)) > + if (errno == EAGAIN) > + goto retry_transaction; > + > + exit(0); > +}There is no need to explicitly handle the transaction here, just pass 0 to libxl_domain_rename. In the near future libxl_domain_rename won''t take a transaction anymore (libxl clients shouldn''t know about xenstore). _______________________________________________ Xen-devel mailing list Xen-devel@lists.xensource.com http://lists.xensource.com/xen-devel
Christoph Egger
2010-May-07 15:56 UTC
Re: [Xen-devel] [PATCH 3/3]xl: Add "xl rename" command
On Friday 07 May 2010 17:45:25 Stefano Stabellini wrote:> On Fri, 7 May 2010, Yang Hongyang wrote: > > Hi Keir, Stefano, > > > > It''s based on my previous 2 patchs: Add "xl domid" command / Add "xl > > domname" command > > > > =========================================================> > > > Add "xl rename" command, a clone of "xm rename". > > > > Signed-off-by: Yang Hongyang <yanghy@cn.fujitsu.com> > > > > diff -r 357eab43f7ee -r 636a21458395 tools/libxl/xl_cmdimpl.c > > --- a/tools/libxl/xl_cmdimpl.c Fri May 07 20:06:28 2010 +0800 > > +++ b/tools/libxl/xl_cmdimpl.c Fri May 07 22:01:41 2010 +0800 > > @@ -1227,6 +1227,9 @@ > > } else if (!strcmp(command, "domname")) { > > printf("Usage: xl domname <DomainId>\n\n"); > > printf("Convert a domain id to domain name.\n"); > > + } else if (!strcmp(command, "rename")) { > > + printf("Usage: xl rename <Domain> <NewDomainName>\n\n"); > > + printf("Rename a domain.\n"); > > } > > } > > > > @@ -3024,3 +3027,45 @@ > > > > exit(0); > > } > > + > > +int main_rename(int argc, char **argv) > > +{ > > + int opt; > > + char *dom; > > + char *new_name; > > + xs_transaction_t t; > > + > > + while ((opt = getopt(argc, argv, "h")) != -1) { > > + switch (opt) { > > + case ''h'': > > + help("rename"); > > + exit(0); > > + default: > > + fprintf(stderr, "option `%c'' not supported.\n", opt); > > + break; > > + } > > + } > > + > > + dom = argv[optind++]; > > + if (!dom || !argv[optind]) { > > + fprintf(stderr, "''xl rename'' requires 2 arguments.\n\n"); > > + help("rename"); > > + exit(1); > > + } > > + > > + find_domain(dom); > > + new_name = argv[optind]; > > + > > +retry_transaction: > > + t = xs_transaction_start(ctx.xsh); > > + if (libxl_domain_rename(&ctx, domid, common_domname, new_name, t)) { > > + fprintf(stderr, "Can''t rename domain ''%s''.\n", dom); > > + exit(1); > > + } > > + > > + if (!xs_transaction_end(ctx.xsh, t, 0)) > > + if (errno == EAGAIN) > > + goto retry_transaction; > > + > > + exit(0); > > +} > > There is no need to explicitly handle the transaction here, just pass 0 > to libxl_domain_rename. > In the near future libxl_domain_rename won''t take a transaction anymore > (libxl clients shouldn''t know about xenstore).Setting the domain name must be already implemented somewhere used by xl create. I think, with these new commands there are some refactorings possible resulting in less fragmented code. Christoph -- ---to satisfy European Law for business letters: Advanced Micro Devices GmbH Einsteinring 24, 85609 Dornach b. Muenchen Geschaeftsfuehrer: Andrew Bowd, Thomas M. McCoy, Giuliano Meroni Sitz: Dornach, Gemeinde Aschheim, Landkreis Muenchen Registergericht Muenchen, HRB Nr. 43632 _______________________________________________ Xen-devel mailing list Xen-devel@lists.xensource.com http://lists.xensource.com/xen-devel
Yang Hongyang
2010-May-10 00:53 UTC
Re: [Xen-devel] [PATCH 3/3]xl: Add "xl rename" command
Hi Stefano, On 05/07/2010 11:45 PM, Stefano Stabellini wrote:> On Fri, 7 May 2010, Yang Hongyang wrote: >> Hi Keir, Stefano, >> >> It''s based on my previous 2 patchs: Add "xl domid" command / Add "xl domname" command >> >> =========================================================>> >> Add "xl rename" command, a clone of "xm rename". >> >> Signed-off-by: Yang Hongyang <yanghy@cn.fujitsu.com> >> >> diff -r 357eab43f7ee -r 636a21458395 tools/libxl/xl_cmdimpl.c >> --- a/tools/libxl/xl_cmdimpl.c Fri May 07 20:06:28 2010 +0800 >> +++ b/tools/libxl/xl_cmdimpl.c Fri May 07 22:01:41 2010 +0800 >> @@ -1227,6 +1227,9 @@ >> } else if (!strcmp(command, "domname")) { >> printf("Usage: xl domname <DomainId>\n\n"); >> printf("Convert a domain id to domain name.\n"); >> + } else if (!strcmp(command, "rename")) { >> + printf("Usage: xl rename <Domain> <NewDomainName>\n\n"); >> + printf("Rename a domain.\n"); >> } >> } >> >> @@ -3024,3 +3027,45 @@ >> >> exit(0); >> } >> + >> +int main_rename(int argc, char **argv) >> +{ >> + int opt; >> + char *dom; >> + char *new_name; >> + xs_transaction_t t; >> + >> + while ((opt = getopt(argc, argv, "h")) != -1) { >> + switch (opt) { >> + case ''h'': >> + help("rename"); >> + exit(0); >> + default: >> + fprintf(stderr, "option `%c'' not supported.\n", opt); >> + break; >> + } >> + } >> + >> + dom = argv[optind++]; >> + if (!dom || !argv[optind]) { >> + fprintf(stderr, "''xl rename'' requires 2 arguments.\n\n"); >> + help("rename"); >> + exit(1); >> + } >> + >> + find_domain(dom); >> + new_name = argv[optind]; >> + >> +retry_transaction: >> + t = xs_transaction_start(ctx.xsh); >> + if (libxl_domain_rename(&ctx, domid, common_domname, new_name, t)) { >> + fprintf(stderr, "Can''t rename domain ''%s''.\n", dom); >> + exit(1); >> + } >> + >> + if (!xs_transaction_end(ctx.xsh, t, 0)) >> + if (errno == EAGAIN) >> + goto retry_transaction; >> + >> + exit(0); >> +} > > There is no need to explicitly handle the transaction here, just pass 0 > to libxl_domain_rename. > In the near future libxl_domain_rename won''t take a transaction anymore > (libxl clients shouldn''t know about xenstore). > >I will send a patch to fix it.> >-- Regards Yang Hongyang _______________________________________________ Xen-devel mailing list Xen-devel@lists.xensource.com http://lists.xensource.com/xen-devel