qontract-reconcile 0.10.1rc1201__py3-none-any.whl → 0.10.2.dev1__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.
Files changed (140) hide show
  1. qontract_reconcile-0.10.2.dev1.dist-info/METADATA +500 -0
  2. {qontract_reconcile-0.10.1rc1201.dist-info → qontract_reconcile-0.10.2.dev1.dist-info}/RECORD +14 -132
  3. {qontract_reconcile-0.10.1rc1201.dist-info → qontract_reconcile-0.10.2.dev1.dist-info}/WHEEL +1 -2
  4. {qontract_reconcile-0.10.1rc1201.dist-info → qontract_reconcile-0.10.2.dev1.dist-info}/entry_points.txt +1 -0
  5. reconcile/aws_account_manager/README.md +5 -0
  6. reconcile/change_owners/README.md +34 -0
  7. reconcile/external_resources/manager.py +12 -1
  8. reconcile/external_resources/model.py +11 -0
  9. reconcile/glitchtip/README.md +150 -0
  10. reconcile/gql_definitions/introspection.json +51176 -0
  11. reconcile/run_integration.py +293 -0
  12. reconcile/utils/binary.py +2 -2
  13. reconcile/utils/mr/README.md +198 -0
  14. reconcile/utils/oc_map.py +2 -2
  15. tools/qontract_cli.py +0 -0
  16. qontract_reconcile-0.10.1rc1201.dist-info/METADATA +0 -64
  17. qontract_reconcile-0.10.1rc1201.dist-info/top_level.txt +0 -3
  18. reconcile/test/__init__.py +0 -0
  19. reconcile/test/conftest.py +0 -157
  20. reconcile/test/fixtures.py +0 -24
  21. reconcile/test/saas_auto_promotions_manager/__init__.py +0 -0
  22. reconcile/test/saas_auto_promotions_manager/conftest.py +0 -170
  23. reconcile/test/saas_auto_promotions_manager/merge_request_manager/__init__.py +0 -0
  24. reconcile/test/saas_auto_promotions_manager/merge_request_manager/merge_request_manager/__init__.py +0 -0
  25. reconcile/test/saas_auto_promotions_manager/merge_request_manager/merge_request_manager/conftest.py +0 -115
  26. reconcile/test/saas_auto_promotions_manager/merge_request_manager/merge_request_manager/data_keys.py +0 -19
  27. reconcile/test/saas_auto_promotions_manager/merge_request_manager/merge_request_manager/test_desired_state.py +0 -66
  28. reconcile/test/saas_auto_promotions_manager/merge_request_manager/merge_request_manager/test_merge_request_manager.py +0 -86
  29. reconcile/test/saas_auto_promotions_manager/merge_request_manager/merge_request_manager/test_mr_parser.py +0 -352
  30. reconcile/test/saas_auto_promotions_manager/merge_request_manager/merge_request_manager/test_reconciler.py +0 -494
  31. reconcile/test/saas_auto_promotions_manager/merge_request_manager/renderer/__init__.py +0 -0
  32. reconcile/test/saas_auto_promotions_manager/merge_request_manager/renderer/conftest.py +0 -25
  33. reconcile/test/saas_auto_promotions_manager/merge_request_manager/renderer/test_content_multiple_namespaces.py +0 -37
  34. reconcile/test/saas_auto_promotions_manager/merge_request_manager/renderer/test_content_single_namespace.py +0 -81
  35. reconcile/test/saas_auto_promotions_manager/merge_request_manager/renderer/test_content_single_target.py +0 -61
  36. reconcile/test/saas_auto_promotions_manager/merge_request_manager/renderer/test_json_path_selector.py +0 -74
  37. reconcile/test/saas_auto_promotions_manager/test_integration_test.py +0 -52
  38. reconcile/test/saas_auto_promotions_manager/utils/__init__.py +0 -0
  39. reconcile/test/test_acs_notifiers.py +0 -393
  40. reconcile/test/test_acs_policies.py +0 -497
  41. reconcile/test/test_acs_rbac.py +0 -865
  42. reconcile/test/test_aggregated_list.py +0 -237
  43. reconcile/test/test_amtool.py +0 -37
  44. reconcile/test/test_aws_ami_cleanup.py +0 -230
  45. reconcile/test/test_aws_ami_share.py +0 -68
  46. reconcile/test/test_aws_cloudwatch_log_retention.py +0 -434
  47. reconcile/test/test_aws_iam_keys.py +0 -70
  48. reconcile/test/test_aws_iam_password_reset.py +0 -35
  49. reconcile/test/test_aws_support_cases_sos.py +0 -23
  50. reconcile/test/test_checkpoint.py +0 -178
  51. reconcile/test/test_cli.py +0 -41
  52. reconcile/test/test_closedbox_endpoint_monitoring.py +0 -207
  53. reconcile/test/test_dashdotdb_dora.py +0 -245
  54. reconcile/test/test_database_access_manager.py +0 -660
  55. reconcile/test/test_deadmanssnitch.py +0 -290
  56. reconcile/test/test_gabi_authorized_users.py +0 -72
  57. reconcile/test/test_gcr_mirror.py +0 -14
  58. reconcile/test/test_github_org.py +0 -156
  59. reconcile/test/test_github_repo_invites.py +0 -119
  60. reconcile/test/test_gitlab_housekeeping.py +0 -333
  61. reconcile/test/test_gitlab_labeler.py +0 -126
  62. reconcile/test/test_gitlab_members.py +0 -219
  63. reconcile/test/test_gitlab_permissions.py +0 -164
  64. reconcile/test/test_instrumented_wrappers.py +0 -18
  65. reconcile/test/test_integrations_manager.py +0 -1252
  66. reconcile/test/test_jenkins_worker_fleets.py +0 -57
  67. reconcile/test/test_jira_permissions_validator.py +0 -519
  68. reconcile/test/test_jump_host.py +0 -114
  69. reconcile/test/test_ldap_users.py +0 -125
  70. reconcile/test/test_make.py +0 -28
  71. reconcile/test/test_ocm_additional_routers.py +0 -133
  72. reconcile/test/test_ocm_clusters.py +0 -798
  73. reconcile/test/test_ocm_clusters_manifest_updates.py +0 -87
  74. reconcile/test/test_ocm_machine_pools.py +0 -1103
  75. reconcile/test/test_ocm_update_recommended_version.py +0 -145
  76. reconcile/test/test_ocm_upgrade_scheduler_org_updater.py +0 -125
  77. reconcile/test/test_openshift_base.py +0 -1269
  78. reconcile/test/test_openshift_cluster_bots.py +0 -240
  79. reconcile/test/test_openshift_namespace_labels.py +0 -344
  80. reconcile/test/test_openshift_namespaces.py +0 -256
  81. reconcile/test/test_openshift_resource.py +0 -443
  82. reconcile/test/test_openshift_resources_base.py +0 -478
  83. reconcile/test/test_openshift_saas_deploy.py +0 -188
  84. reconcile/test/test_openshift_saas_deploy_change_tester.py +0 -308
  85. reconcile/test/test_openshift_saas_deploy_trigger_cleaner.py +0 -65
  86. reconcile/test/test_openshift_serviceaccount_tokens.py +0 -282
  87. reconcile/test/test_openshift_tekton_resources.py +0 -265
  88. reconcile/test/test_openshift_upgrade_watcher.py +0 -223
  89. reconcile/test/test_prometheus_rules_tester.py +0 -151
  90. reconcile/test/test_quay_membership.py +0 -86
  91. reconcile/test/test_quay_mirror.py +0 -172
  92. reconcile/test/test_quay_mirror_org.py +0 -82
  93. reconcile/test/test_quay_repos.py +0 -59
  94. reconcile/test/test_queries.py +0 -53
  95. reconcile/test/test_repo_owners.py +0 -47
  96. reconcile/test/test_requests_sender.py +0 -139
  97. reconcile/test/test_saasherder.py +0 -1611
  98. reconcile/test/test_saasherder_allowed_secret_paths.py +0 -125
  99. reconcile/test/test_secret_reader.py +0 -153
  100. reconcile/test/test_slack_base.py +0 -183
  101. reconcile/test/test_slack_usergroups.py +0 -785
  102. reconcile/test/test_sql_query.py +0 -316
  103. reconcile/test/test_status_board.py +0 -258
  104. reconcile/test/test_terraform_aws_route53.py +0 -29
  105. reconcile/test/test_terraform_cloudflare_dns.py +0 -117
  106. reconcile/test/test_terraform_cloudflare_resources.py +0 -408
  107. reconcile/test/test_terraform_cloudflare_users.py +0 -747
  108. reconcile/test/test_terraform_repo.py +0 -440
  109. reconcile/test/test_terraform_resources.py +0 -519
  110. reconcile/test/test_terraform_tgw_attachments.py +0 -1295
  111. reconcile/test/test_terraform_users.py +0 -152
  112. reconcile/test/test_terraform_vpc_peerings.py +0 -576
  113. reconcile/test/test_terraform_vpc_peerings_build_desired_state.py +0 -1434
  114. reconcile/test/test_three_way_diff_strategy.py +0 -131
  115. reconcile/test/test_utils_jinja2.py +0 -130
  116. reconcile/test/test_vault_replication.py +0 -534
  117. reconcile/test/test_vault_utils.py +0 -47
  118. reconcile/test/test_version_bump.py +0 -18
  119. reconcile/test/test_vpc_peerings_validator.py +0 -194
  120. reconcile/test/test_wrong_region.py +0 -78
  121. release/__init__.py +0 -0
  122. release/test_version.py +0 -50
  123. release/version.py +0 -104
  124. tools/cli_commands/test/__init__.py +0 -0
  125. tools/cli_commands/test/conftest.py +0 -332
  126. tools/cli_commands/test/test_aws_cost_report.py +0 -258
  127. tools/cli_commands/test/test_cost_management_api.py +0 -326
  128. tools/cli_commands/test/test_gpg_encrypt.py +0 -235
  129. tools/cli_commands/test/test_openshift_cost_optimization_report.py +0 -255
  130. tools/cli_commands/test/test_openshift_cost_report.py +0 -295
  131. tools/cli_commands/test/test_util.py +0 -70
  132. tools/test/__init__.py +0 -0
  133. tools/test/conftest.py +0 -77
  134. tools/test/test_app_interface_metrics_exporter.py +0 -48
  135. tools/test/test_erv2.py +0 -80
  136. tools/test/test_get_container_images.py +0 -230
  137. tools/test/test_qontract_cli.py +0 -197
  138. tools/test/test_saas_promotion_state.py +0 -187
  139. tools/test/test_sd_app_sre_alert_report.py +0 -74
  140. tools/test/test_sre_checkpoints.py +0 -79
