226 Commits

Author SHA1 Message Date
Pavlo Shchelokovskyy
7cbb03074d Deprecate classic drivers
this patch deprecates classic drivers defined by ironic_staging_drivers
package in favor of hardware types.
A proper warning is shown on classic drivers init.
DevStack plugin no longer enables any classic driver from staging
drivers, and only hardware types are tested.

Change-Id: Ic53b71c94287804f3c66f5e9a6249f605c234211
2017-09-26 08:49:33 +00:00
Pavlo Shchelokovskyy
fff783fed1 Move Ansible-deploy testing to hw types
when switching nodes to use ansible-deploy,
use the `staging-ipmi-ansible` hw type with `staging-ansible`
deploy interface instead of the classic `pxe_ipmitool_ansible` driver.

This change is backward compatible with the job definition in
project-config which must remain the same until the stable/pike and
older branches are supported.

Also, change our ansible callback plugin settings only when testing
ansible-deploy interface.

Change-Id: Iba5eb5a5aace982561d4e11042a14c2de0dd8b98
2017-09-26 08:49:33 +00:00
Pavlo Shchelokovskyy
0ed6fd2a30 Improve cover tox env
Reuse `setenv` settings from parent `testenv` env

This is a followup to I3aefd97312bb9e5985e601dd192913247046d6e4

Change-Id: I4960a737a68ee146447cb6e4a5c6fe5b36a6dfc1
2017-09-26 08:46:59 +00:00
Jenkins
52b1bc11d6 Merge "[ansible] configure SSL validation" 2017-09-26 08:36:07 +00:00
Jenkins
de2992c95b Merge "Add stestr-specific files" 2017-09-25 13:48:51 +00:00
Pavlo Shchelokovskyy
0cdc53948f [ansible] configure SSL validation
This patch adds a number of configration options and playbook variables
that govern SSL validation and authentication when accessing the image
store to download the image and configdrive from the deploy ramdisk.

Most of them are not yet used in the default set of playbooks provided
with the driver
(for example some of them require yet unreleased Ansible 2.4),
however they can be used by custom playbooks, for example to upload
and enable those custom CA bundle and cert files to the ramdisk at
deploy time.

This patch also sets DevStack to disable validation of image store SSL
certificate by ansible deploy interface (similar to how IPA is currently
confugured).

This patch also caps Anisble < 2.4, since our custom callback plugin
has troubles with the newest Ansible 2.4 version (to be fixed later).

Change-Id: Id40f1067361cc32e98973c70fc5cd3d4242308d0
Closes-Bug: #1717858
2017-09-25 10:48:24 +00:00
OpenStack Proposal Bot
659b5c3df7 Updated from global requirements
Change-Id: I224debfa61403324e31f24aa77477c86d382ac96
2017-09-23 05:57:57 +00:00
Pavlo Shchelokovskyy
b4a0a06b66 Add stestr-specific files
os-testr>=1.0 uses stestr as test runner instead of testrepository.

This patch adds appropriate config and git ignore options for stestr.

Change-Id: I3aefd97312bb9e5985e601dd192913247046d6e4
2017-09-22 11:45:29 +00:00
Jenkins
7a8f69187a Merge "Updated from global requirements" 2017-09-09 21:59:18 +00:00
Yuriy Zveryanskyy
c1d9f44dbd Add hardware types
Classic drivers will be deprecated, add hardware types for
staging drivers. "staging-" prefix used for entrypoints.

The DevStack plugin is amended to enable all hardware types and
interfaces registered by the ironic-staging-driver package
to test that they do not break ironic-conductor start when enabled
For this a new script is added to read entrypoints registered by a Python
package.
As previousely, by default `iboot` drivers are not enabled
as they require a client library not available on PyPI.

Change-Id: I26541adc9b99f7a436be0e3f8ef31c0ff64ff5d4
2017-08-31 11:34:40 +00:00
OpenStack Proposal Bot
2704492bc4 Updated from global requirements
Change-Id: If597f059dadd3b44ffcf33b3194dc793f0aa3027
2017-08-30 23:21:18 +00:00
Jenkins
ae929e98a4 Merge "Update .gitignore" 0.7.0 2017-08-30 14:32:08 +00:00
Jenkins
91ff7f503a Merge "Removes unnecessary utf-8 encoding" 2017-08-24 10:21:50 +00:00
Pavlo Shchelokovskyy
721f64dad1 Change python vs other dependencies install order
for each driver, install the 'other' dependencies first just in case
those contain something needed to build the Python dependencies when
installing them.

