Merge pull request #4 from ed-/haz_flavors

Flavors
This commit is contained in:
Michael Basnight 2012-05-01 08:16:25 -07:00
commit 2dc5d02d70
2 changed files with 80 additions and 0 deletions
reddwarfclient

@ -102,6 +102,7 @@ class Dbaas(Client):
service_url=service_url) service_url=service_url)
self.versions = Versions(self) self.versions = Versions(self)
self.databases = Databases(self) self.databases = Databases(self)
self.flavors = Flavors(self)
self.instances = Instances(self) self.instances = Instances(self)
self.users = Users(self) self.users = Users(self)
self.root = Root(self) self.root = Root(self)
@ -116,6 +117,7 @@ class Dbaas(Client):
from reddwarfclient.accounts import Accounts from reddwarfclient.accounts import Accounts
from reddwarfclient.config import Configs from reddwarfclient.config import Configs
from reddwarfclient.databases import Databases from reddwarfclient.databases import Databases
from reddwarfclient.flavors import Flavors
from reddwarfclient.instances import Instances from reddwarfclient.instances import Instances
from reddwarfclient.hosts import Hosts from reddwarfclient.hosts import Hosts
from reddwarfclient.management import Management from reddwarfclient.management import Management

78
reddwarfclient/flavors.py Normal file

@ -0,0 +1,78 @@
# Copyright (c) 2012 OpenStack, LLC.
# 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 novaclient import base
import exceptions
from reddwarfclient.common import check_for_exceptions
class Flavor(base.Resource):
"""
A Flavor is an Instance type, specifying among other things, RAM size.
"""
def __repr__(self):
return "<Flavor: %s>" % self.name
class Flavors(base.ManagerWithFind):
"""
Manage :class:`Flavor` resources.
"""
resource_class = Flavor
def __repr__(self):
return "<Flavors Manager at %s>" % id(self)
def _list(self, url, response_key):
resp, body = self.api.client.get(url)
if not body:
raise Exception("Call to " + url + " did not return a body.")
return [self.resource_class(self, res) for res in body[response_key]]
def list(self):
"""
Get a list of all flavors.
:rtype: list of :class:`Flavor`.
"""
return self.detail()
def index(self):
"""
Get a list of all flavors.
:rtype: list of :class:`Flavor`.
"""
return self._list("/flavors", "flavors")
def detail(self):
"""
Get the details of all flavors.
:rtype: list of :class:`Flavor`.
"""
return self._list("/flavors/detail", "flavors")
def get(self, flavor):
"""
Get a specific flavor.
:rtype: :class:`Flavor`
"""
return self._get("/flavors/%s" % base.getid(flavor),
"flavor")