/usr/lib/python2.6/site-packages/novaclient/v2
NameSizeModeActions
contrib/-0755rm
agents.py22400644editdlrm
agents.pyc27740644editdlrm
aggregates.py35000644editdlrm
aggregates.pyc47770644editdlrm
availability_zones.py15880644editdlrm
availability_zones.pyc17030644editdlrm
certs.py14100644editdlrm
certs.pyc16510644editdlrm
client.py98590644editdlrm
client.pyc86520644editdlrm
cloudpipe.py19060644editdlrm
cloudpipe.pyc24740644editdlrm
fixed_ips.py16830644editdlrm
fixed_ips.pyc20990644editdlrm
flavors.py68240644editdlrm
flavors.pyc76230644editdlrm
flavor_access.py26540644editdlrm
flavor_access.pyc32570644editdlrm
floating_ips.py17300644editdlrm
floating_ips.pyc22220644editdlrm
floating_ips_bulk.py21080644editdlrm
floating_ips_bulk.pyc22860644editdlrm
floating_ip_dns.py43780644editdlrm
floating_ip_dns.pyc62600644editdlrm
floating_ip_pools.py10640644editdlrm
floating_ip_pools.pyc12550644editdlrm
fping.py17500644editdlrm
fping.pyc20390644editdlrm
hosts.py20940644editdlrm
hosts.pyc32540644editdlrm
hypervisors.py28260644editdlrm
hypervisors.pyc40420644editdlrm
images.py31510644editdlrm
images.pyc41370644editdlrm
keypairs.py34970644editdlrm
keypairs.pyc39440644editdlrm
limits.py30920644editdlrm
limits.pyc43110644editdlrm
networks.py48150644editdlrm
networks.pyc58360644editdlrm
quotas.py22640644editdlrm
quotas.pyc26190644editdlrm
quota_classes.py15000644editdlrm
quota_classes.pyc17750644editdlrm
security_groups.py30000644editdlrm
security_groups.pyc41210644editdlrm
security_group_default_rules.py27410644editdlrm
security_group_default_rules.pyc33260644editdlrm
security_group_rules.py26810644editdlrm
security_group_rules.pyc29880644editdlrm
servers.py450640644editdlrm
servers.pyc502360644editdlrm
server_groups.py20600644editdlrm
server_groups.pyc28110644editdlrm
server_migrations.py29240644editdlrm
server_migrations.pyc33320644editdlrm
services.py33050644editdlrm
services.pyc40980644editdlrm
shell.py1486850644editdlrm
shell.pyc1490900644editdlrm
usage.py20190644editdlrm
usage.pyc23270644editdlrm
versions.py30320644editdlrm
versions.pyc26340644editdlrm
virtual_interfaces.py10390644editdlrm
virtual_interfaces.pyc12520644editdlrm
volumes.py77310644editdlrm
volumes.pyc80880644editdlrm
volume_snapshots.py44750644editdlrm
volume_snapshots.pyc47790644editdlrm
volume_types.py36980644editdlrm
volume_types.pyc39890644editdlrm
__init__.py6490644editdlrm
__init__.pyc2190644editdlrm
Edit: /usr/lib/python2.6/site-packages/novaclient/v2/flavors.py (6824B)
# Copyright 2010 Jacob Kaplan-Moss # # 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. """ Flavor interface. """ from oslo_utils import strutils from six.moves.urllib import parse from novaclient import base from novaclient import exceptions from novaclient.i18n import _ from novaclient import utils class Flavor(base.Resource): """ A flavor is an available hardware configuration for a server. """ HUMAN_ID = True def __repr__(self): return "" % self.name @property def ephemeral(self): """ Provide a user-friendly accessor to OS-FLV-EXT-DATA:ephemeral """ return self._info.get("OS-FLV-EXT-DATA:ephemeral", 'N/A') @property def is_public(self): """ Provide a user-friendly accessor to os-flavor-access:is_public """ return self._info.get("os-flavor-access:is_public", 'N/A') def get_keys(self): """ Get extra specs from a flavor. """ _resp, body = self.manager.api.client.get( "/flavors/%s/os-extra_specs" % base.getid(self)) return body["extra_specs"] def set_keys(self, metadata): """ Set extra specs on a flavor. :param metadata: A dict of key/value pairs to be set """ utils.validate_flavor_metadata_keys(metadata.keys()) body = {'extra_specs': metadata} return self.manager._create( "/flavors/%s/os-extra_specs" % base.getid(self), body, "extra_specs", return_raw=True) def unset_keys(self, keys): """ Unset extra specs on a flavor. :param keys: A list of keys to be unset """ for k in keys: self.manager._delete( "/flavors/%s/os-extra_specs/%s" % (base.getid(self), k)) def delete(self): """ Delete this flavor. """ self.manager.delete(self) class FlavorManager(base.ManagerWithFind): """ Manage :class:`Flavor` resources. """ resource_class = Flavor is_alphanum_id_allowed = True def list(self, detailed=True, is_public=True, marker=None, limit=None): """ Get a list of all flavors. :rtype: list of :class:`Flavor`. :param limit: maximum number of flavors to return (optional). :param marker: Begin returning flavors that appear later in the flavor list than that represented by this flavor id (optional). """ qparams = {} # is_public is ternary - None means give all flavors. # By default Nova assumes True and gives admins public flavors # and flavors from their own projects only. if marker: qparams['marker'] = str(marker) if limit: qparams['limit'] = int(limit) if not is_public: qparams['is_public'] = is_public qparams = sorted(qparams.items(), key=lambda x: x[0]) query_string = "?%s" % parse.urlencode(qparams) if qparams else "" detail = "" if detailed: detail = "/detail" return self._list("/flavors%s%s" % (detail, query_string), "flavors") def get(self, flavor): """ Get a specific flavor. :param flavor: The ID of the :class:`Flavor` to get. :rtype: :class:`Flavor` """ return self._get("/flavors/%s" % base.getid(flavor), "flavor") def delete(self, flavor): """ Delete a specific flavor. :param flavor: The ID of the :class:`Flavor` to get. """ self._delete("/flavors/%s" % base.getid(flavor)) def _build_body(self, name, ram, vcpus, disk, id, swap, ephemeral, rxtx_factor, is_public): return { "flavor": { "name": name, "ram": ram, "vcpus": vcpus, "disk": disk, "id": id, "swap": swap, "OS-FLV-EXT-DATA:ephemeral": ephemeral, "rxtx_factor": rxtx_factor, "os-flavor-access:is_public": is_public, } } def create(self, name, ram, vcpus, disk, flavorid="auto", ephemeral=0, swap=0, rxtx_factor=1.0, is_public=True): """ Create a flavor. :param name: Descriptive name of the flavor :param ram: Memory in MB for the flavor :param vcpus: Number of VCPUs for the flavor :param disk: Size of local disk in GB :param flavorid: ID for the flavor (optional). You can use the reserved value ``"auto"`` to have Nova generate a UUID for the flavor in cases where you cannot simply pass ``None``. :param swap: Swap space in MB :param rxtx_factor: RX/TX factor :rtype: :class:`Flavor` """ try: ram = int(ram) except (TypeError, ValueError): raise exceptions.CommandError(_("Ram must be an integer.")) try: vcpus = int(vcpus) except (TypeError, ValueError): raise exceptions.CommandError(_("VCPUs must be an integer.")) try: disk = int(disk) except (TypeError, ValueError): raise exceptions.CommandError(_("Disk must be an integer.")) if flavorid == "auto": flavorid = None try: swap = int(swap) except (TypeError, ValueError): raise exceptions.CommandError(_("Swap must be an integer.")) try: ephemeral = int(ephemeral) except (TypeError, ValueError): raise exceptions.CommandError(_("Ephemeral must be an integer.")) try: rxtx_factor = float(rxtx_factor) except (TypeError, ValueError): raise exceptions.CommandError(_("rxtx_factor must be a float.")) try: is_public = strutils.bool_from_string(is_public, True) except Exception: raise exceptions.CommandError(_("is_public must be a boolean.")) body = self._build_body(name, ram, vcpus, disk, flavorid, swap, ephemeral, rxtx_factor, is_public) return self._create("/flavors", body, "flavor")