qontract-reconcile 0.10.1rc1140__py3-none-any.whl → 0.10.1rc1141__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.1rc1140.dist-info → qontract_reconcile-0.10.1rc1141.dist-info}/METADATA +1 -1
- {qontract_reconcile-0.10.1rc1140.dist-info → qontract_reconcile-0.10.1rc1141.dist-info}/RECORD +14 -14
- reconcile/change_owners/change_types.py +2 -2
- reconcile/change_owners/self_service_roles.py +8 -12
- reconcile/endpoints_discovery/integration.py +1 -1
- reconcile/jira_permissions_validator.py +1 -2
- reconcile/terraform_cloudflare_resources.py +4 -6
- reconcile/test/conftest.py +8 -12
- reconcile/typed_queries/saas_files.py +2 -2
- tools/qontract_cli.py +5 -5
- tools/test/conftest.py +4 -6
- {qontract_reconcile-0.10.1rc1140.dist-info → qontract_reconcile-0.10.1rc1141.dist-info}/WHEEL +0 -0
- {qontract_reconcile-0.10.1rc1140.dist-info → qontract_reconcile-0.10.1rc1141.dist-info}/entry_points.txt +0 -0
- {qontract_reconcile-0.10.1rc1140.dist-info → qontract_reconcile-0.10.1rc1141.dist-info}/top_level.txt +0 -0
{qontract_reconcile-0.10.1rc1140.dist-info → qontract_reconcile-0.10.1rc1141.dist-info}/METADATA
RENAMED
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.1
|
2
2
|
Name: qontract-reconcile
|
3
|
-
Version: 0.10.
|
3
|
+
Version: 0.10.1rc1141
|
4
4
|
Summary: Collection of tools to reconcile services with their desired state as defined in the app-interface DB.
|
5
5
|
Home-page: https://github.com/app-sre/qontract-reconcile
|
6
6
|
Author: Red Hat App-SRE Team
|
{qontract_reconcile-0.10.1rc1140.dist-info → qontract_reconcile-0.10.1rc1141.dist-info}/RECORD
RENAMED
@@ -46,7 +46,7 @@ reconcile/jenkins_roles.py,sha256=pNNYcnmyDCTVytG2mi3BFhq9A7_3l301oFRQtY_q6S8,44
|
|
46
46
|
reconcile/jenkins_webhooks.py,sha256=K5h0OlCghoHlpot40IRq4BuezfKB1rj4Xk0dCUvqp3o,1952
|
47
47
|
reconcile/jenkins_webhooks_cleaner.py,sha256=JsN_NVPfZJwv1JtSzZXDIHUqGiefL-DRffFnDGau9aY,1539
|
48
48
|
reconcile/jenkins_worker_fleets.py,sha256=PMNGOX0krubFjInPiFT0za0KCiWBLEcVDuXdKRd1BrE,5378
|
49
|
-
reconcile/jira_permissions_validator.py,sha256=
|
49
|
+
reconcile/jira_permissions_validator.py,sha256=t8FBjBJniRMODQNXfoHKst6qLDOzlua6hqy7rm7tmzs,13222
|
50
50
|
reconcile/jira_watcher.py,sha256=L_UL2MKm2SoIGNsCLThm28pnqCkoFc154JWsD6bURug,3593
|
51
51
|
reconcile/ldap_users.py,sha256=uEWQ0V41tN9KCZi4ZKPamjrJ6djSpdpvDBo7yJ0e7ZI,3008
|
52
52
|
reconcile/mr_client_gateway.py,sha256=WhjMd-sIXDFCV8-rt8CEjurJ5OYB1pOD0K3o0tZRXQg,1885
|
@@ -110,7 +110,7 @@ reconcile/status.py,sha256=cY4IJFXemhxptRJqR4qaaOWqei9e4jgLXuVSGajMsjg,544
|
|
110
110
|
reconcile/status_board.py,sha256=YeoE7kLf1YKpOdN32u3vqhuSI46ep5N_qcVWC1CBCf8,8635
|
111
111
|
reconcile/terraform_aws_route53.py,sha256=dQzzT46YhwRA902_H6pi-f7WlX4EaH187wXSdmJAUkQ,9958
|
112
112
|
reconcile/terraform_cloudflare_dns.py,sha256=-aLEe2QnH5cJPu7HWqs-R9NmQ1NlFbcVUm0v7alVL3I,13431
|
113
|
-
reconcile/terraform_cloudflare_resources.py,sha256=
|
113
|
+
reconcile/terraform_cloudflare_resources.py,sha256=pq8Ieo5NmB-dYQ9X2F0s6iEoINMzhiqGw2yQK4ovok4,14980
|
114
114
|
reconcile/terraform_cloudflare_users.py,sha256=iyTG5sj20Jg4J4qWJ144KVptfIHGOSfH8wQKxu0imq0,13942
|
115
115
|
reconcile/terraform_repo.py,sha256=TKqlodhQGoAtQ6nDm04TNlpx4wpgJ_n4atoUK5Rfd7o,16444
|
116
116
|
reconcile/terraform_resources.py,sha256=-sgMMHDtNvnQyNR05-MKebI_pSiyxSWAg8LmeA2_Ntk,19326
|
@@ -163,12 +163,12 @@ reconcile/change_owners/approver.py,sha256=Z3_11vnK2WNOxjEEXVDh0224-_-qbt9d6mBeV
|
|
163
163
|
reconcile/change_owners/bundle.py,sha256=h30fU-JmLH5a-rCAovpzTeTkkkgZztsZ5A2raee0YuU,5355
|
164
164
|
reconcile/change_owners/change_log_tracking.py,sha256=JzUmW6m_qg43r0a6WI__YX8-j_ejt1peIy6CkZJfZTg,9049
|
165
165
|
reconcile/change_owners/change_owners.py,sha256=0HRJhDm0oW3uYJFgzynqA1gA0lbhalhSkmWOiQmr-NM,17062
|
166
|
-
reconcile/change_owners/change_types.py,sha256=
|
166
|
+
reconcile/change_owners/change_types.py,sha256=YFqykx1I71wcUHEK_eDqPjEeQpPVV4bjqT9W3LgqNFw,32073
|
167
167
|
reconcile/change_owners/changes.py,sha256=YblT-JPFagctTphzd38SjVmj3k1YsgMzN48zGpnLYKM,18222
|
168
168
|
reconcile/change_owners/decision.py,sha256=iUJcIc_N_RqXIAY8D10RZqPMC2OinsHTMcqI6f6uylE,7606
|
169
169
|
reconcile/change_owners/diff.py,sha256=0vyu29xCL24ZhUa7hqBni0NaxoCYRXLwvA-h8V23YQ4,9009
|
170
170
|
reconcile/change_owners/implicit_ownership.py,sha256=6BehZvx4IjrphmOt_LLLk9_02Fl5BY5jd00Wuz_PBZk,4234
|
171
|
-
reconcile/change_owners/self_service_roles.py,sha256=
|
171
|
+
reconcile/change_owners/self_service_roles.py,sha256=oYAdBIYPDAY6u07hne9Y2lhTiRGZMXzBhJoYG0y2Rgo,9568
|
172
172
|
reconcile/change_owners/tester.py,sha256=yY15ABnWx_3g9QeeR38-cQAaql0aq7JIxBv_7KtC91U,8955
|
173
173
|
reconcile/cluster_auth_rhidp/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
174
174
|
reconcile/cluster_auth_rhidp/integration.py,sha256=KIAiP_XFjsOA2OE8oFJa8lD0T1a7EwOmhct2xbj7tr8,9560
|
@@ -188,7 +188,7 @@ reconcile/dynatrace_token_provider/model.py,sha256=gkpqo5rRRueBXnIMjp4EEHqBUBuU6
|
|
188
188
|
reconcile/dynatrace_token_provider/ocm.py,sha256=MwYCZIxW4f-1jzFTxxN__sity6S8O7bbKUdyTFEVO7U,4325
|
189
189
|
reconcile/dynatrace_token_provider/validate.py,sha256=40_9QmHoB3-KBc0k_0D4QO00PpNNPS-gU9Z6cIcWga8,1920
|
190
190
|
reconcile/endpoints_discovery/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
191
|
-
reconcile/endpoints_discovery/integration.py,sha256=
|
191
|
+
reconcile/endpoints_discovery/integration.py,sha256=znfnlm8bZesfcNbQnaR2aaVM-DTBiw1I7FNmZcfyfoQ,12702
|
192
192
|
reconcile/endpoints_discovery/merge_request.py,sha256=_yLb4tnvoZMCko8rta2C_CvOInJa9pa3HzSmHNtjgGU,2978
|
193
193
|
reconcile/endpoints_discovery/merge_request_manager.py,sha256=wUMsumxv8RnWaRattax4HfoRlhtVzmgro3GiJJ1C4Vc,6392
|
194
194
|
reconcile/external_resources/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
@@ -495,7 +495,7 @@ reconcile/terraform_vpc_resources/integration.py,sha256=yEMQFNMHDkqIQOIw1XeUY02x
|
|
495
495
|
reconcile/terraform_vpc_resources/merge_request.py,sha256=loRymUigCIvaaT0s_NzktZchh-DGRQnCICdBSCAcFPY,1503
|
496
496
|
reconcile/terraform_vpc_resources/merge_request_manager.py,sha256=Vj2nuQbQyrL4q_il1My-bLxYNh_r3YXqX45P8fwtP6Q,3259
|
497
497
|
reconcile/test/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
498
|
-
reconcile/test/conftest.py,sha256=
|
498
|
+
reconcile/test/conftest.py,sha256=_uZRPocbt4-BJ8Lsb9BmjeIPjbdu4SH3gxvXpGEdyFc,4284
|
499
499
|
reconcile/test/fixtures.py,sha256=HjcdF4RWMwdXCsmGljFnPjfzqsHG8_3Zas_W7Y5BSDE,586
|
500
500
|
reconcile/test/test_acs_notifiers.py,sha256=xf3WL6q6V7KQdTVSx6YI-pa4yzOX3mkvIJomgPUc3Mw,12746
|
501
501
|
reconcile/test/test_acs_policies.py,sha256=8pwnXpAO-0OI-6oubjf_oPPlpZjVldeZfJJ9uhsNMWM,17579
|
@@ -632,7 +632,7 @@ reconcile/typed_queries/pagerduty_instances.py,sha256=zxCNxMak4iikryePaRi71lTADV
|
|
632
632
|
reconcile/typed_queries/quay.py,sha256=3IMy9jjHF2f9t47EXZOQVA3p0nFkWFhaFhxhvib-71o,644
|
633
633
|
reconcile/typed_queries/repos.py,sha256=8A93dKDt6igT4ClqMjt7YUTsoP4qh1Wnm0W3xsMgj48,824
|
634
634
|
reconcile/typed_queries/reserved_networks.py,sha256=-f_CIrTn8u-dotj5VKFlAcD7TX1CSSuR7Ko2zC8OKEM,358
|
635
|
-
reconcile/typed_queries/saas_files.py,sha256=
|
635
|
+
reconcile/typed_queries/saas_files.py,sha256=cIAd8LVvjpiM_BeXPzY7Hg_yKriYx67I6revW72vnWE,14008
|
636
636
|
reconcile/typed_queries/slack.py,sha256=r30lspctHloyygPn8_DVybxPwUWwiBpvBRRXiTVcQYk,251
|
637
637
|
reconcile/typed_queries/slo_documents.py,sha256=l7H6Uq85EcvvWUgmi5c1YHeJGk60KN-TBmi8d0w-XyU,375
|
638
638
|
reconcile/typed_queries/smtp.py,sha256=aSLglYa5bHKmlGwKkxq2RZqyMWuAf0a4S_mOuhDa084,542
|
@@ -838,7 +838,7 @@ tools/app_interface_metrics_exporter.py,sha256=zkwkxdAUAxjdc-pzx2_oJXG25fo0Fnyd5
|
|
838
838
|
tools/app_interface_reporter.py,sha256=oZPib4HPq0aZ2Zui1QGJGk6qQdfpeihujGDBnSdKyGE,17627
|
839
839
|
tools/glitchtip_access_reporter.py,sha256=oPBnk_YoDuljU3v0FaChzOwwnk4vap1xEE67QEjzdqs,2948
|
840
840
|
tools/glitchtip_access_revalidation.py,sha256=8kbBJk04mkq28kWoRDDkfCGIF3GRg3pJrFAh1sW0dbk,2821
|
841
|
-
tools/qontract_cli.py,sha256=
|
841
|
+
tools/qontract_cli.py,sha256=OPfTSTyzhWrE1-s0Dl2L57aJ3soYpvAKKQmRlQnc6l0,139114
|
842
842
|
tools/sd_app_sre_alert_report.py,sha256=e9vAdyenUz2f5c8-z-5WY0wv-SJ9aePKDH2r4IwB6pc,5063
|
843
843
|
tools/template_validation.py,sha256=qpKYaTgk0GOPGa2Ct5_5sKdwIHtCAKIBGzsMPuJU5fw,3371
|
844
844
|
tools/cli_commands/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
@@ -864,15 +864,15 @@ tools/saas_promotion_state/saas_promotion_state.py,sha256=5LJ9rygZ304vxfsIuRfuxu
|
|
864
864
|
tools/sre_checkpoints/__init__.py,sha256=CDaDaywJnmRCLyl_NCcvxi-Zc0hTi_3OdwKiFOyS39I,145
|
865
865
|
tools/sre_checkpoints/util.py,sha256=zEDbGr18ZeHNQwW8pUsr2JRjuXIPz--WAGJxZo9sv_Y,894
|
866
866
|
tools/test/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
867
|
-
tools/test/conftest.py,sha256=
|
867
|
+
tools/test/conftest.py,sha256=CsDbu4otrxb7X7kXKKGyV3ZEzu3pCkgjCoCGiHNx6zc,2401
|
868
868
|
tools/test/test_app_interface_metrics_exporter.py,sha256=SX7qL3D1SIRKFo95FoQztvftCWEEf-g1mfXOtgCog-g,1271
|
869
869
|
tools/test/test_erv2.py,sha256=EAS7QuJkHisRVO9bMGxm662L5B6i66wF_mT9PAjVzrU,3128
|
870
870
|
tools/test/test_qontract_cli.py,sha256=_D61RFGAN5x44CY1tYbouhlGXXABwYfxKSWSQx3Jrss,4941
|
871
871
|
tools/test/test_saas_promotion_state.py,sha256=dy4kkSSAQ7bC0Xp2CociETGN-2aABEfL6FU5D9Jl00Y,6056
|
872
872
|
tools/test/test_sd_app_sre_alert_report.py,sha256=v363r9zM7__0kR5K6mvJoGFcM9BvE33fWAayrqkpojA,2116
|
873
873
|
tools/test/test_sre_checkpoints.py,sha256=SKqPPTl9ua0RFdSSofnoQX-JZE6dFLO3LRhfQzqtfh8,2607
|
874
|
-
qontract_reconcile-0.10.
|
875
|
-
qontract_reconcile-0.10.
|
876
|
-
qontract_reconcile-0.10.
|
877
|
-
qontract_reconcile-0.10.
|
878
|
-
qontract_reconcile-0.10.
|
874
|
+
qontract_reconcile-0.10.1rc1141.dist-info/METADATA,sha256=foK8V6GtbLPAMwuLj8gmEDIiTLOufXXln60iybfu94s,2213
|
875
|
+
qontract_reconcile-0.10.1rc1141.dist-info/WHEEL,sha256=eOLhNAGa2EW3wWl_TU484h7q1UNgy0JXjjoqKoxAAQc,92
|
876
|
+
qontract_reconcile-0.10.1rc1141.dist-info/entry_points.txt,sha256=GKQqCl2j2X1BJQ69een6rHcR26PmnxnONLNOQB-nRjY,491
|
877
|
+
qontract_reconcile-0.10.1rc1141.dist-info/top_level.txt,sha256=l5ISPoXzt0SdR4jVdkfa7RPSKNc8zAHYWAnR-Dw8Ey8,24
|
878
|
+
qontract_reconcile-0.10.1rc1141.dist-info/RECORD,,
|
@@ -650,7 +650,7 @@ class ChangeTypeProcessor:
|
|
650
650
|
file_schema,
|
651
651
|
) in self._expressions_by_file_type_schema:
|
652
652
|
for change_type_path_expression in self._expressions_by_file_type_schema[
|
653
|
-
|
653
|
+
file_type, file_schema
|
654
654
|
]:
|
655
655
|
paths.extend([
|
656
656
|
p.full_path
|
@@ -668,7 +668,7 @@ class ChangeTypeProcessor:
|
|
668
668
|
self._change_detectors.append(detector)
|
669
669
|
change_schema = detector.change_schema or self.context_schema
|
670
670
|
expressions = self._expressions_by_file_type_schema[
|
671
|
-
|
671
|
+
self.context_type, change_schema
|
672
672
|
]
|
673
673
|
for path_expression in detector.json_path_expressions:
|
674
674
|
if path_expression not in expressions:
|
@@ -117,12 +117,12 @@ def change_type_contexts_for_self_service_roles(
|
|
117
117
|
if ss.datafiles:
|
118
118
|
for df in ss.datafiles:
|
119
119
|
role_lookup[
|
120
|
-
|
120
|
+
BundleFileType.DATAFILE, df.path, ss.change_type.name
|
121
121
|
].append(r)
|
122
122
|
if ss.resources:
|
123
123
|
for res in ss.resources:
|
124
124
|
role_lookup[
|
125
|
-
|
125
|
+
BundleFileType.RESOURCEFILE, res, ss.change_type.name
|
126
126
|
].append(r)
|
127
127
|
if (
|
128
128
|
ss.change_type.context_schema
|
@@ -132,7 +132,7 @@ def change_type_contexts_for_self_service_roles(
|
|
132
132
|
# change types mentioned without datafiels or resources apply
|
133
133
|
# to all datafiles and resources of the given schema
|
134
134
|
schema_role_lookup[
|
135
|
-
|
135
|
+
ss.change_type.context_schema, ss.change_type.name
|
136
136
|
].append(r)
|
137
137
|
|
138
138
|
# resolve approvers for self-service roles, either directly or via member sources
|
@@ -161,21 +161,17 @@ def change_type_contexts_for_self_service_roles(
|
|
161
161
|
owning_roles.update({
|
162
162
|
role.name: role
|
163
163
|
for role in role_lookup[
|
164
|
-
|
165
|
-
|
166
|
-
|
167
|
-
ct_lineage,
|
168
|
-
)
|
164
|
+
ownership.owned_file_ref.file_type,
|
165
|
+
ownership.owned_file_ref.path,
|
166
|
+
ct_lineage,
|
169
167
|
]
|
170
168
|
})
|
171
169
|
owning_roles.update({
|
172
170
|
role.name: role
|
173
171
|
for role in (
|
174
172
|
schema_role_lookup[
|
175
|
-
|
176
|
-
|
177
|
-
ownership.change_type.name,
|
178
|
-
)
|
173
|
+
ownership.owned_file_ref.schema,
|
174
|
+
ownership.change_type.name,
|
179
175
|
]
|
180
176
|
if ownership.owned_file_ref.schema
|
181
177
|
else []
|
@@ -143,7 +143,7 @@ class EndpointsDiscoveryIntegration(
|
|
143
143
|
tls = bool(item["spec"].get("tls"))
|
144
144
|
host = item["spec"]["host"]
|
145
145
|
# group all routes with the same hostname/tls
|
146
|
-
routes[
|
146
|
+
routes[host, tls].append(item["metadata"]["name"])
|
147
147
|
|
148
148
|
# merge all routes with the same hostname into one and combine the names
|
149
149
|
return [
|
@@ -243,8 +243,7 @@ def validate_boards(
|
|
243
243
|
if exit_on_permission_errors:
|
244
244
|
error = True
|
245
245
|
case (
|
246
|
-
ValidationError.PERMISSION_ERROR
|
247
|
-
| ValidationError.CANT_CREATE_ISSUE
|
246
|
+
ValidationError.PERMISSION_ERROR | ValidationError.CANT_CREATE_ISSUE
|
248
247
|
):
|
249
248
|
# we can't create jira tickets, and we don't have all needed the permissions
|
250
249
|
error = True
|
@@ -428,12 +428,10 @@ def run(
|
|
428
428
|
)
|
429
429
|
|
430
430
|
|
431
|
-
def _get_cloudflare_desired_state() ->
|
432
|
-
|
433
|
-
|
434
|
-
|
435
|
-
]
|
436
|
-
):
|
431
|
+
def _get_cloudflare_desired_state() -> tuple[
|
432
|
+
TerraformCloudflareAccountsQueryData,
|
433
|
+
TerraformCloudflareResourcesQueryData,
|
434
|
+
]:
|
437
435
|
query_accounts = terraform_cloudflare_accounts.query(query_func=gql.get_api().query)
|
438
436
|
query_resources = terraform_cloudflare_resources.query(
|
439
437
|
query_func=gql.get_api().query
|
reconcile/test/conftest.py
CHANGED
@@ -91,12 +91,10 @@ def vault_secret():
|
|
91
91
|
|
92
92
|
|
93
93
|
@pytest.fixture
|
94
|
-
def data_factory() ->
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
]
|
99
|
-
):
|
94
|
+
def data_factory() -> Callable[
|
95
|
+
[type[BaseModel], MutableMapping[str, Any] | None],
|
96
|
+
MutableMapping[str, Any],
|
97
|
+
]:
|
100
98
|
"""Set default values to None."""
|
101
99
|
|
102
100
|
def _data_factory(
|
@@ -112,12 +110,10 @@ class GQLClassFactoryError(Exception):
|
|
112
110
|
|
113
111
|
|
114
112
|
@pytest.fixture
|
115
|
-
def gql_class_factory() ->
|
116
|
-
|
117
|
-
|
118
|
-
|
119
|
-
]
|
120
|
-
):
|
113
|
+
def gql_class_factory() -> Callable[
|
114
|
+
[type[BaseModel], MutableMapping[str, Any] | None],
|
115
|
+
BaseModel,
|
116
|
+
]:
|
121
117
|
"""Create a GQL class from a fixture and set default values to None."""
|
122
118
|
|
123
119
|
def _gql_class_factory(
|
@@ -249,8 +249,8 @@ class SaasFileList:
|
|
249
249
|
for match in self._matching_namespaces(include):
|
250
250
|
cluster_name = match.value["cluster"]["name"]
|
251
251
|
ns_name = match.value["name"]
|
252
|
-
filtered_namespaces[
|
253
|
-
|
252
|
+
filtered_namespaces[cluster_name, ns_name] = self.cluster_namespaces[
|
253
|
+
cluster_name, ns_name
|
254
254
|
]
|
255
255
|
|
256
256
|
for exclude in namespace_selector.json_path_selectors.exclude or []:
|
tools/qontract_cli.py
CHANGED
@@ -1930,25 +1930,25 @@ def roles(ctx, org_username):
|
|
1930
1930
|
if "team" in p:
|
1931
1931
|
r_name += "/" + p["team"]
|
1932
1932
|
|
1933
|
-
roles[
|
1933
|
+
roles["permission", p["name"], r_name].add(role_name)
|
1934
1934
|
|
1935
1935
|
for aws in role.get("aws_groups") or []:
|
1936
1936
|
for policy in aws["policies"]:
|
1937
|
-
roles[
|
1937
|
+
roles["aws", policy, aws["account"]["name"]].add(aws["path"])
|
1938
1938
|
|
1939
1939
|
for a in role.get("access") or []:
|
1940
1940
|
if a["cluster"]:
|
1941
1941
|
cluster_name = a["cluster"]["name"]
|
1942
|
-
roles[
|
1942
|
+
roles["cluster", a["clusterRole"], cluster_name].add(role_name)
|
1943
1943
|
elif a["namespace"]:
|
1944
1944
|
ns_name = a["namespace"]["name"]
|
1945
|
-
roles[
|
1945
|
+
roles["namespace", a["role"], ns_name].add(role_name)
|
1946
1946
|
|
1947
1947
|
for s in role.get("self_service") or []:
|
1948
1948
|
for d in s.get("datafiles") or []:
|
1949
1949
|
name = d.get("name")
|
1950
1950
|
if name:
|
1951
|
-
roles[
|
1951
|
+
roles["saas_file", "owner", name].add(role_name)
|
1952
1952
|
|
1953
1953
|
columns = ["type", "name", "resource", "ref"]
|
1954
1954
|
rows = [
|
tools/test/conftest.py
CHANGED
@@ -58,12 +58,10 @@ def fx() -> Callable:
|
|
58
58
|
|
59
59
|
|
60
60
|
@pytest.fixture
|
61
|
-
def gql_class_factory() ->
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
]
|
66
|
-
):
|
61
|
+
def gql_class_factory() -> Callable[
|
62
|
+
[type[BaseModel], MutableMapping[str, Any] | None],
|
63
|
+
BaseModel,
|
64
|
+
]:
|
67
65
|
"""Create a GQL class from a fixture and set default values to None."""
|
68
66
|
|
69
67
|
def _gql_class_factory(
|
{qontract_reconcile-0.10.1rc1140.dist-info → qontract_reconcile-0.10.1rc1141.dist-info}/WHEEL
RENAMED
File without changes
|
File without changes
|
File without changes
|