Change-Id: I5a35dcc2d7ee516e3db52f982d6af8205d7a7ba6
Co-Authored-By: Karim Boumedhel <karimboumedhel@gmail.com>
2017-08-08 15:14:41 +00:00
Arundhati Surpur
c1d25ad954 Removes unnecessary utf-8 encoding
This patches removes unnecessary utf-8
encoding in doc/source/conf.py

Change-Id: I7cd94e0af47433eb427d74d8a36aa0cb534a2e64
2017-07-19 18:04:35 +05:30
Arundhati Surpur
c2509d3a40 Update .gitignore
Because egg* already ignores egg-info.

Change-Id: Ie16695c1932f0b2c9627a1f16e04a306e99f82c4
2017-07-19 17:59:03 +05:30
Pavlo Shchelokovskyy
47d5e7a7b9 [ansible] add journald and syslog loggers
since DevStack is now using systemd, we can leverage that when setting
up callback_plugin used by Ansible started by ansble-deploy driver.

This patch adds two more options to the ironic_log callback plugin
configuration file - use_journal and use_syslog.
When set, they will override respective values from ironic config.

The callback plugin config is set to force usage of journald by default
in the devstack plugin.

Change-Id: I5c788dd6621c95a28aecc727a3988ad4f101b2a8
2017-07-10 12:26:12 +00:00
Pavlo Shchelokovskyy
6e415c3284 Remove pxe_ssh_ansible driver
SSH-based power and management interfaces are unsupported and about to
be removed from ironic.

Change-Id: I0d00fbabb7402ef96bb26a68b64d04ae3231a5d5
Related-Bug: #1570301
2017-07-08 19:39:26 +03:00
Jenkins
090ce16c79 Merge "Remove usage of parameter enforce_type" 2017-07-03 17:48:32 +00:00
Jenkins
65f1f87040 Merge "Remove translation of log messages" 2017-07-03 17:48:27 +00:00
OpenStack Proposal Bot
900bb09431 Updated from global requirements
Change-Id: I6386635f4167b3b9ed9a74b023428cb7fd55ff90
2017-06-30 12:15:44 +00:00
Ngo Quoc Cuong
722459abb3 Remove translation of log messages
The i18n team has decided not to translate the logs because it
seems like it not very useful; operators prefer to have them in
English so that they can search for those strings on the internet.

Change-Id: Ifcb4c4331440d94322a56a1e3bed04cff453cbad
Related-Bug: #1674374
2017-06-27 23:07:31 -04:00
Pavlo Shchelokovskyy
f6736f563e [ansible] Fix nits in ironic_parted module
this is a followup to I4d6d7619c6f3ba25c29263ffe5d778698e598429
([ansible] Improve partition images support)

fixes some typos and removes commented/unused code.

Change-Id: Iafda13a657956bc04b591c0911cf3338705f33c4
2017-06-23 08:18:46 +00:00
Pavlo Shchelokovskyy
b4fc5fae01 [ansible] re-write grub install as ansible tasks
remove install-grub.sh script in favor of proper ansible tasks

Change-Id: I74ef330bcefdf0a88df7572cb0cbcf2ba07d3dc8
2017-06-23 08:18:46 +00:00
Pavlo Shchelokovskyy
0800a24d5f [ansible] Add more thorough disk metadata cleanup
If disks are not being shred completely, some partitioning metadata
that was stored in the headers of partitions themselves can still
survive partition table data cleanup, and later can interfere with new
partitioning scheme on nodes when new partition sizes are the same but
their metadata (for example boot flag) is changed.

This patch adds a set of tasks that will wipe a small amount of blocks
(1024 by default) before and after partition boundatries to make sure
those will not be re-read.

