.. This work is licensed under a Creative Commons Attribution 3.0 Unported License. http://creativecommons.org/licenses/by/3.0/legalcode ===================================== 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 .. NOTE: This section was not present at the time this spec was approved. 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. References ========== * http://docs.openstack.org/kilo/config-reference/content/object-storage-tempurl.html