diff --git a/gabbi_tempest/tests/scenario/__init__.py b/gabbi_tempest/tests/scenario/__init__.py index e169097..ebc83bf 100755 --- a/gabbi_tempest/tests/scenario/__init__.py +++ b/gabbi_tempest/tests/scenario/__init__.py @@ -49,6 +49,8 @@ class GenericGabbiTest(tempest.test.BaseTestCase): name = '%s_BASE' % service_type.upper() os.environ[name] = '://'.join(urlparse.urlparse(url)[0:2]) os.environ['SERVICE_TOKEN'] = token + os.environ['IMAGE_REF'] = CONF.compute.image_ref + os.environ['FLAVOR_REF'] = CONF.compute.flavor_ref if cls.service_type in endpoints: host = None @@ -105,18 +107,9 @@ class GenericGabbiTest(tempest.test.BaseTestCase): class NovaGabbiTest(GenericGabbiTest): credentials = ['admin'] - # NOTE(cdent): WTF? 'nova' being the thing in service_available? - # Boo! service_name = 'nova' service_type = 'compute' - @classmethod - def resource_setup(cls): - super(NovaGabbiTest, cls).resource_setup() - # TODO(cdent): not very generic! - os.environ['IMAGE_REF'] = CONF.compute.image_ref - os.environ['FLAVOR_REF'] = CONF.compute.flavor_ref - class GlanceGabbiTest(GenericGabbiTest): credentials = ['admin'] diff --git a/gabbi_tempest/tests/scenario/gabbits/multi/base.yaml b/gabbi_tempest/tests/scenario/gabbits/multi/base.yaml index c7b6e62..52280e6 100644 --- a/gabbi_tempest/tests/scenario/gabbits/multi/base.yaml +++ b/gabbi_tempest/tests/scenario/gabbits/multi/base.yaml @@ -6,6 +6,19 @@ defaults: accept: application/json openstack-api-version: 'compute latest, placement latest' +# These replace full nodes, there is no YAML interpolation +# Experimenting with using YAML anchors to avoid repeating long expansions +# within the tests. +vars: + - &cn1_rp $ENVIRON['PLACEMENT_SERVICE']/resource_providers/$HISTORY['list hypervisors'].$RESPONSE['$.hypervisors[0].id'] + - &cn1_inv $ENVIRON['PLACEMENT_SERVICE']/resource_providers/$HISTORY['list hypervisors'].$RESPONSE['$.hypervisors[0].id']/inventories + - &cn1_alloc $ENVIRON['PLACEMENT_SERVICE']/resource_providers/$HISTORY['list hypervisors'].$RESPONSE['$.hypervisors[0].id']/allocations + - &cn1_usages $ENVIRON['PLACEMENT_SERVICE']/resource_providers/$HISTORY['list hypervisors'].$RESPONSE['$.hypervisors[0].id']/usages + + - &s1_id $HISTORY['get server'].$RESPONSE['$.server.id'] + - &s1_url $ENVIRON['COMPUTE_SERVICE']/servers/$HISTORY['get server'].$RESPONSE['$.server.id'] + - &s1_alloc $ENVIRON['PLACEMENT_SERVICE']/allocations/$HISTORY['get server'].$RESPONSE['$.server.id'] + tests: - name: list hypervisors @@ -18,9 +31,50 @@ tests: response_json_paths: $.uuid: $RESPONSE['$.hypervisors[0].id'] - - name: blargh inventory - verbose: True - GET: $ENVIRON['PLACEMENT_BASE']$RESPONSE['$.links[?rel=inventories].href'] + - name: confirm inventory + GET: *cn1_inv response_json_paths: $.inventories.VCPU.allocation_ratio: 16 + - &cn1_zero + name: confirm empty allocation + GET: *cn1_alloc + response_json_paths: + $.allocations.`len`: 0 + + - name: create server + POST: $ENVIRON['COMPUTE_SERVICE']/servers + data: + server: + name: new-server-one + networks: auto + imageRef: $ENVIRON['IMAGE_REF'] + flavorRef: $ENVIRON['FLAVOR_REF'] + status: 202 + + - name: get server + GET: $LOCATION + + - name: watch allocations + verbose: True + GET: *s1_alloc + poll: + count: 4 + delay: 1 + response_json_paths: + $.allocations.["$HISTORY['list hypervisors'].$RESPONSE['$.hypervisors[0].id']"].resources: + VCPU: 1 + MEMORY_MB: 64 + +### Clean Up + + - name: delete server + DELETE: *s1_url + status: 204 + + - name: reconfirm empty allocation + <<: *cn1_zero + verbose: True + poll: + count: 10 + delay: 1