107 lines
		
	
	
		
			3.8 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			107 lines
		
	
	
		
			3.8 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
# Licensed under the Apache License, Version 2.0 (the "License"); you may
 | 
						|
# not use this file except in compliance with the License. You may obtain
 | 
						|
# a copy of the License at
 | 
						|
#
 | 
						|
#      http://www.apache.org/licenses/LICENSE-2.0
 | 
						|
#
 | 
						|
# Unless required by applicable law or agreed to in writing, software
 | 
						|
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
 | 
						|
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
 | 
						|
# License for the specific language governing permissions and limitations
 | 
						|
# under the License.
 | 
						|
 | 
						|
import yaml
 | 
						|
 | 
						|
from tackerclient.i18n import _
 | 
						|
from tackerclient.tacker import v1_0 as tackerV10
 | 
						|
 | 
						|
 | 
						|
_NS = 'ns'
 | 
						|
_RESOURCE = 'resource'
 | 
						|
 | 
						|
 | 
						|
class ListNS(tackerV10.ListCommand):
 | 
						|
    """List NS that belong to a given tenant."""
 | 
						|
 | 
						|
    resource = _NS
 | 
						|
    list_columns = ['id', 'name', 'nsd_id', 'mgmt_urls', 'status']
 | 
						|
 | 
						|
 | 
						|
class ShowNS(tackerV10.ShowCommand):
 | 
						|
    """Show information of a given NS."""
 | 
						|
 | 
						|
    resource = _NS
 | 
						|
 | 
						|
 | 
						|
class CreateNS(tackerV10.CreateCommand):
 | 
						|
    """Create a NS."""
 | 
						|
 | 
						|
    resource = _NS
 | 
						|
    remove_output_fields = ["attributes"]
 | 
						|
 | 
						|
    def add_known_arguments(self, parser):
 | 
						|
        parser.add_argument(
 | 
						|
            'name', metavar='NAME',
 | 
						|
            help=_('Set a name for the NS'))
 | 
						|
        parser.add_argument(
 | 
						|
            '--description',
 | 
						|
            help=_('Set description for the NS'))
 | 
						|
        nsd_group = parser.add_mutually_exclusive_group(required=True)
 | 
						|
        nsd_group.add_argument(
 | 
						|
            '--nsd-id',
 | 
						|
            help=_('NSD ID to use as template to create NS'))
 | 
						|
        nsd_group.add_argument(
 | 
						|
            '--nsd-name',
 | 
						|
            help=_('NSD name to use as template to create NS'))
 | 
						|
        vim_group = parser.add_mutually_exclusive_group()
 | 
						|
        vim_group.add_argument(
 | 
						|
            '--vim-id',
 | 
						|
            help=_('VIM ID to use to create NS on the specified VIM'))
 | 
						|
        vim_group.add_argument(
 | 
						|
            '--vim-name',
 | 
						|
            help=_('VIM name to use to create NS on the specified VIM'))
 | 
						|
        parser.add_argument(
 | 
						|
            '--vim-region-name',
 | 
						|
            help=_('VIM Region to use to create NS on the specified VIM'))
 | 
						|
        parser.add_argument(
 | 
						|
            '--param-file',
 | 
						|
            help=_('Specify parameter yaml file'))
 | 
						|
 | 
						|
    def args2body(self, parsed_args):
 | 
						|
        args = {'attributes': {}}
 | 
						|
        body = {self.resource: args}
 | 
						|
        if parsed_args.vim_region_name:
 | 
						|
            args.setdefault('placement_attr', {})['region_name'] = \
 | 
						|
                parsed_args.vim_region_name
 | 
						|
 | 
						|
        tacker_client = self.get_client()
 | 
						|
        tacker_client.format = parsed_args.request_format
 | 
						|
        if parsed_args.vim_name:
 | 
						|
                _id = tackerV10.find_resourceid_by_name_or_id(tacker_client,
 | 
						|
                                                              'vim',
 | 
						|
                                                              parsed_args.
 | 
						|
                                                              vim_name)
 | 
						|
                parsed_args.vim_id = _id
 | 
						|
        if parsed_args.nsd_name:
 | 
						|
                _id = tackerV10.find_resourceid_by_name_or_id(tacker_client,
 | 
						|
                                                              'nsd',
 | 
						|
                                                              parsed_args.
 | 
						|
                                                              nsd_name)
 | 
						|
                parsed_args.nsd_id = _id
 | 
						|
        if parsed_args.param_file:
 | 
						|
            with open(parsed_args.param_file) as f:
 | 
						|
                param_yaml = f.read()
 | 
						|
            args['attributes']['param_values'] = yaml.load(
 | 
						|
                param_yaml, Loader=yaml.SafeLoader)
 | 
						|
        tackerV10.update_dict(parsed_args, body[self.resource],
 | 
						|
                              ['tenant_id', 'name', 'description',
 | 
						|
                               'nsd_id', 'vim_id'])
 | 
						|
        return body
 | 
						|
 | 
						|
 | 
						|
class DeleteNS(tackerV10.DeleteCommand):
 | 
						|
    """Delete given NS(s)."""
 | 
						|
 | 
						|
    resource = _NS
 | 
						|
    deleted_msg = {'ns': 'delete initiated'}
 |