Change-Id: I251d77be24ab6052d3f1f8cb5af68d477cf1f270
Co-Authored-By: Ihor Pukha <ipukha@mirantis.com>
2017-06-23 08:18:46 +00:00
Jenkins
bfa752be23 Merge "Updated from global requirements" 2017-06-22 11:30:45 +00:00
Yuriy Zveryanskyy
84b1b0d34e [ansible] Add basic root device hints support
This patch adds support for Ironic root hints to ansible deploy driver.

The advanced root hints based on oslo.utils operators are not supported yet,
only exact matches.

Change-Id: I6fd468cfa9a7792fa0e55aa58c337396e13d76ee
2017-06-16 19:25:58 +00:00
Pavlo Shchelokovskyy
1d6b1b89d2 [ansible] Improve partition images support
- partitioning scheme now closer resembles what's being done by IPA

  - for partition images the root partition is last so that it can grow
  - for whole-disk images, configdrive is created as far as possible

- added support for setting disk label for created partition table,
  supported are 'gpt' and 'msdos' (default)

  - for 'gpt' disks, a bios_grub partiton is prepended to standard ones

- 'parted' module for Ansible was renamed to ``ironic_parted`` to not
  shadow ``parted`` module included in Ansible 2.3
  It was also rewritten to be cleaner and more stable:

  - changed accepted module arguments
  - added support for units (MiB and % for now)
  - added more validations
  - left support for msdos and gpt partition tables only
  - partitions are created one by one, and actual block devices created
    are searched for and reported.
  - module returns only after all partitions are available for write

Change-Id: I4d6d7619c6f3ba25c29263ffe5d778698e598429
2017-06-16 19:25:51 +00:00
OpenStack Proposal Bot
804cdc1692 Updated from global requirements
Change-Id: I0cf59e66e0137086bbdff5058c3b67189f9f85e1
2017-06-15 16:24:17 +00:00
Van Hung Pham
f44f4e8d17 Remove usage of parameter enforce_type
DeprecationWarning: "Using the 'enforce_type' argument is deprecated
in version '4.0' and will be removed in version '5.0': The argument
enforce_type has changed its default value to True and then will
be removed completely."

Change-Id: Ia189a7ee1d4e2c238cfb0e25d00c250be2f231b9
2017-06-14 11:02:03 +07:00
Pavlo Shchelokovskyy
b963a18c63 [ansible] Major changes in playbooks "API"
Possibly existing out-of-tree playbooks will be imcompatible
with this version and must be rewritten!

Changes include:

- all info passed into ansible playbooks from ironic is now available in
  the playbooks as elements of 'ironic' dictionary to better differentiate
  those from other vars possibly created/set inside playbooks.

- any field of node's instance_info having a form of "image_<field>"
  is now available in playbooks as "ironic.image.<field>" var.

- 'parted' tag in playbooks is removed and instead differentiation
  between partition and whole-disk imaged is being done based on
  ironic.image.type var value.

- 'shutdown' tag is removed, and soft power-off is moved to a separate
  playbook, defined by new driver_info field 'ansible_shutdown_playbook'
  ('shutdown.yaml' by default)

- default 'deploy' role is split into smaller roles,
  each targeting a separate stage of deployment process
  to faciliate customiation and re-use

    - discover - e.g. set root device and image target
    - prepare - if needed, prepare system, e.g. create partitions
    - deploy - download/convert/write user image and configdrive
    - configure - post-deployment steps, e.g. installing the bootloader

Documentation is updated.

Change-Id: I158a96d26dc9a114b6b607267c13e3ee1939cac9
2017-06-12 13:47:18 +00:00
brault
c67e89c1f1 Corrected typos from "resposible" to "responsible" and from "tho" to "though""tho" to "though"
Change-Id: I032719dc3ca4abec0a72e7f3da3eebeef444346d
2017-06-08 08:01:47 -04:00
OpenStack Proposal Bot
a65455b5df Updated from global requirements
Change-Id: I7618a60261a688ed2609b8b803c16e179da63da7
2017-06-02 21:56:27 +00:00
Jenkins
bbed32e5dd Merge "[ansible] add metrics collection" 2017-05-24 08:52:48 +00:00
Jenkins
d71f00d910 Merge "[ansible] honor deploy_forces_oob_reboot" 2017-05-24 08:52:43 +00:00
Jenkins
4a0242eadd Merge "[ansible] driver refactoring" 2017-05-24 08:38:18 +00:00
Jenkins
8aee66dfaa Merge "[ansible] improve cleaning" 2017-05-24 08:34:18 +00:00
OpenStack Proposal Bot
407d20d6f4 Updated from global requirements
Change-Id: I8bc718dc7ecd577f251f959c16d02d8616cfadc4
2017-05-17 03:48:48 +00:00
Pavlo Shchelokovskyy
1ab7c51edb [ansible] add metrics collection
add standard ironic metrics collection decorators to methods of
ansible-deploy driver.

