69 Commits

Author SHA1 Message Date
Pavlo Shchelokovskyy
5e8c966a40 Use HTTPProxyToWSGI middleware from oslo
currently it is impossible to use ironic-api for both internal and
public api at the same time when both of those are using (ssl
terminating) proxies as there's only one config option to override the
resource url's in responses ([api]public_endpoint).

This patch adds the http_proxy_to_wsgi middleware from oslo.middleware
to the ironic API service, which, with properly configured proxies,
makes the choice of correct URL automatic, and thus makes such scenario
possible.

As this middleware may potentially not properly handle some
endpoint URL schemas, leave the api.public_endpoint option as a backup,
but it will be ignored when proxy headers parsing is enabled.

Change-Id: I3ce6b0726b479c2835f8777957b2cb12d8098aec
Story: #2006303
Task: #36019
2019-08-02 12:29:37 +00:00
Kaifeng Wang
bffb075d20 Adds bandit template and exclude some of tests
Adds bandit configuration template and exclude some of
tests that we don't want to fix for the moment.

Keeping job unvoted so that we can keep an eye on possible
issues while not breaking gate.

Change-Id: Ic577cad3b61421c04023ea887236992acb19f77c
Story: 2005791
Task: 33518
2019-06-20 15:08:43 +08:00
Riccardo Pittau
f5dbf8ba0c Switch to use exception from ironic-lib
The exception modules in ironic and ironic-lib contain the same
almost identical class IronicException.
With this patch we directly use the one in ironic-lib.

Updating requirements and lower-constraints to use compatible
version of ironic-lib.

Also deprecating duplicated fatal_exception_format_errors
option.

Change-Id: I1ce0d12d912020346425fd658d3b1807607455a4
Story: 1626578
Task: 10515
2019-06-11 12:03:44 +02:00
Dmitry Tantsur
c36a01a439 Publish baremetal endpoint via mdns
This change adds an option to publish the endpoint via mDNS on start
up and clean it up on tear down.

Story: #2005393
Task: #30383
Change-Id: I55d2e7718a23cde111eaac4e431588184cb16bda
2019-05-23 17:11:50 +02:00
Kaifeng Wang
7b021309ee Remove tox checkconfig
As we are not maintaining sample config file in the repo now,
the checkconfig can be removed since it's always generated from
the code.

Change-Id: I5bfd7c5cbb048a71864fac4fcfebb940529f87f1
2018-09-29 15:09:12 +08:00
Nguyen Van Trung
edd0ff7f46 Update docs to portgroup with creating windows images
This change will add how to create windows images article
in portgroup docs. these images will support to create port
bounding through ironic services.

This feature has tested on Fujitsu servers successfully.

Change-Id: I1ce941a16f080fce1699d8629a7e12a2c2d83ade
2018-09-24 04:11:14 +00:00
Julia Kreger
471aafc047 Ignore bashate E044
Bashate introduces a new error, E044, which attempts to
identify any questionable conditionals that would be
incorrectly using bracketing. That being said, it is
modeled on keeping the design simple, and errors on more
condensed lines where conditionals are included.

Since we don't need this, and the case where it is erroring
is invalid as the test is overly simple, lets ignore it.

Change-Id: Ie46dcd6cd6100f3c7e35c2c817828e45bd6b7921
2018-07-21 17:19:17 -04:00
Zuul
677d9f6e5f Merge "Add optional healthcheck middleware" 2018-03-16 20:46:35 +00:00
John L. Villalovos
fabcf1a402 Move execution of 'tools/check-releasenotes.py' to pep8
The 'releasenotes' gate job does not run our tox section. This allowed a
releasenote to land that had a filename in an incorrect format because
it was not created with 'reno new'.

Move the running of 'tools/check-releasenotes.py' to the pep8 section
and whitelist the releasenote that got merged.

Change-Id: Id5bd8e0cbc9186c89f682224088a8f23998d59c3
2018-03-02 12:20:27 +00:00
Jim Rollenhagen
6f439414bd Add optional healthcheck middleware
This adds the healthcheck middleware from oslo, configurable via the
[healthcheck]/enabled option. This middleware adds a status check at
`/healthcheck`.

This is useful for load balancers to determine if a service is up (and
add or remove it from rotation), or for monitoring tools to see the
health of the server.

This endpoint is unauthenticated, as not all load balancers or
monitoring tools support authenticating with a health check endpoint.

