Merge branch 'initial_api_service'
This commit is contained in:
commit
01ac42ce9a
|
@ -31,17 +31,21 @@ def start_api(state_manager=None, ingester=None, orchestrator=None):
|
|||
control_api = falcon.API(request_type=DrydockRequest,
|
||||
middleware=[AuthMiddleware(), ContextMiddleware(), LoggingMiddleware()])
|
||||
|
||||
# v1.0 of Drydock API
|
||||
v1_0_routes = [
|
||||
# API for managing orchestrator tasks
|
||||
control_api.add_route('/tasks', TasksResource(state_manager=state_manager, orchestrator=orchestrator))
|
||||
control_api.add_route('/tasks/{task_id}', TaskResource(state_manager=state_manager))
|
||||
('/tasks', TasksResource(state_manager=state_manager, orchestrator=orchestrator)),
|
||||
('/tasks/{task_id}', TaskResource(state_manager=state_manager)),
|
||||
|
||||
# API for managing site design data
|
||||
control_api.add_route('/designs', DesignsResource(state_manager=state_manager))
|
||||
control_api.add_route('/designs/{design_id}', DesignResource(state_manager=state_manager, orchestrator=orchestrator))
|
||||
control_api.add_route('/designs/{design_id}/parts', DesignsPartsResource(state_manager=state_manager, ingester=ingester))
|
||||
control_api.add_route('/designs/{design_id}/parts/{kind}', DesignsPartsKindsResource(state_manager=state_manager))
|
||||
('/designs', DesignsResource(state_manager=state_manager)),
|
||||
('/designs/{design_id}', DesignResource(state_manager=state_manager, orchestrator=orchestrator)),
|
||||
('/designs/{design_id}/parts', DesignsPartsResource(state_manager=state_manager, ingester=ingester)),
|
||||
('/designs/{design_id}/parts/{kind}', DesignsPartsKindsResource(state_manager=state_manager)),
|
||||
('/designs/{design_id}/parts/{kind}/{name}', DesignsPartResource(state_manager=state_manager, orchestrator=orchestrator))
|
||||
]
|
||||
|
||||
control_api.add_route('/designs/{design_id}/parts/{kind}/{name}',
|
||||
DesignsPartResource(state_manager=state_manager, orchestrator=orchestrator))
|
||||
for path, res in v1_0_routes:
|
||||
control_api.add_route('/api/v1.0' + path, res)
|
||||
|
||||
return control_api
|
||||
|
|
|
@ -117,7 +117,7 @@ class DrydockRequestContext(object):
|
|||
self.log_level = 'ERROR'
|
||||
self.user = None
|
||||
self.roles = ['anyone']
|
||||
self.request_id = str(uuid.uuid4())
|
||||
self.req_id = str(uuid.uuid4())
|
||||
self.external_marker = None
|
||||
|
||||
def set_log_level(self, level):
|
||||
|
@ -138,7 +138,7 @@ class DrydockRequestContext(object):
|
|||
if x != role]
|
||||
|
||||
def set_external_marker(self, marker):
|
||||
self.external_marker = str(marker)[:32]
|
||||
self.external_marker = str(marker)[:20]
|
||||
|
||||
class DrydockRequest(request.Request):
|
||||
context_type = DrydockRequestContext
|
|
@ -72,11 +72,9 @@ class ContextMiddleware(object):
|
|||
elif requested_logging == 'INFO':
|
||||
ctx.set_log_level('INFO')
|
||||
|
||||
ctx.req_id = str(uuid.uuid4())
|
||||
|
||||
ext_marker = req.get_header('X-Context-Marker')
|
||||
|
||||
ctx.external_ctx = ext_marker if ext_marker is not None else ''
|
||||
ctx.set_external_marker(ext_marker if ext_marker is not None else '')
|
||||
|
||||
class LoggingMiddleware(object):
|
||||
|
||||
|
@ -88,7 +86,7 @@ class LoggingMiddleware(object):
|
|||
extra = {
|
||||
'user': ctx.user,
|
||||
'req_id': ctx.req_id,
|
||||
'external_ctx': ctx.external_ctx,
|
||||
'external_ctx': ctx.external_marker,
|
||||
}
|
||||
resp.append_header('X-Drydock-Req', ctx.req_id)
|
||||
self.logger.info("%s - %s" % (req.uri, resp.status), extra=extra)
|
||||
|
|
|
@ -3,28 +3,28 @@
|
|||
This is the external facing API service to control the rest
|
||||
of Drydock and query Drydock-managed data.
|
||||
|
||||
## Endpoints ##
|
||||
## v1.0 Endpoints ##
|
||||
|
||||
### /tasks ###
|
||||
### /api/v1.0/tasks ###
|
||||
|
||||
POST - Create a new orchestration task and submit it for execution
|
||||
GET - Get status of a task
|
||||
DELETE - Cancel execution of a task if permitted
|
||||
|
||||
### /designs ###
|
||||
### /api/v1.0/designs ###
|
||||
|
||||
POST - Create a new site design so design parts can be added
|
||||
|
||||
### /designs/{id}
|
||||
### /api/v1.0/designs/{id}
|
||||
|
||||
GET - Get a current design if available. Param 'source=compiled' to calculate the inheritance chain and compile the effective design.
|
||||
|
||||
### /designs/{id}/parts
|
||||
### /api/v1.0/designs/{id}/parts
|
||||
|
||||
POST - Submit a new design part to be ingested and added to this design
|
||||
GET - View a currently defined design part
|
||||
PUT - Replace an existing design part *Not Implemented*
|
||||
|
||||
### /designs/{id}/parts/{kind}/{name}
|
||||
### /api/v1.0/designs/{id}/parts/{kind}/{name}
|
||||
|
||||
GET - View a single design part. param 'source=compiled' to calculate the inheritance chain and compile the effective configuration for the design part.
|
Loading…
Reference in New Issue