├── .github └── workflows │ ├── check.yaml │ ├── gate.yaml │ └── release.yaml ├── .gitignore ├── .pre-commit-config.yaml ├── .pylintrc ├── .yamllint ├── Dockerfile ├── LICENSE ├── README.rst ├── ansible.cfg ├── cibyl ├── __init__.py ├── _data │ └── schemas │ │ └── config.json ├── cli │ ├── __init__.py │ ├── argument.py │ ├── interactions.py │ ├── main.py │ ├── output.py │ ├── parser.py │ ├── query.py │ ├── ranged_argument.py │ └── validator.py ├── config.py ├── exceptions │ ├── __init__.py │ ├── cli.py │ ├── config.py │ ├── elasticsearch.py │ ├── features.py │ ├── git.py │ ├── jenkins.py │ ├── jenkins_job_builder.py │ ├── model.py │ ├── plugin.py │ ├── source.py │ └── zuul.py ├── features │ ├── __init__.py │ └── general.py ├── models │ ├── __init__.py │ ├── attribute.py │ ├── ci │ │ ├── __init__.py │ │ ├── base │ │ │ ├── __init__.py │ │ │ ├── build.py │ │ │ ├── environment.py │ │ │ ├── job.py │ │ │ ├── stage.py │ │ │ ├── system.py │ │ │ └── test.py │ │ ├── system_factory.py │ │ └── zuul │ │ │ ├── __init__.py │ │ │ ├── build.py │ │ │ ├── job.py │ │ │ ├── pipeline.py │ │ │ ├── project.py │ │ │ ├── system.py │ │ │ ├── tenant.py │ │ │ ├── test.py │ │ │ └── test_suite.py │ ├── model.py │ └── product │ │ ├── __init__.py │ │ └── feature.py ├── orchestrator.py ├── outputs │ ├── __init__.py │ └── cli │ │ ├── __init__.py │ │ ├── ci │ │ ├── __init__.py │ │ ├── _docs │ │ │ └── printing │ │ │ │ ├── colored.puml │ │ │ │ └── serialized.puml │ │ ├── env │ │ │ ├── __init__.py │ │ │ ├── factory.py │ │ │ ├── impl │ │ │ │ ├── __init__.py │ │ │ │ ├── colored.py │ │ │ │ └── serialized.py │ │ │ └── printer.py │ │ └── system │ │ │ ├── __init__.py │ │ │ ├── common │ │ │ ├── __init__.py │ │ │ ├── builds.py │ │ │ ├── features.py │ │ │ ├── models.py │ │ │ ├── stages.py │ │ │ └── status.py │ │ │ ├── impls │ │ │ ├── __init__.py │ │ │ ├── base │ │ │ │ ├── __init__.py │ │ │ │ ├── colored.py │ │ │ │ └── serialized.py │ │ │ ├── jobs │ │ │ │ ├── __init__.py │ │ │ │ ├── colored.py │ │ │ │ └── serialized.py │ │ │ └── zuul │ │ │ │ ├── __init__.py │ │ │ │ ├── colored │ │ │ │ ├── __init__.py │ │ │ │ ├── cascades │ │ │ │ │ ├── __init__.py │ │ │ │ │ ├── hierarchy.py │ │ │ │ │ ├── job.py │ │ │ │ │ └── project.py │ │ │ │ └── trees │ │ │ │ │ ├── __init__.py │ │ │ │ │ └── factory.py │ │ │ │ └── serialized.py │ │ │ ├── printer.py │ │ │ └── utils │ │ │ ├── __init__.py │ │ │ └── sorting │ │ │ ├── __init__.py │ │ │ ├── builds.py │ │ │ └── jobs.py │ │ └── printer.py ├── plugins │ ├── __init__.py │ └── openstack │ │ ├── __init__.py │ │ ├── container.py │ │ ├── deployment.py │ │ ├── features │ │ ├── __init__.py │ │ ├── ironic.py │ │ ├── network.py │ │ └── security.py │ │ ├── ironic.py │ │ ├── network.py │ │ ├── node.py │ │ ├── package.py │ │ ├── printers │ │ ├── __init__.py │ │ ├── _docs │ │ │ └── osp_printer.puml │ │ ├── colored.py │ │ ├── raw.py │ │ ├── router.py │ │ └── serialized.py │ │ ├── service.py │ │ ├── sources │ │ ├── __init__.py │ │ ├── elasticsearch.py │ │ ├── jenkins.py │ │ ├── jenkins_job_builder.py │ │ ├── server.py │ │ └── zuul │ │ │ ├── __init__.py │ │ │ ├── _docs │ │ │ └── infra_type.puml │ │ │ ├── actions.py │ │ │ ├── deployments │ │ │ ├── __init__.py │ │ │ ├── arguments.py │ │ │ ├── filtering.py │ │ │ ├── generator.py │ │ │ ├── outlines.py │ │ │ └── summary.py │ │ │ ├── tripleo.py │ │ │ └── variants.py │ │ ├── storage.py │ │ ├── test_collection.py │ │ └── utils.py ├── publisher.py ├── sources │ ├── __init__.py │ ├── elasticsearch │ │ ├── __init__.py │ │ ├── api.py │ │ └── client.py │ ├── git.py │ ├── jenkins.py │ ├── jenkins_job_builder.py │ ├── plugins.py │ ├── server.py │ ├── source.py │ ├── source_factory.py │ ├── zuul │ │ ├── __init__.py │ │ ├── _docs │ │ │ └── activity │ │ │ │ └── zuul_command.puml │ │ ├── apis │ │ │ ├── __init__.py │ │ │ ├── _docs │ │ │ │ ├── activity │ │ │ │ │ └── ansible-test-lookup.puml │ │ │ │ └── class │ │ │ │ │ └── test_retrieval.puml │ │ │ ├── factories │ │ │ │ ├── __init__.py │ │ │ │ ├── abc.py │ │ │ │ └── rest.py │ │ │ ├── http.py │ │ │ ├── providers │ │ │ │ └── __init__.py │ │ │ └── rest.py │ │ ├── arguments.py │ │ ├── output.py │ │ ├── queries │ │ │ ├── __init__.py │ │ │ ├── builds.py │ │ │ ├── composition │ │ │ │ ├── __init__.py │ │ │ │ ├── factory.py │ │ │ │ ├── quick.py │ │ │ │ └── verbose.py │ │ │ ├── jobs.py │ │ │ ├── modifiers │ │ │ │ ├── __init__.py │ │ │ │ ├── factory.py │ │ │ │ └── hierarchy.py │ │ │ ├── pipelines.py │ │ │ ├── projects.py │ │ │ ├── tenants.py │ │ │ ├── tests.py │ │ │ └── variants.py │ │ ├── source.py │ │ ├── transactions │ │ │ └── __init__.py │ │ └── utils │ │ │ ├── __init__.py │ │ │ ├── artifacts │ │ │ ├── __init__.py │ │ │ └── manifest.py │ │ │ ├── builds │ │ │ └── __init__.py │ │ │ ├── tests │ │ │ ├── __init__.py │ │ │ ├── finder.py │ │ │ ├── tempest │ │ │ │ ├── __init__.py │ │ │ │ ├── finder.py │ │ │ │ ├── parser.py │ │ │ │ └── types.py │ │ │ └── types.py │ │ │ └── variants │ │ │ ├── __init__.py │ │ │ └── hierarchy.py │ └── zuuld │ │ ├── __init__.py │ │ ├── backends │ │ ├── __init__.py │ │ ├── abc.py │ │ ├── aggr.py │ │ └── git.py │ │ ├── errors.py │ │ ├── frontends │ │ ├── __init__.py │ │ └── zuul.py │ │ ├── models │ │ ├── __init__.py │ │ └── job.py │ │ ├── specs │ │ ├── __init__.py │ │ ├── abc.py │ │ └── git.py │ │ └── tools │ │ ├── __init__.py │ │ └── yaml.py └── utils │ ├── __init__.py │ ├── colors.py │ ├── filtering.py │ ├── logger.py │ ├── models.py │ ├── status_bar.py │ ├── time.py │ └── yaml.py ├── docs ├── Makefile ├── requirements.txt └── source │ ├── bootstrap.rst │ ├── colored_printer.png │ ├── conf.py │ ├── config_samples │ ├── disabled_configuration.rst │ ├── disabled_configuration.yaml │ ├── elasticsearch_configuration.rst │ ├── elasticsearch_configuration.yaml │ ├── full_configuration.rst │ ├── full_configuration.yaml │ ├── jjb_configuration.rst │ ├── jjb_configuration.yaml │ ├── minimal_configuration.rst │ ├── minimal_configuration.yaml │ ├── zuul_api_configuration.rst │ ├── zuul_api_configuration.yaml │ ├── zuul_definitions_local_configuration.rst │ ├── zuul_definitions_local_configuration.yaml │ ├── zuul_definitions_remote_configuration.rst │ └── zuul_definitions_remote_configuration.yaml │ ├── configuration.rst │ ├── development │ ├── contribute.rst │ ├── features.rst │ ├── output.rst │ ├── sources.rst │ └── tests.rst │ ├── features.rst │ ├── images │ ├── cibyl_entities.png │ ├── cibyl_printing.png │ ├── colored_printer.png │ ├── osp_printer.png │ ├── plugin.png │ └── serialized_printer.png │ ├── index.rst │ ├── installation.rst │ ├── models │ ├── core.rst │ └── plugin.rst │ ├── output.rst │ ├── parser.rst │ ├── plugins.rst │ ├── plugins │ └── openstack.rst │ ├── serialized_printer.png │ ├── sources.rst │ ├── sources │ ├── elasticsearch.rst │ ├── jenkins-job-builder.rst │ ├── jenkins.rst │ ├── zuul.d.rst │ └── zuul_api.rst │ ├── usage.rst │ └── usage │ ├── api.rst │ └── cli.rst ├── kernel ├── __init__.py ├── scm │ ├── __init__.py │ ├── git │ │ ├── __init__.py │ │ ├── apis │ │ │ ├── __init__.py │ │ │ ├── cli │ │ │ │ ├── __init__.py │ │ │ │ └── gitpython.py │ │ │ ├── github │ │ │ │ ├── __init__.py │ │ │ │ └── pygithub.py │ │ │ └── utils.py │ │ └── tools │ │ │ ├── __init__.py │ │ │ └── cloning.py │ └── tools │ │ ├── __init__.py │ │ └── fs.py └── tools │ ├── __init__.py │ ├── attrdict.py │ ├── cache.py │ ├── dicts.py │ ├── files.py │ ├── fs.py │ ├── io.py │ ├── json.py │ ├── log.py │ ├── net.py │ ├── paths.py │ ├── reflection.py │ ├── rng.py │ ├── sorting.py │ ├── strings.py │ ├── text.py │ ├── tree.py │ ├── urls.py │ └── yaml.py ├── requirements.txt ├── samples └── sample-config.yaml ├── setup.cfg ├── setup.py ├── test-requirements.txt ├── tests ├── __init__.py ├── cibyl │ ├── __init__.py │ ├── e2e │ │ ├── __init__.py │ │ ├── containers │ │ │ ├── __init__.py │ │ │ ├── elasticsearch.py │ │ │ ├── httpd.py │ │ │ ├── jenkins.py │ │ │ └── zuul.py │ │ ├── data │ │ │ ├── configs │ │ │ │ ├── elasticsearch.yaml │ │ │ │ ├── jenkins.yaml │ │ │ │ ├── jenkins │ │ │ │ │ └── with-openstack.yaml │ │ │ │ ├── zuul.yaml │ │ │ │ └── zuul │ │ │ │ │ └── with-tenants.yaml │ │ │ └── images │ │ │ │ ├── elasticsearch │ │ │ │ ├── docker-compose.yml │ │ │ │ └── jenkins.mapping.json │ │ │ │ ├── httpd │ │ │ │ ├── Dockerfile │ │ │ │ ├── docker-compose.yml │ │ │ │ └── public │ │ │ │ │ └── jenkins.yaml │ │ │ │ └── jenkins │ │ │ │ ├── Dockerfile │ │ │ │ ├── docker-compose.yml │ │ │ │ ├── docker-compose_jenkins_core.yml │ │ │ │ ├── docker-compose_jenkins_openstack.yml │ │ │ │ ├── jenkins_envs │ │ │ │ ├── jenkins_core_models │ │ │ │ │ ├── env.yml │ │ │ │ │ └── jobs │ │ │ │ │ │ ├── config.xml │ │ │ │ │ │ ├── nextBuildNumber │ │ │ │ │ │ ├── test_1 │ │ │ │ │ │ ├── builds │ │ │ │ │ │ │ ├── 1 │ │ │ │ │ │ │ │ ├── build.xml │ │ │ │ │ │ │ │ ├── changelog.xml │ │ │ │ │ │ │ │ └── log │ │ │ │ │ │ │ ├── 2 │ │ │ │ │ │ │ │ ├── build.xml │ │ │ │ │ │ │ │ ├── changelog.xml │ │ │ │ │ │ │ │ ├── junitResult.xml │ │ │ │ │ │ │ │ └── log │ │ │ │ │ │ │ └── permalinks │ │ │ │ │ │ ├── config.xml │ │ │ │ │ │ └── nextBuildNumber │ │ │ │ │ │ ├── test_2 │ │ │ │ │ │ ├── builds │ │ │ │ │ │ │ ├── 1 │ │ │ │ │ │ │ │ ├── build.xml │ │ │ │ │ │ │ │ ├── changelog.xml │ │ │ │ │ │ │ │ └── log │ │ │ │ │ │ │ ├── 2 │ │ │ │ │ │ │ │ ├── build.xml │ │ │ │ │ │ │ │ ├── changelog.xml │ │ │ │ │ │ │ │ ├── junitResult.xml │ │ │ │ │ │ │ │ └── log │ │ │ │ │ │ │ └── permalinks │ │ │ │ │ │ ├── config.xml │ │ │ │ │ │ └── nextBuildNumber │ │ │ │ │ │ ├── test_3 │ │ │ │ │ │ ├── builds │ │ │ │ │ │ │ ├── 1 │ │ │ │ │ │ │ │ ├── build.xml │ │ │ │ │ │ │ │ ├── changelog.xml │ │ │ │ │ │ │ │ └── log │ │ │ │ │ │ │ └── permalinks │ │ │ │ │ │ ├── config.xml │ │ │ │ │ │ └── nextBuildNumber │ │ │ │ │ │ └── test_4 │ │ │ │ │ │ ├── builds │ │ │ │ │ │ └── permalinks │ │ │ │ │ │ ├── config.xml │ │ │ │ │ │ └── nextBuildNumber │ │ │ │ ├── jenkins_openstack │ │ │ │ │ ├── env.yml │ │ │ │ │ └── jobs │ │ │ │ │ │ ├── test_1 │ │ │ │ │ │ ├── builds │ │ │ │ │ │ │ ├── 1 │ │ │ │ │ │ │ │ ├── build.xml │ │ │ │ │ │ │ │ ├── changelog.xml │ │ │ │ │ │ │ │ └── log │ │ │ │ │ │ │ ├── 2 │ │ │ │ │ │ │ │ ├── build.xml │ │ │ │ │ │ │ │ ├── changelog.xml │ │ │ │ │ │ │ │ ├── junitResult.xml │ │ │ │ │ │ │ │ └── log │ │ │ │ │ │ │ └── permalinks │ │ │ │ │ │ ├── config.xml │ │ │ │ │ │ └── nextBuildNumber │ │ │ │ │ │ ├── test_2 │ │ │ │ │ │ ├── builds │ │ │ │ │ │ │ ├── 1 │ │ │ │ │ │ │ │ ├── build.xml │ │ │ │ │ │ │ │ ├── changelog.xml │ │ │ │ │ │ │ │ └── log │ │ │ │ │ │ │ ├── 2 │ │ │ │ │ │ │ │ ├── build.xml │ │ │ │ │ │ │ │ ├── changelog.xml │ │ │ │ │ │ │ │ ├── junitResult.xml │ │ │ │ │ │ │ │ └── log │ │ │ │ │ │ │ └── permalinks │ │ │ │ │ │ ├── config.xml │ │ │ │ │ │ └── nextBuildNumber │ │ │ │ │ │ ├── test_3 │ │ │ │ │ │ ├── builds │ │ │ │ │ │ │ ├── 1 │ │ │ │ │ │ │ │ ├── build.xml │ │ │ │ │ │ │ │ ├── changelog.xml │ │ │ │ │ │ │ │ └── log │ │ │ │ │ │ │ └── permalinks │ │ │ │ │ │ ├── config.xml │ │ │ │ │ │ └── nextBuildNumber │ │ │ │ │ │ └── test_4 │ │ │ │ │ │ ├── builds │ │ │ │ │ │ └── permalinks │ │ │ │ │ │ ├── config.xml │ │ │ │ │ │ └── nextBuildNumber │ │ │ │ └── none │ │ │ │ │ ├── README.txt │ │ │ │ │ └── jobs │ │ │ │ │ └── README.txt │ │ │ │ ├── jobs │ │ │ │ └── basic-job-config.xml │ │ │ │ ├── openstack_httpd │ │ │ │ ├── Dockerfile │ │ │ │ ├── openstack_logs.yml │ │ │ │ └── public │ │ │ │ │ ├── test_1 │ │ │ │ │ └── 2 │ │ │ │ │ │ └── infrared │ │ │ │ │ │ ├── overcloud-install.yml │ │ │ │ │ │ ├── provision.yml │ │ │ │ │ │ └── test.yml │ │ │ │ │ └── test_2 │ │ │ │ │ └── 2 │ │ │ │ │ └── infrared │ │ │ │ │ ├── overcloud-install.yml │ │ │ │ │ ├── provision.yml │ │ │ │ │ └── test.yml │ │ │ │ └── setup.yaml │ │ ├── fixtures │ │ │ └── __init__.py │ │ ├── test_config.py │ │ ├── test_elasticsearch.py │ │ ├── test_jenkins.py │ │ ├── test_zuul.py │ │ └── utils │ │ │ ├── create_jenkins_env.py │ │ │ └── create_openstack_logs.py │ ├── intr │ │ ├── __init__.py │ │ ├── cli │ │ │ ├── __init__.py │ │ │ ├── test_config.py │ │ │ └── test_openstack_plugin.py │ │ ├── models │ │ │ ├── __init__.py │ │ │ └── ci │ │ │ │ ├── __init__.py │ │ │ │ └── base │ │ │ │ ├── __init__.py │ │ │ │ └── test_system.py │ │ ├── outputs │ │ │ ├── __init__.py │ │ │ └── test_output_colored_openstack.py │ │ ├── plugins │ │ │ ├── __init__.py │ │ │ └── openstack │ │ │ │ ├── __init__.py │ │ │ │ └── sources │ │ │ │ ├── __init__.py │ │ │ │ └── zuul │ │ │ │ ├── __init__.py │ │ │ │ └── test_actions.py │ │ ├── sources │ │ │ ├── __init__.py │ │ │ ├── zuul │ │ │ │ ├── __init__.py │ │ │ │ └── queries │ │ │ │ │ ├── __init__.py │ │ │ │ │ └── composition │ │ │ │ │ ├── __init__.py │ │ │ │ │ ├── test_quick.py │ │ │ │ │ └── test_verbose.py │ │ │ └── zuuld │ │ │ │ ├── __init__.py │ │ │ │ ├── frontends │ │ │ │ ├── __init__.py │ │ │ │ └── test_zuul.py │ │ │ │ ├── specs │ │ │ │ ├── __init__.py │ │ │ │ └── git.py │ │ │ │ └── tools │ │ │ │ ├── __init__.py │ │ │ │ └── test_yaml.py │ │ └── test_orchestrator.py │ ├── unit │ │ ├── __init__.py │ │ ├── cli │ │ │ ├── __init__.py │ │ │ ├── test_argument.py │ │ │ ├── test_interactions.py │ │ │ ├── test_main.py │ │ │ ├── test_output.py │ │ │ ├── test_parser.py │ │ │ ├── test_query.py │ │ │ ├── test_ranged_argument.py │ │ │ ├── test_raw_parsing.py │ │ │ └── test_validator.py │ │ ├── config │ │ │ ├── __init__.py │ │ │ ├── test_app_config.py │ │ │ └── test_config.py │ │ ├── exceptions │ │ │ ├── __init__.py │ │ │ └── test_cibyl_exceptions.py │ │ ├── features │ │ │ ├── __init__.py │ │ │ ├── data │ │ │ │ ├── __init__.py │ │ │ │ └── testing.py │ │ │ └── test_features.py │ │ ├── models │ │ │ ├── __init__.py │ │ │ ├── ci │ │ │ │ ├── __init__.py │ │ │ │ ├── base │ │ │ │ │ ├── __init__.py │ │ │ │ │ ├── test_build.py │ │ │ │ │ ├── test_environment.py │ │ │ │ │ ├── test_job.py │ │ │ │ │ ├── test_stage.py │ │ │ │ │ ├── test_system.py │ │ │ │ │ └── test_test.py │ │ │ │ └── zuul │ │ │ │ │ ├── __init__.py │ │ │ │ │ ├── test_build.py │ │ │ │ │ ├── test_job.py │ │ │ │ │ ├── test_pipeline.py │ │ │ │ │ ├── test_project.py │ │ │ │ │ ├── test_system.py │ │ │ │ │ ├── test_test.py │ │ │ │ │ └── test_test_suite.py │ │ │ └── test_attribute.py │ │ ├── outputs │ │ │ ├── __init__.py │ │ │ └── cli │ │ │ │ ├── __init__.py │ │ │ │ └── ci │ │ │ │ ├── __init__.py │ │ │ │ ├── env │ │ │ │ ├── __init__.py │ │ │ │ ├── impls │ │ │ │ │ ├── __init__.py │ │ │ │ │ └── test_serialized.py │ │ │ │ └── test_factory.py │ │ │ │ └── system │ │ │ │ ├── __init__.py │ │ │ │ ├── common │ │ │ │ ├── __init__.py │ │ │ │ ├── test_builds.py │ │ │ │ ├── test_features.py │ │ │ │ └── test_models.py │ │ │ │ ├── impls │ │ │ │ ├── __init__.py │ │ │ │ ├── base │ │ │ │ │ ├── __init__.py │ │ │ │ │ └── test_colored.py │ │ │ │ └── zuul │ │ │ │ │ ├── __init__.py │ │ │ │ │ └── colored │ │ │ │ │ ├── __init__.py │ │ │ │ │ └── trees │ │ │ │ │ ├── __init__.py │ │ │ │ │ └── test_factory.py │ │ │ │ └── utils │ │ │ │ ├── __init__.py │ │ │ │ └── sorting │ │ │ │ ├── __init__.py │ │ │ │ ├── test_builds.py │ │ │ │ └── test_jobs.py │ │ ├── plugins │ │ │ ├── __init__.py │ │ │ ├── openstack │ │ │ │ ├── __init__.py │ │ │ │ ├── printers │ │ │ │ │ ├── __init__.py │ │ │ │ │ ├── test_json.py │ │ │ │ │ └── test_raw.py │ │ │ │ ├── sources │ │ │ │ │ ├── __init__.py │ │ │ │ │ ├── test_elasticsearch.py │ │ │ │ │ ├── test_jenkins.py │ │ │ │ │ ├── test_jenkins_job_builder.py │ │ │ │ │ └── zuul │ │ │ │ │ │ ├── __init__.py │ │ │ │ │ │ ├── deployments │ │ │ │ │ │ ├── __init__.py │ │ │ │ │ │ ├── test_arguments.py │ │ │ │ │ │ ├── test_filtering.py │ │ │ │ │ │ ├── test_generator.py │ │ │ │ │ │ ├── test_outlines.py │ │ │ │ │ │ └── test_summary.py │ │ │ │ │ │ ├── test_actions.py │ │ │ │ │ │ ├── test_tripleo.py │ │ │ │ │ │ └── test_variants.py │ │ │ │ ├── test_container.py │ │ │ │ ├── test_deployment.py │ │ │ │ ├── test_ironic.py │ │ │ │ ├── test_network.py │ │ │ │ ├── test_node.py │ │ │ │ ├── test_openstack.py │ │ │ │ ├── test_package.py │ │ │ │ ├── test_service.py │ │ │ │ ├── test_storage.py │ │ │ │ └── test_test_collection.py │ │ │ └── test_plugin.py │ │ ├── sources │ │ │ ├── __init__.py │ │ │ ├── elasticsearch │ │ │ │ ├── __init__.py │ │ │ │ ├── test_api.py │ │ │ │ └── test_client.py │ │ │ ├── test_jenkins.py │ │ │ ├── test_jenkins_job_builder.py │ │ │ ├── test_source_factory.py │ │ │ ├── test_sources.py │ │ │ ├── zuul │ │ │ │ ├── __init__.py │ │ │ │ ├── apis │ │ │ │ │ ├── __init__.py │ │ │ │ │ ├── factories │ │ │ │ │ │ ├── __init__.py │ │ │ │ │ │ └── test_rest.py │ │ │ │ │ └── test_rest.py │ │ │ │ ├── queries │ │ │ │ │ ├── __init__.py │ │ │ │ │ ├── composition │ │ │ │ │ │ ├── __init__.py │ │ │ │ │ │ ├── test_factory.py │ │ │ │ │ │ ├── test_quick.py │ │ │ │ │ │ └── test_verbose.py │ │ │ │ │ └── test_tests.py │ │ │ │ ├── test_arguments.py │ │ │ │ ├── test_output.py │ │ │ │ ├── test_source.py │ │ │ │ ├── test_transactions.py │ │ │ │ └── utils │ │ │ │ │ ├── __init__.py │ │ │ │ │ ├── artifacts │ │ │ │ │ ├── __init__.py │ │ │ │ │ └── test_manifest.py │ │ │ │ │ ├── test_builds.py │ │ │ │ │ ├── tests │ │ │ │ │ ├── __init__.py │ │ │ │ │ └── tempest │ │ │ │ │ │ ├── __init__.py │ │ │ │ │ │ ├── test_finder.py │ │ │ │ │ │ └── test_parser.py │ │ │ │ │ └── variants │ │ │ │ │ ├── __init__.py │ │ │ │ │ └── test_hierarchy.py │ │ │ └── zuuld │ │ │ │ ├── __init__.py │ │ │ │ ├── backends │ │ │ │ ├── __init__.py │ │ │ │ ├── test_aggr.py │ │ │ │ └── test_git.py │ │ │ │ ├── frontends │ │ │ │ ├── __init__.py │ │ │ │ └── test_zuul.py │ │ │ │ └── tools │ │ │ │ ├── __init__.py │ │ │ │ └── test_yaml.py │ │ ├── test_orchestrator.py │ │ ├── test_publisher.py │ │ └── utils │ │ │ ├── __init__.py │ │ │ ├── test_filtering.py │ │ │ ├── test_models.py │ │ │ └── test_status_bar.py │ └── utils │ │ └── __init__.py ├── kernel │ ├── __init__.py │ ├── intr │ │ ├── __init__.py │ │ ├── scm │ │ │ ├── __init__.py │ │ │ ├── git │ │ │ │ ├── __init__.py │ │ │ │ ├── apis │ │ │ │ │ ├── __init__.py │ │ │ │ │ ├── cli │ │ │ │ │ │ ├── __init__.py │ │ │ │ │ │ └── test_gitpython.py │ │ │ │ │ ├── github │ │ │ │ │ │ ├── __init__.py │ │ │ │ │ │ └── test_pygithub.py │ │ │ │ │ └── test_utils.py │ │ │ │ └── tools │ │ │ │ │ ├── __init__.py │ │ │ │ │ └── test_cloning.py │ │ │ └── tools │ │ │ │ ├── __init__.py │ │ │ │ └── test_fs.py │ │ └── tools │ │ │ ├── __init__.py │ │ │ ├── test_fs.py │ │ │ ├── test_json.py │ │ │ ├── test_net.py │ │ │ ├── test_sorting.py │ │ │ ├── test_strings.py │ │ │ └── test_urls.py │ └── unit │ │ ├── __init__.py │ │ ├── scm │ │ ├── __init__.py │ │ ├── git │ │ │ ├── __init__.py │ │ │ └── apis │ │ │ │ ├── __init__.py │ │ │ │ ├── cli │ │ │ │ ├── __init__.py │ │ │ │ └── test_gitpython.py │ │ │ │ └── github │ │ │ │ ├── __init__.py │ │ │ │ └── test_pygithub.py │ │ └── tools │ │ │ ├── __init__.py │ │ │ └── test_fs.py │ │ └── tools │ │ ├── __init__.py │ │ ├── test_cache.py │ │ ├── test_dicts.py │ │ ├── test_files.py │ │ ├── test_json.py │ │ ├── test_net.py │ │ ├── test_paths.py │ │ ├── test_reflection.py │ │ ├── test_text.py │ │ ├── test_tree.py │ │ ├── test_urls.py │ │ └── test_yaml.py └── tripleo │ ├── __init__.py │ ├── e2e │ ├── __init__.py │ ├── test_git.py │ └── test_insights.py │ ├── intr │ ├── __init__.py │ └── insights │ │ ├── __init__.py │ │ ├── test_git.py │ │ ├── test_interpreters.py │ │ └── test_lookup.py │ └── unit │ ├── __init__.py │ └── insights │ ├── __init__.py │ ├── test_git.py │ ├── test_interpreters.py │ ├── test_lookup.py │ ├── test_topology.py │ ├── test_tripleo.py │ └── test_validation.py ├── tox.ini └── tripleo ├── __init__.py ├── _data └── schemas │ ├── environment.json │ ├── featureset.json │ ├── nodes.json │ ├── release.json │ └── scenario.json └── insights ├── __init__.py ├── defaults.py ├── exceptions.py ├── git.py ├── interpreters.py ├── io.py ├── lookup.py ├── topology.py ├── tripleo.py └── validation.py /.github/workflows/check.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | name: "Cibyl CI - Check" 3 | on: 4 | push: 5 | branches: 6 | - main 7 | pull_request: 8 | 9 | jobs: 10 | check: 11 | runs-on: ubuntu-20.04 12 | strategy: 13 | matrix: 14 | python-version: ['3.6', '3.9'] 15 | steps: 16 | - name: "Checkout repo" 17 | uses: actions/checkout@v3 18 | - name: "Setup Python" 19 | uses: actions/setup-python@v4 20 | with: 21 | python-version: ${{ matrix.python-version }} 22 | - name: "Install dependencies" 23 | run: | 24 | python -m pip install --upgrade pip 25 | pip install tox 26 | - name: "Run tox" 27 | run: PYTHONWARNINGS="ignore" TOX_PARALLEL_NO_SPINNER=1 tox -p 28 | -------------------------------------------------------------------------------- /.github/workflows/gate.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | name: "Cibyl CI - Gate" 3 | on: 4 | pull_request_review: 5 | types: [ submitted ] 6 | 7 | jobs: 8 | gate: 9 | if: github.event.review.state == 'approved' 10 | runs-on: ubuntu-20.04 11 | strategy: 12 | matrix: 13 | python-version: ['3.6', '3.9'] 14 | steps: 15 | - name: "Checkout repo" 16 | uses: actions/checkout@v3 17 | - name: "Setup Python" 18 | uses: actions/setup-python@v4 19 | with: 20 | python-version: ${{ matrix.python-version }} 21 | - name: "Install dependencies" 22 | run: | 23 | python -m pip install --upgrade pip 24 | pip install tox 25 | - name: "Run e2e tests" 26 | run: echo "TBD" 27 | # run: PYTHONWARNINGS="ignore" tox -e e2e 28 | -------------------------------------------------------------------------------- /.github/workflows/release.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | name: "Publish Cibyl to PyPI" 3 | on: 4 | push: 5 | tags: 6 | # asterisk allow matching tags like v1.0.0.rc1, etc. 7 | - 'v[0-9]+.[0-9]+.[0-9]+*' 8 | 9 | jobs: 10 | build: 11 | runs-on: ubuntu-latest 12 | strategy: 13 | matrix: 14 | python-version: ['3.6'] 15 | steps: 16 | - name: "Checkout repo" 17 | uses: actions/checkout@v1 18 | - name: "Setup Python" 19 | uses: actions/setup-python@v2 20 | with: 21 | python-version: ${{ matrix.python-version }} 22 | - name: "Install pypa/build" 23 | run: | 24 | python -m pip install build 25 | - name: "Build a wheel and source distribution" 26 | run: | 27 | python -m build --sdist --wheel --outdir dist/ . 28 | - name: "Publish package to PyPI" 29 | uses: pypa/gh-action-pypi-publish@release/v1 30 | with: 31 | password: ${{ secrets.PYPI_API_TOKEN }} 32 | - name: "Publish package to TestPyPI" 33 | uses: pypa/gh-action-pypi-publish@release/v1 34 | with: 35 | password: ${{ secrets.TEST_PYPI_API_TOKEN }} 36 | repository_url: https://test.pypi.org/legacy/ 37 | -------------------------------------------------------------------------------- /.yamllint: -------------------------------------------------------------------------------- 1 | --- 2 | # Based on ansible-lint config 3 | extends: default 4 | 5 | rules: 6 | braces: 7 | max-spaces-inside: 1 8 | level: error 9 | brackets: 10 | max-spaces-inside: 1 11 | level: error 12 | colons: 13 | max-spaces-after: -1 14 | level: error 15 | commas: 16 | max-spaces-after: -1 17 | level: error 18 | comments: disable 19 | comments-indentation: disable 20 | document-start: disable 21 | empty-lines: 22 | max: 3 23 | level: error 24 | hyphens: 25 | level: error 26 | indentation: disable 27 | key-duplicates: enable 28 | line-length: disable 29 | new-line-at-end-of-file: disable 30 | new-lines: 31 | type: unix 32 | trailing-spaces: disable 33 | truthy: disable 34 | -------------------------------------------------------------------------------- /Dockerfile: -------------------------------------------------------------------------------- 1 | FROM python:3.6.15 2 | 3 | # Outside the container 4 | ARG CIBYL_ROOT=. 5 | ARG CONFIG_FILE=$CIBYL_ROOT/samples/sample-config.yaml 6 | 7 | # Inside the container 8 | ARG INSTALL_PATH=/app 9 | 10 | # == Install APP == 11 | WORKDIR $INSTALL_PATH 12 | 13 | # Prepare virtual environment 14 | ENV VIRTUAL_ENV=./venv 15 | RUN python3 -m venv $VIRTUAL_ENV 16 | ENV PATH="$VIRTUAL_ENV/bin:$PATH" 17 | RUN python3 -m pip install --upgrade pip 18 | RUN python3 -m pip install wheel 19 | 20 | # Install Cibyl 21 | COPY $CIBYL_ROOT/.git ./.git 22 | 23 | COPY $CIBYL_ROOT/README.rst . 24 | COPY $CIBYL_ROOT/setup.py . 25 | COPY $CIBYL_ROOT/setup.cfg . 26 | COPY $CIBYL_ROOT/requirements.txt . 27 | 28 | COPY $CIBYL_ROOT/kernel ./kernel 29 | COPY $CIBYL_ROOT/tripleo ./tripleo 30 | COPY $CIBYL_ROOT/cibyl ./cibyl 31 | 32 | RUN python3 -m pip install . 33 | 34 | # Install configuration file 35 | COPY $CONFIG_FILE /etc/cibyl/cibyl.yaml 36 | -------------------------------------------------------------------------------- /ansible.cfg: -------------------------------------------------------------------------------- 1 | [defaults] 2 | deprecation_warnings = False 3 | -------------------------------------------------------------------------------- /cibyl/__init__.py: -------------------------------------------------------------------------------- 1 | """ 2 | # Copyright 2022 Red Hat 3 | # 4 | # Licensed under the Apache License, Version 2.0 (the "License"); you may 5 | # not use this file except in compliance with the License. You may obtain 6 | # a copy of the License at 7 | # 8 | # http://www.apache.org/licenses/LICENSE-2.0 9 | # 10 | # Unless required by applicable law or agreed to in writing, software 11 | # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 12 | # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 13 | # License for the specific language governing permissions and limitations 14 | # under the License. 15 | """ 16 | from pbr.version import VersionInfo 17 | 18 | all = ('__version__') 19 | 20 | __version__ = VersionInfo('cibyl').release_string() 21 | -------------------------------------------------------------------------------- /cibyl/cli/__init__.py: -------------------------------------------------------------------------------- 1 | """ 2 | # Copyright 2022 Red Hat 3 | # 4 | # Licensed under the Apache License, Version 2.0 (the "License"); you may 5 | # not use this file except in compliance with the License. You may obtain 6 | # a copy of the License at 7 | # 8 | # http://www.apache.org/licenses/LICENSE-2.0 9 | # 10 | # Unless required by applicable law or agreed to in writing, software 11 | # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 12 | # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 13 | # License for the specific language governing permissions and limitations 14 | # under the License. 15 | """ 16 | -------------------------------------------------------------------------------- /cibyl/cli/interactions.py: -------------------------------------------------------------------------------- 1 | """ 2 | # Copyright 2022 Red Hat 3 | # 4 | # Licensed under the Apache License, Version 2.0 (the "License"); you may 5 | # not use this file except in compliance with the License. You may obtain 6 | # a copy of the License at 7 | # 8 | # http://www.apache.org/licenses/LICENSE-2.0 9 | # 10 | # Unless required by applicable law or agreed to in writing, software 11 | # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 12 | # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 13 | # License for the specific language governing permissions and limitations 14 | # under the License. 15 | """ 16 | 17 | 18 | def ask_yes_no_question(question: str) -> bool: 19 | """Prints a question on the CLI that the user must respond 20 | with a yes or no. 21 | 22 | :param question: Text of the question. Include question mark on it. 23 | :return: Whether the user said 'y' (True) or 'n' (False). 24 | """ 25 | answer = '' 26 | 27 | while answer not in ('y', 'n'): 28 | print(f'{question} [y/n](n):') 29 | 30 | answer = input() 31 | 32 | if not answer: 33 | answer = 'n' 34 | 35 | if answer == 'y': 36 | return True 37 | 38 | return False 39 | -------------------------------------------------------------------------------- /cibyl/cli/ranged_argument.py: -------------------------------------------------------------------------------- 1 | """ 2 | # Copyright 2022 Red Hat 3 | # 4 | # Licensed under the Apache License, Version 2.0 (the "License"); you may 5 | # not use this file except in compliance with the License. You may obtain 6 | # a copy of the License at 7 | # 8 | # http://www.apache.org/licenses/LICENSE-2.0 9 | # 10 | # Unless required by applicable law or agreed to in writing, software 11 | # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 12 | # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 13 | # License for the specific language governing permissions and limitations 14 | # under the License. 15 | """ 16 | import operator 17 | import re 18 | from collections import namedtuple 19 | 20 | EXPRESSION_PATTERN = re.compile(r"([<>=!]*)(\d+)") 21 | 22 | Range = namedtuple('Range', 'operator operand') 23 | 24 | RANGE_OPERATORS = {"==": operator.eq, "=": operator.eq, "<": operator.lt, 25 | ">": operator.gt, "<=": operator.le, ">=": operator.ge, 26 | "!=": operator.ne} 27 | 28 | VALID_OPS = ",".join(RANGE_OPERATORS.keys()) 29 | -------------------------------------------------------------------------------- /cibyl/exceptions/__init__.py: -------------------------------------------------------------------------------- 1 | """ 2 | # Copyright 2022 Red Hat 3 | # 4 | # Licensed under the Apache License, Version 2.0 (the "License"); you may 5 | # not use this file except in compliance with the License. You may obtain 6 | # a copy of the License at 7 | # 8 | # http://www.apache.org/licenses/LICENSE-2.0 9 | # 10 | # Unless required by applicable law or agreed to in writing, software 11 | # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 12 | # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 13 | # License for the specific language governing permissions and limitations 14 | # under the License. 15 | """ 16 | 17 | 18 | class CibylException(Exception): 19 | """Parent class for all cibyl exceptions for easier control of the 20 | exceptions' representation. 21 | """ 22 | 23 | def __init__(self, message=''): 24 | """Constructor. 25 | 26 | :param message: The reason for this error. 27 | :type message: str 28 | """ 29 | self.message = message 30 | super().__init__(*[message]) 31 | -------------------------------------------------------------------------------- /cibyl/exceptions/elasticsearch.py: -------------------------------------------------------------------------------- 1 | """ 2 | # Copyright 2022 Red Hat 3 | # 4 | # Licensed under the Apache License, Version 2.0 (the "License"); you may 5 | # not use this file except in compliance with the License. You may obtain 6 | # a copy of the License at 7 | # 8 | # http://www.apache.org/licenses/LICENSE-2.0 9 | # 10 | # Unless required by applicable law or agreed to in writing, software 11 | # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 12 | # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 13 | # License for the specific language governing permissions and limitations 14 | # under the License. 15 | """ 16 | from cibyl.exceptions.source import SourceException 17 | 18 | 19 | class ElasticSearchError(SourceException): 20 | """Elasticsearch error. 21 | Used for personalized elasticsearch exceptions 22 | """ 23 | -------------------------------------------------------------------------------- /cibyl/exceptions/features.py: -------------------------------------------------------------------------------- 1 | """ 2 | # Copyright 2022 Red Hat 3 | # 4 | # Licensed under the Apache License, Version 2.0 (the "License"); you may 5 | # not use this file except in compliance with the License. You may obtain 6 | # a copy of the License at 7 | # 8 | # http://www.apache.org/licenses/LICENSE-2.0 9 | # 10 | # Unless required by applicable law or agreed to in writing, software 11 | # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 12 | # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 13 | # License for the specific language governing permissions and limitations 14 | # under the License. 15 | """ 16 | from cibyl.exceptions import CibylException 17 | 18 | 19 | class MissingFeature(CibylException): 20 | """Represents an error loading a feature. 21 | """ 22 | 23 | def __init__(self, message: str = 'Feature not found.'): 24 | """Constructor. 25 | """ 26 | super().__init__(message) 27 | -------------------------------------------------------------------------------- /cibyl/exceptions/git.py: -------------------------------------------------------------------------------- 1 | """ 2 | # Copyright 2022 Red Hat 3 | # 4 | # Licensed under the Apache License, Version 2.0 (the "License"); you may 5 | # not use this file except in compliance with the License. You may obtain 6 | # a copy of the License at 7 | # 8 | # http://www.apache.org/licenses/LICENSE-2.0 9 | # 10 | # Unless required by applicable law or agreed to in writing, software 11 | # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 12 | # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 13 | # License for the specific language governing permissions and limitations 14 | # under the License. 15 | """ 16 | from cibyl.exceptions.source import SourceException 17 | 18 | 19 | class GitError(SourceException): 20 | """Represents an error occurring while running git operations.""" 21 | -------------------------------------------------------------------------------- /cibyl/exceptions/jenkins.py: -------------------------------------------------------------------------------- 1 | """ 2 | # Copyright 2022 Red Hat 3 | # 4 | # Licensed under the Apache License, Version 2.0 (the "License"); you may 5 | # not use this file except in compliance with the License. You may obtain 6 | # a copy of the License at 7 | # 8 | # http://www.apache.org/licenses/LICENSE-2.0 9 | # 10 | # Unless required by applicable law or agreed to in writing, software 11 | # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 12 | # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 13 | # License for the specific language governing permissions and limitations 14 | # under the License. 15 | """ 16 | from cibyl.exceptions.source import SourceException 17 | 18 | 19 | class JenkinsError(SourceException): 20 | """Represents an error occurring while querying Jenkins.""" 21 | -------------------------------------------------------------------------------- /cibyl/exceptions/jenkins_job_builder.py: -------------------------------------------------------------------------------- 1 | """ 2 | # Copyright 2022 Red Hat 3 | # 4 | # Licensed under the Apache License, Version 2.0 (the "License"); you may 5 | # not use this file except in compliance with the License. You may obtain 6 | # a copy of the License at 7 | # 8 | # http://www.apache.org/licenses/LICENSE-2.0 9 | # 10 | # Unless required by applicable law or agreed to in writing, software 11 | # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 12 | # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 13 | # License for the specific language governing permissions and limitations 14 | # under the License. 15 | """ 16 | from cibyl.exceptions.source import SourceException 17 | 18 | 19 | class JenkinsJobBuilderError(SourceException): 20 | """Represents an error occurring while querying JenkinsJobBuilder.""" 21 | -------------------------------------------------------------------------------- /cibyl/exceptions/plugin.py: -------------------------------------------------------------------------------- 1 | """ 2 | # Copyright 2022 Red Hat 3 | # 4 | # Licensed under the Apache License, Version 2.0 (the "License"); you may 5 | # not use this file except in compliance with the License. You may obtain 6 | # a copy of the License at 7 | # 8 | # http://www.apache.org/licenses/LICENSE-2.0 9 | # 10 | # Unless required by applicable law or agreed to in writing, software 11 | # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 12 | # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 13 | # License for the specific language governing permissions and limitations 14 | # under the License. 15 | """ 16 | from cibyl.exceptions import CibylException 17 | 18 | 19 | class MissingPlugin(CibylException): 20 | """Missing plugin exception""" 21 | 22 | def __init__(self, plugin_name: str): 23 | self.plugin_name = plugin_name 24 | self.message = f"""Unable to locate the plugin {plugin_name}. 25 | Make sure the plugin is defined in cibyl.plugins directory 26 | """ 27 | super().__init__(self.message) 28 | -------------------------------------------------------------------------------- /cibyl/exceptions/zuul.py: -------------------------------------------------------------------------------- 1 | """ 2 | # Copyright 2022 Red Hat 3 | # 4 | # Licensed under the Apache License, Version 2.0 (the "License"); you may 5 | # not use this file except in compliance with the License. You may obtain 6 | # a copy of the License at 7 | # 8 | # http://www.apache.org/licenses/LICENSE-2.0 9 | # 10 | # Unless required by applicable law or agreed to in writing, software 11 | # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 12 | # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 13 | # License for the specific language governing permissions and limitations 14 | # under the License. 15 | """ 16 | from cibyl.exceptions.source import SourceException 17 | 18 | 19 | class RateLimitException(SourceException): 20 | """ 21 | Exception for rate limit exceeded. 22 | """ 23 | 24 | def __init__(self, system: str, function: str): 25 | self.message = """Rate limit exceeded. Please use tokens.""" 26 | super().__init__(self.message) 27 | -------------------------------------------------------------------------------- /cibyl/features/general.py: -------------------------------------------------------------------------------- 1 | """ 2 | # Copyright 2022 Red Hat 3 | # 4 | # Licensed under the Apache License, Version 2.0 (the "License"); you may 5 | # not use this file except in compliance with the License. You may obtain 6 | # a copy of the License at 7 | # 8 | # http://www.apache.org/licenses/LICENSE-2.0 9 | # 10 | # Unless required by applicable law or agreed to in writing, software 11 | # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 12 | # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 13 | # License for the specific language governing permissions and limitations 14 | # under the License. 15 | """ 16 | -------------------------------------------------------------------------------- /cibyl/models/__init__.py: -------------------------------------------------------------------------------- 1 | # Copyright 2022 Red Hat 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); you may 4 | # not use this file except in compliance with the License. You may obtain 5 | # a copy of the License at 6 | # 7 | # http://www.apache.org/licenses/LICENSE-2.0 8 | # 9 | # Unless required by applicable law or agreed to in writing, software 10 | # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 11 | # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 12 | # License for the specific language governing permissions and limitations 13 | # under the License. 14 | -------------------------------------------------------------------------------- /cibyl/models/ci/__init__.py: -------------------------------------------------------------------------------- 1 | # Copyright 2022 Red Hat 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); you may 4 | # not use this file except in compliance with the License. You may obtain 5 | # a copy of the License at 6 | # 7 | # http://www.apache.org/licenses/LICENSE-2.0 8 | # 9 | # Unless required by applicable law or agreed to in writing, software 10 | # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 11 | # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 12 | # License for the specific language governing permissions and limitations 13 | # under the License. 14 | -------------------------------------------------------------------------------- /cibyl/models/ci/base/__init__.py: -------------------------------------------------------------------------------- 1 | """ 2 | # Copyright 2022 Red Hat 3 | # 4 | # Licensed under the Apache License, Version 2.0 (the "License"); you may 5 | # not use this file except in compliance with the License. You may obtain 6 | # a copy of the License at 7 | # 8 | # http://www.apache.org/licenses/LICENSE-2.0 9 | # 10 | # Unless required by applicable law or agreed to in writing, software 11 | # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 12 | # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 13 | # License for the specific language governing permissions and limitations 14 | # under the License. 15 | """ 16 | -------------------------------------------------------------------------------- /cibyl/models/ci/zuul/__init__.py: -------------------------------------------------------------------------------- 1 | """ 2 | # Copyright 2022 Red Hat 3 | # 4 | # Licensed under the Apache License, Version 2.0 (the "License"); you may 5 | # not use this file except in compliance with the License. You may obtain 6 | # a copy of the License at 7 | # 8 | # http://www.apache.org/licenses/LICENSE-2.0 9 | # 10 | # Unless required by applicable law or agreed to in writing, software 11 | # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 12 | # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 13 | # License for the specific language governing permissions and limitations 14 | # under the License. 15 | """ 16 | -------------------------------------------------------------------------------- /cibyl/models/product/__init__.py: -------------------------------------------------------------------------------- 1 | # Copyright 2022 Red Hat 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); you may 4 | # not use this file except in compliance with the License. You may obtain 5 | # a copy of the License at 6 | # 7 | # http://www.apache.org/licenses/LICENSE-2.0 8 | # 9 | # Unless required by applicable law or agreed to in writing, software 10 | # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 11 | # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 12 | # License for the specific language governing permissions and limitations 13 | # under the License. 14 | -------------------------------------------------------------------------------- /cibyl/outputs/__init__.py: -------------------------------------------------------------------------------- 1 | """ 2 | # Copyright 2022 Red Hat 3 | # 4 | # Licensed under the Apache License, Version 2.0 (the "License"); you may 5 | # not use this file except in compliance with the License. You may obtain 6 | # a copy of the License at 7 | # 8 | # http://www.apache.org/licenses/LICENSE-2.0 9 | # 10 | # Unless required by applicable law or agreed to in writing, software 11 | # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 12 | # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 13 | # License for the specific language governing permissions and limitations 14 | # under the License. 15 | """ 16 | -------------------------------------------------------------------------------- /cibyl/outputs/cli/__init__.py: -------------------------------------------------------------------------------- 1 | """ 2 | # Copyright 2022 Red Hat 3 | # 4 | # Licensed under the Apache License, Version 2.0 (the "License"); you may 5 | # not use this file except in compliance with the License. You may obtain 6 | # a copy of the License at 7 | # 8 | # http://www.apache.org/licenses/LICENSE-2.0 9 | # 10 | # Unless required by applicable law or agreed to in writing, software 11 | # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 12 | # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 13 | # License for the specific language governing permissions and limitations 14 | # under the License. 15 | """ 16 | -------------------------------------------------------------------------------- /cibyl/outputs/cli/ci/__init__.py: -------------------------------------------------------------------------------- 1 | """ 2 | # Copyright 2022 Red Hat 3 | # 4 | # Licensed under the Apache License, Version 2.0 (the "License"); you may 5 | # not use this file except in compliance with the License. You may obtain 6 | # a copy of the License at 7 | # 8 | # http://www.apache.org/licenses/LICENSE-2.0 9 | # 10 | # Unless required by applicable law or agreed to in writing, software 11 | # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 12 | # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 13 | # License for the specific language governing permissions and limitations 14 | # under the License. 15 | """ 16 | -------------------------------------------------------------------------------- /cibyl/outputs/cli/ci/_docs/printing/colored.puml: -------------------------------------------------------------------------------- 1 | @startuml 2 | hide empty field 3 | hide empty method 4 | 5 | interface CIPrinter 6 | interface CISystemPrinter 7 | 8 | abstract class Printer 9 | abstract class ColoredPrinter 10 | 11 | class CIColoredPrinter 12 | 13 | class ColoredBaseSystemPrinter 14 | class ColoredJobsSystemPrinter 15 | class ColoredZuulSystemPrinter 16 | 17 | Printer <|-- ColoredPrinter 18 | 19 | ColoredPrinter <|-- CIColoredPrinter 20 | 21 | CIColoredPrinter ..|> CIPrinter 22 | CIColoredPrinter --> CISystemPrinter 23 | 24 | CISystemPrinter <|.. ColoredBaseSystemPrinter 25 | CISystemPrinter <|.. ColoredJobsSystemPrinter 26 | CISystemPrinter <|.. ColoredZuulSystemPrinter 27 | 28 | ColoredBaseSystemPrinter <|-- ColoredJobsSystemPrinter 29 | ColoredBaseSystemPrinter <|-- ColoredZuulSystemPrinter 30 | 31 | @enduml 32 | -------------------------------------------------------------------------------- /cibyl/outputs/cli/ci/env/__init__.py: -------------------------------------------------------------------------------- 1 | """ 2 | # Copyright 2022 Red Hat 3 | # 4 | # Licensed under the Apache License, Version 2.0 (the "License"); you may 5 | # not use this file except in compliance with the License. You may obtain 6 | # a copy of the License at 7 | # 8 | # http://www.apache.org/licenses/LICENSE-2.0 9 | # 10 | # Unless required by applicable law or agreed to in writing, software 11 | # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 12 | # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 13 | # License for the specific language governing permissions and limitations 14 | # under the License. 15 | """ 16 | -------------------------------------------------------------------------------- /cibyl/outputs/cli/ci/env/impl/__init__.py: -------------------------------------------------------------------------------- 1 | """ 2 | # Copyright 2022 Red Hat 3 | # 4 | # Licensed under the Apache License, Version 2.0 (the "License"); you may 5 | # not use this file except in compliance with the License. You may obtain 6 | # a copy of the License at 7 | # 8 | # http://www.apache.org/licenses/LICENSE-2.0 9 | # 10 | # Unless required by applicable law or agreed to in writing, software 11 | # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 12 | # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 13 | # License for the specific language governing permissions and limitations 14 | # under the License. 15 | """ 16 | -------------------------------------------------------------------------------- /cibyl/outputs/cli/ci/env/printer.py: -------------------------------------------------------------------------------- 1 | """ 2 | # Copyright 2022 Red Hat 3 | # 4 | # Licensed under the Apache License, Version 2.0 (the "License"); you may 5 | # not use this file except in compliance with the License. You may obtain 6 | # a copy of the License at 7 | # 8 | # http://www.apache.org/licenses/LICENSE-2.0 9 | # 10 | # Unless required by applicable law or agreed to in writing, software 11 | # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 12 | # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 13 | # License for the specific language governing permissions and limitations 14 | # under the License. 15 | """ 16 | from abc import ABC, abstractmethod 17 | 18 | from cibyl.models.ci.base.environment import Environment 19 | 20 | 21 | class CIPrinter(ABC): 22 | """Interface for printers of a CI model hierarchy. 23 | """ 24 | 25 | @abstractmethod 26 | def print_environment(self, env: Environment) -> str: 27 | """ 28 | :param env: The environment. 29 | :return: Textual representation of the provided model. 30 | """ 31 | raise NotImplementedError 32 | -------------------------------------------------------------------------------- /cibyl/outputs/cli/ci/system/__init__.py: -------------------------------------------------------------------------------- 1 | """ 2 | # Copyright 2022 Red Hat 3 | # 4 | # Licensed under the Apache License, Version 2.0 (the "License"); you may 5 | # not use this file except in compliance with the License. You may obtain 6 | # a copy of the License at 7 | # 8 | # http://www.apache.org/licenses/LICENSE-2.0 9 | # 10 | # Unless required by applicable law or agreed to in writing, software 11 | # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 12 | # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 13 | # License for the specific language governing permissions and limitations 14 | # under the License. 15 | """ 16 | -------------------------------------------------------------------------------- /cibyl/outputs/cli/ci/system/common/__init__.py: -------------------------------------------------------------------------------- 1 | """ 2 | # Copyright 2022 Red Hat 3 | # 4 | # Licensed under the Apache License, Version 2.0 (the "License"); you may 5 | # not use this file except in compliance with the License. You may obtain 6 | # a copy of the License at 7 | # 8 | # http://www.apache.org/licenses/LICENSE-2.0 9 | # 10 | # Unless required by applicable law or agreed to in writing, software 11 | # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 12 | # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 13 | # License for the specific language governing permissions and limitations 14 | # under the License. 15 | """ 16 | -------------------------------------------------------------------------------- /cibyl/outputs/cli/ci/system/impls/__init__.py: -------------------------------------------------------------------------------- 1 | """ 2 | # Copyright 2022 Red Hat 3 | # 4 | # Licensed under the Apache License, Version 2.0 (the "License"); you may 5 | # not use this file except in compliance with the License. You may obtain 6 | # a copy of the License at 7 | # 8 | # http://www.apache.org/licenses/LICENSE-2.0 9 | # 10 | # Unless required by applicable law or agreed to in writing, software 11 | # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 12 | # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 13 | # License for the specific language governing permissions and limitations 14 | # under the License. 15 | """ 16 | -------------------------------------------------------------------------------- /cibyl/outputs/cli/ci/system/impls/base/__init__.py: -------------------------------------------------------------------------------- 1 | """ 2 | # Copyright 2022 Red Hat 3 | # 4 | # Licensed under the Apache License, Version 2.0 (the "License"); you may 5 | # not use this file except in compliance with the License. You may obtain 6 | # a copy of the License at 7 | # 8 | # http://www.apache.org/licenses/LICENSE-2.0 9 | # 10 | # Unless required by applicable law or agreed to in writing, software 11 | # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 12 | # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 13 | # License for the specific language governing permissions and limitations 14 | # under the License. 15 | """ 16 | -------------------------------------------------------------------------------- /cibyl/outputs/cli/ci/system/impls/jobs/__init__.py: -------------------------------------------------------------------------------- 1 | """ 2 | # Copyright 2022 Red Hat 3 | # 4 | # Licensed under the Apache License, Version 2.0 (the "License"); you may 5 | # not use this file except in compliance with the License. You may obtain 6 | # a copy of the License at 7 | # 8 | # http://www.apache.org/licenses/LICENSE-2.0 9 | # 10 | # Unless required by applicable law or agreed to in writing, software 11 | # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 12 | # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 13 | # License for the specific language governing permissions and limitations 14 | # under the License. 15 | """ 16 | -------------------------------------------------------------------------------- /cibyl/outputs/cli/ci/system/impls/zuul/__init__.py: -------------------------------------------------------------------------------- 1 | """ 2 | # Copyright 2022 Red Hat 3 | # 4 | # Licensed under the Apache License, Version 2.0 (the "License"); you may 5 | # not use this file except in compliance with the License. You may obtain 6 | # a copy of the License at 7 | # 8 | # http://www.apache.org/licenses/LICENSE-2.0 9 | # 10 | # Unless required by applicable law or agreed to in writing, software 11 | # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 12 | # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 13 | # License for the specific language governing permissions and limitations 14 | # under the License. 15 | """ 16 | -------------------------------------------------------------------------------- /cibyl/outputs/cli/ci/system/impls/zuul/colored/cascades/__init__.py: -------------------------------------------------------------------------------- 1 | """ 2 | # Copyright 2022 Red Hat 3 | # 4 | # Licensed under the Apache License, Version 2.0 (the "License"); you may 5 | # not use this file except in compliance with the License. You may obtain 6 | # a copy of the License at 7 | # 8 | # http://www.apache.org/licenses/LICENSE-2.0 9 | # 10 | # Unless required by applicable law or agreed to in writing, software 11 | # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 12 | # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 13 | # License for the specific language governing permissions and limitations 14 | # under the License. 15 | """ 16 | -------------------------------------------------------------------------------- /cibyl/outputs/cli/ci/system/impls/zuul/colored/trees/__init__.py: -------------------------------------------------------------------------------- 1 | """ 2 | # Copyright 2022 Red Hat 3 | # 4 | # Licensed under the Apache License, Version 2.0 (the "License"); you may 5 | # not use this file except in compliance with the License. You may obtain 6 | # a copy of the License at 7 | # 8 | # http://www.apache.org/licenses/LICENSE-2.0 9 | # 10 | # Unless required by applicable law or agreed to in writing, software 11 | # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 12 | # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 13 | # License for the specific language governing permissions and limitations 14 | # under the License. 15 | """ 16 | -------------------------------------------------------------------------------- /cibyl/outputs/cli/ci/system/printer.py: -------------------------------------------------------------------------------- 1 | """ 2 | # Copyright 2022 Red Hat 3 | # 4 | # Licensed under the Apache License, Version 2.0 (the "License"); you may 5 | # not use this file except in compliance with the License. You may obtain 6 | # a copy of the License at 7 | # 8 | # http://www.apache.org/licenses/LICENSE-2.0 9 | # 10 | # Unless required by applicable law or agreed to in writing, software 11 | # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 12 | # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 13 | # License for the specific language governing permissions and limitations 14 | # under the License. 15 | """ 16 | from abc import ABC, abstractmethod 17 | 18 | from cibyl.models.ci.base.system import System 19 | 20 | 21 | class CISystemPrinter(ABC): 22 | """Interface for printers of a CI system. 23 | """ 24 | 25 | @abstractmethod 26 | def print_system(self, system: System) -> str: 27 | """ 28 | :param system: The system. 29 | :return: Textual representation of the provided model. 30 | """ 31 | raise NotImplementedError 32 | -------------------------------------------------------------------------------- /cibyl/outputs/cli/ci/system/utils/__init__.py: -------------------------------------------------------------------------------- 1 | """ 2 | # Copyright 2022 Red Hat 3 | # 4 | # Licensed under the Apache License, Version 2.0 (the "License"); you may 5 | # not use this file except in compliance with the License. You may obtain 6 | # a copy of the License at 7 | # 8 | # http://www.apache.org/licenses/LICENSE-2.0 9 | # 10 | # Unless required by applicable law or agreed to in writing, software 11 | # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 12 | # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 13 | # License for the specific language governing permissions and limitations 14 | # under the License. 15 | """ 16 | -------------------------------------------------------------------------------- /cibyl/outputs/cli/ci/system/utils/sorting/__init__.py: -------------------------------------------------------------------------------- 1 | """ 2 | # Copyright 2022 Red Hat 3 | # 4 | # Licensed under the Apache License, Version 2.0 (the "License"); you may 5 | # not use this file except in compliance with the License. You may obtain 6 | # a copy of the License at 7 | # 8 | # http://www.apache.org/licenses/LICENSE-2.0 9 | # 10 | # Unless required by applicable law or agreed to in writing, software 11 | # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 12 | # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 13 | # License for the specific language governing permissions and limitations 14 | # under the License. 15 | """ 16 | -------------------------------------------------------------------------------- /cibyl/outputs/cli/ci/system/utils/sorting/jobs.py: -------------------------------------------------------------------------------- 1 | """ 2 | # Copyright 2022 Red Hat 3 | # 4 | # Licensed under the Apache License, Version 2.0 (the "License"); you may 5 | # not use this file except in compliance with the License. You may obtain 6 | # a copy of the License at 7 | # 8 | # http://www.apache.org/licenses/LICENSE-2.0 9 | # 10 | # Unless required by applicable law or agreed to in writing, software 11 | # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 12 | # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 13 | # License for the specific language governing permissions and limitations 14 | # under the License. 15 | """ 16 | from cibyl.models.ci.base.job import Job 17 | from kernel.tools.sorting import Comparator 18 | 19 | 20 | class SortJobsByName(Comparator): 21 | """Sorts jobs in alphabetical order based on their name. 22 | """ 23 | 24 | def compare(self, left: Job, right: Job) -> int: 25 | """See parent function for more information.""" 26 | name_left = left.name.value.lower() 27 | name_right = right.name.value.lower() 28 | 29 | if name_left == name_right: 30 | return 0 31 | 32 | return -1 if name_left < name_right else 1 33 | -------------------------------------------------------------------------------- /cibyl/plugins/openstack/features/__init__.py: -------------------------------------------------------------------------------- 1 | """ 2 | # Copyright 2022 Red Hat 3 | # 4 | # Licensed under the Apache License, Version 2.0 (the "License"); you may 5 | # not use this file except in compliance with the License. You may obtain 6 | # a copy of the License at 7 | # 8 | # http://www.apache.org/licenses/LICENSE-2.0 9 | # 10 | # Unless required by applicable law or agreed to in writing, software 11 | # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 12 | # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 13 | # License for the specific language governing permissions and limitations 14 | # under the License. 15 | """ 16 | import logging 17 | 18 | from cibyl.features import FeatureTemplate 19 | 20 | LOG = logging.getLogger(__name__) 21 | 22 | 23 | class OpenstackFeatureTemplate(FeatureTemplate): 24 | """Skeleton for an openstack specific feature.""" 25 | 26 | def __init__(self, name: str): 27 | self.name = name 28 | 29 | def get_method_to_query(self) -> str: 30 | return "get_deployment" 31 | -------------------------------------------------------------------------------- /cibyl/plugins/openstack/printers/_docs/osp_printer.puml: -------------------------------------------------------------------------------- 1 | @startuml 2 | hide empty field 3 | hide empty method 4 | 5 | 6 | abstract class Printer 7 | abstract class PluginPrinterTemplate 8 | abstract class OSPrinter 9 | abstract class OSSerializedPrinter 10 | class OSColoredPrinter 11 | 12 | class PrinterRouter 13 | 14 | 15 | Printer <|-- ColoredPrinter 16 | OSPrinter <|-- OSColoredPrinter 17 | ColoredPrinter <|-- OSColoredPrinter 18 | OSPrinter <|-- OSSerializedPrinter 19 | OSSerializedPrinter <|-- OSJSONPrinter 20 | PluginPrinterTemplate <|-- PrinterRouter 21 | PrinterRouter <|.. OSColoredPrinter 22 | PrinterRouter <|.. OSJSONPrinter 23 | @enduml 24 | -------------------------------------------------------------------------------- /cibyl/plugins/openstack/printers/raw.py: -------------------------------------------------------------------------------- 1 | """ 2 | # Copyright 2022 Red Hat 3 | # 4 | # Licensed under the Apache License, Version 2.0 (the "License"); you may 5 | # not use this file except in compliance with the License. You may obtain 6 | # a copy of the License at 7 | # 8 | # http://www.apache.org/licenses/LICENSE-2.0 9 | # 10 | # Unless required by applicable law or agreed to in writing, software 11 | # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 12 | # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 13 | # License for the specific language governing permissions and limitations 14 | # under the License. 15 | """ 16 | from cibyl.cli.query import QueryType 17 | from cibyl.plugins.openstack.printers.colored import OSColoredPrinter 18 | from cibyl.utils.colors import ClearText 19 | 20 | 21 | class OSRawPrinter(OSColoredPrinter): 22 | """Same as :class:`OSColoredPrinter`, but this one removes all color 23 | decoration, leaving only the raw text. 24 | """ 25 | 26 | def __init__(self, query=QueryType.NONE, verbosity=0): 27 | """Constructor. 28 | 29 | See parents for more information. 30 | """ 31 | super().__init__(query, verbosity, ClearText()) 32 | -------------------------------------------------------------------------------- /cibyl/plugins/openstack/sources/__init__.py: -------------------------------------------------------------------------------- 1 | """ 2 | # Copyright 2022 Red Hat 3 | # 4 | # Licensed under the Apache License, Version 2.0 (the "License"); you may 5 | # not use this file except in compliance with the License. You may obtain 6 | # a copy of the License at 7 | # 8 | # http://www.apache.org/licenses/LICENSE-2.0 9 | # 10 | # Unless required by applicable law or agreed to in writing, software 11 | # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 12 | # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 13 | # License for the specific language governing permissions and limitations 14 | # under the License. 15 | """ 16 | -------------------------------------------------------------------------------- /cibyl/plugins/openstack/sources/zuul/deployments/__init__.py: -------------------------------------------------------------------------------- 1 | """ 2 | # Copyright 2022 Red Hat 3 | # 4 | # Licensed under the Apache License, Version 2.0 (the "License"); you may 5 | # not use this file except in compliance with the License. You may obtain 6 | # a copy of the License at 7 | # 8 | # http://www.apache.org/licenses/LICENSE-2.0 9 | # 10 | # Unless required by applicable law or agreed to in writing, software 11 | # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 12 | # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 13 | # License for the specific language governing permissions and limitations 14 | # under the License. 15 | """ 16 | -------------------------------------------------------------------------------- /cibyl/sources/__init__.py: -------------------------------------------------------------------------------- 1 | # Copyright 2022 Red Hat 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); you may 4 | # not use this file except in compliance with the License. You may obtain 5 | # a copy of the License at 6 | # 7 | # http://www.apache.org/licenses/LICENSE-2.0 8 | # 9 | # Unless required by applicable law or agreed to in writing, software 10 | # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 11 | # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 12 | # License for the specific language governing permissions and limitations 13 | # under the License. 14 | -------------------------------------------------------------------------------- /cibyl/sources/elasticsearch/__init__.py: -------------------------------------------------------------------------------- 1 | # Copyright 2022 Red Hat 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); you may 4 | # not use this file except in compliance with the License. You may obtain 5 | # a copy of the License at 6 | # 7 | # http://www.apache.org/licenses/LICENSE-2.0 8 | # 9 | # Unless required by applicable law or agreed to in writing, software 10 | # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 11 | # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 12 | # License for the specific language governing permissions and limitations 13 | # under the License. 14 | -------------------------------------------------------------------------------- /cibyl/sources/plugins.py: -------------------------------------------------------------------------------- 1 | """ 2 | # Copyright 2022 Red Hat 3 | # 4 | # Licensed under the Apache License, Version 2.0 (the "License"); you may 5 | # not use this file except in compliance with the License. You may obtain 6 | # a copy of the License at 7 | # 8 | # http://www.apache.org/licenses/LICENSE-2.0 9 | # 10 | # Unless required by applicable law or agreed to in writing, software 11 | # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 12 | # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 13 | # License for the specific language governing permissions and limitations 14 | # under the License. 15 | """ 16 | 17 | 18 | class SourceExtension: 19 | """Flag that indicates that the class is meant to extend one of Cibyl's 20 | sources. 21 | """ 22 | -------------------------------------------------------------------------------- /cibyl/sources/zuul/__init__.py: -------------------------------------------------------------------------------- 1 | """ 2 | # Copyright 2022 Red Hat 3 | # 4 | # Licensed under the Apache License, Version 2.0 (the "License"); you may 5 | # not use this file except in compliance with the License. You may obtain 6 | # a copy of the License at 7 | # 8 | # http://www.apache.org/licenses/LICENSE-2.0 9 | # 10 | # Unless required by applicable law or agreed to in writing, software 11 | # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 12 | # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 13 | # License for the specific language governing permissions and limitations 14 | # under the License. 15 | """ 16 | -------------------------------------------------------------------------------- /cibyl/sources/zuul/_docs/activity/zuul_command.puml: -------------------------------------------------------------------------------- 1 | @startuml 2 | 'How modules interact with each other to generate a command's output. 3 | 4 | skinparam defaultTextAlignment center 5 | |Source| 6 | start 7 | :Receive random set of arguments; 8 | |#lightyellow|Actions| 9 | :Interpret requested 10 | hierarchy level from 11 | arguments; 12 | :Perform query on 13 | desired level and all 14 | above; 15 | ->1..*; 16 | |#lightsalmon|Queries| 17 | :Perform query for the 18 | requested hierarchy level; 19 | ->1..*; 20 | |#salmon|Transaction| 21 | :Compose complex request 22 | from simple API calls; 23 | ->1..*; 24 | |#tomato|API| 25 | :Interact with host API; 26 | |Transaction| 27 | :Filter out undesired data; 28 | |Queries| 29 | :Return gathered data from 30 | transactions; 31 | |Actions| 32 | :Generate output from 33 | query data; 34 | |Source| 35 | :Return output; 36 | end 37 | @enduml 38 | -------------------------------------------------------------------------------- /cibyl/sources/zuul/apis/factories/__init__.py: -------------------------------------------------------------------------------- 1 | """ 2 | # Copyright 2022 Red Hat 3 | # 4 | # Licensed under the Apache License, Version 2.0 (the "License"); you may 5 | # not use this file except in compliance with the License. You may obtain 6 | # a copy of the License at 7 | # 8 | # http://www.apache.org/licenses/LICENSE-2.0 9 | # 10 | # Unless required by applicable law or agreed to in writing, software 11 | # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 12 | # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 13 | # License for the specific language governing permissions and limitations 14 | # under the License. 15 | """ 16 | -------------------------------------------------------------------------------- /cibyl/sources/zuul/apis/factories/abc.py: -------------------------------------------------------------------------------- 1 | """ 2 | # Copyright 2022 Red Hat 3 | # 4 | # Licensed under the Apache License, Version 2.0 (the "License"); you may 5 | # not use this file except in compliance with the License. You may obtain 6 | # a copy of the License at 7 | # 8 | # http://www.apache.org/licenses/LICENSE-2.0 9 | # 10 | # Unless required by applicable law or agreed to in writing, software 11 | # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 12 | # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 13 | # License for the specific language governing permissions and limitations 14 | # under the License. 15 | """ 16 | from abc import ABC, abstractmethod 17 | from typing import Generic, TypeVar 18 | 19 | from cibyl.sources.zuul.apis import ZuulAPI 20 | 21 | T = TypeVar('T', bound=ZuulAPI) 22 | """Type for APIs built by the factory.""" 23 | 24 | 25 | class ZuulAPIFactory(Generic[T], ABC): 26 | """Base class for factories that create instances for subclasses of 27 | :class:`ZuulAPI`. 28 | """ 29 | 30 | @abstractmethod 31 | def new(self) -> T: 32 | """Builds a new instance of the API. 33 | 34 | :return: The new instance. 35 | """ 36 | raise NotImplementedError 37 | -------------------------------------------------------------------------------- /cibyl/sources/zuul/queries/__init__.py: -------------------------------------------------------------------------------- 1 | """ 2 | # Copyright 2022 Red Hat 3 | # 4 | # Licensed under the Apache License, Version 2.0 (the "License"); you may 5 | # not use this file except in compliance with the License. You may obtain 6 | # a copy of the License at 7 | # 8 | # http://www.apache.org/licenses/LICENSE-2.0 9 | # 10 | # Unless required by applicable law or agreed to in writing, software 11 | # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 12 | # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 13 | # License for the specific language governing permissions and limitations 14 | # under the License. 15 | """ 16 | -------------------------------------------------------------------------------- /cibyl/sources/zuul/queries/variants.py: -------------------------------------------------------------------------------- 1 | """ 2 | # Copyright 2022 Red Hat 3 | # 4 | # Licensed under the Apache License, Version 2.0 (the "License"); you may 5 | # not use this file except in compliance with the License. You may obtain 6 | # a copy of the License at 7 | # 8 | # http://www.apache.org/licenses/LICENSE-2.0 9 | # 10 | # Unless required by applicable law or agreed to in writing, software 11 | # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 12 | # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 13 | # License for the specific language governing permissions and limitations 14 | # under the License. 15 | """ 16 | 17 | 18 | def perform_variants_query(job, **kwargs): 19 | """Query for variants. 20 | 21 | :param job: API to interact with the owner of the variants. 22 | :type job: :class:`cibyl.sources.zuul.transactions.JobResponse` 23 | :param kwargs: Arguments coming from the CLI. 24 | :return: List of retrieved variants. 25 | :rtype: list[:class:`cibyl.sources.zuul.transactions.VariantResponse`] 26 | """ 27 | return job.variants().get() 28 | -------------------------------------------------------------------------------- /cibyl/sources/zuul/utils/__init__.py: -------------------------------------------------------------------------------- 1 | """ 2 | # Copyright 2022 Red Hat 3 | # 4 | # Licensed under the Apache License, Version 2.0 (the "License"); you may 5 | # not use this file except in compliance with the License. You may obtain 6 | # a copy of the License at 7 | # 8 | # http://www.apache.org/licenses/LICENSE-2.0 9 | # 10 | # Unless required by applicable law or agreed to in writing, software 11 | # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 12 | # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 13 | # License for the specific language governing permissions and limitations 14 | # under the License. 15 | """ 16 | -------------------------------------------------------------------------------- /cibyl/sources/zuul/utils/tests/__init__.py: -------------------------------------------------------------------------------- 1 | """ 2 | # Copyright 2022 Red Hat 3 | # 4 | # Licensed under the Apache License, Version 2.0 (the "License"); you may 5 | # not use this file except in compliance with the License. You may obtain 6 | # a copy of the License at 7 | # 8 | # http://www.apache.org/licenses/LICENSE-2.0 9 | # 10 | # Unless required by applicable law or agreed to in writing, software 11 | # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 12 | # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 13 | # License for the specific language governing permissions and limitations 14 | # under the License. 15 | """ 16 | -------------------------------------------------------------------------------- /cibyl/sources/zuul/utils/tests/tempest/__init__.py: -------------------------------------------------------------------------------- 1 | """ 2 | # Copyright 2022 Red Hat 3 | # 4 | # Licensed under the Apache License, Version 2.0 (the "License"); you may 5 | # not use this file except in compliance with the License. You may obtain 6 | # a copy of the License at 7 | # 8 | # http://www.apache.org/licenses/LICENSE-2.0 9 | # 10 | # Unless required by applicable law or agreed to in writing, software 11 | # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 12 | # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 13 | # License for the specific language governing permissions and limitations 14 | # under the License. 15 | """ 16 | -------------------------------------------------------------------------------- /cibyl/sources/zuul/utils/tests/tempest/types.py: -------------------------------------------------------------------------------- 1 | """ 2 | # Copyright 2022 Red Hat 3 | # 4 | # Licensed under the Apache License, Version 2.0 (the "License"); you may 5 | # not use this file except in compliance with the License. You may obtain 6 | # a copy of the License at 7 | # 8 | # http://www.apache.org/licenses/LICENSE-2.0 9 | # 10 | # Unless required by applicable law or agreed to in writing, software 11 | # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 12 | # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 13 | # License for the specific language governing permissions and limitations 14 | # under the License. 15 | """ 16 | from dataclasses import dataclass 17 | from typing import Optional 18 | 19 | from cibyl.sources.zuul.utils.tests.types import Test 20 | 21 | 22 | @dataclass 23 | class TempestTest(Test): 24 | """Representation of a tempest test case. 25 | """ 26 | class_name: str 27 | """Full path to the class containing the test case.""" 28 | skip_reason: Optional[str] = None 29 | """Why the test case was skipped.""" 30 | failure_reason: Optional[str] = None 31 | """Why the test case failed.""" 32 | -------------------------------------------------------------------------------- /cibyl/sources/zuul/utils/variants/__init__.py: -------------------------------------------------------------------------------- 1 | """ 2 | # Copyright 2022 Red Hat 3 | # 4 | # Licensed under the Apache License, Version 2.0 (the "License"); you may 5 | # not use this file except in compliance with the License. You may obtain 6 | # a copy of the License at 7 | # 8 | # http://www.apache.org/licenses/LICENSE-2.0 9 | # 10 | # Unless required by applicable law or agreed to in writing, software 11 | # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 12 | # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 13 | # License for the specific language governing permissions and limitations 14 | # under the License. 15 | """ 16 | -------------------------------------------------------------------------------- /cibyl/sources/zuuld/__init__.py: -------------------------------------------------------------------------------- 1 | """ 2 | # Copyright 2022 Red Hat 3 | # 4 | # Licensed under the Apache License, Version 2.0 (the "License"); you may 5 | # not use this file except in compliance with the License. You may obtain 6 | # a copy of the License at 7 | # 8 | # http://www.apache.org/licenses/LICENSE-2.0 9 | # 10 | # Unless required by applicable law or agreed to in writing, software 11 | # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 12 | # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 13 | # License for the specific language governing permissions and limitations 14 | # under the License. 15 | """ 16 | -------------------------------------------------------------------------------- /cibyl/sources/zuuld/backends/__init__.py: -------------------------------------------------------------------------------- 1 | """ 2 | # Copyright 2022 Red Hat 3 | # 4 | # Licensed under the Apache License, Version 2.0 (the "License"); you may 5 | # not use this file except in compliance with the License. You may obtain 6 | # a copy of the License at 7 | # 8 | # http://www.apache.org/licenses/LICENSE-2.0 9 | # 10 | # Unless required by applicable law or agreed to in writing, software 11 | # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 12 | # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 13 | # License for the specific language governing permissions and limitations 14 | # under the License. 15 | """ 16 | -------------------------------------------------------------------------------- /cibyl/sources/zuuld/frontends/__init__.py: -------------------------------------------------------------------------------- 1 | """ 2 | # Copyright 2022 Red Hat 3 | # 4 | # Licensed under the Apache License, Version 2.0 (the "License"); you may 5 | # not use this file except in compliance with the License. You may obtain 6 | # a copy of the License at 7 | # 8 | # http://www.apache.org/licenses/LICENSE-2.0 9 | # 10 | # Unless required by applicable law or agreed to in writing, software 11 | # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 12 | # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 13 | # License for the specific language governing permissions and limitations 14 | # under the License. 15 | """ 16 | -------------------------------------------------------------------------------- /cibyl/sources/zuuld/models/__init__.py: -------------------------------------------------------------------------------- 1 | """ 2 | # Copyright 2022 Red Hat 3 | # 4 | # Licensed under the Apache License, Version 2.0 (the "License"); you may 5 | # not use this file except in compliance with the License. You may obtain 6 | # a copy of the License at 7 | # 8 | # http://www.apache.org/licenses/LICENSE-2.0 9 | # 10 | # Unless required by applicable law or agreed to in writing, software 11 | # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 12 | # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 13 | # License for the specific language governing permissions and limitations 14 | # under the License. 15 | """ 16 | -------------------------------------------------------------------------------- /cibyl/sources/zuuld/specs/__init__.py: -------------------------------------------------------------------------------- 1 | """ 2 | # Copyright 2022 Red Hat 3 | # 4 | # Licensed under the Apache License, Version 2.0 (the "License"); you may 5 | # not use this file except in compliance with the License. You may obtain 6 | # a copy of the License at 7 | # 8 | # http://www.apache.org/licenses/LICENSE-2.0 9 | # 10 | # Unless required by applicable law or agreed to in writing, software 11 | # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 12 | # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 13 | # License for the specific language governing permissions and limitations 14 | # under the License. 15 | """ 16 | -------------------------------------------------------------------------------- /cibyl/sources/zuuld/tools/__init__.py: -------------------------------------------------------------------------------- 1 | """ 2 | # Copyright 2022 Red Hat 3 | # 4 | # Licensed under the Apache License, Version 2.0 (the "License"); you may 5 | # not use this file except in compliance with the License. You may obtain 6 | # a copy of the License at 7 | # 8 | # http://www.apache.org/licenses/LICENSE-2.0 9 | # 10 | # Unless required by applicable law or agreed to in writing, software 11 | # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 12 | # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 13 | # License for the specific language governing permissions and limitations 14 | # under the License. 15 | """ 16 | -------------------------------------------------------------------------------- /cibyl/utils/__init__.py: -------------------------------------------------------------------------------- 1 | """ 2 | # Copyright 2022 Red Hat 3 | # 4 | # Licensed under the Apache License, Version 2.0 (the "License"); you may 5 | # not use this file except in compliance with the License. You may obtain 6 | # a copy of the License at 7 | # 8 | # http://www.apache.org/licenses/LICENSE-2.0 9 | # 10 | # Unless required by applicable law or agreed to in writing, software 11 | # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 12 | # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 13 | # License for the specific language governing permissions and limitations 14 | # under the License. 15 | """ 16 | -------------------------------------------------------------------------------- /cibyl/utils/time.py: -------------------------------------------------------------------------------- 1 | """ 2 | # Copyright 2022 Red Hat 3 | # 4 | # Licensed under the Apache License, Version 2.0 (the "License"); you may 5 | # not use this file except in compliance with the License. You may obtain 6 | # a copy of the License at 7 | # 8 | # http://www.apache.org/licenses/LICENSE-2.0 9 | # 10 | # Unless required by applicable law or agreed to in writing, software 11 | # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 12 | # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 13 | # License for the specific language governing permissions and limitations 14 | # under the License. 15 | """ 16 | 17 | 18 | def as_minutes(duration: float, unit: str = "ms") -> float: 19 | """Converts a duration to mins. 20 | 21 | :param duration: The duration to convert. 22 | :param unit: The unit the duration is in. 23 | :return: The time in minutes. 24 | :raises: NotImplementedError if the unit is not known (milliseconds or 25 | seconds) 26 | """ 27 | if unit == "ms": 28 | return duration / 60000 29 | elif unit == "s": 30 | return duration / 60 31 | else: 32 | raise NotImplementedError 33 | -------------------------------------------------------------------------------- /docs/Makefile: -------------------------------------------------------------------------------- 1 | # Minimal makefile for Sphinx documentation 2 | # 3 | 4 | # You can set these variables from the command line. 5 | SPHINXOPTS = -W 6 | SPHINXBUILD = sphinx-build 7 | SOURCEDIR = source 8 | BUILDDIR = build 9 | 10 | # Put it first so that "make" without argument is like "make help". 11 | help: 12 | @$(SPHINXBUILD) -M help "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O) 13 | 14 | .PHONY: help Makefile 15 | 16 | # Catch-all target: route all unknown targets to Sphinx using the new 17 | # "make mode" option. $(O) is meant as a shortcut for $(SPHINXOPTS). 18 | %: Makefile 19 | @$(SPHINXBUILD) -M $@ "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O) 20 | -------------------------------------------------------------------------------- /docs/requirements.txt: -------------------------------------------------------------------------------- 1 | pbr 2 | sphinx>=1.5.1 3 | sphinx-autobuild 4 | sphinx_rtd_theme 5 | Pygments>=2.2.0 6 | reno>=2.5.0 7 | sphinxemoji 8 | -------------------------------------------------------------------------------- /docs/source/colored_printer.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RedHatCRE/cibyl/8078fea925a1656960bd0a955f3e7c2d4a380e0f/docs/source/colored_printer.png -------------------------------------------------------------------------------- /docs/source/config_samples/disabled_configuration.rst: -------------------------------------------------------------------------------- 1 | .. include:: /config_samples/disabled_configuration.yaml 2 | :literal: 3 | -------------------------------------------------------------------------------- /docs/source/config_samples/disabled_configuration.yaml: -------------------------------------------------------------------------------- 1 | environments: 2 | production: 3 | production_jenkins_1: 4 | system_type: jenkins 5 | sources: 6 | jenkins_api_prod: 7 | driver: jenkins 8 | url: https://... 9 | username: user 10 | token: xyz 11 | production_jenkins_2: 12 | enabled: false # Makes 'production_jenkins_2' system disabled 13 | system_type: jenkins 14 | sources: 15 | jenkins_api_prod: 16 | driver: jenkins 17 | url: https://... 18 | username: user 19 | token: xyz 20 | staging: 21 | enabled: false # Makes 'staging' environment disabled 22 | staging_jenkins: 23 | system_type: jenkins 24 | sources: 25 | jenkins_api_staging: 26 | driver: jenkins 27 | url: https://... 28 | username: user 29 | token: xyz 30 | -------------------------------------------------------------------------------- /docs/source/config_samples/elasticsearch_configuration.rst: -------------------------------------------------------------------------------- 1 | .. include:: /config_samples/elasticsearch_configuration.yaml 2 | :literal: 3 | -------------------------------------------------------------------------------- /docs/source/config_samples/elasticsearch_configuration.yaml: -------------------------------------------------------------------------------- 1 | environments: # List of CI/CD environments 2 | production: # An environment called "production" 3 | production_jenkins: # A single system called "production_jenkins" 4 | system_type: jenkins # The type of the system (jenkins or zuul) 5 | sources: # List of sources belong to "production_jenkins" system 6 | es: # The name of the source which belongs to "production_jenkins" system 7 | driver: elasticsearch # The driver the source will be using 8 | url: https://... # The URL of the source 9 | -------------------------------------------------------------------------------- /docs/source/config_samples/full_configuration.rst: -------------------------------------------------------------------------------- 1 | .. include:: /config_samples/full_configuration.yaml 2 | :literal: 3 | -------------------------------------------------------------------------------- /docs/source/config_samples/jjb_configuration.rst: -------------------------------------------------------------------------------- 1 | .. include:: /config_samples/jjb_configuration.yaml 2 | :literal: 3 | -------------------------------------------------------------------------------- /docs/source/config_samples/jjb_configuration.yaml: -------------------------------------------------------------------------------- 1 | environments: # List of CI/CD environments 2 | production: # An environment called "production" 3 | production_jenkins: # A single system called "production_jenkins" 4 | system_type: jenkins # The type of the system (jenkins or zuul) 5 | sources: # List of sources belong to "production_jenkins" system 6 | jjb: # The name of the source which belongs to "production_jenkins" system 7 | driver: jenkins_job_builder # The driver the source will be using 8 | repos: # List of repositories where the job definitions are located 9 | - url: 'https://jjb_repo_example.git' 10 | -------------------------------------------------------------------------------- /docs/source/config_samples/minimal_configuration.rst: -------------------------------------------------------------------------------- 1 | .. include:: /config_samples/minimal_configuration.yaml 2 | :literal: 3 | -------------------------------------------------------------------------------- /docs/source/config_samples/minimal_configuration.yaml: -------------------------------------------------------------------------------- 1 | # Minimal configuration 2 | 3 | environments: # List of CI/CD environments 4 | production: # An environment called "production" 5 | production_jenkins: # A single system called "production_jenkins" 6 | system_type: jenkins # The type of the system (jenkins or zuul) 7 | sources: # List of sources belong to "production_jenkins" system 8 | jenkins_api: # The name of the source which belongs to "production_jenkins" system 9 | driver: jenkins # The driver the source will be using 10 | url: https://... # The URL of the system 11 | username: user # The username to use for the authentication 12 | token: xyz # The token to use for the authentication 13 | cert: False # Disable/Enable certificates to use for the authentication 14 | 15 | plugins: # (Optional) Specify the plugins to enable when running Cibyl 16 | - openstack # OpenStack adds its own product related models and arguments 17 | -------------------------------------------------------------------------------- /docs/source/config_samples/zuul_api_configuration.rst: -------------------------------------------------------------------------------- 1 | .. include:: /config_samples/zuul_api_configuration.yaml 2 | :literal: 3 | -------------------------------------------------------------------------------- /docs/source/config_samples/zuul_api_configuration.yaml: -------------------------------------------------------------------------------- 1 | environments: # List of CI/CD environments 2 | production: # An environment called "production" 3 | production_zuul: # A single system called "production_jenkins" 4 | system_type: zuul # The type of the system 5 | sources: # List of sources belong to "production_jenkins" system 6 | zuul_api: # The name of the source which belongs to "production_zuul" system 7 | driver: zuul # The driver the source will be using 8 | url: https://... # The URL of the system 9 | tenants: # List of tenants to use. This section is optional 10 | - default # and allows the user to restrict which zuul 11 | - local # tenants will be queried can be useful 12 | -------------------------------------------------------------------------------- /docs/source/config_samples/zuul_definitions_local_configuration.rst: -------------------------------------------------------------------------------- 1 | .. include:: /config_samples/zuul_definitions_local_configuration.yaml 2 | :literal: 3 | -------------------------------------------------------------------------------- /docs/source/config_samples/zuul_definitions_local_configuration.yaml: -------------------------------------------------------------------------------- 1 | environments: # List of CI/CD environments 2 | production: # An environment called "production" 3 | production_zuul: # A single system called "production_jenkins" 4 | system_type: zuul # The type of the system 5 | sources: # List of sources belong to "production_jenkins" system 6 | zuul_api: # The name of the source which belongs to "production_zuul" system 7 | driver: zuul.d # The driver the source will be using 8 | remote: False # Optional as this is the default 9 | unsafe: True # Disable YAML validation before parsing 10 | repos: # The repos to clone and query when running Cibyl query commands 11 | - url: 'http://zuul_defitions_repo.git' 12 | - url: 'http://zuul_defitions_repo1.git' 13 | -------------------------------------------------------------------------------- /docs/source/config_samples/zuul_definitions_remote_configuration.rst: -------------------------------------------------------------------------------- 1 | .. include:: /config_samples/zuul_definitions_remote_configuration.yaml 2 | :literal: 3 | -------------------------------------------------------------------------------- /docs/source/config_samples/zuul_definitions_remote_configuration.yaml: -------------------------------------------------------------------------------- 1 | environments: # List of CI/CD environments 2 | production: # An environment called "production" 3 | production_zuul: # A single system called "production_jenkins" 4 | system_type: zuul # The type of the system 5 | sources: # List of sources belong to "production_jenkins" system 6 | zuul_api: # The name of the source which belongs to "production_zuul" system 7 | driver: zuul.d # The driver the source will be using 8 | remote: True # Query GitHub API instead of querying local repos 9 | username: user # Required only when 'remote: True' 10 | token: xyz # Required only when 'remote: True' 11 | repos: # The repos to query using GitHub API 12 | - url: 'http://localhost/zuul_defitions_repo.git' 13 | - url: 'http://localhost/zuul_defitions_repo1.git' 14 | -------------------------------------------------------------------------------- /docs/source/development/contribute.rst: -------------------------------------------------------------------------------- 1 | Contribute 2 | ========== 3 | 4 | Please submit a pull requests to the `cibyl project`_ on GitHub. 5 | 6 | .. _`cibyl project`: https://github.com/rhos-infra/cibyl 7 | 8 | 9 | Style 10 | ----- 11 | 12 | Cibyl CI enforces code linting according to the Google Python Style Guide 13 | 14 | .. _`Python Style Guide`: https://google.github.io/styleguide/pyguide.html 15 | -------------------------------------------------------------------------------- /docs/source/development/sources.rst: -------------------------------------------------------------------------------- 1 | Sources 2 | ======= 3 | 4 | To add/develop a new type of source, follow the following guidelines: 5 | 6 | * A source should be added to cibyl/sources/ 7 | 8 | * The source class you develop should inherit from the Source class (``cibyl/sources/source.py``) 9 | 10 | * For a source to support an argument, it should implement the function name associated with that argument 11 | 12 | * Each source method that implements a method of an argument, should be returning an AttributeDict value of the top level entity associated with the CI systems (e.g. ``AttributeDictValue("jobs", attr_type=Job, value=job_objects)``) 13 | 14 | * A source should handle only CI/CD related data. If you would like a certain source to pull a product related data, you should add a source class (with the same name as the CI/CD source) to corresponding plugin (``cibyl/plugin//sources/``) 15 | -------------------------------------------------------------------------------- /docs/source/development/tests.rst: -------------------------------------------------------------------------------- 1 | Tests 2 | ===== 3 | 4 | Cibyl tests cover the following: 5 | 6 | * unit: testing each component of the application 7 | * coverage: verify unit testing coverage is above 90% 8 | * e2e: testing as a user would experience it 9 | * linters: code analysis 10 | * docs: documentation testing 11 | 12 | Each of the above can be executed with ``tox -e `` or ``tox`` to run them all 13 | -------------------------------------------------------------------------------- /docs/source/features.rst: -------------------------------------------------------------------------------- 1 | Features 2 | ======== 3 | 4 | Cibyl allows users to define their own product related data in form of what is known as "features". 5 | Features are basically blocks of code with the purpose of querying for specific product features in one or more environments. 6 | 7 | Out of the box Cibyl supports multiple features for existing plugins and users can easily list them with ``cibyl features`` 8 | 9 | Allowing users to define their own sort of product arguments has multiple advantages: 10 | 11 | * Use internal project functions and mechanisms to define complex custom queries 12 | * Consistent approach towards querying for product data, in different environments and sources 13 | * Sharing product related data with other users without extending endlessly the number of product arguments supported by Cibyl 14 | 15 | Usage 16 | ^^^^^ 17 | 18 | To list all the existing features: ``cibyl features`` 19 | 20 | Query IPv4 feature: ``cibyl features ipv6`` 21 | 22 | Query two features: ``cibyl features ipv6 ha`` 23 | 24 | Query for a feature in specific set of jobs: ``cibyl features ha --jobs production`` 25 | 26 | Development 27 | ^^^^^^^^^^^ 28 | 29 | Would like to add a new feature? Read the `features development `_ section. 30 | -------------------------------------------------------------------------------- /docs/source/images/cibyl_entities.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RedHatCRE/cibyl/8078fea925a1656960bd0a955f3e7c2d4a380e0f/docs/source/images/cibyl_entities.png -------------------------------------------------------------------------------- /docs/source/images/cibyl_printing.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RedHatCRE/cibyl/8078fea925a1656960bd0a955f3e7c2d4a380e0f/docs/source/images/cibyl_printing.png -------------------------------------------------------------------------------- /docs/source/images/colored_printer.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RedHatCRE/cibyl/8078fea925a1656960bd0a955f3e7c2d4a380e0f/docs/source/images/colored_printer.png -------------------------------------------------------------------------------- /docs/source/images/osp_printer.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RedHatCRE/cibyl/8078fea925a1656960bd0a955f3e7c2d4a380e0f/docs/source/images/osp_printer.png -------------------------------------------------------------------------------- /docs/source/images/plugin.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RedHatCRE/cibyl/8078fea925a1656960bd0a955f3e7c2d4a380e0f/docs/source/images/plugin.png -------------------------------------------------------------------------------- /docs/source/images/serialized_printer.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RedHatCRE/cibyl/8078fea925a1656960bd0a955f3e7c2d4a380e0f/docs/source/images/serialized_printer.png -------------------------------------------------------------------------------- /docs/source/models/core.rst: -------------------------------------------------------------------------------- 1 | Core Models 2 | =========== 3 | 4 | Core models (aka CI/CD models) are built-in CI/CD Cibyl models: 5 | 6 | * Environment: A CI/CD environment with one or more CI/CD systems. This is mostly a logical separation, rather than a physical one. 7 | * System: A CI/CD system such as Jenkins, Zuul ,etc. 8 | * Pipeline: A specific Zuul concept which used for describing a workflow 9 | * Job: A particular task/automation in the CI/CD system 10 | * Build: An execution instance of a job 11 | * Test: A test execution that is part of a build 12 | 13 | 14 | The way they are organized and associated one with each other, mainly depends on the type of the CI/CD system being used. 15 | For a Jenkins system for example, the hierarchy includes Job and Build models, while for Zuul system, the hierarchy includes Pipeline, Job and Build models. 16 | 17 | :: 18 | 19 | Environment 20 | ├── System 21 | │ └── Job # Jenkins 22 | │ └── Build 23 | │ └── Test 24 | │ └── Pipeline # Zuul 25 | │ └── Job 26 | │ └── Build 27 | │ └── Test 28 | -------------------------------------------------------------------------------- /docs/source/models/plugin.rst: -------------------------------------------------------------------------------- 1 | Plugin Models 2 | ============= 3 | 4 | Plugin models are provided by different plugins. They are not associated by default with the core models of Cibyl, but only when the plugin is being used. 5 | In addition, the way the plugin models are associated with core models, is very much depends on the implementation of the plugin. 6 | 7 | An example of plugin models can be seen in `openstack plugin <../plugins/openstack.html#models>`_ page 8 | -------------------------------------------------------------------------------- /docs/source/plugins.rst: -------------------------------------------------------------------------------- 1 | Plugins 2 | ======= 3 | 4 | Plugins allow you to extend built-in models with your own models. This can be useful in case you would like to associate product related data with your CI models for example, as can be seen in the image below. In this case, the Job model is being associated with the Deployment model through the deployment key in Job's API. 5 | 6 | .. image:: images/plugin.png 7 | 8 | A supported plugin in Cibyl has to adhere following 9 | structure:: 10 | 11 | cibyl 12 | ├── plugins 13 | │ └── example # Arbitrary plugin name 14 | │ └── __init__.py # Should include Plugin class with _extend method 15 | 16 | Plugin Class 17 | ^^^^^^^^^^^^ 18 | 19 | .. code-block:: python 20 | 21 | class ExamplePlugin: 22 | 23 | def _extend(self, model_api: dict): 24 | model_api['new_attribute'] = { 25 | 'attr_type': str, 26 | arguments: [] 27 | } 28 | -------------------------------------------------------------------------------- /docs/source/serialized_printer.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RedHatCRE/cibyl/8078fea925a1656960bd0a955f3e7c2d4a380e0f/docs/source/serialized_printer.png -------------------------------------------------------------------------------- /docs/source/sources/elasticsearch.rst: -------------------------------------------------------------------------------- 1 | Elasticsearch 2 | ============= 3 | 4 | The Elasticsearch source pulls data from the different indexes of the Elasticsearch database. 5 | 6 | Usage 7 | ^^^^^ 8 | 9 | To following is a configuration sample of how to configure the Elasticsearch source 10 | 11 | .. include:: ../config_samples/elasticsearch_configuration.rst 12 | 13 | Fields 14 | ^^^^^^ 15 | 16 | Elasticsearch should include the following fields in order to be fully operational: 17 | 18 | - job_name 19 | - build_number 20 | - build_result 21 | - current_build_result 22 | 23 | Plugin Support 24 | ^^^^^^^^^^^^^^ 25 | 26 | The Elasticsearch source is supported by the following built-in plugins: 27 | 28 | * OpenStack 29 | -------------------------------------------------------------------------------- /docs/source/sources/jenkins-job-builder.rst: -------------------------------------------------------------------------------- 1 | Jenkins Job Builder 2 | =================== 3 | 4 | "Jenkins Job Builder" is the source for obtaining information from jenkins job definitions repositories. 5 | It's supported only with Jenkins CI/CD system. 6 | 7 | Usage 8 | ^^^^^ 9 | 10 | To following is a configuration sample of how to configure the 'Jenkins Job Builder' source 11 | 12 | .. include:: ../config_samples/jjb_configuration.rst 13 | 14 | Plugin Support 15 | ^^^^^^^^^^^^^^ 16 | 17 | The 'Jenkins Job Builder' source is supported by the following built-in plugins: 18 | 19 | * OpenStack 20 | -------------------------------------------------------------------------------- /docs/source/sources/jenkins.rst: -------------------------------------------------------------------------------- 1 | Jenkins 2 | ======= 3 | 4 | The Jenkins source pulls data from the Jenkins API. 5 | 6 | Usage 7 | ^^^^^ 8 | 9 | To following is a configuration sample of how to configure the Jenkins source 10 | 11 | .. include:: ../config_samples/minimal_configuration.rst 12 | 13 | Plugin Support 14 | ^^^^^^^^^^^^^^ 15 | 16 | The Jenkins source is supported by the following built-in plugins: 17 | 18 | * OpenStack 19 | -------------------------------------------------------------------------------- /docs/source/sources/zuul_api.rst: -------------------------------------------------------------------------------- 1 | Zuul API 2 | ======== 3 | 4 | The Zuul API source pulls data from the Zuul CI/CD system. 5 | 6 | Usage 7 | ^^^^^ 8 | 9 | The following is a configuration sample of how to configure the Zuul source 10 | 11 | .. include:: ../config_samples/zuul_api_configuration.rst 12 | 13 | Plugin Support 14 | ^^^^^^^^^^^^^^ 15 | 16 | The Zuul source is supported by the following built-in plugins: 17 | 18 | * OpenStack 19 | -------------------------------------------------------------------------------- /docs/source/usage.rst: -------------------------------------------------------------------------------- 1 | Usage 2 | ===== 3 | 4 | CLI 5 | --- 6 | 7 | Basic 8 | ^^^^^ 9 | 10 | Running ``cibyl`` with no arguments, will print the environments and systems as set up in your configuration. 11 | Cibyl supports multiple subcommands. The most common one is query, that allows 12 | to query many environments for different CI/CD and product specific data. 13 | Another example is the ``features`` subcommand, which allows to query whether 14 | certain product-specific features are supported in each of the environments of 15 | the configuration (see `features section `_ for more details). 16 | 17 | Jobs 18 | ^^^^ 19 | 20 | Running ``cibyl query --jobs`` will retrieve information on all the jobs for each environment specified in your configuration. 21 | 22 | In order to retrieve jobs for a specific environment, use the ``--envs Environment`` argument. 23 | If the environment includes multiple systems, you can also choose a specific system with the ``--systems System`` argument. 24 | The same can be done for sources with the ``--sources Source`` argument. 25 | 26 | This was a simple example of what you could do with cibyl, to get a more depth 27 | overview see the `CLI usage `_ section. 28 | 29 | Python 30 | ------ 31 | 32 | To Do 33 | -------------------------------------------------------------------------------- /docs/source/usage/api.rst: -------------------------------------------------------------------------------- 1 | API 2 | === 3 | -------------------------------------------------------------------------------- /kernel/__init__.py: -------------------------------------------------------------------------------- 1 | """ 2 | # Copyright 2022 Red Hat 3 | # 4 | # Licensed under the Apache License, Version 2.0 (the "License"); you may 5 | # not use this file except in compliance with the License. You may obtain 6 | # a copy of the License at 7 | # 8 | # http://www.apache.org/licenses/LICENSE-2.0 9 | # 10 | # Unless required by applicable law or agreed to in writing, software 11 | # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 12 | # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 13 | # License for the specific language governing permissions and limitations 14 | # under the License. 15 | """ 16 | -------------------------------------------------------------------------------- /kernel/scm/__init__.py: -------------------------------------------------------------------------------- 1 | """ 2 | # Copyright 2022 Red Hat 3 | # 4 | # Licensed under the Apache License, Version 2.0 (the "License"); you may 5 | # not use this file except in compliance with the License. You may obtain 6 | # a copy of the License at 7 | # 8 | # http://www.apache.org/licenses/LICENSE-2.0 9 | # 10 | # Unless required by applicable law or agreed to in writing, software 11 | # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 12 | # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 13 | # License for the specific language governing permissions and limitations 14 | # under the License. 15 | """ 16 | -------------------------------------------------------------------------------- /kernel/scm/git/__init__.py: -------------------------------------------------------------------------------- 1 | """ 2 | # Copyright 2022 Red Hat 3 | # 4 | # Licensed under the Apache License, Version 2.0 (the "License"); you may 5 | # not use this file except in compliance with the License. You may obtain 6 | # a copy of the License at 7 | # 8 | # http://www.apache.org/licenses/LICENSE-2.0 9 | # 10 | # Unless required by applicable law or agreed to in writing, software 11 | # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 12 | # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 13 | # License for the specific language governing permissions and limitations 14 | # under the License. 15 | """ 16 | -------------------------------------------------------------------------------- /kernel/scm/git/apis/__init__.py: -------------------------------------------------------------------------------- 1 | """ 2 | # Copyright 2022 Red Hat 3 | # 4 | # Licensed under the Apache License, Version 2.0 (the "License"); you may 5 | # not use this file except in compliance with the License. You may obtain 6 | # a copy of the License at 7 | # 8 | # http://www.apache.org/licenses/LICENSE-2.0 9 | # 10 | # Unless required by applicable law or agreed to in writing, software 11 | # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 12 | # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 13 | # License for the specific language governing permissions and limitations 14 | # under the License. 15 | """ 16 | -------------------------------------------------------------------------------- /kernel/scm/git/tools/__init__.py: -------------------------------------------------------------------------------- 1 | """ 2 | # Copyright 2022 Red Hat 3 | # 4 | # Licensed under the Apache License, Version 2.0 (the "License"); you may 5 | # not use this file except in compliance with the License. You may obtain 6 | # a copy of the License at 7 | # 8 | # http://www.apache.org/licenses/LICENSE-2.0 9 | # 10 | # Unless required by applicable law or agreed to in writing, software 11 | # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 12 | # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 13 | # License for the specific language governing permissions and limitations 14 | # under the License. 15 | """ 16 | -------------------------------------------------------------------------------- /kernel/scm/tools/__init__.py: -------------------------------------------------------------------------------- 1 | """ 2 | # Copyright 2022 Red Hat 3 | # 4 | # Licensed under the Apache License, Version 2.0 (the "License"); you may 5 | # not use this file except in compliance with the License. You may obtain 6 | # a copy of the License at 7 | # 8 | # http://www.apache.org/licenses/LICENSE-2.0 9 | # 10 | # Unless required by applicable law or agreed to in writing, software 11 | # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 12 | # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 13 | # License for the specific language governing permissions and limitations 14 | # under the License. 15 | """ 16 | -------------------------------------------------------------------------------- /kernel/tools/__init__.py: -------------------------------------------------------------------------------- 1 | """ 2 | # Copyright 2022 Red Hat 3 | # 4 | # Licensed under the Apache License, Version 2.0 (the "License"); you may 5 | # not use this file except in compliance with the License. You may obtain 6 | # a copy of the License at 7 | # 8 | # http://www.apache.org/licenses/LICENSE-2.0 9 | # 10 | # Unless required by applicable law or agreed to in writing, software 11 | # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 12 | # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 13 | # License for the specific language governing permissions and limitations 14 | # under the License. 15 | """ 16 | -------------------------------------------------------------------------------- /kernel/tools/io.py: -------------------------------------------------------------------------------- 1 | """ 2 | # Copyright 2022 Red Hat 3 | # 4 | # Licensed under the Apache License, Version 2.0 (the "License"); you may 5 | # not use this file except in compliance with the License. You may obtain 6 | # a copy of the License at 7 | # 8 | # http://www.apache.org/licenses/LICENSE-2.0 9 | # 10 | # Unless required by applicable law or agreed to in writing, software 11 | # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 12 | # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 13 | # License for the specific language governing permissions and limitations 14 | # under the License. 15 | """ 16 | from abc import ABC, abstractmethod 17 | 18 | 19 | class Closeable(ABC): 20 | """Interface meant to release the resources hold by the object. 21 | """ 22 | 23 | @abstractmethod 24 | def close(self): 25 | """Releases any resources associated to this object. 26 | 27 | :rtype: None 28 | """ 29 | raise NotImplementedError 30 | -------------------------------------------------------------------------------- /kernel/tools/rng.py: -------------------------------------------------------------------------------- 1 | """ 2 | # Copyright 2022 Red Hat 3 | # 4 | # Licensed under the Apache License, Version 2.0 (the "License"); you may 5 | # not use this file except in compliance with the License. You may obtain 6 | # a copy of the License at 7 | # 8 | # http://www.apache.org/licenses/LICENSE-2.0 9 | # 10 | # Unless required by applicable law or agreed to in writing, software 11 | # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 12 | # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 13 | # License for the specific language governing permissions and limitations 14 | # under the License. 15 | """ 16 | import uuid 17 | 18 | 19 | def get_new_uuid() -> str: 20 | """ 21 | :return: A new unique identifier. 22 | """ 23 | return str(uuid.uuid4()) 24 | -------------------------------------------------------------------------------- /kernel/tools/strings.py: -------------------------------------------------------------------------------- 1 | """ 2 | # Copyright 2022 Red Hat 3 | # 4 | # Licensed under the Apache License, Version 2.0 (the "License"); you may 5 | # not use this file except in compliance with the License. You may obtain 6 | # a copy of the License at 7 | # 8 | # http://www.apache.org/licenses/LICENSE-2.0 9 | # 10 | # Unless required by applicable law or agreed to in writing, software 11 | # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 12 | # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 13 | # License for the specific language governing permissions and limitations 14 | # under the License. 15 | """ 16 | import validators 17 | 18 | 19 | def is_url(string: str) -> bool: 20 | """ 21 | :param string: The string to test. 22 | :return: True if the string follows a URL format, False if not. 23 | """ 24 | result = validators.url(string) 25 | 26 | if isinstance(result, bool): 27 | return result 28 | 29 | return False 30 | -------------------------------------------------------------------------------- /requirements.txt: -------------------------------------------------------------------------------- 1 | wheel>=0.37.1 2 | pyyaml>=5.0 3 | requests~=2.27.1 4 | elasticsearch~=7.17.1 5 | colorlog~=6.6.0 6 | urllib3~=1.26.9 7 | rfc3987~=1.3.8 8 | overrides~=6.1.0 9 | GitPython~=3.1.18 10 | deprecation~=2.1.0 11 | jsonschema~=3.2.0 12 | dataclasses~=0.8; python_version<='3.6' 13 | python-dateutil~=2.8.2 14 | PyGithub~=1.55 15 | validators~=0.20.0 16 | cached-property~=1.5.2 17 | networkx==2.5.1; python_version<='3.6' 18 | networkx~=2.8.4; python_version>'3.6' 19 | xsdata~=22.7 20 | StrEnum~=0.4.8 21 | pbr>=2.0.0 22 | anytree~=2.8.0 23 | dateparser~=1.1.2 24 | -------------------------------------------------------------------------------- /samples/sample-config.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | environments: 3 | sample_env: 4 | sample_system: 5 | system_type: jenkins 6 | sources: 7 | jenkins: 8 | driver: jenkins 9 | url: 'https://localhost:8080' 10 | enabled: true 11 | elasticsearch: 12 | driver: elasticsearch 13 | url: 'https://localhost:9000' 14 | enabled: false 15 | -------------------------------------------------------------------------------- /setup.cfg: -------------------------------------------------------------------------------- 1 | [metadata] 2 | name = Cibyl 3 | description_file = README.rst 4 | home_page = https://github.com/rhos-infra/cibyl 5 | author = Red Hat Code Reliability Engineering Team 6 | author_email = rhos-cre@redhat.com 7 | maintainer = Red Hat Code Reliability Engineering Team 8 | maintainer_email = rhos-cre@redhat.com 9 | classifier = 10 | Intended Audience :: Developers 11 | Intended Audience :: Information Technology 12 | Intended Audience :: System Administrators 13 | License :: OSI Approved :: Apache Software License 14 | Operating System :: OS Independent 15 | Programming Language :: Python 16 | Programming Language :: Python :: 3 17 | Topic :: Software Development :: Libraries :: Python Modules 18 | 19 | [files] 20 | packages = 21 | kernel 22 | tripleo 23 | cibyl 24 | 25 | [entry_points] 26 | console_scripts = 27 | cibyl = cibyl.cli.main:main 28 | 29 | [egg_info] 30 | egg_base = . 31 | 32 | [bdist_wheel] 33 | universal = 1 34 | 35 | [pbr] 36 | warnerrors = true 37 | skip_authors = true 38 | skip_reno = true 39 | skip_changelog = true 40 | -------------------------------------------------------------------------------- /setup.py: -------------------------------------------------------------------------------- 1 | """ 2 | # Copyright 2022 Red Hat 3 | # 4 | # Licensed under the Apache License, Version 2.0 (the "License"); you may 5 | # not use this file except in compliance with the License. You may obtain 6 | # a copy of the License at 7 | # 8 | # http://www.apache.org/licenses/LICENSE-2.0 9 | # 10 | # Unless required by applicable law or agreed to in writing, software 11 | # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 12 | # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 13 | # License for the specific language governing permissions and limitations 14 | # under the License. 15 | """ 16 | from setuptools import setup 17 | 18 | setup( 19 | setup_requires=['pbr>=2.0.0'], 20 | pbr=True 21 | ) 22 | -------------------------------------------------------------------------------- /test-requirements.txt: -------------------------------------------------------------------------------- 1 | coverage>=6.2 2 | testcontainers~=3.5.4 3 | docker-compose~=1.29.2 4 | GitPython~=3.1.18 5 | cryptography~=36.0.2 6 | parameterized~=0.8.1 7 | -------------------------------------------------------------------------------- /tests/__init__.py: -------------------------------------------------------------------------------- 1 | """ 2 | # Copyright 2022 Red Hat 3 | # 4 | # Licensed under the Apache License, Version 2.0 (the "License"); you may 5 | # not use this file except in compliance with the License. You may obtain 6 | # a copy of the License at 7 | # 8 | # http://www.apache.org/licenses/LICENSE-2.0 9 | # 10 | # Unless required by applicable law or agreed to in writing, software 11 | # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 12 | # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 13 | # License for the specific language governing permissions and limitations 14 | # under the License. 15 | """ 16 | -------------------------------------------------------------------------------- /tests/cibyl/__init__.py: -------------------------------------------------------------------------------- 1 | """ 2 | # Copyright 2022 Red Hat 3 | # 4 | # Licensed under the Apache License, Version 2.0 (the "License"); you may 5 | # not use this file except in compliance with the License. You may obtain 6 | # a copy of the License at 7 | # 8 | # http://www.apache.org/licenses/LICENSE-2.0 9 | # 10 | # Unless required by applicable law or agreed to in writing, software 11 | # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 12 | # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 13 | # License for the specific language governing permissions and limitations 14 | # under the License. 15 | """ 16 | -------------------------------------------------------------------------------- /tests/cibyl/e2e/__init__.py: -------------------------------------------------------------------------------- 1 | """ 2 | # Copyright 2022 Red Hat 3 | # 4 | # Licensed under the Apache License, Version 2.0 (the "License"); you may 5 | # not use this file except in compliance with the License. You may obtain 6 | # a copy of the License at 7 | # 8 | # http://www.apache.org/licenses/LICENSE-2.0 9 | # 10 | # Unless required by applicable law or agreed to in writing, software 11 | # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 12 | # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 13 | # License for the specific language governing permissions and limitations 14 | # under the License. 15 | """ 16 | -------------------------------------------------------------------------------- /tests/cibyl/e2e/data/configs/elasticsearch.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | environments: 3 | osp_phases: 4 | osp_jenkins: 5 | system_type: jenkins 6 | sources: 7 | elasticsearch: 8 | driver: elasticsearch 9 | url: 'http://localhost:9200' 10 | -------------------------------------------------------------------------------- /tests/cibyl/e2e/data/configs/jenkins.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | environments: 3 | osp_phases: 4 | osp_jenkins: 5 | system_type: jenkins 6 | sources: 7 | jenkins: 8 | driver: jenkins 9 | username: 'admin' 10 | token: 'passw' 11 | url: 'http://localhost:8080/' 12 | -------------------------------------------------------------------------------- /tests/cibyl/e2e/data/configs/jenkins/with-openstack.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | environments: 3 | osp_phases: 4 | osp_jenkins: 5 | system_type: jenkins 6 | sources: 7 | jenkins: 8 | driver: jenkins 9 | username: 'admin' 10 | token: 'passw' 11 | url: 'http://localhost:8080/' 12 | plugins: 13 | - openstack 14 | -------------------------------------------------------------------------------- /tests/cibyl/e2e/data/configs/zuul.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | environments: 3 | env_1: 4 | zuul_system: 5 | system_type: zuul 6 | sources: 7 | osp_zuul: 8 | driver: zuul 9 | url: 'http://localhost:9000/' 10 | -------------------------------------------------------------------------------- /tests/cibyl/e2e/data/configs/zuul/with-tenants.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | environments: 3 | env_1: 4 | zuul_system: 5 | system_type: zuul 6 | sources: 7 | osp_zuul: 8 | driver: zuul 9 | url: 'http://localhost:9000/' 10 | tenants: [ '^(example-tenant)$' ] 11 | -------------------------------------------------------------------------------- /tests/cibyl/e2e/data/images/elasticsearch/docker-compose.yml: -------------------------------------------------------------------------------- 1 | version: '3.9' 2 | 3 | services: 4 | elasticsearch: 5 | image: elasticsearch:7.9.2 6 | environment: 7 | - xpack.security.enabled=false 8 | - discovery.type=single-node 9 | ulimits: 10 | memlock: 11 | soft: -1 12 | hard: -1 13 | nofile: 14 | soft: 65536 15 | hard: 65536 16 | cap_add: 17 | - IPC_LOCK 18 | ports: 19 | - 9200:9200 20 | - 9300:9300 21 | -------------------------------------------------------------------------------- /tests/cibyl/e2e/data/images/httpd/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM httpd:alpine 2 | 3 | COPY public /usr/local/apache2/htdocs/ 4 | -------------------------------------------------------------------------------- /tests/cibyl/e2e/data/images/httpd/docker-compose.yml: -------------------------------------------------------------------------------- 1 | version: "3.9" 2 | services: 3 | httpd: 4 | build: . 5 | networks: 6 | testnet: 7 | ipv4_address: 172.19.1.1 8 | ports: 9 | - "8080:80" 10 | cibyl: 11 | build: ../../../../../../. # Dockerfile on project's root 12 | networks: 13 | testnet: 14 | ipv4_address: 172.19.2.1 15 | networks: 16 | testnet: 17 | driver: bridge 18 | ipam: 19 | driver: default 20 | config: 21 | - subnet: 172.19.0.0/16 22 | gateway: 172.19.0.1 23 | -------------------------------------------------------------------------------- /tests/cibyl/e2e/data/images/httpd/public/jenkins.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | environments: 3 | test_environment: 4 | test_system: 5 | system_type: jenkins 6 | sources: 7 | jenkins: 8 | driver: jenkins 9 | url: 'http://localhost:8080/' 10 | -------------------------------------------------------------------------------- /tests/cibyl/e2e/data/images/jenkins/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM jenkins/jenkins:lts-jdk11 2 | 3 | 4 | # Define environmental conditions 5 | ENV JAVA_OPTS \ 6 | # Avoid GUI setup wizard 7 | -Djenkins.install.runSetupWizard=false \ 8 | # Allow unsecure POST commands 9 | -Dhudson.security.csrf.GlobalCrumbIssuerConfiguration.DISABLE_CSRF_PROTECTION=true 10 | 11 | # Indicate path to configuration file 12 | ENV CASC_JENKINS_CONFIG /var/jenkins_home/casc.yaml 13 | 14 | # Install plugins 15 | RUN jenkins-plugin-cli --plugins configuration-as-code junit 16 | 17 | # Load Jenkin's configuration 18 | COPY ./setup.yaml /var/jenkins_home/casc.yaml 19 | 20 | # specify which pre-built jenkins environment to use, default is none, meaning 21 | # an empty jenkins instance 22 | ARG JENKINS_ENV="none" 23 | # copy pre-configured set of pipelines and builds 24 | COPY --chown=jenkins:jenkins ./jenkins_envs/$JENKINS_ENV/jobs /var/jenkins_home/jobs 25 | -------------------------------------------------------------------------------- /tests/cibyl/e2e/data/images/jenkins/docker-compose.yml: -------------------------------------------------------------------------------- 1 | version: "3.9" 2 | services: 3 | jenkins: 4 | build: . 5 | ports: 6 | - "8080:8080" 7 | - "50000:50000" 8 | environment: 9 | - JENKINS_ADMIN_ID=admin 10 | - JENKINS_ADMIN_PASSWORD=passw 11 | -------------------------------------------------------------------------------- /tests/cibyl/e2e/data/images/jenkins/docker-compose_jenkins_core.yml: -------------------------------------------------------------------------------- 1 | version: "3.9" 2 | services: 3 | jenkins: 4 | build: 5 | context: . 6 | args: 7 | JENKINS_ENV: jenkins_core_models 8 | 9 | ports: 10 | - "8080:8080" 11 | - "50000:50000" 12 | environment: 13 | - JENKINS_ADMIN_ID=admin 14 | - JENKINS_ADMIN_PASSWORD=passw 15 | -------------------------------------------------------------------------------- /tests/cibyl/e2e/data/images/jenkins/docker-compose_jenkins_openstack.yml: -------------------------------------------------------------------------------- 1 | version: "3.9" 2 | services: 3 | jenkins: 4 | build: 5 | context: . 6 | args: 7 | JENKINS_ENV: jenkins_openstack 8 | networks: 9 | testnet: 10 | ipv4_address: 172.39.1.2 11 | ports: 12 | - "8080:8080" 13 | - "50000:50000" 14 | environment: 15 | - JENKINS_ADMIN_ID=admin 16 | - JENKINS_ADMIN_PASSWORD=passw 17 | httpd: 18 | build: openstack_httpd 19 | networks: 20 | testnet: 21 | ipv4_address: 172.39.1.1 22 | ports: 23 | - "8000:80" 24 | networks: 25 | testnet: 26 | driver: bridge 27 | ipam: 28 | driver: default 29 | config: 30 | - subnet: 172.39.0.0/16 31 | gateway: 172.39.0.1 32 | -------------------------------------------------------------------------------- /tests/cibyl/e2e/data/images/jenkins/jenkins_envs/jenkins_core_models/env.yml: -------------------------------------------------------------------------------- 1 | test_1: 2 | "1": 3 | description: "Test description" 4 | result: "FAILURE" 5 | "2": 6 | description: "Test description 2" 7 | result: "UNSTABLE" 8 | tests: 9 | - name: "test_case1" 10 | class_name: "class_test_1" 11 | duration: "0.5" 12 | result: "FAILED" 13 | - name: "test_case2" 14 | class_name: "class_test_1" 15 | - name: "test_case3" 16 | class_name: "class_test_1" 17 | result: "SKIPPED" 18 | duration: "5" 19 | test_2: 20 | "1": 21 | description: "Test description" 22 | "2": 23 | description: "Test description 2" 24 | tests: 25 | - name: "test_case1" 26 | class_name: "class_test_1" 27 | duration: "0.5" 28 | result: "FAILED" 29 | - name: "test_case2" 30 | class_name: "class_test_1" 31 | - name: "test_case3" 32 | class_name: "class_test_1" 33 | result: "SKIPPED" 34 | duration: "5" 35 | test_3: 36 | "1": # mock build with no tests 37 | result: "FAILED" 38 | test_4: # mock job with not builds 39 | -------------------------------------------------------------------------------- /tests/cibyl/e2e/data/images/jenkins/jenkins_envs/jenkins_core_models/jobs/config.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | A job for E2E testing! 4 | false 5 | 6 | 7 | true 8 | false 9 | false 10 | false 11 | 12 | false 13 | 14 | 15 | 16 | 17 | -------------------------------------------------------------------------------- /tests/cibyl/e2e/data/images/jenkins/jenkins_envs/jenkins_core_models/jobs/nextBuildNumber: -------------------------------------------------------------------------------- 1 | 3 2 | -------------------------------------------------------------------------------- /tests/cibyl/e2e/data/images/jenkins/jenkins_envs/jenkins_core_models/jobs/test_1/builds/1/build.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 1 9 | 10 | 11 | 12 | 13 | 1 14 | 1660119863992 15 | 1660119864008 16 | FAILURE 17 | custom description 18 | 22 19 | UTF-8 20 | false 21 | 22 | /var/jenkins_home/test_1/workspace 23 | 2.332.3 24 | 25 | 26 | 27 | 28 | 29 | -------------------------------------------------------------------------------- /tests/cibyl/e2e/data/images/jenkins/jenkins_envs/jenkins_core_models/jobs/test_1/builds/1/changelog.xml: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /tests/cibyl/e2e/data/images/jenkins/jenkins_envs/jenkins_core_models/jobs/test_1/builds/1/log: -------------------------------------------------------------------------------- 1 | Started by user unknown or anonymous 2 | Running as SYSTEM 3 | Building in workspace /var/jenkins_home/workspace/test_1 4 | Finished: FAILURE 5 | -------------------------------------------------------------------------------- /tests/cibyl/e2e/data/images/jenkins/jenkins_envs/jenkins_core_models/jobs/test_1/builds/2/changelog.xml: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /tests/cibyl/e2e/data/images/jenkins/jenkins_envs/jenkins_core_models/jobs/test_1/builds/2/log: -------------------------------------------------------------------------------- 1 | Started by user unknown or anonymous 2 | Running as SYSTEM 3 | Building in workspace /var/jenkins_home/workspace/test_1 4 | Finished: UNSTABLE 5 | -------------------------------------------------------------------------------- /tests/cibyl/e2e/data/images/jenkins/jenkins_envs/jenkins_core_models/jobs/test_1/builds/permalinks: -------------------------------------------------------------------------------- 1 | lastCompletedBuild 2 2 | lastStableBuild 0 3 | lastSuccessfulBuild 0 4 | -------------------------------------------------------------------------------- /tests/cibyl/e2e/data/images/jenkins/jenkins_envs/jenkins_core_models/jobs/test_1/config.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | A job for E2E testing! 4 | false 5 | 6 | 7 | true 8 | false 9 | false 10 | false 11 | 12 | false 13 | 14 | 15 | 16 | 17 | -------------------------------------------------------------------------------- /tests/cibyl/e2e/data/images/jenkins/jenkins_envs/jenkins_core_models/jobs/test_1/nextBuildNumber: -------------------------------------------------------------------------------- 1 | 3 2 | -------------------------------------------------------------------------------- /tests/cibyl/e2e/data/images/jenkins/jenkins_envs/jenkins_core_models/jobs/test_2/builds/1/build.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 1 9 | 10 | 11 | 12 | 13 | 1 14 | 1660119863992 15 | 1660119864008 16 | SUCCESS 17 | custom description 18 | 22 19 | UTF-8 20 | false 21 | 22 | /var/jenkins_home/test_2/workspace 23 | 2.332.3 24 | 25 | 26 | 27 | 28 | 29 | -------------------------------------------------------------------------------- /tests/cibyl/e2e/data/images/jenkins/jenkins_envs/jenkins_core_models/jobs/test_2/builds/1/changelog.xml: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /tests/cibyl/e2e/data/images/jenkins/jenkins_envs/jenkins_core_models/jobs/test_2/builds/1/log: -------------------------------------------------------------------------------- 1 | Started by user unknown or anonymous 2 | Running as SYSTEM 3 | Building in workspace /var/jenkins_home/workspace/test_2 4 | Finished: SUCCESS 5 | -------------------------------------------------------------------------------- /tests/cibyl/e2e/data/images/jenkins/jenkins_envs/jenkins_core_models/jobs/test_2/builds/2/changelog.xml: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /tests/cibyl/e2e/data/images/jenkins/jenkins_envs/jenkins_core_models/jobs/test_2/builds/2/log: -------------------------------------------------------------------------------- 1 | Started by user unknown or anonymous 2 | Running as SYSTEM 3 | Building in workspace /var/jenkins_home/workspace/test_2 4 | Finished: SUCCESS 5 | -------------------------------------------------------------------------------- /tests/cibyl/e2e/data/images/jenkins/jenkins_envs/jenkins_core_models/jobs/test_2/builds/permalinks: -------------------------------------------------------------------------------- 1 | lastCompletedBuild 2 2 | lastStableBuild 2 3 | lastSuccessfulBuild 2 4 | -------------------------------------------------------------------------------- /tests/cibyl/e2e/data/images/jenkins/jenkins_envs/jenkins_core_models/jobs/test_2/config.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | A job for E2E testing! 4 | false 5 | 6 | 7 | true 8 | false 9 | false 10 | false 11 | 12 | false 13 | 14 | 15 | 16 | 17 | -------------------------------------------------------------------------------- /tests/cibyl/e2e/data/images/jenkins/jenkins_envs/jenkins_core_models/jobs/test_2/nextBuildNumber: -------------------------------------------------------------------------------- 1 | 3 2 | -------------------------------------------------------------------------------- /tests/cibyl/e2e/data/images/jenkins/jenkins_envs/jenkins_core_models/jobs/test_3/builds/1/build.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 1 9 | 10 | 11 | 12 | 13 | 1 14 | 1660119863992 15 | 1660119864008 16 | FAILED 17 | custom description 18 | 22 19 | UTF-8 20 | false 21 | 22 | /var/jenkins_home/test_3/workspace 23 | 2.332.3 24 | 25 | 26 | 27 | 28 | 29 | -------------------------------------------------------------------------------- /tests/cibyl/e2e/data/images/jenkins/jenkins_envs/jenkins_core_models/jobs/test_3/builds/1/changelog.xml: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /tests/cibyl/e2e/data/images/jenkins/jenkins_envs/jenkins_core_models/jobs/test_3/builds/1/log: -------------------------------------------------------------------------------- 1 | Started by user unknown or anonymous 2 | Running as SYSTEM 3 | Building in workspace /var/jenkins_home/workspace/test_3 4 | Finished: FAILED 5 | -------------------------------------------------------------------------------- /tests/cibyl/e2e/data/images/jenkins/jenkins_envs/jenkins_core_models/jobs/test_3/builds/permalinks: -------------------------------------------------------------------------------- 1 | lastCompletedBuild 1 2 | lastStableBuild 0 3 | lastSuccessfulBuild 0 4 | -------------------------------------------------------------------------------- /tests/cibyl/e2e/data/images/jenkins/jenkins_envs/jenkins_core_models/jobs/test_3/config.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | A job for E2E testing! 4 | false 5 | 6 | 7 | true 8 | false 9 | false 10 | false 11 | 12 | false 13 | 14 | 15 | 16 | 17 | -------------------------------------------------------------------------------- /tests/cibyl/e2e/data/images/jenkins/jenkins_envs/jenkins_core_models/jobs/test_3/nextBuildNumber: -------------------------------------------------------------------------------- 1 | 2 2 | -------------------------------------------------------------------------------- /tests/cibyl/e2e/data/images/jenkins/jenkins_envs/jenkins_core_models/jobs/test_4/builds/permalinks: -------------------------------------------------------------------------------- 1 | lastCompletedBuild 0 2 | lastStableBuild 0 3 | lastSuccessfulBuild 0 4 | -------------------------------------------------------------------------------- /tests/cibyl/e2e/data/images/jenkins/jenkins_envs/jenkins_core_models/jobs/test_4/config.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | A job for E2E testing! 4 | false 5 | 6 | 7 | true 8 | false 9 | false 10 | false 11 | 12 | false 13 | 14 | 15 | 16 | 17 | -------------------------------------------------------------------------------- /tests/cibyl/e2e/data/images/jenkins/jenkins_envs/jenkins_core_models/jobs/test_4/nextBuildNumber: -------------------------------------------------------------------------------- 1 | 1 2 | -------------------------------------------------------------------------------- /tests/cibyl/e2e/data/images/jenkins/jenkins_envs/jenkins_openstack/jobs/test_1/builds/1/build.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 1 9 | 10 | 11 | 12 | 13 | 1 14 | 1660119863992 15 | 1660119864008 16 | FAILURE 17 | <a href="http://172.39.1.1/test_1/1/">Browse logs</a> 18 | 22 19 | UTF-8 20 | false 21 | 22 | /var/jenkins_home/test_1/workspace 23 | 2.332.3 24 | 25 | 26 | 27 | 28 | 29 | -------------------------------------------------------------------------------- /tests/cibyl/e2e/data/images/jenkins/jenkins_envs/jenkins_openstack/jobs/test_1/builds/1/changelog.xml: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /tests/cibyl/e2e/data/images/jenkins/jenkins_envs/jenkins_openstack/jobs/test_1/builds/1/log: -------------------------------------------------------------------------------- 1 | Started by user unknown or anonymous 2 | Running as SYSTEM 3 | Building in workspace /var/jenkins_home/workspace/test_1 4 | Finished: FAILURE 5 | -------------------------------------------------------------------------------- /tests/cibyl/e2e/data/images/jenkins/jenkins_envs/jenkins_openstack/jobs/test_1/builds/2/changelog.xml: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /tests/cibyl/e2e/data/images/jenkins/jenkins_envs/jenkins_openstack/jobs/test_1/builds/2/log: -------------------------------------------------------------------------------- 1 | Started by user unknown or anonymous 2 | Running as SYSTEM 3 | Building in workspace /var/jenkins_home/workspace/test_1 4 | Finished: UNSTABLE 5 | -------------------------------------------------------------------------------- /tests/cibyl/e2e/data/images/jenkins/jenkins_envs/jenkins_openstack/jobs/test_1/builds/permalinks: -------------------------------------------------------------------------------- 1 | lastCompletedBuild 2 2 | lastStableBuild 0 3 | lastSuccessfulBuild 0 4 | -------------------------------------------------------------------------------- /tests/cibyl/e2e/data/images/jenkins/jenkins_envs/jenkins_openstack/jobs/test_1/config.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | A job for E2E testing! 4 | false 5 | 6 | 7 | true 8 | false 9 | false 10 | false 11 | 12 | false 13 | 14 | 15 | 16 | 17 | -------------------------------------------------------------------------------- /tests/cibyl/e2e/data/images/jenkins/jenkins_envs/jenkins_openstack/jobs/test_1/nextBuildNumber: -------------------------------------------------------------------------------- 1 | 3 2 | -------------------------------------------------------------------------------- /tests/cibyl/e2e/data/images/jenkins/jenkins_envs/jenkins_openstack/jobs/test_2/builds/1/build.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 1 9 | 10 | 11 | 12 | 13 | 1 14 | 1660119863992 15 | 1660119864008 16 | SUCCESS 17 | <a href="http://172.39.1.1/test_2/1/">Browse logs</a> 18 | 22 19 | UTF-8 20 | false 21 | 22 | /var/jenkins_home/test_2/workspace 23 | 2.332.3 24 | 25 | 26 | 27 | 28 | 29 | -------------------------------------------------------------------------------- /tests/cibyl/e2e/data/images/jenkins/jenkins_envs/jenkins_openstack/jobs/test_2/builds/1/changelog.xml: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /tests/cibyl/e2e/data/images/jenkins/jenkins_envs/jenkins_openstack/jobs/test_2/builds/1/log: -------------------------------------------------------------------------------- 1 | Started by user unknown or anonymous 2 | Running as SYSTEM 3 | Building in workspace /var/jenkins_home/workspace/test_2 4 | Finished: SUCCESS 5 | -------------------------------------------------------------------------------- /tests/cibyl/e2e/data/images/jenkins/jenkins_envs/jenkins_openstack/jobs/test_2/builds/2/changelog.xml: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /tests/cibyl/e2e/data/images/jenkins/jenkins_envs/jenkins_openstack/jobs/test_2/builds/2/log: -------------------------------------------------------------------------------- 1 | Started by user unknown or anonymous 2 | Running as SYSTEM 3 | Building in workspace /var/jenkins_home/workspace/test_2 4 | Finished: SUCCESS 5 | -------------------------------------------------------------------------------- /tests/cibyl/e2e/data/images/jenkins/jenkins_envs/jenkins_openstack/jobs/test_2/builds/permalinks: -------------------------------------------------------------------------------- 1 | lastCompletedBuild 2 2 | lastStableBuild 2 3 | lastSuccessfulBuild 2 4 | -------------------------------------------------------------------------------- /tests/cibyl/e2e/data/images/jenkins/jenkins_envs/jenkins_openstack/jobs/test_2/config.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | A job for E2E testing! 4 | false 5 | 6 | 7 | true 8 | false 9 | false 10 | false 11 | 12 | false 13 | 14 | 15 | 16 | 17 | -------------------------------------------------------------------------------- /tests/cibyl/e2e/data/images/jenkins/jenkins_envs/jenkins_openstack/jobs/test_2/nextBuildNumber: -------------------------------------------------------------------------------- 1 | 3 2 | -------------------------------------------------------------------------------- /tests/cibyl/e2e/data/images/jenkins/jenkins_envs/jenkins_openstack/jobs/test_3/builds/1/build.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 1 9 | 10 | 11 | 12 | 13 | 1 14 | 1660119863992 15 | 1660119864008 16 | FAILED 17 | custom description 18 | 22 19 | UTF-8 20 | false 21 | 22 | /var/jenkins_home/test_3/workspace 23 | 2.332.3 24 | 25 | 26 | 27 | 28 | 29 | -------------------------------------------------------------------------------- /tests/cibyl/e2e/data/images/jenkins/jenkins_envs/jenkins_openstack/jobs/test_3/builds/1/changelog.xml: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /tests/cibyl/e2e/data/images/jenkins/jenkins_envs/jenkins_openstack/jobs/test_3/builds/1/log: -------------------------------------------------------------------------------- 1 | Started by user unknown or anonymous 2 | Running as SYSTEM 3 | Building in workspace /var/jenkins_home/workspace/test_3 4 | Finished: FAILED 5 | -------------------------------------------------------------------------------- /tests/cibyl/e2e/data/images/jenkins/jenkins_envs/jenkins_openstack/jobs/test_3/builds/permalinks: -------------------------------------------------------------------------------- 1 | lastCompletedBuild 1 2 | lastStableBuild 0 3 | lastSuccessfulBuild 0 4 | -------------------------------------------------------------------------------- /tests/cibyl/e2e/data/images/jenkins/jenkins_envs/jenkins_openstack/jobs/test_3/config.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | A job for E2E testing! 4 | false 5 | 6 | 7 | true 8 | false 9 | false 10 | false 11 | 12 | false 13 | 14 | 15 | 16 | 17 | -------------------------------------------------------------------------------- /tests/cibyl/e2e/data/images/jenkins/jenkins_envs/jenkins_openstack/jobs/test_3/nextBuildNumber: -------------------------------------------------------------------------------- 1 | 2 2 | -------------------------------------------------------------------------------- /tests/cibyl/e2e/data/images/jenkins/jenkins_envs/jenkins_openstack/jobs/test_4/builds/permalinks: -------------------------------------------------------------------------------- 1 | lastCompletedBuild 0 2 | lastStableBuild 0 3 | lastSuccessfulBuild 0 4 | -------------------------------------------------------------------------------- /tests/cibyl/e2e/data/images/jenkins/jenkins_envs/jenkins_openstack/jobs/test_4/config.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | A job for E2E testing! 4 | false 5 | 6 | 7 | true 8 | false 9 | false 10 | false 11 | 12 | false 13 | 14 | 15 | 16 | 17 | -------------------------------------------------------------------------------- /tests/cibyl/e2e/data/images/jenkins/jenkins_envs/jenkins_openstack/jobs/test_4/nextBuildNumber: -------------------------------------------------------------------------------- 1 | 1 2 | -------------------------------------------------------------------------------- /tests/cibyl/e2e/data/images/jenkins/jenkins_envs/none/README.txt: -------------------------------------------------------------------------------- 1 | Empty environment to keep consistency with previous tests 2 | -------------------------------------------------------------------------------- /tests/cibyl/e2e/data/images/jenkins/jenkins_envs/none/jobs/README.txt: -------------------------------------------------------------------------------- 1 | This jobs folder is empty to provide an empty Jenkins instance where jobs can 2 | be added through the API. 3 | -------------------------------------------------------------------------------- /tests/cibyl/e2e/data/images/jenkins/jobs/basic-job-config.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | A job for E2E testing! 4 | false 5 | 6 | 7 | true 8 | false 9 | false 10 | false 11 | 12 | false 13 | 14 | 15 | 16 | 17 | -------------------------------------------------------------------------------- /tests/cibyl/e2e/data/images/jenkins/openstack_httpd/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM httpd:alpine 2 | 3 | COPY public /usr/local/apache2/htdocs/ 4 | -------------------------------------------------------------------------------- /tests/cibyl/e2e/data/images/jenkins/openstack_httpd/openstack_logs.yml: -------------------------------------------------------------------------------- 1 | test_1: 2 | "2": 3 | test_suites: 4 | - "octavia" 5 | - "neutron" 6 | setup: "rpm" 7 | overcloud: 8 | release: "17.1" 9 | ip: "4" 10 | network_backend: "geneve" 11 | dvr: false 12 | ml2_driver: "ovn" 13 | cinder_backend: "nfs" 14 | topology: "compute:2,controller:3" 15 | test_2: 16 | "2": 17 | overcloud: 18 | release: "16.2" 19 | cinder_backend: "swift" 20 | ip: "6" 21 | tls_everywhere: true 22 | infra_type: "ovb" 23 | ml2_driver: "ovs" 24 | ironic_inspector: true 25 | cleaning_network: true 26 | 27 | test_3: # job with no builds 28 | -------------------------------------------------------------------------------- /tests/cibyl/e2e/data/images/jenkins/openstack_httpd/public/test_1/2/infrared/overcloud-install.yml: -------------------------------------------------------------------------------- 1 | install: 2 | cleaning: 3 | network: false 4 | deployment: 5 | files: null 6 | network: 7 | backend: geneve 8 | dvr: false 9 | ovn: true 10 | ovs: false 11 | protocol: ipv4 12 | storage: 13 | backend: nfs 14 | tls: 15 | everywhere: null 16 | version: '17.1' 17 | -------------------------------------------------------------------------------- /tests/cibyl/e2e/data/images/jenkins/openstack_httpd/public/test_1/2/infrared/provision.yml: -------------------------------------------------------------------------------- 1 | provision: 2 | topology: 3 | nodes: 4 | compute.yml: 2 5 | controller.yml: 3 6 | -------------------------------------------------------------------------------- /tests/cibyl/e2e/data/images/jenkins/openstack_httpd/public/test_1/2/infrared/test.yml: -------------------------------------------------------------------------------- 1 | test: 2 | setup: rpm 3 | tests: 4 | - /path/to/suite/octavia.yml 5 | - /path/to/suite/neutron.yml 6 | -------------------------------------------------------------------------------- /tests/cibyl/e2e/data/images/jenkins/openstack_httpd/public/test_2/2/infrared/overcloud-install.yml: -------------------------------------------------------------------------------- 1 | install: 2 | cleaning: 3 | network: true 4 | deployment: 5 | files: ovb 6 | ironic_inspector: true 7 | network: 8 | ovn: false 9 | ovs: true 10 | protocol: ipv6 11 | storage: 12 | backend: swift 13 | tls: 14 | everywhere: true 15 | version: '16.2' 16 | -------------------------------------------------------------------------------- /tests/cibyl/e2e/data/images/jenkins/openstack_httpd/public/test_2/2/infrared/provision.yml: -------------------------------------------------------------------------------- 1 | provision: 2 | topology: {} 3 | -------------------------------------------------------------------------------- /tests/cibyl/e2e/data/images/jenkins/openstack_httpd/public/test_2/2/infrared/test.yml: -------------------------------------------------------------------------------- 1 | test: 2 | tests: [] 3 | -------------------------------------------------------------------------------- /tests/cibyl/e2e/data/images/jenkins/setup.yaml: -------------------------------------------------------------------------------- 1 | jenkins: 2 | securityRealm: 3 | local: 4 | allowsSignup: false 5 | users: 6 | - id: ${JENKINS_ADMIN_ID} 7 | password: ${JENKINS_ADMIN_PASSWORD} 8 | unclassified: 9 | location: 10 | url: http://localhost:8080/ 11 | -------------------------------------------------------------------------------- /tests/cibyl/intr/__init__.py: -------------------------------------------------------------------------------- 1 | """ 2 | # Copyright 2022 Red Hat 3 | # 4 | # Licensed under the Apache License, Version 2.0 (the "License"); you may 5 | # not use this file except in compliance with the License. You may obtain 6 | # a copy of the License at 7 | # 8 | # http://www.apache.org/licenses/LICENSE-2.0 9 | # 10 | # Unless required by applicable law or agreed to in writing, software 11 | # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 12 | # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 13 | # License for the specific language governing permissions and limitations 14 | # under the License. 15 | """ 16 | -------------------------------------------------------------------------------- /tests/cibyl/intr/cli/__init__.py: -------------------------------------------------------------------------------- 1 | """ 2 | # Copyright 2022 Red Hat 3 | # 4 | # Licensed under the Apache License, Version 2.0 (the "License"); you may 5 | # not use this file except in compliance with the License. You may obtain 6 | # a copy of the License at 7 | # 8 | # http://www.apache.org/licenses/LICENSE-2.0 9 | # 10 | # Unless required by applicable law or agreed to in writing, software 11 | # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 12 | # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 13 | # License for the specific language governing permissions and limitations 14 | # under the License. 15 | """ 16 | -------------------------------------------------------------------------------- /tests/cibyl/intr/models/__init__.py: -------------------------------------------------------------------------------- 1 | """ 2 | # Copyright 2022 Red Hat 3 | # 4 | # Licensed under the Apache License, Version 2.0 (the "License"); you may 5 | # not use this file except in compliance with the License. You may obtain 6 | # a copy of the License at 7 | # 8 | # http://www.apache.org/licenses/LICENSE-2.0 9 | # 10 | # Unless required by applicable law or agreed to in writing, software 11 | # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 12 | # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 13 | # License for the specific language governing permissions and limitations 14 | # under the License. 15 | """ 16 | -------------------------------------------------------------------------------- /tests/cibyl/intr/models/ci/__init__.py: -------------------------------------------------------------------------------- 1 | """ 2 | # Copyright 2022 Red Hat 3 | # 4 | # Licensed under the Apache License, Version 2.0 (the "License"); you may 5 | # not use this file except in compliance with the License. You may obtain 6 | # a copy of the License at 7 | # 8 | # http://www.apache.org/licenses/LICENSE-2.0 9 | # 10 | # Unless required by applicable law or agreed to in writing, software 11 | # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 12 | # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 13 | # License for the specific language governing permissions and limitations 14 | # under the License. 15 | """ 16 | -------------------------------------------------------------------------------- /tests/cibyl/intr/models/ci/base/__init__.py: -------------------------------------------------------------------------------- 1 | """ 2 | # Copyright 2022 Red Hat 3 | # 4 | # Licensed under the Apache License, Version 2.0 (the "License"); you may 5 | # not use this file except in compliance with the License. You may obtain 6 | # a copy of the License at 7 | # 8 | # http://www.apache.org/licenses/LICENSE-2.0 9 | # 10 | # Unless required by applicable law or agreed to in writing, software 11 | # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 12 | # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 13 | # License for the specific language governing permissions and limitations 14 | # under the License. 15 | """ 16 | -------------------------------------------------------------------------------- /tests/cibyl/intr/outputs/__init__.py: -------------------------------------------------------------------------------- 1 | """ 2 | # Copyright 2022 Red Hat 3 | # 4 | # Licensed under the Apache License, Version 2.0 (the "License"); you may 5 | # not use this file except in compliance with the License. You may obtain 6 | # a copy of the License at 7 | # 8 | # http://www.apache.org/licenses/LICENSE-2.0 9 | # 10 | # Unless required by applicable law or agreed to in writing, software 11 | # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 12 | # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 13 | # License for the specific language governing permissions and limitations 14 | # under the License. 15 | """ 16 | -------------------------------------------------------------------------------- /tests/cibyl/intr/plugins/__init__.py: -------------------------------------------------------------------------------- 1 | """ 2 | # Copyright 2022 Red Hat 3 | # 4 | # Licensed under the Apache License, Version 2.0 (the "License"); you may 5 | # not use this file except in compliance with the License. You may obtain 6 | # a copy of the License at 7 | # 8 | # http://www.apache.org/licenses/LICENSE-2.0 9 | # 10 | # Unless required by applicable law or agreed to in writing, software 11 | # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 12 | # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 13 | # License for the specific language governing permissions and limitations 14 | # under the License. 15 | """ 16 | -------------------------------------------------------------------------------- /tests/cibyl/intr/plugins/openstack/__init__.py: -------------------------------------------------------------------------------- 1 | """ 2 | # Copyright 2022 Red Hat 3 | # 4 | # Licensed under the Apache License, Version 2.0 (the "License"); you may 5 | # not use this file except in compliance with the License. You may obtain 6 | # a copy of the License at 7 | # 8 | # http://www.apache.org/licenses/LICENSE-2.0 9 | # 10 | # Unless required by applicable law or agreed to in writing, software 11 | # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 12 | # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 13 | # License for the specific language governing permissions and limitations 14 | # under the License. 15 | """ 16 | -------------------------------------------------------------------------------- /tests/cibyl/intr/plugins/openstack/sources/__init__.py: -------------------------------------------------------------------------------- 1 | """ 2 | # Copyright 2022 Red Hat 3 | # 4 | # Licensed under the Apache License, Version 2.0 (the "License"); you may 5 | # not use this file except in compliance with the License. You may obtain 6 | # a copy of the License at 7 | # 8 | # http://www.apache.org/licenses/LICENSE-2.0 9 | # 10 | # Unless required by applicable law or agreed to in writing, software 11 | # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 12 | # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 13 | # License for the specific language governing permissions and limitations 14 | # under the License. 15 | """ 16 | -------------------------------------------------------------------------------- /tests/cibyl/intr/plugins/openstack/sources/zuul/__init__.py: -------------------------------------------------------------------------------- 1 | """ 2 | # Copyright 2022 Red Hat 3 | # 4 | # Licensed under the Apache License, Version 2.0 (the "License"); you may 5 | # not use this file except in compliance with the License. You may obtain 6 | # a copy of the License at 7 | # 8 | # http://www.apache.org/licenses/LICENSE-2.0 9 | # 10 | # Unless required by applicable law or agreed to in writing, software 11 | # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 12 | # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 13 | # License for the specific language governing permissions and limitations 14 | # under the License. 15 | """ 16 | -------------------------------------------------------------------------------- /tests/cibyl/intr/sources/__init__.py: -------------------------------------------------------------------------------- 1 | """ 2 | # Copyright 2022 Red Hat 3 | # 4 | # Licensed under the Apache License, Version 2.0 (the "License"); you may 5 | # not use this file except in compliance with the License. You may obtain 6 | # a copy of the License at 7 | # 8 | # http://www.apache.org/licenses/LICENSE-2.0 9 | # 10 | # Unless required by applicable law or agreed to in writing, software 11 | # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 12 | # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 13 | # License for the specific language governing permissions and limitations 14 | # under the License. 15 | """ 16 | -------------------------------------------------------------------------------- /tests/cibyl/intr/sources/zuul/__init__.py: -------------------------------------------------------------------------------- 1 | """ 2 | # Copyright 2022 Red Hat 3 | # 4 | # Licensed under the Apache License, Version 2.0 (the "License"); you may 5 | # not use this file except in compliance with the License. You may obtain 6 | # a copy of the License at 7 | # 8 | # http://www.apache.org/licenses/LICENSE-2.0 9 | # 10 | # Unless required by applicable law or agreed to in writing, software 11 | # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 12 | # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 13 | # License for the specific language governing permissions and limitations 14 | # under the License. 15 | """ 16 | -------------------------------------------------------------------------------- /tests/cibyl/intr/sources/zuul/queries/__init__.py: -------------------------------------------------------------------------------- 1 | """ 2 | # Copyright 2022 Red Hat 3 | # 4 | # Licensed under the Apache License, Version 2.0 (the "License"); you may 5 | # not use this file except in compliance with the License. You may obtain 6 | # a copy of the License at 7 | # 8 | # http://www.apache.org/licenses/LICENSE-2.0 9 | # 10 | # Unless required by applicable law or agreed to in writing, software 11 | # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 12 | # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 13 | # License for the specific language governing permissions and limitations 14 | # under the License. 15 | """ 16 | -------------------------------------------------------------------------------- /tests/cibyl/intr/sources/zuul/queries/composition/__init__.py: -------------------------------------------------------------------------------- 1 | """ 2 | # Copyright 2022 Red Hat 3 | # 4 | # Licensed under the Apache License, Version 2.0 (the "License"); you may 5 | # not use this file except in compliance with the License. You may obtain 6 | # a copy of the License at 7 | # 8 | # http://www.apache.org/licenses/LICENSE-2.0 9 | # 10 | # Unless required by applicable law or agreed to in writing, software 11 | # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 12 | # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 13 | # License for the specific language governing permissions and limitations 14 | # under the License. 15 | """ 16 | -------------------------------------------------------------------------------- /tests/cibyl/intr/sources/zuuld/__init__.py: -------------------------------------------------------------------------------- 1 | """ 2 | # Copyright 2022 Red Hat 3 | # 4 | # Licensed under the Apache License, Version 2.0 (the "License"); you may 5 | # not use this file except in compliance with the License. You may obtain 6 | # a copy of the License at 7 | # 8 | # http://www.apache.org/licenses/LICENSE-2.0 9 | # 10 | # Unless required by applicable law or agreed to in writing, software 11 | # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 12 | # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 13 | # License for the specific language governing permissions and limitations 14 | # under the License. 15 | """ 16 | -------------------------------------------------------------------------------- /tests/cibyl/intr/sources/zuuld/frontends/__init__.py: -------------------------------------------------------------------------------- 1 | """ 2 | # Copyright 2022 Red Hat 3 | # 4 | # Licensed under the Apache License, Version 2.0 (the "License"); you may 5 | # not use this file except in compliance with the License. You may obtain 6 | # a copy of the License at 7 | # 8 | # http://www.apache.org/licenses/LICENSE-2.0 9 | # 10 | # Unless required by applicable law or agreed to in writing, software 11 | # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 12 | # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 13 | # License for the specific language governing permissions and limitations 14 | # under the License. 15 | """ 16 | -------------------------------------------------------------------------------- /tests/cibyl/intr/sources/zuuld/specs/__init__.py: -------------------------------------------------------------------------------- 1 | """ 2 | # Copyright 2022 Red Hat 3 | # 4 | # Licensed under the Apache License, Version 2.0 (the "License"); you may 5 | # not use this file except in compliance with the License. You may obtain 6 | # a copy of the License at 7 | # 8 | # http://www.apache.org/licenses/LICENSE-2.0 9 | # 10 | # Unless required by applicable law or agreed to in writing, software 11 | # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 12 | # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 13 | # License for the specific language governing permissions and limitations 14 | # under the License. 15 | """ 16 | -------------------------------------------------------------------------------- /tests/cibyl/intr/sources/zuuld/specs/git.py: -------------------------------------------------------------------------------- 1 | """ 2 | # Copyright 2022 Red Hat 3 | # 4 | # Licensed under the Apache License, Version 2.0 (the "License"); you may 5 | # not use this file except in compliance with the License. You may obtain 6 | # a copy of the License at 7 | # 8 | # http://www.apache.org/licenses/LICENSE-2.0 9 | # 10 | # Unless required by applicable law or agreed to in writing, software 11 | # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 12 | # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 13 | # License for the specific language governing permissions and limitations 14 | # under the License. 15 | """ 16 | from unittest import TestCase 17 | 18 | from cibyl.sources.zuuld.errors import InvalidURL 19 | from cibyl.sources.zuuld.specs.git import GitSpec 20 | from kernel.tools.urls import URL 21 | 22 | 23 | class TestGitSpec(TestCase): 24 | """Tests for :class:`GitSpec`. 25 | """ 26 | 27 | def test_error_if_not_git_url(self): 28 | """Checks that an error is raised if the remote URL is not a Git 29 | URL. 30 | """ 31 | url = URL('http://localhost:8080') 32 | 33 | with self.assertRaises(InvalidURL): 34 | GitSpec(remote=url) 35 | -------------------------------------------------------------------------------- /tests/cibyl/intr/sources/zuuld/tools/__init__.py: -------------------------------------------------------------------------------- 1 | """ 2 | # Copyright 2022 Red Hat 3 | # 4 | # Licensed under the Apache License, Version 2.0 (the "License"); you may 5 | # not use this file except in compliance with the License. You may obtain 6 | # a copy of the License at 7 | # 8 | # http://www.apache.org/licenses/LICENSE-2.0 9 | # 10 | # Unless required by applicable law or agreed to in writing, software 11 | # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 12 | # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 13 | # License for the specific language governing permissions and limitations 14 | # under the License. 15 | """ 16 | -------------------------------------------------------------------------------- /tests/cibyl/unit/__init__.py: -------------------------------------------------------------------------------- 1 | """ 2 | # Copyright 2022 Red Hat 3 | # 4 | # Licensed under the Apache License, Version 2.0 (the "License"); you may 5 | # not use this file except in compliance with the License. You may obtain 6 | # a copy of the License at 7 | # 8 | # http://www.apache.org/licenses/LICENSE-2.0 9 | # 10 | # Unless required by applicable law or agreed to in writing, software 11 | # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 12 | # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 13 | # License for the specific language governing permissions and limitations 14 | # under the License. 15 | """ 16 | -------------------------------------------------------------------------------- /tests/cibyl/unit/cli/__init__.py: -------------------------------------------------------------------------------- 1 | """ 2 | # Copyright 2022 Red Hat 3 | # 4 | # Licensed under the Apache License, Version 2.0 (the "License"); you may 5 | # not use this file except in compliance with the License. You may obtain 6 | # a copy of the License at 7 | # 8 | # http://www.apache.org/licenses/LICENSE-2.0 9 | # 10 | # Unless required by applicable law or agreed to in writing, software 11 | # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 12 | # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 13 | # License for the specific language governing permissions and limitations 14 | # under the License. 15 | """ 16 | -------------------------------------------------------------------------------- /tests/cibyl/unit/config/__init__.py: -------------------------------------------------------------------------------- 1 | """ 2 | # Copyright 2022 Red Hat 3 | # 4 | # Licensed under the Apache License, Version 2.0 (the "License"); you may 5 | # not use this file except in compliance with the License. You may obtain 6 | # a copy of the License at 7 | # 8 | # http://www.apache.org/licenses/LICENSE-2.0 9 | # 10 | # Unless required by applicable law or agreed to in writing, software 11 | # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 12 | # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 13 | # License for the specific language governing permissions and limitations 14 | # under the License. 15 | """ 16 | -------------------------------------------------------------------------------- /tests/cibyl/unit/exceptions/__init__.py: -------------------------------------------------------------------------------- 1 | """ 2 | # Copyright 2022 Red Hat 3 | # 4 | # Licensed under the Apache License, Version 2.0 (the "License"); you may 5 | # not use this file except in compliance with the License. You may obtain 6 | # a copy of the License at 7 | # 8 | # http://www.apache.org/licenses/LICENSE-2.0 9 | # 10 | # Unless required by applicable law or agreed to in writing, software 11 | # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 12 | # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 13 | # License for the specific language governing permissions and limitations 14 | # under the License. 15 | """ 16 | -------------------------------------------------------------------------------- /tests/cibyl/unit/exceptions/test_cibyl_exceptions.py: -------------------------------------------------------------------------------- 1 | """ 2 | # Copyright 2022 Red Hat 3 | # 4 | # Licensed under the Apache License, Version 2.0 (the "License"); you may 5 | # not use this file except in compliance with the License. You may obtain 6 | # a copy of the License at 7 | # 8 | # http://www.apache.org/licenses/LICENSE-2.0 9 | # 10 | # Unless required by applicable law or agreed to in writing, software 11 | # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 12 | # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 13 | # License for the specific language governing permissions and limitations 14 | # under the License. 15 | """ 16 | 17 | from unittest import TestCase 18 | 19 | from cibyl.exceptions.source import NoSupportedSourcesFound 20 | 21 | 22 | class TestCibylExceptions(TestCase): 23 | """Test the behavior of CibylException types.""" 24 | 25 | def test_cibyl_no_supported_sources_found_message(self): 26 | """""""" 27 | exception = NoSupportedSourcesFound("system", "func") 28 | expected = "Couldn't find any enabled source for the system " 29 | expected += "system that implements the function func." 30 | self.assertEqual(str(exception), expected) 31 | -------------------------------------------------------------------------------- /tests/cibyl/unit/features/__init__.py: -------------------------------------------------------------------------------- 1 | """ 2 | # Copyright 2022 Red Hat 3 | # 4 | # Licensed under the Apache License, Version 2.0 (the "License"); you may 5 | # not use this file except in compliance with the License. You may obtain 6 | # a copy of the License at 7 | # 8 | # http://www.apache.org/licenses/LICENSE-2.0 9 | # 10 | # Unless required by applicable law or agreed to in writing, software 11 | # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 12 | # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 13 | # License for the specific language governing permissions and limitations 14 | # under the License. 15 | """ 16 | -------------------------------------------------------------------------------- /tests/cibyl/unit/features/data/__init__.py: -------------------------------------------------------------------------------- 1 | """ 2 | # Copyright 2022 Red Hat 3 | # 4 | # Licensed under the Apache License, Version 2.0 (the "License"); you may 5 | # not use this file except in compliance with the License. You may obtain 6 | # a copy of the License at 7 | # 8 | # http://www.apache.org/licenses/LICENSE-2.0 9 | # 10 | # Unless required by applicable law or agreed to in writing, software 11 | # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 12 | # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 13 | # License for the specific language governing permissions and limitations 14 | # under the License. 15 | """ 16 | -------------------------------------------------------------------------------- /tests/cibyl/unit/models/__init__.py: -------------------------------------------------------------------------------- 1 | """ 2 | # Copyright 2022 Red Hat 3 | # 4 | # Licensed under the Apache License, Version 2.0 (the "License"); you may 5 | # not use this file except in compliance with the License. You may obtain 6 | # a copy of the License at 7 | # 8 | # http://www.apache.org/licenses/LICENSE-2.0 9 | # 10 | # Unless required by applicable law or agreed to in writing, software 11 | # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 12 | # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 13 | # License for the specific language governing permissions and limitations 14 | # under the License. 15 | """ 16 | -------------------------------------------------------------------------------- /tests/cibyl/unit/models/ci/__init__.py: -------------------------------------------------------------------------------- 1 | """ 2 | # Copyright 2022 Red Hat 3 | # 4 | # Licensed under the Apache License, Version 2.0 (the "License"); you may 5 | # not use this file except in compliance with the License. You may obtain 6 | # a copy of the License at 7 | # 8 | # http://www.apache.org/licenses/LICENSE-2.0 9 | # 10 | # Unless required by applicable law or agreed to in writing, software 11 | # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 12 | # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 13 | # License for the specific language governing permissions and limitations 14 | # under the License. 15 | """ 16 | -------------------------------------------------------------------------------- /tests/cibyl/unit/models/ci/base/__init__.py: -------------------------------------------------------------------------------- 1 | """ 2 | # Copyright 2022 Red Hat 3 | # 4 | # Licensed under the Apache License, Version 2.0 (the "License"); you may 5 | # not use this file except in compliance with the License. You may obtain 6 | # a copy of the License at 7 | # 8 | # http://www.apache.org/licenses/LICENSE-2.0 9 | # 10 | # Unless required by applicable law or agreed to in writing, software 11 | # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 12 | # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 13 | # License for the specific language governing permissions and limitations 14 | # under the License. 15 | """ 16 | -------------------------------------------------------------------------------- /tests/cibyl/unit/models/ci/zuul/__init__.py: -------------------------------------------------------------------------------- 1 | """ 2 | # Copyright 2022 Red Hat 3 | # 4 | # Licensed under the Apache License, Version 2.0 (the "License"); you may 5 | # not use this file except in compliance with the License. You may obtain 6 | # a copy of the License at 7 | # 8 | # http://www.apache.org/licenses/LICENSE-2.0 9 | # 10 | # Unless required by applicable law or agreed to in writing, software 11 | # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 12 | # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 13 | # License for the specific language governing permissions and limitations 14 | # under the License. 15 | """ 16 | -------------------------------------------------------------------------------- /tests/cibyl/unit/models/ci/zuul/test_system.py: -------------------------------------------------------------------------------- 1 | """ 2 | # Copyright 2022 Red Hat 3 | # 4 | # Licensed under the Apache License, Version 2.0 (the "License"); you may 5 | # not use this file except in compliance with the License. You may obtain 6 | # a copy of the License at 7 | # 8 | # http://www.apache.org/licenses/LICENSE-2.0 9 | # 10 | # Unless required by applicable law or agreed to in writing, software 11 | # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 12 | # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 13 | # License for the specific language governing permissions and limitations 14 | # under the License. 15 | """ 16 | # pylint: disable=no-member 17 | import unittest 18 | 19 | from cibyl.models.ci.zuul.system import ZuulSystem 20 | from cibyl.models.ci.zuul.tenant import Tenant 21 | 22 | 23 | class TestZuulSystem(unittest.TestCase): 24 | """Test the ZuulSystem class.""" 25 | 26 | def test_system_tenants_constructor(self): 27 | tenants = {'tenant': Tenant("tenant")} 28 | system = ZuulSystem("test", "test", tenants=tenants) 29 | self.assertEqual(1, len(system.tenants.value)) 30 | -------------------------------------------------------------------------------- /tests/cibyl/unit/outputs/__init__.py: -------------------------------------------------------------------------------- 1 | """ 2 | # Copyright 2022 Red Hat 3 | # 4 | # Licensed under the Apache License, Version 2.0 (the "License"); you may 5 | # not use this file except in compliance with the License. You may obtain 6 | # a copy of the License at 7 | # 8 | # http://www.apache.org/licenses/LICENSE-2.0 9 | # 10 | # Unless required by applicable law or agreed to in writing, software 11 | # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 12 | # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 13 | # License for the specific language governing permissions and limitations 14 | # under the License. 15 | """ 16 | -------------------------------------------------------------------------------- /tests/cibyl/unit/outputs/cli/__init__.py: -------------------------------------------------------------------------------- 1 | """ 2 | # Copyright 2022 Red Hat 3 | # 4 | # Licensed under the Apache License, Version 2.0 (the "License"); you may 5 | # not use this file except in compliance with the License. You may obtain 6 | # a copy of the License at 7 | # 8 | # http://www.apache.org/licenses/LICENSE-2.0 9 | # 10 | # Unless required by applicable law or agreed to in writing, software 11 | # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 12 | # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 13 | # License for the specific language governing permissions and limitations 14 | # under the License. 15 | """ 16 | -------------------------------------------------------------------------------- /tests/cibyl/unit/outputs/cli/ci/__init__.py: -------------------------------------------------------------------------------- 1 | """ 2 | # Copyright 2022 Red Hat 3 | # 4 | # Licensed under the Apache License, Version 2.0 (the "License"); you may 5 | # not use this file except in compliance with the License. You may obtain 6 | # a copy of the License at 7 | # 8 | # http://www.apache.org/licenses/LICENSE-2.0 9 | # 10 | # Unless required by applicable law or agreed to in writing, software 11 | # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 12 | # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 13 | # License for the specific language governing permissions and limitations 14 | # under the License. 15 | """ 16 | -------------------------------------------------------------------------------- /tests/cibyl/unit/outputs/cli/ci/env/__init__.py: -------------------------------------------------------------------------------- 1 | """ 2 | # Copyright 2022 Red Hat 3 | # 4 | # Licensed under the Apache License, Version 2.0 (the "License"); you may 5 | # not use this file except in compliance with the License. You may obtain 6 | # a copy of the License at 7 | # 8 | # http://www.apache.org/licenses/LICENSE-2.0 9 | # 10 | # Unless required by applicable law or agreed to in writing, software 11 | # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 12 | # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 13 | # License for the specific language governing permissions and limitations 14 | # under the License. 15 | """ 16 | -------------------------------------------------------------------------------- /tests/cibyl/unit/outputs/cli/ci/env/impls/__init__.py: -------------------------------------------------------------------------------- 1 | """ 2 | # Copyright 2022 Red Hat 3 | # 4 | # Licensed under the Apache License, Version 2.0 (the "License"); you may 5 | # not use this file except in compliance with the License. You may obtain 6 | # a copy of the License at 7 | # 8 | # http://www.apache.org/licenses/LICENSE-2.0 9 | # 10 | # Unless required by applicable law or agreed to in writing, software 11 | # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 12 | # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 13 | # License for the specific language governing permissions and limitations 14 | # under the License. 15 | """ 16 | -------------------------------------------------------------------------------- /tests/cibyl/unit/outputs/cli/ci/system/__init__.py: -------------------------------------------------------------------------------- 1 | """ 2 | # Copyright 2022 Red Hat 3 | # 4 | # Licensed under the Apache License, Version 2.0 (the "License"); you may 5 | # not use this file except in compliance with the License. You may obtain 6 | # a copy of the License at 7 | # 8 | # http://www.apache.org/licenses/LICENSE-2.0 9 | # 10 | # Unless required by applicable law or agreed to in writing, software 11 | # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 12 | # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 13 | # License for the specific language governing permissions and limitations 14 | # under the License. 15 | """ 16 | -------------------------------------------------------------------------------- /tests/cibyl/unit/outputs/cli/ci/system/common/__init__.py: -------------------------------------------------------------------------------- 1 | """ 2 | # Copyright 2022 Red Hat 3 | # 4 | # Licensed under the Apache License, Version 2.0 (the "License"); you may 5 | # not use this file except in compliance with the License. You may obtain 6 | # a copy of the License at 7 | # 8 | # http://www.apache.org/licenses/LICENSE-2.0 9 | # 10 | # Unless required by applicable law or agreed to in writing, software 11 | # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 12 | # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 13 | # License for the specific language governing permissions and limitations 14 | # under the License. 15 | """ 16 | -------------------------------------------------------------------------------- /tests/cibyl/unit/outputs/cli/ci/system/impls/__init__.py: -------------------------------------------------------------------------------- 1 | """ 2 | # Copyright 2022 Red Hat 3 | # 4 | # Licensed under the Apache License, Version 2.0 (the "License"); you may 5 | # not use this file except in compliance with the License. You may obtain 6 | # a copy of the License at 7 | # 8 | # http://www.apache.org/licenses/LICENSE-2.0 9 | # 10 | # Unless required by applicable law or agreed to in writing, software 11 | # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 12 | # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 13 | # License for the specific language governing permissions and limitations 14 | # under the License. 15 | """ 16 | -------------------------------------------------------------------------------- /tests/cibyl/unit/outputs/cli/ci/system/impls/base/__init__.py: -------------------------------------------------------------------------------- 1 | """ 2 | # Copyright 2022 Red Hat 3 | # 4 | # Licensed under the Apache License, Version 2.0 (the "License"); you may 5 | # not use this file except in compliance with the License. You may obtain 6 | # a copy of the License at 7 | # 8 | # http://www.apache.org/licenses/LICENSE-2.0 9 | # 10 | # Unless required by applicable law or agreed to in writing, software 11 | # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 12 | # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 13 | # License for the specific language governing permissions and limitations 14 | # under the License. 15 | """ 16 | -------------------------------------------------------------------------------- /tests/cibyl/unit/outputs/cli/ci/system/impls/zuul/__init__.py: -------------------------------------------------------------------------------- 1 | """ 2 | # Copyright 2022 Red Hat 3 | # 4 | # Licensed under the Apache License, Version 2.0 (the "License"); you may 5 | # not use this file except in compliance with the License. You may obtain 6 | # a copy of the License at 7 | # 8 | # http://www.apache.org/licenses/LICENSE-2.0 9 | # 10 | # Unless required by applicable law or agreed to in writing, software 11 | # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 12 | # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 13 | # License for the specific language governing permissions and limitations 14 | # under the License. 15 | """ 16 | -------------------------------------------------------------------------------- /tests/cibyl/unit/outputs/cli/ci/system/impls/zuul/colored/__init__.py: -------------------------------------------------------------------------------- 1 | """ 2 | # Copyright 2022 Red Hat 3 | # 4 | # Licensed under the Apache License, Version 2.0 (the "License"); you may 5 | # not use this file except in compliance with the License. You may obtain 6 | # a copy of the License at 7 | # 8 | # http://www.apache.org/licenses/LICENSE-2.0 9 | # 10 | # Unless required by applicable law or agreed to in writing, software 11 | # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 12 | # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 13 | # License for the specific language governing permissions and limitations 14 | # under the License. 15 | """ 16 | -------------------------------------------------------------------------------- /tests/cibyl/unit/outputs/cli/ci/system/impls/zuul/colored/trees/__init__.py: -------------------------------------------------------------------------------- 1 | """ 2 | # Copyright 2022 Red Hat 3 | # 4 | # Licensed under the Apache License, Version 2.0 (the "License"); you may 5 | # not use this file except in compliance with the License. You may obtain 6 | # a copy of the License at 7 | # 8 | # http://www.apache.org/licenses/LICENSE-2.0 9 | # 10 | # Unless required by applicable law or agreed to in writing, software 11 | # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 12 | # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 13 | # License for the specific language governing permissions and limitations 14 | # under the License. 15 | """ 16 | -------------------------------------------------------------------------------- /tests/cibyl/unit/outputs/cli/ci/system/utils/__init__.py: -------------------------------------------------------------------------------- 1 | """ 2 | # Copyright 2022 Red Hat 3 | # 4 | # Licensed under the Apache License, Version 2.0 (the "License"); you may 5 | # not use this file except in compliance with the License. You may obtain 6 | # a copy of the License at 7 | # 8 | # http://www.apache.org/licenses/LICENSE-2.0 9 | # 10 | # Unless required by applicable law or agreed to in writing, software 11 | # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 12 | # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 13 | # License for the specific language governing permissions and limitations 14 | # under the License. 15 | """ 16 | -------------------------------------------------------------------------------- /tests/cibyl/unit/outputs/cli/ci/system/utils/sorting/__init__.py: -------------------------------------------------------------------------------- 1 | """ 2 | # Copyright 2022 Red Hat 3 | # 4 | # Licensed under the Apache License, Version 2.0 (the "License"); you may 5 | # not use this file except in compliance with the License. You may obtain 6 | # a copy of the License at 7 | # 8 | # http://www.apache.org/licenses/LICENSE-2.0 9 | # 10 | # Unless required by applicable law or agreed to in writing, software 11 | # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 12 | # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 13 | # License for the specific language governing permissions and limitations 14 | # under the License. 15 | """ 16 | -------------------------------------------------------------------------------- /tests/cibyl/unit/plugins/__init__.py: -------------------------------------------------------------------------------- 1 | """ 2 | # Copyright 2022 Red Hat 3 | # 4 | # Licensed under the Apache License, Version 2.0 (the "License"); you may 5 | # not use this file except in compliance with the License. You may obtain 6 | # a copy of the License at 7 | # 8 | # http://www.apache.org/licenses/LICENSE-2.0 9 | # 10 | # Unless required by applicable law or agreed to in writing, software 11 | # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 12 | # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 13 | # License for the specific language governing permissions and limitations 14 | # under the License. 15 | """ 16 | -------------------------------------------------------------------------------- /tests/cibyl/unit/plugins/openstack/__init__.py: -------------------------------------------------------------------------------- 1 | """ 2 | # Copyright 2022 Red Hat 3 | # 4 | # Licensed under the Apache License, Version 2.0 (the "License"); you may 5 | # not use this file except in compliance with the License. You may obtain 6 | # a copy of the License at 7 | # 8 | # http://www.apache.org/licenses/LICENSE-2.0 9 | # 10 | # Unless required by applicable law or agreed to in writing, software 11 | # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 12 | # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 13 | # License for the specific language governing permissions and limitations 14 | # under the License. 15 | """ 16 | -------------------------------------------------------------------------------- /tests/cibyl/unit/plugins/openstack/printers/__init__.py: -------------------------------------------------------------------------------- 1 | """ 2 | # Copyright 2022 Red Hat 3 | # 4 | # Licensed under the Apache License, Version 2.0 (the "License"); you may 5 | # not use this file except in compliance with the License. You may obtain 6 | # a copy of the License at 7 | # 8 | # http://www.apache.org/licenses/LICENSE-2.0 9 | # 10 | # Unless required by applicable law or agreed to in writing, software 11 | # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 12 | # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 13 | # License for the specific language governing permissions and limitations 14 | # under the License. 15 | """ 16 | -------------------------------------------------------------------------------- /tests/cibyl/unit/plugins/openstack/sources/__init__.py: -------------------------------------------------------------------------------- 1 | """ 2 | # Copyright 2022 Red Hat 3 | # 4 | # Licensed under the Apache License, Version 2.0 (the "License"); you may 5 | # not use this file except in compliance with the License. You may obtain 6 | # a copy of the License at 7 | # 8 | # http://www.apache.org/licenses/LICENSE-2.0 9 | # 10 | # Unless required by applicable law or agreed to in writing, software 11 | # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 12 | # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 13 | # License for the specific language governing permissions and limitations 14 | # under the License. 15 | """ 16 | -------------------------------------------------------------------------------- /tests/cibyl/unit/plugins/openstack/sources/zuul/__init__.py: -------------------------------------------------------------------------------- 1 | """ 2 | # Copyright 2022 Red Hat 3 | # 4 | # Licensed under the Apache License, Version 2.0 (the "License"); you may 5 | # not use this file except in compliance with the License. You may obtain 6 | # a copy of the License at 7 | # 8 | # http://www.apache.org/licenses/LICENSE-2.0 9 | # 10 | # Unless required by applicable law or agreed to in writing, software 11 | # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 12 | # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 13 | # License for the specific language governing permissions and limitations 14 | # under the License. 15 | """ 16 | -------------------------------------------------------------------------------- /tests/cibyl/unit/plugins/openstack/sources/zuul/deployments/__init__.py: -------------------------------------------------------------------------------- 1 | """ 2 | # Copyright 2022 Red Hat 3 | # 4 | # Licensed under the Apache License, Version 2.0 (the "License"); you may 5 | # not use this file except in compliance with the License. You may obtain 6 | # a copy of the License at 7 | # 8 | # http://www.apache.org/licenses/LICENSE-2.0 9 | # 10 | # Unless required by applicable law or agreed to in writing, software 11 | # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 12 | # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 13 | # License for the specific language governing permissions and limitations 14 | # under the License. 15 | """ 16 | -------------------------------------------------------------------------------- /tests/cibyl/unit/sources/__init__.py: -------------------------------------------------------------------------------- 1 | """ 2 | # Copyright 2022 Red Hat 3 | # 4 | # Licensed under the Apache License, Version 2.0 (the "License"); you may 5 | # not use this file except in compliance with the License. You may obtain 6 | # a copy of the License at 7 | # 8 | # http://www.apache.org/licenses/LICENSE-2.0 9 | # 10 | # Unless required by applicable law or agreed to in writing, software 11 | # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 12 | # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 13 | # License for the specific language governing permissions and limitations 14 | # under the License. 15 | """ 16 | -------------------------------------------------------------------------------- /tests/cibyl/unit/sources/elasticsearch/__init__.py: -------------------------------------------------------------------------------- 1 | """ 2 | # Copyright 2022 Red Hat 3 | # 4 | # Licensed under the Apache License, Version 2.0 (the "License"); you may 5 | # not use this file except in compliance with the License. You may obtain 6 | # a copy of the License at 7 | # 8 | # http://www.apache.org/licenses/LICENSE-2.0 9 | # 10 | # Unless required by applicable law or agreed to in writing, software 11 | # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 12 | # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 13 | # License for the specific language governing permissions and limitations 14 | # under the License. 15 | """ 16 | -------------------------------------------------------------------------------- /tests/cibyl/unit/sources/zuul/__init__.py: -------------------------------------------------------------------------------- 1 | """ 2 | # Copyright 2022 Red Hat 3 | # 4 | # Licensed under the Apache License, Version 2.0 (the "License"); you may 5 | # not use this file except in compliance with the License. You may obtain 6 | # a copy of the License at 7 | # 8 | # http://www.apache.org/licenses/LICENSE-2.0 9 | # 10 | # Unless required by applicable law or agreed to in writing, software 11 | # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 12 | # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 13 | # License for the specific language governing permissions and limitations 14 | # under the License. 15 | """ 16 | -------------------------------------------------------------------------------- /tests/cibyl/unit/sources/zuul/apis/__init__.py: -------------------------------------------------------------------------------- 1 | """ 2 | # Copyright 2022 Red Hat 3 | # 4 | # Licensed under the Apache License, Version 2.0 (the "License"); you may 5 | # not use this file except in compliance with the License. You may obtain 6 | # a copy of the License at 7 | # 8 | # http://www.apache.org/licenses/LICENSE-2.0 9 | # 10 | # Unless required by applicable law or agreed to in writing, software 11 | # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 12 | # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 13 | # License for the specific language governing permissions and limitations 14 | # under the License. 15 | """ 16 | -------------------------------------------------------------------------------- /tests/cibyl/unit/sources/zuul/apis/factories/__init__.py: -------------------------------------------------------------------------------- 1 | """ 2 | # Copyright 2022 Red Hat 3 | # 4 | # Licensed under the Apache License, Version 2.0 (the "License"); you may 5 | # not use this file except in compliance with the License. You may obtain 6 | # a copy of the License at 7 | # 8 | # http://www.apache.org/licenses/LICENSE-2.0 9 | # 10 | # Unless required by applicable law or agreed to in writing, software 11 | # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 12 | # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 13 | # License for the specific language governing permissions and limitations 14 | # under the License. 15 | """ 16 | -------------------------------------------------------------------------------- /tests/cibyl/unit/sources/zuul/queries/__init__.py: -------------------------------------------------------------------------------- 1 | """ 2 | # Copyright 2022 Red Hat 3 | # 4 | # Licensed under the Apache License, Version 2.0 (the "License"); you may 5 | # not use this file except in compliance with the License. You may obtain 6 | # a copy of the License at 7 | # 8 | # http://www.apache.org/licenses/LICENSE-2.0 9 | # 10 | # Unless required by applicable law or agreed to in writing, software 11 | # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 12 | # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 13 | # License for the specific language governing permissions and limitations 14 | # under the License. 15 | """ 16 | -------------------------------------------------------------------------------- /tests/cibyl/unit/sources/zuul/queries/composition/__init__.py: -------------------------------------------------------------------------------- 1 | """ 2 | # Copyright 2022 Red Hat 3 | # 4 | # Licensed under the Apache License, Version 2.0 (the "License"); you may 5 | # not use this file except in compliance with the License. You may obtain 6 | # a copy of the License at 7 | # 8 | # http://www.apache.org/licenses/LICENSE-2.0 9 | # 10 | # Unless required by applicable law or agreed to in writing, software 11 | # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 12 | # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 13 | # License for the specific language governing permissions and limitations 14 | # under the License. 15 | """ 16 | -------------------------------------------------------------------------------- /tests/cibyl/unit/sources/zuul/utils/__init__.py: -------------------------------------------------------------------------------- 1 | """ 2 | # Copyright 2022 Red Hat 3 | # 4 | # Licensed under the Apache License, Version 2.0 (the "License"); you may 5 | # not use this file except in compliance with the License. You may obtain 6 | # a copy of the License at 7 | # 8 | # http://www.apache.org/licenses/LICENSE-2.0 9 | # 10 | # Unless required by applicable law or agreed to in writing, software 11 | # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 12 | # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 13 | # License for the specific language governing permissions and limitations 14 | # under the License. 15 | """ 16 | -------------------------------------------------------------------------------- /tests/cibyl/unit/sources/zuul/utils/artifacts/__init__.py: -------------------------------------------------------------------------------- 1 | """ 2 | # Copyright 2022 Red Hat 3 | # 4 | # Licensed under the Apache License, Version 2.0 (the "License"); you may 5 | # not use this file except in compliance with the License. You may obtain 6 | # a copy of the License at 7 | # 8 | # http://www.apache.org/licenses/LICENSE-2.0 9 | # 10 | # Unless required by applicable law or agreed to in writing, software 11 | # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 12 | # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 13 | # License for the specific language governing permissions and limitations 14 | # under the License. 15 | """ 16 | -------------------------------------------------------------------------------- /tests/cibyl/unit/sources/zuul/utils/tests/__init__.py: -------------------------------------------------------------------------------- 1 | """ 2 | # Copyright 2022 Red Hat 3 | # 4 | # Licensed under the Apache License, Version 2.0 (the "License"); you may 5 | # not use this file except in compliance with the License. You may obtain 6 | # a copy of the License at 7 | # 8 | # http://www.apache.org/licenses/LICENSE-2.0 9 | # 10 | # Unless required by applicable law or agreed to in writing, software 11 | # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 12 | # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 13 | # License for the specific language governing permissions and limitations 14 | # under the License. 15 | """ 16 | -------------------------------------------------------------------------------- /tests/cibyl/unit/sources/zuul/utils/tests/tempest/__init__.py: -------------------------------------------------------------------------------- 1 | """ 2 | # Copyright 2022 Red Hat 3 | # 4 | # Licensed under the Apache License, Version 2.0 (the "License"); you may 5 | # not use this file except in compliance with the License. You may obtain 6 | # a copy of the License at 7 | # 8 | # http://www.apache.org/licenses/LICENSE-2.0 9 | # 10 | # Unless required by applicable law or agreed to in writing, software 11 | # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 12 | # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 13 | # License for the specific language governing permissions and limitations 14 | # under the License. 15 | """ 16 | -------------------------------------------------------------------------------- /tests/cibyl/unit/sources/zuul/utils/variants/__init__.py: -------------------------------------------------------------------------------- 1 | """ 2 | # Copyright 2022 Red Hat 3 | # 4 | # Licensed under the Apache License, Version 2.0 (the "License"); you may 5 | # not use this file except in compliance with the License. You may obtain 6 | # a copy of the License at 7 | # 8 | # http://www.apache.org/licenses/LICENSE-2.0 9 | # 10 | # Unless required by applicable law or agreed to in writing, software 11 | # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 12 | # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 13 | # License for the specific language governing permissions and limitations 14 | # under the License. 15 | """ 16 | -------------------------------------------------------------------------------- /tests/cibyl/unit/sources/zuuld/__init__.py: -------------------------------------------------------------------------------- 1 | """ 2 | # Copyright 2022 Red Hat 3 | # 4 | # Licensed under the Apache License, Version 2.0 (the "License"); you may 5 | # not use this file except in compliance with the License. You may obtain 6 | # a copy of the License at 7 | # 8 | # http://www.apache.org/licenses/LICENSE-2.0 9 | # 10 | # Unless required by applicable law or agreed to in writing, software 11 | # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 12 | # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 13 | # License for the specific language governing permissions and limitations 14 | # under the License. 15 | """ 16 | -------------------------------------------------------------------------------- /tests/cibyl/unit/sources/zuuld/backends/__init__.py: -------------------------------------------------------------------------------- 1 | """ 2 | # Copyright 2022 Red Hat 3 | # 4 | # Licensed under the Apache License, Version 2.0 (the "License"); you may 5 | # not use this file except in compliance with the License. You may obtain 6 | # a copy of the License at 7 | # 8 | # http://www.apache.org/licenses/LICENSE-2.0 9 | # 10 | # Unless required by applicable law or agreed to in writing, software 11 | # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 12 | # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 13 | # License for the specific language governing permissions and limitations 14 | # under the License. 15 | """ 16 | -------------------------------------------------------------------------------- /tests/cibyl/unit/sources/zuuld/frontends/__init__.py: -------------------------------------------------------------------------------- 1 | """ 2 | # Copyright 2022 Red Hat 3 | # 4 | # Licensed under the Apache License, Version 2.0 (the "License"); you may 5 | # not use this file except in compliance with the License. You may obtain 6 | # a copy of the License at 7 | # 8 | # http://www.apache.org/licenses/LICENSE-2.0 9 | # 10 | # Unless required by applicable law or agreed to in writing, software 11 | # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 12 | # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 13 | # License for the specific language governing permissions and limitations 14 | # under the License. 15 | """ 16 | -------------------------------------------------------------------------------- /tests/cibyl/unit/sources/zuuld/frontends/test_zuul.py: -------------------------------------------------------------------------------- 1 | """ 2 | # Copyright 2022 Red Hat 3 | # 4 | # Licensed under the Apache License, Version 2.0 (the "License"); you may 5 | # not use this file except in compliance with the License. You may obtain 6 | # a copy of the License at 7 | # 8 | # http://www.apache.org/licenses/LICENSE-2.0 9 | # 10 | # Unless required by applicable law or agreed to in writing, software 11 | # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 12 | # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 13 | # License for the specific language governing permissions and limitations 14 | # under the License. 15 | """ 16 | from unittest import TestCase 17 | 18 | from cibyl.sources.zuuld.frontends.zuul import GitFrontendFactory 19 | 20 | 21 | class TestGitFrontendFactory(TestCase): 22 | """Tests for :class:`GitFrontendFactory`. 23 | """ 24 | 25 | def test_error_in_from_kwargs_for_no_repos(self): 26 | """Checks that if kwargs are missing the 'repos' key, an error is 27 | raised. 28 | """ 29 | with self.assertRaises(ValueError): 30 | GitFrontendFactory.from_kwargs() 31 | -------------------------------------------------------------------------------- /tests/cibyl/unit/sources/zuuld/tools/__init__.py: -------------------------------------------------------------------------------- 1 | """ 2 | # Copyright 2022 Red Hat 3 | # 4 | # Licensed under the Apache License, Version 2.0 (the "License"); you may 5 | # not use this file except in compliance with the License. You may obtain 6 | # a copy of the License at 7 | # 8 | # http://www.apache.org/licenses/LICENSE-2.0 9 | # 10 | # Unless required by applicable law or agreed to in writing, software 11 | # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 12 | # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 13 | # License for the specific language governing permissions and limitations 14 | # under the License. 15 | """ 16 | -------------------------------------------------------------------------------- /tests/cibyl/unit/utils/__init__.py: -------------------------------------------------------------------------------- 1 | """ 2 | # Copyright 2022 Red Hat 3 | # 4 | # Licensed under the Apache License, Version 2.0 (the "License"); you may 5 | # not use this file except in compliance with the License. You may obtain 6 | # a copy of the License at 7 | # 8 | # http://www.apache.org/licenses/LICENSE-2.0 9 | # 10 | # Unless required by applicable law or agreed to in writing, software 11 | # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 12 | # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 13 | # License for the specific language governing permissions and limitations 14 | # under the License. 15 | """ 16 | -------------------------------------------------------------------------------- /tests/kernel/__init__.py: -------------------------------------------------------------------------------- 1 | """ 2 | # Copyright 2022 Red Hat 3 | # 4 | # Licensed under the Apache License, Version 2.0 (the "License"); you may 5 | # not use this file except in compliance with the License. You may obtain 6 | # a copy of the License at 7 | # 8 | # http://www.apache.org/licenses/LICENSE-2.0 9 | # 10 | # Unless required by applicable law or agreed to in writing, software 11 | # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 12 | # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 13 | # License for the specific language governing permissions and limitations 14 | # under the License. 15 | """ 16 | -------------------------------------------------------------------------------- /tests/kernel/intr/__init__.py: -------------------------------------------------------------------------------- 1 | """ 2 | # Copyright 2022 Red Hat 3 | # 4 | # Licensed under the Apache License, Version 2.0 (the "License"); you may 5 | # not use this file except in compliance with the License. You may obtain 6 | # a copy of the License at 7 | # 8 | # http://www.apache.org/licenses/LICENSE-2.0 9 | # 10 | # Unless required by applicable law or agreed to in writing, software 11 | # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 12 | # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 13 | # License for the specific language governing permissions and limitations 14 | # under the License. 15 | """ 16 | -------------------------------------------------------------------------------- /tests/kernel/intr/scm/__init__.py: -------------------------------------------------------------------------------- 1 | """ 2 | # Copyright 2022 Red Hat 3 | # 4 | # Licensed under the Apache License, Version 2.0 (the "License"); you may 5 | # not use this file except in compliance with the License. You may obtain 6 | # a copy of the License at 7 | # 8 | # http://www.apache.org/licenses/LICENSE-2.0 9 | # 10 | # Unless required by applicable law or agreed to in writing, software 11 | # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 12 | # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 13 | # License for the specific language governing permissions and limitations 14 | # under the License. 15 | """ 16 | -------------------------------------------------------------------------------- /tests/kernel/intr/scm/git/__init__.py: -------------------------------------------------------------------------------- 1 | """ 2 | # Copyright 2022 Red Hat 3 | # 4 | # Licensed under the Apache License, Version 2.0 (the "License"); you may 5 | # not use this file except in compliance with the License. You may obtain 6 | # a copy of the License at 7 | # 8 | # http://www.apache.org/licenses/LICENSE-2.0 9 | # 10 | # Unless required by applicable law or agreed to in writing, software 11 | # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 12 | # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 13 | # License for the specific language governing permissions and limitations 14 | # under the License. 15 | """ 16 | -------------------------------------------------------------------------------- /tests/kernel/intr/scm/git/apis/__init__.py: -------------------------------------------------------------------------------- 1 | """ 2 | # Copyright 2022 Red Hat 3 | # 4 | # Licensed under the Apache License, Version 2.0 (the "License"); you may 5 | # not use this file except in compliance with the License. You may obtain 6 | # a copy of the License at 7 | # 8 | # http://www.apache.org/licenses/LICENSE-2.0 9 | # 10 | # Unless required by applicable law or agreed to in writing, software 11 | # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 12 | # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 13 | # License for the specific language governing permissions and limitations 14 | # under the License. 15 | """ 16 | -------------------------------------------------------------------------------- /tests/kernel/intr/scm/git/apis/cli/__init__.py: -------------------------------------------------------------------------------- 1 | """ 2 | # Copyright 2022 Red Hat 3 | # 4 | # Licensed under the Apache License, Version 2.0 (the "License"); you may 5 | # not use this file except in compliance with the License. You may obtain 6 | # a copy of the License at 7 | # 8 | # http://www.apache.org/licenses/LICENSE-2.0 9 | # 10 | # Unless required by applicable law or agreed to in writing, software 11 | # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 12 | # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 13 | # License for the specific language governing permissions and limitations 14 | # under the License. 15 | """ 16 | -------------------------------------------------------------------------------- /tests/kernel/intr/scm/git/apis/github/__init__.py: -------------------------------------------------------------------------------- 1 | """ 2 | # Copyright 2022 Red Hat 3 | # 4 | # Licensed under the Apache License, Version 2.0 (the "License"); you may 5 | # not use this file except in compliance with the License. You may obtain 6 | # a copy of the License at 7 | # 8 | # http://www.apache.org/licenses/LICENSE-2.0 9 | # 10 | # Unless required by applicable law or agreed to in writing, software 11 | # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 12 | # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 13 | # License for the specific language governing permissions and limitations 14 | # under the License. 15 | """ 16 | -------------------------------------------------------------------------------- /tests/kernel/intr/scm/git/apis/test_utils.py: -------------------------------------------------------------------------------- 1 | """ 2 | # Copyright 2022 Red Hat 3 | # 4 | # Licensed under the Apache License, Version 2.0 (the "License"); you may 5 | # not use this file except in compliance with the License. You may obtain 6 | # a copy of the License at 7 | # 8 | # http://www.apache.org/licenses/LICENSE-2.0 9 | # 10 | # Unless required by applicable law or agreed to in writing, software 11 | # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 12 | # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 13 | # License for the specific language governing permissions and limitations 14 | # under the License. 15 | """ 16 | from unittest import TestCase 17 | 18 | from kernel.scm.git.apis.utils import get_repository_fullname 19 | from kernel.tools.urls import URL 20 | 21 | 22 | class TestGetRepositoryFullname(TestCase): 23 | """Tests for :class:`get_repository_fullname`. 24 | """ 25 | 26 | def test_gets_fullname(self): 27 | """Checks that the repository's fullname is retrieved if the URL 28 | points to a git repo. 29 | """ 30 | url = URL('https://github.com/rhos-infra/cibyl.git') 31 | 32 | self.assertEqual('rhos-infra/cibyl', get_repository_fullname(url)) 33 | -------------------------------------------------------------------------------- /tests/kernel/intr/scm/git/tools/__init__.py: -------------------------------------------------------------------------------- 1 | """ 2 | # Copyright 2022 Red Hat 3 | # 4 | # Licensed under the Apache License, Version 2.0 (the "License"); you may 5 | # not use this file except in compliance with the License. You may obtain 6 | # a copy of the License at 7 | # 8 | # http://www.apache.org/licenses/LICENSE-2.0 9 | # 10 | # Unless required by applicable law or agreed to in writing, software 11 | # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 12 | # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 13 | # License for the specific language governing permissions and limitations 14 | # under the License. 15 | """ 16 | -------------------------------------------------------------------------------- /tests/kernel/intr/scm/tools/__init__.py: -------------------------------------------------------------------------------- 1 | """ 2 | # Copyright 2022 Red Hat 3 | # 4 | # Licensed under the Apache License, Version 2.0 (the "License"); you may 5 | # not use this file except in compliance with the License. You may obtain 6 | # a copy of the License at 7 | # 8 | # http://www.apache.org/licenses/LICENSE-2.0 9 | # 10 | # Unless required by applicable law or agreed to in writing, software 11 | # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 12 | # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 13 | # License for the specific language governing permissions and limitations 14 | # under the License. 15 | """ 16 | -------------------------------------------------------------------------------- /tests/kernel/intr/tools/__init__.py: -------------------------------------------------------------------------------- 1 | """ 2 | # Copyright 2022 Red Hat 3 | # 4 | # Licensed under the Apache License, Version 2.0 (the "License"); you may 5 | # not use this file except in compliance with the License. You may obtain 6 | # a copy of the License at 7 | # 8 | # http://www.apache.org/licenses/LICENSE-2.0 9 | # 10 | # Unless required by applicable law or agreed to in writing, software 11 | # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 12 | # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 13 | # License for the specific language governing permissions and limitations 14 | # under the License. 15 | """ 16 | -------------------------------------------------------------------------------- /tests/kernel/unit/__init__.py: -------------------------------------------------------------------------------- 1 | """ 2 | # Copyright 2022 Red Hat 3 | # 4 | # Licensed under the Apache License, Version 2.0 (the "License"); you may 5 | # not use this file except in compliance with the License. You may obtain 6 | # a copy of the License at 7 | # 8 | # http://www.apache.org/licenses/LICENSE-2.0 9 | # 10 | # Unless required by applicable law or agreed to in writing, software 11 | # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 12 | # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 13 | # License for the specific language governing permissions and limitations 14 | # under the License. 15 | """ 16 | -------------------------------------------------------------------------------- /tests/kernel/unit/scm/__init__.py: -------------------------------------------------------------------------------- 1 | """ 2 | # Copyright 2022 Red Hat 3 | # 4 | # Licensed under the Apache License, Version 2.0 (the "License"); you may 5 | # not use this file except in compliance with the License. You may obtain 6 | # a copy of the License at 7 | # 8 | # http://www.apache.org/licenses/LICENSE-2.0 9 | # 10 | # Unless required by applicable law or agreed to in writing, software 11 | # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 12 | # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 13 | # License for the specific language governing permissions and limitations 14 | # under the License. 15 | """ 16 | -------------------------------------------------------------------------------- /tests/kernel/unit/scm/git/__init__.py: -------------------------------------------------------------------------------- 1 | """ 2 | # Copyright 2022 Red Hat 3 | # 4 | # Licensed under the Apache License, Version 2.0 (the "License"); you may 5 | # not use this file except in compliance with the License. You may obtain 6 | # a copy of the License at 7 | # 8 | # http://www.apache.org/licenses/LICENSE-2.0 9 | # 10 | # Unless required by applicable law or agreed to in writing, software 11 | # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 12 | # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 13 | # License for the specific language governing permissions and limitations 14 | # under the License. 15 | """ 16 | -------------------------------------------------------------------------------- /tests/kernel/unit/scm/git/apis/__init__.py: -------------------------------------------------------------------------------- 1 | """ 2 | # Copyright 2022 Red Hat 3 | # 4 | # Licensed under the Apache License, Version 2.0 (the "License"); you may 5 | # not use this file except in compliance with the License. You may obtain 6 | # a copy of the License at 7 | # 8 | # http://www.apache.org/licenses/LICENSE-2.0 9 | # 10 | # Unless required by applicable law or agreed to in writing, software 11 | # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 12 | # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 13 | # License for the specific language governing permissions and limitations 14 | # under the License. 15 | """ 16 | -------------------------------------------------------------------------------- /tests/kernel/unit/scm/git/apis/cli/__init__.py: -------------------------------------------------------------------------------- 1 | """ 2 | # Copyright 2022 Red Hat 3 | # 4 | # Licensed under the Apache License, Version 2.0 (the "License"); you may 5 | # not use this file except in compliance with the License. You may obtain 6 | # a copy of the License at 7 | # 8 | # http://www.apache.org/licenses/LICENSE-2.0 9 | # 10 | # Unless required by applicable law or agreed to in writing, software 11 | # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 12 | # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 13 | # License for the specific language governing permissions and limitations 14 | # under the License. 15 | """ 16 | -------------------------------------------------------------------------------- /tests/kernel/unit/scm/git/apis/github/__init__.py: -------------------------------------------------------------------------------- 1 | """ 2 | # Copyright 2022 Red Hat 3 | # 4 | # Licensed under the Apache License, Version 2.0 (the "License"); you may 5 | # not use this file except in compliance with the License. You may obtain 6 | # a copy of the License at 7 | # 8 | # http://www.apache.org/licenses/LICENSE-2.0 9 | # 10 | # Unless required by applicable law or agreed to in writing, software 11 | # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 12 | # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 13 | # License for the specific language governing permissions and limitations 14 | # under the License. 15 | """ 16 | -------------------------------------------------------------------------------- /tests/kernel/unit/scm/tools/__init__.py: -------------------------------------------------------------------------------- 1 | """ 2 | # Copyright 2022 Red Hat 3 | # 4 | # Licensed under the Apache License, Version 2.0 (the "License"); you may 5 | # not use this file except in compliance with the License. You may obtain 6 | # a copy of the License at 7 | # 8 | # http://www.apache.org/licenses/LICENSE-2.0 9 | # 10 | # Unless required by applicable law or agreed to in writing, software 11 | # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 12 | # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 13 | # License for the specific language governing permissions and limitations 14 | # under the License. 15 | """ 16 | -------------------------------------------------------------------------------- /tests/kernel/unit/tools/__init__.py: -------------------------------------------------------------------------------- 1 | """ 2 | # Copyright 2022 Red Hat 3 | # 4 | # Licensed under the Apache License, Version 2.0 (the "License"); you may 5 | # not use this file except in compliance with the License. You may obtain 6 | # a copy of the License at 7 | # 8 | # http://www.apache.org/licenses/LICENSE-2.0 9 | # 10 | # Unless required by applicable law or agreed to in writing, software 11 | # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 12 | # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 13 | # License for the specific language governing permissions and limitations 14 | # under the License. 15 | """ 16 | -------------------------------------------------------------------------------- /tests/tripleo/__init__.py: -------------------------------------------------------------------------------- 1 | """ 2 | # Copyright 2022 Red Hat 3 | # 4 | # Licensed under the Apache License, Version 2.0 (the "License"); you may 5 | # not use this file except in compliance with the License. You may obtain 6 | # a copy of the License at 7 | # 8 | # http://www.apache.org/licenses/LICENSE-2.0 9 | # 10 | # Unless required by applicable law or agreed to in writing, software 11 | # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 12 | # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 13 | # License for the specific language governing permissions and limitations 14 | # under the License. 15 | """ 16 | -------------------------------------------------------------------------------- /tests/tripleo/e2e/__init__.py: -------------------------------------------------------------------------------- 1 | """ 2 | # Copyright 2022 Red Hat 3 | # 4 | # Licensed under the Apache License, Version 2.0 (the "License"); you may 5 | # not use this file except in compliance with the License. You may obtain 6 | # a copy of the License at 7 | # 8 | # http://www.apache.org/licenses/LICENSE-2.0 9 | # 10 | # Unless required by applicable law or agreed to in writing, software 11 | # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 12 | # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 13 | # License for the specific language governing permissions and limitations 14 | # under the License. 15 | """ 16 | -------------------------------------------------------------------------------- /tests/tripleo/intr/__init__.py: -------------------------------------------------------------------------------- 1 | """ 2 | # Copyright 2022 Red Hat 3 | # 4 | # Licensed under the Apache License, Version 2.0 (the "License"); you may 5 | # not use this file except in compliance with the License. You may obtain 6 | # a copy of the License at 7 | # 8 | # http://www.apache.org/licenses/LICENSE-2.0 9 | # 10 | # Unless required by applicable law or agreed to in writing, software 11 | # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 12 | # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 13 | # License for the specific language governing permissions and limitations 14 | # under the License. 15 | """ 16 | -------------------------------------------------------------------------------- /tests/tripleo/intr/insights/__init__.py: -------------------------------------------------------------------------------- 1 | """ 2 | # Copyright 2022 Red Hat 3 | # 4 | # Licensed under the Apache License, Version 2.0 (the "License"); you may 5 | # not use this file except in compliance with the License. You may obtain 6 | # a copy of the License at 7 | # 8 | # http://www.apache.org/licenses/LICENSE-2.0 9 | # 10 | # Unless required by applicable law or agreed to in writing, software 11 | # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 12 | # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 13 | # License for the specific language governing permissions and limitations 14 | # under the License. 15 | """ 16 | -------------------------------------------------------------------------------- /tests/tripleo/unit/__init__.py: -------------------------------------------------------------------------------- 1 | """ 2 | # Copyright 2022 Red Hat 3 | # 4 | # Licensed under the Apache License, Version 2.0 (the "License"); you may 5 | # not use this file except in compliance with the License. You may obtain 6 | # a copy of the License at 7 | # 8 | # http://www.apache.org/licenses/LICENSE-2.0 9 | # 10 | # Unless required by applicable law or agreed to in writing, software 11 | # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 12 | # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 13 | # License for the specific language governing permissions and limitations 14 | # under the License. 15 | """ 16 | -------------------------------------------------------------------------------- /tests/tripleo/unit/insights/__init__.py: -------------------------------------------------------------------------------- 1 | """ 2 | # Copyright 2022 Red Hat 3 | # 4 | # Licensed under the Apache License, Version 2.0 (the "License"); you may 5 | # not use this file except in compliance with the License. You may obtain 6 | # a copy of the License at 7 | # 8 | # http://www.apache.org/licenses/LICENSE-2.0 9 | # 10 | # Unless required by applicable law or agreed to in writing, software 11 | # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 12 | # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 13 | # License for the specific language governing permissions and limitations 14 | # under the License. 15 | """ 16 | -------------------------------------------------------------------------------- /tripleo/__init__.py: -------------------------------------------------------------------------------- 1 | """ 2 | # Copyright 2022 Red Hat 3 | # 4 | # Licensed under the Apache License, Version 2.0 (the "License"); you may 5 | # not use this file except in compliance with the License. You may obtain 6 | # a copy of the License at 7 | # 8 | # http://www.apache.org/licenses/LICENSE-2.0 9 | # 10 | # Unless required by applicable law or agreed to in writing, software 11 | # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 12 | # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 13 | # License for the specific language governing permissions and limitations 14 | # under the License. 15 | """ 16 | -------------------------------------------------------------------------------- /tripleo/_data/schemas/environment.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "http://json-schema.org/draft-07/schema#", 3 | "$id": "http://json-schema.org/draft-07/schema#", 4 | "type": "object", 5 | "properties": { 6 | "environment_type": { 7 | "type": "string" 8 | } 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /tripleo/_data/schemas/featureset.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "http://json-schema.org/draft-07/schema#", 3 | "$id": "http://json-schema.org/draft-07/schema#", 4 | "type": "object", 5 | "properties": { 6 | "overcloud_ipv6": { 7 | "type": "boolean" 8 | }, 9 | "composable_scenario": { 10 | "type": "string" 11 | } 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /tripleo/_data/schemas/release.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "http://json-schema.org/draft-07/schema#", 3 | "$id": "http://json-schema.org/draft-07/schema#", 4 | "type": "object", 5 | "properties": { 6 | "release": { 7 | "type": "string" 8 | } 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /tripleo/insights/__init__.py: -------------------------------------------------------------------------------- 1 | """ 2 | # Copyright 2022 Red Hat 3 | # 4 | # Licensed under the Apache License, Version 2.0 (the "License"); you may 5 | # not use this file except in compliance with the License. You may obtain 6 | # a copy of the License at 7 | # 8 | # http://www.apache.org/licenses/LICENSE-2.0 9 | # 10 | # Unless required by applicable law or agreed to in writing, software 11 | # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 12 | # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 13 | # License for the specific language governing permissions and limitations 14 | # under the License. 15 | """ 16 | from .io import DeploymentOutline, DeploymentSummary 17 | from .lookup import DeploymentLookUp 18 | 19 | __all__ = ( 20 | 'DeploymentLookUp', 21 | 'DeploymentOutline', 22 | 'DeploymentSummary' 23 | ) 24 | -------------------------------------------------------------------------------- /tripleo/insights/exceptions.py: -------------------------------------------------------------------------------- 1 | """ 2 | # Copyright 2022 Red Hat 3 | # 4 | # Licensed under the Apache License, Version 2.0 (the "License"); you may 5 | # not use this file except in compliance with the License. You may obtain 6 | # a copy of the License at 7 | # 8 | # http://www.apache.org/licenses/LICENSE-2.0 9 | # 10 | # Unless required by applicable law or agreed to in writing, software 11 | # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 12 | # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 13 | # License for the specific language governing permissions and limitations 14 | # under the License. 15 | """ 16 | 17 | 18 | class InsightsError(Exception): 19 | """Base exception for any error happening in the 'insights' library. 20 | """ 21 | 22 | 23 | class InvalidURL(InsightsError): 24 | """Complains about a URL that did not follow an expected format. 25 | """ 26 | 27 | 28 | class DownloadError(InsightsError): 29 | """Indicates that a problem happened while a file was getting 30 | downloaded. 31 | """ 32 | 33 | 34 | class IllegibleData(InsightsError): 35 | """Some data is formatted on a way that the library cannot understand. 36 | """ 37 | --------------------------------------------------------------------------------