Commit Graph

77 Commits

Author SHA1 Message Date
Charles Short 73138475dc Add molecule infrastructure
- Add molecule support to test ansible roles.
- Also fix flake8 failures.
- Also drop python36 from the templates

Change-Id: Ib647d93144a02a6be7340991c31f65842fdf3f29
Signed-off-by: Charles Short <chucks@redhat.com>
2019-12-16 08:11:35 -05:00
agopi 6746c0c948 Adding extra-vars needed for deployment of queens/rocky
1. Added containerized_overcloud for queens
2. Set containerized_overcloud and undercloud for rocky
3. Set ntp server to clock.corp.redhat.com for rocky as
   rocky builds fail on uc deployment while NTP syncing.

Change-Id: I77434b104ab48eec097b28da92cc7fe93f6cfc79
2018-11-08 19:59:32 +00:00
agopi b72d503ac3 Test-Commit: use upstream config for rdo jobs
This commit is to ensure that the rdo jobs don't use internal
config files.
Also, testing out exactly how the current_build and
hash vars look like

Change-Id: Id77ae847323fafddd891707c59f633fb11e8cd65
2018-07-18 15:06:53 -04:00
agopi fece9571ff Separated scripts for browbeat-ci and perf-ci
Perf-CI has more parameters that are passed down
from jjb such as TOOL which dont exist in browbeat-ci.

Change-Id: I3f4f4ccc4e8a7fdc6e98d3c50b252101e0c00bb8
2018-05-03 14:47:13 -04:00
agopi c398599863 Deploying with ovn turned on for ovn jobs
Change-Id: Ifb45a804d1680798d7c390030dfd5019cc7881aa
2018-05-03 17:58:25 +00:00
agopi 0f143d9cc8 Temporary fix to place playbooks into folder
Change-Id: I5bbdad50b070407f5ed498351a753cb79d3909a0
2018-04-27 15:11:38 -04:00
agopi 250c217e82 CI using custom node file
Tripleo quickstart made changes to default node files
to use mapping to rename the compute/controller-0.
This commit will allow us to use the old version.

https://review.openstack.org/#/c/531504/2

Change-Id: Iec82b61b2088d70c30142df27b251f28a68738e8
2018-03-22 17:29:22 -04:00
akrzos c34543f909 Transition to GrafYaml for Dashboard Storage
Reasons to move from json, json.j2 to yaml/yaml.j2 + GrafYaml:
* Yaml is less lines
* Yaml allows comments
* Yaml means less curly braces and quotes
* GrafYaml manages panel ids and target refIds
* GrafYaml defaults reduce number of lines stored
* GrafYaml allows more easily cut/paste management of Dashboards

Identified Downsides:
* GrafYaml will be behind the Grafana Dashboard Model (Until code is updated)
* Json will always allow full feature set
* Installing Dashboards now requires GrafYaml

New Dashboards/Features:
* Templated Dashboards (Reduce line count in "static" dashboards)
* Cloud Specific networks - all dashboard
* Three Node Performance Food groups Enhanced
* Networker Node added for Cloud Specific Dashboards and Total Memory

Change-Id: I55ce9f9f6c28497c8b4ed7a19d42657a8eb14170
2018-02-27 10:20:18 -05:00
agopi 61924a83ea Removing the use of current-passed-ci.yml files
We can no longer pull from current-passed-ci.yml
as they point to a puddle that no longer exists and
the CI had already moved away from using them a
couple of months back.

Change-Id: I172250690fa402fce3488f020955ff47849fc4f9
2018-02-22 12:54:10 -05:00
agopi 05c90efdc5 Update path for current-passed-ci.yml files
Tripleo environments had deleted rhos-*-current-passed-ci
files that were needed to test commits made to browbeat.
Readded files in tripleo-environments
https://code.engineering.redhat.com/gerrit/#/c/129983/
Updated path accordingly.

Change-Id: If1b8f59b87fbd0dc58d7f6dde994cf1efb53883b
2018-02-15 10:29:16 -05:00
akrzos 1c3b60a8c8 Mix and Match Workloads
* Mix and Match Workloads
* rerun_type - ['iteration', 'complete'] - allows you to rerun complete
  browbeat workload or iteratively
