Change default network mode for env creation to neutron

Now when user choses nova-network as network mode for environment
warning about deprecation is displayed. segmentation-type  parameter is
now also supplied by default and is equal to "vlan". Tests updated.

Change-Id: Idb1d5caac4f3e2c4d9661eb8162eaabefa4fca49
Closes-Bug: #1455739
This commit is contained in:
Artem Roma
2015-05-16 17:01:21 +03:00
parent 38765563e1
commit e19f1b6579
7 changed files with 54 additions and 18 deletions

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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