Ceph Object Gateway Temp URL support

https://bugs.launchpad.net/ironic/+bug/1526395

This adds support of Ceph Object Gateway (RADOS Gateway) temporary URL format.

Problem description

Ceph project is a powerful distributed storage system. It contains object store with OpenStack Swift compatible API. Glance image service can use Ceph storage via RADOS Gateway Swift API. Ironic does not currently support deploy configuration with Glance and RADOS Gateway. The reason is different format of temporary URL. First part of temporary URL for RADOS Gateway with Glance frontend is “endpoint_url/api_version/container/object_id”, where

  • “endpoint_url” contains scheme, hostname, optional port and mandatory “/swift” suffix.
  • “api_version” is “v1” currently.
  • “container” is the name of Glance container.
  • “object_id” is Glance object id.

Calculation of parameters “temp_url_sig” and “temp_url_expires” is mostly the same as in Swift, so full URL looks like

https://radosgw.my.host/swift/v1/glance/22aee8e5-cba3-4554-92c4aadde5e38f28? temp_url_sig=e75d1d6facb53d795547b1fc60eca4e8836bd503 &temp_url_expires=1443518434”

“temp_url_sig” calculation should not use “/swift” in the path.

OpenStack Swift temporary URL contains extra account parameter, it’s account that Glance uses to communicate with Swift. “swift_account” parameter is mandatory for Ironic.

Note

Do not use Python code as reference from http://docs.ceph.com/docs/master/radosgw/swift/tempurl/ it does not create valid URL’s, for Firefly release at least.

Proposed change

A new configuration parameter temp_url_endpoint_type will be added to the glance group. It can be set to values “swift” or “radosgw”, “swift” is default. Code of image service in Ironic will be changed for supporting both of endpoints (parameters set, mandatory suffix for RADOS Gateway).

Alternatives

None

Data model impact

None

State Machine Impact

None

REST API impact

None

Client (CLI) impact

None

RPC API impact

None

Driver API impact

None

Nova driver impact

None

Ramdisk impact

N/A

Security impact

None

Other end user impact

None

Scalability impact

None

Performance Impact

None

Other deployer impact

  • A new config option temp_url_endpoint_type will be added in glance group.
  • Deployer should configure Glance with RADOS Gateway beckend (via Swift API) and Ceph storage.

Developer impact

None

Implementation

Assignee(s)

Primary assignee:
yuriyz

Work Items

  • Implement Rados GW support.
  • Add unit tests.

Dependencies

None

Testing

Unittests will be added.

Upgrades and Backwards Compatibility

None

Documentation Impact

Usage of Ironic with Rados Gateway as Glance backend will be documented.