A service for managing and provisioning Bare Metal servers.
Go to file
Julia Kreger 545dc2106b Handle agent still doing the prior command
The agent command exec model is based upon an incoming
heartbeat, however heartbeats are independent and
commands can take a long time. For example, software RAID
setup in CI can encounter this.

From an IPA log:

[-] Picked root device /dev/md0 for node c6ca0af2-baec-40d6-879d-cbb5c751aafb
    based on root device hints {'name': '/dev/md0'}
[-] Attempting to download image from http://199.204.45.248:3928/agent_images/
    c6ca0af2-baec-40d6-879d-cbb5c751aafb
[-] Executing command: standby.get_partition_uuids with args: {} execute_command
    /usr/local/lib/python3.6/site-packages/ironic_python_agent/extensions/base.py:255
[-] Tried to execute standby.get_partition_uuids, agent is still executing Command name:
    execute_deploy_step, params: {'step': {'interface': 'deploy', 'step': 'write_image',
    'args': {'image_info': {'id': 'cb9e199a-af1b-4a6f-b00e-f284008b8046',
    'urls': ['http://199.204.45.248:3928/agent_images/c6ca0af2-baec-40d6-879d-cbb5c751aafb'],
    'disk_format': 'raw', 'container_format': 'bare', 'stream_raw_images': True, 'os_hash_algo':
    'sha512', 'os_hash_value':<trimed>

This was with code built on master, using master images.
Inside the conductor log, it notes that it is likely an out
of date agent because only AgentAPIError is evaluated,
however any API error is evaluated this way. In reality, we need
to explicitly flag *when* we have an error that is because
we've tried to soon as something is already being worked upon.

The result, is to evaluate and return an exception indicating work
is already in flight.

Update - It looks like, the original fix to prevent busy agent
recognition did not fully detect all cases as getting steps is a
command which can
get skipped by accident with a busy agent, under certain circumstances.
Change I5d86878b5ed6142ed2630adee78c0867c49b663f in ironic-python-agent
also changed the string that was being checked for the previous
handling, where we really should have just made the string we were
checking lower case in ironic. Oh well! This should fix things
right up.

Story: 2008167
Task: 41175
Change-Id: Ia169640b7084d17d26f22e457c7af512db6d21d6
2020-10-29 14:58:34 -07:00
api-ref Add 'agent_token' to heartbeat request 2020-09-10 14:19:21 +00:00
devstack Use centos as base element for dib images 2020-10-14 09:54:54 +02:00
doc Merge "Allow passing rootfs_uuid for the standalone case" 2020-10-23 00:18:45 +00:00
etc Remove qemu-img rootwrap filter 2020-08-18 16:12:57 +02:00
ironic Handle agent still doing the prior command 2020-10-29 14:58:34 -07:00
playbooks/ci-workarounds Native zuulv3 grenade multinode multitenant 2020-09-16 23:33:42 +02:00
releasenotes Handle agent still doing the prior command 2020-10-29 14:58:34 -07:00
tools Update checking reno script to use python3 2020-10-11 22:13:21 +08:00
zuul.d Run bifrost integration job on focal 2020-10-14 17:50:31 +02:00
.gitignore Migrate to stestr as unit tests runner 2017-09-22 08:56:34 +00:00
.gitreview OpenDev Migration Patch 2019-04-19 19:40:53 +00:00
.mailmap Add my new address to .mailmap 2020-04-13 07:29:37 -07:00
.stestr.conf Migrate to stestr as unit tests runner 2017-09-22 08:56:34 +00:00
bindep.txt CI: update bindep for centos-8 py36 job changes 2020-10-03 18:22:36 -07:00
CONTRIBUTING.rst Project Contributing updates for Goal 2020-02-20 02:01:21 +00:00
driver-requirements.txt Add GPU reporting to idrac-wsman inspect interface 2020-09-30 18:33:53 -04:00
LICENSE Added project infrastructure needs. 2013-05-02 14:55:43 -04:00
lower-constraints.txt Fix handling OctetString for pysnmp 2020-09-29 13:00:52 +00:00
README.rst Add ironic-specs link to readme.rst 2019-08-30 17:16:09 +08:00
reno.yaml tell reno to ignore the kilo branch 2020-02-07 16:42:15 -05:00
requirements.txt Fix lower-constraints for Ubuntu Focal 2020-09-11 04:23:12 +00:00
setup.cfg Merge "Add Redfish BIOS interface to idrac HW type" 2020-09-25 02:32:22 +00:00
setup.py Cleanup Python 2.7 support 2020-04-03 17:49:23 +02:00
test-requirements.txt Update test requirements 2020-10-15 16:00:47 +02:00
tox.ini Remove install unnecessary packages 2020-09-14 11:10:44 +08:00

Ironic

Team and repository tags

image

Overview

Ironic consists of an API and plug-ins for managing and provisioning physical machines in a security-aware and fault-tolerant manner. It can be used with nova as a hypervisor driver, or standalone service using bifrost. By default, it will use PXE and IPMI to interact with bare metal machines. Ironic also supports vendor-specific plug-ins which may implement additional functionality.

Ironic is distributed under the terms of the Apache License, Version 2.0. The full terms and conditions of this license are detailed in the LICENSE file.

Project resources

Project status, bugs, and requests for feature enhancements (RFEs) are tracked in StoryBoard: https://storyboard.openstack.org/#!/project/943

For information on how to contribute to ironic, see https://docs.openstack.org/ironic/latest/contributor