@@ -1,125 +0,0 @@
1
- import pytest
2
-
3
- from reconcile import ldap_users
4
-
5
-
6
- @pytest.fixture
7
- def patched_queries_get_users(mocker):
8
- queries_get_users_mock = mocker.patch.object(
9
- ldap_users.queries, "get_users", autospec=True
10
- )
11
- queries_get_users_mock.return_value = [
12
- {
13
- "org_username": "username1",
14
- "requests": [{"path": "test_path1"}],
15
- "queries": [{"path": "another_test_path1"}],
16
- "gabi_instances": [{"path": "yet_another_test_path1"}],
17
- "schedules": [{"path": "and_yet_another_test_path1"}],
18
- "path": "blah",
19
- },
20
- {
21
- "org_username": "username2",
22
- "requests": [{"path": "test_path2"}],
23
- "queries": [{"path": "another_test_path2"}],
24
- "gabi_instances": [{"path": "yet_another_test_path2"}],
25
- "schedules": [{"path": "and_yet_another_test_path2"}],
26
- "path": "blah",
27
- },
28
- {
29
- "org_username": "username3",
30
- "requests": [{"path": "test_path3"}],
31
- "queries": [{"path": "another_test_path3"}],
32
- "gabi_instances": [{"path": "yet_another_test_path3"}],
33
- "schedules": [{"path": "and_yet_another_test_path3"}],
34
- "path": "blah",
35
- },
36
- ]
37
-
38
- return queries_get_users_mock
39
-
40
-
41
- @pytest.fixture
42
- def patched_queries_get_app_interface_settings(mocker):
43
- queries_get_app_interface_settings = mocker.patch.object(
44
- ldap_users, "get_ldap_settings", autospec=True
45
- )
46
- queries_get_app_interface_settings.return_value = {}
47
- return queries_get_app_interface_settings
48
-
49
-
50
- @pytest.fixture
51
- def mocked_ldap_client(mocker):
52
- mock_ldap_client = mocker.patch.object(
53
- ldap_users.LdapClient, "from_settings", autospec=True
54
- )
55
- dummy_ldap_client = mocker.Mock(spec=ldap_users.LdapClient)
56
- dummy_ldap_client.__enter__ = dummy_ldap_client
57
- dummy_ldap_client.__exit__ = mocker.Mock(return_value=None)
58
- dummy_ldap_client.return_value.get_users.return_value = {"username1", "username2"}
59
- mock_ldap_client.return_value = dummy_ldap_client
60
- return mock_ldap_client
61
-
62
-
63
- @pytest.fixture
64
- def patched_mr_client_gateway(mocker):
65
- mock_mr_client_gateway = mocker.patch.object(
66
- ldap_users.mr_client_gateway, "init", autospec=True
67
- )
68
- return mock_mr_client_gateway
69
-
70
-
71
- @pytest.fixture
72
- def patched_create_delete_user(mocker):
73
- mock_create_delete_user = mocker.patch(
74
- "reconcile.ldap_users.CreateDeleteUserAppInterface", autospec=True
75
- )
76
- return mock_create_delete_user
77
-
78
-
79
- @pytest.fixture
80
- def patched_create_delete_user_infra(mocker):
81
- mock_create_delete_user_infra = mocker.patch(
82
- "reconcile.ldap_users.CreateDeleteUserInfra", autospec=True
83
- )
84
- return mock_create_delete_user_infra
85
-
86
-
87
- def test_ldap_users_no_dry_run(
88
- mocker,
89
- patched_queries_get_users,
90
- patched_queries_get_app_interface_settings,
91
- mocked_ldap_client,
92
- patched_mr_client_gateway,
93
- patched_create_delete_user,
94
- patched_create_delete_user_infra,
95
- ):
96
- ldap_users.run(False, None, None)
97
-
98
- assert patched_mr_client_gateway.call_count == 2
99
- patched_create_delete_user.assert_called_once_with(
100
- "username3",
101
- [
102
- {"path": "datablah", "type": 0},
103
- {"path": "datatest_path3", "type": 1},
104
- {"path": "dataanother_test_path3", "type": 2},
105
- {"path": "datayet_another_test_path3", "type": 3},
106
- {"path": "dataand_yet_another_test_path3", "type": 5},
107
- ],
108
- )
109
- assert patched_create_delete_user.method_calls[0][0] == "().submit"
110
- assert patched_create_delete_user_infra.method_calls[0][0] == "().submit"
111
-
112
-
113
- def test_ldap_users_dry_run(
114
- patched_queries_get_users,
115
- patched_queries_get_app_interface_settings,
116
- mocked_ldap_client,
117
- patched_mr_client_gateway,
118
- patched_create_delete_user,
119
- patched_create_delete_user_infra,
120
- ):
121
- ldap_users.run(True, None, None)
122
-
123
- patched_mr_client_gateway.assert_not_called()
124
- patched_create_delete_user.assert_not_called()
125
- patched_create_delete_user_infra.assert_not_called()
@@ -1,28 +0,0 @@
1
- import os
2
-
3
- import pytest
4
-
5
- from reconcile.utils.git import (
6
- has_uncommited_changes,
7
- show_uncommited_changes,
8
- )
9
- from reconcile.utils.make import generate
10
-
11
-
12
- @pytest.mark.skipif(
13
- os.getuid() != 0,
14
- reason="This test is only for CI environments",
15
- )
16
- def test_make_generate():
17
- assert not has_uncommited_changes(), (
18
- "No uncommited changes must " "exists\n" + show_uncommited_changes()
19
- )
20
-
21
- result = generate()
22
- # Just to make sure the command does not fail
23
- assert not result.returncode
24
-
25
- assert not has_uncommited_changes(), (
26
- "No uncommited changes must "
27
- 'exists after "make generate"\n' + show_uncommited_changes()
28
- )
@@ -1,133 +0,0 @@
1
- from unittest import TestCase
2
- from unittest.mock import (
3
- call,
4
- patch,
5
- )
6
-
7
- import reconcile.ocm_additional_routers as integ
8
- from reconcile import queries
9
- from reconcile.utils.ocm import OCMMap
10
-
11
- from .fixtures import Fixtures
12
-
13
- fxt = Fixtures("ocm_additional_routers")
14
-
15
-
16
- class TestOCMAdditionalRouters(TestCase):
17
- # integration test
18
- @patch.object(queries, "get_clusters")
19
- def test_integ_fail(self, get_clusters):
20
- fixture = fxt.get_anymarkup("state.yml")
21
-
22
- clusters = fixture["gql_response"]
23
- for c in clusters:
24
- c.pop("additionalRouters")
25
- get_clusters.return_value = clusters
26
-
27
- with self.assertRaises(SystemExit):
28
- integ.run(False)
29
-
30
- @patch.object(queries, "get_app_interface_settings")
31
- @patch.object(queries, "get_clusters")
32
- @patch.object(OCMMap, "init_ocm_client_from_cluster")
33
- @patch.object(OCMMap, "get")
34
- def test_integ(
35
- self,
36
- get,
37
- init_ocm_client_from_cluster,
38
- get_clusters,
39
- get_app_interface_settings,
40
- ):
41
- fixture = fxt.get_anymarkup("state.yml")
42
-
43
- get_clusters.return_value = fixture["gql_response"]
44
- ocm = get.return_value
45
- ocm.get_additional_routers.side_effect = lambda x: fixture["ocm_api"][x]
46
-
47
- integ.run(False)
48
-
49
- ocm_act = fixture["ocm_act"]
50
-
51
- router_create = ocm_act["create"]
52
- expected = []
53
- for c in router_create:
54
- expected.append(call(c, router_create[c]))
55
- calls = ocm.create_additional_router.call_args_list
56
- self.assertEqual(calls, expected)
57
-
58
- router_delete = ocm_act["delete"]
59
- expected = []
60
- for c in router_delete:
61
- expected.append(call(c, router_delete[c]))
62
- calls = ocm.delete_additional_router.call_args_list
63
- self.assertEqual(calls, expected)
64
-
65
- # unit test
66
- @patch.object(queries, "get_app_interface_settings")
67
- @patch.object(OCMMap, "init_ocm_client_from_cluster")
68
- @patch.object(OCMMap, "get")
69
- def test_current_state(
70
- self, get, init_ocm_client_from_cluster, get_app_interface_settings
71
- ):
72
- fixture = fxt.get_anymarkup("state.yml")
73
-
74
- ocm_api = fixture["ocm_api"]
75
- clusters = []
76
- for c in ocm_api:
77
- clusters.append({"name": c})
78
- ocm = get.return_value
79
- ocm.get_additional_routers.side_effect = lambda x: fixture["ocm_api"][x]
80
-
81
- _, current_state = integ.fetch_current_state(clusters)
82
- expected = fixture["current_state"]
83
- self.assertEqual(current_state, expected)
84
-
85
- def test_desired_state(self):
86
- fixture = fxt.get_anymarkup("state.yml")
87
-
88
- gql_response = fixture["gql_response"]
89
-
90
- desired_state = integ.fetch_desired_state(gql_response)
91
- expected = fixture["desired_state"]
92
- self.assertEqual(desired_state, expected)
93
-
94
- def test_diffs(self):
95
- fixture = fxt.get_anymarkup("state.yml")
96
-
97
- current_state = fixture["current_state"]
98
- desired_state = fixture["desired_state"]
99
-
100
- diffs = integ.calculate_diff(current_state, desired_state)
101
- expected = fixture["diffs"]
102
- self.assertEqual(diffs, expected)
103
-
104
- @patch.object(OCMMap, "init_ocm_client_from_cluster")
105
- @patch.object(OCMMap, "get")
106
- def test_act(self, get, init_ocm_client_from_cluster):
107
- fixture = fxt.get_anymarkup("state.yml")
108
-
109
- ocm_api = fixture["ocm_api"]
110
- clusters = []
111
- for c in ocm_api:
112
- clusters.append({"name": c})
113
- ocm = get.return_value
114
-
115
- ocm_map = OCMMap(fixture["gql_response"])
116
- diffs = fixture["diffs"]
117
- integ.act(False, diffs, ocm_map)
118
-
119
- ocm_act = fixture["ocm_act"]
120
-
121
- router_create = ocm_act["create"]
122
- expected = []
123
- for c in router_create:
124
- expected.append(call(c, router_create[c]))
125
- calls = ocm.create_additional_router.call_args_list
126
- self.assertEqual(calls, expected)
127
-
128
- router_delete = ocm_act["delete"]
129
- expected = []
130
- for c in router_delete:
131
- expected.append(call(c, router_delete[c]))
132
- calls = ocm.delete_additional_router.call_args_list
133
- self.assertEqual(calls, expected)