[Libvirt-cim] [PATCH] SwitchService: make command configurable

Daniel Veillard veillard at redhat.com
Tue Apr 9 10:54:17 UTC 2013


On Tue, Apr 09, 2013 at 06:40:34PM +0800, Wenchao Xia wrote:
> Hi, John
>   Sorry to interrupt but still need you to review this patch, which
> make it work more flex on different version.
>   By the way, I got only 3 fail and they seems small problems in test
> suit's code, do you think it is ready to release 0.6.2(with this patch
> pushed)?

  didn't we want to have the testsuite patches pushed too before the
  release ?

Daniel

> >    In RH6.4 lldptool query command and output changed a bit,
> > to make it work on different version, the string used in search and
> > options used in lldptool command should be set in configuration file.
> > 
> > Signed-off-by: Wenchao Xia <xiawenc at linux.vnet.ibm.com>
> > ---
> >   libvirt-cim.conf         |   12 ++++++++++++
> >   libxkutil/misc_util.c    |   27 +++++++++++++++++++++++++++
> >   libxkutil/misc_util.h    |    4 +++-
> >   src/Virt_SwitchService.c |   31 ++++++++++++++++++++++++-------
> >   4 files changed, 66 insertions(+), 8 deletions(-)
> > 
> > diff --git a/libvirt-cim.conf b/libvirt-cim.conf
> > index 37d7b0f..40fc94a 100644
> > --- a/libvirt-cim.conf
> > +++ b/libvirt-cim.conf
> > @@ -30,3 +30,15 @@
> >   #  Default value: NULL, that is not set.
> >   #
> >   # migrate_ssh_temp_key = "/root/vm_migrate_tmp_id_rsa";
> > +
> > +# lldptool_query_options (string)
> > +#  Defines the command used in SwitchService to query VEPA support, will be
> > +#  used as "lldptool -i [INTERFACE] [OPTIONS]"
> > +#
> > +# lldptool_query_options = "-t -g ncb -V evbcfg";
> > +
> > +# vsi_search_string (string)
> > +#  Defines the string used in SwitchService to search in lldptool's output
> > +#
> > +# vsi_search_string0 = "supported forwarding mode: (0x40) reflective relay";
> > +# vsi_search_string1 = "supported capabilities: (0x7) RTE ECP VDP";
> > diff --git a/libxkutil/misc_util.c b/libxkutil/misc_util.c
> > index 00eb4b1..1a9a1b4 100644
> > --- a/libxkutil/misc_util.c
> > +++ b/libxkutil/misc_util.c
> > @@ -236,6 +236,33 @@ const char *get_mig_ssh_tmp_key(void)
> >           return prop.value_string;
> >   }
> > 
> > +const char *get_lldptool_query_options(void)
> > +{
> > +        static LibvirtcimConfigProperty prop = {
> > +                          "lldptool_query_options", CONFIG_STRING, {0}, 0};
> > +
> > +        libvirt_cim_config_get(&prop);
> > +        return prop.value_string;
> > +}
> > +
> > +const char *get_vsi_search_string0(void)
> > +{
> > +        static LibvirtcimConfigProperty prop = {
> > +                          "vsi_search_string0", CONFIG_STRING, {0}, 0};
> > +
> > +        libvirt_cim_config_get(&prop);
> > +        return prop.value_string;
> > +}
> > +
> > +const char *get_vsi_search_string1(void)
> > +{
> > +        static LibvirtcimConfigProperty prop = {
> > +                          "vsi_search_string1", CONFIG_STRING, {0}, 0};
> > +
> > +        libvirt_cim_config_get(&prop);
> > +        return prop.value_string;
> > +}
> > +
> >   virConnectPtr connect_by_classname(const CMPIBroker *broker,
> >                                      const char *classname,
> >                                      CMPIStatus *s)
> > diff --git a/libxkutil/misc_util.h b/libxkutil/misc_util.h
> > index 0f52290..06a37cc 100644
> > --- a/libxkutil/misc_util.h
> > +++ b/libxkutil/misc_util.h
> > @@ -154,7 +154,9 @@ int virt_set_status(const CMPIBroker *broker,
> > 
> >   /* get libvirt-cim config */
> >   const char *get_mig_ssh_tmp_key(void);
> > -
> > +const char *get_lldptool_query_options(void);
> > +const char *get_vsi_search_string0(void);
> > +const char *get_vsi_search_string1(void);
> >   /*
> >    * Local Variables:
> >    * mode: C
> > diff --git a/src/Virt_SwitchService.c b/src/Virt_SwitchService.c
> > index 8991426..103f125 100644
> > --- a/src/Virt_SwitchService.c
> > +++ b/src/Virt_SwitchService.c
> > @@ -46,13 +46,24 @@ static CMPIStatus check_vsi_support(char *command)
> >           CMPIStatus s = {CMPI_RC_OK, NULL};
> >           char buff[MAX_LEN];
> >           FILE *stream = NULL;
> > -        const char *searchStr[] = {"	supported forwarding mode: "
> > -                                   "(0x40) reflective relay",
> > -                                   "	supported capabilities: "
> > -                                   "(0x07) RTE ECP VDP",
> > -                                   NULL};
> > +        const char *string0 = get_vsi_search_string0();
> > +        const char *string1 = get_vsi_search_string1();
> > +        const char *searchStr[3];
> >           int  matched = 0;
> > 
> > +        if (!string0) {
> > +                string0 = "	supported forwarding mode: "
> > +                          "(0x40) reflective relay";
> > +        }
> > +        if (!string1) {
> > +                string1 = "	supported capabilities: "
> > +                          "(0x7) RTE ECP VDP";
> > +        }
> > +        CU_DEBUG("vsi searching for string [%s] [%s]", string0, string1);
> > +        searchStr[0] = string0;
> > +        searchStr[1] = string1;
> > +        searchStr[2] = NULL;
> > +
> >           // Run lldptool command to find vsi support.
> >           stream = popen(command, "r");
> >           if (stream == NULL) {
> > @@ -214,6 +225,7 @@ static CMPIStatus get_switchservice(const CMPIObjectPath *reference,
> >           int i;
> >           char **if_list;
> >           char cmd[MAX_LEN];
> > +        const char *lldptool_query_options = NULL;
> > 
> >           *_inst = NULL;
> >           conn = connect_by_classname(broker, CLASSNAME(reference), &s);
> > @@ -257,10 +269,15 @@ static CMPIStatus get_switchservice(const CMPIObjectPath *reference,
> > 
> >           CU_DEBUG("Found %d interfaces", count);
> > 
> > +        lldptool_query_options = get_lldptool_query_options();
> > +        if (!lldptool_query_options) {
> > +                lldptool_query_options = "-t -g ncb -V evbcfg";
> > +        }
> > 
> >           for (i=0; i<count; i++) {
> > -                sprintf(cmd, "lldptool -i %s -t -V evbcfg", if_list[i]);
> > -                CU_DEBUG("running command %s ...", cmd);
> > +                sprintf(cmd, "lldptool -i %s %s",
> > +                        if_list[i], lldptool_query_options);
> > +                CU_DEBUG("running command [%s]", cmd);
> >                   s = check_vsi_support(cmd);
> >                   if (s.rc == CMPI_RC_OK) {
> >                           vsi = true;
> > 
> 
> 
> -- 
> Best Regards
> 
> Wenchao Xia

-- 
Daniel Veillard      | Open Source and Standards, Red Hat
veillard at redhat.com  | libxml Gnome XML XSLT toolkit  http://xmlsoft.org/
http://veillard.com/ | virtualization library  http://libvirt.org/




More information about the Libvirt-cim mailing list