Client : Create BayModel with server type(VM/BM)

Client changes to create baymodel with provided VM/BM
server type. In its current state of art, the Baymodel is
created with only "VM" server type. This value is hardcoded
in the code and a tech debt bug was filed to clean it off. Also
this feature can be useful to allow bay model creation with
various server type like virtual machines, baremetal etc. For
this release will restrict the server_type to vm.

Co-Authored By: OTSUKA, Yuanying <yuanying@fraction.jp>
Change-Id: I9b5566bf59e300e080937906c23c7ff7dc359e16
Partial-Bug: #1491003
This commit is contained in:
Vilobh Meshram 2015-12-11 17:14:56 -08:00 committed by OTSUKA, Yuanying
parent b481937d3e
commit fec8d9c344
3 changed files with 64 additions and 14 deletions

View File

@ -35,7 +35,36 @@ class ShellTest(shell_test_base.TestCommandLineArgument):
'--labels key=val '
'--master-flavor-id test_flavor '
'--docker-volume-size 10 '
'--public')
'--public '
'--server-type vm')
self.assertTrue(mock_create.called)
self._test_arg_success('baymodel-create '
'--keypair-id test_keypair '
'--external-network-id test_net '
'--image-id test_image '
'--coe kubernetes '
'--name test '
'--server-type vm')
self.assertTrue(mock_create.called)
@mock.patch('magnumclient.v1.baymodels.BayModelManager.create')
def test_baymodel_create_success_no_servertype(self, mock_create):
self._test_arg_success('baymodel-create '
'--name test '
'--image-id test_image '
'--keypair-id test_keypair '
'--external-network-id test_net '
'--coe swarm '
'--dns-nameserver test_dns '
'--flavor-id test_flavor '
'--fixed-network public '
'--network-driver test_driver '
'--labels key=val '
'--master-flavor-id test_flavor '
'--docker-volume-size 10 '
'--public ')
self.assertTrue(mock_create.called)
self._test_arg_success('baymodel-create '
@ -68,7 +97,8 @@ class ShellTest(shell_test_base.TestCommandLineArgument):
'--external-network-id test_net '
'--image-id test_image '
'--coe swarm'
'--public')
'--public '
'--server-type vm')
self.assertTrue(mock_create.called)
@mock.patch('magnumclient.v1.baymodels.BayModelManager.create')
@ -90,8 +120,8 @@ class ShellTest(shell_test_base.TestCommandLineArgument):
'--keypair-id test_keypair '
'--external-network-id test_net '
'--image-id test_image '
'--coe swarm'
)
'--coe swarm '
'--server-type vm')
self.assertTrue(mock_create.called)
@mock.patch('magnumclient.v1.baymodels.BayModelManager.create')
@ -101,7 +131,8 @@ class ShellTest(shell_test_base.TestCommandLineArgument):
'--keypair-id test_keypair '
'--external-network-id test_net '
'--image-id test_image '
'--coe swarm')
'--coe swarm '
'--server-type vm')
self.assertTrue(mock_create.called)
@mock.patch('magnumclient.v1.baymodels.BayModelManager.create')
@ -111,7 +142,8 @@ class ShellTest(shell_test_base.TestCommandLineArgument):
'--keypair-id test_keypair '
'--external-network-id test_net '
'--image-id test_image '
'--coe swarm')
'--coe swarm '
'--server-type vm')
self.assertTrue(mock_create.called)
@mock.patch('magnumclient.v1.baymodels.BayModelManager.create')
@ -121,7 +153,8 @@ class ShellTest(shell_test_base.TestCommandLineArgument):
'--keypair-id test_keypair '
'--external-network-id test_net '
'--image-id test_image '
'--coe swarm')
'--coe swarm '
'--server-type vm')
self.assertTrue(mock_create.called)
@mock.patch('magnumclient.v1.baymodels.BayModelManager.create')
@ -132,7 +165,8 @@ class ShellTest(shell_test_base.TestCommandLineArgument):
'--external-network-id test_net '
'--image-id test_image '
'--coe swarm '
'--http-proxy http_proxy ')
'--http-proxy http_proxy '
'--server-type vm')
self.assertTrue(mock_create.called)
@mock.patch('magnumclient.v1.baymodels.BayModelManager.create')
@ -143,7 +177,8 @@ class ShellTest(shell_test_base.TestCommandLineArgument):
'--external-network-id test_net '
'--image-id test_image '
'--coe swarm '
'--https-proxy https_proxy ')
'--https-proxy https_proxy '
'--server-type vm')
self.assertTrue(mock_create.called)
@mock.patch('magnumclient.v1.baymodels.BayModelManager.create')
@ -154,7 +189,8 @@ class ShellTest(shell_test_base.TestCommandLineArgument):
'--external-network-id test_net '
'--image-id test_image '
'--coe swarm '
'--no-proxy no_proxy ')
'--no-proxy no_proxy '
'--server-type vm')
@mock.patch('magnumclient.v1.baymodels.BayModelManager.create')
def test_baymodel_create_labels_success(self, mock_create):
@ -164,7 +200,8 @@ class ShellTest(shell_test_base.TestCommandLineArgument):
'--keypair-id test_keypair '
'--external-network-id test_net '
'--image-id test_image '
'--coe swarm')
'--coe swarm '
'--server-type vm')
self.assertTrue(mock_create.called)
@mock.patch('magnumclient.v1.baymodels.BayModelManager.create')
@ -176,7 +213,8 @@ class ShellTest(shell_test_base.TestCommandLineArgument):
'--keypair-id test_keypair '
'--external-network-id test_net '
'--image-id test_image '
'--coe swarm')
'--coe swarm '
'--server-type vm')
self.assertTrue(mock_create.called)
@mock.patch('magnumclient.v1.baymodels.BayModelManager.create')
@ -187,7 +225,8 @@ class ShellTest(shell_test_base.TestCommandLineArgument):
'--keypair-id test_keypair '
'--external-network-id test_net '
'--image-id test_image '
'--coe swarm')
'--coe swarm '
'--server-type vm')
self.assertTrue(mock_create.called)
@mock.patch('magnumclient.v1.baymodels.BayModelManager.create')
@ -213,6 +252,10 @@ class ShellTest(shell_test_base.TestCommandLineArgument):
'--coe test', self._mandatory_arg_error)
self.assertFalse(mock_create.called)
self._test_arg_failure('baymodel-create '
'--server-type test', self._mandatory_arg_error)
self.assertFalse(mock_create.called)
self._test_arg_failure('baymodel-create', self._mandatory_arg_error)
self.assertFalse(mock_create.called)

View File

@ -20,7 +20,7 @@ CREATION_ATTRIBUTES = ['name', 'image_id', 'flavor_id', 'master_flavor_id',
'dns_nameserver', 'docker_volume_size', 'labels',
'coe', 'http_proxy', 'https_proxy', 'no_proxy',
'network_driver', 'tls_disabled', 'public',
'registry_enabled', 'volume_driver']
'registry_enabled', 'volume_driver', 'server_type']
class BayModel(base.Resource):

View File

@ -96,6 +96,12 @@ def _show_baymodel(baymodel):
@utils.arg('--registry-enabled',
action='store_true', default=False,
help='Enable docker registry in the Bay')
@utils.arg('--server-type',
metavar='<server-type>',
default='vm',
help='Specify the server type to be used '
'for example vm. For this release '
'default server type will be vm.')
def do_baymodel_create(cs, args):
"""Create a baymodel."""
opts = {}
@ -118,6 +124,7 @@ def do_baymodel_create(cs, args):
opts['tls_disabled'] = args.tls_disabled
opts['public'] = args.public
opts['registry_enabled'] = args.registry_enabled
opts['server_type'] = args.server_type
baymodel = cs.baymodels.create(**opts)
_show_baymodel(baymodel)