[openstack-dev] [nova] [tempest] [ceilometer] Defining Diagnotics API Schema (was: looking for clarification...)

Doug Hellmann doug.hellmann at dreamhost.com
Tue Oct 15 13:36:17 UTC 2013


On Tue, Oct 15, 2013 at 8:13 AM, Sean Dague <sean at dague.net> wrote:

> "Open Ended API" isn't really an API. An API has a contract, otherwise it
> isn't an API.
>

I need that saying on a t-shirt.



> The diagnostics REST call currently seems to have no contract at all, and
> is just implemented by the underlying driver to whatever seems like a good
> idea today (also, no versioning on things, so what libvirt returns in
> grizzly vs. havana is up in the air).
>
> At minimum we need some kind of per driver (probably with a version) json
> schema so you could at least identify over the wire what you should be
> expecting. Even better would be a generic definition, but I get that takes
> time / effort.
>

We have found it very useful in ceilometer to define classes (even simple
namedtuples) for passing data into and out of our drivers. It is much
easier to understand the expectations on both sides of the plugin API than
when using dictionaries.


>
> I think the approach at this point is a bug on nova has been filed -
> https://bugs.launchpad.net/nova/+bug/1240043 ... and  we're going to skip
> the tempest tests entirely based on that bug. Testing an API, that isn't
> actually an API, is really beyond tempest scope.
>
> On Mon, Oct 14, 2013 at 4:54 AM, Bob Ball <bob.ball at citrix.com> wrote:
>
>>  I’m happy with that approach – again I’ve not seen any discussions
>> about how this should be done.****
>>
>> ** **
>>
>> I’ve added [tempest] and [ceilometer] tags so we can hopefully get input
>> from the guys involved.****
>>
>> ** **
>>
>> Bob****
>>
>> ** **
>>
>> *From:* Gary Kotton [mailto:gkotton at vmware.com]
>> *Sent:* 13 October 2013 05:21
>>
>> *To:* OpenStack Development Mailing List
>> *Subject:* Re: [openstack-dev] [nova] Looking for clarification on the
>> diagnostics API****
>>
>>  ** **
>>
>> Hi,****
>>
>> I agree with Matt here. This is not broad enough. One option is to have a
>> tempest class that overrides for various backend plugins. Then the test can
>> be haredednd for each driver. I am not sure if that is something that has
>> been talked about.****
>>
>> Thanks****
>>
>> Gary****
>>
>> ** **
>>
>> *From: *Matt Riedemann <mriedem at us.ibm.com>
>> *Reply-To: *OpenStack Development Mailing List <
>> openstack-dev at lists.openstack.org>
>> *Date: *Sunday, October 13, 2013 6:13 AM
>> *To: *OpenStack Development Mailing List <
>> openstack-dev at lists.openstack.org>
>> *Subject: *Re: [openstack-dev] [nova] Looking for clarification on the
>> diagnostics API****
>>
>> ** **
>>
>> There is also a tempest patch now to ease some of the libvirt-specific
>> keys checked in the new diagnostics tests there:
>>
>> https://review.openstack.org/#/c/51412/
>>
>> To relay some of my concerns that I put in that patch:
>>
>> *I'm not sure how I feel about this. It should probably be more generic
>> but I think we need more than just a change in tempest to enforce it, i.e.
>> we should have a nova patch that changes the doc strings for the abstract
>> compute driver method to specify what the minimum keys are for the info
>> returned, maybe a doc api sample change, etc?*
>>
>> *For reference, here is the mailing list post I started on this last
>> week:*
>>
>> *
>> http://lists.openstack.org/pipermail/openstack-dev/2013-October/016385.html
>> *<http://lists.openstack.org/pipermail/openstack-dev/2013-October/016385.html>
>>
>> *There are also docs here (these examples use xen and libvirt):*
>>
>> *
>> http://docs.openstack.org/grizzly/openstack-compute/admin/content/configuring-openstack-compute-basics.html
>> *<http://docs.openstack.org/grizzly/openstack-compute/admin/content/configuring-openstack-compute-basics.html>
>>
>> *And under procedure 4.4 here:*
>>
>> *
>> http://docs.openstack.org/admin-guide-cloud/content/ch_introduction-to-openstack-compute.html#section_manage-the-cloud
>> *<http://docs.openstack.org/admin-guide-cloud/content/ch_introduction-to-openstack-compute.html#section_manage-the-cloud>
>>
>> =============
>>
>> I also found this wiki page related to metering and the nova diagnostics
>> API:
>>
>>
>> https://wiki.openstack.org/wiki/EfficientMetering/FutureNovaInteractionModel
>>
>> So it seems like if at some point this will be used with ceilometer it
>> should be standardized a bit which is what the Tempest part starts but I
>> don't want it to get lost there.
>>
>>
>> Thanks,
>>
>> *MATT RIEDEMANN*
>> Advisory Software Engineer
>> Cloud Solutions and OpenStack Development****
>>    ------------------------------
>>
>> *Phone:* 1-507-253-7622 | *Mobile:* 1-507-990-1889*
>> E-mail:* mriedem at us.ibm.com****
>>
>> [image: IBM]
>>
>> 3605 Hwy 52 N
>> Rochester, MN 55901-1407
>> United States****
>>
>>
>>
>>
>>
>>
>> From:        Gary Kotton <gkotton at vmware.com>
>> To:        OpenStack Development Mailing List <
>> openstack-dev at lists.openstack.org>,
>> Date:        10/12/2013 01:42 PM
>> Subject:        Re: [openstack-dev] [nova] Looking for clarification on
>> the diagnostics API****
>>  ------------------------------
>>
>>
>>
>>
>> Yup, it seems to be hypervisor specific. I have added in the Vmware
>> support following you correcting in the Vmware driver.
>> Thanks
>> Gary
>>
>> *From: *Matt Riedemann <mriedem at us.ibm.com>*
>> Reply-To: *OpenStack Development Mailing List <
>> openstack-dev at lists.openstack.org>*
>> Date: *Thursday, October 10, 2013 10:17 PM*
>> To: *OpenStack Development Mailing List <
>> openstack-dev at lists.openstack.org>*
>> Subject: *Re: [openstack-dev] [nova] Looking for clarification on the
>> diagnostics API
>>
>> Looks like this has been brought up a couple of times:
>> *
>> *https://lists.launchpad.net/openstack/msg09138.html
>> *
>> *https://lists.launchpad.net/openstack/msg08555.html
>>
>> But they seem to kind of end up in the same place I already am - it seems
>> to be an open-ended API that is hypervisor-specific.
>>
>>
>>
>> Thanks,
>> *
>> MATT RIEDEMANN*
>> Advisory Software Engineer
>> Cloud Solutions and OpenStack Development****
>>    ------------------------------
>>
>> *Phone:* 1-507-253-7622 | *Mobile:* 1-507-990-1889*
>> E-mail:* mriedem at us.ibm.com****
>>
>> [image: IBM]
>>
>> 3605 Hwy 52 N
>> Rochester, MN 55901-1407
>> United States****
>>
>>
>>
>>
>>
>>
>>
>> From:        Matt Riedemann/Rochester/IBM
>> To:        "OpenStack Development Mailing List" <
>> openstack-dev at lists.openstack.org>,
>> Date:        10/10/2013 02:12 PM
>> Subject:        [nova] Looking for clarification on the diagnostics API**
>> **
>>  ------------------------------
>>
>>
>>
>> Tempest recently got some new tests for the nova diagnostics API [1]
>> which failed when I was running against the powervm driver since it doesn't
>> implement that API.  I started looking at other drivers that did and found
>> that libvirt, vmware and xenapi at least had code for the get_diagnostics
>> method.  I found that the vmware driver was re-using it's get_info method
>> for get_diagnostics which led to bug 1237622 [2] but overall caused some
>> confusion about the difference between the compute driver's get_info and
>> get_diagnostics mehods.  It looks like get_info is mainly just used to get
>> the power_state of the instance.
>>
>> First, the get_info method has a nice docstring for what it needs
>> returned [3] but the get_diagnostics method doesn't [4].  From looking at
>> the API docs [5], the diagnostics API basically gives an example of values
>> to get back which is completely based on what the libvirt driver returns.
>>  Looking at the xenapi driver code, it looks like it does things a bit
>> differently than the libvirt driver (maybe doesn't return the exact same
>> keys, but it returns information based on what Xen provides).
>>
>> I'm thinking about implementing the diagnostics API for the powervm
>> driver but I'd like to try and get some help on defining just what should
>> be returned from that call.  There are some IVM commands available to the
>> powervm driver for getting hardware resource information about an LPAR so I
>> think I could implement this pretty easily.
>>
>> I think it basically comes down to providing information about the
>> processor, memory, storage and network interfaces for the instance but if
>> anyone has more background information on that API I'd like to hear it.
>>
>> [1]
>> https://github.com/openstack/tempest/commit/da0708587432e47f85241201968e6402190f0c5d
>> [2] https://bugs.launchpad.net/nova/+bug/1237622
>> [3]
>> https://github.com/openstack/nova/blob/2013.2.rc1/nova/virt/driver.py#L144
>> [4]
>> https://github.com/openstack/nova/blob/2013.2.rc1/nova/virt/driver.py#L299
>> [5] http://paste.openstack.org/show/48236/
>>
>>
>>
>> Thanks,
>> *
>> MATT RIEDEMANN*
>> Advisory Software Engineer
>> Cloud Solutions and OpenStack Development****
>>    ------------------------------
>>
>> *Phone:* 1-507-253-7622 | *Mobile:* 1-507-990-1889*
>> E-mail:* mriedem at us.ibm.com****
>>
>> [image: IBM]
>>
>> 3605 Hwy 52 N
>> Rochester, MN 55901-1407
>> United States****
>>
>>
>>
>> _______________________________________________
>> OpenStack-dev mailing list
>> OpenStack-dev at lists.openstack.org
>> http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev
>>
>> [attachment "ATT00001..gif" deleted by Matt Riedemann/Rochester/IBM]
>> [attachment "ATT00002..gif" deleted by Matt Riedemann/Rochester/IBM] ****
>>
>> _______________________________________________
>> OpenStack-dev mailing list
>> OpenStack-dev at lists.openstack.org
>> http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev
>>
>>
>
>
> --
> Sean Dague
> http://dague.net
>
> _______________________________________________
> OpenStack-dev mailing list
> OpenStack-dev at lists.openstack.org
> http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.openstack.org/pipermail/openstack-dev/attachments/20131015/768e527f/attachment.html>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: image001.gif
Type: image/gif
Size: 1851 bytes
Desc: not available
URL: <http://lists.openstack.org/pipermail/openstack-dev/attachments/20131015/768e527f/attachment.gif>


More information about the OpenStack-dev mailing list