* browbeat/config.py for loading and validating config schema
* tests/test_config.py to test config.py

Change-Id: I99ea87c01c17d5d06cf7f8d1eec3299aa8d483a5
2017-12-12 11:08:50 -05:00
Zuul 1335bb3ab9 Merge "Refactor of linting/config validation" 2017-11-30 01:19:12 +00:00
akrzos 1a65cd1feb Refactor of linting/config validation
* Use the built-in pykwalify cli validator
* Use set -e on loop inside tox.ini to ensure invalid configs fail CI

Change-Id: I251f7ead8393b97e93de03dc3b6accbdd9670092
2017-11-29 18:41:53 +00:00
jkilpatr 277111dd31 Correct current_build expansion for rhos pipeline jobs
current_build for rhos jobs is a puddle not a dlrn hash
so when we run it through the hash expander we get nothing
back and pass a blank current build. The build then fails
because quickstart can't figure out what puddle to download.

Change-Id: I011e358cd26e553275d00e02e198d3744e1c4cbe
2017-11-29 13:19:30 +00:00
jkilpatr b887a03940 Updating promotion pipeline logic for oooq
When patching our CI to work with the new overcloud image
based oooq I neglected the promotion piplines.

Change-Id: Ibd6770a168b300e78a29734101a099b29f54569b
2017-10-24 18:04:19 +00:00
jkilpatr bb44cd830c Rsyslog -> Elasticsearch logging
This implements rsyslog -> elasticsearch logging as well
as rsyslog forwarder -> rsyslog aggregator -> elasticsearch logging
using the common logging template as a base and adding
in dynamic detection of containerized services and log path
detection.

Services can be moved into and out of containers and add
or remove log files and the log detector script will create a template
that reflects these changes dynamically.

Logging inherits cloud name and elasticsearch info from the existing
group_vars variables, so this should be no additional work to setup
beyond setting logging_backend: rsyslog and either running the install
playbook or the rsyslog-logging playbook.

Finally additional variables can be passed into the deployment with
-e or just being in the ansible namespace, this way things like a
unique build ID can be templated into the logs automatically. I've
added support for browbeat_uuid, dlrn_hash, and rhos_puddle others
should be trivial to add.

There are also additional tunables to configure if logging instaces
should be standalone (viable for small clouds) or rely on a server
side aggregator service (more efficient for large deployments).
Disk backed mode is another tunable that will create a variable
disk load that may be undesierable in some deployments, but if
collecting every last log is important it can be turned on creating
a one or two layer queueing structure in case of Elasticsearch downtime
or overload depending on if the aggregation server is in use.

If you want to see examples from both containerized and non
container clouds check out elk.browbeatproject.org's logstash
index.

Change-Id: I3e6652223a08ab8a716a40b7a0e21b7fcea6c000
2017-10-16 12:08:26 +00:00
akrzos 4052a93f50 Remove connmon
Unfortunately connmon hasn't been used in a while and isn't well tested on latest releases,
thus ideally in order to prevent any more cruft issues, lets remove it for now and if it becomes
relevant again we can add it back in.

Change-Id: I0759d164621f3aac1c36dbe1fac49acd7dde97e3
2017-10-11 10:47:30 -04:00
jkilpatr f0d3e43798 Fix unused var crash for CI when not run from Gerrit
The recent CI short circuit patch runs into an issue
when run in promotion pipelines because the gerrit vars
may not be set.

Change-Id: If9b5c7abb78130c9f8fc02fc9bee158840a21efe
2017-10-04 14:24:57 -04:00
jkilpatr dfdcda149e don't spend hours testing things with WIP in the title
So this is very easy, the problem is determining if the user
actually intended to mark their commit as a work in progress
for no testing, or if the user has WIP in their commit title
for some other reason. To help with that WIP or wip has to
be at the start of the commit message and have a trailing space.
Maybe : should also be accepted as a trailing char.

