Added Session operations

Change-Id: Ib1280ab5cd1d2c2c273a0a53e5433152cca4ef59
This commit is contained in:
Serg Melikyan
2013-03-11 18:09:56 +04:00
parent 783d51d706
commit 644fa9348c
3 changed files with 70 additions and 4 deletions

View File

@@ -72,8 +72,11 @@ class Manager(object):
return self.resource_class(self, body[response_key]) return self.resource_class(self, body[response_key])
return self.resource_class(self, body) return self.resource_class(self, body)
def _create(self, url, body, response_key=None, return_raw=False): def _create(self, url, body=None, response_key=None, return_raw=False):
resp, body = self.api.json_request('POST', url, body=body) if body:
resp, body = self.api.json_request('POST', url, body=body)
else:
resp, body = self.api.json_request('POST', url)
if return_raw: if return_raw:
if response_key: if response_key:
return body[response_key] return body[response_key]

View File

@@ -14,7 +14,7 @@
# under the License. # under the License.
from portasclient.common import http from portasclient.common import http
from portasclient.v1 import environments from portasclient.v1 import environments, sessions
class Client(http.HTTPClient): class Client(http.HTTPClient):
@@ -31,3 +31,4 @@ class Client(http.HTTPClient):
""" Initialize a new client for the Portas v1 API. """ """ Initialize a new client for the Portas v1 API. """
super(Client, self).__init__(*args, **kwargs) super(Client, self).__init__(*args, **kwargs)
self.environments = environments.EnvironmentManager(self) self.environments = environments.EnvironmentManager(self)
self.sessions = sessions.SessionManager(self)

View File

@@ -0,0 +1,62 @@
# Copyright 2012 OpenMeter LLC.
# All Rights Reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License"); you may
# not use this file except in compliance with the License. You may obtain
# a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
# 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 Session(base.Resource):
def __repr__(self):
return '<Session %s>' % self._info
def data(self, **kwargs):
return self.manager.data(self, **kwargs)
class Status(base.Resource):
def __repr__(self):
return '<Status %s>' % self._info
def data(self, **kwargs):
return self.manager.data(self, **kwargs)
class SessionManager(base.Manager):
resource_class = Session
def list(self, environment_id):
return self._list('environments/{id}/sessions'.format(id=environment_id), 'sessions')
def get(self, environment_id, session_id):
return self._get('environments/{id}/sessions/{session_id}'.format(id=environment_id, session_id=session_id))
def configure(self, environment_id):
return self._create('environments/{id}/configure'.format(id=environment_id), None)
def deploy(self, environment_id, session_id):
self.api.json_request('POST',
'environments/{id}/sessions/{session_id}/deploy'.format(id=environment_id,
session_id=session_id))
def reports(self, environment_id, session_id):
resp, body = self.api.json_request('GET',
'environments/{id}/sessions/{session_id}/reports'.
format(id=environment_id, session_id=session_id))
data = body['reports']
return [Status(self, res, loaded=True) for res in data if res]
def delete(self, environment_id, session_id):
return self._delete("environments/{id}/sessions/{session_id}".format(id=environment_id, session_id=session_id))