- set/unset node tags
- get node tags
- add/delete single tag
- check whether node tag exists
- Delete all tags attached to the node when it's destroyed
This will not support creating node with tags, just ignore
the specified tags.
Change-Id: Ibe83a726d904fd33b8550c8bec134cf05644560e
Partial-bug: #1526266
This change switches the conductor to using Futurist library executor and
periodic tasks worker instead of oslo.service periodic tasks. This allows
running periodic tasks in parallel and relying on more standard interfaces
(futures, executors) when dealing with asynchronous execution.
A green thread executor is used instead of using an eventlet green pool
directly. The maximum number of workers is taken from the existing
workers_pool_size configuration option, and no tasks are allowed
to be enqueued to mimic the previous behaviour (might be lifted later).
The periodic tasks worker is using the same executor, and its main loop thread
is also running on it. For this reason minimum value for workers_pool_size
is now 3: periodic task main loop, keep alive thread and at least one thread for
other tasks. A special decorator for driver-periodic tasks is now deprecated,
as the generic decorator can be used there as well.
Closes-Bug: #1526277
Change-Id: I57bf7cebfb6db805b6c521bacfef2993b16ce1ee
Automated cleaning fails for iLO driver if iLO is in System POST
state. iLO does not allow setting of boot device when it is in
System POST state. Node needs to be powered off before initiating
boot for cleaning.
Closes-Bug: 1536730
Change-Id: Icd0f39d718aabdcad56636e662dec788c4e1b427
During cleaning, we keep the list of clean steps in the node's
driver_internal_info['clean_steps']. node.clean_step is the current
clean step being performed and is a copy of a clean step in the list.
This change adds a driver_internal_info['clean_step_index'] that
is an index into the list; it corresponds to node.clean_step.
This addresses an issue in the code where a clean step that occurs
more than once in the list would cause cleaning to loop forever.
Change-Id: Ibbb3a0239bb288eb3d2d3c60fc8ddd1a16e2927a
Closes-Bug: #1536276
It provides cleaner per-tests config objects, with more options to
configure the fixture.
Also, allow overriding config fixture in particular test cases if
needed.
Change-Id: I288c5d661a4918feac15a169eaaa521fd2e69284
The error messages from InstanceDeploy did not have the node.uuid
Update the unit test to ensure the node.uuid is present in the error
message.
Change-Id: Iaafd00a6b86655a99efa63e7163966abc946c6f5
The `default` parameter to Column() doesn't have any effect on existing
rows, therefore when this migration runs it is set to NULL. After adding
the column, update existing ports in the database to have
pxe_enabled=True, which maintains behavior before this column was added.
Closes-Bug: #1545068
Change-Id: Ibee65fbe26d89d27925a2202795d38461ec60f1f
It was only 'sha1' algorithm being used till now in ``hash_file``
method to create hash of the file contents. Need to add 'md5'
to keep the consistency with that of IPA code base. Also, this
method now supports all the algorithms hashlib does. As this
method wasn't being used at all, therefore making the default
algorithm to 'md5'. Will be used in oob firmware update (manual
clean step) to verify the checksum of the images.
Change-Id: I8159fd64d1c074bd539817a40900e34f8fae30d4
This module enables iRMC out-of-band hardware inspection for FUJITSU
PRIMERGY bare metal nodes having iRMC S4 and beyond.
Change-Id: I8f406a9beb3fd3c01b15f764211ffd18494464f6
Closes-Bug: #1525108
Since we have automated cleaning and manual cleaning, the config
'clean_nodes' is a bit confusing since it only refers to automated
cleaning. It is replaced with 'automated_clean'.
This deprecates the 'clean_nodes' config; the plan is to delete it
in Newton cycle.
Updates to the documentation to explicitly mention automated vs
manual cleaning is done in a separate patch.
This includes a reno-style release note about the upgrade impact.
Change-Id: I5b4fbac1753cb4213eb151b663490f381b751597
Partial-Bug: #1526290
In order to make getting clean steps a synchronous call, instead of
one that blocks on communication with the agent, the agent clean steps
are cached in the node's driver_internal_info. Any time cleaning is
started, the steps will be fetched from the agent and cached.
This is needed for the 'GET /nodes/<node_ident>/cleaning/steps'
API, which is not yet implemented but see the spec:
(http://specs.openstack.org/openstack/ironic-specs/specs/approved/manual-cleaning.html#get-nodes-node-ident-cleaning-steps)
Change-Id: I26288802d06683fd99138bfea488233c88260a7f
Partial-Bug: #1526290
Co-Authored-By: Josh Gachnang <josh@pcsforeducation.com>
This adds an API to allow manual cleaning of nodes, via
PUT /v1/nodes/<node_ident>/states/provision. The argument
'target' is 'clean', and the argument 'clean_steps' (the
list of clean steps to be performed on the node) must be
specified.
The API version is bumped to 1.15.
Change-Id: I0e34407133684e34c4ab9446b3521a24f3038f92
Partial-Bug: #1526290
Agent base vendor now supports manual cleaning. In the case of a
clean version mismatch (agent rebooted to a new version after manual
cleaning started), we continue from the current clean step instead
of (in automated cleaning) restarting from the first clean step.
Change-Id: I89726f3b32f96befba9a2e1bee67b2a7cc7eeb57
Partial-Bug: #1526290
According to cross project spec I622f89fe63327d44f9b229d3bd9e76e15acbaa7a
downgrade migrations should be removed.
Also related tests was removed.
Closes-Bug: #1527248
Change-Id: I048bd73243d03b03080255c7cfeb53043f10acc5
This change adds image_http_proxy, image_https_proxy, image_no_proxy
parameters to a node's driver_info for use by the agent driver. If set,
they will be passed to ironic python agent ramdisk and used during
image download.
Also this change updates the unit test
TestAgentVendor.test_continue_deploy_image_source_is_url() as it was was
incorrect.
Partial-bug: #1526222
Change-Id: I7890f761f4adbe768f76831ef5b48b691a70b2d1
Even though an empty ipmi_username and/or ipmi_password is valid, it is
often an error in configuration. Log a warning if either value is
missing.
Add unit tests showing that an unspecified username or an empty string
username are treated the same and will cause no user to be specified.
Add unit tests showing that an unspecified password or an empty string
password are treated the same and will cause a NULL (\0) password to be
used.
Change-Id: I384e210da3216fb9335c4c782d69e606026d4b97
Ironic should be able to provide the requisite connectivity
information to the Neutron ML2 plugin to allow drivers to
provision the top-of-rack switch for the bare metal server.
The addition of portgroups in Ironic allows the concept of
link aggregation to be handled in Ironic in order to provide
support for cases where multiple interfaces on the bare metal
server connect to switch ports of a single LAG.
This commit includes changes to:
- the port vif mapping to also use portgroups
Partial-bug: #1526403
DocImpact
Co-Authored-By: Jenny Moorehead (jenny.moorehead@sap.com)
Co-Authored-By: Will Stevenson (will.stevenson@sap.com)
Co-Authored-By: Vasyl Saienko (vsaienko@mirantis.com)
Change-Id: I7f1cba65275078da750aa49ae83ba7345d6fd5e0
Ironic should be able to provide the requisite connectivity
information to the Neutron ML2 plugin to allow drivers to
provision the top-of-rack switch for the bare metal server.
The addition of portgroups in Ironic allows the concept of
link aggregation to be handled in Ironic in order to provide
support for cases where multiple interfaces on the bare metal
server connect to switch ports of a single LAG.
This commit includes changes to:
- the RPC API (to include portgroup methods)
- the RPC tests
Partial-bug: #1526403
DocImpact
Co-Authored-By: Jenny Moorehead (jenny.moorehead@sap.com)
Co-Authored-By: Will Stevenson (will.stevenson@sap.com)
Change-Id: Iac6355e615e57e6ed002facd6795c9ff06188998
Ironic should be able to provide the requisite connectivity
information to the Neutron ML2 plugin to allow drivers to
provision the top-of-rack switch for the bare metal server.
The addition of portgroups in Ironic allows the concept of
link aggregation to be handled in Ironic in order to provide
support for cases where multiple interfaces on the bare metal
server connect to switch ports of a single LAG.
This commit includes changes to:
- the objects (extension of port and addition of portgroup)
- the object tests
Partial-bug: #1526403
DocImpact
Co-Authored-By: Jenny Moorehead (jenny.moorehead@sap.com)
Co-Authored-By: Will Stevenson (will.stevenson@sap.com)
Change-Id: Id13eeafbdd9a4d9e679121f1b60be0073430499b
Ironic should be able to provide the requisite connectivity
information to the Neutron ML2 plugin to allow drivers to
provision the top-of-rack switch for the bare metal server.
The addition of portgroups in Ironic allows the concept of
link aggregation to be handled in Ironic in order to provide
support for cases where multiple interfaces on the bare metal
server connect to switch ports of a single LAG.
This commit includes changes to:
- the DB models (extension of port model and addition of portgroup
model)
- the DB tests
Partial-bug: #1526403
DocImpact
Co-Authored-By: Laura Moore (laura.moore@sap.com)
Co-Authored-By: Jenny Moorehead (jenny.moorehead@sap.com)
Co-Authored-By: Will Stevenson (will.stevenson@sap.com)
Change-Id: Ic028c316b0670c2d18de89111e83069f3441f476
This patch is extending the root device hints to support the device name
as input.
It's important to note that for SATA, SCSI and IDE disk controllers
the name is not recommended to be used because the order in which the
device nodes are added in Linux is arbitrary, resulting in devices like
/dev/sda and /dev/sdb switching around at boot time. The documentation
was updated to inform operators about this problem.
Depends-On: I48d6456c75bbe6ddf16ac6561e5461ca51eb9c37
Change-Id: I564d68ab1c66505195745c34e16e829b45a00a75
Closes-Bug: #1526732
1) utils.cleaning_error_handler() as hook in current code does not
have an exception parameter that task context manager adds.
2) It's not needed to set fail state on "NoFreeConductorWorker"
exception, this is driver specific. IPA driver can obtain a free
worker on the next heartbeat(s).
This patch also adds missing tests for error handlers functions.
Closes-Bug: #1539118
Change-Id: I9081d5b3437e9be6b68fe9c635b38f84637e93df
DRAC specific code from Ironic is moving to its own project, to
python-dracclient project. This patch finishes refactoring code in
Ironic to use the new library.
Change-Id: I6223dbbeb770d773ebdd72277017156cbdb1d035
The API service used to log access requests, as is customary for API
services. However, commit c4bd20ebd4
unintentionally changed this behavior when changing over to use
oslo_service.
This commit causes ironic-api to resume logging access requests, now
with all the additional information that oslo_service provides, by
changing the logger_name to the service name (instead of the default,
which was being filtered out).
Change-Id: I5855d4d2bd9eb70bf5f77fb2dc8c712f74304a07
Closes-bug: #1536828
This commit adds some more tests for no_proxy validity as it was
suggested in the last patchset of
30125908f6
Change-Id: I3443d1a2deac9494f1cf80fecbcbb12391ffeeb4
Caching of swift temporary is only useful for ironic python agent in
case of using proxies to download instance image.
This change adds the following:
- caching of temp URLs, so that proxy server does not invalidate the
cached image for every deployment.
- [glance]swift_temp_url_expected_download_start_delay option, so
that it is not possible to set swift_temp_url_duration less than
the value specified. This option is also used to determine if
cached temp URL will be still valid when agent ramdisk starts up.
To preserve current behavior, this value is set to 0.
Partial-bug: #1526222
Change-Id: If79bc0067db92c8917a15a0989143a1133ad4519
DRAC specific code from Ironic is moving to its own project, to
python-dracclient project. This patch continues refactoring code in
Ironic to use the new library.
Note that this is a backwards incompatible change. In addition to the
dependency change, return values of the following methods changed in
ironic.drivers.modules.drac.vendor_passthru:
- set_bios_config returns the 'commit_required' key
- commit_bios_config returns the 'job_id' and 'reboot_required' keys
- abandon_bios_config returns nothing
Change-Id: Iaa4cee0dae8980817803ca55cdb53789b4051bc2
Partial-Bug: #1454492
Depends-On: I574696e460f08cececc47a69b5c2b090a6cd44a2