Change-Id: Ic44114dbf50abbe2a9f135a41257208fe7feddf8
2017-09-27 17:14:36 +00:00
akrzos 0c0497c4a3 Remove more Grafana Snapshot cruft.
Change-Id: Ie69c3a032790d09ddeafc93012b54cc094b0f8c7
2017-09-22 13:09:34 +00:00
jkilpatr 4c38ab0fed Update Image cache locations
This seems to have finally settled down, first off the Ocata exception
can finally be removed and the promotion images are in the rdo_trunk
folder universally now instead of delorean.


Change-Id: I45e7cbc0bafff5b637a75702aacb3ba874905b42
2017-09-05 11:06:02 +00:00
jkilpatr 5b21d92ef3 Yoda CI job config files
This commit splits the Browbeat CI out by workload by passing in
different playbooks, mostly just makes a different playbook for yoda
because why deploy an overcloud before testing yoda? makes no sense and
adds another couple of hours to the test. We also add an integration test
playbook but that doesn't seriously diverge from the normal testing playbook
at the moment

Change-Id: Ic83412cac668cbf7d2fb6d8d86c2c86eb354c9dd
2017-07-21 19:43:50 +00:00
Jenkins c3dc9b6705 Merge "Remove quickstart extras pin" 2017-06-27 19:23:15 +00:00
Jenkins f94517bc7c Merge "Replace yaml.load() with yaml.safe_load()" 2017-06-27 13:19:22 +00:00
jkilpatr fbe0675e02 Remove quickstart extras pin
Finally got my upstream patch merged, only took like three months.

Change-Id: I5d2d0570a170c56881272a08aec8942c689f59aa
2017-06-27 07:26:07 -04:00
jkilpatr b1b78c5e92 Store Grafana links for CI results
Now that we're using Graphite/Grafana for the automated testing
regularly I should take advantage of the dashboard link indexing
feature.

Change-Id: I9098e9ff0ac81dbeb6b3c9aca82e54b59e7e0a80
2017-06-20 12:38:17 -04:00
jkilpatr 38fa5facdc Move ci docs to readthedocs
Moving CI documentation to the modern location so that I can
patch in documentation for these new workloads etc.

Change-Id: I6d7fc4561d14d95f39df311cb2f76fd01fe215d1
2017-06-08 15:01:04 -04:00
Van Hung Pham 15fd41725a Replace yaml.load() with yaml.safe_load()
Avoid dangerous file parsing and object serialization libraries.
yaml.load is the obvious function to use but it is dangerous[1]
Because yaml.load return Python object may be dangerous if you
receive a YAML document from an untrusted source such as the
Internet. The function yaml.safe_load limits this ability to
simple Python objects like integers or lists.
In addition, Bandit flags yaml.load() as security risk
so replace all occurrences with yaml.safe_load().
Thus I replace yaml.load() with yaml.safe_load()

[1]https://security.openstack.org/guidelines/dg_avoid-dangerous-input-parsing-libraries.html

Change-Id: Iaa2b7d9c880f3e20243bb2a9cbd8f9db29ecc267
2017-06-07 23:06:38 +00:00
jkilpatr 26c7d1d0ed Update CI docs to reflect deletion of install and check
Change-Id: I368e622b0e913a9f7cc3dc0066a12fdaf28f4eb9
2017-06-01 14:41:27 -04:00
jkilpatr c11374cca1 Move collectd into the main Ansible run for CI
This commit allows CI to run the collectd-openstack role directly
to do this I take the relevent variables from the group_vars/all.yml
and duplicate them in to the defaults. If you're not making mix and
match playbooks with browbeat roles and run the playbooks 'normally'
these defaults will never affect you in any way and will be overridden
by the group_vars/all.yml file without any interaction from you.

If on the other hand you want a playbook where you can toss collectd
install whereever you need it, this makes life much easier. Also note
that the trick I'm using to get the name of the executing hosts first
group could be used to make the collectd-openstack playbook run in
parallel across all hosts all at once rather than one group at a time.

