Retire Sahara: remove repo content

Sahara project is retiring
- https://review.opendev.org/c/openstack/governance/+/919374

this commit remove the content of this project repo

Depends-On: https://review.opendev.org/c/openstack/project-config/+/919376
Change-Id: I0995b857b4277b95946c5457180cdcfa9c3c7ec2
This commit is contained in:
Ghanshyam Mann 2024-05-10 17:28:05 -07:00
parent 3ae7a19664
commit 3815c917a3
314 changed files with 8 additions and 19286 deletions

View File

@ -1,13 +0,0 @@
[run]
branch = True
source = sahara_tests
omit =
.tox/*
sahara_tests/unit/*
[paths]
source = sahara_tests
[report]
ignore_errors = True
precision = 3

27
.gitignore vendored
View File

@ -1,27 +0,0 @@
*.egg-info
*.egg[s]
*.log
*.py[co]
.coverage
.testrepository
.tox
.stestr
.venv
AUTHORS
ChangeLog
build
cover
develop-eggs
dist
doc/build
doc/html
eggs
scenario_key-*
sdist
target
tools/lintstack.head.py
tools/pylint_exceptions
doc/source/sample.config
# Files created by releasenotes build
releasenotes/build

View File

@ -1,3 +0,0 @@
[DEFAULT]
test_path=sahara_tests/unit
group_regex=([^\.]+\.)+

View File

@ -1,325 +0,0 @@
- project:
queue: sahara
templates:
- publish-openstack-docs-pti
- openstack-python3-ussuri-jobs
- release-notes-jobs-python3
check:
jobs:
- openstack-tox-cover:
voting: false
- openstack-tox-pylint:
voting: false
- sahara-tests-scenario:
voting: false
- sahara-tests-scenario-v2:
voting: false
- sahara-tests-tempest:
voting: false
- sahara-tests-tempest-v2:
voting: false
- sahara-tests-scenario-wallaby:
voting: false
- sahara-tests-scenario-victoria:
voting: false
- sahara-tests-scenario-ussuri:
voting: false
- sahara-tests-scenario-train:
voting: false
- sahara-tests-scenario-stein:
voting: false
- openstack-tox-py36:
voting: false
- openstack-tox-py37:
voting: false
gate:
jobs:
- sahara-tests-scenario:
voting: false
- sahara-tests-scenario-v2:
voting: false
- sahara-tests-tempest:
voting: false
- sahara-tests-tempest-v2:
voting: false
- openstack-tox-py36:
voting: false
- openstack-tox-py37:
voting: false
experimental:
jobs:
- sahara-tests-scenario-multinode-spark
- job:
name: sahara-tests-tempest
description: |
Run Tempest tests from the Sahara plugin.
parent: devstack-tempest
required-projects:
- openstack/sahara-tests
- openstack/sahara
- openstack/sahara-plugin-ambari
- openstack/sahara-plugin-cdh
- openstack/sahara-plugin-mapr
- openstack/sahara-plugin-spark
- openstack/sahara-plugin-storm
- openstack/sahara-plugin-vanilla
- openstack/heat
# - openstack/ceilometer
vars:
tempest_test_regex: ^(sahara_tempest_plugin.tests.)
tox_envlist: all
devstack_localrc:
IMAGE_URLS: https://cloud-images.ubuntu.com/xenial/current/xenial-server-cloudimg-amd64-disk1.img
TEMPEST_PLUGINS: /opt/stack/sahara-tests
USE_PYTHON3: True
devstack_local_conf:
test-config:
$TEMPEST_CONFIG:
data_processing:
test_image_name: xenial-server-cloudimg-amd64-disk1
test_ssh_user: ubuntu
data-processing-feature-enabled:
s3: 'True'
devstack_plugins:
sahara: https://opendev.org/openstack/sahara
heat: https://opendev.org/openstack/heat
# ceilometer: https://opendev.org/openstack/ceilometer
devstack_services:
tls-proxy: false
irrelevant-files:
- ^.*\.rst$
- ^api-ref/.*$
- ^doc/.*$
- ^etc/.*$
- ^releasenotes/.*$
- ^sahara_tests/.*$
- job:
name: sahara-tests-tempest-v2
description: |
Run Tempest tests from the Sahara plugin against Sahara APIv2
and Python 3.
parent: sahara-tests-tempest
required-projects:
- openstack/python-saharaclient
branches: master
vars:
devstack_localrc:
USE_PYTHON3: 'True'
devstack_local_conf:
test-config:
$TEMPEST_CONFIG:
data-processing:
api_version_saharaclient: '2'
use_api_v2: 'True'
devstack_services:
s-account: false
s-container: false
s-object: false
s-proxy: false
# variant for pre-Rocky branches (no S3)
- job:
name: sahara-tests-tempest
branches:
- stable/ocata
- stable/pike
- stable/queens
vars:
devstack_localrc:
USE_PYTHON3: 'False'
devstack_local_conf:
test-config:
$TEMPEST_CONFIG:
data-processing-feature-enabled:
s3: 'False'
# variant for pre-Ussuri branches (Python 2 by default)
- job:
name: sahara-tests-tempest
branches:
- stable/rocky
- stable/stein
- stable/train
vars:
devstack_localrc:
USE_PYTHON3: 'False'
- job:
name: sahara-tests-scenario
description: |
Run scenario tests for Sahara.
parent: devstack
roles:
- zuul: openstack/devstack
- zuul: openstack/sahara-image-elements
required-projects:
- openstack/sahara-tests
- openstack/sahara
- openstack/sahara-plugin-ambari
- openstack/sahara-plugin-cdh
- openstack/sahara-plugin-mapr
- openstack/sahara-plugin-spark
- openstack/sahara-plugin-storm
- openstack/sahara-plugin-vanilla
- openstack/heat
# - openstack/ceilometer
- openstack/sahara-image-elements
- openstack/shade
run: playbooks/sahara-tests-scenario.yaml
host-vars:
controller:
devstack_plugins:
sahara: https://opendev.org/openstack/sahara
heat: https://opendev.org/openstack/heat
# ceilometer: https://opendev.org/openstack/ceilometer
shade: https://opendev.org/openstack/shade
group-vars:
subnode:
devstack_services:
tls-proxy: false
vars:
devstack_services:
tls-proxy: false
devstack_localrc:
# required to contain (almost any) custom-built image
SWIFT_LOOPBACK_DISK_SIZE: 8G
SWIFT_MAX_FILE_SIZE: 8589934592
USE_PYTHON3: True
devstack_local_conf:
post-config:
$SAHARA_CONF_FILE:
DEFAULT:
min_transient_cluster_active_time: 90
sahara_image_name: xenial-server
sahara_image_url: https://cloud-images.ubuntu.com/xenial/current/xenial-server-cloudimg-amd64-disk1.img
sahara_plugin: fake
sahara_plugin_version: '0.1'
sahara_scenario_test_template: fake.yaml.mako
sahara_scenario_tox_env: venv
irrelevant-files:
- ^.*\.rst$
- ^api-ref/.*$
- ^doc/.*$
- ^releasenotes/.*$
- ^sahara_tempest_plugin/.*$
- job:
name: sahara-tests-scenario-v2
parent: sahara-tests-scenario
vars:
sahara_scenario_use_api_v2: True
- job:
name: sahara-tests-scenario-wallaby
parent: sahara-tests-scenario-py3
override-checkout: stable/wallaby
- job:
name: sahara-tests-scenario-victoria
parent: sahara-tests-scenario-py3
override-checkout: stable/victoria
- job:
name: sahara-tests-scenario-ussuri
parent: sahara-tests-scenario-py3
nodeset: openstack-single-node-bionic
override-checkout: stable/ussuri
# pre-Ussuri scenario tests: fully-py3 based according the rules
# (jobs running on master must use Python 3), but use RGW
# on pre-Train branches as Swift/py3 does not work there.
- job:
name: sahara-tests-scenario-train
parent: sahara-tests-scenario
nodeset: openstack-single-node-bionic
override-checkout: stable/train
- job:
name: sahara-tests-scenario-stein
parent: sahara-tests-scenario-py3
nodeset: openstack-single-node-bionic
override-checkout: stable/stein
- job:
name: sahara-tests-scenario-modwsgi
description: |
Run scenario tests on a Sahara deployment based on mod_wsgi.
parent: sahara-tests-scenario
vars:
devstack_localrc:
SAHARA_USE_MOD_WSGI: 'True'
# variant to be used on pre-Ussuri branches (Python 2 only)
- job:
name: sahara-tests-scenario
branches:
- stable/rocky
- stable/stein
- stable/train
vars:
devstack_localrc:
USE_PYTHON3: 'False'
- job:
name: sahara-tests-scenario-radosgw
description: |
Run scenario tests for Sahara, using RadosGW instead of Swift.
parent: sahara-tests-scenario
required-projects:
- openstack/devstack-plugin-ceph
host-vars:
controller:
devstack_plugins:
devstack-plugin-ceph: 'https://opendev.org/openstack/devstack-plugin-ceph'
vars:
devstack_localrc:
ENABLE_CEPH_CINDER: 'False'
ENABLE_CEPH_C_BAK: 'False'
ENABLE_CEPH_GLANCE: 'False'
ENABLE_CEPH_MANILA: 'False'
ENABLE_CEPH_NOVA: 'False'
ENABLE_CEPH_RGW: 'True'
devstack_local_conf:
test-config:
"$TEMPEST_CONFIG":
service_available:
swift: 'True'
devstack_services:
s-account: false
s-container: false
s-object: false
s-proxy: false
sahara_enable_s3: True
- job:
name: sahara-tests-scenario-py3
description: |
Run scenario tests on a Sahara deployment based on Python 3.
Required by some pre-Ussuri branches of sahara, which also
needs swift (not fully ported to Python 3 at the time).
parent: sahara-tests-scenario-radosgw
vars:
devstack_localrc:
USE_PYTHON3: 'True'
- job:
name: sahara-tests-scenario-multinode-spark
description: |
Run scenario tests based on Spark on a multinode Sahara deployment.
parent: sahara-tests-scenario-radosgw
nodeset: openstack-two-node
vars:
sahara_image_name: xenial-spark
sahara_image_url: '{{ ansible_user_dir }}/{{ zuul.projects["opendev.org/openstack/sahara-image-elements"].src_dir }}/ubuntu_sahara_spark_latest.qcow2'
sahara_plugin: spark
sahara_plugin_version: 1.6.0
sahara_scenario_test_template: spark-1.6.0.yaml.mako
sahara_flavors:
sah1.small:
id: 20
ram: 1536
disk: 20
vcpus: 1
ephemeral: 0

View File

@ -1,19 +0,0 @@
The source repository for this project can be found at:
https://opendev.org/openstack/sahara-tests
Pull requests submitted through GitHub are not monitored.
To start contributing to OpenStack, follow the steps in the contribution guide
to set up and use Gerrit:
https://docs.openstack.org/contributors/code-and-documentation/quick-start.html
Bugs should be filed on Storyboard:
https://storyboard.openstack.org/#!/project/openstack/sahara-tests
For more specific information about contributing to this repository, see the
sahara-tests contributor guide:
https://docs.openstack.org/sahara-tests/latest/contributor/contributing.html

View File

@ -1,53 +0,0 @@
Sahara Style Commandments
==========================
- Step 1: Read the OpenStack Style Commandments
https://docs.openstack.org/hacking/latest/
- Step 2: Read on
Sahara Specific Commandments
-----------------------------
Commit Messages
---------------
Using a common format for commit messages will help keep our git history
readable. Follow these guidelines:
- [S365] First, provide a brief summary of 50 characters or less. Summaries
of greater then 72 characters will be rejected by the gate.
- [S364] The first line of the commit message should provide an accurate
description of the change, not just a reference to a bug or blueprint.
Imports
-------
- [S366, S367] Organize your imports according to the ``Import order``
Dictionaries/Lists
------------------
- [S360] Ensure default arguments are not mutable.
- [S368] Must use a dict comprehension instead of a dict constructor with a
sequence of key-value pairs. For more information, please refer to
http://legacy.python.org/dev/peps/pep-0274/
=======
Logs
----
- [S369] Check LOG.info translations
- [S370] Check LOG.error translations
- [S371] Check LOG.warning translations
- [S372] Check LOG.critical translation
- [S373] LOG.debug never used for translations
- [S374] You used a deprecated log level
Importing json
--------------
- [S375] It's more preferable to use ``jsonutils`` from ``oslo_serialization``
instead of ``json`` for operating with ``json`` objects.

175
LICENSE
View File

@ -1,175 +0,0 @@
Apache License
Version 2.0, January 2004
http://www.apache.org/licenses/
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
1. Definitions.
"License" shall mean the terms and conditions for use, reproduction,
and distribution as defined by Sections 1 through 9 of this document.
"Licensor" shall mean the copyright owner or entity authorized by
the copyright owner that is granting the License.
"Legal Entity" shall mean the union of the acting entity and all
other entities that control, are controlled by, or are under common
control with that entity. For the purposes of this definition,
"control" means (i) the power, direct or indirect, to cause the
direction or management of such entity, whether by contract or
otherwise, or (ii) ownership of fifty percent (50%) or more of the
outstanding shares, or (iii) beneficial ownership of such entity.
"You" (or "Your") shall mean an individual or Legal Entity
exercising permissions granted by this License.
"Source" form shall mean the preferred form for making modifications,
including but not limited to software source code, documentation
source, and configuration files.
"Object" form shall mean any form resulting from mechanical
transformation or translation of a Source form, including but
not limited to compiled object code, generated documentation,
and conversions to other media types.
"Work" shall mean the work of authorship, whether in Source or
Object form, made available under the License, as indicated by a
copyright notice that is included in or attached to the work
(an example is provided in the Appendix below).
"Derivative Works" shall mean any work, whether in Source or Object
form, that is based on (or derived from) the Work and for which the
editorial revisions, annotations, elaborations, or other modifications
represent, as a whole, an original work of authorship. For the purposes
of this License, Derivative Works shall not include works that remain
separable from, or merely link (or bind by name) to the interfaces of,
the Work and Derivative Works thereof.
"Contribution" shall mean any work of authorship, including
the original version of the Work and any modifications or additions
to that Work or Derivative Works thereof, that is intentionally
submitted to Licensor for inclusion in the Work by the copyright owner
or by an individual or Legal Entity authorized to submit on behalf of
the copyright owner. For the purposes of this definition, "submitted"
means any form of electronic, verbal, or written communication sent
to the Licensor or its representatives, including but not limited to
communication on electronic mailing lists, source code control systems,
and issue tracking systems that are managed by, or on behalf of, the
Licensor for the purpose of discussing and improving the Work, but
excluding communication that is conspicuously marked or otherwise
designated in writing by the copyright owner as "Not a Contribution."
"Contributor" shall mean Licensor and any individual or Legal Entity
on behalf of whom a Contribution has been received by Licensor and
subsequently incorporated within the Work.
2. Grant of Copyright License. Subject to the terms and conditions of
this License, each Contributor hereby grants to You a perpetual,
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
copyright license to reproduce, prepare Derivative Works of,
publicly display, publicly perform, sublicense, and distribute the
Work and such Derivative Works in Source or Object form.
3. Grant of Patent License. Subject to the terms and conditions of
this License, each Contributor hereby grants to You a perpetual,
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
(except as stated in this section) patent license to make, have made,
use, offer to sell, sell, import, and otherwise transfer the Work,
where such license applies only to those patent claims licensable
by such Contributor that are necessarily infringed by their
Contribution(s) alone or by combination of their Contribution(s)
with the Work to which such Contribution(s) was submitted. If You
institute patent litigation against any entity (including a
cross-claim or counterclaim in a lawsuit) alleging that the Work
or a Contribution incorporated within the Work constitutes direct
or contributory patent infringement, then any patent licenses
granted to You under this License for that Work shall terminate
as of the date such litigation is filed.
4. Redistribution. You may reproduce and distribute copies of the
Work or Derivative Works thereof in any medium, with or without
modifications, and in Source or Object form, provided that You
meet the following conditions:
(a) You must give any other recipients of the Work or
Derivative Works a copy of this License; and
(b) You must cause any modified files to carry prominent notices
stating that You changed the files; and
(c) You must retain, in the Source form of any Derivative Works
that You distribute, all copyright, patent, trademark, and
attribution notices from the Source form of the Work,
excluding those notices that do not pertain to any part of
the Derivative Works; and
(d) If the Work includes a "NOTICE" text file as part of its
distribution, then any Derivative Works that You distribute must
include a readable copy of the attribution notices contained
within such NOTICE file, excluding those notices that do not
pertain to any part of the Derivative Works, in at least one
of the following places: within a NOTICE text file distributed
as part of the Derivative Works; within the Source form or
documentation, if provided along with the Derivative Works; or,
within a display generated by the Derivative Works, if and
wherever such third-party notices normally appear. The contents
of the NOTICE file are for informational purposes only and
do not modify the License. You may add Your own attribution
notices within Derivative Works that You distribute, alongside
or as an addendum to the NOTICE text from the Work, provided
that such additional attribution notices cannot be construed
as modifying the License.
You may add Your own copyright statement to Your modifications and
may provide additional or different license terms and conditions
for use, reproduction, or distribution of Your modifications, or
for any such Derivative Works as a whole, provided Your use,
reproduction, and distribution of the Work otherwise complies with
the conditions stated in this License.
5. Submission of Contributions. Unless You explicitly state otherwise,
any Contribution intentionally submitted for inclusion in the Work
by You to the Licensor shall be under the terms and conditions of
this License, without any additional terms or conditions.
Notwithstanding the above, nothing herein shall supersede or modify
the terms of any separate license agreement you may have executed
with Licensor regarding such Contributions.
6. Trademarks. This License does not grant permission to use the trade
names, trademarks, service marks, or product names of the Licensor,
except as required for reasonable and customary use in describing the
origin of the Work and reproducing the content of the NOTICE file.
7. Disclaimer of Warranty. Unless required by applicable law or
agreed to in writing, Licensor provides the Work (and each
Contributor provides its Contributions) on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
implied, including, without limitation, any warranties or conditions
of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
PARTICULAR PURPOSE. You are solely responsible for determining the
appropriateness of using or redistributing the Work and assume any
risks associated with Your exercise of permissions under this License.
8. Limitation of Liability. In no event and under no legal theory,
whether in tort (including negligence), contract, or otherwise,
unless required by applicable law (such as deliberate and grossly
negligent acts) or agreed to in writing, shall any Contributor be
liable to You for damages, including any direct, indirect, special,
incidental, or consequential damages of any character arising as a
result of this License or out of the use or inability to use the
Work (including but not limited to damages for loss of goodwill,
work stoppage, computer failure or malfunction, or any and all
other commercial damages or losses), even if such Contributor
has been advised of the possibility of such damages.
9. Accepting Warranty or Additional Liability. While redistributing
the Work or Derivative Works thereof, You may choose to offer,
and charge a fee for, acceptance of support, warranty, indemnity,
or other liability obligations and/or rights consistent with this
License. However, in accepting such obligations, You may act only
on Your own behalf and on Your sole responsibility, not on behalf
of any other Contributor, and only if You agree to indemnify,
defend, and hold each Contributor harmless for any liability
incurred by, or claims asserted against, such Contributor by reason
of your accepting any such warranty or additional liability.

View File

@ -1,38 +1,10 @@
========================
Team and repository tags
========================
This project is no longer maintained.
.. image:: https://governance.openstack.org/tc/badges/sahara-tests.svg
:target: https://governance.openstack.org/tc/reference/tags/index.html
The contents of this repository are still available in the Git
source code management system. To see the contents of this
repository before it reached its end of life, please check out the
previous commit with "git checkout HEAD^1".
.. Change things from this point on
Tests for Sahara project
========================
.. image:: https://img.shields.io/pypi/v/sahara-tests.svg
:target: https://pypi.org/project/sahara-tests/
:alt: Latest Version
.. image:: https://img.shields.io/pypi/dm/sahara-tests.svg
:target: https://pypi.org/project/sahara-tests/
:alt: Downloads
In sahara_tests folder we have next tools:
- Sahara-scenario framework
- Sahara tempest tests
* License: Apache License, Version 2.0
* `Sahara-scenario documentation`_
* `PyPi`_ - package installation
* `Storyboard project`_ - release management
* `Source`_
* `Specs`_
* `Release notes`_
.. _Sahara-scenario documentation: https://docs.openstack.org/sahara-tests/latest/scenario.html
.. _PyPi: https://pypi.org/project/sahara-tests
.. _Storyboard project: https://storyboard.openstack.org/#!/project/940
.. _Source: https://opendev.org/openstack/sahara-tests
.. _Specs: https://specs.openstack.org/openstack/sahara-specs/
.. _Release notes: https://docs.openstack.org/releasenotes/sahara-tests/unreleased.html
For any further questions, please email
openstack-discuss@lists.openstack.org or join #openstack-dev on
OFTC.

View File

@ -1,7 +0,0 @@
# The order of packages is significant, because pip processes them in the order
# of appearance. Changing the order has an impact on the overall integration
# process, which may cause wedges in the gate later.
openstackdocstheme>=2.2.1 # Apache-2.0
reno>=3.1.0 # Apache-2.0
sphinx>=2.0.0,!=2.1.0 # BSD

View File

@ -1,239 +0,0 @@
# -*- coding: utf-8 -*-
#
# sahara-tests documentation build configuration file, created by
# sphinx-quickstart on Mon Dec 21 21:22:00 2015.
#
# This file is execfile()d with the current directory set to its containing dir.
#
# Note that not all possible configuration values are present in this
# autogenerated file.
#
# All configuration values have a default; values that are commented out
# serve to show the default.
# If extensions (or modules to document with autodoc) are in another directory,
# add these directories to sys.path here. If the directory is relative to the
# documentation root, use os.path.abspath to make it absolute, like shown here.
#sys.path.insert(0, os.path.abspath('.'))
# -- General configuration -----------------------------------------------------
# If your documentation needs a minimal Sphinx version, state it here.
#needs_sphinx = '1.0'
# Add any Sphinx extension module names here, as strings. They can be extensions
# coming with Sphinx (named 'sphinx.ext.*') or your custom ones.
extensions = [
'reno.sphinxext',
'openstackdocstheme',
]
# openstackdocstheme options
openstackdocs_repo_name = 'openstack/sahara-tests'
openstackdocs_auto_name = False
openstackdocs_use_storyboard = True
# Add any paths that contain templates here, relative to this directory.
templates_path = ['_templates']
# The suffix of source filenames.
source_suffix = '.rst'
# The encoding of source files.
#source_encoding = 'utf-8-sig'
# The master toctree document.
master_doc = 'index'
# General information about the project.
project = u'sahara-tests'
copyright = u'2015, Sahara team'
# The language for content autogenerated by Sphinx. Refer to documentation
# for a list of supported languages.
#language = None
# There are two options for replacing |today|: either, you set today to some
# non-false value, then it is used:
#today = ''
# Else, today_fmt is used as the format for a strftime call.
#today_fmt = '%B %d, %Y'
# List of patterns, relative to source directory, that match files and
# directories to ignore when looking for source files.
exclude_patterns = []
# The reST default role (used for this markup: `text`) to use for all documents.
#default_role = None
# If true, '()' will be appended to :func: etc. cross-reference text.
#add_function_parentheses = True
# If true, the current module name will be prepended to all description
# unit titles (such as .. function::).
#add_module_names = True
# If true, sectionauthor and moduleauthor directives will be shown in the
# output. They are ignored by default.
#show_authors = False
# The name of the Pygments (syntax highlighting) style to use.
pygments_style = 'native'
# A list of ignored prefixes for module index sorting.
#modindex_common_prefix = []
# -- Options for HTML output ---------------------------------------------------
# The theme to use for HTML and HTML Help pages. See the documentation for
# a list of builtin themes.
html_theme = 'openstackdocs'
# Theme options are theme-specific and customize the look and feel of a theme
# further. For a list of options available for each theme, see the
# documentation.
#html_theme_options = {}
# Add any paths that contain custom themes here, relative to this directory.
#html_theme_path = []
# The name for this set of Sphinx documents. If None, it defaults to
# "<project> v<release> documentation".
#html_title = None
# A shorter title for the navigation bar. Default is the same as html_title.
#html_short_title = None
# The name of an image file (relative to this directory) to place at the top
# of the sidebar.
#html_logo = None
# The name of an image file (within the static path) to use as favicon of the
# docs. This file should be a Windows icon file (.ico) being 16x16 or 32x32
# pixels large.
#html_favicon = None
# Add any paths that contain custom static files (such as style sheets) here,
# relative to this directory. They are copied after the builtin static files,
# so a file named "default.css" will overwrite the builtin "default.css".
#html_static_path = ['_static']
# If not '', a 'Last updated on:' timestamp is inserted at every page bottom,
# using the given strftime format.
#html_last_updated_fmt = '%b %d, %Y'
# If true, SmartyPants will be used to convert quotes and dashes to
# typographically correct entities.
html_use_smartypants = False
# Custom sidebar templates, maps document names to template names.
#html_sidebars = {}
# Additional templates that should be rendered to pages, maps page names to
# template names.
#html_additional_pages = {}
# If false, no module index is generated.
#html_domain_indices = True
# If false, no index is generated.
#html_use_index = True
# If true, the index is split into individual pages for each letter.
#html_split_index = False
# If true, links to the reST sources are added to the pages.
#html_show_sourcelink = True
# If true, "Created using Sphinx" is shown in the HTML footer. Default is True.
#html_show_sphinx = True
# If true, "(C) Copyright ..." is shown in the HTML footer. Default is True.
#html_show_copyright = True
# If true, an OpenSearch description file will be output, and all pages will
# contain a <link> tag referring to it. The value of this option must be the
# base URL from which the finished HTML is served.
#html_use_opensearch = ''
# This is the file name suffix for HTML files (e.g. ".xhtml").
#html_file_suffix = None
# Output file base name for HTML help builder.
htmlhelp_basename = 'sahara-testsdoc'
# -- Options for LaTeX output --------------------------------------------------
latex_elements = {
# The paper size ('letterpaper' or 'a4paper').
#'papersize': 'letterpaper',
# The font size ('10pt', '11pt' or '12pt').
#'pointsize': '10pt',
# Additional stuff for the LaTeX preamble.
#'preamble': '',
}
# Grouping the document tree into LaTeX files. List of tuples
# (source start file, target name, title, author, documentclass [howto/manual]).
latex_documents = [
('index', 'sahara-tests.tex', u'sahara-tests Documentation',
u'Sahara team', 'manual'),
]
# The name of an image file (relative to this directory) to place at the top of
# the title page.
#latex_logo = None
# For "manual" documents, if this is true, then toplevel headings are parts,
# not chapters.
#latex_use_parts = False
# If true, show page references after internal links.
#latex_show_pagerefs = False
# If true, show URL addresses after external links.
#latex_show_urls = False
# Documents to append as an appendix to all manuals.
#latex_appendices = []
# If false, no module index is generated.
#latex_domain_indices = True
# -- Options for manual page output --------------------------------------------
# One entry per manual page. List of tuples
# (source start file, name, description, authors, manual section).
man_pages = [
('index', 'sahara-tests', u'sahara-tests Documentation',
[u'Sahara team'], 1)
]
# If true, show URL addresses after external links.
#man_show_urls = False
# -- Options for Texinfo output ------------------------------------------------
# Grouping the document tree into Texinfo files. List of tuples
# (source start file, target name, title, author,
# dir menu entry, description, category)
texinfo_documents = [
('index', 'sahara-tests', u'sahara-tests Documentation',
u'Sahara team', 'sahara-tests', 'One line description of project.',
'Miscellaneous'),
]
# Documents to append as an appendix to all manuals.
#texinfo_appendices = []
# If false, no module index is generated.
#texinfo_domain_indices = True
# How to display URL addresses: 'footnote', 'no', or 'inline'.
#texinfo_show_urls = 'footnote'

View File

@ -1,14 +0,0 @@
============================
So You Want to Contribute...
============================
For general information on contributing to OpenStack, please check out the
`contributor guide <https://docs.openstack.org/contributors/>`_ to get started.
It covers all the basics that are common to all OpenStack projects: the
accounts you need, the basics of interacting with our Gerrit review system, how
we communicate as a community, etc.
sahara-tests is maintained by the OpenStack Sahara project.
To understand our development process and how you can contribute to it, please
look at the Sahara project's general contributor's page:
http://docs.openstack.org/sahara/latest/contributor/contributing.html

View File

@ -1,52 +0,0 @@
Welcome to sahara-tests's documentation!
========================================
Tests for the
`Sahara project <https://docs.openstack.org/sahara/latest/>`_.
It provides Sahara scenario tests framework and tempest tests.
User guide
----------
**Scenario Tests**
.. toctree::
:maxdepth: 1
scenario
**Tempest Plugin**
.. toctree::
:maxdepth: 1
tempest-plugin
**Contributor Guide**
.. toctree::
:maxdepth: 1
contributor/contributing
Source
------
* License: Apache License, Version 2.0
* `PyPi`_ - package installation
* `Storyboard project`_ - release management
* `Source`_
* `Specs`_
* :doc:`releasenotes`
.. _PyPi: https://pypi.org/project/sahara-tests
.. _Storyboard project: https://storyboard.openstack.org/#!/project/940
.. _Source: https://opendev.org/openstack/sahara-tests
.. _Specs: https://specs.openstack.org/openstack/sahara-specs/
Indices and tables
------------------
* :ref:`genindex`
* :ref:`search`

View File

@ -1,11 +0,0 @@
:orphan:
.. The :orphan: directive is required because
this file is not in the toctree
even if it is included by a :doc: directive.
=============
Release Notes
=============
.. release-notes::

View File

@ -1,792 +0,0 @@
System(scenario) tests for Sahara project
=========================================
_`Authentication`
-----------------
You need to be authenticated to run these tests. To authenticate you should
create openrc file (like in devstack) and source it.
.. sourcecode:: bash
#!/bin/sh
export OS_TENANT_NAME='admin'
export OS_PROJECT_NAME='admin'
export OS_USERNAME='admin'
export OS_PASSWORD='admin'
export OS_AUTH_URL='http://localhost:5000/v2.0'
..
Also you can specify the authentication details for Sahara tests using flags
in run-command:
.. sourcecode:: console
List of flags:
--os-username
--os-password
--os-project-name
--os-auth-url
..
Last way to set the authentication details for these tests is using a
``clouds.yaml`` file.
After creating the file, you can set ``OS_CLOUD`` variable or ``--os-cloud``
flag to the name of the cloud you have created and those values will be used.
We have an example of a ``clouds.yaml`` file, and you can find it in
``sahara_tests/unit/scenario/clouds.yaml``.
Using this example, you can create your own file with clouds instead of
setting the ``OS_CLOUD`` variable or the ``--os-cloud`` flag. Note that more
than one cloud can be defined in the same file.
Here you can find more information about
`clouds
<https://docs.openstack.org/os-client-config/latest/user/configuration.html#config-files>`_
Template variables
------------------
You need to define these variables because they are used in mako template
files and replace the values from scenario files. These names pass to the test
runner through the ``-V`` parameter and a special config file.
The format of the config file is an INI-style file, as accepted by the Python
ConfigParser module. The key/values must be specified in the DEFAULT section.
Variables and defaults templates
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
The following variables are currently used by defaults templates:
+-----------------------------+--------+-------------------------+
| Variable | Type | Value |
+=============================+========+=========================+
| network_private_name | string | private network name |
| | | for OS_PROJECT_NAME |
+-----------------------------+--------+-------------------------+
| network_public_name | string | public network name |
+-----------------------------+--------+-------------------------+
| <plugin_name_version>_image | string | name of the image to be |
| | | used for the specific |
| | | plugin/version |
+-----------------------------+--------+-------------------------+
| {ci,medium,large}_flavor_id | string | IDs of flavor with |
| | | different size |
+-----------------------------+--------+-------------------------+
After finishing with authentication and configuration of file with template
variables, you can run Sahara tests using Sahara Scenario Framework.
How to run
----------
Scenario framework has default templates for testing Sahara. To
use them, specify plugin and version (for transient check and fake plugin,
version is not necessary):
.. sourcecode:: console
$ tox -e venv -- sahara-scenario -p vanilla -v 2.7.1
..
Different OpenStack releases may require different configuration for the
same set of plugin and versions. If you use the plugin and version flag,
if you want to use the configuration file for a specific OpenStack release
supported by sahara-scenario, you can specify also the ``-r RELEASE``
argument, where ``RELEASE`` is the official name of the OpenStack release.
By default only default configuration files for the specified plugin and
version (and release, if any) are included. Also, if any job configuration
is included, only jobs not tagged with any features will be executed.
In order to enable feature-specific configuration settings, pass
the list of requested features through the ``--feature`` (``-f``) parameter.
The parameter makes sure that:
* additional base configuration file which are feature-specific are included;
* in addition to non-tagged jobs, jobs which are tagged with the specified
features are included too.
Example:
.. sourcecode:: console
$ tox -e venv -- sahara-scenario -p vanilla -v 2.7.1 -f s3 -f myfeature -r rocky
..
Create the YAML and/or the YAML mako template files for scenario tests
``etc/scenario/simple-testcase.yaml``.
You can take a look at sample YAML files `How to write scenario files`_.
The file ``templatevars.ini`` contains the values of the variables referenced
by any testcase you are going to run.
If you want to run tests for the Vanilla plugin with the Hadoop version 2.7.1,
you should create ``templatevars.ini`` with the appropriate values (see the
section `Variables and defaults templates`_) and use the following tox env:
.. sourcecode:: console
$ tox -e venv -- sahara-scenario -V templatevars.ini sahara_tests/scenario/defaults/vanilla-2.7.1.yaml.mako
..
Credentials locate in ``sahara_tests/scenario/defaults/credentials.yaml.mako``.
This file replace the variables included into testcase YAML or YAML Mako files
with the values defined into ``templatevars.ini``.
.. sourcecode:: console
$ tox -e venv -- sahara-scenario -V templatevars.ini sahara_tests/scenario/defaults/credentials.yaml.mako sahara_tests/scenario/defaults/vanilla-2.7.1.yaml.mako
..
The most useful and comfortable way to run sahara-scenario tests for Vanilla
Plugin:
.. sourcecode:: console
$ tox -e venv -- sahara-scenario -V templatevars.ini sahara_tests/scenario/defaults/credantials.yaml.mako -p vanilla -v 2.7.1
..
For more information about writing scenario YAML files, see the section
section `How to write scenario files`_.
Virtual environment flags
-------------------------
You can use the following flags to the Sahara scenario tests.
Optional arguments
~~~~~~~~~~~~~~~~~~
+-------------------+----------------------------+
| Arguments | Description |
+===================+============================+
| --help, -h | show help message and exit |
+-------------------+----------------------------+
| --variable_file, | path to the file with |
| -V | template variables |
+-------------------+----------------------------+
| --verbose | increase output verbosity |
+-------------------+----------------------------+
| --validate | validate yaml-files, |
| | tests will not be run |
+-------------------+----------------------------+
| --args ARGS | pairs of argument |
| | key:value |
+-------------------+----------------------------+
| --plugin, | specify plugin name |
| -p PLUGIN | |
+-------------------+----------------------------+
| --plugin_version, | specify plugin version |
| -v PLUGIN_VERSION | |
+-------------------+----------------------------+
| --release, | specify Sahara release |
| -r RELEASE | |
+-------------------+----------------------------+
| --report | write results to file |
+-------------------+----------------------------+
| --feature, | list of features |
| -f FEAT1 | that should be enabled |
| [-f FEAT2 ...] | |
+-------------------+----------------------------+
| --count COUNT | specify count of runs |
+-------------------+----------------------------+
| --os-cloud name | name of cloud to connect |
+-------------------+----------------------------+
| --os-auth-type, | |
| --os-auth-plugin | authentication type to use |
| name | |
+-------------------+----------------------------+
Authentication options
~~~~~~~~~~~~~~~~~~~~~~
Options specific to the password plugin.
+--------------------------+--------------------------------+
| Arguments | Description |
+==========================+================================+
| --os-auth-url | authentication URL |
| OS_AUTH_URL | |
+--------------------------+--------------------------------+
| --os-domain-id | domain ID to scope to |
| OS_DOMAIN_ID | |
+--------------------------+--------------------------------+
| --os-domain-name | domain name to scope to |
| OS_DOMAIN_NAME | |
+--------------------------+--------------------------------+
| --os-project-id | |
| --os-tenant-id | project ID to scope to |
| OS_PROJECT_ID | |
+--------------------------+--------------------------------+
| --os-project-name | |
| --os-tenant-name | project name to scope to |
| OS_PROJECT_NAME | |
+--------------------------+--------------------------------+
| --os-project-domain-id | domain ID containing project |
| OS_PROJECT_DOMAIN_ID | |
+--------------------------+--------------------------------+
| --os-project-domain-name | domain name containing project |
| OS_PROJECT_DOMAIN_NAME | |
+--------------------------+--------------------------------+
| --os-trust-id | trust ID |
| OS_TRUST_ID | |
+--------------------------+--------------------------------+
| | optional domain ID to use with |
| | v3 and v2 parameters. It will |
| --os-default-domain-id | be used for both the user and |
| OS_DEFAULT_DOMAIN_ID | project domain in v3 and |
| | ignored in v2 authentication. |
+--------------------------+--------------------------------+
| | optional domain name to use |
| | with v3 API and v2parameters. |
| --os-default-domain-name | It will be used for both |
| OS_DEFAULT_DOMAIN_NAME | the user and project domain |
| | in v3 and ignored in v2 |
| | authentication. |
+--------------------------+--------------------------------+
| --os-user-id | user ID |
| OS_USER_ID | |
+--------------------------+--------------------------------+
| --os-username, | |
| --os-user-name | username |
| OS_USERNAME | |
+--------------------------+--------------------------------+
| --os-user-domain-id | user's domain id |
| OS_USER_DOMAIN_ID | |
+--------------------------+--------------------------------+
| --os-user-domain-name | user's domain name |
| OS_USER_DOMAIN_NAME | |
+--------------------------+--------------------------------+
| --os-password | user's password |
| OS_PASSWORD | |
+--------------------------+--------------------------------+
API Connection Options
~~~~~~~~~~~~~~~~~~~~~~
Options controlling the HTTP API connections.
+--------------------------+--------------------------------------+
| Arguments | Description |
+==========================+======================================+
| | explicitly allow client to |
| | perform "insecure" TLS (https) |
| --insecure | requests. The server's |
| | certificate will not be verified |
| | against any certificate authorities. |
| | This option should be used with |
| | caution. |
+--------------------------+--------------------------------------+
| | specify a CA bundle file to use in |
| --os-cacert | verifying a TLS(https) server |
| <ca-certificate> | certificate. Defaults to env |
| | [OS_CACERT]. |
+--------------------------+--------------------------------------+
| --os-cert <certificate> | defaults to env[OS_CERT] |
+--------------------------+--------------------------------------+
| --os-key <key> | defaults to env[OS_KEY] |
+--------------------------+--------------------------------------+
| --timeout <seconds> | set request timeout (in seconds) |
+--------------------------+--------------------------------------+
Service Options
~~~~~~~~~~~~~~~
Options control the specialization of the API connection from information
found in the catalog.
+------------------------+----------------------------+
| Arguments | Description |
+========================+============================+
| --os-service-type | service type to request |
| <name> | from the catalog |
+------------------------+----------------------------+
| --os-service-name | service name to request |
| <name> | from the catalog |
+------------------------+----------------------------+
| --os-interface <name> | API Interface to use: |
| | [public, internal, admin] |
+------------------------+----------------------------+
| --os-region-name | region of the cloud to use |
| <name> | |
+------------------------+----------------------------+
| | endpoint to use instead |
| --os-endpoint-override | of the endpoint in the |
| <name> | catalog |
+------------------------+----------------------------+
| --os-api-version | which version of the |
| <name> | service API to use |
+------------------------+----------------------------+
_`How to write scenario files`
------------------------------
The example of full scenario file with all these parameters you can find in
``etc/scenario/simple-testcase.yaml``.
You can write all sections in one or several files, which can be simple YAML
files or YAML-based Mako templates (.yaml.mako or yml.mako). Fox example,
the most common sections you can keep in ``templatevars.ini`` and
``sahara_tests/scenario/defaults/credentials.yaml.mako``.
Field "concurrency"
-------------------
This field has integer value, and set concurrency for run tests
For example:
``concurrency: 2``
For parallel testing use flag ``--count`` in run command and
setup ``cuncurrency`` value
Section "credentials"
---------------------
This section is dictionary-type.
+---------------------+--------+----------+----------------+----------------+
| Fields | Type | Required | Default | Value |
+=====================+========+==========+================+================+
| sahara_service_type | string | | data-processing| service type |
| | | | | for sahara |
+---------------------+--------+----------+----------------+----------------+
| sahara_url | string | | None | url of sahara |
+---------------------+--------+----------+----------------+----------------+
| ssl_cert | string | | None | ssl certificate|
| | | | | for all clients|
+---------------------+--------+----------+----------------+----------------+
| ssl_verify | boolean| | False | enable verify |
| | | | | ssl for sahara |
+---------------------+--------+----------+----------------+----------------+
Section "network"
-----------------
This section is dictionary-type.
+-----------------------------+---------+----------+---------+----------------+
| Fields | Type | Required | Default | Value |
+=============================+=========+==========+=========+================+
| private_network | string | True | private | name or id of |
| | | | | private network|
+-----------------------------+---------+----------+---------+----------------+
| public_network | string | | public | name or id of |
| | | | | private network|
+-----------------------------+---------+----------+---------+----------------+
| auto_assignment_floating_ip | boolean | | False | |
+-----------------------------+---------+----------+---------+----------------+
Section "clusters"
------------------
This sections is an array-type.
.. list-table::
:header-rows: 1
* - Fields
- Type
- Required
- Default
- Value
* - plugin_name
- string
- True
-
- name of plugin
* - plugin_version
- string
- True
-
- version of plugin
* - image
- string
- True
-
- name or id of image
* - image_username
- string
-
-
- username for registering image
* - existing_cluster
- string
-
-
- cluster name or id for testing
* - key_name
- string
-
-
- name of registered ssh key for testing cluster
* - node_group_templates
- object
-
-
- see `section "node_group_templates"`_
* - cluster_template
- object
-
-
- see `section "cluster_template"`_
* - cluster
- object
-
-
- see `section "cluster"`_
* - scaling
- object
-
-
- see `section "scaling"`_
* - timeout_check_transient
- integer
-
- 300
- timeout for checking transient
* - timeout_poll_jobs_status
- integer
-
- 1800
- timeout for polling jobs state
* - timeout_delete_resource
- integer
-
- 300
- timeout for delete resource
* - timeout_poll_cluster_status
- integer
-
- 3600
- timeout for polling cluster state
* - scenario
- array
-
- ['run_jobs', 'scale', 'run_jobs']
- array of checks
* - edp_jobs_flow
- string, list
-
-
- name of jobs defined under edp_jobs_flow be executed on the cluster;
if list, each item may be a dict with fields
``name`` (string) and ``features`` (list), or a string
* - hdfs_username
- string
-
- hadoop
- username for hdfs
* - retain_resources
- boolean
-
- False
-
Section "node_group_templates"
------------------------------
This section is an array-type.
.. list-table::
:header-rows: 1
* - Fields
- Type
- Required
- Default
- Value
* - name
- string
- True
-
- name for node group template
* - flavor
- string or object
- True
-
- name or id of flavor, or see `section "flavor"`_
* - node_processes
- string
- True
-
- name of process
* - description
- string
-
- Empty
- description for node group
* - volumes_per_node
- integer
-
- 0
- minimum 0
* - volumes_size
- integer
-
- 0
- minimum 0
* - auto_security_group
- boolean
-
- True
-
* - security_group
- array
-
-
- security group
* - node_configs
- object
-
-
- name_of_config_section: config: value
* - availability_zone
- string
-
-
-
* - volumes_availability_zone
- string
-
-
-
* - volume_type
- string
-
-
-
* - is_proxy_gateway
- boolean
-
- False
- use this node as proxy gateway
* - edp_batching
- integer
-
- count jobs
- use for batching jobs
Section "flavor"
----------------
This section is an dictionary-type.
+----------------+---------+----------+---------------+-----------------+
| Fields | Type | Required | Default | Value |
+================+=========+==========+===============+=================+
| name | string | | auto-generate | name for flavor |
+----------------+---------+----------+---------------+-----------------+
| id | string | | auto-generate | id for flavor |
+----------------+---------+----------+---------------+-----------------+
| vcpus | integer | | 1 | number of VCPUs |
| | | | | for the flavor |
+----------------+---------+----------+---------------+-----------------+
| ram | integer | | 1 | memory in MB for|
| | | | | the flavor |
+----------------+---------+----------+---------------+-----------------+
| root_disk | integer | | 0 | size of local |
| | | | | disk in GB |
+----------------+---------+----------+---------------+-----------------+
| ephemeral_disk | integer | | 0 | ephemeral space |
| | | | | in MB |
+----------------+---------+----------+---------------+-----------------+
| swap_disk | integer | | 0 | swap space in MB|
+----------------+---------+----------+---------------+-----------------+
Section "cluster_template"
--------------------------
This section is dictionary-type.
.. list-table::
:header-rows: 1
* - Fields
- Type
- Required
- Default
- Value
* - name
- string
-
-
- name for cluster template
* - description
- string
-
- Empty
- description
* - cluster_configs
- object
-
-
- name_of_config_section: config: value
* - node_group_templates
- object
- True
-
- name_of_node_group: count
* - anti_affinity
- array
-
- Empty
- array of roles
Section "cluster"
-----------------
This section is dictionary-type.
+--------------+---------+----------+---------+------------------+
| Fields | Type | Required | Default | Value |
+==============+=========+==========+=========+==================+
| name | string | | Empty | name for cluster |
+--------------+---------+----------+---------+------------------+
| description | string | | Empty | description |
+--------------+---------+----------+---------+------------------+
| is_transient | boolean | | False | value |
+--------------+---------+----------+---------+------------------+
Section "scaling"
-----------------
This section is an array-type.
+------------+---------+----------+-----------+--------------------+
| Fields