diff --git a/fuelclient/cli/actions/environment.py b/fuelclient/cli/actions/environment.py index ce70e05..aa06b6a 100644 --- a/fuelclient/cli/actions/environment.py +++ b/fuelclient/cli/actions/environment.py @@ -92,16 +92,24 @@ class EnvironmentAction(Action): """To create an environment with name MyEnv and release id=1 run: fuel env create --name MyEnv --rel 1 - By default it creates environment in ha_compact mode, and nova - network mode, to specify other modes add optional arguments: + By default it creates environment with ha_compact mode and + neutron with VLAN network segmentation as network provider + (WARNING: nova-network is deprecated since 6.1 release). + To specify other modes add optional arguments: fuel env create --name MyEnv --rel 1 \\ --mode ha --network-mode neutron """ + if params.net == "nova": + self.serializer.print_to_output( + {}, + "Warning: nova-network is deprecated since 6.1 release." + ) + env = Environment.create( params.name, params.release, params.net, - net_segment_type=params.nst + params.nst ) if params.mode: diff --git a/fuelclient/cli/arguments.py b/fuelclient/cli/arguments.py index c720bb3..cf4d3fa 100644 --- a/fuelclient/cli/arguments.py +++ b/fuelclient/cli/arguments.py @@ -291,7 +291,7 @@ def get_net_arg(help_msg): action="store", choices=("nova", "neutron"), help_=help_msg, - default="nova") + default="neutron") def get_graph_endpoint(): @@ -358,7 +358,7 @@ def get_nst_arg(help_msg): action="store", choices=("gre", "vlan"), help_=help_msg, - default=None) + default="vlan") def get_all_arg(help_msg): diff --git a/fuelclient/commands/environment.py b/fuelclient/commands/environment.py index 02bfacd..2bfe873 100644 --- a/fuelclient/commands/environment.py +++ b/fuelclient/commands/environment.py @@ -76,20 +76,26 @@ class EnvCreate(EnvMixIn, base.BaseShowCommand): choices=['nova', 'neutron'], dest='net_provider', default='neutron', - help='Network provider for the new environment') + help=('Network provider for the new environment. ' + 'WARNING: nova-network is deprecated since ' + '6.1 release')) parser.add_argument('-nst', '--net-segmentation-type', type=str, choices=['vlan', 'gre'], dest='nst', - default=None, + default='vlan', help='Network segmentation type. Is only ' 'used if network provider is Neutron') return parser def take_action(self, parsed_args): + if parsed_args.net_provider == 'nova': + self.app.stdout.write('Warning: nova-network is deprecated ' + 'since 6.1 release') + new_env = self.client.create(name=parsed_args.name, release_id=parsed_args.release, network_provider=parsed_args.net_provider, diff --git a/fuelclient/objects/environment.py b/fuelclient/objects/environment.py index 8e4f8b6..e65f330 100644 --- a/fuelclient/objects/environment.py +++ b/fuelclient/objects/environment.py @@ -17,7 +17,6 @@ import os import shutil from fuelclient.cli.error import ActionException -from fuelclient.cli.error import ArgumentException from fuelclient.cli.error import ServerDataException from fuelclient.cli.serializers import listdir_without_extensions from fuelclient.objects.base import BaseObject @@ -34,25 +33,20 @@ class Environment(BaseObject): attributes_path = 'clusters/{0}/attributes' @classmethod - def create(cls, name, release_id, net, - net_segment_type=None, mode='ha_compact'): + def create(cls, name, release_id, net, net_segment_type, + mode='ha_compact'): data = { "nodes": [], "tasks": [], "name": name, - "release_id": release_id + "release_id": release_id, + "net_segment_type": net_segment_type, } if net.lower() == "nova": data["net_provider"] = "nova_network" else: data["net_provider"] = "neutron" - if net_segment_type is None: - raise ArgumentException( - '"--net-segment-type" must be specified!') - - data["net_segment_type"] = net_segment_type - data = cls.connection.post_request("clusters/", data) return cls.init_with_data(data) diff --git a/fuelclient/tests/v1/integration/test_client.py b/fuelclient/tests/v1/integration/test_client.py index ad09b78..19d92d1 100644 --- a/fuelclient/tests/v1/integration/test_client.py +++ b/fuelclient/tests/v1/integration/test_client.py @@ -45,7 +45,7 @@ class TestHandlers(base.BaseTestCase): [( "env --create --name=TestEnv --release=1", "Environment 'TestEnv' with id=1, mode=ha_compact and " - "network-mode=nova_network was created!\n" + "network-mode=neutron was created!\n" ), ( "--env-id=1 env set --name=NewEnv", ("Following attributes are changed for " diff --git a/fuelclient/tests/v1/unit/test_environment.py b/fuelclient/tests/v1/unit/test_environment.py index eefc553..8807bf3 100644 --- a/fuelclient/tests/v1/unit/test_environment.py +++ b/fuelclient/tests/v1/unit/test_environment.py @@ -37,6 +37,24 @@ class TestEnvironment(base.UnitTestCase): self.assertEqual(0, m_del.call_count) + @mock.patch('requests.Response', new_callable=mock.MagicMock) + @mock.patch('requests.post') + @mock.patch('requests.get') + def test_nova_network_using_warning(self, m_get, m_post, m_resp): + m_resp.json.return_value = {'id': 1, 'name': 'test', + 'mode': 'ha_compact', + 'net_provider': 'neutron'} + m_get.return_value = m_resp + + with mock.patch('sys.stdout', new=cStringIO.StringIO()) as m_stdout: + self.execute( + 'fuel env create --name test --rel 1 --network-mode nova' + .split() + ) + self.assertIn('Warning: nova-network is ' + 'deprecated since 6.1 release.', + m_stdout.getvalue()) + class TestEnvironmentOstf(base.UnitTestCase): diff --git a/fuelclient/tests/v2/unit/cli/test_env.py b/fuelclient/tests/v2/unit/cli/test_env.py index 1297d8c..c7e88e8 100644 --- a/fuelclient/tests/v2/unit/cli/test_env.py +++ b/fuelclient/tests/v2/unit/cli/test_env.py @@ -51,6 +51,16 @@ class TestEnvCommand(test_engine.BaseCLITest): network_provider='neutron', net_segment_type='gre') + def test_nova_net_deprecation_warning(self): + args = 'env create -r 1 -n nova env42' + + with mock.patch('sys.stdout', new=cStringIO.StringIO()) as m_stdout: + self.exec_command(args) + self.assertIn( + 'Warning: nova-network is deprecated since 6.1 release', + m_stdout.getvalue() + ) + def test_env_delete(self): args = 'env delete --force 42' self.exec_command(args)