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:
Roman Prykhodchenko
2015-11-08 19:20:22 +01:00
parent ee31f93f04
commit 354a3c0d9a
13 changed files with 39 additions and 141 deletions

View File

@@ -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')

View File

@@ -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',

View File

@@ -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)

View File

@@ -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
)

View File

@@ -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()

View File

@@ -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),

View File

@@ -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']})

View File

@@ -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)

View File

@@ -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]

View File

@@ -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)

View File

@@ -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):

View File

@@ -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': []}

View File

@@ -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