Change-Id: I7929d5f4502c3f84b1cf30526c94a458081a6a29
Closes-Bug: #1748515
2018-02-12 14:48:05 -05:00
John L. Villalovos
7e1287f243 Remove ironic_tempest_plugin/ directory
We now use the project openstack/ironic-tempest-plugin to store our
tempest plugin. All content from the ironic_tempest_plugin/ directory
has been ported to that project.

We no longer want to have the plugin content stored here so we delete
it.

Remove check in tools/flake8wrap.sh that prevented changes to the
ironic_tempest_plugin/ directory.

Change-Id: I700bd7b71472fa91f6bc02aebc055584df08e0ef
2018-01-05 15:12:13 -08:00
John L. Villalovos
435328e54f Prevent changes to the ironic_tempest_plugin/ directory
Add a check to the PEP8 test to prevent changes to the
ironic_tempest_plugin/ directory.

This will be removed when we remove the ironic_tempest_plugin/
directory.

Change-Id: I3cdbb39ebc661652ff9ceba5f3115ac26667953b
2017-12-19 09:25:44 -08:00
Jenkins
598aa07f3c Merge "[doc-migration] Add configuration folder for documentation" 2017-08-02 22:26:46 +00:00
Madhuri Kumari
adcbd324af [doc-migration] Add configuration folder for documentation
This patch does the following:
* Adds a configuration folder to contain automated generated config
files for Ironic.
* Adds `oslo_config.sphinxconfiggen` to the extensions list.
* Adds `oslo_policy.sphinxpolicygen` to the extensions list.
* Adds ironic-policy-generator.conf

This is important for Ironic to be included in the list of services
on https://docs.openstack.org/pike/configuration/

Change-Id: I51a7204ce00be2588e427c1951e8be7dc7a22647
Closes-bug: #1706176
2017-08-02 13:14:23 +00:00
Ramamani Yeleswarapu
3773f17403 Enable OSProfiler support in Ironic
This patch does the following:
* Adds osprofiler wsgi middleware
  This middleware is used for 2 things:
  - It checks that person who wants to trace is trusted and knows
    secret HMAC key.
  - It starts tracing in case of proper trace headers
    and adds first wsgi trace point, with info about HTTP request.

* Adds initialization of osprofiler at start of service
  - Initialize and set an oslo.messaging based notifier instance
    to osprofiler, which will be used to send notifications to Ceilometer.

* Traces HTTP/RPC/DB API calls and SQL requests

NOTE to test this patch:
1) Make the following changes in localrc to configure DevStack to enable
   OSProfiler:

   enable_plugin panko https://git.openstack.org/openstack/panko
   enable_plugin ceilometer https://git.openstack.org/openstack/ceilometer
   enable_plugin osprofiler https://git.openstack.org/openstack/osprofiler

   # Enable the following services
   CEILOMETER_NOTIFICATION_TOPICS=notifications,profiler
   ENABLED_SERVICES+=,ceilometer-acompute,ceilometer-acentral
   ENABLED_SERVICES+=,ceilometer-anotification,ceilometer-collector
   ENABLED_SERVICES+=,ceilometer-alarm-evaluator,ceilometer-alarm-notifier
   ENABLED_SERVICES+=,ceilometer-api

NOTE: the order of enabling plugins matters.

2) Run stack.sh. Once DevStack environment is setup, enable profiler options
   in ironic.conf and restart ironic services:
   [profiler]
   enabled = true
   hmac_keys = SECRET_KEY
   trace_sqlalchemy = true

3) Use openstackclient and run baremetal command with
   --os-profile SECRET_KEY
   [--profile can be used, but it is deprecated.]
   For example, the following will cause the <trace-id> to be printed
   after node list:

   $ openstack --os-profile SECRET_KEY baremetal node list
   .....
   .....
   Trace ID: <trace-id>
   Display trace with command:
   osprofiler trace show --html <trace-id>

4) The trace results can be saved using this command:

   $ osprofiler trace show --html <trace-id> --out trace.html

OSprofiler spec: https://review.openstack.org/#/c/103825/

Co-Authored-By: Tovin Seven <vinhnt@vn.fujitsu.com>
Co-Authored-By: Hieu LE <hieulq@vn.fujitsu.com>

Partial-Bug: #1560704

Change-Id: Icd3d7c62cf7442de8a77fc67f119ae9b03725f02
2017-07-07 15:58:28 -07:00
John L. Villalovos
0616c7485c Enforce releasenotes file naming
Ensure that releasenotes file naming matches how 'reno new' creates
them.

Change-Id: I796f928995fce27ca871e26d8694c655a21d0861
2017-04-05 16:41:52 -07:00
Andreas Jaeger
dfc272c43d Prepare for using standard python tests
Add simple script to setup mysql and postgresql databases, this script
can be run by users during testing and will be run by CI systems for
specific setup before running unit tests. This is exactly what is
currently done by OpenStack CI in project-config.

