Re: [libvirt] [PATCH v2] virsh domdisplay: introduce '--all' for showing all possible graphical display
At 2016-09-29 14:27:56, "Michal Privoznik"wrote: >On 28.09.2016 15:31, Chen Hanxiao wrote: >> From: Chen Hanxiao >> >> For one VM, it could had more than one graphical display. >> Such as we coud add both vnc and spice display to a VM. >> >> This patch introduces '--all' for showing all >> possible graphical display of a active VM. >> >> Signed-off-by: Chen Hanxiao >> --- >> v2: VIR_FREE befor use in loops >> add descriptions in virsh.pod >> >> tools/virsh-domain.c | 15 ++- >> tools/virsh.pod | 3 ++- >> 2 files changed, 16 insertions(+), 2 deletions(-) > >This one looks better. But I've got some points. > >> >> diff --git a/tools/virsh-domain.c b/tools/virsh-domain.c >> index 3829b17..a6124b6 100644 >> --- a/tools/virsh-domain.c >> +++ b/tools/virsh-domain.c >> @@ -10648,6 +10648,10 @@ static const vshCmdOptDef opts_domdisplay[] = { >> .help = N_("select particular graphical display " >> "(e.g. \"vnc\", \"spice\", \"rdp\")") >> }, >> +{.name = "all", >> + .type = VSH_OT_BOOL, >> + .help = N_("show all possible graphical displays") >> +}, >> {.name = NULL} >> }; >> > >What should happen if users pass both --type and --all? In that case the >semantics for --all is changed I guess and according to this code we would >print all URIs for given type. However, there can be just one graphical type >per domain and thus one URI. We had code: if (type && STRNEQ(type, scheme[iter])) continue; in the front of the loop. Maybe we should ignore --type if --all specified. [...] > >Almost. You forgot to update the list of arguments: > >-=item B I [I<--include-password>] [[I<--type>] B] >+=item B I [I<--include-password>] [[I<--type>] B] >[I<--all>] > >Normally, I'd fix this before pushing and just point it out in review, but now >we are in the freeze and this is a feature (during freeze only bugfixes can be >pushed). Moreover, there's the unclear behaviour I described above. > I'll send a v3 patch to address these issues for the next version of libvirt. Regards, - Chen -- libvir-list mailing list libvir-list@redhat.com https://www.redhat.com/mailman/listinfo/libvir-list
Re: [libvirt] [PATCH v2] virsh domdisplay: introduce '--all' for showing all possible graphical display
On 28.09.2016 15:31, Chen Hanxiao wrote: > From: Chen Hanxiao> > For one VM, it could had more than one graphical display. > Such as we coud add both vnc and spice display to a VM. > > This patch introduces '--all' for showing all > possible graphical display of a active VM. > > Signed-off-by: Chen Hanxiao > --- > v2: VIR_FREE befor use in loops > add descriptions in virsh.pod > > tools/virsh-domain.c | 15 ++- > tools/virsh.pod | 3 ++- > 2 files changed, 16 insertions(+), 2 deletions(-) This one looks better. But I've got some points. > > diff --git a/tools/virsh-domain.c b/tools/virsh-domain.c > index 3829b17..a6124b6 100644 > --- a/tools/virsh-domain.c > +++ b/tools/virsh-domain.c > @@ -10648,6 +10648,10 @@ static const vshCmdOptDef opts_domdisplay[] = { > .help = N_("select particular graphical display " > "(e.g. \"vnc\", \"spice\", \"rdp\")") > }, > +{.name = "all", > + .type = VSH_OT_BOOL, > + .help = N_("show all possible graphical displays") > +}, > {.name = NULL} > }; > What should happen if users pass both --type and --all? In that case the semantics for --all is changed I guess and according to this code we would print all URIs for given type. However, there can be just one graphical type per domain and thus one URI. > @@ -10671,6 +10675,7 @@ cmdDomDisplay(vshControl *ctl, const vshCmd *cmd) > int tmp; > int flags = 0; > bool params = false; > +bool all = vshCommandOptBool(cmd, "all"); > const char *xpath_fmt = > "string(/domain/devices/graphics[@type='%s']/%s)"; > virSocketAddr addr; > > @@ -10701,6 +10706,7 @@ cmdDomDisplay(vshControl *ctl, const vshCmd *cmd) > continue; > > /* Create our XPATH lookup for the current display's port */ > +VIR_FREE(xpath); > if (virAsprintf(, xpath_fmt, scheme[iter], "@port") < 0) > goto cleanup; > > @@ -10733,6 +10739,7 @@ cmdDomDisplay(vshControl *ctl, const vshCmd *cmd) > > /* Attempt to get the listening addr if set for the current > * graphics scheme */ > +VIR_FREE(listen_addr); > listen_addr = virXPathString(xpath, ctxt); > VIR_FREE(xpath); > > @@ -10788,6 +10795,7 @@ cmdDomDisplay(vshControl *ctl, const vshCmd *cmd) > goto cleanup; > > /* Attempt to get the password */ > +VIR_FREE(passwd); > passwd = virXPathString(xpath, ctxt); > VIR_FREE(xpath); > > @@ -10840,12 +10848,17 @@ cmdDomDisplay(vshControl *ctl, const vshCmd *cmd) > } > > /* Print out our full URI */ > +VIR_FREE(output); > output = virBufferContentAndReset(); > vshPrint(ctl, "%s", output); > > /* We got what we came for so return successfully */ > ret = true; > -break; > +if (!all) { > +break; > +} else { > +vshPrint(ctl, "\n"); > +} > } > > if (!ret) { > diff --git a/tools/virsh.pod b/tools/virsh.pod > index 49abda9..6255b36 100644 > --- a/tools/virsh.pod > +++ b/tools/virsh.pod > @@ -1229,7 +1229,8 @@ Output a URI which can be used to connect to the > graphical display of the > domain via VNC, SPICE or RDP. The particular graphical display type can > be selected using the B parameter (e.g. "vnc", "spice", "rdp"). If > I<--include-password> is specified, the SPICE channel password will be > -included in the URI. > +included in the URI. If I<--all> is specified, then all show all possible > +graphical displays, for a VM could have more than one graphical displays. > Almost. You forgot to update the list of arguments: -=item B I [I<--include-password>] [[I<--type>] B] +=item B I [I<--include-password>] [[I<--type>] B] [I<--all>] Normally, I'd fix this before pushing and just point it out in review, but now we are in the freeze and this is a feature (during freeze only bugfixes can be pushed). Moreover, there's the unclear behaviour I described above. Michal -- libvir-list mailing list libvir-list@redhat.com https://www.redhat.com/mailman/listinfo/libvir-list
[libvirt] [PATCH v2] virsh domdisplay: introduce '--all' for showing all possible graphical display
From: Chen HanxiaoFor one VM, it could had more than one graphical display. Such as we coud add both vnc and spice display to a VM. This patch introduces '--all' for showing all possible graphical display of a active VM. Signed-off-by: Chen Hanxiao --- v2: VIR_FREE befor use in loops add descriptions in virsh.pod tools/virsh-domain.c | 15 ++- tools/virsh.pod | 3 ++- 2 files changed, 16 insertions(+), 2 deletions(-) diff --git a/tools/virsh-domain.c b/tools/virsh-domain.c index 3829b17..a6124b6 100644 --- a/tools/virsh-domain.c +++ b/tools/virsh-domain.c @@ -10648,6 +10648,10 @@ static const vshCmdOptDef opts_domdisplay[] = { .help = N_("select particular graphical display " "(e.g. \"vnc\", \"spice\", \"rdp\")") }, +{.name = "all", + .type = VSH_OT_BOOL, + .help = N_("show all possible graphical displays") +}, {.name = NULL} }; @@ -10671,6 +10675,7 @@ cmdDomDisplay(vshControl *ctl, const vshCmd *cmd) int tmp; int flags = 0; bool params = false; +bool all = vshCommandOptBool(cmd, "all"); const char *xpath_fmt = "string(/domain/devices/graphics[@type='%s']/%s)"; virSocketAddr addr; @@ -10701,6 +10706,7 @@ cmdDomDisplay(vshControl *ctl, const vshCmd *cmd) continue; /* Create our XPATH lookup for the current display's port */ +VIR_FREE(xpath); if (virAsprintf(, xpath_fmt, scheme[iter], "@port") < 0) goto cleanup; @@ -10733,6 +10739,7 @@ cmdDomDisplay(vshControl *ctl, const vshCmd *cmd) /* Attempt to get the listening addr if set for the current * graphics scheme */ +VIR_FREE(listen_addr); listen_addr = virXPathString(xpath, ctxt); VIR_FREE(xpath); @@ -10788,6 +10795,7 @@ cmdDomDisplay(vshControl *ctl, const vshCmd *cmd) goto cleanup; /* Attempt to get the password */ +VIR_FREE(passwd); passwd = virXPathString(xpath, ctxt); VIR_FREE(xpath); @@ -10840,12 +10848,17 @@ cmdDomDisplay(vshControl *ctl, const vshCmd *cmd) } /* Print out our full URI */ +VIR_FREE(output); output = virBufferContentAndReset(); vshPrint(ctl, "%s", output); /* We got what we came for so return successfully */ ret = true; -break; +if (!all) { +break; +} else { +vshPrint(ctl, "\n"); +} } if (!ret) { diff --git a/tools/virsh.pod b/tools/virsh.pod index 49abda9..6255b36 100644 --- a/tools/virsh.pod +++ b/tools/virsh.pod @@ -1229,7 +1229,8 @@ Output a URI which can be used to connect to the graphical display of the domain via VNC, SPICE or RDP. The particular graphical display type can be selected using the B parameter (e.g. "vnc", "spice", "rdp"). If I<--include-password> is specified, the SPICE channel password will be -included in the URI. +included in the URI. If I<--all> is specified, then all show all possible +graphical displays, for a VM could have more than one graphical displays. =item B I -- 1.8.3.1 -- libvir-list mailing list libvir-list@redhat.com https://www.redhat.com/mailman/listinfo/libvir-list