Remove nova network support
nova-network was deprecated in Fuel 6.1 and was locked as an option in Fuel UI. This patch removes deprecated functionality. Closes-bug: #1514212 Change-Id: Ic9e5628861d3b96bd6122de587fb223fdcc4f238
This commit is contained in:
@@ -57,9 +57,6 @@ class EnvironmentAction(Action):
|
||||
Args.get_name_arg(
|
||||
"Environment name"
|
||||
),
|
||||
Args.get_net_arg(
|
||||
"Set network mode for specific environment"
|
||||
),
|
||||
Args.get_nst_arg(
|
||||
"Set network segment type"
|
||||
),
|
||||
@@ -91,18 +88,11 @@ class EnvironmentAction(Action):
|
||||
|
||||
By default, it creates environment setting 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 \\
|
||||
--network-mode neutron
|
||||
fuel env create --name MyEnv --rel 1 --net-segment-type vlan
|
||||
"""
|
||||
if params.net == "nova":
|
||||
self.serializer.print_to_output(
|
||||
{},
|
||||
"WARNING: nova-network is deprecated since 6.1 release."
|
||||
)
|
||||
|
||||
if params.net == "neutron" and params.nst == 'gre':
|
||||
if params.nst == 'gre':
|
||||
self.serializer.print_to_output(
|
||||
{},
|
||||
"WARNING: GRE network segmentation type is deprecated "
|
||||
@@ -112,7 +102,6 @@ class EnvironmentAction(Action):
|
||||
env = Environment.create(
|
||||
params.name,
|
||||
params.release,
|
||||
params.net,
|
||||
params.nst,
|
||||
)
|
||||
|
||||
@@ -120,14 +109,13 @@ class EnvironmentAction(Action):
|
||||
|
||||
self.serializer.print_to_output(
|
||||
data,
|
||||
u"Environment '{name}' with id={id}"
|
||||
u" and network-mode={net_provider} was created!"
|
||||
u"Environment '{name}' with id={id} was created!"
|
||||
.format(**data)
|
||||
)
|
||||
|
||||
@check_all("env")
|
||||
def set(self, params):
|
||||
"""To change environment name or network mode:
|
||||
"""To change environment name:
|
||||
fuel --env 1 env set --name NewEnvName
|
||||
"""
|
||||
acceptable_params = ('name', 'pending_release_id')
|
||||
|
||||
@@ -296,15 +296,6 @@ def get_name_arg(help_msg):
|
||||
return get_str_arg("name", flags=("--env-name",), help=help_msg)
|
||||
|
||||
|
||||
def get_net_arg(help_msg):
|
||||
return get_arg("net",
|
||||
flags=("-n", "--network-mode"),
|
||||
action="store",
|
||||
choices=("nova", "neutron"),
|
||||
help_=help_msg,
|
||||
default="neutron")
|
||||
|
||||
|
||||
def get_graph_endpoint():
|
||||
return get_arg(
|
||||
'end',
|
||||
|
||||
@@ -29,7 +29,7 @@ class EnvList(EnvMixIn, base.BaseListCommand):
|
||||
"status",
|
||||
"name",
|
||||
"release_id",
|
||||
"net_provider")
|
||||
"net_segment_type")
|
||||
|
||||
|
||||
class EnvShow(EnvMixIn, base.BaseShowCommand):
|
||||
@@ -42,7 +42,7 @@ class EnvShow(EnvMixIn, base.BaseShowCommand):
|
||||
"pending_release_id",
|
||||
"is_customized",
|
||||
"changes",
|
||||
"net_provider")
|
||||
"net_segment_type")
|
||||
|
||||
|
||||
class EnvCreate(EnvMixIn, base.BaseShowCommand):
|
||||
@@ -67,41 +67,25 @@ class EnvCreate(EnvMixIn, base.BaseShowCommand):
|
||||
help='Id of the release for which will '
|
||||
'be deployed')
|
||||
|
||||
parser.add_argument('-n',
|
||||
'--net-provider',
|
||||
type=str,
|
||||
choices=['nova', 'neutron'],
|
||||
dest='net_provider',
|
||||
default='neutron',
|
||||
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', 'tun'],
|
||||
dest='nst',
|
||||
default='vlan',
|
||||
help='Network segmentation type. Is only '
|
||||
'used if network provider is Neutron.'
|
||||
help='Network segmentation type.\n'
|
||||
'WARNING: GRE network segmentation type '
|
||||
'is deprecated since 7.0 release.')
|
||||
|
||||
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')
|
||||
|
||||
if parsed_args.net_provider == 'neutron' and parsed_args.nst == 'gre':
|
||||
if parsed_args.nst == 'gre':
|
||||
self.app.stdout.write('WARNING: GRE network segmentation type is '
|
||||
'deprecated since 7.0 release')
|
||||
|
||||
new_env = self.client.create(name=parsed_args.name,
|
||||
release_id=parsed_args.release,
|
||||
network_provider=parsed_args.net_provider,
|
||||
net_segment_type=parsed_args.nst)
|
||||
|
||||
new_env = data_utils.get_display_data_single(self.columns, new_env)
|
||||
|
||||
@@ -35,7 +35,7 @@ class Environment(BaseObject):
|
||||
network_template_path = 'clusters/{0}/network_configuration/template'
|
||||
|
||||
@classmethod
|
||||
def create(cls, name, release_id, net, net_segment_type):
|
||||
def create(cls, name, release_id, net_segment_type):
|
||||
data = {
|
||||
"nodes": [],
|
||||
"tasks": [],
|
||||
@@ -44,11 +44,6 @@ class Environment(BaseObject):
|
||||
"net_segment_type": net_segment_type,
|
||||
}
|
||||
|
||||
if net.lower() == "nova":
|
||||
data["net_provider"] = "nova_network"
|
||||
else:
|
||||
data["net_provider"] = "neutron"
|
||||
|
||||
data = cls.connection.post_request("clusters/", data)
|
||||
return cls.init_with_data(data)
|
||||
|
||||
@@ -236,7 +231,7 @@ class Environment(BaseObject):
|
||||
|
||||
@property
|
||||
def network_url(self):
|
||||
return "clusters/{id}/network_configuration/{net_provider}".format(
|
||||
return "clusters/{id}/network_configuration/neutron".format(
|
||||
**self.data
|
||||
)
|
||||
|
||||
|
||||
@@ -28,9 +28,8 @@ class TestHandlers(base.BaseTestCase):
|
||||
"[--list | --set | --delete | --create | --update]",
|
||||
"optional arguments:", "--help", "--list", "--set",
|
||||
"--delete", "--rel", "--env-create",
|
||||
"--create", "--name", "--env-name", "--net",
|
||||
"--network-mode", "--nst", "--net-segment-type",
|
||||
"--update", "--env-update"]
|
||||
"--create", "--name", "--env-name", "--nst",
|
||||
"--net-segment-type", "--update", "--env-update"]
|
||||
self.check_all_in_msg("env --help", help_msgs)
|
||||
# no clusters
|
||||
self.check_for_rows_in_table("env")
|
||||
@@ -44,8 +43,7 @@ class TestHandlers(base.BaseTestCase):
|
||||
expected_stdout = \
|
||||
[(
|
||||
"env --create --name=TestEnv --release={0}".format(release_id),
|
||||
"Environment 'TestEnv' with id=1 and "
|
||||
"network-mode=neutron was created!\n"
|
||||
"Environment 'TestEnv' with id=1 and was created!\n"
|
||||
), (
|
||||
"--env-id=1 env set --name=NewEnv",
|
||||
("Following attributes are changed for "
|
||||
@@ -164,8 +162,7 @@ class TestHandlers(base.BaseTestCase):
|
||||
self.check_for_stdout(
|
||||
"env create --name=NewEnv --release={0} --nst=tun"
|
||||
.format(release_id),
|
||||
"Environment 'NewEnv' with id=1 and "
|
||||
"network-mode=neutron was created!\n")
|
||||
"Environment 'NewEnv' with id=1 and was created!\n")
|
||||
|
||||
def test_destroy_multiple_nodes(self):
|
||||
self.load_data_to_nailgun_server()
|
||||
|
||||
@@ -40,32 +40,11 @@ class TestEnvironment(base.UnitTestCase):
|
||||
|
||||
self.assertFalse(m_delete.called)
|
||||
|
||||
def test_nova_network_using_warning(self):
|
||||
cluster_id = 1
|
||||
cluster_data = {
|
||||
'id': cluster_id,
|
||||
'name': 'test',
|
||||
'net_provider': 'neutron'
|
||||
}
|
||||
self.m_request.post('/api/v1/clusters/', json=cluster_data)
|
||||
self.m_request.get('/api/v1/clusters/{0}/'.format(cluster_id),
|
||||
json=cluster_data)
|
||||
|
||||
with mock.patch('sys.stdout', new=moves.cStringIO()) 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())
|
||||
|
||||
def test_neutron_gre_using_warning(self):
|
||||
cluster_id = 1
|
||||
cluster_data = {
|
||||
'id': cluster_id,
|
||||
'name': 'test',
|
||||
'net_provider': 'neutron'
|
||||
}
|
||||
self.m_request.post('/api/v1/clusters/', json=cluster_data)
|
||||
self.m_request.get('/api/v1/clusters/{0}/'.format(cluster_id),
|
||||
|
||||
@@ -25,7 +25,7 @@ class TestNodeGroupActions(base.UnitTestCase):
|
||||
def setUp(self):
|
||||
super(TestNodeGroupActions, self).setUp()
|
||||
|
||||
self.env = fake_env.get_fake_env(net_provider='neutron')
|
||||
self.env = fake_env.get_fake_env()
|
||||
self.req_base_path = '/api/v1/nodegroups/'
|
||||
self.ng = fake_network_group.get_fake_network_group()
|
||||
|
||||
@@ -41,9 +41,8 @@ class TestNodeGroupActions(base.UnitTestCase):
|
||||
self.env['id']
|
||||
)
|
||||
|
||||
self.m_request.get('/api/v1/clusters/{0}/'.format(self.env['id']),
|
||||
json={'id': self.env['id'],
|
||||
'net_provider': self.env['net_provider']})
|
||||
self.m_request.get('/api/v1/clusters/{0[id]}/'.format(self.env),
|
||||
json={'id': self.env['id']})
|
||||
mpost = self.m_request.post(self.req_base_path,
|
||||
json={'id': self.ng['id'],
|
||||
'name': self.ng['name']})
|
||||
|
||||
@@ -20,8 +20,8 @@ import requests_mock as rm
|
||||
from fuelclient.tests.unit.v1 import base
|
||||
|
||||
|
||||
API_INPUT = {'config': 'nova_network'}
|
||||
API_OUTPUT = 'config: nova_network\n'
|
||||
API_INPUT = {'config': 'neutron'}
|
||||
API_OUTPUT = 'config: neutron\n'
|
||||
|
||||
|
||||
@patch('fuelclient.cli.serializers.open', create=True)
|
||||
|
||||
@@ -94,25 +94,25 @@ class BaseCLITest(oslo_base.BaseTestCase):
|
||||
|
||||
@mock.patch('cliff.formatters.table.TableFormatter.emit_list')
|
||||
def test_lister_sorting(self, m_emit_list):
|
||||
cmd = 'env list -s status net_provider'
|
||||
cmd = 'env list -s status net_segment_type'
|
||||
|
||||
raw_data = [{'id': 43,
|
||||
'status': 'STATUS 2',
|
||||
'name': 'Test env 2',
|
||||
'release_id': 2,
|
||||
'net_provider': 'nova'},
|
||||
'net_segment_type': 'tun'},
|
||||
|
||||
{'id': 42,
|
||||
'status': 'STATUS 1',
|
||||
'name': 'Test env 1',
|
||||
'release_id': 2,
|
||||
'net_provider': 'nova'},
|
||||
'net_segment_type': 'tun'},
|
||||
|
||||
{'id': 44,
|
||||
'status': 'STATUS 2',
|
||||
'name': 'Test env 3',
|
||||
'release_id': 2,
|
||||
'net_provider': 'neutron'}]
|
||||
'net_segment_type': 'gre'}]
|
||||
|
||||
expected_order = [1, 2, 0]
|
||||
expected_data = [[raw_data[i][prop] for prop in env.EnvList.columns]
|
||||
|
||||
@@ -50,7 +50,7 @@ class TestEnvCommand(test_engine.BaseCLITest):
|
||||
self.m_client.get_by_id.assert_called_once_with(42)
|
||||
|
||||
def test_env_create(self):
|
||||
args = 'env create -r 1 -n neutron -nst gre env42'
|
||||
args = 'env create -r 1 -nst gre env42'
|
||||
self.exec_command(args)
|
||||
|
||||
self.m_get_client.assert_called_once_with('environment', mock.ANY)
|
||||
@@ -58,21 +58,10 @@ class TestEnvCommand(test_engine.BaseCLITest):
|
||||
m_client = self.m_client
|
||||
m_client.create.assert_called_once_with(name='env42',
|
||||
release_id=1,
|
||||
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=moves.cStringIO()) as m_stdout:
|
||||
self.exec_command(args)
|
||||
self.assertIn(
|
||||
'WARNING: nova-network is deprecated since 6.1 release',
|
||||
m_stdout.getvalue()
|
||||
)
|
||||
|
||||
def test_neutron_gre_deprecation_warning(self):
|
||||
args = 'env create -r 1 -n neutron -nst gre env42'
|
||||
args = 'env create -r 1 -nst gre env42'
|
||||
|
||||
with mock.patch('sys.stdout', new=moves.cStringIO()) as m_stdout:
|
||||
self.exec_command(args)
|
||||
|
||||
@@ -69,13 +69,11 @@ class TestEnvFacade(test_api.BaseLibTest):
|
||||
env_name = self.fake_env['name']
|
||||
release_id = self.fake_env['release_id']
|
||||
nst = self.fake_env['net_segment_type']
|
||||
net = self.fake_env['net_provider']
|
||||
|
||||
matcher = self.m_request.post(self.res_uri, json=self.fake_env)
|
||||
|
||||
self.client.create(name=env_name,
|
||||
release_id=release_id,
|
||||
network_provider=net,
|
||||
net_segment_type=nst)
|
||||
|
||||
req_data = matcher.last_request.json()
|
||||
@@ -85,39 +83,26 @@ class TestEnvFacade(test_api.BaseLibTest):
|
||||
self.assertEqual(release_id, req_data['release_id'])
|
||||
self.assertEqual(env_name, req_data['name'])
|
||||
self.assertEqual(nst, req_data['net_segment_type'])
|
||||
self.assertEqual(net, req_data['net_provider'])
|
||||
|
||||
def test_env_create_no_nst_neutron(self):
|
||||
def test_env_create_bad_nst_neutron(self):
|
||||
node_name = 'test_node'
|
||||
release_id = 20
|
||||
net = 'neutron'
|
||||
nst = 'bad'
|
||||
|
||||
self.assertRaises(error.BadDataException,
|
||||
self.client.create,
|
||||
node_name, release_id, net)
|
||||
|
||||
def test_env_create_nst_nova(self):
|
||||
node_name = 'test_node'
|
||||
release_id = 20
|
||||
net = 'nova'
|
||||
nst = 'gre'
|
||||
|
||||
self.assertRaises(error.BadDataException,
|
||||
self.client.create,
|
||||
node_name, release_id, net, net_segment_type=nst)
|
||||
node_name, release_id, nst)
|
||||
|
||||
def test_env_create_neutron_tun(self):
|
||||
env = utils.get_fake_env()
|
||||
env_name = env['name']
|
||||
release_id = env['release_id']
|
||||
nst = env['net_segment_type'] = 'tun'
|
||||
net = env['net_provider']
|
||||
|
||||
matcher = self.m_request.post(self.res_uri, json=env)
|
||||
|
||||
self.client.create(name=env_name,
|
||||
release_id=release_id,
|
||||
network_provider=net,
|
||||
net_segment_type=nst)
|
||||
|
||||
req_data = matcher.last_request.json()
|
||||
@@ -125,7 +110,6 @@ class TestEnvFacade(test_api.BaseLibTest):
|
||||
self.assertEqual(release_id, req_data['release_id'])
|
||||
self.assertEqual(env_name, req_data['name'])
|
||||
self.assertEqual(nst, req_data['net_segment_type'])
|
||||
self.assertEqual(net, req_data['net_provider'])
|
||||
|
||||
@mock.patch.object(task_object.DeployTask, 'init_with_data')
|
||||
def test_env_deploy(self, m_init):
|
||||
|
||||
@@ -16,8 +16,7 @@
|
||||
|
||||
|
||||
def get_fake_env(name=None, status=None, release_id=None,
|
||||
fuel_version=None, pending_release=None, env_id=None,
|
||||
net_provider=None):
|
||||
fuel_version=None, pending_release=None, env_id=None):
|
||||
"""Create a random fake environment
|
||||
|
||||
Returns the serialized and parametrized representation of a dumped Fuel
|
||||
@@ -28,9 +27,8 @@ def get_fake_env(name=None, status=None, release_id=None,
|
||||
'is_customized': False,
|
||||
'release_id': release_id or 2,
|
||||
'name': name or 'fake_env',
|
||||
'net_provider': net_provider or 'neutron',
|
||||
'net_segment_type': 'gre',
|
||||
'fuel_version': fuel_version or '5.1',
|
||||
'net_segment_type': 'vlan',
|
||||
'fuel_version': fuel_version or '8.0',
|
||||
'pending_release_id': pending_release,
|
||||
'id': env_id or 1,
|
||||
'changes': []}
|
||||
|
||||
@@ -23,22 +23,16 @@ class EnvironmentClient(base_v1.BaseV1Client):
|
||||
|
||||
_updatable_attributes = ('name',)
|
||||
|
||||
def create(self, name, release_id,
|
||||
network_provider, net_segment_type=None):
|
||||
def create(self, name, release_id, net_segment_type):
|
||||
|
||||
if network_provider == 'neutron':
|
||||
if net_segment_type not in ('gre', 'vlan', 'tun'):
|
||||
msg = 'Using Neutron as a network provider requires '\
|
||||
'specifying network segmentation type.'
|
||||
raise error.BadDataException(msg)
|
||||
else:
|
||||
if net_segment_type:
|
||||
msg = 'Network segmentation type should only be '\
|
||||
'specified for Neutron.'
|
||||
raise error.BadDataException(msg)
|
||||
supported_nst = ('gre', 'vlan', 'tun')
|
||||
|
||||
env = self._entity_wrapper.create(name, release_id, network_provider,
|
||||
net_segment_type)
|
||||
if net_segment_type not in supported_nst:
|
||||
msg = ('Network segmentation type should be one '
|
||||
'of {0}'.format(' '.join(supported_nst)))
|
||||
raise error.BadDataException(msg)
|
||||
|
||||
env = self._entity_wrapper.create(name, release_id, net_segment_type)
|
||||
|
||||
return env.data
|
||||
|
||||
|
||||
Reference in New Issue
Block a user