This allows to change in project-config the python-db jobs to
python-jobs since python-jobs will call this script initially.

See also
http://lists.openstack.org/pipermail/openstack-dev/2016-November/107784.html

Update devref for this.

Needed-By: I58c1d37d620ca058a4c2127e329d8d21b391965f
Change-Id: Id21d3481f7b4929c40c7351e6321d9ba5ad078b8
2017-02-03 14:30:41 -05:00
John L. Villalovos
b1b86b6417 Devstack: Create a "no ansi" logfile for the baremetal console logs
In addition to the normal bare-metal console logs that devstack
generates, create a "no ansi" version of the log that will be easier to
view/parse when viewing the logfiles.

Change-Id: Ic321db38f694d82362a6b1be91f891a06fb18c11
2017-01-26 13:15:33 -08:00
John L. Villalovos
3cedd6f924 Have bashate run for entire project
Before bashate was only running on the devstack/ directory. Have it
now run on the entire project for *.sh files.

Fix issues detected by bashate.

Also check the files:
    devstack/files/hooks/qemu
    devstack/lib/ironic

These files were located by doing:
    $ find openstack/ironic/ -not \( -type d -name .?\* -prune \) \
      -type f -not -name '*.sh' | xargs file | grep -i "shell script"

Change-Id: I238b7ab650781143fe8231e01250ab56120ff94f
2016-09-27 11:19:33 -07:00
Jay Faulkner
15c366580a Metric chassis, driver, node, and port API calls
This change adds initial metrics for Ironic based on new support in
ironic-lib. Emits timing metrics for basic Ironic API calls.

Bumps ironic-lib to 2.0.0 in requirements to add metrics support, as
well as adding ironic_lib.metrics and ironic_lib.metrics_statds to
ironic-config-generator.conf to get them in the sample config, which
is also regenerated.

Change-Id: Ic35802e4cd11763ebbedb8ddc28f7e8dc535cc2f
Partial-bug: #1526219
2016-07-15 18:15:11 +00:00
Lin Tan
773aa20a4a Make use of oslo-config-generator
oslo_config provide a utility for generating sample config files,
which provide more detail about opts, like Minimum/Maximum value
and Allowed values.
So drop Ironic's "generate_sample.sh" which was copied from
oslo-incubator long time ago.

Add a new entry point "ironic" under oslo.config.opts namespace to
explore config options to oslo-config-generator.

After this patch, new config options of Ironic code should register
with ironic/conf/opts.py. New external libraries should
register with tools/config/ironic-config-generator.conf

There is a bug #1554657 with oslo-config about deprecated_group.
This bug have impact of some configs from keystonemiddleware
and oslo.messaging in ironic.conf.sample
So currently, deprecated option should always add the deprecated_group
even it didn't alter the group, otherwise the deprecated group value will
be 'DEFAULT'.

Update etc/ironic/ironic.conf.sample via running 'tox -egenconfig'.

Closes-Bug: #1564195
Change-Id: If7721e98e69b6f54f1ee04a07477396b86583371
2016-05-25 11:59:13 +08:00
Jenkins
c9f96d6d79 Merge "Show transitions initiated by API requests" 2016-02-09 10:45:14 +00:00
Ruby Loo
4f8b97dff6 Show transitions initiated by API requests
This updates the state machine diagram and documentation to indicate
which transitions are initiated by API requests versus the ones that
are internally done by the conductor. Stable states are highlighted
a bit.

Change-Id: I1a2de81b14696286f1da47c06374ad235962c849
Closes-Bug: #1527316
2016-02-01 14:39:12 +00:00
Zhenguo Niu
29b37065d7 tox: make it possible to run pep8 on current patch only
This makes tox use a simple wrapper around flake8 like
Nova, which can be told to restrict the check to only
files changed in the current command. This can be invoked
in a simple manner with 'tox -epep8 -- -HEAD'. Since most
commits only touch a handful of files, this will usually
be far faster than checking all source files.

To check an entire branch for bisectability it can be
automated via

  git rebase -i master -x 'tox -epep8 -- -HEAD'

Change-Id: I75b1cfe3198b1217f8b25877714a4af47ae7069f
2016-01-05 09:55:48 +08:00
Lucas Alvares Gomes
b51f7d4d8c Run flake8 against the python scripts under tools/ and devstack/tools
This patch allows flake8 to run against the scripts under tools/ and
devstack/tools directories.

