[RFE] Add volume connection information into ironic db

Bug #1526231 reported by Vladyslav Drok on 2015-12-15
30
This bug affects 4 people
Affects Status Importance Assigned to Milestone
Ironic
Fix Released
Wishlist
Dmitry Tantsur

Bug Description

This blueprint introduces following changes to Ironic DB.

- new table named volume_connectors
- new table named volume_targets
- new capabilities to figure out if node supports booting from a particular volume.

When user starts bare metal instance with cinder volume, nova orchestrates the communication with Cinder and Ironic. The work flow in boot process is like following:

- User asks Nova to boot a node with a cinder volume
- Nova calls ironic to collect iSCSI/FC initiator information -(a)
  - Ironic collect initiator information and return it to Nova
- Nova calls Cinder to attach the volume to the node
  - Cinder attaches the volume to the node and returns connection information
    which includes target information
- Nova calls Ironic to set target information -(b)
- Nova calls Ironic to spawn a instance
  - If the node boots from volume, Ironic asks BIOS to boot from SAN
  - Ironic turns on the node

In the work flow above, Nova calls Ironic to get/set initiator/target information ((a) and (b)), but currently Ironic doesn't keep any information about volume connection. With this blueprint, Ironic can save those information and provide them to nova.

Vladyslav Drok (vdrok) on 2015-12-15
Changed in ironic:
status: New → Confirmed
importance: Undecided → Wishlist
tags: added: rfe
Changed in ironic:
assignee: nobody → Satoru Moriya (satoru-moriya-br)
Changed in ironic:
status: Confirmed → In Progress
Vladyslav Drok (vdrok) wrote :

Copy of whiteboard:

Gerrit topic: https://review.openstack.org/#q,topic:bp/adds,n,z

Addressed by: https://review.openstack.org/200496
    Add attributes about volume conneciton into nodes table

Gerrit topic: https://review.openstack.org/#q,topic:bp/volume-connection-information,n,z

Addressed by: https://review.openstack.org/200983
    [WIP] Add volume connection information to node table

Gerrit topic: https://review.openstack.org/#q,topic:bp/introduces,n,z

Addressed by: https://review.openstack.org/214584
    [WIP] Introduce VolumeConnector object

Addressed by: https://review.openstack.org/214585
    [WIP] Introduce new RPCs to support volume connector operation

Addressed by: https://review.openstack.org/214586
    [WIP] Add REST API for volume connector operation

Addressed by: https://review.openstack.org/215849
    [POC] pxe: support boot from Cinder iSCSI volume using iPXE

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

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

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

Changed in ironic:
assignee: Satoru Moriya (satoru-moriya-br) → Aayush Rajoria (ayush7rajoria)
Changed in ironic:
assignee: Aayush Rajoria (ayush7rajoria) → Satoru Moriya (satoru-moriya-br)
Changed in ironic:
assignee: Satoru Moriya (satoru-moriya-br) → Julia Kreger (juliaashleykreger)
Changed in ironic:
assignee: Julia Kreger (juliaashleykreger) → Satoru Moriya (satoru-moriya-br)
Changed in ironic:
assignee: Satoru Moriya (satoru-moriya-br) → Jim Rollenhagen (jim-rollenhagen)

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

commit b5b3a42b26217916ab23031554b0026a1b68640f
Author: Satoru Moriya <email address hidden>
Date: Fri Jul 10 21:11:47 2015 +0900

    Volume connection information for Ironic nodes

    This spec defines data model and REST APIs for boot from volume
    support in Ironic.

    Co-Authored-By: Ramakrishnan G <email address hidden>
    Change-Id: Ibf50be735905f868e0d523ab16353a6b5cc300af
    Partial-Bug: 1526231

Ruby Loo (rloo) wrote :

The spec has been approved.

