'''Groups provides the methods for chef group resources'''
from .base import Base
[docs]class Groups(Base):
'''
Provides access to the chef `groups` resource
'''
_base_url = '/organizations/%(org)s/groups'
[docs] @classmethod
def index(cls):
'''
Fetches all of the groups on the chef server
:return: All the chef groups with a url for each group
:rtype: hash
'''
return super(Groups, cls).index()
[docs] @classmethod
def get(cls, groupname):
'''
Fetches a group from the chef server
.. note::
Chef returns a slightly different format to
what it expects for create/update groups.
:param groupname: The Group's name
:type groupname: string
:return: The chef group and members
:rtype: hash
'''
return super(Groups, cls).get(groupname)
[docs] @classmethod
def create(cls, group):
'''
Creates a new chef group on the server
The group hash should be in the form::
{
'groupname': <groupname>,
'name': <groupname>,
'actors': { #optional
'users': <list of usernames>, # optional
'clients': <list of clients>, #optional
'groups': <list of groups> #optional
}
}
:param group: The group to create
:type group: hash
:return: The groupname and url
:rtype: hash
'''
return super(Groups, cls).create(group)
[docs] @classmethod
def update(cls, groupname, group):
'''
Updates a group on the chef server
the group hash should be in the same format as for create
:param groupname: The Group's groupname
:param group: The Group members and content
:type groupname: string
:type group: hash
:return: The groupname and url
:rtype: hash
'''
return super(Groups, cls).update(groupname, group)
[docs] @classmethod
def delete(cls, groupname):
'''
Deletes a group from the chef server
:param groupname: The Group's groupname
:type groupname: string
:return: The deleted group's name
:rtype: hash
'''
return super(Groups, cls).delete(groupname)
[docs] @classmethod
def exists(cls, groupname):
'''
Checks if a group exists on the chef server
:param username: The Group's groupname
:type usename: string
:return: If the group exists
:rtype: boolean
'''
return super(Groups, cls).exists(groupname)