It also fix the current pep8 errors where it's needed.

Change-Id: I3f447564dd528c6efdee10a4a13f1ff1d7e1c3b1
2015-12-24 01:56:39 +00:00
Lucas Alvares Gomes
cd9975dc0a Add extensions to the scripts at devstack/tools/ironic/scripts
In order to easily determine the file type of the scripts in
devstack/tools/ironic/scripts directory, this patch is adding the
correspoding extension to each script.

Change-Id: Ifb53b768b7a3b38561031c92c279fa520e289b3d
2015-12-21 11:55:56 +00:00
Lucas Alvares Gomes
d7c41ebf9b Fix "No closing quotation" error when building with tox
Apparently # is treated as a comment inside the string and as
consequence the rest of the command gets stripped. This patch drops
those comments from the bashate command.

This patch also moves the bashate command to its own script under
tools/.

Change-Id: Ic44bb64419ca1465f69c91fd579e8c84d69f84b8
Closes-Bug: #1527562
2015-12-21 11:53:41 +00:00
Faizan Barmawer
7c138f01a0 Refactor disk partitioner code from ironic and use ironic-lib.
The disk partitioner related code from ironic/common/disk_partitioner.py
and ironic/drivers/modules/deploy_utils.py is being moved to ironic-lib.
The code in ironic needs to be removed and use ironic-lib to perform
disk related activities.

Change-Id: I7b1b1d8b45b947a7b5715f3c6ab49d84e84b6b90
2015-12-09 22:03:35 -08:00
Anton Arefiev
564f5f7cd7 Add SSL support to the Ironic API
Add posibility to configure the API to service requests via HTTPS instead
of HTTP using native ssl from oslo.service wsgi.

New options was added:
 * enable_ssl_api - turn on ssl support;
Options defined in oslo.service for configure certs:
 * ca_file - ca certificate file to use to verify connecting clients;
 * cert_file - certificate file to use when starting the server securely;
 * key_file - private key file to use when starting the server securely;

Closes-bug: #1430213
Change-Id: Id4b84d83f9aa6c7f898b3b9b59158d5b1a00e159
2015-11-18 12:04:18 +00:00
Jenkins
58769fbfc8 Merge "Refactor map_color()" 2015-09-02 17:43:55 +00:00
Michael Krotscheck
05f4a64aed Added CORS support middleware to Ironic
This adds the CORS support middleware to Ironic, allowing a deployer
to optionally configure rules under which a javascript client may
break the single-origin policy and access the API directly.

OpenStack Spec:
   https://review.openstack.org/#/c/179866/
Oslo_Middleware Docs:
   http://docs.openstack.org/developer/oslo.middleware/cors.html
OpenStack Cloud Admin Guide Documentation:
   http://docs.openstack.org/admin-guide-cloud/cross_project_cors.html

Co-Authored-By: Devananda van der Veen <devananda.vdv@gmail.com>
Depends-on: I2deed897f8f9ef87e4a74227c4fcea9afdb151e8
Change-Id: Ic55305607e44069d893baf2a261d5fe7da777303
2015-09-01 19:45:01 +00:00
Ruby Loo
5135544ffd Refactor map_color()
This refactors map_color() so that it returns a dictionary, instead
of the callers (of that method) doing that work.

Change-Id: I55a808d889fd3818c1f262dcab7af9ffa8c6e557
2015-09-01 13:56:47 +00:00
Jenkins
99d7b75ca1 Merge "Use automaton's converters/pydot" 2015-08-31 13:54:18 +00:00
Lucas Alvares Gomes
2e16a3cd7e Fix "tox -egenconfig" by avoiding the MODULEPATH env variable
MODULEPATH is apparently a well known variable from environment-modules
package and was causing the sample configuration generation to fail.

Change-Id: Ie9f1896c9480aa371c99a316511b172e92f52824
Closes-Bug: #1437904
2015-08-20 10:50:00 +01:00
Ruby Loo
d078ba6efb Use automaton's converters/pydot
This uses the automaton library's converters/pydot to
generate the state machine diagram.

Change-Id: I23888d035e108224fbd29b305f6dd418d584e54e
2015-07-28 21:24:48 +00:00
Sergey Vilgelm
0f4eba1854 Switch to oslo.service
oslo.service has graduated, so ironic should consume it.

Change-Id: Iaa1ca0d97b92b9a6858b2c2d50eb514cc2118762
Closes-Bug: #1466851
2015-06-29 10:49:15 +02:00
Vladyslav Drok
dfc44ca6a9 Remove tools/flakes.py
Remove it as it is not needed.

