qontract-reconcile 0.10.2.dev504__py3-none-any.whl → 0.10.2.dev505__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.dev504.dist-info → qontract_reconcile-0.10.2.dev505.dist-info}/METADATA +1 -4
- {qontract_reconcile-0.10.2.dev504.dist-info → qontract_reconcile-0.10.2.dev505.dist-info}/RECORD +10 -28
- reconcile/cli.py +0 -108
- reconcile/gql_definitions/integrations/integrations.py +1 -31
- reconcile/integrations_manager.py +0 -2
- reconcile/utils/external_resource_spec.py +1 -2
- reconcile/utils/runtime/sharding.py +0 -80
- tools/cli_commands/systems_and_tools.py +0 -23
- reconcile/gql_definitions/terraform_cloudflare_dns/__init__.py +0 -0
- reconcile/gql_definitions/terraform_cloudflare_dns/app_interface_cloudflare_dns_settings.py +0 -62
- reconcile/gql_definitions/terraform_cloudflare_dns/terraform_cloudflare_zones.py +0 -193
- reconcile/gql_definitions/terraform_cloudflare_resources/__init__.py +0 -0
- reconcile/gql_definitions/terraform_cloudflare_resources/terraform_cloudflare_accounts.py +0 -127
- reconcile/gql_definitions/terraform_cloudflare_resources/terraform_cloudflare_resources.py +0 -359
- reconcile/gql_definitions/terraform_cloudflare_users/__init__.py +0 -0
- reconcile/gql_definitions/terraform_cloudflare_users/app_interface_setting_cloudflare_and_vault.py +0 -62
- reconcile/gql_definitions/terraform_cloudflare_users/terraform_cloudflare_roles.py +0 -139
- reconcile/terraform_cloudflare_dns.py +0 -379
- reconcile/terraform_cloudflare_resources.py +0 -445
- reconcile/terraform_cloudflare_users.py +0 -374
- reconcile/typed_queries/cloudflare.py +0 -10
- reconcile/utils/terrascript/__init__.py +0 -0
- reconcile/utils/terrascript/cloudflare_client.py +0 -310
- reconcile/utils/terrascript/cloudflare_resources.py +0 -432
- reconcile/utils/terrascript/models.py +0 -26
- reconcile/utils/terrascript/resources.py +0 -43
- {qontract_reconcile-0.10.2.dev504.dist-info → qontract_reconcile-0.10.2.dev505.dist-info}/WHEEL +0 -0
- {qontract_reconcile-0.10.2.dev504.dist-info → qontract_reconcile-0.10.2.dev505.dist-info}/entry_points.txt +0 -0
{qontract_reconcile-0.10.2.dev504.dist-info → qontract_reconcile-0.10.2.dev505.dist-info}/METADATA
RENAMED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: qontract-reconcile
|
|
3
|
-
Version: 0.10.2.
|
|
3
|
+
Version: 0.10.2.dev505
|
|
4
4
|
Summary: Collection of tools to reconcile services with their desired state as defined in the app-interface DB.
|
|
5
5
|
Project-URL: homepage, https://github.com/app-sre/qontract-reconcile
|
|
6
6
|
Project-URL: repository, https://github.com/app-sre/qontract-reconcile
|
|
@@ -302,9 +302,6 @@ OpenShift templates can be found [here](/openshift/qontract-reconcile.yaml). In
|
|
|
302
302
|
template-validator Test app-interface templates.
|
|
303
303
|
terraform-aws-route53 Manage AWS Route53 resources using
|
|
304
304
|
Terraform.
|
|
305
|
-
terraform-cloudflare-dns Manage Cloudflare DNS using Terraform.
|
|
306
|
-
terraform-cloudflare-resources Manage Cloudflare Resources using Terraform.
|
|
307
|
-
terraform-cloudflare-users Manage Cloudflare Users using Terraform.
|
|
308
305
|
terraform-init Initialize AWS accounts for Terraform usage.
|
|
309
306
|
terraform-repo Manages raw HCL Terraform from a separate
|
|
310
307
|
repository.
|
{qontract_reconcile-0.10.2.dev504.dist-info → qontract_reconcile-0.10.2.dev505.dist-info}/RECORD
RENAMED
|
@@ -8,7 +8,7 @@ reconcile/aws_iam_password_reset.py,sha256=5oajSspJVAvpGd445hKsxtEGYb75dM4l1_PJT
|
|
|
8
8
|
reconcile/aws_support_cases_sos.py,sha256=G9g0oM6ohvuJ5N592ePjiPeaDug4_vapAy58RyG-S3Y,3478
|
|
9
9
|
reconcile/blackbox_exporter_endpoint_monitoring.py,sha256=O1wFp52EyF538c6txaWBs8eMtUIy19gyHZ6VzJ6QXS8,3512
|
|
10
10
|
reconcile/checkpoint.py,sha256=Q5Ru36ZEwWw95ZkUXBf4VfvCmqDS9TcAF7QVroOf9Vk,5375
|
|
11
|
-
reconcile/cli.py,sha256=
|
|
11
|
+
reconcile/cli.py,sha256=0xHsCeDEY8IdXrdI8K7FWw4VerBgAImcKgAfG6D8bRg,113602
|
|
12
12
|
reconcile/closedbox_endpoint_monitoring_base.py,sha256=_OKz7K7HHw0-gzxeEma8PcUCtd70pRBy7JMoaAm8IVU,4940
|
|
13
13
|
reconcile/cluster_deployment_mapper.py,sha256=aKroYLY6-nNxWi2jxDu7VRMuNZ3YgSI0J6ek7Fet2AQ,2241
|
|
14
14
|
reconcile/dashdotdb_base.py,sha256=83ZWIf5JJk3P_D69y2TmXRcQr6ELJGlv10OM0h7fJVs,4767
|
|
@@ -33,7 +33,7 @@ reconcile/gitlab_mr_sqs_consumer.py,sha256=3FB5vbVB9INBxMj4s1PrDIX-I1Gwu-CGBOH2_
|
|
|
33
33
|
reconcile/gitlab_owners.py,sha256=So7OWq3B1f3-aYlhd2kARYt1nwPV4jrbf5YPRXoHPrM,14663
|
|
34
34
|
reconcile/gitlab_permissions.py,sha256=0H2UCa_44hgWbbOKFTw7zxjOjhjqDmS-m6r1gFFkaLQ,8188
|
|
35
35
|
reconcile/gitlab_projects.py,sha256=JIB1UP8CnwSkngEMZE7DFQETMX6sJMp4DXaKoS-Pdkc,1879
|
|
36
|
-
reconcile/integrations_manager.py,sha256=
|
|
36
|
+
reconcile/integrations_manager.py,sha256=OCqNderRsiS-h1P_dXjCEo2BEJOSAFD87IHtlx3z2Ug,9282
|
|
37
37
|
reconcile/jenkins_base.py,sha256=0Gocu3fU2YTltaxBlbDQOUvP-7CP2OSQV1ZRwtWeVXw,875
|
|
38
38
|
reconcile/jenkins_job_builder.py,sha256=eRR3AL3RN7U_8A4hceUlj_k_jWf-qHMyLr9gqxcj3kQ,3469
|
|
39
39
|
reconcile/jenkins_job_builds_cleaner.py,sha256=l9eLyvdgv1sN2tAlkGx3T8g6Db9kIfWW3LJh5H6dV9A,4080
|
|
@@ -103,9 +103,6 @@ reconcile/sql_query.py,sha256=Go_H36p3YTW4Xv-elYDxW_Fe6Q4ErFhD6eQoFh9Jylw,26424
|
|
|
103
103
|
reconcile/status.py,sha256=h73oaSxO5sftEGqFrXVAlySBvNYPWpowDaYYplcky5A,565
|
|
104
104
|
reconcile/status_board.py,sha256=iv2CR3IsX_uDY5aXHjTOySeTR5d3vsABykYNiYNjZew,15316
|
|
105
105
|
reconcile/terraform_aws_route53.py,sha256=rmV6-AhGB2q_u4v7scIjol99jfSwjTJpmZZwePikZOU,10443
|
|
106
|
-
reconcile/terraform_cloudflare_dns.py,sha256=L3vmwAq46Npc1eswQM3gDT48Zocbm6bwh-vsHuxf2aU,13474
|
|
107
|
-
reconcile/terraform_cloudflare_resources.py,sha256=KxUH05BHSFxuF89Q1DT2lVxCIhTY_dVTw6vjvyv772g,15024
|
|
108
|
-
reconcile/terraform_cloudflare_users.py,sha256=J48VZekuu6owmitdWuXCCji4PSPI1PI8TbLrzyDL2Rk,13540
|
|
109
106
|
reconcile/terraform_repo.py,sha256=YkC-OD86oTMuvkcDPQijCQTWktrC78QrKVSof_pSV2I,15763
|
|
110
107
|
reconcile/terraform_resources.py,sha256=aqhOX7WyFQA5ALppbrGetdwkM2_rYZn4g6qa-3eUF6s,19907
|
|
111
108
|
reconcile/terraform_tgw_attachments.py,sha256=zWDvTkjUp7iHgQpyolmJeg9YMaRuDlqgL14iSvvW3x8,19324
|
|
@@ -358,7 +355,7 @@ reconcile/gql_definitions/glitchtip/glitchtip_project.py,sha256=S2EMzBNjAt5TLDib
|
|
|
358
355
|
reconcile/gql_definitions/glitchtip_project_alerts/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
359
356
|
reconcile/gql_definitions/glitchtip_project_alerts/glitchtip_project.py,sha256=lOUipTG-B_4JVVmMvTOE8f85xligovO2hgFcMzIO3Ww,5193
|
|
360
357
|
reconcile/gql_definitions/integrations/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
361
|
-
reconcile/gql_definitions/integrations/integrations.py,sha256=
|
|
358
|
+
reconcile/gql_definitions/integrations/integrations.py,sha256=_6iPnU-1fYz69hRl3Lu1km8RE40msR6Znp7Pcz5RBwk,10585
|
|
362
359
|
reconcile/gql_definitions/jenkins_configs/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
363
360
|
reconcile/gql_definitions/jenkins_configs/jenkins_configs.py,sha256=Boepc9jr03xJB_qvOYyKmSqPVtLwHfRndrhhU7850jM,2948
|
|
364
361
|
reconcile/gql_definitions/jenkins_configs/jenkins_instances.py,sha256=DYUY-HuZVFOJzHIlnj2HVI_18Sn6tM4isTsbHuETqpA,2151
|
|
@@ -419,15 +416,6 @@ reconcile/gql_definitions/statuspage/statuspages.py,sha256=TJVD-0rwJ8WEzHLju4bn4
|
|
|
419
416
|
reconcile/gql_definitions/templating/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
420
417
|
reconcile/gql_definitions/templating/template_collection.py,sha256=pHkxuBQmk3yIA58bJnu2zCa_wb5a1SZl90Appg2hV5U,4118
|
|
421
418
|
reconcile/gql_definitions/templating/templates.py,sha256=Cv2NhRngl_9oW_eLM7wMYfajDrCboyqfDmwoWqwvHcc,3367
|
|
422
|
-
reconcile/gql_definitions/terraform_cloudflare_dns/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
423
|
-
reconcile/gql_definitions/terraform_cloudflare_dns/app_interface_cloudflare_dns_settings.py,sha256=wjj3g0UBnS7FsfSoFMRHq_x8WJ4BfgfX0IbAS8bIMcY,1916
|
|
424
|
-
reconcile/gql_definitions/terraform_cloudflare_dns/terraform_cloudflare_zones.py,sha256=F9A6csePJZNUxr0N7-8CC_RcZ4RPMdNwuFMaBtXZqzQ,5817
|
|
425
|
-
reconcile/gql_definitions/terraform_cloudflare_resources/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
426
|
-
reconcile/gql_definitions/terraform_cloudflare_resources/terraform_cloudflare_accounts.py,sha256=Wd6i1oo5WxlyXHeab2GuyXL8xgpm1NXCphCyMdQ2MLw,3707
|
|
427
|
-
reconcile/gql_definitions/terraform_cloudflare_resources/terraform_cloudflare_resources.py,sha256=btJaFYHp1jxOXEsScRTIgLDlgoyytTdFBFBHvH7ymjY,12257
|
|
428
|
-
reconcile/gql_definitions/terraform_cloudflare_users/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
429
|
-
reconcile/gql_definitions/terraform_cloudflare_users/app_interface_setting_cloudflare_and_vault.py,sha256=gRxCfy4X9otRyOHtTo038gdYYD3lJ6FTz0yiGavGbfY,1956
|
|
430
|
-
reconcile/gql_definitions/terraform_cloudflare_users/terraform_cloudflare_roles.py,sha256=CFYS6kM0q3Wqrsyr7zhCLfeAkVK_Z6pD5xmkMwOyrG4,4012
|
|
431
419
|
reconcile/gql_definitions/terraform_init/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
432
420
|
reconcile/gql_definitions/terraform_init/aws_accounts.py,sha256=xutFbwVVBVhmhjHp3z_O5t53fRoPT1ePrPVM9sm3ZSI,3037
|
|
433
421
|
reconcile/gql_definitions/terraform_repo/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
@@ -547,7 +535,6 @@ reconcile/typed_queries/apps.py,sha256=IzgDQnKnvGKvFsgfIkha935I1T24tAYEp_LwrLrwV
|
|
|
547
535
|
reconcile/typed_queries/aws_account_tags.py,sha256=ifD3ZTiQ-1_aNmNFtQ0oKbUHnsoBDGce_Zx2l_TOMJA,1319
|
|
548
536
|
reconcile/typed_queries/aws_vpc_requests.py,sha256=fr2o1vp_j_0JAlTYfbwGqPr-99EihCfCOFjC5z4Sx5M,345
|
|
549
537
|
reconcile/typed_queries/aws_vpcs.py,sha256=SBQ-uQeXLj98Rqqju1m-3cx2-IYRqINK5Pi7cdwbNoc,326
|
|
550
|
-
reconcile/typed_queries/cloudflare.py,sha256=jOsqgCzMrjomPaIWc1isTcQAGONmMIJDTBcpmCheonA,308
|
|
551
538
|
reconcile/typed_queries/clusters.py,sha256=0GJO4T3AKQUDNsUucwcV6QBmOiTKlcM3R6zqmjcgxIQ,458
|
|
552
539
|
reconcile/typed_queries/clusters_minimal.py,sha256=XmEvQoSTG_2Xx92kVRGWDWzgo4f6oKwwLk9MFQAZnLY,469
|
|
553
540
|
reconcile/typed_queries/clusters_with_dms.py,sha256=QkT7wMgW2039G-GGPfnDYCAiHx2McIJZijndFtTBcyI,506
|
|
@@ -619,7 +606,7 @@ reconcile/utils/environ.py,sha256=UOYbV7K1MpU7lwcjslKB7oJ7Ek8pOAwf12fA2lV9LM4,81
|
|
|
619
606
|
reconcile/utils/exceptions.py,sha256=2cKJD01d_uZM_j0CTcvDoo-WDisZJVYaeY2KUbfUHCc,686
|
|
620
607
|
reconcile/utils/expiration.py,sha256=6GrQp-sYDKf6scuzzUPxSS8_q_6IiQyjcdvZEVQZzGc,1353
|
|
621
608
|
reconcile/utils/extended_early_exit.py,sha256=QSktrmfw37zSRMNk930tDbQsVeKxaPPPD43e79DGwZw,6754
|
|
622
|
-
reconcile/utils/external_resource_spec.py,sha256=
|
|
609
|
+
reconcile/utils/external_resource_spec.py,sha256=rVJT5kbD_MonUXnlDXS_3Kg4xq1BkRII9SeASXjkxHo,8176
|
|
623
610
|
reconcile/utils/external_resources.py,sha256=YzTb0xAcNdmKO326mGQy7BmST56CZcdru4lX7ai_7kw,7579
|
|
624
611
|
reconcile/utils/filtering.py,sha256=rvCr0drVeD9x4yVox-kvbHEufBktlz3yyQjM-y3IJsM,422
|
|
625
612
|
reconcile/utils/git.py,sha256=o4p9m8jlzCJDcutl2HErvGLhL6sZ1NB4Aw3zGcQIzso,2427
|
|
@@ -767,7 +754,7 @@ reconcile/utils/runtime/environment.py,sha256=rRrj4t11R1JSQO08RcJxkQkyHhRGI8ePo-
|
|
|
767
754
|
reconcile/utils/runtime/integration.py,sha256=etpSg6D9iqud3mG6UMmovBrRFBWHpjKLW6AUdlu5q5w,15172
|
|
768
755
|
reconcile/utils/runtime/meta.py,sha256=M_EOxrb0KhQA4TwpHekbog2jOZqaBPVTIijXyRuMjn0,255
|
|
769
756
|
reconcile/utils/runtime/runner.py,sha256=p7xCT1IDlDz6wKYMDMPOTEdztM4hbcxo0fw9gQf4q-A,9028
|
|
770
|
-
reconcile/utils/runtime/sharding.py,sha256=
|
|
757
|
+
reconcile/utils/runtime/sharding.py,sha256=bfcrQYAHiriM99koZGonrurWk8hPzifpOJAumjV4baE,13026
|
|
771
758
|
reconcile/utils/saasherder/__init__.py,sha256=3U8plqMAPRE1kjwZ5YnIsYsggTf4_gS7flRUEuXVBAs,343
|
|
772
759
|
reconcile/utils/saasherder/interfaces.py,sha256=9zEb02A1hnjyc7L5A7uzgYXifEaDWJ6AEPqeTo0qhNg,9447
|
|
773
760
|
reconcile/utils/saasherder/models.py,sha256=QHxc-F1CekKG7x8KkDYpzyCyvd_nQHc5QfmRhVEwYE8,13036
|
|
@@ -775,11 +762,6 @@ reconcile/utils/saasherder/saasherder.py,sha256=-zbE4Zt5K-ig6cQDDJe7P_PkSroon_Q6
|
|
|
775
762
|
reconcile/utils/terraform/__init__.py,sha256=zNbiyTWo35AT1sFTElL2j_AA0jJ_yWE_bfFn-nD2xik,250
|
|
776
763
|
reconcile/utils/terraform/config.py,sha256=5UVrd563TMcvi4ooa5JvWVDW1I3bIWg484u79evfV_8,164
|
|
777
764
|
reconcile/utils/terraform/config_client.py,sha256=gRL1rQ0AqvShei_rcGqC3HDYGskOFKE1nPrJyJE9yno,4676
|
|
778
|
-
reconcile/utils/terrascript/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
779
|
-
reconcile/utils/terrascript/cloudflare_client.py,sha256=pHEjwqguHDQVr8zsWmXBAx9Jx4mx6BkLymXOmpBgFqc,10493
|
|
780
|
-
reconcile/utils/terrascript/cloudflare_resources.py,sha256=mGU4WBveVWXr3FQL104Z2suduHBdeCHcV7S_u3x481A,15947
|
|
781
|
-
reconcile/utils/terrascript/models.py,sha256=DZfSEqyaZh8fCE_g7toa9TUCzcn3MHnuumoWCdzACh0,441
|
|
782
|
-
reconcile/utils/terrascript/resources.py,sha256=ucuudrCjmJYeSleklXTlmeSEwZOqVtEfzWFEiDZydxM,1361
|
|
783
765
|
reconcile/utils/unleash/__init__.py,sha256=2PsN3GlLU8DOyWSvv5q9uzwuFn_vYtfEo-mmVaIFtpA,219
|
|
784
766
|
reconcile/utils/unleash/client.py,sha256=YrJnauxjcy1ml7W2AHg7dzIH_fVK_GugoRu7IFmk6e0,3505
|
|
785
767
|
reconcile/utils/unleash/server.py,sha256=X79h8E371IeBjJlKtufKxwfo3EBUPxrJ17yVRFMC2Ac,4403
|
|
@@ -797,7 +779,7 @@ tools/cli_commands/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuF
|
|
|
797
779
|
tools/cli_commands/container_images_report.py,sha256=8mAjCS6XR0yD7k0mfiVBlt6xbYU47q_ftdYNi5o5VKE,5566
|
|
798
780
|
tools/cli_commands/erv2.py,sha256=0qx-BZJex4SUNpnSxlIkr3r7buOzjmMHhmB46C9cnJ0,24051
|
|
799
781
|
tools/cli_commands/gpg_encrypt.py,sha256=EzCR3JvlCfO-a8VLG-mArD3edwM-aa0mUrDj1y0_NW0,5032
|
|
800
|
-
tools/cli_commands/systems_and_tools.py,sha256=
|
|
782
|
+
tools/cli_commands/systems_and_tools.py,sha256=QYc7dpHK2so2eo5spS1Sdo1-pl2EuftxHI6-E_zvHAE,16065
|
|
801
783
|
tools/cli_commands/cost_report/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
802
784
|
tools/cli_commands/cost_report/aws.py,sha256=JtwDfhaYLfa4Uz1LR6OfSBh_3nBlb90kQq6i3MV_ims,4563
|
|
803
785
|
tools/cli_commands/cost_report/cost_management_api.py,sha256=lWBIsR8Q0NlbvVLMdgsPbYO4S3DfNnWK8uHTnmMqR_w,4686
|
|
@@ -817,7 +799,7 @@ tools/saas_promotion_state/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJ
|
|
|
817
799
|
tools/saas_promotion_state/saas_promotion_state.py,sha256=uQv2QJAmUXP1g2GPIH30WTlvL9soY6m9lefpZEVDM5w,3965
|
|
818
800
|
tools/sre_checkpoints/__init__.py,sha256=CDaDaywJnmRCLyl_NCcvxi-Zc0hTi_3OdwKiFOyS39I,145
|
|
819
801
|
tools/sre_checkpoints/util.py,sha256=KcYVfa3UmJHVP_ocgrKe8NkrO5IDB9aWEDydSokPcRk,975
|
|
820
|
-
qontract_reconcile-0.10.2.
|
|
821
|
-
qontract_reconcile-0.10.2.
|
|
822
|
-
qontract_reconcile-0.10.2.
|
|
823
|
-
qontract_reconcile-0.10.2.
|
|
802
|
+
qontract_reconcile-0.10.2.dev505.dist-info/METADATA,sha256=jXUVjfTPEzImBRH60j4FCxgYOFyB1s0ij0TCpyE7Rz8,24731
|
|
803
|
+
qontract_reconcile-0.10.2.dev505.dist-info/WHEEL,sha256=WLgqFyCfm_KASv4WHyYy0P3pM_m7J5L9k2skdKLirC8,87
|
|
804
|
+
qontract_reconcile-0.10.2.dev505.dist-info/entry_points.txt,sha256=5i9l54La3vQrDLAdwDKQWC0iG4sV9RRfOb1BpvzOWLc,698
|
|
805
|
+
qontract_reconcile-0.10.2.dev505.dist-info/RECORD,,
|
reconcile/cli.py
CHANGED
|
@@ -364,12 +364,6 @@ def account_name(function: Callable) -> Callable:
|
|
|
364
364
|
return function
|
|
365
365
|
|
|
366
366
|
|
|
367
|
-
def cloudflare_zone_name(function: Callable) -> Callable:
|
|
368
|
-
function = click.option("--zone-name", default=None)(function)
|
|
369
|
-
|
|
370
|
-
return function
|
|
371
|
-
|
|
372
|
-
|
|
373
367
|
def account_name_multiple(function: Callable) -> Callable:
|
|
374
368
|
"""This option can be used when more than one account needs to be passed as argument"""
|
|
375
369
|
function = click.option(
|
|
@@ -2337,108 +2331,6 @@ def terraform_resources(
|
|
|
2337
2331
|
)
|
|
2338
2332
|
|
|
2339
2333
|
|
|
2340
|
-
@integration.command(short_help="Manage Cloudflare Resources using Terraform.")
|
|
2341
|
-
@print_to_file
|
|
2342
|
-
@enable_deletion(default=False)
|
|
2343
|
-
@threaded()
|
|
2344
|
-
@binary(["terraform"])
|
|
2345
|
-
@binary_version("terraform", ["version"], TERRAFORM_VERSION_REGEX, TERRAFORM_VERSION)
|
|
2346
|
-
@account_name
|
|
2347
|
-
@vault_output_path
|
|
2348
|
-
@use_jump_host()
|
|
2349
|
-
@internal()
|
|
2350
|
-
@click.pass_context
|
|
2351
|
-
def terraform_cloudflare_resources(
|
|
2352
|
-
ctx: click.Context,
|
|
2353
|
-
print_to_file: str | None,
|
|
2354
|
-
enable_deletion: bool,
|
|
2355
|
-
thread_pool_size: int,
|
|
2356
|
-
account_name: str | None,
|
|
2357
|
-
vault_output_path: str,
|
|
2358
|
-
internal: bool,
|
|
2359
|
-
use_jump_host: bool,
|
|
2360
|
-
) -> None:
|
|
2361
|
-
import reconcile.terraform_cloudflare_resources
|
|
2362
|
-
|
|
2363
|
-
run_integration(
|
|
2364
|
-
reconcile.terraform_cloudflare_resources,
|
|
2365
|
-
ctx,
|
|
2366
|
-
print_to_file,
|
|
2367
|
-
enable_deletion,
|
|
2368
|
-
thread_pool_size,
|
|
2369
|
-
account_name,
|
|
2370
|
-
vault_output_path,
|
|
2371
|
-
internal,
|
|
2372
|
-
use_jump_host,
|
|
2373
|
-
)
|
|
2374
|
-
|
|
2375
|
-
|
|
2376
|
-
@integration.command(short_help="Manage Cloudflare DNS using Terraform.")
|
|
2377
|
-
@print_to_file
|
|
2378
|
-
@enable_deletion(default=False)
|
|
2379
|
-
@threaded()
|
|
2380
|
-
@binary(["terraform"])
|
|
2381
|
-
@binary_version("terraform", ["version"], TERRAFORM_VERSION_REGEX, TERRAFORM_VERSION)
|
|
2382
|
-
@account_name
|
|
2383
|
-
@cloudflare_zone_name
|
|
2384
|
-
@click.pass_context
|
|
2385
|
-
def terraform_cloudflare_dns(
|
|
2386
|
-
ctx: click.Context,
|
|
2387
|
-
print_to_file: str | None,
|
|
2388
|
-
enable_deletion: bool,
|
|
2389
|
-
thread_pool_size: int,
|
|
2390
|
-
account_name: str | None,
|
|
2391
|
-
zone_name: str | None,
|
|
2392
|
-
) -> None:
|
|
2393
|
-
from reconcile import terraform_cloudflare_dns
|
|
2394
|
-
|
|
2395
|
-
run_class_integration(
|
|
2396
|
-
integration=terraform_cloudflare_dns.TerraformCloudflareDNSIntegration(
|
|
2397
|
-
terraform_cloudflare_dns.TerraformCloudflareDNSIntegrationParams(
|
|
2398
|
-
print_to_file=print_to_file,
|
|
2399
|
-
enable_deletion=enable_deletion,
|
|
2400
|
-
thread_pool_size=thread_pool_size,
|
|
2401
|
-
selected_account=account_name,
|
|
2402
|
-
selected_zone=zone_name,
|
|
2403
|
-
)
|
|
2404
|
-
),
|
|
2405
|
-
ctx=ctx,
|
|
2406
|
-
)
|
|
2407
|
-
|
|
2408
|
-
|
|
2409
|
-
@integration.command(short_help="Manage Cloudflare Users using Terraform.")
|
|
2410
|
-
@print_to_file
|
|
2411
|
-
@binary(["terraform"])
|
|
2412
|
-
@threaded()
|
|
2413
|
-
@binary_version("terraform", ["version"], TERRAFORM_VERSION_REGEX, TERRAFORM_VERSION)
|
|
2414
|
-
@account_name
|
|
2415
|
-
@enable_deletion(default=True)
|
|
2416
|
-
@click.pass_context
|
|
2417
|
-
def terraform_cloudflare_users(
|
|
2418
|
-
ctx: click.Context,
|
|
2419
|
-
print_to_file: str | None,
|
|
2420
|
-
account_name: str | None,
|
|
2421
|
-
thread_pool_size: int,
|
|
2422
|
-
enable_deletion: bool,
|
|
2423
|
-
) -> None:
|
|
2424
|
-
from reconcile.terraform_cloudflare_users import (
|
|
2425
|
-
TerraformCloudflareUsers,
|
|
2426
|
-
TerraformCloudflareUsersParams,
|
|
2427
|
-
)
|
|
2428
|
-
|
|
2429
|
-
run_class_integration(
|
|
2430
|
-
TerraformCloudflareUsers(
|
|
2431
|
-
TerraformCloudflareUsersParams(
|
|
2432
|
-
print_to_file=print_to_file,
|
|
2433
|
-
account_name=account_name,
|
|
2434
|
-
thread_pool_size=thread_pool_size,
|
|
2435
|
-
enable_deletion=enable_deletion,
|
|
2436
|
-
)
|
|
2437
|
-
),
|
|
2438
|
-
ctx,
|
|
2439
|
-
)
|
|
2440
|
-
|
|
2441
|
-
|
|
2442
2334
|
@integration.command(short_help="Manage auto-promotions defined in SaaS files")
|
|
2443
2335
|
@threaded()
|
|
2444
2336
|
@click.option("--env-name", default=None, help="environment to filter saas files by")
|
|
@@ -174,20 +174,6 @@ query Integrations {
|
|
|
174
174
|
}
|
|
175
175
|
}
|
|
176
176
|
}
|
|
177
|
-
|
|
178
|
-
... on CloudflareDNSZoneSharding_v1 {
|
|
179
|
-
shardSpecOverrides {
|
|
180
|
-
shard {
|
|
181
|
-
zone
|
|
182
|
-
identifier
|
|
183
|
-
}
|
|
184
|
-
imageRef
|
|
185
|
-
disabled
|
|
186
|
-
resources {
|
|
187
|
-
...DeployResourcesFields
|
|
188
|
-
}
|
|
189
|
-
}
|
|
190
|
-
}
|
|
191
177
|
}
|
|
192
178
|
}
|
|
193
179
|
}
|
|
@@ -323,26 +309,10 @@ class AWSAccountShardingV1(IntegrationShardingV1):
|
|
|
323
309
|
shard_spec_overrides: Optional[list[AWSAccountShardSpecOverrideV1]] = Field(..., alias="shardSpecOverrides")
|
|
324
310
|
|
|
325
311
|
|
|
326
|
-
class CloudflareDnsZoneV1(ConfiguredBaseModel):
|
|
327
|
-
zone: str = Field(..., alias="zone")
|
|
328
|
-
identifier: str = Field(..., alias="identifier")
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
class CloudflareDNSZoneShardSpecOverrideV1(ConfiguredBaseModel):
|
|
332
|
-
shard: CloudflareDnsZoneV1 = Field(..., alias="shard")
|
|
333
|
-
image_ref: Optional[str] = Field(..., alias="imageRef")
|
|
334
|
-
disabled: Optional[bool] = Field(..., alias="disabled")
|
|
335
|
-
resources: Optional[DeployResourcesFields] = Field(..., alias="resources")
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
class CloudflareDNSZoneShardingV1(IntegrationShardingV1):
|
|
339
|
-
shard_spec_overrides: Optional[list[CloudflareDNSZoneShardSpecOverrideV1]] = Field(..., alias="shardSpecOverrides")
|
|
340
|
-
|
|
341
|
-
|
|
342
312
|
class IntegrationManagedV1(ConfiguredBaseModel):
|
|
343
313
|
namespace: NamespaceV1 = Field(..., alias="namespace")
|
|
344
314
|
spec: IntegrationSpecV1 = Field(..., alias="spec")
|
|
345
|
-
sharding: Optional[Union[StaticShardingV1, OpenshiftClusterShardingV1, OCMOrganizationShardingV1, AWSAccountShardingV1,
|
|
315
|
+
sharding: Optional[Union[StaticShardingV1, OpenshiftClusterShardingV1, OCMOrganizationShardingV1, AWSAccountShardingV1, IntegrationShardingV1]] = Field(..., alias="sharding")
|
|
346
316
|
|
|
347
317
|
|
|
348
318
|
class IntegrationV1(ConfiguredBaseModel):
|
|
@@ -41,7 +41,6 @@ from reconcile.utils.openshift_resource import (
|
|
|
41
41
|
from reconcile.utils.runtime.meta import IntegrationMeta
|
|
42
42
|
from reconcile.utils.runtime.sharding import (
|
|
43
43
|
AWSAccountShardingStrategy,
|
|
44
|
-
CloudflareDnsZoneShardingStrategy,
|
|
45
44
|
IntegrationShardManager,
|
|
46
45
|
OCMOrganizationShardingStrategy,
|
|
47
46
|
OpenshiftClusterShardingStrategy,
|
|
@@ -257,7 +256,6 @@ def run(
|
|
|
257
256
|
StaticShardingStrategy.IDENTIFIER: StaticShardingStrategy(),
|
|
258
257
|
AWSAccountShardingStrategy.IDENTIFIER: AWSAccountShardingStrategy(),
|
|
259
258
|
OpenshiftClusterShardingStrategy.IDENTIFIER: OpenshiftClusterShardingStrategy(),
|
|
260
|
-
CloudflareDnsZoneShardingStrategy.IDENTIFIER: CloudflareDnsZoneShardingStrategy(),
|
|
261
259
|
OCMOrganizationShardingStrategy.IDENTIFIER: OCMOrganizationShardingStrategy(),
|
|
262
260
|
},
|
|
263
261
|
integration_runtime_meta=integration_runtime_meta,
|
|
@@ -125,8 +125,7 @@ class ExternalResourceSpec:
|
|
|
125
125
|
def output_prefix(self) -> str:
|
|
126
126
|
# Adhere to DNS-1123 subdomain names spec. It's reasonable to have provider
|
|
127
127
|
# names that have underscores, but without replacing them with hyphens we run
|
|
128
|
-
# into issues.
|
|
129
|
-
# worker-script and prevent the use of underscores going forward.
|
|
128
|
+
# into issues.
|
|
130
129
|
#
|
|
131
130
|
# More info can be found at:
|
|
132
131
|
# https://kubernetes.io/docs/concepts/overview/working-with-objects/names/.
|
|
@@ -14,8 +14,6 @@ from reconcile.gql_definitions.fragments.minimal_ocm_organization import (
|
|
|
14
14
|
from reconcile.gql_definitions.integrations.integrations import (
|
|
15
15
|
AWSAccountShardingV1,
|
|
16
16
|
AWSAccountShardSpecOverrideV1,
|
|
17
|
-
CloudflareDNSZoneShardingV1,
|
|
18
|
-
CloudflareDNSZoneShardSpecOverrideV1,
|
|
19
17
|
IntegrationManagedV1,
|
|
20
18
|
IntegrationShardingV1,
|
|
21
19
|
IntegrationSpecV1,
|
|
@@ -31,12 +29,6 @@ from reconcile.gql_definitions.sharding import aws_accounts as sharding_aws_acco
|
|
|
31
29
|
from reconcile.gql_definitions.sharding import (
|
|
32
30
|
ocm_organization as sharding_ocm_organization,
|
|
33
31
|
)
|
|
34
|
-
from reconcile.gql_definitions.terraform_cloudflare_dns import (
|
|
35
|
-
terraform_cloudflare_zones,
|
|
36
|
-
)
|
|
37
|
-
from reconcile.gql_definitions.terraform_cloudflare_dns.terraform_cloudflare_zones import (
|
|
38
|
-
CloudflareDnsZoneV1,
|
|
39
|
-
)
|
|
40
32
|
from reconcile.typed_queries.clusters_minimal import get_clusters_minimal
|
|
41
33
|
from reconcile.utils import gql
|
|
42
34
|
from reconcile.utils.runtime.meta import IntegrationMeta
|
|
@@ -49,7 +41,6 @@ class ShardSpec(BaseModel):
|
|
|
49
41
|
shard_spec_overrides: (
|
|
50
42
|
AWSAccountShardSpecOverrideV1
|
|
51
43
|
| OpenshiftClusterShardSpecOverrideV1
|
|
52
|
-
| CloudflareDNSZoneShardSpecOverrideV1
|
|
53
44
|
| OCMOrganizationShardSpecOverrideV1
|
|
54
45
|
| None
|
|
55
46
|
) = None
|
|
@@ -363,77 +354,6 @@ class OpenshiftClusterShardingStrategy:
|
|
|
363
354
|
return shards
|
|
364
355
|
|
|
365
356
|
|
|
366
|
-
class CloudflareDnsZoneShardingStrategy:
|
|
367
|
-
"""
|
|
368
|
-
This provides a new sharding strategy that each shard is targeting a Cloudflare zone.
|
|
369
|
-
It uses the combination of the Cloudflare account name and the zone's identifier as the unique sharding key.
|
|
370
|
-
"""
|
|
371
|
-
|
|
372
|
-
IDENTIFIER = "per-cloudflare-dns-zone"
|
|
373
|
-
|
|
374
|
-
def __init__(self, cloudflare_zones: Iterable[CloudflareDnsZoneV1] | None = None):
|
|
375
|
-
if not cloudflare_zones:
|
|
376
|
-
self.cloudflare_zones = (
|
|
377
|
-
terraform_cloudflare_zones.query(query_func=gql.get_api().query).zones
|
|
378
|
-
or []
|
|
379
|
-
)
|
|
380
|
-
else:
|
|
381
|
-
self.cloudflare_zones = list(cloudflare_zones)
|
|
382
|
-
|
|
383
|
-
def _get_shard_key(self, dns_zone: CloudflareDnsZoneV1) -> str:
|
|
384
|
-
return f"{dns_zone.account.name}-{dns_zone.identifier}"
|
|
385
|
-
|
|
386
|
-
def get_shard_spec_overrides(
|
|
387
|
-
self, sharding: IntegrationShardingV1 | None
|
|
388
|
-
) -> dict[str, CloudflareDNSZoneShardSpecOverrideV1]:
|
|
389
|
-
spos: dict[str, CloudflareDNSZoneShardSpecOverrideV1] = {}
|
|
390
|
-
|
|
391
|
-
if (
|
|
392
|
-
isinstance(sharding, CloudflareDNSZoneShardingV1)
|
|
393
|
-
and sharding.shard_spec_overrides
|
|
394
|
-
):
|
|
395
|
-
for override in sharding.shard_spec_overrides:
|
|
396
|
-
key = f"{override.shard.zone}-{override.shard.identifier}"
|
|
397
|
-
spos[key] = override
|
|
398
|
-
return spos
|
|
399
|
-
|
|
400
|
-
def check_integration_sharding_params(self, meta: IntegrationMeta) -> None:
|
|
401
|
-
if "--zone-name" not in meta.args:
|
|
402
|
-
raise ValueError(
|
|
403
|
-
f"integration {meta.name} does not support the provided argument. "
|
|
404
|
-
f"--zone-name is required by the '{self.IDENTIFIER}' sharding "
|
|
405
|
-
"strategy."
|
|
406
|
-
)
|
|
407
|
-
|
|
408
|
-
def build_shard_spec(
|
|
409
|
-
self,
|
|
410
|
-
dns_zone: CloudflareDnsZoneV1,
|
|
411
|
-
integration_spec: IntegrationSpecV1,
|
|
412
|
-
spo: CloudflareDNSZoneShardSpecOverrideV1 | None,
|
|
413
|
-
) -> ShardSpec:
|
|
414
|
-
return ShardSpec(
|
|
415
|
-
shard_key=self._get_shard_key(dns_zone),
|
|
416
|
-
shard_name_suffix=f"-{self._get_shard_key(dns_zone)}",
|
|
417
|
-
extra_args=(integration_spec.extra_args or "")
|
|
418
|
-
+ f" --zone-name {dns_zone.identifier}",
|
|
419
|
-
shard_spec_overrides=spo,
|
|
420
|
-
)
|
|
421
|
-
|
|
422
|
-
def build_integration_shards(
|
|
423
|
-
self,
|
|
424
|
-
integration_meta: IntegrationMeta,
|
|
425
|
-
integration_managed: IntegrationManagedV1,
|
|
426
|
-
) -> list[ShardSpec]:
|
|
427
|
-
self.check_integration_sharding_params(integration_meta)
|
|
428
|
-
spos = self.get_shard_spec_overrides(integration_managed.sharding)
|
|
429
|
-
shards = []
|
|
430
|
-
for zone in self.cloudflare_zones or []:
|
|
431
|
-
spo = spos.get(self._get_shard_key(zone))
|
|
432
|
-
base_shard = self.build_shard_spec(zone, integration_managed.spec, spo)
|
|
433
|
-
shards.append(base_shard)
|
|
434
|
-
return shards
|
|
435
|
-
|
|
436
|
-
|
|
437
357
|
@dataclass
|
|
438
358
|
class IntegrationShardManager:
|
|
439
359
|
strategies: dict[str, ShardingStrategy]
|
|
@@ -85,12 +85,6 @@ from reconcile.gql_definitions.statuspage.statuspages import (
|
|
|
85
85
|
from reconcile.gql_definitions.statuspage.statuspages import (
|
|
86
86
|
StatusPageV1,
|
|
87
87
|
)
|
|
88
|
-
from reconcile.gql_definitions.terraform_cloudflare_resources.terraform_cloudflare_accounts import (
|
|
89
|
-
DEFINITION as CLOUDFLARE_ACCOUNTS_DEFINITION,
|
|
90
|
-
)
|
|
91
|
-
from reconcile.gql_definitions.terraform_cloudflare_resources.terraform_cloudflare_accounts import (
|
|
92
|
-
CloudflareAccountV1,
|
|
93
|
-
)
|
|
94
88
|
from reconcile.gql_definitions.terraform_tgw_attachments.aws_accounts import (
|
|
95
89
|
DEFINITION as AWS_ACCOUNTS_DEFINITION,
|
|
96
90
|
)
|
|
@@ -110,7 +104,6 @@ from reconcile.gql_definitions.vault_instances.vault_instances import (
|
|
|
110
104
|
VaultInstanceV1,
|
|
111
105
|
)
|
|
112
106
|
from reconcile.statuspage.integration import get_status_pages
|
|
113
|
-
from reconcile.typed_queries.cloudflare import get_cloudflare_accounts
|
|
114
107
|
from reconcile.typed_queries.clusters import get_clusters
|
|
115
108
|
from reconcile.typed_queries.dynatrace import get_dynatrace_environments
|
|
116
109
|
from reconcile.typed_queries.gitlab_instances import (
|
|
@@ -180,8 +173,6 @@ class SystemTool(BaseModel):
|
|
|
180
173
|
return cls.init_from_unleash_instance(model, enumeration)
|
|
181
174
|
case VaultInstanceV1():
|
|
182
175
|
return cls.init_from_vault_instance(model, enumeration)
|
|
183
|
-
case CloudflareAccountV1():
|
|
184
|
-
return cls.init_from_cloudflare_account(model, enumeration)
|
|
185
176
|
case AppCodeComponentsV1():
|
|
186
177
|
return cls.init_from_code_component(model, enumeration)
|
|
187
178
|
case _:
|
|
@@ -368,19 +359,6 @@ class SystemTool(BaseModel):
|
|
|
368
359
|
enumeration=enumeration,
|
|
369
360
|
)
|
|
370
361
|
|
|
371
|
-
@classmethod
|
|
372
|
-
def init_from_cloudflare_account(
|
|
373
|
-
cls, a: CloudflareAccountV1, enumeration: Any
|
|
374
|
-
) -> Self:
|
|
375
|
-
return cls(
|
|
376
|
-
system_type="cloudflare",
|
|
377
|
-
system_id=a.name,
|
|
378
|
-
name=a.name,
|
|
379
|
-
url="https://dash.cloudflare.com/",
|
|
380
|
-
description=a.description,
|
|
381
|
-
enumeration=enumeration,
|
|
382
|
-
)
|
|
383
|
-
|
|
384
362
|
@classmethod
|
|
385
363
|
def init_from_code_component(cls, c: AppCodeComponentsV1, enumeration: Any) -> Self:
|
|
386
364
|
return cls(
|
|
@@ -469,7 +447,6 @@ def get_systems_and_tools_inventory() -> SystemToolInventory:
|
|
|
469
447
|
inventory.update(get_status_pages(), STATUS_PAGES_DEFINITION)
|
|
470
448
|
inventory.update(get_unleash_instances(), UNLEASH_INSTANCES_DEFINITION)
|
|
471
449
|
inventory.update(get_vault_instances(), VAULT_INSTANCES_DEFINITION)
|
|
472
|
-
inventory.update(get_cloudflare_accounts(), CLOUDFLARE_ACCOUNTS_DEFINITION)
|
|
473
450
|
inventory.update(
|
|
474
451
|
[
|
|
475
452
|
c
|
|
File without changes
|
|
@@ -1,62 +0,0 @@
|
|
|
1
|
-
"""
|
|
2
|
-
Generated by qenerate plugin=pydantic_v2. DO NOT MODIFY MANUALLY!
|
|
3
|
-
"""
|
|
4
|
-
from collections.abc import Callable # noqa: F401 # pylint: disable=W0611
|
|
5
|
-
from datetime import datetime # noqa: F401 # pylint: disable=W0611
|
|
6
|
-
from enum import Enum # noqa: F401 # pylint: disable=W0611
|
|
7
|
-
from typing import ( # noqa: F401 # pylint: disable=W0611
|
|
8
|
-
Any,
|
|
9
|
-
Optional,
|
|
10
|
-
Union,
|
|
11
|
-
)
|
|
12
|
-
|
|
13
|
-
from pydantic import ( # noqa: F401 # pylint: disable=W0611
|
|
14
|
-
BaseModel,
|
|
15
|
-
ConfigDict,
|
|
16
|
-
Field,
|
|
17
|
-
Json,
|
|
18
|
-
)
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
DEFINITION = """
|
|
22
|
-
query AppInterfaceSettingCloudflareDNS {
|
|
23
|
-
settings: app_interface_settings_v1 {
|
|
24
|
-
cloudflareDNSZoneMaxRecords
|
|
25
|
-
vault
|
|
26
|
-
}
|
|
27
|
-
}
|
|
28
|
-
"""
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
class ConfiguredBaseModel(BaseModel):
|
|
32
|
-
model_config = ConfigDict(
|
|
33
|
-
extra='forbid'
|
|
34
|
-
)
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
class AppInterfaceSettingsV1(ConfiguredBaseModel):
|
|
38
|
-
cloudflare_dns_zone_max_records: Optional[int] = Field(..., alias="cloudflareDNSZoneMaxRecords")
|
|
39
|
-
vault: bool = Field(..., alias="vault")
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
class AppInterfaceSettingCloudflareDNSQueryData(ConfiguredBaseModel):
|
|
43
|
-
settings: Optional[list[AppInterfaceSettingsV1]] = Field(..., alias="settings")
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
def query(query_func: Callable, **kwargs: Any) -> AppInterfaceSettingCloudflareDNSQueryData:
|
|
47
|
-
"""
|
|
48
|
-
This is a convenience function which queries and parses the data into
|
|
49
|
-
concrete types. It should be compatible with most GQL clients.
|
|
50
|
-
You do not have to use it to consume the generated data classes.
|
|
51
|
-
Alternatively, you can also mime and alternate the behavior
|
|
52
|
-
of this function in the caller.
|
|
53
|
-
|
|
54
|
-
Parameters:
|
|
55
|
-
query_func (Callable): Function which queries your GQL Server
|
|
56
|
-
kwargs: optional arguments that will be passed to the query function
|
|
57
|
-
|
|
58
|
-
Returns:
|
|
59
|
-
AppInterfaceSettingCloudflareDNSQueryData: queried data parsed into generated classes
|
|
60
|
-
"""
|
|
61
|
-
raw_data: dict[Any, Any] = query_func(DEFINITION, **kwargs)
|
|
62
|
-
return AppInterfaceSettingCloudflareDNSQueryData(**raw_data)
|