166 lines
5.6 KiB
Python
166 lines
5.6 KiB
Python
# Copyright 2015 Hewlett-Packard Development Company, L.P.
|
|
# All Rights Reserved
|
|
#
|
|
# 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.
|
|
|
|
from __future__ import print_function
|
|
|
|
import argparse
|
|
|
|
from neutronclient.common import utils
|
|
from neutronclient.i18n import _
|
|
from neutronclient.neutron import v2_0 as neutronV20
|
|
|
|
|
|
class ListFlavor(neutronV20.ListCommand):
|
|
"""List Neutron service flavors."""
|
|
|
|
resource = 'flavor'
|
|
list_columns = ['id', 'name', 'service_type', 'enabled']
|
|
pagination_support = True
|
|
sorting_support = True
|
|
|
|
|
|
class ShowFlavor(neutronV20.ShowCommand):
|
|
"""Show information about a given Neutron service flavor."""
|
|
|
|
resource = 'flavor'
|
|
|
|
|
|
class CreateFlavor(neutronV20.CreateCommand):
|
|
"""Create a Neutron service flavor."""
|
|
|
|
resource = 'flavor'
|
|
|
|
def add_known_arguments(self, parser):
|
|
parser.add_argument(
|
|
'name',
|
|
metavar='NAME',
|
|
help=_('Name for the flavor.'))
|
|
parser.add_argument(
|
|
'service_type',
|
|
metavar='SERVICE_TYPE',
|
|
help=_('Service type to which the flavor applies to: e.g. VPN. '
|
|
'(See service-provider-list for loaded examples.)'))
|
|
parser.add_argument(
|
|
'--description',
|
|
help=_('Description for the flavor.'))
|
|
utils.add_boolean_argument(
|
|
parser,
|
|
'--enabled',
|
|
default=argparse.SUPPRESS,
|
|
help=_('Sets enabled flag.'))
|
|
|
|
def args2body(self, parsed_args):
|
|
body = {}
|
|
neutronV20.update_dict(parsed_args, body,
|
|
['name', 'description', 'service_type',
|
|
'enabled'])
|
|
return {self.resource: body}
|
|
|
|
|
|
class DeleteFlavor(neutronV20.DeleteCommand):
|
|
"""Delete a given Neutron service flavor."""
|
|
|
|
resource = 'flavor'
|
|
|
|
|
|
class UpdateFlavor(neutronV20.UpdateCommand):
|
|
"""Update a Neutron service flavor."""
|
|
|
|
resource = 'flavor'
|
|
|
|
def add_known_arguments(self, parser):
|
|
parser.add_argument(
|
|
'--name',
|
|
help=_('Name for the flavor.'))
|
|
parser.add_argument(
|
|
'--description',
|
|
help=_('Description for the flavor.'))
|
|
utils.add_boolean_argument(
|
|
parser,
|
|
'--enabled',
|
|
default=argparse.SUPPRESS,
|
|
help=_('Sets enabled flag.'))
|
|
|
|
def args2body(self, parsed_args):
|
|
body = {}
|
|
neutronV20.update_dict(parsed_args, body,
|
|
['name', 'description', 'enabled'])
|
|
return {self.resource: body}
|
|
|
|
|
|
class AssociateFlavor(neutronV20.NeutronCommand):
|
|
"""Associate a Neutron service flavor with a flavor profile."""
|
|
|
|
resource = 'flavor'
|
|
|
|
def get_parser(self, prog_name):
|
|
parser = super(AssociateFlavor, self).get_parser(prog_name)
|
|
parser.add_argument(
|
|
'flavor',
|
|
metavar='FLAVOR',
|
|
help=_('Name or ID of the flavor to associate.'))
|
|
parser.add_argument(
|
|
'flavor_profile',
|
|
metavar='FLAVOR_PROFILE',
|
|
help=_('ID of the flavor profile to be associated with the '
|
|
'flavor.'))
|
|
return parser
|
|
|
|
def run(self, parsed_args):
|
|
neutron_client = self.get_client()
|
|
flavor_id = neutronV20.find_resourceid_by_name_or_id(
|
|
neutron_client, 'flavor', parsed_args.flavor)
|
|
service_profile_id = neutronV20.find_resourceid_by_id(
|
|
neutron_client, 'service_profile', parsed_args.flavor_profile)
|
|
body = {'service_profile': {'id': service_profile_id}}
|
|
neutron_client.associate_flavor(flavor_id, body)
|
|
print((_('Associated flavor %(flavor)s with '
|
|
'flavor_profile %(profile)s') %
|
|
{'flavor': parsed_args.flavor,
|
|
'profile': parsed_args.flavor_profile}),
|
|
file=self.app.stdout)
|
|
|
|
|
|
class DisassociateFlavor(neutronV20.NeutronCommand):
|
|
"""Disassociate a Neutron service flavor from a flavor profile."""
|
|
|
|
resource = 'flavor'
|
|
|
|
def get_parser(self, prog_name):
|
|
parser = super(DisassociateFlavor, self).get_parser(prog_name)
|
|
parser.add_argument(
|
|
'flavor',
|
|
metavar='FLAVOR',
|
|
help=_('Name or ID of the flavor.'))
|
|
parser.add_argument(
|
|
'flavor_profile',
|
|
metavar='FLAVOR_PROFILE',
|
|
help=_('ID of the flavor profile to be disassociated from the '
|
|
'flavor.'))
|
|
return parser
|
|
|
|
def run(self, parsed_args):
|
|
neutron_client = self.get_client()
|
|
flavor_id = neutronV20.find_resourceid_by_name_or_id(
|
|
neutron_client, 'flavor', parsed_args.flavor)
|
|
service_profile_id = neutronV20.find_resourceid_by_id(
|
|
neutron_client, 'service_profile', parsed_args.flavor_profile)
|
|
neutron_client.disassociate_flavor(flavor_id, service_profile_id)
|
|
print((_('Disassociated flavor %(flavor)s from '
|
|
'flavor_profile %(profile)s') %
|
|
{'flavor': parsed_args.flavor,
|
|
'profile': parsed_args.flavor_profile}),
|
|
file=self.app.stdout)
|