diff --git a/metadataclient/v1/metadata_admin.py b/metadataclient/v1/metadata_admin.py index fd3adb0..1ea8f33 100644 --- a/metadataclient/v1/metadata_admin.py +++ b/metadataclient/v1/metadata_admin.py @@ -12,12 +12,50 @@ # License for the specific language governing permissions and limitations # under the License. import StringIO +from metadataclient import exc + + +class Wrapper(object): + def __init__(self, service_id, **kwargs): + self.id = service_id + for key, value in kwargs.items(): + setattr(self, key, value) class Controller(object): def __init__(self, http_client): self.http_client = http_client + def list_services(self): + resp, body = self.http_client.json_request('GET', '/v1/admin/services') + services = body.get('services', None) + if services: + return [Wrapper(service['full_service_name'], **service) + for service in services] + else: + raise exc.HTTPInternalServerError() + + def download_service(self, service): + resp, body = self.http_client.raw_request( + 'GET', '/v1/client/services/{service}'.format(service=service)) + return body + + def upload_service(self, data): + resp, body = self.http_client.raw_request( + 'POST', '/v1/admin/services/', body=data) + return body + + def delete_service(self, service): + resp, body = self.http_client.raw_request( + 'DELETE', '/v1/admin/services/{service}'.format(service=service)) + return body + + def toggle_enabled(self, service): + resp, body = self.http_client.raw_request( + 'POST', '/v1/admin/services/{service}/toggle_enabled'.format( + service=service)) + return body + def list_ui(self, path=None): if path: url = '/v1/admin/ui/{path}'.format(path=path)