qontract-reconcile 0.10.1rc1202__py3-none-any.whl → 0.10.2.dev2__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- qontract_reconcile-0.10.2.dev2.dist-info/METADATA +500 -0
- {qontract_reconcile-0.10.1rc1202.dist-info → qontract_reconcile-0.10.2.dev2.dist-info}/RECORD +12 -130
- {qontract_reconcile-0.10.1rc1202.dist-info → qontract_reconcile-0.10.2.dev2.dist-info}/WHEEL +1 -2
- {qontract_reconcile-0.10.1rc1202.dist-info → qontract_reconcile-0.10.2.dev2.dist-info}/entry_points.txt +1 -0
- reconcile/aws_account_manager/README.md +5 -0
- reconcile/change_owners/README.md +34 -0
- reconcile/glitchtip/README.md +150 -0
- reconcile/gql_definitions/introspection.json +51176 -0
- reconcile/run_integration.py +293 -0
- reconcile/utils/binary.py +2 -2
- reconcile/utils/mr/README.md +198 -0
- reconcile/utils/oc_map.py +2 -2
- tools/qontract_cli.py +0 -0
- qontract_reconcile-0.10.1rc1202.dist-info/METADATA +0 -64
- qontract_reconcile-0.10.1rc1202.dist-info/top_level.txt +0 -3
- reconcile/test/__init__.py +0 -0
- reconcile/test/conftest.py +0 -157
- reconcile/test/fixtures.py +0 -24
- reconcile/test/saas_auto_promotions_manager/__init__.py +0 -0
- reconcile/test/saas_auto_promotions_manager/conftest.py +0 -170
- reconcile/test/saas_auto_promotions_manager/merge_request_manager/__init__.py +0 -0
- reconcile/test/saas_auto_promotions_manager/merge_request_manager/merge_request_manager/__init__.py +0 -0
- reconcile/test/saas_auto_promotions_manager/merge_request_manager/merge_request_manager/conftest.py +0 -115
- reconcile/test/saas_auto_promotions_manager/merge_request_manager/merge_request_manager/data_keys.py +0 -19
- reconcile/test/saas_auto_promotions_manager/merge_request_manager/merge_request_manager/test_desired_state.py +0 -66
- reconcile/test/saas_auto_promotions_manager/merge_request_manager/merge_request_manager/test_merge_request_manager.py +0 -86
- reconcile/test/saas_auto_promotions_manager/merge_request_manager/merge_request_manager/test_mr_parser.py +0 -352
- reconcile/test/saas_auto_promotions_manager/merge_request_manager/merge_request_manager/test_reconciler.py +0 -494
- reconcile/test/saas_auto_promotions_manager/merge_request_manager/renderer/__init__.py +0 -0
- reconcile/test/saas_auto_promotions_manager/merge_request_manager/renderer/conftest.py +0 -25
- reconcile/test/saas_auto_promotions_manager/merge_request_manager/renderer/test_content_multiple_namespaces.py +0 -37
- reconcile/test/saas_auto_promotions_manager/merge_request_manager/renderer/test_content_single_namespace.py +0 -81
- reconcile/test/saas_auto_promotions_manager/merge_request_manager/renderer/test_content_single_target.py +0 -61
- reconcile/test/saas_auto_promotions_manager/merge_request_manager/renderer/test_json_path_selector.py +0 -74
- reconcile/test/saas_auto_promotions_manager/test_integration_test.py +0 -52
- reconcile/test/saas_auto_promotions_manager/utils/__init__.py +0 -0
- reconcile/test/test_acs_notifiers.py +0 -393
- reconcile/test/test_acs_policies.py +0 -497
- reconcile/test/test_acs_rbac.py +0 -865
- reconcile/test/test_aggregated_list.py +0 -237
- reconcile/test/test_amtool.py +0 -37
- reconcile/test/test_aws_ami_cleanup.py +0 -230
- reconcile/test/test_aws_ami_share.py +0 -68
- reconcile/test/test_aws_cloudwatch_log_retention.py +0 -434
- reconcile/test/test_aws_iam_keys.py +0 -70
- reconcile/test/test_aws_iam_password_reset.py +0 -35
- reconcile/test/test_aws_support_cases_sos.py +0 -23
- reconcile/test/test_checkpoint.py +0 -178
- reconcile/test/test_cli.py +0 -41
- reconcile/test/test_closedbox_endpoint_monitoring.py +0 -207
- reconcile/test/test_dashdotdb_dora.py +0 -245
- reconcile/test/test_database_access_manager.py +0 -660
- reconcile/test/test_deadmanssnitch.py +0 -290
- reconcile/test/test_gabi_authorized_users.py +0 -72
- reconcile/test/test_gcr_mirror.py +0 -14
- reconcile/test/test_github_org.py +0 -156
- reconcile/test/test_github_repo_invites.py +0 -119
- reconcile/test/test_gitlab_housekeeping.py +0 -333
- reconcile/test/test_gitlab_labeler.py +0 -126
- reconcile/test/test_gitlab_members.py +0 -219
- reconcile/test/test_gitlab_permissions.py +0 -164
- reconcile/test/test_instrumented_wrappers.py +0 -18
- reconcile/test/test_integrations_manager.py +0 -1252
- reconcile/test/test_jenkins_worker_fleets.py +0 -57
- reconcile/test/test_jira_permissions_validator.py +0 -519
- reconcile/test/test_jump_host.py +0 -114
- reconcile/test/test_ldap_users.py +0 -125
- reconcile/test/test_make.py +0 -28
- reconcile/test/test_ocm_additional_routers.py +0 -133
- reconcile/test/test_ocm_clusters.py +0 -798
- reconcile/test/test_ocm_clusters_manifest_updates.py +0 -87
- reconcile/test/test_ocm_machine_pools.py +0 -1103
- reconcile/test/test_ocm_update_recommended_version.py +0 -145
- reconcile/test/test_ocm_upgrade_scheduler_org_updater.py +0 -125
- reconcile/test/test_openshift_base.py +0 -1269
- reconcile/test/test_openshift_cluster_bots.py +0 -240
- reconcile/test/test_openshift_namespace_labels.py +0 -344
- reconcile/test/test_openshift_namespaces.py +0 -256
- reconcile/test/test_openshift_resource.py +0 -443
- reconcile/test/test_openshift_resources_base.py +0 -478
- reconcile/test/test_openshift_saas_deploy.py +0 -188
- reconcile/test/test_openshift_saas_deploy_change_tester.py +0 -308
- reconcile/test/test_openshift_saas_deploy_trigger_cleaner.py +0 -65
- reconcile/test/test_openshift_serviceaccount_tokens.py +0 -282
- reconcile/test/test_openshift_tekton_resources.py +0 -265
- reconcile/test/test_openshift_upgrade_watcher.py +0 -223
- reconcile/test/test_prometheus_rules_tester.py +0 -151
- reconcile/test/test_quay_membership.py +0 -86
- reconcile/test/test_quay_mirror.py +0 -172
- reconcile/test/test_quay_mirror_org.py +0 -82
- reconcile/test/test_quay_repos.py +0 -59
- reconcile/test/test_queries.py +0 -53
- reconcile/test/test_repo_owners.py +0 -47
- reconcile/test/test_requests_sender.py +0 -139
- reconcile/test/test_saasherder.py +0 -1611
- reconcile/test/test_saasherder_allowed_secret_paths.py +0 -125
- reconcile/test/test_secret_reader.py +0 -153
- reconcile/test/test_slack_base.py +0 -183
- reconcile/test/test_slack_usergroups.py +0 -785
- reconcile/test/test_sql_query.py +0 -316
- reconcile/test/test_status_board.py +0 -258
- reconcile/test/test_terraform_aws_route53.py +0 -29
- reconcile/test/test_terraform_cloudflare_dns.py +0 -117
- reconcile/test/test_terraform_cloudflare_resources.py +0 -408
- reconcile/test/test_terraform_cloudflare_users.py +0 -747
- reconcile/test/test_terraform_repo.py +0 -440
- reconcile/test/test_terraform_resources.py +0 -519
- reconcile/test/test_terraform_tgw_attachments.py +0 -1295
- reconcile/test/test_terraform_users.py +0 -152
- reconcile/test/test_terraform_vpc_peerings.py +0 -576
- reconcile/test/test_terraform_vpc_peerings_build_desired_state.py +0 -1434
- reconcile/test/test_three_way_diff_strategy.py +0 -131
- reconcile/test/test_utils_jinja2.py +0 -130
- reconcile/test/test_vault_replication.py +0 -534
- reconcile/test/test_vault_utils.py +0 -47
- reconcile/test/test_version_bump.py +0 -18
- reconcile/test/test_vpc_peerings_validator.py +0 -194
- reconcile/test/test_wrong_region.py +0 -78
- release/__init__.py +0 -0
- release/test_version.py +0 -50
- release/version.py +0 -104
- tools/cli_commands/test/__init__.py +0 -0
- tools/cli_commands/test/conftest.py +0 -332
- tools/cli_commands/test/test_aws_cost_report.py +0 -258
- tools/cli_commands/test/test_cost_management_api.py +0 -326
- tools/cli_commands/test/test_gpg_encrypt.py +0 -235
- tools/cli_commands/test/test_openshift_cost_optimization_report.py +0 -255
- tools/cli_commands/test/test_openshift_cost_report.py +0 -295
- tools/cli_commands/test/test_util.py +0 -70
- tools/test/__init__.py +0 -0
- tools/test/conftest.py +0 -77
- tools/test/test_app_interface_metrics_exporter.py +0 -48
- tools/test/test_erv2.py +0 -80
- tools/test/test_get_container_images.py +0 -230
- tools/test/test_qontract_cli.py +0 -197
- tools/test/test_saas_promotion_state.py +0 -187
- tools/test/test_sd_app_sre_alert_report.py +0 -74
- tools/test/test_sre_checkpoints.py +0 -79
@@ -1,145 +0,0 @@
|
|
1
|
-
import pytest
|
2
|
-
|
3
|
-
from reconcile.ocm.types import (
|
4
|
-
OCMClusterNetwork,
|
5
|
-
OCMClusterSpec,
|
6
|
-
OCMSpec,
|
7
|
-
)
|
8
|
-
from reconcile.ocm_update_recommended_version import (
|
9
|
-
format_initial_version,
|
10
|
-
get_highest,
|
11
|
-
get_majority,
|
12
|
-
get_updated_recommended_versions,
|
13
|
-
get_version_weights,
|
14
|
-
recommended_version,
|
15
|
-
)
|
16
|
-
|
17
|
-
|
18
|
-
@pytest.fixture
|
19
|
-
def versions() -> list[str]:
|
20
|
-
return ["1.0.0", "1.1.0", "1.1.1", "1.1.0"]
|
21
|
-
|
22
|
-
|
23
|
-
@pytest.fixture
|
24
|
-
def version_set(versions) -> set[str]:
|
25
|
-
return set(versions)
|
26
|
-
|
27
|
-
|
28
|
-
def test_get_highest(version_set):
|
29
|
-
highest = get_highest(version_set)
|
30
|
-
assert highest == "1.1.1"
|
31
|
-
|
32
|
-
assert get_highest({"1.1.1"}) == "1.1.1"
|
33
|
-
|
34
|
-
|
35
|
-
def test_get_majority(versions, version_set):
|
36
|
-
majority = get_majority(version_set, versions)
|
37
|
-
assert majority == "1.1.0"
|
38
|
-
|
39
|
-
assert get_majority({"1.1.1"}, ["1.1.1"]) == "1.1.1"
|
40
|
-
|
41
|
-
|
42
|
-
def test_recommended_version(versions, version_set):
|
43
|
-
assert recommended_version(versions, high_weight=10, majority_weight=1) == "1.1.1"
|
44
|
-
assert recommended_version(versions, high_weight=0, majority_weight=1) == "1.1.0"
|
45
|
-
assert (
|
46
|
-
recommended_version(
|
47
|
-
versions=["1.1.0", "1.1.0", "1.1.1"], high_weight=10, majority_weight=5
|
48
|
-
)
|
49
|
-
== "1.1.1"
|
50
|
-
)
|
51
|
-
|
52
|
-
|
53
|
-
def test_get_version_weights():
|
54
|
-
assert get_version_weights({}) == (1, 1)
|
55
|
-
assert get_version_weights({"recommendedVersionWeight": {"majority": 0}}) == (1, 0)
|
56
|
-
assert get_version_weights({
|
57
|
-
"recommendedVersionWeight": {"majority": 2, "highest": 4}
|
58
|
-
}) == (4, 2)
|
59
|
-
|
60
|
-
|
61
|
-
def add_cluster(
|
62
|
-
clusters: dict[str, OCMSpec], cluster_name: str, version: str, channel: str
|
63
|
-
):
|
64
|
-
clusters[cluster_name] = OCMSpec(
|
65
|
-
network=OCMClusterNetwork(vpc="", service="", pod=""),
|
66
|
-
spec=OCMClusterSpec(
|
67
|
-
version=version,
|
68
|
-
channel=channel,
|
69
|
-
instance_type="",
|
70
|
-
multi_az=True,
|
71
|
-
private=True,
|
72
|
-
product="",
|
73
|
-
provider="",
|
74
|
-
region="",
|
75
|
-
),
|
76
|
-
)
|
77
|
-
|
78
|
-
|
79
|
-
def test_get_updated_recommended_versions():
|
80
|
-
ocm_info = {
|
81
|
-
"recommendedVersions": [],
|
82
|
-
"upgradePolicyAllowedWorkloads": ["foo", "bar"],
|
83
|
-
"upgradePolicyClusters": [
|
84
|
-
{"name": "a", "upgradePolicy": {"workloads": ["foo"]}},
|
85
|
-
],
|
86
|
-
}
|
87
|
-
clusters: dict[str, OCMSpec] = {}
|
88
|
-
add_cluster(clusters, "a", "2.0.0", "stable")
|
89
|
-
|
90
|
-
assert get_updated_recommended_versions(ocm_info, clusters) == [
|
91
|
-
{
|
92
|
-
"channel": "stable",
|
93
|
-
"recommendedVersion": "2.0.0",
|
94
|
-
"workload": "foo",
|
95
|
-
"initialVersion": "openshift-v2.0.0",
|
96
|
-
},
|
97
|
-
]
|
98
|
-
|
99
|
-
|
100
|
-
def test_get_updated_recommended_versions_multiple_channel():
|
101
|
-
ocm_info = {
|
102
|
-
"recommendedVersions": [
|
103
|
-
{"recommendedVersion": "1.0.0", "workload": "foo"},
|
104
|
-
],
|
105
|
-
"upgradePolicyAllowedWorkloads": ["foo", "bar"],
|
106
|
-
"upgradePolicyClusters": [
|
107
|
-
{"name": "a", "upgradePolicy": {"workloads": ["foo"]}},
|
108
|
-
{"name": "c", "upgradePolicy": {"workloads": ["foo", "bar"]}},
|
109
|
-
{"name": "b", "upgradePolicy": {"workloads": ["bar"]}},
|
110
|
-
{"name": "b2", "upgradePolicy": {"workloads": ["bar"]}},
|
111
|
-
{"name": "b3", "upgradePolicy": {"workloads": ["bar"]}},
|
112
|
-
],
|
113
|
-
}
|
114
|
-
clusters: dict[str, OCMSpec] = {}
|
115
|
-
add_cluster(clusters, "a", "2.1.0", "stable")
|
116
|
-
add_cluster(clusters, "c", "2.0.0", "stable")
|
117
|
-
add_cluster(clusters, "b", "3.0.0", "fast")
|
118
|
-
add_cluster(clusters, "b2", "3.0.0", "fast")
|
119
|
-
add_cluster(clusters, "b3", "2.0.0", "fast")
|
120
|
-
|
121
|
-
assert get_updated_recommended_versions(ocm_info, clusters) == [
|
122
|
-
{
|
123
|
-
"channel": "stable",
|
124
|
-
"recommendedVersion": "2.1.0",
|
125
|
-
"workload": "foo",
|
126
|
-
"initialVersion": "openshift-v2.1.0",
|
127
|
-
},
|
128
|
-
{
|
129
|
-
"channel": "stable",
|
130
|
-
"recommendedVersion": "2.0.0",
|
131
|
-
"workload": "bar",
|
132
|
-
"initialVersion": "openshift-v2.0.0",
|
133
|
-
},
|
134
|
-
{
|
135
|
-
"channel": "fast",
|
136
|
-
"recommendedVersion": "3.0.0",
|
137
|
-
"workload": "bar",
|
138
|
-
"initialVersion": "openshift-v3.0.0-fast",
|
139
|
-
},
|
140
|
-
]
|
141
|
-
|
142
|
-
|
143
|
-
def test_format_initial_version():
|
144
|
-
assert format_initial_version("2.0.0", "stable") == "openshift-v2.0.0"
|
145
|
-
assert format_initial_version("2.0.0", "fast") == "openshift-v2.0.0-fast"
|
@@ -1,125 +0,0 @@
|
|
1
|
-
import json
|
2
|
-
|
3
|
-
import pytest
|
4
|
-
|
5
|
-
from reconcile.ocm.types import OCMClusterNetwork, OCMSpec, OSDClusterSpec
|
6
|
-
from reconcile.ocm_upgrade_scheduler_org_updater import render_policy
|
7
|
-
from reconcile.utils.jinja2.utils import Jinja2TemplateError
|
8
|
-
|
9
|
-
|
10
|
-
@pytest.fixture
|
11
|
-
def cluster_ocm_spec():
|
12
|
-
n = OCMClusterNetwork(
|
13
|
-
vpc="10.112.0.0/16",
|
14
|
-
service="10.120.0.0/16",
|
15
|
-
pod="10.128.0.0/14",
|
16
|
-
)
|
17
|
-
spec = OSDClusterSpec(
|
18
|
-
product="osd",
|
19
|
-
channel="stable",
|
20
|
-
instance_type="m5.xlarge",
|
21
|
-
multi_az=False,
|
22
|
-
private=False,
|
23
|
-
region="us-east-1",
|
24
|
-
version="4.10.0",
|
25
|
-
load_balancers=5,
|
26
|
-
storage=1100,
|
27
|
-
provider="aws",
|
28
|
-
)
|
29
|
-
obj = OCMSpec(
|
30
|
-
spec=spec,
|
31
|
-
network=n,
|
32
|
-
)
|
33
|
-
yield obj
|
34
|
-
|
35
|
-
|
36
|
-
@pytest.fixture
|
37
|
-
def labels():
|
38
|
-
return {"key1": "value1", "key2": "value2"}
|
39
|
-
|
40
|
-
|
41
|
-
@pytest.fixture
|
42
|
-
def variables():
|
43
|
-
return json.dumps({"var1": "value1", "var2": "value2"})
|
44
|
-
|
45
|
-
|
46
|
-
def create_template_info(content, type="jinja2", variables=None):
|
47
|
-
return {
|
48
|
-
"path": {
|
49
|
-
"content": content,
|
50
|
-
},
|
51
|
-
"type": type,
|
52
|
-
"variables": variables,
|
53
|
-
}
|
54
|
-
|
55
|
-
|
56
|
-
def test_render_policy_basic(cluster_ocm_spec, labels):
|
57
|
-
template_info = create_template_info("hello: world")
|
58
|
-
rendered = render_policy(template_info, cluster_ocm_spec, labels, settings={})
|
59
|
-
assert rendered == {"hello": "world"}
|
60
|
-
|
61
|
-
|
62
|
-
def test_render_policy_cluster_spec(cluster_ocm_spec, labels):
|
63
|
-
template_info = create_template_info("hello: {{ cluster.spec.region }}")
|
64
|
-
rendered = render_policy(template_info, cluster_ocm_spec, labels, settings={})
|
65
|
-
assert rendered == {"hello": cluster_ocm_spec.spec.region}
|
66
|
-
|
67
|
-
|
68
|
-
def test_render_policy_cluster_spec_bad_attribute(cluster_ocm_spec, labels):
|
69
|
-
template_info = create_template_info("hello: {{ cluster.unkown_attribute }}")
|
70
|
-
with pytest.raises(Jinja2TemplateError):
|
71
|
-
render_policy(template_info, cluster_ocm_spec, labels, settings={})
|
72
|
-
|
73
|
-
|
74
|
-
def test_render_policy_cluster_labels(cluster_ocm_spec, labels):
|
75
|
-
template_info = create_template_info("hello: {{ labels.key1 }}")
|
76
|
-
rendered = render_policy(template_info, cluster_ocm_spec, labels, settings={})
|
77
|
-
assert rendered == {"hello": labels["key1"]}
|
78
|
-
|
79
|
-
template_info = create_template_info("hello: {{ labels['key1'] }}")
|
80
|
-
rendered = render_policy(template_info, cluster_ocm_spec, labels, settings={})
|
81
|
-
assert rendered == {"hello": labels["key1"]}
|
82
|
-
|
83
|
-
|
84
|
-
def test_render_policy_cluster_labels_missing(cluster_ocm_spec, labels):
|
85
|
-
template_info = create_template_info("hello: {{ labels.unknown_key }}")
|
86
|
-
with pytest.raises(Jinja2TemplateError):
|
87
|
-
render_policy(template_info, cluster_ocm_spec, labels, settings={})
|
88
|
-
|
89
|
-
template_info = create_template_info("hello: {{ labels['unknown_key'] }}")
|
90
|
-
with pytest.raises(Jinja2TemplateError):
|
91
|
-
render_policy(template_info, cluster_ocm_spec, labels, settings={})
|
92
|
-
|
93
|
-
|
94
|
-
def test_render_policy_cluster_labels_default(cluster_ocm_spec, labels):
|
95
|
-
template_info = create_template_info(
|
96
|
-
"hello: {{ labels.unknown_key | default('OK') }}"
|
97
|
-
)
|
98
|
-
rendered = render_policy(template_info, cluster_ocm_spec, labels, settings={})
|
99
|
-
assert rendered == {"hello": "OK"}
|
100
|
-
|
101
|
-
template_info = create_template_info(
|
102
|
-
"hello: {{ labels['unknown_key'] | default('OK') }}"
|
103
|
-
)
|
104
|
-
rendered = render_policy(template_info, cluster_ocm_spec, labels, settings={})
|
105
|
-
assert rendered == {"hello": "OK"}
|
106
|
-
|
107
|
-
|
108
|
-
def test_render_policy_variables(cluster_ocm_spec, labels, variables):
|
109
|
-
template_info = create_template_info("hello: {{ var1 }}", variables=variables)
|
110
|
-
rendered = render_policy(template_info, cluster_ocm_spec, labels, settings={})
|
111
|
-
assert rendered == {"hello": "value1"}
|
112
|
-
|
113
|
-
|
114
|
-
def test_render_policy_variables_missing(cluster_ocm_spec, labels, variables):
|
115
|
-
template_info = create_template_info("hello: {{ unkown_var }}", variables=variables)
|
116
|
-
with pytest.raises(Jinja2TemplateError):
|
117
|
-
render_policy(template_info, cluster_ocm_spec, labels, settings={})
|
118
|
-
|
119
|
-
|
120
|
-
def test_render_policy_variables_default(cluster_ocm_spec, labels, variables):
|
121
|
-
template_info = create_template_info(
|
122
|
-
"hello: {{ unkown_var | default('OK') }}", variables=variables
|
123
|
-
)
|
124
|
-
rendered = render_policy(template_info, cluster_ocm_spec, labels, settings={})
|
125
|
-
assert rendered == {"hello": "OK"}
|