Kiall Mac Innes 6f280a8693 Initial Python client bindings and CLI
Change-Id: Iac4a73acfb515c1e213a1dd0865a62bc39e3ed0f
2012-11-27 15:46:32 +00:00

80 lines
2.2 KiB
Python

# Copyright 2012 Managed I.T.
#
# Author: Kiall Mac Innes <kiall@managedit.ie>
#
# 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 json
from monikerclient import warlock
from monikerclient import utils
from monikerclient.v1.base import Controller
Record = warlock.model_factory(utils.load_schema('v1', 'record'))
class RecordsController(Controller):
def list(self):
"""
Retrieve a list of records
:returns: A list of :class:`Record`s
"""
response = self.client.get('/records')
return [Record(i) for i in response.json['records']]
def get(self, record_id):
"""
Retrieve a record
:param record_id: Record Identifier
:returns: :class:`Record`
"""
response = self.client.get('/records/%s' % record_id)
return Record(response.json)
def create(self, record):
"""
Create a record
:param record: A :class:`Record` to create
:returns: :class:`Record`
"""
response = self.client.post('/records', data=json.dumps(record))
return record.update(response.json)
def update(self, record):
"""
Update a record
:param record: A :class:`Record` to update
:returns: :class:`Record`
"""
response = self.client.put('/records/%s' % record.id,
data=json.dumps(record))
return record.update(response.json)
def delete(self, record):
"""
Delete a record
:param record: A :class:`Record`, or Record Identifier to delete
"""
if isinstance(record, Record):
self.client.delete('/records/%s' % record.id)
else:
self.client.delete('/records/%s' % record)