Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add functional test for agnosticv-operator #1049

Merged
merged 1 commit into from
Apr 10, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions agnosticv-operator/test/roles/test_core/defaults/main.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
---
babylon_agnosticv_operator_namespace: babylon-config
Original file line number Diff line number Diff line change
@@ -0,0 +1,135 @@
---
apiVersion: anarchy.gpte.redhat.com/v1
kind: AnarchyGovernor
metadata:
name: account1.component-1.prod
namespace: babylon-anarchy-agnosticv-test
spec:
actions:
destroy:
callbackHandlers:
complete:
roles:
- role: babylon_anarchy_governor
finishOnSuccessfulRun: true
roles:
- role: babylon_anarchy_governor
provision:
callbackHandlers:
complete:
roles:
- role: babylon_anarchy_governor
finishOnSuccessfulRun: true
roles:
- role: babylon_anarchy_governor
start:
callbackHandlers:
complete:
roles:
- role: babylon_anarchy_governor
finishOnSuccessfulRun: true
roles:
- role: babylon_anarchy_governor
status:
callbackHandlers:
complete:
roles:
- role: babylon_anarchy_governor
finishOnSuccessfulRun: true
roles:
- role: babylon_anarchy_governor
stop:
callbackHandlers:
complete:
roles:
- role: babylon_anarchy_governor
finishOnSuccessfulRun: true
roles:
- role: babylon_anarchy_governor
ansibleGalaxyRequirements:
collections:
- name: awx.awx
version: 19.4.0
roles:
- name: babylon_anarchy_governor
src: https://github.com/rhpds/babylon_anarchy_governor.git
version: v0.19.1
pythonRequirements: |
awscli==1.18.92
packaging==20.9
pymysql==0.9.3
removeFinishedActions:
after: 12h
removeSuccessfulRuns:
after: 3h
subjectEventHandlers:
create:
roles:
- role: babylon_anarchy_governor
delete:
roles:
- role: babylon_anarchy_governor
update:
roles:
- role: babylon_anarchy_governor
varSecrets:
- name: babylon-tower
var: babylon_tower
- name: somesecret
namespace: somewhere
var: job_vars
vars:
job_vars:
__meta__:
anarchy:
namespace: babylon-anarchy-agnosticv-test
catalog:
category: Open_Environments
display_name: Component One
keywords:
- aws
- ocp
- openshift
labels:
Product: Example_Product
Product_Family: Example
Provider: Nobody
multiuser: false
namespace: babylon-catalog-{{ stage | default('?') }}
parameters:
- description: Version of Thing
formLabel: Thing Version
name: something_version
openAPIV3Schema:
default: "4.12"
enum:
- "4.8"
- "4.9"
- "4.10"
- "4.11"
- "4.12"
type: string
required: true
deployer:
scm_ref: some-prefix-1.0.1
scm_type: git
scm_url: https://github.com/redhat-cop/agnosticd.git
type: agnosticd
virtualenv: ansible2.9-python3.6-2021-11-30
last_update:
git:
author: Johnathan Kupferer <[email protected]>
committer: Johnathan Kupferer <[email protected]>
hash: a9c5158ac5ab077a1c0657694a94f98ff55cdb37
message: Initial commit
when_author: "2023-03-29T22:39:13Z"
when_committer: "2023-03-29T22:48:16Z"
secrets:
- name: somesecret
namespace: somewhere
aws_region: us-east-2
env_type: ocp4-cluster
software_to_deploy: openshift4
ssh_authorized_keys:
- key: ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQCuQVbHYZi9Q8ErxgWuCkafXb1Xi6nAMCgU4/WvZsXkHQ4FA0v+pWYyM8UgkoqI8jxRA0IzJz0n+kQiKF7aWj63Xc2PMmRSaBvwfo4v73Mg1S28Ls78nJ+Z3WX6UZbxcLDQHSRSGEvClCQkGbYNQSJmVqBq66a+kKxCaX127XeX0wA+Q9EF+cz+1grrGhB+zbBw7VuCa/Y6CdZ9+zgygYv2iwHDgs6ju1lfri+ytdHPHb+8IjitDZdIAWG76uVDjOrp+LW2nDpqYXxKLATJeKuBQQx/pQhmKV1WkDJcoXbo+1pq+hYQtiqiChfJFTZOAsltp6xgzOHnXyydMyahGesvhIhoEidBOQdksllmmUgcPihNcCWCyi6QI6X95og0Ru1pSgLeDMV1RHKRLssidt8thzMpNlWAR8zsPRY99E/GKvqroofIKfUvsqRO/Gg4Gv8Kb7Knq2E14GHY0vWU4wKhdErbWOE1VN4AZpyJDZkZ0RgVoSeKjwHxIZ9tvJWtPhE=
not for real
Original file line number Diff line number Diff line change
@@ -0,0 +1,59 @@
apiVersion: babylon.gpte.redhat.com/v1
kind: CatalogItem
metadata:
annotations:
babylon.gpte.redhat.com/description: Missing description, please add description.adoc
or description.html in agnosticv.
babylon.gpte.redhat.com/descriptionFormat: asciidoc
babylon.gpte.redhat.com/displayName: Component One
babylon.gpte.redhat.com/icon: ""
babylon.gpte.redhat.com/keywords: aws,ocp,openshift
creationTimestamp: "2023-03-29T23:37:43Z"
generation: 1
labels:
babylon.gpte.redhat.com/Product: Example_Product
babylon.gpte.redhat.com/Product_Family: Example
babylon.gpte.redhat.com/Provider: Nobody
babylon.gpte.redhat.com/category: Open_Environments
babylon.gpte.redhat.com/stage: prod
name: account1.component-1.prod
namespace: babylon-catalog-prod
resourceVersion: "691606"
uid: 1de6af17-5ab2-4bd4-bcf6-9db7e28c8749
spec:
lastUpdate:
git:
author: Johnathan Kupferer <[email protected]>
committer: Johnathan Kupferer <[email protected]>
hash: a9c5158ac5ab077a1c0657694a94f98ff55cdb37
message: Initial commit
when_author: "2023-03-29T22:39:13Z"
when_committer: "2023-03-29T22:48:16Z"
lifespan:
default: 3d
maximum: 14d
relativeMaximum: 5d
parameters:
- description: Version of Thing
formLabel: Thing Version
name: something_version
openAPIV3Schema:
default: "4.12"
enum:
- "4.8"
- "4.9"
- "4.10"
- "4.11"
- "4.12"
type: string
required: true
resources:
- name: component-1
provider:
apiVersion: poolboy.gpte.redhat.com/v1
kind: ResourceProvider
name: account1.component-1.prod
namespace: poolboy
runtime:
default: 4h
maximum: 8h
Original file line number Diff line number Diff line change
@@ -0,0 +1,126 @@
---
apiVersion: poolboy.gpte.redhat.com/v1
kind: ResourceProvider
metadata:
annotations:
gpte.redhat.com/last-update: '{"git": {"author": "Johnathan Kupferer <[email protected]>",
"committer": "Johnathan Kupferer <[email protected]>", "hash": "a9c5158ac5ab077a1c0657694a94f98ff55cdb37",
"message": "Initial commit", "when_author": "2023-03-29T22:39:13Z", "when_committer":
"2023-03-29T22:48:16Z"}}'
creationTimestamp: "2023-03-29T23:37:43Z"
generation: 1
name: account1.component-1.prod
namespace: poolboy
resourceVersion: "691609"
uid: a4c65758-28b8-4379-92ad-7b4b7068420d
spec:
default:
spec:
vars:
action_schedule:
start: '{{ timestamp.utcnow }}'
stop: '{{ timestamp.utcnow.add(resource_provider.spec.override.spec.vars.action_schedule.default_runtime)
}}'
lifespan:
default: 3d
maximum: '{% if resource_claim.annotations[''demo.redhat.com/open-environment'']
| default(false) | bool %}365d{% else %}14d{% endif %}'
relativeMaximum: '{% if resource_claim.annotations[''demo.redhat.com/open-environment'']
| default(false) | bool %}365d{% else %}5d{% endif %}'
matchIgnore:
- /spec/vars/action_schedule(/.*)?
override:
apiVersion: anarchy.gpte.redhat.com/v1
kind: AnarchySubject
metadata:
name: account1.component-1.prod-{{ guid }}{% if resource_index | int > 0 or
(resource_reference.name | default('')).endswith('-0') %}-{{ resource_index
}}{% endif %}
namespace: babylon-anarchy-agnosticv-test
spec:
governor: account1.component-1.prod
vars:
action_schedule:
default_runtime: 4h
maximum_runtime: '{% if resource_claim.annotations[''demo.redhat.com/open-environment'']
| default(false) | bool %}365d{% else %}8h{% endif %}'
desired_state: |2-