As one final tweak this adds 10 minutesof retires to the epel install
role, specifically because two of it's tasks rely on external internet
access and fail often enough to cause trouble. Previously I would retry
the whole CollectD playbook when that happened, this is more efficient

Change-Id: Ia67ab2b4152a8d8e9f3ba1dabe1f4417d7b86233
2017-05-04 13:28:02 +00:00
Joe Talerico 3bdb101123 Spring Cleaning
Cleaning up unused scripts.

install-and-check.sh is no longer used by our CI

Change-Id: I24f9015fb4a4612b8d9e915d9654240d1efa423c
2017-04-24 11:04:26 -04:00
jkilpatr 89eae314c9 Collect puddle metadata in addition to the delorean hash
This restructures some of the metadata to better reflect how builds
are tracked up and downstream. Upstream we have a delorean hash which
is used to track builds as they come down the pipeline, downstream we end
up with RHOS puddles, ideally we will track the transition between these two
since every puddle has a delorean hash but not the other way around. Right now
I'll settle for collecting the infromation.

Change-Id: I9a9030523ec5f586b7e696abe892e0c8167e9869
2017-04-06 21:06:56 +00:00
jkilpatr 74d25875e1 New url structure for for rhos pipelines in CI
This updates the url building for the rhos pipeline builds
so that we grab the correct image ID when the promotion pipeline
attempts to promote a build.

Change-Id: I13da83b7ecdf4cd145e7ffc1ae2b9e6e0a9690f1
2017-04-05 19:00:24 +00:00
jkilpatr c60b55ec83 Update tox.ini with Ansible linting and Browbeat config linting
This commit enanbles Ansible linting and does some
minor refactoring to make existing Ansible roles
compatible with the new rules.

Several Ansible linting rules have been excluded to keep the number
of changes from being too onerous.

Also a new script in ci-scripts is used to check very config file
included in the Browbeat repo for validity using the template
Browbeat uses when it runs.

Here's a list of the new linting rules

* Ansible tasks must have names
* When you use shell you must use become not sudo
* Using become_user without using become is not allowed
* If a repo is pulled it must be a pinned version of commit, not latest
* Always_run is deprecated don't use it
* Variables without {{}} and not in when statements are deprecated don't use them
* No Trailing whitepaces
* YAML checking, catches big syntax errors but not less obvious ones

Change-Id: Ic531c91c408996d4e7d8899afe8b21d364998680
2017-03-29 07:35:34 -04:00
jkilpatr 72bc80c058 Change CI Ocata image url to match internal mirror
The internal pipeline image mirror has a slightly different
folder structure that doesn't include the /current-tripleo/ folder
anyways this was causing Ocata pipeline builds to fail.

Change-Id: I688218dda2c32222df3752bceb771427c2ba9425
2017-03-10 07:38:30 -05:00
jkilpatr dfc1d8c625 Add oooq CI support for Ocata pipeline
As the latest version is moved from Master to Ocata some folder structure
changes are required to make sure we get the right image. Eventually master
will point to 12 instead of 11.

Change-Id: Ie83cf1add5418c77054b67610c4f35318420b93e
2017-03-01 07:28:36 -05:00
jkilpatr d1a617f5dc Update introspection pinning for oooq CI to use JQ based script
See here for more details
https://review.openstack.org/#/c/437946/

The reason the old pin isn't working is that --bootstrap in quickstart
doesn't work like it should and force the reinstallation of the virtualenv
so we carry over the prep internal script that now uses extras itself.

Change-Id: I5479738565017941df71313f10816f2c9a4debea
2017-02-24 18:56:13 -05:00
jkilpatr d1974d16cb Don't clone TripleO Quickstart Extras in Microbrow.sh
Moving this up into the jjb as prep-internal-rhel.sh now depends on it.

Change-Id: I88d18542237643dcf5467700052556b0969dc11e
2017-02-13 15:43:40 -05:00
Jenkins 6418587837 Merge "Update location of CI variables" 2017-02-03 13:13:36 +00:00
Sai Sindhur Malleni 90bb494647 Update location of CI variables
This commit sets the variables for network creation to the
appropriate values. Since the network details are internal, this CI
variables file is being moved to internal git.