tags: added: rfe-approved
removed: rfe
Changed in ironic:
assignee: Jim Rollenhagen (jim-rollenhagen) → Satoru Moriya (satoru-moriya-br)
Changed in ironic:
assignee: Satoru Moriya (satoru-moriya-br) → Stephane Miller (stephaneeee)
Changed in ironic:
assignee: Stephane Miller (stephaneeee) → Julia Kreger (juliaashleykreger)
Changed in ironic:
assignee: Julia Kreger (juliaashleykreger) → davidlenwell (dlenwell)
Changed in ironic:
assignee: davidlenwell (dlenwell) → Julia Kreger (juliaashleykreger)
Changed in ironic:
assignee: Julia Kreger (juliaashleykreger) → Stephane Miller (stephaneeee)
Changed in ironic:
assignee: Stephane Miller (stephaneeee) → davidlenwell (dlenwell)
Changed in ironic:
assignee: davidlenwell (dlenwell) → Stephane Miller (stephaneeee)
Changed in ironic:
assignee: Stephane Miller (stephaneeee) → davidlenwell (dlenwell)
Changed in ironic:
assignee: davidlenwell (dlenwell) → Stephane Miller (stephaneeee)
Changed in ironic:
assignee: Stephane Miller (stephaneeee) → davidlenwell (dlenwell)
Changed in ironic:
assignee: davidlenwell (dlenwell) → Stephane Miller (stephaneeee)
Changed in ironic:
assignee: Stephane Miller (stephaneeee) → davidlenwell (dlenwell)
Changed in ironic:
assignee: davidlenwell (dlenwell) → Stephane Miller (stephaneeee)
Changed in ironic:
assignee: Stephane Miller (stephaneeee) → davidlenwell (dlenwell)
Changed in ironic:
assignee: davidlenwell (dlenwell) → Stephane Miller (stephaneeee)
Changed in ironic:
assignee: Stephane Miller (stephaneeee) → Julia Kreger (juliaashleykreger)
Changed in ironic:
assignee: Julia Kreger (juliaashleykreger) → davidlenwell (dlenwell)
Changed in ironic:
assignee: davidlenwell (dlenwell) → Stephane Miller (stephaneeee)
Changed in ironic:
assignee: Stephane Miller (stephaneeee) → davidlenwell (dlenwell)
Changed in ironic:
assignee: davidlenwell (dlenwell) → Hironori Shiina (shiina-hironori)
Changed in ironic:
assignee: Hironori Shiina (shiina-hironori) → Stephane Miller (stephaneeee)
Changed in ironic:
assignee: Stephane Miller (stephaneeee) → Julia Kreger (juliaashleykreger)
Changed in ironic:
assignee: Julia Kreger (juliaashleykreger) → Hironori Shiina (shiina-hironori)
Changed in ironic:
assignee: Hironori Shiina (shiina-hironori) → Julia Kreger (juliaashleykreger)
Changed in ironic:
assignee: Julia Kreger (juliaashleykreger) → Ruby Loo (rloo)
Changed in ironic:
assignee: Ruby Loo (rloo) → Hironori Shiina (shiina-hironori)
Changed in ironic:
assignee: Hironori Shiina (shiina-hironori) → Ruby Loo (rloo)

Change abandoned by Ruby Loo (<email address hidden>) on branch: master
Review: https://review.openstack.org/285221
Reason: Abandoning as per David Lenwell's comments. This has been rolled up into https://review.openstack.org/#/c/214586/

Changed in ironic:
assignee: Ruby Loo (rloo) → Hironori Shiina (shiina-hironori)

Reviewed: https://review.openstack.org/200983
Committed: https://git.openstack.org/cgit/openstack/ironic/commit/?id=a82a0ceba188e1ac2cae662ed50b4ff58988cac9
Submitter: Jenkins
Branch: master

commit a82a0ceba188e1ac2cae662ed50b4ff58988cac9
Author: Satoru Moriya <email address hidden>
Date: Wed Feb 24 18:54:43 2016 +0900

    Add volume_connectors table to save connector information

    This patch introduces a new "volume_connectors" table in order to save
    the volume connector information of physical nodes. With this patch,
    Ironic can put/get volume connector information to/from the database.

    Co-Authored-By: Tomoki Sekiyama <email address hidden>
    Co-Authored-By: Stephane Miller <email address hidden>
    Co-Authored-By: Julia Kreger <email address hidden>
    Change-Id: I8237ab671a04ac9b01c8bdb2936cf0a661b9b1de
    Partial-Bug: 1526231