{%- if 0 < resource_states | map('default', {}, True) | list | json_query("length([?!contains(keys(status.towerJobs.provision || `{}`), 'completeTimestamp')])") -%}
{#- desired_state started until all AnarchySubjects have finished provision -#}
started
{%- elif 0 < resource_templates | json_query("length([?spec.vars.action_schedule.start <= '" ~ now(True, "%FT%TZ") ~ "' && spec.vars.action_schedule.stop > '" ~ now(True, "%FT%TZ") ~ "'])") -%}
{#- desired_state started for all if any should be started as determined by action schedule -#}
started
{%- elif 0 < resource_templates | json_query("length([?spec.vars.default_desired_state == 'started' && !(spec.vars.action_schedule.start || spec.vars.action_schedule.stop)])") -%}
{#- desired_state started for all if any should be started as determined by default_desired_state -#}
started
{%- else -%}
stopped
{%- endif -%}
healthy: true
job_vars:
guid: '{{ guid }}{% if resource_index | int > 0 or (resource_reference.name
| default('''')).endswith(''-0'') %}-{{ resource_index }}{% endif %}'
resourceRequiresClaim: false
template:
enable: true
updateFilters:
- allowedOps:
- add
- replace
pathMatch: /spec/vars/action_schedule/.*
- allowedOps:
- add
- replace
pathMatch: /spec/vars/desired_state
- allowedOps:
- add
- replace
pathMatch: /spec/vars/check_status_request_timestamp
validation:
openAPIV3Schema:
additionalProperties: false
properties:
spec:
additionalProperties: false
properties:
vars:
additionalProperties: false
properties:
action_schedule:
additionalProperties: false
properties:
start:
pattern: ^[0-9]{4}-[0-9]{2}-[0-9]{2}T[0-9]{2}:[0-9]{2}:[0-9]{2}Z$
type: string
stop:
pattern: ^[0-9]{4}-[0-9]{2}-[0-9]{2}T[0-9]{2}:[0-9]{2}:[0-9]{2}Z$
type: string
type: object
check_status_request_timestamp:
pattern: ^[0-9]{4}-[0-9]{2}-[0-9]{2}T[0-9]{2}:[0-9]{2}:[0-9]{2}Z$
type: string
job_vars:
additionalProperties: false
properties:
something_version:
default: "4.12"
description: Version of Thing
enum:
- "4.8"
- "4.9"
- "4.10"
- "4.11"
- "4.12"
type: string
required:
- something_version
type: object
type: object
required:
- vars
type: object
required:
- spec
type: object
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
---
apiVersion: gpte.redhat.com/v1
kind: AgnosticVRepo
metadata:
name: babylon-agnosticv-test
spec:
babylonAnarchyRoles:
- name: babylon_anarchy_governor
src: https://github.com/rhpds/babylon_anarchy_governor.git
version: v0.19.1
default_execution_environment:
image: >-
image-registry.apps-dev.open.redhat.com/agnosticd/ee-{{
merged_vars.__meta__.deployer.virtualenv | default('ansible2.9-python3.6-2021-11-30')
}}
private: true
execution_environment_allow_list_extra:
- image: ^image-registry.apps(-dev|-test)?.open.redhat.com/agnosticd/ee-.*?:v[0-9]+[.][0-9]+[.][0-9]+$
pull: missing
- image: ^image-registry.apps(-dev|-test)?.open.redhat.com/agnosticd/ee-.*?:(pr-[0-9]+|latest|dev|test)$
pull: always
- image: ^registry.redhat.io/ansible-automation-platform-21/ee-
- image: ^image-registry.apps(-dev|-test)?.open.redhat.com/agnosticd/ee-ansible2.9-python3.6-2021-11-30$
- image: ^image-registry.apps(-dev|-test)?.open.redhat.com/agnosticd/ee-equinix_metal-ansible2.9-python3.6-2021-07-02$
- image: ^image-registry.apps(-dev|-test)?.open.redhat.com/agnosticd/ee-equinix_metal-ansible2.9-python3.6-2021-11-03$
- image: ^image-registry.apps(-dev|-test)?.open.redhat.com/agnosticd/ee-azure_open_envs-ansible2.9-python3.6-2022-01-10$
- image: ^image-registry.apps(-dev|-test)?.open.redhat.com/agnosticd/ee-ansible2.9-python3.6-2021-01-22$
- image: ^quay.io/agnosticd/ee-
pollingInterval: 10s
ref: main
sshKey: babylon-agnosticv-test
url: [email protected]:rhpds/babylon-agnosticv-test.git
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
---
apiVersion: v1
kind: Secret
metadata:
name: babylon-agnosticv-test
type: Opaque
data:
# This SSH key is setup for this test repo only and should be used for no other purpose.
id_rsa: LS0tLS1CRUdJTiBPUEVOU1NIIFBSSVZBVEUgS0VZLS0tLS0KYjNCbGJuTnphQzFyWlhrdGRqRUFBQUFBQkc1dmJtVUFBQUFFYm05dVpRQUFBQUFBQUFBQkFBQUJsd0FBQUFkemMyZ3RjbgpOaEFBQUFBd0VBQVFBQUFZRUEzb2F2RDY3QUQ5c1dzVnVQa29DVVkvOFdLVHF5OTQwSE8reEdYcDl2WGduRWduQU05cWFwCjBWMWtuMTBXMHJCRXJ0MFVJKzFGbFJIY3dCY2JBMzZWMjNVUmZVdHpoRDhXKzVWZjFPSmc3R2c3ZHZ1bWRkbVU4a2dMUVMKQmlpaVA4OUNEdzVVY0RRa0Q4UENpdGQvcit0WngrMDB5czVNeG82LzkxNkJFK2s2azhvWUxPQW5WY1BoRFJUa3NpdGhQagpVSUl6cCsyanJEbmdwQk9KMmppNlVhQTA0Q0JYYnQyTXFqNGVTWmFOWTVkS1d0cWN1YWtoQXBRRUg4NzlZTnNzTGNDOVUzCi9xclBBZVFuN09CK1JyeDE0azdCSm82Zm5FeTJtK01jSndxbzBHQWRsVnV4bXBXZ2dRd2NsZVdhZUZLYktmZkZwNExsYTUKSkRMU212RmRaUDk1MlNVektJTTFQQkk5QnJGeWloVGh1UGFOSWVPaWI0SHRDQXVPSFlzZEsvT2prOUxzSUloOTVNMFQwSgpndGVJcll3MFNEaklMYzRrTzZKaGtUYm00U1J6MFhoZGdZcy9tN1lzREoyZEI1QU1JZEpQY094c3JtTm12d2lHZ2VFN29jCmlHQUdhV29tbEQycnZmRUtTakttOFkxRXVhS3h6SUw3TVBoeXpTNVZBQUFGbVBzaGZrbjdJWDVKQUFBQUIzTnphQzF5YzIKRUFBQUdCQU42R3J3K3V3QS9iRnJGYmo1S0FsR1AvRmlrNnN2ZU5CenZzUmw2ZmIxNEp4SUp3RFBhbXFkRmRaSjlkRnRLdwpSSzdkRkNQdFJaVVIzTUFYR3dOK2xkdDFFWDFMYzRRL0Z2dVZYOVRpWU94b08zYjdwblhabFBKSUMwRWdZb29qL1BRZzhPClZIQTBKQS9Ed29yWGY2L3JXY2Z0Tk1yT1RNYU92L2RlZ1JQcE9wUEtHQ3pnSjFYRDRRMFU1TElyWVQ0MUNDTTZmdG82dzUKNEtRVGlkbzR1bEdnTk9BZ1YyN2RqS28rSGttV2pXT1hTbHJhbkxtcElRS1VCQi9PL1dEYkxDM0F2Vk4vNnF6d0hrSit6Zwpma2E4ZGVKT3dTYU9uNXhNdHB2akhDY0txTkJnSFpWYnNacVZvSUVNSEpYbG1uaFNteW4zeGFlQzVXdVNReTBwcnhYV1QvCmVka2xNeWlETlR3U1BRYXhjb29VNGJqMmpTSGpvbStCN1FnTGpoMkxIU3Z6bzVQUzdDQ0lmZVRORTlDWUxYaUsyTU5FZzQKeUMzT0pEdWlZWkUyNXVFa2M5RjRYWUdMUDV1MkxBeWRuUWVRRENIU1QzRHNiSzVqWnI4SWhvSGhPNkhJaGdCbWxxSnBROQpxNzN4Q2tveXB2R05STG1pc2N5Qyt6RDRjczB1VlFBQUFBTUJBQUVBQUFHQUFQcDdvT2lHVEt1TWNuN2N2SlZYSndkb25BCmwzaWFkem1ERUdSWVU5blVsb0NxREpLeVBPekZrS1I3bkdPaFZFcXJZckpWWDJQOTBORTVwN3ZSZGNrUDMzU1RpVjRKelIKdk9KMUY1VUtrdytKbWhEVTN3dDBDd3F1WTFJV29pcUlBclRMQ2w4THV4OVpCejliTlQ0RHlsMmo5Y21PV3cvYnN1bnp6KworVXp3Wm4rZ0ordXhFSlg2RW9UUjFVZGo0cEpPSDdBeXFFS280elF0VnVmajM3UjcrYUZwV0lmT0xPMWJMTWp2WHhWNHVZCmxwb0QwQkhYejN0Q0lnMEJjb3NVS1ExWExpNEVLakc0TFBvRnRrT01xTXdDTmVOWVNTRHh2WTVRZzFLS0dWUlpQc21FZjIKazhBYjNETGlkUlBDSmgvZUN0bkd0M05sRlJSYW9GaC9zanJaR2E4MTNPeVdSOXE0VU9UT1B6OFVyUTZLL2lJL1ErUXhubwp6NjVZeXp0czROZlpSZHlmTEoyZGFwUHdQSmlXSzYrc2hUVTdiTEJVd0dodFZPa05mTmdyeDVQdGZJaDNrNDVhYXhNVjB4CnFZT2xHQnBJLzE2WUlzYXJQTlpnOVlVNGx6blNqSkNPVXdnVjJtcncwM0N1eEU2TWJuRG9jaFArbXRMUWxMWlBmUkFBQUEKd1FDS3VLdzc1Q21jblhZd2YrOUJ3ZHdBQVp1SktUNVBoaGcyZ25xYUFWMEd0dVlhelJXRnp1ODBIME9FSlQ1N21TVHg2eQpYZ3pyaE0wSnkvSkN0OWxkRkE5TlRBYTl0amNueFdTT2tRQ0VXNWFLeGNxKzBDdml5OTFlSmV2V1RjK3lyZW82VmVGNkM1Ck56UURiRlRqRSt2U1lnL1hqelZydWVwTS9FT1pQTVdUaGJVUnNSdjZUT0RTeW10aXQ2OEY3SWhsYnZFRTVlZ25HR1JSSGgKaHFrT1FTK2xzTnQ3dzN5b2hIMnQ3Y095Y3plcWNGZDB2OXpuUWVORnJnZS9sSk1Tb0FBQURCQU81cnVTRm9NZEhUT25ubwpVTmRGS20rNi9hRVZKSUtqYnNJYXFNNDVNTkZ5akhxVTZXQXpLVis2am8rbHBNVWRnYnN2cGdSR1JwVWVuanRxbkY0M1dJClU2QUNCMDBkeURRTlQwWUdpVkRna1BKWnRnWFd5RUNtT0xZZm9kbjlZQWE0bmZIa21HeWN5Q0Nxd3M2Rlh3N3VZVk9iNHoKc3dxOEdrMW1XQk05dkxIQm5mNjJ4N01WVVJmeTk1ZGJKa2RMOGpSVzluV2EwS0dYTEM2VWRmUHVLcUhkamlnV1RtQys5aQoxQ3ZBRjV0akJudENmYzhHYTgva29NVVB6R1dhTVlqUUFBQU1FQTd1N3hYNnRVbENWTC9rNkMyN0s0T1pSWE5YaVkwcUJWCjQxc3AyUTBZU0tRYlBYSmRuTHJrK2x3V29RcGJkSm5rWjBEeTNnYWFVcmNRSGZqQU9xWjdTWWhPOU41d2hIWU5rRitjLzUKdHVOTll0RmFDME9JTVZ2ZTRJaC9ERUtOaWY3RnFaWTBQMVp3UXpZaEJxOTZCK0pRZ0UvZUhvdGh5S2pMWHZCb1d6Zy9rSwpXSHEwc0UyMmo4eS9STTRjME1hUVdnM24vbFYwWFJmMUVkMEQ5TXZ1T0NxWllkdXZJMFRSY2ZJb0hhOWNSUXZNL2EyRUQ4CjZuTHJuT2NDL3dYSzdwQUFBQUhtcHJkWEJtWlhKbFFHcDBhMnhoY0hSdmNDNXNiMk5oYkdSdmJXRnBiZ0VDQXdRPQotLS0tLUVORCBPUEVOU1NIIFBSSVZBVEUgS0VZLS0tLS0K
Loading