summaryrefslogtreecommitdiff
path: root/openstackclient
diff options
context:
space:
mode:
Diffstat (limited to 'openstackclient')
-rw-r--r--openstackclient/tests/unit/volume/v1/fakes.py7
-rw-r--r--openstackclient/tests/unit/volume/v1/test_transfer_request.py72
-rw-r--r--openstackclient/tests/unit/volume/v2/fakes.py7
-rw-r--r--openstackclient/tests/unit/volume/v2/test_transfer_request.py72
-rw-r--r--openstackclient/volume/v1/volume_transfer_request.py32
-rw-r--r--openstackclient/volume/v2/volume_transfer_request.py30
6 files changed, 213 insertions, 7 deletions
diff --git a/openstackclient/tests/unit/volume/v1/fakes.py b/openstackclient/tests/unit/volume/v1/fakes.py
index 5c1f3b12..f63553fe 100644
--- a/openstackclient/tests/unit/volume/v1/fakes.py
+++ b/openstackclient/tests/unit/volume/v1/fakes.py
@@ -146,9 +146,12 @@ class FakeTransfer(object):
"""
# Set default attribute
transfer_info = {
- 'volume_id': 'ce26708d-a7f8-4b4b-9861-4a80256615a7',
+ 'auth_key': 'key-' + uuid.uuid4().hex,
+ 'created_at': 'time-' + uuid.uuid4().hex,
+ 'volume_id': 'volume-id-' + uuid.uuid4().hex,
'name': 'fake_transfer_name',
- 'id': '731a7f53-aa92-4fbd-9de3-6f7d729c926b'
+ 'id': 'id-' + uuid.uuid4().hex,
+ 'links': 'links-' + uuid.uuid4().hex,
}
# Overwrite default attributes if there are some attributes set
diff --git a/openstackclient/tests/unit/volume/v1/test_transfer_request.py b/openstackclient/tests/unit/volume/v1/test_transfer_request.py
index f7980c34..a5c31f8d 100644
--- a/openstackclient/tests/unit/volume/v1/test_transfer_request.py
+++ b/openstackclient/tests/unit/volume/v1/test_transfer_request.py
@@ -12,7 +12,6 @@
# under the License.
#
-
from openstackclient.tests.unit.volume.v1 import fakes as transfer_fakes
from openstackclient.volume.v1 import volume_transfer_request
@@ -26,6 +25,77 @@ class TestTransfer(transfer_fakes.TestVolumev1):
self.transfer_mock = self.app.client_manager.volume.transfers
self.transfer_mock.reset_mock()
+ # Get a shortcut to the VolumeManager Mock
+ self.volumes_mock = self.app.client_manager.volume.volumes
+ self.volumes_mock.reset_mock()
+
+
+class TestTransferCreate(TestTransfer):
+
+ volume = transfer_fakes.FakeVolume.create_one_volume()
+
+ columns = (
+ 'auth_key',
+ 'created_at',
+ 'id',
+ 'name',
+ 'volume_id',
+ )
+
+ def setUp(self):
+ super(TestTransferCreate, self).setUp()
+
+ self.volume_transfer = transfer_fakes.FakeTransfer.create_one_transfer(
+ attrs={'volume_id': self.volume.id})
+ self.data = (
+ self.volume_transfer.auth_key,
+ self.volume_transfer.created_at,
+ self.volume_transfer.id,
+ self.volume_transfer.name,
+ self.volume_transfer.volume_id,
+ )
+
+ self.transfer_mock.create.return_value = self.volume_transfer
+ self.volumes_mock.get.return_value = self.volume
+
+ # Get the command object to test
+ self.cmd = volume_transfer_request.CreateTransferRequest(
+ self.app, None)
+
+ def test_transfer_create_without_name(self):
+ arglist = [
+ self.volume.id,
+ ]
+ verifylist = [
+ ('volume', self.volume.id),
+ ]
+ parsed_args = self.check_parser(self.cmd, arglist, verifylist)
+
+ columns, data = self.cmd.take_action(parsed_args)
+
+ self.transfer_mock.create.assert_called_once_with(
+ self.volume.id, None)
+ self.assertEqual(self.columns, columns)
+ self.assertEqual(self.data, data)
+
+ def test_transfer_create_with_name(self):
+ arglist = [
+ '--name', self.volume_transfer.name,
+ self.volume.id,
+ ]
+ verifylist = [
+ ('name', self.volume_transfer.name),
+ ('volume', self.volume.id),
+ ]
+ parsed_args = self.check_parser(self.cmd, arglist, verifylist)
+
+ columns, data = self.cmd.take_action(parsed_args)
+
+ self.transfer_mock.create.assert_called_once_with(
+ self.volume.id, self.volume_transfer.name,)
+ self.assertEqual(self.columns, columns)
+ self.assertEqual(self.data, data)
+
class TestTransferList(TestTransfer):
diff --git a/openstackclient/tests/unit/volume/v2/fakes.py b/openstackclient/tests/unit/volume/v2/fakes.py
index a958c468..51c952cd 100644
--- a/openstackclient/tests/unit/volume/v2/fakes.py
+++ b/openstackclient/tests/unit/volume/v2/fakes.py
@@ -39,9 +39,12 @@ class FakeTransfer(object):
"""
# Set default attribute
transfer_info = {
- 'volume_id': 'ce26708d-a7f8-4b4b-9861-4a80256615a7',
+ 'auth_key': 'key-' + uuid.uuid4().hex,
+ 'created_at': 'time-' + uuid.uuid4().hex,
+ 'volume_id': 'volume-id-' + uuid.uuid4().hex,
'name': 'fake_transfer_name',
- 'id': '731a7f53-aa92-4fbd-9de3-6f7d729c926b'
+ 'id': 'id-' + uuid.uuid4().hex,
+ 'links': 'links-' + uuid.uuid4().hex,
}
# Overwrite default attributes if there are some attributes set
diff --git a/openstackclient/tests/unit/volume/v2/test_transfer_request.py b/openstackclient/tests/unit/volume/v2/test_transfer_request.py
index 32108c02..8cc76bef 100644
--- a/openstackclient/tests/unit/volume/v2/test_transfer_request.py
+++ b/openstackclient/tests/unit/volume/v2/test_transfer_request.py
@@ -12,7 +12,6 @@
# under the License.
#
-
from openstackclient.tests.unit.volume.v2 import fakes as transfer_fakes
from openstackclient.volume.v2 import volume_transfer_request
@@ -26,6 +25,77 @@ class TestTransfer(transfer_fakes.TestVolume):
self.transfer_mock = self.app.client_manager.volume.transfers
self.transfer_mock.reset_mock()
+ # Get a shortcut to the VolumeManager Mock
+ self.volumes_mock = self.app.client_manager.volume.volumes
+ self.volumes_mock.reset_mock()
+
+
+class TestTransferCreate(TestTransfer):
+
+ volume = transfer_fakes.FakeVolume.create_one_volume()
+
+ columns = (
+ 'auth_key',
+ 'created_at',
+ 'id',
+ 'name',
+ 'volume_id',
+ )
+
+ def setUp(self):
+ super(TestTransferCreate, self).setUp()
+
+ self.volume_transfer = transfer_fakes.FakeTransfer.create_one_transfer(
+ attrs={'volume_id': self.volume.id})
+ self.data = (
+ self.volume_transfer.auth_key,
+ self.volume_transfer.created_at,
+ self.volume_transfer.id,
+ self.volume_transfer.name,
+ self.volume_transfer.volume_id,
+ )
+
+ self.transfer_mock.create.return_value = self.volume_transfer
+ self.volumes_mock.get.return_value = self.volume
+
+ # Get the command object to test
+ self.cmd = volume_transfer_request.CreateTransferRequest(
+ self.app, None)
+
+ def test_transfer_create_without_name(self):
+ arglist = [
+ self.volume.id,
+ ]
+ verifylist = [
+ ('volume', self.volume.id),
+ ]
+ parsed_args = self.check_parser(self.cmd, arglist, verifylist)
+
+ columns, data = self.cmd.take_action(parsed_args)
+
+ self.transfer_mock.create.assert_called_once_with(
+ self.volume.id, None)
+ self.assertEqual(self.columns, columns)
+ self.assertEqual(self.data, data)
+
+ def test_transfer_create_with_name(self):
+ arglist = [
+ '--name', self.volume_transfer.name,
+ self.volume.id,
+ ]
+ verifylist = [
+ ('name', self.volume_transfer.name),
+ ('volume', self.volume.id),
+ ]
+ parsed_args = self.check_parser(self.cmd, arglist, verifylist)
+
+ columns, data = self.cmd.take_action(parsed_args)
+
+ self.transfer_mock.create.assert_called_once_with(
+ self.volume.id, self.volume_transfer.name,)
+ self.assertEqual(self.columns, columns)
+ self.assertEqual(self.data, data)
+
class TestTransferList(TestTransfer):
diff --git a/openstackclient/volume/v1/volume_transfer_request.py b/openstackclient/volume/v1/volume_transfer_request.py
index 5d8ff683..b1167340 100644
--- a/openstackclient/volume/v1/volume_transfer_request.py
+++ b/openstackclient/volume/v1/volume_transfer_request.py
@@ -12,14 +12,44 @@
# under the License.
#
-"""Volume v2 transfer action implementations"""
+"""Volume v1 transfer action implementations"""
from osc_lib.command import command
from osc_lib import utils
+import six
from openstackclient.i18n import _
+class CreateTransferRequest(command.ShowOne):
+ """Create volume transfer request."""
+
+ def get_parser(self, prog_name):
+ parser = super(CreateTransferRequest, self).get_parser(prog_name)
+ parser.add_argument(
+ '--name',
+ metavar="<name>",
+ help=_('New transfer request name (default to None)')
+ )
+ parser.add_argument(
+ 'volume',
+ metavar="<volume>",
+ help=_('Volume to transfer (name or ID)')
+ )
+ return parser
+
+ def take_action(self, parsed_args):
+ volume_client = self.app.client_manager.volume
+ volume_id = utils.find_resource(
+ volume_client.volumes, parsed_args.volume).id
+ volume_transfer_request = volume_client.transfers.create(
+ volume_id, parsed_args.name,
+ )
+ volume_transfer_request._info.pop("links", None)
+
+ return zip(*sorted(six.iteritems(volume_transfer_request._info)))
+
+
class ListTransferRequests(command.Lister):
"""Lists all volume transfer requests."""
diff --git a/openstackclient/volume/v2/volume_transfer_request.py b/openstackclient/volume/v2/volume_transfer_request.py
index 5d8ff683..45581586 100644
--- a/openstackclient/volume/v2/volume_transfer_request.py
+++ b/openstackclient/volume/v2/volume_transfer_request.py
@@ -16,10 +16,40 @@
from osc_lib.command import command
from osc_lib import utils
+import six
from openstackclient.i18n import _
+class CreateTransferRequest(command.ShowOne):
+ """Create volume transfer request."""
+
+ def get_parser(self, prog_name):
+ parser = super(CreateTransferRequest, self).get_parser(prog_name)
+ parser.add_argument(
+ '--name',
+ metavar="<name>",
+ help=_('New transfer request name (default to None)'),
+ )
+ parser.add_argument(
+ 'volume',
+ metavar="<volume>",
+ help=_('Volume to transfer (name or ID)'),
+ )
+ return parser
+
+ def take_action(self, parsed_args):
+ volume_client = self.app.client_manager.volume
+ volume_id = utils.find_resource(
+ volume_client.volumes, parsed_args.volume).id
+ volume_transfer_request = volume_client.transfers.create(
+ volume_id, parsed_args.name,
+ )
+ volume_transfer_request._info.pop("links", None)
+
+ return zip(*sorted(six.iteritems(volume_transfer_request._info)))
+
+
class ListTransferRequests(command.Lister):
"""Lists all volume transfer requests."""