diff --git a/cratonclient/v1/client.py b/cratonclient/v1/client.py index 6a97e4c..ae81bf2 100644 --- a/cratonclient/v1/client.py +++ b/cratonclient/v1/client.py @@ -1,10 +1,29 @@ """Top-level client for version 1 of Craton's API.""" +from cratonclient.v1 import hosts from cratonclient.v1 import regions class Client(object): + """Craton v1 API Client.""" + def __init__(self, session, url): + """Initialize our client object with our session and url. + + :param session: + Initialized Session object. + :type session: + cratonclient.session.Session + :param str url: + The URL that points us to the craton instance. For example, + 'https://10.1.1.0:8080/'. + """ self._url = url self._session = session - self.regions = regions.RegionManager(self._session, self._url) + if not self._url.endswith('/v1'): + self._url += '/v1' + + manager_kwargs = {'session': self._session, 'url': url} + + self.hosts = hosts.HostManager(**manager_kwargs) + self.regions = regions.RegionManager(**manager_kwargs) diff --git a/cratonclient/v1/hosts.py b/cratonclient/v1/hosts.py new file mode 100644 index 0000000..dc93d69 --- /dev/null +++ b/cratonclient/v1/hosts.py @@ -0,0 +1,21 @@ +"""Hosts resource and resource manager.""" +from cratonclient import crud + + +class Host(crud.Resource): + """Representation of a Host.""" + + pass + + +class HostManager(crud.CRUDClient): + """A manager for hosts.""" + + key = 'host' + base_path = '/hosts' + resource_class = Host + + def list(self, project_id, **kwargs): + """Retrieve the hosts in a specific region.""" + kwargs['project'] = str(project_id) + super(HostManager, self).list(**kwargs)