Added API to get and delete uuid from RMS service
Change-Id: I12b86e8b4264205ea7daa6729e37215a2d4dfb79
This commit is contained in:
parent
97f8c419be
commit
7767e6bc7f
@ -22,6 +22,58 @@ def respond(reason, code, message):
|
|||||||
|
|
||||||
|
|
||||||
class UUIDController(RestController):
|
class UUIDController(RestController):
|
||||||
|
@expose(template='json')
|
||||||
|
def get(self, **kw):
|
||||||
|
if 'uuid' in kw:
|
||||||
|
uuid = kw['uuid']
|
||||||
|
else:
|
||||||
|
response.status = 400
|
||||||
|
messageToReturn = respond(
|
||||||
|
"badRequest", response.status, 'Missing UUID parameter.')
|
||||||
|
return messageToReturn
|
||||||
|
|
||||||
|
try:
|
||||||
|
db_manager = DBManager()
|
||||||
|
results = db_manager.get_uuid_details(uuid)
|
||||||
|
if results is None:
|
||||||
|
response.status = 404
|
||||||
|
messageToReturn = respond(
|
||||||
|
"badRequest", response.status, 'UUID not found')
|
||||||
|
return messageToReturn
|
||||||
|
|
||||||
|
return results.get_dict()
|
||||||
|
except Exception as e:
|
||||||
|
response.status = 500
|
||||||
|
messageToReturn = respond(
|
||||||
|
"badRequest", response.status, 'Database error')
|
||||||
|
LOG.error(str(messageToReturn) + "Exception: " + str(e))
|
||||||
|
return messageToReturn
|
||||||
|
|
||||||
|
@expose(template='json')
|
||||||
|
def delete(self, **kw):
|
||||||
|
if 'uuid' in kw:
|
||||||
|
uuid = kw['uuid']
|
||||||
|
else:
|
||||||
|
response.status = 400
|
||||||
|
messageToReturn = respond(
|
||||||
|
"badRequest", response.status, 'Missing UUID parameter.')
|
||||||
|
return messageToReturn
|
||||||
|
|
||||||
|
try:
|
||||||
|
db_manager = DBManager()
|
||||||
|
results = db_manager.delete_uuid(uuid)
|
||||||
|
if results == 0:
|
||||||
|
response.status = 404
|
||||||
|
messageToReturn = respond(
|
||||||
|
"badRequest", response.status, 'UUID not found')
|
||||||
|
return messageToReturn
|
||||||
|
except Exception as e:
|
||||||
|
response.status = 500
|
||||||
|
messageToReturn = respond(
|
||||||
|
"badRequest", response.status, 'Database error')
|
||||||
|
LOG.error(str(messageToReturn) + "Exception: " + str(e))
|
||||||
|
return messageToReturn
|
||||||
|
|
||||||
@expose(template='json')
|
@expose(template='json')
|
||||||
def post(self, **kw):
|
def post(self, **kw):
|
||||||
"""Method to handle POST /v1/uuids - create and return a new uuid
|
"""Method to handle POST /v1/uuids - create and return a new uuid
|
||||||
|
@ -13,7 +13,8 @@ class DBManager(object):
|
|||||||
if not connection_string:
|
if not connection_string:
|
||||||
connection_string = conf.database.connection_string
|
connection_string = conf.database.connection_string
|
||||||
|
|
||||||
self._engine_facade = LegacyEngineFacade(connection_string, autocommit=False)
|
self._engine_facade = LegacyEngineFacade(connection_string,
|
||||||
|
autocommit=False)
|
||||||
self._session = None
|
self._session = None
|
||||||
|
|
||||||
def get_session(self):
|
def get_session(self):
|
||||||
@ -52,6 +53,31 @@ class DBManager(object):
|
|||||||
self.session.commit()
|
self.session.commit()
|
||||||
self.session.close()
|
self.session.close()
|
||||||
self.engine.dispose()
|
self.engine.dispose()
|
||||||
except SystemError as ex:
|
except Exception as ex:
|
||||||
logger.exception(ex)
|
logger.exception(
|
||||||
|
"Error adding uuid {} : {}".format(_uuid, str(exp)))
|
||||||
|
raise ex
|
||||||
|
|
||||||
|
def get_uuid_details(self, _uuid):
|
||||||
|
try:
|
||||||
|
self.begin_transaction()
|
||||||
|
uuid = self.session.query(UUID).filter(UUID.uuid == _uuid)
|
||||||
|
self.close()
|
||||||
|
return uuid.first()
|
||||||
|
except Exception as ex:
|
||||||
|
logger.exception(
|
||||||
|
"Error getting uuid {} : {}".format(_uuid, str(exp)))
|
||||||
|
raise ex
|
||||||
|
|
||||||
|
def delete_uuid(self, _uuid):
|
||||||
|
try:
|
||||||
|
self.begin_transaction()
|
||||||
|
result = self.session.query(UUID).filter(
|
||||||
|
UUID.uuid == _uuid).delete()
|
||||||
|
self.session.commit()
|
||||||
|
self.close()
|
||||||
|
return result
|
||||||
|
except Exception as ex:
|
||||||
|
logger.exception(
|
||||||
|
"Error deleting uuid {} : {}".format(_uuid, str(exp)))
|
||||||
raise ex
|
raise ex
|
||||||
|
@ -19,3 +19,11 @@ class UUID(declarative_base(), UUIDBaseModel):
|
|||||||
id = Column(Integer, primary_key=True)
|
id = Column(Integer, primary_key=True)
|
||||||
uuid = Column(String, nullable=False, unique=True)
|
uuid = Column(String, nullable=False, unique=True)
|
||||||
uuid_type = Column(String, nullable=True, unique=True)
|
uuid_type = Column(String, nullable=True, unique=True)
|
||||||
|
|
||||||
|
def __json__(self):
|
||||||
|
return dict(id=self.id,
|
||||||
|
uuid=self.uuid,
|
||||||
|
uuid_type=self.uuid_type)
|
||||||
|
|
||||||
|
def get_dict(self):
|
||||||
|
return self.__json__()
|
||||||
|
@ -0,0 +1,77 @@
|
|||||||
|
import json
|
||||||
|
import logging
|
||||||
|
|
||||||
|
from orm.common.orm_common.utils import api_error_utils as err_utils
|
||||||
|
from orm.services.region_manager.rms.utils import authentication
|
||||||
|
|
||||||
|
from pecan import conf
|
||||||
|
from pecan import request
|
||||||
|
from pecan import rest
|
||||||
|
import requests
|
||||||
|
import wsme
|
||||||
|
from wsme import types as wtypes
|
||||||
|
from wsmeext.pecan import wsexpose
|
||||||
|
|
||||||
|
logger = logging.getLogger(__name__)
|
||||||
|
|
||||||
|
|
||||||
|
class UUIDData(wtypes.DynamicBase):
|
||||||
|
id = wsme.wsattr(wtypes.text, mandatory=True)
|
||||||
|
uuid = wsme.wsattr(wtypes.text, mandatory=True)
|
||||||
|
uuid_type = wsme.wsattr(wtypes.text, mandatory=True)
|
||||||
|
|
||||||
|
def __init__(self, id=None, uuid=None, uuid_type=None):
|
||||||
|
self.id = id
|
||||||
|
self.uuid = uuid
|
||||||
|
self.uuid_type = uuid_type
|
||||||
|
|
||||||
|
|
||||||
|
class UUIDController(rest.RestController):
|
||||||
|
|
||||||
|
@wsexpose(UUIDData, str, status_code=200, rest_content_types='json')
|
||||||
|
def get_one(self, uuid):
|
||||||
|
logger.info("UUIDController - Getting UUID " + uuid)
|
||||||
|
authentication.authorize(request, 'uuid:get_one')
|
||||||
|
|
||||||
|
url = conf.api.uuid_server.base + conf.api.uuid_server.uuids
|
||||||
|
try:
|
||||||
|
resp = requests.get(url, params={'uuid': uuid})
|
||||||
|
except Exception as ex:
|
||||||
|
logger.exception(
|
||||||
|
"Failed to get uuid : {}".format(str(ex)))
|
||||||
|
raise err_utils.get_error(request.transaction_id,
|
||||||
|
status_code=500,
|
||||||
|
error_details=str(ex))
|
||||||
|
|
||||||
|
if resp.status_code != 200:
|
||||||
|
message = "Failed to uuid {}: {}".format(uuid, resp.text)
|
||||||
|
raise err_utils.get_error(request.transaction_id,
|
||||||
|
status_code=resp.status_code,
|
||||||
|
error_details=message)
|
||||||
|
|
||||||
|
uuid_data = json.loads(resp.content)
|
||||||
|
return UUIDData(id=str(uuid_data['id']),
|
||||||
|
uuid=uuid_data['uuid'],
|
||||||
|
uuid_type=uuid_data['uuid_type'])
|
||||||
|
|
||||||
|
@wsexpose(None, str, rest_content_types='json', status_code=204)
|
||||||
|
def delete(self, uuid):
|
||||||
|
logger.info("UUIDController - Deleting UUID " + uuid)
|
||||||
|
authentication.authorize(request, 'uuid:delete')
|
||||||
|
|
||||||
|
url = conf.api.uuid_server.base + conf.api.uuid_server.uuids
|
||||||
|
try:
|
||||||
|
resp = requests.delete(url, params={'uuid': uuid})
|
||||||
|
except Exception as ex:
|
||||||
|
logger.exception(
|
||||||
|
"Failed to delete uuid : {}".format(str(ex)))
|
||||||
|
raise err_utils.get_error(request.transaction_id,
|
||||||
|
status_code=500,
|
||||||
|
error_details=str(ex))
|
||||||
|
|
||||||
|
if resp.status_code != 200:
|
||||||
|
message = "Failed to delete uuid {}: {}".format(uuid, resp.text)
|
||||||
|
raise err_utils.get_error(request.transaction_id,
|
||||||
|
status_code=resp.status_code,
|
||||||
|
error_details=message)
|
||||||
|
return
|
@ -1,5 +1,6 @@
|
|||||||
"""ORM controller module."""
|
"""ORM controller module."""
|
||||||
from orm.services.region_manager.rms.controllers.v2.orm.resources import groups, regions
|
from orm.services.region_manager.rms.controllers.v2.orm.resources import \
|
||||||
|
groups, regions, uuid
|
||||||
|
|
||||||
|
|
||||||
class OrmController(object):
|
class OrmController(object):
|
||||||
@ -7,3 +8,4 @@ class OrmController(object):
|
|||||||
|
|
||||||
regions = regions.RegionsController()
|
regions = regions.RegionsController()
|
||||||
groups = groups.GroupsController()
|
groups = groups.GroupsController()
|
||||||
|
uuid = uuid.UUIDController()
|
||||||
|
@ -11,6 +11,9 @@
|
|||||||
"lcp:get_one": "",
|
"lcp:get_one": "",
|
||||||
"lcp:get_all": "",
|
"lcp:get_all": "",
|
||||||
|
|
||||||
|
"uuid:get_one": "",
|
||||||
|
"uuid:delete": "rule:admin",
|
||||||
|
|
||||||
"region:get_one": "",
|
"region:get_one": "",
|
||||||
"region:get_all": "",
|
"region:get_all": "",
|
||||||
"region:create": "rule:admin_or_support",
|
"region:create": "rule:admin_or_support",
|
||||||
|
Loading…
x
Reference in New Issue
Block a user