Changed fuel2 utility to support network template as file
Example of CLI call: fuel2 network-template upload --file /tmp/test-file 1 Change-Id: I3b2a6b4bdb47e4135a9e808b47335ca73e004f44 Closes-Bug: #1483761
This commit is contained in:
parent
4dffff9660
commit
fc7b63aa69
|
@ -35,25 +35,34 @@ class NetworkTemplateMixin(object):
|
|||
help='Directory with network data'
|
||||
)
|
||||
|
||||
@staticmethod
|
||||
def add_file_argument(parser):
|
||||
parser.add_argument(
|
||||
'-f', '--file',
|
||||
type=str,
|
||||
help='Yaml file containing network template'
|
||||
)
|
||||
|
||||
|
||||
class NetworkTemplateUpload(NetworkTemplateMixin, base.BaseCommand):
|
||||
"""To upload network configuration for specified environment:
|
||||
|
||||
fuel2 network-template upload --dir path/to/directory 1
|
||||
fuel2 network-template upload --file path/to/file_name.yaml 1
|
||||
"""
|
||||
|
||||
def get_parser(self, prog_name):
|
||||
parser = super(NetworkTemplateUpload, self).get_parser(prog_name)
|
||||
|
||||
self.add_dir_argument(parser)
|
||||
self.add_env_argument(parser)
|
||||
self.add_file_argument(parser)
|
||||
|
||||
return parser
|
||||
|
||||
def take_action(self, parsed_args):
|
||||
|
||||
file_path = self.client.upload_network_template(
|
||||
parsed_args.env, parsed_args.dir)
|
||||
msg = "Network template {0} has been uploaded.".format(file_path)
|
||||
parsed_args.env, parsed_args.file)
|
||||
msg = "Network template {0} has been uploaded.\n".format(file_path)
|
||||
self.app.stdout.write(msg)
|
||||
|
||||
|
||||
|
@ -94,5 +103,5 @@ class NetworkTemplateDelete(NetworkTemplateMixin, base.BaseCommand):
|
|||
self.client.delete_network_template(parsed_args.env)
|
||||
|
||||
msg = ("Network template for environment id={0}"
|
||||
" has been deleted.".format(parsed_args.env))
|
||||
" has been deleted.\n".format(parsed_args.env))
|
||||
self.app.stdout.write(msg)
|
||||
|
|
|
@ -201,10 +201,17 @@ class Environment(BaseObject):
|
|||
|
||||
def read_network_template_data(self, directory=os.curdir,
|
||||
serializer=None):
|
||||
"""Used by 'fuel' command line utility."""
|
||||
network_template_file_path = self.get_network_template_data_path(
|
||||
directory)
|
||||
return (serializer or self.serializer).read_from_file(
|
||||
network_template_file_path)
|
||||
return self.read_network_template_data_from_file(
|
||||
network_template_file_path, serializer)
|
||||
|
||||
def read_network_template_data_from_file(self, file_path=None,
|
||||
serializer=None):
|
||||
"""Used by 'fuel2' command line utility."""
|
||||
return (serializer or self.serializer).\
|
||||
read_from_file(file_path)
|
||||
|
||||
@property
|
||||
def status(self):
|
||||
|
|
|
@ -61,7 +61,8 @@ class TestHandlers(base.BaseTestCase):
|
|||
cases = [
|
||||
("env --create --name=TestEnv --release=1 --mode=multinode",
|
||||
"400 Client Error: Bad Request (Cannot deploy in multinode "
|
||||
"mode in current release. Need to be one of: ha_compact")
|
||||
"mode in current release. Need to be one of: ha_compact)"
|
||||
)
|
||||
]
|
||||
for cmd, err in cases:
|
||||
self.check_for_stderr(cmd, err, check_errors=False)
|
||||
|
|
|
@ -28,13 +28,13 @@ class TestNetworkTemplateCommand(test_engine.BaseCLITest):
|
|||
self.m_client.upload_network_template.assert_called_once_with(
|
||||
1, None)
|
||||
|
||||
def test_network_template_upload_w_dir(self):
|
||||
args = 'network-template upload --dir /tmp/test-dir 1'
|
||||
def test_network_template_upload_w_file(self):
|
||||
args = 'network-template upload --file /tmp/test-file 1'
|
||||
self.exec_command(args)
|
||||
|
||||
self.m_get_client.assert_called_once_with('environment', mock.ANY)
|
||||
self.m_client.upload_network_template.assert_called_once_with(
|
||||
1, '/tmp/test-dir')
|
||||
1, '/tmp/test-file')
|
||||
|
||||
def test_network_template_download(self):
|
||||
download_mock = self.m_client.download_network_template
|
||||
|
|
|
@ -92,14 +92,14 @@ class EnvironmentClient(base_v1.BaseV1Client):
|
|||
env = self._entity_wrapper(obj_id=environment_id)
|
||||
return env.spawn_vms()
|
||||
|
||||
def upload_network_template(self, environment_id, directory=None):
|
||||
def upload_network_template(self, environment_id,
|
||||
file_path=None):
|
||||
env = self._entity_wrapper(environment_id)
|
||||
network_template_data = env.read_network_template_data(
|
||||
directory=directory)
|
||||
network_template_data = env.read_network_template_data_from_file(
|
||||
file_path=file_path)
|
||||
env.set_network_template_data(network_template_data)
|
||||
|
||||
file_path = env.serializer.prepare_path(
|
||||
env.get_network_template_data_path(directory=directory))
|
||||
file_path = env.serializer.prepare_path(file_path)
|
||||
return file_path
|
||||
|
||||
def download_network_template(self, environment_id, directory=None):
|
||||
|
|
Loading…
Reference in New Issue