Change-Id: Ib9308b880193aafb618120b9782d4863635d9fc3
2015-06-12 15:20:45 +03:00
Davanum Srinivas
133c83180d Sync with latest oslo-incubator
Periodic sync with latest oslo-incubator code

Change-Id: Ia18335278da4c25240e537d53687658fe4fbaa6a
2015-06-10 11:31:17 -04:00
Ghe Rivero
aafeed2f85 Use oslo_log lib
Module 'log' from oslo-incubator was removed after release of oslo_log library.

Change-Id: I4261083dae076cea66c42ad16eb82a5faaeb1a65
2015-05-05 08:43:28 +02:00
Ghe Rivero
338c1f2d01 Adopt config generator
oslo.config.generator has been removed from olso-incubator so
we need to adopt it in order to generated up-to-date config
files.
Changes introduced:
- Move config/generator.py from openstack.common to ironic.common
- Update config generator to use new style list_opts discovery
- Split _print_opt function to reduce complexity and pass pep8 tests

Change-Id: I397504bf0604a86082f26e46952720117611f3a8
2015-05-04 20:38:13 +00:00
Joshua Harlow
4c7a7bdf64 Add a venv that can generate/write/update the states diagram
Instead of requiring manual understanding of how to generate
the states diagram, add an explicit virtualenv that can be
used to create and generate that docs diagram (and replace the
existing file with it).

Change-Id: I1738da9bf08bfda9b9be01489e8456569a31709e
2015-04-27 11:07:01 -07:00
Jenkins
9085486033 Merge "Sync with oslo.incubator" 2015-04-08 00:02:18 +00:00
Ghe Rivero
b2f15d07d3 Sync with oslo.incubator
Add oslo.policy and oslo.concurrency to oslo config generator extra
libraries to retrieve config options
Update oslo_incubator service module
Update oslo_incubator versionutils with new list_opts discovery

Change-Id: I5558f6f9f708b1643ebd6c8b2a213a1fae582a50
2015-04-06 12:54:56 +02:00
Devananda van der Veen
072372119a Fix formatting error in states_to_dot
Fixes the following error by correctly quoting the header:

  Warning: syntax error in line 1 near 'states'

Change-Id: I94fa3b18d355c68674b16f128e477aba8e1b542e
2015-03-24 03:16:00 -07:00
Lin Tan
1be0fd0a8e Generate keystone_authtoken options in sample config file
Adding keystonemiddleware.authtoken as extra libraries
to register its missing options, like admin_user.
Update sample conf by running 'tools/config/generate_sample.sh'

Closes-Bug: #1430115
Change-Id: Ic8666dc4a3a6b7c5855afb2929d8b14ebe21ca52
2015-03-19 13:56:34 +08:00
Joshua Harlow
cc31c0c524 Update the states generator and regenerate the image
Change-Id: I9ab9bd12547367ab65f225618aa6c4163645fb03
2015-02-23 16:11:04 -08:00
Joshua Harlow
92c4698678 Adjust the help strings to better reflect usage
The default format is png (and not svg) so we should
note that instead of having svg mentioned (this was
leftover from the clone of this from taskflow which
does default to svg).

Change-Id: I108857ecc606ed2c12e0d5b460a8e72eb95af740
2015-01-10 21:43:40 -08:00
Joshua Harlow
47b49a009c Add a fsm state -> dot diagram generator
Add a tool (derived from taskflow's similar tool)
that can turn the state machine defined in ironic
into a dot diagram.

This diagram is much easier to look at then trying
to mentally create a similar diagram; this makes it
easier to see issues and to visualize the state machines
valid states and transitions.

For this change we need to add back in the state machine
__iter__ method so that we can correctly iterate over the
states and transitions (and events that will cause those
transitions).

Change-Id: I9da09f65a46617aa1c837ae0fc71350276df8bea
2014-12-18 11:33:31 -08:00
Devananda van der Veen
50003a107d Use auth_token from keystonemiddleware
auth_token middleware in python-keystoneclient is deprecated and has
been moved to the keystonemiddleware repo.

This patch updates Ironic to use the new keystonemiddleware package.

Change-Id: Ifb48996867f9f51c4dbedde0e0d9476c2d2818b4
Closes-Bug: #1342274
2014-08-11 15:33:58 -07:00
Ghe Rivero
689052700c Sync oslo.incubator modules
Update the openstack.common modules from oslo.incubator
to have a current copy needed to start using new released
oslo libraries.

Change-Id: I60ea98b3381cbbc3d2905af224792ee68b423825
2014-08-05 22:28:25 +00:00