[RFE] IPA API Versioning

Bug #1602265 reported by Sam Betts on 2016-07-12
This bug affects 1 person
Affects Status Importance Assigned to Milestone
In Progress
Sam Betts
In Progress
Sam Betts

Bug Description

It was decided at the Ironic newton midcycle that we need some form of API version negotiation between Ironic and IPA. This is required to allow Ironic to recognise that it is talking to an older ramdisk, and that newer features will not be available.

Notes from during midcycle:
sambetts will put up a spec for this
some people prefer semver for everything
some people think easier to use same/similar versioning as ironic's API version
N ironic with N+1 ipa, N-1 ipa, N ipa
IPA sends API Version on Lookup
Ironic uses API Version to gracefully degrade features.
Which tests cover N-1 and N+1 ?
Grenade covers master ironic with N-1 IPA
Another grenade (ipa-grenade) could cover master IPA with N-1 ironic.
src job on IPA to test IPA master against N-1 Ironic
this has a potential to break in two cases:
ironic n-1 is broken
ironic n-1 devstack plugin cannot build master IPA
we think these will be rare cases and won't work to avoid them unless we find we need to
there's a couple solutions there if we do need to
IPA devstack plugin for building IPA
run agent-master jobs on n-1 ironic patches
Normal gate tests cover master with master

Sam Betts (sambetts) on 2016-07-12
Changed in ironic:
importance: Undecided → Wishlist
assignee: nobody → Sam Betts (sambetts)
Dmitry Tantsur (divius) on 2016-07-18
Changed in ironic-python-agent:
status: New → Confirmed
Changed in ironic:
status: New → Confirmed
Sam Betts (sambetts) on 2016-08-12
description: updated

Fix proposed to branch: master
Review: https://review.openstack.org/364834

Changed in ironic-python-agent:
status: Confirmed → In Progress

Fix proposed to branch: master
Review: https://review.openstack.org/364861

Changed in ironic:
status: Confirmed → In Progress
tags: added: needs-spec

Reviewed: https://review.openstack.org/341086
Committed: https://git.openstack.org/cgit/openstack/ironic-specs/commit/?id=c0ebaa2c7ad78f5373caecf9643f159a23ad825e
Submitter: Jenkins
Branch: master

commit c0ebaa2c7ad78f5373caecf9643f159a23ad825e
Author: Sam Betts <email address hidden>
Date: Tue Jul 12 17:47:36 2016 +0100

    Add spec for IPA API versioning support

    Change-Id: I7b4cbf19ae35c35d2938d27d9a1745cb949b13b5
    Related-Bug: #1602265

Reviewed: https://review.openstack.org/364861
Committed: https://git.openstack.org/cgit/openstack/ironic/commit/?id=b642f28be49f31693772231ee921ecfdbd7c80b9
Submitter: Zuul
Branch: master

commit b642f28be49f31693772231ee921ecfdbd7c80b9
Author: Sam Betts <email address hidden>
Date: Fri Sep 2 12:45:26 2016 +0100

    Receive and store agent version on heartbeat

    This patch enables receiving agent_version as part of heartbeat, and
    stores this information on driver_internal_info. This is so that Ironic
    can dynamically adjust which features and parameters it uses based on
    which version of the agent is being used.

    Change-Id: I400adba5d908b657751a83971811e8586f46c673
    Partial-Bug: #1602265

Reviewed: https://review.openstack.org/364834
Committed: https://git.openstack.org/cgit/openstack/ironic-python-agent/commit/?id=903ec3ff125663ad749748dd438860ef3489e711
Submitter: Zuul
Branch: master

commit 903ec3ff125663ad749748dd438860ef3489e711
Author: Sam Betts <email address hidden>
Date: Fri Sep 2 11:37:08 2016 +0100

    Include IPA Version during heartbeat

    In order for Ironic to know what parameters can be sent to IPA commands,
    Ironic needs to know which version of IPA it is talking to. This patch
    adds a new node heartbeat parameter agent_version which will carry the IPA
    version information to Ironic.

    Change-Id: I27e3311accf3a113a48a73df372ed46ff50c7e22
    Partial-Bug: #1602265
    Depends-On: I400adba5d908b657751a83971811e8586f46c673

Ruby Loo (rloo) on 2018-02-12
tags: added: ref-approved
removed: needs-spec rfe
Ruby Loo (rloo) wrote :

Here's the status as I understand it. The coding part is done. Looking over the spec [1], these are still outstanding:

- Need to add a grenade test to IPA to test last ironic named release + master IPA
- Need to add the developer documentation mention in the work items section
- Need to document which versions of IPA are supported with which versions of ironic

[1] https://specs.openstack.org/openstack/ironic-specs/specs/approved/ipa_api_versioning.html

tags: added: rfe-approved
removed: ref-approved

I'm -1 to another grenade test. It is extremely costly and doesn't gain us much. Besides, we're going to struggle to troubleshoot and fix it if/when it breaks.

To post a comment you must log in.
This report contains Public information  Edit
Everyone can see this information.

Other bug subscribers