From 6b04ce769d7aac32d7d003bcd5de17b8d230fc14 Mon Sep 17 00:00:00 2001 From: Ludovico Magnocavallo Date: Sat, 31 May 2025 11:58:20 +0200 Subject: [PATCH] Allow multiple types in JSON schema docs tool (#3126) * allow multiple types in JSON schema docs tool * support pattern * support pattern --- .../schemas/instance.schema.md | 1 + .../schemas/service-account.schema.md | 1 + .../0-bootstrap/schemas/custom-role.schema.md | 2 ++ .../schemas/org-policies.schema.md | 2 +- .../org-policy-custom-constraint.schema.md | 1 + .../1-resman/schemas/fast-stage2.schema.md | 10 ++++++- .../1-resman/schemas/fast-stage3.schema.md | 8 +++++- .../1-resman/schemas/org-policies.schema.md | 2 +- .../schemas/top-level-folder.schema.md | 10 ++++++- .../1-vpcsc/schemas/access-level.schema.md | 1 + .../1-vpcsc/schemas/egress-policy.schema.md | 2 ++ .../1-vpcsc/schemas/ingress-policy.schema.md | 1 + .../1-vpcsc/schemas/perimeter.schema.md | 5 ++-- .../schemas/firewall-policy-rules.schema.md | 2 +- .../schemas/firewall-rules.schema.md | 3 ++- .../schemas/subnet.schema.md | 7 ++++- .../schemas/firewall-policy-rules.schema.md | 2 +- .../schemas/firewall-rules.schema.md | 3 ++- .../schemas/subnet.schema.md | 7 ++++- .../schemas/firewall-policy-rules.schema.md | 2 +- .../schemas/firewall-rules.schema.md | 3 ++- .../schemas/subnet.schema.md | 7 ++++- .../schemas/budget.schema.md | 2 +- .../schemas/folder.schema.md | 8 +++++- .../schemas/project.schema.md | 11 +++++++- .../schemas/aspect-type.schema.md | 7 ++++- .../schemas/data-domain.schema.md | 11 ++++++-- .../schemas/data-product.schema.md | 9 ++++++- .../billing-account/schemas/budget.schema.md | 2 +- .../schemas/tag-template.schema.md | 8 +++++- .../schemas/aspect-type.schema.md | 7 ++++- modules/folder/schemas/org-policies.schema.md | 2 +- .../schemas/firewall-policy-rules.schema.md | 2 +- modules/net-swp/schemas/policy-rule.schema.md | 1 + modules/net-swp/schemas/url-list.schema.md | 1 + .../schemas/network-project.schema.md | 5 +++- .../schemas/firewall-rules.schema.md | 3 ++- modules/net-vpc/schemas/subnet.schema.md | 7 ++++- .../schemas/custom-role.schema.md | 2 ++ .../schemas/org-policies.schema.md | 2 +- .../org-policy-custom-constraint.schema.md | 1 + .../project-factory/schemas/budget.schema.md | 2 +- .../project-factory/schemas/folder.schema.md | 8 +++++- .../project-factory/schemas/project.schema.md | 9 ++++++- modules/project/schemas/custom-role.schema.md | 2 ++ .../project/schemas/observability.schema.md | 2 +- .../project/schemas/org-policies.schema.md | 2 +- modules/project/schemas/quotas.schema.md | 1 + modules/vpc-sc/schemas/access-level.schema.md | 1 + .../vpc-sc/schemas/egress-policy.schema.md | 2 ++ .../vpc-sc/schemas/ingress-policy.schema.md | 1 + modules/vpc-sc/schemas/perimeters.schema.md | 5 ++-- tools/schema_docs.py | 26 ++++++++++++++----- 53 files changed, 188 insertions(+), 46 deletions(-) diff --git a/fast/addons/2-networking-test/schemas/instance.schema.md b/fast/addons/2-networking-test/schemas/instance.schema.md index aa2b44ab5..3d16dc2b7 100644 --- a/fast/addons/2-networking-test/schemas/instance.schema.md +++ b/fast/addons/2-networking-test/schemas/instance.schema.md @@ -24,3 +24,4 @@ ## Definitions + diff --git a/fast/addons/2-networking-test/schemas/service-account.schema.md b/fast/addons/2-networking-test/schemas/service-account.schema.md index c7c7934ae..56bc05b55 100644 --- a/fast/addons/2-networking-test/schemas/service-account.schema.md +++ b/fast/addons/2-networking-test/schemas/service-account.schema.md @@ -16,3 +16,4 @@ ## Definitions + diff --git a/fast/stages/0-bootstrap/schemas/custom-role.schema.md b/fast/stages/0-bootstrap/schemas/custom-role.schema.md index 4be548bca..eda065897 100644 --- a/fast/stages/0-bootstrap/schemas/custom-role.schema.md +++ b/fast/stages/0-bootstrap/schemas/custom-role.schema.md @@ -9,6 +9,8 @@ - **name**: *string* - **includedPermissions**: *array* - items: *string* +
*pattern: ^[a-zA-Z-]+\.[a-zA-Z-]+\.[a-zA-Z-]+$* ## Definitions + diff --git a/fast/stages/0-bootstrap/schemas/org-policies.schema.md b/fast/stages/0-bootstrap/schemas/org-policies.schema.md index 75f6e72d1..9503c65c3 100644 --- a/fast/stages/0-bootstrap/schemas/org-policies.schema.md +++ b/fast/stages/0-bootstrap/schemas/org-policies.schema.md @@ -30,4 +30,4 @@
*additional properties: false* - **all**: *boolean* - **values**: *array* - - items: *string* \ No newline at end of file + - items: *string* diff --git a/fast/stages/0-bootstrap/schemas/org-policy-custom-constraint.schema.md b/fast/stages/0-bootstrap/schemas/org-policy-custom-constraint.schema.md index d48e106b6..6b6f33729 100644 --- a/fast/stages/0-bootstrap/schemas/org-policy-custom-constraint.schema.md +++ b/fast/stages/0-bootstrap/schemas/org-policy-custom-constraint.schema.md @@ -19,3 +19,4 @@ ## Definitions + diff --git a/fast/stages/1-resman/schemas/fast-stage2.schema.md b/fast/stages/1-resman/schemas/fast-stage2.schema.md index f2cc5861a..281725808 100644 --- a/fast/stages/1-resman/schemas/fast-stage2.schema.md +++ b/fast/stages/1-resman/schemas/fast-stage2.schema.md @@ -65,11 +65,13 @@
*additional properties: false* - **environment**: *string* - **principal**: *string* +
*pattern: ^(?:domain:|group:|serviceAccount:|user:|principal:|principalSet:|[a-z])* - **iam_viewer**: *array* - items: *object*
*additional properties: false* - **environment**: *string* - **principal**: *string* +
*pattern: ^(?:domain:|group:|serviceAccount:|user:|principal:|principalSet:|[a-z])* ## Definitions @@ -77,13 +79,16 @@
*additional properties: false* - **`^(?:roles/|[a-z_]+)`**: *array* - items: *string* +
*pattern: ^(?:domain:|group:|serviceAccount:|user:|principal:|principalSet:|[a-z])* - **iam_bindings**: *object*
*additional properties: false* - **`^[a-z0-9_-]+$`**: *object*
*additional properties: false* - **members**: *array* - items: *string* +
*pattern: ^(?:domain:|group:|serviceAccount:|user:|principal:|principalSet:|[a-z])* - **role**: *string* +
*pattern: ^(?:roles/|[a-z])* - **condition**: *object*
*additional properties: false* - ⁺**expression**: *string* @@ -94,7 +99,9 @@ - **`^[a-z0-9_-]+$`**: *object*
*additional properties: false* - **member**: *string* +
*pattern: ^(?:domain:|group:|serviceAccount:|user:|principal:|principalSet:|[a-z])* - **role**: *string* +
*pattern: ^(?:roles/|[a-z])* - **condition**: *object*
*additional properties: false* - ⁺**expression**: *string* @@ -103,4 +110,5 @@ - **iam_by_principals**: *object*
*additional properties: false* - **`^[a-z]+[a-z-]+$`**: *array* - - items: *string* \ No newline at end of file + - items: *string* +
*pattern: ^(?:roles/|[a-z_]+)* diff --git a/fast/stages/1-resman/schemas/fast-stage3.schema.md b/fast/stages/1-resman/schemas/fast-stage3.schema.md index e5e57c922..8ec10092c 100644 --- a/fast/stages/1-resman/schemas/fast-stage3.schema.md +++ b/fast/stages/1-resman/schemas/fast-stage3.schema.md @@ -61,13 +61,16 @@
*additional properties: false* - **`^(?:roles/|[a-z_]+)`**: *array* - items: *string* +
*pattern: ^(?:domain:|group:|serviceAccount:|user:|principal:|principalSet:|[a-z])* - **iam_bindings**: *object*
*additional properties: false* - **`^[a-z0-9_-]+$`**: *object*
*additional properties: false* - **members**: *array* - items: *string* +
*pattern: ^(?:domain:|group:|serviceAccount:|user:|principal:|principalSet:|[a-z])* - **role**: *string* +
*pattern: ^roles/* - **condition**: *object*
*additional properties: false* - ⁺**expression**: *string* @@ -78,7 +81,9 @@ - **`^[a-z0-9_-]+$`**: *object*
*additional properties: false* - **member**: *string* +
*pattern: ^(?:domain:|group:|serviceAccount:|user:|principal:|principalSet:|[a-z])* - **role**: *string* +
*pattern: ^(?:roles/|[a-z])* - **condition**: *object*
*additional properties: false* - ⁺**expression**: *string* @@ -87,4 +92,5 @@ - **iam_by_principals**: *object*
*additional properties: false* - **`^[a-z]+[a-z-]+$`**: *array* - - items: *string* \ No newline at end of file + - items: *string* +
*pattern: ^(?:roles/|[a-z_]+)* diff --git a/fast/stages/1-resman/schemas/org-policies.schema.md b/fast/stages/1-resman/schemas/org-policies.schema.md index 75f6e72d1..9503c65c3 100644 --- a/fast/stages/1-resman/schemas/org-policies.schema.md +++ b/fast/stages/1-resman/schemas/org-policies.schema.md @@ -30,4 +30,4 @@
*additional properties: false* - **all**: *boolean* - **values**: *array* - - items: *string* \ No newline at end of file + - items: *string* diff --git a/fast/stages/1-resman/schemas/top-level-folder.schema.md b/fast/stages/1-resman/schemas/top-level-folder.schema.md index 5a85e6cf6..a14f5a941 100644 --- a/fast/stages/1-resman/schemas/top-level-folder.schema.md +++ b/fast/stages/1-resman/schemas/top-level-folder.schema.md @@ -16,6 +16,7 @@
*additional properties: false* - **`@`**: *array* - items: *string* +
*pattern: ^(?:ALL|SUSPENSION|SECURITY|TECHNICAL|BILLING|LEGAL|PRODUCT_UPDATES)$* - **factories_config**: *object*
*additional properties: false* - **org_policies**: *string* @@ -36,6 +37,7 @@
*additional properties: false* - **exempted_members**: *array* - items: *string* +
*pattern: @* - **logging_exclusions**: *object* *additional properties: String* - **logging_settings**: *object* @@ -81,13 +83,16 @@
*additional properties: false* - **`^(?:roles/|[a-z_]+)`**: *array* - items: *string* +
*pattern: ^(?:domain:|group:|serviceAccount:|user:|principal:|principalSet:|project-factory|project-factory-dev|project-factory-prod|networking|security|vpcsc|self)* - **iam_bindings**: *object*
*additional properties: false* - **`^[a-z0-9_-]+$`**: *object*
*additional properties: false* - **members**: *array* - items: *string* +
*pattern: ^(?:domain:|group:|serviceAccount:|user:|principal:|principalSet:|project-factory|project-factory-dev|project-factory-prod|networking|security|vpcsc|self)* - **role**: *string* +
*pattern: ^(?:roles/|[a-z_]+)* - **condition**: *object*
*additional properties: false* - ⁺**expression**: *string* @@ -98,7 +103,9 @@ - **`^[a-z0-9_-]+$`**: *object*
*additional properties: false* - **member**: *string* +
*pattern: ^(?:domain:|group:|serviceAccount:|user:|principal:|principalSet:|project-factory|project-factory-dev|project-factory-prod|networking|security|vpcsc|self)* - **role**: *string* +
*pattern: ^(?:roles/|[a-z_]+)* - **condition**: *object*
*additional properties: false* - ⁺**expression**: *string* @@ -107,4 +114,5 @@ - **iam_by_principals**: *object*
*additional properties: false* - **`^[a-z]+[a-z-]+$`**: *array* - - items: *string* \ No newline at end of file + - items: *string* +
*pattern: ^(?:roles/|[a-z_]+)* diff --git a/fast/stages/1-vpcsc/schemas/access-level.schema.md b/fast/stages/1-vpcsc/schemas/access-level.schema.md index 052c0b1a5..0447fe6f8 100644 --- a/fast/stages/1-vpcsc/schemas/access-level.schema.md +++ b/fast/stages/1-vpcsc/schemas/access-level.schema.md @@ -41,3 +41,4 @@ ## Definitions + diff --git a/fast/stages/1-vpcsc/schemas/egress-policy.schema.md b/fast/stages/1-vpcsc/schemas/egress-policy.schema.md index 69f2585dc..727083e89 100644 --- a/fast/stages/1-vpcsc/schemas/egress-policy.schema.md +++ b/fast/stages/1-vpcsc/schemas/egress-policy.schema.md @@ -15,6 +15,7 @@
*enum: ['IDENTITY_TYPE_UNSPECIFIED', 'ANY_IDENTITY', 'ANY_USER_ACCOUNT', 'ANY_SERVICE_ACCOUNT', '']* - **identities**: *array* - items: *string* +
*pattern: ^(?:serviceAccount:|user:|group:|principal:)* - **resources**: *array* - items: *string* - ⁺**to**: *object* @@ -36,3 +37,4 @@ ## Definitions + diff --git a/fast/stages/1-vpcsc/schemas/ingress-policy.schema.md b/fast/stages/1-vpcsc/schemas/ingress-policy.schema.md index c1208bf8c..e34fec911 100644 --- a/fast/stages/1-vpcsc/schemas/ingress-policy.schema.md +++ b/fast/stages/1-vpcsc/schemas/ingress-policy.schema.md @@ -32,3 +32,4 @@ ## Definitions + diff --git a/fast/stages/1-vpcsc/schemas/perimeter.schema.md b/fast/stages/1-vpcsc/schemas/perimeter.schema.md index cd6a5f8de..d77c8c0f2 100644 --- a/fast/stages/1-vpcsc/schemas/perimeter.schema.md +++ b/fast/stages/1-vpcsc/schemas/perimeter.schema.md @@ -7,7 +7,7 @@ *additional properties: false* - **description**: *string* -- **title**: *string* +- **ignore_resource_changes**: *boolean* - **spec**: *object*
*additional properties: false* - **access_levels**: *array* @@ -34,6 +34,7 @@ - **restricted_services**: *array* - items: *string* - **vpc_accessible_services**: *reference([VpcAccessibleServices](#refs-VpcAccessibleServices))* +- **title**: *string* - **use_explicit_dry_run_spec**: *boolean* ## Definitions @@ -42,4 +43,4 @@
*additional properties: false* - ⁺**allowed_services**: *array* - items: *string* - - **enable_restriction**: *boolean* \ No newline at end of file + - **enable_restriction**: *boolean* diff --git a/fast/stages/2-networking-a-simple/schemas/firewall-policy-rules.schema.md b/fast/stages/2-networking-a-simple/schemas/firewall-policy-rules.schema.md index 45a4a996d..7f72121df 100644 --- a/fast/stages/2-networking-a-simple/schemas/firewall-policy-rules.schema.md +++ b/fast/stages/2-networking-a-simple/schemas/firewall-policy-rules.schema.md @@ -46,4 +46,4 @@ - items: *object*
*additional properties: false* - **protocol**: *string* - - **ports**: *array* \ No newline at end of file + - **ports**: *array* diff --git a/fast/stages/2-networking-a-simple/schemas/firewall-rules.schema.md b/fast/stages/2-networking-a-simple/schemas/firewall-rules.schema.md index 2e3a0df0a..40dd6d8e8 100644 --- a/fast/stages/2-networking-a-simple/schemas/firewall-rules.schema.md +++ b/fast/stages/2-networking-a-simple/schemas/firewall-rules.schema.md @@ -38,4 +38,5 @@
*additional properties: false* - **protocol**: *string* - **ports**: *array* - - items: *number* \ No newline at end of file + - items: *(integer|string)* +
*pattern: `^[0-9]+(?:-[0-9]+)?$`* diff --git a/fast/stages/2-networking-a-simple/schemas/subnet.schema.md b/fast/stages/2-networking-a-simple/schemas/subnet.schema.md index d5207a8c1..66286ef8e 100644 --- a/fast/stages/2-networking-a-simple/schemas/subnet.schema.md +++ b/fast/stages/2-networking-a-simple/schemas/subnet.schema.md @@ -39,13 +39,16 @@
*additional properties: false* - **`^roles/`**: *array* - items: *string* +
*pattern: ^(?:domain:|group:|serviceAccount:|user:|principal:|principalSet:|ro|rw)* - **iam_bindings**: *object*
*additional properties: false* - **`^[a-z0-9_-]+$`**: *object*
*additional properties: false* - **members**: *array* - items: *string* +
*pattern: ^(?:domain:|group:|serviceAccount:|user:|principal:|principalSet:|ro|rw)* - **role**: *string* +
*pattern: ^roles/* - **condition**: *object*
*additional properties: false* - ⁺**expression**: *string* @@ -56,9 +59,11 @@ - **`^[a-z0-9_-]+$`**: *object*
*additional properties: false* - **member**: *string* +
*pattern: ^(?:domain:|group:|serviceAccount:|user:|principal:|principalSet:|ro|rw)* - **role**: *string* +
*pattern: ^roles/* - **condition**: *object*
*additional properties: false* - ⁺**expression**: *string* - ⁺**title**: *string* - - **description**: *string* \ No newline at end of file + - **description**: *string* diff --git a/fast/stages/2-networking-b-nva/schemas/firewall-policy-rules.schema.md b/fast/stages/2-networking-b-nva/schemas/firewall-policy-rules.schema.md index 45a4a996d..7f72121df 100644 --- a/fast/stages/2-networking-b-nva/schemas/firewall-policy-rules.schema.md +++ b/fast/stages/2-networking-b-nva/schemas/firewall-policy-rules.schema.md @@ -46,4 +46,4 @@ - items: *object*
*additional properties: false* - **protocol**: *string* - - **ports**: *array* \ No newline at end of file + - **ports**: *array* diff --git a/fast/stages/2-networking-b-nva/schemas/firewall-rules.schema.md b/fast/stages/2-networking-b-nva/schemas/firewall-rules.schema.md index 2e3a0df0a..40dd6d8e8 100644 --- a/fast/stages/2-networking-b-nva/schemas/firewall-rules.schema.md +++ b/fast/stages/2-networking-b-nva/schemas/firewall-rules.schema.md @@ -38,4 +38,5 @@
*additional properties: false* - **protocol**: *string* - **ports**: *array* - - items: *number* \ No newline at end of file + - items: *(integer|string)* +
*pattern: `^[0-9]+(?:-[0-9]+)?$`* diff --git a/fast/stages/2-networking-b-nva/schemas/subnet.schema.md b/fast/stages/2-networking-b-nva/schemas/subnet.schema.md index d5207a8c1..66286ef8e 100644 --- a/fast/stages/2-networking-b-nva/schemas/subnet.schema.md +++ b/fast/stages/2-networking-b-nva/schemas/subnet.schema.md @@ -39,13 +39,16 @@
*additional properties: false* - **`^roles/`**: *array* - items: *string* +
*pattern: ^(?:domain:|group:|serviceAccount:|user:|principal:|principalSet:|ro|rw)* - **iam_bindings**: *object*
*additional properties: false* - **`^[a-z0-9_-]+$`**: *object*
*additional properties: false* - **members**: *array* - items: *string* +
*pattern: ^(?:domain:|group:|serviceAccount:|user:|principal:|principalSet:|ro|rw)* - **role**: *string* +
*pattern: ^roles/* - **condition**: *object*
*additional properties: false* - ⁺**expression**: *string* @@ -56,9 +59,11 @@ - **`^[a-z0-9_-]+$`**: *object*
*additional properties: false* - **member**: *string* +
*pattern: ^(?:domain:|group:|serviceAccount:|user:|principal:|principalSet:|ro|rw)* - **role**: *string* +
*pattern: ^roles/* - **condition**: *object*
*additional properties: false* - ⁺**expression**: *string* - ⁺**title**: *string* - - **description**: *string* \ No newline at end of file + - **description**: *string* diff --git a/fast/stages/2-networking-c-separate-envs/schemas/firewall-policy-rules.schema.md b/fast/stages/2-networking-c-separate-envs/schemas/firewall-policy-rules.schema.md index 45a4a996d..7f72121df 100644 --- a/fast/stages/2-networking-c-separate-envs/schemas/firewall-policy-rules.schema.md +++ b/fast/stages/2-networking-c-separate-envs/schemas/firewall-policy-rules.schema.md @@ -46,4 +46,4 @@ - items: *object*
*additional properties: false* - **protocol**: *string* - - **ports**: *array* \ No newline at end of file + - **ports**: *array* diff --git a/fast/stages/2-networking-c-separate-envs/schemas/firewall-rules.schema.md b/fast/stages/2-networking-c-separate-envs/schemas/firewall-rules.schema.md index 2e3a0df0a..40dd6d8e8 100644 --- a/fast/stages/2-networking-c-separate-envs/schemas/firewall-rules.schema.md +++ b/fast/stages/2-networking-c-separate-envs/schemas/firewall-rules.schema.md @@ -38,4 +38,5 @@
*additional properties: false* - **protocol**: *string* - **ports**: *array* - - items: *number* \ No newline at end of file + - items: *(integer|string)* +
*pattern: `^[0-9]+(?:-[0-9]+)?$`* diff --git a/fast/stages/2-networking-c-separate-envs/schemas/subnet.schema.md b/fast/stages/2-networking-c-separate-envs/schemas/subnet.schema.md index d5207a8c1..66286ef8e 100644 --- a/fast/stages/2-networking-c-separate-envs/schemas/subnet.schema.md +++ b/fast/stages/2-networking-c-separate-envs/schemas/subnet.schema.md @@ -39,13 +39,16 @@
*additional properties: false* - **`^roles/`**: *array* - items: *string* +
*pattern: ^(?:domain:|group:|serviceAccount:|user:|principal:|principalSet:|ro|rw)* - **iam_bindings**: *object*
*additional properties: false* - **`^[a-z0-9_-]+$`**: *object*
*additional properties: false* - **members**: *array* - items: *string* +
*pattern: ^(?:domain:|group:|serviceAccount:|user:|principal:|principalSet:|ro|rw)* - **role**: *string* +
*pattern: ^roles/* - **condition**: *object*
*additional properties: false* - ⁺**expression**: *string* @@ -56,9 +59,11 @@ - **`^[a-z0-9_-]+$`**: *object*
*additional properties: false* - **member**: *string* +
*pattern: ^(?:domain:|group:|serviceAccount:|user:|principal:|principalSet:|ro|rw)* - **role**: *string* +
*pattern: ^roles/* - **condition**: *object*
*additional properties: false* - ⁺**expression**: *string* - ⁺**title**: *string* - - **description**: *string* \ No newline at end of file + - **description**: *string* diff --git a/fast/stages/2-project-factory/schemas/budget.schema.md b/fast/stages/2-project-factory/schemas/budget.schema.md index 826f067fd..33bb16038 100644 --- a/fast/stages/2-project-factory/schemas/budget.schema.md +++ b/fast/stages/2-project-factory/schemas/budget.schema.md @@ -59,4 +59,4 @@
*additional properties: false* - **day**: *number* - **month**: *number* - - **year**: *number* \ No newline at end of file + - **year**: *number* diff --git a/fast/stages/2-project-factory/schemas/folder.schema.md b/fast/stages/2-project-factory/schemas/folder.schema.md index b771e6a34..7ea4d8c0c 100644 --- a/fast/stages/2-project-factory/schemas/folder.schema.md +++ b/fast/stages/2-project-factory/schemas/folder.schema.md @@ -47,13 +47,16 @@
*additional properties: false* - **`^roles/`**: *array* - items: *string* +
*pattern: ^(?:domain:|group:|serviceAccount:|user:|principal:|principalSet:|[a-z])* - **iam_bindings**: *object*
*additional properties: false* - **`^[a-z0-9_-]+$`**: *object*
*additional properties: false* - **members**: *array* - items: *string* +
*pattern: ^(?:domain:|group:|serviceAccount:|user:|principal:|principalSet:|[a-z])* - **role**: *string* +
*pattern: ^roles/* - **condition**: *object*
*additional properties: false* - ⁺**expression**: *string* @@ -64,7 +67,9 @@ - **`^[a-z0-9_-]+$`**: *object*
*additional properties: false* - **member**: *string* +
*pattern: ^(?:domain:|group:|serviceAccount:|user:|principal:|principalSet:|[a-z])* - **role**: *string* +
*pattern: ^roles/* - **condition**: *object*
*additional properties: false* - ⁺**expression**: *string* @@ -73,4 +78,5 @@ - **iam_by_principals**: *object*
*additional properties: false* - **`^(?:domain:|group:|serviceAccount:|user:|principal:|principalSet:|[a-z])`**: *array* - - items: *string* \ No newline at end of file + - items: *string* +
*pattern: ^roles/* diff --git a/fast/stages/2-project-factory/schemas/project.schema.md b/fast/stages/2-project-factory/schemas/project.schema.md index 795929797..46ecae688 100644 --- a/fast/stages/2-project-factory/schemas/project.schema.md +++ b/fast/stages/2-project-factory/schemas/project.schema.md @@ -8,6 +8,7 @@ - **automation**: *object*
*additional properties: false* + - **prefix**: *string* - ⁺**project**: *string* - **bucket**: *reference([bucket](#refs-bucket))* - **service_accounts**: *object* @@ -86,12 +87,14 @@ - **iam_self_roles**: *array* - items: *string* - **iam_project_roles**: *reference([iam_project_roles](#refs-iam_project_roles))* + - **iam_sa_roles**: *reference([iam_sa_roles](#refs-iam_sa_roles))* - **service_encryption_key_ids**: *object*
*additional properties: false* - **`^[a-z-]+\.googleapis\.com$`**: *array* - items: *string* - **services**: *array* - items: *string* +
*pattern: ^[a-z-]+\.googleapis\.com$* - **shared_vpc_host_config**: *object*
*additional properties: false* - ⁺**enabled**: *boolean* @@ -146,13 +149,16 @@
*additional properties: false* - **`^roles/`**: *array* - items: *string* +
*pattern: ^(?:domain:|group:|serviceAccount:|user:|principal:|principalSet:|[a-z])* - **iam_bindings**: *object*
*additional properties: false* - **`^[a-z0-9_-]+$`**: *object*
*additional properties: false* - **members**: *array* - items: *string* +
*pattern: ^(?:domain:|group:|serviceAccount:|user:|principal:|principalSet:|[a-z])* - **role**: *string* +
*pattern: ^roles/* - **condition**: *object*
*additional properties: false* - ⁺**expression**: *string* @@ -163,7 +169,9 @@ - **`^[a-z0-9_-]+$`**: *object*
*additional properties: false* - **member**: *string* +
*pattern: ^(?:domain:|group:|serviceAccount:|user:|principal:|principalSet:|[a-z])* - **role**: *string* +
*pattern: ^roles/* - **condition**: *object*
*additional properties: false* - ⁺**expression**: *string* @@ -173,6 +181,7 @@
*additional properties: false* - **`^(?:domain:|group:|serviceAccount:|user:|principal:|principalSet:|[a-z])`**: *array* - items: *string* +
*pattern: ^roles/* - **iam_billing_roles**: *object*
*additional properties: false* - **`^[a-z0-9-]+$`**: *array* @@ -196,4 +205,4 @@ - **iam_storage_roles**: *object*
*additional properties: false* - **`^[a-z0-9-]+$`**: *array* - - items: *string* \ No newline at end of file + - items: *string* diff --git a/fast/stages/3-data-platform-dev/schemas/aspect-type.schema.md b/fast/stages/3-data-platform-dev/schemas/aspect-type.schema.md index 2f7cfed1c..aac35ac75 100644 --- a/fast/stages/3-data-platform-dev/schemas/aspect-type.schema.md +++ b/fast/stages/3-data-platform-dev/schemas/aspect-type.schema.md @@ -20,13 +20,16 @@
*additional properties: false* - **`^roles/`**: *array* - items: *string* +
*pattern: ^(?:domain:|group:|serviceAccount:|user:|principal:|principalSet:|[a-z])* - **iam_bindings**: *object*
*additional properties: false* - **`^[a-z0-9_-]+$`**: *object*
*additional properties: false* - **members**: *array* - items: *string* +
*pattern: ^(?:domain:|group:|serviceAccount:|user:|principal:|principalSet:|[a-z])* - **role**: *string* +
*pattern: ^roles/* - **condition**: *object*
*additional properties: false* - ⁺**expression**: *string* @@ -37,9 +40,11 @@ - **`^[a-z0-9_-]+$`**: *object*
*additional properties: false* - **member**: *string* +
*pattern: ^(?:domain:|group:|serviceAccount:|user:|principal:|principalSet:|[a-z])* - **role**: *string* +
*pattern: ^roles/* - **condition**: *object*
*additional properties: false* - ⁺**expression**: *string* - ⁺**title**: *string* - - **description**: *string* \ No newline at end of file + - **description**: *string* diff --git a/fast/stages/3-data-platform-dev/schemas/data-domain.schema.md b/fast/stages/3-data-platform-dev/schemas/data-domain.schema.md index fa31d74cf..cf401daa3 100644 --- a/fast/stages/3-data-platform-dev/schemas/data-domain.schema.md +++ b/fast/stages/3-data-platform-dev/schemas/data-domain.schema.md @@ -13,6 +13,7 @@ - **location**: *string* - **impersonation_principals**: *array* - items: *string* +
*pattern: ^(?:domain:|group:|serviceAccount:|user:|principal:|principalSet:|[a-z])* - **deploy_config**: *object*
*additional properties: false* - **composer**: *object* @@ -20,7 +21,7 @@ - **encryption_key**: *string* - **environment_size**: *string*
*default: ENVIRONMENT_SIZE_SMALL*, *enum: ['ENVIRONMENT_SIZE_SMALL', 'ENVIRONMENT_SIZE_MEDIUM', 'ENVIRONMENT_SIZE_LARGE']* - - ⁺**node_config**: *object* + - **node_config**: *object*
*additional properties: false* - **service_account**: *string* - ⁺**network**: *string* @@ -89,13 +90,16 @@
*additional properties: false* - **`^(?:roles/|[a-z_]+)`**: *array* - items: *string* +
*pattern: ^(?:domain:|group:|serviceAccount:|user:|principal:|principalSet:|[a-z])* - **iam_bindings**: *object*
*additional properties: false* - **`^[a-z0-9_-]+$`**: *object*
*additional properties: false* - **members**: *array* - items: *string* +
*pattern: ^(?:domain:|group:|serviceAccount:|user:|principal:|principalSet:|[a-z])* - **role**: *string* +
*pattern: ^(?:roles/|[a-z])* - **condition**: *object*
*additional properties: false* - ⁺**expression**: *string* @@ -106,7 +110,9 @@ - **`^[a-z0-9_-]+$`**: *object*
*additional properties: false* - **member**: *string* +
*pattern: ^(?:domain:|group:|serviceAccount:|user:|principal:|principalSet:|[a-z])* - **role**: *string* +
*pattern: ^(?:roles/|[a-z])* - **condition**: *object*
*additional properties: false* - ⁺**expression**: *string* @@ -116,7 +122,8 @@
*additional properties: false* - **`^[a-z]+[a-z0-9-]+$`**: *array* - items: *string* +
*pattern: ^(?:roles/|[a-z_]+)* - **iam_storage_roles**: *object*
*additional properties: false* - **`^[a-z0-9-]+$`**: *array* - - items: *string* \ No newline at end of file + - items: *string* diff --git a/fast/stages/3-data-platform-dev/schemas/data-product.schema.md b/fast/stages/3-data-platform-dev/schemas/data-product.schema.md index 96dc0fa77..32f09f86e 100644 --- a/fast/stages/3-data-platform-dev/schemas/data-product.schema.md +++ b/fast/stages/3-data-platform-dev/schemas/data-product.schema.md @@ -11,6 +11,7 @@ - **location**: *string* - **impersonation_principals**: *array* - items: *string* +
*pattern: ^(?:domain:|group:|serviceAccount:|user:|principal:|principalSet:|[a-z])* - **exposure_layer**: *object*
*additional properties: false* - **bigquery**: *object* @@ -64,13 +65,16 @@
*additional properties: false* - **`^(?:roles/|[a-z_]+)`**: *array* - items: *string* +
*pattern: ^(?:domain:|group:|serviceAccount:|user:|principal:|principalSet:|[a-z])* - **iam_bindings**: *object*
*additional properties: false* - **`^[a-z0-9_-]+$`**: *object*
*additional properties: false* - **members**: *array* - items: *string* +
*pattern: ^(?:domain:|group:|serviceAccount:|user:|principal:|principalSet:|[a-z])* - **role**: *string* +
*pattern: ^(?:roles/|[a-z])* - **condition**: *object*
*additional properties: false* - ⁺**expression**: *string* @@ -81,7 +85,9 @@ - **`^[a-z0-9_-]+$`**: *object*
*additional properties: false* - **member**: *string* +
*pattern: ^(?:domain:|group:|serviceAccount:|user:|principal:|principalSet:|[a-z])* - **role**: *string* +
*pattern: ^(?:roles/|[a-z])* - **condition**: *object*
*additional properties: false* - ⁺**expression**: *string* @@ -91,7 +97,8 @@
*additional properties: false* - **`^[a-z]+[a-z0-9-]+$`**: *array* - items: *string* +
*pattern: ^(?:roles/|[a-z_]+)* - **iam_storage_roles**: *object*
*additional properties: false* - **`^[a-z0-9-]+$`**: *array* - - items: *string* \ No newline at end of file + - items: *string* diff --git a/modules/billing-account/schemas/budget.schema.md b/modules/billing-account/schemas/budget.schema.md index 826f067fd..33bb16038 100644 --- a/modules/billing-account/schemas/budget.schema.md +++ b/modules/billing-account/schemas/budget.schema.md @@ -59,4 +59,4 @@
*additional properties: false* - **day**: *number* - **month**: *number* - - **year**: *number* \ No newline at end of file + - **year**: *number* diff --git a/modules/data-catalog-tag-template/schemas/tag-template.schema.md b/modules/data-catalog-tag-template/schemas/tag-template.schema.md index 8a9b01cda..6159ea824 100644 --- a/modules/data-catalog-tag-template/schemas/tag-template.schema.md +++ b/modules/data-catalog-tag-template/schemas/tag-template.schema.md @@ -31,13 +31,16 @@
*additional properties: false* - **`^roles/`**: *array* - items: *string* +
*pattern: ^(?:domain:|group:|serviceAccount:|user:|principal:|principalSet:|[a-z])* - **iam_bindings**: *object*
*additional properties: false* - **`^[a-z0-9_-]+$`**: *object*
*additional properties: false* - **members**: *array* - items: *string* +
*pattern: ^(?:domain:|group:|serviceAccount:|user:|principal:|principalSet:|[a-z])* - **role**: *string* +
*pattern: ^roles/* - **condition**: *object*
*additional properties: false* - ⁺**expression**: *string* @@ -48,7 +51,9 @@ - **`^[a-z0-9_-]+$`**: *object*
*additional properties: false* - **member**: *string* +
*pattern: ^(?:domain:|group:|serviceAccount:|user:|principal:|principalSet:|[a-z])* - **role**: *string* +
*pattern: ^roles/* - **condition**: *object*
*additional properties: false* - ⁺**expression**: *string* @@ -57,4 +62,5 @@ - **iam_by_principals**: *object*
*additional properties: false* - **`^(?:domain:|group:|serviceAccount:|user:|principal:|principalSet:|[a-z])`**: *array* - - items: *string* \ No newline at end of file + - items: *string* +
*pattern: ^roles/* diff --git a/modules/dataplex-aspect-types/schemas/aspect-type.schema.md b/modules/dataplex-aspect-types/schemas/aspect-type.schema.md index 2f7cfed1c..aac35ac75 100644 --- a/modules/dataplex-aspect-types/schemas/aspect-type.schema.md +++ b/modules/dataplex-aspect-types/schemas/aspect-type.schema.md @@ -20,13 +20,16 @@
*additional properties: false* - **`^roles/`**: *array* - items: *string* +
*pattern: ^(?:domain:|group:|serviceAccount:|user:|principal:|principalSet:|[a-z])* - **iam_bindings**: *object*
*additional properties: false* - **`^[a-z0-9_-]+$`**: *object*
*additional properties: false* - **members**: *array* - items: *string* +
*pattern: ^(?:domain:|group:|serviceAccount:|user:|principal:|principalSet:|[a-z])* - **role**: *string* +
*pattern: ^roles/* - **condition**: *object*
*additional properties: false* - ⁺**expression**: *string* @@ -37,9 +40,11 @@ - **`^[a-z0-9_-]+$`**: *object*
*additional properties: false* - **member**: *string* +
*pattern: ^(?:domain:|group:|serviceAccount:|user:|principal:|principalSet:|[a-z])* - **role**: *string* +
*pattern: ^roles/* - **condition**: *object*
*additional properties: false* - ⁺**expression**: *string* - ⁺**title**: *string* - - **description**: *string* \ No newline at end of file + - **description**: *string* diff --git a/modules/folder/schemas/org-policies.schema.md b/modules/folder/schemas/org-policies.schema.md index 75f6e72d1..9503c65c3 100644 --- a/modules/folder/schemas/org-policies.schema.md +++ b/modules/folder/schemas/org-policies.schema.md @@ -30,4 +30,4 @@
*additional properties: false* - **all**: *boolean* - **values**: *array* - - items: *string* \ No newline at end of file + - items: *string* diff --git a/modules/net-firewall-policy/schemas/firewall-policy-rules.schema.md b/modules/net-firewall-policy/schemas/firewall-policy-rules.schema.md index 45a4a996d..7f72121df 100644 --- a/modules/net-firewall-policy/schemas/firewall-policy-rules.schema.md +++ b/modules/net-firewall-policy/schemas/firewall-policy-rules.schema.md @@ -46,4 +46,4 @@ - items: *object*
*additional properties: false* - **protocol**: *string* - - **ports**: *array* \ No newline at end of file + - **ports**: *array* diff --git a/modules/net-swp/schemas/policy-rule.schema.md b/modules/net-swp/schemas/policy-rule.schema.md index 294ed8fe8..5a8a96936 100644 --- a/modules/net-swp/schemas/policy-rule.schema.md +++ b/modules/net-swp/schemas/policy-rule.schema.md @@ -22,3 +22,4 @@ ## Definitions + diff --git a/modules/net-swp/schemas/url-list.schema.md b/modules/net-swp/schemas/url-list.schema.md index 716ef094c..6f8b0cbaa 100644 --- a/modules/net-swp/schemas/url-list.schema.md +++ b/modules/net-swp/schemas/url-list.schema.md @@ -12,3 +12,4 @@ ## Definitions + diff --git a/modules/net-vpc-factory/schemas/network-project.schema.md b/modules/net-vpc-factory/schemas/network-project.schema.md index 9e12e5274..cbc8e925b 100644 --- a/modules/net-vpc-factory/schemas/network-project.schema.md +++ b/modules/net-vpc-factory/schemas/network-project.schema.md @@ -39,6 +39,7 @@ - items: *string* - **services**: *array* - items: *string* +
*pattern: ^[a-z-]+\.googleapis\.com$* - **org_policies**: *reference([orgPolicies](#refs-orgPolicies))* - **metric_scopes**: *array* - items: *string* @@ -410,7 +411,9 @@ - ⁺**title**: *string* - **description**: *string* - **principalPattern**: *string* +
*pattern: ^(?:domain:|group:|serviceAccount:|user:|principal:|principalSet:|[a-z])* - **rolePattern**: *string* +
*pattern: ^roles/* - **iam**: *object*
*additional properties: false* - **`^roles/`**: *array* @@ -457,4 +460,4 @@
*additional properties: false* - **all**: *boolean* - **values**: *array* - - items: *string* \ No newline at end of file + - items: *string* diff --git a/modules/net-vpc-firewall/schemas/firewall-rules.schema.md b/modules/net-vpc-firewall/schemas/firewall-rules.schema.md index 2e3a0df0a..40dd6d8e8 100644 --- a/modules/net-vpc-firewall/schemas/firewall-rules.schema.md +++ b/modules/net-vpc-firewall/schemas/firewall-rules.schema.md @@ -38,4 +38,5 @@
*additional properties: false* - **protocol**: *string* - **ports**: *array* - - items: *number* \ No newline at end of file + - items: *(integer|string)* +
*pattern: `^[0-9]+(?:-[0-9]+)?$`* diff --git a/modules/net-vpc/schemas/subnet.schema.md b/modules/net-vpc/schemas/subnet.schema.md index d5207a8c1..66286ef8e 100644 --- a/modules/net-vpc/schemas/subnet.schema.md +++ b/modules/net-vpc/schemas/subnet.schema.md @@ -39,13 +39,16 @@
*additional properties: false* - **`^roles/`**: *array* - items: *string* +
*pattern: ^(?:domain:|group:|serviceAccount:|user:|principal:|principalSet:|ro|rw)* - **iam_bindings**: *object*
*additional properties: false* - **`^[a-z0-9_-]+$`**: *object*
*additional properties: false* - **members**: *array* - items: *string* +
*pattern: ^(?:domain:|group:|serviceAccount:|user:|principal:|principalSet:|ro|rw)* - **role**: *string* +
*pattern: ^roles/* - **condition**: *object*
*additional properties: false* - ⁺**expression**: *string* @@ -56,9 +59,11 @@ - **`^[a-z0-9_-]+$`**: *object*
*additional properties: false* - **member**: *string* +
*pattern: ^(?:domain:|group:|serviceAccount:|user:|principal:|principalSet:|ro|rw)* - **role**: *string* +
*pattern: ^roles/* - **condition**: *object*
*additional properties: false* - ⁺**expression**: *string* - ⁺**title**: *string* - - **description**: *string* \ No newline at end of file + - **description**: *string* diff --git a/modules/organization/schemas/custom-role.schema.md b/modules/organization/schemas/custom-role.schema.md index 4be548bca..eda065897 100644 --- a/modules/organization/schemas/custom-role.schema.md +++ b/modules/organization/schemas/custom-role.schema.md @@ -9,6 +9,8 @@ - **name**: *string* - **includedPermissions**: *array* - items: *string* +
*pattern: ^[a-zA-Z-]+\.[a-zA-Z-]+\.[a-zA-Z-]+$* ## Definitions + diff --git a/modules/organization/schemas/org-policies.schema.md b/modules/organization/schemas/org-policies.schema.md index 75f6e72d1..9503c65c3 100644 --- a/modules/organization/schemas/org-policies.schema.md +++ b/modules/organization/schemas/org-policies.schema.md @@ -30,4 +30,4 @@
*additional properties: false* - **all**: *boolean* - **values**: *array* - - items: *string* \ No newline at end of file + - items: *string* diff --git a/modules/organization/schemas/org-policy-custom-constraint.schema.md b/modules/organization/schemas/org-policy-custom-constraint.schema.md index d48e106b6..6b6f33729 100644 --- a/modules/organization/schemas/org-policy-custom-constraint.schema.md +++ b/modules/organization/schemas/org-policy-custom-constraint.schema.md @@ -19,3 +19,4 @@ ## Definitions + diff --git a/modules/project-factory/schemas/budget.schema.md b/modules/project-factory/schemas/budget.schema.md index 826f067fd..33bb16038 100644 --- a/modules/project-factory/schemas/budget.schema.md +++ b/modules/project-factory/schemas/budget.schema.md @@ -59,4 +59,4 @@
*additional properties: false* - **day**: *number* - **month**: *number* - - **year**: *number* \ No newline at end of file + - **year**: *number* diff --git a/modules/project-factory/schemas/folder.schema.md b/modules/project-factory/schemas/folder.schema.md index b771e6a34..7ea4d8c0c 100644 --- a/modules/project-factory/schemas/folder.schema.md +++ b/modules/project-factory/schemas/folder.schema.md @@ -47,13 +47,16 @@
*additional properties: false* - **`^roles/`**: *array* - items: *string* +
*pattern: ^(?:domain:|group:|serviceAccount:|user:|principal:|principalSet:|[a-z])* - **iam_bindings**: *object*
*additional properties: false* - **`^[a-z0-9_-]+$`**: *object*
*additional properties: false* - **members**: *array* - items: *string* +
*pattern: ^(?:domain:|group:|serviceAccount:|user:|principal:|principalSet:|[a-z])* - **role**: *string* +
*pattern: ^roles/* - **condition**: *object*
*additional properties: false* - ⁺**expression**: *string* @@ -64,7 +67,9 @@ - **`^[a-z0-9_-]+$`**: *object*
*additional properties: false* - **member**: *string* +
*pattern: ^(?:domain:|group:|serviceAccount:|user:|principal:|principalSet:|[a-z])* - **role**: *string* +
*pattern: ^roles/* - **condition**: *object*
*additional properties: false* - ⁺**expression**: *string* @@ -73,4 +78,5 @@ - **iam_by_principals**: *object*
*additional properties: false* - **`^(?:domain:|group:|serviceAccount:|user:|principal:|principalSet:|[a-z])`**: *array* - - items: *string* \ No newline at end of file + - items: *string* +
*pattern: ^roles/* diff --git a/modules/project-factory/schemas/project.schema.md b/modules/project-factory/schemas/project.schema.md index ebd629ffc..46ecae688 100644 --- a/modules/project-factory/schemas/project.schema.md +++ b/modules/project-factory/schemas/project.schema.md @@ -94,6 +94,7 @@ - items: *string* - **services**: *array* - items: *string* +
*pattern: ^[a-z-]+\.googleapis\.com$* - **shared_vpc_host_config**: *object*
*additional properties: false* - ⁺**enabled**: *boolean* @@ -148,13 +149,16 @@
*additional properties: false* - **`^roles/`**: *array* - items: *string* +
*pattern: ^(?:domain:|group:|serviceAccount:|user:|principal:|principalSet:|[a-z])* - **iam_bindings**: *object*
*additional properties: false* - **`^[a-z0-9_-]+$`**: *object*
*additional properties: false* - **members**: *array* - items: *string* +
*pattern: ^(?:domain:|group:|serviceAccount:|user:|principal:|principalSet:|[a-z])* - **role**: *string* +
*pattern: ^roles/* - **condition**: *object*
*additional properties: false* - ⁺**expression**: *string* @@ -165,7 +169,9 @@ - **`^[a-z0-9_-]+$`**: *object*
*additional properties: false* - **member**: *string* +
*pattern: ^(?:domain:|group:|serviceAccount:|user:|principal:|principalSet:|[a-z])* - **role**: *string* +
*pattern: ^roles/* - **condition**: *object*
*additional properties: false* - ⁺**expression**: *string* @@ -175,6 +181,7 @@
*additional properties: false* - **`^(?:domain:|group:|serviceAccount:|user:|principal:|principalSet:|[a-z])`**: *array* - items: *string* +
*pattern: ^roles/* - **iam_billing_roles**: *object*
*additional properties: false* - **`^[a-z0-9-]+$`**: *array* @@ -198,4 +205,4 @@ - **iam_storage_roles**: *object*
*additional properties: false* - **`^[a-z0-9-]+$`**: *array* - - items: *string* \ No newline at end of file + - items: *string* diff --git a/modules/project/schemas/custom-role.schema.md b/modules/project/schemas/custom-role.schema.md index 4be548bca..eda065897 100644 --- a/modules/project/schemas/custom-role.schema.md +++ b/modules/project/schemas/custom-role.schema.md @@ -9,6 +9,8 @@ - **name**: *string* - **includedPermissions**: *array* - items: *string* +
*pattern: ^[a-zA-Z-]+\.[a-zA-Z-]+\.[a-zA-Z-]+$* ## Definitions + diff --git a/modules/project/schemas/observability.schema.md b/modules/project/schemas/observability.schema.md index 37236fc2e..14f9826a2 100644 --- a/modules/project/schemas/observability.schema.md +++ b/modules/project/schemas/observability.schema.md @@ -163,4 +163,4 @@ - **trigger**: *object*
*additional properties: false* - **count**: *number* - - **percent**: *number* \ No newline at end of file + - **percent**: *number* diff --git a/modules/project/schemas/org-policies.schema.md b/modules/project/schemas/org-policies.schema.md index 75f6e72d1..9503c65c3 100644 --- a/modules/project/schemas/org-policies.schema.md +++ b/modules/project/schemas/org-policies.schema.md @@ -30,4 +30,4 @@
*additional properties: false* - **all**: *boolean* - **values**: *array* - - items: *string* \ No newline at end of file + - items: *string* diff --git a/modules/project/schemas/quotas.schema.md b/modules/project/schemas/quotas.schema.md index a4a5a9f53..976c16b43 100644 --- a/modules/project/schemas/quotas.schema.md +++ b/modules/project/schemas/quotas.schema.md @@ -22,3 +22,4 @@ ## Definitions + diff --git a/modules/vpc-sc/schemas/access-level.schema.md b/modules/vpc-sc/schemas/access-level.schema.md index 052c0b1a5..0447fe6f8 100644 --- a/modules/vpc-sc/schemas/access-level.schema.md +++ b/modules/vpc-sc/schemas/access-level.schema.md @@ -41,3 +41,4 @@ ## Definitions + diff --git a/modules/vpc-sc/schemas/egress-policy.schema.md b/modules/vpc-sc/schemas/egress-policy.schema.md index 69f2585dc..727083e89 100644 --- a/modules/vpc-sc/schemas/egress-policy.schema.md +++ b/modules/vpc-sc/schemas/egress-policy.schema.md @@ -15,6 +15,7 @@
*enum: ['IDENTITY_TYPE_UNSPECIFIED', 'ANY_IDENTITY', 'ANY_USER_ACCOUNT', 'ANY_SERVICE_ACCOUNT', '']* - **identities**: *array* - items: *string* +
*pattern: ^(?:serviceAccount:|user:|group:|principal:)* - **resources**: *array* - items: *string* - ⁺**to**: *object* @@ -36,3 +37,4 @@ ## Definitions + diff --git a/modules/vpc-sc/schemas/ingress-policy.schema.md b/modules/vpc-sc/schemas/ingress-policy.schema.md index c1208bf8c..e34fec911 100644 --- a/modules/vpc-sc/schemas/ingress-policy.schema.md +++ b/modules/vpc-sc/schemas/ingress-policy.schema.md @@ -32,3 +32,4 @@ ## Definitions + diff --git a/modules/vpc-sc/schemas/perimeters.schema.md b/modules/vpc-sc/schemas/perimeters.schema.md index cd6a5f8de..d77c8c0f2 100644 --- a/modules/vpc-sc/schemas/perimeters.schema.md +++ b/modules/vpc-sc/schemas/perimeters.schema.md @@ -7,7 +7,7 @@ *additional properties: false* - **description**: *string* -- **title**: *string* +- **ignore_resource_changes**: *boolean* - **spec**: *object*
*additional properties: false* - **access_levels**: *array* @@ -34,6 +34,7 @@ - **restricted_services**: *array* - items: *string* - **vpc_accessible_services**: *reference([VpcAccessibleServices](#refs-VpcAccessibleServices))* +- **title**: *string* - **use_explicit_dry_run_spec**: *boolean* ## Definitions @@ -42,4 +43,4 @@
*additional properties: false* - ⁺**allowed_services**: *array* - items: *string* - - **enable_restriction**: *boolean* \ No newline at end of file + - **enable_restriction**: *boolean* diff --git a/tools/schema_docs.py b/tools/schema_docs.py index f366e0dd6..ec52fd803 100755 --- a/tools/schema_docs.py +++ b/tools/schema_docs.py @@ -28,24 +28,30 @@ DOC = '\n\n'.join( Array = collections.namedtuple('Array', 'name items default', defaults=[None]) Boolean = collections.namedtuple('Boolean', 'name default') Integer = collections.namedtuple('Integer', 'name default enum') +AnyOf = collections.namedtuple('AnyOf', 'name default pattern types') Number = collections.namedtuple('Number', 'name default enum') Object = collections.namedtuple( 'Object', 'name required additional pattern properties defs') Reference = collections.namedtuple('Reference', 'name to') -String = collections.namedtuple('String', 'name default enum') +String = collections.namedtuple('String', 'name default enum pattern') def parse_node(node, name=None): logging.debug(f'parse {name} type {node.get("type")}') name = name or node.get('title') el_type = node.get('type') + default = node.get('default') + enum = node.get('enum') + pattern = node.get('pattern') + if isinstance(el_type, list): + return AnyOf(name, default, pattern, el_type) match el_type: case 'array': items = node.get('items') items = parse_node(items, 'items') if items else None - el = Array(name, items, node.get('default')) + el = Array(name, items, default) case 'boolean': - el = Boolean(name, node.get('default')) + el = Boolean(name, default) case 'object': additional = node.get('additionalProperties') if isinstance(additional, dict): @@ -64,11 +70,11 @@ def parse_node(node, name=None): for k, v in defs.items(): el.defs.append(parse_node(v, k)) case 'integer': - el = Integer(name, node.get('default'), node.get('enum')) + el = Integer(name, default, enum) case 'number': - el = Number(name, node.get('default'), node.get('enum')) + el = Number(name, default, enum) case 'string': - el = String(name, node.get('default'), node.get('enum')) + el = String(name, default, enum, pattern) case _: ref = node.get('$ref') if ref: @@ -117,12 +123,18 @@ def render_node(el, level=0, required=False, f_name=lambda f: f'**{f}**'): case 'reference': buffer[-1] = ( f'{indent}- {f_name(el.name)}: *reference([{el.to}](#refs-{el.to}))*') + case 'anyof': + buffer[-1] = f'{indent}- {r}{f_name(el.name)}: *({"|".join(el.types)})*' + if el.pattern: + buffer.append(f'{indent}
*pattern: `{el.pattern}`*') case 'integer' | 'number' | 'string': details = [] if el.default: details.append(f'*default: {el.default}*') if el.enum: details.append(f'*enum: {el.enum}*') + if getattr(el, 'pattern', None): + details.append(f'*pattern: {el.pattern}*') if details: buffer.append(f'{indent}
{", ".join(details)}') if level == 0: @@ -149,7 +161,7 @@ def main(paths=None): doc = DOC.format(title=schema.get('title'), properties=props, definitions=defs or '') f_doc = f.with_suffix('.md') - f_doc.write_text(doc) + f_doc.write_text(f'{doc}\n') logging.info(f'doc {f}')