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:
Jenkins 2016-04-22 20:16:31 +00:00 committed by Gerrit Code Review
commit 5c32613975
5 changed files with 263 additions and 2 deletions

View File

@ -265,3 +265,89 @@ class BaseVolumesClient(AutoMarshallingHTTPClient):
'GET', url,
response_entity_type=self.response_models.QuotaSet,
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)

View File

@ -10,3 +10,18 @@ class StatusResetRequest(AutoMarshallingModel):
def _obj_to_json(self):
data = {"os-reset_status": {"status": self.status}}
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)})

View File

@ -1,6 +1,24 @@
import json
from cafe.engine.models.base import \
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):
@ -57,3 +75,145 @@ class QuotaSet(AutoMarshallingModel):
for k, v in data.items():
setattr(quotaset, k, v)
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

View File

@ -23,7 +23,7 @@ from cloudcafe.blockstorage.volumes_api.common.models.automarshalling import \
# Import common requests
from cloudcafe.blockstorage.volumes_api.common.models.requests import \
StatusResetRequest
StatusResetRequest, VolumeTransferRequest
class VolumeRequest(CommonModelProperties, AutoMarshallingModel):

View File

@ -23,7 +23,7 @@ from cloudcafe.blockstorage.volumes_api.common.models.automarshalling import \
# Import common requests
from cloudcafe.blockstorage.volumes_api.common.models.requests import \
StatusResetRequest
StatusResetRequest, VolumeTransferRequest
class VolumeRequest(CommonModelProperties, AutoMarshallingModel):