Automate generation of API versions api-ref samples
This patch adds Tests for the following : 1) API versions 2) API extensions Change-Id: Ieaa1e2768c091b93c7afcbf04ec4a181cb021ec5 Partially-Implements: blueprint generating-sample-files
This commit is contained in:
parent
da34b35579
commit
c5c5c009ff
@ -37,5 +37,5 @@ Response
|
||||
**Example List Api Versions: JSON request**
|
||||
|
||||
|
||||
.. literalinclude:: ./samples/versions-response.json
|
||||
.. literalinclude:: ./samples/versions/versions-response.json
|
||||
:language: javascript
|
||||
|
@ -0,0 +1,221 @@
|
||||
{
|
||||
"extensions": [
|
||||
{
|
||||
"alias": "os-hosts",
|
||||
"description": "Admin-only host administration.",
|
||||
"links": [],
|
||||
"name": "Hosts",
|
||||
"updated": "2011-06-29T00:00:00+00:00"
|
||||
},
|
||||
{
|
||||
"alias": "os-vol-tenant-attr",
|
||||
"description": "Expose the internal project_id as an attribute of a volume.",
|
||||
"links": [],
|
||||
"name": "VolumeTenantAttribute",
|
||||
"updated": "2011-11-03T00:00:00+00:00"
|
||||
},
|
||||
{
|
||||
"alias": "os-quota-sets",
|
||||
"description": "Quota management support.",
|
||||
"links": [],
|
||||
"name": "Quotas",
|
||||
"updated": "2011-08-08T00:00:00+00:00"
|
||||
},
|
||||
{
|
||||
"alias": "os-availability-zone",
|
||||
"description": "Describe Availability Zones.",
|
||||
"links": [],
|
||||
"name": "AvailabilityZones",
|
||||
"updated": "2013-06-27T00:00:00+00:00"
|
||||
},
|
||||
{
|
||||
"alias": "os-volume-encryption-metadata",
|
||||
"description": "Volume encryption metadata retrieval support.",
|
||||
"links": [],
|
||||
"name": "VolumeEncryptionMetadata",
|
||||
"updated": "2013-07-10T00:00:00+00:00"
|
||||
},
|
||||
{
|
||||
"alias": "backups",
|
||||
"description": "Backups support.",
|
||||
"links": [],
|
||||
"name": "Backups",
|
||||
"updated": "2012-12-12T00:00:00+00:00"
|
||||
},
|
||||
{
|
||||
"alias": "os-snapshot-actions",
|
||||
"description": "Enable snapshot manager actions.",
|
||||
"links": [],
|
||||
"name": "SnapshotActions",
|
||||
"updated": "2013-07-16T00:00:00+00:00"
|
||||
},
|
||||
{
|
||||
"alias": "os-volume-actions",
|
||||
"description": "Enable volume actions.",
|
||||
"links": [],
|
||||
"name": "VolumeActions",
|
||||
"updated": "2012-05-31T00:00:00+00:00"
|
||||
},
|
||||
{
|
||||
"alias": "os-snapshot-manage",
|
||||
"description": "Allows existing backend storage to be 'managed' by Cinder.",
|
||||
"links": [],
|
||||
"name": "SnapshotManage",
|
||||
"updated": "2014-12-31T00:00:00+00:00"
|
||||
},
|
||||
{
|
||||
"alias": "os-volume-unmanage",
|
||||
"description": "Enable volume unmanage operation.",
|
||||
"links": [],
|
||||
"name": "VolumeUnmanage",
|
||||
"updated": "2012-05-31T00:00:00+00:00"
|
||||
},
|
||||
{
|
||||
"alias": "consistencygroups",
|
||||
"description": "consistency groups support.",
|
||||
"links": [],
|
||||
"name": "Consistencygroups",
|
||||
"updated": "2014-08-18T00:00:00+00:00"
|
||||
},
|
||||
{
|
||||
"alias": "os-vol-host-attr",
|
||||
"description": "Expose host as an attribute of a volume.",
|
||||
"links": [],
|
||||
"name": "VolumeHostAttribute",
|
||||
"updated": "2011-11-03T00:00:00+00:00"
|
||||
},
|
||||
{
|
||||
"alias": "encryption",
|
||||
"description": "Encryption support for volume types.",
|
||||
"links": [],
|
||||
"name": "VolumeTypeEncryption",
|
||||
"updated": "2013-07-01T00:00:00+00:00"
|
||||
},
|
||||
{
|
||||
"alias": "os-vol-image-meta",
|
||||
"description": "Show image metadata associated with the volume.",
|
||||
"links": [],
|
||||
"name": "VolumeImageMetadata",
|
||||
"updated": "2012-12-07T00:00:00+00:00"
|
||||
},
|
||||
{
|
||||
"alias": "os-types-manage",
|
||||
"description": "Types manage support.",
|
||||
"links": [],
|
||||
"name": "TypesManage",
|
||||
"updated": "2011-08-24T00:00:00+00:00"
|
||||
},
|
||||
{
|
||||
"alias": "capabilities",
|
||||
"description": "Capabilities support.",
|
||||
"links": [],
|
||||
"name": "Capabilities",
|
||||
"updated": "2015-08-31T00:00:00+00:00"
|
||||
},
|
||||
{
|
||||
"alias": "cgsnapshots",
|
||||
"description": "cgsnapshots support.",
|
||||
"links": [],
|
||||
"name": "Cgsnapshots",
|
||||
"updated": "2014-08-18T00:00:00+00:00"
|
||||
},
|
||||
{
|
||||
"alias": "os-types-extra-specs",
|
||||
"description": "Type extra specs support.",
|
||||
"links": [],
|
||||
"name": "TypesExtraSpecs",
|
||||
"updated": "2011-08-24T00:00:00+00:00"
|
||||
},
|
||||
{
|
||||
"alias": "os-used-limits",
|
||||
"description": "Provide data on limited resources that are being used.",
|
||||
"links": [],
|
||||
"name": "UsedLimits",
|
||||
"updated": "2013-10-03T00:00:00+00:00"
|
||||
},
|
||||
{
|
||||
"alias": "os-vol-mig-status-attr",
|
||||
"description": "Expose migration_status as an attribute of a volume.",
|
||||
"links": [],
|
||||
"name": "VolumeMigStatusAttribute",
|
||||
"updated": "2013-08-08T00:00:00+00:00"
|
||||
},
|
||||
{
|
||||
"alias": "os-volume-type-access",
|
||||
"description": "Volume type access support.",
|
||||
"links": [],
|
||||
"name": "VolumeTypeAccess",
|
||||
"updated": "2014-06-26T00:00:00Z"
|
||||
},
|
||||
{
|
||||
"alias": "os-extended-services",
|
||||
"description": "Extended services support.",
|
||||
"links": [],
|
||||
"name": "ExtendedServices",
|
||||
"updated": "2014-01-10T00:00:00-00:00"
|
||||
},
|
||||
{
|
||||
"alias": "os-extended-snapshot-attributes",
|
||||
"description": "Extended SnapshotAttributes support.",
|
||||
"links": [],
|
||||
"name": "ExtendedSnapshotAttributes",
|
||||
"updated": "2012-06-19T00:00:00+00:00"
|
||||
},
|
||||
{
|
||||
"alias": "os-snapshot-unmanage",
|
||||
"description": "Enable volume unmanage operation.",
|
||||
"links": [],
|
||||
"name": "SnapshotUnmanage",
|
||||
"updated": "2014-12-31T00:00:00+00:00"
|
||||
},
|
||||
{
|
||||
"alias": "qos-specs",
|
||||
"description": "QoS specs support.",
|
||||
"links": [],
|
||||
"name": "Qos_specs_manage",
|
||||
"updated": "2013-08-02T00:00:00+00:00"
|
||||
},
|
||||
{
|
||||
"alias": "os-quota-class-sets",
|
||||
"description": "Quota classes management support.",
|
||||
"links": [],
|
||||
"name": "QuotaClasses",
|
||||
"updated": "2012-03-12T00:00:00+00:00"
|
||||
},
|
||||
{
|
||||
"alias": "os-volume-transfer",
|
||||
"description": "Volume transfer management support.",
|
||||
"links": [],
|
||||
"name": "VolumeTransfer",
|
||||
"updated": "2013-05-29T00:00:00+00:00"
|
||||
},
|
||||
{
|
||||
"alias": "os-volume-manage",
|
||||
"description": "Allows existing backend storage to be 'managed' by Cinder.",
|
||||
"links": [],
|
||||
"name": "VolumeManage",
|
||||
"updated": "2014-02-10T00:00:00+00:00"
|
||||
},
|
||||
{
|
||||
"alias": "os-admin-actions",
|
||||
"description": "Enable admin actions.",
|
||||
"links": [],
|
||||
"name": "AdminActions",
|
||||
"updated": "2012-08-25T00:00:00+00:00"
|
||||
},
|
||||
{
|
||||
"alias": "os-services",
|
||||
"description": "Services support.",
|
||||
"links": [],
|
||||
"name": "Services",
|
||||
"updated": "2012-10-28T00:00:00-00:00"
|
||||
},
|
||||
{
|
||||
"alias": "scheduler-stats",
|
||||
"description": "Scheduler stats support.",
|
||||
"links": [],
|
||||
"name": "Scheduler_stats",
|
||||
"updated": "2014-09-07T00:00:00+00:00"
|
||||
}
|
||||
]
|
||||
}
|
@ -9,20 +9,20 @@
|
||||
"type": "text/html"
|
||||
},
|
||||
{
|
||||
"href": "http://23.253.248.171:8776/v3/",
|
||||
"href": "http://127.0.0.1:44895/v3/",
|
||||
"rel": "self"
|
||||
}
|
||||
],
|
||||
"media-types": [
|
||||
{
|
||||
"base": "application/json",
|
||||
"type": "application/vnd.openstack.volume+json;version=1"
|
||||
"type": "application/vnd.openstack.volume+json;version=3"
|
||||
}
|
||||
],
|
||||
"min_version": "3.0",
|
||||
"status": "CURRENT",
|
||||
"updated": "2016-02-08T12:20:21Z",
|
||||
"version": "3.0"
|
||||
"updated": "2018-07-17T00:00:00Z",
|
||||
"version": "3.56"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
52
api-ref/source/v3/samples/versions/versions-response.json
Normal file
52
api-ref/source/v3/samples/versions/versions-response.json
Normal file
@ -0,0 +1,52 @@
|
||||
{
|
||||
"versions": [
|
||||
{
|
||||
"id": "v2.0",
|
||||
"links": [
|
||||
{
|
||||
"href": "https://docs.openstack.org/",
|
||||
"rel": "describedby",
|
||||
"type": "text/html"
|
||||
},
|
||||
{
|
||||
"href": "http://127.0.0.1:45697/v2/",
|
||||
"rel": "self"
|
||||
}
|
||||
],
|
||||
"media-types": [
|
||||
{
|
||||
"base": "application/json",
|
||||
"type": "application/vnd.openstack.volume+json;version=2"
|
||||
}
|
||||
],
|
||||
"min_version": "",
|
||||
"status": "DEPRECATED",
|
||||
"updated": "2017-02-25T12:00:00Z",
|
||||
"version": ""
|
||||
},
|
||||
{
|
||||
"id": "v3.0",
|
||||
"links": [
|
||||
{
|
||||
"href": "https://docs.openstack.org/",
|
||||
"rel": "describedby",
|
||||
"type": "text/html"
|
||||
},
|
||||
{
|
||||
"href": "http://127.0.0.1:45697/v3/",
|
||||
"rel": "self"
|
||||
}
|
||||
],
|
||||
"media-types": [
|
||||
{
|
||||
"base": "application/json",
|
||||
"type": "application/vnd.openstack.volume+json;version=3"
|
||||
}
|
||||
],
|
||||
"min_version": "3.0",
|
||||
"status": "CURRENT",
|
||||
"updated": "2018-07-17T00:00:00Z",
|
||||
"version": "3.56"
|
||||
}
|
||||
]
|
||||
}
|
@ -51,7 +51,7 @@ Response Parameters
|
||||
Response Example
|
||||
----------------
|
||||
|
||||
.. literalinclude:: ./samples/extensions-list-response.json
|
||||
.. literalinclude:: ./samples/extensions/extensions-list-response.json
|
||||
:language: javascript
|
||||
|
||||
|
||||
|
@ -47,7 +47,7 @@ Request
|
||||
Request Example
|
||||
---------------
|
||||
|
||||
.. literalinclude:: ./samples/volume-type-update-request.json
|
||||
.. literalinclude:: ./samples/volume_type/volume-type-update-request.json
|
||||
:language: javascript
|
||||
|
||||
|
||||
@ -66,7 +66,7 @@ Response Parameters
|
||||
Response Example
|
||||
----------------
|
||||
|
||||
.. literalinclude:: ./samples/volume-type-show-response.json
|
||||
.. literalinclude:: ./samples/volume_type/volume-type-show-response.json
|
||||
:language: javascript
|
||||
|
||||
|
||||
@ -98,7 +98,7 @@ Request
|
||||
Request Example
|
||||
---------------
|
||||
|
||||
.. literalinclude:: ./samples/volume-type-extra-specs-create-update-request.json
|
||||
.. literalinclude:: ./samples/volume_type/volume-type-extra-specs-create-update-request.json
|
||||
:language: javascript
|
||||
|
||||
|
||||
@ -113,7 +113,7 @@ Response Parameters
|
||||
Response Example
|
||||
----------------
|
||||
|
||||
.. literalinclude:: ./samples/volume-type-extra-specs-create-update-response.json
|
||||
.. literalinclude:: ./samples/volume_type/volume-type-extra-specs-create-update-response.json
|
||||
:language: javascript
|
||||
|
||||
|
||||
@ -151,7 +151,7 @@ Response Parameters
|
||||
Response Example
|
||||
----------------
|
||||
|
||||
.. literalinclude:: ./samples/volume-type-all-extra-specs-show-response.json
|
||||
.. literalinclude:: ./samples/volume_type/volume-type-all-extra-specs-show-response.json
|
||||
:language: javascript
|
||||
|
||||
|
||||
@ -182,7 +182,7 @@ Request
|
||||
Response Example
|
||||
----------------
|
||||
|
||||
.. literalinclude:: ./samples/volume-type-specific-extra-specs-show-response.json
|
||||
.. literalinclude:: ./samples/volume_type/volume-type-specific-extra-specs-show-response.json
|
||||
:language: javascript
|
||||
|
||||
|
||||
@ -213,14 +213,14 @@ Request
|
||||
Request Example
|
||||
---------------
|
||||
|
||||
.. literalinclude:: ./samples/volume-type-specific-extra-specs-update-request.json
|
||||
.. literalinclude:: ./samples/volume_type/volume-type-specific-extra-specs-update-request.json
|
||||
:language: javascript
|
||||
|
||||
|
||||
Response Example
|
||||
----------------
|
||||
|
||||
.. literalinclude:: ./samples/volume-type-specific-extra-specs-update-response.json
|
||||
.. literalinclude:: ./samples/volume_type/volume-type-specific-extra-specs-update-response.json
|
||||
:language: javascript
|
||||
|
||||
|
||||
@ -290,7 +290,7 @@ Response Parameters
|
||||
Response Example
|
||||
----------------
|
||||
|
||||
.. literalinclude:: ./samples/volume-type-show-response.json
|
||||
.. literalinclude:: ./samples/volume_type/volume-type-show-response.json
|
||||
:language: javascript
|
||||
|
||||
|
||||
@ -331,7 +331,7 @@ Response Parameters
|
||||
Response Example
|
||||
----------------
|
||||
|
||||
.. literalinclude:: ./samples/volume-type-default-response.json
|
||||
.. literalinclude:: ./samples/volume_type/volume-type-default-response.json
|
||||
:language: javascript
|
||||
|
||||
|
||||
@ -404,7 +404,7 @@ Response Parameters
|
||||
Response Example
|
||||
----------------
|
||||
|
||||
.. literalinclude:: ./samples/volume-types-list-response.json
|
||||
.. literalinclude:: ./samples/volume_type/volume-types-list-response.json
|
||||
:language: javascript
|
||||
|
||||
|
||||
@ -438,7 +438,7 @@ Request
|
||||
Request Example
|
||||
---------------
|
||||
|
||||
.. literalinclude:: ./samples/volume-type-create-request.json
|
||||
.. literalinclude:: ./samples/volume_type/volume-type-create-request.json
|
||||
:language: javascript
|
||||
|
||||
|
||||
@ -458,7 +458,7 @@ Response Parameters
|
||||
Response Example
|
||||
----------------
|
||||
|
||||
.. literalinclude:: ./samples/volume-type-create-response.json
|
||||
.. literalinclude:: ./samples/volume_type/volume-type-create-response.json
|
||||
:language: javascript
|
||||
|
||||
|
||||
@ -505,7 +505,7 @@ Response Parameters
|
||||
Response Example
|
||||
----------------
|
||||
|
||||
.. literalinclude:: ./samples/encryption-type-show-response.json
|
||||
.. literalinclude:: ./samples/volume_type/encryption-type-show-response.json
|
||||
:language: javascript
|
||||
|
||||
|
||||
@ -536,7 +536,7 @@ Request
|
||||
Response Example
|
||||
----------------
|
||||
|
||||
.. literalinclude:: ./samples/encryption-type-specific-specs-show-response.json
|
||||
.. literalinclude:: ./samples/volume_type/encryption-type-specific-specs-show-response.json
|
||||
:language: javascript
|
||||
|
||||
|
||||
@ -596,7 +596,7 @@ Request
|
||||
Request Example
|
||||
---------------
|
||||
|
||||
.. literalinclude:: ./samples/encryption-type-create-request.json
|
||||
.. literalinclude:: ./samples/volume_type/encryption-type-create-request.json
|
||||
:language: javascript
|
||||
|
||||
|
||||
@ -616,7 +616,7 @@ Response Parameters
|
||||
Response Example
|
||||
----------------
|
||||
|
||||
.. literalinclude:: ./samples/encryption-type-create-response.json
|
||||
.. literalinclude:: ./samples/volume_type/encryption-type-create-response.json
|
||||
:language: javascript
|
||||
|
||||
|
||||
@ -652,7 +652,7 @@ Request
|
||||
Request Example
|
||||
---------------
|
||||
|
||||
.. literalinclude:: ./samples/encryption-type-update-request.json
|
||||
.. literalinclude:: ./samples/volume_type/encryption-type-update-request.json
|
||||
:language: javascript
|
||||
|
||||
|
||||
@ -670,5 +670,5 @@ Response Parameters
|
||||
Response Example
|
||||
----------------
|
||||
|
||||
.. literalinclude:: ./samples/encryption-type-update-response.json
|
||||
.. literalinclude:: ./samples/volume_type/encryption-type-update-response.json
|
||||
:language: javascript
|
||||
|
@ -42,7 +42,7 @@ Response Parameters
|
||||
Response Example
|
||||
----------------
|
||||
|
||||
.. literalinclude:: ./samples/version-show-response.json
|
||||
.. literalinclude:: ./samples/versions/version-show-response.json
|
||||
:language: javascript
|
||||
|
||||
|
||||
|
@ -124,12 +124,17 @@ class TestOpenStackClient(object):
|
||||
self.project_id = new_project_id
|
||||
self._authenticate(True)
|
||||
|
||||
def api_request(self, relative_uri, check_response_status=None, **kwargs):
|
||||
def api_request(self, relative_uri, check_response_status=None,
|
||||
strip_version=False, **kwargs):
|
||||
auth_result = self._authenticate()
|
||||
|
||||
# NOTE(justinsb): httplib 'helpfully' converts headers to lower case
|
||||
base_uri = auth_result['x-server-management-url']
|
||||
|
||||
if strip_version:
|
||||
# cut out version number and tenant_id
|
||||
base_uri = '/'.join(base_uri.split('/', 3)[:-1])
|
||||
|
||||
full_uri = '%s/%s' % (base_uri, relative_uri)
|
||||
|
||||
headers = kwargs.setdefault('headers', {})
|
||||
|
@ -0,0 +1,221 @@
|
||||
{
|
||||
"extensions": [
|
||||
{
|
||||
"alias": "os-hosts",
|
||||
"description": "Admin-only host administration.",
|
||||
"links": [],
|
||||
"name": "Hosts",
|
||||
"updated": "%(extension_update)s"
|
||||
},
|
||||
{
|
||||
"alias": "os-vol-tenant-attr",
|
||||
"description": "Expose the internal project_id as an attribute of a volume.",
|
||||
"links": [],
|
||||
"name": "VolumeTenantAttribute",
|
||||
"updated": "%(extension_update)s"
|
||||
},
|
||||
{
|
||||
"alias": "os-quota-sets",
|
||||
"description": "Quota management support.",
|
||||
"links": [],
|
||||
"name": "Quotas",
|
||||
"updated": "%(extension_update)s"
|
||||
},
|
||||
{
|
||||
"alias": "os-availability-zone",
|
||||
"description": "Describe Availability Zones.",
|
||||
"links": [],
|
||||
"name": "AvailabilityZones",
|
||||
"updated": "%(extension_update)s"
|
||||
},
|
||||
{
|
||||
"alias": "os-volume-encryption-metadata",
|
||||
"description": "Volume encryption metadata retrieval support.",
|
||||
"links": [],
|
||||
"name": "VolumeEncryptionMetadata",
|
||||
"updated": "%(extension_update)s"
|
||||
},
|
||||
{
|
||||
"alias": "backups",
|
||||
"description": "Backups support.",
|
||||
"links": [],
|
||||
"name": "Backups",
|
||||
"updated": "%(extension_update)s"
|
||||
},
|
||||
{
|
||||
"alias": "os-snapshot-actions",
|
||||
"description": "Enable snapshot manager actions.",
|
||||
"links": [],
|
||||
"name": "SnapshotActions",
|
||||
"updated": "%(extension_update)s"
|
||||
},
|
||||
{
|
||||
"alias": "os-volume-actions",
|
||||
"description": "Enable volume actions.",
|
||||
"links": [],
|
||||
"name": "VolumeActions",
|
||||
"updated": "%(extension_update)s"
|
||||
},
|
||||
{
|
||||
"alias": "os-snapshot-manage",
|
||||
"description": "Allows existing backend storage to be 'managed' by Cinder.",
|
||||
"links": [],
|
||||
"name": "SnapshotManage",
|
||||
"updated": "%(extension_update)s"
|
||||
},
|
||||
{
|
||||
"alias": "os-volume-unmanage",
|
||||
"description": "Enable volume unmanage operation.",
|
||||
"links": [],
|
||||
"name": "VolumeUnmanage",
|
||||
"updated": "%(extension_update)s"
|
||||
},
|
||||
{
|
||||
"alias": "consistencygroups",
|
||||
"description": "consistency groups support.",
|
||||
"links": [],
|
||||
"name": "Consistencygroups",
|
||||
"updated": "%(extension_update)s"
|
||||
},
|
||||
{
|
||||
"alias": "os-vol-host-attr",
|
||||
"description": "Expose host as an attribute of a volume.",
|
||||
"links": [],
|
||||
"name": "VolumeHostAttribute",
|
||||
"updated": "%(extension_update)s"
|
||||
},
|
||||
{
|
||||
"alias": "encryption",
|
||||
"description": "Encryption support for volume types.",
|
||||
"links": [],
|
||||
"name": "VolumeTypeEncryption",
|
||||
"updated": "%(extension_update)s"
|
||||
},
|
||||
{
|
||||
"alias": "os-vol-image-meta",
|
||||
"description": "Show image metadata associated with the volume.",
|
||||
"links": [],
|
||||
"name": "VolumeImageMetadata",
|
||||
"updated": "%(extension_update)s"
|
||||
},
|
||||
{
|
||||
"alias": "os-types-manage",
|
||||
"description": "Types manage support.",
|
||||
"links": [],
|
||||
"name": "TypesManage",
|
||||
"updated": "%(extension_update)s"
|
||||
},
|
||||
{
|
||||
"alias": "capabilities",
|
||||
"description": "Capabilities support.",
|
||||
"links": [],
|
||||
"name": "Capabilities",
|
||||
"updated": "%(extension_update)s"
|
||||
},
|
||||
{
|
||||
"alias": "cgsnapshots",
|
||||
"description": "cgsnapshots support.",
|
||||
"links": [],
|
||||
"name": "Cgsnapshots",
|
||||
"updated": "%(extension_update)s"
|
||||
},
|
||||
{
|
||||
"alias": "os-types-extra-specs",
|
||||
"description": "Type extra specs support.",
|
||||
"links": [],
|
||||
"name": "TypesExtraSpecs",
|
||||
"updated": "%(extension_update)s"
|
||||
},
|
||||
{
|
||||
"alias": "os-used-limits",
|
||||
"description": "Provide data on limited resources that are being used.",
|
||||
"links": [],
|
||||
"name": "UsedLimits",
|
||||
"updated": "%(extension_update)s"
|
||||
},
|
||||
{
|
||||
"alias": "os-vol-mig-status-attr",
|
||||
"description": "Expose migration_status as an attribute of a volume.",
|
||||
"links": [],
|
||||
"name": "VolumeMigStatusAttribute",
|
||||
"updated": "%(extension_update)s"
|
||||
},
|
||||
{
|
||||
"alias": "os-volume-type-access",
|
||||
"description": "Volume type access support.",
|
||||
"links": [],
|
||||
"name": "VolumeTypeAccess",
|
||||
"updated": "%(isotime)s"
|
||||
},
|
||||
{
|
||||
"alias": "os-extended-services",
|
||||
"description": "Extended services support.",
|
||||
"links": [],
|
||||
"name": "ExtendedServices",
|
||||
"updated": "%(extension_update)s"
|
||||
},
|
||||
{
|
||||
"alias": "os-extended-snapshot-attributes",
|
||||
"description": "Extended SnapshotAttributes support.",
|
||||
"links": [],
|
||||
"name": "ExtendedSnapshotAttributes",
|
||||
"updated": "%(extension_update)s"
|
||||
},
|
||||
{
|
||||
"alias": "os-snapshot-unmanage",
|
||||
"description": "Enable volume unmanage operation.",
|
||||
"links": [],
|
||||
"name": "SnapshotUnmanage",
|
||||
"updated": "%(extension_update)s"
|
||||
},
|
||||
{
|
||||
"alias": "qos-specs",
|
||||
"description": "QoS specs support.",
|
||||
"links": [],
|
||||
"name": "Qos_specs_manage",
|
||||
"updated": "%(extension_update)s"
|
||||
},
|
||||
{
|
||||
"alias": "os-quota-class-sets",
|
||||
"description": "Quota classes management support.",
|
||||
"links": [],
|
||||
"name": "QuotaClasses",
|
||||
"updated": "%(extension_update)s"
|
||||
},
|
||||
{
|
||||
"alias": "os-volume-transfer",
|
||||
"description": "Volume transfer management support.",
|
||||
"links": [],
|
||||
"name": "VolumeTransfer",
|
||||
"updated": "%(extension_update)s"
|
||||
},
|
||||
{
|
||||
"alias": "os-volume-manage",
|
||||
"description": "Allows existing backend storage to be 'managed' by Cinder.",
|
||||
"links": [],
|
||||
"name": "VolumeManage",
|
||||
"updated": "%(extension_update)s"
|
||||
},
|
||||
{
|
||||
"alias": "os-admin-actions",
|
||||
"description": "Enable admin actions.",
|
||||
"links": [],
|
||||
"name": "AdminActions",
|
||||
"updated": "%(extension_update)s"
|
||||
},
|
||||
{
|
||||
"alias": "os-services",
|
||||
"description": "Services support.",
|
||||
"links": [],
|
||||
"name": "Services",
|
||||
"updated": "%(extension_update)s"
|
||||
},
|
||||
{
|
||||
"alias": "scheduler-stats",
|
||||
"description": "Scheduler stats support.",
|
||||
"links": [],
|
||||
"name": "Scheduler_stats",
|
||||
"updated": "%(extension_update)s"
|
||||
}
|
||||
]
|
||||
}
|
@ -0,0 +1,28 @@
|
||||
{
|
||||
"versions": [
|
||||
{
|
||||
"id": "v3.0",
|
||||
"links": [
|
||||
{
|
||||
"href": "https://docs.openstack.org/",
|
||||
"rel": "describedby",
|
||||
"type": "text/html"
|
||||
},
|
||||
{
|
||||
"href": "%(host)s/v3/",
|
||||
"rel": "self"
|
||||
}
|
||||
],
|
||||
"media-types": [
|
||||
{
|
||||
"base": "application/json",
|
||||
"type": "application/vnd.openstack.volume+json;version=3"
|
||||
}
|
||||
],
|
||||
"min_version": "3.0",
|
||||
"status": "CURRENT",
|
||||
"updated": "%(isotime)s",
|
||||
"version": "%(max_api_version)s"
|
||||
}
|
||||
]
|
||||
}
|
@ -1,8 +1,8 @@
|
||||
{
|
||||
"versions": [
|
||||
{
|
||||
"status": "SUPPORTED",
|
||||
"updated": "2014-06-28T12:20:21Z",
|
||||
"status": "DEPRECATED",
|
||||
"updated": "%(isotime)s",
|
||||
"links": [
|
||||
{
|
||||
"href": "https://docs.openstack.org/",
|
||||
@ -10,7 +10,7 @@
|
||||
"rel": "describedby"
|
||||
},
|
||||
{
|
||||
"href": "http://10.0.2.15:8776/v2/",
|
||||
"href": "%(host)s/v2/",
|
||||
"rel": "self"
|
||||
}
|
||||
],
|
||||
@ -26,7 +26,7 @@
|
||||
},
|
||||
{
|
||||
"status": "CURRENT",
|
||||
"updated": "2016-02-08T12:20:21Z",
|
||||
"updated": "%(isotime)s",
|
||||
"links": [
|
||||
{
|
||||
"href": "https://docs.openstack.org/",
|
||||
@ -34,12 +34,12 @@
|
||||
"rel": "describedby"
|
||||
},
|
||||
{
|
||||
"href": "http://10.0.2.15:8776/v3/",
|
||||
"href": "%(host)s/v3/",
|
||||
"rel": "self"
|
||||
}
|
||||
],
|
||||
"min_version": "3.0",
|
||||
"version": "{Current_Max_Version}",
|
||||
"version": "%(max_api_version)s",
|
||||
"media-types": [
|
||||
{
|
||||
"base": "application/json",
|
29
cinder/tests/functional/api_sample_tests/test_extensions.py
Normal file
29
cinder/tests/functional/api_sample_tests/test_extensions.py
Normal file
@ -0,0 +1,29 @@
|
||||
# Licensed under the Apache License, Version 2.0 (the "License"); you may
|
||||
# not use this file except in compliance with the License. You may obtain
|
||||
# a copy of the License at
|
||||
#
|
||||
# http://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
||||
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
|
||||
# License for the specific language governing permissions and limitations
|
||||
# under the License.
|
||||
|
||||
from cinder.api.openstack import api_version_request
|
||||
from cinder.tests.functional import api_samples_test_base
|
||||
|
||||
|
||||
class ExtensionsSampleJsonTest(api_samples_test_base.ApiSampleTestBase):
|
||||
sample_dir = "extensions"
|
||||
|
||||
def setUp(self):
|
||||
super(ExtensionsSampleJsonTest, self).setUp()
|
||||
self.subs = {
|
||||
'max_api_version': api_version_request._MAX_API_VERSION}
|
||||
|
||||
def test_extensions(self):
|
||||
response = self._do_get('extensions')
|
||||
self._verify_response('extensions-list-response',
|
||||
self.subs,
|
||||
response, 200, update_links=False)
|
35
cinder/tests/functional/api_sample_tests/test_versions.py
Normal file
35
cinder/tests/functional/api_sample_tests/test_versions.py
Normal file
@ -0,0 +1,35 @@
|
||||
# Licensed under the Apache License, Version 2.0 (the "License"); you may
|
||||
# not use this file except in compliance with the License. You may obtain
|
||||
# a copy of the License at
|
||||
#
|
||||
# http://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
||||
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
|
||||
# License for the specific language governing permissions and limitations
|
||||
# under the License.
|
||||
|
||||
from cinder.api.openstack import api_version_request
|
||||
from cinder.tests.functional import api_samples_test_base
|
||||
|
||||
|
||||
class VersionsSampleJsonTest(api_samples_test_base.ApiSampleTestBase):
|
||||
sample_dir = "versions"
|
||||
|
||||
def setUp(self):
|
||||
super(VersionsSampleJsonTest, self).setUp()
|
||||
self.subs = {
|
||||
'max_api_version': api_version_request._MAX_API_VERSION}
|
||||
|
||||
def test_versions_get_all(self):
|
||||
response = self.api.api_request('', strip_version=True)
|
||||
self._verify_response('versions-response',
|
||||
self.subs,
|
||||
response, 300, update_links=False)
|
||||
|
||||
def test_versions_get_v3(self):
|
||||
response = self.api.api_request('v3/', strip_version=True)
|
||||
self._verify_response('version-show-response',
|
||||
self.subs,
|
||||
response, 200, update_links=False)
|
@ -19,7 +19,7 @@ CONF = cfg.CONF
|
||||
|
||||
|
||||
class VolumeTypesSampleJsonTest(api_samples_test_base.ApiSampleTestBase):
|
||||
sample_dir = "volumes"
|
||||
sample_dir = "volume_type"
|
||||
|
||||
def setUp(self):
|
||||
super(VolumeTypesSampleJsonTest, self).setUp()
|
||||
|
@ -100,6 +100,7 @@ class ApiSampleTestBase(functional_helpers._FunctionalTestBase):
|
||||
def _get_sample_path(cls, name, dirname, suffix='', api_version=None):
|
||||
parts = [dirname]
|
||||
parts.append('samples')
|
||||
parts.append(cls.sample_dir)
|
||||
if api_version:
|
||||
parts.append('v' + api_version)
|
||||
parts.append(name + ".json" + suffix)
|
||||
@ -400,6 +401,8 @@ class ApiSampleTestBase(functional_helpers._FunctionalTestBase):
|
||||
text = r'(\\"|[^"])*'
|
||||
isotime_re = '\d{4}-[0,1]\d-[0-3]\dT\d{2}:\d{2}:\d{2}Z'
|
||||
strtime_re = '\d{4}-[0,1]\d-[0-3]\dT\d{2}:\d{2}:\d{2}\.\d{6}'
|
||||
extension_update = (
|
||||
'\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}[+-]\d{2}:\d{2}')
|
||||
strtime_url_re = ('\d{4}-[0,1]\d-[0-3]\d'
|
||||
'\+\d{2}\%3A\d{2}\%3A\d{2}\.\d{6}')
|
||||
|
||||
@ -415,7 +418,7 @@ class ApiSampleTestBase(functional_helpers._FunctionalTestBase):
|
||||
'-[0-9a-f]{4}-[0-9a-f]{12}',
|
||||
'request_id': 'req-[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}'
|
||||
'-[0-9a-f]{4}-[0-9a-f]{12}',
|
||||
'host': self._get_host(),
|
||||
'host': 'https?://[0-9]+(?:\.[0-9]+){3}:[0-9]+',
|
||||
'host_name': r'\w+',
|
||||
'glance_host': self._get_glance_host(),
|
||||
'os-vol-host-attr:host': self.volume.host,
|
||||
@ -426,7 +429,8 @@ class ApiSampleTestBase(functional_helpers._FunctionalTestBase):
|
||||
'volume_endpoint': self._get_volume_endpoint(),
|
||||
'versioned_volume_endpoint': self._get_versioned_volume_endpoint(),
|
||||
'name': text,
|
||||
'description': text
|
||||
'description': text,
|
||||
'extension_update': extension_update
|
||||
}
|
||||
|
||||
def _get_volume_endpoint(self):
|
||||
|
Loading…
Reference in New Issue
Block a user