python-neutronclient/neutronclient/neutron/v2_0/flavor/flavor.py

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)