Make capsule support availability zone

Change-Id: I38ade7d16bbbebb0bd1504691e6a2ace9bbadae8
This commit is contained in:
Hongbin Lu 2018-03-31 20:44:01 +00:00
parent 6b7f1640ce
commit d047616bbe
5 changed files with 11 additions and 3 deletions

View File

@ -6,6 +6,7 @@ metadata:
labels: labels:
foo: bar foo: bar
restartPolicy: always restartPolicy: always
availabilityZone: nova
spec: spec:
containers: containers:
- image: test - image: test

View File

@ -7,6 +7,7 @@ metadata:
app: web app: web
app1: web1 app1: web1
restartPolicy: always restartPolicy: always
availabilityZone: nova
spec: spec:
containers: containers:
- image: ubuntu - image: ubuntu

View File

@ -167,6 +167,11 @@ class CapsuleController(base.Controller):
new_capsule.meta_name = metadata_info.get('name', None) new_capsule.meta_name = metadata_info.get('name', None)
new_capsule.meta_labels = metadata_info.get('labels', None) new_capsule.meta_labels = metadata_info.get('labels', None)
extra_spec = {}
az_info = template_json.get('availabilityZone')
if az_info:
extra_spec['availability_zone'] = az_info
# Generate Object for infra container # Generate Object for infra container
sandbox_container = objects.Container(context) sandbox_container = objects.Container(context)
sandbox_container.project_id = context.project_id sandbox_container.project_id = context.project_id
@ -245,7 +250,7 @@ class CapsuleController(base.Controller):
new_capsule.memory = str(capsule_need_memory) + 'M' new_capsule.memory = str(capsule_need_memory) + 'M'
new_capsule.save(context) new_capsule.save(context)
compute_api.capsule_create(context, new_capsule, requested_networks, compute_api.capsule_create(context, new_capsule, requested_networks,
requested_volumes) requested_volumes, extra_spec)
# Set the HTTP Location Header # Set the HTTP Location Header
pecan.response.location = link.build_url('capsules', pecan.response.location = link.build_url('capsules',
new_capsule.uuid) new_capsule.uuid)

View File

@ -472,6 +472,7 @@ capsule_template = {
"metadata": capsule_metadata, "metadata": capsule_metadata,
"restartPolicy": capsule_restart_policy, "restartPolicy": capsule_restart_policy,
"spec": capsule_spec, "spec": capsule_spec,
"availabilityZone": availability_zone,
}, },
"additionalProperties": False, "additionalProperties": False,
"required": ['kind', 'spec', 'metadata'] "required": ['kind', 'spec', 'metadata']

View File

@ -187,8 +187,8 @@ class API(object):
return self.rpcapi.image_search(context, image, image_driver, return self.rpcapi.image_search(context, image, image_driver,
exact_match, *args) exact_match, *args)
def capsule_create(self, context, new_capsule, requested_networks=None, def capsule_create(self, context, new_capsule, requested_networks,
requested_volumes=None, extra_spec=None): requested_volumes, extra_spec):
try: try:
host_state = self._schedule_container(context, new_capsule, host_state = self._schedule_container(context, new_capsule,
extra_spec) extra_spec)