Change-Id: I8f2230e1a1caf2751fb76290e9cc51556392dee1
2017-05-15 17:21:11 +00:00
Pavlo Shchelokovskyy
e1ece310fa [ansible] honor deploy_forces_oob_reboot
To use this driver property, tasks that soft poweroff the deploy ramdisk
in-band are tagged with additional 'shutdown' tag and are executed
separately.

Change-Id: Ie7bae9dd9fa17a764599390362e1c7f6926c7746
2017-05-15 17:21:11 +00:00
Pavlo Shchelokovskyy
6e8cd3163f [ansible] driver refactoring
make driver much closer to AgentDeploy by reusing HeartbeatMixin and
implementing other required methods

This effectively requires ironic version > 7.0

Change-Id: I9ba5186ecdae49a17785a109341050c828c849cc
2017-05-15 17:21:02 +00:00
Pavlo Shchelokovskyy
77326e7a5c [ansible] improve cleaning
- make cleaning re-use url from agent heartbeat as node ip
- improve validation of cleaning steps
  - require step names to be present and unique

Change-Id: I63067c2d91a05673f5f46c38a4ffbc9c0999342c
2017-05-15 15:07:28 +00:00
Pavlo Shchelokovskyy
6eaf42f11f [ansible] reuse build_instance_info_for_deploy
this function was moved to common place in deploy_utils and now can be
easily reused.

Also, it does basic disk layout parsing and validation so there is no
more need to do it in ansible-deploy driver.

Change-Id: I2054dc1f124a62ef1f45c8a0dad0b755e8de23ea
2017-05-08 16:56:21 +00:00
OpenStack Proposal Bot
4e2b9280a9 Updated from global requirements
Change-Id: Ie16fb5e4aeab9fb86e3b11f62d410714c9ea090a
2017-04-12 04:12:37 +00:00
Jenkins
7dc7cd2a3d Merge "Specify ironic_staging_drivers as name of the app" 2017-03-20 17:40:29 +00:00
Vladyslav Drok
1da32662b2 Specify ironic_staging_drivers as name of the app
Specify 'ironic_staging_drivers' as the name of the application for
the flake8-import-order plugin. That way it knows that imports of
ironic_staging_drivers should come after external libraries.

Change-Id: I7e8046baea6de65f9473f34fb84837380a41699a
2017-03-20 18:40:32 +02:00
OpenStack Proposal Bot
d3a23f07ae Updated from global requirements
Change-Id: I06ff4fbe5f2b44e181321ee0ff68bd4d8bf57fe4
2017-03-20 13:20:56 +00:00
Jenkins
de501d2460 Merge "[ansible] remove call signatures workarounds" 2017-03-20 11:43:01 +00:00
Pavlo Shchelokovskyy
92865503a7 Update style checkers
bring ironic_staging_drivers pep8 checks in line with main ironic:
- update hacking version to the one from g-r
- add import order checks, with the same style
- enable same additional checks from hacking

Only two small violations found, so better to update now while it's
easy.

Change-Id: I12459a1ffdb122f50ce25230e310412f18717ef5
2017-03-17 20:37:57 +00:00
Pavlo Shchelokovskyy
d2e2683046 [ansible] remove call signatures workarounds
During Newton release some methods in ironic have changed there call
signatures adding arguments useful for ansible-deploy driver.

This patch removes workarounds that were in place for backward
compatibility when calling these methods/functions.

Effectively ansible-deploy driver now requires ironic of Newton release
or newer.

Change-Id: Ic6aa1516fe76b68f8c33aaf021221efb05cf3807
2017-03-17 19:19:20 +00:00