Add Events support
Adds support to POST events to the /v1/events API endpoint. Updates LAST_KNOWN_API_VERSION to 51. Co-Authored-By: Harald Jensås <hjensas@redhat.com> Story: 1304673 Task: 22149 Depends-On: https://review.openstack.org/631946 Change-Id: I6bc2d711687350ee3000b6898b68c3d05db62260
This commit is contained in:
parent
d15877f0fb
commit
e8a6d447f8
@ -43,7 +43,7 @@ from ironicclient import exc
|
|||||||
# http://specs.openstack.org/openstack/ironic-specs/specs/kilo/api-microversions.html # noqa
|
# http://specs.openstack.org/openstack/ironic-specs/specs/kilo/api-microversions.html # noqa
|
||||||
# for full details.
|
# for full details.
|
||||||
DEFAULT_VER = '1.9'
|
DEFAULT_VER = '1.9'
|
||||||
LAST_KNOWN_API_VERSION = 50
|
LAST_KNOWN_API_VERSION = 54
|
||||||
LATEST_VERSION = '1.{}'.format(LAST_KNOWN_API_VERSION)
|
LATEST_VERSION = '1.{}'.format(LAST_KNOWN_API_VERSION)
|
||||||
|
|
||||||
LOG = logging.getLogger(__name__)
|
LOG = logging.getLogger(__name__)
|
||||||
|
58
ironicclient/tests/unit/v1/test_events.py
Normal file
58
ironicclient/tests/unit/v1/test_events.py
Normal file
@ -0,0 +1,58 @@
|
|||||||
|
# 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.
|
||||||
|
|
||||||
|
import testtools
|
||||||
|
|
||||||
|
from ironicclient.tests.unit import utils
|
||||||
|
from ironicclient.v1 import events
|
||||||
|
|
||||||
|
FAKE_EVENT = {"event": "type.event"}
|
||||||
|
FAKE_NETWORK_PORT_EVENT = {
|
||||||
|
'event': "network.bind_port",
|
||||||
|
'port_id': '11111111-aaaa-bbbb-cccc-555555555555',
|
||||||
|
'mac_address': 'de:ad:ca:fe:ba:be',
|
||||||
|
'status': 'ACTIVE',
|
||||||
|
'device_id': '22222222-aaaa-bbbb-cccc-555555555555',
|
||||||
|
'binding:host_id': '22222222-aaaa-bbbb-cccc-555555555555',
|
||||||
|
'binding:vnic_type': 'baremetal',
|
||||||
|
}
|
||||||
|
FAKE_EVENTS = {'events': [FAKE_EVENT]}
|
||||||
|
FAKE_NETWORK_PORT_EVENTS = {'events': [FAKE_NETWORK_PORT_EVENT]}
|
||||||
|
|
||||||
|
fake_responses = {
|
||||||
|
'/v1/events':
|
||||||
|
{
|
||||||
|
'POST': (
|
||||||
|
{},
|
||||||
|
None
|
||||||
|
)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
class EventManagerTest(testtools.TestCase):
|
||||||
|
def setUp(self):
|
||||||
|
super(EventManagerTest, self).setUp()
|
||||||
|
self.api = utils.FakeAPI(fake_responses)
|
||||||
|
self.mgr = events.EventManager(self.api)
|
||||||
|
|
||||||
|
def test_event(self):
|
||||||
|
evts = self.mgr.create(**FAKE_EVENTS)
|
||||||
|
expect = [('POST', '/v1/events', {}, FAKE_EVENTS)]
|
||||||
|
self.assertEqual(expect, self.api.calls)
|
||||||
|
self.assertIsNone(evts)
|
||||||
|
|
||||||
|
def test_network_port_event(self):
|
||||||
|
evts = self.mgr.create(**FAKE_NETWORK_PORT_EVENTS)
|
||||||
|
expect = [('POST', '/v1/events', {}, FAKE_NETWORK_PORT_EVENTS)]
|
||||||
|
self.assertEqual(expect, self.api.calls)
|
||||||
|
self.assertIsNone(evts)
|
@ -23,6 +23,7 @@ from ironicclient import exc
|
|||||||
from ironicclient.v1 import chassis
|
from ironicclient.v1 import chassis
|
||||||
from ironicclient.v1 import conductor
|
from ironicclient.v1 import conductor
|
||||||
from ironicclient.v1 import driver
|
from ironicclient.v1 import driver
|
||||||
|
from ironicclient.v1 import events
|
||||||
from ironicclient.v1 import node
|
from ironicclient.v1 import node
|
||||||
from ironicclient.v1 import port
|
from ironicclient.v1 import port
|
||||||
from ironicclient.v1 import portgroup
|
from ironicclient.v1 import portgroup
|
||||||
@ -99,6 +100,7 @@ class Client(object):
|
|||||||
self.driver = driver.DriverManager(self.http_client)
|
self.driver = driver.DriverManager(self.http_client)
|
||||||
self.portgroup = portgroup.PortgroupManager(self.http_client)
|
self.portgroup = portgroup.PortgroupManager(self.http_client)
|
||||||
self.conductor = conductor.ConductorManager(self.http_client)
|
self.conductor = conductor.ConductorManager(self.http_client)
|
||||||
|
self.events = events.EventManager(self.http_client)
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def current_api_version(self):
|
def current_api_version(self):
|
||||||
|
29
ironicclient/v1/events.py
Normal file
29
ironicclient/v1/events.py
Normal file
@ -0,0 +1,29 @@
|
|||||||
|
#
|
||||||
|
# Copyright 2016 Mirantis, Inc.
|
||||||
|
# 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 ironicclient.common import base
|
||||||
|
|
||||||
|
|
||||||
|
class Event(base.Resource):
|
||||||
|
def __repr__(self):
|
||||||
|
return "<Event: %s>" % self.name
|
||||||
|
|
||||||
|
|
||||||
|
class EventManager(base.CreateManager):
|
||||||
|
resource_class = Event
|
||||||
|
_creation_attributes = ['events']
|
||||||
|
_resource_name = 'events'
|
12
releasenotes/notes/add-events-support-53c461d28abf010b.yaml
Normal file
12
releasenotes/notes/add-events-support-53c461d28abf010b.yaml
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
---
|
||||||
|
features:
|
||||||
|
- |
|
||||||
|
Added ``Event`` resource , used to notify Ironic of external events.
|
||||||
|
|
||||||
|
.. Note:: Events are not intended for end-user usage. (Internal use only.)
|
||||||
|
- |
|
||||||
|
Added the ``client.events.create`` Python SDK method to support publishing
|
||||||
|
events to Ironic using the /v1/events API endpoint.
|
||||||
|
(available starting with API version 1.54).
|
||||||
|
|
||||||
|
.. Note:: Events are not intended for end-user usage. (Internal use only.)
|
Loading…
Reference in New Issue
Block a user