Add locations to POST /v1/plans API
When determining placements for a related set of resources via OpenStack Heat, there's no a priori knowledge of specific location candidates. Thus the /v1/plans API never accounted for them. However, when it comes to ad hoc placement of a single resource (e.g., via OpenStack Nova), such knowledge *does* exist. This is one piece of a three-part change (same issue tracking ID). Change-Id: I327b87a1a1104019239547d03600cdd849ea6501
This commit is contained in:
parent
8083445865
commit
1e146b1499
@ -504,6 +504,7 @@ This operation does not accept a request body.
|
|||||||
|
|
||||||
| Parameter | Style | Type | Description |
|
| Parameter | Style | Type | Description |
|
||||||
|-------------|-------|------------|---------------------------------------------------|
|
|-------------|-------|------------|---------------------------------------------------|
|
||||||
|
| locations | plain | xsd:list | An optional list of placement location candidates. |
|
||||||
| plan_name | plain | xsd:string | The name of the plan. |
|
| plan_name | plain | xsd:string | The name of the plan. |
|
||||||
| resources | plain | xsd:dict | A dictionary of resources to be planned. Each is keyed by an orchestration uuid. This is a UUID provided by an orchestration engine (e.g., heat-engine) prior to instantiation of a resource. The dictionary contains three keys: |
|
| resources | plain | xsd:dict | A dictionary of resources to be planned. Each is keyed by an orchestration uuid. This is a UUID provided by an orchestration engine (e.g., heat-engine) prior to instantiation of a resource. The dictionary contains three keys: |
|
||||||
| | | | **name**: resource name |
|
| | | | **name**: resource name |
|
||||||
|
@ -245,6 +245,11 @@ class Ostro(object):
|
|||||||
"stack_id": self.args['stack_id'],
|
"stack_id": self.args['stack_id'],
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# Only add locations if we have it (no need for an empty object)
|
||||||
|
locations = self.args.get('locations')
|
||||||
|
if locations:
|
||||||
|
self.request['locations'] = locations
|
||||||
|
|
||||||
if resources_update:
|
if resources_update:
|
||||||
# If we get any status in the response, it's an error. Bail.
|
# If we get any status in the response, it's an error. Bail.
|
||||||
self.response = self._prepare_resources(resources_update)
|
self.response = self._prepare_resources(resources_update)
|
||||||
|
@ -27,6 +27,7 @@ from valet.api import LOG
|
|||||||
|
|
||||||
|
|
||||||
CREATE_SCHEMA = (
|
CREATE_SCHEMA = (
|
||||||
|
(decorators.optional('locations'), types.array),
|
||||||
('plan_name', types.string),
|
('plan_name', types.string),
|
||||||
('resources', types.dictionary),
|
('resources', types.dictionary),
|
||||||
('stack_id', types.string),
|
('stack_id', types.string),
|
||||||
@ -237,7 +238,7 @@ class PlansController(object):
|
|||||||
|
|
||||||
kwargs = {
|
kwargs = {
|
||||||
'tenant_id': request.context['tenant_id'],
|
'tenant_id': request.context['tenant_id'],
|
||||||
'args': args
|
'args': args,
|
||||||
}
|
}
|
||||||
|
|
||||||
# Prepare the request. If request prep fails,
|
# Prepare the request. If request prep fails,
|
||||||
|
Loading…
x
Reference in New Issue
Block a user