diff options
Diffstat (limited to 'novaclient/v1_0/ipgroups.py')
| -rw-r--r-- | novaclient/v1_0/ipgroups.py | 64 |
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)) |