Reviewed: https://review.openstack.org/214584
Committed: https://git.openstack.org/cgit/openstack/ironic/commit/?id=bc7daf977983c98ed6e9edc3e113808aa78b588e
Submitter: Jenkins
Branch: master

commit bc7daf977983c98ed6e9edc3e113808aa78b588e
Author: Satoru Moriya <email address hidden>
Date: Tue Feb 9 21:06:45 2016 +0900

    Add VolumeConnector object

    This patch adds the VolumeConnector object. It handles the
    volume connector information that is stored in the database.

    Co-Authored-By: Tomoki Sekiyama <email address hidden>
    Co-Authored-By: Stephane Miller <email address hidden>
    Co-Authored-By: Ruby Loo <email address hidden>
    Change-Id: I06aa1a94401e7c7faeb019926272a072d1ed1c51
    Partial-Bug: 1526231

Changed in ironic:
assignee: Hironori Shiina (shiina-hironori) → Ruby Loo (rloo)

Reviewed: https://review.openstack.org/214585
Committed: https://git.openstack.org/cgit/openstack/ironic/commit/?id=20fe26335ef34b6a3d3032c5a844fddc5afdf7f5
Submitter: Jenkins
Branch: master

commit 20fe26335ef34b6a3d3032c5a844fddc5afdf7f5
Author: Satoru Moriya <email address hidden>
Date: Tue Feb 9 21:54:42 2016 +0900

    Add RPCs to support volume connector operation

    This patch adds the following two RPCs in order to support volume
    connector operations.

    - update_volume_connector()
      This function is called to update the information about a volume
      connector that is stored in the database.

    - destroy_volume_connector()
      This function is called to remove a volume connector from the database.

    Co-Authored-By: Tomoki Sekiyama <email address hidden>
    Co-Authored-By: Stephanie Miller <email address hidden>
    Co-Authored-By: Ruby Loo <email address hidden>
    Change-Id: I3debe98ea78e159a81f53d0a3a3a49fe0c8663f6
    Partial-Bug: 1526231

Changed in ironic:
assignee: Ruby Loo (rloo) → Hironori Shiina (shiina-hironori)
Changed in ironic:
assignee: Hironori Shiina (shiina-hironori) → Ruby Loo (rloo)

Reviewed: https://review.openstack.org/285218
Committed: https://git.openstack.org/cgit/openstack/ironic/commit/?id=07541047bef7e8fea15894ef295be38f8cfe1074
Submitter: Jenkins
Branch: master

commit 07541047bef7e8fea15894ef295be38f8cfe1074
Author: Satoru Moriya <email address hidden>
Date: Fri Feb 26 19:49:15 2016 +0900

    Add volume_targets table to database

    This patch adds a "volume_targets" DB table in order to save
    the volume target information of physical nodes. With this patch,
    Ironic can put/get volume target information to/from the database.

    Co-Authored-By: Stephane Miller <email address hidden>
    Co-Authored-By: Ruby Loo <email address hidden>
    Change-Id: I79063f9d0aafd7b740785a883732536704e43b7c
    Partial-Bug: 1526231

Changed in ironic:
assignee: Ruby Loo (rloo) → Hironori Shiina (shiina-hironori)

Reviewed: https://review.openstack.org/405553
Committed: https://git.openstack.org/cgit/openstack/ironic/commit/?id=9606ac9ee3777b54b6ef9e398e33197a5d6b1a66
Submitter: Jenkins
Branch: master

