Merge "Added volume_transfer client models for v1 and v2 -removed instances of v1 on url and comments -changed names for clarity"
This commit is contained in:
commit
5c32613975
|
@ -265,3 +265,89 @@ class BaseVolumesClient(AutoMarshallingHTTPClient):
|
||||||
'GET', url,
|
'GET', url,
|
||||||
response_entity_type=self.response_models.QuotaSet,
|
response_entity_type=self.response_models.QuotaSet,
|
||||||
requestslib_kwargs=requestslib_kwargs)
|
requestslib_kwargs=requestslib_kwargs)
|
||||||
|
|
||||||
|
# Volume Transfers
|
||||||
|
def create_volume_transfer(
|
||||||
|
self, target_tenant_id, volume_id, name=None,
|
||||||
|
requestslib_kwargs=None):
|
||||||
|
"""POST /{target_tenant_id}/os-volume-transfer"""
|
||||||
|
|
||||||
|
url = '{url}/{target_tenant_id}/os-volume-transfer'.format(
|
||||||
|
url=self.url, target_tenant_id=target_tenant_id)
|
||||||
|
|
||||||
|
request_entity = self.request_models.VolumeTransferRequest(
|
||||||
|
volume_id=volume_id, name=name)
|
||||||
|
|
||||||
|
return self.request(
|
||||||
|
'POST', url, request_entity=request_entity,
|
||||||
|
response_entity_type=self.response_models.VolumeTransferResponse,
|
||||||
|
requestslib_kwargs=requestslib_kwargs)
|
||||||
|
|
||||||
|
def list_all_volume_transfers(
|
||||||
|
self, target_tenant_id, requestslib_kwargs=None):
|
||||||
|
"""GET /{tenant_id}/os-volume-transfer"""
|
||||||
|
|
||||||
|
url = '{url}/{target_tenant_id}/os-volume-transfer'.format(
|
||||||
|
url=self.url, target_tenant_id=target_tenant_id)
|
||||||
|
|
||||||
|
return self.request(
|
||||||
|
'GET', url,
|
||||||
|
response_entity_type=self.response_models.
|
||||||
|
VolumeTransfersListResponse,
|
||||||
|
requestslib_kwargs=requestslib_kwargs)
|
||||||
|
|
||||||
|
def list_all_volume_transfers_info(
|
||||||
|
self, target_tenant_id, requestslib_kwargs=None):
|
||||||
|
"""GET /{tenant_id}/os-volume-transfer/detail"""
|
||||||
|
|
||||||
|
url = '{url}/{target_tenant_id}/os-volume-transfer/detail'.format(
|
||||||
|
url=self.url, target_tenant_id=target_tenant_id)
|
||||||
|
|
||||||
|
return self.request(
|
||||||
|
'GET', url,
|
||||||
|
response_entity_type=self.response_models.
|
||||||
|
VolumeTransfersListDetailedResponse,
|
||||||
|
requestslib_kwargs=requestslib_kwargs)
|
||||||
|
|
||||||
|
def get_volume_transfer(
|
||||||
|
self, target_tenant_id, target_transfer_id,
|
||||||
|
requestslib_kwargs=None):
|
||||||
|
"""GET /{tenant_id}/os-volume-transfer/{transfer_id}"""
|
||||||
|
|
||||||
|
url = '{url}/{target_tenant_id}/os-volume-transfer/ \
|
||||||
|
{target_transfer_id}'.format(
|
||||||
|
url=self.url, target_tenant_id=target_tenant_id,
|
||||||
|
target_transfer_id=target_transfer_id)
|
||||||
|
|
||||||
|
return self.request(
|
||||||
|
'GET', url, response_entity_type=self.response_models.
|
||||||
|
VolumeTransferDetailedResponse,
|
||||||
|
requestslib_kwargs=requestslib_kwargs)
|
||||||
|
|
||||||
|
def delete_volume_transfer(
|
||||||
|
self, target_tenant_id, target_transfer_id,
|
||||||
|
requestslib_kwargs=None):
|
||||||
|
"""DELETE /{tenant_id}/os-volume-transfer/{transfer_id}"""
|
||||||
|
|
||||||
|
url = '{url}/{target_tenant_id}/os-volume-transfer/ \
|
||||||
|
{target_transfer_id}'.format(
|
||||||
|
url=self.url, target_tenant_id=target_tenant_id,
|
||||||
|
target_transfer_id=target_transfer_id)
|
||||||
|
|
||||||
|
return self.request(
|
||||||
|
'DELETE', url, requestslib_kwargs=requestslib_kwargs)
|
||||||
|
|
||||||
|
def accept_volume_transfer(
|
||||||
|
self, target_tenant_id, target_transfer_id,
|
||||||
|
requestslib_kwargs=None):
|
||||||
|
"""POST /{tenant_id}/os-volume-transfer/{transfer_id}/accept"""
|
||||||
|
|
||||||
|
url = '{url}/{target_tenant_id}/os-volume-transfer/ \
|
||||||
|
{target_transfer_id}/accept'.format(
|
||||||
|
url=self.url, target_tenant_id=target_tenant_id,
|
||||||
|
target_transfer_id=target_transfer_id)
|
||||||
|
|
||||||
|
return self.request(
|
||||||
|
'POST', url, response_entity_type=self.response_models.
|
||||||
|
VolumeTransferAcceptResponse,
|
||||||
|
requestslib_kwargs=requestslib_kwargs)
|
||||||
|
|
|
@ -10,3 +10,18 @@ class StatusResetRequest(AutoMarshallingModel):
|
||||||
def _obj_to_json(self):
|
def _obj_to_json(self):
|
||||||
data = {"os-reset_status": {"status": self.status}}
|
data = {"os-reset_status": {"status": self.status}}
|
||||||
return json.dumps(data)
|
return json.dumps(data)
|
||||||
|
|
||||||
|
|
||||||
|
class VolumeTransferRequest(AutoMarshallingModel):
|
||||||
|
def __init__(self, volume_id=None, name=None):
|
||||||
|
super(VolumeTransferRequest, self).__init__()
|
||||||
|
self.volume_id = volume_id
|
||||||
|
self.name = name
|
||||||
|
|
||||||
|
def _obj_to_json(self):
|
||||||
|
volume_attrs = {
|
||||||
|
"volume_id": self.volume_id,
|
||||||
|
"name": self.name}
|
||||||
|
|
||||||
|
return json.dumps(
|
||||||
|
{'transfer': self._remove_empty_values(volume_attrs)})
|
||||||
|
|
|
@ -1,6 +1,24 @@
|
||||||
import json
|
import json
|
||||||
from cafe.engine.models.base import \
|
from cafe.engine.models.base import \
|
||||||
AutoMarshallingDictModel, AutoMarshallingModel
|
AutoMarshallingDictModel, AutoMarshallingModel
|
||||||
|
from cloudcafe.blockstorage.volumes_api.common.models.automarshalling import \
|
||||||
|
_VolumesAPIBaseModel, _VolumesAPIBaseListModel
|
||||||
|
|
||||||
|
|
||||||
|
class _LinksItem(_VolumesAPIBaseModel):
|
||||||
|
kwarg_map = {
|
||||||
|
"href": "href",
|
||||||
|
"rel": "rel"}
|
||||||
|
|
||||||
|
def __init__(self, href=None, rel=None):
|
||||||
|
super(_LinksItem, self).__init__()
|
||||||
|
self.href = href
|
||||||
|
self.rel = rel
|
||||||
|
|
||||||
|
|
||||||
|
class _LinksList(_VolumesAPIBaseListModel):
|
||||||
|
list_model_key = 'links'
|
||||||
|
ObjectModel = _LinksItem
|
||||||
|
|
||||||
|
|
||||||
class QuotaUsageResponse(AutoMarshallingDictModel):
|
class QuotaUsageResponse(AutoMarshallingDictModel):
|
||||||
|
@ -57,3 +75,145 @@ class QuotaSet(AutoMarshallingModel):
|
||||||
for k, v in data.items():
|
for k, v in data.items():
|
||||||
setattr(quotaset, k, v)
|
setattr(quotaset, k, v)
|
||||||
return quotaset
|
return quotaset
|
||||||
|
|
||||||
|
|
||||||
|
class VolumeTransferResponse(_VolumesAPIBaseModel):
|
||||||
|
obj_model_key = 'transfer'
|
||||||
|
kwarg_map = {
|
||||||
|
"id_": "id",
|
||||||
|
"created_at": "created_at",
|
||||||
|
"name": "name",
|
||||||
|
"volume_id": "volume_id",
|
||||||
|
"auth_key": "auth_key",
|
||||||
|
"links": "links"}
|
||||||
|
|
||||||
|
def __init__(
|
||||||
|
self, id_=None, created_at=None, name=None, volume_id=None,
|
||||||
|
auth_key=None, links=None):
|
||||||
|
|
||||||
|
super(VolumeTransferResponse, self).__init__()
|
||||||
|
self.id_ = id_
|
||||||
|
self.created_at = created_at
|
||||||
|
self.name = name
|
||||||
|
self.volume_id = volume_id
|
||||||
|
self.auth_key = auth_key
|
||||||
|
self.links = links
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def _json_dict_to_obj(cls, json_dict):
|
||||||
|
volume_transfer = cls._map_values_to_kwargs(json_dict)
|
||||||
|
volume_transfer.links = _LinksList._json_dict_to_obj(
|
||||||
|
volume_transfer.links)
|
||||||
|
return volume_transfer
|
||||||
|
|
||||||
|
|
||||||
|
class _VolumeTransfersListResponseItem(_VolumesAPIBaseModel):
|
||||||
|
kwarg_map = {
|
||||||
|
"id_": "id",
|
||||||
|
"name": "name",
|
||||||
|
"volume_id": "volume_id",
|
||||||
|
"links": "links"}
|
||||||
|
|
||||||
|
def __init__(
|
||||||
|
self, id_=None, name=None, volume_id=None, links=None):
|
||||||
|
|
||||||
|
super(_VolumeTransfersListResponseItem, self).__init__()
|
||||||
|
self.id_ = id_
|
||||||
|
self.name = name
|
||||||
|
self.volume_id = volume_id
|
||||||
|
self.links = links
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def _json_dict_to_obj(cls, json_dict):
|
||||||
|
volume_transfer = cls._map_values_to_kwargs(json_dict)
|
||||||
|
volume_transfer.links = _LinksList._json_dict_to_obj(
|
||||||
|
volume_transfer.links)
|
||||||
|
return volume_transfer
|
||||||
|
|
||||||
|
|
||||||
|
class VolumeTransfersListResponse(_VolumesAPIBaseListModel):
|
||||||
|
list_model_key = 'transfers'
|
||||||
|
ObjectModel = _VolumeTransfersListResponseItem
|
||||||
|
|
||||||
|
|
||||||
|
class _VolumeTransfersListDetailedResponseItem(_VolumesAPIBaseModel):
|
||||||
|
kwarg_map = {
|
||||||
|
"id_": "id",
|
||||||
|
"created_at": "created_at",
|
||||||
|
"name": "name",
|
||||||
|
"volume_id": "volume_id",
|
||||||
|
"links": "links"}
|
||||||
|
|
||||||
|
def __init__(
|
||||||
|
self, id_=None, created_at=None, name=None, volume_id=None,
|
||||||
|
links=None):
|
||||||
|
|
||||||
|
super(_VolumeTransfersListDetailedResponseItem, self).__init__()
|
||||||
|
self.id_ = id_
|
||||||
|
self.created_at = created_at
|
||||||
|
self.name = name
|
||||||
|
self.volume_id = volume_id
|
||||||
|
self.links = links
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def _json_dict_to_obj(cls, json_dict):
|
||||||
|
volume_transfer = cls._map_values_to_kwargs(json_dict)
|
||||||
|
volume_transfer.links = _LinksList._json_dict_to_obj(
|
||||||
|
volume_transfer.links)
|
||||||
|
return volume_transfer
|
||||||
|
|
||||||
|
|
||||||
|
class VolumeTransfersListDetailedResponse(_VolumesAPIBaseListModel):
|
||||||
|
list_model_key = 'transfers'
|
||||||
|
ObjectModel = _VolumeTransfersListDetailedResponseItem
|
||||||
|
|
||||||
|
|
||||||
|
class VolumeTransferDetailedResponse(_VolumesAPIBaseModel):
|
||||||
|
kwarg_map = {
|
||||||
|
"id_": "id",
|
||||||
|
"created_at": "created_at",
|
||||||
|
"name": "name",
|
||||||
|
"volume_id": "volume_id",
|
||||||
|
"links": "links"}
|
||||||
|
|
||||||
|
def __init__(
|
||||||
|
self, id_=None, created_at=None, name=None, volume_id=None,
|
||||||
|
links=None):
|
||||||
|
|
||||||
|
super(VolumeTransferDetailedResponse, self).__init__()
|
||||||
|
self.id_ = id_
|
||||||
|
self.created_at = created_at
|
||||||
|
self.name = name
|
||||||
|
self.volume_id = volume_id
|
||||||
|
self.links = links
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def _json_dict_to_obj(cls, json_dict):
|
||||||
|
volume_transfer = cls._map_values_to_kwargs(json_dict)
|
||||||
|
volume_transfer.links = _LinksList._json_dict_to_obj(
|
||||||
|
volume_transfer.links)
|
||||||
|
return volume_transfer
|
||||||
|
|
||||||
|
|
||||||
|
class VolumeTransferAcceptResponse(_VolumesAPIBaseModel):
|
||||||
|
kwarg_map = {
|
||||||
|
"id_": "id",
|
||||||
|
"name": "name",
|
||||||
|
"volume_id": "volume_id",
|
||||||
|
"links": "links"}
|
||||||
|
|
||||||
|
def __init__(
|
||||||
|
self, id_=None, name=None, volume_id=None, links=None):
|
||||||
|
|
||||||
|
super(VolumeTransferAcceptResponse, self).__init__()
|
||||||
|
self.id_ = id_
|
||||||
|
self.name = name
|
||||||
|
self.volume_id = volume_id
|
||||||
|
self.links = links
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def _json_dict_to_obj(cls, json_dict):
|
||||||
|
volume_transfer = cls._map_values_to_kwargs(json_dict)
|
||||||
|
volume_transfer.links = _LinksList._json_dict_to_obj(
|
||||||
|
volume_transfer.links)
|
||||||
|
return volume_transfer
|
||||||
|
|
|
@ -23,7 +23,7 @@ from cloudcafe.blockstorage.volumes_api.common.models.automarshalling import \
|
||||||
|
|
||||||
# Import common requests
|
# Import common requests
|
||||||
from cloudcafe.blockstorage.volumes_api.common.models.requests import \
|
from cloudcafe.blockstorage.volumes_api.common.models.requests import \
|
||||||
StatusResetRequest
|
StatusResetRequest, VolumeTransferRequest
|
||||||
|
|
||||||
|
|
||||||
class VolumeRequest(CommonModelProperties, AutoMarshallingModel):
|
class VolumeRequest(CommonModelProperties, AutoMarshallingModel):
|
||||||
|
|
|
@ -23,7 +23,7 @@ from cloudcafe.blockstorage.volumes_api.common.models.automarshalling import \
|
||||||
|
|
||||||
# Import common requests
|
# Import common requests
|
||||||
from cloudcafe.blockstorage.volumes_api.common.models.requests import \
|
from cloudcafe.blockstorage.volumes_api.common.models.requests import \
|
||||||
StatusResetRequest
|
StatusResetRequest, VolumeTransferRequest
|
||||||
|
|
||||||
|
|
||||||
class VolumeRequest(CommonModelProperties, AutoMarshallingModel):
|
class VolumeRequest(CommonModelProperties, AutoMarshallingModel):
|
||||||
|
|
Loading…
Reference in New Issue