Add test for compute server external event API
Adding test as well as the service client for the compute server external event API - https://docs.openstack.org/api-ref/compute/?expanded=run-events-detail#run-events Change-Id: I1c9a99d036de760a15a5725db87ca4e9d6f2263d
This commit is contained in:
parent
2c6da1db39
commit
81bd0e9e19
@ -0,0 +1,5 @@
|
||||
---
|
||||
features:
|
||||
- |
|
||||
The ``server_external_events`` tempest client for compute
|
||||
Server External Events API is implemented in this release.
|
37
tempest/api/compute/admin/test_server_external_events.py
Normal file
37
tempest/api/compute/admin/test_server_external_events.py
Normal file
@ -0,0 +1,37 @@
|
||||
# Copyright 2022 NEC Corporation. All rights reserved.
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License"); you may
|
||||
# not use this file except in compliance with the License. You may obtain
|
||||
# a copy of the License at
|
||||
#
|
||||
# http://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
||||
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
|
||||
# License for the specific language governing permissions and limitations
|
||||
# under the License.
|
||||
|
||||
from tempest.api.compute import base
|
||||
from tempest.lib import decorators
|
||||
|
||||
|
||||
class ServerExternalEventsTest(base.BaseV2ComputeAdminTest):
|
||||
"""Test server external events test"""
|
||||
|
||||
@decorators.idempotent_id('6bbf4723-61d2-4372-af55-7ba27f1c9ba6')
|
||||
def test_create_server_external_events(self):
|
||||
"""Test create a server and add some external events"""
|
||||
server_id = self.create_test_server(wait_until='ACTIVE')['id']
|
||||
events = [
|
||||
{
|
||||
"name": "network-changed",
|
||||
"server_uuid": server_id,
|
||||
}
|
||||
]
|
||||
client = self.os_admin.server_external_events_client
|
||||
events_resp = client.create_server_external_events(
|
||||
events=events)['events'][0]
|
||||
self.assertEqual(server_id, events_resp['server_uuid'])
|
||||
self.assertEqual('network-changed', events_resp['name'])
|
||||
self.assertEqual(200, events_resp['code'])
|
@ -144,6 +144,8 @@ class Manager(clients.ServiceClients):
|
||||
self.tenant_networks_client = self.compute.TenantNetworksClient()
|
||||
self.assisted_volume_snapshots_client = (
|
||||
self.compute.AssistedVolumeSnapshotsClient())
|
||||
self.server_external_events_client = (
|
||||
self.compute.ServerExternalEventsClient())
|
||||
|
||||
# NOTE: The following client needs special timeout values because
|
||||
# the API is a proxy for the other component.
|
||||
|
@ -0,0 +1,55 @@
|
||||
# Copyright 2022 NEC Corporation. All rights reserved.
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License"); you may
|
||||
# not use this file except in compliance with the License. You may obtain
|
||||
# a copy of the License at
|
||||
#
|
||||
# http://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
||||
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
|
||||
# License for the specific language governing permissions and limitations
|
||||
# under the License.
|
||||
|
||||
create = {
|
||||
'status_code': [200],
|
||||
'response_body': {
|
||||
'type': 'object',
|
||||
'properties': {
|
||||
'events': {
|
||||
'type': 'array', 'minItems': 1,
|
||||
'items': {
|
||||
'type': 'object',
|
||||
'properties': {
|
||||
'server_uuid': {
|
||||
'type': 'string', 'format': 'uuid'
|
||||
},
|
||||
'name': {
|
||||
'type': 'string',
|
||||
'enum': [
|
||||
'network-changed',
|
||||
'network-vif-plugged',
|
||||
'network-vif-unplugged',
|
||||
'network-vif-deleted'
|
||||
],
|
||||
},
|
||||
'status': {
|
||||
'type': 'string',
|
||||
'enum': ['failed', 'completed', 'in-progress'],
|
||||
},
|
||||
'tag': {
|
||||
'type': 'string', 'maxLength': 255,
|
||||
},
|
||||
'code': {'type': 'integer'},
|
||||
},
|
||||
'required': [
|
||||
'server_uuid', 'name', 'code'],
|
||||
'additionalProperties': False,
|
||||
},
|
||||
},
|
||||
},
|
||||
'required': ['events'],
|
||||
'additionalProperties': False,
|
||||
}
|
||||
}
|
@ -52,6 +52,8 @@ from tempest.lib.services.compute.security_group_rules_client import \
|
||||
SecurityGroupRulesClient
|
||||
from tempest.lib.services.compute.security_groups_client import \
|
||||
SecurityGroupsClient
|
||||
from tempest.lib.services.compute.server_external_events_client \
|
||||
import ServerExternalEventsClient
|
||||
from tempest.lib.services.compute.server_groups_client import \
|
||||
ServerGroupsClient
|
||||
from tempest.lib.services.compute.servers_client import ServersClient
|
||||
@ -75,6 +77,6 @@ __all__ = ['AgentsClient', 'AggregatesClient', 'AssistedVolumeSnapshotsClient',
|
||||
'MigrationsClient', 'NetworksClient', 'QuotaClassesClient',
|
||||
'QuotasClient', 'SecurityGroupDefaultRulesClient',
|
||||
'SecurityGroupRulesClient', 'SecurityGroupsClient',
|
||||
'ServerGroupsClient', 'ServersClient', 'ServicesClient',
|
||||
'SnapshotsClient', 'TenantNetworksClient', 'TenantUsagesClient',
|
||||
'VersionsClient', 'VolumesClient']
|
||||
'ServerExternalEventsClient', 'ServerGroupsClient', 'ServersClient',
|
||||
'ServicesClient', 'SnapshotsClient', 'TenantNetworksClient',
|
||||
'TenantUsagesClient', 'VersionsClient', 'VolumesClient']
|
||||
|
@ -0,0 +1,36 @@
|
||||
# Copyright 2022 NEC Corporation. All rights reserved.
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License"); you may
|
||||
# not use this file except in compliance with the License. You may obtain
|
||||
# a copy of the License at
|
||||
#
|
||||
# http://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
||||
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
|
||||
# License for the specific language governing permissions and limitations
|
||||
# under the License.
|
||||
|
||||
from oslo_serialization import jsonutils as json
|
||||
|
||||
from tempest.lib.api_schema.response.compute.v2_1 import \
|
||||
server_external_events as schema
|
||||
from tempest.lib.common import rest_client
|
||||
from tempest.lib.services.compute import base_compute_client
|
||||
|
||||
|
||||
class ServerExternalEventsClient(base_compute_client.BaseComputeClient):
|
||||
|
||||
def create_server_external_events(self, events):
|
||||
"""Create Server External Events.
|
||||
|
||||
For a full list of available parameters, please refer to the official
|
||||
API reference:
|
||||
https://docs.openstack.org/api-ref/compute/#run-events
|
||||
"""
|
||||
post_body = json.dumps({'events': events})
|
||||
resp, body = self.post("os-server-external-events", post_body)
|
||||
body = json.loads(body)
|
||||
self.validate_response(schema.create, resp, body)
|
||||
return rest_client.ResponseBody(resp, body)
|
@ -0,0 +1,56 @@
|
||||
# Copyright 2022 NEC Corporation. All rights reserved.
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License"); you may
|
||||
# not use this file except in compliance with the License. You may obtain
|
||||
# a copy of the License at
|
||||
#
|
||||
# http://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
||||
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
|
||||
# License for the specific language governing permissions and limitations
|
||||
# under the License.
|
||||
|
||||
from tempest.lib.services.compute import server_external_events_client
|
||||
from tempest.tests.lib import fake_auth_provider
|
||||
from tempest.tests.lib.services import base
|
||||
|
||||
|
||||
class TestServerExternalEventsClient(base.BaseServiceTest):
|
||||
|
||||
events = [
|
||||
{
|
||||
"code": 200,
|
||||
"name": "network-changed",
|
||||
"server_uuid": "ff1df7b2-6772-45fd-9326-c0a3b05591c2",
|
||||
"status": "completed",
|
||||
"tag": "foo"
|
||||
}
|
||||
]
|
||||
|
||||
events_req = [
|
||||
{
|
||||
"name": "network-changed",
|
||||
"server_uuid": "ff1df7b2-6772-45fd-9326-c0a3b05591c2",
|
||||
}
|
||||
]
|
||||
|
||||
def setUp(self):
|
||||
super(TestServerExternalEventsClient, self).setUp()
|
||||
fake_auth = fake_auth_provider.FakeAuthProvider()
|
||||
self.client = server_external_events_client.ServerExternalEventsClient(
|
||||
fake_auth, 'compute', 'regionOne')
|
||||
|
||||
def _test_create_server_external_events(self, bytes_body=False):
|
||||
expected = {"events": self.events}
|
||||
self.check_service_client_function(
|
||||
self.client.create_server_external_events,
|
||||
'tempest.lib.common.rest_client.RestClient.post', expected,
|
||||
bytes_body, events=self.events_req)
|
||||
|
||||
def test_create_server_external_events_str_body(self):
|
||||
self._test_create_server_external_events(bytes_body=False)
|
||||
|
||||
def test_create_server_external_events_byte_body(self):
|
||||
self._test_create_server_external_events(bytes_body=True)
|
Loading…
Reference in New Issue
Block a user