We are amped to announce the release of: ironic-inspector 3.1.0: Hardware introspection for OpenStack Bare Metal This release is part of the mitaka release series. With source available at: http://git.openstack.org/cgit/openstack/ironic-inspector Please report issues through launchpad: http://bugs.launchpad.net/ironic-inspector For more details, please see below. 3.1.0 ^^^^^ New Features ************ * Introduced API "POST /v1/introspection/<UUID>/abort" for aborting the introspection process. * New condition plugins "contains" and "matches" allow to match value against regular expressions. * Added new condition plugin "is-empty", which allows to match empty string, list, dictionary or None. * Add a new node_not_found hook - enroll, which allows automatically discover Ironic's node. * Conditions now support comparing fields from node info; * Actions support formatting to fetch values from introspection data. See http://docs.openstack.org/developer/ironic- inspector/usage.html #introspection-rules * Introspection rules conditions got a new generic "invert" parameter that inverts the result of the condition. Upgrade Notes ************* * Switch required Ironic API version to '1.11', which supports 'enroll' state. * Minimum possible value for the "max_concurrency" setting is now 2. * Removed deprecated support for passing "node_patches" and "ports_patches" arguments to processing hooks. * Ramdisk logs are no longer part of data stored to Swift and returned by the API. * Introspection rules actions 'set-attribute', 'set-capability' and 'extend-attribute' no longer have the opposite effect on nodes that do not match a rule. Deprecation Notes ***************** * The rollback actions for introspection rules are deprecated. No in- tree actions are using them, 3rdpart should stop using them as soon as possible. * Using the root_device_hint alias for the raid_device plugin is deprecated. Bug Fixes ********* * Fixed extra_hardware plugin connection to Swift. * Only issue iptables calls when list of active MAC's changes. * Dropped rollback actions from 'set-attribute', 'set-capability' and 'extend-attribute' introspection rules actions, as they were confusing, completely undocumented and broke some real world use cases (e.g. setting driver field). * Introspection rules (e.g. set-attribute action) now accept 'path' field without leading forward slash as Ironic cli does. Other Notes *********** * Switched to Futurist library for asynchronous tasks. * Log level for error when node was not found in Inspector cache was changed from error to info level. It was done because not_found_hook may handle this case, so this wouldn't be error anymore. Changes in ironic-inspector 3.0.0..3.1.0 ---------------------------------------- dab4217 Allow specify log level for Error exception 8688bb3 Updated from global requirements bc1d71f Deprecate root_device_hint name for raid_device plugin eb9891b Remove redundant data copying in tests dfddcd5 Update the troubleshooting guide 3471ec9 Officially deprecate rollback for introspection rules 3975337 Generate API documentation from Python modules 2597501 Fixed warnings during the docs build 8b07533 Refactor service init, shutdown and run into a separate class 48aa522 Fix incorrect string formatting in the SSL code 51f5690 Refactor base test classes b804efe Move ironic options to common/ironic b71a3d9 Use dedicated config file for config generator 2f8e105 Recommend using dhcp-sequential-ip in the dnsmasq configuration e8ecb99 Correct method call to to_dict 5b02024 Use futurist library for asynchronous tasks 59e0f92 [devstack] Improve virtual machines logs 0f8b5de Split ironic-related functions from utils to separate common.ironic module a5c8c2a Add db migrations tests cb83e95 Clarify that we don't maintain compatibility for stored data 5086d93 Add enroll_node_not_found hook 8a0b514 Logging configuration options at startup b5fd510 Add invert option to rule conditions bbe44d2 Updated from global requirements f6c60eb Updated from global requirements d8de403 Fix gate broken by sudden remove of SERVICE_TENANT_NAME variable 061d839 Add new condition: is-empty a181378 Updated from global requirements bf86545 Extend conditions and actions ea93510 Small ValidateInterfacesHook cleanup 31f7a5a Drop rollback actions for set-XX and extend-XX rules actions f56bf0c Do not set Swift parameters defaults in keyword arguments e86cec3 Stop storing ramdisk logs with the introspection data b49021b Expand instructions for DNS on Ubuntu 61d0b85 Always generate fresh uuid in test cases 11899a1 Updated from global requirements 17274a6 Add forward slash for node path patch 7cbbd2d Remove "ramdisk" mentioning in func test contrib 7a3d937 Introduce API for aborting introspection daa20e2 Do not update firewall rules if list of MAC's did not change 88bac30 Update example.conf cc422c0 Remove deprecated support for passing patches lists into hooks c926e1e [devstack] Use the coreos builder for the source build of the ramdisk 40c17e3 Enable Keystone v3 endpoints for Inspector 7ee29da Register the keystone service and endpoint in the devstack plugin 800dedc Clean up documentation on introspection rules conditions c5a2dd6 Updated from global requirements b28f1a7 Update translation setup 6dd0de0 Use new introspection data save command in exercise.sh 7477959 Set timeout in gate to 10 minutes 570fd43 Updated from global requirements d6ff54f Add new conditions: matches and contains f34b1aa Updated from global requirements cdf2287 Check whether agent tarball exists Diffstat (except docs and test files) ------------------------------------- .gitignore | 1 + CONTRIBUTING.rst | 17 +- config-generator.conf | 9 + devstack/exercise.sh | 2 +- devstack/plugin.sh | 39 ++- example.conf | 134 +++----- .../locale/ironic-inspector-log-critical.pot | 39 --- .../locale/ironic-inspector-log-error.pot | 55 --- .../locale/ironic-inspector-log-info.pot | 86 ----- .../locale/ironic-inspector-log-warning.pot | 91 ----- ironic-inspector/locale/ironic-inspector.pot | 220 ------------ ironic_inspector/common/i18n.py | 2 +- ironic_inspector/common/ironic.py | 176 ++++++++++ ironic_inspector/common/swift.py | 47 ++- ironic_inspector/conf.py | 62 +--- ironic_inspector/db.py | 1 + ironic_inspector/dbsync.py | 8 +- ironic_inspector/firewall.py | 20 +- ironic_inspector/introspect.py | 66 +++- ironic_inspector/main.py | 219 +++++++----- ...9a4a81d88_add_invert_field_to_rule_condition.py | 37 ++ ironic_inspector/node_cache.py | 38 ++- ironic_inspector/plugins/base.py | 17 +- ironic_inspector/plugins/discovery.py | 102 ++++++ ironic_inspector/plugins/example.py | 3 - ironic_inspector/plugins/raid_device.py | 7 + ironic_inspector/plugins/rules.py | 55 +-- ironic_inspector/plugins/standard.py | 71 ++-- ironic_inspector/process.py | 42 ++- ironic_inspector/rules.py | 85 ++++- ironic_inspector/test/base.py | 67 ++-- ironic_inspector/test/functional.py | 87 ++++- ironic_inspector/test/test_common_ironic.py | 118 +++++++ ironic_inspector/test/test_firewall.py | 56 ++- ironic_inspector/test/test_introspect.py | 113 +++++- ironic_inspector/test/test_main.py | 111 +++--- ironic_inspector/test/test_migrations.py | 380 +++++++++++++++++++++ ironic_inspector/test/test_node_cache.py | 135 ++++++-- ironic_inspector/test/test_plugins_discovery.py | 128 +++++++ ironic_inspector/test/test_plugins_rules.py | 95 +++--- ironic_inspector/test/test_plugins_standard.py | 12 +- ironic_inspector/test/test_process.py | 82 +++-- ironic_inspector/test/test_rules.py | 105 +++++- ironic_inspector/test/test_swift.py | 12 + ironic_inspector/test/test_utils.py | 115 +------ ironic_inspector/utils.py | 114 +------ .../abort-introspection-ae5cb5a9fbacd2ac.yaml | 4 + .../notes/contains-matches-ee28958b08995494.yaml | 4 + .../notes/deprecate-rollback-dea95ac515d3189b.yaml | 4 + ...eprecate-root-device-hint-909d389b7efed5da.yaml | 3 + .../notes/empty-condition-abc707b771be6be3.yaml | 4 + .../notes/enroll-hook-d8c32eba70848210.yaml | 6 + .../notes/extend-rules-9a9d38701e970611.yaml | 5 + .../extra-hardware-swift-aeebf299b9605bb0.yaml | 3 + releasenotes/notes/futurist-557fcd18d4eaf1c1.yaml | 5 + .../googbye-patches-args-071532024b9260bd.yaml | 4 + .../less-iptables-calls-759e89d103df504c.yaml | 3 + ...nfo-not-found-cache-error-afbc87e80305ca5c.yaml | 5 + .../no-logs-stored-data-6db52934c7f9a91a.yaml | 4 + .../notes/no-rollback-e15bc7fee0134545.yaml | 10 + .../patch-head-backslash-24bcdd03ba254bf2.yaml | 4 + .../notes/rules-invert-2585173a11db3c31.yaml | 4 + requirements.txt | 13 +- setup.cfg | 23 +- test-requirements.txt | 4 + tox.ini | 9 +- 71 files changed, 2425 insertions(+), 1361 deletions(-) Requirements updates -------------------- diff --git a/requirements.txt b/requirements.txt index ca0b5f0..fb076cf 100644 --- a/requirements.txt +++ b/requirements.txt @@ -6 +6 @@ Babel>=1.3 # BSD -eventlet>=0.17.4 # MIT +eventlet!=0.18.3,>=0.18.2 # MIT @@ -7,0 +8 @@ Flask<1.0,>=0.10 # BSD +futurist>=0.11.0 # Apache-2.0 @@ -13 +14 @@ pbr>=1.6 # Apache-2.0 -python-ironicclient>=0.8.0 # Apache-2.0 +python-ironicclient>=1.1.0 # Apache-2.0 @@ -16,2 +17,2 @@ python-swiftclient>=2.2.0 # Apache-2.0 -oslo.concurrency>=2.3.0 # Apache-2.0 -oslo.config>=3.2.0 # Apache-2.0 +oslo.concurrency>=3.5.0 # Apache-2.0 +oslo.config>=3.7.0 # Apache-2.0 @@ -19 +20 @@ oslo.db>=4.1.0 # Apache-2.0 -oslo.i18n>=1.5.0 # Apache-2.0 +oslo.i18n>=2.1.0 # Apache-2.0 @@ -22 +23 @@ oslo.rootwrap>=2.0.0 # Apache-2.0 -oslo.utils>=3.4.0 # Apache-2.0 +oslo.utils>=3.5.0 # Apache-2.0 diff --git a/test-requirements.txt b/test-requirements.txt index 87e394c..c77cbb7 100644 --- a/test-requirements.txt +++ b/test-requirements.txt @@ -10,0 +11,4 @@ reno>=0.1.1 # Apache2 +fixtures>=1.3.1 # Apache-2.0/BSD +testresources>=0.2.4 # Apache-2.0/BSD +testscenarios>=0.4 # Apache-2.0/BSD +oslotest>=1.10.0 # Apache-2.0