Change-Id: Ib55d2896991c74562f01e3cc56117af7110dc403
2017-02-02 14:31:33 -05:00
Jenkins 918034a587 Merge "Remove hardcoded reference to network isolation" 2017-02-02 18:50:59 +00:00
jkilpatr a8ef2462d7 Add StatsD support for Ironic
StatsD support works, working on dashboards

As documented here http://docs.openstack.org/developer/ironic/deploy/metrics.html
Ironic allows performance metrics to be dumped via StatsD, this installs StatsD
on the undercloud via epel, sets up a service for it, enables it, and updates
Ironic to use it.

Change-Id: I793d4d3211ecf6113bd4863a0672ea0cb0de9dd3
2017-02-01 20:49:35 +00:00
Sai Sindhur Malleni 85698d3b06 Remove hardcoded reference to network isolation
Removes one hardcoded reference to network isolation type when calling
quickstart script.

Change-Id: Ibd60ad0145e8fd873392530d097e3a4c276f7b84
2017-01-27 17:30:25 +00:00
jkilpatr 33f30eb58a Revert making log and results directory
Reverting Commit: 2ba6da9022

This needed much more testing before merging, my bad.
I strongly suggest we don't add this functionality
in a seperate commit again, it doesn't make sense
to reorg and test all of this and then the pip commit
right after. Just add it's functionality there.

Change-Id: Iee7aa439fbc077c3c71f67b625b67fc55a86f199
2017-01-26 09:48:10 -05:00
Chandan Kumar 2ba6da9022 Make results and log directory path using browbeat-config
* if results and log path not found, create it.
* Also resolve $FOO in browbeat config paths -jkilpatr

Change-Id: Ie5ec32386ca0d6db9177d9a3a55387b5b1e88a69
2017-01-24 17:18:18 +00:00
jkilpatr 6ec7e7d26c Disable grafana in oooq runs for now
While the Grafana infra is having trouble it's causing tests to fail
so until it's all squared away I'm going to make it non-mandatory

Change-Id: Iaa779f19325bb5aef830bd93086995cb2beef3b5
2017-01-17 16:06:37 -05:00
jkilpatr 8c6acd3efc Update commit pinning
https://review.openstack.org/#/c/403677 The above commit is currently
required for the Microbrow CI to work well. It should be clean enough
to be mainlined now but no one wants to merge someone elses hack. Anyways
this just moves the pin forward for the sake of staying close to upstream.

Change-Id: I1d455e3ecc490c62289be25eaec4bfd0a124f346
2017-01-16 07:53:07 -05:00
Jenkins 948fe06a9b Merge "Metadata and restructure" 2017-01-13 14:31:32 +00:00
Joe Talerico c9b8d88697 Metadata and restructure
Moving some methods into Tools to cleanup browbeat.py

+ Adding Ansible task to test regather

Change-Id: I4a562ae77a90528df2e7f8779895b1627c9dff11
2017-01-12 13:24:32 -05:00
Sai Sindhur Malleni 7286fb07c3 Let user specify a duplicate concurrency value
In some cases the user might want to run the same scenario with the
same concurrency value multiple times. In that case currently Browbeat
exits with an ugly traceback since the test name would be based on the
concurrency and hyaving the same concurrency twice results in trying to
create a file that already exists.

This commit makes the code smart enough to recognize duplicate concurrency
values and name files accordingly. For example. having 16 twice as the
concurrency value for ceilometer_list_meters scenario produces two different
log files as 'results/20160718-202008/CeilometerMeters/ceilometer_list_meters/
20160718-202008-browbeat-ceilometer_list_meters-16-iteration-0.log' and
'results/20160718-202008/CeilometerMeters/ceilometer_list_meters/
20160718-202008-browbeat-ceilometer_list_meters-16-2-iteration-0.log.

Change-Id: Ie39c8c54ddf0435ff46975bfc4a5fd62995b2a32
2017-01-11 12:29:36 -05:00