Change api.service to use a class, fix validations in api
Change-Id: Ib5a957a82238b18548ff470ea9c2905b389d026e
This commit is contained in:
parent
dfbaa5a410
commit
dfeacfa37e
@ -19,53 +19,50 @@ from climate.openstack.common import log as logging
|
||||
LOG = logging.getLogger(__name__)
|
||||
|
||||
|
||||
## Leases operations
|
||||
class API(object):
|
||||
|
||||
def get_leases():
|
||||
"""List all existing leases."""
|
||||
pass
|
||||
## Leases operations
|
||||
|
||||
def get_leases():
|
||||
"""List all existing leases."""
|
||||
pass
|
||||
|
||||
def create_lease(data):
|
||||
"""Create new lease.
|
||||
def create_lease(data):
|
||||
"""Create new lease.
|
||||
|
||||
:param data: New lease characteristics.
|
||||
:type data: dict
|
||||
"""
|
||||
pass
|
||||
:param data: New lease characteristics.
|
||||
:type data: dict
|
||||
"""
|
||||
pass
|
||||
|
||||
def get_lease(lease_id):
|
||||
"""Get lease by its ID.
|
||||
|
||||
def get_lease(lease_id):
|
||||
"""Get lease by its ID.
|
||||
:param lease_id: ID of the lease in Climate DB.
|
||||
:type lease_id: str
|
||||
"""
|
||||
pass
|
||||
|
||||
:param lease_id: ID of the lease in Climate DB.
|
||||
:type lease_id: str
|
||||
"""
|
||||
pass
|
||||
def update_lease(lease_id, data):
|
||||
"""Update lease. Only name changing and prolonging may be proceeded.
|
||||
|
||||
:param lease_id: ID of the lease in Climate DB.
|
||||
:type lease_id: str
|
||||
:param data: New lease characteristics.
|
||||
:type data: dict
|
||||
"""
|
||||
pass
|
||||
|
||||
def update_lease(lease_id, data):
|
||||
"""Update lease. Only name changing and prolonging may be proceeded.
|
||||
def delete_lease(lease_id):
|
||||
"""Delete specified lease.
|
||||
|
||||
:param lease_id: ID of the lease in Climate DB.
|
||||
:type lease_id: str
|
||||
:param data: New lease characteristics.
|
||||
:type data: dict
|
||||
"""
|
||||
pass
|
||||
:param lease_id: ID of the lease in Climate DB.
|
||||
:type lease_id: str
|
||||
"""
|
||||
pass
|
||||
|
||||
## Plugins operations
|
||||
|
||||
def delete_lease(lease_id):
|
||||
"""Delete specified lease.
|
||||
|
||||
:param lease_id: ID of the lease in Climate DB.
|
||||
:type lease_id: str
|
||||
"""
|
||||
pass
|
||||
|
||||
|
||||
## Plugins operations
|
||||
|
||||
def get_plugins():
|
||||
"""List all possible plugins."""
|
||||
pass
|
||||
def get_plugins():
|
||||
"""List all possible plugins."""
|
||||
pass
|
||||
|
@ -17,10 +17,12 @@ from climate.api import service
|
||||
from climate.api import utils as api_utils
|
||||
from climate.api import validation
|
||||
from climate.openstack.common import log as logging
|
||||
from climate import utils
|
||||
|
||||
LOG = logging.getLogger(__name__)
|
||||
|
||||
rest = api_utils.Rest('v1_0', __name__)
|
||||
_api = utils.LazyProxy(service.API)
|
||||
|
||||
|
||||
## Leases operations
|
||||
@ -28,34 +30,34 @@ rest = api_utils.Rest('v1_0', __name__)
|
||||
@rest.get('/leases')
|
||||
def leases_list():
|
||||
"""List all existing leases."""
|
||||
return api_utils.render(leases=service.get_leases())
|
||||
return api_utils.render(leases=_api.get_leases())
|
||||
|
||||
|
||||
@rest.post('/leases')
|
||||
def leases_create(data):
|
||||
"""Create new lease."""
|
||||
return api_utils.render(lease=service.create_lease(data))
|
||||
return api_utils.render(lease=_api.create_lease(data))
|
||||
|
||||
|
||||
@rest.get('/leases/<lease_id>')
|
||||
@validation.check_exists(service.get_lease, 'lease_id')
|
||||
@validation.check_exists(_api.get_lease, lease_id='lease_id')
|
||||
def leases_get(lease_id):
|
||||
"""Get lease by its ID."""
|
||||
return api_utils.render(lease=service.get_lease(lease_id))
|
||||
return api_utils.render(lease=_api.get_lease(lease_id))
|
||||
|
||||
|
||||
@rest.put('/leases/<lease_id>')
|
||||
@validation.check_exists(service.get_lease, 'lease_id')
|
||||
@validation.check_exists(_api.get_lease, lease_id='lease_id')
|
||||
def leases_update(lease_id, data):
|
||||
"""Update lease. Only name changing and prolonging may be proceeded."""
|
||||
return api_utils.render(lease=service.update_lease(lease_id, data))
|
||||
return api_utils.render(lease=_api.update_lease(lease_id, data))
|
||||
|
||||
|
||||
@rest.delete('/leases/<lease_id>')
|
||||
@validation.check_exists(service.get_lease, 'lease_id')
|
||||
@validation.check_exists(_api.get_lease, lease_id='lease_id')
|
||||
def leases_delete(lease_id):
|
||||
"""Delete specified lease."""
|
||||
service.delete_lease(lease_id)
|
||||
_api.delete_lease(lease_id)
|
||||
return api_utils.render()
|
||||
|
||||
|
||||
@ -64,4 +66,4 @@ def leases_delete(lease_id):
|
||||
@rest.get('/plugins')
|
||||
def plugins_list():
|
||||
"""List all possible plugins."""
|
||||
return api_utils.render(plugins=service.get_plugins())
|
||||
return api_utils.render(plugins=_api.get_plugins())
|
||||
|
@ -12,3 +12,21 @@
|
||||
# implied.
|
||||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
import functools
|
||||
|
||||
|
||||
class LazyProxy(object):
|
||||
|
||||
def __init__(self, klass, *args, **kwargs):
|
||||
self.klass = klass
|
||||
self.args = args
|
||||
self.kwargs = kwargs
|
||||
self.instance = None
|
||||
|
||||
def __getattr__(self, name):
|
||||
return functools.partial(self.__run_method, name)
|
||||
|
||||
def __run_method(self, __name, *args, **kwargs):
|
||||
if self.instance is None:
|
||||
self.instance = self.klass(*self.args, **self.kwargs)
|
||||
return getattr(self.instance, __name)(*args, **kwargs)
|
||||
|
Loading…
x
Reference in New Issue
Block a user