drydock/drydock_provisioner/drivers
Scott Hussey ae87cd1714 Update image and chart mgmt
NOTE: This has become a monolithic commit to get gate
      settings/scripts in place for CI

- Add Makefile with UCP standard entrypoints
- Move Dockerfile into images/drydock per UCP standards
- Add values.yaml entries for uWSGI threads and workers
- Add environment variables to chart Deployment manifest
  for uWSGI thread and workers
- Add threads and workers specification to uWSGI commandline
  in entrypoint
- Test that the Drydock API is responding
- Test that the Drydock API rejects noauth requests
- Fix Makefile utility script to work behind a proxy

Correct task success voting

Some tasks were incorrectly considered partial_success even when
no failure occurred.

- Network configuration erroneously marked messages as errors
- Update result propagation logic to only use the latest retry

The deploy_nodes task ended as incomplete due to a missing
subtask assignment

Also added a node check step to prepare_nodes so that nodes that
are already under provisioner control (MaaS) are not IPMI-rebooted.

Tangential changes:
- added config item to for leadership claim interval
- added some debug logging to bootaction_report task
- fix tasks list API endpoint to generate valid JSON

Improve task concurrency

When tasks are started with a scope of multiple nodes,
split the main task so each node is managed independently
to de-link the progression of nodes.

- Split the prepare_nodes task
- Begin reducing cyclomatic complexity to allow for
  better unit testing
- Improved tox testing to include coverage by default
- Include postgresql integration tests in coverage

Closes #73

Change-Id: I600c2a4db74dd42e809bc3ee499fb945ebdf31f6
2017-12-15 15:33:14 -06:00
..
node Update image and chart mgmt 2017-12-15 15:33:14 -06:00
oob Update image and chart mgmt 2017-12-15 15:33:14 -06:00
__init__.py Refactor orchestrator 2017-10-26 15:00:39 -05:00
driver.py Refactor orchestrator 2017-10-26 15:00:39 -05:00
readme.md Orchestration of MaaS enlistment (#42) 2017-06-15 20:42:53 -07:00

readme.md

Drivers

Drivers are downstream actors that Drydock will use to actually execute orchestration actions. It is intended to be a pluggable architecture so that various downstream automation can be used. A driver must implement all actions even if the implementation is effectively a no-op.

oob

The oob drivers will interface with physical servers' out-of-band management system (e.g. Dell iDRAC, HP iLO, etc...). OOB management will be used for setting a system to use PXE boot and power cycling servers.

Actions

  • ConfigNodePxe - Where available, configure PXE boot options (e.g. PXE interface)
  • SetNodeBoot - Set boot source (PXE, hard disk) of a node
  • PowerOffNode - Power down a node
  • PowerOnNode - Power up a node
  • PowerCycleNode - Power cycle a node
  • InterrogateOob - Interrogate a node's OOB interface. Resultant data is dependent on what functionality is implemented for a particular OOB interface

node

The node drivers will interface with an external bootstrapping system for loading the base OS on a server and configuring hardware, network, and storage.

Actions

  • CreateNetworkTemplate - Configure site-wide network information in bootstrapper
  • CreateStorageTemplate - Configure site-wide storage information in bootstrapper
  • CreateBootMedia - Ensure all needed boot media is available to the bootstrapper including external repositories
  • PrepareHardwareConfig - Prepare the bootstrapper to handle all hardware configuration actions (firmware updates, RAID configuration, driver installation)
  • IdentifyNode - Correlate a node definition in the Drydock internal model with a node detected by the downstream node bootstrapper.
  • ConfigureHardware - Update and validate all hardware configurations on a node prior to deploying the OS on it
  • InterrogateNode - Interrogate the bootstrapper about node information. Depending on the current state of the node, this interrogation will produce different information.
  • ApplyNodeNetworking - Configure networking for a node
  • ApplyNodeStorage - Configure storage for a node
  • ApplyNodePlatform - Configure stream and kernel options for a node
  • DeployNode - Deploy the OS to a node
  • DestroyNode - Take steps to bring a node back to a blank undeployed state

network

The network drivers will interface with switches for managing port configuration to support the bootstrapping of physical nodes. This is not intended to be a network provisioner, but instead is a support driver for node bootstrapping where temporary changes to network configurations are required.

Actions

  • InterrogatePort - Request information about the current configuration of a network port
  • ConfigurePortProvisioning - Configure a network port in provisioning (PXE) mode
  • ConfigurePortProduction - Configure a network port in production (configuration post-deployment) mode