summaryrefslogtreecommitdiff
path: root/novaclient/v1_0/ipgroups.py
diff options
context:
space:
mode:
Diffstat (limited to 'novaclient/v1_0/ipgroups.py')
-rw-r--r--novaclient/v1_0/ipgroups.py64
1 files changed, 64 insertions, 0 deletions
diff --git a/novaclient/v1_0/ipgroups.py b/novaclient/v1_0/ipgroups.py
new file mode 100644
index 00000000..86cd3cb4
--- /dev/null
+++ b/novaclient/v1_0/ipgroups.py
@@ -0,0 +1,64 @@
+# Copyright 2010 Jacob Kaplan-Moss
+"""
+IP Group interface.
+"""
+
+from novaclient import base
+
+
+class IPGroup(base.Resource):
+ def __repr__(self):
+ return "<IP Group: %s>" % self.name
+
+ def delete(self):
+ """
+ Delete this group.
+ """
+ self.manager.delete(self)
+
+
+class IPGroupManager(base.ManagerWithFind):
+ resource_class = IPGroup
+
+ def list(self, detailed=True):
+ """
+ Get a list of all groups.
+
+ :rtype: list of :class:`IPGroup`
+ """
+ detail = ""
+ if detailed:
+ detail = "/detail"
+ return self._list("/shared_ip_groups%s" % detail, "sharedIpGroups")
+
+ def get(self, group):
+ """
+ Get an IP group.
+
+ :param group: ID of the image to get.
+ :rtype: :class:`IPGroup`
+ """
+ return self._get("/shared_ip_groups/%s" % base.getid(group),
+ "sharedIpGroup")
+
+ def create(self, name, server=None):
+ """
+ Create a new :class:`IPGroup`
+
+ :param name: An (arbitrary) name for the new image.
+ :param server: A :class:`Server` (or its ID) to make a member
+ of this group.
+ :rtype: :class:`IPGroup`
+ """
+ data = {"sharedIpGroup": {"name": name}}
+ if server:
+ data['sharedIpGroup']['server'] = base.getid(server)
+ return self._create('/shared_ip_groups', data, "sharedIpGroup")
+
+ def delete(self, group):
+ """
+ Delete a group.
+
+ :param group: The :class:`IPGroup` (or its ID) to delete.
+ """
+ self._delete("/shared_ip_groups/%s" % base.getid(group))