From 3ec9bc32cf861c19dd276f49ffbe301f7655d43c Mon Sep 17 00:00:00 2001
From: Ed Cranford <ed.cranford@rackspace.com>
Date: Wed, 21 Mar 2012 17:53:24 -0500
Subject: [PATCH 1/2] Adding Flavors to the client

---
 reddwarfclient/__init__.py |  2 +
 reddwarfclient/flavors.py  | 79 ++++++++++++++++++++++++++++++++++++++
 2 files changed, 81 insertions(+)
 create mode 100644 reddwarfclient/flavors.py

diff --git a/reddwarfclient/__init__.py b/reddwarfclient/__init__.py
index 29d6db01..01dee13a 100644
--- a/reddwarfclient/__init__.py
+++ b/reddwarfclient/__init__.py
@@ -102,6 +102,7 @@ class Dbaas(Client):
                                          service_url=service_url)
         self.versions = Versions(self)
         self.databases = Databases(self)
+        self.flavors = Flavors(self)
         self.instances = Instances(self)
         self.users = Users(self)
         self.root = Root(self)
@@ -116,6 +117,7 @@ class Dbaas(Client):
 from reddwarfclient.accounts import Accounts
 from reddwarfclient.config import  Configs
 from reddwarfclient.databases import Databases
+from reddwarfclient.flavors import Flavors
 from reddwarfclient.instances import Instances
 from reddwarfclient.hosts import Hosts
 from reddwarfclient.management import Management
diff --git a/reddwarfclient/flavors.py b/reddwarfclient/flavors.py
new file mode 100644
index 00000000..8d183f4f
--- /dev/null
+++ b/reddwarfclient/flavors.py
@@ -0,0 +1,79 @@
+# 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._get("/flavors/detail", "flavors")
+        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")
+

From ece8b9e2d11a6c29c115c5e18fcb86de557eafaf Mon Sep 17 00:00:00 2001
From: Ed Cranford <ed.cranford@rackspace.com>
Date: Thu, 29 Mar 2012 16:43:26 -0500
Subject: [PATCH 2/2] Fixed a 1/N problem with the client

---
 reddwarfclient/flavors.py | 1 -
 1 file changed, 1 deletion(-)

diff --git a/reddwarfclient/flavors.py b/reddwarfclient/flavors.py
index 8d183f4f..fcaa646a 100644
--- a/reddwarfclient/flavors.py
+++ b/reddwarfclient/flavors.py
@@ -65,7 +65,6 @@ class Flavors(base.ManagerWithFind):
 
         :rtype: list of :class:`Flavor`.
         """
-        #return self._get("/flavors/detail", "flavors")
         return self._list("/flavors/detail", "flavors")
 
     def get(self, flavor):