From 66e579521db12975e15ff46eb595d9a15b989862 Mon Sep 17 00:00:00 2001 From: Serg Melikyan Date: Mon, 11 Mar 2013 15:18:18 +0400 Subject: [PATCH] Added Environments CRUD operations --- .../portasclient/common/base.py | 22 +++++++++++++++++++ .../portasclient/v1/environments.py | 17 ++++++++++++-- python-portasclient/portasclient/v1/shell.py | 4 ++-- 3 files changed, 39 insertions(+), 4 deletions(-) diff --git a/python-portasclient/portasclient/common/base.py b/python-portasclient/portasclient/common/base.py index c29ac18..4f5c12f 100644 --- a/python-portasclient/portasclient/common/base.py +++ b/python-portasclient/portasclient/common/base.py @@ -68,7 +68,29 @@ class Manager(object): resp, body = self.api.json_request('PUT', url, body=body) # PUT requests may not return a body if body: + if response_key: + return self.resource_class(self, body[response_key]) + return self.resource_class(self, body) + + def _create(self, url, body, response_key=None, return_raw=False): + resp, body = self.api.json_request('POST', url, body=body) + if return_raw: + if response_key: + return body[response_key] + return body + if response_key: return self.resource_class(self, body[response_key]) + return self.resource_class(self, body) + + def _get(self, url, response_key=None, return_raw=False): + resp, body = self.api.json_request('GET', url) + if return_raw: + if response_key: + return body[response_key] + return body + if response_key: + return self.resource_class(self, body[response_key]) + return self.resource_class(self, body) class Resource(object): diff --git a/python-portasclient/portasclient/v1/environments.py b/python-portasclient/portasclient/v1/environments.py index 4d7e439..5dd1cfc 100644 --- a/python-portasclient/portasclient/v1/environments.py +++ b/python-portasclient/portasclient/v1/environments.py @@ -12,13 +12,14 @@ # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. +import anyjson from portasclient.common import base class Environment(base.Resource): def __repr__(self): - return "" % self._info + return "" % self._info def data(self, **kwargs): return self.manager.data(self, **kwargs) @@ -28,4 +29,16 @@ class EnvironmentManager(base.Manager): resource_class = Environment def list(self): - return self._list('environments', 'environments') \ No newline at end of file + return self._list('environments', 'environments') + + def create(self, name): + return self._create('environments', {'name': name}) + + def update(self, environment_id, name): + return self._update('environments/{id}'.format(id=environment_id), {'name': name}) + + def delete(self, environment_id): + return self._delete('environments/{id}'.format(id=environment_id)) + + def get(self, environment_id): + return self._get("environments/{id}".format(id=environment_id)) \ No newline at end of file diff --git a/python-portasclient/portasclient/v1/shell.py b/python-portasclient/portasclient/v1/shell.py index 38ab2b3..0675e96 100644 --- a/python-portasclient/portasclient/v1/shell.py +++ b/python-portasclient/portasclient/v1/shell.py @@ -19,6 +19,6 @@ from portasclient.common import utils def do_environment_list(cc, args={}): """List the environments""" environments = cc.environments.list() - field_labels = ['ID', 'Name'] - fields = ['id', 'name'] + field_labels = ['ID', 'Name', 'Created', 'Updated'] + fields = ['id', 'name', 'created', 'updated'] utils.print_list(environments, fields, field_labels, sortby=0)