commit 9606ac9ee3777b54b6ef9e398e33197a5d6b1a66
Author: Ruby Loo <email address hidden>
Date: Thu Dec 1 17:56:51 2016 +0000

    Unneeded testing in DB migration of volume connector

    This removes some testing from the unit test for the DB migration
    of the volume connector table, since it does not seem useful to have
    (https://review.openstack.org/#/c/285218/42/ironic/tests/unit/db/sqlalchemy/test_migrations.py).

    Change-Id: I2f94fc481be2db7b96431d9a1ae6d230dafbe9db
    Partial-Bug: 1526231

Reviewed: https://review.openstack.org/285219
Committed: https://git.openstack.org/cgit/openstack/ironic/commit/?id=f766bbab451cd8a0b37b1085ee4d95bcda95a8b8
Submitter: Jenkins
Branch: master

commit f766bbab451cd8a0b37b1085ee4d95bcda95a8b8
Author: Satoru Moriya <email address hidden>
Date: Fri Feb 26 19:51:17 2016 +0900

    Add VolumeTarget object

    This patch adds the VolumeTarget object. It handles the
    volume target information which is stored in the database.

    Co-Authored-By: Stephane Miller <email address hidden>
    Co-Authored-By: Ruby Loo <email address hidden>
    Change-Id: I814454ec5a515080d21aad58f8d43abb49b77fb3
    Partial-Bug: 1526231

Reviewed: https://review.openstack.org/285220
Committed: https://git.openstack.org/cgit/openstack/ironic/commit/?id=aab505a69842beb776410761d451d13a132bd3d2
Submitter: Jenkins
Branch: master

commit aab505a69842beb776410761d451d13a132bd3d2
Author: Satoru Moriya <email address hidden>
Date: Fri Feb 26 19:52:54 2016 +0900

    Add RPCs to support volume target operations

    This patch adds the following two RPCs in order to support
    volume target operations in Ironic.

    - update_volume_target()
      This function is called to update the information about a volume
      target that is stored in the database.

    - destroy_volume_target()
      This function is called to remove a volume target from the database.

    Co-Authored-By: Stephane Miller <email address hidden>
    Co-Authored-By: Ruby Loo <email address hidden>
    Change-Id: I2925c081da4bb0a77edd5c579f92aaa0f5999b78
    Partial-Bug: 1526231

Changed in ironic:
assignee: Hironori Shiina (shiina-hironori) → Julia Kreger (juliaashleykreger)
Changed in ironic:
assignee: Julia Kreger (juliaashleykreger) → Hironori Shiina (shiina-hironori)
Changed in ironic:
assignee: Hironori Shiina (shiina-hironori) → Julia Kreger (juliaashleykreger)
Changed in ironic:
assignee: Julia Kreger (juliaashleykreger) → Hironori Shiina (shiina-hironori)
Changed in ironic:
assignee: Hironori Shiina (shiina-hironori) → Julia Kreger (juliaashleykreger)
Changed in ironic:
assignee: Julia Kreger (juliaashleykreger) → Hironori Shiina (shiina-hironori)
Changed in ironic:
assignee: Hironori Shiina (shiina-hironori) → Julia Kreger (juliaashleykreger)

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

Changed in ironic:
assignee: Julia Kreger (juliaashleykreger) → Hironori Shiina (shiina-hironori)
Changed in ironic:
assignee: Hironori Shiina (shiina-hironori) → Julia Kreger (juliaashleykreger)
Changed in ironic:
assignee: Julia Kreger (juliaashleykreger) → Dmitry Tantsur (divius)
Changed in ironic:
assignee: Dmitry Tantsur (divius) → Hironori Shiina (shiina-hironori)
Changed in ironic:
assignee: Hironori Shiina (shiina-hironori) → Julia Kreger (juliaashleykreger)
Changed in ironic:
assignee: Julia Kreger (juliaashleykreger) → Hironori Shiina (shiina-hironori)
Changed in ironic:
assignee: Hironori Shiina (shiina-hironori) → Julia Kreger (juliaashleykreger)
Changed in ironic:
assignee: Julia Kreger (juliaashleykreger) → Hironori Shiina (shiina-hironori)

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

Reviewed: https://review.openstack.org/463930
Committed: https://git.openstack.org/cgit/openstack/ironic/commit/?id=4db3123e605f2dccb15f8a159e1d65bc3d6a4a40
Submitter: Jenkins
Branch: master

commit 4db3123e605f2dccb15f8a159e1d65bc3d6a4a40
Author: Hironori Shiina <email address hidden>
Date: Thu May 11 16:32:31 2017 +0900

    Add CRUD notification objects for volume connector and volume target

    This patch adds CRUD notification objects for volume connector and
    volume target. Emission will be implemented in API changes for
    volume connector and volume target.

    Change-Id: Ib13428702f109c20d014ea1870b3c5982db3df0f
    Partial-Bug: 1526231

Changed in ironic:
assignee: Hironori Shiina (shiina-hironori) → Julia Kreger (juliaashleykreger)
Changed in ironic:
assignee: Julia Kreger (juliaashleykreger) → Hironori Shiina (shiina-hironori)

Reviewed: https://review.openstack.org/479142
Committed: https://git.openstack.org/cgit/openstack/ironic/commit/?id=ddcd97714cd5b27ac43ac0ef1138c13392223b90
Submitter: Jenkins
Branch: master

commit ddcd97714cd5b27ac43ac0ef1138c13392223b90
Author: Hironori Shiina <email address hidden>
Date: Fri Jun 30 13:46:23 2017 +0900

    Add node power state validation to volume resource update/deletion

    This patch validate the power state of a node when the following
    actions regarding volume resources associated with the node are
    requested.
      - update a volume connector
      - delete a volume connector
      - update a volume target
      - delete a volume target

    These actions should allowed only when the node is tuned off as
    designed in the SPEC.

    Change-Id: I5d0465c6ac2d2c6ddac03385e6ed0ccb37556306
    Partial-Bug: 1526231

Reviewed: https://review.openstack.org/214586
Committed: https://git.openstack.org/cgit/openstack/ironic/commit/?id=c380e05dbf84079b01fb3b0ea099ef9b293b9b3d
Submitter: Jenkins
Branch: master

commit c380e05dbf84079b01fb3b0ea099ef9b293b9b3d
Author: Satoru Moriya <email address hidden>
Date: Wed Feb 10 14:29:34 2016 +0900

    Add REST API for volume connector and volume target operation

    This patch introduces following REST API endpoints to get/set volume
    connector and volume target in Ironic.

    - GET /v1/volume
    - GET /v1/nodes/<node_uuid or name>/volume
    - {GET, POST} /v1/volume/connectors
    - {GET, PATCH, DELETE} /v1/volume/connectors/<volume_connector_uuid>
    - GET /v1/nodes/<node_uuid or name>/volume/connectors
    - {GET, POST} /v1/volume/targets
    - {GET, PATCH, DELETE} /v1/volume/targets/<volume_target_uuid>
    - GET /v1/nodes/<node_uuid or name>/volume/targets

    This also adds CRUD notifications for volume connector and volume
    target.

    Co-Authored-By: Tomoki Sekiyama <email address hidden>
    Co-Authored-By: David Lenwell <email address hidden>
    Co-Authored-By: Hironori Shiina <email address hidden>
    Change-Id: I328a698f2109841e1e122e17fea4b345c4179161
    Partial-Bug: 1526231

Changed in ironic:
assignee: Hironori Shiina (shiina-hironori) → Dmitry Tantsur (divius)

Reviewed: https://review.openstack.org/478798
Committed: https://git.openstack.org/cgit/openstack/ironic/commit/?id=7317c17e4ea26ea92737f3df47ddf7c5cc5cf99c
Submitter: Jenkins
Branch: master

commit 7317c17e4ea26ea92737f3df47ddf7c5cc5cf99c
Author: Hironori Shiina <email address hidden>
Date: Tue Jul 4 14:47:13 2017 +0900

    Add API for volume resources to api-ref

    This patch adds API for volume resources to api-ref.

    Partial-Bug: 1526231
    Change-Id: I986860cffd344f5cea9f8f5a2f845f77bf6e9e54

Dmitry Tantsur (divius) on 2017-08-22
Changed in ironic:
status: In Progress → Fix Released
alan hoang (alanhoang) on 2017-12-21
description: updated
To post a comment you must log in.
This report contains Public information  Edit
Everyone can see this information.

Duplicates of this bug

Other bug subscribers