diff --git a/.vscode/settings.json b/.vscode/settings.json index 8e866f0b2..e1240d14a 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -4,5 +4,9 @@ "cSpell.words": [ "OKIT" ], - "svg.preview.background": "transparent" + "svg.preview.background": "transparent", + "sonarlint.connectedMode.project": { + "connectionId": "oracle", + "projectKey": "oracle_oci-designer-toolkit" + } } \ No newline at end of file diff --git a/CHANGELOG.md b/CHANGELOG.md index fd2cb8d3b..e7ac99c20 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,15 @@ # Release Notes +## Version 0.65.0 +**Release Date**: 30th October 2024 +### Features +1. OKIT-Web: Create PCA specific OKIT Cache classes for use when accessing the pca link. +2. OKIT-Ocd: Update initial Azure resources to match released terraform providers. (#OKIT-316) +3. OKIT-Ocd: Update initial Google resources to match released terraform providers . (#OKIT-317) +### Bug Fixes +1. OKIT-Web: Resolve issue with queried node_pool where the availability dodamin was still the full name. (#723) + ## Version 0.64.0 **Release Date**: 30th September 2024 ### Features diff --git a/Dockerfile b/Dockerfile index 28bcebed6..fa259eb9f 100644 --- a/Dockerfile +++ b/Dockerfile @@ -6,7 +6,7 @@ FROM oraclelinux:8 ARG BRANCH=master LABEL "provider"="Oracle" \ "issues"="https://github.com/oracle/oci-designer-toolkit/issues" \ - "version"="0.64.0" \ + "version"="0.65.0" \ "description"="OKIT Web Server Container." \ "copyright"="Copyright (c) 2020, 2024, Oracle and/or its affiliates." # SHELL ["/bin/bash", "-c"] diff --git a/README.md b/README.md index 843f0001c..faeda91b1 100644 --- a/README.md +++ b/README.md @@ -1,9 +1,9 @@ [![License: UPL](https://img.shields.io/badge/license-UPL-green)](https://img.shields.io/badge/license-UPL-green) [![Quality Gate Status](https://sonarcloud.io/api/project_badges/measure?project=oracle_oci-designer-toolkit&metric=alert_status)](https://sonarcloud.io/summary/new_code?id=oracle_oci-designer-toolkit) -# Oracle Cloud Infrastructure Designer and Visualisation Toolkit [0.64.0](CHANGELOG.md#version-0.64.0) +# Oracle Cloud Infrastructure Designer and Visualisation Toolkit [0.65.0](CHANGELOG.md#version-0.65.0) -Full Release Details Can Found [0.64.0 Release](https://github.com/oracle/oci-designer-toolkit/releases/tag/v0.64.0). +Full Release Details Can Found [0.65.0 Release](https://github.com/oracle/oci-designer-toolkit/releases/tag/v0.65.0). -**OKIT - Open Cloud Designer** Public Beta is now Available see [0.64.0 Release](https://github.com/oracle/oci-designer-toolkit/releases/tag/v0.64.0) for details. +**OKIT - Open Cloud Designer** Public Beta is now Available see [0.65.0 Release](https://github.com/oracle/oci-designer-toolkit/releases/tag/v0.65.0) for details. _____ OCI designer and visualisation toolKIT (OKIT) is a browser based tool that allows the user to [design](https://www.ateam-oracle.com/introduction-to-okit-the-oci-designer-toolkit), @@ -38,7 +38,7 @@ OCI environments through a graphical web based interface. ## Changes -[Changes for the current release (0.64.0) are documented here.](CHANGELOG.md#version-0.64.0) +[Changes for the current release (0.65.0) are documented here.](CHANGELOG.md#version-0.65.0) ## Releases diff --git a/RELEASE_NOTES.md b/RELEASE_NOTES.md index 41149413b..eb753f19d 100644 --- a/RELEASE_NOTES.md +++ b/RELEASE_NOTES.md @@ -1,31 +1,17 @@ [![License: UPL](https://img.shields.io/badge/license-UPL-green)](https://img.shields.io/badge/license-UPL-green) [![Quality Gate Status](https://sonarcloud.io/api/project_badges/measure?project=oracle_oci-designer-toolkit&metric=alert_status)](https://sonarcloud.io/summary/new_code?id=oracle_oci-designer-toolkit) -# September 2024 Release (Version 0.64.0) +# October 2024 Release (Version 0.65.0) ____ -**Update 0.64.0**: This update addresses the following issues. -1. OKIT-Web: Resolve issue where save dialog did not display existing content (#717) -2. OKIT-Web: Fix for underlying AuthLib api change. +**Update 0.65.0**: This update addresses the following issues. +1. OKIT-Web: Resolve issue with queried node_pool where the availability dodamin was still the full name. (#723) ____ -Welcome to the September 2024 release of OKIT. This release is aim primarily at the desktop OKIT OCD Beta extending the current functionality and improving it's useability. We have now added some basic resources for Azure and Google to allow for the design of Multi Cloud solutions. The current resources will be expaned onces the appropriate Terraform provider is available. +Welcome to the October 2024 release of OKIT. This release updates the Azure and Google based on the released terraform providers. ## OKIT (Web) Features -No new features +1. OKIT-Web: Create PCA specific OKIT Cache classes for use when accessing the pca link. ## OKIT - Open Cloud Designer -1. Parse AzuraRM Terraform schema and generate OCD Resource Schema entries. (#OKIT-272) -3. Write AzureRM Model Generator. (#OKIT-273) -4. Write AzureRM Properties Generator. (#OKIT-274) -5. Write AzureRM Terraform Generator. (#OKIT-275) -6. Write AzureRM Markdown Generator. (#OKIT-276) -7. Write AzureRM Validator Generator. (#OKIT-277) -8. Write AzureRM Tabular Generator. (#OKIT-278) -9. Parse Google Terraform schema and generate OCD Resource Schema entries. (#OKIT-284) -10. Write Google Model Generator. (#OKIT-285) -11. Write Google Properties Generator. (#OKIT-286) -12. Write Google Terraform Generator. (#OKIT-287) -13. Write Google Markdown Generator. (#OKIT-288) -14. Write Google Validator Generator. (#OKIT-289) -15. Write Google Tabular Generator. (#OKIT-290) -16. Create Library View which will allow users to select pre-defined Reference Architectures. (#OKIT-304) +1. OKIT-Ocd: Update initial Azure resources to match released terraform providers. (#OKIT-316) +2. OKIT-Ocd: Update initial Google resources to match released terraform providers . (#OKIT-317) ### Beta Overview diff --git a/containers/docker/Dockerfile b/containers/docker/Dockerfile index 56748e8ac..c3223d0b1 100644 --- a/containers/docker/Dockerfile +++ b/containers/docker/Dockerfile @@ -5,7 +5,7 @@ FROM oraclelinux:8 LABEL "provider"="Oracle" \ "issues"="https://github.com/oracle/oci-designer-toolkit/issues" \ - "version"="0.64.0" \ + "version"="0.65.0" \ "description"="OKIT Web Server Container." \ "copyright"="Copyright (c) 2020, 2024, Oracle and/or its affiliates." # SHELL ["/bin/bash", "-c"] diff --git a/ocd/library/c3/OKENetworkInfrastructure.okit b/ocd/library/c3/OKENetworkInfrastructure.okit new file mode 100644 index 000000000..6ab12c12f --- /dev/null +++ b/ocd/library/c3/OKENetworkInfrastructure.okit @@ -0,0 +1,1381 @@ +{ + "metadata": { + "ocdVersion": "0.1.0", + "ocdSchemaVersion": "0.1.0", + "ocdModelId": "ocd-model-b229c12b-895f-4317-aae0-9b9c2a7d8232", + "platform": "oci", + "title": "OKE Networking for PCA", + "documentation": "", + "created": "2024-3-20 15:17:4", + "updated": "" + }, + "model": { + "oci": { + "tags": {}, + "vars": [ + { + "key": "1e33f753-c4a9-48d4-9b11-5e48bce70e22", + "name": "vcn_cidr", + "default": "172.31.252.0/23", + "description": "VCN CIDR Range" + }, + { + "key": "c00fdc98-bd12-442c-81ea-08f969b397e3", + "name": "worker_cidr", + "default": "172.31.253.0/24", + "description": "Worker Subnet CIDR" + }, + { + "key": "57516fab-d616-4c41-a3c0-e08aeb2474df", + "name": "workerlb_cidr", + "default": "172.31.252.0/25", + "description": "Worker load balancer subnet CIDR" + }, + { + "key": "716793dc-3d77-42fd-859c-9ce7da918e5d", + "name": "kmi_cidr", + "default": "172.31.252.224/28", + "description": "OKE control plane subnet CIDR" + }, + { + "key": "d2186923-fd37-4e6d-99d1-6d7d4046daea", + "name": "kmilb_cidr", + "default": "172.31.252.240/28", + "description": "OKE control plane load balancer subnet CIDR" + }, + { + "key": "d5134fbf-4068-41d0-96f7-1df33da4b6c0", + "name": "kube_client_cidr", + "default": "0.0.0.0/0", + "description": "CIDR for clients that are allowed to contact the Kubernetes API server" + }, + { + "key": "1ce085b8-4869-411f-92db-ae37ed08aeb9", + "name": "kubernetes_api_port", + "default": "6443", + "description": "Kubernetes API Port" + }, + { + "key": "f51fb8ee-a901-4827-82f7-c408a5e124bf", + "name": "kube_internal_cidr", + "default": "", + "description": "Kubernetes Internal CIDR" + } + ], + "resources": { + "compartment": [ + { + "provider": "oci", + "locked": false, + "terraformResourceName": "OkitCompartment1710947824201", + "okitReference": "okit-b77f0b12-5fa2-4e47-bdce-1bec8df8e06e", + "resourceType": "Compartment", + "resourceTypeName": "Compartment", + "id": "okit.compartment.c373a27c-dc58-4cde-9dce-db3de0ca8056", + "region": "", + "compartmentId": "", + "displayName": "network", + "documentation": "", + "description": "OCI Compartment", + "enableDelete": false, + "name": "network" + } + ], + "vcn": [ + { + "provider": "oci", + "locked": false, + "terraformResourceName": "OkitVcn1710947839505", + "okitReference": "okit-051a4a99-9d86-4ab3-b7f1-b2bca1f11d6f", + "resourceType": "Vcn", + "resourceTypeName": "Vcn", + "id": "okit.vcn.81346ca4-8738-446a-861e-76a66333e15f", + "region": "", + "compartmentId": "okit.compartment.c373a27c-dc58-4cde-9dce-db3de0ca8056", + "displayName": "oke-vcn", + "documentation": "", + "cidrBlocks": [ + "var.vcn_cidr" + ], + "dnsLabel": "oketest", + "ipv6privateCidrBlocks": [], + "isIpv6enabled": false + } + ], + "route_table": [ + { + "provider": "oci", + "locked": false, + "terraformResourceName": "OkitRouteTable1710947839505", + "okitReference": "okit-5d7d82f3-757b-4dac-8476-acd6e21d81af", + "resourceType": "RouteTable", + "resourceTypeName": "Route Table", + "id": "okit.route_table.72c432b5-408f-4ec2-b5e8-d1fa7f35de15", + "region": "", + "compartmentId": "okit.compartment.c373a27c-dc58-4cde-9dce-db3de0ca8056", + "displayName": "public", + "documentation": "", + "vcnId": "okit.vcn.81346ca4-8738-446a-861e-76a66333e15f", + "routeRules": [ + { + "description": "OKE Public Route Rule", + "destination": "0.0.0.0/0", + "destinationType": "CIDR_BLOCK", + "networkEntityId": "okit.internet_gateway.8dedbfe4-b80c-4975-80d8-f8229ed6b8b0", + "key": "f55a753a-38e2-481d-865d-da9a11ea9bae" + } + ], + "vcnDefault": false + }, + { + "provider": "oci", + "locked": false, + "terraformResourceName": "OkitRouteTable1710950544397", + "okitReference": "okit-ba2cee58-2a6f-4130-8d58-d3d5278e51ad", + "resourceType": "RouteTable", + "resourceTypeName": "Route Table", + "id": "okit.route_table.e3052a9f-6a9e-4f6c-9a85-2f0ee613f521", + "region": "", + "compartmentId": "okit.compartment.c373a27c-dc58-4cde-9dce-db3de0ca8056", + "displayName": "Default - private", + "documentation": "", + "vcnId": "okit.vcn.81346ca4-8738-446a-861e-76a66333e15f", + "routeRules": [ + { + "description": "OKE Private Route Table", + "destination": "0.0.0.0/0", + "destinationType": "CIDR_BLOCK", + "networkEntityId": "okit.nat_gateway.25c19fe1-d06d-4fe8-ad8e-3d166a95ed1e", + "key": "0c6cb6cf-01d2-4109-986a-62e73c734d10" + } + ], + "vcnDefault": true + } + ], + "security_list": [ + { + "provider": "oci", + "locked": false, + "terraformResourceName": "OkitSecurityList1710947839506", + "okitReference": "okit-4cd3c689-5920-4fc2-b743-915d3dbca648", + "resourceType": "SecurityList", + "resourceTypeName": "Security List", + "id": "okit.security_list.b1d9b9e4-4b0d-40b4-aee9-f6e2d370be3c", + "region": "", + "compartmentId": "okit.compartment.c373a27c-dc58-4cde-9dce-db3de0ca8056", + "displayName": "Default Security List", + "documentation": "", + "vcnId": "okit.vcn.81346ca4-8738-446a-861e-76a66333e15f", + "egressSecurityRules": [ + { + "destination": "0.0.0.0/0", + "destinationType": "CIDR_BLOCK", + "stateless": false, + "protocol": "all", + "description": "Default All Egress Rule", + "key": "43c34197-7e72-4e54-b8b0-689dc4e7eaac" + } + ], + "ingressSecurityRules": [ + { + "stateless": false, + "protocol": "6", + "source": "0.0.0.0/0", + "sourceType": "CIDR_BLOCK", + "tcpOptions": { + "max": 22, + "min": 22, + "sourcePortRange": { + "min": 0, + "max": 0 + } + }, + "description": " Default SSH Ingress Rule", + "key": "3256b008-f0bd-48cc-8fa0-199183ec6a14" + }, + { + "icmpOptions": { + "code": 4, + "type": 3 + }, + "stateless": false, + "protocol": "1", + "source": "0.0.0.0/0", + "sourceType": "CIDR_BLOCK", + "description": "Default Ingress Rule", + "key": "bb8d780f-ab99-4024-80b6-c641fd274aa9" + }, + { + "icmpOptions": { + "type": 3 + }, + "stateless": false, + "protocol": "1", + "source": "10.0.0.0/16", + "sourceType": "CIDR_BLOCK", + "description": "Default VCN Access Ingress Rule", + "key": "73444067-fd20-4031-8f2f-c4f5ee9ffa7a" + } + ], + "vcnDefault": true + }, + { + "provider": "oci", + "locked": false, + "terraformResourceName": "OkitSecurityList1712841004037", + "okitReference": "okit-8a14df44-2ea5-4661-a438-60823bd05dd2", + "resourceType": "SecurityList", + "resourceTypeName": "Security List", + "id": "okit.security_list.99258699-cf5f-429d-b8f2-7d68c094d53e", + "region": "", + "compartmentId": "okit.compartment.c373a27c-dc58-4cde-9dce-db3de0ca8056", + "displayName": "worker-seclist", + "documentation": "", + "vcnId": "okit.vcn.81346ca4-8738-446a-861e-76a66333e15f", + "egressSecurityRules": [], + "ingressSecurityRules": [ + { + "description": "Allow external ssh", + "protocol": "6", + "source": "var.vcn_cidr", + "sourceType": "CIDR_BLOCK", + "stateless": false, + "icmpOptions": { + "code": 0, + "type": 0 + }, + "tcpOptions": { + "max": "22", + "min": "22", + "sourcePortRange": { + "max": "", + "min": "" + } + }, + "udpOptions": { + "max": 0, + "min": 0, + "sourcePortRange": { + "max": 0, + "min": 0 + } + }, + "key": "35ac2adf-6729-44a8-a170-67531ab32e48" + }, + { + "description": "Allow Kubernetes clients to contact the default node port range", + "protocol": "6", + "source": "var.kube_client_cidr", + "sourceType": "CIDR_BLOCK", + "stateless": false, + "icmpOptions": { + "code": 0, + "type": 0 + }, + "tcpOptions": { + "max": "32767", + "min": "30000", + "sourcePortRange": { + "max": "", + "min": "" + } + }, + "udpOptions": { + "max": 0, + "min": 0, + "sourcePortRange": { + "max": 0, + "min": 0 + } + }, + "key": "bfb2f617-6a07-4c40-8cc0-c2efc54d1a3f" + }, + { + "description": "Allow the worker load balancer to contact the worker nodes.", + "protocol": "6", + "source": "var.workerlb_cidr", + "sourceType": "CIDR_BLOCK", + "stateless": false, + "icmpOptions": { + "code": 0, + "type": 0 + }, + "tcpOptions": { + "max": "32767", + "min": "30000", + "sourcePortRange": { + "max": "", + "min": "" + } + }, + "udpOptions": { + "max": 0, + "min": 0, + "sourcePortRange": { + "max": 0, + "min": 0 + } + }, + "key": "c281c8f4-5163-4166-abdc-2d42df9cec36" + }, + { + "description": "Allow the worker load balancer to contact the worker nodes.", + "protocol": "6", + "source": "var.workerlb_cidr", + "sourceType": "CIDR_BLOCK", + "stateless": false, + "icmpOptions": { + "code": 0, + "type": 0 + }, + "tcpOptions": { + "max": "10256", + "min": "10256", + "sourcePortRange": { + "max": "", + "min": "" + } + }, + "udpOptions": { + "max": 0, + "min": 0, + "sourcePortRange": { + "max": 0, + "min": 0 + } + }, + "key": "72fecf65-8432-4899-a15d-5037d92b614d" + }, + { + "description": "Allow the control plane to contact the worker nodes.", + "protocol": "6", + "source": "var.kmi_cidr", + "sourceType": "CIDR_BLOCK", + "stateless": false, + "icmpOptions": { + "code": 0, + "type": 0 + }, + "tcpOptions": { + "max": "65535", + "min": "22", + "sourcePortRange": { + "max": "", + "min": "" + } + }, + "udpOptions": { + "max": 0, + "min": 0, + "sourcePortRange": { + "max": 0, + "min": 0 + } + }, + "key": "837a2064-7bf3-4386-b6a2-1405d031b677" + }, + { + "description": "Allow the worker nodes to contact the other worker nodes in the subnet.", + "protocol": "17", + "source": "var.worker_cidr", + "sourceType": "CIDR_BLOCK", + "stateless": false, + "icmpOptions": { + "code": 0, + "type": 0 + }, + "tcpOptions": { + "max": 0, + "min": 0, + "sourcePortRange": { + "max": 0, + "min": 0 + } + }, + "udpOptions": { + "max": "8472", + "min": "8285", + "sourcePortRange": { + "max": "", + "min": "" + } + }, + "key": "c4c676b9-73c6-499a-962e-f9627182ffb1" + }, + { + "description": "Allow the control plane to contact the worker nodes.", + "protocol": "17", + "source": "var.kmi_cidr", + "sourceType": "CIDR_BLOCK", + "stateless": false, + "icmpOptions": { + "code": 0, + "type": 0 + }, + "tcpOptions": { + "max": 0, + "min": 0, + "sourcePortRange": { + "max": 0, + "min": 0 + } + }, + "udpOptions": { + "max": "8472", + "min": "8285", + "sourcePortRange": { + "max": "", + "min": "" + } + }, + "key": "68aa1a49-607e-435e-8b6c-e888cdc8c06f" + } + ] + }, + { + "provider": "oci", + "locked": false, + "terraformResourceName": "OkitSecurityList1713198200042", + "okitReference": "okit-fb3ae43b-dac0-4479-a4a1-2f1bf2d12f34", + "resourceType": "SecurityList", + "resourceTypeName": "Security List", + "id": "okit.security_list.9cf44b7c-5587-412d-9bf9-c8d04430d909", + "region": "", + "compartmentId": "okit.compartment.c373a27c-dc58-4cde-9dce-db3de0ca8056", + "displayName": "workerlb-seclist", + "documentation": "", + "vcnId": "okit.vcn.81346ca4-8738-446a-861e-76a66333e15f", + "egressSecurityRules": [], + "ingressSecurityRules": [ + { + "description": "Allow inbound traffic for applications.", + "protocol": "6", + "source": "var.kube_client_cidr", + "sourceType": "CIDR_BLOCK", + "stateless": false, + "icmpOptions": { + "code": 0, + "type": 0 + }, + "tcpOptions": { + "max": "80", + "min": "80", + "sourcePortRange": { + "max": "", + "min": "" + } + }, + "udpOptions": { + "max": 0, + "min": 0, + "sourcePortRange": { + "max": 0, + "min": 0 + } + }, + "key": "a2520f71-ac10-4c3f-866b-0cbf9a7e9cfe" + }, + { + "description": "Allow inbound traffic for applications.", + "protocol": "6", + "source": "var.kube_client_cidr", + "sourceType": "CIDR_BLOCK", + "stateless": false, + "icmpOptions": { + "code": 0, + "type": 0 + }, + "tcpOptions": { + "max": "443", + "min": "443", + "sourcePortRange": { + "max": "", + "min": "" + } + }, + "udpOptions": { + "max": 0, + "min": 0, + "sourcePortRange": { + "max": 0, + "min": 0 + } + }, + "key": "53675f54-9367-4118-8b01-9760622ec915" + } + ] + }, + { + "provider": "oci", + "locked": false, + "terraformResourceName": "OkitSecurityList1713260583878", + "okitReference": "okit-e9de9027-e83b-4a9c-a01f-c813db665f9e", + "resourceType": "SecurityList", + "resourceTypeName": "Security List", + "id": "okit.security_list.bcec8ab1-11a5-4b64-b7b7-36c4528a910d", + "region": "", + "compartmentId": "okit.compartment.c373a27c-dc58-4cde-9dce-db3de0ca8056", + "displayName": "kmi-seclist", + "documentation": "", + "vcnId": "okit.vcn.81346ca4-8738-446a-861e-76a66333e15f", + "egressSecurityRules": [], + "ingressSecurityRules": [ + { + "description": "Allow inbound connections to the Kubernetes API server.", + "protocol": "6", + "source": "var.kube_client_cidr", + "sourceType": "CIDR_BLOCK", + "stateless": false, + "icmpOptions": { + "code": 0, + "type": 0 + }, + "tcpOptions": { + "max": "6443", + "min": "6443", + "sourcePortRange": { + "max": "", + "min": "" + } + }, + "udpOptions": { + "max": 0, + "min": 0, + "sourcePortRange": { + "max": 0, + "min": 0 + } + }, + "key": "5c2d81a6-d682-4700-afb7-44192b7ea6a8" + }, + { + "description": "Allow inbound connections from the control plane load balancer.", + "protocol": "6", + "source": "var.kmilb_cidr", + "sourceType": "CIDR_BLOCK", + "stateless": false, + "icmpOptions": { + "code": 0, + "type": 0 + }, + "tcpOptions": { + "max": "6443", + "min": "6443", + "sourcePortRange": { + "max": "", + "min": "" + } + }, + "udpOptions": { + "max": 0, + "min": 0, + "sourcePortRange": { + "max": 0, + "min": 0 + } + }, + "key": "3bc3e16c-ab97-4935-82ef-513aee393362" + }, + { + "description": "Allow inbound connections from worker nodes to the control plane.", + "protocol": "6", + "source": "var.worker_cidr", + "sourceType": "CIDR_BLOCK", + "stateless": false, + "icmpOptions": { + "code": 0, + "type": 0 + }, + "tcpOptions": { + "max": "65535", + "min": "1024", + "sourcePortRange": { + "max": "", + "min": "" + } + }, + "udpOptions": { + "max": 0, + "min": 0, + "sourcePortRange": { + "max": 0, + "min": 0 + } + }, + "key": "9eb492f7-0f98-4ec6-83b2-93ba1e0e420c" + }, + { + "description": "Allow inbound connections within the control plane.", + "protocol": "6", + "source": "var.kmi_cidr", + "sourceType": "CIDR_BLOCK", + "stateless": false, + "icmpOptions": { + "code": 0, + "type": 0 + }, + "tcpOptions": { + "max": "65535", + "min": "1024", + "sourcePortRange": { + "max": "", + "min": "" + } + }, + "udpOptions": { + "max": 0, + "min": 0, + "sourcePortRange": { + "max": 0, + "min": 0 + } + }, + "key": "eeee6681-08cf-4599-8f40-55354e5c3119" + }, + { + "description": "Allow inbound connections within the control plane subnet.", + "protocol": "17", + "source": "var.worker_cidr", + "sourceType": "CIDR_BLOCK", + "stateless": false, + "icmpOptions": { + "code": 0, + "type": 0 + }, + "tcpOptions": { + "max": 0, + "min": 0, + "sourcePortRange": { + "max": 0, + "min": 0 + } + }, + "udpOptions": { + "max": "8472", + "min": "8285", + "sourcePortRange": { + "max": "", + "min": "" + } + }, + "key": "05addd1e-83ac-4c04-8433-e89ba044c1cc" + }, + { + "description": "", + "protocol": "17", + "source": "var.kmi_cidr", + "sourceType": "CIDR_BLOCK", + "stateless": false, + "icmpOptions": { + "code": 0, + "type": 0 + }, + "tcpOptions": { + "max": 0, + "min": 0, + "sourcePortRange": { + "max": 0, + "min": 0 + } + }, + "udpOptions": { + "max": "8472", + "min": "8285", + "sourcePortRange": { + "max": "", + "min": "" + } + }, + "key": "7ee656de-d939-4bf3-b454-a2d6abd5e067" + } + ] + }, + { + "provider": "oci", + "locked": false, + "terraformResourceName": "OkitSecurityList1713281661978", + "okitReference": "okit-d5d11eb3-9750-4b10-b4f3-a1c19d01adca", + "resourceType": "SecurityList", + "resourceTypeName": "Security List", + "id": "okit.security_list.8b1cde33-93eb-4f69-afd8-a6f87c79d1a5", + "region": "", + "compartmentId": "okit.compartment.c373a27c-dc58-4cde-9dce-db3de0ca8056", + "displayName": "kmilb-seclist", + "documentation": "", + "vcnId": "okit.vcn.81346ca4-8738-446a-861e-76a66333e15f", + "egressSecurityRules": [], + "ingressSecurityRules": [ + { + "description": "Allow inbound connections to the control plane load balancer.", + "protocol": "6", + "source": "var.kube_internal_cidr", + "sourceType": "CIDR_BLOCK", + "stateless": false, + "icmpOptions": { + "code": 0, + "type": 0 + }, + "tcpOptions": { + "max": "6443", + "min": "6443", + "sourcePortRange": { + "max": "", + "min": "" + } + }, + "udpOptions": { + "max": 0, + "min": 0, + "sourcePortRange": { + "max": 0, + "min": 0 + } + }, + "key": "27f0ad38-aae1-46ca-848d-00432abed440" + }, + { + "description": "Allow inbound connections to the control plane load balancer.", + "protocol": "6", + "source": "var.kube_client_cidr", + "sourceType": "CIDR_BLOCK", + "stateless": false, + "icmpOptions": { + "code": 0, + "type": 0 + }, + "tcpOptions": { + "max": "6443", + "min": "6443", + "sourcePortRange": { + "max": "", + "min": "" + } + }, + "udpOptions": { + "max": 0, + "min": 0, + "sourcePortRange": { + "max": 0, + "min": 0 + } + }, + "key": "9a65a235-0b2c-4547-b412-0bca9d58121a" + }, + { + "description": "Allow inbound connections to the control plane load balancer.", + "protocol": "6", + "source": "var.vcn_cidr", + "sourceType": "CIDR_BLOCK", + "stateless": false, + "icmpOptions": { + "code": 0, + "type": 0 + }, + "tcpOptions": { + "max": "6443", + "min": "6443", + "sourcePortRange": { + "max": "", + "min": "" + } + }, + "udpOptions": { + "max": 0, + "min": 0, + "sourcePortRange": { + "max": 0, + "min": 0 + } + }, + "key": "9d3ae5bf-b7d5-49bf-8682-6035ec831ce0" + } + ] + } + ], + "dhcp_options": [], + "subnet": [ + { + "provider": "oci", + "locked": false, + "terraformResourceName": "OkitSubnet1710948311499", + "okitReference": "okit-ef14aad8-07ed-4579-b701-0301772c4d18", + "resourceType": "Subnet", + "resourceTypeName": "Subnet", + "id": "okit.subnet.7aed5d41-d55c-475c-8341-a73d81bec49e", + "region": "", + "compartmentId": "okit.compartment.c373a27c-dc58-4cde-9dce-db3de0ca8056", + "displayName": "worker", + "documentation": "", + "availabilityDomain": "1", + "cidrBlock": "var.worker_cidr", + "dhcpOptionsId": "", + "dnsLabel": "worker", + "ipv6cidrBlock": "", + "ipv6cidrBlocks": [], + "prohibitInternetIngress": false, + "prohibitPublicIpOnVnic": true, + "routeTableId": "okit.route_table.e3052a9f-6a9e-4f6c-9a85-2f0ee613f521", + "securityListIds": [ + "okit.security_list.99258699-cf5f-429d-b8f2-7d68c094d53e", + "okit.security_list.b1d9b9e4-4b0d-40b4-aee9-f6e2d370be3c" + ], + "vcnId": "okit.vcn.81346ca4-8738-446a-861e-76a66333e15f" + }, + { + "provider": "oci", + "locked": false, + "terraformResourceName": "OkitSubnet1710948805387", + "okitReference": "okit-111777cd-4080-4866-b7cc-13666f5733e6", + "resourceType": "Subnet", + "resourceTypeName": "Subnet", + "id": "okit.subnet.a99cad89-a4f6-48bc-891f-6b95467f1e19", + "region": "", + "compartmentId": "okit.compartment.c373a27c-dc58-4cde-9dce-db3de0ca8056", + "displayName": "service-lb", + "documentation": "", + "availabilityDomain": "1", + "cidrBlock": "var.workerlb_cidr", + "dhcpOptionsId": "", + "dnsLabel": "servicelb", + "ipv6cidrBlock": "", + "ipv6cidrBlocks": [], + "prohibitInternetIngress": false, + "prohibitPublicIpOnVnic": false, + "routeTableId": "okit.route_table.72c432b5-408f-4ec2-b5e8-d1fa7f35de15", + "securityListIds": [ + "okit.security_list.9cf44b7c-5587-412d-9bf9-c8d04430d909", + "okit.security_list.b1d9b9e4-4b0d-40b4-aee9-f6e2d370be3c" + ], + "vcnId": "okit.vcn.81346ca4-8738-446a-861e-76a66333e15f" + }, + { + "provider": "oci", + "locked": false, + "terraformResourceName": "OkitSubnet1710948971616", + "okitReference": "okit-64c515a7-49b6-4ee2-b6c1-0d772a5203e8", + "resourceType": "Subnet", + "resourceTypeName": "Subnet", + "id": "okit.subnet.1b83d3ef-9bd9-4616-a9eb-dc01e5189205", + "region": "", + "compartmentId": "okit.compartment.c373a27c-dc58-4cde-9dce-db3de0ca8056", + "displayName": "control-plane-endpoint", + "documentation": "", + "availabilityDomain": "1", + "cidrBlock": "var.kmilb_cidr", + "dhcpOptionsId": "", + "dnsLabel": "kmilb", + "ipv6cidrBlock": "", + "ipv6cidrBlocks": [], + "prohibitInternetIngress": false, + "prohibitPublicIpOnVnic": false, + "routeTableId": "okit.route_table.72c432b5-408f-4ec2-b5e8-d1fa7f35de15", + "securityListIds": [ + "okit.security_list.b1d9b9e4-4b0d-40b4-aee9-f6e2d370be3c", + "okit.security_list.8b1cde33-93eb-4f69-afd8-a6f87c79d1a5" + ], + "vcnId": "okit.vcn.81346ca4-8738-446a-861e-76a66333e15f" + }, + { + "provider": "oci", + "locked": false, + "terraformResourceName": "OkitSubnet1710949292204", + "okitReference": "okit-54649cbc-f187-4db4-bb8a-becff4534b58", + "resourceType": "Subnet", + "resourceTypeName": "Subnet", + "id": "okit.subnet.4687def4-a360-4ac8-a3a6-2e1e48f23288", + "region": "", + "compartmentId": "okit.compartment.c373a27c-dc58-4cde-9dce-db3de0ca8056", + "displayName": "control-plane", + "documentation": "", + "availabilityDomain": "1", + "cidrBlock": "var.kmi_cidr", + "dhcpOptionsId": "", + "dnsLabel": "kmi", + "ipv6cidrBlock": "", + "ipv6cidrBlocks": [], + "prohibitInternetIngress": false, + "prohibitPublicIpOnVnic": true, + "routeTableId": "okit.route_table.e3052a9f-6a9e-4f6c-9a85-2f0ee613f521", + "securityListIds": [ + "okit.security_list.bcec8ab1-11a5-4b64-b7b7-36c4528a910d", + "okit.security_list.b1d9b9e4-4b0d-40b4-aee9-f6e2d370be3c" + ], + "vcnId": "okit.vcn.81346ca4-8738-446a-861e-76a66333e15f" + } + ], + "internet_gateway": [ + { + "provider": "oci", + "locked": false, + "terraformResourceName": "OkitInternetGateway1710950473668", + "okitReference": "okit-e9526f7c-e8da-4714-adac-3cbb0cd7c052", + "resourceType": "InternetGateway", + "resourceTypeName": "Internet Gateway", + "id": "okit.internet_gateway.8dedbfe4-b80c-4975-80d8-f8229ed6b8b0", + "region": "", + "compartmentId": "okit.compartment.c373a27c-dc58-4cde-9dce-db3de0ca8056", + "displayName": "Internet Gateway cf4a", + "documentation": "", + "enabled": false, + "vcnId": "okit.vcn.81346ca4-8738-446a-861e-76a66333e15f" + } + ], + "nat_gateway": [ + { + "provider": "oci", + "locked": false, + "terraformResourceName": "OkitNatGateway1710950510108", + "okitReference": "okit-7af4f296-f61e-4c73-accf-d663b293dadf", + "resourceType": "NatGateway", + "resourceTypeName": "NAT Gateway", + "id": "okit.nat_gateway.25c19fe1-d06d-4fe8-ad8e-3d166a95ed1e", + "region": "", + "compartmentId": "okit.compartment.c373a27c-dc58-4cde-9dce-db3de0ca8056", + "displayName": "Nat Gateway 8390", + "documentation": "", + "blockTraffic": false, + "vcnId": "okit.vcn.81346ca4-8738-446a-861e-76a66333e15f" + } + ], + "dynamic_group": [ + { + "provider": "oci", + "locked": false, + "terraformResourceName": "OkitDynamicGroup1713431305858", + "okitReference": "okit-6166659f-5cd6-4e4b-8b6a-4470d96de17a", + "resourceType": "DynamicGroup", + "resourceTypeName": "Dynamic Group", + "id": "okit.dynamic_group.be91810e-d732-4ac0-ae6e-f1b700b2677b", + "region": "", + "compartmentId": "okit.compartment.c373a27c-dc58-4cde-9dce-db3de0ca8056", + "displayName": "Dynamic Group bed0", + "documentation": "", + "description": "", + "matchingRule": "" + } + ] + } + } + }, + "view": { + "id": "view-a75a9288-50c5-42f0-81b8-37f33120e408", + "pages": [ + { + "id": "page-fabb010c-9586-4cbf-928f-e015865988be", + "title": "Open Cloud Design", + "documentation": "", + "layers": [ + { + "id": "okit.compartment.c373a27c-dc58-4cde-9dce-db3de0ca8056", + "class": "oci-compartment", + "visible": true, + "selected": true + } + ], + "coords": [ + { + "id": "gid-f5895766-73e7-4e0b-a6a1-b81abcff38c8", + "pgid": "", + "ocid": "okit.vcn.81346ca4-8738-446a-861e-76a66333e15f", + "pocid": "", + "x": 35, + "y": 66, + "w": 1000, + "h": 780, + "title": "Vcn", + "class": "oci-vcn", + "showParentConnection": true, + "showConnections": true, + "container": true, + "coords": [ + { + "id": "gid-943dff8a-2342-409b-b7fa-58eb4f9e152d", + "pgid": "gid-f5895766-73e7-4e0b-a6a1-b81abcff38c8", + "ocid": "okit.route_table.72c432b5-408f-4ec2-b5e8-d1fa7f35de15", + "pocid": "okit.vcn.81346ca4-8738-446a-861e-76a66333e15f", + "x": 15, + "y": 176, + "w": 32, + "h": 32, + "title": "Route Table", + "class": "oci-route-table", + "showParentConnection": true, + "showConnections": true, + "container": false + }, + { + "id": "gid-2d13ffb1-fa2b-4f88-9db5-3940f97f9d1b", + "pgid": "gid-f5895766-73e7-4e0b-a6a1-b81abcff38c8", + "ocid": "okit.security_list.b1d9b9e4-4b0d-40b4-aee9-f6e2d370be3c", + "pocid": "okit.vcn.81346ca4-8738-446a-861e-76a66333e15f", + "x": 15, + "y": 284, + "w": 32, + "h": 32, + "title": "Security List", + "class": "oci-security-list", + "showParentConnection": true, + "showConnections": true, + "container": false + }, + { + "id": "gid-66932511-97e3-4b4d-b402-70d19e5c5528", + "pgid": "gid-f5895766-73e7-4e0b-a6a1-b81abcff38c8", + "ocid": "okit.subnet.7aed5d41-d55c-475c-8341-a73d81bec49e", + "pocid": "okit.vcn.81346ca4-8738-446a-861e-76a66333e15f", + "x": 600, + "y": 410, + "w": 300, + "h": 130, + "title": "Subnet", + "class": "oci-subnet", + "showParentConnection": true, + "showConnections": true, + "container": true + }, + { + "id": "gid-5c3300e4-afeb-40eb-ac9e-a79d20c43ff3", + "pgid": "gid-f5895766-73e7-4e0b-a6a1-b81abcff38c8", + "ocid": "okit.subnet.a99cad89-a4f6-48bc-891f-6b95467f1e19", + "pocid": "okit.vcn.81346ca4-8738-446a-861e-76a66333e15f", + "x": 601, + "y": 69, + "w": 300, + "h": 130, + "title": "Subnet", + "class": "oci-subnet", + "showParentConnection": true, + "showConnections": true, + "container": true + }, + { + "id": "gid-6bf29949-3f85-4922-a3a7-b04e09adc0ec", + "pgid": "gid-f5895766-73e7-4e0b-a6a1-b81abcff38c8", + "ocid": "okit.subnet.1b83d3ef-9bd9-4616-a9eb-dc01e5189205", + "pocid": "okit.vcn.81346ca4-8738-446a-861e-76a66333e15f", + "x": 600, + "y": 240, + "w": 300, + "h": 130, + "title": "Subnet", + "class": "oci-subnet", + "showParentConnection": true, + "showConnections": true, + "container": true + }, + { + "id": "gid-34d7e085-3ca0-4608-8abe-e88b170ba2f1", + "pgid": "gid-f5895766-73e7-4e0b-a6a1-b81abcff38c8", + "ocid": "okit.subnet.4687def4-a360-4ac8-a3a6-2e1e48f23288", + "pocid": "okit.vcn.81346ca4-8738-446a-861e-76a66333e15f", + "x": 600, + "y": 580, + "w": 300, + "h": 130, + "title": "Subnet", + "class": "oci-subnet", + "showParentConnection": true, + "showConnections": true, + "container": true + }, + { + "id": "gid-7139517e-8d24-47e9-81e8-aca50e0aec22", + "pgid": "gid-f5895766-73e7-4e0b-a6a1-b81abcff38c8", + "ocid": "okit.internet_gateway.8dedbfe4-b80c-4975-80d8-f8229ed6b8b0", + "pocid": "okit.vcn.81346ca4-8738-446a-861e-76a66333e15f", + "x": 600, + "y": -21, + "w": 32, + "h": 32, + "title": "Internet Gateway", + "class": "oci-internet-gateway", + "showParentConnection": true, + "showConnections": true, + "container": false + }, + { + "id": "gid-5e0e3b70-cd99-4142-9ac5-69e49fe57a5a", + "pgid": "gid-f5895766-73e7-4e0b-a6a1-b81abcff38c8", + "ocid": "okit.route_table.e3052a9f-6a9e-4f6c-9a85-2f0ee613f521", + "pocid": "okit.vcn.81346ca4-8738-446a-861e-76a66333e15f", + "x": 15, + "y": 396, + "w": 32, + "h": 32, + "title": "Route Table", + "class": "oci-route-table", + "showParentConnection": true, + "showConnections": true, + "container": false + }, + { + "id": "gid-de9b9eb8-236a-454e-86d9-2dcad2ccb5ad", + "pgid": "gid-f5895766-73e7-4e0b-a6a1-b81abcff38c8", + "ocid": "okit.security_list.99258699-cf5f-429d-b8f2-7d68c094d53e", + "pocid": "okit.vcn.81346ca4-8738-446a-861e-76a66333e15f", + "x": 15, + "y": 602, + "w": 32, + "h": 32, + "title": "Security List", + "class": "oci-security-list", + "showParentConnection": true, + "showConnections": true, + "container": false + }, + { + "id": "gid-3a049ac0-813b-43a7-b71a-4518d41c630b", + "pgid": "gid-f5895766-73e7-4e0b-a6a1-b81abcff38c8", + "ocid": "okit.nat_gateway.25c19fe1-d06d-4fe8-ad8e-3d166a95ed1e", + "pocid": "okit.vcn.81346ca4-8738-446a-861e-76a66333e15f", + "x": 600, + "y": 759, + "w": 32, + "h": 32, + "title": "NAT Gateway", + "class": "oci-nat-gateway", + "showParentConnection": true, + "showConnections": true, + "container": false + }, + { + "id": "gid-74fd4589-4c4f-4d96-bddc-d2ef8f2e5710", + "pgid": "gid-f5895766-73e7-4e0b-a6a1-b81abcff38c8", + "ocid": "okit.security_list.9cf44b7c-5587-412d-9bf9-c8d04430d909", + "pocid": "okit.vcn.81346ca4-8738-446a-861e-76a66333e15f", + "x": 15, + "y": 70, + "w": 32, + "h": 32, + "title": "Security List", + "class": "oci-security-list", + "showParentConnection": true, + "showConnections": true, + "container": false + }, + { + "id": "gid-fe064e09-f867-44bf-8f57-188864600d85", + "pgid": "gid-f5895766-73e7-4e0b-a6a1-b81abcff38c8", + "ocid": "okit.security_list.bcec8ab1-11a5-4b64-b7b7-36c4528a910d", + "pocid": "okit.vcn.81346ca4-8738-446a-861e-76a66333e15f", + "x": 15, + "y": 690, + "w": 32, + "h": 32, + "title": "Security List", + "class": "oci-security-list", + "showParentConnection": true, + "showConnections": true, + "container": false + }, + { + "id": "gid-7eaa96db-6c96-4ebb-8480-b6d6fba8009d", + "pgid": "gid-f5895766-73e7-4e0b-a6a1-b81abcff38c8", + "ocid": "okit.security_list.8b1cde33-93eb-4f69-afd8-a6f87c79d1a5", + "pocid": "okit.vcn.81346ca4-8738-446a-861e-76a66333e15f", + "x": 15, + "y": 515, + "w": 32, + "h": 32, + "title": "Security List", + "class": "oci-security-list", + "showParentConnection": true, + "showConnections": true, + "container": false + } + ] + } + ], + "connectors": [], + "selected": true, + "grid": false, + "transform": [ + 1, + 0, + 0, + 1, + 0, + 0 + ] + }, + { + "id": "page-5eb2e280-b64d-4bb8-8eba-25da30cba7d0", + "title": "Connections", + "documentation": "", + "layers": [ + { + "id": "okit.compartment.c373a27c-dc58-4cde-9dce-db3de0ca8056", + "class": "oci-compartment", + "visible": true, + "selected": true + } + ], + "coords": [ + { + "id": "gid-17609578-1d73-4a4b-af72-eeae53c156eb", + "pgid": "", + "ocid": "okit.vcn.81346ca4-8738-446a-861e-76a66333e15f", + "pocid": "", + "x": 65, + "y": 400, + "w": 300, + "h": 300, + "title": "Vcn", + "class": "oci-vcn", + "showParentConnection": true, + "showConnections": true, + "container": true, + "detailsStyle": "detailed" + }, + { + "id": "gid-1e2bcd1e-6023-4875-bc99-597b932eb981", + "pgid": "", + "ocid": "okit.subnet.a99cad89-a4f6-48bc-891f-6b95467f1e19", + "pocid": "", + "x": 854, + "y": 161, + "w": 300, + "h": 300, + "title": "Subnet", + "class": "oci-subnet", + "showParentConnection": true, + "showConnections": true, + "container": true, + "detailsStyle": "detailed" + }, + { + "id": "gid-a8681d82-ad48-46ac-b307-fc53147800fb", + "pgid": "", + "ocid": "okit.subnet.7aed5d41-d55c-475c-8341-a73d81bec49e", + "pocid": "", + "x": 849, + "y": 606, + "w": 300, + "h": 300, + "title": "Subnet", + "class": "oci-subnet", + "showParentConnection": true, + "showConnections": true, + "container": true, + "detailsStyle": "detailed" + }, + { + "id": "gid-bc238a23-fe71-45b1-bdd5-170a6a05af6c", + "pgid": "", + "ocid": "okit.subnet.1b83d3ef-9bd9-4616-a9eb-dc01e5189205", + "pocid": "", + "x": 856, + "y": 318, + "w": 300, + "h": 300, + "title": "Subnet", + "class": "oci-subnet", + "showParentConnection": true, + "showConnections": true, + "container": true, + "detailsStyle": "detailed" + }, + { + "id": "gid-223438ed-cdde-45f1-9a0a-6e099b96f676", + "pgid": "", + "ocid": "okit.subnet.4687def4-a360-4ac8-a3a6-2e1e48f23288", + "pocid": "", + "x": 854, + "y": 455, + "w": 300, + "h": 300, + "title": "Subnet", + "class": "oci-subnet", + "showParentConnection": true, + "showConnections": true, + "container": true, + "detailsStyle": "detailed" + }, + { + "id": "gid-fd755419-9ced-4f41-b5ad-30717ac2f6f6", + "pgid": "", + "ocid": "okit.route_table.72c432b5-408f-4ec2-b5e8-d1fa7f35de15", + "pocid": "", + "x": 414, + "y": 109, + "w": 32, + "h": 32, + "title": "Route Table", + "class": "oci-route-table", + "showParentConnection": true, + "showConnections": true, + "container": false + }, + { + "id": "gid-121fa94d-8629-40f2-ba4a-9a87ce25ca91", + "pgid": "", + "ocid": "okit.route_table.e3052a9f-6a9e-4f6c-9a85-2f0ee613f521", + "pocid": "", + "x": 396, + "y": 663, + "w": 32, + "h": 32, + "title": "Route Table", + "class": "oci-route-table", + "showParentConnection": true, + "showConnections": true, + "container": false + } + ], + "connectors": [], + "selected": false, + "grid": false, + "transform": [ + 1, + 0, + 0, + 1, + 0, + 0 + ] + }, + { + "id": "page-3151e201-155b-4114-b477-fb8e9b79a173", + "title": "Identity", + "documentation": "", + "layers": [ + { + "id": "okit.compartment.c373a27c-dc58-4cde-9dce-db3de0ca8056", + "class": "oci-compartment", + "visible": true, + "selected": true + } + ], + "coords": [ + { + "id": "gid-83e4c609-bee0-4aff-836b-892759d60f5d", + "pgid": "", + "ocid": "okit.dynamic_group.be91810e-d732-4ac0-ae6e-f1b700b2677b", + "pocid": "", + "x": 52, + "y": 45, + "w": 32, + "h": 32, + "title": "Dynamic Group", + "class": "oci-dynamic-group", + "showParentConnection": true, + "showConnections": true, + "container": false + } + ], + "connectors": [], + "selected": false, + "grid": false, + "transform": [ + 1, + 0, + 0, + 1, + 0, + 0 + ] + } + ] + }, + "userDefined": {} +} \ No newline at end of file diff --git a/ocd/library/c3/OKENetworkInfrastructure.svg b/ocd/library/c3/OKENetworkInfrastructure.svg new file mode 100644 index 000000000..ff51c2082 --- /dev/null +++ b/ocd/library/c3/OKENetworkInfrastructure.svg @@ -0,0 +1,594 @@ + + + + + + + +
+
+
+
+
+Vcn +oke-vcn +
+
+
+ + + +
+
+
+
+
+Route Table +public +
+
+
+
+ + + +
+
+
+
+
+Security List +Default Security List +
+
+
+
+ + + +
+
+
+
+
+Subnet +worker +
+
+
+
+ + + +
+
+
+
+
+Subnet +service-lb +
+
+
+
+ + + +
+
+
+
+
+Subnet +control-plane-endpoint +
+
+
+
+ + + +
+
+
+
+
+Subnet +control-plane +
+
+
+
+ + + +
+
+
+
+
+Internet Gateway +Internet Gateway cf4a +
+
+
+
+ + + +
+
+
+
+
+Route Table +Default - private +
+
+
+
+ + + +
+
+
+
+
+Security List +worker-seclist +
+
+
+
+ + + +
+
+
+
+
+NAT Gateway +Nat Gateway 8390 +
+
+
+
+ + + +
+
+
+
+
+Security List +workerlb-seclist +
+
+
+
+ + + +
+
+
+
+
+Security List +kmi-seclist +
+
+
+
+ + + +
+
+
+
+
+Security List +kmilb-seclist +
+
+
+
+
+ + +
\ No newline at end of file diff --git a/ocd/library/oci/SimpleNetworking.okit b/ocd/library/oci/SimpleNetworking.okit index 8300f42c9..bdc7a89e3 100644 --- a/ocd/library/oci/SimpleNetworking.okit +++ b/ocd/library/oci/SimpleNetworking.okit @@ -259,8 +259,8 @@ "pgid": "", "ocid": "okit.vcn.46ab2682-8ddf-46e5-8f53-a2567872e652", "pocid": "", - "x": 54, - "y": 48, + "x": 16, + "y": 27, "w": 542, "h": 300, "title": "Vcn", diff --git a/ocd/library/pca/OKENetworkInfrastructure.okit b/ocd/library/pca/OKENetworkInfrastructure.okit new file mode 100644 index 000000000..6ab12c12f --- /dev/null +++ b/ocd/library/pca/OKENetworkInfrastructure.okit @@ -0,0 +1,1381 @@ +{ + "metadata": { + "ocdVersion": "0.1.0", + "ocdSchemaVersion": "0.1.0", + "ocdModelId": "ocd-model-b229c12b-895f-4317-aae0-9b9c2a7d8232", + "platform": "oci", + "title": "OKE Networking for PCA", + "documentation": "", + "created": "2024-3-20 15:17:4", + "updated": "" + }, + "model": { + "oci": { + "tags": {}, + "vars": [ + { + "key": "1e33f753-c4a9-48d4-9b11-5e48bce70e22", + "name": "vcn_cidr", + "default": "172.31.252.0/23", + "description": "VCN CIDR Range" + }, + { + "key": "c00fdc98-bd12-442c-81ea-08f969b397e3", + "name": "worker_cidr", + "default": "172.31.253.0/24", + "description": "Worker Subnet CIDR" + }, + { + "key": "57516fab-d616-4c41-a3c0-e08aeb2474df", + "name": "workerlb_cidr", + "default": "172.31.252.0/25", + "description": "Worker load balancer subnet CIDR" + }, + { + "key": "716793dc-3d77-42fd-859c-9ce7da918e5d", + "name": "kmi_cidr", + "default": "172.31.252.224/28", + "description": "OKE control plane subnet CIDR" + }, + { + "key": "d2186923-fd37-4e6d-99d1-6d7d4046daea", + "name": "kmilb_cidr", + "default": "172.31.252.240/28", + "description": "OKE control plane load balancer subnet CIDR" + }, + { + "key": "d5134fbf-4068-41d0-96f7-1df33da4b6c0", + "name": "kube_client_cidr", + "default": "0.0.0.0/0", + "description": "CIDR for clients that are allowed to contact the Kubernetes API server" + }, + { + "key": "1ce085b8-4869-411f-92db-ae37ed08aeb9", + "name": "kubernetes_api_port", + "default": "6443", + "description": "Kubernetes API Port" + }, + { + "key": "f51fb8ee-a901-4827-82f7-c408a5e124bf", + "name": "kube_internal_cidr", + "default": "", + "description": "Kubernetes Internal CIDR" + } + ], + "resources": { + "compartment": [ + { + "provider": "oci", + "locked": false, + "terraformResourceName": "OkitCompartment1710947824201", + "okitReference": "okit-b77f0b12-5fa2-4e47-bdce-1bec8df8e06e", + "resourceType": "Compartment", + "resourceTypeName": "Compartment", + "id": "okit.compartment.c373a27c-dc58-4cde-9dce-db3de0ca8056", + "region": "", + "compartmentId": "", + "displayName": "network", + "documentation": "", + "description": "OCI Compartment", + "enableDelete": false, + "name": "network" + } + ], + "vcn": [ + { + "provider": "oci", + "locked": false, + "terraformResourceName": "OkitVcn1710947839505", + "okitReference": "okit-051a4a99-9d86-4ab3-b7f1-b2bca1f11d6f", + "resourceType": "Vcn", + "resourceTypeName": "Vcn", + "id": "okit.vcn.81346ca4-8738-446a-861e-76a66333e15f", + "region": "", + "compartmentId": "okit.compartment.c373a27c-dc58-4cde-9dce-db3de0ca8056", + "displayName": "oke-vcn", + "documentation": "", + "cidrBlocks": [ + "var.vcn_cidr" + ], + "dnsLabel": "oketest", + "ipv6privateCidrBlocks": [], + "isIpv6enabled": false + } + ], + "route_table": [ + { + "provider": "oci", + "locked": false, + "terraformResourceName": "OkitRouteTable1710947839505", + "okitReference": "okit-5d7d82f3-757b-4dac-8476-acd6e21d81af", + "resourceType": "RouteTable", + "resourceTypeName": "Route Table", + "id": "okit.route_table.72c432b5-408f-4ec2-b5e8-d1fa7f35de15", + "region": "", + "compartmentId": "okit.compartment.c373a27c-dc58-4cde-9dce-db3de0ca8056", + "displayName": "public", + "documentation": "", + "vcnId": "okit.vcn.81346ca4-8738-446a-861e-76a66333e15f", + "routeRules": [ + { + "description": "OKE Public Route Rule", + "destination": "0.0.0.0/0", + "destinationType": "CIDR_BLOCK", + "networkEntityId": "okit.internet_gateway.8dedbfe4-b80c-4975-80d8-f8229ed6b8b0", + "key": "f55a753a-38e2-481d-865d-da9a11ea9bae" + } + ], + "vcnDefault": false + }, + { + "provider": "oci", + "locked": false, + "terraformResourceName": "OkitRouteTable1710950544397", + "okitReference": "okit-ba2cee58-2a6f-4130-8d58-d3d5278e51ad", + "resourceType": "RouteTable", + "resourceTypeName": "Route Table", + "id": "okit.route_table.e3052a9f-6a9e-4f6c-9a85-2f0ee613f521", + "region": "", + "compartmentId": "okit.compartment.c373a27c-dc58-4cde-9dce-db3de0ca8056", + "displayName": "Default - private", + "documentation": "", + "vcnId": "okit.vcn.81346ca4-8738-446a-861e-76a66333e15f", + "routeRules": [ + { + "description": "OKE Private Route Table", + "destination": "0.0.0.0/0", + "destinationType": "CIDR_BLOCK", + "networkEntityId": "okit.nat_gateway.25c19fe1-d06d-4fe8-ad8e-3d166a95ed1e", + "key": "0c6cb6cf-01d2-4109-986a-62e73c734d10" + } + ], + "vcnDefault": true + } + ], + "security_list": [ + { + "provider": "oci", + "locked": false, + "terraformResourceName": "OkitSecurityList1710947839506", + "okitReference": "okit-4cd3c689-5920-4fc2-b743-915d3dbca648", + "resourceType": "SecurityList", + "resourceTypeName": "Security List", + "id": "okit.security_list.b1d9b9e4-4b0d-40b4-aee9-f6e2d370be3c", + "region": "", + "compartmentId": "okit.compartment.c373a27c-dc58-4cde-9dce-db3de0ca8056", + "displayName": "Default Security List", + "documentation": "", + "vcnId": "okit.vcn.81346ca4-8738-446a-861e-76a66333e15f", + "egressSecurityRules": [ + { + "destination": "0.0.0.0/0", + "destinationType": "CIDR_BLOCK", + "stateless": false, + "protocol": "all", + "description": "Default All Egress Rule", + "key": "43c34197-7e72-4e54-b8b0-689dc4e7eaac" + } + ], + "ingressSecurityRules": [ + { + "stateless": false, + "protocol": "6", + "source": "0.0.0.0/0", + "sourceType": "CIDR_BLOCK", + "tcpOptions": { + "max": 22, + "min": 22, + "sourcePortRange": { + "min": 0, + "max": 0 + } + }, + "description": " Default SSH Ingress Rule", + "key": "3256b008-f0bd-48cc-8fa0-199183ec6a14" + }, + { + "icmpOptions": { + "code": 4, + "type": 3 + }, + "stateless": false, + "protocol": "1", + "source": "0.0.0.0/0", + "sourceType": "CIDR_BLOCK", + "description": "Default Ingress Rule", + "key": "bb8d780f-ab99-4024-80b6-c641fd274aa9" + }, + { + "icmpOptions": { + "type": 3 + }, + "stateless": false, + "protocol": "1", + "source": "10.0.0.0/16", + "sourceType": "CIDR_BLOCK", + "description": "Default VCN Access Ingress Rule", + "key": "73444067-fd20-4031-8f2f-c4f5ee9ffa7a" + } + ], + "vcnDefault": true + }, + { + "provider": "oci", + "locked": false, + "terraformResourceName": "OkitSecurityList1712841004037", + "okitReference": "okit-8a14df44-2ea5-4661-a438-60823bd05dd2", + "resourceType": "SecurityList", + "resourceTypeName": "Security List", + "id": "okit.security_list.99258699-cf5f-429d-b8f2-7d68c094d53e", + "region": "", + "compartmentId": "okit.compartment.c373a27c-dc58-4cde-9dce-db3de0ca8056", + "displayName": "worker-seclist", + "documentation": "", + "vcnId": "okit.vcn.81346ca4-8738-446a-861e-76a66333e15f", + "egressSecurityRules": [], + "ingressSecurityRules": [ + { + "description": "Allow external ssh", + "protocol": "6", + "source": "var.vcn_cidr", + "sourceType": "CIDR_BLOCK", + "stateless": false, + "icmpOptions": { + "code": 0, + "type": 0 + }, + "tcpOptions": { + "max": "22", + "min": "22", + "sourcePortRange": { + "max": "", + "min": "" + } + }, + "udpOptions": { + "max": 0, + "min": 0, + "sourcePortRange": { + "max": 0, + "min": 0 + } + }, + "key": "35ac2adf-6729-44a8-a170-67531ab32e48" + }, + { + "description": "Allow Kubernetes clients to contact the default node port range", + "protocol": "6", + "source": "var.kube_client_cidr", + "sourceType": "CIDR_BLOCK", + "stateless": false, + "icmpOptions": { + "code": 0, + "type": 0 + }, + "tcpOptions": { + "max": "32767", + "min": "30000", + "sourcePortRange": { + "max": "", + "min": "" + } + }, + "udpOptions": { + "max": 0, + "min": 0, + "sourcePortRange": { + "max": 0, + "min": 0 + } + }, + "key": "bfb2f617-6a07-4c40-8cc0-c2efc54d1a3f" + }, + { + "description": "Allow the worker load balancer to contact the worker nodes.", + "protocol": "6", + "source": "var.workerlb_cidr", + "sourceType": "CIDR_BLOCK", + "stateless": false, + "icmpOptions": { + "code": 0, + "type": 0 + }, + "tcpOptions": { + "max": "32767", + "min": "30000", + "sourcePortRange": { + "max": "", + "min": "" + } + }, + "udpOptions": { + "max": 0, + "min": 0, + "sourcePortRange": { + "max": 0, + "min": 0 + } + }, + "key": "c281c8f4-5163-4166-abdc-2d42df9cec36" + }, + { + "description": "Allow the worker load balancer to contact the worker nodes.", + "protocol": "6", + "source": "var.workerlb_cidr", + "sourceType": "CIDR_BLOCK", + "stateless": false, + "icmpOptions": { + "code": 0, + "type": 0 + }, + "tcpOptions": { + "max": "10256", + "min": "10256", + "sourcePortRange": { + "max": "", + "min": "" + } + }, + "udpOptions": { + "max": 0, + "min": 0, + "sourcePortRange": { + "max": 0, + "min": 0 + } + }, + "key": "72fecf65-8432-4899-a15d-5037d92b614d" + }, + { + "description": "Allow the control plane to contact the worker nodes.", + "protocol": "6", + "source": "var.kmi_cidr", + "sourceType": "CIDR_BLOCK", + "stateless": false, + "icmpOptions": { + "code": 0, + "type": 0 + }, + "tcpOptions": { + "max": "65535", + "min": "22", + "sourcePortRange": { + "max": "", + "min": "" + } + }, + "udpOptions": { + "max": 0, + "min": 0, + "sourcePortRange": { + "max": 0, + "min": 0 + } + }, + "key": "837a2064-7bf3-4386-b6a2-1405d031b677" + }, + { + "description": "Allow the worker nodes to contact the other worker nodes in the subnet.", + "protocol": "17", + "source": "var.worker_cidr", + "sourceType": "CIDR_BLOCK", + "stateless": false, + "icmpOptions": { + "code": 0, + "type": 0 + }, + "tcpOptions": { + "max": 0, + "min": 0, + "sourcePortRange": { + "max": 0, + "min": 0 + } + }, + "udpOptions": { + "max": "8472", + "min": "8285", + "sourcePortRange": { + "max": "", + "min": "" + } + }, + "key": "c4c676b9-73c6-499a-962e-f9627182ffb1" + }, + { + "description": "Allow the control plane to contact the worker nodes.", + "protocol": "17", + "source": "var.kmi_cidr", + "sourceType": "CIDR_BLOCK", + "stateless": false, + "icmpOptions": { + "code": 0, + "type": 0 + }, + "tcpOptions": { + "max": 0, + "min": 0, + "sourcePortRange": { + "max": 0, + "min": 0 + } + }, + "udpOptions": { + "max": "8472", + "min": "8285", + "sourcePortRange": { + "max": "", + "min": "" + } + }, + "key": "68aa1a49-607e-435e-8b6c-e888cdc8c06f" + } + ] + }, + { + "provider": "oci", + "locked": false, + "terraformResourceName": "OkitSecurityList1713198200042", + "okitReference": "okit-fb3ae43b-dac0-4479-a4a1-2f1bf2d12f34", + "resourceType": "SecurityList", + "resourceTypeName": "Security List", + "id": "okit.security_list.9cf44b7c-5587-412d-9bf9-c8d04430d909", + "region": "", + "compartmentId": "okit.compartment.c373a27c-dc58-4cde-9dce-db3de0ca8056", + "displayName": "workerlb-seclist", + "documentation": "", + "vcnId": "okit.vcn.81346ca4-8738-446a-861e-76a66333e15f", + "egressSecurityRules": [], + "ingressSecurityRules": [ + { + "description": "Allow inbound traffic for applications.", + "protocol": "6", + "source": "var.kube_client_cidr", + "sourceType": "CIDR_BLOCK", + "stateless": false, + "icmpOptions": { + "code": 0, + "type": 0 + }, + "tcpOptions": { + "max": "80", + "min": "80", + "sourcePortRange": { + "max": "", + "min": "" + } + }, + "udpOptions": { + "max": 0, + "min": 0, + "sourcePortRange": { + "max": 0, + "min": 0 + } + }, + "key": "a2520f71-ac10-4c3f-866b-0cbf9a7e9cfe" + }, + { + "description": "Allow inbound traffic for applications.", + "protocol": "6", + "source": "var.kube_client_cidr", + "sourceType": "CIDR_BLOCK", + "stateless": false, + "icmpOptions": { + "code": 0, + "type": 0 + }, + "tcpOptions": { + "max": "443", + "min": "443", + "sourcePortRange": { + "max": "", + "min": "" + } + }, + "udpOptions": { + "max": 0, + "min": 0, + "sourcePortRange": { + "max": 0, + "min": 0 + } + }, + "key": "53675f54-9367-4118-8b01-9760622ec915" + } + ] + }, + { + "provider": "oci", + "locked": false, + "terraformResourceName": "OkitSecurityList1713260583878", + "okitReference": "okit-e9de9027-e83b-4a9c-a01f-c813db665f9e", + "resourceType": "SecurityList", + "resourceTypeName": "Security List", + "id": "okit.security_list.bcec8ab1-11a5-4b64-b7b7-36c4528a910d", + "region": "", + "compartmentId": "okit.compartment.c373a27c-dc58-4cde-9dce-db3de0ca8056", + "displayName": "kmi-seclist", + "documentation": "", + "vcnId": "okit.vcn.81346ca4-8738-446a-861e-76a66333e15f", + "egressSecurityRules": [], + "ingressSecurityRules": [ + { + "description": "Allow inbound connections to the Kubernetes API server.", + "protocol": "6", + "source": "var.kube_client_cidr", + "sourceType": "CIDR_BLOCK", + "stateless": false, + "icmpOptions": { + "code": 0, + "type": 0 + }, + "tcpOptions": { + "max": "6443", + "min": "6443", + "sourcePortRange": { + "max": "", + "min": "" + } + }, + "udpOptions": { + "max": 0, + "min": 0, + "sourcePortRange": { + "max": 0, + "min": 0 + } + }, + "key": "5c2d81a6-d682-4700-afb7-44192b7ea6a8" + }, + { + "description": "Allow inbound connections from the control plane load balancer.", + "protocol": "6", + "source": "var.kmilb_cidr", + "sourceType": "CIDR_BLOCK", + "stateless": false, + "icmpOptions": { + "code": 0, + "type": 0 + }, + "tcpOptions": { + "max": "6443", + "min": "6443", + "sourcePortRange": { + "max": "", + "min": "" + } + }, + "udpOptions": { + "max": 0, + "min": 0, + "sourcePortRange": { + "max": 0, + "min": 0 + } + }, + "key": "3bc3e16c-ab97-4935-82ef-513aee393362" + }, + { + "description": "Allow inbound connections from worker nodes to the control plane.", + "protocol": "6", + "source": "var.worker_cidr", + "sourceType": "CIDR_BLOCK", + "stateless": false, + "icmpOptions": { + "code": 0, + "type": 0 + }, + "tcpOptions": { + "max": "65535", + "min": "1024", + "sourcePortRange": { + "max": "", + "min": "" + } + }, + "udpOptions": { + "max": 0, + "min": 0, + "sourcePortRange": { + "max": 0, + "min": 0 + } + }, + "key": "9eb492f7-0f98-4ec6-83b2-93ba1e0e420c" + }, + { + "description": "Allow inbound connections within the control plane.", + "protocol": "6", + "source": "var.kmi_cidr", + "sourceType": "CIDR_BLOCK", + "stateless": false, + "icmpOptions": { + "code": 0, + "type": 0 + }, + "tcpOptions": { + "max": "65535", + "min": "1024", + "sourcePortRange": { + "max": "", + "min": "" + } + }, + "udpOptions": { + "max": 0, + "min": 0, + "sourcePortRange": { + "max": 0, + "min": 0 + } + }, + "key": "eeee6681-08cf-4599-8f40-55354e5c3119" + }, + { + "description": "Allow inbound connections within the control plane subnet.", + "protocol": "17", + "source": "var.worker_cidr", + "sourceType": "CIDR_BLOCK", + "stateless": false, + "icmpOptions": { + "code": 0, + "type": 0 + }, + "tcpOptions": { + "max": 0, + "min": 0, + "sourcePortRange": { + "max": 0, + "min": 0 + } + }, + "udpOptions": { + "max": "8472", + "min": "8285", + "sourcePortRange": { + "max": "", + "min": "" + } + }, + "key": "05addd1e-83ac-4c04-8433-e89ba044c1cc" + }, + { + "description": "", + "protocol": "17", + "source": "var.kmi_cidr", + "sourceType": "CIDR_BLOCK", + "stateless": false, + "icmpOptions": { + "code": 0, + "type": 0 + }, + "tcpOptions": { + "max": 0, + "min": 0, + "sourcePortRange": { + "max": 0, + "min": 0 + } + }, + "udpOptions": { + "max": "8472", + "min": "8285", + "sourcePortRange": { + "max": "", + "min": "" + } + }, + "key": "7ee656de-d939-4bf3-b454-a2d6abd5e067" + } + ] + }, + { + "provider": "oci", + "locked": false, + "terraformResourceName": "OkitSecurityList1713281661978", + "okitReference": "okit-d5d11eb3-9750-4b10-b4f3-a1c19d01adca", + "resourceType": "SecurityList", + "resourceTypeName": "Security List", + "id": "okit.security_list.8b1cde33-93eb-4f69-afd8-a6f87c79d1a5", + "region": "", + "compartmentId": "okit.compartment.c373a27c-dc58-4cde-9dce-db3de0ca8056", + "displayName": "kmilb-seclist", + "documentation": "", + "vcnId": "okit.vcn.81346ca4-8738-446a-861e-76a66333e15f", + "egressSecurityRules": [], + "ingressSecurityRules": [ + { + "description": "Allow inbound connections to the control plane load balancer.", + "protocol": "6", + "source": "var.kube_internal_cidr", + "sourceType": "CIDR_BLOCK", + "stateless": false, + "icmpOptions": { + "code": 0, + "type": 0 + }, + "tcpOptions": { + "max": "6443", + "min": "6443", + "sourcePortRange": { + "max": "", + "min": "" + } + }, + "udpOptions": { + "max": 0, + "min": 0, + "sourcePortRange": { + "max": 0, + "min": 0 + } + }, + "key": "27f0ad38-aae1-46ca-848d-00432abed440" + }, + { + "description": "Allow inbound connections to the control plane load balancer.", + "protocol": "6", + "source": "var.kube_client_cidr", + "sourceType": "CIDR_BLOCK", + "stateless": false, + "icmpOptions": { + "code": 0, + "type": 0 + }, + "tcpOptions": { + "max": "6443", + "min": "6443", + "sourcePortRange": { + "max": "", + "min": "" + } + }, + "udpOptions": { + "max": 0, + "min": 0, + "sourcePortRange": { + "max": 0, + "min": 0 + } + }, + "key": "9a65a235-0b2c-4547-b412-0bca9d58121a" + }, + { + "description": "Allow inbound connections to the control plane load balancer.", + "protocol": "6", + "source": "var.vcn_cidr", + "sourceType": "CIDR_BLOCK", + "stateless": false, + "icmpOptions": { + "code": 0, + "type": 0 + }, + "tcpOptions": { + "max": "6443", + "min": "6443", + "sourcePortRange": { + "max": "", + "min": "" + } + }, + "udpOptions": { + "max": 0, + "min": 0, + "sourcePortRange": { + "max": 0, + "min": 0 + } + }, + "key": "9d3ae5bf-b7d5-49bf-8682-6035ec831ce0" + } + ] + } + ], + "dhcp_options": [], + "subnet": [ + { + "provider": "oci", + "locked": false, + "terraformResourceName": "OkitSubnet1710948311499", + "okitReference": "okit-ef14aad8-07ed-4579-b701-0301772c4d18", + "resourceType": "Subnet", + "resourceTypeName": "Subnet", + "id": "okit.subnet.7aed5d41-d55c-475c-8341-a73d81bec49e", + "region": "", + "compartmentId": "okit.compartment.c373a27c-dc58-4cde-9dce-db3de0ca8056", + "displayName": "worker", + "documentation": "", + "availabilityDomain": "1", + "cidrBlock": "var.worker_cidr", + "dhcpOptionsId": "", + "dnsLabel": "worker", + "ipv6cidrBlock": "", + "ipv6cidrBlocks": [], + "prohibitInternetIngress": false, + "prohibitPublicIpOnVnic": true, + "routeTableId": "okit.route_table.e3052a9f-6a9e-4f6c-9a85-2f0ee613f521", + "securityListIds": [ + "okit.security_list.99258699-cf5f-429d-b8f2-7d68c094d53e", + "okit.security_list.b1d9b9e4-4b0d-40b4-aee9-f6e2d370be3c" + ], + "vcnId": "okit.vcn.81346ca4-8738-446a-861e-76a66333e15f" + }, + { + "provider": "oci", + "locked": false, + "terraformResourceName": "OkitSubnet1710948805387", + "okitReference": "okit-111777cd-4080-4866-b7cc-13666f5733e6", + "resourceType": "Subnet", + "resourceTypeName": "Subnet", + "id": "okit.subnet.a99cad89-a4f6-48bc-891f-6b95467f1e19", + "region": "", + "compartmentId": "okit.compartment.c373a27c-dc58-4cde-9dce-db3de0ca8056", + "displayName": "service-lb", + "documentation": "", + "availabilityDomain": "1", + "cidrBlock": "var.workerlb_cidr", + "dhcpOptionsId": "", + "dnsLabel": "servicelb", + "ipv6cidrBlock": "", + "ipv6cidrBlocks": [], + "prohibitInternetIngress": false, + "prohibitPublicIpOnVnic": false, + "routeTableId": "okit.route_table.72c432b5-408f-4ec2-b5e8-d1fa7f35de15", + "securityListIds": [ + "okit.security_list.9cf44b7c-5587-412d-9bf9-c8d04430d909", + "okit.security_list.b1d9b9e4-4b0d-40b4-aee9-f6e2d370be3c" + ], + "vcnId": "okit.vcn.81346ca4-8738-446a-861e-76a66333e15f" + }, + { + "provider": "oci", + "locked": false, + "terraformResourceName": "OkitSubnet1710948971616", + "okitReference": "okit-64c515a7-49b6-4ee2-b6c1-0d772a5203e8", + "resourceType": "Subnet", + "resourceTypeName": "Subnet", + "id": "okit.subnet.1b83d3ef-9bd9-4616-a9eb-dc01e5189205", + "region": "", + "compartmentId": "okit.compartment.c373a27c-dc58-4cde-9dce-db3de0ca8056", + "displayName": "control-plane-endpoint", + "documentation": "", + "availabilityDomain": "1", + "cidrBlock": "var.kmilb_cidr", + "dhcpOptionsId": "", + "dnsLabel": "kmilb", + "ipv6cidrBlock": "", + "ipv6cidrBlocks": [], + "prohibitInternetIngress": false, + "prohibitPublicIpOnVnic": false, + "routeTableId": "okit.route_table.72c432b5-408f-4ec2-b5e8-d1fa7f35de15", + "securityListIds": [ + "okit.security_list.b1d9b9e4-4b0d-40b4-aee9-f6e2d370be3c", + "okit.security_list.8b1cde33-93eb-4f69-afd8-a6f87c79d1a5" + ], + "vcnId": "okit.vcn.81346ca4-8738-446a-861e-76a66333e15f" + }, + { + "provider": "oci", + "locked": false, + "terraformResourceName": "OkitSubnet1710949292204", + "okitReference": "okit-54649cbc-f187-4db4-bb8a-becff4534b58", + "resourceType": "Subnet", + "resourceTypeName": "Subnet", + "id": "okit.subnet.4687def4-a360-4ac8-a3a6-2e1e48f23288", + "region": "", + "compartmentId": "okit.compartment.c373a27c-dc58-4cde-9dce-db3de0ca8056", + "displayName": "control-plane", + "documentation": "", + "availabilityDomain": "1", + "cidrBlock": "var.kmi_cidr", + "dhcpOptionsId": "", + "dnsLabel": "kmi", + "ipv6cidrBlock": "", + "ipv6cidrBlocks": [], + "prohibitInternetIngress": false, + "prohibitPublicIpOnVnic": true, + "routeTableId": "okit.route_table.e3052a9f-6a9e-4f6c-9a85-2f0ee613f521", + "securityListIds": [ + "okit.security_list.bcec8ab1-11a5-4b64-b7b7-36c4528a910d", + "okit.security_list.b1d9b9e4-4b0d-40b4-aee9-f6e2d370be3c" + ], + "vcnId": "okit.vcn.81346ca4-8738-446a-861e-76a66333e15f" + } + ], + "internet_gateway": [ + { + "provider": "oci", + "locked": false, + "terraformResourceName": "OkitInternetGateway1710950473668", + "okitReference": "okit-e9526f7c-e8da-4714-adac-3cbb0cd7c052", + "resourceType": "InternetGateway", + "resourceTypeName": "Internet Gateway", + "id": "okit.internet_gateway.8dedbfe4-b80c-4975-80d8-f8229ed6b8b0", + "region": "", + "compartmentId": "okit.compartment.c373a27c-dc58-4cde-9dce-db3de0ca8056", + "displayName": "Internet Gateway cf4a", + "documentation": "", + "enabled": false, + "vcnId": "okit.vcn.81346ca4-8738-446a-861e-76a66333e15f" + } + ], + "nat_gateway": [ + { + "provider": "oci", + "locked": false, + "terraformResourceName": "OkitNatGateway1710950510108", + "okitReference": "okit-7af4f296-f61e-4c73-accf-d663b293dadf", + "resourceType": "NatGateway", + "resourceTypeName": "NAT Gateway", + "id": "okit.nat_gateway.25c19fe1-d06d-4fe8-ad8e-3d166a95ed1e", + "region": "", + "compartmentId": "okit.compartment.c373a27c-dc58-4cde-9dce-db3de0ca8056", + "displayName": "Nat Gateway 8390", + "documentation": "", + "blockTraffic": false, + "vcnId": "okit.vcn.81346ca4-8738-446a-861e-76a66333e15f" + } + ], + "dynamic_group": [ + { + "provider": "oci", + "locked": false, + "terraformResourceName": "OkitDynamicGroup1713431305858", + "okitReference": "okit-6166659f-5cd6-4e4b-8b6a-4470d96de17a", + "resourceType": "DynamicGroup", + "resourceTypeName": "Dynamic Group", + "id": "okit.dynamic_group.be91810e-d732-4ac0-ae6e-f1b700b2677b", + "region": "", + "compartmentId": "okit.compartment.c373a27c-dc58-4cde-9dce-db3de0ca8056", + "displayName": "Dynamic Group bed0", + "documentation": "", + "description": "", + "matchingRule": "" + } + ] + } + } + }, + "view": { + "id": "view-a75a9288-50c5-42f0-81b8-37f33120e408", + "pages": [ + { + "id": "page-fabb010c-9586-4cbf-928f-e015865988be", + "title": "Open Cloud Design", + "documentation": "", + "layers": [ + { + "id": "okit.compartment.c373a27c-dc58-4cde-9dce-db3de0ca8056", + "class": "oci-compartment", + "visible": true, + "selected": true + } + ], + "coords": [ + { + "id": "gid-f5895766-73e7-4e0b-a6a1-b81abcff38c8", + "pgid": "", + "ocid": "okit.vcn.81346ca4-8738-446a-861e-76a66333e15f", + "pocid": "", + "x": 35, + "y": 66, + "w": 1000, + "h": 780, + "title": "Vcn", + "class": "oci-vcn", + "showParentConnection": true, + "showConnections": true, + "container": true, + "coords": [ + { + "id": "gid-943dff8a-2342-409b-b7fa-58eb4f9e152d", + "pgid": "gid-f5895766-73e7-4e0b-a6a1-b81abcff38c8", + "ocid": "okit.route_table.72c432b5-408f-4ec2-b5e8-d1fa7f35de15", + "pocid": "okit.vcn.81346ca4-8738-446a-861e-76a66333e15f", + "x": 15, + "y": 176, + "w": 32, + "h": 32, + "title": "Route Table", + "class": "oci-route-table", + "showParentConnection": true, + "showConnections": true, + "container": false + }, + { + "id": "gid-2d13ffb1-fa2b-4f88-9db5-3940f97f9d1b", + "pgid": "gid-f5895766-73e7-4e0b-a6a1-b81abcff38c8", + "ocid": "okit.security_list.b1d9b9e4-4b0d-40b4-aee9-f6e2d370be3c", + "pocid": "okit.vcn.81346ca4-8738-446a-861e-76a66333e15f", + "x": 15, + "y": 284, + "w": 32, + "h": 32, + "title": "Security List", + "class": "oci-security-list", + "showParentConnection": true, + "showConnections": true, + "container": false + }, + { + "id": "gid-66932511-97e3-4b4d-b402-70d19e5c5528", + "pgid": "gid-f5895766-73e7-4e0b-a6a1-b81abcff38c8", + "ocid": "okit.subnet.7aed5d41-d55c-475c-8341-a73d81bec49e", + "pocid": "okit.vcn.81346ca4-8738-446a-861e-76a66333e15f", + "x": 600, + "y": 410, + "w": 300, + "h": 130, + "title": "Subnet", + "class": "oci-subnet", + "showParentConnection": true, + "showConnections": true, + "container": true + }, + { + "id": "gid-5c3300e4-afeb-40eb-ac9e-a79d20c43ff3", + "pgid": "gid-f5895766-73e7-4e0b-a6a1-b81abcff38c8", + "ocid": "okit.subnet.a99cad89-a4f6-48bc-891f-6b95467f1e19", + "pocid": "okit.vcn.81346ca4-8738-446a-861e-76a66333e15f", + "x": 601, + "y": 69, + "w": 300, + "h": 130, + "title": "Subnet", + "class": "oci-subnet", + "showParentConnection": true, + "showConnections": true, + "container": true + }, + { + "id": "gid-6bf29949-3f85-4922-a3a7-b04e09adc0ec", + "pgid": "gid-f5895766-73e7-4e0b-a6a1-b81abcff38c8", + "ocid": "okit.subnet.1b83d3ef-9bd9-4616-a9eb-dc01e5189205", + "pocid": "okit.vcn.81346ca4-8738-446a-861e-76a66333e15f", + "x": 600, + "y": 240, + "w": 300, + "h": 130, + "title": "Subnet", + "class": "oci-subnet", + "showParentConnection": true, + "showConnections": true, + "container": true + }, + { + "id": "gid-34d7e085-3ca0-4608-8abe-e88b170ba2f1", + "pgid": "gid-f5895766-73e7-4e0b-a6a1-b81abcff38c8", + "ocid": "okit.subnet.4687def4-a360-4ac8-a3a6-2e1e48f23288", + "pocid": "okit.vcn.81346ca4-8738-446a-861e-76a66333e15f", + "x": 600, + "y": 580, + "w": 300, + "h": 130, + "title": "Subnet", + "class": "oci-subnet", + "showParentConnection": true, + "showConnections": true, + "container": true + }, + { + "id": "gid-7139517e-8d24-47e9-81e8-aca50e0aec22", + "pgid": "gid-f5895766-73e7-4e0b-a6a1-b81abcff38c8", + "ocid": "okit.internet_gateway.8dedbfe4-b80c-4975-80d8-f8229ed6b8b0", + "pocid": "okit.vcn.81346ca4-8738-446a-861e-76a66333e15f", + "x": 600, + "y": -21, + "w": 32, + "h": 32, + "title": "Internet Gateway", + "class": "oci-internet-gateway", + "showParentConnection": true, + "showConnections": true, + "container": false + }, + { + "id": "gid-5e0e3b70-cd99-4142-9ac5-69e49fe57a5a", + "pgid": "gid-f5895766-73e7-4e0b-a6a1-b81abcff38c8", + "ocid": "okit.route_table.e3052a9f-6a9e-4f6c-9a85-2f0ee613f521", + "pocid": "okit.vcn.81346ca4-8738-446a-861e-76a66333e15f", + "x": 15, + "y": 396, + "w": 32, + "h": 32, + "title": "Route Table", + "class": "oci-route-table", + "showParentConnection": true, + "showConnections": true, + "container": false + }, + { + "id": "gid-de9b9eb8-236a-454e-86d9-2dcad2ccb5ad", + "pgid": "gid-f5895766-73e7-4e0b-a6a1-b81abcff38c8", + "ocid": "okit.security_list.99258699-cf5f-429d-b8f2-7d68c094d53e", + "pocid": "okit.vcn.81346ca4-8738-446a-861e-76a66333e15f", + "x": 15, + "y": 602, + "w": 32, + "h": 32, + "title": "Security List", + "class": "oci-security-list", + "showParentConnection": true, + "showConnections": true, + "container": false + }, + { + "id": "gid-3a049ac0-813b-43a7-b71a-4518d41c630b", + "pgid": "gid-f5895766-73e7-4e0b-a6a1-b81abcff38c8", + "ocid": "okit.nat_gateway.25c19fe1-d06d-4fe8-ad8e-3d166a95ed1e", + "pocid": "okit.vcn.81346ca4-8738-446a-861e-76a66333e15f", + "x": 600, + "y": 759, + "w": 32, + "h": 32, + "title": "NAT Gateway", + "class": "oci-nat-gateway", + "showParentConnection": true, + "showConnections": true, + "container": false + }, + { + "id": "gid-74fd4589-4c4f-4d96-bddc-d2ef8f2e5710", + "pgid": "gid-f5895766-73e7-4e0b-a6a1-b81abcff38c8", + "ocid": "okit.security_list.9cf44b7c-5587-412d-9bf9-c8d04430d909", + "pocid": "okit.vcn.81346ca4-8738-446a-861e-76a66333e15f", + "x": 15, + "y": 70, + "w": 32, + "h": 32, + "title": "Security List", + "class": "oci-security-list", + "showParentConnection": true, + "showConnections": true, + "container": false + }, + { + "id": "gid-fe064e09-f867-44bf-8f57-188864600d85", + "pgid": "gid-f5895766-73e7-4e0b-a6a1-b81abcff38c8", + "ocid": "okit.security_list.bcec8ab1-11a5-4b64-b7b7-36c4528a910d", + "pocid": "okit.vcn.81346ca4-8738-446a-861e-76a66333e15f", + "x": 15, + "y": 690, + "w": 32, + "h": 32, + "title": "Security List", + "class": "oci-security-list", + "showParentConnection": true, + "showConnections": true, + "container": false + }, + { + "id": "gid-7eaa96db-6c96-4ebb-8480-b6d6fba8009d", + "pgid": "gid-f5895766-73e7-4e0b-a6a1-b81abcff38c8", + "ocid": "okit.security_list.8b1cde33-93eb-4f69-afd8-a6f87c79d1a5", + "pocid": "okit.vcn.81346ca4-8738-446a-861e-76a66333e15f", + "x": 15, + "y": 515, + "w": 32, + "h": 32, + "title": "Security List", + "class": "oci-security-list", + "showParentConnection": true, + "showConnections": true, + "container": false + } + ] + } + ], + "connectors": [], + "selected": true, + "grid": false, + "transform": [ + 1, + 0, + 0, + 1, + 0, + 0 + ] + }, + { + "id": "page-5eb2e280-b64d-4bb8-8eba-25da30cba7d0", + "title": "Connections", + "documentation": "", + "layers": [ + { + "id": "okit.compartment.c373a27c-dc58-4cde-9dce-db3de0ca8056", + "class": "oci-compartment", + "visible": true, + "selected": true + } + ], + "coords": [ + { + "id": "gid-17609578-1d73-4a4b-af72-eeae53c156eb", + "pgid": "", + "ocid": "okit.vcn.81346ca4-8738-446a-861e-76a66333e15f", + "pocid": "", + "x": 65, + "y": 400, + "w": 300, + "h": 300, + "title": "Vcn", + "class": "oci-vcn", + "showParentConnection": true, + "showConnections": true, + "container": true, + "detailsStyle": "detailed" + }, + { + "id": "gid-1e2bcd1e-6023-4875-bc99-597b932eb981", + "pgid": "", + "ocid": "okit.subnet.a99cad89-a4f6-48bc-891f-6b95467f1e19", + "pocid": "", + "x": 854, + "y": 161, + "w": 300, + "h": 300, + "title": "Subnet", + "class": "oci-subnet", + "showParentConnection": true, + "showConnections": true, + "container": true, + "detailsStyle": "detailed" + }, + { + "id": "gid-a8681d82-ad48-46ac-b307-fc53147800fb", + "pgid": "", + "ocid": "okit.subnet.7aed5d41-d55c-475c-8341-a73d81bec49e", + "pocid": "", + "x": 849, + "y": 606, + "w": 300, + "h": 300, + "title": "Subnet", + "class": "oci-subnet", + "showParentConnection": true, + "showConnections": true, + "container": true, + "detailsStyle": "detailed" + }, + { + "id": "gid-bc238a23-fe71-45b1-bdd5-170a6a05af6c", + "pgid": "", + "ocid": "okit.subnet.1b83d3ef-9bd9-4616-a9eb-dc01e5189205", + "pocid": "", + "x": 856, + "y": 318, + "w": 300, + "h": 300, + "title": "Subnet", + "class": "oci-subnet", + "showParentConnection": true, + "showConnections": true, + "container": true, + "detailsStyle": "detailed" + }, + { + "id": "gid-223438ed-cdde-45f1-9a0a-6e099b96f676", + "pgid": "", + "ocid": "okit.subnet.4687def4-a360-4ac8-a3a6-2e1e48f23288", + "pocid": "", + "x": 854, + "y": 455, + "w": 300, + "h": 300, + "title": "Subnet", + "class": "oci-subnet", + "showParentConnection": true, + "showConnections": true, + "container": true, + "detailsStyle": "detailed" + }, + { + "id": "gid-fd755419-9ced-4f41-b5ad-30717ac2f6f6", + "pgid": "", + "ocid": "okit.route_table.72c432b5-408f-4ec2-b5e8-d1fa7f35de15", + "pocid": "", + "x": 414, + "y": 109, + "w": 32, + "h": 32, + "title": "Route Table", + "class": "oci-route-table", + "showParentConnection": true, + "showConnections": true, + "container": false + }, + { + "id": "gid-121fa94d-8629-40f2-ba4a-9a87ce25ca91", + "pgid": "", + "ocid": "okit.route_table.e3052a9f-6a9e-4f6c-9a85-2f0ee613f521", + "pocid": "", + "x": 396, + "y": 663, + "w": 32, + "h": 32, + "title": "Route Table", + "class": "oci-route-table", + "showParentConnection": true, + "showConnections": true, + "container": false + } + ], + "connectors": [], + "selected": false, + "grid": false, + "transform": [ + 1, + 0, + 0, + 1, + 0, + 0 + ] + }, + { + "id": "page-3151e201-155b-4114-b477-fb8e9b79a173", + "title": "Identity", + "documentation": "", + "layers": [ + { + "id": "okit.compartment.c373a27c-dc58-4cde-9dce-db3de0ca8056", + "class": "oci-compartment", + "visible": true, + "selected": true + } + ], + "coords": [ + { + "id": "gid-83e4c609-bee0-4aff-836b-892759d60f5d", + "pgid": "", + "ocid": "okit.dynamic_group.be91810e-d732-4ac0-ae6e-f1b700b2677b", + "pocid": "", + "x": 52, + "y": 45, + "w": 32, + "h": 32, + "title": "Dynamic Group", + "class": "oci-dynamic-group", + "showParentConnection": true, + "showConnections": true, + "container": false + } + ], + "connectors": [], + "selected": false, + "grid": false, + "transform": [ + 1, + 0, + 0, + 1, + 0, + 0 + ] + } + ] + }, + "userDefined": {} +} \ No newline at end of file diff --git a/ocd/library/pca/OKENetworkInfrastructure.svg b/ocd/library/pca/OKENetworkInfrastructure.svg new file mode 100644 index 000000000..ff51c2082 --- /dev/null +++ b/ocd/library/pca/OKENetworkInfrastructure.svg @@ -0,0 +1,594 @@ + + + + + + + +
+
+
+
+
+Vcn +oke-vcn +
+
+
+ + + +
+
+
+
+
+Route Table +public +
+
+
+
+ + + +
+
+
+
+
+Security List +Default Security List +
+
+
+
+ + + +
+
+
+
+
+Subnet +worker +
+
+
+
+ + + +
+
+
+
+
+Subnet +service-lb +
+
+
+
+ + + +
+
+
+
+
+Subnet +control-plane-endpoint +
+
+
+
+ + + +
+
+
+
+
+Subnet +control-plane +
+
+
+
+ + + +
+
+
+
+
+Internet Gateway +Internet Gateway cf4a +
+
+
+
+ + + +
+
+
+
+
+Route Table +Default - private +
+
+
+
+ + + +
+
+
+
+
+Security List +worker-seclist +
+
+
+
+ + + +
+
+
+
+
+NAT Gateway +Nat Gateway 8390 +
+
+
+
+ + + +
+
+
+
+
+Security List +workerlb-seclist +
+
+
+
+ + + +
+
+
+
+
+Security List +kmi-seclist +
+
+
+
+ + + +
+
+
+
+
+Security List +kmilb-seclist +
+
+
+
+
+ + +
\ No newline at end of file diff --git a/ocd/library/referenceArchitectures.json b/ocd/library/referenceArchitectures.json index ed2e85281..ba2312c66 100644 --- a/ocd/library/referenceArchitectures.json +++ b/ocd/library/referenceArchitectures.json @@ -10,6 +10,20 @@ "azure": [], "google": [], "aws": [], - "pca": [], - "c3": [] + "pca": [ + { + "title": "OKE Networking", + "description": "OKE networking infrastructure for the PCA.", + "okitFile": "OKENetworkInfrastructure.okit", + "svgFile": "OKENetworkInfrastructure.svg" + } + ], + "c3": [ + { + "title": "OKE Networking", + "description": "OKE networking infrastructure for the C3.", + "okitFile": "OKENetworkInfrastructure.okit", + "svgFile": "OKENetworkInfrastructure.svg" + } + ] } \ No newline at end of file diff --git a/ocd/package-lock.json b/ocd/package-lock.json index 23ff4e99b..4f82de13a 100644 --- a/ocd/package-lock.json +++ b/ocd/package-lock.json @@ -1,12 +1,12 @@ { "name": "ocd", - "version": "0.2.4", + "version": "0.2.5", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "ocd", - "version": "0.2.4", + "version": "0.2.5", "license": "UPL-1.0", "workspaces": [ "packages/core", @@ -26780,50 +26780,50 @@ }, "packages/cli": { "name": "@ocd/cli", - "version": "0.2.4", + "version": "0.2.5", "license": "UPL-1.0", "dependencies": { - "@ocd/codegen": "^0.2.4", - "@ocd/core": "^0.2.4", - "@ocd/export": "^0.2.4", - "@ocd/import": "^0.2.4", - "@ocd/model": "^0.2.4", - "@ocd/query": "^0.2.4" + "@ocd/codegen": ">=0.2.5", + "@ocd/core": ">=0.2.5", + "@ocd/export": ">=0.2.5", + "@ocd/import": ">=0.2.5", + "@ocd/model": ">=0.2.5", + "@ocd/query": ">=0.2.5" } }, "packages/codegen": { "name": "@ocd/codegen", - "version": "0.2.4", + "version": "0.2.5", "license": "UPL-1.0", "dependencies": { - "@ocd/core": "^0.2.4", + "@ocd/core": ">=0.2.5", "fs": "^0.0.1-security", "path": "^0.12.7" } }, "packages/codegen-cli": { "name": "@ocd/codegen-cli", - "version": "0.2.4", + "version": "0.2.5", "license": "UPL-1.0", "dependencies": { - "@ocd/codegen": "^0.2.4" + "@ocd/codegen": ">=0.2.5" } }, "packages/core": { "name": "@ocd/core", - "version": "0.2.4", + "version": "0.2.5", "license": "UPL-1.0" }, "packages/desktop": { "name": "@ocd/desktop", - "version": "0.2.4", + "version": "0.2.5", "license": "UPL-1.0", "dependencies": { - "@ocd/core": "^0.2.4", - "@ocd/export": "^0.2.4", - "@ocd/import": "^0.2.4", - "@ocd/model": "^0.2.4", - "@ocd/query": "^0.2.4", + "@ocd/core": ">=0.2.5", + "@ocd/export": ">=0.2.5", + "@ocd/import": ">=0.2.5", + "@ocd/model": ">=0.2.5", + "@ocd/query": ">=0.2.5", "@testing-library/jest-dom": "^5.17.0", "@testing-library/react": "^13.4.0", "@testing-library/user-event": "^13.5.0", @@ -26865,52 +26865,52 @@ }, "packages/export": { "name": "@ocd/export", - "version": "0.2.4", + "version": "0.2.5", "license": "UPL-1.0", "dependencies": { - "@ocd/core": "^0.2.4", - "@ocd/model": "^0.2.4" + "@ocd/core": ">=0.2.5", + "@ocd/model": ">=0.2.5" } }, "packages/import": { "name": "@ocd/import", - "version": "0.2.4", + "version": "0.2.5", "license": "UPL-1.0", "dependencies": { - "@ocd/core": "^0.2.4", - "@ocd/model": "^0.2.4" + "@ocd/core": ">=0.2.5", + "@ocd/model": ">=0.2.5" } }, "packages/model": { "name": "@ocd/model", - "version": "0.2.4", + "version": "0.2.5", "license": "UPL-1.0", "dependencies": { - "@ocd/core": "^0.2.4" + "@ocd/core": ">=0.2.5" } }, "packages/query": { "name": "@ocd/query", - "version": "0.2.4", + "version": "0.2.5", "license": "UPL-1.0", "dependencies": { - "@ocd/core": "^0.2.4", - "@ocd/model": "^0.2.4", - "oci-sdk": "^2.69.0" + "@ocd/core": ">=0.2.5", + "@ocd/model": ">=0.2.5", + "oci-sdk": ">=2.69.0" } }, "packages/react": { "name": "@ocd/react", - "version": "0.2.4", + "version": "0.2.5", "license": "ISC", "dependencies": { - "@ocd/core": "^0.2.4", - "@ocd/model": "^0.2.4" + "@ocd/core": ">=0.2.5", + "@ocd/model": ">=0.2.5" } }, "packages/web": { "name": "@ocd/web", - "version": "0.2.4", + "version": "0.2.5", "license": "UPL-1.0", "devDependencies": {} } diff --git a/ocd/package.json b/ocd/package.json index 449301b71..e9585f519 100644 --- a/ocd/package.json +++ b/ocd/package.json @@ -1,6 +1,6 @@ { "name": "ocd", - "version": "0.2.4", + "version": "0.2.5", "description": "OKIT Open Cloud Designer Desktop", "title": "OKIT Open Cloud Designer (Beta)", "author": { @@ -32,6 +32,7 @@ "install-and-codegen": "npm install --legacy-peer-deps && npm run compile-for-codegen && npm run import-and-generate && npm run build", "fresh-install": "npm run install-and-codegen", "reinstall": "npm run install-and-codegen", + "clean": "npm run clean --workspaces --if-present", "build": "npm run build --workspaces --if-present", "compile": "npm run compile --workspaces --if-present", "pack": "npm run pack --workspaces --if-present", diff --git a/ocd/packages/cli/package.json b/ocd/packages/cli/package.json index 475a3cbef..5345bd4e4 100644 --- a/ocd/packages/cli/package.json +++ b/ocd/packages/cli/package.json @@ -1,6 +1,6 @@ { "name": "@ocd/cli", - "version": "0.2.4", + "version": "0.2.5", "description": "OKIT Open Cloud Designer Command-line", "title": "OKIT Open Cloud Designer Command-linetop", "author": { @@ -21,6 +21,7 @@ ], "scripts": { "test": "echo \"Error: no test specified\" && exit 1", + "clean": "rm -rf lib dist", "pack": "mkdir -p dist && npm pack --pack-destination dist", "compile": "tsc -p tsconfig.json && tsc -p tsconfig-cjs.json", "build": "npm run compile && npm run pack", @@ -31,11 +32,11 @@ "test-query": "node lib/esm/ocd.js query oci -d ../../test/query.okit -p DEFAULT -c OKIT -c infrastructure -c network" }, "dependencies": { - "@ocd/codegen": "^0.2.4", - "@ocd/core": "^0.2.4", - "@ocd/export": "^0.2.4", - "@ocd/import": "^0.2.4", - "@ocd/model": "^0.2.4", - "@ocd/query": "^0.2.4" + "@ocd/codegen": ">=0.2.5", + "@ocd/core": ">=0.2.5", + "@ocd/export": ">=0.2.5", + "@ocd/import": ">=0.2.5", + "@ocd/model": ">=0.2.5", + "@ocd/query": ">=0.2.5" } } diff --git a/ocd/packages/codegen-cli/package.json b/ocd/packages/codegen-cli/package.json index 6c91902c3..68337b206 100644 --- a/ocd/packages/codegen-cli/package.json +++ b/ocd/packages/codegen-cli/package.json @@ -1,6 +1,6 @@ { "name": "@ocd/codegen-cli", - "version": "0.2.4", + "version": "0.2.5", "description": "OKIT Open Cloud DesignerCodegen Command-line", "title": "OKIT Open Cloud Designer Codegen Command-linetop", "author": { @@ -22,10 +22,13 @@ "scripts": { "test": "echo \"Error: no test specified\" && exit 1", + "clean": "rm -rf lib dist", "pack": "mkdir -p dist && npm pack --pack-destination dist", "compile": "tsc -p tsconfig.json && tsc -p tsconfig-cjs.json", "build": "npm run compile && npm run pack", + "generate-ocd-svg-css-desktop": "node lib/esm/ocd-build-svg-css.js -d ../desktop/src/data -i ../desktop/src/css", + "generate-ocd-build-date-desktop": "node lib/esm/ocd-set-build-date.js -d ../desktop/src/data -p ../desktop/package.json", "generate-ocd-build-date-export": "node lib/esm/ocd-set-build-date.js -d ../export/src/data -p ../desktop/package.json", "generate-ocd-build-date": "npm run generate-ocd-build-date-desktop && npm run generate-ocd-build-date-export", @@ -78,6 +81,6 @@ "import-and-generate": "npm run import-and-generate-oci && npm run import-and-generate-azurerm && npm run import-and-generate-google" }, "dependencies": { - "@ocd/codegen": "^0.2.4" + "@ocd/codegen": ">=0.2.5" } } diff --git a/ocd/packages/codegen-cli/schema/azure/tf-schema.json b/ocd/packages/codegen-cli/schema/azure/tf-schema.json index 23a9385b0..19c27c0ce 100644 --- a/ocd/packages/codegen-cli/schema/azure/tf-schema.json +++ b/ocd/packages/codegen-cli/schema/azure/tf-schema.json @@ -509,786 +509,6 @@ } }, "resource_schemas": { - "azurerm_oracledatabase_exadata_infrastructure": { - "version": 0, - "block": { - "attributes": { - "collation": { - "type": "string", - "description_kind": "plain", - "optional": true, - "computed": true - }, - "create_mode": { - "type": "string", - "description_kind": "plain", - "optional": true - }, - "creation_date": { - "type": "string", - "description_kind": "plain", - "computed": true - }, - "default_secondary_location": { - "type": "string", - "description_kind": "plain", - "computed": true - }, - "edition": { - "type": "string", - "description_kind": "plain", - "optional": true, - "computed": true - }, - "elastic_pool_name": { - "type": "string", - "description_kind": "plain", - "optional": true, - "computed": true - }, - "encryption": { - "type": "string", - "description_kind": "plain", - "computed": true - }, - "id": { - "type": "string", - "description_kind": "plain", - "optional": true, - "computed": true - }, - "location": { - "type": "string", - "description_kind": "plain", - "required": true - }, - "max_size_bytes": { - "type": "string", - "description_kind": "plain", - "optional": true, - "computed": true - }, - "max_size_gb": { - "type": "string", - "description_kind": "plain", - "optional": true, - "computed": true - }, - "name": { - "type": "string", - "description_kind": "plain", - "required": true - }, - "read_scale": { - "type": "bool", - "description_kind": "plain", - "optional": true - }, - "requested_service_objective_id": { - "type": "string", - "description_kind": "plain", - "optional": true, - "computed": true - }, - "requested_service_objective_name": { - "type": "string", - "description_kind": "plain", - "optional": true, - "computed": true - }, - "resource_group_name": { - "type": "string", - "description_kind": "plain", - "required": true - }, - "restore_point_in_time": { - "type": "string", - "description_kind": "plain", - "optional": true, - "computed": true - }, - "server_name": { - "type": "string", - "description_kind": "plain", - "required": true - }, - "source_database_deletion_date": { - "type": "string", - "description_kind": "plain", - "optional": true, - "computed": true - }, - "source_database_id": { - "type": "string", - "description_kind": "plain", - "optional": true, - "computed": true - }, - "tags": { - "type": [ - "map", - "string" - ], - "description_kind": "plain", - "optional": true - }, - "zone_redundant": { - "type": "bool", - "description_kind": "plain", - "optional": true - } - }, - "block_types": { - "import": { - "nesting_mode": "list", - "block": { - "attributes": { - "administrator_login": { - "type": "string", - "description_kind": "plain", - "required": true - }, - "administrator_login_password": { - "type": "string", - "description_kind": "plain", - "required": true, - "sensitive": true - }, - "authentication_type": { - "type": "string", - "description_kind": "plain", - "required": true - }, - "operation_mode": { - "type": "string", - "description_kind": "plain", - "optional": true - }, - "storage_key": { - "type": "string", - "description_kind": "plain", - "required": true, - "sensitive": true - }, - "storage_key_type": { - "type": "string", - "description_kind": "plain", - "required": true - }, - "storage_uri": { - "type": "string", - "description_kind": "plain", - "required": true - } - }, - "description_kind": "plain" - }, - "max_items": 1 - }, - "threat_detection_policy": { - "nesting_mode": "list", - "block": { - "attributes": { - "disabled_alerts": { - "type": [ - "set", - "string" - ], - "description_kind": "plain", - "optional": true - }, - "email_account_admins": { - "type": "string", - "description_kind": "plain", - "optional": true - }, - "email_addresses": { - "type": [ - "set", - "string" - ], - "description_kind": "plain", - "optional": true - }, - "retention_days": { - "type": "number", - "description_kind": "plain", - "optional": true - }, - "state": { - "type": "string", - "description_kind": "plain", - "optional": true - }, - "storage_account_access_key": { - "type": "string", - "description_kind": "plain", - "optional": true, - "sensitive": true - }, - "storage_endpoint": { - "type": "string", - "description_kind": "plain", - "optional": true - } - }, - "description_kind": "plain" - }, - "max_items": 1 - }, - "timeouts": { - "nesting_mode": "single", - "block": { - "attributes": { - "create": { - "type": "string", - "description_kind": "plain", - "optional": true - }, - "delete": { - "type": "string", - "description_kind": "plain", - "optional": true - }, - "read": { - "type": "string", - "description_kind": "plain", - "optional": true - }, - "update": { - "type": "string", - "description_kind": "plain", - "optional": true - } - }, - "description_kind": "plain" - } - } - }, - "description_kind": "plain", - "deprecated": true - } - }, - "azurerm_oracledatabase_autonomous_database_regular": { - "version": 0, - "block": { - "attributes": { - "collation": { - "type": "string", - "description_kind": "plain", - "optional": true, - "computed": true - }, - "create_mode": { - "type": "string", - "description_kind": "plain", - "optional": true - }, - "creation_date": { - "type": "string", - "description_kind": "plain", - "computed": true - }, - "default_secondary_location": { - "type": "string", - "description_kind": "plain", - "computed": true - }, - "edition": { - "type": "string", - "description_kind": "plain", - "optional": true, - "computed": true - }, - "elastic_pool_name": { - "type": "string", - "description_kind": "plain", - "optional": true, - "computed": true - }, - "encryption": { - "type": "string", - "description_kind": "plain", - "computed": true - }, - "id": { - "type": "string", - "description_kind": "plain", - "optional": true, - "computed": true - }, - "location": { - "type": "string", - "description_kind": "plain", - "required": true - }, - "max_size_bytes": { - "type": "string", - "description_kind": "plain", - "optional": true, - "computed": true - }, - "max_size_gb": { - "type": "string", - "description_kind": "plain", - "optional": true, - "computed": true - }, - "name": { - "type": "string", - "description_kind": "plain", - "required": true - }, - "read_scale": { - "type": "bool", - "description_kind": "plain", - "optional": true - }, - "requested_service_objective_id": { - "type": "string", - "description_kind": "plain", - "optional": true, - "computed": true - }, - "requested_service_objective_name": { - "type": "string", - "description_kind": "plain", - "optional": true, - "computed": true - }, - "resource_group_name": { - "type": "string", - "description_kind": "plain", - "required": true - }, - "restore_point_in_time": { - "type": "string", - "description_kind": "plain", - "optional": true, - "computed": true - }, - "server_name": { - "type": "string", - "description_kind": "plain", - "required": true - }, - "source_database_deletion_date": { - "type": "string", - "description_kind": "plain", - "optional": true, - "computed": true - }, - "source_database_id": { - "type": "string", - "description_kind": "plain", - "optional": true, - "computed": true - }, - "tags": { - "type": [ - "map", - "string" - ], - "description_kind": "plain", - "optional": true - }, - "zone_redundant": { - "type": "bool", - "description_kind": "plain", - "optional": true - } - }, - "block_types": { - "import": { - "nesting_mode": "list", - "block": { - "attributes": { - "administrator_login": { - "type": "string", - "description_kind": "plain", - "required": true - }, - "administrator_login_password": { - "type": "string", - "description_kind": "plain", - "required": true, - "sensitive": true - }, - "authentication_type": { - "type": "string", - "description_kind": "plain", - "required": true - }, - "operation_mode": { - "type": "string", - "description_kind": "plain", - "optional": true - }, - "storage_key": { - "type": "string", - "description_kind": "plain", - "required": true, - "sensitive": true - }, - "storage_key_type": { - "type": "string", - "description_kind": "plain", - "required": true - }, - "storage_uri": { - "type": "string", - "description_kind": "plain", - "required": true - } - }, - "description_kind": "plain" - }, - "max_items": 1 - }, - "threat_detection_policy": { - "nesting_mode": "list", - "block": { - "attributes": { - "disabled_alerts": { - "type": [ - "set", - "string" - ], - "description_kind": "plain", - "optional": true - }, - "email_account_admins": { - "type": "string", - "description_kind": "plain", - "optional": true - }, - "email_addresses": { - "type": [ - "set", - "string" - ], - "description_kind": "plain", - "optional": true - }, - "retention_days": { - "type": "number", - "description_kind": "plain", - "optional": true - }, - "state": { - "type": "string", - "description_kind": "plain", - "optional": true - }, - "storage_account_access_key": { - "type": "string", - "description_kind": "plain", - "optional": true, - "sensitive": true - }, - "storage_endpoint": { - "type": "string", - "description_kind": "plain", - "optional": true - } - }, - "description_kind": "plain" - }, - "max_items": 1 - }, - "timeouts": { - "nesting_mode": "single", - "block": { - "attributes": { - "create": { - "type": "string", - "description_kind": "plain", - "optional": true - }, - "delete": { - "type": "string", - "description_kind": "plain", - "optional": true - }, - "read": { - "type": "string", - "description_kind": "plain", - "optional": true - }, - "update": { - "type": "string", - "description_kind": "plain", - "optional": true - } - }, - "description_kind": "plain" - } - } - }, - "description_kind": "plain", - "deprecated": true - } - }, - "azurerm_oracledatabase_cloud_vm_cluster": { - "version": 0, - "block": { - "attributes": { - "collation": { - "type": "string", - "description_kind": "plain", - "optional": true, - "computed": true - }, - "create_mode": { - "type": "string", - "description_kind": "plain", - "optional": true - }, - "creation_date": { - "type": "string", - "description_kind": "plain", - "computed": true - }, - "default_secondary_location": { - "type": "string", - "description_kind": "plain", - "computed": true - }, - "edition": { - "type": "string", - "description_kind": "plain", - "optional": true, - "computed": true - }, - "elastic_pool_name": { - "type": "string", - "description_kind": "plain", - "optional": true, - "computed": true - }, - "encryption": { - "type": "string", - "description_kind": "plain", - "computed": true - }, - "id": { - "type": "string", - "description_kind": "plain", - "optional": true, - "computed": true - }, - "location": { - "type": "string", - "description_kind": "plain", - "required": true - }, - "max_size_bytes": { - "type": "string", - "description_kind": "plain", - "optional": true, - "computed": true - }, - "max_size_gb": { - "type": "string", - "description_kind": "plain", - "optional": true, - "computed": true - }, - "name": { - "type": "string", - "description_kind": "plain", - "required": true - }, - "read_scale": { - "type": "bool", - "description_kind": "plain", - "optional": true - }, - "requested_service_objective_id": { - "type": "string", - "description_kind": "plain", - "optional": true, - "computed": true - }, - "requested_service_objective_name": { - "type": "string", - "description_kind": "plain", - "optional": true, - "computed": true - }, - "resource_group_name": { - "type": "string", - "description_kind": "plain", - "required": true - }, - "restore_point_in_time": { - "type": "string", - "description_kind": "plain", - "optional": true, - "computed": true - }, - "server_name": { - "type": "string", - "description_kind": "plain", - "required": true - }, - "source_database_deletion_date": { - "type": "string", - "description_kind": "plain", - "optional": true, - "computed": true - }, - "source_database_id": { - "type": "string", - "description_kind": "plain", - "optional": true, - "computed": true - }, - "tags": { - "type": [ - "map", - "string" - ], - "description_kind": "plain", - "optional": true - }, - "zone_redundant": { - "type": "bool", - "description_kind": "plain", - "optional": true - } - }, - "block_types": { - "import": { - "nesting_mode": "list", - "block": { - "attributes": { - "administrator_login": { - "type": "string", - "description_kind": "plain", - "required": true - }, - "administrator_login_password": { - "type": "string", - "description_kind": "plain", - "required": true, - "sensitive": true - }, - "authentication_type": { - "type": "string", - "description_kind": "plain", - "required": true - }, - "operation_mode": { - "type": "string", - "description_kind": "plain", - "optional": true - }, - "storage_key": { - "type": "string", - "description_kind": "plain", - "required": true, - "sensitive": true - }, - "storage_key_type": { - "type": "string", - "description_kind": "plain", - "required": true - }, - "storage_uri": { - "type": "string", - "description_kind": "plain", - "required": true - } - }, - "description_kind": "plain" - }, - "max_items": 1 - }, - "threat_detection_policy": { - "nesting_mode": "list", - "block": { - "attributes": { - "disabled_alerts": { - "type": [ - "set", - "string" - ], - "description_kind": "plain", - "optional": true - }, - "email_account_admins": { - "type": "string", - "description_kind": "plain", - "optional": true - }, - "email_addresses": { - "type": [ - "set", - "string" - ], - "description_kind": "plain", - "optional": true - }, - "retention_days": { - "type": "number", - "description_kind": "plain", - "optional": true - }, - "state": { - "type": "string", - "description_kind": "plain", - "optional": true - }, - "storage_account_access_key": { - "type": "string", - "description_kind": "plain", - "optional": true, - "sensitive": true - }, - "storage_endpoint": { - "type": "string", - "description_kind": "plain", - "optional": true - } - }, - "description_kind": "plain" - }, - "max_items": 1 - }, - "timeouts": { - "nesting_mode": "single", - "block": { - "attributes": { - "create": { - "type": "string", - "description_kind": "plain", - "optional": true - }, - "delete": { - "type": "string", - "description_kind": "plain", - "optional": true - }, - "read": { - "type": "string", - "description_kind": "plain", - "optional": true - }, - "update": { - "type": "string", - "description_kind": "plain", - "optional": true - } - }, - "description_kind": "plain" - } - } - }, - "description_kind": "plain", - "deprecated": true - } - }, "azurerm_aadb2c_directory": { "version": 0, "block": { @@ -1867,6 +1087,70 @@ "description_kind": "plain" } }, + "azurerm_advisor_suppression": { + "version": 0, + "block": { + "attributes": { + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "name": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "recommendation_id": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "resource_id": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "suppression_id": { + "type": "string", + "description_kind": "plain", + "computed": true + }, + "ttl": { + "type": "string", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "timeouts": { + "nesting_mode": "single", + "block": { + "attributes": { + "create": { + "type": "string", + "description_kind": "plain", + "optional": true + }, + "delete": { + "type": "string", + "description_kind": "plain", + "optional": true + }, + "read": { + "type": "string", + "description_kind": "plain", + "optional": true + } + }, + "description_kind": "plain" + } + } + }, + "description_kind": "plain" + } + }, "azurerm_ai_services": { "version": 0, "block": { @@ -15987,6 +15271,114 @@ "description_kind": "plain" } }, + "azurerm_arc_machine": { + "version": 0, + "block": { + "attributes": { + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "kind": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "location": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "name": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "resource_group_name": { + "type": "string", + "description_kind": "plain", + "required": true + } + }, + "block_types": { + "timeouts": { + "nesting_mode": "single", + "block": { + "attributes": { + "create": { + "type": "string", + "description_kind": "plain", + "optional": true + }, + "delete": { + "type": "string", + "description_kind": "plain", + "optional": true + }, + "read": { + "type": "string", + "description_kind": "plain", + "optional": true + } + }, + "description_kind": "plain" + } + } + }, + "description_kind": "plain" + } + }, + "azurerm_arc_machine_automanage_configuration_assignment": { + "version": 0, + "block": { + "attributes": { + "arc_machine_id": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "configuration_id": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + } + }, + "block_types": { + "timeouts": { + "nesting_mode": "single", + "block": { + "attributes": { + "create": { + "type": "string", + "description_kind": "plain", + "optional": true + }, + "delete": { + "type": "string", + "description_kind": "plain", + "optional": true + }, + "read": { + "type": "string", + "description_kind": "plain", + "optional": true + } + }, + "description_kind": "plain" + } + } + }, + "description_kind": "plain" + } + }, "azurerm_arc_machine_extension": { "version": 0, "block": { @@ -20748,6 +20140,11 @@ "description_kind": "plain", "optional": true }, + "session_recording_enabled": { + "type": "bool", + "description_kind": "plain", + "optional": true + }, "shareable_link_enabled": { "type": "bool", "description_kind": "plain", @@ -28920,6 +28317,11 @@ "description_kind": "plain", "computed": true }, + "max_inactive_revisions": { + "type": "number", + "description_kind": "plain", + "optional": true + }, "name": { "type": "string", "description": "The name for this Container App.", @@ -29365,7 +28767,7 @@ "attributes": { "failure_count_threshold": { "type": "number", - "description": "The number of consecutive failures required to consider this probe as failed. Possible values are between `1` and `10`. Defaults to `3`.", + "description": "The number of consecutive failures required to consider this probe as failed. Possible values are between `1` and `30`. Defaults to `3`.", "description_kind": "plain", "optional": true }, @@ -29377,7 +28779,7 @@ }, "initial_delay": { "type": "number", - "description": "The time in seconds to wait after the container has started before the probe is started.", + "description": "The number of seconds elapsed after the container has started before the probe is initiated. Possible values are between `0` and `60`. Defaults to `1` seconds.", "description_kind": "plain", "optional": true }, @@ -29450,7 +28852,7 @@ "attributes": { "failure_count_threshold": { "type": "number", - "description": "The number of consecutive failures required to consider this probe as failed. Possible values are between `1` and `10`. Defaults to `3`.", + "description": "The number of consecutive failures required to consider this probe as failed. Possible values are between `1` and `30`. Defaults to `3`.", "description_kind": "plain", "optional": true }, @@ -29460,6 +28862,12 @@ "description_kind": "plain", "optional": true }, + "initial_delay": { + "type": "number", + "description": "The number of seconds elapsed after the container has started before the probe is initiated. Possible values are between `0` and `60`. Defaults to `0` seconds.", + "description_kind": "plain", + "optional": true + }, "interval_seconds": { "type": "number", "description": "How often, in seconds, the probe should run. Possible values are between `1` and `240`. Defaults to `10`", @@ -29529,7 +28937,7 @@ "attributes": { "failure_count_threshold": { "type": "number", - "description": "The number of consecutive failures required to consider this probe as failed. Possible values are between `1` and `10`. Defaults to `3`.", + "description": "The number of consecutive failures required to consider this probe as failed. Possible values are between `1` and `30`. Defaults to `3`.", "description_kind": "plain", "optional": true }, @@ -29539,6 +28947,12 @@ "description_kind": "plain", "optional": true }, + "initial_delay": { + "type": "number", + "description": "The number of seconds elapsed after the container has started before the probe is initiated. Possible values are between `0` and `60`. Defaults to `0` seconds.", + "description_kind": "plain", + "optional": true + }, "interval_seconds": { "type": "number", "description": "How often, in seconds, the probe should run. Possible values are between `1` and `240`. Defaults to `10`", @@ -29932,80 +29346,15 @@ "description_kind": "plain", "optional": true }, - "container_app_id": { - "type": "string", - "description_kind": "plain", - "required": true - }, - "id": { + "container_app_environment_managed_certificate_id": { "type": "string", "description_kind": "plain", - "optional": true, "computed": true }, - "name": { + "container_app_id": { "type": "string", - "description": "The hostname of the Certificate. Must be the CN or a named SAN in the certificate.", "description_kind": "plain", "required": true - } - }, - "block_types": { - "timeouts": { - "nesting_mode": "single", - "block": { - "attributes": { - "create": { - "type": "string", - "description_kind": "plain", - "optional": true - }, - "delete": { - "type": "string", - "description_kind": "plain", - "optional": true - }, - "read": { - "type": "string", - "description_kind": "plain", - "optional": true - } - }, - "description_kind": "plain" - } - } - }, - "description_kind": "plain" - } - }, - "azurerm_container_app_environment": { - "version": 0, - "block": { - "attributes": { - "custom_domain_verification_id": { - "type": "string", - "description": "The ID of the Custom Domain Verification for this Container App Environment.", - "description_kind": "plain", - "computed": true - }, - "dapr_application_insights_connection_string": { - "type": "string", - "description": "Application Insights connection string used by Dapr to export Service to Service communication telemetry.", - "description_kind": "plain", - "optional": true, - "sensitive": true - }, - "default_domain": { - "type": "string", - "description": "The default publicly resolvable name of this Container App Environment", - "description_kind": "plain", - "computed": true - }, - "docker_bridge_cidr": { - "type": "string", - "description": "The network addressing in which the Container Apps in this Container App Environment will reside in CIDR notation.", - "description_kind": "plain", - "computed": true }, "id": { "type": "string", @@ -30013,82 +29362,152 @@ "optional": true, "computed": true }, - "infrastructure_resource_group_name": { - "type": "string", - "description": "Name of the platform-managed resource group created for the Managed Environment to host infrastructure resources. **Note:** Only valid if a `workload_profile` is specified. If `infrastructure_subnet_id` is specified, this resource group will be created in the same subscription as `infrastructure_subnet_id`.", - "description_kind": "plain", - "optional": true - }, - "infrastructure_subnet_id": { - "type": "string", - "description": "The existing Subnet to use for the Container Apps Control Plane. **NOTE:** The Subnet must have a `/21` or larger address space.", - "description_kind": "plain", - "optional": true - }, - "internal_load_balancer_enabled": { - "type": "bool", - "description": "Should the Container Environment operate in Internal Load Balancing Mode? Defaults to `false`. **Note:** can only be set to `true` if `infrastructure_subnet_id` is specified.", - "description_kind": "plain", - "optional": true - }, - "location": { - "type": "string", - "description_kind": "plain", - "required": true - }, - "log_analytics_workspace_id": { - "type": "string", - "description": "The ID for the Log Analytics Workspace to link this Container Apps Managed Environment to.", - "description_kind": "plain", - "optional": true - }, - "mutual_tls_enabled": { - "type": "bool", - "description": "Should mutual transport layer security (mTLS) be enabled? Defaults to `false`. **Note:** This feature is in public preview. Enabling mTLS for your applications may increase response latency and reduce maximum throughput in high-load scenarios.", - "description_kind": "plain", - "optional": true - }, "name": { "type": "string", - "description": "The name of the Container Apps Managed Environment.", - "description_kind": "plain", - "required": true - }, - "platform_reserved_cidr": { - "type": "string", - "description": "The IP range, in CIDR notation, that is reserved for environment infrastructure IP addresses.", - "description_kind": "plain", - "computed": true - }, - "platform_reserved_dns_ip_address": { - "type": "string", - "description": "The IP address from the IP range defined by `platform_reserved_cidr` that is reserved for the internal DNS server.", - "description_kind": "plain", - "computed": true - }, - "resource_group_name": { - "type": "string", + "description": "The hostname of the Certificate. Must be the CN or a named SAN in the certificate.", "description_kind": "plain", "required": true - }, - "static_ip_address": { - "type": "string", - "description": "The Static IP Address of the Environment.", - "description_kind": "plain", - "computed": true - }, - "tags": { - "type": [ - "map", - "string" - ], - "description_kind": "plain", - "optional": true - }, - "zone_redundancy_enabled": { - "type": "bool", - "description_kind": "plain", - "optional": true + } + }, + "block_types": { + "timeouts": { + "nesting_mode": "single", + "block": { + "attributes": { + "create": { + "type": "string", + "description_kind": "plain", + "optional": true + }, + "delete": { + "type": "string", + "description_kind": "plain", + "optional": true + }, + "read": { + "type": "string", + "description_kind": "plain", + "optional": true + } + }, + "description_kind": "plain" + } + } + }, + "description_kind": "plain" + } + }, + "azurerm_container_app_environment": { + "version": 0, + "block": { + "attributes": { + "custom_domain_verification_id": { + "type": "string", + "description": "The ID of the Custom Domain Verification for this Container App Environment.", + "description_kind": "plain", + "computed": true + }, + "dapr_application_insights_connection_string": { + "type": "string", + "description": "Application Insights connection string used by Dapr to export Service to Service communication telemetry.", + "description_kind": "plain", + "optional": true, + "sensitive": true + }, + "default_domain": { + "type": "string", + "description": "The default publicly resolvable name of this Container App Environment", + "description_kind": "plain", + "computed": true + }, + "docker_bridge_cidr": { + "type": "string", + "description": "The network addressing in which the Container Apps in this Container App Environment will reside in CIDR notation.", + "description_kind": "plain", + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "infrastructure_resource_group_name": { + "type": "string", + "description": "Name of the platform-managed resource group created for the Managed Environment to host infrastructure resources. **Note:** Only valid if a `workload_profile` is specified. If `infrastructure_subnet_id` is specified, this resource group will be created in the same subscription as `infrastructure_subnet_id`.", + "description_kind": "plain", + "optional": true + }, + "infrastructure_subnet_id": { + "type": "string", + "description": "The existing Subnet to use for the Container Apps Control Plane. **NOTE:** The Subnet must have a `/21` or larger address space.", + "description_kind": "plain", + "optional": true + }, + "internal_load_balancer_enabled": { + "type": "bool", + "description": "Should the Container Environment operate in Internal Load Balancing Mode? Defaults to `false`. **Note:** can only be set to `true` if `infrastructure_subnet_id` is specified.", + "description_kind": "plain", + "optional": true + }, + "location": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "log_analytics_workspace_id": { + "type": "string", + "description": "The ID for the Log Analytics Workspace to link this Container Apps Managed Environment to.", + "description_kind": "plain", + "optional": true + }, + "mutual_tls_enabled": { + "type": "bool", + "description": "Should mutual transport layer security (mTLS) be enabled? Defaults to `false`. **Note:** This feature is in public preview. Enabling mTLS for your applications may increase response latency and reduce maximum throughput in high-load scenarios.", + "description_kind": "plain", + "optional": true + }, + "name": { + "type": "string", + "description": "The name of the Container Apps Managed Environment.", + "description_kind": "plain", + "required": true + }, + "platform_reserved_cidr": { + "type": "string", + "description": "The IP range, in CIDR notation, that is reserved for environment infrastructure IP addresses.", + "description_kind": "plain", + "computed": true + }, + "platform_reserved_dns_ip_address": { + "type": "string", + "description": "The IP address from the IP range defined by `platform_reserved_cidr` that is reserved for the internal DNS server.", + "description_kind": "plain", + "computed": true + }, + "resource_group_name": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "static_ip_address": { + "type": "string", + "description": "The Static IP Address of the Environment.", + "description_kind": "plain", + "computed": true + }, + "tags": { + "type": [ + "map", + "string" + ], + "description_kind": "plain", + "optional": true + }, + "zone_redundancy_enabled": { + "type": "bool", + "description_kind": "plain", + "optional": true } }, "block_types": { @@ -30947,7 +30366,7 @@ "attributes": { "failure_count_threshold": { "type": "number", - "description": "The number of consecutive failures required to consider this probe as failed. Possible values are between `1` and `10`. Defaults to `3`.", + "description": "The number of consecutive failures required to consider this probe as failed. Possible values are between `1` and `30`. Defaults to `3`.", "description_kind": "plain", "optional": true }, @@ -30959,7 +30378,7 @@ }, "initial_delay": { "type": "number", - "description": "The time in seconds to wait after the container has started before the probe is started.", + "description": "The number of seconds elapsed after the container has started before the probe is initiated. Possible values are between `0` and `60`. Defaults to `1` seconds.", "description_kind": "plain", "optional": true }, @@ -31032,7 +30451,7 @@ "attributes": { "failure_count_threshold": { "type": "number", - "description": "The number of consecutive failures required to consider this probe as failed. Possible values are between `1` and `10`. Defaults to `3`.", + "description": "The number of consecutive failures required to consider this probe as failed. Possible values are between `1` and `30`. Defaults to `3`.", "description_kind": "plain", "optional": true }, @@ -31042,6 +30461,12 @@ "description_kind": "plain", "optional": true }, + "initial_delay": { + "type": "number", + "description": "The number of seconds elapsed after the container has started before the probe is initiated. Possible values are between `0` and `60`. Defaults to `0` seconds.", + "description_kind": "plain", + "optional": true + }, "interval_seconds": { "type": "number", "description": "How often, in seconds, the probe should run. Possible values are between `1` and `240`. Defaults to `10`", @@ -31111,7 +30536,7 @@ "attributes": { "failure_count_threshold": { "type": "number", - "description": "The number of consecutive failures required to consider this probe as failed. Possible values are between `1` and `10`. Defaults to `3`.", + "description": "The number of consecutive failures required to consider this probe as failed. Possible values are between `1` and `30`. Defaults to `3`.", "description_kind": "plain", "optional": true }, @@ -31121,6 +30546,12 @@ "description_kind": "plain", "optional": true }, + "initial_delay": { + "type": "number", + "description": "The number of seconds elapsed after the container has started before the probe is initiated. Possible values are between `0` and `60`. Defaults to `0` seconds.", + "description_kind": "plain", + "optional": true + }, "interval_seconds": { "type": "number", "description": "How often, in seconds, the probe should run. Possible values are between `1` and `240`. Defaults to `10`", @@ -45519,7 +44950,7 @@ "description_kind": "plain" } }, - "azurerm_data_protection_backup_policy_postgresql": { + "azurerm_data_protection_backup_policy_mysql_flexible_server": { "version": 0, "block": { "attributes": { @@ -45531,11 +44962,6 @@ "description_kind": "plain", "required": true }, - "default_retention_duration": { - "type": "string", - "description_kind": "plain", - "required": true - }, "id": { "type": "string", "description_kind": "plain", @@ -45547,32 +44973,51 @@ "description_kind": "plain", "required": true }, - "resource_group_name": { - "type": "string", - "description_kind": "plain", - "required": true - }, "time_zone": { "type": "string", "description_kind": "plain", "optional": true }, - "vault_name": { + "vault_id": { "type": "string", "description_kind": "plain", "required": true } }, "block_types": { + "default_retention_rule": { + "nesting_mode": "list", + "block": { + "block_types": { + "life_cycle": { + "nesting_mode": "list", + "block": { + "attributes": { + "data_store_type": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "duration": { + "type": "string", + "description_kind": "plain", + "required": true + } + }, + "description_kind": "plain" + }, + "min_items": 1 + } + }, + "description_kind": "plain" + }, + "min_items": 1, + "max_items": 1 + }, "retention_rule": { "nesting_mode": "list", "block": { "attributes": { - "duration": { - "type": "string", - "description_kind": "plain", - "required": true - }, "name": { "type": "string", "description_kind": "plain", @@ -45631,6 +45076,25 @@ }, "min_items": 1, "max_items": 1 + }, + "life_cycle": { + "nesting_mode": "list", + "block": { + "attributes": { + "data_store_type": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "duration": { + "type": "string", + "description_kind": "plain", + "required": true + } + }, + "description_kind": "plain" + }, + "min_items": 1 } }, "description_kind": "plain" @@ -45663,7 +45127,7 @@ "description_kind": "plain" } }, - "azurerm_data_protection_backup_policy_postgresql_flexible_server": { + "azurerm_data_protection_backup_policy_postgresql": { "version": 0, "block": { "attributes": { @@ -45675,6 +45139,11 @@ "description_kind": "plain", "required": true }, + "default_retention_duration": { + "type": "string", + "description_kind": "plain", + "required": true + }, "id": { "type": "string", "description_kind": "plain", @@ -45686,47 +45155,186 @@ "description_kind": "plain", "required": true }, + "resource_group_name": { + "type": "string", + "description_kind": "plain", + "required": true + }, "time_zone": { "type": "string", "description_kind": "plain", "optional": true }, - "vault_id": { + "vault_name": { "type": "string", "description_kind": "plain", "required": true } }, "block_types": { - "default_retention_rule": { - "nesting_mode": "list", - "block": { - "block_types": { - "life_cycle": { - "nesting_mode": "list", - "block": { - "attributes": { - "data_store_type": { - "type": "string", - "description_kind": "plain", - "required": true - }, - "duration": { - "type": "string", - "description_kind": "plain", - "required": true - } - }, - "description_kind": "plain" - }, - "min_items": 1 - } - }, - "description_kind": "plain" - }, - "min_items": 1, - "max_items": 1 - }, + "retention_rule": { + "nesting_mode": "list", + "block": { + "attributes": { + "duration": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "name": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "priority": { + "type": "number", + "description_kind": "plain", + "required": true + } + }, + "block_types": { + "criteria": { + "nesting_mode": "list", + "block": { + "attributes": { + "absolute_criteria": { + "type": "string", + "description_kind": "plain", + "optional": true + }, + "days_of_week": { + "type": [ + "set", + "string" + ], + "description_kind": "plain", + "optional": true + }, + "months_of_year": { + "type": [ + "set", + "string" + ], + "description_kind": "plain", + "optional": true + }, + "scheduled_backup_times": { + "type": [ + "set", + "string" + ], + "description_kind": "plain", + "optional": true + }, + "weeks_of_month": { + "type": [ + "set", + "string" + ], + "description_kind": "plain", + "optional": true + } + }, + "description_kind": "plain" + }, + "min_items": 1, + "max_items": 1 + } + }, + "description_kind": "plain" + } + }, + "timeouts": { + "nesting_mode": "single", + "block": { + "attributes": { + "create": { + "type": "string", + "description_kind": "plain", + "optional": true + }, + "delete": { + "type": "string", + "description_kind": "plain", + "optional": true + }, + "read": { + "type": "string", + "description_kind": "plain", + "optional": true + } + }, + "description_kind": "plain" + } + } + }, + "description_kind": "plain" + } + }, + "azurerm_data_protection_backup_policy_postgresql_flexible_server": { + "version": 0, + "block": { + "attributes": { + "backup_repeating_time_intervals": { + "type": [ + "list", + "string" + ], + "description_kind": "plain", + "required": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "name": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "time_zone": { + "type": "string", + "description_kind": "plain", + "optional": true + }, + "vault_id": { + "type": "string", + "description_kind": "plain", + "required": true + } + }, + "block_types": { + "default_retention_rule": { + "nesting_mode": "list", + "block": { + "block_types": { + "life_cycle": { + "nesting_mode": "list", + "block": { + "attributes": { + "data_store_type": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "duration": { + "type": "string", + "description_kind": "plain", + "required": true + } + }, + "description_kind": "plain" + }, + "min_items": 1 + } + }, + "description_kind": "plain" + }, + "min_items": 1, + "max_items": 1 + }, "retention_rule": { "nesting_mode": "list", "block": { @@ -45844,6 +45452,11 @@ "version": 0, "block": { "attributes": { + "cross_region_restore_enabled": { + "type": "bool", + "description_kind": "plain", + "optional": true + }, "datastore_type": { "type": "string", "description_kind": "plain", @@ -48134,6 +47747,60 @@ "description_kind": "plain" } }, + "azurerm_dev_center_attached_network": { + "version": 0, + "block": { + "attributes": { + "dev_center_id": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "name": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "network_connection_id": { + "type": "string", + "description_kind": "plain", + "required": true + } + }, + "block_types": { + "timeouts": { + "nesting_mode": "single", + "block": { + "attributes": { + "create": { + "type": "string", + "description_kind": "plain", + "optional": true + }, + "delete": { + "type": "string", + "description_kind": "plain", + "optional": true + }, + "read": { + "type": "string", + "description_kind": "plain", + "optional": true + } + }, + "description_kind": "plain" + } + } + }, + "description_kind": "plain" + } + }, "azurerm_dev_center_catalog": { "version": 0, "block": { @@ -48763,19 +48430,24 @@ "description_kind": "plain" } }, - "azurerm_dev_test_global_vm_shutdown_schedule": { + "azurerm_dev_center_project_pool": { "version": 0, "block": { "attributes": { - "daily_recurrence_time": { + "dev_box_definition_name": { "type": "string", "description_kind": "plain", "required": true }, - "enabled": { - "type": "bool", + "dev_center_attached_network_name": { + "type": "string", "description_kind": "plain", - "optional": true + "required": true + }, + "dev_center_project_id": { + "type": "string", + "description_kind": "plain", + "required": true }, "id": { "type": "string", @@ -48783,11 +48455,26 @@ "optional": true, "computed": true }, + "local_administrator_enabled": { + "type": "bool", + "description_kind": "plain", + "required": true + }, "location": { "type": "string", "description_kind": "plain", "required": true }, + "name": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "stop_on_disconnect_grace_period_minutes": { + "type": "number", + "description_kind": "plain", + "optional": true + }, "tags": { "type": [ "map", @@ -48795,49 +48482,116 @@ ], "description_kind": "plain", "optional": true - }, - "timezone": { - "type": "string", - "description_kind": "plain", - "required": true - }, - "virtual_machine_id": { - "type": "string", - "description_kind": "plain", - "required": true } }, "block_types": { - "notification_settings": { - "nesting_mode": "list", - "block": { - "attributes": { - "email": { - "type": "string", - "description_kind": "plain", - "optional": true - }, - "enabled": { - "type": "bool", - "description_kind": "plain", - "required": true - }, - "time_in_minutes": { - "type": "number", - "description_kind": "plain", - "optional": true - }, - "webhook_url": { - "type": "string", - "description_kind": "plain", - "optional": true - } - }, - "description_kind": "plain" - }, - "min_items": 1, - "max_items": 1 - }, + "timeouts": { + "nesting_mode": "single", + "block": { + "attributes": { + "create": { + "type": "string", + "description_kind": "plain", + "optional": true + }, + "delete": { + "type": "string", + "description_kind": "plain", + "optional": true + }, + "read": { + "type": "string", + "description_kind": "plain", + "optional": true + }, + "update": { + "type": "string", + "description_kind": "plain", + "optional": true + } + }, + "description_kind": "plain" + } + } + }, + "description_kind": "plain" + } + }, + "azurerm_dev_test_global_vm_shutdown_schedule": { + "version": 0, + "block": { + "attributes": { + "daily_recurrence_time": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "enabled": { + "type": "bool", + "description_kind": "plain", + "optional": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "location": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "tags": { + "type": [ + "map", + "string" + ], + "description_kind": "plain", + "optional": true + }, + "timezone": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "virtual_machine_id": { + "type": "string", + "description_kind": "plain", + "required": true + } + }, + "block_types": { + "notification_settings": { + "nesting_mode": "list", + "block": { + "attributes": { + "email": { + "type": "string", + "description_kind": "plain", + "optional": true + }, + "enabled": { + "type": "bool", + "description_kind": "plain", + "required": true + }, + "time_in_minutes": { + "type": "number", + "description_kind": "plain", + "optional": true + }, + "webhook_url": { + "type": "string", + "description_kind": "plain", + "optional": true + } + }, + "description_kind": "plain" + }, + "min_items": 1, + "max_items": 1 + }, "timeouts": { "nesting_mode": "single", "block": { @@ -57735,6 +57489,25 @@ } }, "block_types": { + "customer_managed_key": { + "nesting_mode": "list", + "block": { + "attributes": { + "key_vault_key_id": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "user_assigned_identity_id": { + "type": "string", + "description_kind": "plain", + "required": true + } + }, + "description_kind": "plain" + }, + "max_items": 1 + }, "identity": { "nesting_mode": "list", "block": { @@ -70901,157 +70674,38 @@ "description_kind": "plain" } }, - "azurerm_key_vault_managed_hardware_security_module_role_assignment": { - "version": 1, + "azurerm_key_vault_managed_hardware_security_module_key_rotation_policy": { + "version": 0, "block": { "attributes": { - "id": { - "type": "string", - "description_kind": "plain", - "optional": true, - "computed": true - }, - "managed_hsm_id": { - "type": "string", - "description_kind": "plain", - "required": true - }, - "name": { + "expire_after": { "type": "string", "description_kind": "plain", "required": true }, - "principal_id": { - "type": "string", - "description_kind": "plain", - "required": true - }, - "resource_id": { - "type": "string", - "description_kind": "plain", - "computed": true - }, - "role_definition_id": { - "type": "string", - "description_kind": "plain", - "required": true - }, - "scope": { - "type": "string", - "description_kind": "plain", - "required": true - } - }, - "block_types": { - "timeouts": { - "nesting_mode": "single", - "block": { - "attributes": { - "create": { - "type": "string", - "description_kind": "plain", - "optional": true - }, - "delete": { - "type": "string", - "description_kind": "plain", - "optional": true - }, - "read": { - "type": "string", - "description_kind": "plain", - "optional": true - } - }, - "description_kind": "plain" - } - } - }, - "description_kind": "plain" - } - }, - "azurerm_key_vault_managed_hardware_security_module_role_definition": { - "version": 1, - "block": { - "attributes": { - "description": { - "type": "string", - "description_kind": "plain", - "optional": true - }, "id": { "type": "string", "description_kind": "plain", "optional": true, "computed": true }, - "managed_hsm_id": { - "type": "string", - "description_kind": "plain", - "required": true - }, - "name": { + "managed_hsm_key_id": { "type": "string", "description_kind": "plain", "required": true }, - "resource_manager_id": { - "type": "string", - "description_kind": "plain", - "computed": true - }, - "role_name": { + "time_after_creation": { "type": "string", "description_kind": "plain", "optional": true }, - "role_type": { + "time_before_expiry": { "type": "string", "description_kind": "plain", - "computed": true + "optional": true } }, "block_types": { - "permission": { - "nesting_mode": "list", - "block": { - "attributes": { - "actions": { - "type": [ - "list", - "string" - ], - "description_kind": "plain", - "optional": true - }, - "data_actions": { - "type": [ - "set", - "string" - ], - "description_kind": "plain", - "optional": true - }, - "not_actions": { - "type": [ - "list", - "string" - ], - "description_kind": "plain", - "optional": true - }, - "not_data_actions": { - "type": [ - "set", - "string" - ], - "description_kind": "plain", - "optional": true - } - }, - "description_kind": "plain" - } - }, "timeouts": { "nesting_mode": "single", "block": { @@ -71084,8 +70738,8 @@ "description_kind": "plain" } }, - "azurerm_key_vault_managed_storage_account": { - "version": 0, + "azurerm_key_vault_managed_hardware_security_module_role_assignment": { + "version": 1, "block": { "attributes": { "id": { @@ -71094,7 +70748,7 @@ "optional": true, "computed": true }, - "key_vault_id": { + "managed_hsm_id": { "type": "string", "description_kind": "plain", "required": true @@ -71104,33 +70758,216 @@ "description_kind": "plain", "required": true }, - "regenerate_key_automatically": { - "type": "bool", + "principal_id": { + "type": "string", "description_kind": "plain", - "optional": true + "required": true }, - "regeneration_period": { + "resource_id": { "type": "string", "description_kind": "plain", - "optional": true + "computed": true }, - "storage_account_id": { + "role_definition_id": { "type": "string", "description_kind": "plain", "required": true }, - "storage_account_key": { + "scope": { "type": "string", "description_kind": "plain", "required": true - }, - "tags": { - "type": [ - "map", - "string" - ], - "description_kind": "plain", - "optional": true + } + }, + "block_types": { + "timeouts": { + "nesting_mode": "single", + "block": { + "attributes": { + "create": { + "type": "string", + "description_kind": "plain", + "optional": true + }, + "delete": { + "type": "string", + "description_kind": "plain", + "optional": true + }, + "read": { + "type": "string", + "description_kind": "plain", + "optional": true + } + }, + "description_kind": "plain" + } + } + }, + "description_kind": "plain" + } + }, + "azurerm_key_vault_managed_hardware_security_module_role_definition": { + "version": 1, + "block": { + "attributes": { + "description": { + "type": "string", + "description_kind": "plain", + "optional": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "managed_hsm_id": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "name": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "resource_manager_id": { + "type": "string", + "description_kind": "plain", + "computed": true + }, + "role_name": { + "type": "string", + "description_kind": "plain", + "optional": true + }, + "role_type": { + "type": "string", + "description_kind": "plain", + "computed": true + } + }, + "block_types": { + "permission": { + "nesting_mode": "list", + "block": { + "attributes": { + "actions": { + "type": [ + "list", + "string" + ], + "description_kind": "plain", + "optional": true + }, + "data_actions": { + "type": [ + "set", + "string" + ], + "description_kind": "plain", + "optional": true + }, + "not_actions": { + "type": [ + "list", + "string" + ], + "description_kind": "plain", + "optional": true + }, + "not_data_actions": { + "type": [ + "set", + "string" + ], + "description_kind": "plain", + "optional": true + } + }, + "description_kind": "plain" + } + }, + "timeouts": { + "nesting_mode": "single", + "block": { + "attributes": { + "create": { + "type": "string", + "description_kind": "plain", + "optional": true + }, + "delete": { + "type": "string", + "description_kind": "plain", + "optional": true + }, + "read": { + "type": "string", + "description_kind": "plain", + "optional": true + }, + "update": { + "type": "string", + "description_kind": "plain", + "optional": true + } + }, + "description_kind": "plain" + } + } + }, + "description_kind": "plain" + } + }, + "azurerm_key_vault_managed_storage_account": { + "version": 0, + "block": { + "attributes": { + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "key_vault_id": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "name": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "regenerate_key_automatically": { + "type": "bool", + "description_kind": "plain", + "optional": true + }, + "regeneration_period": { + "type": "string", + "description_kind": "plain", + "optional": true + }, + "storage_account_id": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "storage_account_key": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "tags": { + "type": [ + "map", + "string" + ], + "description_kind": "plain", + "optional": true } }, "block_types": { @@ -92568,7 +92405,7 @@ } }, "azurerm_management_group_subscription_association": { - "version": 0, + "version": 1, "block": { "attributes": { "id": { @@ -93155,142 +92992,6 @@ "description_kind": "plain" } }, - "azurerm_media_services_account_filter": { - "version": 0, - "block": { - "attributes": { - "first_quality_bitrate": { - "type": "number", - "description_kind": "plain", - "optional": true - }, - "id": { - "type": "string", - "description_kind": "plain", - "optional": true, - "computed": true - }, - "media_services_account_name": { - "type": "string", - "description_kind": "plain", - "required": true - }, - "name": { - "type": "string", - "description_kind": "plain", - "required": true - }, - "resource_group_name": { - "type": "string", - "description_kind": "plain", - "required": true - } - }, - "block_types": { - "presentation_time_range": { - "nesting_mode": "list", - "block": { - "attributes": { - "end_in_units": { - "type": "number", - "description_kind": "plain", - "optional": true - }, - "force_end": { - "type": "bool", - "description_kind": "plain", - "optional": true - }, - "live_backoff_in_units": { - "type": "number", - "description_kind": "plain", - "optional": true - }, - "presentation_window_in_units": { - "type": "number", - "description_kind": "plain", - "optional": true - }, - "start_in_units": { - "type": "number", - "description_kind": "plain", - "optional": true - }, - "unit_timescale_in_milliseconds": { - "type": "number", - "description_kind": "plain", - "required": true - } - }, - "description_kind": "plain" - }, - "max_items": 1 - }, - "timeouts": { - "nesting_mode": "single", - "block": { - "attributes": { - "create": { - "type": "string", - "description_kind": "plain", - "optional": true - }, - "delete": { - "type": "string", - "description_kind": "plain", - "optional": true - }, - "read": { - "type": "string", - "description_kind": "plain", - "optional": true - }, - "update": { - "type": "string", - "description_kind": "plain", - "optional": true - } - }, - "description_kind": "plain" - } - }, - "track_selection": { - "nesting_mode": "list", - "block": { - "block_types": { - "condition": { - "nesting_mode": "list", - "block": { - "attributes": { - "operation": { - "type": "string", - "description_kind": "plain", - "required": true - }, - "property": { - "type": "string", - "description_kind": "plain", - "required": true - }, - "value": { - "type": "string", - "description_kind": "plain", - "required": true - } - }, - "description_kind": "plain" - }, - "min_items": 1 - } - }, - "description_kind": "plain" - } - } - }, - "description_kind": "plain", - "deprecated": true - } - }, "azurerm_mobile_network": { "version": 0, "block": { @@ -98076,102 +97777,6 @@ "description_kind": "plain" } }, - "azurerm_monitor_log_profile": { - "version": 1, - "block": { - "attributes": { - "categories": { - "type": [ - "set", - "string" - ], - "description_kind": "plain", - "required": true - }, - "id": { - "type": "string", - "description_kind": "plain", - "optional": true, - "computed": true - }, - "locations": { - "type": [ - "set", - "string" - ], - "description_kind": "plain", - "required": true - }, - "name": { - "type": "string", - "description_kind": "plain", - "required": true - }, - "servicebus_rule_id": { - "type": "string", - "description_kind": "plain", - "optional": true - }, - "storage_account_id": { - "type": "string", - "description_kind": "plain", - "optional": true - } - }, - "block_types": { - "retention_policy": { - "nesting_mode": "list", - "block": { - "attributes": { - "days": { - "type": "number", - "description_kind": "plain", - "optional": true - }, - "enabled": { - "type": "bool", - "description_kind": "plain", - "required": true - } - }, - "description_kind": "plain" - }, - "min_items": 1, - "max_items": 1 - }, - "timeouts": { - "nesting_mode": "single", - "block": { - "attributes": { - "create": { - "type": "string", - "description_kind": "plain", - "optional": true - }, - "delete": { - "type": "string", - "description_kind": "plain", - "optional": true - }, - "read": { - "type": "string", - "description_kind": "plain", - "optional": true - }, - "update": { - "type": "string", - "description_kind": "plain", - "optional": true - } - }, - "description_kind": "plain" - } - } - }, - "description_kind": "plain", - "deprecated": true - } - }, "azurerm_monitor_metric_alert": { "version": 1, "block": { @@ -99748,7 +99353,8 @@ "backup_interval_in_hours": { "type": "number", "description_kind": "plain", - "optional": true + "optional": true, + "computed": true }, "retention_days": { "type": "number", @@ -100668,6 +100274,11 @@ "description_kind": "plain", "required": true }, + "service_principal_type": { + "type": "string", + "description_kind": "plain", + "optional": true + }, "sku_name": { "type": "string", "description_kind": "plain", @@ -108450,88 +108061,74 @@ "description_kind": "plain" } }, - "azurerm_orbital_contact": { + "azurerm_oracle_autonomous_database": { "version": 0, "block": { "attributes": { - "contact_profile_id": { + "admin_password": { "type": "string", "description_kind": "plain", + "required": true, + "sensitive": true + }, + "auto_scaling_enabled": { + "type": "bool", + "description_kind": "plain", "required": true }, - "ground_station_name": { - "type": "string", + "auto_scaling_for_storage_enabled": { + "type": "bool", "description_kind": "plain", "required": true }, - "id": { - "type": "string", + "backup_retention_period_in_days": { + "type": "number", "description_kind": "plain", - "optional": true, - "computed": true + "required": true }, - "name": { + "character_set": { "type": "string", "description_kind": "plain", "required": true }, - "reservation_end_time": { - "type": "string", + "compute_count": { + "type": "number", "description_kind": "plain", "required": true }, - "reservation_start_time": { + "compute_model": { "type": "string", "description_kind": "plain", "required": true }, - "spacecraft_id": { + "customer_contacts": { + "type": [ + "list", + "string" + ], + "description_kind": "plain", + "optional": true, + "computed": true + }, + "data_storage_size_in_tbs": { + "type": "number", + "description_kind": "plain", + "required": true + }, + "db_version": { "type": "string", "description_kind": "plain", "required": true - } - }, - "block_types": { - "timeouts": { - "nesting_mode": "single", - "block": { - "attributes": { - "create": { - "type": "string", - "description_kind": "plain", - "optional": true - }, - "delete": { - "type": "string", - "description_kind": "plain", - "optional": true - }, - "read": { - "type": "string", - "description_kind": "plain", - "optional": true - } - }, - "description_kind": "plain" - } - } - }, - "description_kind": "plain" - } - }, - "azurerm_orbital_contact_profile": { - "version": 0, - "block": { - "attributes": { - "auto_tracking": { + }, + "db_workload": { "type": "string", "description_kind": "plain", "required": true }, - "event_hub_uri": { + "display_name": { "type": "string", "description_kind": "plain", - "optional": true + "required": true }, "id": { "type": "string", @@ -108539,18 +108136,18 @@ "optional": true, "computed": true }, - "location": { + "license_model": { "type": "string", "description_kind": "plain", "required": true }, - "minimum_elevation_degrees": { - "type": "number", + "location": { + "type": "string", "description_kind": "plain", - "optional": true + "required": true }, - "minimum_variable_contact_duration": { - "type": "string", + "mtls_connection_required": { + "type": "bool", "description_kind": "plain", "required": true }, @@ -108559,7 +108156,7 @@ "description_kind": "plain", "required": true }, - "network_configuration_subnet_id": { + "national_character_set": { "type": "string", "description_kind": "plain", "required": true @@ -108569,6 +108166,11 @@ "description_kind": "plain", "required": true }, + "subnet_id": { + "type": "string", + "description_kind": "plain", + "required": true + }, "tags": { "type": [ "map", @@ -108576,100 +108178,640 @@ ], "description_kind": "plain", "optional": true + }, + "virtual_network_id": { + "type": "string", + "description_kind": "plain", + "required": true } }, "block_types": { - "links": { - "nesting_mode": "list", - "block": { - "attributes": { - "direction": { - "type": "string", - "description_kind": "plain", - "required": true - }, - "name": { - "type": "string", - "description_kind": "plain", - "required": true - }, - "polarization": { - "type": "string", - "description_kind": "plain", - "required": true - } - }, - "block_types": { - "channels": { - "nesting_mode": "list", - "block": { - "attributes": { - "bandwidth_mhz": { - "type": "number", - "description_kind": "plain", - "required": true - }, - "center_frequency_mhz": { - "type": "number", - "description_kind": "plain", - "required": true - }, - "demodulation_configuration": { - "type": "string", - "description_kind": "plain", - "optional": true - }, - "modulation_configuration": { - "type": "string", - "description_kind": "plain", - "optional": true - }, - "name": { - "type": "string", - "description_kind": "plain", - "required": true - } - }, - "block_types": { - "end_point": { - "nesting_mode": "set", - "block": { - "attributes": { - "end_point_name": { - "type": "string", - "description_kind": "plain", - "required": true - }, - "ip_address": { - "type": "string", - "description_kind": "plain", - "optional": true - }, - "port": { - "type": "string", - "description_kind": "plain", - "required": true - }, - "protocol": { - "type": "string", - "description_kind": "plain", - "required": true - } - }, - "description_kind": "plain" - }, - "min_items": 1 - } - }, - "description_kind": "plain" - }, - "min_items": 1 - } - }, - "description_kind": "plain" - }, - "min_items": 1 - }, + "timeouts": { + "nesting_mode": "single", + "block": { + "attributes": { + "create": { + "type": "string", + "description_kind": "plain", + "optional": true + }, + "delete": { + "type": "string", + "description_kind": "plain", + "optional": true + }, + "read": { + "type": "string", + "description_kind": "plain", + "optional": true + }, + "update": { + "type": "string", + "description_kind": "plain", + "optional": true + } + }, + "description_kind": "plain" + } + } + }, + "description_kind": "plain" + } + }, + "azurerm_oracle_cloud_vm_cluster": { + "version": 0, + "block": { + "attributes": { + "backup_subnet_cidr": { + "type": "string", + "description_kind": "plain", + "optional": true + }, + "cloud_exadata_infrastructure_id": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "cluster_name": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "cpu_core_count": { + "type": "number", + "description_kind": "plain", + "required": true + }, + "data_storage_percentage": { + "type": "number", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "data_storage_size_in_tbs": { + "type": "number", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "db_node_storage_size_in_gbs": { + "type": "number", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "db_servers": { + "type": [ + "list", + "string" + ], + "description_kind": "plain", + "required": true + }, + "display_name": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "gi_version": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "hostname": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "hostname_actual": { + "type": "string", + "description_kind": "plain", + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "license_model": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "local_backup_enabled": { + "type": "bool", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "location": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "memory_size_in_gbs": { + "type": "number", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "name": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "resource_group_name": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "sparse_diskgroup_enabled": { + "type": "bool", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "ssh_public_keys": { + "type": [ + "list", + "string" + ], + "description_kind": "plain", + "required": true + }, + "subnet_id": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "tags": { + "type": [ + "map", + "string" + ], + "description_kind": "plain", + "optional": true + }, + "time_zone": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "virtual_network_id": { + "type": "string", + "description_kind": "plain", + "required": true + } + }, + "block_types": { + "data_collection_options": { + "nesting_mode": "list", + "block": { + "attributes": { + "diagnostics_events_enabled": { + "type": "bool", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "health_monitoring_enabled": { + "type": "bool", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "incident_logs_enabled": { + "type": "bool", + "description_kind": "plain", + "optional": true, + "computed": true + } + }, + "description_kind": "plain" + }, + "max_items": 1 + }, + "timeouts": { + "nesting_mode": "single", + "block": { + "attributes": { + "create": { + "type": "string", + "description_kind": "plain", + "optional": true + }, + "delete": { + "type": "string", + "description_kind": "plain", + "optional": true + }, + "read": { + "type": "string", + "description_kind": "plain", + "optional": true + }, + "update": { + "type": "string", + "description_kind": "plain", + "optional": true + } + }, + "description_kind": "plain" + } + } + }, + "description_kind": "plain" + } + }, + "azurerm_oracle_exadata_infrastructure": { + "version": 0, + "block": { + "attributes": { + "compute_count": { + "type": "number", + "description_kind": "plain", + "required": true + }, + "customer_contacts": { + "type": [ + "list", + "string" + ], + "description_kind": "plain", + "optional": true, + "computed": true + }, + "display_name": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "location": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "name": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "resource_group_name": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "shape": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "storage_count": { + "type": "number", + "description_kind": "plain", + "required": true + }, + "tags": { + "type": [ + "map", + "string" + ], + "description_kind": "plain", + "optional": true + }, + "zones": { + "type": [ + "set", + "string" + ], + "description_kind": "plain", + "required": true + } + }, + "block_types": { + "maintenance_window": { + "nesting_mode": "list", + "block": { + "attributes": { + "days_of_week": { + "type": [ + "list", + "string" + ], + "description_kind": "plain", + "optional": true, + "computed": true + }, + "hours_of_day": { + "type": [ + "list", + "number" + ], + "description_kind": "plain", + "optional": true, + "computed": true + }, + "lead_time_in_weeks": { + "type": "number", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "months": { + "type": [ + "list", + "string" + ], + "description_kind": "plain", + "optional": true, + "computed": true + }, + "patching_mode": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "preference": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "weeks_of_month": { + "type": [ + "list", + "number" + ], + "description_kind": "plain", + "optional": true, + "computed": true + } + }, + "description_kind": "plain" + } + }, + "timeouts": { + "nesting_mode": "single", + "block": { + "attributes": { + "create": { + "type": "string", + "description_kind": "plain", + "optional": true + }, + "delete": { + "type": "string", + "description_kind": "plain", + "optional": true + }, + "read": { + "type": "string", + "description_kind": "plain", + "optional": true + }, + "update": { + "type": "string", + "description_kind": "plain", + "optional": true + } + }, + "description_kind": "plain" + } + } + }, + "description_kind": "plain" + } + }, + "azurerm_orbital_contact": { + "version": 0, + "block": { + "attributes": { + "contact_profile_id": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "ground_station_name": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "name": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "reservation_end_time": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "reservation_start_time": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "spacecraft_id": { + "type": "string", + "description_kind": "plain", + "required": true + } + }, + "block_types": { + "timeouts": { + "nesting_mode": "single", + "block": { + "attributes": { + "create": { + "type": "string", + "description_kind": "plain", + "optional": true + }, + "delete": { + "type": "string", + "description_kind": "plain", + "optional": true + }, + "read": { + "type": "string", + "description_kind": "plain", + "optional": true + } + }, + "description_kind": "plain" + } + } + }, + "description_kind": "plain" + } + }, + "azurerm_orbital_contact_profile": { + "version": 0, + "block": { + "attributes": { + "auto_tracking": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "event_hub_uri": { + "type": "string", + "description_kind": "plain", + "optional": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "location": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "minimum_elevation_degrees": { + "type": "number", + "description_kind": "plain", + "optional": true + }, + "minimum_variable_contact_duration": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "name": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "network_configuration_subnet_id": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "resource_group_name": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "tags": { + "type": [ + "map", + "string" + ], + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "links": { + "nesting_mode": "list", + "block": { + "attributes": { + "direction": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "name": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "polarization": { + "type": "string", + "description_kind": "plain", + "required": true + } + }, + "block_types": { + "channels": { + "nesting_mode": "list", + "block": { + "attributes": { + "bandwidth_mhz": { + "type": "number", + "description_kind": "plain", + "required": true + }, + "center_frequency_mhz": { + "type": "number", + "description_kind": "plain", + "required": true + }, + "demodulation_configuration": { + "type": "string", + "description_kind": "plain", + "optional": true + }, + "modulation_configuration": { + "type": "string", + "description_kind": "plain", + "optional": true + }, + "name": { + "type": "string", + "description_kind": "plain", + "required": true + } + }, + "block_types": { + "end_point": { + "nesting_mode": "set", + "block": { + "attributes": { + "end_point_name": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "ip_address": { + "type": "string", + "description_kind": "plain", + "optional": true + }, + "port": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "protocol": { + "type": "string", + "description_kind": "plain", + "required": true + } + }, + "description_kind": "plain" + }, + "min_items": 1 + } + }, + "description_kind": "plain" + }, + "min_items": 1 + } + }, + "description_kind": "plain" + }, + "min_items": 1 + }, "timeouts": { "nesting_mode": "single", "block": { @@ -126850,7 +126992,8 @@ "auto_delete_on_idle": { "type": "string", "description_kind": "plain", - "optional": true + "optional": true, + "computed": true }, "batched_operations_enabled": { "type": "bool", @@ -126865,7 +127008,8 @@ "default_message_ttl": { "type": "string", "description_kind": "plain", - "optional": true + "optional": true, + "computed": true }, "duplicate_detection_history_time_window": { "type": "string", @@ -127598,6 +127742,11 @@ "description_kind": "plain", "optional": true }, + "disk_controller_type_nvme_enabled": { + "type": "bool", + "description_kind": "plain", + "optional": true + }, "disk_types_not_allowed": { "type": [ "set", @@ -129323,6 +129472,12 @@ "description_kind": "plain", "optional": true }, + "target_virtual_machine_size": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, "target_zone": { "type": "string", "description_kind": "plain", @@ -134275,22 +134430,17 @@ "description_kind": "plain" } }, - "azurerm_stack_hci_logical_network": { + "azurerm_stack_hci_deployment_setting": { "version": 0, "block": { "attributes": { - "custom_location_id": { - "type": "string", - "description_kind": "plain", - "required": true - }, - "dns_servers": { + "arc_resource_ids": { "type": [ "list", "string" ], "description_kind": "plain", - "optional": true + "required": true }, "id": { "type": "string", @@ -134298,103 +134448,410 @@ "optional": true, "computed": true }, - "location": { - "type": "string", - "description_kind": "plain", - "required": true - }, - "name": { - "type": "string", - "description_kind": "plain", - "required": true - }, - "resource_group_name": { + "stack_hci_cluster_id": { "type": "string", "description_kind": "plain", "required": true }, - "tags": { - "type": [ - "map", - "string" - ], - "description_kind": "plain", - "optional": true - }, - "virtual_switch_name": { + "version": { "type": "string", "description_kind": "plain", "required": true } }, "block_types": { - "subnet": { + "scale_unit": { "nesting_mode": "list", "block": { "attributes": { - "address_prefix": { + "active_directory_organizational_unit_path": { "type": "string", "description_kind": "plain", + "required": true + }, + "bitlocker_boot_volume_enabled": { + "type": "bool", + "description_kind": "plain", "optional": true }, - "ip_allocation_method": { + "bitlocker_data_volume_enabled": { + "type": "bool", + "description_kind": "plain", + "optional": true + }, + "credential_guard_enabled": { + "type": "bool", + "description_kind": "plain", + "optional": true + }, + "domain_fqdn": { "type": "string", "description_kind": "plain", "required": true }, - "vlan_id": { - "type": "number", + "drift_control_enabled": { + "type": "bool", + "description_kind": "plain", + "optional": true + }, + "drtm_protection_enabled": { + "type": "bool", + "description_kind": "plain", + "optional": true + }, + "episodic_data_upload_enabled": { + "type": "bool", + "description_kind": "plain", + "optional": true + }, + "eu_location_enabled": { + "type": "bool", + "description_kind": "plain", + "optional": true + }, + "hvci_protection_enabled": { + "type": "bool", + "description_kind": "plain", + "optional": true + }, + "name_prefix": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "secrets_location": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "side_channel_mitigation_enabled": { + "type": "bool", + "description_kind": "plain", + "optional": true + }, + "smb_cluster_encryption_enabled": { + "type": "bool", + "description_kind": "plain", + "optional": true + }, + "smb_signing_enabled": { + "type": "bool", + "description_kind": "plain", + "optional": true + }, + "streaming_data_client_enabled": { + "type": "bool", + "description_kind": "plain", + "optional": true + }, + "wdac_enabled": { + "type": "bool", "description_kind": "plain", "optional": true } }, "block_types": { - "ip_pool": { + "cluster": { "nesting_mode": "list", "block": { "attributes": { - "end": { + "azure_service_endpoint": { "type": "string", "description_kind": "plain", "required": true }, - "start": { + "cloud_account_name": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "name": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "witness_path": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "witness_type": { "type": "string", "description_kind": "plain", "required": true } }, "description_kind": "plain" - } + }, + "min_items": 1, + "max_items": 1 }, - "route": { + "host_network": { "nesting_mode": "list", "block": { "attributes": { - "address_prefix": { + "storage_auto_ip_enabled": { + "type": "bool", + "description_kind": "plain", + "optional": true + }, + "storage_connectivity_switchless_enabled": { + "type": "bool", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "intent": { + "nesting_mode": "list", + "block": { + "attributes": { + "adapter": { + "type": [ + "list", + "string" + ], + "description_kind": "plain", + "required": true + }, + "adapter_property_override_enabled": { + "type": "bool", + "description_kind": "plain", + "optional": true + }, + "name": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "qos_policy_override_enabled": { + "type": "bool", + "description_kind": "plain", + "optional": true + }, + "traffic_type": { + "type": [ + "list", + "string" + ], + "description_kind": "plain", + "required": true + }, + "virtual_switch_configuration_override_enabled": { + "type": "bool", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "adapter_property_override": { + "nesting_mode": "list", + "block": { + "attributes": { + "jumbo_packet": { + "type": "string", + "description_kind": "plain", + "optional": true + }, + "network_direct": { + "type": "string", + "description_kind": "plain", + "optional": true + }, + "network_direct_technology": { + "type": "string", + "description_kind": "plain", + "optional": true + } + }, + "description_kind": "plain" + }, + "max_items": 1 + }, + "qos_policy_override": { + "nesting_mode": "list", + "block": { + "attributes": { + "bandwidth_percentage_smb": { + "type": "string", + "description_kind": "plain", + "optional": true + }, + "priority_value8021_action_cluster": { + "type": "string", + "description_kind": "plain", + "optional": true + }, + "priority_value8021_action_smb": { + "type": "string", + "description_kind": "plain", + "optional": true + } + }, + "description_kind": "plain" + }, + "max_items": 1 + }, + "virtual_switch_configuration_override": { + "nesting_mode": "list", + "block": { + "attributes": { + "enable_iov": { + "type": "string", + "description_kind": "plain", + "optional": true + }, + "load_balancing_algorithm": { + "type": "string", + "description_kind": "plain", + "optional": true + } + }, + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description_kind": "plain" + }, + "min_items": 1 + }, + "storage_network": { + "nesting_mode": "list", + "block": { + "attributes": { + "name": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "network_adapter_name": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "vlan_id": { + "type": "string", + "description_kind": "plain", + "required": true + } + }, + "description_kind": "plain" + }, + "min_items": 1 + } + }, + "description_kind": "plain" + }, + "min_items": 1, + "max_items": 1 + }, + "infrastructure_network": { + "nesting_mode": "list", + "block": { + "attributes": { + "dhcp_enabled": { + "type": "bool", + "description_kind": "plain", + "optional": true + }, + "dns_server": { + "type": [ + "list", + "string" + ], + "description_kind": "plain", + "required": true + }, + "gateway": { "type": "string", "description_kind": "plain", "required": true }, - "name": { + "subnet_mask": { + "type": "string", + "description_kind": "plain", + "required": true + } + }, + "block_types": { + "ip_pool": { + "nesting_mode": "list", + "block": { + "attributes": { + "ending_address": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "starting_address": { + "type": "string", + "description_kind": "plain", + "required": true + } + }, + "description_kind": "plain" + }, + "min_items": 1 + } + }, + "description_kind": "plain" + }, + "min_items": 1 + }, + "optional_service": { + "nesting_mode": "list", + "block": { + "attributes": { + "custom_location": { + "type": "string", + "description_kind": "plain", + "required": true + } + }, + "description_kind": "plain" + }, + "min_items": 1, + "max_items": 1 + }, + "physical_node": { + "nesting_mode": "list", + "block": { + "attributes": { + "ipv4_address": { "type": "string", "description_kind": "plain", "required": true }, - "next_hop_ip_address": { + "name": { "type": "string", "description_kind": "plain", "required": true } }, "description_kind": "plain" - } + }, + "min_items": 1 + }, + "storage": { + "nesting_mode": "list", + "block": { + "attributes": { + "configuration_mode": { + "type": "string", + "description_kind": "plain", + "required": true + } + }, + "description_kind": "plain" + }, + "min_items": 1, + "max_items": 1 } }, "description_kind": "plain" }, - "min_items": 1, - "max_items": 1 + "min_items": 1 }, "timeouts": { "nesting_mode": "single", @@ -134414,11 +134871,6 @@ "type": "string", "description_kind": "plain", "optional": true - }, - "update": { - "type": "string", - "description_kind": "plain", - "optional": true } }, "description_kind": "plain" @@ -134428,29 +134880,372 @@ "description_kind": "plain" } }, - "azurerm_static_site": { + "azurerm_stack_hci_logical_network": { "version": 0, "block": { "attributes": { - "api_key": { + "custom_location_id": { "type": "string", "description_kind": "plain", - "computed": true, - "sensitive": true + "required": true }, - "app_settings": { + "dns_servers": { "type": [ - "map", + "list", "string" ], "description_kind": "plain", "optional": true }, - "default_host_name": { - "type": "string", - "description_kind": "plain", - "computed": true - }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "location": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "name": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "resource_group_name": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "tags": { + "type": [ + "map", + "string" + ], + "description_kind": "plain", + "optional": true + }, + "virtual_switch_name": { + "type": "string", + "description_kind": "plain", + "required": true + } + }, + "block_types": { + "subnet": { + "nesting_mode": "list", + "block": { + "attributes": { + "address_prefix": { + "type": "string", + "description_kind": "plain", + "optional": true + }, + "ip_allocation_method": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "vlan_id": { + "type": "number", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "ip_pool": { + "nesting_mode": "list", + "block": { + "attributes": { + "end": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "start": { + "type": "string", + "description_kind": "plain", + "required": true + } + }, + "description_kind": "plain" + } + }, + "route": { + "nesting_mode": "list", + "block": { + "attributes": { + "address_prefix": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "name": { + "type": "string", + "description_kind": "plain", + "optional": true + }, + "next_hop_ip_address": { + "type": "string", + "description_kind": "plain", + "required": true + } + }, + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description_kind": "plain" + }, + "min_items": 1, + "max_items": 1 + }, + "timeouts": { + "nesting_mode": "single", + "block": { + "attributes": { + "create": { + "type": "string", + "description_kind": "plain", + "optional": true + }, + "delete": { + "type": "string", + "description_kind": "plain", + "optional": true + }, + "read": { + "type": "string", + "description_kind": "plain", + "optional": true + }, + "update": { + "type": "string", + "description_kind": "plain", + "optional": true + } + }, + "description_kind": "plain" + } + } + }, + "description_kind": "plain" + } + }, + "azurerm_stack_hci_storage_path": { + "version": 0, + "block": { + "attributes": { + "custom_location_id": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "location": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "name": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "path": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "resource_group_name": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "tags": { + "type": [ + "map", + "string" + ], + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "timeouts": { + "nesting_mode": "single", + "block": { + "attributes": { + "create": { + "type": "string", + "description_kind": "plain", + "optional": true + }, + "delete": { + "type": "string", + "description_kind": "plain", + "optional": true + }, + "read": { + "type": "string", + "description_kind": "plain", + "optional": true + }, + "update": { + "type": "string", + "description_kind": "plain", + "optional": true + } + }, + "description_kind": "plain" + } + } + }, + "description_kind": "plain" + } + }, + "azurerm_stack_hci_virtual_hard_disk": { + "version": 0, + "block": { + "attributes": { + "block_size_in_bytes": { + "type": "number", + "description_kind": "plain", + "optional": true + }, + "custom_location_id": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "disk_file_format": { + "type": "string", + "description_kind": "plain", + "optional": true + }, + "disk_size_in_gb": { + "type": "number", + "description_kind": "plain", + "required": true + }, + "dynamic_enabled": { + "type": "bool", + "description_kind": "plain", + "optional": true + }, + "hyperv_generation": { + "type": "string", + "description_kind": "plain", + "optional": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "location": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "logical_sector_in_bytes": { + "type": "number", + "description_kind": "plain", + "optional": true + }, + "name": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "physical_sector_in_bytes": { + "type": "number", + "description_kind": "plain", + "optional": true + }, + "resource_group_name": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "storage_path_id": { + "type": "string", + "description_kind": "plain", + "optional": true + }, + "tags": { + "type": [ + "map", + "string" + ], + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "timeouts": { + "nesting_mode": "single", + "block": { + "attributes": { + "create": { + "type": "string", + "description_kind": "plain", + "optional": true + }, + "delete": { + "type": "string", + "description_kind": "plain", + "optional": true + }, + "read": { + "type": "string", + "description_kind": "plain", + "optional": true + }, + "update": { + "type": "string", + "description_kind": "plain", + "optional": true + } + }, + "description_kind": "plain" + } + } + }, + "description_kind": "plain" + } + }, + "azurerm_static_site": { + "version": 0, + "block": { + "attributes": { + "api_key": { + "type": "string", + "description_kind": "plain", + "computed": true, + "sensitive": true + }, + "app_settings": { + "type": [ + "map", + "string" + ], + "description_kind": "plain", + "optional": true + }, + "default_host_name": { + "type": "string", + "description_kind": "plain", + "computed": true + }, "id": { "type": "string", "description_kind": "plain", @@ -134667,6 +135462,11 @@ "description_kind": "plain", "optional": true }, + "public_network_access_enabled": { + "type": "bool", + "description_kind": "plain", + "optional": true + }, "resource_group_name": { "type": "string", "description_kind": "plain", @@ -145581,6 +146381,126 @@ "description_kind": "plain" } }, + "azurerm_video_indexer_account": { + "version": 0, + "block": { + "attributes": { + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "location": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "name": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "resource_group_name": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "tags": { + "type": [ + "map", + "string" + ], + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "identity": { + "nesting_mode": "list", + "block": { + "attributes": { + "identity_ids": { + "type": [ + "set", + "string" + ], + "description_kind": "plain", + "optional": true + }, + "principal_id": { + "type": "string", + "description_kind": "plain", + "computed": true + }, + "tenant_id": { + "type": "string", + "description_kind": "plain", + "computed": true + }, + "type": { + "type": "string", + "description_kind": "plain", + "required": true + } + }, + "description_kind": "plain" + }, + "min_items": 1, + "max_items": 1 + }, + "storage": { + "nesting_mode": "list", + "block": { + "attributes": { + "storage_account_id": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "user_assigned_identity_id": { + "type": "string", + "description_kind": "plain", + "optional": true + } + }, + "description_kind": "plain" + }, + "min_items": 1, + "max_items": 1 + }, + "timeouts": { + "nesting_mode": "single", + "block": { + "attributes": { + "create": { + "type": "string", + "description_kind": "plain", + "optional": true + }, + "delete": { + "type": "string", + "description_kind": "plain", + "optional": true + }, + "read": { + "type": "string", + "description_kind": "plain", + "optional": true + }, + "update": { + "type": "string", + "description_kind": "plain", + "optional": true + } + }, + "description_kind": "plain" + } + } + }, + "description_kind": "plain" + } + }, "azurerm_virtual_desktop_application": { "version": 0, "block": { @@ -150453,7 +151373,8 @@ "shared_key": { "type": "string", "description_kind": "plain", - "required": true, + "optional": true, + "computed": true, "sensitive": true }, "tags": { @@ -164231,270 +165152,6 @@ } }, "data_source_schemas": { - "azurerm_oracledatabase_exadata_infrastructure": { - "version": 0, - "block": { - "attributes": { - "collation": { - "type": "string", - "description_kind": "plain", - "computed": true - }, - "default_secondary_location": { - "type": "string", - "description_kind": "plain", - "computed": true - }, - "edition": { - "type": "string", - "description_kind": "plain", - "computed": true - }, - "elastic_pool_name": { - "type": "string", - "description_kind": "plain", - "computed": true - }, - "failover_group_id": { - "type": "string", - "description_kind": "plain", - "computed": true - }, - "id": { - "type": "string", - "description_kind": "plain", - "optional": true, - "computed": true - }, - "location": { - "type": "string", - "description_kind": "plain", - "computed": true - }, - "name": { - "type": "string", - "description_kind": "plain", - "required": true - }, - "read_scale": { - "type": "bool", - "description_kind": "plain", - "computed": true - }, - "resource_group_name": { - "type": "string", - "description_kind": "plain", - "required": true - }, - "server_name": { - "type": "string", - "description_kind": "plain", - "required": true - }, - "tags": { - "type": [ - "map", - "string" - ], - "description_kind": "plain", - "optional": true - } - }, - "block_types": { - "timeouts": { - "nesting_mode": "single", - "block": { - "attributes": { - "read": { - "type": "string", - "description_kind": "plain", - "optional": true - } - }, - "description_kind": "plain" - } - } - }, - "description_kind": "plain", - "deprecated": true - } - }, - "azurerm_oracledatabase_autonomous_database_regular": { - "version": 0, - "block": { - "attributes": { - "collation": { - "type": "string", - "description_kind": "plain", - "computed": true - }, - "default_secondary_location": { - "type": "string", - "description_kind": "plain", - "computed": true - }, - "edition": { - "type": "string", - "description_kind": "plain", - "computed": true - }, - "elastic_pool_name": { - "type": "string", - "description_kind": "plain", - "computed": true - }, - "failover_group_id": { - "type": "string", - "description_kind": "plain", - "computed": true - }, - "id": { - "type": "string", - "description_kind": "plain", - "optional": true, - "computed": true - }, - "location": { - "type": "string", - "description_kind": "plain", - "computed": true - }, - "name": { - "type": "string", - "description_kind": "plain", - "required": true - }, - "read_scale": { - "type": "bool", - "description_kind": "plain", - "computed": true - }, - "resource_group_name": { - "type": "string", - "description_kind": "plain", - "required": true - }, - "server_name": { - "type": "string", - "description_kind": "plain", - "required": true - }, - "tags": { - "type": [ - "map", - "string" - ], - "description_kind": "plain", - "optional": true - } - }, - "block_types": { - "timeouts": { - "nesting_mode": "single", - "block": { - "attributes": { - "read": { - "type": "string", - "description_kind": "plain", - "optional": true - } - }, - "description_kind": "plain" - } - } - }, - "description_kind": "plain", - "deprecated": true - } - }, - "azurerm_oracledatabase_cloud_vm_cluster": { - "version": 0, - "block": { - "attributes": { - "collation": { - "type": "string", - "description_kind": "plain", - "computed": true - }, - "default_secondary_location": { - "type": "string", - "description_kind": "plain", - "computed": true - }, - "edition": { - "type": "string", - "description_kind": "plain", - "computed": true - }, - "elastic_pool_name": { - "type": "string", - "description_kind": "plain", - "computed": true - }, - "failover_group_id": { - "type": "string", - "description_kind": "plain", - "computed": true - }, - "id": { - "type": "string", - "description_kind": "plain", - "optional": true, - "computed": true - }, - "location": { - "type": "string", - "description_kind": "plain", - "computed": true - }, - "name": { - "type": "string", - "description_kind": "plain", - "required": true - }, - "read_scale": { - "type": "bool", - "description_kind": "plain", - "computed": true - }, - "resource_group_name": { - "type": "string", - "description_kind": "plain", - "required": true - }, - "server_name": { - "type": "string", - "description_kind": "plain", - "required": true - }, - "tags": { - "type": [ - "map", - "string" - ], - "description_kind": "plain", - "optional": true - } - }, - "block_types": { - "timeouts": { - "nesting_mode": "single", - "block": { - "attributes": { - "read": { - "type": "string", - "description_kind": "plain", - "optional": true - } - }, - "description_kind": "plain" - } - } - }, - "description_kind": "plain", - "deprecated": true - } - }, "azurerm_aadb2c_directory": { "version": 0, "block": { @@ -168917,6 +169574,11 @@ "description_kind": "plain", "computed": true }, + "session_recording_enabled": { + "type": "bool", + "description_kind": "plain", + "computed": true + }, "shareable_link_enabled": { "type": "bool", "description_kind": "plain", @@ -171280,6 +171942,11 @@ "description_kind": "plain", "computed": true }, + "max_inactive_revisions": { + "type": "number", + "description_kind": "plain", + "computed": true + }, "name": { "type": "string", "description_kind": "plain", @@ -171444,6 +172111,7 @@ ] ], "host": "string", + "initial_delay": "number", "interval_seconds": "number", "path": "string", "port": "number", @@ -171470,6 +172138,7 @@ ] ], "host": "string", + "initial_delay": "number", "interval_seconds": "number", "path": "string", "port": "number", @@ -189141,34 +189810,1116 @@ "description_kind": "plain" } }, - "azurerm_notification_hub": { - "version": 1, + "azurerm_notification_hub": { + "version": 1, + "block": { + "attributes": { + "apns_credential": { + "type": [ + "list", + [ + "object", + { + "application_mode": "string", + "bundle_id": "string", + "key_id": "string", + "team_id": "string", + "token": "string" + } + ] + ], + "description_kind": "plain", + "computed": true + }, + "gcm_credential": { + "type": [ + "list", + [ + "object", + { + "api_key": "string" + } + ] + ], + "description_kind": "plain", + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "location": { + "type": "string", + "description_kind": "plain", + "computed": true + }, + "name": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "namespace_name": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "resource_group_name": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "tags": { + "type": [ + "map", + "string" + ], + "description_kind": "plain", + "computed": true + } + }, + "block_types": { + "timeouts": { + "nesting_mode": "single", + "block": { + "attributes": { + "read": { + "type": "string", + "description_kind": "plain", + "optional": true + } + }, + "description_kind": "plain" + } + } + }, + "description_kind": "plain" + } + }, + "azurerm_notification_hub_namespace": { + "version": 1, + "block": { + "attributes": { + "enabled": { + "type": "bool", + "description_kind": "plain", + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "location": { + "type": "string", + "description_kind": "plain", + "computed": true + }, + "name": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "namespace_type": { + "type": "string", + "description_kind": "plain", + "computed": true + }, + "resource_group_name": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "servicebus_endpoint": { + "type": "string", + "description_kind": "plain", + "computed": true + }, + "sku": { + "type": [ + "list", + [ + "object", + { + "name": "string" + } + ] + ], + "description_kind": "plain", + "computed": true + }, + "tags": { + "type": [ + "map", + "string" + ], + "description_kind": "plain", + "computed": true + } + }, + "block_types": { + "timeouts": { + "nesting_mode": "single", + "block": { + "attributes": { + "read": { + "type": "string", + "description_kind": "plain", + "optional": true + } + }, + "description_kind": "plain" + } + } + }, + "description_kind": "plain" + } + }, + "azurerm_oracle_adbs_character_sets": { + "version": 0, + "block": { + "attributes": { + "character_sets": { + "type": [ + "list", + [ + "object", + { + "character_set": "string" + } + ] + ], + "description_kind": "plain", + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "location": { + "type": "string", + "description_kind": "plain", + "required": true + } + }, + "block_types": { + "timeouts": { + "nesting_mode": "single", + "block": { + "attributes": { + "read": { + "type": "string", + "description_kind": "plain", + "optional": true + } + }, + "description_kind": "plain" + } + } + }, + "description_kind": "plain" + } + }, + "azurerm_oracle_adbs_national_character_sets": { + "version": 0, + "block": { + "attributes": { + "character_sets": { + "type": [ + "list", + [ + "object", + { + "character_set": "string" + } + ] + ], + "description_kind": "plain", + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "location": { + "type": "string", + "description_kind": "plain", + "required": true + } + }, + "block_types": { + "timeouts": { + "nesting_mode": "single", + "block": { + "attributes": { + "read": { + "type": "string", + "description_kind": "plain", + "optional": true + } + }, + "description_kind": "plain" + } + } + }, + "description_kind": "plain" + } + }, + "azurerm_oracle_autonomous_database": { + "version": 0, + "block": { + "attributes": { + "actual_used_data_storage_size_in_tbs": { + "type": "number", + "description_kind": "plain", + "computed": true + }, + "allocated_storage_size_in_tbs": { + "type": "number", + "description_kind": "plain", + "computed": true + }, + "allowed_ips": { + "type": [ + "list", + "number" + ], + "description_kind": "plain", + "computed": true + }, + "auto_scaling_enabled": { + "type": "bool", + "description_kind": "plain", + "computed": true + }, + "auto_scaling_for_storage_enabled": { + "type": "bool", + "description_kind": "plain", + "computed": true + }, + "autonomous_database_id": { + "type": "string", + "description_kind": "plain", + "computed": true + }, + "available_upgrade_versions": { + "type": [ + "list", + "string" + ], + "description_kind": "plain", + "computed": true + }, + "backup_retention_period_in_days": { + "type": "number", + "description_kind": "plain", + "computed": true + }, + "character_set": { + "type": "string", + "description_kind": "plain", + "computed": true + }, + "compute_count": { + "type": "number", + "description_kind": "plain", + "computed": true + }, + "cpu_core_count": { + "type": "number", + "description_kind": "plain", + "computed": true + }, + "data_storage_size_in_gbs": { + "type": "number", + "description_kind": "plain", + "computed": true + }, + "data_storage_size_in_tbs": { + "type": "number", + "description_kind": "plain", + "computed": true + }, + "db_node_storage_size_in_gbs": { + "type": "number", + "description_kind": "plain", + "computed": true + }, + "db_version": { + "type": "string", + "description_kind": "plain", + "computed": true + }, + "display_name": { + "type": "string", + "description_kind": "plain", + "computed": true + }, + "failed_data_recovery_in_seconds": { + "type": "number", + "description_kind": "plain", + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "in_memory_area_in_gbs": { + "type": "number", + "description_kind": "plain", + "computed": true + }, + "lifecycle_details": { + "type": "string", + "description_kind": "plain", + "computed": true + }, + "local_adg_auto_failover_max_data_loss_limit": { + "type": "number", + "description_kind": "plain", + "computed": true + }, + "local_data_guard_enabled": { + "type": "bool", + "description_kind": "plain", + "computed": true + }, + "location": { + "type": "string", + "description_kind": "plain", + "computed": true + }, + "memory_per_oracle_compute_unit_in_gbs": { + "type": "number", + "description_kind": "plain", + "computed": true + }, + "mtls_connection_required": { + "type": "bool", + "description_kind": "plain", + "computed": true + }, + "name": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "national_character_set": { + "type": "string", + "description_kind": "plain", + "computed": true + }, + "next_long_term_backup_time_stamp": { + "type": "string", + "description_kind": "plain", + "computed": true + }, + "oci_url": { + "type": "string", + "description_kind": "plain", + "computed": true + }, + "ocid": { + "type": "string", + "description_kind": "plain", + "computed": true + }, + "peer_db_id": { + "type": "string", + "description_kind": "plain", + "computed": true + }, + "peer_db_ids": { + "type": [ + "list", + "string" + ], + "description_kind": "plain", + "computed": true + }, + "preview": { + "type": "bool", + "description_kind": "plain", + "computed": true + }, + "preview_version_with_service_terms_accepted": { + "type": "bool", + "description_kind": "plain", + "computed": true + }, + "private_endpoint": { + "type": "string", + "description_kind": "plain", + "computed": true + }, + "private_endpoint_ip": { + "type": "string", + "description_kind": "plain", + "computed": true + }, + "private_endpoint_label": { + "type": "string", + "description_kind": "plain", + "computed": true + }, + "provisionable_cpus": { + "type": [ + "list", + "number" + ], + "description_kind": "plain", + "computed": true + }, + "remote_data_guard_enabled": { + "type": "bool", + "description_kind": "plain", + "computed": true + }, + "resource_group_name": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "service_console_url": { + "type": "string", + "description_kind": "plain", + "computed": true + }, + "sql_web_developer_url": { + "type": "string", + "description_kind": "plain", + "computed": true + }, + "subnet_id": { + "type": "string", + "description_kind": "plain", + "computed": true + }, + "supported_regions_to_clone_to": { + "type": [ + "list", + "number" + ], + "description_kind": "plain", + "computed": true + }, + "tags": { + "type": [ + "map", + "string" + ], + "description_kind": "plain", + "computed": true + }, + "time_created": { + "type": "string", + "description_kind": "plain", + "computed": true + }, + "time_data_guard_role_changed": { + "type": "string", + "description_kind": "plain", + "computed": true + }, + "time_deletion_of_free_autonomous_database": { + "type": "string", + "description_kind": "plain", + "computed": true + }, + "time_local_data_guard_enabled_on": { + "type": "string", + "description_kind": "plain", + "computed": true + }, + "time_maintenance_begin": { + "type": "string", + "description_kind": "plain", + "computed": true + }, + "time_maintenance_end": { + "type": "string", + "description_kind": "plain", + "computed": true + }, + "time_of_last_failover": { + "type": "string", + "description_kind": "plain", + "computed": true + }, + "time_of_last_refresh": { + "type": "string", + "description_kind": "plain", + "computed": true + }, + "time_of_last_refresh_point": { + "type": "string", + "description_kind": "plain", + "computed": true + }, + "time_of_last_switchover": { + "type": "string", + "description_kind": "plain", + "computed": true + }, + "time_reclamation_of_free_autonomous_database": { + "type": "string", + "description_kind": "plain", + "computed": true + }, + "used_data_storage_size_in_gbs": { + "type": "number", + "description_kind": "plain", + "computed": true + }, + "used_data_storage_size_in_tbs": { + "type": "number", + "description_kind": "plain", + "computed": true + }, + "virtual_network_id": { + "type": "string", + "description_kind": "plain", + "computed": true + } + }, + "block_types": { + "timeouts": { + "nesting_mode": "single", + "block": { + "attributes": { + "read": { + "type": "string", + "description_kind": "plain", + "optional": true + } + }, + "description_kind": "plain" + } + } + }, + "description_kind": "plain" + } + }, + "azurerm_oracle_cloud_vm_cluster": { + "version": 0, + "block": { + "attributes": { + "backup_subnet_cidr": { + "type": "string", + "description_kind": "plain", + "computed": true + }, + "cloud_exadata_infrastructure_id": { + "type": "string", + "description_kind": "plain", + "computed": true + }, + "cluster_name": { + "type": "string", + "description_kind": "plain", + "computed": true + }, + "compartment_id": { + "type": "string", + "description_kind": "plain", + "computed": true + }, + "compute_nodes": { + "type": [ + "list", + "string" + ], + "description_kind": "plain", + "computed": true + }, + "cpu_core_count": { + "type": "number", + "description_kind": "plain", + "computed": true + }, + "data_collection_options": { + "type": [ + "list", + [ + "object", + { + "diagnostics_events_enabled": "bool", + "health_monitoring_enabled": "bool", + "incident_logs_enabled": "bool" + } + ] + ], + "description_kind": "plain", + "computed": true + }, + "data_storage_percentage": { + "type": "number", + "description_kind": "plain", + "computed": true + }, + "data_storage_size_in_tbs": { + "type": "number", + "description_kind": "plain", + "computed": true + }, + "db_node_storage_size_in_gbs": { + "type": "number", + "description_kind": "plain", + "computed": true + }, + "db_servers": { + "type": [ + "list", + "string" + ], + "description_kind": "plain", + "computed": true + }, + "disk_redundancy": { + "type": "string", + "description_kind": "plain", + "computed": true + }, + "display_name": { + "type": "string", + "description_kind": "plain", + "computed": true + }, + "domain": { + "type": "string", + "description_kind": "plain", + "computed": true + }, + "gi_version": { + "type": "string", + "description_kind": "plain", + "computed": true + }, + "hostname": { + "type": "string", + "description_kind": "plain", + "computed": true + }, + "hostname_actual": { + "type": "string", + "description_kind": "plain", + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "iorm_config_cache": { + "type": [ + "list", + [ + "object", + { + "db_plans": [ + "list", + [ + "object", + { + "db_name": "string", + "flash_cache_limit": "string", + "share": "number" + } + ] + ], + "lifecycle_details": "string", + "lifecycle_state": "string", + "objective": "string" + } + ] + ], + "description_kind": "plain", + "computed": true + }, + "last_update_history_entry_id": { + "type": "string", + "description_kind": "plain", + "computed": true + }, + "license_model": { + "type": "string", + "description_kind": "plain", + "computed": true + }, + "lifecycle_details": { + "type": "string", + "description_kind": "plain", + "computed": true + }, + "lifecycle_state": { + "type": "string", + "description_kind": "plain", + "computed": true + }, + "listener_port": { + "type": "number", + "description_kind": "plain", + "computed": true + }, + "local_backup_enabled": { + "type": "bool", + "description_kind": "plain", + "computed": true + }, + "location": { + "type": "string", + "description_kind": "plain", + "computed": true + }, + "memory_size_in_gbs": { + "type": "number", + "description_kind": "plain", + "computed": true + }, + "name": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "node_count": { + "type": "number", + "description_kind": "plain", + "computed": true + }, + "nsg_url": { + "type": "string", + "description_kind": "plain", + "computed": true + }, + "oci_url": { + "type": "string", + "description_kind": "plain", + "computed": true + }, + "ocid": { + "type": "string", + "description_kind": "plain", + "computed": true + }, + "ocpu_count": { + "type": "number", + "description_kind": "plain", + "computed": true + }, + "resource_group_name": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "scan_dns_name": { + "type": "string", + "description_kind": "plain", + "computed": true + }, + "scan_dns_record_id": { + "type": "string", + "description_kind": "plain", + "computed": true + }, + "scan_ip_ids": { + "type": [ + "list", + "string" + ], + "description_kind": "plain", + "computed": true + }, + "scan_listener_port_tcp": { + "type": "number", + "description_kind": "plain", + "computed": true + }, + "scan_listener_port_tcp_ssl": { + "type": "number", + "description_kind": "plain", + "computed": true + }, + "shape": { + "type": "string", + "description_kind": "plain", + "computed": true + }, + "sparse_diskgroup_enabled": { + "type": "bool", + "description_kind": "plain", + "computed": true + }, + "ssh_public_keys": { + "type": [ + "list", + "string" + ], + "description_kind": "plain", + "computed": true + }, + "storage_size_in_gbs": { + "type": "number", + "description_kind": "plain", + "computed": true + }, + "subnet_id": { + "type": "string", + "description_kind": "plain", + "computed": true + }, + "subnet_ocid": { + "type": "string", + "description_kind": "plain", + "computed": true + }, + "system_version": { + "type": "string", + "description_kind": "plain", + "computed": true + }, + "tags": { + "type": [ + "map", + "string" + ], + "description_kind": "plain", + "computed": true + }, + "time_created": { + "type": "string", + "description_kind": "plain", + "computed": true + }, + "time_zone": { + "type": "string", + "description_kind": "plain", + "computed": true + }, + "vip_ods": { + "type": [ + "list", + "string" + ], + "description_kind": "plain", + "computed": true + }, + "virtual_network_id": { + "type": "string", + "description_kind": "plain", + "computed": true + }, + "zone_id": { + "type": "string", + "description_kind": "plain", + "computed": true + } + }, + "block_types": { + "timeouts": { + "nesting_mode": "single", + "block": { + "attributes": { + "read": { + "type": "string", + "description_kind": "plain", + "optional": true + } + }, + "description_kind": "plain" + } + } + }, + "description_kind": "plain" + } + }, + "azurerm_oracle_db_nodes": { + "version": 0, + "block": { + "attributes": { + "cloud_vm_cluster_id": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "db_nodes": { + "type": [ + "list", + [ + "object", + { + "additional_details": "string", + "backup_ip_id": "string", + "backup_vnic_2_id": "string", + "backup_vnic_id": "string", + "cpu_core_count": "number", + "db_node_storage_size_in_gbs": "number", + "db_server_id": "string", + "db_system_id": "string", + "fault_domain": "string", + "host_ip_id": "string", + "hostname": "string", + "lifecycle_details": "string", + "lifecycle_state": "string", + "maintenance_type": "string", + "memory_size_in_gbs": "number", + "ocid": "string", + "software_storage_size_in_gb": "number", + "time_created": "string", + "time_maintenance_window_end": "string", + "time_maintenance_window_start": "string", + "vnic_2_id": "string", + "vnic_id": "string" + } + ] + ], + "description_kind": "plain", + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + } + }, + "block_types": { + "timeouts": { + "nesting_mode": "single", + "block": { + "attributes": { + "read": { + "type": "string", + "description_kind": "plain", + "optional": true + } + }, + "description_kind": "plain" + } + } + }, + "description_kind": "plain" + } + }, + "azurerm_oracle_db_servers": { + "version": 0, "block": { "attributes": { - "apns_credential": { + "cloud_exadata_infrastructure_name": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "db_servers": { "type": [ "list", [ "object", { - "application_mode": "string", - "bundle_id": "string", - "key_id": "string", - "team_id": "string", - "token": "string" + "autonomous_virtual_machine_ds": [ + "list", + "string" + ], + "autonomous_vm_cluster_ids": [ + "list", + "string" + ], + "compartment_id": "string", + "cpu_core_count": "number", + "db_node_ids": [ + "list", + "string" + ], + "db_node_storage_size_in_gbs": "number", + "display_name": "string", + "exadata_infrastructure_id": "string", + "lifecycle_details": "string", + "lifecycle_state": "string", + "max_cpu_count": "number", + "max_db_node_storage_in_gbs": "number", + "max_memory_in_gbs": "number", + "memory_size_in_gbs": "number", + "ocid": "string", + "shape": "string", + "time_created": "string", + "vm_cluster_ids": [ + "list", + "string" + ] } ] ], "description_kind": "plain", "computed": true }, - "gcm_credential": { + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "resource_group_name": { + "type": "string", + "description_kind": "plain", + "required": true + } + }, + "block_types": { + "timeouts": { + "nesting_mode": "single", + "block": { + "attributes": { + "read": { + "type": "string", + "description_kind": "plain", + "optional": true + } + }, + "description_kind": "plain" + } + } + }, + "description_kind": "plain" + } + }, + "azurerm_oracle_db_system_shapes": { + "version": 0, + "block": { + "attributes": { + "db_system_shapes": { "type": [ "list", [ "object", { - "api_key": "string" + "available_core_count": "number", + "available_core_count_per_node": "number", + "available_data_storage_in_tbs": "number", + "available_data_storage_per_server_in_tbs": "number", + "available_db_node_per_node_in_gbs": "number", + "available_db_node_storage_in_gbs": "number", + "available_memory_in_gbs": "number", + "available_memory_per_node_in_gbs": "number", + "core_count_increment": "number", + "maximum_node_count": "number", + "maximum_storage_count": "number", + "minimum_core_count": "number", + "minimum_core_count_per_node": "number", + "minimum_data_storage_in_tbs": "number", + "minimum_db_node_storage_per_node_in_gbs": "number", + "minimum_memory_per_node_in_gbs": "number", + "minimum_node_count": "number", + "minimum_storage_count": "number", + "runtime_minimum_core_count": "number", + "shape_family": "string" } ] ], @@ -189182,32 +190933,9 @@ "computed": true }, "location": { - "type": "string", - "description_kind": "plain", - "computed": true - }, - "name": { "type": "string", "description_kind": "plain", "required": true - }, - "namespace_name": { - "type": "string", - "description_kind": "plain", - "required": true - }, - "resource_group_name": { - "type": "string", - "description_kind": "plain", - "required": true - }, - "tags": { - "type": [ - "map", - "string" - ], - "description_kind": "plain", - "computed": true } }, "block_types": { @@ -189228,59 +190956,214 @@ "description_kind": "plain" } }, - "azurerm_notification_hub_namespace": { - "version": 1, + "azurerm_oracle_exadata_infrastructure": { + "version": 0, "block": { "attributes": { - "enabled": { - "type": "bool", + "activated_storage_count": { + "type": "number", "description_kind": "plain", "computed": true }, - "id": { + "additional_storage_count": { + "type": "number", + "description_kind": "plain", + "computed": true + }, + "available_storage_size_in_gbs": { + "type": "number", + "description_kind": "plain", + "computed": true + }, + "compute_count": { + "type": "number", + "description_kind": "plain", + "computed": true + }, + "cpu_count": { + "type": "number", + "description_kind": "plain", + "computed": true + }, + "customer_contacts": { + "type": [ + "list", + "string" + ], + "description_kind": "plain", + "computed": true + }, + "data_storage_size_in_tbs": { + "type": "number", + "description_kind": "plain", + "computed": true + }, + "db_node_storage_size_in_gbs": { + "type": "number", + "description_kind": "plain", + "computed": true + }, + "db_server_version": { "type": "string", "description_kind": "plain", - "optional": true, "computed": true }, - "location": { + "display_name": { "type": "string", "description_kind": "plain", "computed": true }, - "name": { + "estimated_patching_time": { + "type": [ + "list", + [ + "object", + { + "estimated_db_server_patching_time": "number", + "estimated_network_switches_patching_time": "number", + "estimated_storage_server_patching_time": "number", + "total_estimated_patching_time": "number" + } + ] + ], + "description_kind": "plain", + "computed": true + }, + "id": { "type": "string", "description_kind": "plain", - "required": true + "optional": true, + "computed": true }, - "namespace_type": { + "last_maintenance_run_id": { "type": "string", "description_kind": "plain", "computed": true }, - "resource_group_name": { + "lifecycle_details": { "type": "string", "description_kind": "plain", - "required": true + "computed": true }, - "servicebus_endpoint": { + "lifecycle_state": { "type": "string", "description_kind": "plain", "computed": true }, - "sku": { + "location": { + "type": "string", + "description_kind": "plain", + "computed": true + }, + "maintenance_window": { "type": [ "list", [ "object", { - "name": "string" + "custom_action_timeout_enabled": "bool", + "custom_action_timeout_in_mins": "number", + "days_of_week": [ + "list", + "string" + ], + "hours_of_day": [ + "list", + "number" + ], + "lead_time_in_weeks": "number", + "monthly_patching_enabled": "bool", + "months": [ + "list", + "string" + ], + "patching_mode": "string", + "preference": "string", + "weeks_of_month": [ + "list", + "number" + ] } ] ], "description_kind": "plain", "computed": true }, + "max_cpu_count": { + "type": "number", + "description_kind": "plain", + "computed": true + }, + "max_data_storage_in_tbs": { + "type": "number", + "description_kind": "plain", + "computed": true + }, + "max_db_node_storage_size_in_gbs": { + "type": "number", + "description_kind": "plain", + "computed": true + }, + "max_memory_in_gbs": { + "type": "number", + "description_kind": "plain", + "computed": true + }, + "memory_size_in_gbs": { + "type": "number", + "description_kind": "plain", + "computed": true + }, + "monthly_db_server_version": { + "type": "string", + "description_kind": "plain", + "computed": true + }, + "monthly_storage_server_version": { + "type": "string", + "description_kind": "plain", + "computed": true + }, + "name": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "next_maintenance_run_id": { + "type": "string", + "description_kind": "plain", + "computed": true + }, + "oci_url": { + "type": "string", + "description_kind": "plain", + "computed": true + }, + "ocid": { + "type": "string", + "description_kind": "plain", + "computed": true + }, + "resource_group_name": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "shape": { + "type": "string", + "description_kind": "plain", + "computed": true + }, + "storage_count": { + "type": "number", + "description_kind": "plain", + "computed": true + }, + "storage_server_version": { + "type": "string", + "description_kind": "plain", + "computed": true + }, "tags": { "type": [ "map", @@ -189288,6 +191171,66 @@ ], "description_kind": "plain", "computed": true + }, + "time_created": { + "type": "string", + "description_kind": "plain", + "computed": true + }, + "total_storage_size_in_gbs": { + "type": "number", + "description_kind": "plain", + "computed": true + }, + "zones": { + "type": [ + "list", + "string" + ], + "description_kind": "plain", + "computed": true + } + }, + "block_types": { + "timeouts": { + "nesting_mode": "single", + "block": { + "attributes": { + "read": { + "type": "string", + "description_kind": "plain", + "optional": true + } + }, + "description_kind": "plain" + } + } + }, + "description_kind": "plain" + } + }, + "azurerm_oracle_gi_versions": { + "version": 0, + "block": { + "attributes": { + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "location": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "versions": { + "type": [ + "list", + "string" + ], + "description_kind": "plain", + "computed": true } }, "block_types": { @@ -195952,6 +197895,11 @@ "description_kind": "plain", "computed": true }, + "public_network_access_enabled": { + "type": "bool", + "description_kind": "plain", + "computed": true + }, "resource_group_name": { "type": "string", "description_kind": "plain", @@ -200103,6 +202051,180 @@ "description_kind": "plain" } }, + "azurerm_vpn_server_configuration": { + "version": 0, + "block": { + "attributes": { + "azure_active_directory_authentication": { + "type": [ + "list", + [ + "object", + { + "audience": "string", + "issuer": "string", + "tenant": "string" + } + ] + ], + "description_kind": "plain", + "computed": true + }, + "client_revoked_certificate": { + "type": [ + "set", + [ + "object", + { + "name": "string", + "thumbprint": "string" + } + ] + ], + "description_kind": "plain", + "computed": true + }, + "client_root_certificate": { + "type": [ + "set", + [ + "object", + { + "name": "string", + "public_cert_data": "string" + } + ] + ], + "description_kind": "plain", + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "ipsec_policy": { + "type": [ + "list", + [ + "object", + { + "dh_group": "string", + "ike_encryption": "string", + "ike_integrity": "string", + "ipsec_encryption": "string", + "ipsec_integrity": "string", + "pfs_group": "string", + "sa_data_size_kilobytes": "number", + "sa_lifetime_seconds": "number" + } + ] + ], + "description_kind": "plain", + "computed": true + }, + "location": { + "type": "string", + "description_kind": "plain", + "computed": true + }, + "name": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "radius": { + "type": [ + "list", + [ + "object", + { + "client_root_certificate": [ + "set", + [ + "object", + { + "name": "string", + "thumbprint": "string" + } + ] + ], + "server": [ + "list", + [ + "object", + { + "address": "string", + "score": "number", + "secret": "string" + } + ] + ], + "server_root_certificate": [ + "set", + [ + "object", + { + "name": "string", + "public_cert_data": "string" + } + ] + ] + } + ] + ], + "description_kind": "plain", + "computed": true + }, + "resource_group_name": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "tags": { + "type": [ + "map", + "string" + ], + "description_kind": "plain", + "computed": true + }, + "vpn_authentication_types": { + "type": [ + "list", + "string" + ], + "description_kind": "plain", + "computed": true + }, + "vpn_protocols": { + "type": [ + "set", + "string" + ], + "description_kind": "plain", + "computed": true + } + }, + "block_types": { + "timeouts": { + "nesting_mode": "single", + "block": { + "attributes": { + "read": { + "type": "string", + "description_kind": "plain", + "optional": true + } + }, + "description_kind": "plain" + } + } + }, + "description_kind": "plain" + } + }, "azurerm_web_application_firewall_policy": { "version": 1, "block": { diff --git a/ocd/packages/codegen-cli/schema/azurerm-schema.json b/ocd/packages/codegen-cli/schema/azurerm-schema.json index c6de58881..7427504bb 100644 --- a/ocd/packages/codegen-cli/schema/azurerm-schema.json +++ b/ocd/packages/codegen-cli/schema/azurerm-schema.json @@ -1,43 +1,9 @@ { - "oracledatabase_exadata_infrastructure": { - "tf_resource": "azurerm_oracledatabase_exadata_infrastructure", + "load_balancer": { + "tf_resource": "azurerm_application_load_balancer", "type": "object", "subtype": "", "attributes": { - "edition": { - "provider": "azure", - "key": "edition", - "name": "edition", - "type": "string", - "subtype": "", - "required": false, - "label": "Edition", - "id": "edition", - "staticLookup": false, - "cacheLookup": false, - "lookup": false, - "lookupResource": "", - "lookupResourceElement": "", - "conditional": false, - "condition": {} - }, - "elastic_pool_name": { - "provider": "azure", - "key": "elasticPoolName", - "name": "elastic_pool_name", - "type": "string", - "subtype": "", - "required": false, - "label": "Elastic Pool Name", - "id": "elastic_pool_name", - "staticLookup": false, - "cacheLookup": false, - "lookup": false, - "lookupResource": "", - "lookupResourceElement": "", - "conditional": false, - "condition": {} - }, "location": { "provider": "azure", "key": "location", @@ -72,15 +38,15 @@ "conditional": false, "condition": {} }, - "resource_group_name": { + "primary_configuration_endpoint": { "provider": "azure", - "key": "resourceGroupName", - "name": "resource_group_name", + "key": "primaryConfigurationEndpoint", + "name": "primary_configuration_endpoint", "type": "string", "subtype": "", - "required": true, - "label": "Resource Group Name", - "id": "resource_group_name", + "required": false, + "label": "Primary Configuration Endpoint", + "id": "primary_configuration_endpoint", "staticLookup": false, "cacheLookup": false, "lookup": false, @@ -89,15 +55,15 @@ "conditional": false, "condition": {} }, - "server_name": { + "resource_group_name": { "provider": "azure", - "key": "serverName", - "name": "server_name", + "key": "resourceGroupName", + "name": "resource_group_name", "type": "string", "subtype": "", "required": true, - "label": "Server Name", - "id": "server_name", + "label": "Resource Group Name", + "id": "resource_group_name", "staticLookup": false, "cacheLookup": false, "lookup": false, @@ -125,20 +91,37 @@ } } }, - "oracledatabase_autonomous_database_regular": { - "tf_resource": "azurerm_oracledatabase_autonomous_database_regular", + "container_registry": { + "tf_resource": "azurerm_container_registry", "type": "object", "subtype": "", "attributes": { - "edition": { + "admin_enabled": { "provider": "azure", - "key": "edition", - "name": "edition", + "key": "adminEnabled", + "name": "admin_enabled", + "type": "bool", + "subtype": "", + "required": false, + "label": "Admin Enabled", + "id": "admin_enabled", + "staticLookup": false, + "cacheLookup": false, + "lookup": false, + "lookupResource": "", + "lookupResourceElement": "", + "conditional": false, + "condition": {} + }, + "admin_password": { + "provider": "azure", + "key": "adminPassword", + "name": "admin_password", "type": "string", "subtype": "", "required": false, - "label": "Edition", - "id": "edition", + "label": "Admin Password", + "id": "admin_password", "staticLookup": false, "cacheLookup": false, "lookup": false, @@ -147,15 +130,15 @@ "conditional": false, "condition": {} }, - "elastic_pool_name": { + "admin_username": { "provider": "azure", - "key": "elasticPoolName", - "name": "elastic_pool_name", + "key": "adminUsername", + "name": "admin_username", "type": "string", "subtype": "", "required": false, - "label": "Elastic Pool Name", - "id": "elastic_pool_name", + "label": "Admin Username", + "id": "admin_username", "staticLookup": false, "cacheLookup": false, "lookup": false, @@ -215,23 +198,6 @@ "conditional": false, "condition": {} }, - "server_name": { - "provider": "azure", - "key": "serverName", - "name": "server_name", - "type": "string", - "subtype": "", - "required": true, - "label": "Server Name", - "id": "server_name", - "staticLookup": false, - "cacheLookup": false, - "lookup": false, - "lookupResource": "", - "lookupResourceElement": "", - "conditional": false, - "condition": {} - }, "tags": { "provider": "azure", "key": "tags", @@ -251,54 +217,20 @@ } } }, - "oracledatabase_cloud_vm_cluster": { - "tf_resource": "azurerm_oracledatabase_cloud_vm_cluster", + "dns_zone": { + "tf_resource": "azurerm_dns_zone", "type": "object", "subtype": "", "attributes": { - "edition": { - "provider": "azure", - "key": "edition", - "name": "edition", - "type": "string", - "subtype": "", - "required": false, - "label": "Edition", - "id": "edition", - "staticLookup": false, - "cacheLookup": false, - "lookup": false, - "lookupResource": "", - "lookupResourceElement": "", - "conditional": false, - "condition": {} - }, - "elastic_pool_name": { + "max_number_of_record_sets": { "provider": "azure", - "key": "elasticPoolName", - "name": "elastic_pool_name", - "type": "string", + "key": "maxNumberOfRecordSets", + "name": "max_number_of_record_sets", + "type": "number", "subtype": "", "required": false, - "label": "Elastic Pool Name", - "id": "elastic_pool_name", - "staticLookup": false, - "cacheLookup": false, - "lookup": false, - "lookupResource": "", - "lookupResourceElement": "", - "conditional": false, - "condition": {} - }, - "location": { - "provider": "azure", - "key": "location", - "name": "location", - "type": "string", - "subtype": "", - "required": true, - "label": "Location", - "id": "location", + "label": "Max Number Of Record Sets", + "id": "max_number_of_record_sets", "staticLookup": false, "cacheLookup": false, "lookup": false, @@ -324,15 +256,15 @@ "conditional": false, "condition": {} }, - "resource_group_name": { + "name_servers": { "provider": "azure", - "key": "resourceGroupName", - "name": "resource_group_name", - "type": "string", - "subtype": "", - "required": true, - "label": "Resource Group Name", - "id": "resource_group_name", + "key": "nameServers", + "name": "name_servers", + "type": "set", + "subtype": "string", + "required": false, + "label": "Name Servers", + "id": "name_servers", "staticLookup": false, "cacheLookup": false, "lookup": false, @@ -341,15 +273,15 @@ "conditional": false, "condition": {} }, - "server_name": { + "resource_group_name": { "provider": "azure", - "key": "serverName", - "name": "server_name", + "key": "resourceGroupName", + "name": "resource_group_name", "type": "string", "subtype": "", "required": true, - "label": "Server Name", - "id": "server_name", + "label": "Resource Group Name", + "id": "resource_group_name", "staticLookup": false, "cacheLookup": false, "lookup": false, @@ -377,11 +309,28 @@ } } }, - "load_balancer": { - "tf_resource": "azurerm_application_load_balancer", + "kubernetes_cluster": { + "tf_resource": "azurerm_kubernetes_cluster", "type": "object", "subtype": "", "attributes": { + "kubernetes_version": { + "provider": "azure", + "key": "kubernetesVersion", + "name": "kubernetes_version", + "type": "string", + "subtype": "", + "required": false, + "label": "Kubernetes Version", + "id": "kubernetes_version", + "staticLookup": false, + "cacheLookup": false, + "lookup": false, + "lookupResource": "", + "lookupResourceElement": "", + "conditional": false, + "condition": {} + }, "location": { "provider": "azure", "key": "location", @@ -416,20 +365,20 @@ "conditional": false, "condition": {} }, - "primary_configuration_endpoint": { + "private_dns_zone_id": { "provider": "azure", - "key": "primaryConfigurationEndpoint", - "name": "primary_configuration_endpoint", + "key": "privateDnsZoneId", + "name": "private_dns_zone_id", "type": "string", "subtype": "", "required": false, - "label": "Primary Configuration Endpoint", - "id": "primary_configuration_endpoint", + "label": "Private Dns Zone", + "id": "private_dns_zone_id", "staticLookup": false, "cacheLookup": false, - "lookup": false, - "lookupResource": "", - "lookupResourceElement": "", + "lookup": true, + "lookupResource": "private_dns_zone", + "lookupResourceElement": "id", "conditional": false, "condition": {} }, @@ -469,37 +418,20 @@ } } }, - "container_registry": { - "tf_resource": "azurerm_container_registry", + "mssql_server": { + "tf_resource": "azurerm_mssql_server", "type": "object", "subtype": "", "attributes": { - "admin_enabled": { - "provider": "azure", - "key": "adminEnabled", - "name": "admin_enabled", - "type": "bool", - "subtype": "", - "required": false, - "label": "Admin Enabled", - "id": "admin_enabled", - "staticLookup": false, - "cacheLookup": false, - "lookup": false, - "lookupResource": "", - "lookupResourceElement": "", - "conditional": false, - "condition": {} - }, - "admin_password": { + "administrator_login": { "provider": "azure", - "key": "adminPassword", - "name": "admin_password", + "key": "administratorLogin", + "name": "administrator_login", "type": "string", "subtype": "", "required": false, - "label": "Admin Password", - "id": "admin_password", + "label": "Administrator Login", + "id": "administrator_login", "staticLookup": false, "cacheLookup": false, "lookup": false, @@ -508,15 +440,15 @@ "conditional": false, "condition": {} }, - "admin_username": { + "administrator_login_password": { "provider": "azure", - "key": "adminUsername", - "name": "admin_username", + "key": "administratorLoginPassword", + "name": "administrator_login_password", "type": "string", "subtype": "", "required": false, - "label": "Admin Username", - "id": "admin_username", + "label": "Administrator Login Password", + "id": "administrator_login_password", "staticLookup": false, "cacheLookup": false, "lookup": false, @@ -592,23 +524,91 @@ "lookupResourceElement": "", "conditional": false, "condition": {} + }, + "version": { + "provider": "azure", + "key": "version", + "name": "version", + "type": "string", + "subtype": "", + "required": true, + "label": "Version", + "id": "version", + "staticLookup": false, + "cacheLookup": false, + "lookup": false, + "lookupResource": "", + "lookupResourceElement": "", + "conditional": false, + "condition": {} } } }, - "dns_zone": { - "tf_resource": "azurerm_dns_zone", + "oracle_autonomous_database": { + "tf_resource": "azurerm_oracle_autonomous_database", "type": "object", "subtype": "", "attributes": { - "max_number_of_record_sets": { + "admin_password": { "provider": "azure", - "key": "maxNumberOfRecordSets", - "name": "max_number_of_record_sets", + "key": "adminPassword", + "name": "admin_password", + "type": "string", + "subtype": "", + "required": true, + "label": "Admin Password", + "id": "admin_password", + "staticLookup": false, + "cacheLookup": false, + "lookup": false, + "lookupResource": "", + "lookupResourceElement": "", + "conditional": false, + "condition": {} + }, + "auto_scaling_enabled": { + "provider": "azure", + "key": "autoScalingEnabled", + "name": "auto_scaling_enabled", + "type": "bool", + "subtype": "", + "required": true, + "label": "Auto Scaling Enabled", + "id": "auto_scaling_enabled", + "staticLookup": false, + "cacheLookup": false, + "lookup": false, + "lookupResource": "", + "lookupResourceElement": "", + "conditional": false, + "condition": {} + }, + "auto_scaling_for_storage_enabled": { + "provider": "azure", + "key": "autoScalingForStorageEnabled", + "name": "auto_scaling_for_storage_enabled", + "type": "bool", + "subtype": "", + "required": true, + "label": "Auto Scaling For Storage Enabled", + "id": "auto_scaling_for_storage_enabled", + "staticLookup": false, + "cacheLookup": false, + "lookup": false, + "lookupResource": "", + "lookupResourceElement": "", + "conditional": false, + "condition": {} + }, + "backup_retention_period_in_days": { + "provider": "azure", + "key": "backupRetentionPeriodInDays", + "name": "backup_retention_period_in_days", "type": "number", "subtype": "", - "required": false, - "label": "Max Number Of Record Sets", - "id": "max_number_of_record_sets", + "required": true, + "label": "Backup Retention Period In Days", + "id": "backup_retention_period_in_days", "staticLookup": false, "cacheLookup": false, "lookup": false, @@ -617,15 +617,32 @@ "conditional": false, "condition": {} }, - "name": { + "data_storage_size_in_tbs": { "provider": "azure", - "key": "name", - "name": "name", + "key": "dataStorageSizeInTbs", + "name": "data_storage_size_in_tbs", + "type": "number", + "subtype": "", + "required": true, + "label": "Data Storage Size In Tbs", + "id": "data_storage_size_in_tbs", + "staticLookup": false, + "cacheLookup": false, + "lookup": false, + "lookupResource": "", + "lookupResourceElement": "", + "conditional": false, + "condition": {} + }, + "db_version": { + "provider": "azure", + "key": "dbVersion", + "name": "db_version", "type": "string", "subtype": "", "required": true, - "label": "Name", - "id": "name", + "label": "Db Version", + "id": "db_version", "staticLookup": false, "cacheLookup": false, "lookup": false, @@ -634,15 +651,83 @@ "conditional": false, "condition": {} }, - "name_servers": { + "db_workload": { "provider": "azure", - "key": "nameServers", - "name": "name_servers", - "type": "set", - "subtype": "string", - "required": false, - "label": "Name Servers", - "id": "name_servers", + "key": "dbWorkload", + "name": "db_workload", + "type": "string", + "subtype": "", + "required": true, + "label": "Db Workload", + "id": "db_workload", + "staticLookup": false, + "cacheLookup": false, + "lookup": false, + "lookupResource": "", + "lookupResourceElement": "", + "conditional": false, + "condition": {} + }, + "display_name": { + "provider": "azure", + "key": "displayName", + "name": "display_name", + "type": "string", + "subtype": "", + "required": true, + "label": "Display Name", + "id": "display_name", + "staticLookup": false, + "cacheLookup": false, + "lookup": false, + "lookupResource": "", + "lookupResourceElement": "", + "conditional": false, + "condition": {} + }, + "license_model": { + "provider": "azure", + "key": "licenseModel", + "name": "license_model", + "type": "string", + "subtype": "", + "required": true, + "label": "License Model", + "id": "license_model", + "staticLookup": false, + "cacheLookup": false, + "lookup": false, + "lookupResource": "", + "lookupResourceElement": "", + "conditional": false, + "condition": {} + }, + "location": { + "provider": "azure", + "key": "location", + "name": "location", + "type": "string", + "subtype": "", + "required": true, + "label": "Location", + "id": "location", + "staticLookup": false, + "cacheLookup": false, + "lookup": false, + "lookupResource": "", + "lookupResourceElement": "", + "conditional": false, + "condition": {} + }, + "name": { + "provider": "azure", + "key": "name", + "name": "name", + "type": "string", + "subtype": "", + "required": true, + "label": "Name", + "id": "name", "staticLookup": false, "cacheLookup": false, "lookup": false, @@ -668,6 +753,23 @@ "conditional": false, "condition": {} }, + "subnet_id": { + "provider": "azure", + "key": "subnetId", + "name": "subnet_id", + "type": "string", + "subtype": "", + "required": true, + "label": "Subnet", + "id": "subnet_id", + "staticLookup": false, + "cacheLookup": false, + "lookup": true, + "lookupResource": "subnet", + "lookupResourceElement": "id", + "conditional": false, + "condition": {} + }, "tags": { "provider": "azure", "key": "tags", @@ -684,23 +786,74 @@ "lookupResourceElement": "", "conditional": false, "condition": {} + }, + "virtual_network_id": { + "provider": "azure", + "key": "virtualNetworkId", + "name": "virtual_network_id", + "type": "string", + "subtype": "", + "required": true, + "label": "Virtual Network", + "id": "virtual_network_id", + "staticLookup": false, + "cacheLookup": false, + "lookup": true, + "lookupResource": "virtual_network", + "lookupResourceElement": "id", + "conditional": false, + "condition": {} } } }, - "kubernetes_cluster": { - "tf_resource": "azurerm_kubernetes_cluster", + "oracle_cloud_vm_cluster": { + "tf_resource": "azurerm_oracle_cloud_vm_cluster", "type": "object", "subtype": "", "attributes": { - "kubernetes_version": { + "backup_subnet_cidr": { "provider": "azure", - "key": "kubernetesVersion", - "name": "kubernetes_version", + "key": "backupSubnetCidr", + "name": "backup_subnet_cidr", "type": "string", "subtype": "", "required": false, - "label": "Kubernetes Version", - "id": "kubernetes_version", + "label": "Backup Subnet Cidr", + "id": "backup_subnet_cidr", + "staticLookup": false, + "cacheLookup": false, + "lookup": false, + "lookupResource": "", + "lookupResourceElement": "", + "conditional": false, + "condition": {} + }, + "cluster_name": { + "provider": "azure", + "key": "clusterName", + "name": "cluster_name", + "type": "string", + "subtype": "", + "required": false, + "label": "Cluster Name", + "id": "cluster_name", + "staticLookup": false, + "cacheLookup": false, + "lookup": false, + "lookupResource": "", + "lookupResourceElement": "", + "conditional": false, + "condition": {} + }, + "cpu_core_count": { + "provider": "azure", + "key": "cpuCoreCount", + "name": "cpu_core_count", + "type": "number", + "subtype": "", + "required": true, + "label": "Cpu Core Count", + "id": "cpu_core_count", "staticLookup": false, "cacheLookup": false, "lookup": false, @@ -743,23 +896,6 @@ "conditional": false, "condition": {} }, - "private_dns_zone_id": { - "provider": "azure", - "key": "privateDnsZoneId", - "name": "private_dns_zone_id", - "type": "string", - "subtype": "", - "required": false, - "label": "Private Dns Zone", - "id": "private_dns_zone_id", - "staticLookup": false, - "cacheLookup": false, - "lookup": true, - "lookupResource": "private_dns_zone", - "lookupResourceElement": "id", - "conditional": false, - "condition": {} - }, "resource_group_name": { "provider": "azure", "key": "resourceGroupName", @@ -796,20 +932,20 @@ } } }, - "mssql_server": { - "tf_resource": "azurerm_mssql_server", + "oracle_exadata_infrastructure": { + "tf_resource": "azurerm_oracle_exadata_infrastructure", "type": "object", "subtype": "", "attributes": { - "administrator_login": { + "compute_count": { "provider": "azure", - "key": "administratorLogin", - "name": "administrator_login", - "type": "string", + "key": "computeCount", + "name": "compute_count", + "type": "number", "subtype": "", - "required": false, - "label": "Administrator Login", - "id": "administrator_login", + "required": true, + "label": "Compute Count", + "id": "compute_count", "staticLookup": false, "cacheLookup": false, "lookup": false, @@ -818,15 +954,15 @@ "conditional": false, "condition": {} }, - "administrator_login_password": { + "display_name": { "provider": "azure", - "key": "administratorLoginPassword", - "name": "administrator_login_password", + "key": "displayName", + "name": "display_name", "type": "string", "subtype": "", - "required": false, - "label": "Administrator Login Password", - "id": "administrator_login_password", + "required": true, + "label": "Display Name", + "id": "display_name", "staticLookup": false, "cacheLookup": false, "lookup": false, @@ -886,15 +1022,15 @@ "conditional": false, "condition": {} }, - "tags": { + "shape": { "provider": "azure", - "key": "tags", - "name": "tags", - "type": "map", - "subtype": "string", - "required": false, - "label": "Tags", - "id": "tags", + "key": "shape", + "name": "shape", + "type": "string", + "subtype": "", + "required": true, + "label": "Shape", + "id": "shape", "staticLookup": false, "cacheLookup": false, "lookup": false, @@ -903,15 +1039,15 @@ "conditional": false, "condition": {} }, - "version": { + "tags": { "provider": "azure", - "key": "version", - "name": "version", - "type": "string", - "subtype": "", - "required": true, - "label": "Version", - "id": "version", + "key": "tags", + "name": "tags", + "type": "map", + "subtype": "string", + "required": false, + "label": "Tags", + "id": "tags", "staticLookup": false, "cacheLookup": false, "lookup": false, diff --git a/ocd/packages/codegen-cli/schema/google-schema.json b/ocd/packages/codegen-cli/schema/google-schema.json index e913229e9..37df151b4 100644 --- a/ocd/packages/codegen-cli/schema/google-schema.json +++ b/ocd/packages/codegen-cli/schema/google-schema.json @@ -1,36 +1,243 @@ { - "oracledatabase_autonomous_database_regular": { - "tf_resource": "google_oracledatabase_autonomous_database_regular", + "compute_network": { + "tf_resource": "google_compute_network", "type": "object", "subtype": "", - "attributes": {} + "attributes": { + "gateway_ipv4": { + "provider": "google", + "key": "gatewayIpv4", + "name": "gateway_ipv4", + "type": "string", + "subtype": "", + "required": false, + "label": "Gateway Ipv4", + "id": "gateway_ipv4", + "staticLookup": false, + "cacheLookup": false, + "lookup": false, + "lookupResource": "", + "lookupResourceElement": "", + "conditional": false, + "condition": {} + } + } }, - "oracledatabase_exadata_infrastructure": { - "tf_resource": "google_oracledatabase_exadata_infrastructure", + "oracle_database_autonomous_database": { + "tf_resource": "google_oracle_database_autonomous_database", "type": "object", "subtype": "", - "attributes": {} + "attributes": { + "admin_password": { + "provider": "google", + "key": "adminPassword", + "name": "admin_password", + "type": "string", + "subtype": "", + "required": false, + "label": "Admin Password", + "id": "admin_password", + "staticLookup": false, + "cacheLookup": false, + "lookup": false, + "lookupResource": "", + "lookupResourceElement": "", + "conditional": false, + "condition": {} + }, + "autonomous_database_id": { + "provider": "google", + "key": "autonomousDatabaseId", + "name": "autonomous_database_id", + "type": "string", + "subtype": "", + "required": true, + "label": "Autonomous Database", + "id": "autonomous_database_id", + "staticLookup": false, + "cacheLookup": false, + "lookup": true, + "lookupResource": "autonomous_database", + "lookupResourceElement": "id", + "conditional": false, + "condition": {} + }, + "cidr": { + "provider": "google", + "key": "cidr", + "name": "cidr", + "type": "string", + "subtype": "", + "required": true, + "label": "Cidr", + "id": "cidr", + "staticLookup": false, + "cacheLookup": false, + "lookup": false, + "lookupResource": "", + "lookupResourceElement": "", + "conditional": false, + "condition": {} + }, + "database": { + "provider": "google", + "key": "database", + "name": "database", + "type": "string", + "subtype": "", + "required": true, + "label": "Database", + "id": "database", + "staticLookup": false, + "cacheLookup": false, + "lookup": false, + "lookupResource": "", + "lookupResourceElement": "", + "conditional": false, + "condition": {} + }, + "display_name": { + "provider": "google", + "key": "displayName", + "name": "display_name", + "type": "string", + "subtype": "", + "required": false, + "label": "Display Name", + "id": "display_name", + "staticLookup": false, + "cacheLookup": false, + "lookup": false, + "lookupResource": "", + "lookupResourceElement": "", + "conditional": false, + "condition": {} + } + } }, - "oracledatabase_cloud_vm_cluster": { - "tf_resource": "google_oracledatabase_cloud_vm_cluster", + "oracle_database_cloud_exadata_infrastructure": { + "tf_resource": "google_oracle_database_cloud_exadata_infrastructure", "type": "object", "subtype": "", - "attributes": {} + "attributes": { + "cloud_exadata_infrastructure_id": { + "provider": "google", + "key": "cloudExadataInfrastructureId", + "name": "cloud_exadata_infrastructure_id", + "type": "string", + "subtype": "", + "required": true, + "label": "Cloud Exadata Infrastructure", + "id": "cloud_exadata_infrastructure_id", + "staticLookup": false, + "cacheLookup": false, + "lookup": true, + "lookupResource": "cloud_exadata_infrastructure", + "lookupResourceElement": "id", + "conditional": false, + "condition": {} + }, + "display_name": { + "provider": "google", + "key": "displayName", + "name": "display_name", + "type": "string", + "subtype": "", + "required": false, + "label": "Display Name", + "id": "display_name", + "staticLookup": false, + "cacheLookup": false, + "lookup": false, + "lookupResource": "", + "lookupResourceElement": "", + "conditional": false, + "condition": {} + } + } }, - "compute_network": { - "tf_resource": "google_compute_network", + "oracle_database_cloud_vm_cluster": { + "tf_resource": "google_oracle_database_cloud_vm_cluster", "type": "object", "subtype": "", "attributes": { - "gateway_ipv4": { + "backup_subnet_cidr": { "provider": "google", - "key": "gatewayIpv4", - "name": "gateway_ipv4", + "key": "backupSubnetCidr", + "name": "backup_subnet_cidr", "type": "string", "subtype": "", - "required": false, - "label": "Gateway Ipv4", - "id": "gateway_ipv4", + "required": true, + "label": "Backup Subnet Cidr", + "id": "backup_subnet_cidr", + "staticLookup": false, + "cacheLookup": false, + "lookup": false, + "lookupResource": "", + "lookupResourceElement": "", + "conditional": false, + "condition": {} + }, + "cidr": { + "provider": "google", + "key": "cidr", + "name": "cidr", + "type": "string", + "subtype": "", + "required": true, + "label": "Cidr", + "id": "cidr", + "staticLookup": false, + "cacheLookup": false, + "lookup": false, + "lookupResource": "", + "lookupResourceElement": "", + "conditional": false, + "condition": {} + }, + "cloud_vm_cluster_id": { + "provider": "google", + "key": "cloudVmClusterId", + "name": "cloud_vm_cluster_id", + "type": "string", + "subtype": "", + "required": true, + "label": "Cloud Vm Cluster", + "id": "cloud_vm_cluster_id", + "staticLookup": false, + "cacheLookup": false, + "lookup": true, + "lookupResource": "cloud_vm_cluster", + "lookupResourceElement": "id", + "conditional": false, + "condition": {} + }, + "exadata_infrastructure": { + "provider": "google", + "key": "exadataInfrastructure", + "name": "exadata_infrastructure", + "type": "string", + "subtype": "", + "required": true, + "label": "Exadata Infrastructure", + "id": "exadata_infrastructure", + "staticLookup": false, + "cacheLookup": false, + "lookup": false, + "lookupResource": "", + "lookupResourceElement": "", + "conditional": false, + "condition": {} + }, + "network": { + "provider": "google", + "key": "network", + "name": "network", + "type": "string", + "subtype": "", + "required": true, + "label": "Network", + "id": "network", "staticLookup": false, "cacheLookup": false, "lookup": false, diff --git a/ocd/packages/codegen-cli/schema/google/tf-schema.json b/ocd/packages/codegen-cli/schema/google/tf-schema.json index 994e39054..2e0c1dbd9 100644 --- a/ocd/packages/codegen-cli/schema/google/tf-schema.json +++ b/ocd/packages/codegen-cli/schema/google/tf-schema.json @@ -552,6 +552,11 @@ "description_kind": "plain", "optional": true }, + "oracle_database_custom_endpoint": { + "type": "string", + "description_kind": "plain", + "optional": true + }, "org_policy_custom_endpoint": { "type": "string", "description_kind": "plain", @@ -645,6 +650,11 @@ "description_kind": "plain", "optional": true }, + "secret_manager_regional_custom_endpoint": { + "type": "string", + "description_kind": "plain", + "optional": true + }, "secure_source_manager_custom_endpoint": { "type": "string", "description_kind": "plain", @@ -740,6 +750,11 @@ "description_kind": "plain", "optional": true }, + "transcoder_custom_endpoint": { + "type": "string", + "description_kind": "plain", + "optional": true + }, "universe_domain": { "type": "string", "description_kind": "plain", @@ -806,252 +821,6 @@ } }, "resource_schemas": { - "google_oracledatabase_autonomous_database_regular": { - "version": 0, - "block": { - "attributes": { - "charset": { - "type": "string", - "description": "The charset value. See MySQL's\n[Supported Character Sets and Collations](https://dev.mysql.com/doc/refman/5.7/en/charset-charsets.html)\nand Postgres' [Character Set Support](https://www.postgresql.org/docs/9.6/static/multibyte.html)\nfor more details and supported values. Postgres databases only support\na value of 'UTF8' at creation time.", - "description_kind": "plain", - "optional": true, - "computed": true - }, - "collation": { - "type": "string", - "description": "The collation value. See MySQL's\n[Supported Character Sets and Collations](https://dev.mysql.com/doc/refman/5.7/en/charset-charsets.html)\nand Postgres' [Collation Support](https://www.postgresql.org/docs/9.6/static/collation.html)\nfor more details and supported values. Postgres databases only support\na value of 'en_US.UTF8' at creation time.", - "description_kind": "plain", - "optional": true, - "computed": true - }, - "deletion_policy": { - "type": "string", - "description": "The deletion policy for the database. Setting ABANDON allows the resource\nto be abandoned rather than deleted. This is useful for Postgres, where databases cannot be\ndeleted from the API if there are users other than cloudsqlsuperuser with access. Possible\nvalues are: \"ABANDON\", \"DELETE\". Defaults to \"DELETE\".", - "description_kind": "plain", - "optional": true - }, - "id": { - "type": "string", - "description_kind": "plain", - "optional": true, - "computed": true - }, - "instance": { - "type": "string", - "description": "The name of the Cloud SQL instance. This does not include the project\nID.", - "description_kind": "plain", - "required": true - }, - "name": { - "type": "string", - "description": "The name of the database in the Cloud SQL instance.\nThis does not include the project ID or instance name.", - "description_kind": "plain", - "required": true - }, - "project": { - "type": "string", - "description_kind": "plain", - "optional": true, - "computed": true - }, - "self_link": { - "type": "string", - "description_kind": "plain", - "computed": true - } - }, - "block_types": { - "timeouts": { - "nesting_mode": "single", - "block": { - "attributes": { - "create": { - "type": "string", - "description_kind": "plain", - "optional": true - }, - "delete": { - "type": "string", - "description_kind": "plain", - "optional": true - }, - "update": { - "type": "string", - "description_kind": "plain", - "optional": true - } - }, - "description_kind": "plain" - } - } - }, - "description_kind": "plain" - } - }, - "google_oracledatabase_exadata_infrastructure": { - "version": 0, - "block": { - "attributes": { - "charset": { - "type": "string", - "description": "The charset value. See MySQL's\n[Supported Character Sets and Collations](https://dev.mysql.com/doc/refman/5.7/en/charset-charsets.html)\nand Postgres' [Character Set Support](https://www.postgresql.org/docs/9.6/static/multibyte.html)\nfor more details and supported values. Postgres databases only support\na value of 'UTF8' at creation time.", - "description_kind": "plain", - "optional": true, - "computed": true - }, - "collation": { - "type": "string", - "description": "The collation value. See MySQL's\n[Supported Character Sets and Collations](https://dev.mysql.com/doc/refman/5.7/en/charset-charsets.html)\nand Postgres' [Collation Support](https://www.postgresql.org/docs/9.6/static/collation.html)\nfor more details and supported values. Postgres databases only support\na value of 'en_US.UTF8' at creation time.", - "description_kind": "plain", - "optional": true, - "computed": true - }, - "deletion_policy": { - "type": "string", - "description": "The deletion policy for the database. Setting ABANDON allows the resource\nto be abandoned rather than deleted. This is useful for Postgres, where databases cannot be\ndeleted from the API if there are users other than cloudsqlsuperuser with access. Possible\nvalues are: \"ABANDON\", \"DELETE\". Defaults to \"DELETE\".", - "description_kind": "plain", - "optional": true - }, - "id": { - "type": "string", - "description_kind": "plain", - "optional": true, - "computed": true - }, - "instance": { - "type": "string", - "description": "The name of the Cloud SQL instance. This does not include the project\nID.", - "description_kind": "plain", - "required": true - }, - "name": { - "type": "string", - "description": "The name of the database in the Cloud SQL instance.\nThis does not include the project ID or instance name.", - "description_kind": "plain", - "required": true - }, - "project": { - "type": "string", - "description_kind": "plain", - "optional": true, - "computed": true - }, - "self_link": { - "type": "string", - "description_kind": "plain", - "computed": true - } - }, - "block_types": { - "timeouts": { - "nesting_mode": "single", - "block": { - "attributes": { - "create": { - "type": "string", - "description_kind": "plain", - "optional": true - }, - "delete": { - "type": "string", - "description_kind": "plain", - "optional": true - }, - "update": { - "type": "string", - "description_kind": "plain", - "optional": true - } - }, - "description_kind": "plain" - } - } - }, - "description_kind": "plain" - } - }, - "google_oracledatabase_cloud_vm_cluster": { - "version": 0, - "block": { - "attributes": { - "charset": { - "type": "string", - "description": "The charset value. See MySQL's\n[Supported Character Sets and Collations](https://dev.mysql.com/doc/refman/5.7/en/charset-charsets.html)\nand Postgres' [Character Set Support](https://www.postgresql.org/docs/9.6/static/multibyte.html)\nfor more details and supported values. Postgres databases only support\na value of 'UTF8' at creation time.", - "description_kind": "plain", - "optional": true, - "computed": true - }, - "collation": { - "type": "string", - "description": "The collation value. See MySQL's\n[Supported Character Sets and Collations](https://dev.mysql.com/doc/refman/5.7/en/charset-charsets.html)\nand Postgres' [Collation Support](https://www.postgresql.org/docs/9.6/static/collation.html)\nfor more details and supported values. Postgres databases only support\na value of 'en_US.UTF8' at creation time.", - "description_kind": "plain", - "optional": true, - "computed": true - }, - "deletion_policy": { - "type": "string", - "description": "The deletion policy for the database. Setting ABANDON allows the resource\nto be abandoned rather than deleted. This is useful for Postgres, where databases cannot be\ndeleted from the API if there are users other than cloudsqlsuperuser with access. Possible\nvalues are: \"ABANDON\", \"DELETE\". Defaults to \"DELETE\".", - "description_kind": "plain", - "optional": true - }, - "id": { - "type": "string", - "description_kind": "plain", - "optional": true, - "computed": true - }, - "instance": { - "type": "string", - "description": "The name of the Cloud SQL instance. This does not include the project\nID.", - "description_kind": "plain", - "required": true - }, - "name": { - "type": "string", - "description": "The name of the database in the Cloud SQL instance.\nThis does not include the project ID or instance name.", - "description_kind": "plain", - "required": true - }, - "project": { - "type": "string", - "description_kind": "plain", - "optional": true, - "computed": true - }, - "self_link": { - "type": "string", - "description_kind": "plain", - "computed": true - } - }, - "block_types": { - "timeouts": { - "nesting_mode": "single", - "block": { - "attributes": { - "create": { - "type": "string", - "description_kind": "plain", - "optional": true - }, - "delete": { - "type": "string", - "description_kind": "plain", - "optional": true - }, - "update": { - "type": "string", - "description_kind": "plain", - "optional": true - } - }, - "description_kind": "plain" - } - } - }, - "description_kind": "plain" - } - }, "google_access_context_manager_access_level": { "version": 0, "block": { @@ -2186,7 +1955,7 @@ "description_kind": "plain" } }, - "google_access_context_manager_google_user_access_binding": { + "google_access_context_manager_gcp_user_access_binding": { "version": 0, "block": { "attributes": { @@ -2213,7 +1982,7 @@ }, "name": { "type": "string", - "description": "Immutable. Assigned by the server during creation. The last segment has an arbitrary length and has only URI unreserved characters (as defined by RFC 3986 Section 2.3). Should not be specified by the client during creation. Example: \"organizations/256/googleUserAccessBindings/b3-BhcX_Ud5N\"", + "description": "Immutable. Assigned by the server during creation. The last segment has an arbitrary length and has only URI unreserved characters (as defined by RFC 3986 Section 2.3). Should not be specified by the client during creation. Example: \"organizations/256/gcpUserAccessBindings/b3-BhcX_Ud5N\"", "description_kind": "plain", "computed": true }, @@ -5611,6 +5380,15 @@ "description_kind": "plain", "computed": true }, + "outbound_public_ip_addresses": { + "type": [ + "list", + "string" + ], + "description": "The outbound public IP addresses for the instance. This is available ONLY when\nnetworkConfig.enableOutboundPublicIp is set to true. These IP addresses are used\nfor outbound connections.", + "description_kind": "plain", + "computed": true + }, "public_ip_address": { "type": "string", "description": "The public IP addresses for the Instance. This is available ONLY when\nnetworkConfig.enablePublicIp is set to true. This is the connection\nendpoint for an end-user application.", @@ -5708,6 +5486,12 @@ "nesting_mode": "list", "block": { "attributes": { + "enable_outbound_public_ip": { + "type": "bool", + "description": "Enabling outbound public ip for the instance.", + "description_kind": "plain", + "optional": true + }, "enable_public_ip": { "type": "bool", "description": "Enabling public ip for the instance. If a user wishes to disable this,\nplease also clear the list of the authorized external networks set on\nthe same instance.", @@ -6932,6 +6716,11 @@ "type": "string", "description_kind": "plain", "optional": true + }, + "update": { + "type": "string", + "description_kind": "plain", + "optional": true } }, "description_kind": "plain" @@ -7494,6 +7283,12 @@ "version": 0, "block": { "attributes": { + "activate": { + "type": "bool", + "description": "Flag that specifies whether the reserved NAT address should be activate.", + "description_kind": "plain", + "optional": true + }, "id": { "type": "string", "description_kind": "plain", @@ -7539,6 +7334,11 @@ "type": "string", "description_kind": "plain", "optional": true + }, + "update": { + "type": "string", + "description_kind": "plain", + "optional": true } }, "description_kind": "plain" @@ -10542,7 +10342,7 @@ [ "object", { - "google_project": "string", + "gcp_project": "string", "location": "string", "zone": "string" } @@ -10882,7 +10682,7 @@ [ "object", { - "google_project": "string", + "gcp_project": "string", "location": "string", "zone": "string" } @@ -11806,7 +11606,7 @@ }, "compliance_regime": { "type": "string", - "description": "Required. Immutable. Compliance Regime associated with this workload. Possible values: COMPLIANCE_REGIME_UNSPECIFIED, IL4, CJIS, FEDRAMP_HIGH, FEDRAMP_MODERATE, US_REGIONAL_ACCESS, HIPAA, HITRUST, EU_REGIONS_AND_SUPPORT, CA_REGIONS_AND_SUPPORT, ITAR, AU_REGIONS_AND_US_SUPPORT, ASSURED_WORKLOADS_FOR_PARTNERS, ISR_REGIONS, ISR_REGIONS_AND_SUPPORT, CA_PROTECTED_B, IL5, IL2, JP_REGIONS_AND_SUPPORT, KSA_REGIONS_AND_SUPPORT_WITH_SOVEREIGNTY_CONTROLS, REGIONAL_CONTROLS", + "description": "Required. Immutable. Compliance Regime associated with this workload. Possible values: COMPLIANCE_REGIME_UNSPECIFIED, IL4, CJIS, FEDRAMP_HIGH, FEDRAMP_MODERATE, US_REGIONAL_ACCESS, HIPAA, HITRUST, EU_REGIONS_AND_SUPPORT, CA_REGIONS_AND_SUPPORT, ITAR, AU_REGIONS_AND_US_SUPPORT, ASSURED_WORKLOADS_FOR_PARTNERS, ISR_REGIONS, ISR_REGIONS_AND_SUPPORT, CA_PROTECTED_B, IL5, IL2, JP_REGIONS_AND_SUPPORT, KSA_REGIONS_AND_SUPPORT_WITH_SOVEREIGNTY_CONTROLS, REGIONAL_CONTROLS, HEALTHCARE_AND_LIFE_SCIENCES_CONTROLS, HEALTHCARE_AND_LIFE_SCIENCES_CONTROLS_WITH_US_SUPPORT", "description_kind": "plain", "required": true }, @@ -16941,6 +16741,40 @@ } }, "block_types": { + "biglake_configuration": { + "nesting_mode": "list", + "block": { + "attributes": { + "connection_id": { + "type": "string", + "description": "The connection specifying the credentials to be used to read and write to external storage, such as Cloud Storage. The connection_id can have the form \"\u0026lt;project\\_id\u0026gt;.\u0026lt;location\\_id\u0026gt;.\u0026lt;connection\\_id\u0026gt;\" or \"projects/\u0026lt;project\\_id\u0026gt;/locations/\u0026lt;location\\_id\u0026gt;/connections/\u0026lt;connection\\_id\u0026gt;\".", + "description_kind": "plain", + "required": true + }, + "file_format": { + "type": "string", + "description": "The file format the data is stored in.", + "description_kind": "plain", + "required": true + }, + "storage_uri": { + "type": "string", + "description": "The fully qualified location prefix of the external folder where table data is stored. The '*' wildcard character is not allowed. The URI should be in the format \"gs://bucket/path_to_table/\"", + "description_kind": "plain", + "required": true + }, + "table_format": { + "type": "string", + "description": "The table format the metadata only snapshots are stored in.", + "description_kind": "plain", + "required": true + } + }, + "description": "Specifies the configuration of a BigLake managed table.", + "description_kind": "plain" + }, + "max_items": 1 + }, "encryption_configuration": { "nesting_mode": "list", "block": { @@ -18170,7 +18004,7 @@ "attributes": { "deletion_protection": { "type": "bool", - "description": " When the field is set to true or unset in Terraform state, a terraform apply or terraform destroy that would delete the instance will fail. When the field is set to false, deleting the instance is allowed.", + "description": "When the field is set to true or unset in Terraform state, a terraform apply or terraform destroy that would delete the instance will fail. When the field is set to false, deleting the instance is allowed.", "description_kind": "plain", "optional": true }, @@ -24372,6 +24206,12 @@ "optional": true, "computed": true }, + "invoker_iam_disabled": { + "type": "bool", + "description": "Disables IAM permission check for run.routes.invoke for callers of this service. This feature is available by invitation only. For more information, visit https://cloud.google.com/run/docs/securing/managing-access#invoker_check.", + "description_kind": "plain", + "optional": true + }, "labels": { "type": [ "map", @@ -24532,6 +24372,22 @@ }, "max_items": 1 }, + "scaling": { + "nesting_mode": "list", + "block": { + "attributes": { + "min_instance_count": { + "type": "number", + "description": "Minimum number of instances for the service, to be divided among all revisions receiving traffic.", + "description_kind": "plain", + "optional": true + } + }, + "description": "Scaling settings that apply to the whole service", + "description_kind": "plain" + }, + "max_items": 1 + }, "template": { "nesting_mode": "list", "block": { @@ -24866,7 +24722,7 @@ "map", "string" ], - "description": "Only memory and CPU are supported. Use key 'cpu' for CPU limit and 'memory' for memory limit. Note: The only supported values for CPU are '1', '2', '4', and '8'. Setting 4 CPU requires at least 2Gi of memory. The values of the map is string form of the 'quantity' k8s type: https://github.com/kubernetes/kubernetes/blob/master/staging/src/k8s.io/apimachinery/pkg/api/resource/quantity.go", + "description": "Only memory, CPU, and nvidia.com/gpu are supported. Use key 'cpu' for CPU limit, 'memory' for memory limit, 'nvidia.com/gpu' for gpu limit. Note: The only supported values for CPU are '1', '2', '4', and '8'. Setting 4 CPU requires at least 2Gi of memory. The values of the map is string form of the 'quantity' k8s type: https://github.com/kubernetes/kubernetes/blob/master/staging/src/k8s.io/apimachinery/pkg/api/resource/quantity.go", "description_kind": "plain", "optional": true, "computed": true @@ -33102,7 +32958,7 @@ "map", "string" ], - "description": "Custom Python Package Index (PyPI) packages to be installed in the environment. Keys refer to the lowercase package name (e.g. \"numpy\"). Values are the lowercase extras and version specifier (e.g. \"==1.12.0\", \"[devel,google_api]\", \"[devel]\u003e=1.8.2, \u003c1.9.2\"). To specify a package without pinning it to a version specifier, use the empty string as the value.", + "description": "Custom Python Package Index (PyPI) packages to be installed in the environment. Keys refer to the lowercase package name (e.g. \"numpy\"). Values are the lowercase extras and version specifier (e.g. \"==1.12.0\", \"[devel,gcp_api]\", \"[devel]\u003e=1.8.2, \u003c1.9.2\"). To specify a package without pinning it to a version specifier, use the empty string as the value.", "description_kind": "plain", "optional": true }, @@ -33121,6 +32977,24 @@ "computed": true } }, + "block_types": { + "cloud_data_lineage_integration": { + "nesting_mode": "list", + "block": { + "attributes": { + "enabled": { + "type": "bool", + "description": "Whether or not Cloud Data Lineage integration is enabled.", + "description_kind": "plain", + "required": true + } + }, + "description": "The configuration for Cloud Data Lineage integration. Supported for Cloud Composer environments in versions composer-2.1.2-airflow-*.*.* and newer", + "description_kind": "plain" + }, + "max_items": 1 + } + }, "description": "The configuration settings for software inside the environment.", "description_kind": "plain" }, @@ -33579,6 +33453,12 @@ "description_kind": "plain", "required": true }, + "interface": { + "type": "string", + "description": "The disk interface used for attaching this disk. One of SCSI or NVME. (This field is only used for specific cases, please don't specify this field without advice from Google.)", + "description_kind": "plain", + "optional": true + }, "mode": { "type": "string", "description": "The mode in which to attach this disk, either READ_WRITE or READ_ONLY. If not specified, the default is to attach the disk in READ_WRITE mode.", @@ -34278,6 +34158,12 @@ "optional": true, "computed": true }, + "ip_address_selection_policy": { + "type": "string", + "description": "Specifies preference of traffic to the backend (from the proxy and from the client for proxyless gRPC). Possible values: [\"IPV4_ONLY\", \"PREFER_IPV6\", \"IPV6_ONLY\"]", + "description_kind": "plain", + "optional": true + }, "load_balancing_scheme": { "type": "string", "description": "Indicates whether the backend service will be used with internal or\nexternal load balancing. A backend service created for one type of\nload balancing cannot be used with the other. For more information, refer to\n[Choosing a load balancer](https://cloud.google.com/load-balancing/docs/backend-service). Default value: \"EXTERNAL\" Possible values: [\"EXTERNAL\", \"INTERNAL_SELF_MANAGED\", \"INTERNAL_MANAGED\", \"EXTERNAL_MANAGED\"]", @@ -34286,7 +34172,7 @@ }, "locality_lb_policy": { "type": "string", - "description": "The load balancing algorithm used within the scope of the locality.\nThe possible values are:\n\n* 'ROUND_ROBIN': This is a simple policy in which each healthy backend\n is selected in round robin order.\n\n* 'LEAST_REQUEST': An O(1) algorithm which selects two random healthy\n hosts and picks the host which has fewer active requests.\n\n* 'RING_HASH': The ring/modulo hash load balancer implements consistent\n hashing to backends. The algorithm has the property that the\n addition/removal of a host from a set of N hosts only affects\n 1/N of the requests.\n\n* 'RANDOM': The load balancer selects a random healthy host.\n\n* 'ORIGINAL_DESTINATION': Backend host is selected based on the client\n connection metadata, i.e., connections are opened\n to the same address as the destination address of\n the incoming connection before the connection\n was redirected to the load balancer.\n\n* 'MAGLEV': used as a drop in replacement for the ring hash load balancer.\n Maglev is not as stable as ring hash but has faster table lookup\n build times and host selection times. For more information about\n Maglev, refer to https://ai.google/research/pubs/pub44824\n\n* 'WEIGHTED_MAGLEV': Per-instance weighted Load Balancing via health check\n reported weights. If set, the Backend Service must\n configure a non legacy HTTP-based Health Check, and\n health check replies are expected to contain\n non-standard HTTP response header field\n X-Load-Balancing-Endpoint-Weight to specify the\n per-instance weights. If set, Load Balancing is weight\n based on the per-instance weights reported in the last\n processed health check replies, as long as every\n instance either reported a valid weight or had\n UNAVAILABLE_WEIGHT. Otherwise, Load Balancing remains\n equal-weight.\n\nThis field is applicable to either:\n\n* A regional backend service with the service_protocol set to HTTP, HTTPS, or HTTP2,\n and loadBalancingScheme set to INTERNAL_MANAGED.\n* A global backend service with the load_balancing_scheme set to INTERNAL_SELF_MANAGED.\n* A regional backend service with loadBalancingScheme set to EXTERNAL (External Network\n Load Balancing). Only MAGLEV and WEIGHTED_MAGLEV values are possible for External\n Network Load Balancing. The default is MAGLEV.\n\nIf session_affinity is not NONE, and this field is not set to MAGLEV, WEIGHTED_MAGLEV,\nor RING_HASH, session affinity settings will not take effect.\n\nOnly ROUND_ROBIN and RING_HASH are supported when the backend service is referenced\nby a URL map that is bound to target gRPC proxy that has validate_for_proxyless\nfield set to true. Possible values: [\"ROUND_ROBIN\", \"LEAST_REQUEST\", \"RING_HASH\", \"RANDOM\", \"ORIGINAL_DESTINATION\", \"MAGLEV\", \"WEIGHTED_MAGLEV\"]", + "description": "The load balancing algorithm used within the scope of the locality.\nThe possible values are:\n\n* 'ROUND_ROBIN': This is a simple policy in which each healthy backend\n is selected in round robin order.\n\n* 'LEAST_REQUEST': An O(1) algorithm which selects two random healthy\n hosts and picks the host which has fewer active requests.\n\n* 'RING_HASH': The ring/modulo hash load balancer implements consistent\n hashing to backends. The algorithm has the property that the\n addition/removal of a host from a set of N hosts only affects\n 1/N of the requests.\n\n* 'RANDOM': The load balancer selects a random healthy host.\n\n* 'ORIGINAL_DESTINATION': Backend host is selected based on the client\n connection metadata, i.e., connections are opened\n to the same address as the destination address of\n the incoming connection before the connection\n was redirected to the load balancer.\n\n* 'MAGLEV': used as a drop in replacement for the ring hash load balancer.\n Maglev is not as stable as ring hash but has faster table lookup\n build times and host selection times. For more information about\n Maglev, refer to https://ai.google/research/pubs/pub44824\n\n* 'WEIGHTED_MAGLEV': Per-instance weighted Load Balancing via health check\n reported weights. Only applicable to loadBalancingScheme\n EXTERNAL. If set, the Backend Service must\n configure a non legacy HTTP-based Health Check, and\n health check replies are expected to contain\n non-standard HTTP response header field\n X-Load-Balancing-Endpoint-Weight to specify the\n per-instance weights. If set, Load Balancing is weight\n based on the per-instance weights reported in the last\n processed health check replies, as long as every\n instance either reported a valid weight or had\n UNAVAILABLE_WEIGHT. Otherwise, Load Balancing remains\n equal-weight.\n\nlocality_lb_policy is applicable to either:\n\n* A regional backend service with the service_protocol set to HTTP, HTTPS, or HTTP2,\n and loadBalancingScheme set to INTERNAL_MANAGED.\n* A global backend service with the load_balancing_scheme set to INTERNAL_SELF_MANAGED.\n* A regional backend service with loadBalancingScheme set to EXTERNAL (External Network\n Load Balancing). Only MAGLEV and WEIGHTED_MAGLEV values are possible for External\n Network Load Balancing. The default is MAGLEV.\n\nIf session_affinity is not NONE, and locality_lb_policy is not set to MAGLEV, WEIGHTED_MAGLEV,\nor RING_HASH, session affinity settings will not take effect.\n\nOnly ROUND_ROBIN and RING_HASH are supported when the backend service is referenced\nby a URL map that is bound to target gRPC proxy that has validate_for_proxyless\nfield set to true. Possible values: [\"ROUND_ROBIN\", \"LEAST_REQUEST\", \"RING_HASH\", \"RANDOM\", \"ORIGINAL_DESTINATION\", \"MAGLEV\", \"WEIGHTED_MAGLEV\"]", "description_kind": "plain", "optional": true }, @@ -34335,7 +34221,7 @@ }, "session_affinity": { "type": "string", - "description": "Type of session affinity to use. The default is NONE. Session affinity is\nnot applicable if the protocol is UDP. Possible values: [\"NONE\", \"CLIENT_IP\", \"CLIENT_IP_PORT_PROTO\", \"CLIENT_IP_PROTO\", \"GENERATED_COOKIE\", \"HEADER_FIELD\", \"HTTP_COOKIE\"]", + "description": "Type of session affinity to use. The default is NONE. Session affinity is\nnot applicable if the protocol is UDP. Possible values: [\"NONE\", \"CLIENT_IP\", \"CLIENT_IP_PORT_PROTO\", \"CLIENT_IP_PROTO\", \"GENERATED_COOKIE\", \"HEADER_FIELD\", \"HTTP_COOKIE\", \"STRONG_COOKIE_AFFINITY\"]", "description_kind": "plain", "optional": true, "computed": true @@ -34978,6 +34864,52 @@ }, "max_items": 1 }, + "strong_session_affinity_cookie": { + "nesting_mode": "list", + "block": { + "attributes": { + "name": { + "type": "string", + "description": "Name of the cookie.", + "description_kind": "plain", + "optional": true + }, + "path": { + "type": "string", + "description": "Path to set for the cookie.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "ttl": { + "nesting_mode": "list", + "block": { + "attributes": { + "nanos": { + "type": "number", + "description": "Span of time that's a fraction of a second at nanosecond\nresolution. Durations less than one second are represented\nwith a 0 seconds field and a positive nanos field. Must\nbe from 0 to 999,999,999 inclusive.", + "description_kind": "plain", + "optional": true + }, + "seconds": { + "type": "number", + "description": "Span of time at a resolution of a second.\nMust be from 0 to 315,576,000,000 inclusive.", + "description_kind": "plain", + "required": true + } + }, + "description": "Lifetime of the cookie.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "Describes the HTTP cookie used for stateful session affinity. This field is applicable and required if the sessionAffinity is set to STRONG_COOKIE_AFFINITY.", + "description_kind": "plain" + }, + "max_items": 1 + }, "timeouts": { "nesting_mode": "single", "block": { @@ -38472,7 +38404,7 @@ }, "desired_status": { "type": "string", - "description": "Desired status of the instance. Either \"RUNNING\" or \"TERMINATED\".", + "description": "Desired status of the instance. Either \"RUNNING\", \"SUSPENDED\" or \"TERMINATED\".", "description_kind": "plain", "optional": true }, @@ -38803,6 +38735,16 @@ "description_kind": "plain", "optional": true }, + "resource_policies": { + "type": [ + "list", + "string" + ], + "description": "A list of self_links of resource policies to attach to the instance's boot disk. Modifying this list will cause the instance to recreate. Currently a max of 1 resource policy is supported.", + "description_kind": "plain", + "optional": true, + "computed": true + }, "size": { "type": "number", "description": "The size of the image in gigabytes.", @@ -38842,7 +38784,7 @@ "attributes": { "confidential_instance_type": { "type": "string", - "description": "\n\t\t\t\t\t\t\t\tThe confidential computing technology the instance uses.\n\t\t\t\t\t\t\t\tSEV is an AMD feature. TDX is an Intel feature. One of the following\n\t\t\t\t\t\t\t\tvalues is required: SEV, SEV_SNP, TDX. If SEV_SNP, min_cpu_platform =\n\t\t\t\t\t\t\t\t\"AMD Milan\" is currently required. TDX is only available in beta.", + "description": "\n\t\t\t\t\t\t\t\tThe confidential computing technology the instance uses.\n\t\t\t\t\t\t\t\tSEV is an AMD feature. TDX is an Intel feature. One of the following\n\t\t\t\t\t\t\t\tvalues is required: SEV, SEV_SNP, TDX. If SEV_SNP, min_cpu_platform =\n\t\t\t\t\t\t\t\t\"AMD Milan\" is currently required.", "description_kind": "plain", "optional": true }, @@ -39425,7 +39367,7 @@ }, "desired_status": { "type": "string", - "description": "Desired status of the instance. Either \"RUNNING\" or \"TERMINATED\".", + "description": "Desired status of the instance. Either \"RUNNING\", \"SUSPENDED\" or \"TERMINATED\".", "description_kind": "plain", "optional": true, "computed": true @@ -39782,6 +39724,16 @@ "optional": true, "computed": true }, + "resource_policies": { + "type": [ + "list", + "string" + ], + "description": "A list of self_links of resource policies to attach to the instance's boot disk. Modifying this list will cause the instance to recreate. Currently a max of 1 resource policy is supported.", + "description_kind": "plain", + "optional": true, + "computed": true + }, "size": { "type": "number", "description": "The size of the image in gigabytes.", @@ -39821,7 +39773,7 @@ "attributes": { "confidential_instance_type": { "type": "string", - "description": "\n\t\t\t\t\t\t\t\tThe confidential computing technology the instance uses.\n\t\t\t\t\t\t\t\tSEV is an AMD feature. TDX is an Intel feature. One of the following\n\t\t\t\t\t\t\t\tvalues is required: SEV, SEV_SNP, TDX. If SEV_SNP, min_cpu_platform =\n\t\t\t\t\t\t\t\t\"AMD Milan\" is currently required. TDX is only available in beta.", + "description": "\n\t\t\t\t\t\t\t\tThe confidential computing technology the instance uses.\n\t\t\t\t\t\t\t\tSEV is an AMD feature. TDX is an Intel feature. One of the following\n\t\t\t\t\t\t\t\tvalues is required: SEV, SEV_SNP, TDX. If SEV_SNP, min_cpu_platform =\n\t\t\t\t\t\t\t\t\"AMD Milan\" is currently required.", "description_kind": "plain", "optional": true, "computed": true @@ -41522,7 +41474,7 @@ "attributes": { "confidential_instance_type": { "type": "string", - "description": "\n\t\t\t\t\t\t\t\tThe confidential computing technology the instance uses.\n\t\t\t\t\t\t\t\tSEV is an AMD feature. TDX is an Intel feature. One of the following\n\t\t\t\t\t\t\t\tvalues is required: SEV, SEV_SNP, TDX. If SEV_SNP, min_cpu_platform =\n\t\t\t\t\t\t\t\t\"AMD Milan\" is currently required. TDX is only available in beta.", + "description": "\n\t\t\t\t\t\t\t\tThe confidential computing technology the instance uses.\n\t\t\t\t\t\t\t\tSEV is an AMD feature. TDX is an Intel feature. One of the following\n\t\t\t\t\t\t\t\tvalues is required: SEV, SEV_SNP, TDX. If SEV_SNP, min_cpu_platform =\n\t\t\t\t\t\t\t\t\"AMD Milan\" is currently required.", "description_kind": "plain", "optional": true }, @@ -41607,7 +41559,14 @@ }, "provisioned_iops": { "type": "number", - "description": "Indicates how many IOPS to provision for the disk. This sets the number of I/O operations per second that the disk can handle. Values must be between 10,000 and 120,000. For more details, see the [Extreme persistent disk documentation](https://cloud.google.com/compute/docs/disks/extreme-persistent-disk).", + "description": "Indicates how many IOPS to provision for the disk. This sets the number of I/O operations per second that the disk can handle. For more details, see the [Extreme persistent disk documentation](https://cloud.google.com/compute/docs/disks/extreme-persistent-disk) or the [Hyperdisk documentation](https://cloud.google.com/compute/docs/disks/hyperdisks) depending on the selected disk_type.", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "provisioned_throughput": { + "type": "number", + "description": "Indicates how much throughput to provision for the disk, in MB/s. This sets the amount of data that can be read or written from the disk per second. Values must greater than or equal to 1. For more details, see the [Hyperdisk documentation](https://cloud.google.com/compute/docs/disks/hyperdisks).", "description_kind": "plain", "optional": true, "computed": true @@ -42231,9 +42190,9 @@ }, "customer_name": { "type": "string", - "description": "Customer name, to put in the Letter of Authorization as the party authorized to request a\ncrossconnect.", + "description": "Customer name, to put in the Letter of Authorization as the party authorized to request a\ncrossconnect. This field is required for Dedicated and Partner Interconnect, should not be specified\nfor cross-cloud interconnect.", "description_kind": "plain", - "required": true + "optional": true }, "description": { "type": "string", @@ -42330,9 +42289,9 @@ }, "location": { "type": "string", - "description": "URL of the InterconnectLocation object that represents where this connection is to be provisioned.", + "description": "URL of the InterconnectLocation object that represents where this connection is to be provisioned.\nSpecifies the location inside Google's Networks, should not be passed in case of cross-cloud interconnect.", "description_kind": "plain", - "required": true + "optional": true }, "macsec_enabled": { "type": "bool", @@ -42423,6 +42382,14 @@ "macsec": { "nesting_mode": "list", "block": { + "attributes": { + "fail_open": { + "type": "bool", + "description": "If set to true, the Interconnect connection is configured with a should-secure\nMACsec security policy, that allows the Google router to fallback to cleartext\ntraffic if the MKA session cannot be established. By default, the Interconnect\nconnection is configured with a must-secure security policy that drops all traffic\nif the MKA session cannot be established with your router.", + "description_kind": "plain", + "optional": true + } + }, "block_types": { "pre_shared_keys": { "nesting_mode": "list", @@ -42432,6 +42399,7 @@ "type": "bool", "description": "If set to true, the Interconnect connection is configured with a should-secure\nMACsec security policy, that allows the Google router to fallback to cleartext\ntraffic if the MKA session cannot be established. By default, the Interconnect\nconnection is configured with a must-secure security policy that drops all traffic\nif the MKA session cannot be established with your router.", "description_kind": "plain", + "deprecated": true, "optional": true }, "name": { @@ -43504,6 +43472,12 @@ "description_kind": "plain", "required": true }, + "creation_timestamp": { + "type": "string", + "description": "Creation timestamp in RFC3339 text format.", + "description_kind": "plain", + "computed": true + }, "description": { "type": "string", "description": "An optional description for this resource.", @@ -43512,19 +43486,19 @@ }, "direction": { "type": "string", - "description": "The direction in which this rule applies. Possible values: INGRESS, EGRESS", + "description": "The direction in which this rule applies. Possible values: [\"INGRESS\", \"EGRESS\"]", "description_kind": "plain", "required": true }, "disabled": { "type": "bool", - "description": "Denotes whether the firewall policy rule is disabled. When set to true, the firewall policy rule is not enforced and traffic behaves as if it did not exist. If this is unspecified, the firewall policy rule will be enabled.", + "description": "Denotes whether the firewall policy rule is disabled.\nWhen set to true, the firewall policy rule is not enforced and traffic behaves as if it did not exist.\nIf this is unspecified, the firewall policy rule will be enabled.", "description_kind": "plain", "optional": true }, "enable_logging": { "type": "bool", - "description": "Denotes whether to enable logging for a particular rule. If logging is enabled, logs will be exported to the configured export destination in Stackdriver. Logs may be exported to BigQuery or Pub/Sub. Note: you cannot enable logging on \"goto_next\" rules.", + "description": "Denotes whether to enable logging for a particular rule.\nIf logging is enabled, logs will be exported to the configured export destination in Stackdriver.\nLogs may be exported to BigQuery or Pub/Sub.\nNote: you cannot enable logging on \"goto_next\" rules.", "description_kind": "plain", "optional": true }, @@ -43542,19 +43516,18 @@ }, "kind": { "type": "string", - "description": "Type of the resource. Always `compute#firewallPolicyRule` for firewall policy rules", + "description": "Type of the resource. Always 'compute#firewallPolicyRule' for firewall policy rules", "description_kind": "plain", "computed": true }, "priority": { "type": "number", - "description": "An integer indicating the priority of a rule in the list. The priority must be a positive value between 0 and 2147483647. Rules are evaluated from highest to lowest priority where 0 is the highest priority and 2147483647 is the lowest prority.", + "description": "An integer indicating the priority of a rule in the list.\nThe priority must be a positive value between 0 and 2147483647.\nRules are evaluated from highest to lowest priority where 0 is the highest priority and 2147483647 is the lowest prority.", "description_kind": "plain", "required": true }, "project": { "type": "string", - "description": "The project for the resource", "description_kind": "plain", "optional": true, "computed": true @@ -43573,7 +43546,7 @@ }, "security_profile_group": { "type": "string", - "description": "A fully-qualified URL of a SecurityProfileGroup resource. Example: https://networksecurity.googleapis.com/v1/organizations/{organizationId}/locations/global/securityProfileGroups/my-security-profile-group. It must be specified if action = 'apply_security_profile_group' and cannot be specified for other actions.", + "description": "A fully-qualified URL of a SecurityProfile resource instance.\nExample: https://networksecurity.googleapis.com/v1/projects/{project}/locations/{location}/securityProfileGroups/my-security-profile-group\nMust be specified if action = 'apply_security_profile_group' and cannot be specified for other actions.", "description_kind": "plain", "optional": true }, @@ -43588,7 +43561,7 @@ }, "tls_inspect": { "type": "bool", - "description": "Boolean flag indicating if the traffic should be TLS decrypted. It can be set only if action = 'apply_security_profile_group' and cannot be set for other actions.", + "description": "Boolean flag indicating if the traffic should be TLS decrypted.\nCan be set only if action = 'apply_security_profile_group' and cannot be set for other actions.", "description_kind": "plain", "optional": true } @@ -43603,7 +43576,7 @@ "list", "string" ], - "description": "Address groups which should be matched against the traffic destination. Maximum number of destination address groups is 10. Destination address groups is only supported in Egress rules.", + "description": "Address groups which should be matched against the traffic destination. Maximum number of destination address groups is 10.", "description_kind": "plain", "optional": true }, @@ -43612,7 +43585,7 @@ "list", "string" ], - "description": "Domain names that will be used to match against the resolved domain name of destination of traffic. Can only be specified if DIRECTION is egress.", + "description": "Fully Qualified Domain Name (FQDN) which should be matched against traffic destination. Maximum number of destination fqdn allowed is 100.", "description_kind": "plain", "optional": true }, @@ -43630,7 +43603,7 @@ "list", "string" ], - "description": "The Unicode country codes whose IP addresses will be used to match against the source of traffic. Can only be specified if DIRECTION is egress.", + "description": "Region codes whose IP addresses will be used to match for destination of traffic. Should be specified as 2 letter country code defined as per ISO 3166 alpha-2 country codes. ex.\"US\" Maximum number of dest region codes allowed is 5000.", "description_kind": "plain", "optional": true }, @@ -43639,7 +43612,7 @@ "list", "string" ], - "description": "Name of the Google Cloud Threat Intelligence list.", + "description": "Names of Network Threat Intelligence lists. The IPs in these lists will be matched against traffic destination.", "description_kind": "plain", "optional": true }, @@ -43648,7 +43621,7 @@ "list", "string" ], - "description": "Address groups which should be matched against the traffic source. Maximum number of source address groups is 10. Source address groups is only supported in Ingress rules.", + "description": "Address groups which should be matched against the traffic source. Maximum number of source address groups is 10.", "description_kind": "plain", "optional": true }, @@ -43657,7 +43630,7 @@ "list", "string" ], - "description": "Domain names that will be used to match against the resolved domain name of source of traffic. Can only be specified if DIRECTION is ingress.", + "description": "Fully Qualified Domain Name (FQDN) which should be matched against traffic source. Maximum number of source fqdn allowed is 100.", "description_kind": "plain", "optional": true }, @@ -43675,7 +43648,7 @@ "list", "string" ], - "description": "The Unicode country codes whose IP addresses will be used to match against the source of traffic. Can only be specified if DIRECTION is ingress.", + "description": "Region codes whose IP addresses will be used to match for source of traffic. Should be specified as 2 letter country code defined as per ISO 3166 alpha-2 country codes. ex.\"US\" Maximum number of source region codes allowed is 5000.", "description_kind": "plain", "optional": true }, @@ -43684,7 +43657,7 @@ "list", "string" ], - "description": "Name of the Google Cloud Threat Intelligence list.", + "description": "Names of Network Threat Intelligence lists. The IPs in these lists will be matched against traffic source.", "description_kind": "plain", "optional": true } @@ -43696,7 +43669,7 @@ "attributes": { "ip_protocol": { "type": "string", - "description": "The IP protocol to which this rule applies. The protocol type is required when creating a firewall rule. This value can either be one of the following well known protocol strings (`tcp`, `udp`, `icmp`, `esp`, `ah`, `ipip`, `sctp`), or the IP protocol number.", + "description": "The IP protocol to which this rule applies. The protocol type is required when creating a firewall rule.\nThis value can either be one of the following well known protocol strings (tcp, udp, icmp, esp, ah, ipip, sctp), or the IP protocol number.", "description_kind": "plain", "required": true }, @@ -43705,7 +43678,7 @@ "list", "string" ], - "description": "An optional list of ports to which this rule applies. This field is only applicable for UDP or TCP protocol. Each entry must be either an integer or a range. If not specified, this rule applies to connections through any port. Example inputs include: ``.", + "description": "An optional list of ports to which this rule applies. This field is only applicable for UDP or TCP protocol. Each entry must be either an integer or a range. If not specified, this rule applies to connections through any port.\nExample inputs include: [\"22\"], [\"80\",\"443\"], and [\"12345-12349\"].", "description_kind": "plain", "optional": true } @@ -43721,18 +43694,18 @@ "attributes": { "name": { "type": "string", - "description": "Name of the secure tag, created with TagManager's TagValue API. @pattern tagValues/[0-9]+", + "description": "Name of the secure tag, created with TagManager's TagValue API.", "description_kind": "plain", - "required": true + "optional": true }, "state": { "type": "string", - "description": "[Output Only] State of the secure tag, either `EFFECTIVE` or `INEFFECTIVE`. A secure tag is `INEFFECTIVE` when it is deleted or its network is deleted.", + "description": "State of the secure tag, either EFFECTIVE or INEFFECTIVE. A secure tag is INEFFECTIVE when it is deleted or its network is deleted.", "description_kind": "plain", "computed": true } }, - "description": "List of secure tag values, which should be matched at the source of the traffic. For INGRESS rule, if all the \u003ccode\u003esrcSecureTag\u003c/code\u003e are INEFFECTIVE, and there is no \u003ccode\u003esrcIpRange\u003c/code\u003e, this rule will be ignored. Maximum number of source tag values allowed is 256.", + "description": "List of secure tag values, which should be matched at the source of the traffic. For INGRESS rule, if all the srcSecureTag are INEFFECTIVE, and there is no srcIpRange, this rule will be ignored. Maximum number of source tag values allowed is 256.", "description_kind": "plain" } } @@ -43749,18 +43722,18 @@ "attributes": { "name": { "type": "string", - "description": "Name of the secure tag, created with TagManager's TagValue API. @pattern tagValues/[0-9]+", + "description": "Name of the secure tag, created with TagManager's TagValue API.", "description_kind": "plain", - "required": true + "optional": true }, "state": { "type": "string", - "description": "[Output Only] State of the secure tag, either `EFFECTIVE` or `INEFFECTIVE`. A secure tag is `INEFFECTIVE` when it is deleted or its network is deleted.", + "description": "State of the secure tag, either EFFECTIVE or INEFFECTIVE. A secure tag is INEFFECTIVE when it is deleted or its network is deleted.", "description_kind": "plain", "computed": true } }, - "description": "A list of secure tags that controls which instances the firewall rule applies to. If \u003ccode\u003etargetSecureTag\u003c/code\u003e are specified, then the firewall rule applies only to instances in the VPC network that have one of those EFFECTIVE secure tags, if all the target_secure_tag are in INEFFECTIVE state, then this rule will be ignored. \u003ccode\u003etargetSecureTag\u003c/code\u003e may not be set at the same time as \u003ccode\u003etargetServiceAccounts\u003c/code\u003e. If neither \u003ccode\u003etargetServiceAccounts\u003c/code\u003e nor \u003ccode\u003etargetSecureTag\u003c/code\u003e are specified, the firewall rule applies to all instances on the specified network. Maximum number of target label tags allowed is 256.", + "description": "A list of secure tags that controls which instances the firewall rule applies to.\nIf targetSecureTag are specified, then the firewall rule applies only to instances in the VPC network that have one of those EFFECTIVE secure tags, if all the targetSecureTag are in INEFFECTIVE state, then this rule will be ignored.\ntargetSecureTag may not be set at the same time as targetServiceAccounts. If neither targetServiceAccounts nor targetSecureTag are specified, the firewall rule applies to all instances on the specified network. Maximum number of target label tags allowed is 256.", "description_kind": "plain" } }, @@ -45409,6 +45382,12 @@ "optional": true, "computed": true }, + "ip_address_selection_policy": { + "type": "string", + "description": "Specifies preference of traffic to the backend (from the proxy and from the client for proxyless gRPC). Possible values: [\"IPV4_ONLY\", \"PREFER_IPV6\", \"IPV6_ONLY\"]", + "description_kind": "plain", + "optional": true + }, "load_balancing_scheme": { "type": "string", "description": "Indicates what kind of load balancing this regional backend service\nwill be used for. A backend service created for one type of load\nbalancing cannot be used with the other(s). For more information, refer to\n[Choosing a load balancer](https://cloud.google.com/load-balancing/docs/backend-service). Default value: \"INTERNAL\" Possible values: [\"EXTERNAL\", \"EXTERNAL_MANAGED\", \"INTERNAL\", \"INTERNAL_MANAGED\"]", @@ -45417,7 +45396,7 @@ }, "locality_lb_policy": { "type": "string", - "description": "The load balancing algorithm used within the scope of the locality.\nThe possible values are:\n\n* 'ROUND_ROBIN': This is a simple policy in which each healthy backend\n is selected in round robin order.\n\n* 'LEAST_REQUEST': An O(1) algorithm which selects two random healthy\n hosts and picks the host which has fewer active requests.\n\n* 'RING_HASH': The ring/modulo hash load balancer implements consistent\n hashing to backends. The algorithm has the property that the\n addition/removal of a host from a set of N hosts only affects\n 1/N of the requests.\n\n* 'RANDOM': The load balancer selects a random healthy host.\n\n* 'ORIGINAL_DESTINATION': Backend host is selected based on the client\n connection metadata, i.e., connections are opened\n to the same address as the destination address of\n the incoming connection before the connection\n was redirected to the load balancer.\n\n* 'MAGLEV': used as a drop in replacement for the ring hash load balancer.\n Maglev is not as stable as ring hash but has faster table lookup\n build times and host selection times. For more information about\n Maglev, refer to https://ai.google/research/pubs/pub44824\n\n* 'WEIGHTED_MAGLEV': Per-instance weighted Load Balancing via health check\n reported weights. If set, the Backend Service must\n configure a non legacy HTTP-based Health Check, and\n health check replies are expected to contain\n non-standard HTTP response header field\n X-Load-Balancing-Endpoint-Weight to specify the\n per-instance weights. If set, Load Balancing is weight\n based on the per-instance weights reported in the last\n processed health check replies, as long as every\n instance either reported a valid weight or had\n UNAVAILABLE_WEIGHT. Otherwise, Load Balancing remains\n equal-weight.\n\nThis field is applicable to either:\n\n* A regional backend service with the service_protocol set to HTTP, HTTPS, or HTTP2,\n and loadBalancingScheme set to INTERNAL_MANAGED.\n* A global backend service with the load_balancing_scheme set to INTERNAL_SELF_MANAGED.\n* A regional backend service with loadBalancingScheme set to EXTERNAL (External Network\n Load Balancing). Only MAGLEV and WEIGHTED_MAGLEV values are possible for External\n Network Load Balancing. The default is MAGLEV.\n\nIf session_affinity is not NONE, and this field is not set to MAGLEV, WEIGHTED_MAGLEV,\nor RING_HASH, session affinity settings will not take effect.\n\nOnly ROUND_ROBIN and RING_HASH are supported when the backend service is referenced\nby a URL map that is bound to target gRPC proxy that has validate_for_proxyless\nfield set to true. Possible values: [\"ROUND_ROBIN\", \"LEAST_REQUEST\", \"RING_HASH\", \"RANDOM\", \"ORIGINAL_DESTINATION\", \"MAGLEV\", \"WEIGHTED_MAGLEV\"]", + "description": "The load balancing algorithm used within the scope of the locality.\nThe possible values are:\n\n* 'ROUND_ROBIN': This is a simple policy in which each healthy backend\n is selected in round robin order.\n\n* 'LEAST_REQUEST': An O(1) algorithm which selects two random healthy\n hosts and picks the host which has fewer active requests.\n\n* 'RING_HASH': The ring/modulo hash load balancer implements consistent\n hashing to backends. The algorithm has the property that the\n addition/removal of a host from a set of N hosts only affects\n 1/N of the requests.\n\n* 'RANDOM': The load balancer selects a random healthy host.\n\n* 'ORIGINAL_DESTINATION': Backend host is selected based on the client\n connection metadata, i.e., connections are opened\n to the same address as the destination address of\n the incoming connection before the connection\n was redirected to the load balancer.\n\n* 'MAGLEV': used as a drop in replacement for the ring hash load balancer.\n Maglev is not as stable as ring hash but has faster table lookup\n build times and host selection times. For more information about\n Maglev, refer to https://ai.google/research/pubs/pub44824\n\n* 'WEIGHTED_MAGLEV': Per-instance weighted Load Balancing via health check\n reported weights. Only applicable to loadBalancingScheme\n EXTERNAL. If set, the Backend Service must\n configure a non legacy HTTP-based Health Check, and\n health check replies are expected to contain\n non-standard HTTP response header field\n X-Load-Balancing-Endpoint-Weight to specify the\n per-instance weights. If set, Load Balancing is weight\n based on the per-instance weights reported in the last\n processed health check replies, as long as every\n instance either reported a valid weight or had\n UNAVAILABLE_WEIGHT. Otherwise, Load Balancing remains\n equal-weight.\n\nlocality_lb_policy is applicable to either:\n\n* A regional backend service with the service_protocol set to HTTP, HTTPS, or HTTP2,\n and loadBalancingScheme set to INTERNAL_MANAGED.\n* A global backend service with the load_balancing_scheme set to INTERNAL_SELF_MANAGED.\n* A regional backend service with loadBalancingScheme set to EXTERNAL (External Network\n Load Balancing). Only MAGLEV and WEIGHTED_MAGLEV values are possible for External\n Network Load Balancing. The default is MAGLEV.\n\nIf session_affinity is not NONE, and locality_lb_policy is not set to MAGLEV, WEIGHTED_MAGLEV,\nor RING_HASH, session affinity settings will not take effect.\n\nOnly ROUND_ROBIN and RING_HASH are supported when the backend service is referenced\nby a URL map that is bound to target gRPC proxy that has validate_for_proxyless\nfield set to true. Possible values: [\"ROUND_ROBIN\", \"LEAST_REQUEST\", \"RING_HASH\", \"RANDOM\", \"ORIGINAL_DESTINATION\", \"MAGLEV\", \"WEIGHTED_MAGLEV\"]", "description_kind": "plain", "optional": true }, @@ -45467,7 +45446,7 @@ }, "session_affinity": { "type": "string", - "description": "Type of session affinity to use. The default is NONE. Session affinity is\nnot applicable if the protocol is UDP. Possible values: [\"NONE\", \"CLIENT_IP\", \"CLIENT_IP_PORT_PROTO\", \"CLIENT_IP_PROTO\", \"GENERATED_COOKIE\", \"HEADER_FIELD\", \"HTTP_COOKIE\", \"CLIENT_IP_NO_DESTINATION\"]", + "description": "Type of session affinity to use. The default is NONE. Session affinity is\nnot applicable if the protocol is UDP. Possible values: [\"NONE\", \"CLIENT_IP\", \"CLIENT_IP_PORT_PROTO\", \"CLIENT_IP_PROTO\", \"GENERATED_COOKIE\", \"HEADER_FIELD\", \"HTTP_COOKIE\", \"CLIENT_IP_NO_DESTINATION\", \"STRONG_COOKIE_AFFINITY\"]", "description_kind": "plain", "optional": true, "computed": true @@ -46001,6 +45980,52 @@ }, "max_items": 1 }, + "strong_session_affinity_cookie": { + "nesting_mode": "list", + "block": { + "attributes": { + "name": { + "type": "string", + "description": "Name of the cookie.", + "description_kind": "plain", + "optional": true + }, + "path": { + "type": "string", + "description": "Path to set for the cookie.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "ttl": { + "nesting_mode": "list", + "block": { + "attributes": { + "nanos": { + "type": "number", + "description": "Span of time that's a fraction of a second at nanosecond\nresolution. Durations less than one second are represented\nwith a 0 seconds field and a positive nanos field. Must\nbe from 0 to 999,999,999 inclusive.", + "description_kind": "plain", + "optional": true + }, + "seconds": { + "type": "number", + "description": "Span of time at a resolution of a second.\nMust be from 0 to 315,576,000,000 inclusive.", + "description_kind": "plain", + "required": true + } + }, + "description": "Lifetime of the cookie.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "Describes the HTTP cookie used for stateful session affinity. This field is applicable and required if the sessionAffinity is set to STRONG_COOKIE_AFFINITY.", + "description_kind": "plain" + }, + "max_items": 1 + }, "timeouts": { "nesting_mode": "single", "block": { @@ -46070,6 +46095,13 @@ "description_kind": "plain", "computed": true }, + "existing_reservations": { + "type": "string", + "description": "Specifies the already existing reservations to attach to the Commitment.", + "description_kind": "plain", + "optional": true, + "computed": true + }, "id": { "type": "string", "description_kind": "plain", @@ -47790,7 +47822,7 @@ "attributes": { "confidential_instance_type": { "type": "string", - "description": "\n\t\t\t\t\t\t\t\tSpecifies which confidential computing technology to use.\n\t\t\t\t\t\t\t\tThis could be one of the following values: SEV, SEV_SNP.\n\t\t\t\t\t\t\t\tIf SEV_SNP, min_cpu_platform = \"AMD Milan\" is currently required.", + "description": "\n\t\t\t\t\t\t\t\tThe confidential computing technology the instance uses.\n\t\t\t\t\t\t\t\tSEV is an AMD feature. TDX is an Intel feature. One of the following\n\t\t\t\t\t\t\t\tvalues is required: SEV, SEV_SNP, TDX. If SEV_SNP, min_cpu_platform =\n\t\t\t\t\t\t\t\t\"AMD Milan\" is currently required.", "description_kind": "plain", "optional": true }, @@ -47875,7 +47907,14 @@ }, "provisioned_iops": { "type": "number", - "description": "Indicates how many IOPS to provision for the disk. This sets the number of I/O operations per second that the disk can handle. Values must be between 10,000 and 120,000. For more details, see the [Extreme persistent disk documentation](https://cloud.google.com/compute/docs/disks/extreme-persistent-disk).", + "description": "Indicates how many IOPS to provision for the disk. This sets the number of I/O operations per second that the disk can handle. For more details, see the [Extreme persistent disk documentation](https://cloud.google.com/compute/docs/disks/extreme-persistent-disk) or the [Hyperdisk documentation](https://cloud.google.com/compute/docs/disks/hyperdisks) depending on the selected disk_type.", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "provisioned_throughput": { + "type": "number", + "description": "Indicates how much throughput to provision for the disk, in MB/s. This sets the amount of data that can be read or written from the disk per second. Values must greater than or equal to 1. For more details, see the [Hyperdisk documentation](https://cloud.google.com/compute/docs/disks/hyperdisks).", "description_kind": "plain", "optional": true, "computed": true @@ -48874,6 +48913,12 @@ "description_kind": "plain", "required": true }, + "creation_timestamp": { + "type": "string", + "description": "Creation timestamp in RFC3339 text format.", + "description_kind": "plain", + "computed": true + }, "description": { "type": "string", "description": "An optional description for this resource.", @@ -48882,19 +48927,19 @@ }, "direction": { "type": "string", - "description": "The direction in which this rule applies. Possible values: INGRESS, EGRESS", + "description": "The direction in which this rule applies. Possible values: [\"INGRESS\", \"EGRESS\"]", "description_kind": "plain", "required": true }, "disabled": { "type": "bool", - "description": "Denotes whether the firewall policy rule is disabled. When set to true, the firewall policy rule is not enforced and traffic behaves as if it did not exist. If this is unspecified, the firewall policy rule will be enabled.", + "description": "Denotes whether the firewall policy rule is disabled.\nWhen set to true, the firewall policy rule is not enforced and traffic behaves as if it did not exist.\nIf this is unspecified, the firewall policy rule will be enabled.", "description_kind": "plain", "optional": true }, "enable_logging": { "type": "bool", - "description": "Denotes whether to enable logging for a particular rule. If logging is enabled, logs will be exported to the configured export destination in Stackdriver. Logs may be exported to BigQuery or Pub/Sub. Note: you cannot enable logging on \"goto_next\" rules.", + "description": "Denotes whether to enable logging for a particular rule.\nIf logging is enabled, logs will be exported to the configured export destination in Stackdriver.\nLogs may be exported to BigQuery or Pub/Sub.\nNote: you cannot enable logging on \"goto_next\" rules.", "description_kind": "plain", "optional": true }, @@ -48912,19 +48957,18 @@ }, "kind": { "type": "string", - "description": "Type of the resource. Always `compute#firewallPolicyRule` for firewall policy rules", + "description": "Type of the resource. Always 'compute#firewallPolicyRule' for firewall policy rules", "description_kind": "plain", "computed": true }, "priority": { "type": "number", - "description": "An integer indicating the priority of a rule in the list. The priority must be a positive value between 0 and 2147483647. Rules are evaluated from highest to lowest priority where 0 is the highest priority and 2147483647 is the lowest prority.", + "description": "An integer indicating the priority of a rule in the list.\nThe priority must be a positive value between 0 and 2147483647.\nRules are evaluated from highest to lowest priority where 0 is the highest priority and 2147483647 is the lowest prority.", "description_kind": "plain", "required": true }, "project": { "type": "string", - "description": "The project for the resource", "description_kind": "plain", "optional": true, "computed": true @@ -48950,7 +48994,7 @@ }, "security_profile_group": { "type": "string", - "description": "A fully-qualified URL of a SecurityProfileGroup resource. Example: https://networksecurity.googleapis.com/v1/organizations/{organizationId}/locations/global/securityProfileGroups/my-security-profile-group. It must be specified if action = 'apply_security_profile_group' and cannot be specified for other actions.", + "description": "A fully-qualified URL of a SecurityProfile resource instance.\nExample: https://networksecurity.googleapis.com/v1/projects/{project}/locations/{location}/securityProfileGroups/my-security-profile-group\nMust be specified if action = 'apply_security_profile_group' and cannot be specified for other actions.\n\nSecurity Profile Group and Firewall Policy Rule must be in the same scope.", "description_kind": "plain", "optional": true }, @@ -48965,7 +49009,7 @@ }, "tls_inspect": { "type": "bool", - "description": "Boolean flag indicating if the traffic should be TLS decrypted. It can be set only if action = 'apply_security_profile_group' and cannot be set for other actions.", + "description": "Boolean flag indicating if the traffic should be TLS decrypted.\nCan be set only if action = 'apply_security_profile_group' and cannot be set for other actions.", "description_kind": "plain", "optional": true } @@ -48980,7 +49024,7 @@ "list", "string" ], - "description": "Address groups which should be matched against the traffic destination. Maximum number of destination address groups is 10. Destination address groups is only supported in Egress rules.", + "description": "Address groups which should be matched against the traffic destination. Maximum number of destination address groups is 10.", "description_kind": "plain", "optional": true }, @@ -48989,7 +49033,7 @@ "list", "string" ], - "description": "Domain names that will be used to match against the resolved domain name of destination of traffic. Can only be specified if DIRECTION is egress.", + "description": "Fully Qualified Domain Name (FQDN) which should be matched against traffic destination. Maximum number of destination fqdn allowed is 100.", "description_kind": "plain", "optional": true }, @@ -49007,7 +49051,7 @@ "list", "string" ], - "description": "The Unicode country codes whose IP addresses will be used to match against the source of traffic. Can only be specified if DIRECTION is egress.", + "description": "Region codes whose IP addresses will be used to match for destination of traffic. Should be specified as 2 letter country code defined as per ISO 3166 alpha-2 country codes. ex.\"US\" Maximum number of dest region codes allowed is 5000.", "description_kind": "plain", "optional": true }, @@ -49016,7 +49060,7 @@ "list", "string" ], - "description": "Name of the Google Cloud Threat Intelligence list.", + "description": "Names of Network Threat Intelligence lists. The IPs in these lists will be matched against traffic destination.", "description_kind": "plain", "optional": true }, @@ -49025,7 +49069,7 @@ "list", "string" ], - "description": "Address groups which should be matched against the traffic source. Maximum number of source address groups is 10. Source address groups is only supported in Ingress rules.", + "description": "Address groups which should be matched against the traffic source. Maximum number of source address groups is 10.", "description_kind": "plain", "optional": true }, @@ -49034,7 +49078,7 @@ "list", "string" ], - "description": "Domain names that will be used to match against the resolved domain name of source of traffic. Can only be specified if DIRECTION is ingress.", + "description": "Fully Qualified Domain Name (FQDN) which should be matched against traffic source. Maximum number of source fqdn allowed is 100.", "description_kind": "plain", "optional": true }, @@ -49052,7 +49096,7 @@ "list", "string" ], - "description": "The Unicode country codes whose IP addresses will be used to match against the source of traffic. Can only be specified if DIRECTION is ingress.", + "description": "Region codes whose IP addresses will be used to match for source of traffic. Should be specified as 2 letter country code defined as per ISO 3166 alpha-2 country codes. ex.\"US\" Maximum number of source region codes allowed is 5000.", "description_kind": "plain", "optional": true }, @@ -49061,7 +49105,7 @@ "list", "string" ], - "description": "Name of the Google Cloud Threat Intelligence list.", + "description": "Names of Network Threat Intelligence lists. The IPs in these lists will be matched against traffic source.", "description_kind": "plain", "optional": true } @@ -49073,7 +49117,7 @@ "attributes": { "ip_protocol": { "type": "string", - "description": "The IP protocol to which this rule applies. The protocol type is required when creating a firewall rule. This value can either be one of the following well known protocol strings (`tcp`, `udp`, `icmp`, `esp`, `ah`, `ipip`, `sctp`), or the IP protocol number.", + "description": "The IP protocol to which this rule applies. The protocol type is required when creating a firewall rule.\nThis value can either be one of the following well known protocol strings (tcp, udp, icmp, esp, ah, ipip, sctp), or the IP protocol number.", "description_kind": "plain", "required": true }, @@ -49082,7 +49126,7 @@ "list", "string" ], - "description": "An optional list of ports to which this rule applies. This field is only applicable for UDP or TCP protocol. Each entry must be either an integer or a range. If not specified, this rule applies to connections through any port. Example inputs include: ``.", + "description": "An optional list of ports to which this rule applies. This field is only applicable for UDP or TCP protocol. Each entry must be either an integer or a range. If not specified, this rule applies to connections through any port.\nExample inputs include: [\"22\"], [\"80\",\"443\"], and [\"12345-12349\"].", "description_kind": "plain", "optional": true } @@ -49098,18 +49142,18 @@ "attributes": { "name": { "type": "string", - "description": "Name of the secure tag, created with TagManager's TagValue API. @pattern tagValues/[0-9]+", + "description": "Name of the secure tag, created with TagManager's TagValue API.", "description_kind": "plain", - "required": true + "optional": true }, "state": { "type": "string", - "description": "[Output Only] State of the secure tag, either `EFFECTIVE` or `INEFFECTIVE`. A secure tag is `INEFFECTIVE` when it is deleted or its network is deleted.", + "description": "State of the secure tag, either EFFECTIVE or INEFFECTIVE. A secure tag is INEFFECTIVE when it is deleted or its network is deleted.", "description_kind": "plain", "computed": true } }, - "description": "List of secure tag values, which should be matched at the source of the traffic. For INGRESS rule, if all the \u003ccode\u003esrcSecureTag\u003c/code\u003e are INEFFECTIVE, and there is no \u003ccode\u003esrcIpRange\u003c/code\u003e, this rule will be ignored. Maximum number of source tag values allowed is 256.", + "description": "List of secure tag values, which should be matched at the source of the traffic. For INGRESS rule, if all the srcSecureTag are INEFFECTIVE, and there is no srcIpRange, this rule will be ignored. Maximum number of source tag values allowed is 256.", "description_kind": "plain" } } @@ -49126,18 +49170,18 @@ "attributes": { "name": { "type": "string", - "description": "Name of the secure tag, created with TagManager's TagValue API. @pattern tagValues/[0-9]+", + "description": "Name of the secure tag, created with TagManager's TagValue API.", "description_kind": "plain", - "required": true + "optional": true }, "state": { "type": "string", - "description": "[Output Only] State of the secure tag, either `EFFECTIVE` or `INEFFECTIVE`. A secure tag is `INEFFECTIVE` when it is deleted or its network is deleted.", + "description": "State of the secure tag, either EFFECTIVE or INEFFECTIVE. A secure tag is INEFFECTIVE when it is deleted or its network is deleted.", "description_kind": "plain", "computed": true } }, - "description": "A list of secure tags that controls which instances the firewall rule applies to. If \u003ccode\u003etargetSecureTag\u003c/code\u003e are specified, then the firewall rule applies only to instances in the VPC network that have one of those EFFECTIVE secure tags, if all the target_secure_tag are in INEFFECTIVE state, then this rule will be ignored. \u003ccode\u003etargetSecureTag\u003c/code\u003e may not be set at the same time as \u003ccode\u003etargetServiceAccounts\u003c/code\u003e. If neither \u003ccode\u003etargetServiceAccounts\u003c/code\u003e nor \u003ccode\u003etargetSecureTag\u003c/code\u003e are specified, the firewall rule applies to all instances on the specified network. Maximum number of target label tags allowed is 256.", + "description": "A list of secure tags that controls which instances the firewall rule applies to.\nIf targetSecureTag are specified, then the firewall rule applies only to instances in the VPC network that have one of those EFFECTIVE secure tags, if all the targetSecureTag are in INEFFECTIVE state, then this rule will be ignored.\ntargetSecureTag may not be set at the same time as targetServiceAccounts. If neither targetServiceAccounts nor targetSecureTag are specified, the firewall rule applies to all instances on the specified network. Maximum number of target label tags allowed is 256.", "description_kind": "plain" } }, @@ -49617,6 +49661,12 @@ "description_kind": "plain", "optional": true }, + "http_keep_alive_timeout_sec": { + "type": "number", + "description": "Specifies how long to keep a connection open, after completing a response,\nwhile there is no matching traffic (in seconds). If an HTTP keepalive is\nnot specified, a default value (600 seconds) will be used. For Regional\nHTTP(S) load balancer, the minimum allowed value is 5 seconds and the\nmaximum allowed value is 600 seconds.", + "description_kind": "plain", + "optional": true + }, "id": { "type": "string", "description_kind": "plain", @@ -49713,6 +49763,12 @@ "description_kind": "plain", "optional": true }, + "http_keep_alive_timeout_sec": { + "type": "number", + "description": "Specifies how long to keep a connection open, after completing a response,\nwhile there is no matching traffic (in seconds). If an HTTP keepalive is\nnot specified, a default value (600 seconds) will be used. For Regioanl\nHTTP(S) load balancer, the minimum allowed value is 5 seconds and the\nmaximum allowed value is 600 seconds.", + "description_kind": "plain", + "optional": true + }, "id": { "type": "string", "description_kind": "plain", @@ -52972,7 +53028,8 @@ ], "description": "A list of URLs of the IP resources to be drained. These IPs must be\nvalid static external IPs that have been assigned to the NAT.", "description_kind": "plain", - "optional": true + "optional": true, + "computed": true }, "enable_dynamic_port_allocation": { "type": "bool", @@ -53010,6 +53067,15 @@ "optional": true, "computed": true }, + "initial_nat_ips": { + "type": [ + "set", + "string" + ], + "description": "Self-links of NAT IPs to be used as initial value for creation alongside a RouterNatAddress resource.\nConflicts with natIps and drainNatIps. Only valid if natIpAllocateOption is set to MANUAL_ONLY.", + "description_kind": "plain", + "optional": true + }, "max_ports_per_vm": { "type": "number", "description": "Maximum number of ports allocated to a VM from this NAT.\nThis field can only be set when enableDynamicPortAllocation is enabled.", @@ -53040,9 +53106,10 @@ "set", "string" ], - "description": "Self-links of NAT IPs. Only valid if natIpAllocateOption\nis set to MANUAL_ONLY.", + "description": "Self-links of NAT IPs. Only valid if natIpAllocateOption\nis set to MANUAL_ONLY.\nIf this field is used alongside with a count created list of address resources 'google_compute_address.foobar.*.self_link',\nthe access level resource for the address resource must have a 'lifecycle' block with 'create_before_destroy = true' so\nthe number of resources can be increased/decreased without triggering the 'resourceInUseByAnotherResource' error.", "description_kind": "plain", - "optional": true + "optional": true, + "computed": true }, "project": { "type": "string", @@ -53234,6 +53301,88 @@ "description_kind": "plain" } }, + "google_compute_router_nat_address": { + "version": 0, + "block": { + "attributes": { + "drain_nat_ips": { + "type": [ + "set", + "string" + ], + "description": "A list of URLs of the IP resources to be drained. These IPs must be\nvalid static external IPs that have been assigned to the NAT.", + "description_kind": "plain", + "optional": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "nat_ips": { + "type": [ + "set", + "string" + ], + "description": "Self-links of NAT IPs to be used in a Nat service. Only valid if the referenced RouterNat\nnatIpAllocateOption is set to MANUAL_ONLY.", + "description_kind": "plain", + "required": true + }, + "project": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "region": { + "type": "string", + "description": "Region where the NAT service reside.", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "router": { + "type": "string", + "description": "The name of the Cloud Router in which the referenced NAT service is configured.", + "description_kind": "plain", + "required": true + }, + "router_nat": { + "type": "string", + "description": "The name of the Nat service in which this address will be configured.", + "description_kind": "plain", + "required": true + } + }, + "block_types": { + "timeouts": { + "nesting_mode": "single", + "block": { + "attributes": { + "create": { + "type": "string", + "description_kind": "plain", + "optional": true + }, + "delete": { + "type": "string", + "description_kind": "plain", + "optional": true + }, + "update": { + "type": "string", + "description_kind": "plain", + "optional": true + } + }, + "description_kind": "plain" + } + } + }, + "description_kind": "plain" + } + }, "google_compute_router_peer": { "version": 0, "block": { @@ -54401,7 +54550,9 @@ [ "object", { + "consumer_network": "string", "endpoint": "string", + "psc_connection_id": "string", "status": "string" } ] @@ -55339,7 +55490,7 @@ }, "purpose": { "type": "string", - "description": "The purpose of the resource. This field can be either 'PRIVATE_RFC_1918', 'REGIONAL_MANAGED_PROXY', 'GLOBAL_MANAGED_PROXY', 'PRIVATE_SERVICE_CONNECT' or 'PRIVATE_NAT'([Beta](https://terraform.io/docs/providers/google/guides/provider_versions.html)).\nA subnet with purpose set to 'REGIONAL_MANAGED_PROXY' is a user-created subnetwork that is reserved for regional Envoy-based load balancers.\nA subnetwork in a given region with purpose set to 'GLOBAL_MANAGED_PROXY' is a proxy-only subnet and is shared between all the cross-regional Envoy-based load balancers.\nA subnetwork with purpose set to 'PRIVATE_SERVICE_CONNECT' reserves the subnet for hosting a Private Service Connect published service.\nA subnetwork with purpose set to 'PRIVATE_NAT' is used as source range for Private NAT gateways.\nNote that 'REGIONAL_MANAGED_PROXY' is the preferred setting for all regional Envoy load balancers.\nIf unspecified, the purpose defaults to 'PRIVATE_RFC_1918'.", + "description": "The purpose of the resource. This field can be either 'PRIVATE', 'REGIONAL_MANAGED_PROXY', 'GLOBAL_MANAGED_PROXY', 'PRIVATE_SERVICE_CONNECT' or 'PRIVATE_NAT'([Beta](https://terraform.io/docs/providers/google/guides/provider_versions.html)).\nA subnet with purpose set to 'REGIONAL_MANAGED_PROXY' is a user-created subnetwork that is reserved for regional Envoy-based load balancers.\nA subnetwork in a given region with purpose set to 'GLOBAL_MANAGED_PROXY' is a proxy-only subnet and is shared between all the cross-regional Envoy-based load balancers.\nA subnetwork with purpose set to 'PRIVATE_SERVICE_CONNECT' reserves the subnet for hosting a Private Service Connect published service.\nA subnetwork with purpose set to 'PRIVATE_NAT' is used as source range for Private NAT gateways.\nNote that 'REGIONAL_MANAGED_PROXY' is the preferred setting for all regional Envoy load balancers.\nIf unspecified, the purpose defaults to 'PRIVATE'.", "description_kind": "plain", "optional": true, "computed": true @@ -55779,7 +55930,7 @@ }, "http_keep_alive_timeout_sec": { "type": "number", - "description": "Specifies how long to keep a connection open, after completing a response,\nwhile there is no matching traffic (in seconds). If an HTTP keepalive is\nnot specified, a default value (610 seconds) will be used. For Global\nexternal HTTP(S) load balancer, the minimum allowed value is 5 seconds and\nthe maximum allowed value is 1200 seconds. For Global external HTTP(S)\nload balancer (classic), this option is not available publicly.", + "description": "Specifies how long to keep a connection open, after completing a response,\nwhile there is no matching traffic (in seconds). If an HTTP keepalive is\nnot specified, a default value will be used. For Global\nexternal HTTP(S) load balancer, the default value is 610 seconds, the\nminimum allowed value is 5 seconds and the maximum allowed value is 1200\nseconds. For cross-region internal HTTP(S) load balancer, the default\nvalue is 600 seconds, the minimum allowed value is 5 seconds, and the\nmaximum allowed value is 600 seconds. For Global external HTTP(S) load\nbalancer (classic), this option is not available publicly.", "description_kind": "plain", "optional": true }, @@ -55887,7 +56038,7 @@ }, "http_keep_alive_timeout_sec": { "type": "number", - "description": "Specifies how long to keep a connection open, after completing a response,\nwhile there is no matching traffic (in seconds). If an HTTP keepalive is\nnot specified, a default value (610 seconds) will be used. For Global\nexternal HTTP(S) load balancer, the minimum allowed value is 5 seconds and\nthe maximum allowed value is 1200 seconds. For Global external HTTP(S)\nload balancer (classic), this option is not available publicly.", + "description": "Specifies how long to keep a connection open, after completing a response,\nwhile there is no matching traffic (in seconds). If an HTTP keepalive is\nnot specified, a default value will be used. For Global\nexternal HTTP(S) load balancer, the default value is 610 seconds, the\nminimum allowed value is 5 seconds and the maximum allowed value is 1200\nseconds. For cross-region internal HTTP(S) load balancer, the default\nvalue is 600 seconds, the minimum allowed value is 5 seconds, and the\nmaximum allowed value is 600 seconds. For Global external HTTP(S) load\nbalancer (classic), this option is not available publicly.", "description_kind": "plain", "optional": true }, @@ -58897,7 +59048,7 @@ "description_kind": "plain", "optional": true }, - "peer_google_gateway": { + "peer_gcp_gateway": { "type": "string", "description": "URL of the peer side HA GCP VPN gateway to which this VPN tunnel is connected.\nIf provided, the VPN tunnel will automatically use the same vpn_gateway_interface\nID in the peer GCP VPN gateway.\nThis field must reference a 'google_compute_ha_vpn_gateway' resource.", "description_kind": "plain", @@ -59783,6 +59934,22 @@ }, "max_items": 1 }, + "security_posture_config": { + "nesting_mode": "list", + "block": { + "attributes": { + "vulnerability_mode": { + "type": "string", + "description": "Sets the mode of the Kubernetes security posture API's workload vulnerability scanning. Possible values: [\"VULNERABILITY_DISABLED\", \"VULNERABILITY_ENTERPRISE\"]", + "description_kind": "plain", + "required": true + } + }, + "description": "Enable/Disable Security Posture API features for the cluster.", + "description_kind": "plain" + }, + "max_items": 1 + }, "timeouts": { "nesting_mode": "single", "block": { @@ -59954,7 +60121,7 @@ "attributes": { "username": { "type": "string", - "description": "The name of the user, e.g. `my-google-id@gmail.com`.", + "description": "The name of the user, e.g. `my-gcp-id@gmail.com`.", "description_kind": "plain", "required": true } @@ -60653,6 +60820,42 @@ "min_items": 1, "max_items": 1 }, + "kubelet_config": { + "nesting_mode": "list", + "block": { + "attributes": { + "cpu_cfs_quota": { + "type": "bool", + "description": "Whether or not to enable CPU CFS quota. Defaults to true.", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "cpu_cfs_quota_period": { + "type": "string", + "description": "Optional. The CPU CFS quota period to use for the node. Defaults to \"100ms\".", + "description_kind": "plain", + "optional": true + }, + "cpu_manager_policy": { + "type": "string", + "description": "The CpuManagerPolicy to use for the node. Defaults to \"none\".", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "pod_pids_limit": { + "type": "number", + "description": "Optional. The maximum number of PIDs in each pod running on the node. The limit scales automatically based on underlying machine size if left unset.", + "description_kind": "plain", + "optional": true + } + }, + "description": "The kubelet configuration for the node pool.", + "description_kind": "plain" + }, + "max_items": 1 + }, "management": { "nesting_mode": "list", "block": { @@ -60987,7 +61190,7 @@ "attributes": { "username": { "type": "string", - "description": "The name of the user, e.g. `my-google-id@gmail.com`.", + "description": "The name of the user, e.g. `my-gcp-id@gmail.com`.", "description_kind": "plain", "required": true } @@ -61890,7 +62093,7 @@ }, "max_items": 1 }, - "google_filestore_csi_driver_config": { + "gcp_filestore_csi_driver_config": { "nesting_mode": "list", "block": { "attributes": { @@ -61900,7 +62103,7 @@ "required": true } }, - "description": "The status of the Filestore CSI driver addon, which allows the usage of filestore instance as volumes. Defaults to disabled; set enabled = true to enable.", + "description": "The status of the Filestore CSI driver addon, which allows the usage of filestore instance as volumes. Defaults to disabled for Standard clusters; set enabled = true to enable. It is enabled by default for Autopilot clusters; set enabled = true to enable it explicitly.", "description_kind": "plain" }, "max_items": 1 @@ -62633,7 +62836,7 @@ "list", "string" ], - "description": "GKE components exposing logs. Valid values include SYSTEM_COMPONENTS, APISERVER, CONTROLLER_MANAGER, SCHEDULER, and WORKLOADS.", + "description": "GKE components exposing logs. Valid values include SYSTEM_COMPONENTS, APISERVER, CONTROLLER_MANAGER, KCP_CONNECTION, KCP_SSHD, SCHEDULER, and WORKLOADS.", "description_kind": "plain", "required": true } @@ -62793,7 +62996,7 @@ "nesting_mode": "list", "block": { "attributes": { - "google_public_cidrs_access_enabled": { + "gcp_public_cidrs_access_enabled": { "type": "bool", "description": "Whether Kubernetes master is accessible via Google Compute Engine Public IPs.", "description_kind": "plain", @@ -63081,6 +63284,15 @@ "description_kind": "plain", "optional": true }, + "storage_pools": { + "type": [ + "list", + "string" + ], + "description": "The list of Storage Pools where boot disks are provisioned.", + "description_kind": "plain", + "optional": true + }, "tags": { "type": [ "list", @@ -63161,7 +63373,7 @@ } }, "block_types": { - "google_secret_manager_certificate_config": { + "gcp_secret_manager_certificate_config": { "nesting_mode": "list", "block": { "attributes": { @@ -63362,7 +63574,7 @@ "type": "string", "description": "Control the CPU management policy on the node.", "description_kind": "plain", - "required": true + "optional": true }, "insecure_kubelet_readonly_port_enabled": { "type": "string", @@ -63404,6 +63616,30 @@ "optional": true } }, + "block_types": { + "hugepages_config": { + "nesting_mode": "list", + "block": { + "attributes": { + "hugepage_size_1g": { + "type": "number", + "description": "Amount of 1G hugepages.", + "description_kind": "plain", + "optional": true + }, + "hugepage_size_2m": { + "type": "number", + "description": "Amount of 2M hugepages.", + "description_kind": "plain", + "optional": true + } + }, + "description": "Amounts for 2M and 1G hugepages.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, "description": "Parameters that can be configured on Linux nodes.", "description_kind": "plain" }, @@ -64002,6 +64238,15 @@ "description_kind": "plain", "optional": true }, + "storage_pools": { + "type": [ + "list", + "string" + ], + "description": "The list of Storage Pools where boot disks are provisioned.", + "description_kind": "plain", + "optional": true + }, "tags": { "type": [ "list", @@ -64082,7 +64327,7 @@ } }, "block_types": { - "google_secret_manager_certificate_config": { + "gcp_secret_manager_certificate_config": { "nesting_mode": "list", "block": { "attributes": { @@ -64283,7 +64528,7 @@ "type": "string", "description": "Control the CPU management policy on the node.", "description_kind": "plain", - "required": true + "optional": true }, "insecure_kubelet_readonly_port_enabled": { "type": "string", @@ -64325,6 +64570,30 @@ "optional": true } }, + "block_types": { + "hugepages_config": { + "nesting_mode": "list", + "block": { + "attributes": { + "hugepage_size_1g": { + "type": "number", + "description": "Amount of 1G hugepages.", + "description_kind": "plain", + "optional": true + }, + "hugepage_size_2m": { + "type": "number", + "description": "Amount of 2M hugepages.", + "description_kind": "plain", + "optional": true + } + }, + "description": "Amounts for 2M and 1G hugepages.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, "description": "Parameters that can be configured on Linux nodes.", "description_kind": "plain" }, @@ -64755,7 +65024,7 @@ } }, "block_types": { - "google_secret_manager_certificate_config": { + "gcp_secret_manager_certificate_config": { "nesting_mode": "list", "block": { "attributes": { @@ -64788,6 +65057,22 @@ "description_kind": "plain" }, "max_items": 1 + }, + "gcfs_config": { + "nesting_mode": "list", + "block": { + "attributes": { + "enabled": { + "type": "bool", + "description": "Whether or not GCFS is enabled", + "description_kind": "plain", + "required": true + } + }, + "description": "GCFS configuration for this node.", + "description_kind": "plain" + }, + "max_items": 1 } }, "description": "Subset of NodeConfig message that has defaults.", @@ -65546,6 +65831,15 @@ "description_kind": "plain", "optional": true }, + "storage_pools": { + "type": [ + "list", + "string" + ], + "description": "The list of Storage Pools where boot disks are provisioned.", + "description_kind": "plain", + "optional": true + }, "tags": { "type": [ "list", @@ -65626,7 +65920,7 @@ } }, "block_types": { - "google_secret_manager_certificate_config": { + "gcp_secret_manager_certificate_config": { "nesting_mode": "list", "block": { "attributes": { @@ -65827,7 +66121,7 @@ "type": "string", "description": "Control the CPU management policy on the node.", "description_kind": "plain", - "required": true + "optional": true }, "insecure_kubelet_readonly_port_enabled": { "type": "string", @@ -65869,6 +66163,30 @@ "optional": true } }, + "block_types": { + "hugepages_config": { + "nesting_mode": "list", + "block": { + "attributes": { + "hugepage_size_1g": { + "type": "number", + "description": "Amount of 1G hugepages.", + "description_kind": "plain", + "optional": true + }, + "hugepage_size_2m": { + "type": "number", + "description": "Amount of 2M hugepages.", + "description_kind": "plain", + "optional": true + } + }, + "description": "Amounts for 2M and 1G hugepages.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, "description": "Parameters that can be configured on Linux nodes.", "description_kind": "plain" }, @@ -77166,17 +77484,40 @@ "description_kind": "plain" } }, - "google_database_migration_service_private_connection": { + "google_database_migration_service_migration_job": { "version": 0, "block": { "attributes": { - "display_name": { + "create_time": { "type": "string", - "description": "Display name.", + "description": "Output only. The timestamp when the resource was created. A timestamp in RFC3339 UTC 'Zulu' format, accurate to nanoseconds. Example: '2014-10-02T15:01:23.045123456Z'.", "description_kind": "plain", - "optional": true, "computed": true }, + "destination": { + "type": "string", + "description": "The name of the destination connection profile resource in the form of projects/{project}/locations/{location}/connectionProfiles/{destinationConnectionProfile}.", + "description_kind": "plain", + "required": true + }, + "display_name": { + "type": "string", + "description": "The migration job display name.", + "description_kind": "plain", + "optional": true + }, + "dump_path": { + "type": "string", + "description": "The path to the dump file in Google Cloud Storage,\nin the format: (gs://[BUCKET_NAME]/[OBJECT_NAME]).\nThis field and the \"dump_flags\" field are mutually exclusive.", + "description_kind": "plain", + "optional": true + }, + "dump_type": { + "type": "string", + "description": "The type of the data dump. Supported for MySQL to CloudSQL for MySQL\nmigrations only. Possible values: [\"LOGICAL\", \"PHYSICAL\"]", + "description_kind": "plain", + "optional": true + }, "effective_labels": { "type": [ "map", @@ -77192,15 +77533,19 @@ [ "object", { + "code": "number", "details": [ - "map", - "string" + "list", + [ + "map", + "string" + ] ], "message": "string" } ] ], - "description": "The PrivateConnection error in case of failure.", + "description": "Output only. The error details in case of state FAILED.", "description_kind": "plain", "computed": true }, @@ -77215,27 +77560,33 @@ "map", "string" ], - "description": "Labels.\n\n**Note**: This field is non-authoritative, and will only manage the labels present in your configuration.\nPlease refer to the field 'effective_labels' for all of the labels present on the resource.", + "description": "The resource labels for migration job to use to annotate any related underlying resources such as Compute Engine VMs.\n\n\n**Note**: This field is non-authoritative, and will only manage the labels present in your configuration.\nPlease refer to the field 'effective_labels' for all of the labels present on the resource.", "description_kind": "plain", "optional": true }, "location": { "type": "string", - "description": "The name of the location this private connection is located in.", + "description": "The location where the migration job should reside.", + "description_kind": "plain", + "optional": true + }, + "migration_job_id": { + "type": "string", + "description": "The ID of the migration job.", "description_kind": "plain", "required": true }, "name": { "type": "string", - "description": "The resource's name.", + "description": "The name of this migration job resource in the form of projects/{project}/locations/{location}/migrationJobs/{migrationJob}.", "description_kind": "plain", "computed": true }, - "private_connection_id": { + "phase": { "type": "string", - "description": "The private connectivity identifier.", + "description": "The current migration job phase.", "description_kind": "plain", - "required": true + "computed": true }, "project": { "type": "string", @@ -77243,9 +77594,247 @@ "optional": true, "computed": true }, + "source": { + "type": "string", + "description": "The name of the source connection profile resource in the form of projects/{project}/locations/{location}/connectionProfiles/{sourceConnectionProfile}.", + "description_kind": "plain", + "required": true + }, "state": { "type": "string", - "description": "State of the PrivateConnection.", + "description": "The current migration job state.", + "description_kind": "plain", + "computed": true + }, + "terraform_labels": { + "type": [ + "map", + "string" + ], + "description": "The combination of labels configured directly on the resource\n and default labels configured on the provider.", + "description_kind": "plain", + "computed": true + }, + "type": { + "type": "string", + "description": "The type of the migration job. Possible values: [\"ONE_TIME\", \"CONTINUOUS\"]", + "description_kind": "plain", + "required": true + } + }, + "block_types": { + "dump_flags": { + "nesting_mode": "list", + "block": { + "block_types": { + "dump_flags": { + "nesting_mode": "list", + "block": { + "attributes": { + "name": { + "type": "string", + "description": "The name of the flag", + "description_kind": "plain", + "optional": true + }, + "value": { + "type": "string", + "description": "The vale of the flag", + "description_kind": "plain", + "optional": true + } + }, + "description": "A list of dump flags", + "description_kind": "plain" + } + } + }, + "description": "The initial dump flags.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "performance_config": { + "nesting_mode": "list", + "block": { + "attributes": { + "dump_parallel_level": { + "type": "string", + "description": "Initial dump parallelism level. Possible values: [\"MIN\", \"OPTIMAL\", \"MAX\"]", + "description_kind": "plain", + "optional": true + } + }, + "description": "Data dump parallelism settings used by the migration.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "reverse_ssh_connectivity": { + "nesting_mode": "list", + "block": { + "attributes": { + "vm": { + "type": "string", + "description": "The name of the virtual machine (Compute Engine) used as the bastion server\nfor the SSH tunnel.", + "description_kind": "plain", + "optional": true + }, + "vm_ip": { + "type": "string", + "description": "The IP of the virtual machine (Compute Engine) used as the bastion server\nfor the SSH tunnel.", + "description_kind": "plain", + "optional": true + }, + "vm_port": { + "type": "number", + "description": "The forwarding port of the virtual machine (Compute Engine) used as the\nbastion server for the SSH tunnel.", + "description_kind": "plain", + "optional": true + }, + "vpc": { + "type": "string", + "description": "The name of the VPC to peer with the Cloud SQL private network.", + "description_kind": "plain", + "optional": true + } + }, + "description": "The details of the VPC network that the source database is located in.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "static_ip_connectivity": { + "nesting_mode": "list", + "block": { + "description": "If set to an empty object ('{}'), the source database will allow incoming\nconnections from the public IP of the destination database.\nYou can retrieve the public IP of the Cloud SQL instance from the\nCloud SQL console or using Cloud SQL APIs.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "timeouts": { + "nesting_mode": "single", + "block": { + "attributes": { + "create": { + "type": "string", + "description_kind": "plain", + "optional": true + }, + "delete": { + "type": "string", + "description_kind": "plain", + "optional": true + }, + "update": { + "type": "string", + "description_kind": "plain", + "optional": true + } + }, + "description_kind": "plain" + } + }, + "vpc_peering_connectivity": { + "nesting_mode": "list", + "block": { + "attributes": { + "vpc": { + "type": "string", + "description": "The name of the VPC network to peer with the Cloud SQL private network.", + "description_kind": "plain", + "optional": true + } + }, + "description": "The details of the VPC network that the source database is located in.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description_kind": "plain" + } + }, + "google_database_migration_service_private_connection": { + "version": 0, + "block": { + "attributes": { + "display_name": { + "type": "string", + "description": "Display name.", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "effective_labels": { + "type": [ + "map", + "string" + ], + "description": "All of labels (key/value pairs) present on the resource in GCP, including the labels configured through Terraform, other clients and services.", + "description_kind": "plain", + "computed": true + }, + "error": { + "type": [ + "list", + [ + "object", + { + "details": [ + "map", + "string" + ], + "message": "string" + } + ] + ], + "description": "The PrivateConnection error in case of failure.", + "description_kind": "plain", + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "labels": { + "type": [ + "map", + "string" + ], + "description": "Labels.\n\n**Note**: This field is non-authoritative, and will only manage the labels present in your configuration.\nPlease refer to the field 'effective_labels' for all of the labels present on the resource.", + "description_kind": "plain", + "optional": true + }, + "location": { + "type": "string", + "description": "The name of the location this private connection is located in.", + "description_kind": "plain", + "required": true + }, + "name": { + "type": "string", + "description": "The resource's name.", + "description_kind": "plain", + "computed": true + }, + "private_connection_id": { + "type": "string", + "description": "The private connectivity identifier.", + "description_kind": "plain", + "required": true + }, + "project": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "state": { + "type": "string", + "description": "State of the PrivateConnection.", "description_kind": "plain", "computed": true }, @@ -81757,6 +82346,538 @@ "description_kind": "plain" } }, + "google_dataproc_batch": { + "version": 0, + "block": { + "attributes": { + "batch_id": { + "type": "string", + "description": "The ID to use for the batch, which will become the final component of the batch's resource name.\nThis value must be 4-63 characters. Valid characters are /[a-z][0-9]-/.", + "description_kind": "plain", + "optional": true + }, + "create_time": { + "type": "string", + "description": "The time when the batch was created.", + "description_kind": "plain", + "computed": true + }, + "creator": { + "type": "string", + "description": "The email address of the user who created the batch.", + "description_kind": "plain", + "computed": true + }, + "effective_labels": { + "type": [ + "map", + "string" + ], + "description": "All of labels (key/value pairs) present on the resource in GCP, including the labels configured through Terraform, other clients and services.", + "description_kind": "plain", + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "labels": { + "type": [ + "map", + "string" + ], + "description": "The labels to associate with this batch.\n\n\n**Note**: This field is non-authoritative, and will only manage the labels present in your configuration.\nPlease refer to the field 'effective_labels' for all of the labels present on the resource.", + "description_kind": "plain", + "optional": true + }, + "location": { + "type": "string", + "description": "The location in which the batch will be created in.", + "description_kind": "plain", + "optional": true + }, + "name": { + "type": "string", + "description": "The resource name of the batch.", + "description_kind": "plain", + "computed": true + }, + "operation": { + "type": "string", + "description": "The resource name of the operation associated with this batch.", + "description_kind": "plain", + "computed": true + }, + "project": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "runtime_info": { + "type": [ + "list", + [ + "object", + { + "approximate_usage": [ + "list", + [ + "object", + { + "accelerator_type": "string", + "milli_accelerator_seconds": "string", + "milli_dcu_seconds": "string", + "shuffle_storage_gb_seconds": "string" + } + ] + ], + "current_usage": [ + "list", + [ + "object", + { + "accelerator_type": "string", + "milli_accelerator": "string", + "milli_dcu": "string", + "milli_dcu_premium": "string", + "shuffle_storage_gb": "string", + "shuffle_storage_gb_premium": "string", + "snapshot_time": "string" + } + ] + ], + "diagnostic_output_uri": "string", + "endpoints": [ + "map", + "string" + ], + "output_uri": "string" + } + ] + ], + "description": "Runtime information about batch execution.", + "description_kind": "plain", + "computed": true + }, + "state": { + "type": "string", + "description": "The state of the batch. For possible values, see the [API documentation](https://cloud.google.com/dataproc-serverless/docs/reference/rest/v1/projects.locations.batches#State).", + "description_kind": "plain", + "computed": true + }, + "state_history": { + "type": [ + "list", + [ + "object", + { + "state": "string", + "state_message": "string", + "state_start_time": "string" + } + ] + ], + "description": "Historical state information for the batch.", + "description_kind": "plain", + "computed": true + }, + "state_message": { + "type": "string", + "description": "Batch state details, such as a failure description if the state is FAILED.", + "description_kind": "plain", + "computed": true + }, + "state_time": { + "type": "string", + "description": "Batch state details, such as a failure description if the state is FAILED.", + "description_kind": "plain", + "computed": true + }, + "terraform_labels": { + "type": [ + "map", + "string" + ], + "description": "The combination of labels configured directly on the resource\n and default labels configured on the provider.", + "description_kind": "plain", + "computed": true + }, + "uuid": { + "type": "string", + "description": "A batch UUID (Unique Universal Identifier). The service generates this value when it creates the batch.", + "description_kind": "plain", + "computed": true + } + }, + "block_types": { + "environment_config": { + "nesting_mode": "list", + "block": { + "block_types": { + "execution_config": { + "nesting_mode": "list", + "block": { + "attributes": { + "kms_key": { + "type": "string", + "description": "The Cloud KMS key to use for encryption.", + "description_kind": "plain", + "optional": true + }, + "network_tags": { + "type": [ + "list", + "string" + ], + "description": "Tags used for network traffic control.", + "description_kind": "plain", + "optional": true + }, + "network_uri": { + "type": "string", + "description": "Network configuration for workload execution.", + "description_kind": "plain", + "optional": true + }, + "service_account": { + "type": "string", + "description": "Service account that used to execute workload.", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "staging_bucket": { + "type": "string", + "description": "A Cloud Storage bucket used to stage workload dependencies, config files, and store\nworkload output and other ephemeral data, such as Spark history files. If you do not specify a staging bucket,\nCloud Dataproc will determine a Cloud Storage location according to the region where your workload is running,\nand then create and manage project-level, per-location staging and temporary buckets.\nThis field requires a Cloud Storage bucket name, not a gs://... URI to a Cloud Storage bucket.", + "description_kind": "plain", + "optional": true + }, + "subnetwork_uri": { + "type": "string", + "description": "Subnetwork configuration for workload execution.", + "description_kind": "plain", + "optional": true + }, + "ttl": { + "type": "string", + "description": "The duration after which the workload will be terminated.\nWhen the workload exceeds this duration, it will be unconditionally terminated without waiting for ongoing\nwork to finish. If ttl is not specified for a batch workload, the workload will be allowed to run until it\nexits naturally (or run forever without exiting). If ttl is not specified for an interactive session,\nit defaults to 24 hours. If ttl is not specified for a batch that uses 2.1+ runtime version, it defaults to 4 hours.\nMinimum value is 10 minutes; maximum value is 14 days. If both ttl and idleTtl are specified (for an interactive session),\nthe conditions are treated as OR conditions: the workload will be terminated when it has been idle for idleTtl or\nwhen ttl has been exceeded, whichever occurs first.", + "description_kind": "plain", + "optional": true, + "computed": true + } + }, + "description": "Execution configuration for a workload.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "peripherals_config": { + "nesting_mode": "list", + "block": { + "attributes": { + "metastore_service": { + "type": "string", + "description": "Resource name of an existing Dataproc Metastore service.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "spark_history_server_config": { + "nesting_mode": "list", + "block": { + "attributes": { + "dataproc_cluster": { + "type": "string", + "description": "Resource name of an existing Dataproc Cluster to act as a Spark History Server for the workload.", + "description_kind": "plain", + "optional": true + } + }, + "description": "The Spark History Server configuration for the workload.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "Peripherals configuration that workload has access to.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "Environment configuration for the batch execution.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "pyspark_batch": { + "nesting_mode": "list", + "block": { + "attributes": { + "archive_uris": { + "type": [ + "list", + "string" + ], + "description": "HCFS URIs of archives to be extracted into the working directory of each executor.\nSupported file types: .jar, .tar, .tar.gz, .tgz, and .zip.", + "description_kind": "plain", + "optional": true + }, + "args": { + "type": [ + "list", + "string" + ], + "description": "The arguments to pass to the driver. Do not include arguments that can be set as batch\nproperties, such as --conf, since a collision can occur that causes an incorrect batch submission.", + "description_kind": "plain", + "optional": true + }, + "file_uris": { + "type": [ + "list", + "string" + ], + "description": "HCFS URIs of files to be placed in the working directory of each executor.", + "description_kind": "plain", + "optional": true + }, + "jar_file_uris": { + "type": [ + "list", + "string" + ], + "description": "HCFS URIs of jar files to add to the classpath of the Spark driver and tasks.", + "description_kind": "plain", + "optional": true + }, + "main_python_file_uri": { + "type": "string", + "description": "The HCFS URI of the main Python file to use as the Spark driver. Must be a .py file.", + "description_kind": "plain", + "optional": true + }, + "python_file_uris": { + "type": [ + "list", + "string" + ], + "description": "HCFS file URIs of Python files to pass to the PySpark framework.\nSupported file types: .py, .egg, and .zip.", + "description_kind": "plain", + "optional": true + } + }, + "description": "PySpark batch config.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "runtime_config": { + "nesting_mode": "list", + "block": { + "attributes": { + "container_image": { + "type": "string", + "description": "Optional custom container image for the job runtime environment. If not specified, a default container image will be used.", + "description_kind": "plain", + "optional": true + }, + "effective_properties": { + "type": [ + "map", + "string" + ], + "description": "A mapping of property names to values, which are used to configure workload execution.", + "description_kind": "plain", + "computed": true + }, + "properties": { + "type": [ + "map", + "string" + ], + "description": "A mapping of property names to values, which are used to configure workload execution.", + "description_kind": "plain", + "optional": true + }, + "version": { + "type": "string", + "description": "Version of the batch runtime.", + "description_kind": "plain", + "optional": true, + "computed": true + } + }, + "description": "Runtime configuration for the batch execution.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "spark_batch": { + "nesting_mode": "list", + "block": { + "attributes": { + "archive_uris": { + "type": [ + "list", + "string" + ], + "description": "HCFS URIs of archives to be extracted into the working directory of each executor.\nSupported file types: .jar, .tar, .tar.gz, .tgz, and .zip.", + "description_kind": "plain", + "optional": true + }, + "args": { + "type": [ + "list", + "string" + ], + "description": "The arguments to pass to the driver. Do not include arguments that can be set as batch\nproperties, such as --conf, since a collision can occur that causes an incorrect batch submission.", + "description_kind": "plain", + "optional": true + }, + "file_uris": { + "type": [ + "list", + "string" + ], + "description": "HCFS URIs of files to be placed in the working directory of each executor.", + "description_kind": "plain", + "optional": true + }, + "jar_file_uris": { + "type": [ + "list", + "string" + ], + "description": "HCFS URIs of jar files to add to the classpath of the Spark driver and tasks.", + "description_kind": "plain", + "optional": true + }, + "main_class": { + "type": "string", + "description": "The name of the driver main class. The jar file that contains the class must be in the\nclasspath or specified in jarFileUris.", + "description_kind": "plain", + "optional": true + }, + "main_jar_file_uri": { + "type": "string", + "description": "The HCFS URI of the jar file that contains the main class.", + "description_kind": "plain", + "optional": true + } + }, + "description": "Spark batch config.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "spark_r_batch": { + "nesting_mode": "list", + "block": { + "attributes": { + "archive_uris": { + "type": [ + "list", + "string" + ], + "description": "HCFS URIs of archives to be extracted into the working directory of each executor.\nSupported file types: .jar, .tar, .tar.gz, .tgz, and .zip.", + "description_kind": "plain", + "optional": true + }, + "args": { + "type": [ + "list", + "string" + ], + "description": "The arguments to pass to the driver. Do not include arguments that can be set as batch\nproperties, such as --conf, since a collision can occur that causes an incorrect batch submission.", + "description_kind": "plain", + "optional": true + }, + "file_uris": { + "type": [ + "list", + "string" + ], + "description": "HCFS URIs of files to be placed in the working directory of each executor.", + "description_kind": "plain", + "optional": true + }, + "main_r_file_uri": { + "type": "string", + "description": "The HCFS URI of the main R file to use as the driver. Must be a .R or .r file.", + "description_kind": "plain", + "optional": true + } + }, + "description": "SparkR batch config.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "spark_sql_batch": { + "nesting_mode": "list", + "block": { + "attributes": { + "jar_file_uris": { + "type": [ + "list", + "string" + ], + "description": "HCFS URIs of jar files to be added to the Spark CLASSPATH.", + "description_kind": "plain", + "optional": true + }, + "query_file_uri": { + "type": "string", + "description": "The HCFS URI of the script that contains Spark SQL queries to execute.", + "description_kind": "plain", + "optional": true + }, + "query_variables": { + "type": [ + "map", + "string" + ], + "description": "Mapping of query variable names to values (equivalent to the Spark SQL command: SET name=\"value\";).", + "description_kind": "plain", + "optional": true + } + }, + "description": "Spark SQL batch config.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "timeouts": { + "nesting_mode": "single", + "block": { + "attributes": { + "create": { + "type": "string", + "description_kind": "plain", + "optional": true + }, + "delete": { + "type": "string", + "description_kind": "plain", + "optional": true + }, + "update": { + "type": "string", + "description_kind": "plain", + "optional": true + } + }, + "description_kind": "plain" + } + } + }, + "description_kind": "plain" + } + }, "google_dataproc_cluster": { "version": 1, "block": { @@ -84511,6 +85632,12 @@ "description_kind": "plain", "optional": true }, + "deletion_protection": { + "type": "bool", + "description": "Indicates if the dataproc metastore should be protected against accidental deletions.", + "description_kind": "plain", + "optional": true + }, "effective_labels": { "type": [ "map", @@ -87469,7 +88596,7 @@ }, "desired_state": { "type": "string", - "description": "Desired state of the Stream. Set this field to 'RUNNING' to start the stream, and 'PAUSED' to pause the stream.\nPossible values: NOT_STARTED, RUNNING, PAUSED. Default: NOT_STARTED", + "description": "Desired state of the Stream. Set this field to 'RUNNING' to start the stream,\n'NOT_STARTED' to create the stream without starting and 'PAUSED' to pause\nthe stream from a 'RUNNING' state.\nPossible values: NOT_STARTED, RUNNING, PAUSED. Default: NOT_STARTED", "description_kind": "plain", "optional": true }, @@ -89466,6 +90593,7 @@ "type": "bool", "description": "Determines whether this agent should log conversation queries.", "description_kind": "plain", + "deprecated": true, "optional": true }, "id": { @@ -89568,6 +90696,71 @@ "description_kind": "plain" }, "max_items": 1 + }, + "logging_settings": { + "nesting_mode": "list", + "block": { + "attributes": { + "enable_consent_based_redaction": { + "type": "bool", + "description": "Enables consent-based end-user input redaction, if true, a pre-defined session parameter **$session.params.conversation-redaction** will be used to determine if the utterance should be redacted.", + "description_kind": "plain", + "optional": true + }, + "enable_interaction_logging": { + "type": "bool", + "description": "Enables DF Interaction logging.", + "description_kind": "plain", + "optional": true + }, + "enable_stackdriver_logging": { + "type": "bool", + "description": "Enables Google Cloud Logging.", + "description_kind": "plain", + "optional": true + } + }, + "description": "Settings for logging. Settings for Dialogflow History, Contact Center messages, StackDriver logs, and speech logging. Exposed at the following levels:\n* Agent level", + "description_kind": "plain" + }, + "max_items": 1 + }, + "speech_settings": { + "nesting_mode": "list", + "block": { + "attributes": { + "endpointer_sensitivity": { + "type": "number", + "description": "Sensitivity of the speech model that detects the end of speech. Scale from 0 to 100.", + "description_kind": "plain", + "optional": true + }, + "models": { + "type": [ + "map", + "string" + ], + "description": "Mapping from language to Speech-to-Text model. The mapped Speech-to-Text model will be selected for requests from its corresponding language. For more information, see [Speech models](https://cloud.google.com/dialogflow/cx/docs/concept/speech-models).\nAn object containing a list of **\"key\": value** pairs. Example: **{ \"name\": \"wrench\", \"mass\": \"1.3kg\", \"count\": \"3\" }**.", + "description_kind": "plain", + "optional": true + }, + "no_speech_timeout": { + "type": "string", + "description": "Timeout before detecting no speech.\nA duration in seconds with up to nine fractional digits, ending with 's'. Example: \"3.5s\".", + "description_kind": "plain", + "optional": true + }, + "use_timeout_based_endpointing": { + "type": "bool", + "description": "Use timeout based endpointing, interpreting endpointer sensitivy as seconds of timeout value.", + "description_kind": "plain", + "optional": true + } + }, + "description": "Settings for speech to text detection. Exposed at the following levels:\n* Agent level\n* Flow level\n* Page level\n* Parameter level", + "description_kind": "plain" + }, + "max_items": 1 } }, "description": "Hierarchical advanced settings for this agent. The settings exposed at the lower level overrides the settings exposed at the higher level.\nHierarchy: Agent-\u003eFlow-\u003ePage-\u003eFulfillment/Parameter.", @@ -90004,330 +91197,395 @@ "description_kind": "plain" }, "max_items": 1 - } - }, - "description": "Hierarchical advanced settings for this flow. The settings exposed at the lower level overrides the settings exposed at the higher level.\nHierarchy: Agent-\u003eFlow-\u003ePage-\u003eFulfillment/Parameter.", - "description_kind": "plain" - }, - "max_items": 1 - }, - "event_handlers": { - "nesting_mode": "list", - "block": { - "attributes": { - "event": { - "type": "string", - "description": "The name of the event to handle.", - "description_kind": "plain", - "optional": true - }, - "name": { - "type": "string", - "description": "The unique identifier of this event handler.", - "description_kind": "plain", - "computed": true - }, - "target_flow": { - "type": "string", - "description": "The target flow to transition to.\nFormat: projects/\u003cProject ID\u003e/locations/\u003cLocation ID\u003e/agents/\u003cAgent ID\u003e/flows/\u003cFlow ID\u003e.", - "description_kind": "plain", - "optional": true }, - "target_page": { - "type": "string", - "description": "The target page to transition to.\nFormat: projects/\u003cProject ID\u003e/locations/\u003cLocation ID\u003e/agents/\u003cAgent ID\u003e/flows/\u003cFlow ID\u003e/pages/\u003cPage ID\u003e.", - "description_kind": "plain", - "optional": true - } - }, - "block_types": { - "trigger_fulfillment": { + "logging_settings": { "nesting_mode": "list", "block": { "attributes": { - "return_partial_responses": { + "enable_consent_based_redaction": { "type": "bool", - "description": "Whether Dialogflow should return currently queued fulfillment response messages in streaming APIs. If a webhook is specified, it happens before Dialogflow invokes webhook. Warning: 1) This flag only affects streaming API. Responses are still queued and returned once in non-streaming API. 2) The flag can be enabled in any fulfillment but only the first 3 partial responses will be returned. You may only want to apply it to fulfillments that have slow webhooks.", + "description": "Enables consent-based end-user input redaction, if true, a pre-defined session parameter **$session.params.conversation-redaction** will be used to determine if the utterance should be redacted.", "description_kind": "plain", "optional": true }, - "tag": { - "type": "string", - "description": "The tag used by the webhook to identify which fulfillment is being called. This field is required if webhook is specified.", + "enable_interaction_logging": { + "type": "bool", + "description": "Enables DF Interaction logging.", "description_kind": "plain", "optional": true }, - "webhook": { - "type": "string", - "description": "The webhook to call. Format: projects/\u003cProject ID\u003e/locations/\u003cLocation ID\u003e/agents/\u003cAgent ID\u003e/webhooks/\u003cWebhook ID\u003e.", + "enable_stackdriver_logging": { + "type": "bool", + "description": "Enables Google Cloud Logging.", "description_kind": "plain", "optional": true } }, - "block_types": { - "conditional_cases": { - "nesting_mode": "list", - "block": { - "attributes": { - "cases": { - "type": "string", - "description": "A JSON encoded list of cascading if-else conditions. Cases are mutually exclusive. The first one with a matching condition is selected, all the rest ignored.\nSee [Case](https://cloud.google.com/dialogflow/cx/docs/reference/rest/v3/Fulfillment#case) for the schema.", - "description_kind": "plain", - "optional": true - } - }, - "description": "Conditional cases for this fulfillment.", - "description_kind": "plain" - } + "description": "Settings for logging. Settings for Dialogflow History, Contact Center messages, StackDriver logs, and speech logging. Exposed at the following levels:\n* Agent level", + "description_kind": "plain" + }, + "max_items": 1 + }, + "speech_settings": { + "nesting_mode": "list", + "block": { + "attributes": { + "endpointer_sensitivity": { + "type": "number", + "description": "Sensitivity of the speech model that detects the end of speech. Scale from 0 to 100.", + "description_kind": "plain", + "optional": true }, - "messages": { - "nesting_mode": "list", - "block": { - "attributes": { - "channel": { - "type": "string", - "description": "The channel which the response is associated with. Clients can specify the channel via QueryParameters.channel, and only associated channel response will be returned.", - "description_kind": "plain", - "optional": true - }, - "payload": { - "type": "string", - "description": "A custom, platform-specific payload.", - "description_kind": "plain", - "optional": true - } - }, - "block_types": { - "conversation_success": { - "nesting_mode": "list", - "block": { - "attributes": { - "metadata": { - "type": "string", - "description": "Custom metadata. Dialogflow doesn't impose any structure on this.", - "description_kind": "plain", - "optional": true - } - }, - "description": "Indicates that the conversation succeeded, i.e., the bot handled the issue that the customer talked to it about.\nDialogflow only uses this to determine which conversations should be counted as successful and doesn't process the metadata in this message in any way. Note that Dialogflow also considers conversations that get to the conversation end page as successful even if they don't return ConversationSuccess.\nYou may set this, for example:\n* In the entryFulfillment of a Page if entering the page indicates that the conversation succeeded.\n* In a webhook response when you determine that you handled the customer issue.", - "description_kind": "plain" - }, - "max_items": 1 - }, - "live_agent_handoff": { - "nesting_mode": "list", - "block": { - "attributes": { - "metadata": { - "type": "string", - "description": "Custom metadata. Dialogflow doesn't impose any structure on this.", - "description_kind": "plain", - "optional": true - } - }, - "description": "Indicates that the conversation should be handed off to a live agent.\nDialogflow only uses this to determine which conversations were handed off to a human agent for measurement purposes. What else to do with this signal is up to you and your handoff procedures.\nYou may set this, for example:\n* In the entryFulfillment of a Page if entering the page indicates something went extremely wrong in the conversation.\n* In a webhook response when you determine that the customer issue can only be handled by a human.", - "description_kind": "plain" - }, - "max_items": 1 - }, - "output_audio_text": { - "nesting_mode": "list", - "block": { - "attributes": { - "allow_playback_interruption": { - "type": "bool", - "description": "Whether the playback of this message can be interrupted by the end user's speech and the client can then starts the next Dialogflow request.", - "description_kind": "plain", - "computed": true - }, - "ssml": { - "type": "string", - "description": "The SSML text to be synthesized. For more information, see SSML.", - "description_kind": "plain", - "optional": true - }, - "text": { - "type": "string", - "description": "The raw text to be synthesized.", - "description_kind": "plain", - "optional": true - } - }, - "description": "A text or ssml response that is preferentially used for TTS output audio synthesis, as described in the comment on the ResponseMessage message.", - "description_kind": "plain" - }, - "max_items": 1 - }, - "play_audio": { - "nesting_mode": "list", - "block": { - "attributes": { - "allow_playback_interruption": { - "type": "bool", - "description": "Whether the playback of this message can be interrupted by the end user's speech and the client can then starts the next Dialogflow request.", - "description_kind": "plain", - "computed": true - }, - "audio_uri": { - "type": "string", - "description": "URI of the audio clip. Dialogflow does not impose any validation on this value. It is specific to the client that reads it.", - "description_kind": "plain", - "required": true - } - }, - "description": "Specifies an audio clip to be played by the client as part of the response.", - "description_kind": "plain" - }, - "max_items": 1 - }, - "telephony_transfer_call": { - "nesting_mode": "list", - "block": { - "attributes": { - "phone_number": { - "type": "string", - "description": "Transfer the call to a phone number in E.164 format.", - "description_kind": "plain", - "required": true - } - }, - "description": "Represents the signal that telles the client to transfer the phone call connected to the agent to a third-party endpoint.", - "description_kind": "plain" - }, - "max_items": 1 - }, - "text": { - "nesting_mode": "list", - "block": { - "attributes": { - "allow_playback_interruption": { - "type": "bool", - "description": "Whether the playback of this message can be interrupted by the end user's speech and the client can then starts the next Dialogflow request.", - "description_kind": "plain", - "computed": true - }, - "text": { - "type": [ - "list", - "string" - ], - "description": "A collection of text responses.", - "description_kind": "plain", - "optional": true - } - }, - "description": "The text response message.", - "description_kind": "plain" - }, - "max_items": 1 - } - }, - "description": "The list of rich message responses to present to the user.", - "description_kind": "plain" - } + "models": { + "type": [ + "map", + "string" + ], + "description": "Mapping from language to Speech-to-Text model. The mapped Speech-to-Text model will be selected for requests from its corresponding language. For more information, see [Speech models](https://cloud.google.com/dialogflow/cx/docs/concept/speech-models).\nAn object containing a list of **\"key\": value** pairs. Example: **{ \"name\": \"wrench\", \"mass\": \"1.3kg\", \"count\": \"3\" }**.", + "description_kind": "plain", + "optional": true }, - "set_parameter_actions": { - "nesting_mode": "list", - "block": { - "attributes": { - "parameter": { - "type": "string", - "description": "Display name of the parameter.", - "description_kind": "plain", - "optional": true - }, - "value": { - "type": "string", - "description": "The new JSON-encoded value of the parameter. A null value clears the parameter.", - "description_kind": "plain", - "optional": true - } - }, - "description": "Set parameter values before executing the webhook.", - "description_kind": "plain" - } + "no_speech_timeout": { + "type": "string", + "description": "Timeout before detecting no speech.\nA duration in seconds with up to nine fractional digits, ending with 's'. Example: \"3.5s\".", + "description_kind": "plain", + "optional": true + }, + "use_timeout_based_endpointing": { + "type": "bool", + "description": "Use timeout based endpointing, interpreting endpointer sensitivy as seconds of timeout value.", + "description_kind": "plain", + "optional": true } }, - "description": "The fulfillment to call when the event occurs. Handling webhook errors with a fulfillment enabled with webhook could cause infinite loop. It is invalid to specify such fulfillment for a handler handling webhooks.", + "description": "Settings for speech to text detection. Exposed at the following levels:\n* Agent level\n* Flow level\n* Page level\n* Parameter level", "description_kind": "plain" }, "max_items": 1 } }, - "description": "A flow's event handlers serve two purposes:\nThey are responsible for handling events (e.g. no match, webhook errors) in the flow.\nThey are inherited by every page's [event handlers][Page.event_handlers], which can be used to handle common events regardless of the current page. Event handlers defined in the page have higher priority than those defined in the flow.\nUnlike transitionRoutes, these handlers are evaluated on a first-match basis. The first one that matches the event get executed, with the rest being ignored.", - "description_kind": "plain" - } - }, - "nlu_settings": { - "nesting_mode": "list", - "block": { - "attributes": { - "classification_threshold": { - "type": "number", - "description": "To filter out false positive results and still get variety in matched natural language inputs for your agent, you can tune the machine learning classification threshold.\nIf the returned score value is less than the threshold value, then a no-match event will be triggered. The score values range from 0.0 (completely uncertain) to 1.0 (completely certain). If set to 0.0, the default of 0.3 is used.", - "description_kind": "plain", - "optional": true - }, - "model_training_mode": { - "type": "string", - "description": "Indicates NLU model training mode.\n* MODEL_TRAINING_MODE_AUTOMATIC: NLU model training is automatically triggered when a flow gets modified. User can also manually trigger model training in this mode.\n* MODEL_TRAINING_MODE_MANUAL: User needs to manually trigger NLU model training. Best for large flows whose models take long time to train. Possible values: [\"MODEL_TRAINING_MODE_AUTOMATIC\", \"MODEL_TRAINING_MODE_MANUAL\"]", - "description_kind": "plain", - "optional": true - }, - "model_type": { - "type": "string", - "description": "Indicates the type of NLU model.\n* MODEL_TYPE_STANDARD: Use standard NLU model.\n* MODEL_TYPE_ADVANCED: Use advanced NLU model. Possible values: [\"MODEL_TYPE_STANDARD\", \"MODEL_TYPE_ADVANCED\"]", - "description_kind": "plain", - "optional": true - } - }, - "description": "NLU related settings of the flow.", + "description": "Hierarchical advanced settings for this flow. The settings exposed at the lower level overrides the settings exposed at the higher level.\nHierarchy: Agent-\u003eFlow-\u003ePage-\u003eFulfillment/Parameter.", "description_kind": "plain" }, "max_items": 1 }, - "timeouts": { - "nesting_mode": "single", - "block": { - "attributes": { - "create": { - "type": "string", - "description_kind": "plain", - "optional": true - }, - "delete": { - "type": "string", - "description_kind": "plain", - "optional": true - }, - "update": { - "type": "string", - "description_kind": "plain", - "optional": true - } - }, - "description_kind": "plain" - } - }, - "transition_routes": { + "event_handlers": { "nesting_mode": "list", "block": { "attributes": { - "condition": { - "type": "string", - "description": "The condition to evaluate against form parameters or session parameters.\nAt least one of intent or condition must be specified. When both intent and condition are specified, the transition can only happen when both are fulfilled.", - "description_kind": "plain", - "optional": true - }, - "intent": { + "event": { "type": "string", - "description": "The unique identifier of an Intent.\nFormat: projects/\u003cProject ID\u003e/locations/\u003cLocation ID\u003e/agents/\u003cAgent ID\u003e/intents/\u003cIntent ID\u003e. Indicates that the transition can only happen when the given intent is matched. At least one of intent or condition must be specified. When both intent and condition are specified, the transition can only happen when both are fulfilled.", + "description": "The name of the event to handle.", "description_kind": "plain", "optional": true }, "name": { "type": "string", - "description": "The unique identifier of this transition route.", + "description": "The unique identifier of this event handler.", + "description_kind": "plain", + "computed": true + }, + "target_flow": { + "type": "string", + "description": "The target flow to transition to.\nFormat: projects/\u003cProject ID\u003e/locations/\u003cLocation ID\u003e/agents/\u003cAgent ID\u003e/flows/\u003cFlow ID\u003e.", + "description_kind": "plain", + "optional": true + }, + "target_page": { + "type": "string", + "description": "The target page to transition to.\nFormat: projects/\u003cProject ID\u003e/locations/\u003cLocation ID\u003e/agents/\u003cAgent ID\u003e/flows/\u003cFlow ID\u003e/pages/\u003cPage ID\u003e.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "trigger_fulfillment": { + "nesting_mode": "list", + "block": { + "attributes": { + "return_partial_responses": { + "type": "bool", + "description": "Whether Dialogflow should return currently queued fulfillment response messages in streaming APIs. If a webhook is specified, it happens before Dialogflow invokes webhook. Warning: 1) This flag only affects streaming API. Responses are still queued and returned once in non-streaming API. 2) The flag can be enabled in any fulfillment but only the first 3 partial responses will be returned. You may only want to apply it to fulfillments that have slow webhooks.", + "description_kind": "plain", + "optional": true + }, + "tag": { + "type": "string", + "description": "The tag used by the webhook to identify which fulfillment is being called. This field is required if webhook is specified.", + "description_kind": "plain", + "optional": true + }, + "webhook": { + "type": "string", + "description": "The webhook to call. Format: projects/\u003cProject ID\u003e/locations/\u003cLocation ID\u003e/agents/\u003cAgent ID\u003e/webhooks/\u003cWebhook ID\u003e.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "conditional_cases": { + "nesting_mode": "list", + "block": { + "attributes": { + "cases": { + "type": "string", + "description": "A JSON encoded list of cascading if-else conditions. Cases are mutually exclusive. The first one with a matching condition is selected, all the rest ignored.\nSee [Case](https://cloud.google.com/dialogflow/cx/docs/reference/rest/v3/Fulfillment#case) for the schema.", + "description_kind": "plain", + "optional": true + } + }, + "description": "Conditional cases for this fulfillment.", + "description_kind": "plain" + } + }, + "messages": { + "nesting_mode": "list", + "block": { + "attributes": { + "channel": { + "type": "string", + "description": "The channel which the response is associated with. Clients can specify the channel via QueryParameters.channel, and only associated channel response will be returned.", + "description_kind": "plain", + "optional": true + }, + "payload": { + "type": "string", + "description": "A custom, platform-specific payload.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "conversation_success": { + "nesting_mode": "list", + "block": { + "attributes": { + "metadata": { + "type": "string", + "description": "Custom metadata. Dialogflow doesn't impose any structure on this.", + "description_kind": "plain", + "optional": true + } + }, + "description": "Indicates that the conversation succeeded, i.e., the bot handled the issue that the customer talked to it about.\nDialogflow only uses this to determine which conversations should be counted as successful and doesn't process the metadata in this message in any way. Note that Dialogflow also considers conversations that get to the conversation end page as successful even if they don't return ConversationSuccess.\nYou may set this, for example:\n* In the entryFulfillment of a Page if entering the page indicates that the conversation succeeded.\n* In a webhook response when you determine that you handled the customer issue.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "live_agent_handoff": { + "nesting_mode": "list", + "block": { + "attributes": { + "metadata": { + "type": "string", + "description": "Custom metadata. Dialogflow doesn't impose any structure on this.", + "description_kind": "plain", + "optional": true + } + }, + "description": "Indicates that the conversation should be handed off to a live agent.\nDialogflow only uses this to determine which conversations were handed off to a human agent for measurement purposes. What else to do with this signal is up to you and your handoff procedures.\nYou may set this, for example:\n* In the entryFulfillment of a Page if entering the page indicates something went extremely wrong in the conversation.\n* In a webhook response when you determine that the customer issue can only be handled by a human.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "output_audio_text": { + "nesting_mode": "list", + "block": { + "attributes": { + "allow_playback_interruption": { + "type": "bool", + "description": "Whether the playback of this message can be interrupted by the end user's speech and the client can then starts the next Dialogflow request.", + "description_kind": "plain", + "computed": true + }, + "ssml": { + "type": "string", + "description": "The SSML text to be synthesized. For more information, see SSML.", + "description_kind": "plain", + "optional": true + }, + "text": { + "type": "string", + "description": "The raw text to be synthesized.", + "description_kind": "plain", + "optional": true + } + }, + "description": "A text or ssml response that is preferentially used for TTS output audio synthesis, as described in the comment on the ResponseMessage message.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "play_audio": { + "nesting_mode": "list", + "block": { + "attributes": { + "allow_playback_interruption": { + "type": "bool", + "description": "Whether the playback of this message can be interrupted by the end user's speech and the client can then starts the next Dialogflow request.", + "description_kind": "plain", + "computed": true + }, + "audio_uri": { + "type": "string", + "description": "URI of the audio clip. Dialogflow does not impose any validation on this value. It is specific to the client that reads it.", + "description_kind": "plain", + "required": true + } + }, + "description": "Specifies an audio clip to be played by the client as part of the response.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "telephony_transfer_call": { + "nesting_mode": "list", + "block": { + "attributes": { + "phone_number": { + "type": "string", + "description": "Transfer the call to a phone number in E.164 format.", + "description_kind": "plain", + "required": true + } + }, + "description": "Represents the signal that telles the client to transfer the phone call connected to the agent to a third-party endpoint.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "text": { + "nesting_mode": "list", + "block": { + "attributes": { + "allow_playback_interruption": { + "type": "bool", + "description": "Whether the playback of this message can be interrupted by the end user's speech and the client can then starts the next Dialogflow request.", + "description_kind": "plain", + "computed": true + }, + "text": { + "type": [ + "list", + "string" + ], + "description": "A collection of text responses.", + "description_kind": "plain", + "optional": true + } + }, + "description": "The text response message.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "The list of rich message responses to present to the user.", + "description_kind": "plain" + } + }, + "set_parameter_actions": { + "nesting_mode": "list", + "block": { + "attributes": { + "parameter": { + "type": "string", + "description": "Display name of the parameter.", + "description_kind": "plain", + "optional": true + }, + "value": { + "type": "string", + "description": "The new JSON-encoded value of the parameter. A null value clears the parameter.", + "description_kind": "plain", + "optional": true + } + }, + "description": "Set parameter values before executing the webhook.", + "description_kind": "plain" + } + } + }, + "description": "The fulfillment to call when the event occurs. Handling webhook errors with a fulfillment enabled with webhook could cause infinite loop. It is invalid to specify such fulfillment for a handler handling webhooks.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "A flow's event handlers serve two purposes:\nThey are responsible for handling events (e.g. no match, webhook errors) in the flow.\nThey are inherited by every page's [event handlers][Page.event_handlers], which can be used to handle common events regardless of the current page. Event handlers defined in the page have higher priority than those defined in the flow.\nUnlike transitionRoutes, these handlers are evaluated on a first-match basis. The first one that matches the event get executed, with the rest being ignored.", + "description_kind": "plain" + } + }, + "nlu_settings": { + "nesting_mode": "list", + "block": { + "attributes": { + "classification_threshold": { + "type": "number", + "description": "To filter out false positive results and still get variety in matched natural language inputs for your agent, you can tune the machine learning classification threshold.\nIf the returned score value is less than the threshold value, then a no-match event will be triggered. The score values range from 0.0 (completely uncertain) to 1.0 (completely certain). If set to 0.0, the default of 0.3 is used.", + "description_kind": "plain", + "optional": true + }, + "model_training_mode": { + "type": "string", + "description": "Indicates NLU model training mode.\n* MODEL_TRAINING_MODE_AUTOMATIC: NLU model training is automatically triggered when a flow gets modified. User can also manually trigger model training in this mode.\n* MODEL_TRAINING_MODE_MANUAL: User needs to manually trigger NLU model training. Best for large flows whose models take long time to train. Possible values: [\"MODEL_TRAINING_MODE_AUTOMATIC\", \"MODEL_TRAINING_MODE_MANUAL\"]", + "description_kind": "plain", + "optional": true + }, + "model_type": { + "type": "string", + "description": "Indicates the type of NLU model.\n* MODEL_TYPE_STANDARD: Use standard NLU model.\n* MODEL_TYPE_ADVANCED: Use advanced NLU model. Possible values: [\"MODEL_TYPE_STANDARD\", \"MODEL_TYPE_ADVANCED\"]", + "description_kind": "plain", + "optional": true + } + }, + "description": "NLU related settings of the flow.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "timeouts": { + "nesting_mode": "single", + "block": { + "attributes": { + "create": { + "type": "string", + "description_kind": "plain", + "optional": true + }, + "delete": { + "type": "string", + "description_kind": "plain", + "optional": true + }, + "update": { + "type": "string", + "description_kind": "plain", + "optional": true + } + }, + "description_kind": "plain" + } + }, + "transition_routes": { + "nesting_mode": "list", + "block": { + "attributes": { + "condition": { + "type": "string", + "description": "The condition to evaluate against form parameters or session parameters.\nAt least one of intent or condition must be specified. When both intent and condition are specified, the transition can only happen when both are fulfilled.", + "description_kind": "plain", + "optional": true + }, + "intent": { + "type": "string", + "description": "The unique identifier of an Intent.\nFormat: projects/\u003cProject ID\u003e/locations/\u003cLocation ID\u003e/agents/\u003cAgent ID\u003e/intents/\u003cIntent ID\u003e. Indicates that the transition can only happen when the given intent is matched. At least one of intent or condition must be specified. When both intent and condition are specified, the transition can only happen when both are fulfilled.", + "description_kind": "plain", + "optional": true + }, + "name": { + "type": "string", + "description": "The unique identifier of this transition route.", "description_kind": "plain", "computed": true }, @@ -93468,6 +94726,14 @@ "chat_engine_config": { "nesting_mode": "list", "block": { + "attributes": { + "dialogflow_agent_to_link": { + "type": "string", + "description": "The resource name of an existing Dialogflow agent to link to this Chat Engine. Format: 'projects/\u003cProject_ID\u003e/locations/\u003cLocation_ID\u003e/agents/\u003cAgent_ID\u003e'.\nExactly one of 'agent_creation_config' or 'dialogflow_agent_to_link' must be set.", + "description_kind": "plain", + "optional": true + } + }, "block_types": { "agent_creation_config": { "nesting_mode": "list", @@ -93498,10 +94764,9 @@ "required": true } }, - "description": "The configuration to generate the Dialogflow agent that is associated to this Engine.", + "description": "The configuration to generate the Dialogflow agent that is associated to this Engine.\nExactly one of 'agent_creation_config' or 'dialogflow_agent_to_link' must be set.", "description_kind": "plain" }, - "min_items": 1, "max_items": 1 } }, @@ -94022,6 +95287,149 @@ "description_kind": "plain" } }, + "google_discovery_engine_target_site": { + "version": 0, + "block": { + "attributes": { + "data_store_id": { + "type": "string", + "description": "The unique id of the data store.", + "description_kind": "plain", + "required": true + }, + "exact_match": { + "type": "bool", + "description": "If set to false, a uri_pattern is generated to include all pages whose\naddress contains the provided_uri_pattern. If set to true, an uri_pattern\nis generated to try to be an exact match of the provided_uri_pattern or\njust the specific page if the provided_uri_pattern is a specific one.\nprovided_uri_pattern is always normalized to generate the URI pattern to\nbe used by the search engine.", + "description_kind": "plain", + "optional": true + }, + "failure_reason": { + "type": [ + "list", + [ + "object", + { + "quota_failure": [ + "list", + [ + "object", + { + "total_required_quota": "number" + } + ] + ] + } + ] + ], + "description": "Site search indexing failure reasons.", + "description_kind": "plain", + "computed": true + }, + "generated_uri_pattern": { + "type": "string", + "description": "This is system-generated based on the 'provided_uri_pattern'.", + "description_kind": "plain", + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "indexing_status": { + "type": "string", + "description": "The indexing status.", + "description_kind": "plain", + "computed": true + }, + "location": { + "type": "string", + "description": "The geographic location where the data store should reside. The value can\nonly be one of \"global\", \"us\" and \"eu\".", + "description_kind": "plain", + "required": true + }, + "name": { + "type": "string", + "description": "The unique full resource name of the target site. Values are of the format\n'projects/{project}/locations/{location}/collections/{collection_id}/dataStores/{data_store_id}/siteSearchEngine/targetSites/{target_site_id}'.\nThis field must be a UTF-8 encoded string with a length limit of 1024\ncharacters.", + "description_kind": "plain", + "computed": true + }, + "project": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "provided_uri_pattern": { + "type": "string", + "description": "The user provided URI pattern from which the 'generated_uri_pattern' is\ngenerated.", + "description_kind": "plain", + "required": true + }, + "root_domain_uri": { + "type": "string", + "description": "Root domain of the 'provided_uri_pattern'.", + "description_kind": "plain", + "computed": true + }, + "site_verification_info": { + "type": [ + "list", + [ + "object", + { + "site_verification_state": "string", + "verify_time": "string" + } + ] + ], + "description": "Site ownership and validity verification status.", + "description_kind": "plain", + "computed": true + }, + "target_site_id": { + "type": "string", + "description": "The unique id of the target site.", + "description_kind": "plain", + "computed": true + }, + "type": { + "type": "string", + "description": "The possible target site types. Possible values: [\"INCLUDE\", \"EXCLUDE\"]", + "description_kind": "plain", + "optional": true + }, + "update_time": { + "type": "string", + "description": "The target site's last updated time.", + "description_kind": "plain", + "computed": true + } + }, + "block_types": { + "timeouts": { + "nesting_mode": "single", + "block": { + "attributes": { + "create": { + "type": "string", + "description_kind": "plain", + "optional": true + }, + "delete": { + "type": "string", + "description_kind": "plain", + "optional": true + } + }, + "description_kind": "plain" + } + } + }, + "description_kind": "plain" + } + }, "google_dns_managed_zone": { "version": 0, "block": { @@ -98129,6 +99537,18 @@ "description_kind": "plain", "computed": true }, + "deletion_protection_enabled": { + "type": "bool", + "description": "Indicates whether the instance is protected against deletion.", + "description_kind": "plain", + "optional": true + }, + "deletion_protection_reason": { + "type": "string", + "description": "The reason for enabling deletion protection.", + "description_kind": "plain", + "optional": true + }, "description": { "type": "string", "description": "A description of the instance.", @@ -99798,6 +101218,15 @@ "description": "The resource name of the parent Folder or Organization. Must be of the form folders/{folder_id} or organizations/{org_id}.", "description_kind": "plain", "required": true + }, + "tags": { + "type": [ + "map", + "string" + ], + "description": "A map of resource manager tags. Resource manager tag keys and values have the same definition as resource manager tags. Keys must be in the format tagKeys/{tag_key_id}, and values are in the format tagValues/456. The field is ignored when empty. This field is only set at create time and modifying this field after creation will trigger recreation. To apply tags to an existing resource, see the google_tags_tag_value resource.", + "description_kind": "plain", + "optional": true } }, "block_types": { @@ -100474,7 +101903,7 @@ "nesting_mode": "list", "block": { "attributes": { - "google_kms_encryption_key": { + "gcp_kms_encryption_key": { "type": "string", "description": "Google Cloud KMS encryption key. Format: projects/*/locations/*/keyRings/*/cryptoKeys/*", "description_kind": "plain", @@ -101774,9 +103203,9 @@ "nesting_mode": "list", "block": { "attributes": { - "google_service_account_email": { + "gcp_service_account_email": { "type": "string", - "description": "The Google Cloud Service Account Email used for auth when secretType is googleServiceAccount", + "description": "The Google Cloud Service Account Email used for auth when secretType is gcpServiceAccount", "description_kind": "plain", "optional": true }, @@ -101832,9 +103261,9 @@ "nesting_mode": "list", "block": { "attributes": { - "google_service_account_email": { + "gcp_service_account_email": { "type": "string", - "description": "The Google Cloud Service Account Email used for auth when secretType is googleServiceAccount", + "description": "The Google Cloud Service Account Email used for auth when secretType is gcpServiceAccount", "description_kind": "plain", "optional": true }, @@ -102640,7 +104069,7 @@ "description_kind": "plain", "optional": true }, - "metrics_google_service_account_email": { + "metrics_gcp_service_account_email": { "type": "string", "description": "The Email of the Google Cloud Service Account (GSA) used for exporting Config Sync metrics to Cloud Monitoring. The GSA should have the Monitoring Metric Writer(roles/monitoring.metricWriter) IAM role. The Kubernetes ServiceAccount `default` in the namespace `config-management-monitoring` should be bound to the GSA.", "description_kind": "plain", @@ -102665,9 +104094,9 @@ "nesting_mode": "list", "block": { "attributes": { - "google_service_account_email": { + "gcp_service_account_email": { "type": "string", - "description": "The GCP Service Account Email used for auth when secretType is googleServiceAccount.", + "description": "The GCP Service Account Email used for auth when secretType is gcpServiceAccount.", "description_kind": "plain", "optional": true }, @@ -102685,7 +104114,7 @@ }, "secret_type": { "type": "string", - "description": "Type of secret configured for access to the Git repo. Must be one of ssh, cookiefile, gcenode, token, googleserviceaccount or none. The validation of this is case-sensitive.", + "description": "Type of secret configured for access to the Git repo. Must be one of ssh, cookiefile, gcenode, token, gcpserviceaccount or none. The validation of this is case-sensitive.", "description_kind": "plain", "optional": true }, @@ -102722,9 +104151,9 @@ "nesting_mode": "list", "block": { "attributes": { - "google_service_account_email": { + "gcp_service_account_email": { "type": "string", - "description": "The GCP Service Account Email used for auth when secret_type is googleserviceaccount. ", + "description": "The GCP Service Account Email used for auth when secret_type is gcpserviceaccount. ", "description_kind": "plain", "optional": true }, @@ -102736,7 +104165,7 @@ }, "secret_type": { "type": "string", - "description": "Type of secret configured for access to the OCI Image. Must be one of gcenode, googleserviceaccount or none. The validation of this is case-sensitive.", + "description": "Type of secret configured for access to the OCI Image. Must be one of gcenode, gcpserviceaccount or none. The validation of this is case-sensitive.", "description_kind": "plain", "optional": true }, @@ -104918,7 +106347,7 @@ "attributes": { "username": { "type": "string", - "description": "The name of the user, e.g. 'my-google-id@gmail.com'.", + "description": "The name of the user, e.g. 'my-gcp-id@gmail.com'.", "description_kind": "plain", "required": true } @@ -105994,7 +107423,7 @@ "attributes": { "username": { "type": "string", - "description": "The name of the user, e.g. 'my-google-id@gmail.com'.", + "description": "The name of the user, e.g. 'my-gcp-id@gmail.com'.", "description_kind": "plain", "required": true } @@ -106615,7 +108044,7 @@ "attributes": { "username": { "type": "string", - "description": "The name of the user, e.g. 'my-google-id@gmail.com'.", + "description": "The name of the user, e.g. 'my-gcp-id@gmail.com'.", "description_kind": "plain", "required": true } @@ -107369,7 +108798,7 @@ }, "image_type": { "type": "string", - "description": "The OS image to be used for each node in a node pool.\nCurrently 'cos', 'ubuntu', 'ubuntu_containerd' and 'windows' are supported.", + "description": "The OS image to be used for each node in a node pool.\nCurrently 'cos', 'cos_cgv2', 'ubuntu', 'ubuntu_cgv2', 'ubuntu_containerd' and 'windows' are supported.", "description_kind": "plain", "required": true }, @@ -108086,7 +109515,7 @@ "attributes": { "pubsub_topic": { "type": "string", - "description": "The Cloud Pub/Sub topic that notifications of changes are published on. Supplied by the client.\nPubsubMessage.Data will contain the resource name. PubsubMessage.MessageId is the ID of this message.\nIt is guaranteed to be unique within the topic. PubsubMessage.PublishTime is the time at which the message\nwas published. Notifications are only sent if the topic is non-empty. Topic names must be scoped to a\nproject. service-PROJECT_NUMBER@google-sa-healthcare.iam.gserviceaccount.com must have publisher permissions on the given\nCloud Pub/Sub topic. Not having adequate permissions will cause the calls that send notifications to fail.", + "description": "The Cloud Pub/Sub topic that notifications of changes are published on. Supplied by the client.\nPubsubMessage.Data will contain the resource name. PubsubMessage.MessageId is the ID of this message.\nIt is guaranteed to be unique within the topic. PubsubMessage.PublishTime is the time at which the message\nwas published. Notifications are only sent if the topic is non-empty. Topic names must be scoped to a\nproject. service-PROJECT_NUMBER@gcp-sa-healthcare.iam.gserviceaccount.com must have publisher permissions on the given\nCloud Pub/Sub topic. Not having adequate permissions will cause the calls that send notifications to fail.", "description_kind": "plain", "required": true }, @@ -108387,7 +109816,7 @@ "attributes": { "pubsub_topic": { "type": "string", - "description": "The Cloud Pub/Sub topic that notifications of changes are published on. Supplied by the client.\nPubsubMessage.Data will contain the resource name. PubsubMessage.MessageId is the ID of this message.\nIt is guaranteed to be unique within the topic. PubsubMessage.PublishTime is the time at which the message\nwas published. Notifications are only sent if the topic is non-empty. Topic names must be scoped to a\nproject. service-PROJECT_NUMBER@google-sa-healthcare.iam.gserviceaccount.com must have publisher permissions on the given\nCloud Pub/Sub topic. Not having adequate permissions will cause the calls that send notifications to fail.", + "description": "The Cloud Pub/Sub topic that notifications of changes are published on. Supplied by the client.\nPubsubMessage.Data will contain the resource name. PubsubMessage.MessageId is the ID of this message.\nIt is guaranteed to be unique within the topic. PubsubMessage.PublishTime is the time at which the message\nwas published. Notifications are only sent if the topic is non-empty. Topic names must be scoped to a\nproject. service-PROJECT_NUMBER@gcp-sa-healthcare.iam.gserviceaccount.com must have publisher permissions on the given\nCloud Pub/Sub topic. Not having adequate permissions will cause the calls that send notifications to fail.", "description_kind": "plain", "required": true } @@ -108404,7 +109833,7 @@ "attributes": { "pubsub_topic": { "type": "string", - "description": "The Cloud Pub/Sub topic that notifications of changes are published on. Supplied by the client.\nPubsubMessage.Data will contain the resource name. PubsubMessage.MessageId is the ID of this message.\nIt is guaranteed to be unique within the topic. PubsubMessage.PublishTime is the time at which the message\nwas published. Notifications are only sent if the topic is non-empty. Topic names must be scoped to a\nproject. service-PROJECT_NUMBER@google-sa-healthcare.iam.gserviceaccount.com must have publisher permissions on the given\nCloud Pub/Sub topic. Not having adequate permissions will cause the calls that send notifications to fail.", + "description": "The Cloud Pub/Sub topic that notifications of changes are published on. Supplied by the client.\nPubsubMessage.Data will contain the resource name. PubsubMessage.MessageId is the ID of this message.\nIt is guaranteed to be unique within the topic. PubsubMessage.PublishTime is the time at which the message\nwas published. Notifications are only sent if the topic is non-empty. Topic names must be scoped to a\nproject. service-PROJECT_NUMBER@gcp-sa-healthcare.iam.gserviceaccount.com must have publisher permissions on the given\nCloud Pub/Sub topic. Not having adequate permissions will cause the calls that send notifications to fail.", "description_kind": "plain", "required": true }, @@ -108759,7 +110188,7 @@ "attributes": { "pubsub_topic": { "type": "string", - "description": "The Cloud Pub/Sub topic that notifications of changes are published on. Supplied by the client.\nPubsubMessage.Data will contain the resource name. PubsubMessage.MessageId is the ID of this message.\nIt is guaranteed to be unique within the topic. PubsubMessage.PublishTime is the time at which the message\nwas published. Notifications are only sent if the topic is non-empty. Topic names must be scoped to a\nproject. service-PROJECT_NUMBER@google-sa-healthcare.iam.gserviceaccount.com must have publisher permissions on the given\nCloud Pub/Sub topic. Not having adequate permissions will cause the calls that send notifications to fail.", + "description": "The Cloud Pub/Sub topic that notifications of changes are published on. Supplied by the client.\nPubsubMessage.Data will contain the resource name. PubsubMessage.MessageId is the ID of this message.\nIt is guaranteed to be unique within the topic. PubsubMessage.PublishTime is the time at which the message\nwas published. Notifications are only sent if the topic is non-empty. Topic names must be scoped to a\nproject. service-PROJECT_NUMBER@gcp-sa-healthcare.iam.gserviceaccount.com must have publisher permissions on the given\nCloud Pub/Sub topic. Not having adequate permissions will cause the calls that send notifications to fail.", "description_kind": "plain", "required": true } @@ -108781,7 +110210,7 @@ }, "pubsub_topic": { "type": "string", - "description": "The Cloud Pub/Sub topic that notifications of changes are published on. Supplied by the client.\nPubsubMessage.Data will contain the resource name. PubsubMessage.MessageId is the ID of this message.\nIt is guaranteed to be unique within the topic. PubsubMessage.PublishTime is the time at which the message\nwas published. Notifications are only sent if the topic is non-empty. Topic names must be scoped to a\nproject. service-PROJECT_NUMBER@google-sa-healthcare.iam.gserviceaccount.com must have publisher permissions on the given\nCloud Pub/Sub topic. Not having adequate permissions will cause the calls that send notifications to fail.\n\nIf a notification cannot be published to Cloud Pub/Sub, errors will be logged to Stackdriver", + "description": "The Cloud Pub/Sub topic that notifications of changes are published on. Supplied by the client.\nPubsubMessage.Data will contain the resource name. PubsubMessage.MessageId is the ID of this message.\nIt is guaranteed to be unique within the topic. PubsubMessage.PublishTime is the time at which the message\nwas published. Notifications are only sent if the topic is non-empty. Topic names must be scoped to a\nproject. service-PROJECT_NUMBER@gcp-sa-healthcare.iam.gserviceaccount.com must have publisher permissions on the given\nCloud Pub/Sub topic. Not having adequate permissions will cause the calls that send notifications to fail.\n\nIf a notification cannot be published to Cloud Pub/Sub, errors will be logged to Stackdriver", "description_kind": "plain", "required": true } @@ -109003,19 +110432,28 @@ "description_kind": "plain" } }, - "google_iam_access_boundary_policy": { + "google_healthcare_pipeline_job": { "version": 0, "block": { "attributes": { - "display_name": { + "dataset": { "type": "string", - "description": "The display name of the rule.", + "description": "Healthcare Dataset under which the Pipeline Job is to run", + "description_kind": "plain", + "required": true + }, + "disable_lineage": { + "type": "bool", + "description": "If true, disables writing lineage for the pipeline.", "description_kind": "plain", "optional": true }, - "etag": { - "type": "string", - "description": "The hash of the resource. Used internally during updates.", + "effective_labels": { + "type": [ + "map", + "string" + ], + "description": "All of labels (key/value pairs) present on the resource in GCP, including the labels configured through Terraform, other clients and services.", "description_kind": "plain", "computed": true }, @@ -109025,98 +110463,452 @@ "optional": true, "computed": true }, - "name": { + "labels": { + "type": [ + "map", + "string" + ], + "description": "User-supplied key-value pairs used to organize Pipeline Jobs.\nLabel keys must be between 1 and 63 characters long, have a UTF-8 encoding of\nmaximum 128 bytes, and must conform to the following PCRE regular expression:\n[\\p{Ll}\\p{Lo}][\\p{Ll}\\p{Lo}\\p{N}_-]{0,62}\nLabel values are optional, must be between 1 and 63 characters long, have a\nUTF-8 encoding of maximum 128 bytes, and must conform to the following PCRE\nregular expression: [\\p{Ll}\\p{Lo}\\p{N}_-]{0,63}\nNo more than 64 labels can be associated with a given pipeline.\nAn object containing a list of \"key\": value pairs.\nExample: { \"name\": \"wrench\", \"mass\": \"1.3kg\", \"count\": \"3\" }.\n\n\n**Note**: This field is non-authoritative, and will only manage the labels present in your configuration.\nPlease refer to the field 'effective_labels' for all of the labels present on the resource.", + "description_kind": "plain", + "optional": true + }, + "location": { "type": "string", - "description": "The name of the policy.", + "description": "Location where the Pipeline Job is to run", "description_kind": "plain", "required": true }, - "parent": { + "name": { "type": "string", - "description": "The attachment point is identified by its URL-encoded full resource name.", + "description": "Specifies the name of the pipeline job. This field is user-assigned.", "description_kind": "plain", "required": true + }, + "self_link": { + "type": "string", + "description": "The fully qualified name of this dataset", + "description_kind": "plain", + "computed": true + }, + "terraform_labels": { + "type": [ + "map", + "string" + ], + "description": "The combination of labels configured directly on the resource\n and default labels configured on the provider.", + "description_kind": "plain", + "computed": true } }, "block_types": { - "rules": { + "backfill_pipeline_job": { "nesting_mode": "list", "block": { "attributes": { - "description": { + "mapping_pipeline_job": { "type": "string", - "description": "The description of the rule.", + "description": "Specifies the mapping pipeline job to backfill, the name format\nshould follow: projects/{projectId}/locations/{locationId}/datasets/{datasetId}/pipelineJobs/{pipelineJobId}.", + "description_kind": "plain", + "optional": true + } + }, + "description": "Specifies the backfill configuration.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "mapping_pipeline_job": { + "nesting_mode": "list", + "block": { + "attributes": { + "fhir_store_destination": { + "type": "string", + "description": "If set, the mapping pipeline will write snapshots to this\nFHIR store without assigning stable IDs. You must\ngrant your pipeline project's Cloud Healthcare Service\nAgent serviceaccount healthcare.fhirResources.executeBundle\nand healthcare.fhirResources.create permissions on the\ndestination store. The destination store must set\n[disableReferentialIntegrity][FhirStore.disable_referential_integrity]\nto true. The destination store must use FHIR version R4.\nFormat: project/{projectID}/locations/{locationID}/datasets/{datasetName}/fhirStores/{fhirStoreID}.", + "description_kind": "plain", + "optional": true + }, + "reconciliation_destination": { + "type": "bool", + "description": "If set to true, a mapping pipeline will send output snapshots\nto the reconciliation pipeline in its dataset. A reconciliation\npipeline must exist in this dataset before a mapping pipeline\nwith a reconciliation destination can be created.", "description_kind": "plain", "optional": true } }, "block_types": { - "access_boundary_rule": { + "fhir_streaming_source": { "nesting_mode": "list", "block": { "attributes": { - "available_permissions": { - "type": [ - "list", - "string" - ], - "description": "A list of permissions that may be allowed for use on the specified resource.", + "description": { + "type": "string", + "description": "Describes the streaming FHIR data source.", "description_kind": "plain", "optional": true }, - "available_resource": { + "fhir_store": { "type": "string", - "description": "The full resource name of a Google Cloud resource entity.", + "description": "The path to the FHIR store in the format projects/{projectId}/locations/{locationId}/datasets/{datasetId}/fhirStores/{fhirStoreId}.", + "description_kind": "plain", + "required": true + } + }, + "description": "A streaming FHIR data source.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "mapping_config": { + "nesting_mode": "list", + "block": { + "attributes": { + "description": { + "type": "string", + "description": "Describes the mapping configuration.", "description_kind": "plain", "optional": true } }, "block_types": { - "availability_condition": { + "whistle_config_source": { "nesting_mode": "list", "block": { "attributes": { - "description": { + "import_uri_prefix": { "type": "string", - "description": "Description of the expression. This is a longer text which describes the expression,\ne.g. when hovered over it in a UI.", + "description": "Directory path where all the Whistle files are located.\nExample: gs://{bucket-id}/{path/to/import-root/dir}", "description_kind": "plain", - "optional": true + "required": true }, - "expression": { + "uri": { "type": "string", - "description": "Textual representation of an expression in Common Expression Language syntax.", + "description": "Main configuration file which has the entrypoint or the root function.\nExample: gs://{bucket-id}/{path/to/import-root/dir}/entrypoint-file-name.wstl.", "description_kind": "plain", "required": true - }, - "location": { + } + }, + "description": "Specifies the path to the mapping configuration for harmonization pipeline.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "The location of the mapping configuration.", + "description_kind": "plain" + }, + "min_items": 1, + "max_items": 1 + } + }, + "description": "Specifies mapping configuration.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "reconciliation_pipeline_job": { + "nesting_mode": "list", + "block": { + "attributes": { + "fhir_store_destination": { + "type": "string", + "description": "The harmonized FHIR store to write harmonized FHIR resources to,\nin the format of: project/{projectID}/locations/{locationID}/datasets/{datasetName}/fhirStores/{id}", + "description_kind": "plain", + "optional": true + }, + "matching_uri_prefix": { + "type": "string", + "description": "Specifies the top level directory of the matching configs used\nin all mapping pipelines, which extract properties for resources\nto be matched on.\nExample: gs://{bucket-id}/{path/to/matching/configs}", + "description_kind": "plain", + "required": true + } + }, + "block_types": { + "merge_config": { + "nesting_mode": "list", + "block": { + "attributes": { + "description": { + "type": "string", + "description": "Describes the mapping configuration.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "whistle_config_source": { + "nesting_mode": "list", + "block": { + "attributes": { + "import_uri_prefix": { "type": "string", - "description": "String indicating the location of the expression for error reporting,\ne.g. a file name and a position in the file.", + "description": "Directory path where all the Whistle files are located.\nExample: gs://{bucket-id}/{path/to/import-root/dir}", "description_kind": "plain", - "optional": true + "required": true }, - "title": { + "uri": { "type": "string", - "description": "Title for the expression, i.e. a short string describing its purpose.\nThis can be used e.g. in UIs which allow to enter the expression.", + "description": "Main configuration file which has the entrypoint or the root function.\nExample: gs://{bucket-id}/{path/to/import-root/dir}/entrypoint-file-name.wstl.", "description_kind": "plain", - "optional": true + "required": true } }, - "description": "The availability condition further constrains the access allowed by the access boundary rule.", + "description": "Specifies the path to the mapping configuration for harmonization pipeline.", "description_kind": "plain" }, + "min_items": 1, "max_items": 1 } }, - "description": "An access boundary rule in an IAM policy.", + "description": "Specifies the location of the reconciliation configuration.", "description_kind": "plain" }, + "min_items": 1, "max_items": 1 } }, - "description": "Rules to be applied.", + "description": "Specifies reconciliation configuration.", "description_kind": "plain" }, - "min_items": 1 + "max_items": 1 + }, + "timeouts": { + "nesting_mode": "single", + "block": { + "attributes": { + "create": { + "type": "string", + "description_kind": "plain", + "optional": true + }, + "delete": { + "type": "string", + "description_kind": "plain", + "optional": true + }, + "update": { + "type": "string", + "description_kind": "plain", + "optional": true + } + }, + "description_kind": "plain" + } + } + }, + "description_kind": "plain" + } + }, + "google_healthcare_workspace": { + "version": 0, + "block": { + "attributes": { + "dataset": { + "type": "string", + "description": "Identifies the dataset addressed by this request. Must be in the format\n'projects/{project}/locations/{location}/datasets/{dataset}'", + "description_kind": "plain", + "required": true + }, + "effective_labels": { + "type": [ + "map", + "string" + ], + "description": "All of labels (key/value pairs) present on the resource in GCP, including the labels configured through Terraform, other clients and services.", + "description_kind": "plain", + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "labels": { + "type": [ + "map", + "string" + ], + "description": "The user labels. An object containing a list of \"key\": value pairs. Example: { \"name\": \"wrench\", \"mass\": \"1.3kg\", \"count\": \"3\" }\n\n\n**Note**: This field is non-authoritative, and will only manage the labels present in your configuration.\nPlease refer to the field 'effective_labels' for all of the labels present on the resource.", + "description_kind": "plain", + "optional": true + }, + "name": { + "type": "string", + "description": "The name of the workspace, in the format 'projects/{projectId}/locations/{location}/datasets/{datasetId}/dataMapperWorkspaces/{workspaceId}'", + "description_kind": "plain", + "required": true + }, + "terraform_labels": { + "type": [ + "map", + "string" + ], + "description": "The combination of labels configured directly on the resource\n and default labels configured on the provider.", + "description_kind": "plain", + "computed": true + } + }, + "block_types": { + "settings": { + "nesting_mode": "list", + "block": { + "attributes": { + "data_project_ids": { + "type": [ + "list", + "string" + ], + "description": "Project IDs for data projects hosted in a workspace.", + "description_kind": "plain", + "required": true + } + }, + "description": "Settings associated with this workspace.", + "description_kind": "plain" + }, + "min_items": 1, + "max_items": 1 + }, + "timeouts": { + "nesting_mode": "single", + "block": { + "attributes": { + "create": { + "type": "string", + "description_kind": "plain", + "optional": true + }, + "delete": { + "type": "string", + "description_kind": "plain", + "optional": true + }, + "update": { + "type": "string", + "description_kind": "plain", + "optional": true + } + }, + "description_kind": "plain" + } + } + }, + "description_kind": "plain" + } + }, + "google_iam_access_boundary_policy": { + "version": 0, + "block": { + "attributes": { + "display_name": { + "type": "string", + "description": "The display name of the rule.", + "description_kind": "plain", + "optional": true + }, + "etag": { + "type": "string", + "description": "The hash of the resource. Used internally during updates.", + "description_kind": "plain", + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "name": { + "type": "string", + "description": "The name of the policy.", + "description_kind": "plain", + "required": true + }, + "parent": { + "type": "string", + "description": "The attachment point is identified by its URL-encoded full resource name.", + "description_kind": "plain", + "required": true + } + }, + "block_types": { + "rules": { + "nesting_mode": "list", + "block": { + "attributes": { + "description": { + "type": "string", + "description": "The description of the rule.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "access_boundary_rule": { + "nesting_mode": "list", + "block": { + "attributes": { + "available_permissions": { + "type": [ + "list", + "string" + ], + "description": "A list of permissions that may be allowed for use on the specified resource.", + "description_kind": "plain", + "optional": true + }, + "available_resource": { + "type": "string", + "description": "The full resource name of a Google Cloud resource entity.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "availability_condition": { + "nesting_mode": "list", + "block": { + "attributes": { + "description": { + "type": "string", + "description": "Description of the expression. This is a longer text which describes the expression,\ne.g. when hovered over it in a UI.", + "description_kind": "plain", + "optional": true + }, + "expression": { + "type": "string", + "description": "Textual representation of an expression in Common Expression Language syntax.", + "description_kind": "plain", + "required": true + }, + "location": { + "type": "string", + "description": "String indicating the location of the expression for error reporting,\ne.g. a file name and a position in the file.", + "description_kind": "plain", + "optional": true + }, + "title": { + "type": "string", + "description": "Title for the expression, i.e. a short string describing its purpose.\nThis can be used e.g. in UIs which allow to enter the expression.", + "description_kind": "plain", + "optional": true + } + }, + "description": "The availability condition further constrains the access allowed by the access boundary rule.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "An access boundary rule in an IAM policy.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "Rules to be applied.", + "description_kind": "plain" + }, + "min_items": 1 }, "timeouts": { "nesting_mode": "single", @@ -109368,7 +111160,7 @@ }, "workforce_pool_id": { "type": "string", - "description": "The name of the pool. The ID must be a globally unique string of 6 to 63 lowercase letters,\ndigits, or hyphens. It must start with a letter, and cannot have a trailing hyphen.\nThe prefix 'google-' is reserved for use by Google, and may not be specified.", + "description": "The name of the pool. The ID must be a globally unique string of 6 to 63 lowercase letters,\ndigits, or hyphens. It must start with a letter, and cannot have a trailing hyphen.\nThe prefix 'gcp-' is reserved for use by Google, and may not be specified.", "description_kind": "plain", "required": true } @@ -109491,7 +111283,7 @@ }, "provider_id": { "type": "string", - "description": "The ID for the provider, which becomes the final component of the resource name.\nThis value must be 4-32 characters, and may contain the characters [a-z0-9-].\nThe prefix 'google-' is reserved for use by Google, and may not be specified.", + "description": "The ID for the provider, which becomes the final component of the resource name.\nThis value must be 4-32 characters, and may contain the characters [a-z0-9-].\nThe prefix 'gcp-' is reserved for use by Google, and may not be specified.", "description_kind": "plain", "required": true }, @@ -109503,7 +111295,7 @@ }, "workforce_pool_id": { "type": "string", - "description": "The ID to use for the pool, which becomes the final component of the resource name.\nThe IDs must be a globally unique string of 6 to 63 lowercase letters, digits, or hyphens.\nIt must start with a letter, and cannot have a trailing hyphen.\nThe prefix 'google-' is reserved for use by Google, and may not be specified.", + "description": "The ID to use for the pool, which becomes the final component of the resource name.\nThe IDs must be a globally unique string of 6 to 63 lowercase letters, digits, or hyphens.\nIt must start with a letter, and cannot have a trailing hyphen.\nThe prefix 'gcp-' is reserved for use by Google, and may not be specified.", "description_kind": "plain", "required": true } @@ -109773,7 +111565,7 @@ }, "workload_identity_pool_id": { "type": "string", - "description": "The ID to use for the pool, which becomes the final component of the resource name. This\nvalue should be 4-32 characters, and may contain the characters [a-z0-9-]. The prefix\n'google-' is reserved for use by Google, and may not be specified.", + "description": "The ID to use for the pool, which becomes the final component of the resource name. This\nvalue should be 4-32 characters, and may contain the characters [a-z0-9-]. The prefix\n'gcp-' is reserved for use by Google, and may not be specified.", "description_kind": "plain", "required": true } @@ -109869,13 +111661,13 @@ }, "workload_identity_pool_id": { "type": "string", - "description": "The ID used for the pool, which is the final component of the pool resource name. This\nvalue should be 4-32 characters, and may contain the characters [a-z0-9-]. The prefix\n'google-' is reserved for use by Google, and may not be specified.", + "description": "The ID used for the pool, which is the final component of the pool resource name. This\nvalue should be 4-32 characters, and may contain the characters [a-z0-9-]. The prefix\n'gcp-' is reserved for use by Google, and may not be specified.", "description_kind": "plain", "required": true }, "workload_identity_pool_provider_id": { "type": "string", - "description": "The ID for the provider, which becomes the final component of the resource name. This\nvalue must be 4-32 characters, and may contain the characters [a-z0-9-]. The prefix\n'google-' is reserved for use by Google, and may not be specified.", + "description": "The ID for the provider, which becomes the final component of the resource name. This\nvalue must be 4-32 characters, and may contain the characters [a-z0-9-]. The prefix\n'gcp-' is reserved for use by Google, and may not be specified.", "description_kind": "plain", "required": true } @@ -117045,31 +118837,19 @@ "description_kind": "plain" } }, - "google_logging_log_view": { + "google_logging_log_scope": { "version": 0, "block": { "attributes": { - "bucket": { - "type": "string", - "description": "The bucket of the resource", - "description_kind": "plain", - "required": true - }, "create_time": { "type": "string", - "description": "Output only. The creation timestamp of the view.", + "description": "Output only. The creation timestamp of the log scopes.", "description_kind": "plain", "computed": true }, "description": { "type": "string", - "description": "Describes this view.", - "description_kind": "plain", - "optional": true - }, - "filter": { - "type": "string", - "description": "Filter that restricts which log entries in a bucket are visible in this view. Filters are restricted to be a logical AND of ==/!= of any of the following: - originating project/folder/organization/billing account. - resource type - log id For example: SOURCE(\"projects/myproject\") AND resource.type = \"gce_instance\" AND LOG_ID(\"stdout\")", + "description": "Describes this log scopes.", "description_kind": "plain", "optional": true }, @@ -117081,14 +118861,14 @@ }, "location": { "type": "string", - "description": "The location of the resource. The supported locations are: global, us-central1, us-east1, us-west1, asia-east1, europe-west1.", + "description": "The location of the resource. The only supported location is global so far.", "description_kind": "plain", "optional": true, "computed": true }, "name": { "type": "string", - "description": "The resource name of the view. For example: \\'projects/my-project/locations/global/buckets/my-bucket/views/my-view\\'", + "description": "The resource name of the log scope. For example: \\'projects/my-project/locations/global/logScopes/my-log-scope\\'", "description_kind": "plain", "required": true }, @@ -117099,9 +118879,107 @@ "optional": true, "computed": true }, + "resource_names": { + "type": [ + "list", + "string" + ], + "description": "Names of one or more parent resources : * \\'projects/[PROJECT_ID]\\' May alternatively be one or more views : * \\'projects/[PROJECT_ID]/locations/[LOCATION_ID]/buckets/[BUCKET_ID]/views/[VIEW_ID]\\' A log scope can include a maximum of 50 projects and a maximum of 100 resources in total.", + "description_kind": "plain", + "required": true + }, "update_time": { "type": "string", - "description": "Output only. The last update timestamp of the view.", + "description": "Output only. The last update timestamp of the log scopes.", + "description_kind": "plain", + "computed": true + } + }, + "block_types": { + "timeouts": { + "nesting_mode": "single", + "block": { + "attributes": { + "create": { + "type": "string", + "description_kind": "plain", + "optional": true + }, + "delete": { + "type": "string", + "description_kind": "plain", + "optional": true + }, + "update": { + "type": "string", + "description_kind": "plain", + "optional": true + } + }, + "description_kind": "plain" + } + } + }, + "description_kind": "plain" + } + }, + "google_logging_log_view": { + "version": 0, + "block": { + "attributes": { + "bucket": { + "type": "string", + "description": "The bucket of the resource", + "description_kind": "plain", + "required": true + }, + "create_time": { + "type": "string", + "description": "Output only. The creation timestamp of the view.", + "description_kind": "plain", + "computed": true + }, + "description": { + "type": "string", + "description": "Describes this view.", + "description_kind": "plain", + "optional": true + }, + "filter": { + "type": "string", + "description": "Filter that restricts which log entries in a bucket are visible in this view. Filters are restricted to be a logical AND of ==/!= of any of the following: - originating project/folder/organization/billing account. - resource type - log id For example: SOURCE(\"projects/myproject\") AND resource.type = \"gce_instance\" AND LOG_ID(\"stdout\")", + "description_kind": "plain", + "optional": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "location": { + "type": "string", + "description": "The location of the resource. The supported locations are: global, us-central1, us-east1, us-west1, asia-east1, europe-west1.", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "name": { + "type": "string", + "description": "The resource name of the view. For example: \\'projects/my-project/locations/global/buckets/my-bucket/views/my-view\\'", + "description_kind": "plain", + "required": true + }, + "parent": { + "type": "string", + "description": "The parent of the resource.", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "update_time": { + "type": "string", + "description": "Output only. The last update timestamp of the view.", "description_kind": "plain", "computed": true } @@ -118246,6 +120124,12 @@ "description_kind": "plain", "computed": true }, + "fips_enabled": { + "type": "bool", + "description": "FIPS 140-2 Encryption enablement for Looker (Google Cloud Core).", + "description_kind": "plain", + "optional": true + }, "id": { "type": "string", "description_kind": "plain", @@ -118300,6 +120184,12 @@ "optional": true, "computed": true }, + "psc_enabled": { + "type": "bool", + "description": "Whether Public Service Connect (PSC) is enabled on the Looker instance", + "description_kind": "plain", + "optional": true + }, "public_ip_enabled": { "type": "bool", "description": "Whether public IP is enabled on the Looker instance.", @@ -118574,6 +120464,60 @@ }, "max_items": 1 }, + "psc_config": { + "nesting_mode": "list", + "block": { + "attributes": { + "allowed_vpcs": { + "type": [ + "list", + "string" + ], + "description": "List of VPCs that are allowed ingress into the Looker instance.", + "description_kind": "plain", + "optional": true + }, + "looker_service_attachment_uri": { + "type": "string", + "description": "URI of the Looker service attachment.", + "description_kind": "plain", + "computed": true + } + }, + "block_types": { + "service_attachments": { + "nesting_mode": "list", + "block": { + "attributes": { + "connection_status": { + "type": "string", + "description": "Status of the service attachment connection.", + "description_kind": "plain", + "computed": true + }, + "local_fqdn": { + "type": "string", + "description": "Fully qualified domain name that will be used in the private DNS record created for the service attachment.", + "description_kind": "plain", + "optional": true + }, + "target_service_attachment_uri": { + "type": "string", + "description": "URI of the service attachment to connect to.", + "description_kind": "plain", + "optional": true + } + }, + "description": "List of egress service attachment configurations.", + "description_kind": "plain" + } + } + }, + "description": "Information for Private Service Connect (PSC) setup for a Looker instance.", + "description_kind": "plain" + }, + "max_items": 1 + }, "timeouts": { "nesting_mode": "single", "block": { @@ -122346,6 +124290,12 @@ "description_kind": "plain", "optional": true }, + "allow_auto_tiering": { + "type": "bool", + "description": "Optional. True if the storage pool supports Auto Tiering enabled volumes. Default is false.\nAuto-tiering can be enabled after storage pool creation but it can't be disabled once enabled.", + "description_kind": "plain", + "optional": true + }, "capacity_gib": { "type": "string", "description": "Capacity of the storage pool (in GiB).", @@ -122496,6 +124446,12 @@ "description_kind": "plain", "required": true }, + "cold_tier_size_gib": { + "type": "string", + "description": "Output only. Size of the volume cold tier data in GiB.", + "description_kind": "plain", + "computed": true + }, "create_time": { "type": "string", "description": "Create time of the volume. A timestamp in RFC3339 UTC \"Zulu\" format. Examples: \"2023-06-22T09:13:01.617Z\".", @@ -122562,6 +124518,12 @@ "description_kind": "plain", "optional": true }, + "large_capacity": { + "type": "bool", + "description": "Optional. Flag indicating if the volume will be a large capacity volume or a regular volume.", + "description_kind": "plain", + "optional": true + }, "ldap_enabled": { "type": "bool", "description": "Flag indicating if the volume is NFS LDAP enabled or not. Inherited from storage pool.", @@ -122591,6 +124553,12 @@ "description_kind": "plain", "computed": true }, + "multiple_endpoints": { + "type": "bool", + "description": "Optional. Flag indicating if the volume will have an IP address per node for volumes supporting multiple IP endpoints.\nOnly the volume with largeCapacity will be allowed to have multiple endpoints.", + "description_kind": "plain", + "optional": true + }, "name": { "type": "string", "description": "The name of the volume. Needs to be unique per location.", @@ -122985,6 +124953,28 @@ }, "max_items": 1 }, + "tiering_policy": { + "nesting_mode": "list", + "block": { + "attributes": { + "cooling_threshold_days": { + "type": "number", + "description": "Optional. Time in days to mark the volume's data block as cold and make it eligible for tiering, can be range from 7-183.\nDefault is 31.", + "description_kind": "plain", + "optional": true + }, + "tier_action": { + "type": "string", + "description": "Optional. Flag indicating if the volume has tiering policy enable/pause. Default is PAUSED. Default value: \"PAUSED\" Possible values: [\"ENABLED\", \"PAUSED\"]", + "description_kind": "plain", + "optional": true + } + }, + "description": "Tiering policy for the volume.", + "description_kind": "plain" + }, + "max_items": 1 + }, "timeouts": { "nesting_mode": "single", "block": { @@ -123575,7 +125565,7 @@ }, "usage": { "type": "string", - "description": "The type of usage set for this InternalRange. Possible values: [\"FOR_VPC\", \"EXTERNAL_TO_VPC\"]", + "description": "The type of usage set for this InternalRange. Possible values: [\"FOR_VPC\", \"EXTERNAL_TO_VPC\", \"FOR_MIGRATION\"]", "description_kind": "plain", "required": true }, @@ -123590,198 +125580,220 @@ } }, "block_types": { - "timeouts": { - "nesting_mode": "single", - "block": { - "attributes": { - "create": { - "type": "string", - "description_kind": "plain", - "optional": true - }, - "delete": { - "type": "string", - "description_kind": "plain", - "optional": true - }, - "update": { - "type": "string", - "description_kind": "plain", - "optional": true - } - }, - "description_kind": "plain" - } - } - }, - "description_kind": "plain" - } - }, - "google_network_connectivity_policy_based_route": { - "version": 0, - "block": { - "attributes": { - "create_time": { - "type": "string", - "description": "Time when the policy-based route was created.", - "description_kind": "plain", - "computed": true - }, - "description": { - "type": "string", - "description": "An optional description of this resource.", - "description_kind": "plain", - "optional": true - }, - "effective_labels": { - "type": [ - "map", - "string" - ], - "description": "All of labels (key/value pairs) present on the resource in GCP, including the labels configured through Terraform, other clients and services.", - "description_kind": "plain", - "computed": true - }, - "id": { - "type": "string", - "description_kind": "plain", - "optional": true, - "computed": true - }, - "kind": { - "type": "string", - "description": "Type of this resource.", - "description_kind": "plain", - "computed": true - }, - "labels": { - "type": [ - "map", - "string" - ], - "description": "User-defined labels.\n\n\n**Note**: This field is non-authoritative, and will only manage the labels present in your configuration.\nPlease refer to the field 'effective_labels' for all of the labels present on the resource.", - "description_kind": "plain", - "optional": true - }, - "name": { - "type": "string", - "description": "The name of the policy based route.", - "description_kind": "plain", - "required": true - }, - "network": { - "type": "string", - "description": "Fully-qualified URL of the network that this route applies to, for example: projects/my-project/global/networks/my-network.", - "description_kind": "plain", - "required": true - }, - "next_hop_ilb_ip": { - "type": "string", - "description": "The IP address of a global-access-enabled L4 ILB that is the next hop for matching packets.", - "description_kind": "plain", - "optional": true - }, - "next_hop_other_routes": { - "type": "string", - "description": "Other routes that will be referenced to determine the next hop of the packet. Possible values: [\"DEFAULT_ROUTING\"]", - "description_kind": "plain", - "optional": true - }, - "priority": { - "type": "number", - "description": "The priority of this policy-based route. Priority is used to break ties in cases where there are more than one matching policy-based routes found. In cases where multiple policy-based routes are matched, the one with the lowest-numbered priority value wins. The default value is 1000. The priority value must be from 1 to 65535, inclusive.", - "description_kind": "plain", - "optional": true - }, - "project": { - "type": "string", - "description_kind": "plain", - "optional": true, - "computed": true - }, - "terraform_labels": { - "type": [ - "map", - "string" - ], - "description": "The combination of labels configured directly on the resource\n and default labels configured on the provider.", - "description_kind": "plain", - "computed": true - }, - "update_time": { - "type": "string", - "description": "Time when the policy-based route was created.", - "description_kind": "plain", - "computed": true - }, - "warnings": { - "type": [ - "list", - [ - "object", - { - "code": "string", - "data": [ - "map", - "string" - ], - "warning_message": "string" - } - ] - ], - "description": "If potential misconfigurations are detected for this route, this field will be populated with warning messages.", - "description_kind": "plain", - "computed": true - } - }, - "block_types": { - "filter": { + "migration": { "nesting_mode": "list", "block": { "attributes": { - "dest_range": { - "type": "string", - "description": "The destination IP range of outgoing packets that this policy-based route applies to. Default is \"0.0.0.0/0\" if protocol version is IPv4.", - "description_kind": "plain", - "optional": true - }, - "ip_protocol": { + "source": { "type": "string", - "description": "The IP protocol that this policy-based route applies to. Valid values are 'TCP', 'UDP', and 'ALL'. Default is 'ALL'.", - "description_kind": "plain", - "optional": true - }, - "protocol_version": { - "type": "string", - "description": "Internet protocol versions this policy-based route applies to. Possible values: [\"IPV4\"]", + "description": "Resource path as an URI of the source resource, for example a subnet.\nThe project for the source resource should match the project for the\nInternalRange.\nAn example /projects/{project}/regions/{region}/subnetworks/{subnet}", "description_kind": "plain", "required": true }, - "src_range": { + "target": { "type": "string", - "description": "The source IP range of outgoing packets that this policy-based route applies to. Default is \"0.0.0.0/0\" if protocol version is IPv4.", - "description_kind": "plain", - "optional": true - } - }, - "description": "The filter to match L4 traffic.", - "description_kind": "plain" - }, - "min_items": 1, - "max_items": 1 - }, - "interconnect_attachment": { - "nesting_mode": "list", - "block": { - "attributes": { - "region": { - "type": "string", - "description": "Cloud region to install this policy-based route on for Interconnect attachments. Use 'all' to install it on all Interconnect attachments.", + "description": "Resource path of the target resource. The target project can be\ndifferent, as in the cases when migrating to peer networks. The resource\nmay not exist yet.\nFor example /projects/{project}/regions/{region}/subnetworks/{subnet}", "description_kind": "plain", "required": true } }, - "description": "The interconnect attachments that this policy-based route applies to.", + "description": "Specification for migration with source and target resource names.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "timeouts": { + "nesting_mode": "single", + "block": { + "attributes": { + "create": { + "type": "string", + "description_kind": "plain", + "optional": true + }, + "delete": { + "type": "string", + "description_kind": "plain", + "optional": true + }, + "update": { + "type": "string", + "description_kind": "plain", + "optional": true + } + }, + "description_kind": "plain" + } + } + }, + "description_kind": "plain" + } + }, + "google_network_connectivity_policy_based_route": { + "version": 0, + "block": { + "attributes": { + "create_time": { + "type": "string", + "description": "Time when the policy-based route was created.", + "description_kind": "plain", + "computed": true + }, + "description": { + "type": "string", + "description": "An optional description of this resource.", + "description_kind": "plain", + "optional": true + }, + "effective_labels": { + "type": [ + "map", + "string" + ], + "description": "All of labels (key/value pairs) present on the resource in GCP, including the labels configured through Terraform, other clients and services.", + "description_kind": "plain", + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "kind": { + "type": "string", + "description": "Type of this resource.", + "description_kind": "plain", + "computed": true + }, + "labels": { + "type": [ + "map", + "string" + ], + "description": "User-defined labels.\n\n\n**Note**: This field is non-authoritative, and will only manage the labels present in your configuration.\nPlease refer to the field 'effective_labels' for all of the labels present on the resource.", + "description_kind": "plain", + "optional": true + }, + "name": { + "type": "string", + "description": "The name of the policy based route.", + "description_kind": "plain", + "required": true + }, + "network": { + "type": "string", + "description": "Fully-qualified URL of the network that this route applies to, for example: projects/my-project/global/networks/my-network.", + "description_kind": "plain", + "required": true + }, + "next_hop_ilb_ip": { + "type": "string", + "description": "The IP address of a global-access-enabled L4 ILB that is the next hop for matching packets.", + "description_kind": "plain", + "optional": true + }, + "next_hop_other_routes": { + "type": "string", + "description": "Other routes that will be referenced to determine the next hop of the packet. Possible values: [\"DEFAULT_ROUTING\"]", + "description_kind": "plain", + "optional": true + }, + "priority": { + "type": "number", + "description": "The priority of this policy-based route. Priority is used to break ties in cases where there are more than one matching policy-based routes found. In cases where multiple policy-based routes are matched, the one with the lowest-numbered priority value wins. The default value is 1000. The priority value must be from 1 to 65535, inclusive.", + "description_kind": "plain", + "optional": true + }, + "project": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "terraform_labels": { + "type": [ + "map", + "string" + ], + "description": "The combination of labels configured directly on the resource\n and default labels configured on the provider.", + "description_kind": "plain", + "computed": true + }, + "update_time": { + "type": "string", + "description": "Time when the policy-based route was created.", + "description_kind": "plain", + "computed": true + }, + "warnings": { + "type": [ + "list", + [ + "object", + { + "code": "string", + "data": [ + "map", + "string" + ], + "warning_message": "string" + } + ] + ], + "description": "If potential misconfigurations are detected for this route, this field will be populated with warning messages.", + "description_kind": "plain", + "computed": true + } + }, + "block_types": { + "filter": { + "nesting_mode": "list", + "block": { + "attributes": { + "dest_range": { + "type": "string", + "description": "The destination IP range of outgoing packets that this policy-based route applies to. Default is \"0.0.0.0/0\" if protocol version is IPv4.", + "description_kind": "plain", + "optional": true + }, + "ip_protocol": { + "type": "string", + "description": "The IP protocol that this policy-based route applies to. Valid values are 'TCP', 'UDP', and 'ALL'. Default is 'ALL'.", + "description_kind": "plain", + "optional": true + }, + "protocol_version": { + "type": "string", + "description": "Internet protocol versions this policy-based route applies to. Possible values: [\"IPV4\"]", + "description_kind": "plain", + "required": true + }, + "src_range": { + "type": "string", + "description": "The source IP range of outgoing packets that this policy-based route applies to. Default is \"0.0.0.0/0\" if protocol version is IPv4.", + "description_kind": "plain", + "optional": true + } + }, + "description": "The filter to match L4 traffic.", + "description_kind": "plain" + }, + "min_items": 1, + "max_items": 1 + }, + "interconnect_attachment": { + "nesting_mode": "list", + "block": { + "attributes": { + "region": { + "type": "string", + "description": "Cloud region to install this policy-based route on for Interconnect attachments. Use 'all' to install it on all Interconnect attachments.", + "description_kind": "plain", + "required": true + } + }, + "description": "The interconnect attachments that this policy-based route applies to.", "description_kind": "plain" }, "max_items": 1 @@ -124102,7 +126114,7 @@ }, "service_class": { "type": "string", - "description": "The service class identifier for which this ServiceConnectionPolicy is for. The service class identifier is a unique, symbolic representation of a ServiceClass.\nIt is provided by the Service Producer. Google services have a prefix of google. For example, google-cloud-sql. 3rd party services do not. For example, test-service-a3dfcx.", + "description": "The service class identifier for which this ServiceConnectionPolicy is for. The service class identifier is a unique, symbolic representation of a ServiceClass.\nIt is provided by the Service Producer. Google services have a prefix of gcp. For example, gcp-cloud-sql. 3rd party services do not. For example, test-service-a3dfcx.", "description_kind": "plain", "required": true }, @@ -124272,6 +126284,15 @@ "nesting_mode": "list", "block": { "attributes": { + "include_import_ranges": { + "type": [ + "list", + "string" + ], + "description": "IP ranges allowed to be included during import from hub (does not control transit connectivity).\nThe only allowed value for now is \"ALL_IPV4_RANGES\".", + "description_kind": "plain", + "optional": true + }, "site_to_site_data_transfer": { "type": "bool", "description": "A value that controls whether site-to-site data transfer is enabled for these resources. Note that data transfer is available only in supported locations.", @@ -124293,10 +126314,65 @@ }, "max_items": 1 }, + "linked_producer_vpc_network": { + "nesting_mode": "list", + "block": { + "attributes": { + "exclude_export_ranges": { + "type": [ + "list", + "string" + ], + "description": "IP ranges encompassing the subnets to be excluded from peering.", + "description_kind": "plain", + "optional": true + }, + "include_export_ranges": { + "type": [ + "list", + "string" + ], + "description": "IP ranges allowed to be included from peering.", + "description_kind": "plain", + "optional": true + }, + "network": { + "type": "string", + "description": "The URI of the Service Consumer VPC that the Producer VPC is peered with.", + "description_kind": "plain", + "required": true + }, + "peering": { + "type": "string", + "description": "The name of the VPC peering between the Service Consumer VPC and the Producer VPC (defined in the Tenant project) which is added to the NCC hub. This peering must be in ACTIVE state.", + "description_kind": "plain", + "required": true + }, + "producer_network": { + "type": "string", + "description": "The URI of the Producer VPC.", + "description_kind": "plain", + "computed": true + } + }, + "description": "Producer VPC network that is associated with the spoke.", + "description_kind": "plain" + }, + "max_items": 1 + }, "linked_router_appliance_instances": { "nesting_mode": "list", "block": { "attributes": { + "include_import_ranges": { + "type": [ + "list", + "string" + ], + "description": "IP ranges allowed to be included during import from hub (does not control transit connectivity).\nThe only allowed value for now is \"ALL_IPV4_RANGES\".", + "description_kind": "plain", + "optional": true + }, "site_to_site_data_transfer": { "type": "bool", "description": "A value that controls whether site-to-site data transfer is enabled for these resources. Note that data transfer is available only in supported locations.", @@ -124371,6 +126447,15 @@ "nesting_mode": "list", "block": { "attributes": { + "include_import_ranges": { + "type": [ + "list", + "string" + ], + "description": "IP ranges allowed to be included during import from hub (does not control transit connectivity).\nThe only allowed value for now is \"ALL_IPV4_RANGES\".", + "description_kind": "plain", + "optional": true + }, "site_to_site_data_transfer": { "type": "bool", "description": "A value that controls whether site-to-site data transfer is enabled for these resources. Note that data transfer is available only in supported locations.", @@ -127628,6 +129713,12 @@ "optional": true, "computed": true }, + "routing_mode": { + "type": "string", + "description": "The routing mode of the Gateway. This field is configurable only for gateways of type SECURE_WEB_GATEWAY. This field is required for gateways of type SECURE_WEB_GATEWAY. Possible values: [\"NEXT_HOP_ROUTING_MODE\"]", + "description_kind": "plain", + "optional": true + }, "scope": { "type": "string", "description": "Immutable. Scope determines how configuration across multiple Gateway instances are merged.\nThe configuration for multiple Gateway instances with the same scope will be merged as presented as\na single coniguration to the proxy/load balancer.\nMax length 64 characters. Scope should start with a letter and can only have letters, numbers, hyphens.", @@ -129605,6 +131696,1375 @@ "description_kind": "plain" } }, + "google_oracle_database_autonomous_database": { + "version": 0, + "block": { + "attributes": { + "admin_password": { + "type": "string", + "description": "The password for the default ADMIN user.", + "description_kind": "plain", + "optional": true + }, + "autonomous_database_id": { + "type": "string", + "description": "The ID of the Autonomous Database to create. This value is restricted\nto (^[a-z]([a-z0-9-]{0,61}[a-z0-9])?$) and must be a maximum of 63\ncharacters in length. The value must start with a letter and end with\na letter or a number.", + "description_kind": "plain", + "required": true + }, + "cidr": { + "type": "string", + "description": "The subnet CIDR range for the Autonmous Database.", + "description_kind": "plain", + "required": true + }, + "create_time": { + "type": "string", + "description": "The date and time that the Autonomous Database was created.", + "description_kind": "plain", + "computed": true + }, + "database": { + "type": "string", + "description": "The name of the Autonomous Database. The database name must be unique in\nthe project. The name must begin with a letter and can\ncontain a maximum of 30 alphanumeric characters.", + "description_kind": "plain", + "required": true + }, + "display_name": { + "type": "string", + "description": "The display name for the Autonomous Database. The name does not have to\nbe unique within your project.", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "effective_labels": { + "type": [ + "map", + "string" + ], + "description": "All of labels (key/value pairs) present on the resource in GCP, including the labels configured through Terraform, other clients and services.", + "description_kind": "plain", + "computed": true + }, + "entitlement_id": { + "type": "string", + "description": "The ID of the subscription entitlement associated with the Autonomous\nDatabase.", + "description_kind": "plain", + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "labels": { + "type": [ + "map", + "string" + ], + "description": "The labels or tags associated with the Autonomous Database. \n\n**Note**: This field is non-authoritative, and will only manage the labels present in your configuration.\nPlease refer to the field 'effective_labels' for all of the labels present on the resource.", + "description_kind": "plain", + "optional": true + }, + "location": { + "type": "string", + "description": "Resource ID segment making up resource 'name'. See documentation for resource type 'oracledatabase.googleapis.com/AutonomousDatabaseBackup'.", + "description_kind": "plain", + "required": true + }, + "name": { + "type": "string", + "description": "Identifier. The name of the Autonomous Database resource in the following format:\nprojects/{project}/locations/{region}/autonomousDatabases/{autonomous_database}", + "description_kind": "plain", + "computed": true + }, + "network": { + "type": "string", + "description": "The name of the VPC network used by the Autonomous Database.\nFormat: projects/{project}/global/networks/{network}", + "description_kind": "plain", + "required": true + }, + "project": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "terraform_labels": { + "type": [ + "map", + "string" + ], + "description": "The combination of labels configured directly on the resource\n and default labels configured on the provider.", + "description_kind": "plain", + "computed": true + } + }, + "block_types": { + "properties": { + "nesting_mode": "list", + "block": { + "attributes": { + "actual_used_data_storage_size_tb": { + "type": "number", + "description": "The amount of storage currently being used for user and system data, in\nterabytes.", + "description_kind": "plain", + "computed": true + }, + "allocated_storage_size_tb": { + "type": "number", + "description": "The amount of storage currently allocated for the database tables and\nbilled for, rounded up in terabytes.", + "description_kind": "plain", + "computed": true + }, + "apex_details": { + "type": [ + "list", + [ + "object", + { + "apex_version": "string", + "ords_version": "string" + } + ] + ], + "description": "Oracle APEX Application Development.\nhttps://docs.oracle.com/en-us/iaas/api/#/en/database/20160918/datatypes/AutonomousDatabaseApex", + "description_kind": "plain", + "computed": true + }, + "are_primary_allowlisted_ips_used": { + "type": "bool", + "description": "This field indicates the status of Data Guard and Access control for the\nAutonomous Database. The field's value is null if Data Guard is disabled\nor Access Control is disabled. The field's value is TRUE if both Data Guard\nand Access Control are enabled, and the Autonomous Database is using\nprimary IP access control list (ACL) for standby. The field's value is\nFALSE if both Data Guard and Access Control are enabled, and the Autonomous\nDatabase is using a different IP access control list (ACL) for standby\ncompared to primary.", + "description_kind": "plain", + "computed": true + }, + "autonomous_container_database_id": { + "type": "string", + "description": "The Autonomous Container Database OCID.", + "description_kind": "plain", + "computed": true + }, + "available_upgrade_versions": { + "type": [ + "list", + "string" + ], + "description": "The list of available Oracle Database upgrade versions for an Autonomous\nDatabase.", + "description_kind": "plain", + "computed": true + }, + "backup_retention_period_days": { + "type": "number", + "description": "The retention period for the Autonomous Database. This field is specified\nin days, can range from 1 day to 60 days, and has a default value of\n60 days.", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "character_set": { + "type": "string", + "description": "The character set for the Autonomous Database. The default is AL32UTF8.", + "description_kind": "plain", + "optional": true + }, + "compute_count": { + "type": "number", + "description": "The number of compute servers for the Autonomous Database.", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "connection_strings": { + "type": [ + "list", + [ + "object", + { + "all_connection_strings": [ + "list", + [ + "object", + { + "high": "string", + "low": "string", + "medium": "string" + } + ] + ], + "dedicated": "string", + "high": "string", + "low": "string", + "medium": "string", + "profiles": [ + "list", + [ + "object", + { + "consumer_group": "string", + "display_name": "string", + "host_format": "string", + "is_regional": "bool", + "protocol": "string", + "session_mode": "string", + "syntax_format": "string", + "tls_authentication": "string", + "value": "string" + } + ] + ] + } + ] + ], + "description": "The connection string used to connect to the Autonomous Database.\nhttps://docs.oracle.com/en-us/iaas/api/#/en/database/20160918/datatypes/AutonomousDatabaseConnectionStrings", + "description_kind": "plain", + "computed": true + }, + "connection_urls": { + "type": [ + "list", + [ + "object", + { + "apex_uri": "string", + "database_transforms_uri": "string", + "graph_studio_uri": "string", + "machine_learning_notebook_uri": "string", + "machine_learning_user_management_uri": "string", + "mongo_db_uri": "string", + "ords_uri": "string", + "sql_dev_web_uri": "string" + } + ] + ], + "description": "The URLs for accessing Oracle Application Express (APEX) and SQL Developer\nWeb with a browser from a Compute instance.\nhttps://docs.oracle.com/en-us/iaas/api/#/en/database/20160918/datatypes/AutonomousDatabaseConnectionUrls", + "description_kind": "plain", + "computed": true + }, + "data_safe_state": { + "type": "string", + "description": "The current state of the Data Safe registration for the\nAutonomous Database. \n Possible values:\n DATA_SAFE_STATE_UNSPECIFIED\nREGISTERING\nREGISTERED\nDEREGISTERING\nNOT_REGISTERED\nFAILED", + "description_kind": "plain", + "computed": true + }, + "data_storage_size_gb": { + "type": "number", + "description": "The size of the data stored in the database, in gigabytes.", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "data_storage_size_tb": { + "type": "number", + "description": "The size of the data stored in the database, in terabytes.", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "database_management_state": { + "type": "string", + "description": "The current state of database management for the Autonomous Database. \n Possible values:\n DATABASE_MANAGEMENT_STATE_UNSPECIFIED\nENABLING\nENABLED\nDISABLING\nNOT_ENABLED\nFAILED_ENABLING\nFAILED_DISABLING", + "description_kind": "plain", + "computed": true + }, + "db_edition": { + "type": "string", + "description": "The edition of the Autonomous Databases. \n Possible values:\n DATABASE_EDITION_UNSPECIFIED\nSTANDARD_EDITION\nENTERPRISE_EDITION", + "description_kind": "plain", + "optional": true + }, + "db_version": { + "type": "string", + "description": "The Oracle Database version for the Autonomous Database.", + "description_kind": "plain", + "optional": true + }, + "db_workload": { + "type": "string", + "description": "Possible values:\n DB_WORKLOAD_UNSPECIFIED\nOLTP\nDW\nAJD\nAPEX", + "description_kind": "plain", + "required": true + }, + "failed_data_recovery_duration": { + "type": "string", + "description": "This field indicates the number of seconds of data loss during a Data\nGuard failover.", + "description_kind": "plain", + "computed": true + }, + "is_auto_scaling_enabled": { + "type": "bool", + "description": "This field indicates if auto scaling is enabled for the Autonomous Database\nCPU core count.", + "description_kind": "plain", + "optional": true + }, + "is_local_data_guard_enabled": { + "type": "bool", + "description": "This field indicates whether the Autonomous Database has local (in-region)\nData Guard enabled.", + "description_kind": "plain", + "computed": true + }, + "is_storage_auto_scaling_enabled": { + "type": "bool", + "description": "This field indicates if auto scaling is enabled for the Autonomous Database\nstorage.", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "license_type": { + "type": "string", + "description": "The license type used for the Autonomous Database. \n Possible values:\n LICENSE_TYPE_UNSPECIFIED\nLICENSE_INCLUDED\nBRING_YOUR_OWN_LICENSE", + "description_kind": "plain", + "required": true + }, + "lifecycle_details": { + "type": "string", + "description": "The details of the current lifestyle state of the Autonomous Database.", + "description_kind": "plain", + "computed": true + }, + "local_adg_auto_failover_max_data_loss_limit": { + "type": "number", + "description": "This field indicates the maximum data loss limit for an Autonomous\nDatabase, in seconds.", + "description_kind": "plain", + "computed": true + }, + "local_disaster_recovery_type": { + "type": "string", + "description": "This field indicates the local disaster recovery (DR) type of an\nAutonomous Database. \n Possible values:\n LOCAL_DISASTER_RECOVERY_TYPE_UNSPECIFIED\nADG\nBACKUP_BASED", + "description_kind": "plain", + "computed": true + }, + "local_standby_db": { + "type": [ + "list", + [ + "object", + { + "data_guard_role_changed_time": "string", + "disaster_recovery_role_changed_time": "string", + "lag_time_duration": "string", + "lifecycle_details": "string", + "state": "string" + } + ] + ], + "description": "Autonomous Data Guard standby database details.\nhttps://docs.oracle.com/en-us/iaas/api/#/en/database/20160918/datatypes/AutonomousDatabaseStandbySummary", + "description_kind": "plain", + "computed": true + }, + "maintenance_begin_time": { + "type": "string", + "description": "The date and time when maintenance will begin.", + "description_kind": "plain", + "computed": true + }, + "maintenance_end_time": { + "type": "string", + "description": "The date and time when maintenance will end.", + "description_kind": "plain", + "computed": true + }, + "maintenance_schedule_type": { + "type": "string", + "description": "The maintenance schedule of the Autonomous Database. \n Possible values:\n MAINTENANCE_SCHEDULE_TYPE_UNSPECIFIED\nEARLY\nREGULAR", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "memory_per_oracle_compute_unit_gbs": { + "type": "number", + "description": "The amount of memory enabled per ECPU, in gigabytes.", + "description_kind": "plain", + "computed": true + }, + "memory_table_gbs": { + "type": "number", + "description": "The memory assigned to in-memory tables in an Autonomous Database.", + "description_kind": "plain", + "computed": true + }, + "mtls_connection_required": { + "type": "bool", + "description": "This field specifies if the Autonomous Database requires mTLS connections.", + "description_kind": "plain", + "optional": true + }, + "n_character_set": { + "type": "string", + "description": "The national character set for the Autonomous Database. The default is\nAL16UTF16.", + "description_kind": "plain", + "optional": true + }, + "next_long_term_backup_time": { + "type": "string", + "description": "The long term backup schedule of the Autonomous Database.", + "description_kind": "plain", + "computed": true + }, + "oci_url": { + "type": "string", + "description": "The Oracle Cloud Infrastructure link for the Autonomous Database.", + "description_kind": "plain", + "computed": true + }, + "ocid": { + "type": "string", + "description": "OCID of the Autonomous Database.\nhttps://docs.oracle.com/en-us/iaas/Content/General/Concepts/identifiers.htm#Oracle", + "description_kind": "plain", + "computed": true + }, + "open_mode": { + "type": "string", + "description": "This field indicates the current mode of the Autonomous Database. \n Possible values:\n OPEN_MODE_UNSPECIFIED\nREAD_ONLY\nREAD_WRITE", + "description_kind": "plain", + "computed": true + }, + "operations_insights_state": { + "type": "string", + "description": "Possible values:\n OPERATIONS_INSIGHTS_STATE_UNSPECIFIED\nENABLING\nENABLED\nDISABLING\nNOT_ENABLED\nFAILED_ENABLING\nFAILED_DISABLING", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "peer_db_ids": { + "type": [ + "list", + "string" + ], + "description": "The list of OCIDs of standby databases located in Autonomous Data Guard\nremote regions that are associated with the source database.", + "description_kind": "plain", + "computed": true + }, + "permission_level": { + "type": "string", + "description": "The permission level of the Autonomous Database. \n Possible values:\n PERMISSION_LEVEL_UNSPECIFIED\nRESTRICTED\nUNRESTRICTED", + "description_kind": "plain", + "computed": true + }, + "private_endpoint": { + "type": "string", + "description": "The private endpoint for the Autonomous Database.", + "description_kind": "plain", + "computed": true + }, + "private_endpoint_ip": { + "type": "string", + "description": "The private endpoint IP address for the Autonomous Database.", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "private_endpoint_label": { + "type": "string", + "description": "The private endpoint label for the Autonomous Database.", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "refreshable_mode": { + "type": "string", + "description": "The refresh mode of the cloned Autonomous Database. \n Possible values:\n REFRESHABLE_MODE_UNSPECIFIED\nAUTOMATIC\nMANUAL", + "description_kind": "plain", + "computed": true + }, + "refreshable_state": { + "type": "string", + "description": "The refresh State of the clone. \n Possible values:\n REFRESHABLE_STATE_UNSPECIFIED\nREFRESHING\nNOT_REFRESHING", + "description_kind": "plain", + "computed": true + }, + "role": { + "type": "string", + "description": "The Data Guard role of the Autonomous Database. \n Possible values:\n ROLE_UNSPECIFIED\nPRIMARY\nSTANDBY\nDISABLED_STANDBY\nBACKUP_COPY\nSNAPSHOT_STANDBY", + "description_kind": "plain", + "computed": true + }, + "scheduled_operation_details": { + "type": [ + "list", + [ + "object", + { + "day_of_week": "string", + "start_time": [ + "list", + [ + "object", + { + "hours": "number", + "minutes": "number", + "nanos": "number", + "seconds": "number" + } + ] + ], + "stop_time": [ + "list", + [ + "object", + { + "hours": "number", + "minutes": "number", + "nanos": "number", + "seconds": "number" + } + ] + ] + } + ] + ], + "description": "The list and details of the scheduled operations of the Autonomous\nDatabase.", + "description_kind": "plain", + "computed": true + }, + "sql_web_developer_url": { + "type": "string", + "description": "The SQL Web Developer URL for the Autonomous Database.", + "description_kind": "plain", + "computed": true + }, + "state": { + "type": "string", + "description": "Possible values:\n STATE_UNSPECIFIED\nPROVISIONING\nAVAILABLE\nSTOPPING\nSTOPPED\nSTARTING\nTERMINATING\nTERMINATED\nUNAVAILABLE\nRESTORE_IN_PROGRESS\nRESTORE_FAILED\nBACKUP_IN_PROGRESS\nSCALE_IN_PROGRESS\nAVAILABLE_NEEDS_ATTENTION\nUPDATING\nMAINTENANCE_IN_PROGRESS\nRESTARTING\nRECREATING\nROLE_CHANGE_IN_PROGRESS\nUPGRADING\nINACCESSIBLE\nSTANDBY", + "description_kind": "plain", + "computed": true + }, + "supported_clone_regions": { + "type": [ + "list", + "string" + ], + "description": "The list of available regions that can be used to create a clone for the\nAutonomous Database.", + "description_kind": "plain", + "computed": true + }, + "total_auto_backup_storage_size_gbs": { + "type": "number", + "description": "The storage space used by automatic backups of Autonomous Database, in\ngigabytes.", + "description_kind": "plain", + "computed": true + }, + "used_data_storage_size_tbs": { + "type": "number", + "description": "The storage space used by Autonomous Database, in gigabytes.", + "description_kind": "plain", + "computed": true + } + }, + "block_types": { + "customer_contacts": { + "nesting_mode": "list", + "block": { + "attributes": { + "email": { + "type": "string", + "description": "The email address used by Oracle to send notifications regarding databases\nand infrastructure.", + "description_kind": "plain", + "required": true + } + }, + "description": "The list of customer contacts.", + "description_kind": "plain" + } + } + }, + "description": "The properties of an Autonomous Database.", + "description_kind": "plain" + }, + "min_items": 1, + "max_items": 1 + }, + "timeouts": { + "nesting_mode": "single", + "block": { + "attributes": { + "create": { + "type": "string", + "description_kind": "plain", + "optional": true + }, + "delete": { + "type": "string", + "description_kind": "plain", + "optional": true + }, + "update": { + "type": "string", + "description_kind": "plain", + "optional": true + } + }, + "description_kind": "plain" + } + } + }, + "description_kind": "plain" + } + }, + "google_oracle_database_cloud_exadata_infrastructure": { + "version": 0, + "block": { + "attributes": { + "cloud_exadata_infrastructure_id": { + "type": "string", + "description": "The ID of the Exadata Infrastructure to create. This value is restricted\nto (^[a-z]([a-z0-9-]{0,61}[a-z0-9])?$) and must be a maximum of 63\ncharacters in length. The value must start with a letter and end with\na letter or a number.", + "description_kind": "plain", + "required": true + }, + "create_time": { + "type": "string", + "description": "The date and time that the Exadata Infrastructure was created.", + "description_kind": "plain", + "computed": true + }, + "display_name": { + "type": "string", + "description": "User friendly name for this resource.", + "description_kind": "plain", + "optional": true + }, + "effective_labels": { + "type": [ + "map", + "string" + ], + "description": "All of labels (key/value pairs) present on the resource in GCP, including the labels configured through Terraform, other clients and services.", + "description_kind": "plain", + "computed": true + }, + "entitlement_id": { + "type": "string", + "description": "Entitlement ID of the private offer against which this infrastructure\nresource is provisioned.", + "description_kind": "plain", + "computed": true + }, + "gcp_oracle_zone": { + "type": "string", + "description": "GCP location where Oracle Exadata is hosted.", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "labels": { + "type": [ + "map", + "string" + ], + "description": "Labels or tags associated with the resource. \n\n**Note**: This field is non-authoritative, and will only manage the labels present in your configuration.\nPlease refer to the field 'effective_labels' for all of the labels present on the resource.", + "description_kind": "plain", + "optional": true + }, + "location": { + "type": "string", + "description": "Resource ID segment making up resource 'name'. See documentation for resource type 'oracledatabase.googleapis.com/DbServer'.", + "description_kind": "plain", + "required": true + }, + "name": { + "type": "string", + "description": "Identifier. The name of the Exadata Infrastructure resource with the following format:\nprojects/{project}/locations/{region}/cloudExadataInfrastructures/{cloud_exadata_infrastructure}", + "description_kind": "plain", + "computed": true + }, + "project": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "terraform_labels": { + "type": [ + "map", + "string" + ], + "description": "The combination of labels configured directly on the resource\n and default labels configured on the provider.", + "description_kind": "plain", + "computed": true + } + }, + "block_types": { + "properties": { + "nesting_mode": "list", + "block": { + "attributes": { + "activated_storage_count": { + "type": "number", + "description": "The requested number of additional storage servers activated for the\nExadata Infrastructure.", + "description_kind": "plain", + "computed": true + }, + "additional_storage_count": { + "type": "number", + "description": "The requested number of additional storage servers for the Exadata\nInfrastructure.", + "description_kind": "plain", + "computed": true + }, + "available_storage_size_gb": { + "type": "number", + "description": "The available storage can be allocated to the Exadata Infrastructure\nresource, in gigabytes (GB).", + "description_kind": "plain", + "computed": true + }, + "compute_count": { + "type": "number", + "description": "The number of compute servers for the Exadata Infrastructure.", + "description_kind": "plain", + "optional": true + }, + "cpu_count": { + "type": "number", + "description": "The number of enabled CPU cores.", + "description_kind": "plain", + "computed": true + }, + "data_storage_size_tb": { + "type": "number", + "description": "Size, in terabytes, of the DATA disk group.", + "description_kind": "plain", + "computed": true + }, + "db_node_storage_size_gb": { + "type": "number", + "description": "The local node storage allocated in GBs.", + "description_kind": "plain", + "computed": true + }, + "db_server_version": { + "type": "string", + "description": "The software version of the database servers (dom0) in the Exadata\nInfrastructure.", + "description_kind": "plain", + "computed": true + }, + "max_cpu_count": { + "type": "number", + "description": "The total number of CPU cores available.", + "description_kind": "plain", + "computed": true + }, + "max_data_storage_tb": { + "type": "number", + "description": "The total available DATA disk group size.", + "description_kind": "plain", + "computed": true + }, + "max_db_node_storage_size_gb": { + "type": "number", + "description": "The total local node storage available in GBs.", + "description_kind": "plain", + "computed": true + }, + "max_memory_gb": { + "type": "number", + "description": "The total memory available in GBs.", + "description_kind": "plain", + "computed": true + }, + "memory_size_gb": { + "type": "number", + "description": "The memory allocated in GBs.", + "description_kind": "plain", + "computed": true + }, + "monthly_db_server_version": { + "type": "string", + "description": "The monthly software version of the database servers (dom0)\nin the Exadata Infrastructure. Example: 20.1.15", + "description_kind": "plain", + "computed": true + }, + "monthly_storage_server_version": { + "type": "string", + "description": "The monthly software version of the storage servers (cells)\nin the Exadata Infrastructure. Example: 20.1.15", + "description_kind": "plain", + "computed": true + }, + "next_maintenance_run_id": { + "type": "string", + "description": "The OCID of the next maintenance run.", + "description_kind": "plain", + "computed": true + }, + "next_maintenance_run_time": { + "type": "string", + "description": "The time when the next maintenance run will occur.", + "description_kind": "plain", + "computed": true + }, + "next_security_maintenance_run_time": { + "type": "string", + "description": "The time when the next security maintenance run will occur.", + "description_kind": "plain", + "computed": true + }, + "oci_url": { + "type": "string", + "description": "Deep link to the OCI console to view this resource.", + "description_kind": "plain", + "computed": true + }, + "ocid": { + "type": "string", + "description": "OCID of created infra.\nhttps://docs.oracle.com/en-us/iaas/Content/General/Concepts/identifiers.htm#Oracle", + "description_kind": "plain", + "computed": true + }, + "shape": { + "type": "string", + "description": "The shape of the Exadata Infrastructure. The shape determines the\namount of CPU, storage, and memory resources allocated to the instance.", + "description_kind": "plain", + "required": true + }, + "state": { + "type": "string", + "description": "The current lifecycle state of the Exadata Infrastructure. \n Possible values:\n STATE_UNSPECIFIED\nPROVISIONING\nAVAILABLE\nUPDATING\nTERMINATING\nTERMINATED\nFAILED\nMAINTENANCE_IN_PROGRESS", + "description_kind": "plain", + "computed": true + }, + "storage_count": { + "type": "number", + "description": "The number of Cloud Exadata storage servers for the Exadata Infrastructure.", + "description_kind": "plain", + "optional": true + }, + "storage_server_version": { + "type": "string", + "description": "The software version of the storage servers (cells) in the Exadata\nInfrastructure.", + "description_kind": "plain", + "computed": true + }, + "total_storage_size_gb": { + "type": "number", + "description": "The total storage allocated to the Exadata Infrastructure\nresource, in gigabytes (GB).", + "description_kind": "plain", + "optional": true, + "computed": true + } + }, + "block_types": { + "customer_contacts": { + "nesting_mode": "list", + "block": { + "attributes": { + "email": { + "type": "string", + "description": "The email address used by Oracle to send notifications regarding databases\nand infrastructure.", + "description_kind": "plain", + "required": true + } + }, + "description": "The list of customer contacts.", + "description_kind": "plain" + } + }, + "maintenance_window": { + "nesting_mode": "list", + "block": { + "attributes": { + "custom_action_timeout_mins": { + "type": "number", + "description": "Determines the amount of time the system will wait before the start of each\ndatabase server patching operation. Custom action timeout is in minutes and\nvalid value is between 15 to 120 (inclusive).", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "days_of_week": { + "type": [ + "list", + "string" + ], + "description": "Days during the week when maintenance should be performed.", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "hours_of_day": { + "type": [ + "list", + "number" + ], + "description": "The window of hours during the day when maintenance should be performed.\nThe window is a 4 hour slot. Valid values are:\n 0 - represents time slot 0:00 - 3:59 UTC\n 4 - represents time slot 4:00 - 7:59 UTC\n 8 - represents time slot 8:00 - 11:59 UTC\n 12 - represents time slot 12:00 - 15:59 UTC\n 16 - represents time slot 16:00 - 19:59 UTC\n 20 - represents time slot 20:00 - 23:59 UTC", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "is_custom_action_timeout_enabled": { + "type": "bool", + "description": "If true, enables the configuration of a custom action timeout (waiting\nperiod) between database server patching operations.", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "lead_time_week": { + "type": "number", + "description": "Lead time window allows user to set a lead time to prepare for a down time.\nThe lead time is in weeks and valid value is between 1 to 4.", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "months": { + "type": [ + "list", + "string" + ], + "description": "Months during the year when maintenance should be performed.", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "patching_mode": { + "type": "string", + "description": "Cloud CloudExadataInfrastructure node patching method, either \"ROLLING\"\n or \"NONROLLING\". Default value is ROLLING. \n Possible values:\n PATCHING_MODE_UNSPECIFIED\nROLLING\nNON_ROLLING", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "preference": { + "type": "string", + "description": "The maintenance window scheduling preference. \n Possible values:\n MAINTENANCE_WINDOW_PREFERENCE_UNSPECIFIED\nCUSTOM_PREFERENCE\nNO_PREFERENCE", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "weeks_of_month": { + "type": [ + "list", + "number" + ], + "description": "Weeks during the month when maintenance should be performed. Weeks start on\nthe 1st, 8th, 15th, and 22nd days of the month, and have a duration of 7\ndays. Weeks start and end based on calendar dates, not days of the week.", + "description_kind": "plain", + "optional": true, + "computed": true + } + }, + "description": "Maintenance window as defined by Oracle.\nhttps://docs.oracle.com/en-us/iaas/api/#/en/database/20160918/datatypes/MaintenanceWindow", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "Various properties of Exadata Infrastructure.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "timeouts": { + "nesting_mode": "single", + "block": { + "attributes": { + "create": { + "type": "string", + "description_kind": "plain", + "optional": true + }, + "delete": { + "type": "string", + "description_kind": "plain", + "optional": true + }, + "update": { + "type": "string", + "description_kind": "plain", + "optional": true + } + }, + "description_kind": "plain" + } + } + }, + "description_kind": "plain" + } + }, + "google_oracle_database_cloud_vm_cluster": { + "version": 0, + "block": { + "attributes": { + "backup_subnet_cidr": { + "type": "string", + "description": "CIDR range of the backup subnet.", + "description_kind": "plain", + "required": true + }, + "cidr": { + "type": "string", + "description": "Network settings. CIDR to use for cluster IP allocation.", + "description_kind": "plain", + "required": true + }, + "cloud_vm_cluster_id": { + "type": "string", + "description": "The ID of the VM Cluster to create. This value is restricted\nto (^[a-z]([a-z0-9-]{0,61}[a-z0-9])?$) and must be a maximum of 63\ncharacters in length. The value must start with a letter and end with\na letter or a number.", + "description_kind": "plain", + "required": true + }, + "create_time": { + "type": "string", + "description": "The date and time that the VM cluster was created.", + "description_kind": "plain", + "computed": true + }, + "display_name": { + "type": "string", + "description": "User friendly name for this resource.", + "description_kind": "plain", + "optional": true + }, + "effective_labels": { + "type": [ + "map", + "string" + ], + "description": "All of labels (key/value pairs) present on the resource in GCP, including the labels configured through Terraform, other clients and services.", + "description_kind": "plain", + "computed": true + }, + "exadata_infrastructure": { + "type": "string", + "description": "The name of the Exadata Infrastructure resource on which VM cluster\nresource is created, in the following format:\nprojects/{project}/locations/{region}/cloudExadataInfrastuctures/{cloud_extradata_infrastructure}", + "description_kind": "plain", + "required": true + }, + "gcp_oracle_zone": { + "type": "string", + "description": "GCP location where Oracle Exadata is hosted. It is same as GCP Oracle zone\nof Exadata infrastructure.", + "description_kind": "plain", + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "labels": { + "type": [ + "map", + "string" + ], + "description": "Labels or tags associated with the VM Cluster. \n\n**Note**: This field is non-authoritative, and will only manage the labels present in your configuration.\nPlease refer to the field 'effective_labels' for all of the labels present on the resource.", + "description_kind": "plain", + "optional": true + }, + "location": { + "type": "string", + "description": "Resource ID segment making up resource 'name'. See documentation for resource type 'oracledatabase.googleapis.com/DbNode'.", + "description_kind": "plain", + "required": true + }, + "name": { + "type": "string", + "description": "Identifier. The name of the VM Cluster resource with the format:\nprojects/{project}/locations/{region}/cloudVmClusters/{cloud_vm_cluster}", + "description_kind": "plain", + "computed": true + }, + "network": { + "type": "string", + "description": "The name of the VPC network.\nFormat: projects/{project}/global/networks/{network}", + "description_kind": "plain", + "required": true + }, + "project": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "terraform_labels": { + "type": [ + "map", + "string" + ], + "description": "The combination of labels configured directly on the resource\n and default labels configured on the provider.", + "description_kind": "plain", + "computed": true + } + }, + "block_types": { + "properties": { + "nesting_mode": "list", + "block": { + "attributes": { + "cluster_name": { + "type": "string", + "description": "OCI Cluster name.", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "compartment_id": { + "type": "string", + "description": "Compartment ID of cluster.", + "description_kind": "plain", + "computed": true + }, + "cpu_core_count": { + "type": "number", + "description": "Number of enabled CPU cores.", + "description_kind": "plain", + "required": true + }, + "data_storage_size_tb": { + "type": "number", + "description": "The data disk group size to be allocated in TBs.", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "db_node_storage_size_gb": { + "type": "number", + "description": "Local storage per VM", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "db_server_ocids": { + "type": [ + "list", + "string" + ], + "description": "OCID of database servers.", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "disk_redundancy": { + "type": "string", + "description": "The type of redundancy. \n Possible values:\n DISK_REDUNDANCY_UNSPECIFIED\nHIGH\nNORMAL", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "dns_listener_ip": { + "type": "string", + "description": "DNS listener IP.", + "description_kind": "plain", + "computed": true + }, + "domain": { + "type": "string", + "description": "Parent DNS domain where SCAN DNS and hosts names are qualified.\nex: ocispdelegated.ocisp10jvnet.oraclevcn.com", + "description_kind": "plain", + "computed": true + }, + "gi_version": { + "type": "string", + "description": "Grid Infrastructure Version.", + "description_kind": "plain", + "optional": true + }, + "hostname": { + "type": "string", + "description": "host name without domain.\nformat: \"-\" with some suffix.\nex: sp2-yi0xq where \"sp2\" is the hostname_prefix.", + "description_kind": "plain", + "computed": true + }, + "hostname_prefix": { + "type": "string", + "description": "Prefix for VM cluster host names.", + "description_kind": "plain", + "optional": true + }, + "license_type": { + "type": "string", + "description": "License type of VM Cluster. \n Possible values:\n LICENSE_TYPE_UNSPECIFIED\nLICENSE_INCLUDED\nBRING_YOUR_OWN_LICENSE", + "description_kind": "plain", + "required": true + }, + "local_backup_enabled": { + "type": "bool", + "description": "Use local backup.", + "description_kind": "plain", + "optional": true + }, + "memory_size_gb": { + "type": "number", + "description": "Memory allocated in GBs.", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "node_count": { + "type": "number", + "description": "Number of database servers.", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "oci_url": { + "type": "string", + "description": "Deep link to the OCI console to view this resource.", + "description_kind": "plain", + "computed": true + }, + "ocid": { + "type": "string", + "description": "Oracle Cloud Infrastructure ID of VM Cluster.", + "description_kind": "plain", + "computed": true + }, + "ocpu_count": { + "type": "number", + "description": "OCPU count per VM. Minimum is 0.1.", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "scan_dns": { + "type": "string", + "description": "SCAN DNS name.\nex: sp2-yi0xq-scan.ocispdelegated.ocisp10jvnet.oraclevcn.com", + "description_kind": "plain", + "computed": true + }, + "scan_dns_record_id": { + "type": "string", + "description": "OCID of scan DNS record.", + "description_kind": "plain", + "computed": true + }, + "scan_ip_ids": { + "type": [ + "list", + "string" + ], + "description": "OCIDs of scan IPs.", + "description_kind": "plain", + "computed": true + }, + "scan_listener_port_tcp": { + "type": "number", + "description": "SCAN listener port - TCP", + "description_kind": "plain", + "computed": true + }, + "scan_listener_port_tcp_ssl": { + "type": "number", + "description": "SCAN listener port - TLS", + "description_kind": "plain", + "computed": true + }, + "shape": { + "type": "string", + "description": "Shape of VM Cluster.", + "description_kind": "plain", + "computed": true + }, + "sparse_diskgroup_enabled": { + "type": "bool", + "description": "Use exadata sparse snapshots.", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "ssh_public_keys": { + "type": [ + "list", + "string" + ], + "description": "SSH public keys to be stored with cluster.", + "description_kind": "plain", + "optional": true + }, + "state": { + "type": "string", + "description": "State of the cluster. \n Possible values:\n STATE_UNSPECIFIED\nPROVISIONING\nAVAILABLE\nUPDATING\nTERMINATING\nTERMINATED\nFAILED\nMAINTENANCE_IN_PROGRESS", + "description_kind": "plain", + "computed": true + }, + "storage_size_gb": { + "type": "number", + "description": "The storage allocation for the disk group, in gigabytes (GB).", + "description_kind": "plain", + "computed": true + }, + "system_version": { + "type": "string", + "description": "Operating system version of the image.", + "description_kind": "plain", + "computed": true + } + }, + "block_types": { + "diagnostics_data_collection_options": { + "nesting_mode": "list", + "block": { + "attributes": { + "diagnostics_events_enabled": { + "type": "bool", + "description": "Indicates whether diagnostic collection is enabled for the VM cluster", + "description_kind": "plain", + "optional": true + }, + "health_monitoring_enabled": { + "type": "bool", + "description": "Indicates whether health monitoring is enabled for the VM cluster", + "description_kind": "plain", + "optional": true + }, + "incident_logs_enabled": { + "type": "bool", + "description": "Indicates whether incident logs and trace collection are enabled for the VM\ncluster", + "description_kind": "plain", + "optional": true + } + }, + "description": "Data collection options for diagnostics.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "time_zone": { + "nesting_mode": "list", + "block": { + "attributes": { + "id": { + "type": "string", + "description": "IANA Time Zone Database time zone, e.g. \"America/New_York\".", + "description_kind": "plain", + "optional": true, + "computed": true + } + }, + "description": "Represents a time zone from the\n[IANA Time Zone Database](https://www.iana.org/time-zones).", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "Various properties and settings associated with Exadata VM cluster.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "timeouts": { + "nesting_mode": "single", + "block": { + "attributes": { + "create": { + "type": "string", + "description_kind": "plain", + "optional": true + }, + "delete": { + "type": "string", + "description_kind": "plain", + "optional": true + }, + "update": { + "type": "string", + "description_kind": "plain", + "optional": true + } + }, + "description_kind": "plain" + } + } + }, + "description_kind": "plain" + } + }, "google_org_policy_custom_constraint": { "version": 0, "block": { @@ -135981,7 +139441,7 @@ "nesting_mode": "list", "block": { "block_types": { - "google_iam_access": { + "gcp_iam_access": { "nesting_mode": "list", "block": { "attributes": { @@ -136022,7 +139482,7 @@ "min_items": 1 } }, - "description": "GoogleIamAccess represents IAM based access control on a GCP resource. Refer to https://cloud.google.com/iam/docs to understand more about IAM.", + "description": "GcpIamAccess represents IAM based access control on a GCP resource. Refer to https://cloud.google.com/iam/docs to understand more about IAM.", "description_kind": "plain" }, "min_items": 1, @@ -136170,7 +139630,7 @@ "map", "string" ], - "description": "A map of resource manager tags. Resource manager tag keys and values have the same definition as resource manager tags. Keys must be in the format tagKeys/{tag_key_id}, and values are in the format tagValues/456. The field is ignored when empty.", + "description": "A map of resource manager tags. Resource manager tag keys and values have the same definition as resource manager tags. Keys must be in the format tagKeys/{tag_key_id}, and values are in the format tagValues/456. The field is ignored when empty. This field is only set at create time and modifying this field after creation will trigger recreation. To apply tags to an existing resource, see the google_tags_tag_value resource.", "description_kind": "plain", "optional": true }, @@ -137648,7 +141108,7 @@ }, "message_retention_duration": { "type": "string", - "description": "How long to retain unacknowledged messages in the subscription's\nbacklog, from the moment a message is published. If\nretain_acked_messages is true, then this also configures the retention\nof acknowledged messages, and thus configures how far back in time a\nsubscriptions.seek can be done. Defaults to 7 days. Cannot be more\nthan 7 days ('\"604800s\"') or less than 10 minutes ('\"600s\"').\n\nA duration in seconds with up to nine fractional digits, terminated\nby 's'. Example: '\"600.5s\"'.", + "description": "How long to retain unacknowledged messages in the subscription's\nbacklog, from the moment a message is published. If\nretain_acked_messages is true, then this also configures the retention\nof acknowledged messages, and thus configures how far back in time a\nsubscriptions.seek can be done. Defaults to 7 days. Cannot be more\nthan 31 days ('\"2678400s\"') or less than 10 minutes ('\"600s\"').\n\nA duration in seconds with up to nine fractional digits, terminated\nby 's'. Example: '\"600.5s\"'.", "description_kind": "plain", "optional": true }, @@ -137699,7 +141159,7 @@ }, "service_account_email": { "type": "string", - "description": "The service account to use to write to BigQuery. If not specified, the Pub/Sub\n[service agent](https://cloud.google.com/iam/docs/service-agents),\nservice-{project_number}@google-sa-pubsub.iam.gserviceaccount.com, is used.", + "description": "The service account to use to write to BigQuery. If not specified, the Pub/Sub\n[service agent](https://cloud.google.com/iam/docs/service-agents),\nservice-{project_number}@gcp-sa-pubsub.iam.gserviceaccount.com, is used.", "description_kind": "plain", "optional": true }, @@ -137781,7 +141241,7 @@ }, "service_account_email": { "type": "string", - "description": "The service account to use to write to Cloud Storage. If not specified, the Pub/Sub\n[service agent](https://cloud.google.com/iam/docs/service-agents),\nservice-{project_number}@google-sa-pubsub.iam.gserviceaccount.com, is used.", + "description": "The service account to use to write to Cloud Storage. If not specified, the Pub/Sub\n[service agent](https://cloud.google.com/iam/docs/service-agents),\nservice-{project_number}@gcp-sa-pubsub.iam.gserviceaccount.com, is used.", "description_kind": "plain", "optional": true }, @@ -137827,7 +141287,7 @@ "attributes": { "dead_letter_topic": { "type": "string", - "description": "The name of the topic to which dead letter messages should be published.\nFormat is 'projects/{project}/topics/{topic}'.\n\nThe Cloud Pub/Sub service account associated with the enclosing subscription's\nparent project (i.e.,\nservice-{project_number}@google-sa-pubsub.iam.gserviceaccount.com) must have\npermission to Publish() to this topic.\n\nThe operation will fail if the topic does not exist.\nUsers should ensure that there is a subscription attached to this topic\nsince messages published to a topic with no subscriptions are lost.", + "description": "The name of the topic to which dead letter messages should be published.\nFormat is 'projects/{project}/topics/{topic}'.\n\nThe Cloud Pub/Sub service account associated with the enclosing subscription's\nparent project (i.e.,\nservice-{project_number}@gcp-sa-pubsub.iam.gserviceaccount.com) must have\npermission to Publish() to this topic.\n\nThe operation will fail if the topic does not exist.\nUsers should ensure that there is a subscription attached to this topic\nsince messages published to a topic with no subscriptions are lost.", "description_kind": "plain", "optional": true }, @@ -137838,7 +141298,7 @@ "optional": true } }, - "description": "A policy that specifies the conditions for dead lettering messages in\nthis subscription. If dead_letter_policy is not set, dead lettering\nis disabled.\n\nThe Cloud Pub/Sub service account associated with this subscription's\nparent project (i.e.,\nservice-{project_number}@google-sa-pubsub.iam.gserviceaccount.com) must have\npermission to Acknowledge() messages on this subscription.", + "description": "A policy that specifies the conditions for dead lettering messages in\nthis subscription. If dead_letter_policy is not set, dead lettering\nis disabled.\n\nThe Cloud Pub/Sub service account associated with this subscription's\nparent project (i.e.,\nservice-{project_number}@gcp-sa-pubsub.iam.gserviceaccount.com) must have\npermission to Acknowledge() messages on this subscription.", "description_kind": "plain" }, "max_items": 1 @@ -138166,7 +141626,7 @@ }, "kms_key_name": { "type": "string", - "description": "The resource name of the Cloud KMS CryptoKey to be used to protect access\nto messages published on this topic. Your project's PubSub service account\n('service-{{PROJECT_NUMBER}}@google-sa-pubsub.iam.gserviceaccount.com') must have\n'roles/cloudkms.cryptoKeyEncrypterDecrypter' to use this feature.\nThe expected format is 'projects/*/locations/*/keyRings/*/cryptoKeys/*'", + "description": "The resource name of the Cloud KMS CryptoKey to be used to protect access\nto messages published on this topic. Your project's PubSub service account\n('service-{{PROJECT_NUMBER}}@gcp-sa-pubsub.iam.gserviceaccount.com') must have\n'roles/cloudkms.cryptoKeyEncrypterDecrypter' to use this feature.\nThe expected format is 'projects/*/locations/*/keyRings/*/cryptoKeys/*'", "description_kind": "plain", "optional": true }, @@ -138228,7 +141688,7 @@ "description_kind": "plain", "required": true }, - "google_service_account": { + "gcp_service_account": { "type": "string", "description": "The GCP service account to be used for Federated Identity authentication\nwith Kinesis (via a 'AssumeRoleWithWebIdentity' call for the provided\nrole). The 'awsRoleArn' must be set up with 'accounts.google.com:sub'\nequals to this service account number.", "description_kind": "plain", @@ -138245,6 +141705,84 @@ "description_kind": "plain" }, "max_items": 1 + }, + "cloud_storage": { + "nesting_mode": "list", + "block": { + "attributes": { + "bucket": { + "type": "string", + "description": "Cloud Storage bucket. The bucket name must be without any\nprefix like \"gs://\". See the bucket naming requirements:\nhttps://cloud.google.com/storage/docs/buckets#naming.", + "description_kind": "plain", + "required": true + }, + "match_glob": { + "type": "string", + "description": "Glob pattern used to match objects that will be ingested. If unset, all\nobjects will be ingested. See the supported patterns:\nhttps://cloud.google.com/storage/docs/json_api/v1/objects/list#list-objects-and-prefixes-using-glob", + "description_kind": "plain", + "optional": true + }, + "minimum_object_create_time": { + "type": "string", + "description": "The timestamp set in RFC3339 text format. If set, only objects with a\nlarger or equal timestamp will be ingested. Unset by default, meaning\nall objects will be ingested.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "avro_format": { + "nesting_mode": "list", + "block": { + "description": "Configuration for reading Cloud Storage data in Avro binary format. The\nbytes of each object will be set to the 'data' field of a Pub/Sub message.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "pubsub_avro_format": { + "nesting_mode": "list", + "block": { + "description": "Configuration for reading Cloud Storage data written via Cloud Storage\nsubscriptions(See https://cloud.google.com/pubsub/docs/cloudstorage). The\ndata and attributes fields of the originally exported Pub/Sub message\nwill be restored when publishing.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "text_format": { + "nesting_mode": "list", + "block": { + "attributes": { + "delimiter": { + "type": "string", + "description": "The delimiter to use when using the 'text' format. Each line of text as\nspecified by the delimiter will be set to the 'data' field of a Pub/Sub\nmessage. When unset, '\\n' is used.", + "description_kind": "plain", + "optional": true + } + }, + "description": "Configuration for reading Cloud Storage data in text format. Each line of\ntext as specified by the delimiter will be set to the 'data' field of a\nPub/Sub message.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "Settings for ingestion from Cloud Storage.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "platform_logs_settings": { + "nesting_mode": "list", + "block": { + "attributes": { + "severity": { + "type": "string", + "description": "The minimum severity level of Platform Logs that will be written. If unspecified,\nno Platform Logs will be written. Default value: \"SEVERITY_UNSPECIFIED\" Possible values: [\"SEVERITY_UNSPECIFIED\", \"DISABLED\", \"DEBUG\", \"INFO\", \"WARNING\", \"ERROR\"]", + "description_kind": "plain", + "optional": true + } + }, + "description": "Settings for Platform Logs regarding ingestion to Pub/Sub. If unset,\nno Platform Logs will be generated.'", + "description_kind": "plain" + }, + "max_items": 1 } }, "description": "Settings for ingestion from a data source into this topic.", @@ -139958,6 +143496,105 @@ "description_kind": "plain" } }, + "google_scc_folder_scc_big_query_export": { + "version": 0, + "block": { + "attributes": { + "big_query_export_id": { + "type": "string", + "description": "This must be unique within the organization.", + "description_kind": "plain", + "required": true + }, + "create_time": { + "type": "string", + "description": "The time at which the BigQuery export was created.\nA timestamp in RFC3339 UTC \"Zulu\" format, with nanosecond resolution and up to nine fractional digits.\nExamples: \"2014-10-02T15:01:23Z\" and \"2014-10-02T15:01:23.045123456Z\".", + "description_kind": "plain", + "computed": true + }, + "dataset": { + "type": "string", + "description": "The dataset to write findings' updates to.\nIts format is \"projects/[projectId]/datasets/[bigquery_dataset_id]\".\nBigQuery Dataset unique ID must contain only letters (a-z, A-Z), numbers (0-9), or underscores (_).", + "description_kind": "plain", + "required": true + }, + "description": { + "type": "string", + "description": "The description of the export (max of 1024 characters).", + "description_kind": "plain", + "required": true + }, + "filter": { + "type": "string", + "description": "Expression that defines the filter to apply across create/update\nevents of findings. The\nexpression is a list of zero or more restrictions combined via\nlogical operators AND and OR. Parentheses are supported, and OR\nhas higher precedence than AND.\n\nRestrictions have the form \u003cfield\u003e \u003coperator\u003e \u003cvalue\u003e and may have\na - character in front of them to indicate negation. The fields\nmap to those defined in the corresponding resource.\n\nThe supported operators are:\n\n* = for all value types.\n* \u003e, \u003c, \u003e=, \u003c= for integer values.\n* :, meaning substring matching, for strings.\n\nThe supported value types are:\n\n* string literals in quotes.\n* integer literals without quotes.\n* boolean literals true and false without quotes.\n\nSee\n[Filtering notifications](https://cloud.google.com/security-command-center/docs/how-to-api-filter-notifications)\nfor information on how to write a filter.", + "description_kind": "plain", + "required": true + }, + "folder": { + "type": "string", + "description": "The folder where Cloud Security Command Center Big Query Export\nConfig lives in.", + "description_kind": "plain", + "required": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "most_recent_editor": { + "type": "string", + "description": "Email address of the user who last edited the BigQuery export.", + "description_kind": "plain", + "computed": true + }, + "name": { + "type": "string", + "description": "The resource name of this export, in the format\n'projects/{{project}}/bigQueryExports/{{big_query_export_id}}'.\nThis field is provided in responses, and is ignored when provided in create requests.", + "description_kind": "plain", + "computed": true + }, + "principal": { + "type": "string", + "description": "The service account that needs permission to create table and upload data to the BigQuery dataset.", + "description_kind": "plain", + "computed": true + }, + "update_time": { + "type": "string", + "description": "The most recent time at which the BigQuery export was updated.\nA timestamp in RFC3339 UTC \"Zulu\" format, with nanosecond resolution and up to nine fractional digits.\nExamples: \"2014-10-02T15:01:23Z\" and \"2014-10-02T15:01:23.045123456Z\".", + "description_kind": "plain", + "computed": true + } + }, + "block_types": { + "timeouts": { + "nesting_mode": "single", + "block": { + "attributes": { + "create": { + "type": "string", + "description_kind": "plain", + "optional": true + }, + "delete": { + "type": "string", + "description_kind": "plain", + "optional": true + }, + "update": { + "type": "string", + "description_kind": "plain", + "optional": true + } + }, + "description_kind": "plain" + } + } + }, + "description_kind": "plain" + } + }, "google_scc_management_folder_security_health_analytics_custom_module": { "version": 0, "block": { @@ -141155,6 +144792,105 @@ "description_kind": "plain" } }, + "google_scc_organization_scc_big_query_export": { + "version": 0, + "block": { + "attributes": { + "big_query_export_id": { + "type": "string", + "description": "This must be unique within the organization.", + "description_kind": "plain", + "required": true + }, + "create_time": { + "type": "string", + "description": "The time at which the BigQuery export was created. This field is set by the server and will be ignored if provided on export on creation.\nA timestamp in RFC3339 UTC \"Zulu\" format, with nanosecond resolution and up to nine fractional digits.\nExamples: \"2014-10-02T15:01:23Z\" and \"2014-10-02T15:01:23.045123456Z\".", + "description_kind": "plain", + "computed": true + }, + "dataset": { + "type": "string", + "description": "The dataset to write findings' updates to.\nIts format is \"projects/[projectId]/datasets/[bigquery_dataset_id]\".\nBigQuery Dataset unique ID must contain only letters (a-z, A-Z), numbers (0-9), or underscores (_).", + "description_kind": "plain", + "optional": true + }, + "description": { + "type": "string", + "description": "The description of the notification config (max of 1024 characters).", + "description_kind": "plain", + "optional": true + }, + "filter": { + "type": "string", + "description": "Expression that defines the filter to apply across create/update\nevents of findings. The\nexpression is a list of zero or more restrictions combined via\nlogical operators AND and OR. Parentheses are supported, and OR\nhas higher precedence than AND.\n\nRestrictions have the form \u003cfield\u003e \u003coperator\u003e \u003cvalue\u003e and may have\na - character in front of them to indicate negation. The fields\nmap to those defined in the corresponding resource.\n\nThe supported operators are:\n\n* = for all value types.\n* \\\u003e, \u003c, \u003e=, \u003c= for integer values.\n* :, meaning substring matching, for strings.\n\nThe supported value types are:\n\n* string literals in quotes.\n* integer literals without quotes.\n* boolean literals true and false without quotes.\n\nSee\n[Filtering notifications](https://cloud.google.com/security-command-center/docs/how-to-api-filter-notifications)\nfor information on how to write a filter.", + "description_kind": "plain", + "optional": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "most_recent_editor": { + "type": "string", + "description": "Email address of the user who last edited the BigQuery export.\nThis field is set by the server and will be ignored if provided on export creation or update.", + "description_kind": "plain", + "computed": true + }, + "name": { + "type": "string", + "description": "The resource name of this export, in the format\n'organizations/{{organization}}/bigQueryExports/{{big_query_export_id}}'.\nThis field is provided in responses, and is ignored when provided in create requests.", + "description_kind": "plain", + "computed": true + }, + "organization": { + "type": "string", + "description": "The organization whose Cloud Security Command Center the Big Query Export\nConfig lives in.", + "description_kind": "plain", + "required": true + }, + "principal": { + "type": "string", + "description": "The service account that needs permission to create table and upload data to the BigQuery dataset.", + "description_kind": "plain", + "computed": true + }, + "update_time": { + "type": "string", + "description": "The most recent time at which the BigQuery export was updated. This field is set by the server and will be ignored if provided on export creation or update.\nA timestamp in RFC3339 UTC \"Zulu\" format, with nanosecond resolution and up to nine fractional digits.\nExamples: \"2014-10-02T15:01:23Z\" and \"2014-10-02T15:01:23.045123456Z\".", + "description_kind": "plain", + "computed": true + } + }, + "block_types": { + "timeouts": { + "nesting_mode": "single", + "block": { + "attributes": { + "create": { + "type": "string", + "description_kind": "plain", + "optional": true + }, + "delete": { + "type": "string", + "description_kind": "plain", + "optional": true + }, + "update": { + "type": "string", + "description_kind": "plain", + "optional": true + } + }, + "description_kind": "plain" + } + } + }, + "description_kind": "plain" + } + }, "google_scc_project_custom_module": { "version": 0, "block": { @@ -141475,6 +145211,105 @@ "description_kind": "plain" } }, + "google_scc_project_scc_big_query_export": { + "version": 0, + "block": { + "attributes": { + "big_query_export_id": { + "type": "string", + "description": "This must be unique within the organization.", + "description_kind": "plain", + "required": true + }, + "create_time": { + "type": "string", + "description": "The time at which the BigQuery export was created. This field is set by the server and will be ignored if provided on export on creation.\nA timestamp in RFC3339 UTC \"Zulu\" format, with nanosecond resolution and up to nine fractional digits.\nExamples: \"2014-10-02T15:01:23Z\" and \"2014-10-02T15:01:23.045123456Z\".", + "description_kind": "plain", + "computed": true + }, + "dataset": { + "type": "string", + "description": "The dataset to write findings' updates to.\nIts format is \"projects/[projectId]/datasets/[bigquery_dataset_id]\".\nBigQuery Dataset unique ID must contain only letters (a-z, A-Z), numbers (0-9), or underscores (_).", + "description_kind": "plain", + "optional": true + }, + "description": { + "type": "string", + "description": "The description of the notification config (max of 1024 characters).", + "description_kind": "plain", + "optional": true + }, + "filter": { + "type": "string", + "description": "Expression that defines the filter to apply across create/update\nevents of findings. The\nexpression is a list of zero or more restrictions combined via\nlogical operators AND and OR. Parentheses are supported, and OR\nhas higher precedence than AND.\n\nRestrictions have the form \u003cfield\u003e \u003coperator\u003e \u003cvalue\u003e and may have\na - character in front of them to indicate negation. The fields\nmap to those defined in the corresponding resource.\n\nThe supported operators are:\n\n* = for all value types.\n* \\\u003e, \u003c, \u003e=, \u003c= for integer values.\n* :, meaning substring matching, for strings.\n\nThe supported value types are:\n\n* string literals in quotes.\n* integer literals without quotes.\n* boolean literals true and false without quotes.\n\nSee\n[Filtering notifications](https://cloud.google.com/security-command-center/docs/how-to-api-filter-notifications)\nfor information on how to write a filter.", + "description_kind": "plain", + "optional": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "most_recent_editor": { + "type": "string", + "description": "Email address of the user who last edited the BigQuery export.\nThis field is set by the server and will be ignored if provided on export creation or update.", + "description_kind": "plain", + "computed": true + }, + "name": { + "type": "string", + "description": "The resource name of this export, in the format\n'projects/{{project}}/bigQueryExports/{{big_query_export_id}}'.\nThis field is provided in responses, and is ignored when provided in create requests.", + "description_kind": "plain", + "computed": true + }, + "principal": { + "type": "string", + "description": "The service account that needs permission to create table and upload data to the BigQuery dataset.", + "description_kind": "plain", + "computed": true + }, + "project": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "update_time": { + "type": "string", + "description": "The most recent time at which the BigQuery export was updated. This field is set by the server and will be ignored if provided on export creation or update.\nA timestamp in RFC3339 UTC \"Zulu\" format, with nanosecond resolution and up to nine fractional digits.\nExamples: \"2014-10-02T15:01:23Z\" and \"2014-10-02T15:01:23.045123456Z\".", + "description_kind": "plain", + "computed": true + } + }, + "block_types": { + "timeouts": { + "nesting_mode": "single", + "block": { + "attributes": { + "create": { + "type": "string", + "description_kind": "plain", + "optional": true + }, + "delete": { + "type": "string", + "description_kind": "plain", + "optional": true + }, + "update": { + "type": "string", + "description_kind": "plain", + "optional": true + } + }, + "description_kind": "plain" + } + } + }, + "description_kind": "plain" + } + }, "google_scc_source": { "version": 0, "block": { @@ -142204,7 +146039,7 @@ "description_kind": "plain" } }, - "google_scc_v2_organization_scc_big_query_exports": { + "google_scc_v2_organization_scc_big_query_export": { "version": 0, "block": { "attributes": { @@ -142309,6 +146144,112 @@ "description_kind": "plain" } }, + "google_scc_v2_organization_scc_big_query_exports": { + "version": 0, + "block": { + "attributes": { + "big_query_export_id": { + "type": "string", + "description": "This must be unique within the organization.", + "description_kind": "plain", + "required": true + }, + "create_time": { + "type": "string", + "description": "The time at which the BigQuery export was created. This field is set by the server and will be ignored if provided on export on creation.\nA timestamp in RFC3339 UTC \"Zulu\" format, with nanosecond resolution and up to nine fractional digits.\nExamples: \"2014-10-02T15:01:23Z\" and \"2014-10-02T15:01:23.045123456Z\".", + "description_kind": "plain", + "computed": true + }, + "dataset": { + "type": "string", + "description": "The dataset to write findings' updates to.\nIts format is \"projects/[projectId]/datasets/[bigquery_dataset_id]\".\nBigQuery Dataset unique ID must contain only letters (a-z, A-Z), numbers (0-9), or underscores (_).", + "description_kind": "plain", + "optional": true + }, + "description": { + "type": "string", + "description": "The description of the notification config (max of 1024 characters).", + "description_kind": "plain", + "optional": true + }, + "filter": { + "type": "string", + "description": "Expression that defines the filter to apply across create/update\nevents of findings. The\nexpression is a list of zero or more restrictions combined via\nlogical operators AND and OR. Parentheses are supported, and OR\nhas higher precedence than AND.\n\nRestrictions have the form \u003cfield\u003e \u003coperator\u003e \u003cvalue\u003e and may have\na - character in front of them to indicate negation. The fields\nmap to those defined in the corresponding resource.\n\nThe supported operators are:\n\n* = for all value types.\n* \u003e, \u003c, \u003e=, \u003c= for integer values.\n* :, meaning substring matching, for strings.\n\nThe supported value types are:\n\n* string literals in quotes.\n* integer literals without quotes.\n* boolean literals true and false without quotes.\n\nSee\n[Filtering notifications](https://cloud.google.com/security-command-center/docs/how-to-api-filter-notifications)\nfor information on how to write a filter.", + "description_kind": "plain", + "optional": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "location": { + "type": "string", + "description": "location Id is provided by organization. If not provided, Use global as default.", + "description_kind": "plain", + "optional": true + }, + "most_recent_editor": { + "type": "string", + "description": "Email address of the user who last edited the BigQuery export.\nThis field is set by the server and will be ignored if provided on export creation or update.", + "description_kind": "plain", + "computed": true + }, + "name": { + "type": "string", + "description": "The resource name of this export, in the format\n'organizations/{{organization}}/locations/{{location}}/bigQueryExports/{{big_query_export_id}}'.\nThis field is provided in responses, and is ignored when provided in create requests.", + "description_kind": "plain", + "optional": true + }, + "organization": { + "type": "string", + "description": "The organization whose Cloud Security Command Center the Big Query Export\nConfig lives in.", + "description_kind": "plain", + "required": true + }, + "principal": { + "type": "string", + "description": "The service account that needs permission to create table and upload data to the BigQuery dataset.", + "description_kind": "plain", + "computed": true + }, + "update_time": { + "type": "string", + "description": "The most recent time at which the BigQuery export was updated. This field is set by the server and will be ignored if provided on export creation or update.\nA timestamp in RFC3339 UTC \"Zulu\" format, with nanosecond resolution and up to nine fractional digits.\nExamples: \"2014-10-02T15:01:23Z\" and \"2014-10-02T15:01:23.045123456Z\".", + "description_kind": "plain", + "computed": true + } + }, + "block_types": { + "timeouts": { + "nesting_mode": "single", + "block": { + "attributes": { + "create": { + "type": "string", + "description_kind": "plain", + "optional": true + }, + "delete": { + "type": "string", + "description_kind": "plain", + "optional": true + }, + "update": { + "type": "string", + "description_kind": "plain", + "optional": true + } + }, + "description_kind": "plain" + } + } + }, + "description_kind": "plain", + "deprecated": true + } + }, "google_scc_v2_organization_source": { "version": 0, "block": { @@ -142841,6 +146782,503 @@ "description_kind": "plain" } }, + "google_secret_manager_regional_secret": { + "version": 0, + "block": { + "attributes": { + "annotations": { + "type": [ + "map", + "string" + ], + "description": "Custom metadata about the regional secret.\n\nAnnotations are distinct from various forms of labels. Annotations exist to allow\nclient tools to store their own state information without requiring a database.\n\nAnnotation keys must be between 1 and 63 characters long, have a UTF-8 encoding of\nmaximum 128 bytes, begin and end with an alphanumeric character ([a-z0-9A-Z]), and\nmay have dashes (-), underscores (_), dots (.), and alphanumerics in between these\nsymbols.\n\nThe total size of annotation keys and values must be less than 16KiB.\n\nAn object containing a list of \"key\": value pairs. Example:\n{ \"name\": \"wrench\", \"mass\": \"1.3kg\", \"count\": \"3\" }.\n\n\n**Note**: This field is non-authoritative, and will only manage the annotations present in your configuration.\nPlease refer to the field 'effective_annotations' for all of the annotations present on the resource.", + "description_kind": "plain", + "optional": true + }, + "create_time": { + "type": "string", + "description": "The time at which the regional secret was created.", + "description_kind": "plain", + "computed": true + }, + "effective_annotations": { + "type": [ + "map", + "string" + ], + "description": "All of annotations (key/value pairs) present on the resource in GCP, including the annotations configured through Terraform, other clients and services.", + "description_kind": "plain", + "computed": true + }, + "effective_labels": { + "type": [ + "map", + "string" + ], + "description": "All of labels (key/value pairs) present on the resource in GCP, including the labels configured through Terraform, other clients and services.", + "description_kind": "plain", + "computed": true + }, + "expire_time": { + "type": "string", + "description": "Timestamp in UTC when the regional secret is scheduled to expire. This is always provided on\noutput, regardless of what was sent on input. A timestamp in RFC3339 UTC \"Zulu\" format, with\nnanosecond resolution and up to nine fractional digits. Examples: \"2014-10-02T15:01:23Z\" and\n\"2014-10-02T15:01:23.045123456Z\". Only one of 'expire_time' or 'ttl' can be provided.", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "labels": { + "type": [ + "map", + "string" + ], + "description": "The labels assigned to this regional secret.\n\nLabel keys must be between 1 and 63 characters long, have a UTF-8 encoding of maximum 128 bytes,\nand must conform to the following PCRE regular expression: [\\p{Ll}\\p{Lo}][\\p{Ll}\\p{Lo}\\p{N}_-]{0,62}\n\nLabel values must be between 0 and 63 characters long, have a UTF-8 encoding of maximum 128 bytes,\nand must conform to the following PCRE regular expression: [\\p{Ll}\\p{Lo}\\p{N}_-]{0,63}\n\nNo more than 64 labels can be assigned to a given resource.\n\nAn object containing a list of \"key\": value pairs. Example:\n{ \"name\": \"wrench\", \"mass\": \"1.3kg\", \"count\": \"3\" }.\n\n\n**Note**: This field is non-authoritative, and will only manage the labels present in your configuration.\nPlease refer to the field 'effective_labels' for all of the labels present on the resource.", + "description_kind": "plain", + "optional": true + }, + "location": { + "type": "string", + "description": "The location of the regional secret. eg us-central1", + "description_kind": "plain", + "required": true + }, + "name": { + "type": "string", + "description": "The resource name of the regional secret. Format:\n'projects/{{project}}/locations/{{location}}/secrets/{{secret_id}}'", + "description_kind": "plain", + "computed": true + }, + "project": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "secret_id": { + "type": "string", + "description": "This must be unique within the project.", + "description_kind": "plain", + "required": true + }, + "terraform_labels": { + "type": [ + "map", + "string" + ], + "description": "The combination of labels configured directly on the resource\n and default labels configured on the provider.", + "description_kind": "plain", + "computed": true + }, + "ttl": { + "type": "string", + "description": "The TTL for the regional secret. A duration in seconds with up to nine fractional digits,\nterminated by 's'. Example: \"3.5s\". Only one of 'ttl' or 'expire_time' can be provided.", + "description_kind": "plain", + "optional": true + }, + "version_aliases": { + "type": [ + "map", + "string" + ], + "description": "Mapping from version alias to version name.\n\nA version alias is a string with a maximum length of 63 characters and can contain\nuppercase and lowercase letters, numerals, and the hyphen (-) and underscore ('_')\ncharacters. An alias string must start with a letter and cannot be the string\n'latest' or 'NEW'. No more than 50 aliases can be assigned to a given secret.\n\nAn object containing a list of \"key\": value pairs. Example:\n{ \"name\": \"wrench\", \"mass\": \"1.3kg\", \"count\": \"3\" }.", + "description_kind": "plain", + "optional": true + }, + "version_destroy_ttl": { + "type": "string", + "description": "Secret Version TTL after destruction request.\nThis is a part of the delayed delete feature on Secret Version.\nFor secret with versionDestroyTtl\u003e0, version destruction doesn't happen immediately\non calling destroy instead the version goes to a disabled state and\nthe actual destruction happens after this TTL expires. It must be atleast 24h.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "customer_managed_encryption": { + "nesting_mode": "list", + "block": { + "attributes": { + "kms_key_name": { + "type": "string", + "description": "The resource name of the Cloud KMS CryptoKey used to encrypt secret payloads.", + "description_kind": "plain", + "required": true + } + }, + "description": "The customer-managed encryption configuration of the regional secret.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "rotation": { + "nesting_mode": "list", + "block": { + "attributes": { + "next_rotation_time": { + "type": "string", + "description": "Timestamp in UTC at which the Secret is scheduled to rotate.\nA timestamp in RFC3339 UTC \"Zulu\" format, with nanosecond resolution and up to nine\nfractional digits. Examples: \"2014-10-02T15:01:23Z\" and \"2014-10-02T15:01:23.045123456Z\".", + "description_kind": "plain", + "optional": true + }, + "rotation_period": { + "type": "string", + "description": "The Duration between rotation notifications. Must be in seconds and at least 3600s (1h)\nand at most 3153600000s (100 years). If rotationPeriod is set, 'next_rotation_time' must\nbe set. 'next_rotation_time' will be advanced by this period when the service\nautomatically sends rotation notifications.", + "description_kind": "plain", + "optional": true + } + }, + "description": "The rotation time and period for a regional secret. At 'next_rotation_time', Secret Manager\nwill send a Pub/Sub notification to the topics configured on the Secret. 'topics' must be\nset to configure rotation.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "timeouts": { + "nesting_mode": "single", + "block": { + "attributes": { + "create": { + "type": "string", + "description_kind": "plain", + "optional": true + }, + "delete": { + "type": "string", + "description_kind": "plain", + "optional": true + }, + "update": { + "type": "string", + "description_kind": "plain", + "optional": true + } + }, + "description_kind": "plain" + } + }, + "topics": { + "nesting_mode": "list", + "block": { + "attributes": { + "name": { + "type": "string", + "description": "The resource name of the Pub/Sub topic that will be published to, in the following format:\nprojects/*/topics/*. For publication to succeed, the Secret Manager Service\nAgent service account must have pubsub.publisher permissions on the topic.", + "description_kind": "plain", + "required": true + } + }, + "description": "A list of up to 10 Pub/Sub topics to which messages are published when control plane\noperations are called on the regional secret or its versions.", + "description_kind": "plain" + } + } + }, + "description_kind": "plain" + } + }, + "google_secret_manager_regional_secret_iam_binding": { + "version": 0, + "block": { + "attributes": { + "etag": { + "type": "string", + "description_kind": "plain", + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "location": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "members": { + "type": [ + "set", + "string" + ], + "description_kind": "plain", + "required": true + }, + "project": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "role": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "secret_id": { + "type": "string", + "description_kind": "plain", + "required": true + } + }, + "block_types": { + "condition": { + "nesting_mode": "list", + "block": { + "attributes": { + "description": { + "type": "string", + "description_kind": "plain", + "optional": true + }, + "expression": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "title": { + "type": "string", + "description_kind": "plain", + "required": true + } + }, + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description_kind": "plain" + } + }, + "google_secret_manager_regional_secret_iam_member": { + "version": 0, + "block": { + "attributes": { + "etag": { + "type": "string", + "description_kind": "plain", + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "location": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "member": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "project": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "role": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "secret_id": { + "type": "string", + "description_kind": "plain", + "required": true + } + }, + "block_types": { + "condition": { + "nesting_mode": "list", + "block": { + "attributes": { + "description": { + "type": "string", + "description_kind": "plain", + "optional": true + }, + "expression": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "title": { + "type": "string", + "description_kind": "plain", + "required": true + } + }, + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description_kind": "plain" + } + }, + "google_secret_manager_regional_secret_iam_policy": { + "version": 0, + "block": { + "attributes": { + "etag": { + "type": "string", + "description_kind": "plain", + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "location": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "policy_data": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "project": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "secret_id": { + "type": "string", + "description_kind": "plain", + "required": true + } + }, + "description_kind": "plain" + } + }, + "google_secret_manager_regional_secret_version": { + "version": 0, + "block": { + "attributes": { + "create_time": { + "type": "string", + "description": "The time at which the regional secret version was created.", + "description_kind": "plain", + "computed": true + }, + "customer_managed_encryption": { + "type": [ + "list", + [ + "object", + { + "kms_key_version_name": "string" + } + ] + ], + "description": "The customer-managed encryption configuration of the regional secret.", + "description_kind": "plain", + "computed": true + }, + "deletion_policy": { + "type": "string", + "description": "The deletion policy for the regional secret version. Setting 'ABANDON' allows the resource\nto be abandoned rather than deleted. Setting 'DISABLE' allows the resource to be\ndisabled rather than deleted. Default is 'DELETE'. Possible values are:\n * DELETE\n * DISABLE\n * ABANDON", + "description_kind": "plain", + "optional": true + }, + "destroy_time": { + "type": "string", + "description": "The time at which the regional secret version was destroyed. Only present if state is DESTROYED.", + "description_kind": "plain", + "computed": true + }, + "enabled": { + "type": "bool", + "description": "The current state of the regional secret version.", + "description_kind": "plain", + "optional": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "is_secret_data_base64": { + "type": "bool", + "description": "If set to 'true', the secret data is expected to be base64-encoded string and would be sent as is.", + "description_kind": "plain", + "optional": true + }, + "location": { + "type": "string", + "description": "Location of Secret Manager regional secret resource.", + "description_kind": "plain", + "computed": true + }, + "name": { + "type": "string", + "description": "The resource name of the regional secret version. Format:\n'projects/{{project}}/locations/{{location}}/secrets/{{secret_id}}/versions/{{version}}'", + "description_kind": "plain", + "computed": true + }, + "secret": { + "type": "string", + "description": "Secret Manager regional secret resource.", + "description_kind": "plain", + "required": true + }, + "secret_data": { + "type": "string", + "description": "The secret data. Must be no larger than 64KiB.", + "description_kind": "plain", + "required": true, + "sensitive": true + }, + "version": { + "type": "string", + "description": "The version of the Regional Secret.", + "description_kind": "plain", + "computed": true + } + }, + "block_types": { + "timeouts": { + "nesting_mode": "single", + "block": { + "attributes": { + "create": { + "type": "string", + "description_kind": "plain", + "optional": true + }, + "delete": { + "type": "string", + "description_kind": "plain", + "optional": true + }, + "update": { + "type": "string", + "description_kind": "plain", + "optional": true + } + }, + "description_kind": "plain" + } + } + }, + "description_kind": "plain" + } + }, "google_secret_manager_secret": { "version": 0, "block": { @@ -143359,6 +147797,141 @@ "description_kind": "plain" } }, + "google_secure_source_manager_branch_rule": { + "version": 0, + "block": { + "attributes": { + "allow_stale_reviews": { + "type": "bool", + "description": "Determines if allow stale reviews or approvals before merging to the branch.", + "description_kind": "plain", + "optional": true + }, + "branch_rule_id": { + "type": "string", + "description": "The ID for the BranchRule.", + "description_kind": "plain", + "required": true + }, + "create_time": { + "type": "string", + "description": "Time the BranchRule was created in UTC.", + "description_kind": "plain", + "computed": true + }, + "disabled": { + "type": "bool", + "description": "Determines if the branch rule is disabled or not.", + "description_kind": "plain", + "optional": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "include_pattern": { + "type": "string", + "description": "The BranchRule matches branches based on the specified regular expression. Use .* to match all branches.", + "description_kind": "plain", + "required": true + }, + "location": { + "type": "string", + "description": "The location for the Repository.", + "description_kind": "plain", + "required": true + }, + "minimum_approvals_count": { + "type": "number", + "description": "The minimum number of approvals required for the branch rule to be matched.", + "description_kind": "plain", + "optional": true + }, + "minimum_reviews_count": { + "type": "number", + "description": "The minimum number of reviews required for the branch rule to be matched.", + "description_kind": "plain", + "optional": true + }, + "name": { + "type": "string", + "description": "The resource name for the BranchRule.", + "description_kind": "plain", + "computed": true + }, + "project": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "repository_id": { + "type": "string", + "description": "The ID for the Repository.", + "description_kind": "plain", + "required": true + }, + "require_comments_resolved": { + "type": "bool", + "description": "Determines if require comments resolved before merging to the branch.", + "description_kind": "plain", + "optional": true + }, + "require_linear_history": { + "type": "bool", + "description": "Determines if require linear history before merging to the branch.", + "description_kind": "plain", + "optional": true + }, + "require_pull_request": { + "type": "bool", + "description": "Determines if the branch rule requires a pull request or not.", + "description_kind": "plain", + "optional": true + }, + "uid": { + "type": "string", + "description": "Unique identifier of the BranchRule.", + "description_kind": "plain", + "computed": true + }, + "update_time": { + "type": "string", + "description": "Time the BranchRule was updated in UTC.", + "description_kind": "plain", + "computed": true + } + }, + "block_types": { + "timeouts": { + "nesting_mode": "single", + "block": { + "attributes": { + "create": { + "type": "string", + "description_kind": "plain", + "optional": true + }, + "delete": { + "type": "string", + "description_kind": "plain", + "optional": true + }, + "update": { + "type": "string", + "description_kind": "plain", + "optional": true + } + }, + "description_kind": "plain" + } + } + }, + "description_kind": "plain" + } + }, "google_secure_source_manager_instance": { "version": 0, "block": { @@ -145375,10 +149948,140 @@ "description_kind": "plain" } }, + "google_site_verification_owner": { + "version": 0, + "block": { + "attributes": { + "email": { + "type": "string", + "description": "The email address of the owner.", + "description_kind": "plain", + "required": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "web_resource_id": { + "type": "string", + "description": "The id of the Web Resource to add this owner to, in the form \"webResource/\u003cweb-resource-id\u003e\".", + "description_kind": "plain", + "required": true + } + }, + "block_types": { + "timeouts": { + "nesting_mode": "single", + "block": { + "attributes": { + "create": { + "type": "string", + "description_kind": "plain", + "optional": true + }, + "delete": { + "type": "string", + "description_kind": "plain", + "optional": true + } + }, + "description_kind": "plain" + } + } + }, + "description_kind": "plain" + } + }, + "google_site_verification_web_resource": { + "version": 0, + "block": { + "attributes": { + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "owners": { + "type": [ + "list", + "string" + ], + "description": "The email addresses of all direct, verified owners of this exact property. Indirect owners —\nfor example verified owners of the containing domain—are not included in this list.", + "description_kind": "plain", + "computed": true + }, + "verification_method": { + "type": "string", + "description": "The verification method for the Site Verification system to use to verify\nthis site or domain. Possible values: [\"ANALYTICS\", \"DNS_CNAME\", \"DNS_TXT\", \"FILE\", \"META\", \"TAG_MANAGER\"]", + "description_kind": "plain", + "required": true + }, + "web_resource_id": { + "type": "string", + "description": "The string used to identify this web resource.", + "description_kind": "plain", + "computed": true + } + }, + "block_types": { + "site": { + "nesting_mode": "list", + "block": { + "attributes": { + "identifier": { + "type": "string", + "description": "The site identifier. If the type is set to SITE, the identifier is a URL. If the type is\nset to INET_DOMAIN, the identifier is a domain name.", + "description_kind": "plain", + "required": true + }, + "type": { + "type": "string", + "description": "The type of resource to be verified. Possible values: [\"INET_DOMAIN\", \"SITE\"]", + "description_kind": "plain", + "required": true + } + }, + "description": "Container for the address and type of a site for which a verification token will be verified.", + "description_kind": "plain" + }, + "min_items": 1, + "max_items": 1 + }, + "timeouts": { + "nesting_mode": "single", + "block": { + "attributes": { + "create": { + "type": "string", + "description_kind": "plain", + "optional": true + }, + "delete": { + "type": "string", + "description_kind": "plain", + "optional": true + } + }, + "description_kind": "plain" + } + } + }, + "description_kind": "plain" + } + }, "google_sourcerepo_repository": { "version": 0, "block": { "attributes": { + "create_ignore_already_exists": { + "type": "bool", + "description": "If set to true, skip repository creation if a repository with the same name already exists.", + "description_kind": "plain", + "optional": true + }, "id": { "type": "string", "description_kind": "plain", @@ -145635,6 +150338,117 @@ "description_kind": "plain" } }, + "google_spanner_backup_schedule": { + "version": 0, + "block": { + "attributes": { + "database": { + "type": "string", + "description": "The database to create the backup schedule on.", + "description_kind": "plain", + "required": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "instance": { + "type": "string", + "description": "The instance to create the database on.", + "description_kind": "plain", + "required": true + }, + "name": { + "type": "string", + "description": "A unique identifier for the backup schedule, which cannot be changed after\nthe backup schedule is created. Values are of the form [a-z][-a-z0-9]*[a-z0-9].", + "description_kind": "plain", + "optional": true + }, + "project": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "retention_duration": { + "type": "string", + "description": "At what relative time in the future, compared to its creation time, the backup should be deleted, e.g. keep backups for 7 days.\nA duration in seconds with up to nine fractional digits, ending with 's'. Example: '3.5s'.\nYou can set this to a value up to 366 days.", + "description_kind": "plain", + "required": true + } + }, + "block_types": { + "full_backup_spec": { + "nesting_mode": "list", + "block": { + "description": "The schedule creates only full backups..", + "description_kind": "plain" + }, + "max_items": 1 + }, + "incremental_backup_spec": { + "nesting_mode": "list", + "block": { + "description": "The schedule creates incremental backup chains.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "spec": { + "nesting_mode": "list", + "block": { + "block_types": { + "cron_spec": { + "nesting_mode": "list", + "block": { + "attributes": { + "text": { + "type": "string", + "description": "Textual representation of the crontab. User can customize the\nbackup frequency and the backup version time using the cron\nexpression. The version time must be in UTC timzeone.\nThe backup will contain an externally consistent copy of the\ndatabase at the version time. Allowed frequencies are 12 hour, 1 day,\n1 week and 1 month. Examples of valid cron specifications:\n 0 2/12 * * * : every 12 hours at (2, 14) hours past midnight in UTC.\n 0 2,14 * * * : every 12 hours at (2,14) hours past midnight in UTC.\n 0 2 * * * : once a day at 2 past midnight in UTC.\n 0 2 * * 0 : once a week every Sunday at 2 past midnight in UTC.\n 0 2 8 * * : once a month on 8th day at 2 past midnight in UTC.", + "description_kind": "plain", + "optional": true + } + }, + "description": "Cron style schedule specification..", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "Defines specifications of the backup schedule.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "timeouts": { + "nesting_mode": "single", + "block": { + "attributes": { + "create": { + "type": "string", + "description_kind": "plain", + "optional": true + }, + "delete": { + "type": "string", + "description_kind": "plain", + "optional": true + }, + "update": { + "type": "string", + "description_kind": "plain", + "optional": true + } + }, + "description_kind": "plain" + } + } + }, + "description_kind": "plain" + } + }, "google_spanner_database": { "version": 0, "block": { @@ -145714,7 +150528,16 @@ "type": "string", "description": "Fully qualified name of the KMS key to use to encrypt this database. This key must exist\nin the same location as the Spanner Database.", "description_kind": "plain", - "required": true + "optional": true + }, + "kms_key_names": { + "type": [ + "list", + "string" + ], + "description": "Fully qualified name of the KMS keys to use to encrypt this database. The keys must exist\nin the same locations as the Spanner Database.", + "description_kind": "plain", + "optional": true } }, "description": "Encryption configuration for the database", @@ -145950,6 +150773,13 @@ "description_kind": "plain", "required": true }, + "edition": { + "type": "string", + "description": "The edition selected for this instance. Different editions provide different capabilities at different price points. Possible values: [\"EDITION_UNSPECIFIED\", \"STANDARD\", \"ENTERPRISE\", \"ENTERPRISE_PLUS\"]", + "description_kind": "plain", + "optional": true, + "computed": true + }, "effective_labels": { "type": [ "map", @@ -149469,7 +154299,7 @@ }, "topic": { "type": "string", - "description": "The Cloud Pub/Sub topic to which this subscription publishes. Expects either the topic name, assumed to belong to the default GCP provider project, or the project-level name, i.e. projects/my-google-project/topics/my-topic or my-topic. If the project is not set in the provider, you will need to use the project-level name.", + "description": "The Cloud Pub/Sub topic to which this subscription publishes. Expects either the topic name, assumed to belong to the default GCP provider project, or the project-level name, i.e. projects/my-gcp-project/topics/my-topic or my-topic. If the project is not set in the provider, you will need to use the project-level name.", "description_kind": "plain", "required": true } @@ -150400,7 +155230,7 @@ }, "short_name": { "type": "string", - "description": "Input only. The user friendly name for a TagKey. The short name should be unique for TagKeys within the same tag namespace.\n\nThe short name must be 1-63 characters, beginning and ending with an alphanumeric character ([a-z0-9A-Z]) with dashes (-), underscores (_), dots (.), and alphanumerics between.", + "description": "Input only. The user friendly name for a TagKey. The short name should be unique for TagKeys within the same tag namespace.\n\nThe short name can have a maximum length of 256 characters. The permitted character set for the shortName includes all UTF-8 encoded Unicode characters except single quotes ('), double quotes (\"), backslashes (\\\\), and forward slashes (/).", "description_kind": "plain", "required": true }, @@ -150633,7 +155463,7 @@ }, "short_name": { "type": "string", - "description": "Input only. User-assigned short name for TagValue. The short name should be unique for TagValues within the same parent TagKey.\n\nThe short name must be 63 characters or less, beginning and ending with an alphanumeric character ([a-z0-9A-Z]) with dashes (-), underscores (_), dots (.), and alphanumerics between.", + "description": "Input only. User-assigned short name for TagValue. The short name should be unique for TagValues within the same parent TagKey.\n\nThe short name can have a maximum length of 256 characters. The permitted character set for the shortName includes all UTF-8 encoded Unicode characters except single quotes ('), double quotes (\"), backslashes (\\\\), and forward slashes (/).", "description_kind": "plain", "required": true }, @@ -150672,135 +155502,1046 @@ "description_kind": "plain" } }, - "google_tags_tag_value_iam_binding": { + "google_tags_tag_value_iam_binding": { + "version": 0, + "block": { + "attributes": { + "etag": { + "type": "string", + "description_kind": "plain", + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "members": { + "type": [ + "set", + "string" + ], + "description_kind": "plain", + "required": true + }, + "role": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "tag_value": { + "type": "string", + "description_kind": "plain", + "required": true + } + }, + "block_types": { + "condition": { + "nesting_mode": "list", + "block": { + "attributes": { + "description": { + "type": "string", + "description_kind": "plain", + "optional": true + }, + "expression": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "title": { + "type": "string", + "description_kind": "plain", + "required": true + } + }, + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description_kind": "plain" + } + }, + "google_tags_tag_value_iam_member": { + "version": 0, + "block": { + "attributes": { + "etag": { + "type": "string", + "description_kind": "plain", + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "member": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "role": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "tag_value": { + "type": "string", + "description_kind": "plain", + "required": true + } + }, + "block_types": { + "condition": { + "nesting_mode": "list", + "block": { + "attributes": { + "description": { + "type": "string", + "description_kind": "plain", + "optional": true + }, + "expression": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "title": { + "type": "string", + "description_kind": "plain", + "required": true + } + }, + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description_kind": "plain" + } + }, + "google_tags_tag_value_iam_policy": { + "version": 0, + "block": { + "attributes": { + "etag": { + "type": "string", + "description_kind": "plain", + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "policy_data": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "tag_value": { + "type": "string", + "description_kind": "plain", + "required": true + } + }, + "description_kind": "plain" + } + }, + "google_tpu_node": { + "version": 0, + "block": { + "attributes": { + "accelerator_type": { + "type": "string", + "description": "The type of hardware accelerators associated with this node.", + "description_kind": "plain", + "required": true + }, + "cidr_block": { + "type": "string", + "description": "The CIDR block that the TPU node will use when selecting an IP\naddress. This CIDR block must be a /29 block; the Compute Engine\nnetworks API forbids a smaller block, and using a larger block would\nbe wasteful (a node can only consume one IP address).\n\nErrors will occur if the CIDR block has already been used for a\ncurrently existing TPU node, the CIDR block conflicts with any\nsubnetworks in the user's provided network, or the provided network\nis peered with another network that is using that CIDR block.", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "description": { + "type": "string", + "description": "The user-supplied description of the TPU. Maximum of 512 characters.", + "description_kind": "plain", + "optional": true + }, + "effective_labels": { + "type": [ + "map", + "string" + ], + "description": "All of labels (key/value pairs) present on the resource in GCP, including the labels configured through Terraform, other clients and services.", + "description_kind": "plain", + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "labels": { + "type": [ + "map", + "string" + ], + "description": "Resource labels to represent user provided metadata.\n\n**Note**: This field is non-authoritative, and will only manage the labels present in your configuration.\nPlease refer to the field 'effective_labels' for all of the labels present on the resource.", + "description_kind": "plain", + "optional": true + }, + "name": { + "type": "string", + "description": "The immutable name of the TPU.", + "description_kind": "plain", + "required": true + }, + "network": { + "type": "string", + "description": "The name of a network to peer the TPU node to. It must be a\npreexisting Compute Engine network inside of the project on which\nthis API has been activated. If none is provided, \"default\" will be\nused.", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "network_endpoints": { + "type": [ + "list", + [ + "object", + { + "ip_address": "string", + "port": "number" + } + ] + ], + "description": "The network endpoints where TPU workers can be accessed and sent work.\nIt is recommended that Tensorflow clients of the node first reach out\nto the first (index 0) entry.", + "description_kind": "plain", + "computed": true + }, + "project": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "service_account": { + "type": "string", + "description": "The service account used to run the tensor flow services within the\nnode. To share resources, including Google Cloud Storage data, with\nthe Tensorflow job running in the Node, this account must have\npermissions to that data.", + "description_kind": "plain", + "computed": true + }, + "tensorflow_version": { + "type": "string", + "description": "The version of Tensorflow running in the Node.", + "description_kind": "plain", + "required": true + }, + "terraform_labels": { + "type": [ + "map", + "string" + ], + "description": "The combination of labels configured directly on the resource\n and default labels configured on the provider.", + "description_kind": "plain", + "computed": true + }, + "use_service_networking": { + "type": "bool", + "description": "Whether the VPC peering for the node is set up through Service Networking API.\nThe VPC Peering should be set up before provisioning the node. If this field is set,\ncidr_block field should not be specified. If the network that you want to peer the\nTPU Node to is a Shared VPC network, the node must be created with this this field enabled.", + "description_kind": "plain", + "optional": true + }, + "zone": { + "type": "string", + "description": "The GCP location for the TPU. If it is not provided, the provider zone is used.", + "description_kind": "plain", + "optional": true, + "computed": true + } + }, + "block_types": { + "scheduling_config": { + "nesting_mode": "list", + "block": { + "attributes": { + "preemptible": { + "type": "bool", + "description": "Defines whether the TPU instance is preemptible.", + "description_kind": "plain", + "required": true + } + }, + "description": "Sets the scheduling options for this TPU instance.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "timeouts": { + "nesting_mode": "single", + "block": { + "attributes": { + "create": { + "type": "string", + "description_kind": "plain", + "optional": true + }, + "delete": { + "type": "string", + "description_kind": "plain", + "optional": true + }, + "update": { + "type": "string", + "description_kind": "plain", + "optional": true + } + }, + "description_kind": "plain" + } + } + }, + "description_kind": "plain" + } + }, + "google_transcoder_job": { + "version": 0, + "block": { + "attributes": { + "create_time": { + "type": "string", + "description": "The time the job was created.", + "description_kind": "plain", + "computed": true + }, + "effective_labels": { + "type": [ + "map", + "string" + ], + "description": "All of labels (key/value pairs) present on the resource in GCP, including the labels configured through Terraform, other clients and services.", + "description_kind": "plain", + "computed": true + }, + "end_time": { + "type": "string", + "description": "The time the transcoding finished.", + "description_kind": "plain", + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "labels": { + "type": [ + "map", + "string" + ], + "description": "The labels associated with this job. You can use these to organize and group your jobs.\n\n\n**Note**: This field is non-authoritative, and will only manage the labels present in your configuration.\nPlease refer to the field 'effective_labels' for all of the labels present on the resource.", + "description_kind": "plain", + "optional": true + }, + "location": { + "type": "string", + "description": "The location of the transcoding job resource.", + "description_kind": "plain", + "required": true + }, + "name": { + "type": "string", + "description": "The resource name of the job.", + "description_kind": "plain", + "computed": true + }, + "project": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "start_time": { + "type": "string", + "description": "The time the transcoding started.", + "description_kind": "plain", + "computed": true + }, + "state": { + "type": "string", + "description": "The current state of the job.", + "description_kind": "plain", + "computed": true + }, + "template_id": { + "type": "string", + "description": "Specify the templateId to use for populating Job.config.\nThe default is preset/web-hd, which is the only supported preset.", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "terraform_labels": { + "type": [ + "map", + "string" + ], + "description": "The combination of labels configured directly on the resource\n and default labels configured on the provider.", + "description_kind": "plain", + "computed": true + } + }, + "block_types": { + "config": { + "nesting_mode": "list", + "block": { + "block_types": { + "ad_breaks": { + "nesting_mode": "list", + "block": { + "attributes": { + "start_time_offset": { + "type": "string", + "description": "Start time in seconds for the ad break, relative to the output file timeline", + "description_kind": "plain", + "optional": true, + "computed": true + } + }, + "description": "Ad break.", + "description_kind": "plain" + } + }, + "edit_list": { + "nesting_mode": "list", + "block": { + "attributes": { + "inputs": { + "type": [ + "list", + "string" + ], + "description": "List of values identifying files that should be used in this atom.", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "key": { + "type": "string", + "description": "A unique key for this atom.", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "start_time_offset": { + "type": "string", + "description": "Start time in seconds for the atom, relative to the input file timeline. The default is '0s'.", + "description_kind": "plain", + "optional": true, + "computed": true + } + }, + "description": "List of input assets stored in Cloud Storage.", + "description_kind": "plain" + } + }, + "elementary_streams": { + "nesting_mode": "list", + "block": { + "attributes": { + "key": { + "type": "string", + "description": "A unique key for this atom.", + "description_kind": "plain", + "optional": true, + "computed": true + } + }, + "block_types": { + "audio_stream": { + "nesting_mode": "list", + "block": { + "attributes": { + "bitrate_bps": { + "type": "number", + "description": "Audio bitrate in bits per second.", + "description_kind": "plain", + "required": true + }, + "channel_count": { + "type": "number", + "description": "Number of audio channels. The default is '2'.", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "channel_layout": { + "type": [ + "list", + "string" + ], + "description": "A list of channel names specifying layout of the audio channels. The default is [\"fl\", \"fr\"].", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "codec": { + "type": "string", + "description": "The codec for this audio stream. The default is 'aac'.", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "sample_rate_hertz": { + "type": "number", + "description": "The audio sample rate in Hertz. The default is '48000'.", + "description_kind": "plain", + "optional": true, + "computed": true + } + }, + "description": "Encoding of an audio stream.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "video_stream": { + "nesting_mode": "list", + "block": { + "block_types": { + "h264": { + "nesting_mode": "list", + "block": { + "attributes": { + "bitrate_bps": { + "type": "number", + "description": "The video bitrate in bits per second.", + "description_kind": "plain", + "required": true + }, + "crf_level": { + "type": "number", + "description": "Target CRF level. The default is '21'.", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "entropy_coder": { + "type": "string", + "description": "The entropy coder to use. The default is 'cabac'.", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "frame_rate": { + "type": "number", + "description": "The target video frame rate in frames per second (FPS).", + "description_kind": "plain", + "required": true + }, + "gop_duration": { + "type": "string", + "description": "Select the GOP size based on the specified duration. The default is '3s'.", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "height_pixels": { + "type": "number", + "description": "The height of the video in pixels.", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "pixel_format": { + "type": "string", + "description": "Pixel format to use. The default is 'yuv420p'.", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "preset": { + "type": "string", + "description": "Enforces the specified codec preset. The default is 'veryfast'.", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "profile": { + "type": "string", + "description": "Enforces the specified codec profile.", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "rate_control_mode": { + "type": "string", + "description": "Specify the mode. The default is 'vbr'.", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "vbv_fullness_bits": { + "type": "number", + "description": "Initial fullness of the Video Buffering Verifier (VBV) buffer in bits.", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "vbv_size_bits": { + "type": "number", + "description": "Size of the Video Buffering Verifier (VBV) buffer in bits.", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "width_pixels": { + "type": "number", + "description": "The width of the video in pixels.", + "description_kind": "plain", + "optional": true, + "computed": true + } + }, + "block_types": { + "hlg": { + "nesting_mode": "list", + "block": { + "description": "HLG color format setting for H264.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "sdr": { + "nesting_mode": "list", + "block": { + "description": "SDR color format setting for H264.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "H264 codec settings", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "Encoding of a video stream.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "List of input assets stored in Cloud Storage.", + "description_kind": "plain" + } + }, + "encryptions": { + "nesting_mode": "list", + "block": { + "attributes": { + "id": { + "type": "string", + "description": "Identifier for this set of encryption options.", + "description_kind": "plain", + "required": true + } + }, + "block_types": { + "aes128": { + "nesting_mode": "list", + "block": { + "description": "Configuration for AES-128 encryption.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "drm_systems": { + "nesting_mode": "list", + "block": { + "block_types": { + "clearkey": { + "nesting_mode": "list", + "block": { + "description": "Clearkey configuration.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "fairplay": { + "nesting_mode": "list", + "block": { + "description": "Fairplay configuration.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "playready": { + "nesting_mode": "list", + "block": { + "description": "Playready configuration.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "widevine": { + "nesting_mode": "list", + "block": { + "description": "Widevine configuration.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "DRM system(s) to use; at least one must be specified. If a DRM system is omitted, it is considered disabled.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "mpeg_cenc": { + "nesting_mode": "list", + "block": { + "attributes": { + "scheme": { + "type": "string", + "description": "Specify the encryption scheme.", + "description_kind": "plain", + "required": true + } + }, + "description": "Configuration for MPEG Common Encryption (MPEG-CENC).", + "description_kind": "plain" + }, + "max_items": 1 + }, + "sample_aes": { + "nesting_mode": "list", + "block": { + "description": "Configuration for SAMPLE-AES encryption.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "secret_manager_key_source": { + "nesting_mode": "list", + "block": { + "attributes": { + "secret_version": { + "type": "string", + "description": "The name of the Secret Version containing the encryption key in the following format: projects/{project}/secrets/{secret_id}/versions/{version_number}.", + "description_kind": "plain", + "required": true + } + }, + "description": "Configuration for secrets stored in Google Secret Manager.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "List of encryption configurations for the content.", + "description_kind": "plain" + } + }, + "inputs": { + "nesting_mode": "list", + "block": { + "attributes": { + "key": { + "type": "string", + "description": "A unique key for this input. Must be specified when using advanced mapping and edit lists.", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "uri": { + "type": "string", + "description": "URI of the media. Input files must be at least 5 seconds in duration and stored in Cloud Storage (for example, gs://bucket/inputs/file.mp4).\nIf empty, the value is populated from Job.input_uri.", + "description_kind": "plain", + "optional": true, + "computed": true + } + }, + "description": "List of input assets stored in Cloud Storage.", + "description_kind": "plain" + } + }, + "manifests": { + "nesting_mode": "list", + "block": { + "attributes": { + "file_name": { + "type": "string", + "description": "The name of the generated file. The default is 'manifest'.", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "mux_streams": { + "type": [ + "list", + "string" + ], + "description": "List of user supplied MuxStream.key values that should appear in this manifest.", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "type": { + "type": "string", + "description": "Type of the manifest. Possible values: [\"MANIFEST_TYPE_UNSPECIFIED\", \"HLS\", \"DASH\"]", + "description_kind": "plain", + "optional": true, + "computed": true + } + }, + "description": "Manifest configuration.", + "description_kind": "plain" + } + }, + "mux_streams": { + "nesting_mode": "list", + "block": { + "attributes": { + "container": { + "type": "string", + "description": "The container format. The default is 'mp4'.", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "elementary_streams": { + "type": [ + "list", + "string" + ], + "description": "List of ElementaryStream.key values multiplexed in this stream.", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "encryption_id": { + "type": "string", + "description": "Identifier of the encryption configuration to use.", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "file_name": { + "type": "string", + "description": "The name of the generated file.", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "key": { + "type": "string", + "description": "A unique key for this multiplexed stream.", + "description_kind": "plain", + "optional": true, + "computed": true + } + }, + "block_types": { + "segment_settings": { + "nesting_mode": "list", + "block": { + "attributes": { + "segment_duration": { + "type": "string", + "description": "Duration of the segments in seconds. The default is '6.0s'.", + "description_kind": "plain", + "optional": true, + "computed": true + } + }, + "description": "Segment settings for ts, fmp4 and vtt.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "Multiplexing settings for output stream.", + "description_kind": "plain" + } + }, + "output": { + "nesting_mode": "list", + "block": { + "attributes": { + "uri": { + "type": "string", + "description": "URI for the output file(s). For example, gs://my-bucket/outputs/.", + "description_kind": "plain", + "optional": true, + "computed": true + } + }, + "description": "Location of output file(s) in a Cloud Storage bucket.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "overlays": { + "nesting_mode": "list", + "block": { + "block_types": { + "animations": { + "nesting_mode": "list", + "block": { + "block_types": { + "animation_fade": { + "nesting_mode": "list", + "block": { + "attributes": { + "end_time_offset": { + "type": "string", + "description": "The time to end the fade animation, in seconds.", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "fade_type": { + "type": "string", + "description": "Required. Type of fade animation: 'FADE_IN' or 'FADE_OUT'.\nThe possible values are:\n\n* 'FADE_TYPE_UNSPECIFIED': The fade type is not specified.\n\n* 'FADE_IN': Fade the overlay object into view.\n\n* 'FADE_OUT': Fade the overlay object out of view. Possible values: [\"FADE_TYPE_UNSPECIFIED\", \"FADE_IN\", \"FADE_OUT\"]", + "description_kind": "plain", + "required": true + }, + "start_time_offset": { + "type": "string", + "description": "The time to start the fade animation, in seconds.", + "description_kind": "plain", + "optional": true, + "computed": true + } + }, + "block_types": { + "xy": { + "nesting_mode": "list", + "block": { + "attributes": { + "x": { + "type": "number", + "description": "Normalized x coordinate.", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "y": { + "type": "number", + "description": "Normalized y coordinate.", + "description_kind": "plain", + "optional": true, + "computed": true + } + }, + "description": "Normalized coordinates based on output video resolution.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "Display overlay object with fade animation.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "List of animations. The list should be chronological, without any time overlap.", + "description_kind": "plain" + } + }, + "image": { + "nesting_mode": "list", + "block": { + "attributes": { + "uri": { + "type": "string", + "description": "URI of the image in Cloud Storage. For example, gs://bucket/inputs/image.png.", + "description_kind": "plain", + "required": true + } + }, + "description": "Image overlay.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "List of overlays on the output video, in descending Z-order.", + "description_kind": "plain" + } + }, + "pubsub_destination": { + "nesting_mode": "list", + "block": { + "attributes": { + "topic": { + "type": "string", + "description": "The name of the Pub/Sub topic to publish job completion notification to. For example: projects/{project}/topics/{topic}.", + "description_kind": "plain", + "optional": true + } + }, + "description": "Pub/Sub destination.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "The configuration for this template.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "timeouts": { + "nesting_mode": "single", + "block": { + "attributes": { + "create": { + "type": "string", + "description_kind": "plain", + "optional": true + }, + "delete": { + "type": "string", + "description_kind": "plain", + "optional": true + }, + "update": { + "type": "string", + "description_kind": "plain", + "optional": true + } + }, + "description_kind": "plain" + } + } + }, + "description_kind": "plain" + } + }, + "google_transcoder_job_template": { "version": 0, "block": { "attributes": { - "etag": { - "type": "string", - "description_kind": "plain", - "computed": true - }, - "id": { - "type": "string", - "description_kind": "plain", - "optional": true, - "computed": true - }, - "members": { + "effective_labels": { "type": [ - "set", + "map", "string" ], - "description_kind": "plain", - "required": true - }, - "role": { - "type": "string", - "description_kind": "plain", - "required": true - }, - "tag_value": { - "type": "string", - "description_kind": "plain", - "required": true - } - }, - "block_types": { - "condition": { - "nesting_mode": "list", - "block": { - "attributes": { - "description": { - "type": "string", - "description_kind": "plain", - "optional": true - }, - "expression": { - "type": "string", - "description_kind": "plain", - "required": true - }, - "title": { - "type": "string", - "description_kind": "plain", - "required": true - } - }, - "description_kind": "plain" - }, - "max_items": 1 - } - }, - "description_kind": "plain" - } - }, - "google_tags_tag_value_iam_member": { - "version": 0, - "block": { - "attributes": { - "etag": { - "type": "string", - "description_kind": "plain", - "computed": true - }, - "id": { - "type": "string", - "description_kind": "plain", - "optional": true, - "computed": true - }, - "member": { - "type": "string", - "description_kind": "plain", - "required": true - }, - "role": { - "type": "string", - "description_kind": "plain", - "required": true - }, - "tag_value": { - "type": "string", - "description_kind": "plain", - "required": true - } - }, - "block_types": { - "condition": { - "nesting_mode": "list", - "block": { - "attributes": { - "description": { - "type": "string", - "description_kind": "plain", - "optional": true - }, - "expression": { - "type": "string", - "description_kind": "plain", - "required": true - }, - "title": { - "type": "string", - "description_kind": "plain", - "required": true - } - }, - "description_kind": "plain" - }, - "max_items": 1 - } - }, - "description_kind": "plain" - } - }, - "google_tags_tag_value_iam_policy": { - "version": 0, - "block": { - "attributes": { - "etag": { - "type": "string", + "description": "All of labels (key/value pairs) present on the resource in GCP, including the labels configured through Terraform, other clients and services.", "description_kind": "plain", "computed": true }, @@ -150810,92 +156551,30 @@ "optional": true, "computed": true }, - "policy_data": { + "job_template_id": { "type": "string", + "description": "ID to use for the Transcoding job template.", "description_kind": "plain", "required": true }, - "tag_value": { - "type": "string", - "description_kind": "plain", - "required": true - } - }, - "description_kind": "plain" - } - }, - "google_tpu_node": { - "version": 0, - "block": { - "attributes": { - "accelerator_type": { - "type": "string", - "description": "The type of hardware accelerators associated with this node.", - "description_kind": "plain", - "required": true - }, - "cidr_block": { - "type": "string", - "description": "The CIDR block that the TPU node will use when selecting an IP\naddress. This CIDR block must be a /29 block; the Compute Engine\nnetworks API forbids a smaller block, and using a larger block would\nbe wasteful (a node can only consume one IP address).\n\nErrors will occur if the CIDR block has already been used for a\ncurrently existing TPU node, the CIDR block conflicts with any\nsubnetworks in the user's provided network, or the provided network\nis peered with another network that is using that CIDR block.", - "description_kind": "plain", - "optional": true, - "computed": true - }, - "description": { - "type": "string", - "description": "The user-supplied description of the TPU. Maximum of 512 characters.", - "description_kind": "plain", - "optional": true - }, - "effective_labels": { - "type": [ - "map", - "string" - ], - "description": "All of labels (key/value pairs) present on the resource in GCP, including the labels configured through Terraform, other clients and services.", - "description_kind": "plain", - "computed": true - }, - "id": { - "type": "string", - "description_kind": "plain", - "optional": true, - "computed": true - }, "labels": { "type": [ "map", "string" ], - "description": "Resource labels to represent user provided metadata.\n\n**Note**: This field is non-authoritative, and will only manage the labels present in your configuration.\nPlease refer to the field 'effective_labels' for all of the labels present on the resource.", + "description": "The labels associated with this job template. You can use these to organize and group your job templates.\n\n\n**Note**: This field is non-authoritative, and will only manage the labels present in your configuration.\nPlease refer to the field 'effective_labels' for all of the labels present on the resource.", "description_kind": "plain", "optional": true }, - "name": { + "location": { "type": "string", - "description": "The immutable name of the TPU.", + "description": "The location of the transcoding job template resource.", "description_kind": "plain", "required": true }, - "network": { + "name": { "type": "string", - "description": "The name of a network to peer the TPU node to. It must be a\npreexisting Compute Engine network inside of the project on which\nthis API has been activated. If none is provided, \"default\" will be\nused.", - "description_kind": "plain", - "optional": true, - "computed": true - }, - "network_endpoints": { - "type": [ - "list", - [ - "object", - { - "ip_address": "string", - "port": "number" - } - ] - ], - "description": "The network endpoints where TPU workers can be accessed and sent work.\nIt is recommended that Tensorflow clients of the node first reach out\nto the first (index 0) entry.", + "description": "The resource name of the job template.", "description_kind": "plain", "computed": true }, @@ -150905,18 +156584,6 @@ "optional": true, "computed": true }, - "service_account": { - "type": "string", - "description": "The service account used to run the tensor flow services within the\nnode. To share resources, including Google Cloud Storage data, with\nthe Tensorflow job running in the Node, this account must have\npermissions to that data.", - "description_kind": "plain", - "computed": true - }, - "tensorflow_version": { - "type": "string", - "description": "The version of Tensorflow running in the Node.", - "description_kind": "plain", - "required": true - }, "terraform_labels": { "type": [ "map", @@ -150925,34 +156592,608 @@ "description": "The combination of labels configured directly on the resource\n and default labels configured on the provider.", "description_kind": "plain", "computed": true - }, - "use_service_networking": { - "type": "bool", - "description": "Whether the VPC peering for the node is set up through Service Networking API.\nThe VPC Peering should be set up before provisioning the node. If this field is set,\ncidr_block field should not be specified. If the network that you want to peer the\nTPU Node to is a Shared VPC network, the node must be created with this this field enabled.", - "description_kind": "plain", - "optional": true - }, - "zone": { - "type": "string", - "description": "The GCP location for the TPU. If it is not provided, the provider zone is used.", - "description_kind": "plain", - "optional": true, - "computed": true } }, "block_types": { - "scheduling_config": { + "config": { "nesting_mode": "list", "block": { - "attributes": { - "preemptible": { - "type": "bool", - "description": "Defines whether the TPU instance is preemptible.", - "description_kind": "plain", - "required": true + "block_types": { + "ad_breaks": { + "nesting_mode": "list", + "block": { + "attributes": { + "start_time_offset": { + "type": "string", + "description": "Start time in seconds for the ad break, relative to the output file timeline", + "description_kind": "plain", + "optional": true, + "computed": true + } + }, + "description": "Ad break.", + "description_kind": "plain" + } + }, + "edit_list": { + "nesting_mode": "list", + "block": { + "attributes": { + "inputs": { + "type": [ + "list", + "string" + ], + "description": "List of values identifying files that should be used in this atom.", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "key": { + "type": "string", + "description": "A unique key for this atom.", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "start_time_offset": { + "type": "string", + "description": "Start time in seconds for the atom, relative to the input file timeline. The default is '0s'.", + "description_kind": "plain", + "optional": true, + "computed": true + } + }, + "description": "List of input assets stored in Cloud Storage.", + "description_kind": "plain" + } + }, + "elementary_streams": { + "nesting_mode": "list", + "block": { + "attributes": { + "key": { + "type": "string", + "description": "A unique key for this atom.", + "description_kind": "plain", + "optional": true, + "computed": true + } + }, + "block_types": { + "audio_stream": { + "nesting_mode": "list", + "block": { + "attributes": { + "bitrate_bps": { + "type": "number", + "description": "Audio bitrate in bits per second.", + "description_kind": "plain", + "required": true + }, + "channel_count": { + "type": "number", + "description": "Number of audio channels. The default is '2'.", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "channel_layout": { + "type": [ + "list", + "string" + ], + "description": "A list of channel names specifying layout of the audio channels. The default is [\"fl\", \"fr\"].", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "codec": { + "type": "string", + "description": "The codec for this audio stream. The default is 'aac'.", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "sample_rate_hertz": { + "type": "number", + "description": "The audio sample rate in Hertz. The default is '48000'.", + "description_kind": "plain", + "optional": true, + "computed": true + } + }, + "description": "Encoding of an audio stream.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "video_stream": { + "nesting_mode": "list", + "block": { + "block_types": { + "h264": { + "nesting_mode": "list", + "block": { + "attributes": { + "bitrate_bps": { + "type": "number", + "description": "The video bitrate in bits per second.", + "description_kind": "plain", + "required": true + }, + "crf_level": { + "type": "number", + "description": "Target CRF level. The default is '21'.", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "entropy_coder": { + "type": "string", + "description": "The entropy coder to use. The default is 'cabac'.", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "frame_rate": { + "type": "number", + "description": "The target video frame rate in frames per second (FPS).", + "description_kind": "plain", + "required": true + }, + "gop_duration": { + "type": "string", + "description": "Select the GOP size based on the specified duration. The default is '3s'.", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "height_pixels": { + "type": "number", + "description": "The height of the video in pixels.", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "pixel_format": { + "type": "string", + "description": "Pixel format to use. The default is 'yuv420p'.", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "preset": { + "type": "string", + "description": "Enforces the specified codec preset. The default is 'veryfast'.", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "profile": { + "type": "string", + "description": "Enforces the specified codec profile.", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "rate_control_mode": { + "type": "string", + "description": "Specify the mode. The default is 'vbr'.", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "vbv_fullness_bits": { + "type": "number", + "description": "Initial fullness of the Video Buffering Verifier (VBV) buffer in bits.", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "vbv_size_bits": { + "type": "number", + "description": "Size of the Video Buffering Verifier (VBV) buffer in bits.", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "width_pixels": { + "type": "number", + "description": "The width of the video in pixels.", + "description_kind": "plain", + "optional": true, + "computed": true + } + }, + "block_types": { + "hlg": { + "nesting_mode": "list", + "block": { + "description": "HLG color format setting for H264.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "sdr": { + "nesting_mode": "list", + "block": { + "description": "SDR color format setting for H264.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "H264 codec settings", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "Encoding of a video stream.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "List of input assets stored in Cloud Storage.", + "description_kind": "plain" + } + }, + "encryptions": { + "nesting_mode": "list", + "block": { + "attributes": { + "id": { + "type": "string", + "description": "Identifier for this set of encryption options.", + "description_kind": "plain", + "required": true + } + }, + "block_types": { + "aes128": { + "nesting_mode": "list", + "block": { + "description": "Configuration for AES-128 encryption.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "drm_systems": { + "nesting_mode": "list", + "block": { + "block_types": { + "clearkey": { + "nesting_mode": "list", + "block": { + "description": "Clearkey configuration.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "fairplay": { + "nesting_mode": "list", + "block": { + "description": "Fairplay configuration.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "playready": { + "nesting_mode": "list", + "block": { + "description": "Playready configuration.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "widevine": { + "nesting_mode": "list", + "block": { + "description": "Widevine configuration.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "DRM system(s) to use; at least one must be specified. If a DRM system is omitted, it is considered disabled.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "mpeg_cenc": { + "nesting_mode": "list", + "block": { + "attributes": { + "scheme": { + "type": "string", + "description": "Specify the encryption scheme.", + "description_kind": "plain", + "required": true + } + }, + "description": "Configuration for MPEG Common Encryption (MPEG-CENC).", + "description_kind": "plain" + }, + "max_items": 1 + }, + "sample_aes": { + "nesting_mode": "list", + "block": { + "description": "Configuration for SAMPLE-AES encryption.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "secret_manager_key_source": { + "nesting_mode": "list", + "block": { + "attributes": { + "secret_version": { + "type": "string", + "description": "The name of the Secret Version containing the encryption key in the following format: projects/{project}/secrets/{secret_id}/versions/{version_number}.", + "description_kind": "plain", + "required": true + } + }, + "description": "Configuration for secrets stored in Google Secret Manager.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "List of encryption configurations for the content.", + "description_kind": "plain" + } + }, + "inputs": { + "nesting_mode": "list", + "block": { + "attributes": { + "key": { + "type": "string", + "description": "A unique key for this input. Must be specified when using advanced mapping and edit lists.", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "uri": { + "type": "string", + "description": "URI of the media. Input files must be at least 5 seconds in duration and stored in Cloud Storage (for example, gs://bucket/inputs/file.mp4).\nIf empty, the value is populated from Job.input_uri.", + "description_kind": "plain", + "optional": true, + "computed": true + } + }, + "description": "List of input assets stored in Cloud Storage.", + "description_kind": "plain" + } + }, + "manifests": { + "nesting_mode": "list", + "block": { + "attributes": { + "file_name": { + "type": "string", + "description": "The name of the generated file. The default is 'manifest'.", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "mux_streams": { + "type": [ + "list", + "string" + ], + "description": "List of user supplied MuxStream.key values that should appear in this manifest.", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "type": { + "type": "string", + "description": "Type of the manifest. Possible values: [\"MANIFEST_TYPE_UNSPECIFIED\", \"HLS\", \"DASH\"]", + "description_kind": "plain", + "optional": true, + "computed": true + } + }, + "description": "Manifest configuration.", + "description_kind": "plain" + } + }, + "mux_streams": { + "nesting_mode": "list", + "block": { + "attributes": { + "container": { + "type": "string", + "description": "The container format. The default is 'mp4'.", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "elementary_streams": { + "type": [ + "list", + "string" + ], + "description": "List of ElementaryStream.key values multiplexed in this stream.", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "encryption_id": { + "type": "string", + "description": "Identifier of the encryption configuration to use.", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "file_name": { + "type": "string", + "description": "The name of the generated file.", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "key": { + "type": "string", + "description": "A unique key for this multiplexed stream.", + "description_kind": "plain", + "optional": true, + "computed": true + } + }, + "block_types": { + "segment_settings": { + "nesting_mode": "list", + "block": { + "attributes": { + "segment_duration": { + "type": "string", + "description": "Duration of the segments in seconds. The default is '6.0s'.", + "description_kind": "plain", + "optional": true, + "computed": true + } + }, + "description": "Segment settings for ts, fmp4 and vtt.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "Multiplexing settings for output stream.", + "description_kind": "plain" + } + }, + "output": { + "nesting_mode": "list", + "block": { + "attributes": { + "uri": { + "type": "string", + "description": "URI for the output file(s). For example, gs://my-bucket/outputs/.", + "description_kind": "plain", + "optional": true, + "computed": true + } + }, + "description": "Location of output file(s) in a Cloud Storage bucket.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "overlays": { + "nesting_mode": "list", + "block": { + "block_types": { + "animations": { + "nesting_mode": "list", + "block": { + "block_types": { + "animation_fade": { + "nesting_mode": "list", + "block": { + "attributes": { + "end_time_offset": { + "type": "string", + "description": "The time to end the fade animation, in seconds.", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "fade_type": { + "type": "string", + "description": "Required. Type of fade animation: 'FADE_IN' or 'FADE_OUT'.\nThe possible values are:\n\n* 'FADE_TYPE_UNSPECIFIED': The fade type is not specified.\n\n* 'FADE_IN': Fade the overlay object into view.\n\n* 'FADE_OUT': Fade the overlay object out of view. Possible values: [\"FADE_TYPE_UNSPECIFIED\", \"FADE_IN\", \"FADE_OUT\"]", + "description_kind": "plain", + "required": true + }, + "start_time_offset": { + "type": "string", + "description": "The time to start the fade animation, in seconds.", + "description_kind": "plain", + "optional": true, + "computed": true + } + }, + "block_types": { + "xy": { + "nesting_mode": "list", + "block": { + "attributes": { + "x": { + "type": "number", + "description": "Normalized x coordinate.", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "y": { + "type": "number", + "description": "Normalized y coordinate.", + "description_kind": "plain", + "optional": true, + "computed": true + } + }, + "description": "Normalized coordinates based on output video resolution.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "Display overlay object with fade animation.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "List of animations. The list should be chronological, without any time overlap.", + "description_kind": "plain" + } + }, + "image": { + "nesting_mode": "list", + "block": { + "attributes": { + "uri": { + "type": "string", + "description": "URI of the image in Cloud Storage. For example, gs://bucket/inputs/image.png.", + "description_kind": "plain", + "required": true + } + }, + "description": "Image overlay.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "List of overlays on the output video, in descending Z-order.", + "description_kind": "plain" + } + }, + "pubsub_destination": { + "nesting_mode": "list", + "block": { + "attributes": { + "topic": { + "type": "string", + "description": "The name of the Pub/Sub topic to publish job completion notification to. For example: projects/{project}/topics/{topic}.", + "description_kind": "plain", + "optional": true + } + }, + "description": "Pub/Sub destination.", + "description_kind": "plain" + }, + "max_items": 1 } }, - "description": "Sets the scheduling options for this TPU instance.", + "description": "The configuration for this template.", "description_kind": "plain" }, "max_items": 1 @@ -154533,7 +160774,7 @@ }, "max_throughput": { "type": "number", - "description": "Maximum throughput of the connector in Mbps, must be greater than 'min_throughput'. Default is 300. Refers to the expected throughput\nwhen using an e2-micro machine type. Value must be a multiple of 100 from 300 through 1000. Must be higher than the value specified by\nmin_throughput. If both max_throughput and max_instances are provided, max_instances takes precedence over max_throughput. The use of\nmax_throughput is discouraged in favor of max_instances.", + "description": "Maximum throughput of the connector in Mbps, must be greater than 'min_throughput'. Default is 300. Refers to the expected throughput\nwhen using an e2-micro machine type. Value must be a multiple of 100 from 300 through 1000. Must be higher than the value specified by\nmin_throughput. Only one of 'max_throughput' and 'max_instances' can be specified. The use of max_throughput is discouraged in favor of max_instances.", "description_kind": "plain", "optional": true, "computed": true @@ -154547,7 +160788,7 @@ }, "min_throughput": { "type": "number", - "description": "Minimum throughput of the connector in Mbps. Default and min is 200. Refers to the expected throughput when using an e2-micro machine type.\nValue must be a multiple of 100 from 200 through 900. Must be lower than the value specified by max_throughput. If both min_throughput and\nmin_instances are provided, min_instances takes precedence over min_throughput. The use of min_throughput is discouraged in favor of min_instances.", + "description": "Minimum throughput of the connector in Mbps. Default and min is 200. Refers to the expected throughput when using an e2-micro machine type.\nValue must be a multiple of 100 from 200 through 900. Must be lower than the value specified by max_throughput.\nOnly one of 'min_throughput' and 'min_instances' can be specified. The use of min_throughput is discouraged in favor of min_instances.", "description_kind": "plain", "optional": true, "computed": true @@ -155980,7 +162221,7 @@ [ "object", { - "google_project": "string", + "gcp_project": "string", "location": "string", "zone": "string" } @@ -156043,7 +162284,7 @@ [ "object", { - "google_project": "string", + "gcp_project": "string", "location": "string", "zone": "string" } @@ -157399,6 +163640,49 @@ "description_kind": "plain" } }, + "google_bigquery_tables": { + "version": 0, + "block": { + "attributes": { + "dataset_id": { + "type": "string", + "description": "The ID of the dataset containing the tables.", + "description_kind": "plain", + "required": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "project": { + "type": "string", + "description": "The ID of the project in which the dataset is located. If it is not provided, the provider project is used.", + "description_kind": "plain", + "optional": true + }, + "tables": { + "type": [ + "list", + [ + "object", + { + "labels": [ + "map", + "string" + ], + "table_id": "string" + } + ] + ], + "description_kind": "plain", + "computed": true + } + }, + "description_kind": "plain" + } + }, "google_bigtable_instance_iam_policy": { "version": 0, "block": { @@ -159014,12 +165298,510 @@ "description_kind": "plain", "computed": true }, - "execution_count": { - "type": "number", - "description": "Number of executions created for this job.", - "description_kind": "plain", - "computed": true - }, + "execution_count": { + "type": "number", + "description": "Number of executions created for this job.", + "description_kind": "plain", + "computed": true + }, + "expire_time": { + "type": "string", + "description": "For a deleted resource, the time after which it will be permamently deleted.", + "description_kind": "plain", + "computed": true + }, + "generation": { + "type": "string", + "description": "A number that monotonically increases every time the user modifies the desired state.", + "description_kind": "plain", + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "labels": { + "type": [ + "map", + "string" + ], + "description": "Unstructured key value map that can be used to organize and categorize objects. User-provided labels are shared with Google's billing system, so they can be used to filter, or break down billing charges by team, component,\nenvironment, state, etc. For more information, visit https://cloud.google.com/resource-manager/docs/creating-managing-labels or https://cloud.google.com/run/docs/configuring/labels.\n\nCloud Run API v2 does not support labels with 'run.googleapis.com', 'cloud.googleapis.com', 'serving.knative.dev', or 'autoscaling.knative.dev' namespaces, and they will be rejected.\nAll system labels in v1 now have a corresponding field in v2 Job.\n\n**Note**: This field is non-authoritative, and will only manage the labels present in your configuration.\nPlease refer to the field 'effective_labels' for all of the labels present on the resource.", + "description_kind": "plain", + "computed": true + }, + "last_modifier": { + "type": "string", + "description": "Email address of the last authenticated modifier.", + "description_kind": "plain", + "computed": true + }, + "latest_created_execution": { + "type": [ + "list", + [ + "object", + { + "completion_time": "string", + "create_time": "string", + "name": "string" + } + ] + ], + "description": "Name of the last created execution.", + "description_kind": "plain", + "computed": true + }, + "launch_stage": { + "type": "string", + "description": "The launch stage as defined by [Google Cloud Platform Launch Stages](https://cloud.google.com/products#product-launch-stages). Cloud Run supports ALPHA, BETA, and GA.\nIf no value is specified, GA is assumed. Set the launch stage to a preview stage on input to allow use of preview features in that stage. On read (or output), describes whether the resource uses preview features.\n\nFor example, if ALPHA is provided as input, but only BETA and GA-level features are used, this field will be BETA on output. Possible values: [\"UNIMPLEMENTED\", \"PRELAUNCH\", \"EARLY_ACCESS\", \"ALPHA\", \"BETA\", \"GA\", \"DEPRECATED\"]", + "description_kind": "plain", + "computed": true + }, + "location": { + "type": "string", + "description": "The location of the cloud run job", + "description_kind": "plain", + "optional": true + }, + "name": { + "type": "string", + "description": "Name of the Job.", + "description_kind": "plain", + "required": true + }, + "observed_generation": { + "type": "string", + "description": "The generation of this Job. See comments in reconciling for additional information on reconciliation process in Cloud Run.", + "description_kind": "plain", + "computed": true + }, + "project": { + "type": "string", + "description_kind": "plain", + "optional": true + }, + "reconciling": { + "type": "bool", + "description": "Returns true if the Job is currently being acted upon by the system to bring it into the desired state.\n\nWhen a new Job is created, or an existing one is updated, Cloud Run will asynchronously perform all necessary steps to bring the Job to the desired state. This process is called reconciliation. While reconciliation is in process, observedGeneration and latest_succeeded_execution, will have transient values that might mismatch the intended state: Once reconciliation is over (and this field is false), there are two possible outcomes: reconciliation succeeded and the state matches the Job, or there was an error, and reconciliation failed. This state can be found in terminalCondition.state.\n\nIf reconciliation succeeded, the following fields will match: observedGeneration and generation, latest_succeeded_execution and latestCreatedExecution.\n\nIf reconciliation failed, observedGeneration and latest_succeeded_execution will have the state of the last succeeded execution or empty for newly created Job. Additional information on the failure can be found in terminalCondition and conditions", + "description_kind": "plain", + "computed": true + }, + "template": { + "type": [ + "list", + [ + "object", + { + "annotations": [ + "map", + "string" + ], + "labels": [ + "map", + "string" + ], + "parallelism": "number", + "task_count": "number", + "template": [ + "list", + [ + "object", + { + "containers": [ + "list", + [ + "object", + { + "args": [ + "list", + "string" + ], + "command": [ + "list", + "string" + ], + "env": [ + "set", + [ + "object", + { + "name": "string", + "value": "string", + "value_source": [ + "list", + [ + "object", + { + "secret_key_ref": [ + "list", + [ + "object", + { + "secret": "string", + "version": "string" + } + ] + ] + } + ] + ] + } + ] + ], + "image": "string", + "name": "string", + "ports": [ + "list", + [ + "object", + { + "container_port": "number", + "name": "string" + } + ] + ], + "resources": [ + "list", + [ + "object", + { + "limits": [ + "map", + "string" + ] + } + ] + ], + "volume_mounts": [ + "list", + [ + "object", + { + "mount_path": "string", + "name": "string" + } + ] + ], + "working_dir": "string" + } + ] + ], + "encryption_key": "string", + "execution_environment": "string", + "max_retries": "number", + "service_account": "string", + "timeout": "string", + "volumes": [ + "list", + [ + "object", + { + "cloud_sql_instance": [ + "list", + [ + "object", + { + "instances": [ + "list", + "string" + ] + } + ] + ], + "gcs": [ + "list", + [ + "object", + { + "bucket": "string", + "read_only": "bool" + } + ] + ], + "name": "string", + "nfs": [ + "list", + [ + "object", + { + "path": "string", + "read_only": "bool", + "server": "string" + } + ] + ], + "secret": [ + "list", + [ + "object", + { + "default_mode": "number", + "items": [ + "list", + [ + "object", + { + "mode": "number", + "path": "string", + "version": "string" + } + ] + ], + "secret": "string" + } + ] + ] + } + ] + ], + "vpc_access": [ + "list", + [ + "object", + { + "connector": "string", + "egress": "string", + "network_interfaces": [ + "list", + [ + "object", + { + "network": "string", + "subnetwork": "string", + "tags": [ + "list", + "string" + ] + } + ] + ] + } + ] + ] + } + ] + ] + } + ] + ], + "description": "The template used to create executions for this Job.", + "description_kind": "plain", + "computed": true + }, + "terminal_condition": { + "type": [ + "list", + [ + "object", + { + "execution_reason": "string", + "last_transition_time": "string", + "message": "string", + "reason": "string", + "revision_reason": "string", + "severity": "string", + "state": "string", + "type": "string" + } + ] + ], + "description": "The Condition of this Job, containing its readiness status, and detailed error information in case it did not reach the desired state", + "description_kind": "plain", + "computed": true + }, + "terraform_labels": { + "type": [ + "map", + "string" + ], + "description": "The combination of labels configured directly on the resource\n and default labels configured on the provider.", + "description_kind": "plain", + "computed": true + }, + "uid": { + "type": "string", + "description": "Server assigned unique identifier for the Execution. The value is a UUID4 string and guaranteed to remain unchanged until the resource is deleted.", + "description_kind": "plain", + "computed": true + }, + "update_time": { + "type": "string", + "description": "The last-modified time.", + "description_kind": "plain", + "computed": true + } + }, + "description_kind": "plain" + } + }, + "google_cloud_run_v2_job_iam_policy": { + "version": 0, + "block": { + "attributes": { + "etag": { + "type": "string", + "description_kind": "plain", + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "location": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "name": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "policy_data": { + "type": "string", + "description_kind": "plain", + "computed": true + }, + "project": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + } + }, + "description_kind": "plain" + } + }, + "google_cloud_run_v2_service": { + "version": 0, + "block": { + "attributes": { + "annotations": { + "type": [ + "map", + "string" + ], + "description": "Unstructured key value map that may be set by external tools to store and arbitrary metadata. They are not queryable and should be preserved when modifying objects.\n\nCloud Run API v2 does not support annotations with 'run.googleapis.com', 'cloud.googleapis.com', 'serving.knative.dev', or 'autoscaling.knative.dev' namespaces, and they will be rejected in new resources.\nAll system annotations in v1 now have a corresponding field in v2 Service.\n\nThis field follows Kubernetes annotations' namespacing, limits, and rules.\n\n**Note**: This field is non-authoritative, and will only manage the annotations present in your configuration.\nPlease refer to the field 'effective_annotations' for all of the annotations present on the resource.", + "description_kind": "plain", + "computed": true + }, + "binary_authorization": { + "type": [ + "list", + [ + "object", + { + "breakglass_justification": "string", + "policy": "string", + "use_default": "bool" + } + ] + ], + "description": "Settings for the Binary Authorization feature.", + "description_kind": "plain", + "computed": true + }, + "client": { + "type": "string", + "description": "Arbitrary identifier for the API client.", + "description_kind": "plain", + "computed": true + }, + "client_version": { + "type": "string", + "description": "Arbitrary version identifier for the API client.", + "description_kind": "plain", + "computed": true + }, + "conditions": { + "type": [ + "list", + [ + "object", + { + "execution_reason": "string", + "last_transition_time": "string", + "message": "string", + "reason": "string", + "revision_reason": "string", + "severity": "string", + "state": "string", + "type": "string" + } + ] + ], + "description": "The Conditions of all other associated sub-resources. They contain additional diagnostics information in case the Service does not reach its Serving state. See comments in reconciling for additional information on reconciliation process in Cloud Run.", + "description_kind": "plain", + "computed": true + }, + "create_time": { + "type": "string", + "description": "The creation time.", + "description_kind": "plain", + "computed": true + }, + "creator": { + "type": "string", + "description": "Email address of the authenticated creator.", + "description_kind": "plain", + "computed": true + }, + "custom_audiences": { + "type": [ + "list", + "string" + ], + "description": "One or more custom audiences that you want this service to support. Specify each custom audience as the full URL in a string. The custom audiences are encoded in the token and used to authenticate requests.\nFor more information, see https://cloud.google.com/run/docs/configuring/custom-audiences.", + "description_kind": "plain", + "computed": true + }, + "delete_time": { + "type": "string", + "description": "The deletion time.", + "description_kind": "plain", + "computed": true + }, + "deletion_protection": { + "type": "bool", + "description": "Whether Terraform will be prevented from destroying the service. Defaults to true.\nWhen a'terraform destroy' or 'terraform apply' would delete the service,\nthe command will fail if this field is not set to false in Terraform state.\nWhen the field is set to true or unset in Terraform state, a 'terraform apply'\nor 'terraform destroy' that would delete the service will fail.\nWhen the field is set to false, deleting the service is allowed.", + "description_kind": "plain", + "computed": true + }, + "description": { + "type": "string", + "description": "User-provided description of the Service. This field currently has a 512-character limit.", + "description_kind": "plain", + "computed": true + }, + "effective_annotations": { + "type": [ + "map", + "string" + ], + "description": "All of annotations (key/value pairs) present on the resource in GCP, including the annotations configured through Terraform, other clients and services.", + "description_kind": "plain", + "computed": true + }, + "effective_labels": { + "type": [ + "map", + "string" + ], + "description": "All of labels (key/value pairs) present on the resource in GCP, including the labels configured through Terraform, other clients and services.", + "description_kind": "plain", + "computed": true + }, + "etag": { + "type": "string", + "description": "A system-generated fingerprint for this version of the resource. May be used to detect modification conflict during updates.", + "description_kind": "plain", + "computed": true + }, "expire_time": { "type": "string", "description": "For a deleted resource, the time after which it will be permamently deleted.", @@ -159028,336 +165810,7 @@ }, "generation": { "type": "string", - "description": "A number that monotonically increases every time the user modifies the desired state.", - "description_kind": "plain", - "computed": true - }, - "id": { - "type": "string", - "description_kind": "plain", - "optional": true, - "computed": true - }, - "labels": { - "type": [ - "map", - "string" - ], - "description": "Unstructured key value map that can be used to organize and categorize objects. User-provided labels are shared with Google's billing system, so they can be used to filter, or break down billing charges by team, component,\nenvironment, state, etc. For more information, visit https://cloud.google.com/resource-manager/docs/creating-managing-labels or https://cloud.google.com/run/docs/configuring/labels.\n\nCloud Run API v2 does not support labels with 'run.googleapis.com', 'cloud.googleapis.com', 'serving.knative.dev', or 'autoscaling.knative.dev' namespaces, and they will be rejected.\nAll system labels in v1 now have a corresponding field in v2 Job.\n\n**Note**: This field is non-authoritative, and will only manage the labels present in your configuration.\nPlease refer to the field 'effective_labels' for all of the labels present on the resource.", - "description_kind": "plain", - "computed": true - }, - "last_modifier": { - "type": "string", - "description": "Email address of the last authenticated modifier.", - "description_kind": "plain", - "computed": true - }, - "latest_created_execution": { - "type": [ - "list", - [ - "object", - { - "completion_time": "string", - "create_time": "string", - "name": "string" - } - ] - ], - "description": "Name of the last created execution.", - "description_kind": "plain", - "computed": true - }, - "launch_stage": { - "type": "string", - "description": "The launch stage as defined by [Google Cloud Platform Launch Stages](https://cloud.google.com/products#product-launch-stages). Cloud Run supports ALPHA, BETA, and GA.\nIf no value is specified, GA is assumed. Set the launch stage to a preview stage on input to allow use of preview features in that stage. On read (or output), describes whether the resource uses preview features.\n\nFor example, if ALPHA is provided as input, but only BETA and GA-level features are used, this field will be BETA on output. Possible values: [\"UNIMPLEMENTED\", \"PRELAUNCH\", \"EARLY_ACCESS\", \"ALPHA\", \"BETA\", \"GA\", \"DEPRECATED\"]", - "description_kind": "plain", - "computed": true - }, - "location": { - "type": "string", - "description": "The location of the cloud run job", - "description_kind": "plain", - "optional": true - }, - "name": { - "type": "string", - "description": "Name of the Job.", - "description_kind": "plain", - "required": true - }, - "observed_generation": { - "type": "string", - "description": "The generation of this Job. See comments in reconciling for additional information on reconciliation process in Cloud Run.", - "description_kind": "plain", - "computed": true - }, - "project": { - "type": "string", - "description_kind": "plain", - "optional": true - }, - "reconciling": { - "type": "bool", - "description": "Returns true if the Job is currently being acted upon by the system to bring it into the desired state.\n\nWhen a new Job is created, or an existing one is updated, Cloud Run will asynchronously perform all necessary steps to bring the Job to the desired state. This process is called reconciliation. While reconciliation is in process, observedGeneration and latest_succeeded_execution, will have transient values that might mismatch the intended state: Once reconciliation is over (and this field is false), there are two possible outcomes: reconciliation succeeded and the state matches the Job, or there was an error, and reconciliation failed. This state can be found in terminalCondition.state.\n\nIf reconciliation succeeded, the following fields will match: observedGeneration and generation, latest_succeeded_execution and latestCreatedExecution.\n\nIf reconciliation failed, observedGeneration and latest_succeeded_execution will have the state of the last succeeded execution or empty for newly created Job. Additional information on the failure can be found in terminalCondition and conditions", - "description_kind": "plain", - "computed": true - }, - "template": { - "type": [ - "list", - [ - "object", - { - "annotations": [ - "map", - "string" - ], - "labels": [ - "map", - "string" - ], - "parallelism": "number", - "task_count": "number", - "template": [ - "list", - [ - "object", - { - "containers": [ - "list", - [ - "object", - { - "args": [ - "list", - "string" - ], - "command": [ - "list", - "string" - ], - "env": [ - "set", - [ - "object", - { - "name": "string", - "value": "string", - "value_source": [ - "list", - [ - "object", - { - "secret_key_ref": [ - "list", - [ - "object", - { - "secret": "string", - "version": "string" - } - ] - ] - } - ] - ] - } - ] - ], - "image": "string", - "name": "string", - "ports": [ - "list", - [ - "object", - { - "container_port": "number", - "name": "string" - } - ] - ], - "resources": [ - "list", - [ - "object", - { - "limits": [ - "map", - "string" - ] - } - ] - ], - "volume_mounts": [ - "list", - [ - "object", - { - "mount_path": "string", - "name": "string" - } - ] - ], - "working_dir": "string" - } - ] - ], - "encryption_key": "string", - "execution_environment": "string", - "max_retries": "number", - "service_account": "string", - "timeout": "string", - "volumes": [ - "list", - [ - "object", - { - "cloud_sql_instance": [ - "list", - [ - "object", - { - "instances": [ - "list", - "string" - ] - } - ] - ], - "gcs": [ - "list", - [ - "object", - { - "bucket": "string", - "read_only": "bool" - } - ] - ], - "name": "string", - "nfs": [ - "list", - [ - "object", - { - "path": "string", - "read_only": "bool", - "server": "string" - } - ] - ], - "secret": [ - "list", - [ - "object", - { - "default_mode": "number", - "items": [ - "list", - [ - "object", - { - "mode": "number", - "path": "string", - "version": "string" - } - ] - ], - "secret": "string" - } - ] - ] - } - ] - ], - "vpc_access": [ - "list", - [ - "object", - { - "connector": "string", - "egress": "string", - "network_interfaces": [ - "list", - [ - "object", - { - "network": "string", - "subnetwork": "string", - "tags": [ - "list", - "string" - ] - } - ] - ] - } - ] - ] - } - ] - ] - } - ] - ], - "description": "The template used to create executions for this Job.", - "description_kind": "plain", - "computed": true - }, - "terminal_condition": { - "type": [ - "list", - [ - "object", - { - "execution_reason": "string", - "last_transition_time": "string", - "message": "string", - "reason": "string", - "revision_reason": "string", - "severity": "string", - "state": "string", - "type": "string" - } - ] - ], - "description": "The Condition of this Job, containing its readiness status, and detailed error information in case it did not reach the desired state", - "description_kind": "plain", - "computed": true - }, - "terraform_labels": { - "type": [ - "map", - "string" - ], - "description": "The combination of labels configured directly on the resource\n and default labels configured on the provider.", - "description_kind": "plain", - "computed": true - }, - "uid": { - "type": "string", - "description": "Server assigned unique identifier for the Execution. The value is a UUID4 string and guaranteed to remain unchanged until the resource is deleted.", - "description_kind": "plain", - "computed": true - }, - "update_time": { - "type": "string", - "description": "The last-modified time.", - "description_kind": "plain", - "computed": true - } - }, - "description_kind": "plain" - } - }, - "google_cloud_run_v2_job_iam_policy": { - "version": 0, - "block": { - "attributes": { - "etag": { - "type": "string", + "description": "A number that monotonically increases every time the user modifies the desired state. Please note that unlike v1, this is an int64 value. As with most Google APIs, its JSON representation will be a string instead of an integer.", "description_kind": "plain", "computed": true }, @@ -159367,178 +165820,15 @@ "optional": true, "computed": true }, - "location": { - "type": "string", - "description_kind": "plain", - "optional": true, - "computed": true - }, - "name": { - "type": "string", - "description_kind": "plain", - "required": true - }, - "policy_data": { - "type": "string", - "description_kind": "plain", - "computed": true - }, - "project": { - "type": "string", - "description_kind": "plain", - "optional": true, - "computed": true - } - }, - "description_kind": "plain" - } - }, - "google_cloud_run_v2_service": { - "version": 0, - "block": { - "attributes": { - "annotations": { - "type": [ - "map", - "string" - ], - "description": "Unstructured key value map that may be set by external tools to store and arbitrary metadata. They are not queryable and should be preserved when modifying objects.\n\nCloud Run API v2 does not support annotations with 'run.googleapis.com', 'cloud.googleapis.com', 'serving.knative.dev', or 'autoscaling.knative.dev' namespaces, and they will be rejected in new resources.\nAll system annotations in v1 now have a corresponding field in v2 Service.\n\nThis field follows Kubernetes annotations' namespacing, limits, and rules.\n\n**Note**: This field is non-authoritative, and will only manage the annotations present in your configuration.\nPlease refer to the field 'effective_annotations' for all of the annotations present on the resource.", - "description_kind": "plain", - "computed": true - }, - "binary_authorization": { - "type": [ - "list", - [ - "object", - { - "breakglass_justification": "string", - "policy": "string", - "use_default": "bool" - } - ] - ], - "description": "Settings for the Binary Authorization feature.", - "description_kind": "plain", - "computed": true - }, - "client": { - "type": "string", - "description": "Arbitrary identifier for the API client.", - "description_kind": "plain", - "computed": true - }, - "client_version": { - "type": "string", - "description": "Arbitrary version identifier for the API client.", - "description_kind": "plain", - "computed": true - }, - "conditions": { - "type": [ - "list", - [ - "object", - { - "execution_reason": "string", - "last_transition_time": "string", - "message": "string", - "reason": "string", - "revision_reason": "string", - "severity": "string", - "state": "string", - "type": "string" - } - ] - ], - "description": "The Conditions of all other associated sub-resources. They contain additional diagnostics information in case the Service does not reach its Serving state. See comments in reconciling for additional information on reconciliation process in Cloud Run.", - "description_kind": "plain", - "computed": true - }, - "create_time": { - "type": "string", - "description": "The creation time.", - "description_kind": "plain", - "computed": true - }, - "creator": { - "type": "string", - "description": "Email address of the authenticated creator.", - "description_kind": "plain", - "computed": true - }, - "custom_audiences": { - "type": [ - "list", - "string" - ], - "description": "One or more custom audiences that you want this service to support. Specify each custom audience as the full URL in a string. The custom audiences are encoded in the token and used to authenticate requests.\nFor more information, see https://cloud.google.com/run/docs/configuring/custom-audiences.", - "description_kind": "plain", - "computed": true - }, - "delete_time": { + "ingress": { "type": "string", - "description": "The deletion time.", + "description": "Provides the ingress settings for this Service. On output, returns the currently observed ingress settings, or INGRESS_TRAFFIC_UNSPECIFIED if no revision is active. Possible values: [\"INGRESS_TRAFFIC_ALL\", \"INGRESS_TRAFFIC_INTERNAL_ONLY\", \"INGRESS_TRAFFIC_INTERNAL_LOAD_BALANCER\"]", "description_kind": "plain", "computed": true }, - "deletion_protection": { + "invoker_iam_disabled": { "type": "bool", - "description": "Whether Terraform will be prevented from destroying the service. Defaults to true.\nWhen a'terraform destroy' or 'terraform apply' would delete the service,\nthe command will fail if this field is not set to false in Terraform state.\nWhen the field is set to true or unset in Terraform state, a 'terraform apply'\nor 'terraform destroy' that would delete the service will fail.\nWhen the field is set to false, deleting the service is allowed.", - "description_kind": "plain", - "computed": true - }, - "description": { - "type": "string", - "description": "User-provided description of the Service. This field currently has a 512-character limit.", - "description_kind": "plain", - "computed": true - }, - "effective_annotations": { - "type": [ - "map", - "string" - ], - "description": "All of annotations (key/value pairs) present on the resource in GCP, including the annotations configured through Terraform, other clients and services.", - "description_kind": "plain", - "computed": true - }, - "effective_labels": { - "type": [ - "map", - "string" - ], - "description": "All of labels (key/value pairs) present on the resource in GCP, including the labels configured through Terraform, other clients and services.", - "description_kind": "plain", - "computed": true - }, - "etag": { - "type": "string", - "description": "A system-generated fingerprint for this version of the resource. May be used to detect modification conflict during updates.", - "description_kind": "plain", - "computed": true - }, - "expire_time": { - "type": "string", - "description": "For a deleted resource, the time after which it will be permamently deleted.", - "description_kind": "plain", - "computed": true - }, - "generation": { - "type": "string", - "description": "A number that monotonically increases every time the user modifies the desired state. Please note that unlike v1, this is an int64 value. As with most Google APIs, its JSON representation will be a string instead of an integer.", - "description_kind": "plain", - "computed": true - }, - "id": { - "type": "string", - "description_kind": "plain", - "optional": true, - "computed": true - }, - "ingress": { - "type": "string", - "description": "Provides the ingress settings for this Service. On output, returns the currently observed ingress settings, or INGRESS_TRAFFIC_UNSPECIFIED if no revision is active. Possible values: [\"INGRESS_TRAFFIC_ALL\", \"INGRESS_TRAFFIC_INTERNAL_ONLY\", \"INGRESS_TRAFFIC_INTERNAL_LOAD_BALANCER\"]", + "description": "Disables IAM permission check for run.routes.invoke for callers of this service. This feature is available by invitation only. For more information, visit https://cloud.google.com/run/docs/securing/managing-access#invoker_check.", "description_kind": "plain", "computed": true }, @@ -159604,6 +165894,20 @@ "description_kind": "plain", "computed": true }, + "scaling": { + "type": [ + "list", + [ + "object", + { + "min_instance_count": "number" + } + ] + ], + "description": "Scaling settings that apply to the whole service", + "description_kind": "plain", + "computed": true + }, "template": { "type": [ "list", @@ -161636,6 +167940,15 @@ "map", "string" ], + "cloud_data_lineage_integration": [ + "list", + [ + "object", + { + "enabled": "bool" + } + ] + ], "env_variables": [ "map", "string" @@ -162366,6 +168679,12 @@ "optional": true, "computed": true }, + "ip_address_selection_policy": { + "type": "string", + "description": "Specifies preference of traffic to the backend (from the proxy and from the client for proxyless gRPC). Possible values: [\"IPV4_ONLY\", \"PREFER_IPV6\", \"IPV6_ONLY\"]", + "description_kind": "plain", + "computed": true + }, "load_balancing_scheme": { "type": "string", "description": "Indicates whether the backend service will be used with internal or\nexternal load balancing. A backend service created for one type of\nload balancing cannot be used with the other. For more information, refer to\n[Choosing a load balancer](https://cloud.google.com/load-balancing/docs/backend-service). Default value: \"EXTERNAL\" Possible values: [\"EXTERNAL\", \"INTERNAL_SELF_MANAGED\", \"INTERNAL_MANAGED\", \"EXTERNAL_MANAGED\"]", @@ -162406,7 +168725,7 @@ }, "locality_lb_policy": { "type": "string", - "description": "The load balancing algorithm used within the scope of the locality.\nThe possible values are:\n\n* 'ROUND_ROBIN': This is a simple policy in which each healthy backend\n is selected in round robin order.\n\n* 'LEAST_REQUEST': An O(1) algorithm which selects two random healthy\n hosts and picks the host which has fewer active requests.\n\n* 'RING_HASH': The ring/modulo hash load balancer implements consistent\n hashing to backends. The algorithm has the property that the\n addition/removal of a host from a set of N hosts only affects\n 1/N of the requests.\n\n* 'RANDOM': The load balancer selects a random healthy host.\n\n* 'ORIGINAL_DESTINATION': Backend host is selected based on the client\n connection metadata, i.e., connections are opened\n to the same address as the destination address of\n the incoming connection before the connection\n was redirected to the load balancer.\n\n* 'MAGLEV': used as a drop in replacement for the ring hash load balancer.\n Maglev is not as stable as ring hash but has faster table lookup\n build times and host selection times. For more information about\n Maglev, refer to https://ai.google/research/pubs/pub44824\n\n* 'WEIGHTED_MAGLEV': Per-instance weighted Load Balancing via health check\n reported weights. If set, the Backend Service must\n configure a non legacy HTTP-based Health Check, and\n health check replies are expected to contain\n non-standard HTTP response header field\n X-Load-Balancing-Endpoint-Weight to specify the\n per-instance weights. If set, Load Balancing is weight\n based on the per-instance weights reported in the last\n processed health check replies, as long as every\n instance either reported a valid weight or had\n UNAVAILABLE_WEIGHT. Otherwise, Load Balancing remains\n equal-weight.\n\nThis field is applicable to either:\n\n* A regional backend service with the service_protocol set to HTTP, HTTPS, or HTTP2,\n and loadBalancingScheme set to INTERNAL_MANAGED.\n* A global backend service with the load_balancing_scheme set to INTERNAL_SELF_MANAGED.\n* A regional backend service with loadBalancingScheme set to EXTERNAL (External Network\n Load Balancing). Only MAGLEV and WEIGHTED_MAGLEV values are possible for External\n Network Load Balancing. The default is MAGLEV.\n\nIf session_affinity is not NONE, and this field is not set to MAGLEV, WEIGHTED_MAGLEV,\nor RING_HASH, session affinity settings will not take effect.\n\nOnly ROUND_ROBIN and RING_HASH are supported when the backend service is referenced\nby a URL map that is bound to target gRPC proxy that has validate_for_proxyless\nfield set to true. Possible values: [\"ROUND_ROBIN\", \"LEAST_REQUEST\", \"RING_HASH\", \"RANDOM\", \"ORIGINAL_DESTINATION\", \"MAGLEV\", \"WEIGHTED_MAGLEV\"]", + "description": "The load balancing algorithm used within the scope of the locality.\nThe possible values are:\n\n* 'ROUND_ROBIN': This is a simple policy in which each healthy backend\n is selected in round robin order.\n\n* 'LEAST_REQUEST': An O(1) algorithm which selects two random healthy\n hosts and picks the host which has fewer active requests.\n\n* 'RING_HASH': The ring/modulo hash load balancer implements consistent\n hashing to backends. The algorithm has the property that the\n addition/removal of a host from a set of N hosts only affects\n 1/N of the requests.\n\n* 'RANDOM': The load balancer selects a random healthy host.\n\n* 'ORIGINAL_DESTINATION': Backend host is selected based on the client\n connection metadata, i.e., connections are opened\n to the same address as the destination address of\n the incoming connection before the connection\n was redirected to the load balancer.\n\n* 'MAGLEV': used as a drop in replacement for the ring hash load balancer.\n Maglev is not as stable as ring hash but has faster table lookup\n build times and host selection times. For more information about\n Maglev, refer to https://ai.google/research/pubs/pub44824\n\n* 'WEIGHTED_MAGLEV': Per-instance weighted Load Balancing via health check\n reported weights. Only applicable to loadBalancingScheme\n EXTERNAL. If set, the Backend Service must\n configure a non legacy HTTP-based Health Check, and\n health check replies are expected to contain\n non-standard HTTP response header field\n X-Load-Balancing-Endpoint-Weight to specify the\n per-instance weights. If set, Load Balancing is weight\n based on the per-instance weights reported in the last\n processed health check replies, as long as every\n instance either reported a valid weight or had\n UNAVAILABLE_WEIGHT. Otherwise, Load Balancing remains\n equal-weight.\n\nlocality_lb_policy is applicable to either:\n\n* A regional backend service with the service_protocol set to HTTP, HTTPS, or HTTP2,\n and loadBalancingScheme set to INTERNAL_MANAGED.\n* A global backend service with the load_balancing_scheme set to INTERNAL_SELF_MANAGED.\n* A regional backend service with loadBalancingScheme set to EXTERNAL (External Network\n Load Balancing). Only MAGLEV and WEIGHTED_MAGLEV values are possible for External\n Network Load Balancing. The default is MAGLEV.\n\nIf session_affinity is not NONE, and locality_lb_policy is not set to MAGLEV, WEIGHTED_MAGLEV,\nor RING_HASH, session affinity settings will not take effect.\n\nOnly ROUND_ROBIN and RING_HASH are supported when the backend service is referenced\nby a URL map that is bound to target gRPC proxy that has validate_for_proxyless\nfield set to true. Possible values: [\"ROUND_ROBIN\", \"LEAST_REQUEST\", \"RING_HASH\", \"RANDOM\", \"ORIGINAL_DESTINATION\", \"MAGLEV\", \"WEIGHTED_MAGLEV\"]", "description_kind": "plain", "computed": true }, @@ -162539,7 +168858,32 @@ }, "session_affinity": { "type": "string", - "description": "Type of session affinity to use. The default is NONE. Session affinity is\nnot applicable if the protocol is UDP. Possible values: [\"NONE\", \"CLIENT_IP\", \"CLIENT_IP_PORT_PROTO\", \"CLIENT_IP_PROTO\", \"GENERATED_COOKIE\", \"HEADER_FIELD\", \"HTTP_COOKIE\"]", + "description": "Type of session affinity to use. The default is NONE. Session affinity is\nnot applicable if the protocol is UDP. Possible values: [\"NONE\", \"CLIENT_IP\", \"CLIENT_IP_PORT_PROTO\", \"CLIENT_IP_PROTO\", \"GENERATED_COOKIE\", \"HEADER_FIELD\", \"HTTP_COOKIE\", \"STRONG_COOKIE_AFFINITY\"]", + "description_kind": "plain", + "computed": true + }, + "strong_session_affinity_cookie": { + "type": [ + "list", + [ + "object", + { + "name": "string", + "path": "string", + "ttl": [ + "list", + [ + "object", + { + "nanos": "number", + "seconds": "number" + } + ] + ] + } + ] + ], + "description": "Describes the HTTP cookie used for stateful session affinity. This field is applicable and required if the sessionAffinity is set to STRONG_COOKIE_AFFINITY.", "description_kind": "plain", "computed": true }, @@ -164041,6 +170385,10 @@ "map", "string" ], + "resource_policies": [ + "list", + "string" + ], "size": "number", "storage_pool": "string", "type": "string" @@ -164105,7 +170453,7 @@ }, "desired_status": { "type": "string", - "description": "Desired status of the instance. Either \"RUNNING\" or \"TERMINATED\".", + "description": "Desired status of the instance. Either \"RUNNING\", \"SUSPENDED\" or \"TERMINATED\".", "description_kind": "plain", "computed": true }, @@ -165039,6 +171387,7 @@ ], "mode": "string", "provisioned_iops": "number", + "provisioned_throughput": "number", "resource_manager_tags": [ "map", "string" @@ -166152,6 +172501,331 @@ "description_kind": "plain" } }, + "google_compute_region_instance_group_manager": { + "version": 0, + "block": { + "attributes": { + "all_instances_config": { + "type": [ + "list", + [ + "object", + { + "labels": [ + "map", + "string" + ], + "metadata": [ + "map", + "string" + ] + } + ] + ], + "description": "Specifies configuration that overrides the instance template configuration for the group.", + "description_kind": "plain", + "computed": true + }, + "auto_healing_policies": { + "type": [ + "list", + [ + "object", + { + "health_check": "string", + "initial_delay_sec": "number" + } + ] + ], + "description": "The autohealing policies for this managed instance group. You can specify only one value.", + "description_kind": "plain", + "computed": true + }, + "base_instance_name": { + "type": "string", + "description": "The base instance name to use for instances in this group. The value must be a valid RFC1035 name. Supported characters are lowercase letters, numbers, and hyphens (-). Instances are named by appending a hyphen and a random four-character string to the base instance name.", + "description_kind": "plain", + "computed": true + }, + "creation_timestamp": { + "type": "string", + "description": "Creation timestamp in RFC3339 text format.", + "description_kind": "plain", + "computed": true + }, + "description": { + "type": "string", + "description": "An optional textual description of the instance group manager.", + "description_kind": "plain", + "computed": true + }, + "distribution_policy_target_shape": { + "type": "string", + "description": "The shape to which the group converges either proactively or on resize events (depending on the value set in updatePolicy.instanceRedistributionType).", + "description_kind": "plain", + "computed": true + }, + "distribution_policy_zones": { + "type": [ + "set", + "string" + ], + "description": "The distribution policy for this managed instance group. You can specify one or more values.", + "description_kind": "plain", + "computed": true + }, + "fingerprint": { + "type": "string", + "description": "The fingerprint of the instance group manager.", + "description_kind": "plain", + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "instance_group": { + "type": "string", + "description": "The full URL of the instance group created by the manager.", + "description_kind": "plain", + "computed": true + }, + "instance_lifecycle_policy": { + "type": [ + "list", + [ + "object", + { + "default_action_on_failure": "string", + "force_update_on_repair": "string" + } + ] + ], + "description": "The instance lifecycle policy for this managed instance group.", + "description_kind": "plain", + "computed": true + }, + "list_managed_instances_results": { + "type": "string", + "description": "Pagination behavior of the listManagedInstances API method for this managed instance group. Valid values are: \"PAGELESS\", \"PAGINATED\". If PAGELESS (default), Pagination is disabled for the group's listManagedInstances API method. maxResults and pageToken query parameters are ignored and all instances are returned in a single response. If PAGINATED, pagination is enabled, maxResults and pageToken query parameters are respected.", + "description_kind": "plain", + "computed": true + }, + "name": { + "type": "string", + "description": "The name of the instance group manager. Must be 1-63 characters long and comply with RFC1035. Supported characters include lowercase letters, numbers, and hyphens.", + "description_kind": "plain", + "optional": true + }, + "named_port": { + "type": [ + "set", + [ + "object", + { + "name": "string", + "port": "number" + } + ] + ], + "description": "The named port configuration.", + "description_kind": "plain", + "computed": true + }, + "project": { + "type": "string", + "description": "The ID of the project in which the resource belongs. If it is not provided, the provider project is used.", + "description_kind": "plain", + "optional": true + }, + "region": { + "type": "string", + "description": "The region where the managed instance group resides.", + "description_kind": "plain", + "optional": true + }, + "self_link": { + "type": "string", + "description": "The URL of the created resource.", + "description_kind": "plain", + "optional": true + }, + "stateful_disk": { + "type": [ + "set", + [ + "object", + { + "delete_rule": "string", + "device_name": "string" + } + ] + ], + "description": "Disks created on the instances that will be preserved on instance delete, update, etc. Structure is documented below. For more information see the official documentation. Proactive cross zone instance redistribution must be disabled before you can update stateful disks on existing instance group managers. This can be controlled via the update_policy.", + "description_kind": "plain", + "computed": true + }, + "stateful_external_ip": { + "type": [ + "list", + [ + "object", + { + "delete_rule": "string", + "interface_name": "string" + } + ] + ], + "description": "External IPs considered stateful by the instance group. ", + "description_kind": "plain", + "computed": true + }, + "stateful_internal_ip": { + "type": [ + "list", + [ + "object", + { + "delete_rule": "string", + "interface_name": "string" + } + ] + ], + "description": "External IPs considered stateful by the instance group. ", + "description_kind": "plain", + "computed": true + }, + "status": { + "type": [ + "list", + [ + "object", + { + "all_instances_config": [ + "list", + [ + "object", + { + "current_revision": "string", + "effective": "bool" + } + ] + ], + "is_stable": "bool", + "stateful": [ + "list", + [ + "object", + { + "has_stateful_config": "bool", + "per_instance_configs": [ + "list", + [ + "object", + { + "all_effective": "bool" + } + ] + ] + } + ] + ], + "version_target": [ + "list", + [ + "object", + { + "is_reached": "bool" + } + ] + ] + } + ] + ], + "description": "The status of this managed instance group.", + "description_kind": "plain", + "computed": true + }, + "target_pools": { + "type": [ + "set", + "string" + ], + "description": "The full URL of all target pools to which new instances in the group are added. Updating the target pools attribute does not affect existing instances.", + "description_kind": "plain", + "computed": true + }, + "target_size": { + "type": "number", + "description": "The target number of running instances for this managed instance group. This value should always be explicitly set unless this resource is attached to an autoscaler, in which case it should never be set. Defaults to 0.", + "description_kind": "plain", + "computed": true + }, + "update_policy": { + "type": [ + "list", + [ + "object", + { + "instance_redistribution_type": "string", + "max_surge_fixed": "number", + "max_surge_percent": "number", + "max_unavailable_fixed": "number", + "max_unavailable_percent": "number", + "minimal_action": "string", + "most_disruptive_allowed_action": "string", + "replacement_method": "string", + "type": "string" + } + ] + ], + "description": "The update policy for this managed instance group.", + "description_kind": "plain", + "computed": true + }, + "version": { + "type": [ + "list", + [ + "object", + { + "instance_template": "string", + "name": "string", + "target_size": [ + "list", + [ + "object", + { + "fixed": "number", + "percent": "number" + } + ] + ] + } + ] + ], + "description": "Application versions managed by this instance group. Each version deals with a specific instance template, allowing canary release scenarios.", + "description_kind": "plain", + "computed": true + }, + "wait_for_instances": { + "type": "bool", + "description": "Whether to wait for all instances to be created/updated before returning. Note that if this is set to true and the operation does not succeed, Terraform will continue trying until it times out.", + "description_kind": "plain", + "computed": true + }, + "wait_for_instances_status": { + "type": "string", + "description": "When used with wait_for_instances specifies the status to wait for. When STABLE is specified this resource will wait until the instances are stable before returning. When UPDATED is set, it will wait for the version target to be reached and any per instance configs to be effective and all instances configs to be effective as well as all instances to be stable before returning.", + "description_kind": "plain", + "computed": true + } + }, + "description_kind": "plain" + } + }, "google_compute_region_instance_template": { "version": 1, "block": { @@ -166227,6 +172901,7 @@ ], "mode": "string", "provisioned_iops": "number", + "provisioned_throughput": "number", "resource_manager_tags": [ "map", "string" @@ -167320,6 +173995,15 @@ "optional": true, "computed": true }, + "initial_nat_ips": { + "type": [ + "set", + "string" + ], + "description": "Self-links of NAT IPs to be used as initial value for creation alongside a RouterNatAddress resource.\nConflicts with natIps and drainNatIps. Only valid if natIpAllocateOption is set to MANUAL_ONLY.", + "description_kind": "plain", + "computed": true + }, "log_config": { "type": [ "list", @@ -167364,7 +174048,7 @@ "set", "string" ], - "description": "Self-links of NAT IPs. Only valid if natIpAllocateOption\nis set to MANUAL_ONLY.", + "description": "Self-links of NAT IPs. Only valid if natIpAllocateOption\nis set to MANUAL_ONLY.\nIf this field is used alongside with a count created list of address resources 'google_compute_address.foobar.*.self_link',\nthe access level resource for the address resource must have a 'lifecycle' block with 'create_before_destroy = true' so\nthe number of resources can be increased/decreased without triggering the 'resourceInUseByAnotherResource' error.", "description_kind": "plain", "computed": true }, @@ -168677,7 +175361,7 @@ } ] ], - "google_filestore_csi_driver_config": [ + "gcp_filestore_csi_driver_config": [ "list", [ "object", @@ -169335,7 +176019,7 @@ } ] ], - "google_public_cidrs_access_enabled": "bool" + "gcp_public_cidrs_access_enabled": "bool" } ] ], @@ -169489,7 +176173,7 @@ "list", "string" ], - "google_secret_manager_certificate_config": [ + "gcp_secret_manager_certificate_config": [ "list", [ "object", @@ -169621,6 +176305,16 @@ "object", { "cgroup_mode": "string", + "hugepages_config": [ + "list", + [ + "object", + { + "hugepage_size_1g": "number", + "hugepage_size_2m": "number" + } + ] + ], "sysctls": [ "map", "string" @@ -169717,6 +176411,10 @@ ] ], "spot": "bool", + "storage_pools": [ + "list", + "string" + ], "tags": [ "list", "string" @@ -169893,7 +176591,7 @@ "list", "string" ], - "google_secret_manager_certificate_config": [ + "gcp_secret_manager_certificate_config": [ "list", [ "object", @@ -170025,6 +176723,16 @@ "object", { "cgroup_mode": "string", + "hugepages_config": [ + "list", + [ + "object", + { + "hugepage_size_1g": "number", + "hugepage_size_2m": "number" + } + ] + ], "sysctls": [ "map", "string" @@ -170121,6 +176829,10 @@ ] ], "spot": "bool", + "storage_pools": [ + "list", + "string" + ], "tags": [ "list", "string" @@ -170280,7 +176992,7 @@ "list", "string" ], - "google_secret_manager_certificate_config": [ + "gcp_secret_manager_certificate_config": [ "list", [ "object", @@ -170299,6 +177011,15 @@ } ] ], + "gcfs_config": [ + "list", + [ + "object", + { + "enabled": "bool" + } + ] + ], "insecure_kubelet_readonly_port_enabled": "string", "logging_variant": "string" } @@ -171431,6 +178152,12 @@ "description_kind": "plain", "computed": true }, + "deletion_protection": { + "type": "bool", + "description": "Indicates if the dataproc metastore should be protected against accidental deletions.", + "description_kind": "plain", + "computed": true + }, "effective_labels": { "type": [ "map", @@ -172117,6 +178844,18 @@ "description_kind": "plain", "computed": true }, + "deletion_protection_enabled": { + "type": "bool", + "description": "Indicates whether the instance is protected against deletion.", + "description_kind": "plain", + "computed": true + }, + "deletion_protection_reason": { + "type": "string", + "description": "The reason for enabling deletion protection.", + "description_kind": "plain", + "computed": true + }, "description": { "type": "string", "description": "A description of the instance.", @@ -175128,6 +181867,475 @@ "description_kind": "plain" } }, + "google_oracle_database_cloud_exadata_infrastructure": { + "version": 0, + "block": { + "attributes": { + "cloud_exadata_infrastructure_id": { + "type": "string", + "description": "The ID of the Exadata Infrastructure to create. This value is restricted\nto (^[a-z]([a-z0-9-]{0,61}[a-z0-9])?$) and must be a maximum of 63\ncharacters in length. The value must start with a letter and end with\na letter or a number.", + "description_kind": "plain", + "required": true + }, + "create_time": { + "type": "string", + "description": "The date and time that the Exadata Infrastructure was created.", + "description_kind": "plain", + "computed": true + }, + "display_name": { + "type": "string", + "description": "User friendly name for this resource.", + "description_kind": "plain", + "computed": true + }, + "effective_labels": { + "type": [ + "map", + "string" + ], + "description": "All of labels (key/value pairs) present on the resource in GCP, including the labels configured through Terraform, other clients and services.", + "description_kind": "plain", + "computed": true + }, + "entitlement_id": { + "type": "string", + "description": "Entitlement ID of the private offer against which this infrastructure\nresource is provisioned.", + "description_kind": "plain", + "computed": true + }, + "gcp_oracle_zone": { + "type": "string", + "description": "GCP location where Oracle Exadata is hosted.", + "description_kind": "plain", + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "labels": { + "type": [ + "map", + "string" + ], + "description": "Labels or tags associated with the resource. \n\n**Note**: This field is non-authoritative, and will only manage the labels present in your configuration.\nPlease refer to the field 'effective_labels' for all of the labels present on the resource.", + "description_kind": "plain", + "computed": true + }, + "location": { + "type": "string", + "description": "Resource ID segment making up resource 'name'. See documentation for resource type 'oracledatabase.googleapis.com/DbServer'.", + "description_kind": "plain", + "required": true + }, + "name": { + "type": "string", + "description": "Identifier. The name of the Exadata Infrastructure resource with the following format:\nprojects/{project}/locations/{region}/cloudExadataInfrastructures/{cloud_exadata_infrastructure}", + "description_kind": "plain", + "computed": true + }, + "project": { + "type": "string", + "description_kind": "plain", + "optional": true + }, + "properties": { + "type": [ + "list", + [ + "object", + { + "activated_storage_count": "number", + "additional_storage_count": "number", + "available_storage_size_gb": "number", + "compute_count": "number", + "cpu_count": "number", + "customer_contacts": [ + "list", + [ + "object", + { + "email": "string" + } + ] + ], + "data_storage_size_tb": "number", + "db_node_storage_size_gb": "number", + "db_server_version": "string", + "maintenance_window": [ + "list", + [ + "object", + { + "custom_action_timeout_mins": "number", + "days_of_week": [ + "list", + "string" + ], + "hours_of_day": [ + "list", + "number" + ], + "is_custom_action_timeout_enabled": "bool", + "lead_time_week": "number", + "months": [ + "list", + "string" + ], + "patching_mode": "string", + "preference": "string", + "weeks_of_month": [ + "list", + "number" + ] + } + ] + ], + "max_cpu_count": "number", + "max_data_storage_tb": "number", + "max_db_node_storage_size_gb": "number", + "max_memory_gb": "number", + "memory_size_gb": "number", + "monthly_db_server_version": "string", + "monthly_storage_server_version": "string", + "next_maintenance_run_id": "string", + "next_maintenance_run_time": "string", + "next_security_maintenance_run_time": "string", + "oci_url": "string", + "ocid": "string", + "shape": "string", + "state": "string", + "storage_count": "number", + "storage_server_version": "string", + "total_storage_size_gb": "number" + } + ] + ], + "description": "Various properties of Exadata Infrastructure.", + "description_kind": "plain", + "computed": true + }, + "terraform_labels": { + "type": [ + "map", + "string" + ], + "description": "The combination of labels configured directly on the resource\n and default labels configured on the provider.", + "description_kind": "plain", + "computed": true + } + }, + "description_kind": "plain" + } + }, + "google_oracle_database_cloud_vm_cluster": { + "version": 0, + "block": { + "attributes": { + "backup_subnet_cidr": { + "type": "string", + "description": "CIDR range of the backup subnet.", + "description_kind": "plain", + "computed": true + }, + "cidr": { + "type": "string", + "description": "Network settings. CIDR to use for cluster IP allocation.", + "description_kind": "plain", + "computed": true + }, + "cloud_vm_cluster_id": { + "type": "string", + "description": "The ID of the VM Cluster to create. This value is restricted\nto (^[a-z]([a-z0-9-]{0,61}[a-z0-9])?$) and must be a maximum of 63\ncharacters in length. The value must start with a letter and end with\na letter or a number.", + "description_kind": "plain", + "required": true + }, + "create_time": { + "type": "string", + "description": "The date and time that the VM cluster was created.", + "description_kind": "plain", + "computed": true + }, + "display_name": { + "type": "string", + "description": "User friendly name for this resource.", + "description_kind": "plain", + "computed": true + }, + "effective_labels": { + "type": [ + "map", + "string" + ], + "description": "All of labels (key/value pairs) present on the resource in GCP, including the labels configured through Terraform, other clients and services.", + "description_kind": "plain", + "computed": true + }, + "exadata_infrastructure": { + "type": "string", + "description": "The name of the Exadata Infrastructure resource on which VM cluster\nresource is created, in the following format:\nprojects/{project}/locations/{region}/cloudExadataInfrastuctures/{cloud_extradata_infrastructure}", + "description_kind": "plain", + "computed": true + }, + "gcp_oracle_zone": { + "type": "string", + "description": "GCP location where Oracle Exadata is hosted. It is same as GCP Oracle zone\nof Exadata infrastructure.", + "description_kind": "plain", + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "labels": { + "type": [ + "map", + "string" + ], + "description": "Labels or tags associated with the VM Cluster. \n\n**Note**: This field is non-authoritative, and will only manage the labels present in your configuration.\nPlease refer to the field 'effective_labels' for all of the labels present on the resource.", + "description_kind": "plain", + "computed": true + }, + "location": { + "type": "string", + "description": "Resource ID segment making up resource 'name'. See documentation for resource type 'oracledatabase.googleapis.com/DbNode'.", + "description_kind": "plain", + "required": true + }, + "name": { + "type": "string", + "description": "Identifier. The name of the VM Cluster resource with the format:\nprojects/{project}/locations/{region}/cloudVmClusters/{cloud_vm_cluster}", + "description_kind": "plain", + "computed": true + }, + "network": { + "type": "string", + "description": "The name of the VPC network.\nFormat: projects/{project}/global/networks/{network}", + "description_kind": "plain", + "computed": true + }, + "project": { + "type": "string", + "description_kind": "plain", + "optional": true + }, + "properties": { + "type": [ + "list", + [ + "object", + { + "cluster_name": "string", + "compartment_id": "string", + "cpu_core_count": "number", + "data_storage_size_tb": "number", + "db_node_storage_size_gb": "number", + "db_server_ocids": [ + "list", + "string" + ], + "diagnostics_data_collection_options": [ + "list", + [ + "object", + { + "diagnostics_events_enabled": "bool", + "health_monitoring_enabled": "bool", + "incident_logs_enabled": "bool" + } + ] + ], + "disk_redundancy": "string", + "dns_listener_ip": "string", + "domain": "string", + "gi_version": "string", + "hostname": "string", + "hostname_prefix": "string", + "license_type": "string", + "local_backup_enabled": "bool", + "memory_size_gb": "number", + "node_count": "number", + "oci_url": "string", + "ocid": "string", + "ocpu_count": "number", + "scan_dns": "string", + "scan_dns_record_id": "string", + "scan_ip_ids": [ + "list", + "string" + ], + "scan_listener_port_tcp": "number", + "scan_listener_port_tcp_ssl": "number", + "shape": "string", + "sparse_diskgroup_enabled": "bool", + "ssh_public_keys": [ + "list", + "string" + ], + "state": "string", + "storage_size_gb": "number", + "system_version": "string", + "time_zone": [ + "list", + [ + "object", + { + "id": "string" + } + ] + ] + } + ] + ], + "description": "Various properties and settings associated with Exadata VM cluster.", + "description_kind": "plain", + "computed": true + }, + "terraform_labels": { + "type": [ + "map", + "string" + ], + "description": "The combination of labels configured directly on the resource\n and default labels configured on the provider.", + "description_kind": "plain", + "computed": true + } + }, + "description_kind": "plain" + } + }, + "google_oracle_database_db_nodes": { + "version": 0, + "block": { + "attributes": { + "cloud_vm_cluster": { + "type": "string", + "description": "vmcluster", + "description_kind": "plain", + "required": true + }, + "db_nodes": { + "type": [ + "list", + [ + "object", + { + "name": "string", + "properties": [ + "list", + [ + "object", + { + "db_node_storage_size_gb": "number", + "db_server_ocid": "string", + "hostname": "string", + "memory_size_gb": "number", + "ocid": "string", + "ocpu_count": "number", + "state": "string", + "total_cpu_core_count": "number" + } + ] + ] + } + ] + ], + "description_kind": "plain", + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "location": { + "type": "string", + "description": "location", + "description_kind": "plain", + "required": true + }, + "project": { + "type": "string", + "description": "The ID of the project in which the dataset is located. If it is not provided, the provider project is used.", + "description_kind": "plain", + "optional": true + } + }, + "description_kind": "plain" + } + }, + "google_oracle_database_db_servers": { + "version": 0, + "block": { + "attributes": { + "cloud_exadata_infrastructure": { + "type": "string", + "description": "exadata", + "description_kind": "plain", + "required": true + }, + "db_servers": { + "type": [ + "list", + [ + "object", + { + "display_name": "string", + "properties": [ + "list", + [ + "object", + { + "db_node_ids": [ + "list", + "string" + ], + "db_node_storage_size_gb": "number", + "max_db_node_storage_size_gb": "number", + "max_memory_size_gb": "number", + "max_ocpu_count": "number", + "memory_size_gb": "number", + "ocid": "string", + "ocpu_count": "number", + "state": "string", + "vm_count": "number" + } + ] + ] + } + ] + ], + "description_kind": "plain", + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "location": { + "type": "string", + "description": "location", + "description_kind": "plain", + "required": true + }, + "project": { + "type": "string", + "description": "The ID of the project in which the dataset is located. If it is not provided, the provider project is used.", + "description_kind": "plain", + "optional": true + } + }, + "description_kind": "plain" + } + }, "google_organization": { "version": 0, "block": { @@ -175249,243 +182457,537 @@ "description_kind": "plain" } }, - "google_privateca_certificate_authority": { + "google_privateca_certificate_authority": { + "version": 0, + "block": { + "attributes": { + "access_urls": { + "type": [ + "list", + [ + "object", + { + "ca_certificate_access_url": "string", + "crl_access_urls": [ + "list", + "string" + ] + } + ] + ], + "description": "URLs for accessing content published by this CA, such as the CA certificate and CRLs.", + "description_kind": "plain", + "computed": true + }, + "certificate_authority_id": { + "type": "string", + "description": "The user provided Resource ID for this Certificate Authority.", + "description_kind": "plain", + "optional": true + }, + "config": { + "type": [ + "list", + [ + "object", + { + "subject_config": [ + "list", + [ + "object", + { + "subject": [ + "list", + [ + "object", + { + "common_name": "string", + "country_code": "string", + "locality": "string", + "organization": "string", + "organizational_unit": "string", + "postal_code": "string", + "province": "string", + "street_address": "string" + } + ] + ], + "subject_alt_name": [ + "list", + [ + "object", + { + "dns_names": [ + "list", + "string" + ], + "email_addresses": [ + "list", + "string" + ], + "ip_addresses": [ + "list", + "string" + ], + "uris": [ + "list", + "string" + ] + } + ] + ] + } + ] + ], + "subject_key_id": [ + "list", + [ + "object", + { + "key_id": "string" + } + ] + ], + "x509_config": [ + "list", + [ + "object", + { + "additional_extensions": [ + "list", + [ + "object", + { + "critical": "bool", + "object_id": [ + "list", + [ + "object", + { + "object_id_path": [ + "list", + "number" + ] + } + ] + ], + "value": "string" + } + ] + ], + "aia_ocsp_servers": [ + "list", + "string" + ], + "ca_options": [ + "list", + [ + "object", + { + "is_ca": "bool", + "max_issuer_path_length": "number", + "non_ca": "bool", + "zero_max_issuer_path_length": "bool" + } + ] + ], + "key_usage": [ + "list", + [ + "object", + { + "base_key_usage": [ + "list", + [ + "object", + { + "cert_sign": "bool", + "content_commitment": "bool", + "crl_sign": "bool", + "data_encipherment": "bool", + "decipher_only": "bool", + "digital_signature": "bool", + "encipher_only": "bool", + "key_agreement": "bool", + "key_encipherment": "bool" + } + ] + ], + "extended_key_usage": [ + "list", + [ + "object", + { + "client_auth": "bool", + "code_signing": "bool", + "email_protection": "bool", + "ocsp_signing": "bool", + "server_auth": "bool", + "time_stamping": "bool" + } + ] + ], + "unknown_extended_key_usages": [ + "list", + [ + "object", + { + "object_id_path": [ + "list", + "number" + ] + } + ] + ] + } + ] + ], + "name_constraints": [ + "list", + [ + "object", + { + "critical": "bool", + "excluded_dns_names": [ + "list", + "string" + ], + "excluded_email_addresses": [ + "list", + "string" + ], + "excluded_ip_ranges": [ + "list", + "string" + ], + "excluded_uris": [ + "list", + "string" + ], + "permitted_dns_names": [ + "list", + "string" + ], + "permitted_email_addresses": [ + "list", + "string" + ], + "permitted_ip_ranges": [ + "list", + "string" + ], + "permitted_uris": [ + "list", + "string" + ] + } + ] + ], + "policy_ids": [ + "list", + [ + "object", + { + "object_id_path": [ + "list", + "number" + ] + } + ] + ] + } + ] + ] + } + ] + ], + "description": "The config used to create a self-signed X.509 certificate or CSR.", + "description_kind": "plain", + "computed": true + }, + "create_time": { + "type": "string", + "description": "The time at which this CertificateAuthority was created.\n\nA timestamp in RFC3339 UTC \"Zulu\" format, with nanosecond resolution and up to nine\nfractional digits. Examples: \"2014-10-02T15:01:23Z\" and \"2014-10-02T15:01:23.045123456Z\".", + "description_kind": "plain", + "computed": true + }, + "deletion_protection": { + "type": "bool", + "description": "Whether Terraform will be prevented from destroying the CertificateAuthority.\nWhen the field is set to true or unset in Terraform state, a 'terraform apply'\nor 'terraform destroy' that would delete the CertificateAuthority will fail.\nWhen the field is set to false, deleting the CertificateAuthority is allowed.", + "description_kind": "plain", + "computed": true + }, + "desired_state": { + "type": "string", + "description": "Desired state of the CertificateAuthority. Set this field to 'STAGED' to create a 'STAGED' root CA.\nPossible values: ENABLED, DISABLED, STAGED.", + "description_kind": "plain", + "computed": true + }, + "effective_labels": { + "type": [ + "map", + "string" + ], + "description": "All of labels (key/value pairs) present on the resource in GCP, including the labels configured through Terraform, other clients and services.", + "description_kind": "plain", + "computed": true + }, + "gcs_bucket": { + "type": "string", + "description": "The name of a Cloud Storage bucket where this CertificateAuthority will publish content,\nsuch as the CA certificate and CRLs. This must be a bucket name, without any prefixes\n(such as 'gs://') or suffixes (such as '.googleapis.com'). For example, to use a bucket named\nmy-bucket, you would simply specify 'my-bucket'. If not specified, a managed bucket will be\ncreated.", + "description_kind": "plain", + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "ignore_active_certificates_on_deletion": { + "type": "bool", + "description": "This field allows the CA to be deleted even if the CA has active certs. Active certs include both unrevoked and unexpired certs.\nUse with care. Defaults to 'false'.", + "description_kind": "plain", + "computed": true + }, + "key_spec": { + "type": [ + "list", + [ + "object", + { + "algorithm": "string", + "cloud_kms_key_version": "string" + } + ] + ], + "description": "Used when issuing certificates for this CertificateAuthority. If this CertificateAuthority\nis a self-signed CertificateAuthority, this key is also used to sign the self-signed CA\ncertificate. Otherwise, it is used to sign a CSR.", + "description_kind": "plain", + "computed": true + }, + "labels": { + "type": [ + "map", + "string" + ], + "description": "Labels with user-defined metadata.\n\nAn object containing a list of \"key\": value pairs. Example: { \"name\": \"wrench\", \"mass\":\n\"1.3kg\", \"count\": \"3\" }.\n\n\n**Note**: This field is non-authoritative, and will only manage the labels present in your configuration.\nPlease refer to the field 'effective_labels' for all of the labels present on the resource.", + "description_kind": "plain", + "computed": true + }, + "lifetime": { + "type": "string", + "description": "The desired lifetime of the CA certificate. Used to create the \"notBeforeTime\" and\n\"notAfterTime\" fields inside an X.509 certificate. A duration in seconds with up to nine\nfractional digits, terminated by 's'. Example: \"3.5s\".", + "description_kind": "plain", + "computed": true + }, + "location": { + "type": "string", + "description": "Location of the CertificateAuthority. A full list of valid locations can be found by\nrunning 'gcloud privateca locations list'.", + "description_kind": "plain", + "optional": true + }, + "name": { + "type": "string", + "description": "The resource name for this CertificateAuthority in the format\nprojects/*/locations/*/certificateAuthorities/*.", + "description_kind": "plain", + "computed": true + }, + "pem_ca_certificate": { + "type": "string", + "description": "The signed CA certificate issued from the subordinated CA's CSR. This is needed when activating the subordiante CA with a third party issuer.", + "description_kind": "plain", + "computed": true + }, + "pem_ca_certificates": { + "type": [ + "list", + "string" + ], + "description": "This CertificateAuthority's certificate chain, including the current\nCertificateAuthority's certificate. Ordered such that the root issuer is the final\nelement (consistent with RFC 5246). For a self-signed CA, this will only list the current\nCertificateAuthority's certificate.", + "description_kind": "plain", + "computed": true + }, + "pem_csr": { + "type": "string", + "description_kind": "plain", + "computed": true + }, + "pool": { + "type": "string", + "description": "The name of the CaPool this Certificate Authority belongs to.", + "description_kind": "plain", + "optional": true + }, + "project": { + "type": "string", + "description_kind": "plain", + "optional": true + }, + "skip_grace_period": { + "type": "bool", + "description": "If this flag is set, the Certificate Authority will be deleted as soon as\npossible without a 30-day grace period where undeletion would have been\nallowed. If you proceed, there will be no way to recover this CA.\nUse with care. Defaults to 'false'.", + "description_kind": "plain", + "computed": true + }, + "state": { + "type": "string", + "description": "The State for this CertificateAuthority.", + "description_kind": "plain", + "computed": true + }, + "subordinate_config": { + "type": [ + "list", + [ + "object", + { + "certificate_authority": "string", + "pem_issuer_chain": [ + "list", + [ + "object", + { + "pem_certificates": [ + "list", + "string" + ] + } + ] + ] + } + ] + ], + "description": "If this is a subordinate CertificateAuthority, this field will be set\nwith the subordinate configuration, which describes its issuers.", + "description_kind": "plain", + "computed": true + }, + "terraform_labels": { + "type": [ + "map", + "string" + ], + "description": "The combination of labels configured directly on the resource\n and default labels configured on the provider.", + "description_kind": "plain", + "computed": true + }, + "type": { + "type": "string", + "description": "The Type of this CertificateAuthority.\n\n~\u003e **Note:** For 'SUBORDINATE' Certificate Authorities, they need to\nbe activated before they can issue certificates. Default value: \"SELF_SIGNED\" Possible values: [\"SELF_SIGNED\", \"SUBORDINATE\"]", + "description_kind": "plain", + "computed": true + }, + "update_time": { + "type": "string", + "description": "The time at which this CertificateAuthority was updated.\n\nA timestamp in RFC3339 UTC \"Zulu\" format, with nanosecond resolution and up to nine\nfractional digits. Examples: \"2014-10-02T15:01:23Z\" and \"2014-10-02T15:01:23.045123456Z\".", + "description_kind": "plain", + "computed": true + } + }, + "description_kind": "plain" + } + }, + "google_privateca_certificate_template_iam_policy": { + "version": 0, + "block": { + "attributes": { + "certificate_template": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "etag": { + "type": "string", + "description_kind": "plain", + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "location": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "policy_data": { + "type": "string", + "description_kind": "plain", + "computed": true + }, + "project": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + } + }, + "description_kind": "plain" + } + }, + "google_privileged_access_manager_entitlement": { "version": 0, "block": { "attributes": { - "access_urls": { + "additional_notification_targets": { "type": [ "list", [ "object", { - "ca_certificate_access_url": "string", - "crl_access_urls": [ - "list", + "admin_email_recipients": [ + "set", + "string" + ], + "requester_email_recipients": [ + "set", "string" ] } ] ], - "description": "URLs for accessing content published by this CA, such as the CA certificate and CRLs.", + "description": "AdditionalNotificationTargets includes email addresses to be notified.", "description_kind": "plain", "computed": true }, - "certificate_authority_id": { - "type": "string", - "description": "The user provided Resource ID for this Certificate Authority.", - "description_kind": "plain", - "optional": true - }, - "config": { + "approval_workflow": { "type": [ "list", [ "object", { - "subject_config": [ + "manual_approvals": [ "list", [ "object", { - "subject": [ + "require_approver_justification": "bool", + "steps": [ "list", [ "object", { - "common_name": "string", - "country_code": "string", - "locality": "string", - "organization": "string", - "organizational_unit": "string", - "postal_code": "string", - "province": "string", - "street_address": "string" - } - ] - ], - "subject_alt_name": [ - "list", - [ - "object", - { - "dns_names": [ - "list", - "string" - ], - "email_addresses": [ - "list", - "string" - ], - "ip_addresses": [ - "list", + "approvals_needed": "number", + "approver_email_recipients": [ + "set", "string" ], - "uris": [ - "list", - "string" - ] - } - ] - ] - } - ] - ], - "subject_key_id": [ - "list", - [ - "object", - { - "key_id": "string" - } - ] - ], - "x509_config": [ - "list", - [ - "object", - { - "additional_extensions": [ - "list", - [ - "object", - { - "critical": "bool", - "object_id": [ - "list", - [ - "object", - { - "object_id_path": [ - "list", - "number" - ] - } - ] - ], - "value": "string" - } - ] - ], - "aia_ocsp_servers": [ - "list", - "string" - ], - "ca_options": [ - "list", - [ - "object", - { - "is_ca": "bool", - "max_issuer_path_length": "number", - "non_ca": "bool", - "zero_max_issuer_path_length": "bool" - } - ] - ], - "key_usage": [ - "list", - [ - "object", - { - "base_key_usage": [ + "approvers": [ "list", [ "object", { - "cert_sign": "bool", - "content_commitment": "bool", - "crl_sign": "bool", - "data_encipherment": "bool", - "decipher_only": "bool", - "digital_signature": "bool", - "encipher_only": "bool", - "key_agreement": "bool", - "key_encipherment": "bool" - } - ] - ], - "extended_key_usage": [ - "list", - [ - "object", - { - "client_auth": "bool", - "code_signing": "bool", - "email_protection": "bool", - "ocsp_signing": "bool", - "server_auth": "bool", - "time_stamping": "bool" - } - ] - ], - "unknown_extended_key_usages": [ - "list", - [ - "object", - { - "object_id_path": [ - "list", - "number" + "principals": [ + "set", + "string" ] } ] ] } ] - ], - "name_constraints": [ - "list", - [ - "object", - { - "critical": "bool", - "excluded_dns_names": [ - "list", - "string" - ], - "excluded_email_addresses": [ - "list", - "string" - ], - "excluded_ip_ranges": [ - "list", - "string" - ], - "excluded_uris": [ - "list", - "string" - ], - "permitted_dns_names": [ - "list", - "string" - ], - "permitted_email_addresses": [ - "list", - "string" - ], - "permitted_ip_ranges": [ - "list", - "string" - ], - "permitted_uris": [ - "list", - "string" - ] - } - ] - ], - "policy_ids": [ - "list", - [ - "object", - { - "object_id_path": [ - "list", - "number" - ] - } - ] ] } ] @@ -175493,155 +182995,97 @@ } ] ], - "description": "The config used to create a self-signed X.509 certificate or CSR.", + "description": "The approvals needed before access will be granted to a requester.\nNo approvals will be needed if this field is null. Different types of approval workflows that can be used to gate privileged access granting.", "description_kind": "plain", "computed": true }, "create_time": { "type": "string", - "description": "The time at which this CertificateAuthority was created.\n\nA timestamp in RFC3339 UTC \"Zulu\" format, with nanosecond resolution and up to nine\nfractional digits. Examples: \"2014-10-02T15:01:23Z\" and \"2014-10-02T15:01:23.045123456Z\".", - "description_kind": "plain", - "computed": true - }, - "deletion_protection": { - "type": "bool", - "description": "Whether Terraform will be prevented from destroying the CertificateAuthority.\nWhen the field is set to true or unset in Terraform state, a 'terraform apply'\nor 'terraform destroy' that would delete the CertificateAuthority will fail.\nWhen the field is set to false, deleting the CertificateAuthority is allowed.", - "description_kind": "plain", - "computed": true - }, - "desired_state": { - "type": "string", - "description": "Desired state of the CertificateAuthority. Set this field to 'STAGED' to create a 'STAGED' root CA.\nPossible values: ENABLED, DISABLED, STAGED.", - "description_kind": "plain", - "computed": true - }, - "effective_labels": { - "type": [ - "map", - "string" - ], - "description": "All of labels (key/value pairs) present on the resource in GCP, including the labels configured through Terraform, other clients and services.", - "description_kind": "plain", - "computed": true - }, - "gcs_bucket": { - "type": "string", - "description": "The name of a Cloud Storage bucket where this CertificateAuthority will publish content,\nsuch as the CA certificate and CRLs. This must be a bucket name, without any prefixes\n(such as 'gs://') or suffixes (such as '.googleapis.com'). For example, to use a bucket named\nmy-bucket, you would simply specify 'my-bucket'. If not specified, a managed bucket will be\ncreated.", - "description_kind": "plain", - "computed": true - }, - "id": { - "type": "string", - "description_kind": "plain", - "optional": true, - "computed": true - }, - "ignore_active_certificates_on_deletion": { - "type": "bool", - "description": "This field allows the CA to be deleted even if the CA has active certs. Active certs include both unrevoked and unexpired certs.\nUse with care. Defaults to 'false'.", + "description": "Output only. Create time stamp. A timestamp in RFC3339 UTC \"Zulu\" format, with nanosecond resolution and up to nine fractional digits.\nExamples: \"2014-10-02T15:01:23Z\" and \"2014-10-02T15:01:23.045123456Z\"", "description_kind": "plain", "computed": true }, - "key_spec": { + "eligible_users": { "type": [ "list", [ "object", { - "algorithm": "string", - "cloud_kms_key_version": "string" + "principals": [ + "set", + "string" + ] } ] ], - "description": "Used when issuing certificates for this CertificateAuthority. If this CertificateAuthority\nis a self-signed CertificateAuthority, this key is also used to sign the self-signed CA\ncertificate. Otherwise, it is used to sign a CSR.", + "description": "Who can create Grants using Entitlement. This list should contain at most one entry", "description_kind": "plain", "computed": true }, - "labels": { - "type": [ - "map", - "string" - ], - "description": "Labels with user-defined metadata.\n\nAn object containing a list of \"key\": value pairs. Example: { \"name\": \"wrench\", \"mass\":\n\"1.3kg\", \"count\": \"3\" }.\n\n\n**Note**: This field is non-authoritative, and will only manage the labels present in your configuration.\nPlease refer to the field 'effective_labels' for all of the labels present on the resource.", - "description_kind": "plain", - "computed": true - }, - "lifetime": { - "type": "string", - "description": "The desired lifetime of the CA certificate. Used to create the \"notBeforeTime\" and\n\"notAfterTime\" fields inside an X.509 certificate. A duration in seconds with up to nine\nfractional digits, terminated by 's'. Example: \"3.5s\".", - "description_kind": "plain", - "computed": true - }, - "location": { + "entitlement_id": { "type": "string", - "description": "Location of the CertificateAuthority. A full list of valid locations can be found by\nrunning 'gcloud privateca locations list'.", + "description": "The ID to use for this Entitlement. This will become the last part of the resource name.\nThis value should be 4-63 characters, and valid characters are \"[a-z]\", \"[0-9]\", and \"-\". The first character should be from [a-z].\nThis value should be unique among all other Entitlements under the specified 'parent'.", "description_kind": "plain", "optional": true }, - "name": { - "type": "string", - "description": "The resource name for this CertificateAuthority in the format\nprojects/*/locations/*/certificateAuthorities/*.", - "description_kind": "plain", - "computed": true - }, - "pem_ca_certificate": { + "etag": { "type": "string", - "description": "The signed CA certificate issued from the subordinated CA's CSR. This is needed when activating the subordiante CA with a third party issuer.", - "description_kind": "plain", - "computed": true - }, - "pem_ca_certificates": { - "type": [ - "list", - "string" - ], - "description": "This CertificateAuthority's certificate chain, including the current\nCertificateAuthority's certificate. Ordered such that the root issuer is the final\nelement (consistent with RFC 5246). For a self-signed CA, this will only list the current\nCertificateAuthority's certificate.", + "description": "For Resource freshness validation (https://google.aip.dev/154)", "description_kind": "plain", "computed": true }, - "pem_csr": { + "id": { "type": "string", "description_kind": "plain", + "optional": true, "computed": true }, - "pool": { + "location": { "type": "string", - "description": "The name of the CaPool this Certificate Authority belongs to.", + "description": "The region of the Entitlement resource.", "description_kind": "plain", "optional": true }, - "project": { + "max_request_duration": { "type": "string", + "description": "The maximum amount of time for which access would be granted for a request.\nA requester can choose to ask for access for less than this duration but never more.\nFormat: calculate the time in seconds and concatenate it with 's' i.e. 2 hours = \"7200s\", 45 minutes = \"2700s\"", "description_kind": "plain", - "optional": true + "computed": true }, - "skip_grace_period": { - "type": "bool", - "description": "If this flag is set, the Certificate Authority will be deleted as soon as\npossible without a 30-day grace period where undeletion would have been\nallowed. If you proceed, there will be no way to recover this CA.\nUse with care. Defaults to 'false'.", + "name": { + "type": "string", + "description": "Output Only. The entitlement's name follows a hierarchical structure, comprising the organization, folder, or project, alongside the region and a unique entitlement ID.\nFormats: organizations/{organization-number}/locations/{region}/entitlements/{entitlement-id}, folders/{folder-number}/locations/{region}/entitlements/{entitlement-id}, and projects/{project-id|project-number}/locations/{region}/entitlements/{entitlement-id}.", "description_kind": "plain", "computed": true }, - "state": { + "parent": { "type": "string", - "description": "The State for this CertificateAuthority.", + "description": "Format: projects/{project-id|project-number} or organizations/{organization-number} or folders/{folder-number}", "description_kind": "plain", - "computed": true + "optional": true }, - "subordinate_config": { + "privileged_access": { "type": [ "list", [ "object", { - "certificate_authority": "string", - "pem_issuer_chain": [ + "gcp_iam_access": [ "list", [ "object", { - "pem_certificates": [ + "resource": "string", + "resource_type": "string", + "role_bindings": [ "list", - "string" + [ + "object", + { + "condition_expression": "string", + "role": "string" + } + ] ] } ] @@ -175649,70 +183093,47 @@ } ] ], - "description": "If this is a subordinate CertificateAuthority, this field will be set\nwith the subordinate configuration, which describes its issuers.", + "description": "Privileged access that this service can be used to gate.", "description_kind": "plain", "computed": true }, - "terraform_labels": { + "requester_justification_config": { "type": [ - "map", - "string" + "list", + [ + "object", + { + "not_mandatory": [ + "list", + [ + "object", + {} + ] + ], + "unstructured": [ + "list", + [ + "object", + {} + ] + ] + } + ] ], - "description": "The combination of labels configured directly on the resource\n and default labels configured on the provider.", + "description": "Defines the ways in which a requester should provide the justification while requesting for access.", "description_kind": "plain", "computed": true }, - "type": { + "state": { "type": "string", - "description": "The Type of this CertificateAuthority.\n\n~\u003e **Note:** For 'SUBORDINATE' Certificate Authorities, they need to\nbe activated before they can issue certificates. Default value: \"SELF_SIGNED\" Possible values: [\"SELF_SIGNED\", \"SUBORDINATE\"]", + "description": "Output only. The current state of the Entitlement.", "description_kind": "plain", "computed": true }, "update_time": { "type": "string", - "description": "The time at which this CertificateAuthority was updated.\n\nA timestamp in RFC3339 UTC \"Zulu\" format, with nanosecond resolution and up to nine\nfractional digits. Examples: \"2014-10-02T15:01:23Z\" and \"2014-10-02T15:01:23.045123456Z\".", - "description_kind": "plain", - "computed": true - } - }, - "description_kind": "plain" - } - }, - "google_privateca_certificate_template_iam_policy": { - "version": 0, - "block": { - "attributes": { - "certificate_template": { - "type": "string", - "description_kind": "plain", - "required": true - }, - "etag": { - "type": "string", - "description_kind": "plain", - "computed": true - }, - "id": { - "type": "string", - "description_kind": "plain", - "optional": true, - "computed": true - }, - "location": { - "type": "string", - "description_kind": "plain", - "optional": true, - "computed": true - }, - "policy_data": { - "type": "string", - "description_kind": "plain", - "computed": true - }, - "project": { - "type": "string", + "description": "Output only. Update time stamp. A timestamp in RFC3339 UTC \"Zulu\" format, with nanosecond resolution and up to nine fractional digits.\nExamples: \"2014-10-02T15:01:23Z\" and \"2014-10-02T15:01:23.045123456Z\".", "description_kind": "plain", - "optional": true, "computed": true } }, @@ -175800,7 +183221,7 @@ "map", "string" ], - "description": "A map of resource manager tags. Resource manager tag keys and values have the same definition as resource manager tags. Keys must be in the format tagKeys/{tag_key_id}, and values are in the format tagValues/456. The field is ignored when empty.", + "description": "A map of resource manager tags. Resource manager tag keys and values have the same definition as resource manager tags. Keys must be in the format tagKeys/{tag_key_id}, and values are in the format tagValues/456. The field is ignored when empty. This field is only set at create time and modifying this field after creation will trigger recreation. To apply tags to an existing resource, see the google_tags_tag_value resource.", "description_kind": "plain", "computed": true }, @@ -176144,7 +183565,7 @@ } ] ], - "description": "A policy that specifies the conditions for dead lettering messages in\nthis subscription. If dead_letter_policy is not set, dead lettering\nis disabled.\n\nThe Cloud Pub/Sub service account associated with this subscription's\nparent project (i.e.,\nservice-{project_number}@google-sa-pubsub.iam.gserviceaccount.com) must have\npermission to Acknowledge() messages on this subscription.", + "description": "A policy that specifies the conditions for dead lettering messages in\nthis subscription. If dead_letter_policy is not set, dead lettering\nis disabled.\n\nThe Cloud Pub/Sub service account associated with this subscription's\nparent project (i.e.,\nservice-{project_number}@gcp-sa-pubsub.iam.gserviceaccount.com) must have\npermission to Acknowledge() messages on this subscription.", "description_kind": "plain", "computed": true }, @@ -176206,7 +183627,7 @@ }, "message_retention_duration": { "type": "string", - "description": "How long to retain unacknowledged messages in the subscription's\nbacklog, from the moment a message is published. If\nretain_acked_messages is true, then this also configures the retention\nof acknowledged messages, and thus configures how far back in time a\nsubscriptions.seek can be done. Defaults to 7 days. Cannot be more\nthan 7 days ('\"604800s\"') or less than 10 minutes ('\"600s\"').\n\nA duration in seconds with up to nine fractional digits, terminated\nby 's'. Example: '\"600.5s\"'.", + "description": "How long to retain unacknowledged messages in the subscription's\nbacklog, from the moment a message is published. If\nretain_acked_messages is true, then this also configures the retention\nof acknowledged messages, and thus configures how far back in time a\nsubscriptions.seek can be done. Defaults to 7 days. Cannot be more\nthan 31 days ('\"2678400s\"') or less than 10 minutes ('\"600s\"').\n\nA duration in seconds with up to nine fractional digits, terminated\nby 's'. Example: '\"600.5s\"'.", "description_kind": "plain", "computed": true }, @@ -176365,10 +183786,53 @@ { "aws_role_arn": "string", "consumer_arn": "string", - "google_service_account": "string", + "gcp_service_account": "string", "stream_arn": "string" } ] + ], + "cloud_storage": [ + "list", + [ + "object", + { + "avro_format": [ + "list", + [ + "object", + {} + ] + ], + "bucket": "string", + "match_glob": "string", + "minimum_object_create_time": "string", + "pubsub_avro_format": [ + "list", + [ + "object", + {} + ] + ], + "text_format": [ + "list", + [ + "object", + { + "delimiter": "string" + } + ] + ] + } + ] + ], + "platform_logs_settings": [ + "list", + [ + "object", + { + "severity": "string" + } + ] ] } ] @@ -176379,7 +183843,7 @@ }, "kms_key_name": { "type": "string", - "description": "The resource name of the Cloud KMS CryptoKey to be used to protect access\nto messages published on this topic. Your project's PubSub service account\n('service-{{PROJECT_NUMBER}}@google-sa-pubsub.iam.gserviceaccount.com') must have\n'roles/cloudkms.cryptoKeyEncrypterDecrypter' to use this feature.\nThe expected format is 'projects/*/locations/*/keyRings/*/cryptoKeys/*'", + "description": "The resource name of the Cloud KMS CryptoKey to be used to protect access\nto messages published on this topic. Your project's PubSub service account\n('service-{{PROJECT_NUMBER}}@gcp-sa-pubsub.iam.gserviceaccount.com') must have\n'roles/cloudkms.cryptoKeyEncrypterDecrypter' to use this feature.\nThe expected format is 'projects/*/locations/*/keyRings/*/cryptoKeys/*'", "description_kind": "plain", "computed": true }, @@ -176838,12 +184302,94 @@ "description_kind": "plain" } }, - "google_scc_v2_organization_source_iam_policy": { + "google_scc_v2_organization_source_iam_policy": { + "version": 0, + "block": { + "attributes": { + "etag": { + "type": "string", + "description_kind": "plain", + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "organization": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "policy_data": { + "type": "string", + "description_kind": "plain", + "computed": true + }, + "source": { + "type": "string", + "description_kind": "plain", + "required": true + } + }, + "description_kind": "plain" + } + }, + "google_secret_manager_regional_secret": { "version": 0, "block": { "attributes": { - "etag": { + "annotations": { + "type": [ + "map", + "string" + ], + "description": "Custom metadata about the regional secret.\n\nAnnotations are distinct from various forms of labels. Annotations exist to allow\nclient tools to store their own state information without requiring a database.\n\nAnnotation keys must be between 1 and 63 characters long, have a UTF-8 encoding of\nmaximum 128 bytes, begin and end with an alphanumeric character ([a-z0-9A-Z]), and\nmay have dashes (-), underscores (_), dots (.), and alphanumerics in between these\nsymbols.\n\nThe total size of annotation keys and values must be less than 16KiB.\n\nAn object containing a list of \"key\": value pairs. Example:\n{ \"name\": \"wrench\", \"mass\": \"1.3kg\", \"count\": \"3\" }.\n\n\n**Note**: This field is non-authoritative, and will only manage the annotations present in your configuration.\nPlease refer to the field 'effective_annotations' for all of the annotations present on the resource.", + "description_kind": "plain", + "computed": true + }, + "create_time": { + "type": "string", + "description": "The time at which the regional secret was created.", + "description_kind": "plain", + "computed": true + }, + "customer_managed_encryption": { + "type": [ + "list", + [ + "object", + { + "kms_key_name": "string" + } + ] + ], + "description": "The customer-managed encryption configuration of the regional secret.", + "description_kind": "plain", + "computed": true + }, + "effective_annotations": { + "type": [ + "map", + "string" + ], + "description": "All of annotations (key/value pairs) present on the resource in GCP, including the annotations configured through Terraform, other clients and services.", + "description_kind": "plain", + "computed": true + }, + "effective_labels": { + "type": [ + "map", + "string" + ], + "description": "All of labels (key/value pairs) present on the resource in GCP, including the labels configured through Terraform, other clients and services.", + "description_kind": "plain", + "computed": true + }, + "expire_time": { "type": "string", + "description": "Timestamp in UTC when the regional secret is scheduled to expire. This is always provided on\noutput, regardless of what was sent on input. A timestamp in RFC3339 UTC \"Zulu\" format, with\nnanosecond resolution and up to nine fractional digits. Examples: \"2014-10-02T15:01:23Z\" and\n\"2014-10-02T15:01:23.045123456Z\". Only one of 'expire_time' or 'ttl' can be provided.", "description_kind": "plain", "computed": true }, @@ -176853,17 +184399,134 @@ "optional": true, "computed": true }, - "organization": { + "labels": { + "type": [ + "map", + "string" + ], + "description": "The labels assigned to this regional secret.\n\nLabel keys must be between 1 and 63 characters long, have a UTF-8 encoding of maximum 128 bytes,\nand must conform to the following PCRE regular expression: [\\p{Ll}\\p{Lo}][\\p{Ll}\\p{Lo}\\p{N}_-]{0,62}\n\nLabel values must be between 0 and 63 characters long, have a UTF-8 encoding of maximum 128 bytes,\nand must conform to the following PCRE regular expression: [\\p{Ll}\\p{Lo}\\p{N}_-]{0,63}\n\nNo more than 64 labels can be assigned to a given resource.\n\nAn object containing a list of \"key\": value pairs. Example:\n{ \"name\": \"wrench\", \"mass\": \"1.3kg\", \"count\": \"3\" }.\n\n\n**Note**: This field is non-authoritative, and will only manage the labels present in your configuration.\nPlease refer to the field 'effective_labels' for all of the labels present on the resource.", + "description_kind": "plain", + "computed": true + }, + "location": { "type": "string", + "description": "The location of the regional secret. eg us-central1", "description_kind": "plain", "required": true }, + "name": { + "type": "string", + "description": "The resource name of the regional secret. Format:\n'projects/{{project}}/locations/{{location}}/secrets/{{secret_id}}'", + "description_kind": "plain", + "computed": true + }, + "project": { + "type": "string", + "description_kind": "plain", + "optional": true + }, + "rotation": { + "type": [ + "list", + [ + "object", + { + "next_rotation_time": "string", + "rotation_period": "string" + } + ] + ], + "description": "The rotation time and period for a regional secret. At 'next_rotation_time', Secret Manager\nwill send a Pub/Sub notification to the topics configured on the Secret. 'topics' must be\nset to configure rotation.", + "description_kind": "plain", + "computed": true + }, + "secret_id": { + "type": "string", + "description": "This must be unique within the project.", + "description_kind": "plain", + "required": true + }, + "terraform_labels": { + "type": [ + "map", + "string" + ], + "description": "The combination of labels configured directly on the resource\n and default labels configured on the provider.", + "description_kind": "plain", + "computed": true + }, + "topics": { + "type": [ + "list", + [ + "object", + { + "name": "string" + } + ] + ], + "description": "A list of up to 10 Pub/Sub topics to which messages are published when control plane\noperations are called on the regional secret or its versions.", + "description_kind": "plain", + "computed": true + }, + "ttl": { + "type": "string", + "description": "The TTL for the regional secret. A duration in seconds with up to nine fractional digits,\nterminated by 's'. Example: \"3.5s\". Only one of 'ttl' or 'expire_time' can be provided.", + "description_kind": "plain", + "computed": true + }, + "version_aliases": { + "type": [ + "map", + "string" + ], + "description": "Mapping from version alias to version name.\n\nA version alias is a string with a maximum length of 63 characters and can contain\nuppercase and lowercase letters, numerals, and the hyphen (-) and underscore ('_')\ncharacters. An alias string must start with a letter and cannot be the string\n'latest' or 'NEW'. No more than 50 aliases can be assigned to a given secret.\n\nAn object containing a list of \"key\": value pairs. Example:\n{ \"name\": \"wrench\", \"mass\": \"1.3kg\", \"count\": \"3\" }.", + "description_kind": "plain", + "computed": true + }, + "version_destroy_ttl": { + "type": "string", + "description": "Secret Version TTL after destruction request.\nThis is a part of the delayed delete feature on Secret Version.\nFor secret with versionDestroyTtl\u003e0, version destruction doesn't happen immediately\non calling destroy instead the version goes to a disabled state and\nthe actual destruction happens after this TTL expires. It must be atleast 24h.", + "description_kind": "plain", + "computed": true + } + }, + "description_kind": "plain" + } + }, + "google_secret_manager_regional_secret_iam_policy": { + "version": 0, + "block": { + "attributes": { + "etag": { + "type": "string", + "description_kind": "plain", + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "location": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, "policy_data": { "type": "string", "description_kind": "plain", "computed": true }, - "source": { + "project": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "secret_id": { "type": "string", "description_kind": "plain", "required": true @@ -176872,6 +184535,243 @@ "description_kind": "plain" } }, + "google_secret_manager_regional_secret_version": { + "version": 0, + "block": { + "attributes": { + "create_time": { + "type": "string", + "description_kind": "plain", + "computed": true + }, + "customer_managed_encryption": { + "type": [ + "list", + [ + "object", + { + "kms_key_version_name": "string" + } + ] + ], + "description_kind": "plain", + "computed": true + }, + "destroy_time": { + "type": "string", + "description_kind": "plain", + "computed": true + }, + "enabled": { + "type": "bool", + "description_kind": "plain", + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "is_secret_data_base64": { + "type": "bool", + "description_kind": "plain", + "optional": true + }, + "location": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "name": { + "type": "string", + "description_kind": "plain", + "computed": true + }, + "project": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "secret": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "secret_data": { + "type": "string", + "description_kind": "plain", + "computed": true, + "sensitive": true + }, + "version": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + } + }, + "description_kind": "plain" + } + }, + "google_secret_manager_regional_secret_version_access": { + "version": 0, + "block": { + "attributes": { + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "is_secret_data_base64": { + "type": "bool", + "description_kind": "plain", + "optional": true + }, + "location": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "name": { + "type": "string", + "description_kind": "plain", + "computed": true + }, + "project": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "secret": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "secret_data": { + "type": "string", + "description_kind": "plain", + "computed": true, + "sensitive": true + }, + "version": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + } + }, + "description_kind": "plain" + } + }, + "google_secret_manager_regional_secrets": { + "version": 0, + "block": { + "attributes": { + "filter": { + "type": "string", + "description": "Filter string, adhering to the rules in List-operation filtering (https://cloud.google.com/secret-manager/docs/filtering).\nList only secrets matching the filter. If filter is empty, all regional secrets are listed from the specified location.", + "description_kind": "plain", + "optional": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "location": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "project": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "secrets": { + "type": [ + "list", + [ + "object", + { + "annotations": [ + "map", + "string" + ], + "create_time": "string", + "customer_managed_encryption": [ + "list", + [ + "object", + { + "kms_key_name": "string" + } + ] + ], + "effective_annotations": [ + "map", + "string" + ], + "effective_labels": [ + "map", + "string" + ], + "expire_time": "string", + "labels": [ + "map", + "string" + ], + "location": "string", + "name": "string", + "project": "string", + "rotation": [ + "list", + [ + "object", + { + "next_rotation_time": "string", + "rotation_period": "string" + } + ] + ], + "secret_id": "string", + "terraform_labels": [ + "map", + "string" + ], + "topics": [ + "list", + [ + "object", + { + "name": "string" + } + ] + ], + "ttl": "string", + "version_aliases": [ + "map", + "string" + ], + "version_destroy_ttl": "string" + } + ] + ], + "description_kind": "plain", + "computed": true + } + }, + "description_kind": "plain" + } + }, "google_secret_manager_secret": { "version": 0, "block": { @@ -177126,6 +185026,11 @@ "optional": true, "computed": true }, + "is_secret_data_base64": { + "type": "bool", + "description_kind": "plain", + "optional": true + }, "name": { "type": "string", "description_kind": "plain", @@ -177168,6 +185073,11 @@ "optional": true, "computed": true }, + "is_secret_data_base64": { + "type": "bool", + "description_kind": "plain", + "optional": true + }, "name": { "type": "string", "description_kind": "plain", @@ -177773,6 +185683,12 @@ "version": 0, "block": { "attributes": { + "create_ignore_already_exists": { + "type": "bool", + "description": "If set to true, skip repository creation if a repository with the same name already exists.", + "description_kind": "plain", + "computed": true + }, "id": { "type": "string", "description_kind": "plain", @@ -177948,6 +185864,12 @@ "description_kind": "plain", "optional": true }, + "edition": { + "type": "string", + "description": "The edition selected for this instance. Different editions provide different capabilities at different price points. Possible values: [\"EDITION_UNSPECIFIED\", \"STANDARD\", \"ENTERPRISE\", \"ENTERPRISE_PLUS\"]", + "description_kind": "plain", + "computed": true + }, "effective_labels": { "type": [ "map", @@ -181422,7 +189344,7 @@ }, "max_throughput": { "type": "number", - "description": "Maximum throughput of the connector in Mbps, must be greater than 'min_throughput'. Default is 300. Refers to the expected throughput\nwhen using an e2-micro machine type. Value must be a multiple of 100 from 300 through 1000. Must be higher than the value specified by\nmin_throughput. If both max_throughput and max_instances are provided, max_instances takes precedence over max_throughput. The use of\nmax_throughput is discouraged in favor of max_instances.", + "description": "Maximum throughput of the connector in Mbps, must be greater than 'min_throughput'. Default is 300. Refers to the expected throughput\nwhen using an e2-micro machine type. Value must be a multiple of 100 from 300 through 1000. Must be higher than the value specified by\nmin_throughput. Only one of 'max_throughput' and 'max_instances' can be specified. The use of max_throughput is discouraged in favor of max_instances.", "description_kind": "plain", "computed": true }, @@ -181434,7 +189356,7 @@ }, "min_throughput": { "type": "number", - "description": "Minimum throughput of the connector in Mbps. Default and min is 200. Refers to the expected throughput when using an e2-micro machine type.\nValue must be a multiple of 100 from 200 through 900. Must be lower than the value specified by max_throughput. If both min_throughput and\nmin_instances are provided, min_instances takes precedence over min_throughput. The use of min_throughput is discouraged in favor of min_instances.", + "description": "Minimum throughput of the connector in Mbps. Default and min is 200. Refers to the expected throughput when using an e2-micro machine type.\nValue must be a multiple of 100 from 200 through 900. Must be lower than the value specified by max_throughput.\nOnly one of 'min_throughput' and 'min_instances' can be specified. The use of min_throughput is discouraged in favor of min_instances.", "description_kind": "plain", "computed": true }, diff --git a/ocd/packages/codegen-cli/src/ocd-build-svg-css.ts b/ocd/packages/codegen-cli/src/ocd-build-svg-css.ts new file mode 100644 index 000000000..295fee382 --- /dev/null +++ b/ocd/packages/codegen-cli/src/ocd-build-svg-css.ts @@ -0,0 +1,46 @@ +/* +** Copyright (c) 2020, 2024, Oracle and/or its affiliates. +** Licensed under the Universal Permissive License v 1.0 as shown at https://oss.oracle.com/licenses/upl. +*/ + +import { parseArgs } from "node:util" +import { OcdSvgCssGenerator } from '@ocd/codegen' + +const options: Record = { + schema: { + type: 'string', + short: 's' + }, + input: { + type: 'string', + short: 'i' + }, + output: { + type: 'string', + short: 'o' + }, + destination: { + type: 'string', + short: 'd' + }, + package: { + type: 'string', + short: 'p' + }, + force: { + type: 'boolean', + short: 'f', + default: false + } +} +const args = parseArgs({options: options, allowPositionals: true}) + +// console.info(args) +console.info('') + +// Read command as first argument +const outputDirectory = args.values.destination as string +const inputDirectory = args.values.input as string +const force = true +const generator = new OcdSvgCssGenerator() +generator.writeFiles(outputDirectory, inputDirectory, force) diff --git a/ocd/packages/codegen-cli/src/ocd-codegen.ts b/ocd/packages/codegen-cli/src/ocd-codegen.ts index 953eba85e..8f7f39e08 100644 --- a/ocd/packages/codegen-cli/src/ocd-codegen.ts +++ b/ocd/packages/codegen-cli/src/ocd-codegen.ts @@ -5,9 +5,8 @@ import fs from 'fs' import path from 'path' -import { OciModelGenerator, OciTerraformGenerator, OciTerraformSchemaImporter, OciValidatorGenerator, OcdTerraformSchemaResourceAttributesGenerator, OciMarkdownGenerator, OciPropertiesGenerator, OciTabularGenerator, AzureMarkdownGenerator, AzurePropertiesGenerator, AzureTabularGenerator, AzureTerraformGenerator, AzureModelGenerator, AzureAzTerraformSchemaImporter, AzureRmTerraformSchemaImporter, AzureValidatorGenerator, GoogleTerraformSchemaImporter, GoogleModelGenerator, GoogleMarkdownGenerator, GooglePropertiesGenerator, GoogleTerraformGenerator, GoogleTabularGenerator, GoogleValidatorGenerator } from '@ocd/codegen' +import { OcdSchema, OciModelGenerator, OciTerraformGenerator, OciTerraformSchemaImporter, OciValidatorGenerator, OcdTerraformSchemaResourceAttributesGenerator, OciMarkdownGenerator, OciPropertiesGenerator, OciTabularGenerator, AzureMarkdownGenerator, AzurePropertiesGenerator, AzureTabularGenerator, AzureTerraformGenerator, AzureModelGenerator, AzureAzTerraformSchemaImporter, AzureRmTerraformSchemaImporter, AzureValidatorGenerator, GoogleTerraformSchemaImporter, GoogleModelGenerator, GoogleMarkdownGenerator, GooglePropertiesGenerator, GoogleTerraformGenerator, GoogleTabularGenerator, GoogleValidatorGenerator } from '@ocd/codegen' import { parseArgs } from "node:util" -import { OcdSchema } from '@ocd/codegen/src/types/OcdSchema' const options = { schema: { diff --git a/ocd/packages/codegen-cli/src/ocd-set-build-date.ts b/ocd/packages/codegen-cli/src/ocd-set-build-date.ts index 411fd425c..62f84cca7 100644 --- a/ocd/packages/codegen-cli/src/ocd-set-build-date.ts +++ b/ocd/packages/codegen-cli/src/ocd-set-build-date.ts @@ -2,13 +2,11 @@ ** Copyright (c) 2020, 2024, Oracle and/or its affiliates. ** Licensed under the Universal Permissive License v 1.0 as shown at https://oss.oracle.com/licenses/upl. */ -// TODO: Remove Following -// @ts-nocheck import { parseArgs } from "node:util" import { OcdBuildDateGenerator } from '@ocd/codegen' -const options = { +const options: Record = { schema: { type: 'string', short: 's' @@ -41,8 +39,8 @@ const args = parseArgs({options: options, allowPositionals: true}) console.info('') // Read command as first argument -const outputDirectory = args.values.destination -const packageJsonFilename = args.values.package +const outputDirectory = args.values.destination as string +const packageJsonFilename = args.values.package as string const force = true const generator = new OcdBuildDateGenerator() generator.writeFiles(outputDirectory, packageJsonFilename, force) diff --git a/ocd/packages/codegen/package.json b/ocd/packages/codegen/package.json index 9048f2dc5..a417e6551 100644 --- a/ocd/packages/codegen/package.json +++ b/ocd/packages/codegen/package.json @@ -1,6 +1,6 @@ { "name": "@ocd/codegen", - "version": "0.2.4", + "version": "0.2.5", "description": "OKIT Open Cloud Designer Code Generation Module", "title": "OKIT Open Cloud Designer Code Generation Module", "author": { @@ -14,19 +14,33 @@ "okit" ], "license": "UPL-1.0", - "main": "lib/esm/index.js", + "exports": { + ".": { + "import": { + "types": "./lib/esm/index.d.ts", + "default": "./lib/esm/index.js" + }, + "require": { + "types": "./lib/cjs/index.d.ts", + "default": "./lib/cjs/index.js" + } + } + }, + "main": "lib/cjs/index.js", "module": "lib/esm/index.js", + "types": "lib/esm/index.d.js", "files": [ "lib/" ], "scripts": { "test": "echo \"Error: no test specified\" && exit 1", + "clean": "rm -rf lib dist", "pack": "mkdir -p dist && npm pack --pack-destination dist", - "compile": "tsc -p tsconfig.json", + "compile": "tsc -p tsconfig.json && tsc -p tsconfig-cjs.json", "build": "npm run compile && npm run pack" }, "dependencies": { - "@ocd/core": "^0.2.4", + "@ocd/core": ">=0.2.5", "fs": "^0.0.1-security", "path": "^0.12.7" } diff --git a/ocd/packages/codegen/src/generator/OcdBuildDateGenerator.ts b/ocd/packages/codegen/src/generator/OcdBuildDateGenerator.ts index f0e2117b5..bdec8e57a 100644 --- a/ocd/packages/codegen/src/generator/OcdBuildDateGenerator.ts +++ b/ocd/packages/codegen/src/generator/OcdBuildDateGenerator.ts @@ -2,21 +2,20 @@ ** Copyright (c) 2020, 2024, Oracle and/or its affiliates. ** Licensed under the Universal Permissive License v 1.0 as shown at https://oss.oracle.com/licenses/upl. */ -// TODO: Remove Following -// @ts-nocheck import fs from 'fs' import path from 'path' import { OcdCodeGenerator } from './OcdCodeGenerator' +import { OcdSchema } from '../types/OcdSchema' export class OcdBuildDateGenerator extends OcdCodeGenerator { constructor () { super() } - generate(resource: string, schema) {return} - content = (resource, schema) => {return ''} - autoGeneratedContent = (resource, schema) => {return ''} + generate(resource: string, schema: OcdSchema) {return} + content = (resource: string, schema: OcdSchema) => {return ''} + autoGeneratedContent = (resource: string, schema: OcdSchema) => {return ''} writeFiles(outputDirectory: string, resource: string, force = false) { const outputFilename = 'OcdBuildDetails.ts' diff --git a/ocd/packages/codegen/src/generator/OcdCodeGenerator.ts b/ocd/packages/codegen/src/generator/OcdCodeGenerator.ts index 071db5e0f..3910106b0 100644 --- a/ocd/packages/codegen/src/generator/OcdCodeGenerator.ts +++ b/ocd/packages/codegen/src/generator/OcdCodeGenerator.ts @@ -44,7 +44,7 @@ export class OcdCodeGenerator { writeResourceFiles(outputDirectory: string, resource: string, force = false) { const outputFilename = this.outputFilename(resource) - const resourceDirectory = path.join(outputDirectory, this.resourcesDirectory(resource)) + const resourceDirectory = path.join(outputDirectory, this.resourcesDirectory()) const resourceFilename = path.join(resourceDirectory, outputFilename) if (!fs.existsSync(resourceDirectory)) fs.mkdirSync(resourceDirectory, {recursive: true}) if (force || !fs.existsSync(resourceFilename)) { @@ -56,8 +56,8 @@ export class OcdCodeGenerator { } writeGeneratedResourceFiles(outputDirectory: string, resource: string, force = false) { const outputFilename = this.outputFilename(resource) - const resourceDirectory = path.join(outputDirectory, this.resourcesDirectory(resource)) - const generatedDirectory = path.join(outputDirectory, this.resourcesDirectory(resource), this.generatedDirectory(resource)) + const resourceDirectory = path.join(outputDirectory, this.resourcesDirectory()) + const generatedDirectory = path.join(outputDirectory, this.resourcesDirectory(), this.generatedDirectory()) const generatedFilename = path.join(generatedDirectory, outputFilename) if (!fs.existsSync(resourceDirectory)) fs.mkdirSync(resourceDirectory, {recursive: true}) if (!fs.existsSync(generatedDirectory)) fs.mkdirSync(generatedDirectory, {recursive: true}) @@ -67,10 +67,10 @@ export class OcdCodeGenerator { writeFilesSingleMethod(outputDirectory: string, resource: string, force = false) { const outputFilename = this.outputFilename(resource) - const resourceDirectory = path.join(outputDirectory, this.resourcesDirectory(resource)) + const resourceDirectory = path.join(outputDirectory, this.resourcesDirectory()) const resourceFilename = path.join(resourceDirectory, outputFilename) // console.info(`Resource Directory : ${resourceDirectory}`) - const generatedDirectory = path.join(outputDirectory, this.resourcesDirectory(resource), this.generatedDirectory(resource)) + const generatedDirectory = path.join(outputDirectory, this.resourcesDirectory(), this.generatedDirectory()) const generatedFilename = path.join(generatedDirectory, outputFilename) // console.info(`Generated Directory : ${generatedDirectory}`) if (!fs.existsSync(resourceDirectory)) fs.mkdirSync(resourceDirectory, {recursive: true}) @@ -85,11 +85,11 @@ export class OcdCodeGenerator { } } - resourcesFileContent(resources) { + resourcesFileContent(resources: string[]) { const contents = `${this.copyright()} ${this.autoGeneratedWarning()} -${resources.sort(this.simpleSort).map((r) => `export { ${this.resourceName(r)} } from './${this.resourcesDirectory()}/${this.resourceName(r)}'`).join('\n')} +${resources.toSorted(this.simpleSort).map((r) => `export { ${this.resourceName(r)} } from './${this.resourcesDirectory()}/${this.resourceName(r)}'`).join('\n')} ` return contents } @@ -121,17 +121,17 @@ ${resources.sort(this.simpleSort).map((r) => `export { ${this.resourceName(r)} } */` } - generateAutoGeneratedContent = (name: string, schema: OcdSchema): string => { - const contents = ` -${this.copyright()} -${this.autoGeneratedWarning()} +// generateAutoGeneratedContent = (name: string, schema: OcdSchema): string => { +// const contents = ` +// ${this.copyright()} +// ${this.autoGeneratedWarning()} -import { ${this.prefix}Resource } from "../../${this.prefix}Resource" +// import { ${this.prefix}Resource } from "../../${this.prefix}Resource" -${this.generateAutoGeneratedNamespace(`${this.prefix}name`, schema.attributes, true)} -` - return contents - } +// ${this.generateAutoGeneratedNamespace(`${this.prefix}name`, schema.attributes, true)} +// ` +// return contents +// } /* ** Rationalised Generation diff --git a/ocd/packages/codegen/src/generator/OcdModelGenerator.ts b/ocd/packages/codegen/src/generator/OcdModelGenerator.ts index cdf04c08f..ce3355faf 100644 --- a/ocd/packages/codegen/src/generator/OcdModelGenerator.ts +++ b/ocd/packages/codegen/src/generator/OcdModelGenerator.ts @@ -232,12 +232,12 @@ export default ${this.autoGeneratedClassName(resource)} /* ** Content for the auto generated resource summary file this will be written on each execution. */ - resourcesFileContent(resources) { + resourcesFileContent(resources: string[]) { // , ...this.resourceObjects[r] const contents = `${this.copyright()} ${this.autoGeneratedWarning()} -${resources.sort(this.simpleSort).map((r) => `export { ${[this.namespaceName(r), this.className(r)].join(', ')} } from './${this.resourcesDirectory()}/${this.namespaceName(r)}'`).join('\n')} +${resources.toSorted(this.simpleSort).map((r) => `export { ${[this.namespaceName(r), this.className(r)].join(', ')} } from './${this.resourcesDirectory()}/${this.namespaceName(r)}'`).join('\n')} ` return contents } diff --git a/ocd/packages/codegen/src/generator/OcdSvgCssGenerator.ts b/ocd/packages/codegen/src/generator/OcdSvgCssGenerator.ts new file mode 100644 index 000000000..eb6f11983 --- /dev/null +++ b/ocd/packages/codegen/src/generator/OcdSvgCssGenerator.ts @@ -0,0 +1,48 @@ +/* +** Copyright (c) 2020, 2024, Oracle and/or its affiliates. +** Licensed under the Universal Permissive License v 1.0 as shown at https://oss.oracle.com/licenses/upl. +*/ + +import fs from 'fs' +import path from 'path' +import { OcdCodeGenerator } from './OcdCodeGenerator' +import { OcdSchema } from '../types/OcdSchema' + +export class OcdSvgCssGenerator extends OcdCodeGenerator { + constructor () { + super() + } + + generate(resource: string, schema: OcdSchema) {return} + content = (resource: string, schema: OcdSchema) => {return ''} + autoGeneratedContent = (resource: string, schema: OcdSchema) => {return ''} + + writeFiles(outputDirectory: string, resource: string, force = false) { + const outputFilename = 'OcdSvgCssData.ts' + const resourceFilename = path.join(outputDirectory, outputFilename) + console.debug('SVG Css') + // Read package.json specified in resource + const cssFiles = fs.readdirSync(resource).filter((f) => path.extname(f) === '.css') + const content = `${this.copyright()} +${this.autoGeneratedWarning()} + +export const svgCssData: Record = { + ${cssFiles.map((f) => `'${f}': String.raw\`${fs.readFileSync(path.join(resource, f), 'utf8')}\``).join(',\n\n ')} +} + +export default svgCssData + +` + if (force || !fs.existsSync(resourceFilename)) { + console.info(`Writting Resource File : ${resourceFilename}`) + fs.writeFileSync(resourceFilename, content) + } else { + console.info(`Resource File already exists : ${resourceFilename}`) + } + } + writeResourceFiles(outputDirectory: string, resource: string, force = false) {return} + writeGeneratedResourceFiles(outputDirectory: string, resource: string, force = false) {return} +} + +export default OcdSvgCssGenerator +module.exports = { OcdSvgCssGenerator } diff --git a/ocd/packages/codegen/src/generator/OcdValidatorGenerator.ts b/ocd/packages/codegen/src/generator/OcdValidatorGenerator.ts index 8916484f0..1e842a23c 100644 --- a/ocd/packages/codegen/src/generator/OcdValidatorGenerator.ts +++ b/ocd/packages/codegen/src/generator/OcdValidatorGenerator.ts @@ -5,8 +5,6 @@ // TODO: Remove Following // @ts-nocheck -import fs from 'fs' -import path from 'path' import { OcdCodeGenerator } from './OcdCodeGenerator' export class OcdValidatorGenerator extends OcdCodeGenerator { @@ -18,13 +16,12 @@ export class OcdValidatorGenerator extends OcdCodeGenerator { ** Content for the top level file. This will only be created if it does not exists. */ content = (resource, schema) => { - const schemaObjects = this.getSchemaObjects(schema) const content = `${this.copyright()} import * as AutoGenerated from './${this.generatedDirectory()}/${this.validatorResourceName(resource)}' import * as Model from '../../../../provider/${this.prefix.toLowerCase()}/resources' import { ${this.prefix}Resources } from '../../../../OcdDesign' -import { OcdResourceValidator, OcdValidationResult, OcdValidatorResource } from '../../../OcdResourceValidator' +import { OcdValidationResult } from '../../../OcdResourceValidator' export namespace ${this.idToNamespaceName(resource)} { export function validateResource(resource: Model.${this.idToInterfaceName(resource)}, resources: ${this.prefix}Resources): OcdValidationResult[] { @@ -78,7 +75,7 @@ export namespace ${this.idToNamespaceName(resource)} { } ${schemaAttributes.filter(a => !this.ignoreAttributes.includes(a.id)).map(i => this.validatorSimpleElement(resource, i)).filter(i => i.trim() !== '').join('\n ')} - ${schemaObjects.map(i => this.validatorComplextElement(resource, i)).filter(i => i.trim() !== '').join('\n ')} + ${schemaObjects.map(i => this.validatorComplexElement(resource, i)).filter(i => i.trim() !== '').join('\n ')} } @@ -139,7 +136,7 @@ export namespace ${this.idToNamespaceName(resource)} { } } - validatorComplextElement = (resource, attribute) => { + validatorComplexElement = (resource, attribute) => { if (attribute.type === 'object') return this.validatorObjectElement(resource, attribute) else if (attribute.type === 'list' && attribute.subtype === 'object') return this.validatorObjectListElement(resource, attribute) else return `` diff --git a/ocd/packages/codegen/src/importer/data/AzureRmResourceMap.ts b/ocd/packages/codegen/src/importer/data/AzureRmResourceMap.ts index 0fabb84e5..53cc1048e 100644 --- a/ocd/packages/codegen/src/importer/data/AzureRmResourceMap.ts +++ b/ocd/packages/codegen/src/importer/data/AzureRmResourceMap.ts @@ -12,9 +12,9 @@ export const resourceMap: OcdResourceMap = { "azurerm_kubernetes_cluster": "kubernetes_cluster", "azurerm_resource_group": "resource_group", "azurerm_mssql_server": "mssql_server", - "azurerm_oracledatabase_exadata_infrastructure": "oracledatabase_exadata_infrastructure", - "azurerm_oracledatabase_autonomous_database_regular": "oracledatabase_autonomous_database_regular", - "azurerm_oracledatabase_cloud_vm_cluster": "oracledatabase_cloud_vm_cluster", + "azurerm_oracle_exadata_infrastructure": "oracle_exadata_infrastructure", + "azurerm_oracle_autonomous_database": "oracle_autonomous_database", + "azurerm_oracle_cloud_vm_cluster": "oracle_cloud_vm_cluster", "azurerm_subnet": "subnet", "azurerm_virtual_machine": "virtual_machine", "azurerm_virtual_network": "virtual_network", @@ -53,20 +53,37 @@ export const resourceAttributes: OcdIncludedElements = { "administrator_login_password", "version" ], - "azurerm_oracledatabase_exadata_infrastructure": [ - "edition", - "elastic_pool_name", - "server_name" + "azurerm_oracle_exadata_infrastructure": [ + "compute_count", + "display_name", + "shape" ], - "azurerm_oracledatabase_autonomous_database_regular": [ - "edition", - "elastic_pool_name", - "server_name" + "azurerm_oracle_autonomous_database": [ + "admin_password", + "auto_scaling_enabled", + "auto_scaling_for_storage_enabled", + "backup_retention_period_in_days", + "cpu_core_count", + "data_storage_size_in_tbs", + "db_name", + "db_version", + "db_workload", + "display_name", + "in_memory_area_in_gbs", + "in_memory_percentage", + "is_data_guard_enabled", + "is_dedicated", + "is_local_data_guard_enabled", + "is_mtls_connection_required", + "kms_key_id", + "license_model", + "subnet_id", + "virtual_network_id", ], - "azurerm_oracledatabase_cloud_vm_cluster": [ - "edition", - "elastic_pool_name", - "server_name" + "azurerm_oracle_cloud_vm_cluster": [ + "backup_subnet_cidr", + "cluster_name", + "cpu_core_count" ], "azurerm_subnet": [ "virtual_network_name" diff --git a/ocd/packages/codegen/src/importer/data/GoogleResourceMap.ts b/ocd/packages/codegen/src/importer/data/GoogleResourceMap.ts index 13bdaf7c4..e3d89ceb5 100644 --- a/ocd/packages/codegen/src/importer/data/GoogleResourceMap.ts +++ b/ocd/packages/codegen/src/importer/data/GoogleResourceMap.ts @@ -7,9 +7,9 @@ import { OcdIncludedElements, OcdResourceMap } from "../../types/OcdImporterData export const resourceMap: OcdResourceMap = { "google_compute_network": "compute_network", - "google_oracledatabase_autonomous_database_regular": "oracledatabase_autonomous_database_regular", - "google_oracledatabase_exadata_infrastructure": "oracledatabase_exadata_infrastructure", - "google_oracledatabase_cloud_vm_cluster": "oracledatabase_cloud_vm_cluster", + "google_oracle_database_autonomous_database": "oracle_database_autonomous_database", + "google_oracle_database_cloud_exadata_infrastructure": "oracle_database_cloud_exadata_infrastructure", + "google_oracle_database_cloud_vm_cluster": "oracle_database_cloud_vm_cluster", } export const dataMap: OcdResourceMap = {} @@ -19,7 +19,22 @@ export const resourceAttributes: OcdIncludedElements = { "google_compute_network": [ "gateway_ipv4" ], - "google_oracledatabase_autonomous_database_regular": [], - "google_oracledatabase_exadata_infrastructure": [], - "google_oracledatabase_cloud_vm_cluster": [], + "google_oracle_database_autonomous_database": [ + "admin_password", + "autonomous_database_id", + "cidr", + "database", + "display_name" + ], + "google_oracle_database_cloud_exadata_infrastructure": [ + "cloud_exadata_infrastructure_id", + "display_name" + ], + "google_oracle_database_cloud_vm_cluster": [ + "backup_subnet_cidr", + "cidr", + "cloud_vm_cluster_id", + "exadata_infrastructure", + "network" + ], } diff --git a/ocd/packages/codegen/src/index.ts b/ocd/packages/codegen/src/index.ts index e233e7457..4a779fbcc 100644 --- a/ocd/packages/codegen/src/index.ts +++ b/ocd/packages/codegen/src/index.ts @@ -3,6 +3,8 @@ ** Licensed under the Universal Permissive License v 1.0 as shown at https://oss.oracle.com/licenses/upl. */ +export { OcdSchema } from "./types/OcdSchema" + export { AzureRmTerraformSchemaImporter } from "./importer/AzureRmTerraformSchemaImporter" export { AzureAzTerraformSchemaImporter } from "./importer/AzureAzTerraformSchemaImporter" export { AzureModelGenerator } from "./generator/AzureModelGenerator" @@ -34,4 +36,5 @@ export { OcdCodeGenerator } from "./generator/OcdCodeGenerator" // export { OcdTabularGenerator } from "./generator/OcdTabularPageGenerator" export { OcdBuildDateGenerator } from "./generator/OcdBuildDateGenerator" +export { OcdSvgCssGenerator } from "./generator/OcdSvgCssGenerator" export { OcdTerraformSchemaResourceAttributesGenerator } from "./importer/OcdTerraformSchemaResourceAttributesGenerator" diff --git a/ocd/packages/core/package.json b/ocd/packages/core/package.json index 375567109..d8ffc81c5 100644 --- a/ocd/packages/core/package.json +++ b/ocd/packages/core/package.json @@ -1,6 +1,6 @@ { "name": "@ocd/core", - "version": "0.2.4", + "version": "0.2.5", "description": "OKIT Open Cloud Designer Core Utility Module", "title": "OKIT Open Cloud Designer Core Utility Module", "author": { @@ -14,13 +14,27 @@ "okit" ], "license": "UPL-1.0", - "main": "lib/esm/index.js", + "exports": { + ".": { + "import": { + "types": "./lib/esm/index.d.ts", + "default": "./lib/esm/index.js" + }, + "require": { + "types": "./lib/cjs/index.d.ts", + "default": "./lib/cjs/index.js" + } + } + }, + "main": "lib/cjs/index.js", "module": "lib/esm/index.js", + "types": "lib/esm/index.d.js", "files": [ "lib/" ], "scripts": { "test": "echo \"Error: no test specified\" && exit 1", + "clean": "rm -rf lib dist", "pack": "mkdir -p dist && npm pack --pack-destination dist", "compile": "tsc -p tsconfig.json && tsc -p tsconfig-cjs.json", "build": "npm run compile && npm run pack" diff --git a/ocd/packages/core/src/OcdUtils.ts b/ocd/packages/core/src/OcdUtils.ts index 150a9e22f..f315750dc 100644 --- a/ocd/packages/core/src/OcdUtils.ts +++ b/ocd/packages/core/src/OcdUtils.ts @@ -58,8 +58,8 @@ export namespace OcdUtils { export function isCondition(leftHandSide: string | number | boolean | Array | Function | undefined, operator: string | undefined, rightHandSide: string | number | boolean | Array | Function | undefined): boolean { let isTrue = false // console.debug('OcdUtils: isConditional', leftHandSide, operator, rightHandSide) - if (operator === 'eq') isTrue = (leftHandSide === rightHandSide) - else if (operator === 'ne') isTrue = (leftHandSide !== rightHandSide) + if (operator === 'eq') isTrue = (leftHandSide !== undefined && rightHandSide !== undefined && leftHandSide === rightHandSide) + else if (operator === 'ne') isTrue = (leftHandSide !== undefined && rightHandSide !== undefined && leftHandSide !== rightHandSide) else if (operator === 'lt') isTrue = (leftHandSide !== undefined && rightHandSide !== undefined && leftHandSide < rightHandSide) else if (operator === 'gt') isTrue = (leftHandSide !== undefined && rightHandSide !== undefined && leftHandSide > rightHandSide) else if (operator === 'le') isTrue = (leftHandSide !== undefined && rightHandSide !== undefined && leftHandSide <= rightHandSide) diff --git a/ocd/packages/core/src/index.ts b/ocd/packages/core/src/index.ts index 785d44469..fac01cd98 100644 --- a/ocd/packages/core/src/index.ts +++ b/ocd/packages/core/src/index.ts @@ -3,4 +3,5 @@ ** Licensed under the Universal Permissive License v 1.0 as shown at https://oss.oracle.com/licenses/upl. */ + export { OcdUtils } from "./OcdUtils" diff --git a/ocd/packages/desktop/package.json b/ocd/packages/desktop/package.json index cf5332ac5..b7a5f547b 100644 --- a/ocd/packages/desktop/package.json +++ b/ocd/packages/desktop/package.json @@ -1,7 +1,7 @@ { "name": "@ocd/desktop", "productName": "ocd", - "version": "0.2.4", + "version": "0.2.5", "description": "OKIT Open Cloud Designer Desktop", "title": "OKIT Open Cloud Designer Desktop", "author": { @@ -130,11 +130,11 @@ "rpm": {} }, "dependencies": { - "@ocd/core": "^0.2.4", - "@ocd/export": "^0.2.4", - "@ocd/import": "^0.2.4", - "@ocd/model": "^0.2.4", - "@ocd/query": "^0.2.4", + "@ocd/core": ">=0.2.5", + "@ocd/export": ">=0.2.5", + "@ocd/import": ">=0.2.5", + "@ocd/model": ">=0.2.5", + "@ocd/query": ">=0.2.5", "@testing-library/jest-dom": "^5.17.0", "@testing-library/react": "^13.4.0", "@testing-library/user-event": "^13.5.0", @@ -187,6 +187,7 @@ "preelectron-release-pack": "npm run build", "electron-release-pack": "electron-builder build --x64 --macos --win --linux -c.extraMetadata.main=build/main.js", "electron-pack": "electron-builder build -c.extraMetadata.main=build/main.js", + "clean": "rm -rf lib dist build", "build": "npm run build-react-scripts && BRANCH_NAME='' npm run electron-pack", "desktop": "npm run build-react-scripts && electron-forge start", "web": "npm run start" diff --git a/ocd/packages/desktop/public/main.js b/ocd/packages/desktop/public/main.js index fbb3f39af..9131ff4a2 100644 --- a/ocd/packages/desktop/public/main.js +++ b/ocd/packages/desktop/public/main.js @@ -15,6 +15,11 @@ const common = require ('oci-common') const { OciQuery, OciReferenceDataQuery } = require('@ocd/query') const { unescape } = require("querystring") +// Get Environment information +const isDev = process.env.OCD_DEV === 'true'; +const isPreview = process.env.OCD_PREVIEW === 'true'; +const isMac = process.platform === 'darwin' + // if (require('electron-squirrel-startup')) app.quit() const ocdConfigDirectory = path.join(app.getPath('home'), '.ocd') const ocdConsoleConfigFilename = path.join(ocdConfigDirectory, 'console_config.json') @@ -41,13 +46,10 @@ const saveDesktopState = (config) => { fs.writeFileSync(ocdWindowStateFilename, JSON.stringify(config, null, 4)) } -let mainWindow = undefined -let activeFile = undefined -let filePath = undefined +let mainWindow +let filePath let ready = false -const isMac = process.platform === 'darwin' - // Add Menu const template = [ // { role: 'appMenu' } @@ -150,7 +152,7 @@ const template = [ // } // ] // } - ] +] const menu = Menu.buildFromTemplate(template) @@ -160,18 +162,18 @@ const selectionMenu = Menu.buildFromTemplate([ {role: 'copy'}, {type: 'separator'}, {role: 'selectall'}, - ]) - - const inputMenu = Menu.buildFromTemplate([ - {role: 'undo'}, - {role: 'redo'}, - {type: 'separator'}, - {role: 'cut'}, - {role: 'copy'}, - {role: 'paste'}, - {type: 'separator'}, - {role: 'selectall'}, - ]) +]) + +const inputMenu = Menu.buildFromTemplate([ +{role: 'undo'}, +{role: 'redo'}, +{type: 'separator'}, +{role: 'cut'}, +{role: 'copy'}, +{role: 'paste'}, +{type: 'separator'}, +{role: 'selectall'}, +]) // Create OCD Window const createWindow = () => { @@ -242,6 +244,7 @@ app.whenReady().then(() => { ipcMain.handle('ocdDesign:exportTerraform', handleExportTerraform) ipcMain.handle('ocdDesign:loadLibraryIndex', handleLoadLibraryIndex) ipcMain.handle('ocdDesign:loadLibraryDesign', handleLoadLibraryDesign) + ipcMain.handle('ocdDesign:loadSvgCssFiles', handleLoadSvgCssFiles) // OCD Configuration ipcMain.handle('ocdConfig:loadConsoleConfig', handleLoadConsoleConfig) ipcMain.handle('ocdConfig:saveConsoleConfig', handleSaveConsoleConfig) @@ -290,9 +293,8 @@ app.on("open-file", function(event, path) { if (ready) { mainWindow.webContents.send('open-file', filePath) filePath = null - return } -}); +}) @@ -342,8 +344,8 @@ async function handleLoadOciConfigProfile(event, profile) { console.debug('Electron Main: handleLoadOciConfigProfileNames Parsed:', parsed) console.debug('Electron Main: handleLoadOciConfigProfileNames Config By Profile:', parsed.accumulator.configurationsByProfile) console.debug('Electron Main: handleLoadOciConfigProfileNames Keys:', Array.from(parsed.accumulator.configurationsByProfile.keys())) - const profile = Array.from(parsed.accumulator.configurationsByProfile[profile]) - resolve(profiles) + const profileData = Array.from(parsed.accumulator.configurationsByProfile[profile]) + resolve(profileData) }) } @@ -441,29 +443,30 @@ async function handleDiscardConfirmation(event) { } async function handleExportTerraform(event, design, directory) { - design = typeof design === 'string' ? JSON.parse(design) : design + // design = typeof design === 'string' ? JSON.parse(design) : design console.debug('Electron Main: handleExportTerraform') - return new Promise((resolve, reject) => {reject('Currently Not Implemented')}) + // return new Promise((resolve, reject) => {reject('Currently Not Implemented')}) + return Promise.reject(new Error('Currently Not Implemented')) } async function handleLoadConsoleConfig(event) { console.debug('Electron Main: handleLoadConfig') return new Promise((resolve, reject) => { - const defaultConfig = { - showPalette: true, - showModelPalette: true, - showProvidersPalette: ['oci'], - verboseProviderPalette: false, - displayPage: 'designer', - detailedResource: true, - showProperties: true, - highlightCompartmentResources: false, - recentDesigns: [], - maxRecent: 10, - } + // const defaultConfig = { + // showPalette: true, + // showModelPalette: true, + // showProvidersPalette: ['oci'], + // verboseProviderPalette: false, + // displayPage: 'designer', + // detailedResource: true, + // showProperties: true, + // highlightCompartmentResources: false, + // recentDesigns: [], + // maxRecent: 10, + // } try { // if (!fs.existsSync(ocdConsoleConfigFilename)) fs.writeFileSync(ocdConsoleConfigFilename, JSON.stringify(defaultConfig, null, 4)) - if (!fs.existsSync(ocdConsoleConfigFilename)) reject('Console Config does not exist') + if (!fs.existsSync(ocdConsoleConfigFilename)) reject(new Error('Console Config does not exist')) const config = fs.readFileSync(ocdConsoleConfigFilename, 'utf-8') resolve(JSON.parse(config)) } catch (err) { @@ -538,8 +541,9 @@ async function handleOpenExternalUrl(event, href) { } // Library / Reference Architecture Functions -const libraryUrl = 'https://raw.githubusercontent.com/oracle/oci-designer-toolkit/refs/heads/master/ocd/library' -// const libraryUrl = 'https://raw.githubusercontent.com/oracle/oci-designer-toolkit/refs/heads/toxophilist/sprint-dev/ocd/library' +const prodLibraryUrl = 'https://raw.githubusercontent.com/oracle/oci-designer-toolkit/refs/heads/master/ocd/library' +const devLibraryUrl = 'https://raw.githubusercontent.com/oracle/oci-designer-toolkit/refs/heads/toxophilist/sprint-dev/ocd/library' +const libraryUrl = isDev || isPreview ? devLibraryUrl : prodLibraryUrl const libraryFile = 'referenceArchitectures.json' async function handleLoadLibraryIndex(event) { @@ -558,7 +562,8 @@ async function handleLoadLibraryIndex(event) { }).then((data) => { // console.debug('Electron Main: handleLoadLibraryIndex: Fetch Data', data) const libraryIndex = JSON.parse(data) - const sectionQueries = [getLibrarySectionSvg(libraryIndex, 'oci')] + // const sectionQueries = [getLibrarySectionSvg(libraryIndex, 'oci')] + const sectionQueries = Object.keys(libraryIndex).map((k) => getLibrarySectionSvg(libraryIndex, k)) Promise.allSettled(sectionQueries).then((results) => { // console.debug('Electron Main: handleLoadLibraryIndex: Section Query Results', results) resolve(libraryIndex) @@ -578,7 +583,7 @@ function getLibrarySectionSvg(libraryIndex, section) { const svgUrls = svgRequests.map((request) => fetch(request)) Promise.allSettled(svgUrls).then((results) => Promise.allSettled(results.map((r) => r.value.text()))).then((svg) => { svg.forEach((r, i) => { - console.debug('Electron Main: getLibrarySectionSvg: Svg Query Results', r.status) + console.debug('Electron Main: getLibrarySectionSvg: Svg Query Results', section, r.status) // console.debug('Electron Main: getLibrarySectionSvg: Svg Query Results', r.value) librarySection[i].dataUri = `data:image/svg+xml,${encodeURIComponent(r.value)}` // librarySection[i].dataUri = `data:image/svg+xml;base64,${btoa(unescape(encodeURIComponent(r.value)))}` @@ -613,3 +618,7 @@ async function handleLoadLibraryDesign(event, section, filename) { }) }) } + +async function handleLoadSvgCssFiles() { + return Promise.reject(new Error('Not Implemented')) +} diff --git a/ocd/packages/desktop/public/preload.js b/ocd/packages/desktop/public/preload.js index 659464cd0..02cd31a07 100644 --- a/ocd/packages/desktop/public/preload.js +++ b/ocd/packages/desktop/public/preload.js @@ -17,11 +17,12 @@ contextBridge.exposeInMainWorld('ocdAPI', { queryDropdown: (profile, region) => ipcRenderer.invoke('ociQuery:queryDropdown', profile, region), // OCD Design loadDesign: (filename) => ipcRenderer.invoke('ocdDesign:loadDesign', filename), - saveDesign: (design, filename) => ipcRenderer.invoke('ocdDesign:saveDesign', design, filename), + saveDesign: (design, filename, suggestedFilename = '') => ipcRenderer.invoke('ocdDesign:saveDesign', design, filename, suggestedFilename), discardConfirmation: () => ipcRenderer.invoke('ocdDesign:discardConfirmation'), exportTerraform: (design, directory) => ipcRenderer.invoke('ocdDesign:exportTerraform', design, directory), loadLibraryIndex: () => ipcRenderer.invoke('ocdDesign:loadLibraryIndex'), loadLibraryDesign: (section, filename) => ipcRenderer.invoke('ocdDesign:loadLibraryDesign', section, filename), + loadSvgCssFiles: () => ipcRenderer.invoke('ocdDesign:loadSvgCssFiles'), // OCD Configuration loadConsoleConfig: () => ipcRenderer.invoke('ocdConfig:loadConsoleConfig'), saveConsoleConfig: (config) => ipcRenderer.invoke('ocdConfig:saveConsoleConfig', config), diff --git a/ocd/packages/desktop/src/actions/OcdDesignBrowserActions.ts b/ocd/packages/desktop/src/actions/OcdDesignBrowserActions.ts index 4b83b848a..3769d0561 100644 --- a/ocd/packages/desktop/src/actions/OcdDesignBrowserActions.ts +++ b/ocd/packages/desktop/src/actions/OcdDesignBrowserActions.ts @@ -38,7 +38,7 @@ export namespace OcdDesignerBrowserActions { resolve({canceled: false, filename: resp.filename, design: resp.design}) }).catch((reason) => { console.debug(reason) - reject(reason) + reject(new Error(reason)) }) }) } diff --git a/ocd/packages/desktop/src/components/Menu.ts b/ocd/packages/desktop/src/components/Menu.ts index d64b7013a..b4d9737ca 100644 --- a/ocd/packages/desktop/src/components/Menu.ts +++ b/ocd/packages/desktop/src/components/Menu.ts @@ -11,23 +11,19 @@ import { OcdDesignFacade } from '../facade/OcdDesignFacade' import { OcdConfigFacade } from '../facade/OcdConfigFacade' import { OcdViewLayer, OcdViewPage } from '@ocd/model' import { autoLayoutOptions } from '../data/OcdAutoLayoutOptions' - -// Import css as text -// @ts-ignore -// eslint-disable-next-line import/no-webpack-loader-syntax -import svgThemeCss from '!!css-loader?{"sourceMap":false,"exportType":"string"}!../css/oci-theme.css' -// @ts-ignore -// eslint-disable-next-line import/no-webpack-loader-syntax -import svgSvgCss from '!!css-loader?{"sourceMap":false,"exportType":"string"}!../css/ocd-svg.css' +import { svgCssData } from '../data/OcdSvgCssData' import { OcdExternalFacade } from '../facade/OcdExternalFacade' +const svgThemeCss = svgCssData['oci-theme.css'] +const svgSvgCss = svgCssData['ocd-svg.css'] + export interface MenuItem { label: string class?: string trueClass?: string falseClass?: string - click?: Function | undefined - view?: string | undefined + click?: Function + view?: string submenu?: MenuItem[] | Function } @@ -106,8 +102,8 @@ export const menuItems: MenuItem[] = [ { label: 'Save As', click: (ocdDocument: OcdDocument, setOcdDocument: Function, ocdConsoleConfig: OcdConsoleConfig, setOcdConsoleConfig: Function, activeFile: Record, setActiveFile: Function) => { - const suggestedName = activeFile && activeFile.name && activeFile.name !== '' ? `${activeFile.name.split('.')[0]}_Copy.okit` : '' - OcdDesignFacade.saveDesign(ocdDocument.design, '').then((results) => { + const suggestedName = activeFile?.name && activeFile.name !== '' ? `${activeFile.name.split('.')[0]}_Copy.okit` : '' + OcdDesignFacade.saveDesign(ocdDocument.design, '', suggestedName).then((results) => { if (!results.canceled) { setActiveFile({name: results.filename, modified: false}) updateRecentFiles(results.filename, ocdConsoleConfig, setOcdConsoleConfig) diff --git a/ocd/packages/desktop/src/components/OcdCache.ts b/ocd/packages/desktop/src/components/OcdCache.ts index d8e75aaf9..c42dc0c4b 100644 --- a/ocd/packages/desktop/src/components/OcdCache.ts +++ b/ocd/packages/desktop/src/components/OcdCache.ts @@ -25,8 +25,7 @@ export class OcdCacheData { this.cache = this.newCache() if (typeof cache === 'string' && cache.length > 0) this.cache = JSON.parse(cache) else if (cache instanceof Object) this.cache = cache - // else this.cache = this.newCache() - else this.loadCache() + else this.cache = this.newCache() } static readonly new = () => new OcdCacheData() diff --git a/ocd/packages/desktop/src/components/OcdCanvas.tsx b/ocd/packages/desktop/src/components/OcdCanvas.tsx index 413278392..8c5d48581 100644 --- a/ocd/packages/desktop/src/components/OcdCanvas.tsx +++ b/ocd/packages/desktop/src/components/OcdCanvas.tsx @@ -39,7 +39,7 @@ export const OcdCanvas = ({ dragData, setDragData, ocdConsoleConfig, ocdDocument const {activeFile, setActiveFile} = useContext(ActiveFileContext) const uuid = () => `gid-${uuidv4()}` const page: OcdViewPage = ocdDocument.getActivePage() - const allCompartmentIds = ocdDocument.getOciResourceList('comparment').map((r) => r.id) + // const allCompartmentIds = ocdDocument.getOciResourceList('comparment').map((r) => r.id) const visibleLayers = page.layers.filter((l: OcdViewLayer) => l.visible).map((l: OcdViewLayer) => l.id) // const visibleResourceIds = ocdDocument.getResources().filter((r: OcdResource) => visibleLayers.includes(r.compartmentId) || (!allCompartmentIds.includes(r.compartmentId) && r.resourceType !== 'Compartment')).map((r: any) => r.id) const visibleResourceIds = ocdDocument.getResources().filter((r: any) => visibleLayers.includes(r.compartmentId)).map((r: any) => r.id) @@ -172,7 +172,8 @@ export const OcdCanvas = ({ dragData, setDragData, ocdConsoleConfig, ocdDocument // Redraw console.info('OcdCanvas: Design:', ocdDocument.design) setOcdDocument(OcdDocument.clone(ocdDocument)) - if (!activeFile.modified) setActiveFile({name: activeFile.name, modified: true}) + if (!activeFile.modified) activeFile.modified = true + // if (!activeFile.modified) setActiveFile({name: activeFile.name, modified: true}) } return false } @@ -407,6 +408,7 @@ export const OcdCanvas = ({ dragData, setDragData, ocdConsoleConfig, ocdDocument onDrop={(e) => onDrop(e)} onDragLeave={(e) => onDragLeave()} onDragOver={(e) => onDragOver(e)} + aria-hidden >
onVisibilityClick()} + onClick={() => onVisibilityClick()} aria-hidden >
-
onLayerSelectedClick()}> +
onLayerSelectedClick()} aria-hidden>
{page.layers.length > 1 &&
onClickAddLayer()} + onClick={() => onClickAddLayer()} aria-hidden >
) @@ -183,11 +183,11 @@ const OcdLayersThreeDotMenu = ({ocdDocument, setOcdDocument}: LayerBarMenuProps) return (
    -
  • +
    • - {page.layers.length > 1 &&
    • Delete "{selectedLayerName}"
    • } -
    • Add Layer
    • + {page.layers.length > 1 &&
    • Delete "{selectedLayerName}"
    • } +
    • Add Layer
diff --git a/ocd/packages/desktop/src/components/OcdCanvasPages.tsx b/ocd/packages/desktop/src/components/OcdCanvasPages.tsx index be75ac5c3..8ff8e802e 100644 --- a/ocd/packages/desktop/src/components/OcdCanvasPages.tsx +++ b/ocd/packages/desktop/src/components/OcdCanvasPages.tsx @@ -32,12 +32,12 @@ const OcdCanvasPage = ({ ocdDocument, setOcdDocument, page } : PageBarPageProps) } return (
-
onPageSelectedClick()}> - {page.title} +
onPageSelectedClick()} aria-hidden> + {page.title} {/* */}
{ocdDocument.design.view.pages.length > 1 &&
}
) @@ -65,7 +65,7 @@ const OcdCanvasPages = ({ ocdDocument, setOcdDocument }: PageBarPagesProps): JSX })}
onClickAddPage()} + onClick={() => onClickAddPage()} aria-hidden >
) @@ -108,14 +108,14 @@ const OcdPagesThreeDotMenu = ({ocdDocument, setOcdDocument}: PageBarMenuProps): return (
    -
  • +
    • --------------------------------
    • -
    • Duplicate "{activePageName}"
    • +
    • Duplicate "{activePageName}"
    • {ocdDocument.design.view.pages.length > 1 &&
    • Delete "{activePageName}"
    • } -
    • Add Page
    • +
    • Add Page
diff --git a/ocd/packages/desktop/src/components/OcdConsoleMenuBar.tsx b/ocd/packages/desktop/src/components/OcdConsoleMenuBar.tsx index 3fd6d1219..8dafe12b1 100644 --- a/ocd/packages/desktop/src/components/OcdConsoleMenuBar.tsx +++ b/ocd/packages/desktop/src/components/OcdConsoleMenuBar.tsx @@ -6,9 +6,9 @@ import { useContext, useState } from 'react' import { menuItems, MenuItem } from './Menu' import OcdDocument from './OcdDocument' -import { ConsoleMenuProps, ConsolePageProps, OcdActiveFile } from '../types/Console' +import { ConsoleMenuProps, OcdActiveFile } from '../types/Console' import OcdConsoleConfig from './OcdConsoleConfiguration' -import { ActiveFileContext, ConsoleConfigContext } from '../pages/OcdConsole' +import { ActiveFileContext } from '../pages/OcdConsole' const OcdConsoleMenuItem = ({ menuItem, depth, ocdDocument, setOcdDocument, ocdConsoleConfig, setOcdConsoleConfig }: any): JSX.Element => { const {activeFile, setActiveFile} = useContext(ActiveFileContext) @@ -24,6 +24,7 @@ const OcdConsoleMenuItem = ({ menuItem, depth, ocdDocument, setOcdDocument, ocdC onMouseEnter={onMouseEnter} onMouseLeave={onMouseLeave} onClick={closeDropdown} + aria-hidden > {menuItem.submenu && Array.isArray(menuItem.submenu) ? ( <> diff --git a/ocd/packages/desktop/src/components/OcdDocument.ts b/ocd/packages/desktop/src/components/OcdDocument.ts index 9af974998..92932dd49 100644 --- a/ocd/packages/desktop/src/components/OcdDocument.ts +++ b/ocd/packages/desktop/src/components/OcdDocument.ts @@ -241,7 +241,7 @@ export class OcdDocument { const allCoords = this.getAllCoords() allCoords.filter(c => c.ocid === id).forEach((c) => { const parent = this.getCoords(c.pgid) - if (parent && parent.coords) parent.coords = parent.coords.filter(c => c.ocid !== id) + if (parent?.coords) parent.coords = parent.coords.filter(c => c.ocid !== id) }) } cloneResource(id: string) { diff --git a/ocd/packages/desktop/src/components/OcdModelPalette.tsx b/ocd/packages/desktop/src/components/OcdModelPalette.tsx index 7fbf76e36..eb77edd16 100644 --- a/ocd/packages/desktop/src/components/OcdModelPalette.tsx +++ b/ocd/packages/desktop/src/components/OcdModelPalette.tsx @@ -64,7 +64,7 @@ const OcdModelPaletteResources = ({ provider, type, resources, setDragData }: an const onDragEnd = () => {} return (
  • -
    +
      {resources.map((r: any) => { return { - const {activeFile, setActiveFile} = useContext(ActiveFileContext) + const {activeFile} = useContext(ActiveFileContext) const [dragging, setDragging] = useState(false) const [origin, setOrigin] = useState({ x: 0, y: 0 }); const [radius, setRadius] = useState(3) @@ -287,7 +287,8 @@ const OcdResizePoint = ({cx, cy, position, setDimensions, onResizeEnd}: any): JS break } onResizeEnd(dimensions) - if (!activeFile.modified && hasMoved) setActiveFile({name: activeFile.name, modified: true}) + if (!activeFile.modified && hasMoved) activeFile.modified = true + // if (!activeFile.modified && hasMoved) setActiveFile({name: activeFile.name, modified: true}) } const onMouseOver = (e: React.MouseEvent) => { e.stopPropagation() diff --git a/ocd/packages/desktop/src/components/dialogs/OcdReferenceDataQueryDialog.tsx b/ocd/packages/desktop/src/components/dialogs/OcdReferenceDataQueryDialog.tsx index 5d621a8f0..5ad4e0db1 100644 --- a/ocd/packages/desktop/src/components/dialogs/OcdReferenceDataQueryDialog.tsx +++ b/ocd/packages/desktop/src/components/dialogs/OcdReferenceDataQueryDialog.tsx @@ -11,7 +11,7 @@ import OcdConsoleConfig from "../OcdConsoleConfiguration" export const OcdReferenceDataQueryDialog = ({ocdDocument, setOcdDocument}: QueryDialogProps): JSX.Element => { const {ocdConsoleConfig, setOcdConsoleConfig} = useContext(ConsoleConfigContext) - const {ocdCache, setOcdCache} = useContext(CacheContext) + const {ocdCache} = useContext(CacheContext) const loadingState = '......Reading OCI Config' const regionsLoading = {id: 'Select Valid Profile', displayName: 'Select Valid Profile'} const className = `ocd-reference-data-query-dialog` diff --git a/ocd/packages/desktop/src/components/properties/OcdCommonConfigs.ts b/ocd/packages/desktop/src/components/properties/OcdCommonConfigs.ts index 6d1b345fd..6d52c83a0 100644 --- a/ocd/packages/desktop/src/components/properties/OcdCommonConfigs.ts +++ b/ocd/packages/desktop/src/components/properties/OcdCommonConfigs.ts @@ -12,7 +12,7 @@ export namespace OcdCommonConfigs { id: 'cidr_block', properties: { placeholder: '0.0.0.0/0', - pattern: "^((([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])(\/(3[0-2]|[1-2][0-9]|[0-9]))$)+|^var\.+$", + pattern: String.raw`^((([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])(\/(3[0-2]|[1-2][0-9]|[0-9]))$)+|^var\.+$`, title: 'IPv4 CIDR block' }, configs: [] @@ -21,7 +21,7 @@ export namespace OcdCommonConfigs { id: 'cidr_blocks', properties: { placeholder: '0.0.0.0/0,0.0.0.0/0', - pattern: "^((([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])(\/(3[0-2]|[1-2][0-9]|[0-9]))(,\s?|$))+|^(var\.+(,\s?|$))", + pattern: String.raw`^((([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])(\/(3[0-2]|[1-2][0-9]|[0-9]))(,\s?|$))+|^(var\.+(,\s?|$))`, title: 'Comma separated IPv4 CIDR blocks' }, configs: [] @@ -30,7 +30,7 @@ export namespace OcdCommonConfigs { id: 'ip_address', properties: { placeholder: '0.0.0.0', - pattern: "^((([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$)+|^var\.+$", + pattern: String.raw`^((([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$)+|^var\.+$`, title: 'IPv4 Address' }, configs: [] @@ -39,7 +39,7 @@ export namespace OcdCommonConfigs { id: 'ipv6cidr_block', properties: { placeholder: '0000:0000:0000:00::/00', - pattern: "^((((?:[0-9A-Fa-f]{1,4}))((?::[0-9A-Fa-f]{1,4}))*::((?:[0-9A-Fa-f]{1,4}))((?::[0-9A-Fa-f]{1,4}))*|((?:[0-9A-Fa-f]{1,4}))((?::[0-9A-Fa-f]{1,4})){7})(,\s?|$))+|^(var\.+(,\s?|$))", + pattern: String.raw`^((((?:[0-9A-Fa-f]{1,4}))((?::[0-9A-Fa-f]{1,4}))*::((?:[0-9A-Fa-f]{1,4}))((?::[0-9A-Fa-f]{1,4}))*|((?:[0-9A-Fa-f]{1,4}))((?::[0-9A-Fa-f]{1,4})){7})(,\s?|$))+|^(var\.+(,\s?|$))`, title: 'IPv6 CIDR block' }, configs: [] @@ -48,7 +48,7 @@ export namespace OcdCommonConfigs { id: 'ipv6cidr_blocks', properties: { placeholder: '0000:0000:0000:00::/00,0000:0000:0000:00::/00', - pattern: "^((((?:[0-9A-Fa-f]{1,4}))((?::[0-9A-Fa-f]{1,4}))*::((?:[0-9A-Fa-f]{1,4}))((?::[0-9A-Fa-f]{1,4}))*|((?:[0-9A-Fa-f]{1,4}))((?::[0-9A-Fa-f]{1,4})){7})(,\s?|$))+|^(var\.+(,\s?|$))", + pattern: String.raw`^((((?:[0-9A-Fa-f]{1,4}))((?::[0-9A-Fa-f]{1,4}))*::((?:[0-9A-Fa-f]{1,4}))((?::[0-9A-Fa-f]{1,4}))*|((?:[0-9A-Fa-f]{1,4}))((?::[0-9A-Fa-f]{1,4})){7})(,\s?|$))+|^(var\.+(,\s?|$))`, title: 'Comma separated IPv6 CIDR blocks' }, configs: [] @@ -57,7 +57,7 @@ export namespace OcdCommonConfigs { id: 'dns_label', properties: { maxLength: 15, - pattern: '^[a-zA-Z][a-zA-Z0-9]{0,15}$|^var\.+$', + pattern: String.raw`^[a-zA-Z][a-zA-Z0-9]{0,15}$|^var\.+$`, title: 'Only letters and numbers, starting with a letter. 15 characters max, or a variable starting "var."' }, configs: [] @@ -66,7 +66,7 @@ export namespace OcdCommonConfigs { id: 'hostname_label', properties: { maxLength: 64, - pattern: '^[a-zA-Z][a-zA-Z0-9]{0,64}$|^var\.+$', + pattern: String.raw`^[a-zA-Z][a-zA-Z0-9]{0,64}$|^var\.+$`, title: 'Hostname can only be letters and numbers, starting with a letter. 64 characters max.' }, configs: [] diff --git a/ocd/packages/desktop/src/components/properties/OcdPropertyTypes.tsx b/ocd/packages/desktop/src/components/properties/OcdPropertyTypes.tsx index d33d66980..5299b589c 100644 --- a/ocd/packages/desktop/src/components/properties/OcdPropertyTypes.tsx +++ b/ocd/packages/desktop/src/components/properties/OcdPropertyTypes.tsx @@ -128,7 +128,7 @@ export const isPropertyDisplayConditionTrue = (conditional: boolean, condition: export const OcdDisplayNameProperty = ({ ocdDocument, setOcdDocument, resource, config, attribute, rootResource }: ResourceProperty): JSX.Element => { const id = useId() - const {activeFile, setActiveFile} = useContext(ActiveFileContext) + const {activeFile} = useContext(ActiveFileContext) const [value, setValue] = useState(resource[attribute.key]) const properties = config && config.properties ? config.properties : {} const onChange = (e: React.ChangeEvent) => { @@ -140,7 +140,7 @@ export const OcdDisplayNameProperty = ({ ocdDocument, setOcdDocument, resource, e.target.reportValidity() resource[attribute.key] = e.target.value setOcdDocument(OcdDocument.clone(ocdDocument)) - if(!activeFile.modified) setActiveFile({...activeFile, modified: true}) + if (!activeFile.modified) activeFile.modified = true } const className = isPropertyDisplayConditionTrue(attribute.conditional, attribute.condition, resource, rootResource) ? `ocd-property-row ocd-simple-property-row` : `collapsed hidden` console.debug(`>>>> OcdPropertyTypes: OcdDisplayNameProperty: ${attribute.id} Render(${value})`) @@ -154,7 +154,7 @@ export const OcdDisplayNameProperty = ({ ocdDocument, setOcdDocument, resource, export const OcdTextProperty = ({ ocdDocument, setOcdDocument, resource, config, attribute, rootResource }: ResourceProperty): JSX.Element => { const id = useId() - const {activeFile, setActiveFile} = useContext(ActiveFileContext) + const {activeFile} = useContext(ActiveFileContext) const [value, setValue]= useState(resource[attribute.key]) const properties = config && config.properties ? config.properties : {} const onChange = (e: React.ChangeEvent) => { @@ -166,7 +166,7 @@ export const OcdTextProperty = ({ ocdDocument, setOcdDocument, resource, config, e.target.reportValidity() resource[attribute.key] = e.target.value // setOcdDocument(OcdDocument.clone(ocdDocument)) - if(!activeFile.modified) setActiveFile({...activeFile, modified: true}) + if (!activeFile.modified) activeFile.modified = true } const className = isPropertyDisplayConditionTrue(attribute.conditional, attribute.condition, resource, rootResource) ? `ocd-property-row ocd-simple-property-row` : `collapsed hidden` console.debug(`>>>> OcdPropertyTypes: OcdTextProperty: ${attribute.id} Render(${value})`) @@ -180,7 +180,7 @@ export const OcdTextProperty = ({ ocdDocument, setOcdDocument, resource, config, export const OcdNumberProperty = ({ ocdDocument, setOcdDocument, resource, config, attribute, rootResource }: ResourceProperty): JSX.Element => { const id = useId() - const {activeFile, setActiveFile} = useContext(ActiveFileContext) + const {activeFile} = useContext(ActiveFileContext) const [value, setValue]= useState(resource[attribute.key]) const properties = config && config.properties ? config.properties : {} const onChange = (e: React.ChangeEvent) => { @@ -192,7 +192,7 @@ export const OcdNumberProperty = ({ ocdDocument, setOcdDocument, resource, confi e.target.reportValidity() resource[attribute.key] = e.target.value // setOcdDocument(OcdDocument.clone(ocdDocument)) - if(!activeFile.modified) setActiveFile({...activeFile, modified: true}) + if (!activeFile.modified) activeFile.modified = true } const className = isPropertyDisplayConditionTrue(attribute.conditional, attribute.condition, resource, rootResource) ? `ocd-property-row ocd-simple-property-row` : `collapsed hidden` console.debug(`>>>> OcdPropertyTypes: OcdNumberProperty: ${attribute.id} Render(${value})`) @@ -206,7 +206,7 @@ export const OcdNumberProperty = ({ ocdDocument, setOcdDocument, resource, confi export const OcdBooleanProperty = ({ ocdDocument, setOcdDocument, resource, config, attribute, rootResource }: ResourceProperty): JSX.Element => { const id = useId() - const {activeFile, setActiveFile} = useContext(ActiveFileContext) + const {activeFile} = useContext(ActiveFileContext) const [value, setValue]= useState(resource[attribute.key]) const properties = config && config.properties ? config.properties : {} const onChange = (e: React.ChangeEvent) => { @@ -214,7 +214,7 @@ export const OcdBooleanProperty = ({ ocdDocument, setOcdDocument, resource, conf setValue(e.target.checked) resource[attribute.key] = e.target.checked // setOcdDocument(OcdDocument.clone(ocdDocument)) - if(!activeFile.modified) setActiveFile({...activeFile, modified: true}) + if (!activeFile.modified) activeFile.modified = true } const className = isPropertyDisplayConditionTrue(attribute.conditional, attribute.condition, resource, rootResource) ? `ocd-property-row ocd-simple-property-row` : `collapsed hidden` console.debug(`>>>> OcdPropertyTypes: OcdBooleanProperty: ${attribute.id} Render(${value})`) @@ -228,7 +228,7 @@ export const OcdBooleanProperty = ({ ocdDocument, setOcdDocument, resource, conf export const OcdCodeProperty = ({ ocdDocument, setOcdDocument, resource, config, attribute, rootResource }: ResourceProperty): JSX.Element => { const id = useId() - const {activeFile, setActiveFile} = useContext(ActiveFileContext) + const {activeFile} = useContext(ActiveFileContext) const [value, setValue]= useState(resource[attribute.key]) const properties = config && config.properties ? config.properties : {} const onChange = (e: React.ChangeEvent) => { @@ -240,7 +240,7 @@ export const OcdCodeProperty = ({ ocdDocument, setOcdDocument, resource, config, e.target.reportValidity() resource[attribute.key] = e.target.value // setOcdDocument(OcdDocument.clone(ocdDocument)) - if(!activeFile.modified) setActiveFile({...activeFile, modified: true}) + if (!activeFile.modified) activeFile.modified = true } const className = isPropertyDisplayConditionTrue(attribute.conditional, attribute.condition, resource, rootResource) ? `ocd-property-row ocd-simple-property-row` : `collapsed hidden` console.debug(`>>>> OcdPropertyTypes: OcdCodeProperty: ${attribute.id} Render(${value})`) @@ -270,7 +270,7 @@ export const OcdLookupGroupOption = ({group}: {group: ResourceElementConfigLooku export const OcdLookupProperty = ({ ocdDocument, setOcdDocument, resource, config, attribute, rootResource }: ResourceProperty): JSX.Element => { console.debug('OcdPropertyTypes: OcdLookupProperty', config, attribute, resource) const id = useId() - const {activeFile, setActiveFile} = useContext(ActiveFileContext) + const {activeFile} = useContext(ActiveFileContext) const [value, setValue]= useState(resource[attribute.key]) const properties = config && config.properties ? config.properties : {} const lookupGroups = config && config.lookupGroups ? config.lookupGroups : [] @@ -288,7 +288,7 @@ export const OcdLookupProperty = ({ ocdDocument, setOcdDocument, resource, confi setValue(e.target.value) // TODO: Replace with a performant Solution setOcdDocument(OcdDocument.clone(ocdDocument)) - if(!activeFile.modified) setActiveFile({...activeFile, modified: true}) + if (!activeFile.modified) activeFile.modified = true } const className = isPropertyDisplayConditionTrue(attribute.conditional, attribute.condition, resource, rootResource) ? `ocd-property-row ocd-simple-property-row` : `collapsed hidden` console.debug(`>>>> OcdPropertyTypes: OcdLookupProperty: ${attribute.id} Render(${value})`) @@ -311,7 +311,7 @@ export const OcdLookupProperty = ({ ocdDocument, setOcdDocument, resource, confi } export const OcdLookupListProperty = ({ ocdDocument, setOcdDocument, resource, config, attribute, rootResource }: ResourceProperty): JSX.Element => { - const {activeFile, setActiveFile} = useContext(ActiveFileContext) + const {activeFile} = useContext(ActiveFileContext) const [value, setValue]= useState(resource[attribute.key]) const properties = config && config.properties ? config.properties : {} const resourceType = OcdUtils.toResourceType(attribute.lookupResource) @@ -326,7 +326,7 @@ export const OcdLookupListProperty = ({ ocdDocument, setOcdDocument, resource, c else resource[attribute.key] = resource[attribute.key].filter((s: string) => s !== id) // TODO: Replace with a performant Solution setOcdDocument(OcdDocument.clone(ocdDocument)) - if(!activeFile.modified) setActiveFile({...activeFile, modified: true}) + if (!activeFile.modified) activeFile.modified = true } const className = isPropertyDisplayConditionTrue(attribute.conditional, attribute.condition, resource, rootResource) ? `ocd-property-row ocd-simple-property-row` : `collapsed hidden` console.debug(`>>>> OcdPropertyTypes: OcdLookupListProperty: ${attribute.id} Render(${value})`) @@ -346,7 +346,7 @@ export const OcdLookupListProperty = ({ ocdDocument, setOcdDocument, resource, c export const OcdStaticLookupProperty = ({ ocdDocument, setOcdDocument, resource, config, attribute, rootResource }: ResourceProperty): JSX.Element => { const id = useId() - const {activeFile, setActiveFile} = useContext(ActiveFileContext) + const {activeFile} = useContext(ActiveFileContext) const [value, setValue] = useState(resource[attribute.key]) const properties = config?.properties ? config.properties : {} const configOptions = config?.options ? config.options : [] @@ -360,7 +360,7 @@ export const OcdStaticLookupProperty = ({ ocdDocument, setOcdDocument, resource, setValue(e.target.value) // TODO: Replace with a performant Solution setOcdDocument(OcdDocument.clone(ocdDocument)) - if(!activeFile.modified) setActiveFile({...activeFile, modified: true}) + if (!activeFile.modified) activeFile.modified = true } useEffect(() => { if (!resource[attribute.key] || resource[attribute.key] === '') { @@ -368,7 +368,7 @@ export const OcdStaticLookupProperty = ({ ocdDocument, setOcdDocument, resource, resource[attribute.key] = resources[0].id // TODO: Replace with a performant Solution // setOcdDocument(OcdDocument.clone(ocdDocument)) - if(!activeFile.modified) setActiveFile({...activeFile, modified: true}) + if (!activeFile.modified) activeFile.modified = true } } }, []) @@ -389,8 +389,8 @@ export const OcdStaticLookupProperty = ({ ocdDocument, setOcdDocument, resource, export const OcdCacheLookupProperty = ({ ocdDocument, setOcdDocument, resource, config, attribute, rootResource }: ResourceProperty): JSX.Element => { console.debug('OcdPropertyTypes: OcdCacheLookupProperty', config, attribute, resource) - const {activeFile, setActiveFile} = useContext(ActiveFileContext) - const {ocdCache, setOcdCache} = useContext(CacheContext) + const {activeFile} = useContext(ActiveFileContext) + const {ocdCache} = useContext(CacheContext) const [value, setValue]= useState(resource[attribute.key]) const properties = config && config.properties ? config.properties : {} // const id = `${rootResource.id.replace(/\W+/g, "")}_${attribute.id.replace(/\W+/g, "")}` @@ -414,7 +414,7 @@ export const OcdCacheLookupProperty = ({ ocdDocument, setOcdDocument, resource, setValue(e.target.value) // TODO: Replace with a performant Solution setOcdDocument(OcdDocument.clone(ocdDocument)) - if(!activeFile.modified) setActiveFile({...activeFile, modified: true}) + if (!activeFile.modified) activeFile.modified = true } const className = isPropertyDisplayConditionTrue(attribute.conditional, attribute.condition, resource, rootResource) ? `ocd-property-row ocd-simple-property-row` : `collapsed hidden` console.debug('OcdPropertyTypes: OcdCacheLookupProperty', config, attribute, resource, resources) @@ -437,7 +437,7 @@ export const OcdCacheLookupProperty = ({ ocdDocument, setOcdDocument, resource, export const OcdStringListProperty = ({ ocdDocument, setOcdDocument, resource, config, attribute, rootResource }: ResourceProperty): JSX.Element => { const id = useId() - const {activeFile, setActiveFile} = useContext(ActiveFileContext) + const {activeFile} = useContext(ActiveFileContext) const [value, setValue]= useState(resource[attribute.key] ? resource[attribute.key].join(',') : '') const properties = config && config.properties ? config.properties : {} const onChange = (e: React.ChangeEvent) => { @@ -449,7 +449,7 @@ export const OcdStringListProperty = ({ ocdDocument, setOcdDocument, resource, c e.target.reportValidity() resource[attribute.key] = e.target.value.split(',').filter((v) => v !== '') // setOcdDocument(OcdDocument.clone(ocdDocument)) - if(!activeFile.modified) setActiveFile({...activeFile, modified: true}) + if (!activeFile.modified) activeFile.modified = true } const className = isPropertyDisplayConditionTrue(attribute.conditional, attribute.condition, resource, rootResource) ? `ocd-property-row ocd-simple-property-row` : `collapsed hidden` console.debug(`>>>> OcdPropertyTypes: OcdStringListProperty: ${attribute.id} Render(${value})`) @@ -463,7 +463,7 @@ export const OcdStringListProperty = ({ ocdDocument, setOcdDocument, resource, c export const OcdNumberListProperty = ({ ocdDocument, setOcdDocument, resource, config, attribute, rootResource }: ResourceProperty): JSX.Element => { const id = useId() - const {activeFile, setActiveFile} = useContext(ActiveFileContext) + const {activeFile} = useContext(ActiveFileContext) const [value, setValue]= useState(resource[attribute.key].join(',')) const properties = config && config.properties ? config.properties : {} const onChange = (e: React.ChangeEvent) => { @@ -475,7 +475,7 @@ export const OcdNumberListProperty = ({ ocdDocument, setOcdDocument, resource, c e.target.reportValidity() resource[attribute.key] = e.target.value.split(',') // setOcdDocument(OcdDocument.clone(ocdDocument)) - if(!activeFile.modified) setActiveFile({...activeFile, modified: true}) + if (!activeFile.modified) activeFile.modified = true } const className = isPropertyDisplayConditionTrue(attribute.conditional, attribute.condition, resource, rootResource) ? `ocd-property-row ocd-simple-property-row` : `collapsed hidden` console.debug(`>>>> OcdPropertyTypes: OcdNumberListProperty: ${attribute.id} Render(${value})`) @@ -488,7 +488,7 @@ export const OcdNumberListProperty = ({ ocdDocument, setOcdDocument, resource, c } export const OcdListProperty = ({ ocdDocument, setOcdDocument, resource, config, attribute, rootResource }: ResourceProperty): JSX.Element => { - const {activeFile, setActiveFile} = useContext(ActiveFileContext) + const {activeFile} = useContext(ActiveFileContext) const [value, setValue]= useState(resource[attribute.key]) const className = isPropertyDisplayConditionTrue(attribute.conditional, attribute.condition, resource, rootResource) ? `ocd-property-row ocd-simple-property-row` : `collapsed hidden` // const id = `${rootResource.id.replace(/\W+/g, "")}_${attribute.id.replace(/\W+/g, "")}` @@ -502,7 +502,7 @@ export const OcdListProperty = ({ ocdDocument, setOcdDocument, resource, config, } export const OcdSetProperty = ({ ocdDocument, setOcdDocument, resource, config, attribute, rootResource }: ResourceProperty): JSX.Element => { - const {activeFile, setActiveFile} = useContext(ActiveFileContext) + const {activeFile} = useContext(ActiveFileContext) const [value, setValue]= useState(resource[attribute.key]) const className = isPropertyDisplayConditionTrue(attribute.conditional, attribute.condition, resource, rootResource) ? `ocd-property-row ocd-simple-property-row` : `collapsed hidden` // const id = `${rootResource.id.replace(/\W+/g, "")}_${attribute.id.replace(/\W+/g, "")}` @@ -516,7 +516,7 @@ export const OcdSetProperty = ({ ocdDocument, setOcdDocument, resource, config, } export const OcdSetLookupProperty = ({ ocdDocument, setOcdDocument, resource, config, attribute, rootResource }: ResourceProperty): JSX.Element => { - const {activeFile, setActiveFile} = useContext(ActiveFileContext) + const {activeFile} = useContext(ActiveFileContext) const [value, setValue]= useState(resource[attribute.key]) const properties = config && config.properties ? config.properties : {} const resourceType = OcdUtils.toResourceType(attribute.lookupResource) @@ -529,7 +529,7 @@ export const OcdSetLookupProperty = ({ ocdDocument, setOcdDocument, resource, co if (checked) resource[attribute.key].push(securityListId) else resource[attribute.key] = resource[attribute.key].filter((s: string) => s !== securityListId) // setOcdDocument(OcdDocument.clone(ocdDocument)) - if(!activeFile.modified) setActiveFile({...activeFile, modified: true}) + if (!activeFile.modified) activeFile.modified = true } const className = isPropertyDisplayConditionTrue(attribute.conditional, attribute.condition, resource, rootResource) ? `ocd-property-row ocd-simple-property-row` : `collapsed hidden` console.debug(`>>>> OcdPropertyTypes: OcdSetLookupProperty: ${attribute.id} Render(${value})`) @@ -548,7 +548,7 @@ export const OcdSetLookupProperty = ({ ocdDocument, setOcdDocument, resource, co } export const OcdMapProperty = ({ ocdDocument, setOcdDocument, resource, config, attribute, rootResource }: ResourceProperty): JSX.Element => { - const {activeFile, setActiveFile} = useContext(ActiveFileContext) + const {activeFile} = useContext(ActiveFileContext) const [value, setValue]= useState(resource[attribute.key]) const className = isPropertyDisplayConditionTrue(attribute.conditional, attribute.condition, resource, rootResource) ? `ocd-property-row ocd-simple-property-row` : `collapsed hidden` console.debug(`>>>> OcdPropertyTypes: OcdMapProperty: ${attribute.id} Render(${value})`) diff --git a/ocd/packages/desktop/src/components/properties/provider/azure/AzureCommonConfigs.ts b/ocd/packages/desktop/src/components/properties/provider/azure/AzureCommonConfigs.ts index 086d72f0d..1ce4d78cb 100644 --- a/ocd/packages/desktop/src/components/properties/provider/azure/AzureCommonConfigs.ts +++ b/ocd/packages/desktop/src/components/properties/provider/azure/AzureCommonConfigs.ts @@ -13,7 +13,7 @@ export namespace AzureCommonConfigs { { id: 'admin_password', properties: { - pattern: '^var\.+$', + pattern: String.raw`^var\.+$`, title: 'Password fields only support Variables.' }, configs: [] diff --git a/ocd/packages/desktop/src/components/properties/provider/azure/resources.ts b/ocd/packages/desktop/src/components/properties/provider/azure/resources.ts index c94d297c1..eb64e3936 100644 --- a/ocd/packages/desktop/src/components/properties/provider/azure/resources.ts +++ b/ocd/packages/desktop/src/components/properties/provider/azure/resources.ts @@ -15,9 +15,9 @@ export { AzureDnsZone } from './resources/AzureDnsZone' export { AzureKubernetesCluster } from './resources/AzureKubernetesCluster' export { AzureLoadBalancer } from './resources/AzureLoadBalancer' export { AzureMssqlServer } from './resources/AzureMssqlServer' -export { AzureOracledatabaseAutonomousDatabaseRegular } from './resources/AzureOracledatabaseAutonomousDatabaseRegular' -export { AzureOracledatabaseCloudVmCluster } from './resources/AzureOracledatabaseCloudVmCluster' -export { AzureOracledatabaseExadataInfrastructure } from './resources/AzureOracledatabaseExadataInfrastructure' +export { AzureOracleAutonomousDatabase } from './resources/AzureOracleAutonomousDatabase' +export { AzureOracleCloudVmCluster } from './resources/AzureOracleCloudVmCluster' +export { AzureOracleExadataInfrastructure } from './resources/AzureOracleExadataInfrastructure' export { AzureResourceGroup } from './resources/AzureResourceGroup' export { AzureSubnet } from './resources/AzureSubnet' export { AzureVirtualMachine } from './resources/AzureVirtualMachine' @@ -28,9 +28,9 @@ export { AzureDnsZoneConfigs } from './resources/configs/AzureDnsZone' export { AzureKubernetesClusterConfigs } from './resources/configs/AzureKubernetesCluster' export { AzureLoadBalancerConfigs } from './resources/configs/AzureLoadBalancer' export { AzureMssqlServerConfigs } from './resources/configs/AzureMssqlServer' -export { AzureOracledatabaseAutonomousDatabaseRegularConfigs } from './resources/configs/AzureOracledatabaseAutonomousDatabaseRegular' -export { AzureOracledatabaseCloudVmClusterConfigs } from './resources/configs/AzureOracledatabaseCloudVmCluster' -export { AzureOracledatabaseExadataInfrastructureConfigs } from './resources/configs/AzureOracledatabaseExadataInfrastructure' +export { AzureOracleAutonomousDatabaseConfigs } from './resources/configs/AzureOracleAutonomousDatabase' +export { AzureOracleCloudVmClusterConfigs } from './resources/configs/AzureOracleCloudVmCluster' +export { AzureOracleExadataInfrastructureConfigs } from './resources/configs/AzureOracleExadataInfrastructure' export { AzureResourceGroupConfigs } from './resources/configs/AzureResourceGroup' export { AzureSubnetConfigs } from './resources/configs/AzureSubnet' export { AzureVirtualMachineConfigs } from './resources/configs/AzureVirtualMachine' @@ -41,9 +41,9 @@ export { AzureDnsZoneProxy } from './resources/proxies/AzureDnsZone' export { AzureKubernetesClusterProxy } from './resources/proxies/AzureKubernetesCluster' export { AzureLoadBalancerProxy } from './resources/proxies/AzureLoadBalancer' export { AzureMssqlServerProxy } from './resources/proxies/AzureMssqlServer' -export { AzureOracledatabaseAutonomousDatabaseRegularProxy } from './resources/proxies/AzureOracledatabaseAutonomousDatabaseRegular' -export { AzureOracledatabaseCloudVmClusterProxy } from './resources/proxies/AzureOracledatabaseCloudVmCluster' -export { AzureOracledatabaseExadataInfrastructureProxy } from './resources/proxies/AzureOracledatabaseExadataInfrastructure' +export { AzureOracleAutonomousDatabaseProxy } from './resources/proxies/AzureOracleAutonomousDatabase' +export { AzureOracleCloudVmClusterProxy } from './resources/proxies/AzureOracleCloudVmCluster' +export { AzureOracleExadataInfrastructureProxy } from './resources/proxies/AzureOracleExadataInfrastructure' export { AzureResourceGroupProxy } from './resources/proxies/AzureResourceGroup' export { AzureSubnetProxy } from './resources/proxies/AzureSubnet' export { AzureVirtualMachineProxy } from './resources/proxies/AzureVirtualMachine' diff --git a/ocd/packages/desktop/src/components/properties/provider/azure/resources/AzureOracleAutonomousDatabase.tsx b/ocd/packages/desktop/src/components/properties/provider/azure/resources/AzureOracleAutonomousDatabase.tsx new file mode 100644 index 000000000..d250d13a8 --- /dev/null +++ b/ocd/packages/desktop/src/components/properties/provider/azure/resources/AzureOracleAutonomousDatabase.tsx @@ -0,0 +1,16 @@ +/* +** Copyright (c) 2020, 2024, Oracle and/or its affiliates. +** Licensed under the Universal Permissive License v 1.0 as shown at https://oss.oracle.com/licenses/upl. +*/ + +import OcdDocument from '../../../../OcdDocument' +import { ResourceElementConfig, ResourceProperties } from '../../../OcdPropertyTypes' +import * as AutoGenerated from './generated/AzureOracleAutonomousDatabase' +import { AzureOracleAutonomousDatabaseConfigs } from './configs/AzureOracleAutonomousDatabase' + +export const AzureOracleAutonomousDatabase = ({ ocdDocument, setOcdDocument, resource }: ResourceProperties): JSX.Element => { + const configs: ResourceElementConfig[] = AzureOracleAutonomousDatabaseConfigs.configs() + return ( + setOcdDocument(ocdDocument)} resource={resource} configs={configs} key={`${resource.id}.AutoGenerated.AzureOracleAutonomousDatabase`} /> + ) +} diff --git a/ocd/packages/desktop/src/components/properties/provider/azure/resources/AzureOracleCloudVmCluster.tsx b/ocd/packages/desktop/src/components/properties/provider/azure/resources/AzureOracleCloudVmCluster.tsx new file mode 100644 index 000000000..4bb04e4f8 --- /dev/null +++ b/ocd/packages/desktop/src/components/properties/provider/azure/resources/AzureOracleCloudVmCluster.tsx @@ -0,0 +1,16 @@ +/* +** Copyright (c) 2020, 2024, Oracle and/or its affiliates. +** Licensed under the Universal Permissive License v 1.0 as shown at https://oss.oracle.com/licenses/upl. +*/ + +import OcdDocument from '../../../../OcdDocument' +import { ResourceElementConfig, ResourceProperties } from '../../../OcdPropertyTypes' +import * as AutoGenerated from './generated/AzureOracleCloudVmCluster' +import { AzureOracleCloudVmClusterConfigs } from './configs/AzureOracleCloudVmCluster' + +export const AzureOracleCloudVmCluster = ({ ocdDocument, setOcdDocument, resource }: ResourceProperties): JSX.Element => { + const configs: ResourceElementConfig[] = AzureOracleCloudVmClusterConfigs.configs() + return ( + setOcdDocument(ocdDocument)} resource={resource} configs={configs} key={`${resource.id}.AutoGenerated.AzureOracleCloudVmCluster`} /> + ) +} diff --git a/ocd/packages/desktop/src/components/properties/provider/azure/resources/AzureOracleExadataInfrastructure.tsx b/ocd/packages/desktop/src/components/properties/provider/azure/resources/AzureOracleExadataInfrastructure.tsx new file mode 100644 index 000000000..42e9733db --- /dev/null +++ b/ocd/packages/desktop/src/components/properties/provider/azure/resources/AzureOracleExadataInfrastructure.tsx @@ -0,0 +1,16 @@ +/* +** Copyright (c) 2020, 2024, Oracle and/or its affiliates. +** Licensed under the Universal Permissive License v 1.0 as shown at https://oss.oracle.com/licenses/upl. +*/ + +import OcdDocument from '../../../../OcdDocument' +import { ResourceElementConfig, ResourceProperties } from '../../../OcdPropertyTypes' +import * as AutoGenerated from './generated/AzureOracleExadataInfrastructure' +import { AzureOracleExadataInfrastructureConfigs } from './configs/AzureOracleExadataInfrastructure' + +export const AzureOracleExadataInfrastructure = ({ ocdDocument, setOcdDocument, resource }: ResourceProperties): JSX.Element => { + const configs: ResourceElementConfig[] = AzureOracleExadataInfrastructureConfigs.configs() + return ( + setOcdDocument(ocdDocument)} resource={resource} configs={configs} key={`${resource.id}.AutoGenerated.AzureOracleExadataInfrastructure`} /> + ) +} diff --git a/ocd/packages/desktop/src/components/properties/provider/azure/resources/AzureOracledatabaseAutonomousDatabaseRegular.tsx b/ocd/packages/desktop/src/components/properties/provider/azure/resources/AzureOracledatabaseAutonomousDatabaseRegular.tsx deleted file mode 100644 index 0950c0908..000000000 --- a/ocd/packages/desktop/src/components/properties/provider/azure/resources/AzureOracledatabaseAutonomousDatabaseRegular.tsx +++ /dev/null @@ -1,16 +0,0 @@ -/* -** Copyright (c) 2020, 2024, Oracle and/or its affiliates. -** Licensed under the Universal Permissive License v 1.0 as shown at https://oss.oracle.com/licenses/upl. -*/ - -import OcdDocument from '../../../../OcdDocument' -import { ResourceElementConfig, ResourceProperties } from '../../../OcdPropertyTypes' -import * as AutoGenerated from './generated/AzureOracledatabaseAutonomousDatabaseRegular' -import { AzureOracledatabaseAutonomousDatabaseRegularConfigs } from './configs/AzureOracledatabaseAutonomousDatabaseRegular' - -export const AzureOracledatabaseAutonomousDatabaseRegular = ({ ocdDocument, setOcdDocument, resource }: ResourceProperties): JSX.Element => { - const configs: ResourceElementConfig[] = AzureOracledatabaseAutonomousDatabaseRegularConfigs.configs() - return ( - setOcdDocument(ocdDocument)} resource={resource} configs={configs} key={`${resource.id}.AutoGenerated.AzureOracledatabaseAutonomousDatabaseRegular`} /> - ) -} diff --git a/ocd/packages/desktop/src/components/properties/provider/azure/resources/AzureOracledatabaseCloudVmCluster.tsx b/ocd/packages/desktop/src/components/properties/provider/azure/resources/AzureOracledatabaseCloudVmCluster.tsx deleted file mode 100644 index f8b582fb2..000000000 --- a/ocd/packages/desktop/src/components/properties/provider/azure/resources/AzureOracledatabaseCloudVmCluster.tsx +++ /dev/null @@ -1,16 +0,0 @@ -/* -** Copyright (c) 2020, 2024, Oracle and/or its affiliates. -** Licensed under the Universal Permissive License v 1.0 as shown at https://oss.oracle.com/licenses/upl. -*/ - -import OcdDocument from '../../../../OcdDocument' -import { ResourceElementConfig, ResourceProperties } from '../../../OcdPropertyTypes' -import * as AutoGenerated from './generated/AzureOracledatabaseCloudVmCluster' -import { AzureOracledatabaseCloudVmClusterConfigs } from './configs/AzureOracledatabaseCloudVmCluster' - -export const AzureOracledatabaseCloudVmCluster = ({ ocdDocument, setOcdDocument, resource }: ResourceProperties): JSX.Element => { - const configs: ResourceElementConfig[] = AzureOracledatabaseCloudVmClusterConfigs.configs() - return ( - setOcdDocument(ocdDocument)} resource={resource} configs={configs} key={`${resource.id}.AutoGenerated.AzureOracledatabaseCloudVmCluster`} /> - ) -} diff --git a/ocd/packages/desktop/src/components/properties/provider/azure/resources/AzureOracledatabaseExadataInfrastructure.tsx b/ocd/packages/desktop/src/components/properties/provider/azure/resources/AzureOracledatabaseExadataInfrastructure.tsx deleted file mode 100644 index 0dae743e8..000000000 --- a/ocd/packages/desktop/src/components/properties/provider/azure/resources/AzureOracledatabaseExadataInfrastructure.tsx +++ /dev/null @@ -1,16 +0,0 @@ -/* -** Copyright (c) 2020, 2024, Oracle and/or its affiliates. -** Licensed under the Universal Permissive License v 1.0 as shown at https://oss.oracle.com/licenses/upl. -*/ - -import OcdDocument from '../../../../OcdDocument' -import { ResourceElementConfig, ResourceProperties } from '../../../OcdPropertyTypes' -import * as AutoGenerated from './generated/AzureOracledatabaseExadataInfrastructure' -import { AzureOracledatabaseExadataInfrastructureConfigs } from './configs/AzureOracledatabaseExadataInfrastructure' - -export const AzureOracledatabaseExadataInfrastructure = ({ ocdDocument, setOcdDocument, resource }: ResourceProperties): JSX.Element => { - const configs: ResourceElementConfig[] = AzureOracledatabaseExadataInfrastructureConfigs.configs() - return ( - setOcdDocument(ocdDocument)} resource={resource} configs={configs} key={`${resource.id}.AutoGenerated.AzureOracledatabaseExadataInfrastructure`} /> - ) -} diff --git a/ocd/packages/desktop/src/components/properties/provider/azure/resources/configs/AzureOracledatabaseCloudVmCluster.ts b/ocd/packages/desktop/src/components/properties/provider/azure/resources/configs/AzureOracleAutonomousDatabase.ts similarity index 87% rename from ocd/packages/desktop/src/components/properties/provider/azure/resources/configs/AzureOracledatabaseCloudVmCluster.ts rename to ocd/packages/desktop/src/components/properties/provider/azure/resources/configs/AzureOracleAutonomousDatabase.ts index 94396a8fb..321fe3a83 100644 --- a/ocd/packages/desktop/src/components/properties/provider/azure/resources/configs/AzureOracledatabaseCloudVmCluster.ts +++ b/ocd/packages/desktop/src/components/properties/provider/azure/resources/configs/AzureOracleAutonomousDatabase.ts @@ -6,6 +6,6 @@ import { ResourceElementConfig } from "../../../../OcdPropertyTypes" import { AzureCommonConfigs } from "../../AzureCommonConfigs" -export namespace AzureOracledatabaseCloudVmClusterConfigs { +export namespace AzureOracleAutonomousDatabaseConfigs { export function configs(): ResourceElementConfig[] {return [...AzureCommonConfigs.configs()]} } diff --git a/ocd/packages/desktop/src/components/properties/provider/azure/resources/configs/AzureOracledatabaseExadataInfrastructure.ts b/ocd/packages/desktop/src/components/properties/provider/azure/resources/configs/AzureOracleCloudVmCluster.ts similarity index 85% rename from ocd/packages/desktop/src/components/properties/provider/azure/resources/configs/AzureOracledatabaseExadataInfrastructure.ts rename to ocd/packages/desktop/src/components/properties/provider/azure/resources/configs/AzureOracleCloudVmCluster.ts index 0dcdf6020..f97300057 100644 --- a/ocd/packages/desktop/src/components/properties/provider/azure/resources/configs/AzureOracledatabaseExadataInfrastructure.ts +++ b/ocd/packages/desktop/src/components/properties/provider/azure/resources/configs/AzureOracleCloudVmCluster.ts @@ -6,6 +6,6 @@ import { ResourceElementConfig } from "../../../../OcdPropertyTypes" import { AzureCommonConfigs } from "../../AzureCommonConfigs" -export namespace AzureOracledatabaseExadataInfrastructureConfigs { +export namespace AzureOracleCloudVmClusterConfigs { export function configs(): ResourceElementConfig[] {return [...AzureCommonConfigs.configs()]} } diff --git a/ocd/packages/desktop/src/components/properties/provider/azure/resources/configs/AzureOracledatabaseAutonomousDatabaseRegular.ts b/ocd/packages/desktop/src/components/properties/provider/azure/resources/configs/AzureOracleExadataInfrastructure.ts similarity index 85% rename from ocd/packages/desktop/src/components/properties/provider/azure/resources/configs/AzureOracledatabaseAutonomousDatabaseRegular.ts rename to ocd/packages/desktop/src/components/properties/provider/azure/resources/configs/AzureOracleExadataInfrastructure.ts index 1eab0f241..421ff6049 100644 --- a/ocd/packages/desktop/src/components/properties/provider/azure/resources/configs/AzureOracledatabaseAutonomousDatabaseRegular.ts +++ b/ocd/packages/desktop/src/components/properties/provider/azure/resources/configs/AzureOracleExadataInfrastructure.ts @@ -6,6 +6,6 @@ import { ResourceElementConfig } from "../../../../OcdPropertyTypes" import { AzureCommonConfigs } from "../../AzureCommonConfigs" -export namespace AzureOracledatabaseAutonomousDatabaseRegularConfigs { +export namespace AzureOracleExadataInfrastructureConfigs { export function configs(): ResourceElementConfig[] {return [...AzureCommonConfigs.configs()]} } diff --git a/ocd/packages/desktop/src/components/properties/provider/azure/resources/proxies/AzureOracledatabaseCloudVmCluster.ts b/ocd/packages/desktop/src/components/properties/provider/azure/resources/proxies/AzureOracleAutonomousDatabase.ts similarity index 80% rename from ocd/packages/desktop/src/components/properties/provider/azure/resources/proxies/AzureOracledatabaseCloudVmCluster.ts rename to ocd/packages/desktop/src/components/properties/provider/azure/resources/proxies/AzureOracleAutonomousDatabase.ts index 053957049..f54c34192 100644 --- a/ocd/packages/desktop/src/components/properties/provider/azure/resources/proxies/AzureOracledatabaseCloudVmCluster.ts +++ b/ocd/packages/desktop/src/components/properties/provider/azure/resources/proxies/AzureOracleAutonomousDatabase.ts @@ -7,7 +7,7 @@ import { OcdCacheData } from '../../../../../OcdCache' import { OcdDocument } from '../../../../../OcdDocument' import { AzureModelResources as Model } from '@ocd/model' -export namespace AzureOracledatabaseCloudVmClusterProxy { +export namespace AzureOracleAutonomousDatabaseProxy { export function proxyHandler(ocdDocument: OcdDocument, ocdCache: OcdCacheData) { const proxyHandler = { //@ts-ignore @@ -21,9 +21,9 @@ export namespace AzureOracledatabaseCloudVmClusterProxy { } return proxyHandler } - export function proxyResource(ocdDocument: OcdDocument, resource: Model.AzureOracledatabaseCloudVmCluster, ocdCache: OcdCacheData) { + export function proxyResource(ocdDocument: OcdDocument, resource: Model.AzureOracleAutonomousDatabase, ocdCache: OcdCacheData) { const pH = proxyHandler(ocdDocument, ocdCache) - const proxyResource = new Proxy(resource, pH) + const proxyResource = new Proxy(resource, pH) return proxyResource } } diff --git a/ocd/packages/desktop/src/components/properties/provider/azure/resources/proxies/AzureOracledatabaseExadataInfrastructure.ts b/ocd/packages/desktop/src/components/properties/provider/azure/resources/proxies/AzureOracleCloudVmCluster.ts similarity index 79% rename from ocd/packages/desktop/src/components/properties/provider/azure/resources/proxies/AzureOracledatabaseExadataInfrastructure.ts rename to ocd/packages/desktop/src/components/properties/provider/azure/resources/proxies/AzureOracleCloudVmCluster.ts index 3cd2af4a1..95072fcfb 100644 --- a/ocd/packages/desktop/src/components/properties/provider/azure/resources/proxies/AzureOracledatabaseExadataInfrastructure.ts +++ b/ocd/packages/desktop/src/components/properties/provider/azure/resources/proxies/AzureOracleCloudVmCluster.ts @@ -7,7 +7,7 @@ import { OcdCacheData } from '../../../../../OcdCache' import { OcdDocument } from '../../../../../OcdDocument' import { AzureModelResources as Model } from '@ocd/model' -export namespace AzureOracledatabaseExadataInfrastructureProxy { +export namespace AzureOracleCloudVmClusterProxy { export function proxyHandler(ocdDocument: OcdDocument, ocdCache: OcdCacheData) { const proxyHandler = { //@ts-ignore @@ -21,9 +21,9 @@ export namespace AzureOracledatabaseExadataInfrastructureProxy { } return proxyHandler } - export function proxyResource(ocdDocument: OcdDocument, resource: Model.AzureOracledatabaseExadataInfrastructure, ocdCache: OcdCacheData) { + export function proxyResource(ocdDocument: OcdDocument, resource: Model.AzureOracleCloudVmCluster, ocdCache: OcdCacheData) { const pH = proxyHandler(ocdDocument, ocdCache) - const proxyResource = new Proxy(resource, pH) + const proxyResource = new Proxy(resource, pH) return proxyResource } } diff --git a/ocd/packages/desktop/src/components/properties/provider/azure/resources/proxies/AzureOracledatabaseAutonomousDatabaseRegular.ts b/ocd/packages/desktop/src/components/properties/provider/azure/resources/proxies/AzureOracleExadataInfrastructure.ts similarity index 78% rename from ocd/packages/desktop/src/components/properties/provider/azure/resources/proxies/AzureOracledatabaseAutonomousDatabaseRegular.ts rename to ocd/packages/desktop/src/components/properties/provider/azure/resources/proxies/AzureOracleExadataInfrastructure.ts index 23bedf307..cee8e2855 100644 --- a/ocd/packages/desktop/src/components/properties/provider/azure/resources/proxies/AzureOracledatabaseAutonomousDatabaseRegular.ts +++ b/ocd/packages/desktop/src/components/properties/provider/azure/resources/proxies/AzureOracleExadataInfrastructure.ts @@ -7,7 +7,7 @@ import { OcdCacheData } from '../../../../../OcdCache' import { OcdDocument } from '../../../../../OcdDocument' import { AzureModelResources as Model } from '@ocd/model' -export namespace AzureOracledatabaseAutonomousDatabaseRegularProxy { +export namespace AzureOracleExadataInfrastructureProxy { export function proxyHandler(ocdDocument: OcdDocument, ocdCache: OcdCacheData) { const proxyHandler = { //@ts-ignore @@ -21,9 +21,9 @@ export namespace AzureOracledatabaseAutonomousDatabaseRegularProxy { } return proxyHandler } - export function proxyResource(ocdDocument: OcdDocument, resource: Model.AzureOracledatabaseAutonomousDatabaseRegular, ocdCache: OcdCacheData) { + export function proxyResource(ocdDocument: OcdDocument, resource: Model.AzureOracleExadataInfrastructure, ocdCache: OcdCacheData) { const pH = proxyHandler(ocdDocument, ocdCache) - const proxyResource = new Proxy(resource, pH) + const proxyResource = new Proxy(resource, pH) return proxyResource } } diff --git a/ocd/packages/desktop/src/components/properties/provider/google/GoogleCommonConfigs.ts b/ocd/packages/desktop/src/components/properties/provider/google/GoogleCommonConfigs.ts index 5384f865d..57014c34f 100644 --- a/ocd/packages/desktop/src/components/properties/provider/google/GoogleCommonConfigs.ts +++ b/ocd/packages/desktop/src/components/properties/provider/google/GoogleCommonConfigs.ts @@ -13,7 +13,7 @@ export namespace GoogleCommonConfigs { { id: 'admin_password', properties: { - pattern: '^var\.+$', + pattern: String.raw`^var\.+$`, title: 'Password fields only support Variables.' }, configs: [] diff --git a/ocd/packages/desktop/src/components/properties/provider/google/resources.ts b/ocd/packages/desktop/src/components/properties/provider/google/resources.ts index ed0dbb92a..2fc2c8a13 100644 --- a/ocd/packages/desktop/src/components/properties/provider/google/resources.ts +++ b/ocd/packages/desktop/src/components/properties/provider/google/resources.ts @@ -11,17 +11,17 @@ */ export { GoogleComputeNetwork } from './resources/GoogleComputeNetwork' -export { GoogleOracledatabaseAutonomousDatabaseRegular } from './resources/GoogleOracledatabaseAutonomousDatabaseRegular' -export { GoogleOracledatabaseCloudVmCluster } from './resources/GoogleOracledatabaseCloudVmCluster' -export { GoogleOracledatabaseExadataInfrastructure } from './resources/GoogleOracledatabaseExadataInfrastructure' +export { GoogleOracleDatabaseAutonomousDatabase } from './resources/GoogleOracleDatabaseAutonomousDatabase' +export { GoogleOracleDatabaseCloudExadataInfrastructure } from './resources/GoogleOracleDatabaseCloudExadataInfrastructure' +export { GoogleOracleDatabaseCloudVmCluster } from './resources/GoogleOracleDatabaseCloudVmCluster' export { GoogleComputeNetworkConfigs } from './resources/configs/GoogleComputeNetwork' -export { GoogleOracledatabaseAutonomousDatabaseRegularConfigs } from './resources/configs/GoogleOracledatabaseAutonomousDatabaseRegular' -export { GoogleOracledatabaseCloudVmClusterConfigs } from './resources/configs/GoogleOracledatabaseCloudVmCluster' -export { GoogleOracledatabaseExadataInfrastructureConfigs } from './resources/configs/GoogleOracledatabaseExadataInfrastructure' +export { GoogleOracleDatabaseAutonomousDatabaseConfigs } from './resources/configs/GoogleOracleDatabaseAutonomousDatabase' +export { GoogleOracleDatabaseCloudExadataInfrastructureConfigs } from './resources/configs/GoogleOracleDatabaseCloudExadataInfrastructure' +export { GoogleOracleDatabaseCloudVmClusterConfigs } from './resources/configs/GoogleOracleDatabaseCloudVmCluster' export { GoogleComputeNetworkProxy } from './resources/proxies/GoogleComputeNetwork' -export { GoogleOracledatabaseAutonomousDatabaseRegularProxy } from './resources/proxies/GoogleOracledatabaseAutonomousDatabaseRegular' -export { GoogleOracledatabaseCloudVmClusterProxy } from './resources/proxies/GoogleOracledatabaseCloudVmCluster' -export { GoogleOracledatabaseExadataInfrastructureProxy } from './resources/proxies/GoogleOracledatabaseExadataInfrastructure' +export { GoogleOracleDatabaseAutonomousDatabaseProxy } from './resources/proxies/GoogleOracleDatabaseAutonomousDatabase' +export { GoogleOracleDatabaseCloudExadataInfrastructureProxy } from './resources/proxies/GoogleOracleDatabaseCloudExadataInfrastructure' +export { GoogleOracleDatabaseCloudVmClusterProxy } from './resources/proxies/GoogleOracleDatabaseCloudVmCluster' \ No newline at end of file diff --git a/ocd/packages/desktop/src/components/properties/provider/google/resources/GoogleOracleDatabaseAutonomousDatabase.tsx b/ocd/packages/desktop/src/components/properties/provider/google/resources/GoogleOracleDatabaseAutonomousDatabase.tsx new file mode 100644 index 000000000..d405ca40a --- /dev/null +++ b/ocd/packages/desktop/src/components/properties/provider/google/resources/GoogleOracleDatabaseAutonomousDatabase.tsx @@ -0,0 +1,16 @@ +/* +** Copyright (c) 2020, 2024, Oracle and/or its affiliates. +** Licensed under the Universal Permissive License v 1.0 as shown at https://oss.oracle.com/licenses/upl. +*/ + +import OcdDocument from '../../../../OcdDocument' +import { ResourceElementConfig, ResourceProperties } from '../../../OcdPropertyTypes' +import * as AutoGenerated from './generated/GoogleOracleDatabaseAutonomousDatabase' +import { GoogleOracleDatabaseAutonomousDatabaseConfigs } from './configs/GoogleOracleDatabaseAutonomousDatabase' + +export const GoogleOracleDatabaseAutonomousDatabase = ({ ocdDocument, setOcdDocument, resource }: ResourceProperties): JSX.Element => { + const configs: ResourceElementConfig[] = GoogleOracleDatabaseAutonomousDatabaseConfigs.configs() + return ( + setOcdDocument(ocdDocument)} resource={resource} configs={configs} key={`${resource.id}.AutoGenerated.GoogleOracleDatabaseAutonomousDatabase`} /> + ) +} diff --git a/ocd/packages/desktop/src/components/properties/provider/google/resources/GoogleOracleDatabaseCloudExadataInfrastructure.tsx b/ocd/packages/desktop/src/components/properties/provider/google/resources/GoogleOracleDatabaseCloudExadataInfrastructure.tsx new file mode 100644 index 000000000..e657f3735 --- /dev/null +++ b/ocd/packages/desktop/src/components/properties/provider/google/resources/GoogleOracleDatabaseCloudExadataInfrastructure.tsx @@ -0,0 +1,16 @@ +/* +** Copyright (c) 2020, 2024, Oracle and/or its affiliates. +** Licensed under the Universal Permissive License v 1.0 as shown at https://oss.oracle.com/licenses/upl. +*/ + +import OcdDocument from '../../../../OcdDocument' +import { ResourceElementConfig, ResourceProperties } from '../../../OcdPropertyTypes' +import * as AutoGenerated from './generated/GoogleOracleDatabaseCloudExadataInfrastructure' +import { GoogleOracleDatabaseCloudExadataInfrastructureConfigs } from './configs/GoogleOracleDatabaseCloudExadataInfrastructure' + +export const GoogleOracleDatabaseCloudExadataInfrastructure = ({ ocdDocument, setOcdDocument, resource }: ResourceProperties): JSX.Element => { + const configs: ResourceElementConfig[] = GoogleOracleDatabaseCloudExadataInfrastructureConfigs.configs() + return ( + setOcdDocument(ocdDocument)} resource={resource} configs={configs} key={`${resource.id}.AutoGenerated.GoogleOracleDatabaseCloudExadataInfrastructure`} /> + ) +} diff --git a/ocd/packages/desktop/src/components/properties/provider/google/resources/GoogleOracledatabaseCloudVmCluster.tsx b/ocd/packages/desktop/src/components/properties/provider/google/resources/GoogleOracleDatabaseCloudVmCluster.tsx similarity index 58% rename from ocd/packages/desktop/src/components/properties/provider/google/resources/GoogleOracledatabaseCloudVmCluster.tsx rename to ocd/packages/desktop/src/components/properties/provider/google/resources/GoogleOracleDatabaseCloudVmCluster.tsx index 46e42f80c..d218b7d30 100644 --- a/ocd/packages/desktop/src/components/properties/provider/google/resources/GoogleOracledatabaseCloudVmCluster.tsx +++ b/ocd/packages/desktop/src/components/properties/provider/google/resources/GoogleOracleDatabaseCloudVmCluster.tsx @@ -5,12 +5,12 @@ import OcdDocument from '../../../../OcdDocument' import { ResourceElementConfig, ResourceProperties } from '../../../OcdPropertyTypes' -import * as AutoGenerated from './generated/GoogleOracledatabaseCloudVmCluster' -import { GoogleOracledatabaseCloudVmClusterConfigs } from './configs/GoogleOracledatabaseCloudVmCluster' +import * as AutoGenerated from './generated/GoogleOracleDatabaseCloudVmCluster' +import { GoogleOracleDatabaseCloudVmClusterConfigs } from './configs/GoogleOracleDatabaseCloudVmCluster' -export const GoogleOracledatabaseCloudVmCluster = ({ ocdDocument, setOcdDocument, resource }: ResourceProperties): JSX.Element => { - const configs: ResourceElementConfig[] = GoogleOracledatabaseCloudVmClusterConfigs.configs() +export const GoogleOracleDatabaseCloudVmCluster = ({ ocdDocument, setOcdDocument, resource }: ResourceProperties): JSX.Element => { + const configs: ResourceElementConfig[] = GoogleOracleDatabaseCloudVmClusterConfigs.configs() return ( - setOcdDocument(ocdDocument)} resource={resource} configs={configs} key={`${resource.id}.AutoGenerated.GoogleOracledatabaseCloudVmCluster`} /> + setOcdDocument(ocdDocument)} resource={resource} configs={configs} key={`${resource.id}.AutoGenerated.GoogleOracleDatabaseCloudVmCluster`} /> ) } diff --git a/ocd/packages/desktop/src/components/properties/provider/google/resources/GoogleOracledatabaseAutonomousDatabaseRegular.tsx b/ocd/packages/desktop/src/components/properties/provider/google/resources/GoogleOracledatabaseAutonomousDatabaseRegular.tsx deleted file mode 100644 index 22973457c..000000000 --- a/ocd/packages/desktop/src/components/properties/provider/google/resources/GoogleOracledatabaseAutonomousDatabaseRegular.tsx +++ /dev/null @@ -1,16 +0,0 @@ -/* -** Copyright (c) 2020, 2024, Oracle and/or its affiliates. -** Licensed under the Universal Permissive License v 1.0 as shown at https://oss.oracle.com/licenses/upl. -*/ - -import OcdDocument from '../../../../OcdDocument' -import { ResourceElementConfig, ResourceProperties } from '../../../OcdPropertyTypes' -import * as AutoGenerated from './generated/GoogleOracledatabaseAutonomousDatabaseRegular' -import { GoogleOracledatabaseAutonomousDatabaseRegularConfigs } from './configs/GoogleOracledatabaseAutonomousDatabaseRegular' - -export const GoogleOracledatabaseAutonomousDatabaseRegular = ({ ocdDocument, setOcdDocument, resource }: ResourceProperties): JSX.Element => { - const configs: ResourceElementConfig[] = GoogleOracledatabaseAutonomousDatabaseRegularConfigs.configs() - return ( - setOcdDocument(ocdDocument)} resource={resource} configs={configs} key={`${resource.id}.AutoGenerated.GoogleOracledatabaseAutonomousDatabaseRegular`} /> - ) -} diff --git a/ocd/packages/desktop/src/components/properties/provider/google/resources/GoogleOracledatabaseExadataInfrastructure.tsx b/ocd/packages/desktop/src/components/properties/provider/google/resources/GoogleOracledatabaseExadataInfrastructure.tsx deleted file mode 100644 index a32121f57..000000000 --- a/ocd/packages/desktop/src/components/properties/provider/google/resources/GoogleOracledatabaseExadataInfrastructure.tsx +++ /dev/null @@ -1,16 +0,0 @@ -/* -** Copyright (c) 2020, 2024, Oracle and/or its affiliates. -** Licensed under the Universal Permissive License v 1.0 as shown at https://oss.oracle.com/licenses/upl. -*/ - -import OcdDocument from '../../../../OcdDocument' -import { ResourceElementConfig, ResourceProperties } from '../../../OcdPropertyTypes' -import * as AutoGenerated from './generated/GoogleOracledatabaseExadataInfrastructure' -import { GoogleOracledatabaseExadataInfrastructureConfigs } from './configs/GoogleOracledatabaseExadataInfrastructure' - -export const GoogleOracledatabaseExadataInfrastructure = ({ ocdDocument, setOcdDocument, resource }: ResourceProperties): JSX.Element => { - const configs: ResourceElementConfig[] = GoogleOracledatabaseExadataInfrastructureConfigs.configs() - return ( - setOcdDocument(ocdDocument)} resource={resource} configs={configs} key={`${resource.id}.AutoGenerated.GoogleOracledatabaseExadataInfrastructure`} /> - ) -} diff --git a/ocd/packages/desktop/src/components/properties/provider/google/resources/configs/GoogleOracledatabaseExadataInfrastructure.ts b/ocd/packages/desktop/src/components/properties/provider/google/resources/configs/GoogleOracleDatabaseAutonomousDatabase.ts similarity index 85% rename from ocd/packages/desktop/src/components/properties/provider/google/resources/configs/GoogleOracledatabaseExadataInfrastructure.ts rename to ocd/packages/desktop/src/components/properties/provider/google/resources/configs/GoogleOracleDatabaseAutonomousDatabase.ts index ac3c82479..6b01ba731 100644 --- a/ocd/packages/desktop/src/components/properties/provider/google/resources/configs/GoogleOracledatabaseExadataInfrastructure.ts +++ b/ocd/packages/desktop/src/components/properties/provider/google/resources/configs/GoogleOracleDatabaseAutonomousDatabase.ts @@ -6,6 +6,6 @@ import { ResourceElementConfig } from "../../../../OcdPropertyTypes" import { GoogleCommonConfigs } from "../../GoogleCommonConfigs" -export namespace GoogleOracledatabaseExadataInfrastructureConfigs { +export namespace GoogleOracleDatabaseAutonomousDatabaseConfigs { export function configs(): ResourceElementConfig[] {return [...GoogleCommonConfigs.configs()]} } diff --git a/ocd/packages/desktop/src/components/properties/provider/google/resources/configs/GoogleOracledatabaseAutonomousDatabaseRegular.ts b/ocd/packages/desktop/src/components/properties/provider/google/resources/configs/GoogleOracleDatabaseCloudExadataInfrastructure.ts similarity index 84% rename from ocd/packages/desktop/src/components/properties/provider/google/resources/configs/GoogleOracledatabaseAutonomousDatabaseRegular.ts rename to ocd/packages/desktop/src/components/properties/provider/google/resources/configs/GoogleOracleDatabaseCloudExadataInfrastructure.ts index ea4201087..5d571d31d 100644 --- a/ocd/packages/desktop/src/components/properties/provider/google/resources/configs/GoogleOracledatabaseAutonomousDatabaseRegular.ts +++ b/ocd/packages/desktop/src/components/properties/provider/google/resources/configs/GoogleOracleDatabaseCloudExadataInfrastructure.ts @@ -6,6 +6,6 @@ import { ResourceElementConfig } from "../../../../OcdPropertyTypes" import { GoogleCommonConfigs } from "../../GoogleCommonConfigs" -export namespace GoogleOracledatabaseAutonomousDatabaseRegularConfigs { +export namespace GoogleOracleDatabaseCloudExadataInfrastructureConfigs { export function configs(): ResourceElementConfig[] {return [...GoogleCommonConfigs.configs()]} } diff --git a/ocd/packages/desktop/src/components/properties/provider/google/resources/configs/GoogleOracledatabaseCloudVmCluster.ts b/ocd/packages/desktop/src/components/properties/provider/google/resources/configs/GoogleOracleDatabaseCloudVmCluster.ts similarity index 86% rename from ocd/packages/desktop/src/components/properties/provider/google/resources/configs/GoogleOracledatabaseCloudVmCluster.ts rename to ocd/packages/desktop/src/components/properties/provider/google/resources/configs/GoogleOracleDatabaseCloudVmCluster.ts index 4e7fc8746..43108ea06 100644 --- a/ocd/packages/desktop/src/components/properties/provider/google/resources/configs/GoogleOracledatabaseCloudVmCluster.ts +++ b/ocd/packages/desktop/src/components/properties/provider/google/resources/configs/GoogleOracleDatabaseCloudVmCluster.ts @@ -6,6 +6,6 @@ import { ResourceElementConfig } from "../../../../OcdPropertyTypes" import { GoogleCommonConfigs } from "../../GoogleCommonConfigs" -export namespace GoogleOracledatabaseCloudVmClusterConfigs { +export namespace GoogleOracleDatabaseCloudVmClusterConfigs { export function configs(): ResourceElementConfig[] {return [...GoogleCommonConfigs.configs()]} } diff --git a/ocd/packages/desktop/src/components/properties/provider/google/resources/proxies/GoogleOracledatabaseExadataInfrastructure.ts b/ocd/packages/desktop/src/components/properties/provider/google/resources/proxies/GoogleOracleDatabaseAutonomousDatabase.ts similarity index 79% rename from ocd/packages/desktop/src/components/properties/provider/google/resources/proxies/GoogleOracledatabaseExadataInfrastructure.ts rename to ocd/packages/desktop/src/components/properties/provider/google/resources/proxies/GoogleOracleDatabaseAutonomousDatabase.ts index fd93abb11..1e13d88b9 100644 --- a/ocd/packages/desktop/src/components/properties/provider/google/resources/proxies/GoogleOracledatabaseExadataInfrastructure.ts +++ b/ocd/packages/desktop/src/components/properties/provider/google/resources/proxies/GoogleOracleDatabaseAutonomousDatabase.ts @@ -7,7 +7,7 @@ import { OcdCacheData } from '../../../../../OcdCache' import { OcdDocument } from '../../../../../OcdDocument' import { GoogleModelResources as Model } from '@ocd/model' -export namespace GoogleOracledatabaseExadataInfrastructureProxy { +export namespace GoogleOracleDatabaseAutonomousDatabaseProxy { export function proxyHandler(ocdDocument: OcdDocument, ocdCache: OcdCacheData) { const proxyHandler = { //@ts-ignore @@ -21,9 +21,9 @@ export namespace GoogleOracledatabaseExadataInfrastructureProxy { } return proxyHandler } - export function proxyResource(ocdDocument: OcdDocument, resource: Model.GoogleOracledatabaseExadataInfrastructure, ocdCache: OcdCacheData) { + export function proxyResource(ocdDocument: OcdDocument, resource: Model.GoogleOracleDatabaseAutonomousDatabase, ocdCache: OcdCacheData) { const pH = proxyHandler(ocdDocument, ocdCache) - const proxyResource = new Proxy(resource, pH) + const proxyResource = new Proxy(resource, pH) return proxyResource } } diff --git a/ocd/packages/desktop/src/components/properties/provider/google/resources/proxies/GoogleOracledatabaseAutonomousDatabaseRegular.ts b/ocd/packages/desktop/src/components/properties/provider/google/resources/proxies/GoogleOracleDatabaseCloudExadataInfrastructure.ts similarity index 78% rename from ocd/packages/desktop/src/components/properties/provider/google/resources/proxies/GoogleOracledatabaseAutonomousDatabaseRegular.ts rename to ocd/packages/desktop/src/components/properties/provider/google/resources/proxies/GoogleOracleDatabaseCloudExadataInfrastructure.ts index 4ba7d7d0c..2fbb7a914 100644 --- a/ocd/packages/desktop/src/components/properties/provider/google/resources/proxies/GoogleOracledatabaseAutonomousDatabaseRegular.ts +++ b/ocd/packages/desktop/src/components/properties/provider/google/resources/proxies/GoogleOracleDatabaseCloudExadataInfrastructure.ts @@ -7,7 +7,7 @@ import { OcdCacheData } from '../../../../../OcdCache' import { OcdDocument } from '../../../../../OcdDocument' import { GoogleModelResources as Model } from '@ocd/model' -export namespace GoogleOracledatabaseAutonomousDatabaseRegularProxy { +export namespace GoogleOracleDatabaseCloudExadataInfrastructureProxy { export function proxyHandler(ocdDocument: OcdDocument, ocdCache: OcdCacheData) { const proxyHandler = { //@ts-ignore @@ -21,9 +21,9 @@ export namespace GoogleOracledatabaseAutonomousDatabaseRegularProxy { } return proxyHandler } - export function proxyResource(ocdDocument: OcdDocument, resource: Model.GoogleOracledatabaseAutonomousDatabaseRegular, ocdCache: OcdCacheData) { + export function proxyResource(ocdDocument: OcdDocument, resource: Model.GoogleOracleDatabaseCloudExadataInfrastructure, ocdCache: OcdCacheData) { const pH = proxyHandler(ocdDocument, ocdCache) - const proxyResource = new Proxy(resource, pH) + const proxyResource = new Proxy(resource, pH) return proxyResource } } diff --git a/ocd/packages/desktop/src/components/properties/provider/google/resources/proxies/GoogleOracledatabaseCloudVmCluster.ts b/ocd/packages/desktop/src/components/properties/provider/google/resources/proxies/GoogleOracleDatabaseCloudVmCluster.ts similarity index 84% rename from ocd/packages/desktop/src/components/properties/provider/google/resources/proxies/GoogleOracledatabaseCloudVmCluster.ts rename to ocd/packages/desktop/src/components/properties/provider/google/resources/proxies/GoogleOracleDatabaseCloudVmCluster.ts index 1f082b4a0..1dae51208 100644 --- a/ocd/packages/desktop/src/components/properties/provider/google/resources/proxies/GoogleOracledatabaseCloudVmCluster.ts +++ b/ocd/packages/desktop/src/components/properties/provider/google/resources/proxies/GoogleOracleDatabaseCloudVmCluster.ts @@ -7,7 +7,7 @@ import { OcdCacheData } from '../../../../../OcdCache' import { OcdDocument } from '../../../../../OcdDocument' import { GoogleModelResources as Model } from '@ocd/model' -export namespace GoogleOracledatabaseCloudVmClusterProxy { +export namespace GoogleOracleDatabaseCloudVmClusterProxy { export function proxyHandler(ocdDocument: OcdDocument, ocdCache: OcdCacheData) { const proxyHandler = { //@ts-ignore @@ -21,9 +21,9 @@ export namespace GoogleOracledatabaseCloudVmClusterProxy { } return proxyHandler } - export function proxyResource(ocdDocument: OcdDocument, resource: Model.GoogleOracledatabaseCloudVmCluster, ocdCache: OcdCacheData) { + export function proxyResource(ocdDocument: OcdDocument, resource: Model.GoogleOracleDatabaseCloudVmCluster, ocdCache: OcdCacheData) { const pH = proxyHandler(ocdDocument, ocdCache) - const proxyResource = new Proxy(resource, pH) + const proxyResource = new Proxy(resource, pH) return proxyResource } } diff --git a/ocd/packages/desktop/src/components/properties/provider/oci/OciCommonConfigs.ts b/ocd/packages/desktop/src/components/properties/provider/oci/OciCommonConfigs.ts index 3e4394ded..fdc926e00 100644 --- a/ocd/packages/desktop/src/components/properties/provider/oci/OciCommonConfigs.ts +++ b/ocd/packages/desktop/src/components/properties/provider/oci/OciCommonConfigs.ts @@ -13,7 +13,7 @@ export namespace OciCommonConfigs { { id: 'admin_password', properties: { - pattern: '^var\.+$', + pattern: String.raw`^var\.+$`, title: 'Password fields only support Variables.' }, configs: [] @@ -31,7 +31,7 @@ export namespace OciCommonConfigs { { id: 'backup_tde_password', properties: { - pattern: '^var\.+$', + pattern: String.raw`^var\.+$`, title: 'Password fields only support Variables.' }, configs: [] @@ -39,7 +39,7 @@ export namespace OciCommonConfigs { { id: 'cluster_admin_password', properties: { - pattern: '^var\.+$', + pattern: String.raw`^var\.+$`, title: 'Password fields only support Variables.' }, configs: [] @@ -47,7 +47,7 @@ export namespace OciCommonConfigs { { id: 'database_admin_password', properties: { - pattern: '^var\.+$', + pattern: String.raw`^var\.+$`, title: 'Password fields only support Variables.' }, configs: [] @@ -67,7 +67,7 @@ export namespace OciCommonConfigs { id: 'ipv6private_cidr_blocks', properties: { placeholder: '2001:0db8:0123:45::/56', - pattern: "^((((?:[0-9A-Fa-f]{1,4}))((?::[0-9A-Fa-f]{1,4}))*::((?:[0-9A-Fa-f]{1,4}))((?::[0-9A-Fa-f]{1,4}))*|((?:[0-9A-Fa-f]{1,4}))((?::[0-9A-Fa-f]{1,4})){7})(,\s?|$))+|^(var\.+(,\s?|$))", + pattern: String.raw`^((((?:[0-9A-Fa-f]{1,4}))((?::[0-9A-Fa-f]{1,4}))*::((?:[0-9A-Fa-f]{1,4}))((?::[0-9A-Fa-f]{1,4}))*|((?:[0-9A-Fa-f]{1,4}))((?::[0-9A-Fa-f]{1,4})){7})(,\s?|$))+|^(var\.+(,\s?|$))`, title: 'Comma separated IPv6 CIDR blocks' }, configs: [] @@ -84,7 +84,7 @@ export namespace OciCommonConfigs { { id: 'tde_wallet_password', properties: { - pattern: '^var\.+$', + pattern: String.raw`^var\.+$`, title: 'Password fields only support Variables.' }, configs: [] @@ -92,7 +92,7 @@ export namespace OciCommonConfigs { { id: 'vpc_password', properties: { - pattern: '^var\.+$', + pattern: String.raw`^var\.+$`, title: 'Password fields only support Variables.' }, configs: [] @@ -101,7 +101,7 @@ export namespace OciCommonConfigs { id: 'whitelisted_ips', properties: { placeholder: '0.0.0.0/0,0.0.0.0/0', - pattern: "^((([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])(\/(3[0-2]|[1-2][0-9]|[0-9]))(,\s?|$))+|^(var\.+(,\s?|$))", + pattern: String.raw`^((([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])(\/(3[0-2]|[1-2][0-9]|[0-9]))(,\s?|$))+|^(var\.+(,\s?|$))`, title: 'Comma separated IPv4 CIDR blocks' }, configs: [] diff --git a/ocd/packages/desktop/src/components/tabular/provider/azure/AzureTabularContents.tsx b/ocd/packages/desktop/src/components/tabular/provider/azure/AzureTabularContents.tsx index 3acceb921..6ef181cba 100644 --- a/ocd/packages/desktop/src/components/tabular/provider/azure/AzureTabularContents.tsx +++ b/ocd/packages/desktop/src/components/tabular/provider/azure/AzureTabularContents.tsx @@ -73,7 +73,7 @@ export const OcdTabularContents = ({ ocdDocument, azureResources, selected, colu />
  • - {azureResources[selected].sort(sortFunction).map((r: AzureResource, i: number) => { + {azureResources[selected].toSorted(sortFunction).map((r: AzureResource, i: number) => { return { + if (sortColumn !== name) return '' + else if (sortAscending) return ascClasses + else return dscClasses + } return (
    {azureResources[selected].length}
    -
    onSortClick('displayName')} onKeyUp={() => {}} key={`${selected}-tabular-header-row-displayName`}>Name
    -
    onSortClick('compartmentId')} onKeyUp={() => {}} key={`${selected}-tabular-header-row-compartmentId`}>Compartment
    - {displayColumns.map((title: string, i: number) => {return
    onSortClick(resourceElements[i])} onKeyUp={() => {}} key={`${selected}-tabular-header-row-${OcdUtils.toUnderscoreCase(title)}`}>{title}
    })} +
    onSortClick('displayName')} aria-hidden key={`${selected}-tabular-header-row-displayName`}>Name
    +
    onSortClick('compartmentId')} aria-hidden key={`${selected}-tabular-header-row-compartmentId`}>Compartment
    + {displayColumns.map((title: string, i: number) => {return
    onSortClick(resourceElements[i])} aria-hidden key={`${selected}-tabular-header-row-${OcdUtils.toUnderscoreCase(title)}`}>{title}
    })}
      -
    • {}}> +
    • {menuVisible &&
        {/*
      • */} - {columnTitles.map((title: string, i: number) => {return
      • {}}>
      • })} + {columnTitles.map((title: string, i: number) => {return
      • })}
      }
    @@ -142,12 +147,17 @@ export const OcdTabularRow = ({ocdDocument, azureResources, index, resource, res const isElementId = (name: string) => name ? name.endsWith('Id') : false const isElementIdList = (name: string) => name ? name.endsWith('Ids') : false console.debug('OcdTabularRow: Selected', selected) + const cellData = (element: string): string => { + if (isElementId(element)) return getReferenceDisplayName(resource[element]) + else if (isElementIdList(element)) return getReferenceListDisplayNames(resource[element]) + else return String(resource[element]) + } return (
    {index + 1}
    {resource.displayName}
    {getReferenceDisplayName(resource.compartmentId)}
    {/*
    {ocdDocument.getResource(r.compartmentId) ? ocdDocument.getResource(r.compartmentId).displayName : ''}
    */} - {resourceElements.map((element) => {return
    {isElementId(element) ? getReferenceDisplayName(resource[element]) : isElementIdList(element) ? getReferenceListDisplayNames(resource[element]) : String(resource[element])}
    })} + {resourceElements.map((element) => {return
    {cellData(element)}
    })}
    ) diff --git a/ocd/packages/desktop/src/components/tabular/provider/azure/resources.ts b/ocd/packages/desktop/src/components/tabular/provider/azure/resources.ts index 480859760..ff041b328 100644 --- a/ocd/packages/desktop/src/components/tabular/provider/azure/resources.ts +++ b/ocd/packages/desktop/src/components/tabular/provider/azure/resources.ts @@ -15,9 +15,9 @@ export { AzureDnsZone } from './resources/AzureDnsZone' export { AzureKubernetesCluster } from './resources/AzureKubernetesCluster' export { AzureLoadBalancer } from './resources/AzureLoadBalancer' export { AzureMssqlServer } from './resources/AzureMssqlServer' -export { AzureOracledatabaseAutonomousDatabaseRegular } from './resources/AzureOracledatabaseAutonomousDatabaseRegular' -export { AzureOracledatabaseCloudVmCluster } from './resources/AzureOracledatabaseCloudVmCluster' -export { AzureOracledatabaseExadataInfrastructure } from './resources/AzureOracledatabaseExadataInfrastructure' +export { AzureOracleAutonomousDatabase } from './resources/AzureOracleAutonomousDatabase' +export { AzureOracleCloudVmCluster } from './resources/AzureOracleCloudVmCluster' +export { AzureOracleExadataInfrastructure } from './resources/AzureOracleExadataInfrastructure' export { AzureResourceGroup } from './resources/AzureResourceGroup' export { AzureSubnet } from './resources/AzureSubnet' export { AzureVirtualMachine } from './resources/AzureVirtualMachine' diff --git a/ocd/packages/desktop/src/components/tabular/provider/azure/resources/AzureOracledatabaseCloudVmCluster.tsx b/ocd/packages/desktop/src/components/tabular/provider/azure/resources/AzureOracleAutonomousDatabase.tsx similarity index 76% rename from ocd/packages/desktop/src/components/tabular/provider/azure/resources/AzureOracledatabaseCloudVmCluster.tsx rename to ocd/packages/desktop/src/components/tabular/provider/azure/resources/AzureOracleAutonomousDatabase.tsx index 8da8d86e4..5ed122c49 100644 --- a/ocd/packages/desktop/src/components/tabular/provider/azure/resources/AzureOracledatabaseCloudVmCluster.tsx +++ b/ocd/packages/desktop/src/components/tabular/provider/azure/resources/AzureOracleAutonomousDatabase.tsx @@ -6,7 +6,7 @@ import { AzureTabularResourceProps } from "../../../../../types/ReactComponentProperties" import { OcdTabularContents } from "../AzureTabularContents" -export const AzureOracledatabaseCloudVmCluster = ({ ocdDocument, azureResources, selected }: AzureTabularResourceProps): JSX.Element => { +export const AzureOracleAutonomousDatabase = ({ ocdDocument, azureResources, selected }: AzureTabularResourceProps): JSX.Element => { const columnTitles: string[] = [] const resourceElements: string[] = [] return ( @@ -16,7 +16,7 @@ export const AzureOracledatabaseCloudVmCluster = ({ ocdDocument, azureResources, selected={selected} columnTitles={columnTitles} resourceElements={resourceElements} - key={'AzureOracledatabaseCloudVmClusterTabularContents'} + key={'AzureOracleAutonomousDatabaseTabularContents'} /> ) } diff --git a/ocd/packages/desktop/src/components/tabular/provider/azure/resources/AzureOracledatabaseExadataInfrastructure.tsx b/ocd/packages/desktop/src/components/tabular/provider/azure/resources/AzureOracleCloudVmCluster.tsx similarity index 75% rename from ocd/packages/desktop/src/components/tabular/provider/azure/resources/AzureOracledatabaseExadataInfrastructure.tsx rename to ocd/packages/desktop/src/components/tabular/provider/azure/resources/AzureOracleCloudVmCluster.tsx index 94965ae91..375bc7f0f 100644 --- a/ocd/packages/desktop/src/components/tabular/provider/azure/resources/AzureOracledatabaseExadataInfrastructure.tsx +++ b/ocd/packages/desktop/src/components/tabular/provider/azure/resources/AzureOracleCloudVmCluster.tsx @@ -6,7 +6,7 @@ import { AzureTabularResourceProps } from "../../../../../types/ReactComponentProperties" import { OcdTabularContents } from "../AzureTabularContents" -export const AzureOracledatabaseExadataInfrastructure = ({ ocdDocument, azureResources, selected }: AzureTabularResourceProps): JSX.Element => { +export const AzureOracleCloudVmCluster = ({ ocdDocument, azureResources, selected }: AzureTabularResourceProps): JSX.Element => { const columnTitles: string[] = [] const resourceElements: string[] = [] return ( @@ -16,7 +16,7 @@ export const AzureOracledatabaseExadataInfrastructure = ({ ocdDocument, azureRes selected={selected} columnTitles={columnTitles} resourceElements={resourceElements} - key={'AzureOracledatabaseExadataInfrastructureTabularContents'} + key={'AzureOracleCloudVmClusterTabularContents'} /> ) } diff --git a/ocd/packages/desktop/src/components/tabular/provider/azure/resources/AzureOracledatabaseAutonomousDatabaseRegular.tsx b/ocd/packages/desktop/src/components/tabular/provider/azure/resources/AzureOracleExadataInfrastructure.tsx similarity index 74% rename from ocd/packages/desktop/src/components/tabular/provider/azure/resources/AzureOracledatabaseAutonomousDatabaseRegular.tsx rename to ocd/packages/desktop/src/components/tabular/provider/azure/resources/AzureOracleExadataInfrastructure.tsx index 23acdd4df..a58cb58b9 100644 --- a/ocd/packages/desktop/src/components/tabular/provider/azure/resources/AzureOracledatabaseAutonomousDatabaseRegular.tsx +++ b/ocd/packages/desktop/src/components/tabular/provider/azure/resources/AzureOracleExadataInfrastructure.tsx @@ -6,7 +6,7 @@ import { AzureTabularResourceProps } from "../../../../../types/ReactComponentProperties" import { OcdTabularContents } from "../AzureTabularContents" -export const AzureOracledatabaseAutonomousDatabaseRegular = ({ ocdDocument, azureResources, selected }: AzureTabularResourceProps): JSX.Element => { +export const AzureOracleExadataInfrastructure = ({ ocdDocument, azureResources, selected }: AzureTabularResourceProps): JSX.Element => { const columnTitles: string[] = [] const resourceElements: string[] = [] return ( @@ -16,7 +16,7 @@ export const AzureOracledatabaseAutonomousDatabaseRegular = ({ ocdDocument, azur selected={selected} columnTitles={columnTitles} resourceElements={resourceElements} - key={'AzureOracledatabaseAutonomousDatabaseRegularTabularContents'} + key={'AzureOracleExadataInfrastructureTabularContents'} /> ) } diff --git a/ocd/packages/desktop/src/components/tabular/provider/google/GoogleTabularContents.tsx b/ocd/packages/desktop/src/components/tabular/provider/google/GoogleTabularContents.tsx index 05431a8e7..42c98ca01 100644 --- a/ocd/packages/desktop/src/components/tabular/provider/google/GoogleTabularContents.tsx +++ b/ocd/packages/desktop/src/components/tabular/provider/google/GoogleTabularContents.tsx @@ -36,7 +36,7 @@ export const OcdTabularContents = ({ ocdDocument, googleResources, selected, col setSortAscending(!sortAscending) } const sortFunction = (a: Record, b: Record): number => { - let result = 0 + let result if (!sortColumn || sortColumn === '') result = 0 else if (Array.isArray(a[sortColumn])) result = a[sortColumn].join(',').localeCompare(b[sortColumn].join(',')) else if (isElementId(sortColumn)) result = getReferenceDisplayName(a[sortColumn]).localeCompare(getReferenceDisplayName(b[sortColumn])) @@ -73,7 +73,7 @@ export const OcdTabularContents = ({ ocdDocument, googleResources, selected, col />
    - {googleResources[selected].sort(sortFunction).map((r: GoogleResource, i: number) => { + {googleResources[selected].toSorted(sortFunction).map((r: GoogleResource, i: number) => { return { + if (sortColumn !== name) return '' + else if (sortAscending) return ascClasses + else return dscClasses + } return (
    {googleResources[selected].length}
    -
    onSortClick('displayName')} onKeyUp={() => {}} key={`${selected}-tabular-header-row-displayName`}>Name
    -
    onSortClick('compartmentId')} onKeyUp={() => {}} key={`${selected}-tabular-header-row-compartmentId`}>Compartment
    - {displayColumns.map((title: string, i: number) => {return
    onSortClick(resourceElements[i])} onKeyUp={() => {}} key={`${selected}-tabular-header-row-${OcdUtils.toUnderscoreCase(title)}`}>{title}
    })} +
    onSortClick('displayName')} aria-hidden key={`${selected}-tabular-header-row-displayName`}>Name
    +
    onSortClick('compartmentId')} aria-hidden key={`${selected}-tabular-header-row-compartmentId`}>Compartment
    + {displayColumns.map((title: string, i: number) => {return
    onSortClick(resourceElements[i])} aria-hidden key={`${selected}-tabular-header-row-${OcdUtils.toUnderscoreCase(title)}`}>{title}
    })}
      -
    • {}}> +
    • {menuVisible &&
        {/*
      • */} - {columnTitles.map((title: string, i: number) => {return
      • {}}>
      • })} + {columnTitles.map((title: string, i: number) => {return
      • })}
      }
    @@ -142,12 +147,17 @@ export const OcdTabularRow = ({ocdDocument, googleResources, index, resource, re const isElementId = (name: string) => name ? name.endsWith('Id') : false const isElementIdList = (name: string) => name ? name.endsWith('Ids') : false console.debug('OcdTabularRow: Selected', selected) + const cellData = (element: string): string => { + if (isElementId(element)) return getReferenceDisplayName(resource[element]) + else if (isElementIdList(element)) return getReferenceListDisplayNames(resource[element]) + else return String(resource[element]) + } return (
    {index + 1}
    {resource.displayName}
    {getReferenceDisplayName(resource.compartmentId)}
    {/*
    {ocdDocument.getResource(r.compartmentId) ? ocdDocument.getResource(r.compartmentId).displayName : ''}
    */} - {resourceElements.map((element) => {return
    {isElementId(element) ? getReferenceDisplayName(resource[element]) : isElementIdList(element) ? getReferenceListDisplayNames(resource[element]) : String(resource[element])}
    })} + {resourceElements.map((element) => {return
    {cellData(element)}
    })}
    ) diff --git a/ocd/packages/desktop/src/components/tabular/provider/google/resources.ts b/ocd/packages/desktop/src/components/tabular/provider/google/resources.ts index f133edf5a..dbc4f5453 100644 --- a/ocd/packages/desktop/src/components/tabular/provider/google/resources.ts +++ b/ocd/packages/desktop/src/components/tabular/provider/google/resources.ts @@ -11,7 +11,7 @@ */ export { GoogleComputeNetwork } from './resources/GoogleComputeNetwork' -export { GoogleOracledatabaseAutonomousDatabaseRegular } from './resources/GoogleOracledatabaseAutonomousDatabaseRegular' -export { GoogleOracledatabaseCloudVmCluster } from './resources/GoogleOracledatabaseCloudVmCluster' -export { GoogleOracledatabaseExadataInfrastructure } from './resources/GoogleOracledatabaseExadataInfrastructure' +export { GoogleOracleDatabaseAutonomousDatabase } from './resources/GoogleOracleDatabaseAutonomousDatabase' +export { GoogleOracleDatabaseCloudExadataInfrastructure } from './resources/GoogleOracleDatabaseCloudExadataInfrastructure' +export { GoogleOracleDatabaseCloudVmCluster } from './resources/GoogleOracleDatabaseCloudVmCluster' \ No newline at end of file diff --git a/ocd/packages/desktop/src/components/tabular/provider/google/resources/GoogleOracledatabaseExadataInfrastructure.tsx b/ocd/packages/desktop/src/components/tabular/provider/google/resources/GoogleOracleDatabaseAutonomousDatabase.tsx similarity index 74% rename from ocd/packages/desktop/src/components/tabular/provider/google/resources/GoogleOracledatabaseExadataInfrastructure.tsx rename to ocd/packages/desktop/src/components/tabular/provider/google/resources/GoogleOracleDatabaseAutonomousDatabase.tsx index 5f40ba397..b86e4064a 100644 --- a/ocd/packages/desktop/src/components/tabular/provider/google/resources/GoogleOracledatabaseExadataInfrastructure.tsx +++ b/ocd/packages/desktop/src/components/tabular/provider/google/resources/GoogleOracleDatabaseAutonomousDatabase.tsx @@ -6,7 +6,7 @@ import { GoogleTabularResourceProps } from "../../../../../types/ReactComponentProperties" import { OcdTabularContents } from "../GoogleTabularContents" -export const GoogleOracledatabaseExadataInfrastructure = ({ ocdDocument, googleResources, selected }: GoogleTabularResourceProps): JSX.Element => { +export const GoogleOracleDatabaseAutonomousDatabase = ({ ocdDocument, googleResources, selected }: GoogleTabularResourceProps): JSX.Element => { const columnTitles: string[] = [] const resourceElements: string[] = [] return ( @@ -16,7 +16,7 @@ export const GoogleOracledatabaseExadataInfrastructure = ({ ocdDocument, googleR selected={selected} columnTitles={columnTitles} resourceElements={resourceElements} - key={'GoogleOracledatabaseExadataInfrastructureTabularContents'} + key={'GoogleOracleDatabaseAutonomousDatabaseTabularContents'} /> ) } diff --git a/ocd/packages/desktop/src/components/tabular/provider/google/resources/GoogleOracledatabaseAutonomousDatabaseRegular.tsx b/ocd/packages/desktop/src/components/tabular/provider/google/resources/GoogleOracleDatabaseCloudExadataInfrastructure.tsx similarity index 74% rename from ocd/packages/desktop/src/components/tabular/provider/google/resources/GoogleOracledatabaseAutonomousDatabaseRegular.tsx rename to ocd/packages/desktop/src/components/tabular/provider/google/resources/GoogleOracleDatabaseCloudExadataInfrastructure.tsx index f39c23849..5b6c28295 100644 --- a/ocd/packages/desktop/src/components/tabular/provider/google/resources/GoogleOracledatabaseAutonomousDatabaseRegular.tsx +++ b/ocd/packages/desktop/src/components/tabular/provider/google/resources/GoogleOracleDatabaseCloudExadataInfrastructure.tsx @@ -6,7 +6,7 @@ import { GoogleTabularResourceProps } from "../../../../../types/ReactComponentProperties" import { OcdTabularContents } from "../GoogleTabularContents" -export const GoogleOracledatabaseAutonomousDatabaseRegular = ({ ocdDocument, googleResources, selected }: GoogleTabularResourceProps): JSX.Element => { +export const GoogleOracleDatabaseCloudExadataInfrastructure = ({ ocdDocument, googleResources, selected }: GoogleTabularResourceProps): JSX.Element => { const columnTitles: string[] = [] const resourceElements: string[] = [] return ( @@ -16,7 +16,7 @@ export const GoogleOracledatabaseAutonomousDatabaseRegular = ({ ocdDocument, goo selected={selected} columnTitles={columnTitles} resourceElements={resourceElements} - key={'GoogleOracledatabaseAutonomousDatabaseRegularTabularContents'} + key={'GoogleOracleDatabaseCloudExadataInfrastructureTabularContents'} /> ) } diff --git a/ocd/packages/desktop/src/components/tabular/provider/google/resources/GoogleOracledatabaseCloudVmCluster.tsx b/ocd/packages/desktop/src/components/tabular/provider/google/resources/GoogleOracleDatabaseCloudVmCluster.tsx similarity index 85% rename from ocd/packages/desktop/src/components/tabular/provider/google/resources/GoogleOracledatabaseCloudVmCluster.tsx rename to ocd/packages/desktop/src/components/tabular/provider/google/resources/GoogleOracleDatabaseCloudVmCluster.tsx index 1e499534b..e9eb1008a 100644 --- a/ocd/packages/desktop/src/components/tabular/provider/google/resources/GoogleOracledatabaseCloudVmCluster.tsx +++ b/ocd/packages/desktop/src/components/tabular/provider/google/resources/GoogleOracleDatabaseCloudVmCluster.tsx @@ -6,7 +6,7 @@ import { GoogleTabularResourceProps } from "../../../../../types/ReactComponentProperties" import { OcdTabularContents } from "../GoogleTabularContents" -export const GoogleOracledatabaseCloudVmCluster = ({ ocdDocument, googleResources, selected }: GoogleTabularResourceProps): JSX.Element => { +export const GoogleOracleDatabaseCloudVmCluster = ({ ocdDocument, googleResources, selected }: GoogleTabularResourceProps): JSX.Element => { const columnTitles: string[] = [] const resourceElements: string[] = [] return ( @@ -16,7 +16,7 @@ export const GoogleOracledatabaseCloudVmCluster = ({ ocdDocument, googleResource selected={selected} columnTitles={columnTitles} resourceElements={resourceElements} - key={'GoogleOracledatabaseCloudVmClusterTabularContents'} + key={'GoogleOracleDatabaseCloudVmClusterTabularContents'} /> ) } diff --git a/ocd/packages/desktop/src/components/tabular/provider/oci/OciTabularContents.tsx b/ocd/packages/desktop/src/components/tabular/provider/oci/OciTabularContents.tsx index c72fa04e7..e6b52a381 100644 --- a/ocd/packages/desktop/src/components/tabular/provider/oci/OciTabularContents.tsx +++ b/ocd/packages/desktop/src/components/tabular/provider/oci/OciTabularContents.tsx @@ -35,7 +35,7 @@ export const OcdTabularContents = ({ ocdDocument, ociResources, selected, column setSortAscending(!sortAscending) } const sortFunction = (a: Record, b: Record): number => { - let result = 0 + let result if (!sortColumn || sortColumn === '') result = 0 else if (Array.isArray(a[sortColumn])) result = a[sortColumn].join(',').localeCompare(b[sortColumn].join(',')) else if (isElementId(sortColumn)) result = getReferenceDisplayName(a[sortColumn]).localeCompare(getReferenceDisplayName(b[sortColumn])) @@ -72,7 +72,7 @@ export const OcdTabularContents = ({ ocdDocument, ociResources, selected, column />
    - {ociResources[selected].sort(sortFunction).map((r: OciResource, i: number) => { + {ociResources[selected].toSorted(sortFunction).map((r: OciResource, i: number) => { return { + if (sortColumn !== name) return '' + else if (sortAscending) return ascClasses + else return dscClasses + } return (
    {ociResources[selected].length}
    -
    onSortClick('displayName')} key={`${selected}-tabular-header-row-displayName`}>Name
    -
    onSortClick('compartmentId')} key={`${selected}-tabular-header-row-compartmentId`}>Compartment
    - {displayColumns.map((title: string, i: number) => {return
    onSortClick(resourceElements[i])} key={`${selected}-tabular-header-row-${OcdUtils.toUnderscoreCase(title)}`}>{title}
    })} +
    onSortClick('displayName')} aria-hidden key={`${selected}-tabular-header-row-displayName`}>Name
    +
    onSortClick('compartmentId')} aria-hidden key={`${selected}-tabular-header-row-compartmentId`}>Compartment
    + {displayColumns.map((title: string, i: number) => {return
    onSortClick(resourceElements[i])} key={`${selected}-tabular-header-row-${OcdUtils.toUnderscoreCase(title)}`} aria-hidden>{title}
    })}
      -
    • +
    • {menuVisible &&
        {/*
      • */} - {columnTitles.map((title: string, i: number) => {return
      • })} + {columnTitles.map((title: string, i: number) => {return
      • })}
      }
    @@ -142,12 +147,17 @@ export const OcdTabularRow = ({ocdDocument, ociResources, index, resource, resou const isElementId = (name: string) => name ? name.endsWith('Id') : false const isElementIdList = (name: string) => name ? name.endsWith('Ids') : false console.debug('OcdTabularRow: Selected', selected) + const cellData = (element: string): string => { + if (isElementId(element)) return getReferenceDisplayName(resource[element]) + else if (isElementIdList(element)) return getReferenceListDisplayNames(resource[element]) + else return String(resource[element]) + } return (
    {index + 1}
    {resource.displayName}
    {getReferenceDisplayName(resource.compartmentId)}
    {/*
    {ocdDocument.getResource(r.compartmentId) ? ocdDocument.getResource(r.compartmentId).displayName : ''}
    */} - {resourceElements.map((element) => {return
    {isElementId(element) ? getReferenceDisplayName(resource[element]) : isElementIdList(element) ? getReferenceListDisplayNames(resource[element]) : String(resource[element])}
    })} + {resourceElements.map((element) => {return
    {cellData(element)}
    })}
    ) diff --git a/ocd/packages/desktop/src/css/azure-theme.css b/ocd/packages/desktop/src/css/azure-theme.css index 81406d8cf..2632846cd 100644 --- a/ocd/packages/desktop/src/css/azure-theme.css +++ b/ocd/packages/desktop/src/css/azure-theme.css @@ -67,15 +67,15 @@ background-image: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxOCIgaGVpZ2h0PSIxOCI+PGRlZnM+PGxpbmVhckdyYWRpZW50IGlkPSJwcmVmaXhfX2EiIHgxPSIyLjU5IiB5MT0iMTAuMTYiIHgyPSIxNS40MSIgeTI9IjEwLjE2IiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSI+PHN0b3Agb2Zmc2V0PSIwIiBzdG9wLWNvbG9yPSIjMDA1YmExIi8+PHN0b3Agb2Zmc2V0PSIuMDciIHN0b3AtY29sb3I9IiMwMDYwYTkiLz48c3RvcCBvZmZzZXQ9Ii4zNiIgc3RvcC1jb2xvcj0iIzAwNzFjOCIvPjxzdG9wIG9mZnNldD0iLjUyIiBzdG9wLWNvbG9yPSIjMDA3OGQ0Ii8+PHN0b3Agb2Zmc2V0PSIuNjQiIHN0b3AtY29sb3I9IiMwMDc0Y2QiLz48c3RvcCBvZmZzZXQ9Ii44MiIgc3RvcC1jb2xvcj0iIzAwNmFiYiIvPjxzdG9wIG9mZnNldD0iMSIgc3RvcC1jb2xvcj0iIzAwNWJhMSIvPjwvbGluZWFyR3JhZGllbnQ+PC9kZWZzPjxwYXRoIGQ9Ik05IDUuMTRjLTMuNTQgMC02LjQxLTEtNi40MS0yLjMydjEyLjM2YzAgMS4yNyAyLjgyIDIuMyA2LjMyIDIuMzJIOWMzLjU0IDAgNi40MS0xIDYuNDEtMi4zMlYyLjgyYzAgMS4yOS0yLjg3IDIuMzItNi40MSAyLjMyeiIgZmlsbD0idXJsKCNwcmVmaXhfX2EpIi8+PHBhdGggZD0iTTE1LjQxIDIuODJjMCAxLjI5LTIuODcgMi4zMi02LjQxIDIuMzJzLTYuNDEtMS02LjQxLTIuMzJTNS40Ni41IDkgLjVzNi40MSAxIDYuNDEgMi4zMiIgZmlsbD0iI2U4ZThlOCIvPjxwYXRoIGQ9Ik0xMy45MiAyLjYzYzAgLjgyLTIuMjEgMS40OC00LjkyIDEuNDhzLTQuOTItLjY2LTQuOTItMS40OFM2LjI5IDEuMTYgOSAxLjE2czQuOTIuNjYgNC45MiAxLjQ3IiBmaWxsPSIjNTBlNmZmIi8+PHBhdGggZD0iTTkgM2ExMS41NSAxMS41NSAwIDAwLTMuODkuNTdBMTEuNDIgMTEuNDIgMCAwMDkgNC4xMWExMS4xNSAxMS4xNSAwIDAwMy44OS0uNThBMTEuODQgMTEuODQgMCAwMDkgM3oiIGZpbGw9IiMxOThhYjMiLz48cGF0aCBkPSJNMTIuNjQgOXYxLjYzaC0xYS4zOS4zOSAwIDAxLS4yOS0uMTRWOUgxMHYxLjc4YS45Mi45MiAwIDAwMSAuODloMS40OWwuMjYtLjEzcy0uMTEuNDEtLjI2LjQzaC0yLjM4djFoMi42NkExLjIxIDEuMjEgMCAwMDE0IDExLjdWOXpNOS41MyA5di0uNDlhLjcuNyAwIDAwLS40OC0uNzcgMS43NCAxLjc0IDAgMDAtLjUtLjA4Ljk0Ljk0IDAgMDAtLjkxLjU4bC0uNzggMS45LTEtMS45QS45My45MyAwIDAwNSA3LjY2YTEuNDQgMS40NCAwIDAwLS41MS4wOWMtLjM1LjExLS40My4zNC0uNDMuNzN2My4zMWgxLjE3VjkuNTZsLjYzIDEuNTdhMS4wOCAxLjA4IDAgMDAxIC42NmMuNDQgMCAuNjItLjI2LjgtLjY2bC42Ny0xLjUxdjIuMTVoMS4xOFY5eiIgZmlsbD0iI2YyZjJmMiIvPjwvc3ZnPg=="); } -.azure-oracle-autonomous-database, .azure-oracledatabase-autonomous-database-regular { +.azure-oracle-autonomous-database { background-image: url("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNjEiIGhlaWdodD0iNjAiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTMwLjUgMjUuNTQ3Yy45MjMgMCAyLjY5My4wNiAyLjY5My4wNnMtMS4xOC0xLjk0LTEuNTctMy45NzdsLTEuNzI2LTEuNzI3YTIuNzY4IDIuNzY4IDAgMDEwLTMuOTEzbC4wMi0uMDJhMi43NDUgMi43NDUgMCAwMTEuOTU2LS44MWMuMDU3IDAgLjExNy4wMDcuMTc0LjAxYTEyLjk3IDEyLjk3IDAgMDExLjI1LTIuNjc3IDguNDYyIDguNDYyIDAgMDAtMi4xMi0uNTY2Yy0uMjU0LTUuOS01LjIwNy0xMC41LTExLjExNC0xMC4zMTdBMTEuMDcgMTEuMDcgMCAwMDkuNDg3IDguODIzQzQuNDY3IDkuNDIzLjY1IDEzLjYwNy41IDE4LjY1N2MuMjIzIDUuNzA2IDUuMDIzIDEwLjE1NiAxMC43MzMgOS45NS4zMiAwIC42NDQtLjAxNC45NDQtLjA0aDMuNjAzYzEuMzM3LTEuODk3IDcuNDEtMy4wMiAxNC43MjMtMy4wMkgzMC41eiIgZmlsbD0idXJsKCNwcmVmaXhfX3BhaW50MF9saW5lYXJfOTg1OV83MjM3KSIvPjxwYXRoIGQ9Ik0zNi40MzMgMjIuMzQ3bDMuNTEtMy41MWExLjI2NyAxLjI2NyAwIDAwMC0xLjc5bC0uMDItLjAyYTEuMjY4IDEuMjY4IDAgMDAtMS43OSAwbC0xLjM2IDEuMzZjLjQ0Ny00LjcwNyA0LjQyNy04LjM4IDkuMjMtOC4zOCAzLjkyNCAwIDUuOTk3IDEuODUgNy4zNzQgMy42NDMuNDczLjYxNyAxLjM3LjcgMS45Mi4xNWwuMDEtLjAxYy40NDMtLjQ0My41MDYtMS4xNS4xMjYtMS42NDdhMTEuODczIDExLjg3MyAwIDAwLTkuNDMtNC42ODNjLTYuMjUtLjAyNy0xMS4zOSA0Ljg0My0xMS44MDYgMTAuOTk3bC0xLjQzLTEuNDNhMS4yNjggMS4yNjggMCAwMC0xLjc5IDBsLS4wMi4wMmExLjI2NyAxLjI2NyAwIDAwMCAxLjc5bDMuNTEgMy41MWExLjM5IDEuMzkgMCAwMDEuOTY2IDB6bTcuMDg3LTguMjQ0bC0zLjE4IDguNzM3YTEuMzY1IDEuMzY1IDAgMTAyLjU4My44NzdsLjU1LTEuNzM0aDQuMjk3bC41NTMgMS43MjdhMS4zOCAxLjM4IDAgMTAyLjYxNy0uODgzbC0zLjA5Ny04LjcxYTIuMjk2IDIuMjk2IDAgMDAtNC4zMi0uMDE3bC0uMDAzLjAwM3ptMy42MjMgNS43OTRoLTMuMDlsMS4zMTQtNC4wOTRjLjExMy0uMzQ2LjE4My0uNy4yMS0xLjA1M2guMDY2Yy4wNC40Mi4xMDcuNzgzLjIwNCAxLjA4N2wxLjI5NiA0LjA2ek02MC4xMyAxOS43bC0zLjUwMy0zLjUwM2ExLjM5IDEuMzkgMCAwMC0xLjk2NyAwbC0zLjUxIDMuNTFhMS4yNjggMS4yNjggMCAwMDAgMS43OWwuMDIuMDJhMS4yNjcgMS4yNjcgMCAwMDEuNzkgMGwxLjM2LTEuMzZjLS40NDcgNC43MDYtNC40MjcgOC4zOC05LjIzIDguMzhhOS4yOTkgOS4yOTkgMCAwMS03LjM3My0zLjY0NGMtLjQ3NC0uNjE2LTEuMzctLjctMS45Mi0uMTVsLS4wMS4wMWMtLjQ0NC40NDQtLjUwNyAxLjE1LS4xMjcgMS42NDdhMTEuODczIDExLjg3MyAwIDAwOS40MyA0LjY4M2M2LjI1IDAgMTEuMzktNC44NzMgMTEuODA3LTExLjAyNmwxLjQzNiAxLjQzNmMuNDk0LjQ5NCAxLjI5LjQ5NCAxLjc4NC4wMDdsLjAwNi0uMDA3Yy41LS40OTMuNTA0LTEuMjk2LjAwNy0xLjc5M3oiIGZpbGw9IiMwMDc4RDQiLz48cGF0aCBkPSJNMzAuNSA0MS4wOWMtOC4yOSAwLTE1LjAxLTEuNDU3LTE1LjAxLTMuMjUzdjcuOThjMCAxLjc5NiA2LjcyIDMuMjUzIDE1LjAxIDMuMjUzczE1LjAxLTEuNDU3IDE1LjAxLTMuMjUzdi03Ljk4YzAgMS43OTYtNi43MiAzLjI1My0xNS4wMSAzLjI1M3ptMTIuNjMgMS44MDdhMjMuODkzIDIzLjg5MyAwIDAxLTcuNzczIDEuMzA2LjYyNi42MjYgMCAxMTAtMS4yNTNjMS4zNTYgMCAyLjcyMy0uMTI3IDQuMDU2LS4zNyAxLjEyLS4yMDcgMi4yMy0uNDk3IDMuMzA3LS44N2EuNjI2LjYyNiAwIDAxLjQxIDEuMTgzdi4wMDR6TTMwLjUgNTAuODMzYy04LjI5IDAtMTUuMDEtMS40NTYtMTUuMDEtMy4yNTN2Ny41NzdjMCAxLjc5NiA2LjcyIDMuMjUzIDE1LjAxIDMuMjUzczE1LjAxLTEuNDU3IDE1LjAxLTMuMjUzVjQ3LjU4YzAgMS43OTctNi43MiAzLjI1My0xNS4wMSAzLjI1M3ptMTIuNjMgMS41NDRhMjMuNzggMjMuNzggMCAwMS03Ljc3MyAxLjMwNi42MjYuNjI2IDAgMTEwLTEuMjUzYzEuMzU2IDAgMi43MjMtLjEyNyA0LjA1Ni0uMzcgMS4xMi0uMjA3IDIuMjMtLjQ5NyAzLjMwNy0uODdhLjYyNi42MjYgMCAwMS40MSAxLjE4M3YuMDA0em0yLjM4LTE5LjUzNGMtLjc2NyAwLTEuNTAzLS4xMS0yLjIzMy0uMjI2LjEuMDczLjIuMTQ2LjI0My4yNzNhLjYyNi42MjYgMCAwMS0uMzg3Ljc5NyAyMy45NDMgMjMuOTQzIDAgMDEtNy43NzMgMS4zMDcuNjI1LjYyNSAwIDExMC0xLjI1YzEuMzU3IDAgMi43MjMtLjEyNyA0LjA1Ny0uMzdhMjIuNTUzIDIyLjU1MyAwIDAwMy4xOC0uODM3Yy0xLjQ2NC0uMzA3LTIuODEtLjg4NC00LjA3LTEuNi0yLjI1LjMxMy01LjAwNy41MzMtOC4wMjQuNTMzLTcuNDY2IDAtMTMuNTItMS4zNi0xMy41Mi0yLjE2NyAwLS45OSA2LjA1NC0yLjUxNiAxMy41Mi0yLjUxNiAxLjIyIDAgMi4zOC4wNTMgMy41MDQuMTMtLjMwNC0uNDE3LS41NTQtLjg2NC0uODEtMS4zMTQtLjg3Ny0uMDM2LTEuNzctLjA2LTIuNjk0LS4wNi04LjI5IDAtMTUuMDEgMS40NC0xNS4wMSAzLjgyNHY2LjcwM2MwIDEuNzk3IDYuNzIgMy4yNTMgMTUuMDEgMy4yNTNzMTUuMDEtMS40NTYgMTUuMDEtMy4yNTNsLS4wMDMtMy4yMjd6IiBmaWxsPSJ1cmwoI3ByZWZpeF9fcGFpbnQxX2xpbmVhcl85ODU5XzcyMzcpIi8+PGRlZnM+PGxpbmVhckdyYWRpZW50IGlkPSJwcmVmaXhfX3BhaW50MF9saW5lYXJfOTg1OV83MjM3IiB4MT0iMTYuODk3IiB5MT0iMjguNjEzIiB4Mj0iMTYuODk3IiB5Mj0iMS42IiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSI+PHN0b3Agc3RvcC1jb2xvcj0iIzMyQkVERCIvPjxzdG9wIG9mZnNldD0iMSIgc3RvcC1jb2xvcj0iIzUwRTZGRiIvPjwvbGluZWFyR3JhZGllbnQ+PGxpbmVhckdyYWRpZW50IGlkPSJwcmVmaXhfX3BhaW50MV9saW5lYXJfOTg1OV83MjM3IiB4MT0iMTUuNDkiIHkxPSI0MS45OCIgeDI9IjQ1LjUxIiB5Mj0iNDEuOTgiIGdyYWRpZW50VW5pdHM9InVzZXJTcGFjZU9uVXNlIj48c3RvcCBzdG9wLWNvbG9yPSIjQzc0NjM0Ii8+PHN0b3Agb2Zmc2V0PSIuNSIgc3RvcC1jb2xvcj0iI0RCODk3RCIvPjxzdG9wIG9mZnNldD0iMSIgc3RvcC1jb2xvcj0iI0M3NDYzNCIvPjwvbGluZWFyR3JhZGllbnQ+PC9kZWZzPjwvc3ZnPg=="); } -.azure-oracle-exadata-database, .azure-oracledatabase-exadata-infrastructure { +.azure-oracle-exadata-infrastructure { background-image: url("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNjAiIGhlaWdodD0iNjAiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTIwLjU0NyAyNS41N2M1LjU2MyAwIDEwLjM2Ni42NjMgMTIuOTYzIDEuODgzIDIuNjczLTEuNCA0LjU0LTQuMTMgNC42NTctNy4zNDNhOC41NzIgOC41NzIgMCAwMC03LjQ0NC04LjI0Yy0uMjU2LTUuOTEtNS4yMTYtMTAuNTE3LTExLjEzLTEwLjMzN0ExMS4wODQgMTEuMDg0IDAgMDA5IDguNzU3Yy01LjAyNy42MS04Ljg1IDQuOC05IDkuODU2LjE2NyA0LjI1NyAyLjg4MyA3LjggNi42MTcgOS4yNTQgMi4yMTYtMS40NTQgNy42MDYtMi4yOTcgMTMuOTMtMi4yOTd6IiBmaWxsPSJ1cmwoI3ByZWZpeF9fcGFpbnQwX2xpbmVhcl85ODU5Xzc3MDUpIi8+PHBhdGggZD0iTTU4LjI3IDIuMzlIMzEuNzQzYTEuNjUzIDEuNjUzIDAgMDAtMS43MyAxLjU2N3YyMy43NTZjMi41MDcuNTE3IDQuMDY0IDEuMTU3IDQuMDY0IDEuNjI3IDAgLjA2MyAxLjQ5My4yMjMgMS40OTMuMjIzdjE5LjAxaDIyLjdBMS42NTMgMS42NTMgMCAwMDYwIDQ3LjAwN1YzLjk1N2ExLjY1MyAxLjY1MyAwIDAwLTEuNzMtMS41Njd6IiBmaWxsPSJ1cmwoI3ByZWZpeF9fcGFpbnQxX2xpbmVhcl85ODU5Xzc3MDUpIi8+PHBhdGggZD0iTTM0LjQyMyAyMi4xNDdhMy40MzggMy40MzggMCAwMTMuMjYtMy41OTRoMTQuOTI0YTMuNDQgMy40NCAwIDAxMy4yNiAzLjU5NCAzLjQ0IDMuNDQgMCAwMS0zLjI2IDMuNTkzSDM3LjY4M2EzLjQzOCAzLjQzOCAwIDAxLTMuMjYtMy41OTN6TTM0LjQyMyAxMS40NjdhMy40MzggMy40MzggMCAwMTMuMjYtMy41OTRoMTQuOTI0YTMuNDQgMy40NCAwIDAxMy4yNiAzLjU5NCAzLjQ0IDMuNDQgMCAwMS0zLjI2IDMuNTkzSDM3LjY4M2EzLjQzOCAzLjQzOCAwIDAxLTMuMjYtMy41OTN6IiBmaWxsPSIjMDAzMDY3Ii8+PHBhdGggZD0iTTM4LjYxNyAxMy44NzdhMi40MSAyLjQxIDAgMTAwLTQuODIgMi40MSAyLjQxIDAgMDAwIDQuODJ6TTM4LjYxNyAyNC41NDdhMi40MSAyLjQxIDAgMTAwLTQuODIgMi40MSAyLjQxIDAgMDAwIDQuODJ6IiBmaWxsPSIjNTBFNkZGIi8+PHBhdGggZD0iTTQ5Ljk2NyA0Mi42NzNMNDYuNjYgMzcuN2wzLjI4LTQuOTNhMS4zNjQgMS4zNjQgMCAwMC0yLjI3LTEuNTFsLTIuNjQzIDMuOTc3LTIuNjQ0LTMuOTc3YTEuMzY0IDEuMzY0IDAgMDAtMi4yNyAxLjUxbDMuMjggNC45My0zLjMwNiA0Ljk3M2ExLjM2NCAxLjM2NCAwIDEwMi4yNyAxLjUwN2wyLjY3My00LjAyIDIuNjczIDQuMDJhMS4zNjEgMS4zNjEgMCAxMDIuMjctMS41MDdoLS4wMDZ6IiBmaWxsPSIjMDAzMDY3Ii8+PHBhdGggZD0iTTIwLjU0NyA1MC44ODdjLTguMyAwLTE1LjAyNy0xLjQ1Ny0xNS4wMjctMy4yNTd2Ny41ODNjMCAxLjggNi43MjcgMy4yNTcgMTUuMDI3IDMuMjU3IDguMyAwIDE1LjAyNi0xLjQ1NyAxNS4wMjYtMy4yNTdWNDcuNjNjMCAxLjgtNi43MjYgMy4yNTctMTUuMDI2IDMuMjU3em0xMi42NDMgMS41NDZhMjMuODIyIDIzLjgyMiAwIDAxLTcuNzggMS4zMS42MjYuNjI2IDAgMTEwLTEuMjUzYzEuMzYgMCAyLjcyNy0uMTI3IDQuMDYtLjM3IDEuMTItLjIwNyAyLjIzMy0uNSAzLjMxLS44N2EuNjI2LjYyNiAwIDExLjQxMyAxLjE4M2gtLjAwM3ptLTEyLjY0My0xMS4zYy04LjMgMC0xNS4wMjctMS40NTYtMTUuMDI3LTMuMjU2djcuOTg2YzAgMS44IDYuNzI3IDMuMjU3IDE1LjAyNyAzLjI1NyA4LjMgMCAxNS4wMjYtMS40NTcgMTUuMDI2LTMuMjU3di03Ljk4NmMwIDEuOC02LjcyNiAzLjI1Ni0xNS4wMjYgMy4yNTZ6bTEyLjY0MyAxLjgxYTIzLjgyMiAyMy44MjIgMCAwMS03Ljc4IDEuMzEuNjI2LjYyNiAwIDExMC0xLjI1MyAyMi42ODUgMjIuNjg1IDAgMDA3LjM3LTEuMjQuNjI2LjYyNiAwIDExLjQxMyAxLjE4M2gtLjAwM3ptLTEyLjY0My0xNy4zN2MtOC4zIDAtMTUuMDI3IDEuNDQ0LTE1LjAyNyAzLjgyN3Y2LjcxYzAgMS44IDYuNzI3IDMuMjU3IDE1LjAyNyAzLjI1NyA4LjMgMCAxNS4wMjYtMS40NTcgMTUuMDI2LTMuMjU3di02LjQ2M2MwLTIuNjMtNi43MjYtNC4wNzQtMTUuMDI2LTQuMDc0em0xMi42NDMgOC4xNTRhMjMuNzA3IDIzLjcwNyAwIDAxLTcuNzggMS4zMS42MjYuNjI2IDAgMTEwLTEuMjU0IDIyLjY3NiAyMi42NzYgMCAwMDcuMzctMS4yNC42MjYuNjI2IDAgMTEuNDEzIDEuMTgzaC0uMDAzek0yMC41NDcgMzEuNTFjLTcuNDc0IDAtMTMuNTM0LTEuMzYzLTEzLjUzNC0yLjE2NyAwLS45OSA2LjA2LTIuNTIgMTMuNTM0LTIuNTIgNy40NzMgMCAxMy41MzMgMS41OSAxMy41MzMgMi41MiAwIC44NDQtNi4wNiAyLjE2Ny0xMy41MzMgMi4xNjd6IiBmaWxsPSJ1cmwoI3ByZWZpeF9fcGFpbnQyX2xpbmVhcl85ODU5Xzc3MDUpIi8+PGRlZnM+PGxpbmVhckdyYWRpZW50IGlkPSJwcmVmaXhfX3BhaW50MF9saW5lYXJfOTg1OV83NzA1IiB4MT0iMTkuMDgzIiB5MT0iMjcuODY3IiB4Mj0iMTkuMDgzIiB5Mj0iMS41MyIgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiPjxzdG9wIHN0b3AtY29sb3I9IiMzMkJFREQiLz48c3RvcCBvZmZzZXQ9IjEiIHN0b3AtY29sb3I9IiM1MEU2RkYiLz48L2xpbmVhckdyYWRpZW50PjxsaW5lYXJHcmFkaWVudCBpZD0icHJlZml4X19wYWludDFfbGluZWFyXzk4NTlfNzcwNSIgeDE9IjQ1LjAwNyIgeTE9IjQ4LjU3NyIgeDI9IjQ1LjAwNyIgeTI9IjIuMzkiIGdyYWRpZW50VW5pdHM9InVzZXJTcGFjZU9uVXNlIj48c3RvcCBzdG9wLWNvbG9yPSIjOTc5Nzk3Ii8+PHN0b3Agb2Zmc2V0PSIxIiBzdG9wLWNvbG9yPSIjQjNCMkIzIi8+PC9saW5lYXJHcmFkaWVudD48bGluZWFyR3JhZGllbnQgaWQ9InByZWZpeF9fcGFpbnQyX2xpbmVhcl85ODU5Xzc3MDUiIHgxPSI1LjUyIiB5MT0iNDIuMDIiIHgyPSIzNS41NyIgeTI9IjQyLjAyIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSI+PHN0b3Agc3RvcC1jb2xvcj0iI0M3NDYzNCIvPjxzdG9wIG9mZnNldD0iLjUiIHN0b3AtY29sb3I9IiNEQjg5N0QiLz48c3RvcCBvZmZzZXQ9IjEiIHN0b3AtY29sb3I9IiNDNzQ2MzQiLz48L2xpbmVhckdyYWRpZW50PjwvZGVmcz48L3N2Zz4="); } -.azure-oracledatabase-cloud-vm-cluster { +.azure-oracle-cloud-vm-cluster { background-image: url("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNjAiIGhlaWdodD0iNjAiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTM5LjM3IDQ5LjcyOGMtMTEuMjM4IDAtMjAuMzQ4LTEuOTc1LTIwLjM0OC00LjQxMnYxMC4yNzJjMCAyLjQzNyA5LjExIDQuNDEyIDIwLjM0OCA0LjQxMnMyMC4zNDctMS45NzUgMjAuMzQ3LTQuNDEyVjQ1LjMxNmMwIDIuNDM3LTkuMTEgNC40MTItMjAuMzQ3IDQuNDEyem0xNy4xMiAyLjA5MmMtMS41MzcuNTMtMy4xMy45NS00LjczIDEuMjQ1YTMyLjM5OCAzMi4zOTggMCAwMS01LjgwNy41MjguODQ3Ljg0NyAwIDExMC0xLjY5MyAzMC41NDcgMzAuNTQ3IDAgMDA5Ljk4My0xLjY4Ljg1Ljg1IDAgMDExLjA4Mi41MjQuODQ3Ljg0NyAwIDAxLS41MjQgMS4wNzlsLS4wMDQtLjAwM3pNMzkuMzcgMzYuNTE4Yy0xMS4yMzggMC0yMC4zNDgtMS45NzUtMjAuMzQ4LTQuNDEydjEwLjgxNmMwIDIuNDM3IDkuMTEgNC40MSAyMC4zNDggNC40MXMyMC4zNDctMS45NzYgMjAuMzQ3LTQuNDEzVjMyLjEwM2MwIDIuNDM3LTkuMTEgNC40MTItMjAuMzQ3IDQuNDEydi4wMDN6bTE3LjEyIDIuNDVjLTEuNTQuNTMyLTMuMTMuOTUtNC43MyAxLjI0NWEzMi40MjYgMzIuNDI2IDAgMDEtNS44MDcuNTI4Ljg0Ny44NDcgMCAxMTAtMS42OTMgMzAuNTQ3IDMwLjU0NyAwIDAwOS45ODMtMS42OC44NS44NSAwIDAxMS4wODIuNTI1Ljg0My44NDMgMCAwMS0uNTI0IDEuMDc5bC0uMDA0LS4wMDR6bS0xNy4xMi0yMy41MmMtMTEuMjM4IDAtMjAuMzQ4IDEuOTUxLTIwLjM0OCA1LjE4MXY5LjA4N2MwIDIuNDM3IDkuMTEgNC40MDkgMjAuMzQ4IDQuNDA5czIwLjM0Ny0xLjk3NiAyMC4zNDctNC40MTJ2LTguNzU1YzAtMy41NjItOS4xMS01LjUxLTIwLjM0Ny01LjUxem0xNy4xMiAxMS4wMzhjLTEuNTQuNTMtMy4xMy45NS00LjczIDEuMjQ1YTMyLjM5OCAzMi4zOTggMCAwMS01LjgwNy41MjcuODQ3Ljg0NyAwIDExMC0xLjY5MyAzMC41NDcgMzAuNTQ3IDAgMDA5Ljk4My0xLjY4Ljg1Ljg1IDAgMDExLjA4Mi41MjUuODQ3Ljg0NyAwIDAxLS41MjQgMS4wOGwtLjAwNC0uMDA0ek0zOS4zNyAyMy40OGMtMTAuMTIzIDAtMTguMzI2LTEuODQyLTE4LjMyNi0yLjkzNCAwLTEuMzQyIDguMjAzLTMuNDEzIDE4LjMyNi0zLjQxMyAxMC4xMjIgMCAxOC4zMjUgMi4xNTQgMTguMzI1IDMuNDEzIDAgMS4xNDItOC4yMDMgMi45MzQtMTguMzI1IDIuOTM0eiIgZmlsbD0idXJsKCNwcmVmaXhfX3BhaW50MF9saW5lYXJfOTg1OV84NTExKSIvPjxwYXRoIGQ9Ik0xOS4wMjIgMjAuNTQzdi0uMTU2YzAtMy4wMSA3LjkyOC00LjkxIDE4LjExNy01LjE1Mi0xLjE3Mi0yLjYzLTMuNjI1LTQuNTc4LTYuNjI3LTQuOTc3QzMwLjI1NyA0LjM5MiAyNS4zMzctLjE3NiAxOS40NzEuMDA3QTExLjAwMSAxMS4wMDEgMCAwMDguOTYzIDcuMTcgMTAuMTQzIDEwLjE0MyAwIDAwLjA0IDE2Ljk0NWMuMjIzIDUuNjcgNC45OSAxMC4wODkgMTAuNjYgOS44ODYuMzE2IDAgLjYzOC0uMDEzLjkzNy0uMDRoNy4zODNsLjAwMy02LjI0OHoiIGZpbGw9InVybCgjcHJlZml4X19wYWludDFfbGluZWFyXzk4NTlfODUxMSkiLz48ZGVmcz48bGluZWFyR3JhZGllbnQgaWQ9InByZWZpeF9fcGFpbnQwX2xpbmVhcl85ODU5Xzg1MTEiIHgxPSIxOS4wMjIiIHkxPSIzNy43MjQiIHgyPSI1OS43MTciIHkyPSIzNy43MjQiIGdyYWRpZW50VW5pdHM9InVzZXJTcGFjZU9uVXNlIj48c3RvcCBzdG9wLWNvbG9yPSIjQzc0NjM0Ii8+PHN0b3Agb2Zmc2V0PSIuNSIgc3RvcC1jb2xvcj0iI0RCODk3RCIvPjxzdG9wIG9mZnNldD0iMSIgc3RvcC1jb2xvcj0iI0M3NDYzNCIvPjwvbGluZWFyR3JhZGllbnQ+PGxpbmVhckdyYWRpZW50IGlkPSJwcmVmaXhfX3BhaW50MV9saW5lYXJfOTg1OV84NTExIiB4MT0iMTguNTg3IiB5MT0iMjYuODM4IiB4Mj0iMTguNTg3IiB5Mj0iMCIgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiPjxzdG9wIHN0b3AtY29sb3I9IiMzMkJFREQiLz48c3RvcCBvZmZzZXQ9IjEiIHN0b3AtY29sb3I9IiM1MEU2RkYiLz48L2xpbmVhckdyYWRpZW50PjwvZGVmcz48L3N2Zz4="); } diff --git a/ocd/packages/desktop/src/css/google-theme.css b/ocd/packages/desktop/src/css/google-theme.css index 14eaaeb61..9700d35e0 100644 --- a/ocd/packages/desktop/src/css/google-theme.css +++ b/ocd/packages/desktop/src/css/google-theme.css @@ -47,14 +47,14 @@ background-image: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCI+PGRlZnM+PHN0eWxlPi5wcmVmaXhfX2Nscy0xe2ZpbGw6I2FlY2JmYX0ucHJlZml4X19jbHMtMntmaWxsOiM2NjlkZjZ9LnByZWZpeF9fY2xzLTN7ZmlsbDojNDI4NWY0fTwvc3R5bGU+PC9kZWZzPjxnIGRhdGEtbmFtZT0iUHJvZHVjdCBJY29ucyI+PHBhdGggY2xhc3M9InByZWZpeF9fY2xzLTEiIGQ9Ik0xNiAyaDZ2NmgtNnoiLz48cGF0aCBjbGFzcz0icHJlZml4X19jbHMtMiIgZD0iTTE5IDJoM3Y2aC0zeiIvPjxwYXRoIGNsYXNzPSJwcmVmaXhfX2Nscy0xIiBkPSJNMTYgMTZoNnY2aC02eiIvPjxwYXRoIGNsYXNzPSJwcmVmaXhfX2Nscy0yIiBkPSJNMTkgMTZoM3Y2aC0zeiIvPjxwYXRoIGNsYXNzPSJwcmVmaXhfX2Nscy0xIiBkPSJNMiAyaDZ2NkgyeiIvPjxwYXRoIGNsYXNzPSJwcmVmaXhfX2Nscy0yIiBkPSJNNSAyaDN2Nkg1eiIvPjxwYXRoIGNsYXNzPSJwcmVmaXhfX2Nscy0xIiBkPSJNMiAxNmg2djZIMnoiLz48cGF0aCBjbGFzcz0icHJlZml4X19jbHMtMiIgZD0iTTUgMTZoM3Y2SDV6TTggNGg4djJIOHpNOCAxOGg4djJIOHpNMTggOGgydjhoLTJ6TTQgOGgydjhINHoiLz48cGF0aCBjbGFzcz0icHJlZml4X19jbHMtMyIgZD0iTTQgOGgydjJINHpNMTggOGgydjJoLTJ6TTggNGgydjJIOHpNOCAxOGgydjJIOHoiLz48L2c+PC9zdmc+"); } -.google-oracle-autonomous-database, .google-oracledatabase-autonomous-database-regular { +.google-oracle-database-autonomous-database { background-image: url("data:image/svg+xml;base64,PHN2ZyBkYXRhLWljb24tbmFtZT0iZGF0YXNldHNJY29uIiB3aWR0aD0iMTgiIGhlaWdodD0iMTgiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNMiAyaDE0djE0SDJWMnptMiAyaDEwdjEwSDRWNHptMiA2aDJ2Mkg2di0yem0wLTRoMnYySDZWNnptNCA0aDJ2MmgtMnYtMnptMC00aDJ2MmgtMlY2eiIvPjwvc3ZnPg=="); } -.google-oracle-exadata-database, .google-oracledatabase-exadata-infrastructure { +.google-oracle-database-cloud-exadata-infrastructure { background-image: url("data:image/svg+xml;base64,PHN2ZyBkYXRhLWljb24tbmFtZT0iaW5zdGFuY2VUZW1wbGF0ZUljb24iIHdpZHRoPSIxOCIgaGVpZ2h0PSIxOCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0xMy45OTggMTZBMS4wMSAxLjAxIDAgMDAxNSAxNC45OTNWNC4wMDdDMTUgMyAxMy45OTggMiAxMi45OTggMkg1LjAwMkM0LjAwMiAyIDMgMyAzIDQuMDA3djEwLjk4NkMzIDE1LjU1IDMuNDUgMTYgNC4wMDIgMTZINS41bC41LTFoNmwuNSAxaDEuNDk4ek01IDRoOHY5SDVWNHptMSA1LjVhLjUuNSAwIDAxLjQ5LS41aDUuMDJhLjUuNSAwIDAxMCAxSDYuNDlBLjUuNSAwIDAxNiA5LjV6TTggNWgydjJIOFY1em0tMiA2LjVhLjUuNSAwIDAxLjQ5LS41aDUuMDJhLjUuNSAwIDAxMCAxSDYuNDlhLjUuNSAwIDAxLS40OS0uNXoiLz48L3N2Zz4="); } -.google-oracledatabase-cloud-vm-cluster { +.google-oracle-database-cloud-vm-cluster { background-image: url("data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMzIgMzIiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTE1LjYxIDI5Yy02LjE3IDAtMTEtMi44Ni0xMS02LjVWMTZoMnY2LjVjMCAyLjE3IDMuNjIgNC41IDkgNC41djJ6bTAgMHYtMmM1LjM4IDAgOS0yLjMzIDktNC41VjE2aDJ2Ni41YzAgMy42NC00LjgzIDYuNS0xMSA2LjV6IiBmaWxsPSIjNWY2MzY4Ii8+PHBhdGggZD0iTTE1LjYxIDIyLjVjLTYuMTcgMC0xMS0yLjg2LTExLTYuNVY5LjVoMlYxNmMwIDIuMTcgMy42MiA0LjUgOSA0LjV2MnptMCAwdi0yYzUuMzggMCA5LTIuMzMgOS00LjVWOS41aDJWMTZjMCAzLjY0LTQuODMgNi41LTExIDYuNXoiIGZpbGw9IiM4MDg2OGIiLz48cGF0aCBkPSJNMTUuNjEgMTZjLTYuMTcgMC0xMS0yLjg2LTExLTYuNVM5LjQ0IDMgMTUuNjEgM3YyYy01LjM4IDAtOSAyLjMzLTkgNC41czMuNjIgNC41IDkgNC41djJ6bTAgMHYtMmM1LjM4IDAgOS0yLjMzIDktNC41cy0zLjYyLTQuNS05LTQuNVYzYzYuMTcgMCAxMSAyLjg2IDExIDYuNXMtNC44MyA2LjUtMTEgNi41eiIgZmlsbD0iIzlhYTBhNiIvPjwvc3ZnPg=="); } diff --git a/ocd/packages/desktop/src/css/ocd-svg.css b/ocd/packages/desktop/src/css/ocd-svg.css index e663c4788..b5116a7b8 100644 --- a/ocd/packages/desktop/src/css/ocd-svg.css +++ b/ocd/packages/desktop/src/css/ocd-svg.css @@ -85,8 +85,6 @@ svg { } .ocd-svg-simple { - width: var(--svg-icon-width); - height: var(--svg-icon-height); stroke: var(--svg-simple-resource-stroke); stroke-width: var(--svg-simple-resource-stroke-width); stroke-dasharray: var(--svg-simple-resource-stroke-dasharray); @@ -102,10 +100,12 @@ svg { .ocd-svg-resource-simple { width: var(--svg-resource-simple-width); + height: var(--svg-icon-height); } .ocd-svg-resource-detailed { width: var(--svg-resource-detailed-width); + height: var(--svg-icon-height); } .ocd-svg-resource-container { diff --git a/ocd/packages/desktop/src/css/ocd.css b/ocd/packages/desktop/src/css/ocd.css index d3dc7af1e..cf796ed5d 100644 --- a/ocd/packages/desktop/src/css/ocd.css +++ b/ocd/packages/desktop/src/css/ocd.css @@ -106,7 +106,7 @@ summary { /* ** Style Tables - */ +*/ /* Classes for formatting divs as tables */ .table {display: table; margin: 0 auto;} @@ -208,8 +208,6 @@ summary { .ocd-console { display: grid; grid-template-rows: [console-header] var(--console-header-height) [console-toolbar] var(--console-toolbar-height) [console-body] auto [console-footer] var(--console-footer-height); - /* display: flex; - flex-direction: column; */ box-sizing: border-box; margin: 0; padding: 0; @@ -553,7 +551,10 @@ summary { text-align: left; } -.ocd-menu-item>a:hover {} +.ocd-menu-item>a:hover { + background-color: #f2f7f7; + border-radius: 0.5rem; +} .ocd-submenu-item { position: relative; @@ -779,7 +780,6 @@ summary { .ocd-designer { display: grid; grid-template-columns: var(--console-palette-width) calc(100% - var(--console-palette-width) - var(--console-properties-width)) var(--console-properties-width); - /* flex-direction: row; */ box-sizing: border-box; width: 100%; height: 100%; @@ -819,10 +819,8 @@ summary { overflow-x: hidden; overflow-y: scroll; box-sizing: border-box; - /* width: var(--console-palette-width); */ width: 100%; min-height: 100%; - /* border-right: #555555 1px solid; */ padding-bottom: 30px; } @@ -888,9 +886,7 @@ summary { .simple-list-element > div > label, .simple-list-element > div > span { clear: both; - /* margin-left: 2.5em; */ margin-left: 5px; - /* margin: auto; */ text-wrap: none; white-space: nowrap; padding-right: 1em; @@ -959,7 +955,6 @@ summary { background-position-y: center; height: 100%; width: fit-content; - /* padding-left: 24px; */ text-overflow: ellipsis; } @@ -1063,7 +1058,6 @@ summary { font-size: small; margin: 5px; padding-top: 30px; - /* width: 80px; */ text-align: center; border: 1px solid white; justify-self: center; @@ -1215,7 +1209,6 @@ summary { max-height: var(--console-pages-bar-height); width: 100%; max-width: 100%; - /* border-top: #312D2A solid 1px; */ border-left: #312D2A solid 1px; border-right: #312D2A solid 1px; overflow-x: auto; @@ -1259,7 +1252,6 @@ summary { .ocd-designer-canvas { display: block; box-sizing: border-box; - /* min-height: 100%; */ flex-grow: 1; position: relative; overflow: auto; @@ -1317,7 +1309,6 @@ summary { } .ocd-svg-context-menu > div { - /* border: 1px solid black; */ border-radius: 5px; padding: 0; margin: 0; @@ -1332,160 +1323,6 @@ summary { -/* .ocd-svg-icon { - width: var(--canvas-icon-width); - height: var(--canvas-icon-height); - background-repeat: no-repeat; - background-position-x: center; - background-position-y: center; - background-size: 30px 30px; -} - -.ocd-svg-parent-connector { - stroke: var(--svg-resource-parent-connector-stroke); - stroke-width: var(--svg-resource-parent-connector-stroke-width); - stroke-dasharray: var(--svg-resource-parent-connector-stroke-dasharray); - stroke-opacity: var(--svg-resource-parent-connector-stroke-opacitiy); - fill-opacity: 0; -} - -.ocd-svg-association-connector { - stroke: var(--svg-resource-association-connector-stroke); - stroke-width: var(--svg-resource-association-connector-stroke-width); - stroke-dasharray: var(--svg-resource-association-connector-stroke-dasharray); - stroke-opacity: var(--svg-resource-association-connector-stroke-opacitiy); - fill-opacity: 0; -} - -.ocd-svg-container { - stroke: var(--svg-container-resource-stroke); - stroke-width: var(--svg-container-resource-stroke-width); - stroke-dasharray: var(--svg-container-resource-stroke-dasharray); - stroke-opacity: var(--svg-container-resource-stroke-opacitiy); - rx: var(--svg-container-resource-stroke-corner-rx); -} - -.ocd-svg-simple { - width: var(--canvas-icon-width); - height: var(--canvas-icon-height); - stroke: var(--svg-simple-resource-stroke); - stroke-width: var(--svg-simple-resource-stroke-width); - stroke-dasharray: var(--svg-simple-resource-stroke-dasharray); - stroke-opacity: var(--svg-simple-resource-stroke-opacitiy); - rx: var(--svg-simple-resource-stroke-corner-rx); -} - -.ocd-svg-resource-selected { - stroke-width: var(--svg-selected-resource-stroke-width); - stroke-dasharray: var(--svg-selected-resource-stroke-dasharray); - stroke-opacity: var(--svg-selected-resource-stroke-opacitiy); -} - -.ocd-svg-resource-simple { - width: var(--canvas-resource-simple-width); -} - -.ocd-svg-resource-detailed { - width: var(--canvas-resource-detailed-width); -} - -.ocd-svg-resource-container { - width: var(--canvas-resource-container-width); -} - -.ocd-svg-resize { - opacity: 0.1; -} - -.ocd-svg-resize-point { - fill: purple; -} - -.ocd-svg-container-ew-resize { - stroke-width: 3px; - stroke: red; - stroke-opacity: 1; - fill: none; - pointer-events: all; -} - -.ocd-svg-container-ew-resize:hover { - cursor: ew-resize; -} - -.ocd-svg-container-ns-resize { - stroke-width: 3px; - stroke: black; - stroke-opacity: 0.01; - fill: none; - pointer-events: all; -} - -.ocd-svg-container-ns-resize:hover { - cursor: ns-resize; -} - -.ocd-svg-foreign-object { - height: var(--canvas-icon-height); -} - -.ocd-svg-foreign-object > div { - display: grid; - grid-template-columns: var(--canvas-icon-width) auto; - width: 100%; -} - -.ocd-svg-foreign-object-display-name { - display: block; - padding: 0 0 0 5px; - margin: auto; -} - -.ocd-svg-foreign-object-display-name > span { - display: block; - width: 100%; - opacity: 0.8; - margin: 0; - padding: 0; - border: none; - box-sizing: border-box; - font-size: smaller; - overflow-x: hidden; - text-overflow: ellipsis; - white-space: nowrap; - user-select: none; -} - -.ocd-svg-foreign-object-display-name > input { - display: block; - width: 100%; - text-overflow: ellipsis; - margin: 0; - padding: 0; - border: none; - box-sizing: border-box; - font-weight: bolder; - background: transparent; -} - -.ocd-svg-drag-ghost { - opacity: 0.4; - pointer-events: none; -} - -.ocd-svg-context-menu { - height: 18em; - width: 12em; -} - -.ocd-svg-context-menu > div { - border-radius: 5px; - padding: 0; - margin: 0; - box-sizing: border-box; - vertical-align: top; -} */ - .ocd-context-menu-div { position: relative; } @@ -1632,7 +1469,6 @@ table { .ocd-terraform-view { display: flex; flex-direction: column; - /* grid-template-rows: var(--console-layers-bar-height), calc(100% - var(--console-layers-bar-height)); */ max-height: 100%; } @@ -1640,8 +1476,6 @@ table { display: block; overflow: auto; width: 100%; - /* height: 100%; - max-height: 100%; */ flex-grow: 1; } @@ -1663,7 +1497,6 @@ table { .ocd-tabular-view { display: flex; flex-direction: column; - /* grid-template-rows: var(--console-layers-bar-height), calc(100% - var(--console-layers-bar-height)); */ height: 100%; max-height: 100%; } @@ -1672,8 +1505,6 @@ table { display: block; overflow: auto; width: 100%; - /* height: 100%; - max-height: 100%; */ flex-grow: 1; } @@ -1766,7 +1597,6 @@ table { border: 1px solid black; border-radius: 5px; margin: 15px; - /* padding-left: var(--library-design-background-size); */ height: var(--library-design-height); width: var(--library-design-width); max-height: var(--library-design-height); @@ -1800,7 +1630,6 @@ table { .ocd-variables-view { display: flex; flex-direction: column; - /* grid-template-rows: var(--console-layers-bar-height), calc(100% - var(--console-layers-bar-height)); */ height: 100%; max-height: 100%; } @@ -1808,8 +1637,6 @@ table { .ocd-variables-table { overflow: auto; width: 100%; - /* height: 100%; - max-height: 100%; */ flex-grow: 1; } @@ -1875,7 +1702,6 @@ table { .ocd-common-tags-view { display: flex; flex-direction: column; - /* grid-template-rows: var(--console-layers-bar-height), calc(100% - var(--console-layers-bar-height)); */ height: 100%; max-height: 100%; } @@ -1883,8 +1709,6 @@ table { .ocd-tags-table { overflow: auto; width: 100%; - /* height: 100%; - max-height: 100%; */ flex-grow: 1; } @@ -2188,7 +2012,6 @@ table { .ocd-style-stroke-dasharray-1-1 { background-image: url("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNTAiIGhlaWdodD0iMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cGF0aCBkPSJNNSAwaDM1IiBzdHJva2U9IiMxNjE1MTMiIHN0cm9rZS1kYXNoYXJyYXk9IjEgMSIvPjwvc3ZnPg=="); - /* content: url("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNTAiIGhlaWdodD0iMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cGF0aCBkPSJNNSAwaDM1IiBzdHJva2U9IiMxNjE1MTMiIHN0cm9rZS1kYXNoYXJyYXk9IjEgMSIvPjwvc3ZnPg=="); */ } .ocd-style-stroke-dasharray-2-2 { @@ -2315,7 +2138,6 @@ table { border-radius: 5px; border: grey 1px solid; width: 100%; - /* margin: 5px; */ margin: 5px 25px 5px 5px; box-sizing: border-box; } @@ -2388,8 +2210,6 @@ table { width: 100%; height: 100%; overflow: hidden; - /* opacity: 0.6; - background-color: white; */ background: rgba(0, 0, 0, 0.05); } @@ -2419,8 +2239,6 @@ table { width: 100%; height: 100%; overflow: hidden; - /* opacity: 0.6; - background-color: white; */ background: rgba(0, 0, 0, 0.05); } @@ -2509,7 +2327,6 @@ table { .ocd-compartment-picker li > label:hover, .ocd-compartment-picker li > span:hover { - /* background-color: var(--dialog-highlight-colour); */ font-weight: bolder; } @@ -2523,9 +2340,6 @@ table { .ocd-compartment-hierarchy { display: inline-block; - /* border: 1px solid var(--dialog-input-border-colour); - padding: 2px; - box-sizing: border-box; */ font-family: var(--dialog-input-font-family); font-size: var(--dialog-input-font-size); } @@ -2534,83 +2348,13 @@ table { -/* -** Properties -*/ - -/* -.ocd-empty-relative { - position: relative; - z-index: 100; -} - -.ocd-properties-panel-old { - display: block; - position: absolute; - top: 0px; - right: 0px; - z-index: 100; - height: calc(100vh - var(--console-header-height) - var(--console-toolbar-height) - var(--console-footer-height)); - width: 300px; - border-left: #555555 1px solid; - background-color: #fff; - transition: all 0.25s; -} - -.ocd-properties-panel-button-bar { - display: inline-block; - margin: 1px 2px 0 2px; - min-width: 100%; - border-bottom: #555555 1px solid; -} - -.ocd-properties-panel-button-bar>button { - border-width: 1px 1px 0 0; - border-color: #555555; - border-style: solid; - background-color: #fff; -} - -.ocd-properties-panel-button-bar>button:hover { - background-color: #d1d1d4; -} - -.ocd-properties-panel-button-bar>button:first-child { - border-width: 1px 1px 0 1px; -} - -.ocd-properties-sheet { - padding: 2px; -} - -.ocd-property { - margin-top: 5px; - display: grid; - font-family: Arial, Helvetica, sans-serif; - color: #000; -} - -.ocd-property>label { - font-size: smaller; - font-weight: bolder; -} - -.ocd-property>input { - margin: 2px; -} -*/ - - - - - /* ** Slide Positioning */ .ocd-slide-left { transform: translateX(-100%); - /* transition: all 0.25s; */ + transition: all 0.25s; } .ocd-slide-right { diff --git a/ocd/packages/desktop/src/data/OcdPalette.ts b/ocd/packages/desktop/src/data/OcdPalette.ts index cddfff24f..3a71d1661 100644 --- a/ocd/packages/desktop/src/data/OcdPalette.ts +++ b/ocd/packages/desktop/src/data/OcdPalette.ts @@ -680,17 +680,17 @@ export const palette = { { "container": false, "title": "Oracle Exadata Database@Azure", - "class": "azure-oracledatabase-exadata-infrastructure" + "class": "azure-oracle-exadata-infrastructure" }, { "container": false, "title": "Oracle Autonomous Database@Azure", - "class": "azure-oracledatabase-autonomous-database-regular" + "class": "azure-oracle-autonomous-database" }, { "container": false, "title": "Oracle VM Cluster Database@Azure", - "class": "azure-oracledatabase-cloud-vm-cluster" + "class": "azure-oracle-cloud-vm-cluster" }, ] }, @@ -750,17 +750,17 @@ export const palette = { { "container": false, "title": "Oracle Exadata Database@Google", - "class": "google-oracledatabase-exadata-infrastructure" + "class": "google-oracle-database-cloud-exadata-infrastructure" }, { "container": false, "title": "Oracle Autonomous Database@Google", - "class": "google-oracledatabase-autonomous-database-regular" + "class": "google-oracle-database-autonomous-database" }, { "container": false, "title": "Oracle VM Cluster Database@Google", - "class": "google-oracledatabase-cloud-vm-cluster" + "class": "google-oracle-database-cloud-vm-cluster" }, ] }, diff --git a/ocd/packages/desktop/src/data/OcdReleaseNotes.ts b/ocd/packages/desktop/src/data/OcdReleaseNotes.ts index b8d6db8a1..cb38a0c45 100644 --- a/ocd/packages/desktop/src/data/OcdReleaseNotes.ts +++ b/ocd/packages/desktop/src/data/OcdReleaseNotes.ts @@ -4,9 +4,9 @@ */ export const releaseNotes = `[![License: UPL](https://img.shields.io/badge/license-UPL-green)](https://img.shields.io/badge/license-UPL-green) [![Quality Gate Status](https://sonarcloud.io/api/project_badges/measure?project=oracle_oci-designer-toolkit&metric=alert_status)](https://sonarcloud.io/summary/new_code?id=oracle_oci-designer-toolkit) -# September 2024 Release (Version 0.64.0) +# September 2024 Release (Version 0.65.0) ____ -**Update 0.64.0**: This update addresses the following issues. +**Update 0.65.0**: This update addresses the following issues. 1. OKIT-Web: Resolve issue where save dialog did not display existing content (#717) 2. OKIT-Web: Fix for underlying AuthLib api change. ____ diff --git a/ocd/packages/desktop/src/data/OcdSvgCssData.ts b/ocd/packages/desktop/src/data/OcdSvgCssData.ts new file mode 100644 index 000000000..d28699016 --- /dev/null +++ b/ocd/packages/desktop/src/data/OcdSvgCssData.ts @@ -0,0 +1,3263 @@ +/* +** Copyright (c) 2020, 2024, Oracle and/or its affiliates. +** Licensed under the Universal Permissive License v 1.0 as shown at https://oss.oracle.com/licenses/upl. +*/ +/* +** +** ====================================================================== +** === Auto Generated Code All Edits Will Be Lost During Regeneration === +** ====================================================================== +** +*/ + +export const svgCssData: Record = { + 'azure-theme.css': String.raw`/* Copyright (c) 2020, Oracle and/or its affiliates. All rights reserved. */ +/* Licensed under the Universal Permissive License v 1.0 as shown at https://oss.oracle.com/licenses/upl. */ + +/* +** Groups +*/ +.azure-cloud { + background-image: url("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMzIiIGhlaWdodD0iMzIiIHZpZXdCb3g9IjAgMCA3NCA1NCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48ZGVmcz48bGluZWFyR3JhZGllbnQgaWQ9InByZWZpeF9fYSIgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiIHgxPSI2MS4yOTUiIHkxPSIxMC45OTgiIHgyPSIuOTkzIiB5Mj0iNTMuNzY3Ij48c3RvcCBvZmZzZXQ9IjAiIHN0b3AtY29sb3I9IiM2ODk5ZDEiLz48c3RvcCBvZmZzZXQ9Ii43MjIiIHN0b3AtY29sb3I9IiNiN2Q1NTMiLz48L2xpbmVhckdyYWRpZW50PjxsaW5lYXJHcmFkaWVudCBpZD0icHJlZml4X19iIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgeDE9IjYyLjYyNiIgeTE9IjEyLjg3NSIgeDI9IjU5LjU2MiIgeTI9IjE1LjA0azure+PHN0b3Agb2Zmc2V0PSIwIiBzdG9wLWNvbG9yPSIjNjg5OWQxIi8+PHN0b3Agb2Zmc2V0PSIuNzIyIiBzdG9wLWNvbG9yPSIjYjdkNTUzIi8+PC9saW5lYXJHcmFkaWVudD48bGluZWFyR3JhZGllbnQgaWQ9InByZWZpeF9fYyIgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiIHgxPSI2Mi44OTgiIHkxPSIxMy4yNTgiIHgyPSIyLjU5NiIgeTI9IjU2LjAyNiI+PHN0b3Agb2Zmc2V0PSIwIiBzdG9wLWNvbG9yPSIjNjg5OWQxIi8+PHN0b3Agb2Zmc2V0PSIuNzIyIiBzdG9wLWNvbG9yPSIjYjdkNTUzIi8+PC9saW5lYXJHcmFkaWVudD48bGluZWFyR3JhZGllbnQgaWQ9InByZWZpeF9fZCIgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiIHgxPSIxMC44MzIiIHkxPSIyMy40MjEiIHgyPSIxMC4yNTgiIHkyPSIyMy44MjgiPjxzdG9wIG9mZnNldD0iMCIgc3RvcC1jb2xvcj0iIzY4OTlkMSIvPjxzdG9wIG9mZnNldD0iLjcyMiIgc3RvcC1jb2xvcj0iI2I3ZDU1MyIvPjwvbGluZWFyR3JhZGllbnQ+PC9kZWZzPjxwYXRoIGQ9Ik00NC4zOCAyOC42NWwuMDQuMTJjLjAxLjAzLjAyLjA3LjA0LjExbC4xNy4zLS4xMy4yNi4xOS0uMTcuMjQuMTljLjA1LjAyLjA2LjAzLjA3LjAzbC4wNi4wMi40LjAzaC4xNmMuMDYgMCAuMTItLjAxLjE3LS4wMi4wNy0uMDEuMTMtLjAzLjE5LS4wNi4xMi0uMDUuMi0uMTIuMjgtLjIyTDYzLjEzIDcuNDFsLjQ3IDIuNDgtLjI0LjE0LjI1LS4wNSAyLjA0IDEzLjVjLjAyLjAzLjAzLjA1LjA1LjA3bC4wNi4wNi4wNi4wNi4xLjA0Yy4wMy4wMS4wNi4wMi4xLjAzLjA3LjAyLjEuMDMuMTIuMDNoLjRsLjEzLS4wNGMuMDgtLjAyLjE1LS4wMy4yMi0uMDYuMjgtLjExLjQ3LS4yOS41My0uNTIuMDItLjA2LjAzLS4xMS4wMy0uMTZsLjAyLS4wOS0uMDEtLjI3LS4wOC0xLjIuMjUtLjEtLjI2LjAzLTIuMTYtMTcuNTdjLS4wMi0uMDMtLjAzLS4wNS0uMDUtLjA3YS40MzUuNDM1IDAgMDEtLjA2LS4wN2wtLjEtLjFhLjU3Mi41NzIgMCAwMC0uMDgtLjA3bC4xMS0uMjUtLjE2LjItLjI0LS4xNmMtLjA0LS4wMi0uMDctLjA0LS4xMS0uMDUtLjA0LS4wMi0uMDctLjAzLS4xMS0uMDUtLjA0LS4wMS0uMDctLjAzLS4xLS4wM0w0OC40MyA1LjIxbC0uMS0uMjUuMDMuMjYtMy4xNy41OGMtLjI3LjA2LS4zOS4zMS0uNDQuNDYtLjAzLjA4LS4wNS4xNC0uMDYuMjF2LjE2YzAgLjA5LS4wMS4xMiAwIC4xNnYuMDdsLjAxLjA1Yy4wMS4wNy4wMi4xMi4wMy4xNi4wMS4wNC4wMi4wOC4wNC4xMi4wMS4wMy4wMi4wNy4wNC4xcy4wMy4wNy4wNS4xYy4wMi4wMy4wNC4wNS4wNi4wOC4wMi4wMy4wNC4wNS4wNi4wNy4wMi4wMi4wNS4wNC4wNy4wNS4wMy4wMi4wNi4wMy4wOS4wNC4wNC4wMi4wNy4wMy4xLjAzLjA0LjAxLjA4LjAxLjEzLjAxbC4wMi4yNi4wNS0uMjUgMS41My0uMDkuMDguMjUuMDEtLjI2IDcuNTktLjg5LjEzLjI1LS4wMy0uMjYgNi42NC0uNjUtMTYuNyAyMS41OWMtLjA4LjExLS4xNS4yMi0uMjEuMzQtLjA0LjA4LS4wNy4xNi0uMDguMjNhLjg4Ljg4IDAgMDAtLjAxLjMxYy0uMDIuMDctLjAxLjExLS4wMS4xNXoiIGZpbGw9InVybCgjcHJlZml4X19hKSIvPjxwYXRoIGQ9Ik03MS4xNCAzOC4xbC0uMDEtLjE3YzAtLjEzLS4wMS0uMjYtLjAxLS4zOXYtLjE3YzAtLjA3IDAtLjE0LS4wMS0uMjIgMC0uMDctLjAxLS4xNC0uMDItLjIxbC0uMDItLjE2LS4wMy0uMjktLjAyLS4yYy0uMDEtLjA4LS4wMS0uMTYtLjAyLS4yNGwtLjA1LS4zNWMtLjAxLS4xLS4wMy0uMTktLjA1LS4yOWwtLjAzLS4xOS0uMDMtLjJjLS4wMi0uMDctLjAzLS4xNC0uMDUtLjJsLS4wMy0uMTJjLS4wMy0uMS0uMDUtLjIxLS4wOC0uMzFsLS4wNC0uMTRjLS4wMS0uMDYtLjAzLS4xMi0uMDUtLjE4bC0uMDYtLjE1LS4wNS0uMTRjLS4wMy0uMS0uMDctLjE5LS4xLS4yOWwtLjA0LS4xMmEuODY1Ljg2NSAwIDAwLS4wNy0uMTdjLS4wMi0uMDUtLjA1LS4xMS0uMDgtLjE2bC0uMDUtLjFjLS4wNC0uMDktLjA4LS4xOC0uMTMtLjI3bC0uMDYtLjEyYy0uMDItLjA1LS4wNS0uMS0uMDctLjE1LS4wMy0uMDUtLjA1LS4xLS4wOC0uMTVsLS4wNi0uMTFjLS4wNS0uMDgtLjA5LS4xNy0uMTQtLjI1bC0uMDctLjEyYy0uMDMtLjA1LS4wNS0uMDktLjA4LS4xNGwtLjE2LS4yNGMtLjA1LS4wOC0uMS0uMTYtLjE2LS4yNGwtLjA3LS4xMWMtLjAzLS4wNC0uMDYtLjA5LS4wOS0uMTNsLS43LS44OWMtLjA1LS4wNi0uMS0uMTItLjE1LS4xN2wtLjM0LS4zOS4xMi0uMjUtLjE5LjE3Yy0uMDUtLjA2LS4xMS0uMTItLjE3LS4xN2wtLjQzLS40MmMtLjA0LS4wNC0uMDgtLjA3LS4xMi0uMTFsLS4wOS0uMDhjLS4wNy0uMDYtLjE0LS4xMy0uMjEtLjE5bC0uMDgtLjA3Yy0uMDQtLjA0LS4wOS0uMDgtLjEzLS4xMmwtLjExLS4xYy0uMDMtLjAzLS4wNy0uMDYtLjEtLjA5LS4wNC0uMDItLjEyLS4wNC0uMjEtLjA3LS4xLS4wMy0uMTktLjA2LS4yOS0uMDdsLS4wNy0uMDJjLS4wMi0uMDEtLjA0LS4wMS0uMDYtLjAxLS4wNi0uMDEtLjA5IDAtLjEzIDAtLjIyLjAxLS4zNi4wNC0uNDguMDlhLjg0OC44NDggMCAwMC0uNDcuNDdjLS4wNS4xMS0uMDcuMjQtLjA3LjQgMCAuMTEuMDEuMjEuMDQuMzEuMDIuMDkuMDUuMTcuMDkuMjYuMDMuMDguMDguMTYuMTIuMjQuMDQuMDcuMDkuMTQuMTUuMjFhMy4zMiAzLjMyIDAgMDAuMzYuMzdjLjA2LjA1LjEuMDkuMTMuMTNsLjU4LjU3Yy4wNS4wNC4wOS4wOS4xMy4xMy4wNC4wNC4wOC4wOS4xMi4xNGwuMDcuMDljLjA3LjA3LjEzLjE1LjE5LjIzbC4wNy4wOWMuMDQuMDUuMDguMDkuMTIuMTRsLjA0LjA1Yy4wNS4wNi4xLjEyLjE0LjE4LjA0LjA1LjA3LjEuMTEuMTVsLjA2LjA5Yy4wNi4wOC4xMi4xNi4xNy4yNWwuMDcuMWMuMDQuMDUuMDcuMS4xLjE1LjAzLjA2LjA3LjExLjEuMTdsLjA1LjA5Yy4wNC4wNy4wNy4xMy4xMS4ybC4wNy4xM2MuMDQuMDcuMDguMTQuMTEuMjFsLjA1LjA5Yy4wMy4wNi4wNy4xMy4wOS4xOS4wMy4wNi4wNS4xMi4wOC4xOGwuMDUuMTEuMTIuMy4wNS4xMWMuMDMuMDYuMDUuMTIuMDcuMThsLjA2LjIuMDQuMTNjLjAzLjA5LjA1LjE5LjA4LjI4bC4wNS4xNy4wNi4yYy4wMi4wNy4wMy4xNS4wNC4yMmwuMDIuMTNjLjAyLjA5LjAzLjE4LjA1LjI3bC4wNC4yMmMuMDEuMDcuMDMuMTUuMDMuMjMuMDEuMDkuMDIuMTkuMDIuMjlsLjAxLjFjLjAxLjEuMDEuMi4wMi4zMWwuMDEuMjNjLjAxLjA4LjAxLjE3LjAxLjI2di4wOGMwIC4wNyAwIC4xNC0uMDEuMjJsLS4wMS4xMmMtLjAxLjE4LS4wMS4zMS0uMDIuNDNsLS4wMy4zNi0uMDIuMTlhNS44NTIgNS44NTIgMCAwMS0uMTEuNzhsLS4wMi4wOWMtLjA0LjIxLS4wNi4zNi0uMS41Mi0uMDUuMTktLjEuMzktLjE2LjU4LS4wNy4yMi0uMTQuNDMtLjIyLjY0LS4xLjI2LS4yMS41MS0uMzQuNzYtLjIuMzktLjQuNzQtLjYzIDEuMDUtLjIyLjMxLS40NC41OC0uNjcuODItLjM1LjM4LS43Ni43NC0xLjI1IDEuMWExMC4xNCAxMC4xNCAwIDAxLTIuMDMgMS4yYy0uMjMuMTEtLjQ4LjIxLS43Mi4zLS4yNS4xLS40Ni4xOC0uNjcuMjVsLS4wOS4wM2MtLjA0LjAyLS4wOC4wMy0uMTIuMDUtLjA4LjAzLS4xNi4wNC0uMjMuMDYtLjA1LjAxLS4xLjAyLS4xNS4wNC0uMTkuMDUtLjM3LjEtLjU2LjE0LS4wNy4wMi0uMTQuMDMtLjIxLjA1YTMuNTg5IDMuNTg5IDAgMDEtLjY2LjEybC0uMTguMDJjLS4xNi4wMi0uMzIuMDUtLjQ4LjA3bC0uMTkuMDNjLS4xLjAxLS4xOS4wMy0uMjkuMDQtLjA5LjAxLS4xNy4wMS0uMjYuMDJsLS44LjA1Yy0uMDguMDEtLjE3LjAxLS4yNS4wMS0uMTQuMDEtLjI4LjAxLS40Mi4wMWwtMjAuNTMuMDF2LjEzbC0yMS4zMi0uMTRjLS4xMiAwLS4yMy0uMDEtLjM1LS4wMWwtLjE0LS4wMmMtLjA4IDAtLjE3IDAtLjI1LS4wMWwtLjIzLS4wMy0uMTQtLjAyYy0uMTMtLjAyLS4yNS0uMDMtLjM3LS4wNS0uMTItLjAyLS4yNC0uMDMtLjM2LS4wNi0uMDgtLjAyLS4xNy0uMDMtLjI1LS4wNWwtLjIyLS4wNWMtLjA3LS4wMS0uMTUtLjAzLS4yMi0uMDUtLjEtLjAzLS4yLS4wNi0uMy0uMDhsLS4zMy0uMS0uMTEtLjAzYy0uMDctLjAyLS4xNS0uMDQtLjIyLS4wNy0uMDYtLjAyLS4xMy0uMDUtLjE5LS4wN2wtLjExLS4wMy0uMy0uMTItLjEyLS4wNWMtLjA2LS4wMi0uMTItLjA0LS4xOC0uMDdzLS4xMS0uMDUtLjE3LS4wOGwtLjQ5LS4yNC0uMTgtLjA5Yy0uMDYtLjAzLS4xMS0uMDYtLjE3LS4wOWwtLjEtLjA2Yy0uMDktLjA1LS4xOC0uMS0uMjYtLjE1bC0uMDktLjA1Yy0uMDYtLjAzLS4xMi0uMDYtLjE3LS4xbC0uMjUtLjE2Yy0uMDgtLjA1LS4xNy0uMTEtLjI1LS4xNmwtLjA5LS4wNmMtLjA1LS4wMy0uMTEtLjA3LS4xNi0uMWwtLjA4LS4wNmMtLjAzLS4wMi0uMDYtLjA1LS4xLS4wOGwtLjA2LS4wNS0uMTUtLjEyLS4wOS0uMDdhMi44IDIuOCAwIDAxLS4yLS4xNmwtLjEyLS4xYy0uMDUtLjA0LS4xLS4wNy0uMTQtLjExbC0uMDgtLjA1Yy0uMDUtLjA0LS4xLS4wNy0uMTQtLjEyLS4wNC0uMDQtLjA4LS4wOC0uMTMtLjEybC0uMDgtLjA4Yy0uMDUtLjA0LS4wOS0uMDktLjEzLS4xM2wtLjA4LS4wOC0uMjEtLjIxLS4wOC0uMDhjLS4wNC0uMDQtLjA4LS4wOC0uMTItLjEzbC0uMDgtLjA4Yy0uMDQtLjA0LS4wOC0uMDktLjEyLS4xMy0uMDQtLjA1LS4wOC0uMDktLjExLS4xNGwtLjA3LS4wOWMtLjA1LS4wNi0uMDktLjExLS4xMy0uMTdsLS4zLS4zOS0uMTEtLjE0Yy0uMDQtLjA1LS4wNy0uMTEtLjEtLjE2bC0uMDYtLjA5Yy0uMDQtLjA1LS4wNy0uMTEtLjEtLjE2bC0uMDYtLjFjLS4wNS0uMDgtLjEtLjE3LS4xNi0uMjZsLS4wNi0uMWMtLjAzLS4wNS0uMDYtLjEtLjA5LS4xNmwtLjA0LS4wOGMtLjAzLS4wNi0uMDctLjEzLS4xLS4xOXMtLjA1LS4xMS0uMDgtLjE3bC0uMjMtLjUxYy0uMDMtLjA2LS4wNi0uMTItLjA4LS4xOGwtLjA1LS4xMmMtLjAzLS4wNi0uMDUtLjEyLS4wNy0uMTgtLjAyLS4wNi0uMDQtLjEzLS4wNi0uMTlMNCA0MC4xNmMtLjAzLS4wOC0uMDUtLjE2LS4wOC0uMjRsLS4wNi0uMTdjLS4wMi0uMDctLjA1LS4xNC0uMDctLjJsLS4wNC0uMTJjLS4wMi0uMDYtLjA0LS4xMy0uMDYtLjE5LS4wMi0uMDctLjAzLS4xNC0uMDUtLjIxbC0uMDMtLjEzYy0uMDItLjA5LS4wNC0uMTktLjA3LS4yOGwtLjA0LS4xN2MtLjAyLS4wNy0uMDMtLjE0LS4wNS0uMjJsLS4wMy0uMTNjLS4wMi0uMDctLjAzLS4xNC0uMDQtLjIybC0uMDMtLjIyLS4wMi0uMTVjLS4wMi0uMTItLjAzLS4yMy0uMDUtLjM1bC0uMDItLjE1LS4wMy0uMjMtLjAxLS4wOGMtLjAxLS4wNC0uMDEtLjA5LS4wMi0uMTMgMC0uMDMgMC0uMDctLjAxLS4xMS0uMDEtLjE0LS4wMS0uMjItLjAxLS4zTDMuMTcgMzZjLS4wMS0uMTMtLjAxLS4yNi0uMDItLjRsLS4wMS0uMTVjLS4wMS0uMDgtLjAxLS4xNi0uMDEtLjI0di0uNDFjMC0uMDkuMDEtLjE4LjAyLS4yN2wuMDEtLjE3LjAzLS40NC4wMS0uMTdjLjAxLS4wOS4wMS0uMTguMDItLjI3LjAxLS4xMS4wMy0uMjMuMDUtLjM0bC4wMy0uMTVjLjAyLS4xMy4wNS0uMjUuMDctLjM4bC4wNi0uMzJjLjAyLS4xMS4wNC0uMjIuMDctLjMzLjA0LS4xNy4wOS0uMzMuMTQtLjVsLjAyLS4wOGMuMDYtLjIuMTMtLjQuMi0uNjEuMDMtLjA5LjA1LS4xNi4wOC0uMjMuMDYtLjEyLjA5LS4yNC4xNC0uMzVsLjAzLS4wNmMuMTEtLjI3LjI0LS41Mi4zNi0uNzcuMTUtLjMuMzEtLjYuNS0uOTIuMy0uNS41OS0uOTIuODgtMS4yOS42LS43NiAxLjMyLTEuNDggMi4xNC0yLjE0LjUxLS40MS45OS0uNzYgMS40Ni0xLjA1LjMxLS4yLjY0LS4zOC45Ny0uNTZsLjA5LS4wNWMuMTUtLjA4LjMxLS4xNS40Ny0uMjJsLjQ0LS4yYy4xOC0uMDguMzUtLjE3LjUzLS4yNC4xNS0uMDYuMzEtLjEyLjQ2LS4xN2wuNDItLjE1Yy4xNC0uMDUuMjktLjExLjQzLS4xNmwuMTYuMjItLjA5LS4yNGMuNTYtLjIuODYtLjUxIDEuMDEtMS4wNWwuMDMtLjA5Yy4wMi0uMDYuMDQtLjEzLjA1LS4ybC4yOS0yLjA5LjA2LS4zMy4wNi0uMzNjLjAyLS4xMi4wNC0uMjMuMDYtLjM0LjAzLS4xMy4wNy0uMjcuMS0uNGwuMDgtLjMyYy4wMi0uMS4wNS0uMi4wOC0uMjlsLjAzLS4wOWMuMDctLjIuMTItLjMzLjE3LS40N2wuMTUtLjRjLjA2LS4xNy4xMi0uMzQuMTktLjUuMS0uMjUuMjEtLjUuMzMtLjc0LjEzLS4yOC4yNy0uNTYuNDItLjgzLjE3LS4zMi4zNi0uNjQuNjEtMS4wMi4zOS0uNjEuODQtMS4xOSAxLjMxLTEuNzMuMzEtLjM1LjY1LS42OSAxLTEgLjUxLS40NiAxLjA3LS44OCAxLjY3LTEuMjUuMzYtLjIyLjY2LS40MS45OS0uNTcuMjMtLjEyLjQ3LS4yMi43MS0uMzJsLjI3LS4xMmE0Ljk0IDQuOTQgMCAwMS44Ny0uMzJjLjA4LS4wMi4xNS0uMDQuMjMtLjA3LjE5LS4wNi4zOS0uMTIuNTktLjE4LjA4LS4wMi4xNS0uMDUuMjMtLjA3YTQuNTcgNC41NyAwIDAxLjcyLS4xN2wuMzEtLjA2Yy4xMi0uMDIuMjQtLjA1LjM2LS4wNy4xMS0uMDIuMjItLjAzLjMzLS4wNWwuMjktLjA0Yy4xMS0uMDIuMjMtLjAzLjM0LS4wNWwuMzEtLjAzLjI4LS4wMi4zMi0uMDNjLjExLS4wMS4yMS0uMDEuMzItLjAxaC4xMWMuMTgtLjAxLjM3LS4wMS41NS0uMDFoLjI4Yy4xMyAwIC4yNy4wMS40LjAybC4xNC4wMWMuMDggMCAuMTcuMDEuMjUuMDEuMDguMDEuMTYuMDIuMjQuMDJsLjIyLjAyLjI5LjAzYy4xMi4wMS4yNC4wMy4zNi4wNS4wOS4wMS4xOS4wMy4yOC4wNWwuMi4wM2MuMDcuMDEuMTUuMDIuMjIuMDQuMDcuMDEuMTQuMDMuMjEuMDVsLjEyLjAzYy4xMS4wMy4yMi4wNS4zMy4wOGwuMTEuMDMuMjIuMDYuMi4wNi4xMS4wNGMuMTQuMDQuMjMuMDcuMzEuMS4xMy4wNC4yMi4wNy4zMS4xMS4wNi4wMi4xMi4wNS4xOS4wN2wuMTguMDdjLjA3LjAzLjE1LjA2LjIyLjA5LjEzLjA1LjIxLjA5LjI5LjEzLjA2LjAzLjEzLjA2LjE5LjA5bC4wOS4wNGMuMTMuMDYuMi4xLjI4LjE0bC4yNy4xNGMuMDUuMDMuMTEuMDYuMTYuMDlsLjQ2LjI3Yy4wNS4wMy4xMS4wNi4xNi4xLjA1LjAzLjEuMDYuMTUuMWwuNDQuM2MuMDUuMDMuMS4wNy4xNS4xbC45My43MmMuMDUuMDQuMDkuMDguMTQuMTJsLjA4LjA3LjIyLjE5LjA4LjA3Yy4wNS4wNC4wOS4wOC4xNC4xMmwuMTIuMTIuNS41LjEzLS4xMi4xMS4zNGMuMDUuMDkuMS4xNS4xNS4yMmExLjI4OCAxLjI4OCAwIDAwLjM3LjI5Yy4wOS4wNC4xNi4wNy4yNC4wOS4xLjAyLjE4LjA0LjI3LjA0LjE4LS4wMS4zMi0uMDQuNDUtLjA5LjI5LS4xMi41My0uMzYuNjUtLjY1LjA1LS4xMy4wOC0uMjcuMDktLjQyIDAtLjExLS4wMS0uMi0uMDMtLjI5LS4wMi0uMDktLjA2LS4xNy0uMDktLjI1bC0uMDctLjEzYy0uMDItLjAyLS4wNS0uMDQtLjA2LS4wNy0uMDQtLjA2LS4xLS4xMS0uMTYtLjE3bC0uMDgtLjA4LS41NS0uNTMtLjUxLS40OWMtLjA0LS4wMy0uMDctLjA3LS4xMS0uMWwuMTEtLjI1LS4xNy4xOS0xLjk0LTEuNTMtLjEyLS4wOWMtLjA0LS4wMy0uMDgtLjA1LS4xMS0uMDgtLjA0LS4wMy0uMDgtLjA1LS4xMy0uMDhsLS43NS0uNDRjLS4wNC0uMDMtLjA5LS4wNS0uMTMtLjA4bC0uMjYtLjE0Yy0uMDUtLjAyLS4wOS0uMDUtLjE0LS4wN2wtLjgtLjM5Yy0uMDQtLjAyLS4wOS0uMDUtLjE0LS4wN2wtLjE1LS4wNi0uMTQtLjA1YTEuMjIgMS4yMiAwIDAxLS4xNy0uMDdsLS41My0uMTljLS4wNS0uMDItLjEtLjA0LS4xNi0uMDZsLS4yNS0uMDhjLS4xLS4wMy0uMTYtLjA1LS4yMi0uMDZsLS4xNC0uMDQtLjMxLS4wOS0uMTQtLjA0Yy0uMDYtLjAyLS4xMS0uMDMtLjE3LS4wNWwtLjA3LS4wMmMtLjA5LS4wMi0uMTctLjA1LS4yNS0uMDYtLjA2LS4wMS0uMTItLjAyLS4xOS0uMDRsLS4xNS0uMDNjLS4xMS0uMDItLjIyLS4wNC0uMzQtLjA2bC0uMTQtLjAzYy0uMDYtLjAxLS4xMy0uMDMtLjE5LS4wNGwtLjEtLjAyYy0uMDgtLjAxLS4xNy0uMDMtLjI1LS4wNC0uMDctLjAxLS4xMy0uMDEtLjItLjAybC0uMTYtLjAxYy0uMTItLjAxLS4yNC0uMDMtLjM2LS4wNGwtLjE2LS4wMmMtLjA3LS4wMS0uMTMtLjAyLS4yLS4wMmwtMS44OC0uMTVoLS43NGwtMS40Ni4yMy0uMzMuMDYtLjMyLjA2LS4zMi4wNi0uMTMtLjI0LjA2LjI1Yy0uMS4wMi0uMTkuMDUtLjI4LjA3bC0uMTkuMDVjLS4xOS4wNS0uMzcuMDktLjU1LjE1LS4yLjA2LS4zOS4xMi0uNTguMTgtLjIxLjA3LS40Mi4xNS0uNjIuMjItLjIzLjA5LS40NS4xOC0uNjguMjgtLjI2LjExLS41LjIyLS43My4zMy0uMy4xNS0uNTkuMzItLjg4LjQ4LS4zNy4yMS0uNzQuNDUtMS4xLjctMS4xNy44MS0yLjI2IDEuNzgtMy4yMyAyLjg4LS40LjQ1LS43OC45NC0xLjIgMS41NS0uMjUuMzctLjUuNzQtLjcyIDEuMTItLjE3LjI5LS4zNC41OS0uNDkuODlsLS4wMy4wNmMtLjEyLjI0LS4yNC40OC0uMzUuNzItLjA3LjE2LS4xNC4zMy0uMi40OWwtLjEzLjM0Yy0uMDcuMTctLjEzLjMzLS4xOS41LS4wNS4xNC0uMDkuMjgtLjE0LjQybC0uMTIuMzYtLjEyLjM5Yy0uMDMuMS0uMDUuMjEtLjA4LjMybC0uMDkuMzctLjA5LjM4Yy0uMDMuMTMtLjA2LjI3LS4wOC40MWwtLjAyLjA5LS4wOS40OS0uMDQuMjFjLS4wMi4wOS0uMDQuMTgtLjA1LjI4LS4xLjY4LS41Mi45My0uOTEgMS4wOWwtLjI0LjFjLS4yNC4xLS40Ny4yLS43LjMtLjI2LjEyLS41Mi4yNC0uNzcuMzctLjI5LjE1LS41OC4zLS44Ni40NmExNi43OTIgMTYuNzkyIDAgMDAtMi44NCAyLjA0bC0xLjI1IDEuMjVjLS41Mi41OC0uOTggMS4xNC0xLjM3IDEuNy0uMDIuMDItLjAzLjA1LS4wNC4wNy0uMDIuMDMtLjA0LjA3LS4wNi4xLS4xOS4yOC0uMzguNi0uNiAxLS4xNC4yNi0uMjcuNTMtLjQuOC0uMTEuMjMtLjIxLjQ3LS4zMS43LS4wOS4yMy0uMTcuNDMtLjI0LjY0LS4wNC4xMi0uMDguMjQtLjExLjM3bC0uMTIuNDFjLS4wNC4xMi0uMDcuMjQtLjExLjM2bC0uMTIuNTJjLS4wMi4xLS4wNC4xOS0uMDUuMjlsLS4wNi4zNC0uMDYuMzRjLS4wMS4wNy0uMDMuMTUtLjA0LjIyLS4wMy4wOS0uMDQuMTctLjA1LjI1bC0uMTUgMS4wOC4xMiAzLjA5LjA5LjYtLjI0LjE1LjI2LS4wNC4wNS4yM2MuMDEuMDcuMDMuMTQuMDQuMmwuMDMuMTNjLjAzLjEzLjA0LjIzLjA3LjMzbC4wMy4xNmMuMDEuMDYuMDIuMTIuMDQuMTguMDEuMDYuMDMuMTIuMDUuMThsLjEzLjQ0Yy4wNC4xNC4wNi4yMy4wOS4zMWwuMDQuMTVjLjAxLjA1LjAzLjExLjA1LjE2LjAyLjA1LjA0LjExLjA2LjE2bC4zMi44M2MuMDIuMDUuMDQuMTEuMDYuMTZsLjEzLjI3Yy4wMi4wNS4wNS4xLjA3LjE1bC4wNi4xMmMuMDQuMDkuMDkuMTguMTMuMjdsLjA2LjEzYy4wMi4wNS4wNS4xLjA3LjE0bC4xNC4yNmMuMDMuMDUuMDUuMDkuMDguMTNsLjQ0LjcyYy4wMy4wNS4wNi4wOS4wOS4xNC4wMy4wNC4wNS4wOC4wOC4xMWwuNTEuNjkuMDkuMTIuMTguMjFjLjAzLjA0LjA3LjA4LjExLjEybC4wOC4wOWMuMDYuMDcuMTIuMTQuMTkuMjFsLjM4LjQyYy4wMy4wMy4wNy4wNi4xLjA5bC42Mi41OGMuMDMuMDMuMDcuMDcuMTEuMWwuNzYuNjJjLjA0LjAzLjA4LjA3LjEyLjFsLjIzLjE2Yy4wNi4wNS4xMy4wOS4xOS4xM2wuNzcuNWMuMDguMDUuMTcuMS4yNS4xNWwxLjU5LjgxIDMuNTkgMS4yOGMuMDUuMDIuMTUuMDEuMjUuMDFoMS4wNGwxNy42Ni4wMWguNjFsMjQuODEtLjA2Yy4wOCAwIC4xNSAwIC4yMy0uMDEuMDggMCAuMTYtLjAxLjI0LS4wMmwuMTktLjAyLjI5LS4wMy4yMi0uMDJjLjEyLS4wMS4yNS0uMDIuMzctLjA0LjA3LS4wMS4xMy0uMDEuMi0uMDIuMDgtLjAxLjE2LS4wMS4yNC0uMDIuMDktLjAxLjE4LS4wMy4yNy0uMDUuMDctLjAyLjE1LS4wMy4yMi0uMDQuMTctLjAzLjMzLS4wNi40OS0uMDlsLjIxLS4wNGMuMDktLjAyLjE5LS4wMy4yOC0uMDUuMTItLjAzLjIzLS4wNi4zNS0uMWwuMi0uMDYuNTEtLjE1LjA3LS4wMmMuMDgtLjAzLjE2LS4wNS4yNS0uMDcuMTEtLjAzLjIyLS4wNi4zMy0uMS4yMS0uMDguNC0uMTUuNTktLjIzbC4wOC0uMDNjLjI0LS4xLjQ4LS4yMS43Mi0uMzIuMjctLjEzLjU0LS4yNi44LS40LjM2LS4xOS42OC0uMzguOTctLjU3IDEuMTEtLjcxIDIuMDItMS41MyAyLjgxLTIuNS4yNy0uMzQuNTMtLjcuNzctMS4wNy4xNy0uMjguMzItLjU3LjQ2LS44Ni4xMS0uMjMuMjEtLjQ3LjMxLS43bC4wNy0uMThjLjA2LS4xNi4xMy0uMzEuMTgtLjQ3LjA0LS4xMS4wNi0uMjMuMDktLjM0bC4wOS0uMzRjLjA0LS4xMy4wNy0uMjYuMS0uNGwuMDYtLjM1LjAyLS4xM2MuMDMtLjE1LjA1LS4zMS4wNy0uNDdsLjAzLS4xOGMuMDEtLjA5LjAzLS4xOS4wNC0uMjguMDEtLjA4LjAxLS4xNi4wMS0uMjRsLjAxLS4yNWMuMDEtLjEyLjAyLS4yMy4wMi0uMzVsLjAxLS4xN2MwLS4wOC4wMS0uMTYuMDEtLjI0LS4wNC0uMDYtLjA0LS4xNC0uMDUtLjIxeiIgZmlsbD0idXJsKCNwcmVmaXhfX2MpIi8+PC9zdmc+"); +} + +.azure-compute { + background-image: url("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMzIiIGhlaWdodD0iMzIiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGRlZnM+PGxpbmVhckdyYWRpZW50IHgxPSI5NS42OTIlIiB5MT0iNC4zMDglIiB4Mj0iMCUiIHkyPSIxMDAlIiBpZD0icHJlZml4X19hIj48c3RvcCBzdG9wLWNvbG9yPSIjNTNBMEZEIiBvZmZzZXQ9IjAlIi8+PHN0b3Agc3RvcC1jb2xvcj0iI0I0RUM1MSIgb2Zmc2V0PSIxMDAlIi8+PC9saW5lYXJHcmFkaWVudD48L2RlZnM+PHBhdGggZD0iTTMxLjMzMyAxMC42NjdhLjY2Ny42NjcgMCAwMDAtMS4zMzRoLTJWNi42NjdoMmEuNjY3LjY2NyAwIDAwMC0xLjMzNGgtMnYtLjY2NmMwLTEuMTAzLS44OTctMi0yLTJoLS42NjZ2LTJhLjY2Ny42NjcgMCAwMC0xLjMzNCAwdjJoLTIuNjY2di0yYS42NjcuNjY3IDAgMDAtMS4zMzQgMHYyaC0yLjY2NnYtMmEuNjY3LjY2NyAwIDAwLTEuMzM0IDB2MmgtMi42NjZ2LTJhLjY2Ny42NjcgMCAwMC0xLjMzNCAwdjJoLTIuNjY2di0yYS42NjcuNjY3IDAgMDAtMS4zMzQgMHYySDYuNjY3di0yYS42NjcuNjY3IDAgMDAtMS4zMzQgMHYyaC0uNjY2Yy0xLjEwMyAwLTIgLjg5Ny0yIDJ2LjY2NmgtMmEuNjY3LjY2NyAwIDAwMCAxLjMzNGgydjIuNjY2aC0yYS42NjcuNjY3IDAgMDAwIDEuMzM0aDJ2Mi42NjZoLTJhLjY2Ny42NjcgMCAwMDAgMS4zMzRoMnYyLjY2NmgtMmEuNjY3LjY2NyAwIDAwMCAxLjMzNGgydjIuNjY2aC0yYS42NjcuNjY3IDAgMDAwIDEuMzM0aDJ2Mi42NjZoLTJhLjY2Ny42NjcgMCAwMDAgMS4zMzRoMnYuNjY2YzAgMS4xMDMuODk3IDIgMiAyaC42NjZ2MmEuNjY3LjY2NyAwIDAwMS4zMzQgMHYtMmgyLjY2NnYyYS42NjcuNjY3IDAgMDAxLjMzNCAwdi0yaDIuNjY2djJhLjY2Ny42NjcgMCAwMDEuMzM0IDB2LTJoMi42NjZ2MmEuNjY3LjY2NyAwIDAwMS4zMzQgMHYtMmgyLjY2NnYyYS42NjcuNjY3IDAgMDAxLjMzNCAwdi0yaDIuNjY2djJhLjY2Ny42NjcgMCAwMDEuMzM0IDB2LTJoLjY2NmMxLjEwMyAwIDItLjg5NyAyLTJ2LS42NjZoMmEuNjY3LjY2NyAwIDAwMC0xLjMzNGgtMnYtMi42NjZoMmEuNjY3LjY2NyAwIDAwMC0xLjMzNGgtMnYtMi42NjZoMmEuNjY3LjY2NyAwIDAwMC0xLjMzNGgtMnYtMi42NjZoMmEuNjY3LjY2NyAwIDAwMC0xLjMzNGgtMnYtMi42NjZoMnpNMjggMjcuMzMzYzAgLjM2OC0uMy42NjctLjY2Ny42NjdINC42NjdBLjY2OC42NjggMCAwMTQgMjcuMzMzVjQuNjY3QzQgNC4yOTkgNC4zIDQgNC42NjcgNGgyMi42NjZjLjM2NyAwIC42NjcuMjk5LjY2Ny42Njd2MjIuNjY2ek05LjMzMyA4YTEuMzM0IDEuMzM0IDAgMTAtMi42NjcuMDAxQTEuMzM0IDEuMzM0IDAgMDA5LjMzMyA4em0xMS4zMzQgMi42NjdoLTkuMzM0YS42NjcuNjY3IDAgMDAtLjY2Ni42NjZ2OS4zMzRjMCAuMzY4LjI5OC42NjYuNjY2LjY2Nmg5LjMzNGEuNjY3LjY2NyAwIDAwLjY2Ni0uNjY2di05LjMzNGEuNjY3LjY2NyAwIDAwLS42NjYtLjY2NnpNMjAgMjBoLTh2LThoOHY4eiIgZmlsbD0idXJsKCNwcmVmaXhfX2EpIiBmaWxsLXJ1bGU9Im5vbnplcm8iLz48L3N2Zz4="); +} + +.azure-container { + background-image: url("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMzIiIGhlaWdodD0iMzIiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGRlZnM+PGxpbmVhckdyYWRpZW50IHgxPSI5NS42OTIlIiB5MT0iNC4zMDglIiB4Mj0iMCUiIHkyPSIxMDAlIiBpZD0icHJlZml4X19hIj48c3RvcCBzdG9wLWNvbG9yPSIjNTNBMEZEIiBvZmZzZXQ9IjAlIi8+PHN0b3Agc3RvcC1jb2xvcj0iI0I0RUM1MSIgb2Zmc2V0PSIxMDAlIi8+PC9saW5lYXJHcmFkaWVudD48L2RlZnM+PHBhdGggZD0iTTMxLjMzMyAxMC42NjdhLjY2Ny42NjcgMCAwMDAtMS4zMzRoLTJWNi42NjdoMmEuNjY3LjY2NyAwIDAwMC0xLjMzNGgtMnYtLjY2NmMwLTEuMTAzLS44OTctMi0yLTJoLS42NjZ2LTJhLjY2Ny42NjcgMCAwMC0xLjMzNCAwdjJoLTIuNjY2di0yYS42NjcuNjY3IDAgMDAtMS4zMzQgMHYyaC0yLjY2NnYtMmEuNjY3LjY2NyAwIDAwLTEuMzM0IDB2MmgtMi42NjZ2LTJhLjY2Ny42NjcgMCAwMC0xLjMzNCAwdjJoLTIuNjY2di0yYS42NjcuNjY3IDAgMDAtMS4zMzQgMHYySDYuNjY3di0yYS42NjcuNjY3IDAgMDAtMS4zMzQgMHYyaC0uNjY2Yy0xLjEwMyAwLTIgLjg5Ny0yIDJ2LjY2NmgtMmEuNjY3LjY2NyAwIDAwMCAxLjMzNGgydjIuNjY2aC0yYS42NjcuNjY3IDAgMDAwIDEuMzM0aDJ2Mi42NjZoLTJhLjY2Ny42NjcgMCAwMDAgMS4zMzRoMnYyLjY2NmgtMmEuNjY3LjY2NyAwIDAwMCAxLjMzNGgydjIuNjY2aC0yYS42NjcuNjY3IDAgMDAwIDEuMzM0aDJ2Mi42NjZoLTJhLjY2Ny42NjcgMCAwMDAgMS4zMzRoMnYuNjY2YzAgMS4xMDMuODk3IDIgMiAyaC42NjZ2MmEuNjY3LjY2NyAwIDAwMS4zMzQgMHYtMmgyLjY2NnYyYS42NjcuNjY3IDAgMDAxLjMzNCAwdi0yaDIuNjY2djJhLjY2Ny42NjcgMCAwMDEuMzM0IDB2LTJoMi42NjZ2MmEuNjY3LjY2NyAwIDAwMS4zMzQgMHYtMmgyLjY2NnYyYS42NjcuNjY3IDAgMDAxLjMzNCAwdi0yaDIuNjY2djJhLjY2Ny42NjcgMCAwMDEuMzM0IDB2LTJoLjY2NmMxLjEwMyAwIDItLjg5NyAyLTJ2LS42NjZoMmEuNjY3LjY2NyAwIDAwMC0xLjMzNGgtMnYtMi42NjZoMmEuNjY3LjY2NyAwIDAwMC0xLjMzNGgtMnYtMi42NjZoMmEuNjY3LjY2NyAwIDAwMC0xLjMzNGgtMnYtMi42NjZoMmEuNjY3LjY2NyAwIDAwMC0xLjMzNGgtMnYtMi42NjZoMnpNMjggMjcuMzMzYzAgLjM2OC0uMy42NjctLjY2Ny42NjdINC42NjdBLjY2OC42NjggMCAwMTQgMjcuMzMzVjQuNjY3QzQgNC4yOTkgNC4zIDQgNC42NjcgNGgyMi42NjZjLjM2NyAwIC42NjcuMjk5LjY2Ny42Njd2MjIuNjY2ek05LjMzMyA4YTEuMzM0IDEuMzM0IDAgMTAtMi42NjcuMDAxQTEuMzM0IDEuMzM0IDAgMDA5LjMzMyA4em0xMS4zMzQgMi42NjdoLTkuMzM0YS42NjcuNjY3IDAgMDAtLjY2Ni42NjZ2OS4zMzRjMCAuMzY4LjI5OC42NjYuNjY2LjY2Nmg5LjMzNGEuNjY3LjY2NyAwIDAwLjY2Ni0uNjY2di05LjMzNGEuNjY3LjY2NyAwIDAwLS42NjYtLjY2NnpNMjAgMjBoLTh2LThoOHY4eiIgZmlsbD0idXJsKCNwcmVmaXhfX2EpIiBmaWxsLXJ1bGU9Im5vbnplcm8iLz48L3N2Zz4="); +} + +.azure-database { + background-image: url("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMzIiIGhlaWdodD0iMzIiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGRlZnM+PGxpbmVhckdyYWRpZW50IHgxPSI3Mi4zODklIiB5MT0iNC4zMDglIiB4Mj0iMjUuNSUiIHkyPSIxMDAlIiBpZD0icHJlZml4X19hIj48c3RvcCBzdG9wLWNvbG9yPSIjNTNBMEZEIiBvZmZzZXQ9IjAlIi8+PHN0b3Agc3RvcC1jb2xvcj0iI0I0RUM1MSIgb2Zmc2V0PSIxMDAlIi8+PC9saW5lYXJHcmFkaWVudD48L2RlZnM+PHBhdGggZD0iTTE2LjUgMUMxMS40MSAxIDYgMi4zMTUgNiA0Ljc1djIyLjVDNiAyOS42ODUgMTEuNDEgMzEgMTYuNSAzMVMyNyAyOS42ODUgMjcgMjcuMjVWNC43NUMyNyAyLjMxNSAyMS41OSAxIDE2LjUgMXptOS41ODcgMTguODk3YzAgMS4xMTMtMy42NDcgMi42NjYtOS41ODcgMi42NjYtNS45NCAwLTkuNTg3LTEuNTUzLTkuNTg3LTIuNjY2di01Ljc3MmMxLjg0MiAxLjMzMyA1Ljc5NyAyLjA0IDkuNTg3IDIuMDRzNy43NDUtLjcwNyA5LjU4Ny0yLjA0djUuNzcyem0wLTcuNWMwIDEuMTEzLTMuNjQ3IDIuNjY1LTkuNTg3IDIuNjY1LTUuOTQgMC05LjU4Ny0xLjU1Mi05LjU4Ny0yLjY2NVY2LjYyNWMxLjg0MiAxLjMzMyA1Ljc5NyAyLjA0IDkuNTg3IDIuMDRzNy43NDUtLjcwNyA5LjU4Ny0yLjA0djUuNzcyek0xNi41IDEuOTM3YzUuOTQgMCA5LjU4NyAxLjYzOCA5LjU4NyAyLjgxMyAwIDEuMTc1LTMuNjQ3IDIuODEzLTkuNTg3IDIuODEzLTUuOTQgMC05LjU4Ny0xLjYzOC05LjU4Ny0yLjgxMyAwLTEuMTc1IDMuNjQ3LTIuODEzIDkuNTg3LTIuODEzem0wIDI4LjEyNWMtNS45NCAwLTkuNTg3LTEuNTUyLTkuNTg3LTIuNjY1di01Ljc3MmMxLjg0MiAxLjMzMyA1Ljc5NyAyLjA0IDkuNTg3IDIuMDRzNy43NDUtLjcwNyA5LjU4Ny0yLjA0djUuNzcyYzAgMS4xMTMtMy42NDcgMi42NjYtOS41ODcgMi42NjZ6IiBmaWxsPSJ1cmwoI3ByZWZpeF9fYSkiIGZpbGwtcnVsZT0ibm9uemVybyIvPjwvc3ZnPg=="); +} + +.azure-hamburger { + background-image: url("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjQiIGhlaWdodD0iMjQiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPjxkZWZzPjxwYXRoIGQ9Ik0yMS41IDZoLTE5YS41LjUgMCAwMTAtMWgxOWEuNS41IDAgMDEwIDF6bTAgMTNoLTE5YS41LjUgMCAwMTAtMWgxOWEuNS41IDAgMDEwIDF6bTAtNi41aC0xOWEuNS41IDAgMDEwLTFoMTlhLjUuNSAwIDAxMCAxeiIgaWQ9InByZWZpeF9fYSIvPjwvZGVmcz48ZyBmaWxsPSJub25lIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiPjxtYXNrIGlkPSJwcmVmaXhfX2IiIGZpbGw9IiNmZmYiPjx1c2UgeGxpbms6aHJlZj0iI3ByZWZpeF9fYSIvPjwvbWFzaz48dXNlIGZpbGw9IiMwMDAiIGZpbGwtcnVsZT0ibm9uemVybyIgeGxpbms6aHJlZj0iI3ByZWZpeF9fYSIvPjxnIG1hc2s9InVybCgjcHJlZml4X19iKSIgZmlsbD0iI0ZGRiIgZmlsbC1ydWxlPSJub256ZXJvIj48cGF0aCBkPSJNMCAwaDI0djI0SDB6Ii8+PC9nPjwvZz48L3N2Zz4="); +} + +.azure-network { + background-image: url("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMzUiIGhlaWdodD0iMzUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgYXJpYS1oaWRkZW49InRydWUiPjxkZWZzPjxsaW5lYXJHcmFkaWVudCB4MT0iOTUuNjkyJSIgeTE9IjQuMzA4JSIgeDI9IjAlIiB5Mj0iMTAwJSIgaWQ9InByZWZpeF9fYSI+PHN0b3Agc3RvcC1jb2xvcj0iIzUzQTBGRCIgb2Zmc2V0PSIwJSIvPjxzdG9wIHN0b3AtY29sb3I9IiNCNEVDNTEiIG9mZnNldD0iMTAwJSIvPjwvbGluZWFyR3JhZGllbnQ+PC9kZWZzPjxwYXRoIGQ9Ik0xNy45MjUgN3YxLjkzQTEwLjIzNCAxMC4yMzQgMCAwMTIyLjIxMiA4YzUuMzU5IDAgOS43MDMgNC4wNTUgOS43MDMgOS4wNTggMCAuNzU3LS4xIDEuNDkzLS4yODcgMi4xOTYgMS45NDQuNTAxIDMuMzcyIDIuMTY0IDMuMzcyIDQuMTM5di4zMTRDMzUgMjYuMDc3IDMyLjk0IDI4IDMwLjQgMjhIN3YyLjA1YTIuNSAyLjUgMCAxMS0xIDBWMjhINC42QzIuMDYgMjggMCAyNi4wNzggMCAyMy43MDd2LS4zMTRjMC0yLjI3IDEuODg4LTQuMTMgNC4yNzgtNC4yODNhNi40NDMgNi40NDMgMCAwMS0uMTgzLTEuNTI5YzAtMy43ODggMy4yOS02Ljg1OCA3LjM0Ny02Ljg1OCAxLjE0MyAwIDIuMjI2LjI0MyAzLjE5LjY3OGE5LjU3IDkuNTcgMCAwMTIuNDQyLTIuMDI5TDE3LjA3NSA3aC44NXpNNi41IDMxYTEuNSAxLjUgMCAxMDAgMyAxLjUgMS41IDAgMDAwLTN6bTguODctMTguOTZsLS40NjYuNTM4LS42NjItLjI5NmE2Ljc5MiA2Ljc5MiAwIDAwLTIuNzgtLjU4N2MtMy41MyAwLTYuMzggMi42NDMtNi4zOCA1Ljg5IDAgLjQ0NS4wNTIuODgzLjE1NyAxLjMwOGwuMjUzIDEuMDMzLTEuMTA4LjA3QzIuNDc5IDIwLjEyIDEgMjEuNTgzIDEgMjMuMzR2LjMxQzEgMjUuNDk1IDIuNjI0IDI3IDQuNjQxIDI3SDZ2LTVhMSAxIDAgMDEuODgzLS45OTNMNyAyMWg0di0zLjVhLjUuNSAwIDExMSAwVjIxaDUuMDc1bC0uMDAxLTEwLjQ2NmE4LjUyNCA4LjUyNCAwIDAwLTEuNzA1IDEuNTA1ek0yMi4xOTUgOWMtMS41MyAwLTIuOTkyLjM2NS00LjI3MiAxLjAzTDE3LjkyNSAyMUgyNHYxaC0ydjMuNWEuNS41IDAgMTEtMSAwVjIySDd2NWgyMy4zNTlDMzIuMzc2IDI3IDM0IDI1LjQ5NCAzNCAyMy42NXYtLjMxMWMwLTEuNTEtMS4wOTctMi44MjgtMi42NjMtMy4yMjhsLS45LS4yMy4yMzEtLjg2M2MuMTctLjYzMy4yNTctMS4yODYuMjU3LTEuOTUxIDAtNC40NS0zLjkwMi04LjA2Ny04LjcyOS04LjA2N3pNMjYuNSAxOWEyLjUgMi41IDAgMTEwIDUgMi41IDIuNSAwIDAxMC01em0wIDFhMS41IDEuNSAwIDEwMCAzIDEuNSAxLjUgMCAwMDAtM3ptLTktMjBhMy41IDMuNSAwIDExMCA3IDMuNSAzLjUgMCAwMTAtN3ptMCAxYTIuNSAyLjUgMCAxMDAgNSAyLjUgMi41IDAgMDAwLTV6IiBmaWxsPSJ1cmwoI3ByZWZpeF9fYSkiIGZpbGwtcnVsZT0ibm9uemVybyIvPjwvc3ZnPg=="); +} + +.azure-refresh { + background-image: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA0NzMuNjc3IDQ3My42NzciPjxnIGZpbGw9IiMzMTJEMkEiPjxwYXRoIGQ9Ik0zNzAuNDU3IDEzOC44OTNjLTMzLjk3LTQ4LjYzMy04OS43NS03Ni40NzgtMTQ5LjM2Ni02OS42NUMxNjMuNzMgNzUuODEgMTE3LjQzIDExMi45IDk0LjQ1IDE2NC40MmwtMjkuNTEzLS4wNzVjLTUuMTg3LS4wMTEtOS4wMTYgNS45OTEtNi4wOTkgMTAuNTY0bDUxLjczMyA4MS4xNmMyLjkwOSA0LjU3IDkuMjE4IDQuNDU4IDEyLjEyLS4wNDUgMTcuMzc4LTI2Ljk2NiAzNC43NTktNTMuOTM2IDUyLjE0MS04MC45MDIgMS44NzctMi45MTMgMS4yNDUtNS43MjktLjUxMi03LjY3NC0xLjA5Ni0xLjY1Ny0yLjkxMy0yLjgzOC01LjUxMi0yLjg0NmwtMjcuNDUyLS4wNjdjNDIuMjE2LTY3LjA4OCAxNDQuNjk1LTczLjIxIDE5Mi44MDEtNC4zMzggMTUuNDE1IDIyLjA1NyA1MS44NzIuOTkyIDM2LjMtMjEuMzA0ek00MTQuNDQ5IDI5Ny41NDVjLTE3LjI0My0yNy4wNTItMzQuNDk0LTU0LjEwOC01MS43NDEtODEuMTYtMi45MDktNC41Ny05LjIxOC00LjQ1OC0xMi4xMi4wNDUtMTcuMzc0IDI2Ljk2Ni0zNC43NTYgNTMuOTM2LTUyLjEzMyA4MC45MDItMS44ODEgMi45MTctMS4yNDUgNS43MzMuNTIgNy42ODEgMS4wOTIgMS42NTMgMi45MDkgMi44MzEgNS41MDUgMi44MzhsMjcuNDQ4LjA2N2MtNDIuMjIgNjcuMDgtMTQ0LjY5NSA3My4yMjgtMTkyLjc5NyA0LjM0Mi0xNS40MDctMjIuMDYtNTEuODYtLjk5NS0zNi4yOTMgMjEuMzA0IDMzLjk2MyA0OC42MzMgODkuNzQ2IDc2LjQ3NCAxNDkuMzU5IDY5LjY1IDU3LjM2MS02LjU3IDEwMy42NTctNDMuNjYzIDEyNi42NDQtOTUuMTggOS44MzUuMDI2IDE5LjY3NC4wNDkgMjkuNTEzLjA3NSA1LjE4My4wMTUgOS4wMTItNS45OTEgNi4wOTUtMTAuNTY0eiIvPjwvZz48L3N2Zz4="); +} + +.azure-storage { + background-image: url("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMzIiIGhlaWdodD0iMzIiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGRlZnM+PGxpbmVhckdyYWRpZW50IHgxPSI5NS42OTIlIiB5MT0iNC4zMDglIiB4Mj0iMCUiIHkyPSIxMDAlIiBpZD0icHJlZml4X19hIj48c3RvcCBzdG9wLWNvbG9yPSIjNTNBMEZEIiBvZmZzZXQ9IjAlIi8+PHN0b3Agc3RvcC1jb2xvcj0iI0I0RUM1MSIgb2Zmc2V0PSIxMDAlIi8+PC9saW5lYXJHcmFkaWVudD48L2RlZnM+PHBhdGggZD0iTTI5LjY5NSA3Ljk5M0wxNi44NjIgMS4wN2EuNTkuNTkgMCAwMC0uNTQtLjAwOWwtMTQgNi45MjNBLjU3Ny41NzcgMCAwMDIgOC41djE1YzAgLjIxMS4xMTcuNDA2LjMwNC41MDdsMTIuODM0IDYuOTIzYy4wMDcuMDAzLjAxNS4wMDIuMDIzLjAwNWEuNTczLjU3MyAwIDAwLjI1Ni4wNjVjLjA4OCAwIC4xNy0uMDIzLjI0NS0uMDU3LjAwNC0uMDAyLjAxIDAgLjAxNi0uMDAzbDE0LTYuOTIzQS41OC41OCAwIDAwMzAgMjMuNXYtMTVhLjU3NS41NzUgMCAwMC0uMzA1LS41MDd6bS0xNC4yNjcgNi43OGwtNS4xNjgtMi43OUwyMi45ODggNS42OWw1LjE2OSAyLjc5LTEyLjcyOSA2LjI5M3ptMS4xNDQtMTIuNTQ1bDUuMTY4IDIuNzg5TDkuMDEyIDExLjMxIDMuODQzIDguNTIzbDEyLjcyOS02LjI5NXpNMy4xNjcgOS40NzJsMTEuNjY2IDYuMjk0djEzLjY4NkwzLjE2NyAyMy4xNTdWOS40NzJ6TTE2IDI5LjQ5VjE1Ljc4bDEyLjgzMy02LjM0N3YxMy43MUwxNiAyOS40OXptLTQuOTcxLTEyLjQ3NmEuNTcyLjU3MiAwIDAxLjIzLjc4My41NzguNTc4IDAgMDEtLjUxLjMuNTc4LjU3OCAwIDAxLS4yNzktLjA3bC0zLjUtMS44ODlhLjU3My41NzMgMCAwMS0uMjMyLS43ODIuNTg3LjU4NyAwIDAxLjc5LS4yM2wzLjUgMS44ODh6IiBmaWxsPSJ1cmwoI3ByZWZpeF9fYSkiIGZpbGwtcnVsZT0ibm9uemVybyIvPjwvc3ZnPg=="); +} + +/* +** Resources +*/ +.azure-container-registry { + background-image: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxOCIgaGVpZ2h0PSIxOCI+PGRlZnM+PGxpbmVhckdyYWRpZW50IGlkPSJwcmVmaXhfX2EiIHgxPSI4LjYzNyIgeTE9Ii0xLjk5MSIgeDI9IjguNjM3IiB5Mj0iMTYuNzM5IiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSI+PHN0b3Agb2Zmc2V0PSIwIiBzdG9wLWNvbG9yPSIjNWVhMGVmIi8+PHN0b3Agb2Zmc2V0PSIxIiBzdG9wLWNvbG9yPSIjMDA3OGQ0Ii8+PC9saW5lYXJHcmFkaWVudD48bGluZWFyR3JhZGllbnQgaWQ9InByZWZpeF9fYiIgeDE9IjEyLjk2IiB5MT0iOC41NjEiIHgyPSIxMi45NiIgeTI9IjYuMTQxIiBncmFkaWVudFRyYW5zZm9ybT0ibWF0cml4KDEgMCAwIC0xIDAgMjApIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSI+PHN0b3Agb2Zmc2V0PSIwIiBzdG9wLWNvbG9yPSIjMzMzMTMyIi8+PHN0b3Agb2Zmc2V0PSIxIiBzdG9wLWNvbG9yPSIjNWI1YTVjIi8+PC9saW5lYXJHcmFkaWVudD48L2RlZnM+PHBhdGggZD0iTTcuNDMgOC4xNzhsMi41ODktMS41NzMgNy4yNTUgMi43MzFBMy42NjQgMy42NjQgMCAwMDE2LjIzIDcuNDlsLS4wMS0uMDVBNC4xOTQgNC4xOTQgMCAwMDE0IDYuMzJhNC45MSA0LjkxIDAgMDAtNS4xLTQuNyA1LjA3MSA1LjA3MSAwIDAwLTQuODQgMy4yOUE0LjYyMSA0LjYyMSAwIDAwMCA5LjM5YTQuNzMgNC43MyAwIDAwNC44OSA0LjU0aDIuNTR6IiBmaWxsPSJ1cmwoI3ByZWZpeF9fYSkiLz48cGF0aCBmaWxsPSIjNzY3Njc2IiBkPSJNMTAuMDcgNy4xNTlsLjAxIDQuMjggNy45MSAxLjY4di0yLjk4bC03LjkyLTIuOTh6Ii8+PHBhdGggZmlsbD0iIzk5OSIgZD0iTTEwLjA3IDcuMTU5bC0yLjE0IDEuM3YzLjk4bDIuMTUtMSIvPjxwYXRoIGZpbGw9IiNhM2EzYTMiIGQ9Ik0xMy42OCAxMS40OTlsLjcyLjJ2LTIuMzNsLS43Mi0uMjV2Mi4zOHpNMTIuOTYgOC44ODlsLS43Mi0uMjZ2Mi40OWwuNzIuMnYtMi40M3pNMTUuMTIgMTEuODg5bC43LjE5LjAyLTIuMjItLjcyLS4yNHYyLjI3ek0xMC44MSAxMC43NDlsLjcyLjE4di0yLjUzbC0uNzItLjI0djIuNTl6TTE3LjI3IDEwLjM0OWwtLjcyLS4yNXYyLjE3bC43Mi4ydi0yLjEyeiIvPjxwYXRoIGQ9Ik04LjY2IDExLjM2OWwtLjM2LjIxdi0yLjgzbC4zNi0uMTl6bS43MS0zLjIybC0uMzcuMjR2Mi43NWwuMzctLjJ6IiBmaWxsPSIjYjNiM2IzIi8+PHBhdGggZmlsbD0idXJsKCNwcmVmaXhfX2IpIiBkPSJNMTcuOTkgMTMuMTE5bC0yLjE2Ljc0LTcuOS0xLjQyIDIuMTUtMSA3LjkxIDEuNjh6Ii8+PHBhdGggZmlsbD0iIzc2NzY3NiIgZD0iTTE3Ljk5IDE2LjE2OWwtNy45NSAxLjUxLjA0LTUuNTkgNy45MSAxLjQ3djIuNjF6Ii8+PHBhdGggZmlsbD0iI2EzYTNhMyIgZD0iTTEwLjgxIDE2Ljc1OXYtMy41NWwuNzIuMDl2My4zNGwtLjcyLjEyek0xMi45NiAxNi4zOTlsLS43Mi4xM3YtMy4xNGwuNzIuMTF2Mi45ek0xMy42OCAxNi4yODl2LTIuNzJsLjcyLjA5djIuNWwtLjcyLjEzek0xNS44MyAxNS45MDlsLS43MS4xM3YtMi4yOWwuNzEuMTF2Mi4wNXpNMTcuMjkgMTUuNjc5bC0uNzQuMTN2LTEuODhsLjY5LjA5LjA1IDEuNjZ6Ii8+PHBhdGggZD0iTTcuOTMgMTYuNHYtMy4yNmwyLjE2LTF2NS42eiIgZmlsbD0iIzk5OSIvPjxwYXRoIGQ9Ik04LjYxIDE2LjM4OWwtLjMyLS4xNnYtMi43NmwuMzItLjE1em0uNzctMy40NWwtLjM4LjE5djMuNDhsLjM3LjE5di0zLjg2eiIgZmlsbD0iI2IzYjNiMyIvPjwvc3ZnPg=="); +} + +.azure-dns-zone { + background-image: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxOCIgaGVpZ2h0PSIxOCI+PGRlZnM+PHJhZGlhbEdyYWRpZW50IGlkPSJwcmVmaXhfX2EiIGN4PSItNjgxMS40IiBjeT0iNjcyOS42OSIgcj0iMTciIGdyYWRpZW50VHJhbnNmb3JtPSJtYXRyaXgoLjUgMCAwIC0uNSAzNDE0LjkxIDMzNzQuMDUpIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSI+PHN0b3Agb2Zmc2V0PSIuMTgiIHN0b3AtY29sb3I9IiM1ZWEwZWYiLz48c3RvcCBvZmZzZXQ9IjEiIHN0b3AtY29sb3I9IiMwMDc4ZDQiLz48L3JhZGlhbEdyYWRpZW50PjwvZGVmcz48cGF0aCBkPSJNMTQuMjEgMTUuNzJBOC41IDguNSAwIDAxMy43OSAyLjI4bC4wOS0uMDZhOC41IDguNSAwIDAxMTAuMzMgMTMuNSIgZmlsbD0idXJsKCNwcmVmaXhfX2EpIi8+PHBhdGggZD0iTTkgMS4zMUE3LjY5IDcuNjkgMCAxMDE2LjY5IDkgNy43IDcuNyAwIDAwOSAxLjMxem01LjE1IDIuNTlhNy4zNyA3LjM3IDAgMDEtMi4xNS44QTguODMgOC44MyAwIDAwMTAuNzUgMmE3LjIgNy4yIDAgMDEzLjQgMS45ek05IDEuNzRhNi41OSA2LjU5IDAgMDExLjA5LjA5IDcuNDggNy40OCAwIDAxMS41MyAzIDE1LjEyIDE1LjEyIDAgMDEtNS40NSAwIDcuMzggNy4zOCAwIDAxMS41MS0yLjk0QTcuMzQgNy4zNCAwIDAxOSAxLjc0ek03IDJhOC43MiA4LjcyIDAgMDAtMS4yNyAyLjY4IDUuNTggNS41OCAwIDAxLTEuOS0uNzdBNy4zNSA3LjM1IDAgMDE3IDJ6TTMuNzIgMTRhNS4yNyA1LjI3IDAgMDExLjc4LS43NiA3LjA4IDcuMDggMCAwMDEuMzUgMi43MkE3LjI1IDcuMjUgMCAwMTMuNzIgMTR6bTYuNDEgMi4yYTcuMDggNy4wOCAwIDAxLTEuMTMuMDYgNi44MyA2LjgzIDAgMDEtMS40NC0uMTUgNiA2IDAgMDEtMS42Ny0zIDE0LjczIDE0LjczIDAgMDE1Ljg4IDAgNiA2IDAgMDEtMS42OSAzem0uNzMtLjE2YTcuMTMgNy4xMyAwIDAwMS4zOC0yLjggNi42OCA2LjY4IDAgMDEyIC44M0E3LjEzIDcuMTMgMCAwMTEwLjg2IDE2em0xLjQ4LTMuMjJjLjA4LS4zNi4xNS0uNzMuMi0xLjEybC0uNDYuMTFjLS4wNS4zMS0uMS42Mi0uMTcuOTFhMTUuMjMgMTUuMjMgMCAwMC02LjA5IDBjLS4wNy0uMjctLjEyLS41Ni0uMTctLjg2YS4yOC4yOCAwIDAxMC0uMDlsLS40Ni0uMTNhMi4zNiAyLjM2IDAgMDAwIC4yOGMwIC4zMi4xMS42Mi4xNy45MWE1LjkgNS45IDAgMDAtMiAuODUgNy4yNCA3LjI0IDAgMDEuMTEtOS40IDYuMjkgNi4yOSAwIDAwMi4wOC44NmMtLjA3LjI0LS4xMy41LS4xOC43NnMwIC4yNS0uMDguMzdsLjQ3LS4xMXYtLjE3Yy4wNi0uMjYuMTItLjUxLjE5LS43NUExNC44OSAxNC44OSAwIDAwOSA1LjQ4YTE1IDE1IDAgMDAyLjc4LS4yNmMuMDcuMjcuMTQuNTYuMi44NWwuNDYuMTFxLS4xMS0uNTQtLjI0LTFhNy43MyA3LjczIDAgMDAyLjMtLjkxIDcuMjIgNy4yMiAwIDAxLjA2IDkuNDkgNy4yOCA3LjI4IDAgMDAtMi4yMi0uOTd6IiBmaWxsPSIjNWVhMGVmIi8+PHBhdGggZD0iTTMuNjkgN2E3LjkyIDcuOTIgMCAwMTEuMTYtLjA4IDIuNDQgMi40NCAwIDAxMS43MS41MiAyIDIgMCAwMS41OSAxLjQ2IDIuMjEgMi4yMSAwIDAxLS42MSAxLjY0IDIuNiAyLjYgMCAwMS0xLjg2LjYxIDkuMTcgOS4xNyAwIDAxLTEtLjA1em0uNTUgMy43M2E0IDQgMCAwMC41NSAwIDEuNjIgMS42MiAwIDAwMS43OS0xLjgxQTEuNSAxLjUgMCAwMDQuODcgNy4zYTMuMTcgMy4xNyAwIDAwLS42MyAwek03Ljg2IDExLjExVjYuOWguNTlMOS44IDlhMTIuMTggMTIuMTggMCAwMS43NiAxLjM3Yy0uMDUtLjU2LS4wNi0xLjA3LS4wNi0xLjczVjYuOWguNXY0LjIxaC0uNTVMOS4xMyA5Yy0uMjktLjQ3LS41Ny0xLS43OS0xLjR2My41NHpNMTEuODkgMTAuNDVhMiAyIDAgMDAxIC4yN2MuNTYgMCAuODgtLjI5Ljg4LS43MnMtLjIyLS42Mi0uNzktLjgzLTEuMTItLjYtMS4xMi0xLjJhMS4yMiAxLjIyIDAgMDExLjM3LTEuMTQgMiAyIDAgMDEuOTMuMmwtLjE2LjQ1YTEuNjMgMS42MyAwIDAwLS44LS4yYy0uNTggMC0uOC4zNC0uOC42M3MuMjYuNTkuODQuODEgMS4wOC42MiAxLjA4IDEuMjQtLjQ4IDEuMjEtMS40OCAxLjIxYTIuMTYgMi4xNiAwIDAxLTEuMDctLjI3eiIgZmlsbD0iI2ZmZiIvPjwvc3ZnPg=="); +} + +.azure-instance, .azure-virtual-machine { + background-image: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxOCIgaGVpZ2h0PSIxOCI+PGRlZnM+PGxpbmVhckdyYWRpZW50IGlkPSJwcmVmaXhfX2EiIHgxPSI5IiB5MT0iNzc4LjgzMSIgeDI9IjkiIHkyPSI3OTAuODMxIiBncmFkaWVudFRyYW5zZm9ybT0ibWF0cml4KDEgMCAwIC0xIDAgNzkxLjUxNikiIGdyYWRpZW50VW5pdHM9InVzZXJTcGFjZU9uVXNlIj48c3RvcCBvZmZzZXQ9IjAiIHN0b3AtY29sb3I9IiMwMDc4ZDQiLz48c3RvcCBvZmZzZXQ9Ii44IiBzdG9wLWNvbG9yPSIjNWVhMGVmIi8+PC9saW5lYXJHcmFkaWVudD48bGluZWFyR3JhZGllbnQgaWQ9InByZWZpeF9fYiIgeDE9IjkiIHkxPSI3NzQuMjAxIiB4Mj0iOSIgeTI9Ijc3OC44MzEiIGdyYWRpZW50VHJhbnNmb3JtPSJtYXRyaXgoMSAwIDAgLTEgMCA3OTEuNTE2KSIgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiPjxzdG9wIG9mZnNldD0iMCIgc3RvcC1jb2xvcj0iI2NjYyIvPjxzdG9wIG9mZnNldD0iMSIgc3RvcC1jb2xvcj0iIzcwNzA3MCIvPjwvbGluZWFyR3JhZGllbnQ+PC9kZWZzPjxyZWN0IHk9Ii42ODUiIHdpZHRoPSIxOCIgaGVpZ2h0PSIxMiIgcng9Ii42IiBmaWxsPSJ1cmwoI3ByZWZpeF9fYSkiLz48cGF0aCBkPSJNMTIuNjEgMTYuMzE1Yy0xLjc4LS4yOC0xLjg1LTEuNTYtMS44NS0zLjYzSDcuMjNjMCAyLjA3LS4wNiAzLjM1LTEuODQgMy42M2ExIDEgMCAwMC0uODkgMWg5YTEgMSAwIDAwLS44OS0xeiIgZmlsbD0idXJsKCNwcmVmaXhfX2IpIi8+PHBhdGggZD0iTTEwLjEwOSAyLjE3OWEuMjc3LjI3NyAwIDAwLS4xMzUuNTM4IDQuMTA3IDQuMTA3IDAgMTEtNC40ODYgMS44MzdsLjExMS4wNzcuNzc5LjU0M2EuMDQ4LjA0OCAwIDAwLjA1LS4wNTZsLS4xODMtMi4xMjRhLjA0OC4wNDggMCAwMC0uMDU1LS4wMzlMNC4yIDMuNmEuMDQ4LjA0OCAwIDAwLS4wMzQuMDY3bC44MjEuNTQxLjA0Ni4wMzFhNC42NDcgNC42NDcgMCAxMDUuMDc5LTIuMDZ6IiBmaWxsPSIjZmZmIiBvcGFjaXR5PSIuOCIvPjxwYXRoIGQ9Ik0xMS4xODMgNS44bC0uMzM0LS41NzkuMTgxLTEuMDU2LS44NDktLjQ5LS44MjQuNjg1aC0uNjY4bC0uODI0LS42ODUtLjg0OS40OS4xODQgMS4wNi0uMzM3LjU3NS0xLjAwNS4zNzF2Ljk4MWwxLjAwNS4zNzEuMzM0LjU3OC0uMTgxIDEuMDYxLjg0OS40OS44MjQtLjY4NWguNjY4bC44MjQuNjg1Ljg0OS0uNDktLjE4MS0xLjA1Ny4zMzQtLjU3OCAxLjAwNS0uMzcxdi0uOTgxem0tMi4xNiAyLjM0NkExLjQ4MSAxLjQ4MSAwIDExMTAuNSA2LjY2NWExLjQ4MSAxLjQ4MSAwIDAxLTEuNDc3IDEuNDgxeiIgZmlsbD0iI2ZmZiIvPuKAizwvc3ZnPg=="); +} + +.azure-kubernetes-cluster { + background-image: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxOCIgaGVpZ2h0PSIxOCI+PGRlZnM+PGxpbmVhckdyYWRpZW50IGlkPSJwcmVmaXhfX2EiIHgxPSIyLjk0IiB5MT0iMy43NCIgeDI9IjguNjciIHkyPSIzLjc0IiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSI+PHN0b3Agb2Zmc2V0PSIwIiBzdG9wLWNvbG9yPSIjYjc3YWY0Ii8+PHN0b3Agb2Zmc2V0PSIxIiBzdG9wLWNvbG9yPSIjNzczYWRjIi8+PC9saW5lYXJHcmFkaWVudD48bGluZWFyR3JhZGllbnQgaWQ9InByZWZpeF9fYiIgeDE9IjkuMTMiIHkxPSIzLjc5IiB4Mj0iMTQuODUiIHkyPSIzLjc5IiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSI+PHN0b3Agb2Zmc2V0PSIwIiBzdG9wLWNvbG9yPSIjYjc3YWY0Ii8+PHN0b3Agb2Zmc2V0PSIxIiBzdG9wLWNvbG9yPSIjNzczYWRjIi8+PC9saW5lYXJHcmFkaWVudD48bGluZWFyR3JhZGllbnQgaWQ9InByZWZpeF9fYyIgeDE9Ii4wMSIgeTE9IjkuMTIiIHgyPSI1LjczIiB5Mj0iOS4xMiIgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiPjxzdG9wIG9mZnNldD0iMCIgc3RvcC1jb2xvcj0iI2I3N2FmNCIvPjxzdG9wIG9mZnNldD0iMSIgc3RvcC1jb2xvcj0iIzc3M2FkYyIvPjwvbGluZWFyR3JhZGllbnQ+PGxpbmVhckdyYWRpZW50IGlkPSJwcmVmaXhfX2QiIHgxPSI2LjE4IiB5MT0iOS4wOCIgeDI9IjExLjkiIHkyPSI5LjA4IiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSI+PHN0b3Agb2Zmc2V0PSIwIiBzdG9wLWNvbG9yPSIjYjc3YWY0Ii8+PHN0b3Agb2Zmc2V0PSIxIiBzdG9wLWNvbG9yPSIjNzczYWRjIi8+PC9saW5lYXJHcmFkaWVudD48bGluZWFyR3JhZGllbnQgaWQ9InByZWZpeF9fZSIgeDE9IjEyLjM1IiB5MT0iOS4xMyIgeDI9IjE4LjA4IiB5Mj0iOS4xMyIgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiPjxzdG9wIG9mZnNldD0iMCIgc3RvcC1jb2xvcj0iI2I3N2FmNCIvPjxzdG9wIG9mZnNldD0iMSIgc3RvcC1jb2xvcj0iIzc3M2FkYyIvPjwvbGluZWFyR3JhZGllbnQ+PGxpbmVhckdyYWRpZW50IGlkPSJwcmVmaXhfX2YiIHgxPSIyLjg3IiB5MT0iMTQuNTYiIHgyPSI4LjYiIHkyPSIxNC41NiIgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiPjxzdG9wIG9mZnNldD0iMCIgc3RvcC1jb2xvcj0iI2I3N2FmNCIvPjxzdG9wIG9mZnNldD0iMSIgc3RvcC1jb2xvcj0iIzc3M2FkYyIvPjwvbGluZWFyR3JhZGllbnQ+PGxpbmVhckdyYWRpZW50IGlkPSJwcmVmaXhfX2ciIHgxPSI5LjA1IiB5MT0iMTQuNiIgeDI9IjE0Ljc4IiB5Mj0iMTQuNiIgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiPjxzdG9wIG9mZnNldD0iMCIgc3RvcC1jb2xvcj0iI2I3N2FmNCIvPjxzdG9wIG9mZnNldD0iMSIgc3RvcC1jb2xvcj0iIzc3M2FkYyIvPjwvbGluZWFyR3JhZGllbnQ+PC9kZWZzPjxwYXRoIGZpbGw9InVybCgjcHJlZml4X19hKSIgZD0iTTUuOCAxLjIybC0yLjg2LjUzdjMuOWwyLjg2LjYxIDIuODctMS4xNVYyLjJMNS44IDEuMjJ6Ii8+PHBhdGggZD0iTTUuOTEgNi4ybDIuNjItMS4wNkEuMi4yIDAgMDA4LjY1IDVWMi4zNmEuMjEuMjEgMCAwMC0uMTMtLjE4bC0yLjY1LS45aC0uMTJsLTIuNi40OGEuMi4yIDAgMDAtLjE1LjE4djMuNTNhLjE5LjE5IDAgMDAuMTUuMTlsMi42My41NWEuMzIuMzIgMCAwMC4xMy0uMDF6IiBmaWxsPSJub25lIi8+PHBhdGggZD0iTTIuOTQgMS43NXYzLjlsMi44OS42MXYtNXptMS4yMiAzLjZsLS44MS0uMTZ2LTNsLjgxLS4xM3ptMS4yNi4yM2wtLjkzLS4xNVYybC45My0uMTZ6IiBmaWxsPSIjMzQxYTZlIi8+PHBhdGggZmlsbD0idXJsKCNwcmVmaXhfX2IpIiBkPSJNMTEuOTkgMS4yN2wtMi44Ni41M3YzLjlsMi44Ni42MSAyLjg2LTEuMTZ2LTIuOWwtMi44Ni0uOTh6Ii8+PHBhdGggZD0iTTkuMTMgMS44djMuOWwyLjg3LjYxdi01em0xLjIxIDMuNmwtLjgxLS4xNnYtM2wuODEtLjEzem0xLjI2LjIzbC0uOTMtLjE1VjIuMDVsLjkzLS4xN3oiIGZpbGw9IiMzNDFhNmUiLz48cGF0aCBmaWxsPSJ1cmwoI3ByZWZpeF9fYykiIGQ9Ik0yLjg3IDYuNmwtMi44Ni41M3YzLjlsMi44Ni42MSAyLjg3LTEuMTVWNy41OEwyLjg3IDYuNnoiLz48cGF0aCBkPSJNMCA3LjEzVjExbDIuODkuNjF2LTV6bTEuMjEgMy42MWwtLjgxLS4xN3YtM2wuODEtLjE0em0xLjI3LjI2bC0uOTMtLjE1VjcuMzhsLjkzLS4xNnoiIGZpbGw9IiMzNDFhNmUiLz48cGF0aCBmaWxsPSJ1cmwoI3ByZWZpeF9fZCkiIGQ9Ik05LjA0IDYuNTZsLTIuODYuNTN2My45bDIuODYuNjIgMi44Ni0xLjE2VjcuNTRsLTIuODYtLjk4eiIvPjxwYXRoIGQ9Ik02LjE4IDcuMDlWMTFsMi44OC42MXYtNXptMS4yMSAzLjYxbC0uODEtLjE3di0zbC44MS0uMTR6bTEuMjYuMjJsLS45My0uMTVWNy4zNGwuOTMtLjE2eiIgZmlsbD0iIzM0MWE2ZSIvPjxwYXRoIGZpbGw9InVybCgjcHJlZml4X19lKSIgZD0iTTE1LjIxIDYuNjFsLTIuODYuNTN2My45bDIuODYuNjEgMi44Ny0xLjE1VjcuNTlsLTIuODctLjk4eiIvPjxwYXRoIGQ9Ik0xMi4zNSA3LjE0VjExbDIuODkuNjF2LTV6bTEuMjIgMy42MWwtLjgxLS4xN3YtM2wuODEtLjE0em0xLjI2LjIybC0uOTMtLjE1VjcuMzlsLjkzLS4xNnoiIGZpbGw9IiMzNDFhNmUiLz48cGF0aCBmaWxsPSJ1cmwoI3ByZWZpeF9fZikiIGQ9Ik01LjczIDEyLjA0bC0yLjg2LjUydjMuOWwyLjg2LjYyIDIuODctMS4xNnYtMi45bC0yLjg3LS45OHoiLz48cGF0aCBkPSJNNS44NCAxN2wyLjYxLTFhLjE4LjE4IDAgMDAuMTItLjE4di0yLjZhLjIuMiAwIDAwLS4xMy0uMjJsLTIuNjQtLjlhLjE3LjE3IDAgMDAtLjEyIDBsLTIuNi40N2EuMTkuMTkgMCAwMC0uMTYuMTl2My41NGEuMTkuMTkgMCAwMC4xNS4xOUw1LjcgMTdhLjIzLjIzIDAgMDAuMTQgMHoiIGZpbGw9Im5vbmUiLz48cGF0aCBkPSJNMi44NyAxMi41NnYzLjlsMi44OS42MlYxMnptMS4yMiAzLjYxTDMuMjggMTZ2LTNsLjgxLS4xNHptMS4yNi4yM2wtLjkzLS4xNXYtMy40NGwuOTMtLjE2eiIgZmlsbD0iIzM0MWE2ZSIvPjxwYXRoIGZpbGw9InVybCgjcHJlZml4X19nKSIgZD0iTTExLjkxIDEyLjA4bC0yLjg2LjUzdjMuOWwyLjg2LjYxIDIuODctMS4xNXYtMi45MWwtMi44Ny0uOTh6Ii8+PHBhdGggZD0iTTkuMDUgMTIuNjF2My45bDIuODkuNjF2LTV6bTEuMjIgMy42MWwtLjgxLS4xN3YtM2wuODEtLjE0em0xLjI2LjIybC0uOTMtLjE1di0zLjQzbC45My0uMTZ6IiBmaWxsPSIjMzQxYTZlIi8+PC9zdmc+"); +} + +.azure-load-balancer { + background-image: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxOCIgaGVpZ2h0PSIxOCI+PGRlZnM+PGxpbmVhckdyYWRpZW50IGlkPSJwcmVmaXhfX2EiIHgxPSI5IiB5MT0iMTkuODUiIHgyPSI5IiB5Mj0iLTEuMDIiIGdyYWRpZW50VW5pdHM9InVzZXJTcGFjZU9uVXNlIj48c3RvcCBvZmZzZXQ9IjAiIHN0b3AtY29sb3I9IiM1ZTk2MjQiLz48c3RvcCBvZmZzZXQ9Ii4wMiIgc3RvcC1jb2xvcj0iIzVmOTcyNCIvPjxzdG9wIG9mZnNldD0iMSIgc3RvcC1jb2xvcj0iIzc2YmMyZCIvPjwvbGluZWFyR3JhZGllbnQ+PC9kZWZzPjxwYXRoIGQ9Ik0uMTggOC41N0w4LjU3LjE4YS42LjYgMCAwMS44NiAwbDguMzkgOC4zOWEuNi42IDAgMDEwIC44NmwtOC40IDguNGEuNi42IDAgMDEtLjg0IDBsLTguNC04LjRhLjYuNiAwIDAxMC0uODZ6IiBmaWxsPSJ1cmwoI3ByZWZpeF9fYSkiLz48cGF0aCBkPSJNMTEuMiA0TDkuMDggMS44OWEuMTIuMTIgMCAwMC0uMTYgMEw2LjggNGEuMS4xIDAgMDAuMDguMThoMS4yNGEuMTEuMTEgMCAwMS4xMS4xMXYyYS4xMS4xMSAwIDAwLjExLjExaDEuMzJhLjExLjExIDAgMDAuMTEtLjExdi0yYS4xMS4xMSAwIDAxLjExLS4xMWgxLjI0QS4xLjEgMCAwMDExLjIgNHpNNCA2LjYxTDEuOSA4Ljc0YS4xMS4xMSAwIDAwMCAuMTVMNCAxMWEuMTEuMTEgMCAwMC4xOS0uMDhWOS42OWEuMTEuMTEgMCAwMS4xMS0uMTFoMmEuMS4xIDAgMDAuMS0uMTFWOC4xNUEuMS4xIDAgMDA2LjMzIDhoLTJhLjEuMSAwIDAxLS4xMS0uMVY2LjY5QS4xMS4xMSAwIDAwNCA2LjYxek0xNC4wOCAxMWwyLjEzLTIuMTJhLjExLjExIDAgMDAwLS4xNWwtMi4xMy0yLjEyYS4xMS4xMSAwIDAwLS4xOC4wOHYxLjI1YS4xLjEgMCAwMS0uMTEuMWgtMmEuMS4xIDAgMDAtLjEuMTF2MS4zMmEuMS4xIDAgMDAuMS4xMWgyYS4xMS4xMSAwIDAxLjExLjExdjEuMjRhLjExLjExIDAgMDAuMTguMDd6IiBmaWxsPSIjYjRlYzM2Ii8+PHBhdGggZD0iTTExLjc5IDlhMi43OSAyLjc5IDAgMTAtMy41NCAyLjY3di45NWExLjcxIDEuNzEgMCAxMDEuNTcgMHYtMUEyLjc3IDIuNzcgMCAwMDExLjc5IDl6IiBmaWxsPSIjZmZmIi8+PGNpcmNsZSBjeD0iOS4wMSIgY3k9IjguOTkiIHI9IjEuNjIiIGZpbGw9IiM1ZWEwZWYiLz48L3N2Zz4="); +} + +.azure-mssql-server { + background-image: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxOCIgaGVpZ2h0PSIxOCI+PGRlZnM+PGxpbmVhckdyYWRpZW50IGlkPSJwcmVmaXhfX2EiIHgxPSIuNSIgeTE9IjEwLjA0IiB4Mj0iMTMuMTgiIHkyPSIxMC4wNCIgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiPjxzdG9wIG9mZnNldD0iMCIgc3RvcC1jb2xvcj0iIzAwNWJhMSIvPjxzdG9wIG9mZnNldD0iLjA3IiBzdG9wLWNvbG9yPSIjMDA2MGE5Ii8+PHN0b3Agb2Zmc2V0PSIuMzYiIHN0b3AtY29sb3I9IiMwMDcxYzgiLz48c3RvcCBvZmZzZXQ9Ii41MiIgc3RvcC1jb2xvcj0iIzAwNzhkNCIvPjxzdG9wIG9mZnNldD0iLjY0IiBzdG9wLWNvbG9yPSIjMDA3NGNkIi8+PHN0b3Agb2Zmc2V0PSIuODIiIHN0b3AtY29sb3I9IiMwMDZhYmIiLz48c3RvcCBvZmZzZXQ9IjEiIHN0b3AtY29sb3I9IiMwMDViYTEiLz48L2xpbmVhckdyYWRpZW50PjwvZGVmcz48cGF0aCBkPSJNNi44NCA1LjA5Yy0zLjUgMC02LjM0LTEtNi4zNC0yLjNWMTVjMCAxLjI2IDIuNzkgMi4yOCA2LjI1IDIuM2guMDljMy41IDAgNi4zNC0xIDYuMzQtMi4zVjIuNzljMCAxLjI3LTIuODQgMi4zLTYuMzQgMi4zeiIgZmlsbD0idXJsKCNwcmVmaXhfX2EpIi8+PHBhdGggZD0iTTEzLjE4IDIuNzljMCAxLjI3LTIuODQgMi4zLTYuMzQgMi4zUy41IDQuMDYuNSAyLjc5IDMuMzQuNDkgNi44NC40OXM2LjM0IDEgNi4zNCAyLjMiIGZpbGw9IiNlOGU4ZTgiLz48cGF0aCBkPSJNMTEuNyAyLjZjMCAuODEtMi4xOCAxLjQ2LTQuODYgMS40NlMyIDMuNDEgMiAyLjZzMi4xNi0xLjQ2IDQuODQtMS40NiA0Ljg2LjY2IDQuODYgMS40NiIgZmlsbD0iIzUwZTZmZiIvPjxwYXRoIGQ9Ik02Ljg0IDIuOTRBMTIgMTIgMCAwMDMgMy40OWExMS4yNSAxMS4yNSAwIDAwMy44NS41NyAxMS4yNSAxMS4yNSAwIDAwMy44NS0uNTcgMTIgMTIgMCAwMC0zLjg2LS41NXoiIGZpbGw9IiMxOThhYjMiLz48cGF0aCBkPSJNMTAuNzQgMTEuMVY3LjcyaC0uOTN2NC4xNGgyLjQ2di0uNzZ6TTMuNTkgOS40M2ExLjkyIDEuOTIgMCAwMS0uNTEtLjMxQS40NC40NCAwIDAxMyA4LjhhLjM4LjM4IDAgMDEuMTYtLjMxLjcyLjcyIDAgMDEuNDItLjExIDEuNjcgMS42NyAwIDAxMSAuMjl2LS44NmEyLjY3IDIuNjcgMCAwMC0xLS4xNiAxLjc0IDEuNzQgMCAwMC0xLjIuMzUgMS4xMyAxLjEzIDAgMDAtLjQxLjljMCAuNTEuMzIuOTEgMSAxLjIxYTIuOSAyLjkgMCAwMS42MS4zNi40LjQgMCAwMS4xNi4zMi4zOC4zOCAwIDAxLS4xNi4zMS43NS43NSAwIDAxLS40NS4xMkExLjYgMS42IDAgMDEyIDEwLjc3di45M2EyLjI5IDIuMjkgMCAwMDEuMDcuMjMgMiAyIDAgMDAxLjE4LS4zMiAxLjEgMS4xIDAgMDAuNDMtLjkyIDEgMSAwIDAwLS4yNS0uNyAyLjQyIDIuNDIgMCAwMC0uODQtLjU2ek04Ljc5IDExYTIuNCAyLjQgMCAwMC4zMy0xLjI3IDIuMzIgMi4zMiAwIDAwLS4yNS0xLjEgMS44MSAxLjgxIDAgMDAtLjctLjc1IDIgMiAwIDAwLTEtLjI2IDIuMTggMi4xOCAwIDAwLTEuMDkuMjcgMS44NyAxLjg3IDAgMDAtLjczLjc3IDIuNDEgMi40MSAwIDAwLS4yNiAxLjE1IDIuMjYgMi4yNiAwIDAwLjI0IDEuMDUgMS44MyAxLjgzIDAgMDAuNjguNzUgMiAyIDAgMDAxIC4yOWwuODUgMWgxLjE5bC0xLjItMS4xMWExLjgxIDEuODEgMCAwMC45NC0uNzl6bS0uOTMtLjI2YTEgMSAwIDAxLTEuNTMgMCAxLjUxIDEuNTEgMCAwMS0uMjgtMSAxLjQ4IDEuNDggMCAwMS4yOS0xIC45Mi45MiAwIDAxLjc4LS4zNy44OS44OSAwIDAxLjc1LjM3IDEuNjIgMS42MiAwIDAxLjI3IDEgMS40NiAxLjQ2IDAgMDEtLjI4IDEuMDN6IiBmaWxsPSIjZjJmMmYyIi8+PHBhdGggZD0iTTE0LjgxIDE3LjQ5bC4yNC0uNzkuNDctLjI3LjgxLjM2LjUyLS41M3YtLjA2bC0uMzctLjcxLjIyLS41LjgxLS4yOWguMDl2LS43M2gtLjFsLS44LS4yNC0uMjYtLjQ2LjM1LS44Mi0uNTMtLjUxaC0uMDZsLS43MS4zNkwxNSAxMmwtLjMyLS44OWgtLjc0di4xMWwtLjI0Ljc5LS41MS4yMi0uODctLjQtLjUxLjUzLjA1LjEuMzguNzQtLjIuNTEtLjk0LjI5di43NGguMTFsLjc5LjI0LjIyLjUxLS4zOS44Ni41My41Mi4wOS0uMDUuNzQtLjM4LjUxLjIuMzQuODloLjczem0tMS4yLTIuMzZhMS4wNiAxLjA2IDAgMTExLjQ5LTEuNTIgMS4wNiAxLjA2IDAgMDEtMS40OSAxLjUyeiIgZmlsbD0iIzk0OTQ5NCIvPjwvc3ZnPg=="); +} + +.azure-mysql-database { + background-image: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxOCIgaGVpZ2h0PSIxOCI+PGRlZnM+PGxpbmVhckdyYWRpZW50IGlkPSJwcmVmaXhfX2EiIHgxPSIyLjU5IiB5MT0iMTAuMTYiIHgyPSIxNS40MSIgeTI9IjEwLjE2IiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSI+PHN0b3Agb2Zmc2V0PSIwIiBzdG9wLWNvbG9yPSIjMDA1YmExIi8+PHN0b3Agb2Zmc2V0PSIuMDciIHN0b3AtY29sb3I9IiMwMDYwYTkiLz48c3RvcCBvZmZzZXQ9Ii4zNiIgc3RvcC1jb2xvcj0iIzAwNzFjOCIvPjxzdG9wIG9mZnNldD0iLjUyIiBzdG9wLWNvbG9yPSIjMDA3OGQ0Ii8+PHN0b3Agb2Zmc2V0PSIuNjQiIHN0b3AtY29sb3I9IiMwMDc0Y2QiLz48c3RvcCBvZmZzZXQ9Ii44MiIgc3RvcC1jb2xvcj0iIzAwNmFiYiIvPjxzdG9wIG9mZnNldD0iMSIgc3RvcC1jb2xvcj0iIzAwNWJhMSIvPjwvbGluZWFyR3JhZGllbnQ+PC9kZWZzPjxwYXRoIGQ9Ik05IDUuMTRjLTMuNTQgMC02LjQxLTEtNi40MS0yLjMydjEyLjM2YzAgMS4yNyAyLjgyIDIuMyA2LjMyIDIuMzJIOWMzLjU0IDAgNi40MS0xIDYuNDEtMi4zMlYyLjgyYzAgMS4yOS0yLjg3IDIuMzItNi40MSAyLjMyeiIgZmlsbD0idXJsKCNwcmVmaXhfX2EpIi8+PHBhdGggZD0iTTE1LjQxIDIuODJjMCAxLjI5LTIuODcgMi4zMi02LjQxIDIuMzJzLTYuNDEtMS02LjQxLTIuMzJTNS40Ni41IDkgLjVzNi40MSAxIDYuNDEgMi4zMiIgZmlsbD0iI2U4ZThlOCIvPjxwYXRoIGQ9Ik0xMy45MiAyLjYzYzAgLjgyLTIuMjEgMS40OC00LjkyIDEuNDhzLTQuOTItLjY2LTQuOTItMS40OFM2LjI5IDEuMTYgOSAxLjE2czQuOTIuNjYgNC45MiAxLjQ3IiBmaWxsPSIjNTBlNmZmIi8+PHBhdGggZD0iTTkgM2ExMS41NSAxMS41NSAwIDAwLTMuODkuNTdBMTEuNDIgMTEuNDIgMCAwMDkgNC4xMWExMS4xNSAxMS4xNSAwIDAwMy44OS0uNThBMTEuODQgMTEuODQgMCAwMDkgM3oiIGZpbGw9IiMxOThhYjMiLz48cGF0aCBkPSJNMTIuNjQgOXYxLjYzaC0xYS4zOS4zOSAwIDAxLS4yOS0uMTRWOUgxMHYxLjc4YS45Mi45MiAwIDAwMSAuODloMS40OWwuMjYtLjEzcy0uMTEuNDEtLjI2LjQzaC0yLjM4djFoMi42NkExLjIxIDEuMjEgMCAwMDE0IDExLjdWOXpNOS41MyA5di0uNDlhLjcuNyAwIDAwLS40OC0uNzcgMS43NCAxLjc0IDAgMDAtLjUtLjA4Ljk0Ljk0IDAgMDAtLjkxLjU4bC0uNzggMS45LTEtMS45QS45My45MyAwIDAwNSA3LjY2YTEuNDQgMS40NCAwIDAwLS41MS4wOWMtLjM1LjExLS40My4zNC0uNDMuNzN2My4zMWgxLjE3VjkuNTZsLjYzIDEuNTdhMS4wOCAxLjA4IDAgMDAxIC42NmMuNDQgMCAuNjItLjI2LjgtLjY2bC42Ny0xLjUxdjIuMTVoMS4xOFY5eiIgZmlsbD0iI2YyZjJmMiIvPjwvc3ZnPg=="); +} + +.azure-oracle-autonomous-database, .azure-oracledatabase-autonomous-database-regular { + background-image: url("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNjEiIGhlaWdodD0iNjAiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTMwLjUgMjUuNTQ3Yy45MjMgMCAyLjY5My4wNiAyLjY5My4wNnMtMS4xOC0xLjk0LTEuNTctMy45NzdsLTEuNzI2LTEuNzI3YTIuNzY4IDIuNzY4IDAgMDEwLTMuOTEzbC4wMi0uMDJhMi43NDUgMi43NDUgMCAwMTEuOTU2LS44MWMuMDU3IDAgLjExNy4wMDcuMTc0LjAxYTEyLjk3IDEyLjk3IDAgMDExLjI1LTIuNjc3IDguNDYyIDguNDYyIDAgMDAtMi4xMi0uNTY2Yy0uMjU0LTUuOS01LjIwNy0xMC41LTExLjExNC0xMC4zMTdBMTEuMDcgMTEuMDcgMCAwMDkuNDg3IDguODIzQzQuNDY3IDkuNDIzLjY1IDEzLjYwNy41IDE4LjY1N2MuMjIzIDUuNzA2IDUuMDIzIDEwLjE1NiAxMC43MzMgOS45NS4zMiAwIC42NDQtLjAxNC45NDQtLjA0aDMuNjAzYzEuMzM3LTEuODk3IDcuNDEtMy4wMiAxNC43MjMtMy4wMkgzMC41eiIgZmlsbD0idXJsKCNwcmVmaXhfX3BhaW50MF9saW5lYXJfOTg1OV83MjM3KSIvPjxwYXRoIGQ9Ik0zNi40MzMgMjIuMzQ3bDMuNTEtMy41MWExLjI2NyAxLjI2NyAwIDAwMC0xLjc5bC0uMDItLjAyYTEuMjY4IDEuMjY4IDAgMDAtMS43OSAwbC0xLjM2IDEuMzZjLjQ0Ny00LjcwNyA0LjQyNy04LjM4IDkuMjMtOC4zOCAzLjkyNCAwIDUuOTk3IDEuODUgNy4zNzQgMy42NDMuNDczLjYxNyAxLjM3LjcgMS45Mi4xNWwuMDEtLjAxYy40NDMtLjQ0My41MDYtMS4xNS4xMjYtMS42NDdhMTEuODczIDExLjg3MyAwIDAwLTkuNDMtNC42ODNjLTYuMjUtLjAyNy0xMS4zOSA0Ljg0My0xMS44MDYgMTAuOTk3bC0xLjQzLTEuNDNhMS4yNjggMS4yNjggMCAwMC0xLjc5IDBsLS4wMi4wMmExLjI2NyAxLjI2NyAwIDAwMCAxLjc5bDMuNTEgMy41MWExLjM5IDEuMzkgMCAwMDEuOTY2IDB6bTcuMDg3LTguMjQ0bC0zLjE4IDguNzM3YTEuMzY1IDEuMzY1IDAgMTAyLjU4My44NzdsLjU1LTEuNzM0aDQuMjk3bC41NTMgMS43MjdhMS4zOCAxLjM4IDAgMTAyLjYxNy0uODgzbC0zLjA5Ny04LjcxYTIuMjk2IDIuMjk2IDAgMDAtNC4zMi0uMDE3bC0uMDAzLjAwM3ptMy42MjMgNS43OTRoLTMuMDlsMS4zMTQtNC4wOTRjLjExMy0uMzQ2LjE4My0uNy4yMS0xLjA1M2guMDY2Yy4wNC40Mi4xMDcuNzgzLjIwNCAxLjA4N2wxLjI5NiA0LjA2ek02MC4xMyAxOS43bC0zLjUwMy0zLjUwM2ExLjM5IDEuMzkgMCAwMC0xLjk2NyAwbC0zLjUxIDMuNTFhMS4yNjggMS4yNjggMCAwMDAgMS43OWwuMDIuMDJhMS4yNjcgMS4yNjcgMCAwMDEuNzkgMGwxLjM2LTEuMzZjLS40NDcgNC43MDYtNC40MjcgOC4zOC05LjIzIDguMzhhOS4yOTkgOS4yOTkgMCAwMS03LjM3My0zLjY0NGMtLjQ3NC0uNjE2LTEuMzctLjctMS45Mi0uMTVsLS4wMS4wMWMtLjQ0NC40NDQtLjUwNyAxLjE1LS4xMjcgMS42NDdhMTEuODczIDExLjg3MyAwIDAwOS40MyA0LjY4M2M2LjI1IDAgMTEuMzktNC44NzMgMTEuODA3LTExLjAyNmwxLjQzNiAxLjQzNmMuNDk0LjQ5NCAxLjI5LjQ5NCAxLjc4NC4wMDdsLjAwNi0uMDA3Yy41LS40OTMuNTA0LTEuMjk2LjAwNy0xLjc5M3oiIGZpbGw9IiMwMDc4RDQiLz48cGF0aCBkPSJNMzAuNSA0MS4wOWMtOC4yOSAwLTE1LjAxLTEuNDU3LTE1LjAxLTMuMjUzdjcuOThjMCAxLjc5NiA2LjcyIDMuMjUzIDE1LjAxIDMuMjUzczE1LjAxLTEuNDU3IDE1LjAxLTMuMjUzdi03Ljk4YzAgMS43OTYtNi43MiAzLjI1My0xNS4wMSAzLjI1M3ptMTIuNjMgMS44MDdhMjMuODkzIDIzLjg5MyAwIDAxLTcuNzczIDEuMzA2LjYyNi42MjYgMCAxMTAtMS4yNTNjMS4zNTYgMCAyLjcyMy0uMTI3IDQuMDU2LS4zNyAxLjEyLS4yMDcgMi4yMy0uNDk3IDMuMzA3LS44N2EuNjI2LjYyNiAwIDAxLjQxIDEuMTgzdi4wMDR6TTMwLjUgNTAuODMzYy04LjI5IDAtMTUuMDEtMS40NTYtMTUuMDEtMy4yNTN2Ny41NzdjMCAxLjc5NiA2LjcyIDMuMjUzIDE1LjAxIDMuMjUzczE1LjAxLTEuNDU3IDE1LjAxLTMuMjUzVjQ3LjU4YzAgMS43OTctNi43MiAzLjI1My0xNS4wMSAzLjI1M3ptMTIuNjMgMS41NDRhMjMuNzggMjMuNzggMCAwMS03Ljc3MyAxLjMwNi42MjYuNjI2IDAgMTEwLTEuMjUzYzEuMzU2IDAgMi43MjMtLjEyNyA0LjA1Ni0uMzcgMS4xMi0uMjA3IDIuMjMtLjQ5NyAzLjMwNy0uODdhLjYyNi42MjYgMCAwMS40MSAxLjE4M3YuMDA0em0yLjM4LTE5LjUzNGMtLjc2NyAwLTEuNTAzLS4xMS0yLjIzMy0uMjI2LjEuMDczLjIuMTQ2LjI0My4yNzNhLjYyNi42MjYgMCAwMS0uMzg3Ljc5NyAyMy45NDMgMjMuOTQzIDAgMDEtNy43NzMgMS4zMDcuNjI1LjYyNSAwIDExMC0xLjI1YzEuMzU3IDAgMi43MjMtLjEyNyA0LjA1Ny0uMzdhMjIuNTUzIDIyLjU1MyAwIDAwMy4xOC0uODM3Yy0xLjQ2NC0uMzA3LTIuODEtLjg4NC00LjA3LTEuNi0yLjI1LjMxMy01LjAwNy41MzMtOC4wMjQuNTMzLTcuNDY2IDAtMTMuNTItMS4zNi0xMy41Mi0yLjE2NyAwLS45OSA2LjA1NC0yLjUxNiAxMy41Mi0yLjUxNiAxLjIyIDAgMi4zOC4wNTMgMy41MDQuMTMtLjMwNC0uNDE3LS41NTQtLjg2NC0uODEtMS4zMTQtLjg3Ny0uMDM2LTEuNzctLjA2LTIuNjk0LS4wNi04LjI5IDAtMTUuMDEgMS40NC0xNS4wMSAzLjgyNHY2LjcwM2MwIDEuNzk3IDYuNzIgMy4yNTMgMTUuMDEgMy4yNTNzMTUuMDEtMS40NTYgMTUuMDEtMy4yNTNsLS4wMDMtMy4yMjd6IiBmaWxsPSJ1cmwoI3ByZWZpeF9fcGFpbnQxX2xpbmVhcl85ODU5XzcyMzcpIi8+PGRlZnM+PGxpbmVhckdyYWRpZW50IGlkPSJwcmVmaXhfX3BhaW50MF9saW5lYXJfOTg1OV83MjM3IiB4MT0iMTYuODk3IiB5MT0iMjguNjEzIiB4Mj0iMTYuODk3IiB5Mj0iMS42IiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSI+PHN0b3Agc3RvcC1jb2xvcj0iIzMyQkVERCIvPjxzdG9wIG9mZnNldD0iMSIgc3RvcC1jb2xvcj0iIzUwRTZGRiIvPjwvbGluZWFyR3JhZGllbnQ+PGxpbmVhckdyYWRpZW50IGlkPSJwcmVmaXhfX3BhaW50MV9saW5lYXJfOTg1OV83MjM3IiB4MT0iMTUuNDkiIHkxPSI0MS45OCIgeDI9IjQ1LjUxIiB5Mj0iNDEuOTgiIGdyYWRpZW50VW5pdHM9InVzZXJTcGFjZU9uVXNlIj48c3RvcCBzdG9wLWNvbG9yPSIjQzc0NjM0Ii8+PHN0b3Agb2Zmc2V0PSIuNSIgc3RvcC1jb2xvcj0iI0RCODk3RCIvPjxzdG9wIG9mZnNldD0iMSIgc3RvcC1jb2xvcj0iI0M3NDYzNCIvPjwvbGluZWFyR3JhZGllbnQ+PC9kZWZzPjwvc3ZnPg=="); +} + +.azure-oracle-exadata-database, .azure-oracledatabase-exadata-infrastructure { + background-image: url("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNjAiIGhlaWdodD0iNjAiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTIwLjU0NyAyNS41N2M1LjU2MyAwIDEwLjM2Ni42NjMgMTIuOTYzIDEuODgzIDIuNjczLTEuNCA0LjU0LTQuMTMgNC42NTctNy4zNDNhOC41NzIgOC41NzIgMCAwMC03LjQ0NC04LjI0Yy0uMjU2LTUuOTEtNS4yMTYtMTAuNTE3LTExLjEzLTEwLjMzN0ExMS4wODQgMTEuMDg0IDAgMDA5IDguNzU3Yy01LjAyNy42MS04Ljg1IDQuOC05IDkuODU2LjE2NyA0LjI1NyAyLjg4MyA3LjggNi42MTcgOS4yNTQgMi4yMTYtMS40NTQgNy42MDYtMi4yOTcgMTMuOTMtMi4yOTd6IiBmaWxsPSJ1cmwoI3ByZWZpeF9fcGFpbnQwX2xpbmVhcl85ODU5Xzc3MDUpIi8+PHBhdGggZD0iTTU4LjI3IDIuMzlIMzEuNzQzYTEuNjUzIDEuNjUzIDAgMDAtMS43MyAxLjU2N3YyMy43NTZjMi41MDcuNTE3IDQuMDY0IDEuMTU3IDQuMDY0IDEuNjI3IDAgLjA2MyAxLjQ5My4yMjMgMS40OTMuMjIzdjE5LjAxaDIyLjdBMS42NTMgMS42NTMgMCAwMDYwIDQ3LjAwN1YzLjk1N2ExLjY1MyAxLjY1MyAwIDAwLTEuNzMtMS41Njd6IiBmaWxsPSJ1cmwoI3ByZWZpeF9fcGFpbnQxX2xpbmVhcl85ODU5Xzc3MDUpIi8+PHBhdGggZD0iTTM0LjQyMyAyMi4xNDdhMy40MzggMy40MzggMCAwMTMuMjYtMy41OTRoMTQuOTI0YTMuNDQgMy40NCAwIDAxMy4yNiAzLjU5NCAzLjQ0IDMuNDQgMCAwMS0zLjI2IDMuNTkzSDM3LjY4M2EzLjQzOCAzLjQzOCAwIDAxLTMuMjYtMy41OTN6TTM0LjQyMyAxMS40NjdhMy40MzggMy40MzggMCAwMTMuMjYtMy41OTRoMTQuOTI0YTMuNDQgMy40NCAwIDAxMy4yNiAzLjU5NCAzLjQ0IDMuNDQgMCAwMS0zLjI2IDMuNTkzSDM3LjY4M2EzLjQzOCAzLjQzOCAwIDAxLTMuMjYtMy41OTN6IiBmaWxsPSIjMDAzMDY3Ii8+PHBhdGggZD0iTTM4LjYxNyAxMy44NzdhMi40MSAyLjQxIDAgMTAwLTQuODIgMi40MSAyLjQxIDAgMDAwIDQuODJ6TTM4LjYxNyAyNC41NDdhMi40MSAyLjQxIDAgMTAwLTQuODIgMi40MSAyLjQxIDAgMDAwIDQuODJ6IiBmaWxsPSIjNTBFNkZGIi8+PHBhdGggZD0iTTQ5Ljk2NyA0Mi42NzNMNDYuNjYgMzcuN2wzLjI4LTQuOTNhMS4zNjQgMS4zNjQgMCAwMC0yLjI3LTEuNTFsLTIuNjQzIDMuOTc3LTIuNjQ0LTMuOTc3YTEuMzY0IDEuMzY0IDAgMDAtMi4yNyAxLjUxbDMuMjggNC45My0zLjMwNiA0Ljk3M2ExLjM2NCAxLjM2NCAwIDEwMi4yNyAxLjUwN2wyLjY3My00LjAyIDIuNjczIDQuMDJhMS4zNjEgMS4zNjEgMCAxMDIuMjctMS41MDdoLS4wMDZ6IiBmaWxsPSIjMDAzMDY3Ii8+PHBhdGggZD0iTTIwLjU0NyA1MC44ODdjLTguMyAwLTE1LjAyNy0xLjQ1Ny0xNS4wMjctMy4yNTd2Ny41ODNjMCAxLjggNi43MjcgMy4yNTcgMTUuMDI3IDMuMjU3IDguMyAwIDE1LjAyNi0xLjQ1NyAxNS4wMjYtMy4yNTdWNDcuNjNjMCAxLjgtNi43MjYgMy4yNTctMTUuMDI2IDMuMjU3em0xMi42NDMgMS41NDZhMjMuODIyIDIzLjgyMiAwIDAxLTcuNzggMS4zMS42MjYuNjI2IDAgMTEwLTEuMjUzYzEuMzYgMCAyLjcyNy0uMTI3IDQuMDYtLjM3IDEuMTItLjIwNyAyLjIzMy0uNSAzLjMxLS44N2EuNjI2LjYyNiAwIDExLjQxMyAxLjE4M2gtLjAwM3ptLTEyLjY0My0xMS4zYy04LjMgMC0xNS4wMjctMS40NTYtMTUuMDI3LTMuMjU2djcuOTg2YzAgMS44IDYuNzI3IDMuMjU3IDE1LjAyNyAzLjI1NyA4LjMgMCAxNS4wMjYtMS40NTcgMTUuMDI2LTMuMjU3di03Ljk4NmMwIDEuOC02LjcyNiAzLjI1Ni0xNS4wMjYgMy4yNTZ6bTEyLjY0MyAxLjgxYTIzLjgyMiAyMy44MjIgMCAwMS03Ljc4IDEuMzEuNjI2LjYyNiAwIDExMC0xLjI1MyAyMi42ODUgMjIuNjg1IDAgMDA3LjM3LTEuMjQuNjI2LjYyNiAwIDExLjQxMyAxLjE4M2gtLjAwM3ptLTEyLjY0My0xNy4zN2MtOC4zIDAtMTUuMDI3IDEuNDQ0LTE1LjAyNyAzLjgyN3Y2LjcxYzAgMS44IDYuNzI3IDMuMjU3IDE1LjAyNyAzLjI1NyA4LjMgMCAxNS4wMjYtMS40NTcgMTUuMDI2LTMuMjU3di02LjQ2M2MwLTIuNjMtNi43MjYtNC4wNzQtMTUuMDI2LTQuMDc0em0xMi42NDMgOC4xNTRhMjMuNzA3IDIzLjcwNyAwIDAxLTcuNzggMS4zMS42MjYuNjI2IDAgMTEwLTEuMjU0IDIyLjY3NiAyMi42NzYgMCAwMDcuMzctMS4yNC42MjYuNjI2IDAgMTEuNDEzIDEuMTgzaC0uMDAzek0yMC41NDcgMzEuNTFjLTcuNDc0IDAtMTMuNTM0LTEuMzYzLTEzLjUzNC0yLjE2NyAwLS45OSA2LjA2LTIuNTIgMTMuNTM0LTIuNTIgNy40NzMgMCAxMy41MzMgMS41OSAxMy41MzMgMi41MiAwIC44NDQtNi4wNiAyLjE2Ny0xMy41MzMgMi4xNjd6IiBmaWxsPSJ1cmwoI3ByZWZpeF9fcGFpbnQyX2xpbmVhcl85ODU5Xzc3MDUpIi8+PGRlZnM+PGxpbmVhckdyYWRpZW50IGlkPSJwcmVmaXhfX3BhaW50MF9saW5lYXJfOTg1OV83NzA1IiB4MT0iMTkuMDgzIiB5MT0iMjcuODY3IiB4Mj0iMTkuMDgzIiB5Mj0iMS41MyIgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiPjxzdG9wIHN0b3AtY29sb3I9IiMzMkJFREQiLz48c3RvcCBvZmZzZXQ9IjEiIHN0b3AtY29sb3I9IiM1MEU2RkYiLz48L2xpbmVhckdyYWRpZW50PjxsaW5lYXJHcmFkaWVudCBpZD0icHJlZml4X19wYWludDFfbGluZWFyXzk4NTlfNzcwNSIgeDE9IjQ1LjAwNyIgeTE9IjQ4LjU3NyIgeDI9IjQ1LjAwNyIgeTI9IjIuMzkiIGdyYWRpZW50VW5pdHM9InVzZXJTcGFjZU9uVXNlIj48c3RvcCBzdG9wLWNvbG9yPSIjOTc5Nzk3Ii8+PHN0b3Agb2Zmc2V0PSIxIiBzdG9wLWNvbG9yPSIjQjNCMkIzIi8+PC9saW5lYXJHcmFkaWVudD48bGluZWFyR3JhZGllbnQgaWQ9InByZWZpeF9fcGFpbnQyX2xpbmVhcl85ODU5Xzc3MDUiIHgxPSI1LjUyIiB5MT0iNDIuMDIiIHgyPSIzNS41NyIgeTI9IjQyLjAyIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSI+PHN0b3Agc3RvcC1jb2xvcj0iI0M3NDYzNCIvPjxzdG9wIG9mZnNldD0iLjUiIHN0b3AtY29sb3I9IiNEQjg5N0QiLz48c3RvcCBvZmZzZXQ9IjEiIHN0b3AtY29sb3I9IiNDNzQ2MzQiLz48L2xpbmVhckdyYWRpZW50PjwvZGVmcz48L3N2Zz4="); +} + +.azure-oracledatabase-cloud-vm-cluster { + background-image: url("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNjAiIGhlaWdodD0iNjAiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTM5LjM3IDQ5LjcyOGMtMTEuMjM4IDAtMjAuMzQ4LTEuOTc1LTIwLjM0OC00LjQxMnYxMC4yNzJjMCAyLjQzNyA5LjExIDQuNDEyIDIwLjM0OCA0LjQxMnMyMC4zNDctMS45NzUgMjAuMzQ3LTQuNDEyVjQ1LjMxNmMwIDIuNDM3LTkuMTEgNC40MTItMjAuMzQ3IDQuNDEyem0xNy4xMiAyLjA5MmMtMS41MzcuNTMtMy4xMy45NS00LjczIDEuMjQ1YTMyLjM5OCAzMi4zOTggMCAwMS01LjgwNy41MjguODQ3Ljg0NyAwIDExMC0xLjY5MyAzMC41NDcgMzAuNTQ3IDAgMDA5Ljk4My0xLjY4Ljg1Ljg1IDAgMDExLjA4Mi41MjQuODQ3Ljg0NyAwIDAxLS41MjQgMS4wNzlsLS4wMDQtLjAwM3pNMzkuMzcgMzYuNTE4Yy0xMS4yMzggMC0yMC4zNDgtMS45NzUtMjAuMzQ4LTQuNDEydjEwLjgxNmMwIDIuNDM3IDkuMTEgNC40MSAyMC4zNDggNC40MXMyMC4zNDctMS45NzYgMjAuMzQ3LTQuNDEzVjMyLjEwM2MwIDIuNDM3LTkuMTEgNC40MTItMjAuMzQ3IDQuNDEydi4wMDN6bTE3LjEyIDIuNDVjLTEuNTQuNTMyLTMuMTMuOTUtNC43MyAxLjI0NWEzMi40MjYgMzIuNDI2IDAgMDEtNS44MDcuNTI4Ljg0Ny44NDcgMCAxMTAtMS42OTMgMzAuNTQ3IDMwLjU0NyAwIDAwOS45ODMtMS42OC44NS44NSAwIDAxMS4wODIuNTI1Ljg0My44NDMgMCAwMS0uNTI0IDEuMDc5bC0uMDA0LS4wMDR6bS0xNy4xMi0yMy41MmMtMTEuMjM4IDAtMjAuMzQ4IDEuOTUxLTIwLjM0OCA1LjE4MXY5LjA4N2MwIDIuNDM3IDkuMTEgNC40MDkgMjAuMzQ4IDQuNDA5czIwLjM0Ny0xLjk3NiAyMC4zNDctNC40MTJ2LTguNzU1YzAtMy41NjItOS4xMS01LjUxLTIwLjM0Ny01LjUxem0xNy4xMiAxMS4wMzhjLTEuNTQuNTMtMy4xMy45NS00LjczIDEuMjQ1YTMyLjM5OCAzMi4zOTggMCAwMS01LjgwNy41MjcuODQ3Ljg0NyAwIDExMC0xLjY5MyAzMC41NDcgMzAuNTQ3IDAgMDA5Ljk4My0xLjY4Ljg1Ljg1IDAgMDExLjA4Mi41MjUuODQ3Ljg0NyAwIDAxLS41MjQgMS4wOGwtLjAwNC0uMDA0ek0zOS4zNyAyMy40OGMtMTAuMTIzIDAtMTguMzI2LTEuODQyLTE4LjMyNi0yLjkzNCAwLTEuMzQyIDguMjAzLTMuNDEzIDE4LjMyNi0zLjQxMyAxMC4xMjIgMCAxOC4zMjUgMi4xNTQgMTguMzI1IDMuNDEzIDAgMS4xNDItOC4yMDMgMi45MzQtMTguMzI1IDIuOTM0eiIgZmlsbD0idXJsKCNwcmVmaXhfX3BhaW50MF9saW5lYXJfOTg1OV84NTExKSIvPjxwYXRoIGQ9Ik0xOS4wMjIgMjAuNTQzdi0uMTU2YzAtMy4wMSA3LjkyOC00LjkxIDE4LjExNy01LjE1Mi0xLjE3Mi0yLjYzLTMuNjI1LTQuNTc4LTYuNjI3LTQuOTc3QzMwLjI1NyA0LjM5MiAyNS4zMzctLjE3NiAxOS40NzEuMDA3QTExLjAwMSAxMS4wMDEgMCAwMDguOTYzIDcuMTcgMTAuMTQzIDEwLjE0MyAwIDAwLjA0IDE2Ljk0NWMuMjIzIDUuNjcgNC45OSAxMC4wODkgMTAuNjYgOS44ODYuMzE2IDAgLjYzOC0uMDEzLjkzNy0uMDRoNy4zODNsLjAwMy02LjI0OHoiIGZpbGw9InVybCgjcHJlZml4X19wYWludDFfbGluZWFyXzk4NTlfODUxMSkiLz48ZGVmcz48bGluZWFyR3JhZGllbnQgaWQ9InByZWZpeF9fcGFpbnQwX2xpbmVhcl85ODU5Xzg1MTEiIHgxPSIxOS4wMjIiIHkxPSIzNy43MjQiIHgyPSI1OS43MTciIHkyPSIzNy43MjQiIGdyYWRpZW50VW5pdHM9InVzZXJTcGFjZU9uVXNlIj48c3RvcCBzdG9wLWNvbG9yPSIjQzc0NjM0Ii8+PHN0b3Agb2Zmc2V0PSIuNSIgc3RvcC1jb2xvcj0iI0RCODk3RCIvPjxzdG9wIG9mZnNldD0iMSIgc3RvcC1jb2xvcj0iI0M3NDYzNCIvPjwvbGluZWFyR3JhZGllbnQ+PGxpbmVhckdyYWRpZW50IGlkPSJwcmVmaXhfX3BhaW50MV9saW5lYXJfOTg1OV84NTExIiB4MT0iMTguNTg3IiB5MT0iMjYuODM4IiB4Mj0iMTguNTg3IiB5Mj0iMCIgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiPjxzdG9wIHN0b3AtY29sb3I9IiMzMkJFREQiLz48c3RvcCBvZmZzZXQ9IjEiIHN0b3AtY29sb3I9IiM1MEU2RkYiLz48L2xpbmVhckdyYWRpZW50PjwvZGVmcz48L3N2Zz4="); +} + +.azure-resource-group { + background-image: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxOCIgaGVpZ2h0PSIxOCI+PHBhdGggZD0iTS41IDE1LjA4YS4xNi4xNiAwIDAwLjA4LjE0bDEuMTYuNjVMMy43IDE3YS4xNy4xNyAwIDAwLjIzLS4wNmwuNjYtMS4xMmEuMTYuMTYgMCAwMC0uMDYtLjIxbC0yLjMtMS4zYS4xNy4xNyAwIDAxLS4wOC0uMTRWMy44NWEuMTYuMTYgMCAwMS4wOC0uMTRsMi4zLTEuM2EuMTYuMTYgMCAwMC4wNi0uMjFsLS42Ni0xLjEyQS4xNy4xNyAwIDAwMy43IDFMMS43OCAyLjExbC0xLjIuNjdhLjE2LjE2IDAgMDAtLjA4LjE0djEyLjE2eiIgZmlsbD0iIzk0OTQ5NCIvPjxwYXRoIGQ9Ik0yLjE0IDMuNzdsLjA2LS4wNiAyLjMtMS4zYS4xNC4xNCAwIDAwLjA2LS4yMUwzLjkgMS4wOEEuMTUuMTUgMCAwMDMuNjggMUwxLjc1IDIuMTFsLTEuMTkuNjdzLS4wNSAwLS4wNi4wNmwuOS41MXpNNC41IDE1LjU5bC0yLjMtMS4zYS4yMi4yMiAwIDAxLS4wNy0uMDlsLTEuNjIgMWguMDVsMS4xNS42NSAyIDEuMTFhLjE1LjE1IDAgMDAuMjItLjA2bC42Ni0xLjEyYS4xNC4xNCAwIDAwLS4wOS0uMTl6IiBmaWxsPSIjYTNhM2EzIi8+PHBhdGggZD0iTTE3LjUgMTUuMDhhLjE2LjE2IDAgMDEtLjA4LjE0bC0xLjE2LjY1TDE0LjMgMTdhLjE3LjE3IDAgMDEtLjIzLS4wNmwtLjY2LTEuMTJhLjE2LjE2IDAgMDEuMDYtLjIxbDIuMy0xLjNhLjE3LjE3IDAgMDAuMDgtLjE0VjMuODVhLjE2LjE2IDAgMDAtLjA4LS4xNGwtMi4zLTEuM2EuMTYuMTYgMCAwMS0uMDYtLjIxbC42Ni0xLjEyQS4xNy4xNyAwIDAxMTQuMyAxbDEuOTIgMS4wOSAxLjIuNjdhLjE2LjE2IDAgMDEuMDguMTR2MTIuMTh6IiBmaWxsPSIjOTQ5NDk0Ii8+PHBhdGggZD0iTTE1Ljg2IDMuNzdsLS4wNi0uMDYtMi4zLTEuM2EuMTQuMTQgMCAwMS0uMDYtLjIxbC42Ni0xLjEyYS4xNS4xNSAwIDAxLjIyLS4wOGwxLjkzIDEuMDkgMS4xOS42Ny4wNi4wNi0uOS41MXpNMTMuNSAxNS41OWwyLjMtMS4zYS4yMi4yMiAwIDAwLjA3LS4wOWwxLjYyIDEtMS4xNS42NS0yIDEuMTFhLjE1LjE1IDAgMDEtLjIyLS4wNmwtLjY2LTEuMTJhLjE0LjE0IDAgMDEuMDQtLjE5eiIgZmlsbD0iI2EzYTNhMyIvPjxwYXRoIGZpbGw9IiMzMmJlZGQiIGQ9Ik0xNC4zMSA1LjkzdjYuMTRsLTUuMzIgMy4wOVY5LjAxbDUuMzItMy4wOHoiLz48cGF0aCBmaWxsPSIjOWNlYmZmIiBkPSJNMTQuMzEgNS45M0w5IDkuMDIgMy42OCA1LjkzIDkgMi44NGw1LjMxIDMuMDl6Ii8+PHBhdGggZmlsbD0iIzUwZTZmZiIgZD0iTTguOTkgOS4wMnY2LjE0bC01LjMxLTMuMDlWNS45M2w1LjMxIDMuMDl6Ii8+PHBhdGggZmlsbD0iIzljZWJmZiIgZD0iTTMuNjggMTIuMDdsNS4zMS0zLjA2djYuMTVsLTUuMzEtMy4wOXoiLz48cGF0aCBmaWxsPSIjNTBlNmZmIiBkPSJNMTQuMzEgMTIuMDdMOC45OSA5LjAxdjYuMTVsNS4zMi0zLjA5eiIvPjwvc3ZnPg=="); +} + +.azure-subnet { + background-image: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxOCIgaGVpZ2h0PSIxOCI+PGRlZnM+PGxpbmVhckdyYWRpZW50IGlkPSJwcmVmaXhfX2EiIHgxPSI5LjAzMyIgeTE9IjEwLjMwNSIgeDI9IjkuMDMzIiB5Mj0iNy42OTUiIGdyYWRpZW50VW5pdHM9InVzZXJTcGFjZU9uVXNlIj48c3RvcCBvZmZzZXQ9IjAiIHN0b3AtY29sb3I9IiM1ZTk2MjQiLz48c3RvcCBvZmZzZXQ9Ii4yNDEiIHN0b3AtY29sb3I9IiM2ZmIwMmEiLz48c3RvcCBvZmZzZXQ9Ii41MDEiIHN0b3AtY29sb3I9IiM3Y2M1MmYiLz48c3RvcCBvZmZzZXQ9Ii43NTYiIHN0b3AtY29sb3I9IiM4M2QyMzIiLz48c3RvcCBvZmZzZXQ9IjEiIHN0b3AtY29sb3I9IiM4NmQ2MzMiLz48L2xpbmVhckdyYWRpZW50PjwvZGVmcz48cGF0aCBkPSJNOS4wMzEgNy43QTEuMzA1IDEuMzA1IDAgMTAxMC4zMzggOWExLjMwNSAxLjMwNSAwIDAwLTEuMzA3LTEuM3oiIGZpbGw9InVybCgjcHJlZml4X19hKSIvPjxwYXRoIGQ9Ik02LjM0IDEzLjM3NWwtLjYyNi42MjlhLjI4NC4yODQgMCAwMS0uNDAyIDBMLjY3MyA5LjM4YS41NjguNTY4IDAgMDEwLS44MDRsLjYyNi0uNjI5IDUuMDQgNS4wMjdhLjI4NC4yODQgMCAwMS4wMDIuNDAyeiIgZmlsbD0iIzUwZTZmZiIvPjxwYXRoIGQ9Ik01LjYyIDMuOTk2bC42MjcuNjI2YS4yODQuMjg0IDAgMDEwIC40MDJMMS4yOTUgOS45OWwtLjYyNi0uNjI0YS41NjguNTY4IDAgMDEwLS44MDNMNS4yMiAzLjk5OWEuMjg0LjI4NCAwIDAxLjQwMSAweiIgZmlsbD0iIzE0OTBkZiIvPjxwYXRoIGQ9Ik0xNi43MDIgNy45NDdsLjYyNy42MjlhLjU2OC41NjggMCAwMS0uMDAxLjgwM2wtNC42MzkgNC42MjZhLjI4NC4yODQgMCAwMS0uNDAyIDBsLS42MjctLjYzYS4yODQuMjg0IDAgMDEuMDAxLS40MDFsNS4wNDEtNS4wMjd6IiBmaWxsPSIjNTBlNmZmIi8+PHBhdGggZD0iTTE3LjMzMyA5LjM2NGwtLjYyOS42MjctNC45NTMtNC45NjdhLjI4NC4yODQgMCAwMTAtLjQwMmwuNjI4LS42MjZhLjI4NC4yODQgMCAwMS40MDIgMGw0LjU1MiA0LjU2NmEuNTY4LjU2OCAwIDAxMCAuODAzeiIgZmlsbD0iIzE0OTBkZiIvPjwvc3ZnPg=="); +} + +.azure-sql-database { + background-image: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxOCIgaGVpZ2h0PSIxOCI+PGRlZnM+PHJhZGlhbEdyYWRpZW50IGlkPSJwcmVmaXhfX2IiIGN4PSI5LjM2IiBjeT0iMTAuNTciIHI9IjcuMDciIGdyYWRpZW50VW5pdHM9InVzZXJTcGFjZU9uVXNlIj48c3RvcCBvZmZzZXQ9IjAiIHN0b3AtY29sb3I9IiNmMmYyZjIiLz48c3RvcCBvZmZzZXQ9Ii41OCIgc3RvcC1jb2xvcj0iI2VlZSIvPjxzdG9wIG9mZnNldD0iMSIgc3RvcC1jb2xvcj0iI2U2ZTZlNiIvPjwvcmFkaWFsR3JhZGllbnQ+PGxpbmVhckdyYWRpZW50IGlkPSJwcmVmaXhfX2EiIHgxPSIyLjU5IiB5MT0iMTAuMTYiIHgyPSIxNS40MSIgeTI9IjEwLjE2IiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSI+PHN0b3Agb2Zmc2V0PSIwIiBzdG9wLWNvbG9yPSIjMDA1YmExIi8+PHN0b3Agb2Zmc2V0PSIuMDciIHN0b3AtY29sb3I9IiMwMDYwYTkiLz48c3RvcCBvZmZzZXQ9Ii4zNiIgc3RvcC1jb2xvcj0iIzAwNzFjOCIvPjxzdG9wIG9mZnNldD0iLjUyIiBzdG9wLWNvbG9yPSIjMDA3OGQ0Ii8+PHN0b3Agb2Zmc2V0PSIuNjQiIHN0b3AtY29sb3I9IiMwMDc0Y2QiLz48c3RvcCBvZmZzZXQ9Ii44MiIgc3RvcC1jb2xvcj0iIzAwNmFiYiIvPjxzdG9wIG9mZnNldD0iMSIgc3RvcC1jb2xvcj0iIzAwNWJhMSIvPjwvbGluZWFyR3JhZGllbnQ+PC9kZWZzPjxwYXRoIGQ9Ik05IDUuMTRjLTMuNTQgMC02LjQxLTEtNi40MS0yLjMydjEyLjM2YzAgMS4yNyAyLjgyIDIuMyA2LjMyIDIuMzJIOWMzLjU0IDAgNi40MS0xIDYuNDEtMi4zMlYyLjgyYzAgMS4yOS0yLjg3IDIuMzItNi40MSAyLjMyeiIgZmlsbD0idXJsKCNwcmVmaXhfX2EpIi8+PHBhdGggZD0iTTE1LjQxIDIuODJjMCAxLjI5LTIuODcgMi4zMi02LjQxIDIuMzJzLTYuNDEtMS02LjQxLTIuMzJTNS40Ni41IDkgLjVzNi40MSAxIDYuNDEgMi4zMiIgZmlsbD0iI2U4ZThlOCIvPjxwYXRoIGQ9Ik0xMy45MiAyLjYzYzAgLjgyLTIuMjEgMS40OC00LjkyIDEuNDhzLTQuOTItLjY2LTQuOTItMS40OFM2LjI5IDEuMTYgOSAxLjE2czQuOTIuNjYgNC45MiAxLjQ3IiBmaWxsPSIjNTBlNmZmIi8+PHBhdGggZD0iTTkgM2ExMS41NSAxMS41NSAwIDAwLTMuODkuNTdBMTEuNDIgMTEuNDIgMCAwMDkgNC4xMWExMS4xNSAxMS4xNSAwIDAwMy44OS0uNThBMTEuODQgMTEuODQgMCAwMDkgM3oiIGZpbGw9IiMxOThhYjMiLz48cGF0aCBkPSJNMTIuOSAxMS40VjhIMTJ2NC4xM2gyLjQ2di0uNzN6TTUuNzYgOS43M2ExLjgzIDEuODMgMCAwMS0uNTEtLjMxLjQ0LjQ0IDAgMDEtLjEyLS4zMi4zNC4zNCAwIDAxLjE1LS4zLjY4LjY4IDAgMDEuNDItLjEyIDEuNjIgMS42MiAwIDAxMSAuMjl2LS44NmEyLjU4IDIuNTggMCAwMC0xLS4xNiAxLjY0IDEuNjQgMCAwMC0xLjA5LjM0IDEuMDggMS4wOCAwIDAwLS40Mi44OWMwIC41MS4zMi45MSAxIDEuMjFhMi44OCAyLjg4IDAgMDEuNjIuMzYuNDIuNDIgMCAwMS4xNS4zMi4zOC4zOCAwIDAxLS4xNi4zMS44MS44MSAwIDAxLS40NS4xMSAxLjY2IDEuNjYgMCAwMS0xLjA5LS40MlYxMmEyLjE3IDIuMTcgMCAwMDEuMDcuMjQgMS44OCAxLjg4IDAgMDAxLjE4LS4zMyAxLjA4IDEuMDggMCAwMC4zMy0uOTEgMS4wNSAxLjA1IDAgMDAtLjI1LS43IDIuNDIgMi40MiAwIDAwLS44My0uNTd6TTExIDExLjMyYTIuMzQgMi4zNCAwIDAwLjMzLTEuMjZBMi4zMiAyLjMyIDAgMDAxMSA5YTEuODEgMS44MSAwIDAwLS43LS43NSAyIDIgMCAwMC0xLS4yNiAyLjExIDIuMTEgMCAwMC0xLjA4LjI3IDEuODYgMS44NiAwIDAwLS43My43NCAyLjQ2IDIuNDYgMCAwMC0uMjYgMS4xNCAyLjI2IDIuMjYgMCAwMC4yNCAxIDEuNzYgMS43NiAwIDAwLjY5Ljc0IDIuMDYgMi4wNiAwIDAwMSAuM2wuODYgMWgxLjIxTDEwIDEyLjA4YTEuNzkgMS43OSAwIDAwMS0uNzZ6bS0xLS4yNWEuOTQuOTQgMCAwMS0uNzYuMzUuOTIuOTIgMCAwMS0uNzYtLjM2IDEuNTIgMS41MiAwIDAxLS4yOS0xIDEuNTMgMS41MyAwIDAxLjI5LTEgMSAxIDAgMDEuNzgtLjM3Ljg3Ljg3IDAgMDEuNzUuMzcgMS42MiAxLjYyIDAgMDEuMjcgMSAxLjQ2IDEuNDYgMCAwMS0uMjggMS4wMXoiIGZpbGw9InVybCgjcHJlZml4X19iKSIvPjwvc3ZnPg=="); +} + +.azure-subscriptions { + background-image: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxOCIgaGVpZ2h0PSIxOCI+PGRlZnM+PHJhZGlhbEdyYWRpZW50IGlkPSJwcmVmaXhfX2EiIGN4PSItMzYuNjMiIGN5PSIxNy4xMiIgcj0iMTEuMTgiIGdyYWRpZW50VHJhbnNmb3JtPSJtYXRyaXgoLjk0IDAgMCAuOTQgNDEuODggLTcuNCkiIGdyYWRpZW50VW5pdHM9InVzZXJTcGFjZU9uVXNlIj48c3RvcCBvZmZzZXQ9Ii4yNyIgc3RvcC1jb2xvcj0iI2ZmZDcwZiIvPjxzdG9wIG9mZnNldD0iLjQ5IiBzdG9wLWNvbG9yPSIjZmZjYjEyIi8+PHN0b3Agb2Zmc2V0PSIuODgiIHN0b3AtY29sb3I9IiNmZWFjMTkiLz48c3RvcCBvZmZzZXQ9IjEiIHN0b3AtY29sb3I9IiNmZWExMWIiLz48L3JhZGlhbEdyYWRpZW50PjwvZGVmcz48cGF0aCBkPSJNMTMuNTYgNy4xOWEyLjA3IDIuMDcgMCAwMDAtMi45M0wxMCAuNjlhMi4wNiAyLjA2IDAgMDAtMi45MiAwTDMuNTIgNC4yNmEyLjA5IDIuMDkgMCAwMDAgMi45M2wzIDNhLjYxLjYxIDAgMDEuMTcuNDF2NS41MmEuNy43IDAgMDAuMi41bDEuMzUgMS4zNWEuNDUuNDUgMCAwMC42NiAwbDEuMzEtMS4zMS43Ny0uNzdhLjI2LjI2IDAgMDAwLS4zOGwtLjU1LS41NmEuMjkuMjkgMCAwMTAtLjQybC41NS0uNTZhLjI2LjI2IDAgMDAwLS4zOEwxMC40IDEzYS4yOC4yOCAwIDAxMC0uNDFMMTEgMTJhLjI2LjI2IDAgMDAwLS4zOGwtLjc3LS43OHYtLjI4em0tNS01LjY0YTEuMTggMS4xOCAwIDExLTEuMTkgMS4xOCAxLjE3IDEuMTcgMCAwMTEuMTctMS4xOHoiIGZpbGw9InVybCgjcHJlZml4X19hKSIvPjxwYXRoIGQ9Ik03LjYyIDE2LjIxQS4yNS4yNSAwIDAwOCAxNnYtNC40NWEuMjcuMjcgMCAwMC0uMTEtLjIyLjI1LjI1IDAgMDAtLjM5LjIyVjE2YS4yNy4yNyAwIDAwLjEyLjIxeiIgZmlsbD0iI2ZmOTMwMCIgb3BhY2l0eT0iLjc1Ii8+PHJlY3QgeD0iNS42OSIgeT0iNS40NSIgd2lkdGg9IjUuODYiIGhlaWdodD0iLjY5IiByeD0iLjMyIiBmaWxsPSIjZmY5MzAwIiBvcGFjaXR5PSIuNzUiLz48cmVjdCB4PSI1LjY5IiB5PSI2LjU3IiB3aWR0aD0iNS44NiIgaGVpZ2h0PSIuNjkiIHJ4PSIuMzIiIGZpbGw9IiNmZjkzMDAiIG9wYWNpdHk9Ii43NSIvPjwvc3ZnPg=="); +} + +.azure-virtual-network, .azure-vcn { + background-image: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxOCIgaGVpZ2h0PSIxOCI+PGRlZnM+PGxpbmVhckdyYWRpZW50IGlkPSJwcmVmaXhfX2EiIHgxPSI5Ljg4IiB5MT0iOC41OSIgeDI9IjExLjUyIiB5Mj0iMTAuMjMiIGdyYWRpZW50VHJhbnNmb3JtPSJyb3RhdGUoLS4wOCAtMjg1LjQ2NCAtMTQ1NC4wOCkiIGdyYWRpZW50VW5pdHM9InVzZXJTcGFjZU9uVXNlIj48c3RvcCBvZmZzZXQ9IjAiIHN0b3AtY29sb3I9IiM4NmQ2MzMiLz48c3RvcCBvZmZzZXQ9IjEiIHN0b3AtY29sb3I9IiM1ZTk2MjQiLz48L2xpbmVhckdyYWRpZW50PjxsaW5lYXJHcmFkaWVudCBpZD0icHJlZml4X19iIiB4MT0iNi4xOCIgeTE9IjguNTkiIHgyPSI3LjgxIiB5Mj0iMTAuMjMiIGdyYWRpZW50VW5pdHM9InVzZXJTcGFjZU9uVXNlIj48c3RvcCBvZmZzZXQ9IjAiIHN0b3AtY29sb3I9IiM4NmQ2MzMiLz48c3RvcCBvZmZzZXQ9IjEiIHN0b3AtY29sb3I9IiM1ZTk2MjQiLz48L2xpbmVhckdyYWRpZW50PjxsaW5lYXJHcmFkaWVudCBpZD0icHJlZml4X19jIiB4MT0iMi40OCIgeTE9IjguNTkiIHgyPSI0LjExIiB5Mj0iMTAuMjMiIGdyYWRpZW50VW5pdHM9InVzZXJTcGFjZU9uVXNlIj48c3RvcCBvZmZzZXQ9IjAiIHN0b3AtY29sb3I9IiM4NmQ2MzMiLz48c3RvcCBvZmZzZXQ9IjEiIHN0b3AtY29sb3I9IiM1ZTk2MjQiLz48L2xpbmVhckdyYWRpZW50PjwvZGVmcz48Y2lyY2xlIGN4PSIxMi43NCIgY3k9IjguOTkiIHI9IjEuMTYiIGZpbGw9InVybCgjcHJlZml4X19hKSIvPjxjaXJjbGUgY3g9IjkuMDQiIGN5PSI5IiByPSIxLjE2IiBmaWxsPSJ1cmwoI3ByZWZpeF9fYikiLz48Y2lyY2xlIGN4PSI1LjM0IiBjeT0iOSIgcj0iMS4xNiIgZmlsbD0idXJsKCNwcmVmaXhfX2MpIi8+PHBhdGggZD0iTTYuMTgyIDEzLjYzOGwtLjY2NC42NjVhLjMuMyAwIDAxLS40MjQgMEwuMTggOS40MDRhLjYuNiAwIDAxLS4wMDEtLjg0OGwuNjYzLS42NjYgNS4zNCA1LjMyNGEuMy4zIDAgMDEwIC40MjV6IiBmaWxsPSIjNTBlNmZmIi8+PHBhdGggZD0iTTUuNDE4IDMuNzA4bC42NjYuNjY0YS4zLjMgMCAwMTAgLjQyNEwuODM4IDEwLjA1N2wtLjY2Ni0uNjYzYS42LjYgMCAwMS0uMDAxLS44NDlMNC45OTQgMy43MWEuMy4zIDAgMDEuNDI0IDB6IiBmaWxsPSIjMTQ5MGRmIi8+PHBhdGggZD0iTTE3LjE1NyA3Ljg4bC42NjMuNjY2YS42LjYgMCAwMTAgLjg0OGwtNC45MTUgNC45YS4zLjMgMCAwMS0uNDI0IDBsLS42NjQtLjY2NmEuMy4zIDAgMDEwLS40MjRsNS4zNC01LjMyNHoiIGZpbGw9IiM1MGU2ZmYiLz48cGF0aCBkPSJNMTcuODE4IDkuMzg3bC0uNjY1LjY2NC01LjI0Ny01LjI2MWEuMy4zIDAgMDEwLS40MjVsLjY3NC0uNjdhLjMuMyAwIDAxLjQyNCAwbDQuODIzIDQuODM2YS42LjYgMCAwMS0uMDAyLjg0OXoiIGZpbGw9IiMxNDkwZGYiLz48L3N2Zz4="); +} +`, + + 'general-theme.css': String.raw`/* Copyright (c) 2020, Oracle and/or its affiliates. All rights reserved. */ +/* Licensed under the Universal Permissive License v 1.0 as shown at https://oss.oracle.com/licenses/upl. */ + +/* +** Resources +*/ +.general-rectangle { + background-image: url("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNDAiIGhlaWdodD0iMjAiIHZpZXdCb3g9IjAgMCA0MCAzMCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cGF0aCBzdHJva2U9IiMwMDAiIHN0cm9rZS13aWR0aD0iMiIgZmlsbD0ibm9uZSIgZD0iTTIgNWgzNnYyMEgyeiIvPjwvc3ZnPg=="); +} + +`, + + 'google-theme.css': String.raw`/* Copyright (c) 2020, Oracle and/or its affiliates. All rights reserved. */ +/* Licensed under the Universal Permissive License v 1.0 as shown at https://oss.oracle.com/licenses/upl. */ + +/* +** Groups +*/ +.google-cloud { + background-image: url("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMzIiIGhlaWdodD0iMzIiIHZpZXdCb3g9IjAgMCA3NCA1NCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48ZGVmcz48bGluZWFyR3JhZGllbnQgaWQ9InByZWZpeF9fYSIgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiIHgxPSI2MS4yOTUiIHkxPSIxMC45OTgiIHgyPSIuOTkzIiB5Mj0iNTMuNzY3Ij48c3RvcCBvZmZzZXQ9IjAiIHN0b3AtY29sb3I9IiM2ODk5ZDEiLz48c3RvcCBvZmZzZXQ9Ii43MjIiIHN0b3AtY29sb3I9IiNiN2Q1NTMiLz48L2xpbmVhckdyYWRpZW50PjxsaW5lYXJHcmFkaWVudCBpZD0icHJlZml4X19iIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgeDE9IjYyLjYyNiIgeTE9IjEyLjg3NSIgeDI9IjU5LjU2MiIgeTI9IjE1LjA0google+PHN0b3Agb2Zmc2V0PSIwIiBzdG9wLWNvbG9yPSIjNjg5OWQxIi8+PHN0b3Agb2Zmc2V0PSIuNzIyIiBzdG9wLWNvbG9yPSIjYjdkNTUzIi8+PC9saW5lYXJHcmFkaWVudD48bGluZWFyR3JhZGllbnQgaWQ9InByZWZpeF9fYyIgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiIHgxPSI2Mi44OTgiIHkxPSIxMy4yNTgiIHgyPSIyLjU5NiIgeTI9IjU2LjAyNiI+PHN0b3Agb2Zmc2V0PSIwIiBzdG9wLWNvbG9yPSIjNjg5OWQxIi8+PHN0b3Agb2Zmc2V0PSIuNzIyIiBzdG9wLWNvbG9yPSIjYjdkNTUzIi8+PC9saW5lYXJHcmFkaWVudD48bGluZWFyR3JhZGllbnQgaWQ9InByZWZpeF9fZCIgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiIHgxPSIxMC44MzIiIHkxPSIyMy40MjEiIHgyPSIxMC4yNTgiIHkyPSIyMy44MjgiPjxzdG9wIG9mZnNldD0iMCIgc3RvcC1jb2xvcj0iIzY4OTlkMSIvPjxzdG9wIG9mZnNldD0iLjcyMiIgc3RvcC1jb2xvcj0iI2I3ZDU1MyIvPjwvbGluZWFyR3JhZGllbnQ+PC9kZWZzPjxwYXRoIGQ9Ik00NC4zOCAyOC42NWwuMDQuMTJjLjAxLjAzLjAyLjA3LjA0LjExbC4xNy4zLS4xMy4yNi4xOS0uMTcuMjQuMTljLjA1LjAyLjA2LjAzLjA3LjAzbC4wNi4wMi40LjAzaC4xNmMuMDYgMCAuMTItLjAxLjE3LS4wMi4wNy0uMDEuMTMtLjAzLjE5LS4wNi4xMi0uMDUuMi0uMTIuMjgtLjIyTDYzLjEzIDcuNDFsLjQ3IDIuNDgtLjI0LjE0LjI1LS4wNSAyLjA0IDEzLjVjLjAyLjAzLjAzLjA1LjA1LjA3bC4wNi4wNi4wNi4wNi4xLjA0Yy4wMy4wMS4wNi4wMi4xLjAzLjA3LjAyLjEuMDMuMTIuMDNoLjRsLjEzLS4wNGMuMDgtLjAyLjE1LS4wMy4yMi0uMDYuMjgtLjExLjQ3LS4yOS41My0uNTIuMDItLjA2LjAzLS4xMS4wMy0uMTZsLjAyLS4wOS0uMDEtLjI3LS4wOC0xLjIuMjUtLjEtLjI2LjAzLTIuMTYtMTcuNTdjLS4wMi0uMDMtLjAzLS4wNS0uMDUtLjA3YS40MzUuNDM1IDAgMDEtLjA2LS4wN2wtLjEtLjFhLjU3Mi41NzIgMCAwMC0uMDgtLjA3bC4xMS0uMjUtLjE2LjItLjI0LS4xNmMtLjA0LS4wMi0uMDctLjA0LS4xMS0uMDUtLjA0LS4wMi0uMDctLjAzLS4xMS0uMDUtLjA0LS4wMS0uMDctLjAzLS4xLS4wM0w0OC40MyA1LjIxbC0uMS0uMjUuMDMuMjYtMy4xNy41OGMtLjI3LjA2LS4zOS4zMS0uNDQuNDYtLjAzLjA4LS4wNS4xNC0uMDYuMjF2LjE2YzAgLjA5LS4wMS4xMiAwIC4xNnYuMDdsLjAxLjA1Yy4wMS4wNy4wMi4xMi4wMy4xNi4wMS4wNC4wMi4wOC4wNC4xMi4wMS4wMy4wMi4wNy4wNC4xcy4wMy4wNy4wNS4xYy4wMi4wMy4wNC4wNS4wNi4wOC4wMi4wMy4wNC4wNS4wNi4wNy4wMi4wMi4wNS4wNC4wNy4wNS4wMy4wMi4wNi4wMy4wOS4wNC4wNC4wMi4wNy4wMy4xLjAzLjA0LjAxLjA4LjAxLjEzLjAxbC4wMi4yNi4wNS0uMjUgMS41My0uMDkuMDguMjUuMDEtLjI2IDcuNTktLjg5LjEzLjI1LS4wMy0uMjYgNi42NC0uNjUtMTYuNyAyMS41OWMtLjA4LjExLS4xNS4yMi0uMjEuMzQtLjA0LjA4LS4wNy4xNi0uMDguMjNhLjg4Ljg4IDAgMDAtLjAxLjMxYy0uMDIuMDctLjAxLjExLS4wMS4xNXoiIGZpbGw9InVybCgjcHJlZml4X19hKSIvPjxwYXRoIGQ9Ik03MS4xNCAzOC4xbC0uMDEtLjE3YzAtLjEzLS4wMS0uMjYtLjAxLS4zOXYtLjE3YzAtLjA3IDAtLjE0LS4wMS0uMjIgMC0uMDctLjAxLS4xNC0uMDItLjIxbC0uMDItLjE2LS4wMy0uMjktLjAyLS4yYy0uMDEtLjA4LS4wMS0uMTYtLjAyLS4yNGwtLjA1LS4zNWMtLjAxLS4xLS4wMy0uMTktLjA1LS4yOWwtLjAzLS4xOS0uMDMtLjJjLS4wMi0uMDctLjAzLS4xNC0uMDUtLjJsLS4wMy0uMTJjLS4wMy0uMS0uMDUtLjIxLS4wOC0uMzFsLS4wNC0uMTRjLS4wMS0uMDYtLjAzLS4xMi0uMDUtLjE4bC0uMDYtLjE1LS4wNS0uMTRjLS4wMy0uMS0uMDctLjE5LS4xLS4yOWwtLjA0LS4xMmEuODY1Ljg2NSAwIDAwLS4wNy0uMTdjLS4wMi0uMDUtLjA1LS4xMS0uMDgtLjE2bC0uMDUtLjFjLS4wNC0uMDktLjA4LS4xOC0uMTMtLjI3bC0uMDYtLjEyYy0uMDItLjA1LS4wNS0uMS0uMDctLjE1LS4wMy0uMDUtLjA1LS4xLS4wOC0uMTVsLS4wNi0uMTFjLS4wNS0uMDgtLjA5LS4xNy0uMTQtLjI1bC0uMDctLjEyYy0uMDMtLjA1LS4wNS0uMDktLjA4LS4xNGwtLjE2LS4yNGMtLjA1LS4wOC0uMS0uMTYtLjE2LS4yNGwtLjA3LS4xMWMtLjAzLS4wNC0uMDYtLjA5LS4wOS0uMTNsLS43LS44OWMtLjA1LS4wNi0uMS0uMTItLjE1LS4xN2wtLjM0LS4zOS4xMi0uMjUtLjE5LjE3Yy0uMDUtLjA2LS4xMS0uMTItLjE3LS4xN2wtLjQzLS40MmMtLjA0LS4wNC0uMDgtLjA3LS4xMi0uMTFsLS4wOS0uMDhjLS4wNy0uMDYtLjE0LS4xMy0uMjEtLjE5bC0uMDgtLjA3Yy0uMDQtLjA0LS4wOS0uMDgtLjEzLS4xMmwtLjExLS4xYy0uMDMtLjAzLS4wNy0uMDYtLjEtLjA5LS4wNC0uMDItLjEyLS4wNC0uMjEtLjA3LS4xLS4wMy0uMTktLjA2LS4yOS0uMDdsLS4wNy0uMDJjLS4wMi0uMDEtLjA0LS4wMS0uMDYtLjAxLS4wNi0uMDEtLjA5IDAtLjEzIDAtLjIyLjAxLS4zNi4wNC0uNDguMDlhLjg0OC44NDggMCAwMC0uNDcuNDdjLS4wNS4xMS0uMDcuMjQtLjA3LjQgMCAuMTEuMDEuMjEuMDQuMzEuMDIuMDkuMDUuMTcuMDkuMjYuMDMuMDguMDguMTYuMTIuMjQuMDQuMDcuMDkuMTQuMTUuMjFhMy4zMiAzLjMyIDAgMDAuMzYuMzdjLjA2LjA1LjEuMDkuMTMuMTNsLjU4LjU3Yy4wNS4wNC4wOS4wOS4xMy4xMy4wNC4wNC4wOC4wOS4xMi4xNGwuMDcuMDljLjA3LjA3LjEzLjE1LjE5LjIzbC4wNy4wOWMuMDQuMDUuMDguMDkuMTIuMTRsLjA0LjA1Yy4wNS4wNi4xLjEyLjE0LjE4LjA0LjA1LjA3LjEuMTEuMTVsLjA2LjA5Yy4wNi4wOC4xMi4xNi4xNy4yNWwuMDcuMWMuMDQuMDUuMDcuMS4xLjE1LjAzLjA2LjA3LjExLjEuMTdsLjA1LjA5Yy4wNC4wNy4wNy4xMy4xMS4ybC4wNy4xM2MuMDQuMDcuMDguMTQuMTEuMjFsLjA1LjA5Yy4wMy4wNi4wNy4xMy4wOS4xOS4wMy4wNi4wNS4xMi4wOC4xOGwuMDUuMTEuMTIuMy4wNS4xMWMuMDMuMDYuMDUuMTIuMDcuMThsLjA2LjIuMDQuMTNjLjAzLjA5LjA1LjE5LjA4LjI4bC4wNS4xNy4wNi4yYy4wMi4wNy4wMy4xNS4wNC4yMmwuMDIuMTNjLjAyLjA5LjAzLjE4LjA1LjI3bC4wNC4yMmMuMDEuMDcuMDMuMTUuMDMuMjMuMDEuMDkuMDIuMTkuMDIuMjlsLjAxLjFjLjAxLjEuMDEuMi4wMi4zMWwuMDEuMjNjLjAxLjA4LjAxLjE3LjAxLjI2di4wOGMwIC4wNyAwIC4xNC0uMDEuMjJsLS4wMS4xMmMtLjAxLjE4LS4wMS4zMS0uMDIuNDNsLS4wMy4zNi0uMDIuMTlhNS44NTIgNS44NTIgMCAwMS0uMTEuNzhsLS4wMi4wOWMtLjA0LjIxLS4wNi4zNi0uMS41Mi0uMDUuMTktLjEuMzktLjE2LjU4LS4wNy4yMi0uMTQuNDMtLjIyLjY0LS4xLjI2LS4yMS41MS0uMzQuNzYtLjIuMzktLjQuNzQtLjYzIDEuMDUtLjIyLjMxLS40NC41OC0uNjcuODItLjM1LjM4LS43Ni43NC0xLjI1IDEuMWExMC4xNCAxMC4xNCAwIDAxLTIuMDMgMS4yYy0uMjMuMTEtLjQ4LjIxLS43Mi4zLS4yNS4xLS40Ni4xOC0uNjcuMjVsLS4wOS4wM2MtLjA0LjAyLS4wOC4wMy0uMTIuMDUtLjA4LjAzLS4xNi4wNC0uMjMuMDYtLjA1LjAxLS4xLjAyLS4xNS4wNC0uMTkuMDUtLjM3LjEtLjU2LjE0LS4wNy4wMi0uMTQuMDMtLjIxLjA1YTMuNTg5IDMuNTg5IDAgMDEtLjY2LjEybC0uMTguMDJjLS4xNi4wMi0uMzIuMDUtLjQ4LjA3bC0uMTkuMDNjLS4xLjAxLS4xOS4wMy0uMjkuMDQtLjA5LjAxLS4xNy4wMS0uMjYuMDJsLS44LjA1Yy0uMDguMDEtLjE3LjAxLS4yNS4wMS0uMTQuMDEtLjI4LjAxLS40Mi4wMWwtMjAuNTMuMDF2LjEzbC0yMS4zMi0uMTRjLS4xMiAwLS4yMy0uMDEtLjM1LS4wMWwtLjE0LS4wMmMtLjA4IDAtLjE3IDAtLjI1LS4wMWwtLjIzLS4wMy0uMTQtLjAyYy0uMTMtLjAyLS4yNS0uMDMtLjM3LS4wNS0uMTItLjAyLS4yNC0uMDMtLjM2LS4wNi0uMDgtLjAyLS4xNy0uMDMtLjI1LS4wNWwtLjIyLS4wNWMtLjA3LS4wMS0uMTUtLjAzLS4yMi0uMDUtLjEtLjAzLS4yLS4wNi0uMy0uMDhsLS4zMy0uMS0uMTEtLjAzYy0uMDctLjAyLS4xNS0uMDQtLjIyLS4wNy0uMDYtLjAyLS4xMy0uMDUtLjE5LS4wN2wtLjExLS4wMy0uMy0uMTItLjEyLS4wNWMtLjA2LS4wMi0uMTItLjA0LS4xOC0uMDdzLS4xMS0uMDUtLjE3LS4wOGwtLjQ5LS4yNC0uMTgtLjA5Yy0uMDYtLjAzLS4xMS0uMDYtLjE3LS4wOWwtLjEtLjA2Yy0uMDktLjA1LS4xOC0uMS0uMjYtLjE1bC0uMDktLjA1Yy0uMDYtLjAzLS4xMi0uMDYtLjE3LS4xbC0uMjUtLjE2Yy0uMDgtLjA1LS4xNy0uMTEtLjI1LS4xNmwtLjA5LS4wNmMtLjA1LS4wMy0uMTEtLjA3LS4xNi0uMWwtLjA4LS4wNmMtLjAzLS4wMi0uMDYtLjA1LS4xLS4wOGwtLjA2LS4wNS0uMTUtLjEyLS4wOS0uMDdhMi44IDIuOCAwIDAxLS4yLS4xNmwtLjEyLS4xYy0uMDUtLjA0LS4xLS4wNy0uMTQtLjExbC0uMDgtLjA1Yy0uMDUtLjA0LS4xLS4wNy0uMTQtLjEyLS4wNC0uMDQtLjA4LS4wOC0uMTMtLjEybC0uMDgtLjA4Yy0uMDUtLjA0LS4wOS0uMDktLjEzLS4xM2wtLjA4LS4wOC0uMjEtLjIxLS4wOC0uMDhjLS4wNC0uMDQtLjA4LS4wOC0uMTItLjEzbC0uMDgtLjA4Yy0uMDQtLjA0LS4wOC0uMDktLjEyLS4xMy0uMDQtLjA1LS4wOC0uMDktLjExLS4xNGwtLjA3LS4wOWMtLjA1LS4wNi0uMDktLjExLS4xMy0uMTdsLS4zLS4zOS0uMTEtLjE0Yy0uMDQtLjA1LS4wNy0uMTEtLjEtLjE2bC0uMDYtLjA5Yy0uMDQtLjA1LS4wNy0uMTEtLjEtLjE2bC0uMDYtLjFjLS4wNS0uMDgtLjEtLjE3LS4xNi0uMjZsLS4wNi0uMWMtLjAzLS4wNS0uMDYtLjEtLjA5LS4xNmwtLjA0LS4wOGMtLjAzLS4wNi0uMDctLjEzLS4xLS4xOXMtLjA1LS4xMS0uMDgtLjE3bC0uMjMtLjUxYy0uMDMtLjA2LS4wNi0uMTItLjA4LS4xOGwtLjA1LS4xMmMtLjAzLS4wNi0uMDUtLjEyLS4wNy0uMTgtLjAyLS4wNi0uMDQtLjEzLS4wNi0uMTlMNCA0MC4xNmMtLjAzLS4wOC0uMDUtLjE2LS4wOC0uMjRsLS4wNi0uMTdjLS4wMi0uMDctLjA1LS4xNC0uMDctLjJsLS4wNC0uMTJjLS4wMi0uMDYtLjA0LS4xMy0uMDYtLjE5LS4wMi0uMDctLjAzLS4xNC0uMDUtLjIxbC0uMDMtLjEzYy0uMDItLjA5LS4wNC0uMTktLjA3LS4yOGwtLjA0LS4xN2MtLjAyLS4wNy0uMDMtLjE0LS4wNS0uMjJsLS4wMy0uMTNjLS4wMi0uMDctLjAzLS4xNC0uMDQtLjIybC0uMDMtLjIyLS4wMi0uMTVjLS4wMi0uMTItLjAzLS4yMy0uMDUtLjM1bC0uMDItLjE1LS4wMy0uMjMtLjAxLS4wOGMtLjAxLS4wNC0uMDEtLjA5LS4wMi0uMTMgMC0uMDMgMC0uMDctLjAxLS4xMS0uMDEtLjE0LS4wMS0uMjItLjAxLS4zTDMuMTcgMzZjLS4wMS0uMTMtLjAxLS4yNi0uMDItLjRsLS4wMS0uMTVjLS4wMS0uMDgtLjAxLS4xNi0uMDEtLjI0di0uNDFjMC0uMDkuMDEtLjE4LjAyLS4yN2wuMDEtLjE3LjAzLS40NC4wMS0uMTdjLjAxLS4wOS4wMS0uMTguMDItLjI3LjAxLS4xMS4wMy0uMjMuMDUtLjM0bC4wMy0uMTVjLjAyLS4xMy4wNS0uMjUuMDctLjM4bC4wNi0uMzJjLjAyLS4xMS4wNC0uMjIuMDctLjMzLjA0LS4xNy4wOS0uMzMuMTQtLjVsLjAyLS4wOGMuMDYtLjIuMTMtLjQuMi0uNjEuMDMtLjA5LjA1LS4xNi4wOC0uMjMuMDYtLjEyLjA5LS4yNC4xNC0uMzVsLjAzLS4wNmMuMTEtLjI3LjI0LS41Mi4zNi0uNzcuMTUtLjMuMzEtLjYuNS0uOTIuMy0uNS41OS0uOTIuODgtMS4yOS42LS43NiAxLjMyLTEuNDggMi4xNC0yLjE0LjUxLS40MS45OS0uNzYgMS40Ni0xLjA1LjMxLS4yLjY0LS4zOC45Ny0uNTZsLjA5LS4wNWMuMTUtLjA4LjMxLS4xNS40Ny0uMjJsLjQ0LS4yYy4xOC0uMDguMzUtLjE3LjUzLS4yNC4xNS0uMDYuMzEtLjEyLjQ2LS4xN2wuNDItLjE1Yy4xNC0uMDUuMjktLjExLjQzLS4xNmwuMTYuMjItLjA5LS4yNGMuNTYtLjIuODYtLjUxIDEuMDEtMS4wNWwuMDMtLjA5Yy4wMi0uMDYuMDQtLjEzLjA1LS4ybC4yOS0yLjA5LjA2LS4zMy4wNi0uMzNjLjAyLS4xMi4wNC0uMjMuMDYtLjM0LjAzLS4xMy4wNy0uMjcuMS0uNGwuMDgtLjMyYy4wMi0uMS4wNS0uMi4wOC0uMjlsLjAzLS4wOWMuMDctLjIuMTItLjMzLjE3LS40N2wuMTUtLjRjLjA2LS4xNy4xMi0uMzQuMTktLjUuMS0uMjUuMjEtLjUuMzMtLjc0LjEzLS4yOC4yNy0uNTYuNDItLjgzLjE3LS4zMi4zNi0uNjQuNjEtMS4wMi4zOS0uNjEuODQtMS4xOSAxLjMxLTEuNzMuMzEtLjM1LjY1LS42OSAxLTEgLjUxLS40NiAxLjA3LS44OCAxLjY3LTEuMjUuMzYtLjIyLjY2LS40MS45OS0uNTcuMjMtLjEyLjQ3LS4yMi43MS0uMzJsLjI3LS4xMmE0Ljk0IDQuOTQgMCAwMS44Ny0uMzJjLjA4LS4wMi4xNS0uMDQuMjMtLjA3LjE5LS4wNi4zOS0uMTIuNTktLjE4LjA4LS4wMi4xNS0uMDUuMjMtLjA3YTQuNTcgNC41NyAwIDAxLjcyLS4xN2wuMzEtLjA2Yy4xMi0uMDIuMjQtLjA1LjM2LS4wNy4xMS0uMDIuMjItLjAzLjMzLS4wNWwuMjktLjA0Yy4xMS0uMDIuMjMtLjAzLjM0LS4wNWwuMzEtLjAzLjI4LS4wMi4zMi0uMDNjLjExLS4wMS4yMS0uMDEuMzItLjAxaC4xMWMuMTgtLjAxLjM3LS4wMS41NS0uMDFoLjI4Yy4xMyAwIC4yNy4wMS40LjAybC4xNC4wMWMuMDggMCAuMTcuMDEuMjUuMDEuMDguMDEuMTYuMDIuMjQuMDJsLjIyLjAyLjI5LjAzYy4xMi4wMS4yNC4wMy4zNi4wNS4wOS4wMS4xOS4wMy4yOC4wNWwuMi4wM2MuMDcuMDEuMTUuMDIuMjIuMDQuMDcuMDEuMTQuMDMuMjEuMDVsLjEyLjAzYy4xMS4wMy4yMi4wNS4zMy4wOGwuMTEuMDMuMjIuMDYuMi4wNi4xMS4wNGMuMTQuMDQuMjMuMDcuMzEuMS4xMy4wNC4yMi4wNy4zMS4xMS4wNi4wMi4xMi4wNS4xOS4wN2wuMTguMDdjLjA3LjAzLjE1LjA2LjIyLjA5LjEzLjA1LjIxLjA5LjI5LjEzLjA2LjAzLjEzLjA2LjE5LjA5bC4wOS4wNGMuMTMuMDYuMi4xLjI4LjE0bC4yNy4xNGMuMDUuMDMuMTEuMDYuMTYuMDlsLjQ2LjI3Yy4wNS4wMy4xMS4wNi4xNi4xLjA1LjAzLjEuMDYuMTUuMWwuNDQuM2MuMDUuMDMuMS4wNy4xNS4xbC45My43MmMuMDUuMDQuMDkuMDguMTQuMTJsLjA4LjA3LjIyLjE5LjA4LjA3Yy4wNS4wNC4wOS4wOC4xNC4xMmwuMTIuMTIuNS41LjEzLS4xMi4xMS4zNGMuMDUuMDkuMS4xNS4xNS4yMmExLjI4OCAxLjI4OCAwIDAwLjM3LjI5Yy4wOS4wNC4xNi4wNy4yNC4wOS4xLjAyLjE4LjA0LjI3LjA0LjE4LS4wMS4zMi0uMDQuNDUtLjA5LjI5LS4xMi41My0uMzYuNjUtLjY1LjA1LS4xMy4wOC0uMjcuMDktLjQyIDAtLjExLS4wMS0uMi0uMDMtLjI5LS4wMi0uMDktLjA2LS4xNy0uMDktLjI1bC0uMDctLjEzYy0uMDItLjAyLS4wNS0uMDQtLjA2LS4wNy0uMDQtLjA2LS4xLS4xMS0uMTYtLjE3bC0uMDgtLjA4LS41NS0uNTMtLjUxLS40OWMtLjA0LS4wMy0uMDctLjA3LS4xMS0uMWwuMTEtLjI1LS4xNy4xOS0xLjk0LTEuNTMtLjEyLS4wOWMtLjA0LS4wMy0uMDgtLjA1LS4xMS0uMDgtLjA0LS4wMy0uMDgtLjA1LS4xMy0uMDhsLS43NS0uNDRjLS4wNC0uMDMtLjA5LS4wNS0uMTMtLjA4bC0uMjYtLjE0Yy0uMDUtLjAyLS4wOS0uMDUtLjE0LS4wN2wtLjgtLjM5Yy0uMDQtLjAyLS4wOS0uMDUtLjE0LS4wN2wtLjE1LS4wNi0uMTQtLjA1YTEuMjIgMS4yMiAwIDAxLS4xNy0uMDdsLS41My0uMTljLS4wNS0uMDItLjEtLjA0LS4xNi0uMDZsLS4yNS0uMDhjLS4xLS4wMy0uMTYtLjA1LS4yMi0uMDZsLS4xNC0uMDQtLjMxLS4wOS0uMTQtLjA0Yy0uMDYtLjAyLS4xMS0uMDMtLjE3LS4wNWwtLjA3LS4wMmMtLjA5LS4wMi0uMTctLjA1LS4yNS0uMDYtLjA2LS4wMS0uMTItLjAyLS4xOS0uMDRsLS4xNS0uMDNjLS4xMS0uMDItLjIyLS4wNC0uMzQtLjA2bC0uMTQtLjAzYy0uMDYtLjAxLS4xMy0uMDMtLjE5LS4wNGwtLjEtLjAyYy0uMDgtLjAxLS4xNy0uMDMtLjI1LS4wNC0uMDctLjAxLS4xMy0uMDEtLjItLjAybC0uMTYtLjAxYy0uMTItLjAxLS4yNC0uMDMtLjM2LS4wNGwtLjE2LS4wMmMtLjA3LS4wMS0uMTMtLjAyLS4yLS4wMmwtMS44OC0uMTVoLS43NGwtMS40Ni4yMy0uMzMuMDYtLjMyLjA2LS4zMi4wNi0uMTMtLjI0LjA2LjI1Yy0uMS4wMi0uMTkuMDUtLjI4LjA3bC0uMTkuMDVjLS4xOS4wNS0uMzcuMDktLjU1LjE1LS4yLjA2LS4zOS4xMi0uNTguMTgtLjIxLjA3LS40Mi4xNS0uNjIuMjItLjIzLjA5LS40NS4xOC0uNjguMjgtLjI2LjExLS41LjIyLS43My4zMy0uMy4xNS0uNTkuMzItLjg4LjQ4LS4zNy4yMS0uNzQuNDUtMS4xLjctMS4xNy44MS0yLjI2IDEuNzgtMy4yMyAyLjg4LS40LjQ1LS43OC45NC0xLjIgMS41NS0uMjUuMzctLjUuNzQtLjcyIDEuMTItLjE3LjI5LS4zNC41OS0uNDkuODlsLS4wMy4wNmMtLjEyLjI0LS4yNC40OC0uMzUuNzItLjA3LjE2LS4xNC4zMy0uMi40OWwtLjEzLjM0Yy0uMDcuMTctLjEzLjMzLS4xOS41LS4wNS4xNC0uMDkuMjgtLjE0LjQybC0uMTIuMzYtLjEyLjM5Yy0uMDMuMS0uMDUuMjEtLjA4LjMybC0uMDkuMzctLjA5LjM4Yy0uMDMuMTMtLjA2LjI3LS4wOC40MWwtLjAyLjA5LS4wOS40OS0uMDQuMjFjLS4wMi4wOS0uMDQuMTgtLjA1LjI4LS4xLjY4LS41Mi45My0uOTEgMS4wOWwtLjI0LjFjLS4yNC4xLS40Ny4yLS43LjMtLjI2LjEyLS41Mi4yNC0uNzcuMzctLjI5LjE1LS41OC4zLS44Ni40NmExNi43OTIgMTYuNzkyIDAgMDAtMi44NCAyLjA0bC0xLjI1IDEuMjVjLS41Mi41OC0uOTggMS4xNC0xLjM3IDEuNy0uMDIuMDItLjAzLjA1LS4wNC4wNy0uMDIuMDMtLjA0LjA3LS4wNi4xLS4xOS4yOC0uMzguNi0uNiAxLS4xNC4yNi0uMjcuNTMtLjQuOC0uMTEuMjMtLjIxLjQ3LS4zMS43LS4wOS4yMy0uMTcuNDMtLjI0LjY0LS4wNC4xMi0uMDguMjQtLjExLjM3bC0uMTIuNDFjLS4wNC4xMi0uMDcuMjQtLjExLjM2bC0uMTIuNTJjLS4wMi4xLS4wNC4xOS0uMDUuMjlsLS4wNi4zNC0uMDYuMzRjLS4wMS4wNy0uMDMuMTUtLjA0LjIyLS4wMy4wOS0uMDQuMTctLjA1LjI1bC0uMTUgMS4wOC4xMiAzLjA5LjA5LjYtLjI0LjE1LjI2LS4wNC4wNS4yM2MuMDEuMDcuMDMuMTQuMDQuMmwuMDMuMTNjLjAzLjEzLjA0LjIzLjA3LjMzbC4wMy4xNmMuMDEuMDYuMDIuMTIuMDQuMTguMDEuMDYuMDMuMTIuMDUuMThsLjEzLjQ0Yy4wNC4xNC4wNi4yMy4wOS4zMWwuMDQuMTVjLjAxLjA1LjAzLjExLjA1LjE2LjAyLjA1LjA0LjExLjA2LjE2bC4zMi44M2MuMDIuMDUuMDQuMTEuMDYuMTZsLjEzLjI3Yy4wMi4wNS4wNS4xLjA3LjE1bC4wNi4xMmMuMDQuMDkuMDkuMTguMTMuMjdsLjA2LjEzYy4wMi4wNS4wNS4xLjA3LjE0bC4xNC4yNmMuMDMuMDUuMDUuMDkuMDguMTNsLjQ0LjcyYy4wMy4wNS4wNi4wOS4wOS4xNC4wMy4wNC4wNS4wOC4wOC4xMWwuNTEuNjkuMDkuMTIuMTguMjFjLjAzLjA0LjA3LjA4LjExLjEybC4wOC4wOWMuMDYuMDcuMTIuMTQuMTkuMjFsLjM4LjQyYy4wMy4wMy4wNy4wNi4xLjA5bC42Mi41OGMuMDMuMDMuMDcuMDcuMTEuMWwuNzYuNjJjLjA0LjAzLjA4LjA3LjEyLjFsLjIzLjE2Yy4wNi4wNS4xMy4wOS4xOS4xM2wuNzcuNWMuMDguMDUuMTcuMS4yNS4xNWwxLjU5LjgxIDMuNTkgMS4yOGMuMDUuMDIuMTUuMDEuMjUuMDFoMS4wNGwxNy42Ni4wMWguNjFsMjQuODEtLjA2Yy4wOCAwIC4xNSAwIC4yMy0uMDEuMDggMCAuMTYtLjAxLjI0LS4wMmwuMTktLjAyLjI5LS4wMy4yMi0uMDJjLjEyLS4wMS4yNS0uMDIuMzctLjA0LjA3LS4wMS4xMy0uMDEuMi0uMDIuMDgtLjAxLjE2LS4wMS4yNC0uMDIuMDktLjAxLjE4LS4wMy4yNy0uMDUuMDctLjAyLjE1LS4wMy4yMi0uMDQuMTctLjAzLjMzLS4wNi40OS0uMDlsLjIxLS4wNGMuMDktLjAyLjE5LS4wMy4yOC0uMDUuMTItLjAzLjIzLS4wNi4zNS0uMWwuMi0uMDYuNTEtLjE1LjA3LS4wMmMuMDgtLjAzLjE2LS4wNS4yNS0uMDcuMTEtLjAzLjIyLS4wNi4zMy0uMS4yMS0uMDguNC0uMTUuNTktLjIzbC4wOC0uMDNjLjI0LS4xLjQ4LS4yMS43Mi0uMzIuMjctLjEzLjU0LS4yNi44LS40LjM2LS4xOS42OC0uMzguOTctLjU3IDEuMTEtLjcxIDIuMDItMS41MyAyLjgxLTIuNS4yNy0uMzQuNTMtLjcuNzctMS4wNy4xNy0uMjguMzItLjU3LjQ2LS44Ni4xMS0uMjMuMjEtLjQ3LjMxLS43bC4wNy0uMThjLjA2LS4xNi4xMy0uMzEuMTgtLjQ3LjA0LS4xMS4wNi0uMjMuMDktLjM0bC4wOS0uMzRjLjA0LS4xMy4wNy0uMjYuMS0uNGwuMDYtLjM1LjAyLS4xM2MuMDMtLjE1LjA1LS4zMS4wNy0uNDdsLjAzLS4xOGMuMDEtLjA5LjAzLS4xOS4wNC0uMjguMDEtLjA4LjAxLS4xNi4wMS0uMjRsLjAxLS4yNWMuMDEtLjEyLjAyLS4yMy4wMi0uMzVsLjAxLS4xN2MwLS4wOC4wMS0uMTYuMDEtLjI0LS4wNC0uMDYtLjA0LS4xNC0uMDUtLjIxeiIgZmlsbD0idXJsKCNwcmVmaXhfX2MpIi8+PC9zdmc+"); +} + +.google-compute { + background-image: url("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMzIiIGhlaWdodD0iMzIiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGRlZnM+PGxpbmVhckdyYWRpZW50IHgxPSI5NS42OTIlIiB5MT0iNC4zMDglIiB4Mj0iMCUiIHkyPSIxMDAlIiBpZD0icHJlZml4X19hIj48c3RvcCBzdG9wLWNvbG9yPSIjNTNBMEZEIiBvZmZzZXQ9IjAlIi8+PHN0b3Agc3RvcC1jb2xvcj0iI0I0RUM1MSIgb2Zmc2V0PSIxMDAlIi8+PC9saW5lYXJHcmFkaWVudD48L2RlZnM+PHBhdGggZD0iTTMxLjMzMyAxMC42NjdhLjY2Ny42NjcgMCAwMDAtMS4zMzRoLTJWNi42NjdoMmEuNjY3LjY2NyAwIDAwMC0xLjMzNGgtMnYtLjY2NmMwLTEuMTAzLS44OTctMi0yLTJoLS42NjZ2LTJhLjY2Ny42NjcgMCAwMC0xLjMzNCAwdjJoLTIuNjY2di0yYS42NjcuNjY3IDAgMDAtMS4zMzQgMHYyaC0yLjY2NnYtMmEuNjY3LjY2NyAwIDAwLTEuMzM0IDB2MmgtMi42NjZ2LTJhLjY2Ny42NjcgMCAwMC0xLjMzNCAwdjJoLTIuNjY2di0yYS42NjcuNjY3IDAgMDAtMS4zMzQgMHYySDYuNjY3di0yYS42NjcuNjY3IDAgMDAtMS4zMzQgMHYyaC0uNjY2Yy0xLjEwMyAwLTIgLjg5Ny0yIDJ2LjY2NmgtMmEuNjY3LjY2NyAwIDAwMCAxLjMzNGgydjIuNjY2aC0yYS42NjcuNjY3IDAgMDAwIDEuMzM0aDJ2Mi42NjZoLTJhLjY2Ny42NjcgMCAwMDAgMS4zMzRoMnYyLjY2NmgtMmEuNjY3LjY2NyAwIDAwMCAxLjMzNGgydjIuNjY2aC0yYS42NjcuNjY3IDAgMDAwIDEuMzM0aDJ2Mi42NjZoLTJhLjY2Ny42NjcgMCAwMDAgMS4zMzRoMnYuNjY2YzAgMS4xMDMuODk3IDIgMiAyaC42NjZ2MmEuNjY3LjY2NyAwIDAwMS4zMzQgMHYtMmgyLjY2NnYyYS42NjcuNjY3IDAgMDAxLjMzNCAwdi0yaDIuNjY2djJhLjY2Ny42NjcgMCAwMDEuMzM0IDB2LTJoMi42NjZ2MmEuNjY3LjY2NyAwIDAwMS4zMzQgMHYtMmgyLjY2NnYyYS42NjcuNjY3IDAgMDAxLjMzNCAwdi0yaDIuNjY2djJhLjY2Ny42NjcgMCAwMDEuMzM0IDB2LTJoLjY2NmMxLjEwMyAwIDItLjg5NyAyLTJ2LS42NjZoMmEuNjY3LjY2NyAwIDAwMC0xLjMzNGgtMnYtMi42NjZoMmEuNjY3LjY2NyAwIDAwMC0xLjMzNGgtMnYtMi42NjZoMmEuNjY3LjY2NyAwIDAwMC0xLjMzNGgtMnYtMi42NjZoMmEuNjY3LjY2NyAwIDAwMC0xLjMzNGgtMnYtMi42NjZoMnpNMjggMjcuMzMzYzAgLjM2OC0uMy42NjctLjY2Ny42NjdINC42NjdBLjY2OC42NjggMCAwMTQgMjcuMzMzVjQuNjY3QzQgNC4yOTkgNC4zIDQgNC42NjcgNGgyMi42NjZjLjM2NyAwIC42NjcuMjk5LjY2Ny42Njd2MjIuNjY2ek05LjMzMyA4YTEuMzM0IDEuMzM0IDAgMTAtMi42NjcuMDAxQTEuMzM0IDEuMzM0IDAgMDA5LjMzMyA4em0xMS4zMzQgMi42NjdoLTkuMzM0YS42NjcuNjY3IDAgMDAtLjY2Ni42NjZ2OS4zMzRjMCAuMzY4LjI5OC42NjYuNjY2LjY2Nmg5LjMzNGEuNjY3LjY2NyAwIDAwLjY2Ni0uNjY2di05LjMzNGEuNjY3LjY2NyAwIDAwLS42NjYtLjY2NnpNMjAgMjBoLTh2LThoOHY4eiIgZmlsbD0idXJsKCNwcmVmaXhfX2EpIiBmaWxsLXJ1bGU9Im5vbnplcm8iLz48L3N2Zz4="); +} + +.google-container { + background-image: url("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMzIiIGhlaWdodD0iMzIiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGRlZnM+PGxpbmVhckdyYWRpZW50IHgxPSI5NS42OTIlIiB5MT0iNC4zMDglIiB4Mj0iMCUiIHkyPSIxMDAlIiBpZD0icHJlZml4X19hIj48c3RvcCBzdG9wLWNvbG9yPSIjNTNBMEZEIiBvZmZzZXQ9IjAlIi8+PHN0b3Agc3RvcC1jb2xvcj0iI0I0RUM1MSIgb2Zmc2V0PSIxMDAlIi8+PC9saW5lYXJHcmFkaWVudD48L2RlZnM+PHBhdGggZD0iTTMxLjMzMyAxMC42NjdhLjY2Ny42NjcgMCAwMDAtMS4zMzRoLTJWNi42NjdoMmEuNjY3LjY2NyAwIDAwMC0xLjMzNGgtMnYtLjY2NmMwLTEuMTAzLS44OTctMi0yLTJoLS42NjZ2LTJhLjY2Ny42NjcgMCAwMC0xLjMzNCAwdjJoLTIuNjY2di0yYS42NjcuNjY3IDAgMDAtMS4zMzQgMHYyaC0yLjY2NnYtMmEuNjY3LjY2NyAwIDAwLTEuMzM0IDB2MmgtMi42NjZ2LTJhLjY2Ny42NjcgMCAwMC0xLjMzNCAwdjJoLTIuNjY2di0yYS42NjcuNjY3IDAgMDAtMS4zMzQgMHYySDYuNjY3di0yYS42NjcuNjY3IDAgMDAtMS4zMzQgMHYyaC0uNjY2Yy0xLjEwMyAwLTIgLjg5Ny0yIDJ2LjY2NmgtMmEuNjY3LjY2NyAwIDAwMCAxLjMzNGgydjIuNjY2aC0yYS42NjcuNjY3IDAgMDAwIDEuMzM0aDJ2Mi42NjZoLTJhLjY2Ny42NjcgMCAwMDAgMS4zMzRoMnYyLjY2NmgtMmEuNjY3LjY2NyAwIDAwMCAxLjMzNGgydjIuNjY2aC0yYS42NjcuNjY3IDAgMDAwIDEuMzM0aDJ2Mi42NjZoLTJhLjY2Ny42NjcgMCAwMDAgMS4zMzRoMnYuNjY2YzAgMS4xMDMuODk3IDIgMiAyaC42NjZ2MmEuNjY3LjY2NyAwIDAwMS4zMzQgMHYtMmgyLjY2NnYyYS42NjcuNjY3IDAgMDAxLjMzNCAwdi0yaDIuNjY2djJhLjY2Ny42NjcgMCAwMDEuMzM0IDB2LTJoMi42NjZ2MmEuNjY3LjY2NyAwIDAwMS4zMzQgMHYtMmgyLjY2NnYyYS42NjcuNjY3IDAgMDAxLjMzNCAwdi0yaDIuNjY2djJhLjY2Ny42NjcgMCAwMDEuMzM0IDB2LTJoLjY2NmMxLjEwMyAwIDItLjg5NyAyLTJ2LS42NjZoMmEuNjY3LjY2NyAwIDAwMC0xLjMzNGgtMnYtMi42NjZoMmEuNjY3LjY2NyAwIDAwMC0xLjMzNGgtMnYtMi42NjZoMmEuNjY3LjY2NyAwIDAwMC0xLjMzNGgtMnYtMi42NjZoMmEuNjY3LjY2NyAwIDAwMC0xLjMzNGgtMnYtMi42NjZoMnpNMjggMjcuMzMzYzAgLjM2OC0uMy42NjctLjY2Ny42NjdINC42NjdBLjY2OC42NjggMCAwMTQgMjcuMzMzVjQuNjY3QzQgNC4yOTkgNC4zIDQgNC42NjcgNGgyMi42NjZjLjM2NyAwIC42NjcuMjk5LjY2Ny42Njd2MjIuNjY2ek05LjMzMyA4YTEuMzM0IDEuMzM0IDAgMTAtMi42NjcuMDAxQTEuMzM0IDEuMzM0IDAgMDA5LjMzMyA4em0xMS4zMzQgMi42NjdoLTkuMzM0YS42NjcuNjY3IDAgMDAtLjY2Ni42NjZ2OS4zMzRjMCAuMzY4LjI5OC42NjYuNjY2LjY2Nmg5LjMzNGEuNjY3LjY2NyAwIDAwLjY2Ni0uNjY2di05LjMzNGEuNjY3LjY2NyAwIDAwLS42NjYtLjY2NnpNMjAgMjBoLTh2LThoOHY4eiIgZmlsbD0idXJsKCNwcmVmaXhfX2EpIiBmaWxsLXJ1bGU9Im5vbnplcm8iLz48L3N2Zz4="); +} + +.google-database { + background-image: url("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMzIiIGhlaWdodD0iMzIiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGRlZnM+PGxpbmVhckdyYWRpZW50IHgxPSI3Mi4zODklIiB5MT0iNC4zMDglIiB4Mj0iMjUuNSUiIHkyPSIxMDAlIiBpZD0icHJlZml4X19hIj48c3RvcCBzdG9wLWNvbG9yPSIjNTNBMEZEIiBvZmZzZXQ9IjAlIi8+PHN0b3Agc3RvcC1jb2xvcj0iI0I0RUM1MSIgb2Zmc2V0PSIxMDAlIi8+PC9saW5lYXJHcmFkaWVudD48L2RlZnM+PHBhdGggZD0iTTE2LjUgMUMxMS40MSAxIDYgMi4zMTUgNiA0Ljc1djIyLjVDNiAyOS42ODUgMTEuNDEgMzEgMTYuNSAzMVMyNyAyOS42ODUgMjcgMjcuMjVWNC43NUMyNyAyLjMxNSAyMS41OSAxIDE2LjUgMXptOS41ODcgMTguODk3YzAgMS4xMTMtMy42NDcgMi42NjYtOS41ODcgMi42NjYtNS45NCAwLTkuNTg3LTEuNTUzLTkuNTg3LTIuNjY2di01Ljc3MmMxLjg0MiAxLjMzMyA1Ljc5NyAyLjA0IDkuNTg3IDIuMDRzNy43NDUtLjcwNyA5LjU4Ny0yLjA0djUuNzcyem0wLTcuNWMwIDEuMTEzLTMuNjQ3IDIuNjY1LTkuNTg3IDIuNjY1LTUuOTQgMC05LjU4Ny0xLjU1Mi05LjU4Ny0yLjY2NVY2LjYyNWMxLjg0MiAxLjMzMyA1Ljc5NyAyLjA0IDkuNTg3IDIuMDRzNy43NDUtLjcwNyA5LjU4Ny0yLjA0djUuNzcyek0xNi41IDEuOTM3YzUuOTQgMCA5LjU4NyAxLjYzOCA5LjU4NyAyLjgxMyAwIDEuMTc1LTMuNjQ3IDIuODEzLTkuNTg3IDIuODEzLTUuOTQgMC05LjU4Ny0xLjYzOC05LjU4Ny0yLjgxMyAwLTEuMTc1IDMuNjQ3LTIuODEzIDkuNTg3LTIuODEzem0wIDI4LjEyNWMtNS45NCAwLTkuNTg3LTEuNTUyLTkuNTg3LTIuNjY1di01Ljc3MmMxLjg0MiAxLjMzMyA1Ljc5NyAyLjA0IDkuNTg3IDIuMDRzNy43NDUtLjcwNyA5LjU4Ny0yLjA0djUuNzcyYzAgMS4xMTMtMy42NDcgMi42NjYtOS41ODcgMi42NjZ6IiBmaWxsPSJ1cmwoI3ByZWZpeF9fYSkiIGZpbGwtcnVsZT0ibm9uemVybyIvPjwvc3ZnPg=="); +} + +.google-hamburger { + background-image: url("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjQiIGhlaWdodD0iMjQiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPjxkZWZzPjxwYXRoIGQ9Ik0yMS41IDZoLTE5YS41LjUgMCAwMTAtMWgxOWEuNS41IDAgMDEwIDF6bTAgMTNoLTE5YS41LjUgMCAwMTAtMWgxOWEuNS41IDAgMDEwIDF6bTAtNi41aC0xOWEuNS41IDAgMDEwLTFoMTlhLjUuNSAwIDAxMCAxeiIgaWQ9InByZWZpeF9fYSIvPjwvZGVmcz48ZyBmaWxsPSJub25lIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiPjxtYXNrIGlkPSJwcmVmaXhfX2IiIGZpbGw9IiNmZmYiPjx1c2UgeGxpbms6aHJlZj0iI3ByZWZpeF9fYSIvPjwvbWFzaz48dXNlIGZpbGw9IiMwMDAiIGZpbGwtcnVsZT0ibm9uemVybyIgeGxpbms6aHJlZj0iI3ByZWZpeF9fYSIvPjxnIG1hc2s9InVybCgjcHJlZml4X19iKSIgZmlsbD0iI0ZGRiIgZmlsbC1ydWxlPSJub256ZXJvIj48cGF0aCBkPSJNMCAwaDI0djI0SDB6Ii8+PC9nPjwvZz48L3N2Zz4="); +} + +.google-network { + background-image: url("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMzUiIGhlaWdodD0iMzUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgYXJpYS1oaWRkZW49InRydWUiPjxkZWZzPjxsaW5lYXJHcmFkaWVudCB4MT0iOTUuNjkyJSIgeTE9IjQuMzA4JSIgeDI9IjAlIiB5Mj0iMTAwJSIgaWQ9InByZWZpeF9fYSI+PHN0b3Agc3RvcC1jb2xvcj0iIzUzQTBGRCIgb2Zmc2V0PSIwJSIvPjxzdG9wIHN0b3AtY29sb3I9IiNCNEVDNTEiIG9mZnNldD0iMTAwJSIvPjwvbGluZWFyR3JhZGllbnQ+PC9kZWZzPjxwYXRoIGQ9Ik0xNy45MjUgN3YxLjkzQTEwLjIzNCAxMC4yMzQgMCAwMTIyLjIxMiA4YzUuMzU5IDAgOS43MDMgNC4wNTUgOS43MDMgOS4wNTggMCAuNzU3LS4xIDEuNDkzLS4yODcgMi4xOTYgMS45NDQuNTAxIDMuMzcyIDIuMTY0IDMuMzcyIDQuMTM5di4zMTRDMzUgMjYuMDc3IDMyLjk0IDI4IDMwLjQgMjhIN3YyLjA1YTIuNSAyLjUgMCAxMS0xIDBWMjhINC42QzIuMDYgMjggMCAyNi4wNzggMCAyMy43MDd2LS4zMTRjMC0yLjI3IDEuODg4LTQuMTMgNC4yNzgtNC4yODNhNi40NDMgNi40NDMgMCAwMS0uMTgzLTEuNTI5YzAtMy43ODggMy4yOS02Ljg1OCA3LjM0Ny02Ljg1OCAxLjE0MyAwIDIuMjI2LjI0MyAzLjE5LjY3OGE5LjU3IDkuNTcgMCAwMTIuNDQyLTIuMDI5TDE3LjA3NSA3aC44NXpNNi41IDMxYTEuNSAxLjUgMCAxMDAgMyAxLjUgMS41IDAgMDAwLTN6bTguODctMTguOTZsLS40NjYuNTM4LS42NjItLjI5NmE2Ljc5MiA2Ljc5MiAwIDAwLTIuNzgtLjU4N2MtMy41MyAwLTYuMzggMi42NDMtNi4zOCA1Ljg5IDAgLjQ0NS4wNTIuODgzLjE1NyAxLjMwOGwuMjUzIDEuMDMzLTEuMTA4LjA3QzIuNDc5IDIwLjEyIDEgMjEuNTgzIDEgMjMuMzR2LjMxQzEgMjUuNDk1IDIuNjI0IDI3IDQuNjQxIDI3SDZ2LTVhMSAxIDAgMDEuODgzLS45OTNMNyAyMWg0di0zLjVhLjUuNSAwIDExMSAwVjIxaDUuMDc1bC0uMDAxLTEwLjQ2NmE4LjUyNCA4LjUyNCAwIDAwLTEuNzA1IDEuNTA1ek0yMi4xOTUgOWMtMS41MyAwLTIuOTkyLjM2NS00LjI3MiAxLjAzTDE3LjkyNSAyMUgyNHYxaC0ydjMuNWEuNS41IDAgMTEtMSAwVjIySDd2NWgyMy4zNTlDMzIuMzc2IDI3IDM0IDI1LjQ5NCAzNCAyMy42NXYtLjMxMWMwLTEuNTEtMS4wOTctMi44MjgtMi42NjMtMy4yMjhsLS45LS4yMy4yMzEtLjg2M2MuMTctLjYzMy4yNTctMS4yODYuMjU3LTEuOTUxIDAtNC40NS0zLjkwMi04LjA2Ny04LjcyOS04LjA2N3pNMjYuNSAxOWEyLjUgMi41IDAgMTEwIDUgMi41IDIuNSAwIDAxMC01em0wIDFhMS41IDEuNSAwIDEwMCAzIDEuNSAxLjUgMCAwMDAtM3ptLTktMjBhMy41IDMuNSAwIDExMCA3IDMuNSAzLjUgMCAwMTAtN3ptMCAxYTIuNSAyLjUgMCAxMDAgNSAyLjUgMi41IDAgMDAwLTV6IiBmaWxsPSJ1cmwoI3ByZWZpeF9fYSkiIGZpbGwtcnVsZT0ibm9uemVybyIvPjwvc3ZnPg=="); +} + +.google-refresh { + background-image: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA0NzMuNjc3IDQ3My42NzciPjxnIGZpbGw9IiMzMTJEMkEiPjxwYXRoIGQ9Ik0zNzAuNDU3IDEzOC44OTNjLTMzLjk3LTQ4LjYzMy04OS43NS03Ni40NzgtMTQ5LjM2Ni02OS42NUMxNjMuNzMgNzUuODEgMTE3LjQzIDExMi45IDk0LjQ1IDE2NC40MmwtMjkuNTEzLS4wNzVjLTUuMTg3LS4wMTEtOS4wMTYgNS45OTEtNi4wOTkgMTAuNTY0bDUxLjczMyA4MS4xNmMyLjkwOSA0LjU3IDkuMjE4IDQuNDU4IDEyLjEyLS4wNDUgMTcuMzc4LTI2Ljk2NiAzNC43NTktNTMuOTM2IDUyLjE0MS04MC45MDIgMS44NzctMi45MTMgMS4yNDUtNS43MjktLjUxMi03LjY3NC0xLjA5Ni0xLjY1Ny0yLjkxMy0yLjgzOC01LjUxMi0yLjg0NmwtMjcuNDUyLS4wNjdjNDIuMjE2LTY3LjA4OCAxNDQuNjk1LTczLjIxIDE5Mi44MDEtNC4zMzggMTUuNDE1IDIyLjA1NyA1MS44NzIuOTkyIDM2LjMtMjEuMzA0ek00MTQuNDQ5IDI5Ny41NDVjLTE3LjI0My0yNy4wNTItMzQuNDk0LTU0LjEwOC01MS43NDEtODEuMTYtMi45MDktNC41Ny05LjIxOC00LjQ1OC0xMi4xMi4wNDUtMTcuMzc0IDI2Ljk2Ni0zNC43NTYgNTMuOTM2LTUyLjEzMyA4MC45MDItMS44ODEgMi45MTctMS4yNDUgNS43MzMuNTIgNy42ODEgMS4wOTIgMS42NTMgMi45MDkgMi44MzEgNS41MDUgMi44MzhsMjcuNDQ4LjA2N2MtNDIuMjIgNjcuMDgtMTQ0LjY5NSA3My4yMjgtMTkyLjc5NyA0LjM0Mi0xNS40MDctMjIuMDYtNTEuODYtLjk5NS0zNi4yOTMgMjEuMzA0IDMzLjk2MyA0OC42MzMgODkuNzQ2IDc2LjQ3NCAxNDkuMzU5IDY5LjY1IDU3LjM2MS02LjU3IDEwMy42NTctNDMuNjYzIDEyNi42NDQtOTUuMTggOS44MzUuMDI2IDE5LjY3NC4wNDkgMjkuNTEzLjA3NSA1LjE4My4wMTUgOS4wMTItNS45OTEgNi4wOTUtMTAuNTY0eiIvPjwvZz48L3N2Zz4="); +} + +.google-storage { + background-image: url("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMzIiIGhlaWdodD0iMzIiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGRlZnM+PGxpbmVhckdyYWRpZW50IHgxPSI5NS42OTIlIiB5MT0iNC4zMDglIiB4Mj0iMCUiIHkyPSIxMDAlIiBpZD0icHJlZml4X19hIj48c3RvcCBzdG9wLWNvbG9yPSIjNTNBMEZEIiBvZmZzZXQ9IjAlIi8+PHN0b3Agc3RvcC1jb2xvcj0iI0I0RUM1MSIgb2Zmc2V0PSIxMDAlIi8+PC9saW5lYXJHcmFkaWVudD48L2RlZnM+PHBhdGggZD0iTTI5LjY5NSA3Ljk5M0wxNi44NjIgMS4wN2EuNTkuNTkgMCAwMC0uNTQtLjAwOWwtMTQgNi45MjNBLjU3Ny41NzcgMCAwMDIgOC41djE1YzAgLjIxMS4xMTcuNDA2LjMwNC41MDdsMTIuODM0IDYuOTIzYy4wMDcuMDAzLjAxNS4wMDIuMDIzLjAwNWEuNTczLjU3MyAwIDAwLjI1Ni4wNjVjLjA4OCAwIC4xNy0uMDIzLjI0NS0uMDU3LjAwNC0uMDAyLjAxIDAgLjAxNi0uMDAzbDE0LTYuOTIzQS41OC41OCAwIDAwMzAgMjMuNXYtMTVhLjU3NS41NzUgMCAwMC0uMzA1LS41MDd6bS0xNC4yNjcgNi43OGwtNS4xNjgtMi43OUwyMi45ODggNS42OWw1LjE2OSAyLjc5LTEyLjcyOSA2LjI5M3ptMS4xNDQtMTIuNTQ1bDUuMTY4IDIuNzg5TDkuMDEyIDExLjMxIDMuODQzIDguNTIzbDEyLjcyOS02LjI5NXpNMy4xNjcgOS40NzJsMTEuNjY2IDYuMjk0djEzLjY4NkwzLjE2NyAyMy4xNTdWOS40NzJ6TTE2IDI5LjQ5VjE1Ljc4bDEyLjgzMy02LjM0N3YxMy43MUwxNiAyOS40OXptLTQuOTcxLTEyLjQ3NmEuNTcyLjU3MiAwIDAxLjIzLjc4My41NzguNTc4IDAgMDEtLjUxLjMuNTc4LjU3OCAwIDAxLS4yNzktLjA3bC0zLjUtMS44ODlhLjU3My41NzMgMCAwMS0uMjMyLS43ODIuNTg3LjU4NyAwIDAxLjc5LS4yM2wzLjUgMS44ODh6IiBmaWxsPSJ1cmwoI3ByZWZpeF9fYSkiIGZpbGwtcnVsZT0ibm9uemVybyIvPjwvc3ZnPg=="); +} + +/* +** Resources +*/ +.google-compute-network { + background-image: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCI+PGRlZnM+PHN0eWxlPi5wcmVmaXhfX2Nscy0xe2ZpbGw6I2FlY2JmYX0ucHJlZml4X19jbHMtMntmaWxsOiM2NjlkZjZ9LnByZWZpeF9fY2xzLTN7ZmlsbDojNDI4NWY0fTwvc3R5bGU+PC9kZWZzPjxnIGRhdGEtbmFtZT0iUHJvZHVjdCBJY29ucyI+PHBhdGggY2xhc3M9InByZWZpeF9fY2xzLTEiIGQ9Ik0xNiAyaDZ2NmgtNnoiLz48cGF0aCBjbGFzcz0icHJlZml4X19jbHMtMiIgZD0iTTE5IDJoM3Y2aC0zeiIvPjxwYXRoIGNsYXNzPSJwcmVmaXhfX2Nscy0xIiBkPSJNMTYgMTZoNnY2aC02eiIvPjxwYXRoIGNsYXNzPSJwcmVmaXhfX2Nscy0yIiBkPSJNMTkgMTZoM3Y2aC0zeiIvPjxwYXRoIGNsYXNzPSJwcmVmaXhfX2Nscy0xIiBkPSJNMiAyaDZ2NkgyeiIvPjxwYXRoIGNsYXNzPSJwcmVmaXhfX2Nscy0yIiBkPSJNNSAyaDN2Nkg1eiIvPjxwYXRoIGNsYXNzPSJwcmVmaXhfX2Nscy0xIiBkPSJNMiAxNmg2djZIMnoiLz48cGF0aCBjbGFzcz0icHJlZml4X19jbHMtMiIgZD0iTTUgMTZoM3Y2SDV6TTggNGg4djJIOHpNOCAxOGg4djJIOHpNMTggOGgydjhoLTJ6TTQgOGgydjhINHoiLz48cGF0aCBjbGFzcz0icHJlZml4X19jbHMtMyIgZD0iTTQgOGgydjJINHpNMTggOGgydjJoLTJ6TTggNGgydjJIOHpNOCAxOGgydjJIOHoiLz48L2c+PC9zdmc+"); +} + +.google-virtual-private-cloud { + background-image: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCI+PGRlZnM+PHN0eWxlPi5wcmVmaXhfX2Nscy0xe2ZpbGw6I2FlY2JmYX0ucHJlZml4X19jbHMtMntmaWxsOiM2NjlkZjZ9LnByZWZpeF9fY2xzLTN7ZmlsbDojNDI4NWY0fTwvc3R5bGU+PC9kZWZzPjxnIGRhdGEtbmFtZT0iUHJvZHVjdCBJY29ucyI+PHBhdGggY2xhc3M9InByZWZpeF9fY2xzLTEiIGQ9Ik0xNiAyaDZ2NmgtNnoiLz48cGF0aCBjbGFzcz0icHJlZml4X19jbHMtMiIgZD0iTTE5IDJoM3Y2aC0zeiIvPjxwYXRoIGNsYXNzPSJwcmVmaXhfX2Nscy0xIiBkPSJNMTYgMTZoNnY2aC02eiIvPjxwYXRoIGNsYXNzPSJwcmVmaXhfX2Nscy0yIiBkPSJNMTkgMTZoM3Y2aC0zeiIvPjxwYXRoIGNsYXNzPSJwcmVmaXhfX2Nscy0xIiBkPSJNMiAyaDZ2NkgyeiIvPjxwYXRoIGNsYXNzPSJwcmVmaXhfX2Nscy0yIiBkPSJNNSAyaDN2Nkg1eiIvPjxwYXRoIGNsYXNzPSJwcmVmaXhfX2Nscy0xIiBkPSJNMiAxNmg2djZIMnoiLz48cGF0aCBjbGFzcz0icHJlZml4X19jbHMtMiIgZD0iTTUgMTZoM3Y2SDV6TTggNGg4djJIOHpNOCAxOGg4djJIOHpNMTggOGgydjhoLTJ6TTQgOGgydjhINHoiLz48cGF0aCBjbGFzcz0icHJlZml4X19jbHMtMyIgZD0iTTQgOGgydjJINHpNMTggOGgydjJoLTJ6TTggNGgydjJIOHpNOCAxOGgydjJIOHoiLz48L2c+PC9zdmc+"); +} + +.google-oracle-autonomous-database, .google-oracledatabase-autonomous-database-regular { + background-image: url("data:image/svg+xml;base64,PHN2ZyBkYXRhLWljb24tbmFtZT0iZGF0YXNldHNJY29uIiB3aWR0aD0iMTgiIGhlaWdodD0iMTgiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNMiAyaDE0djE0SDJWMnptMiAyaDEwdjEwSDRWNHptMiA2aDJ2Mkg2di0yem0wLTRoMnYySDZWNnptNCA0aDJ2MmgtMnYtMnptMC00aDJ2MmgtMlY2eiIvPjwvc3ZnPg=="); +} + +.google-oracle-exadata-database, .google-oracledatabase-exadata-infrastructure { + background-image: url("data:image/svg+xml;base64,PHN2ZyBkYXRhLWljb24tbmFtZT0iaW5zdGFuY2VUZW1wbGF0ZUljb24iIHdpZHRoPSIxOCIgaGVpZ2h0PSIxOCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0xMy45OTggMTZBMS4wMSAxLjAxIDAgMDAxNSAxNC45OTNWNC4wMDdDMTUgMyAxMy45OTggMiAxMi45OTggMkg1LjAwMkM0LjAwMiAyIDMgMyAzIDQuMDA3djEwLjk4NkMzIDE1LjU1IDMuNDUgMTYgNC4wMDIgMTZINS41bC41LTFoNmwuNSAxaDEuNDk4ek01IDRoOHY5SDVWNHptMSA1LjVhLjUuNSAwIDAxLjQ5LS41aDUuMDJhLjUuNSAwIDAxMCAxSDYuNDlBLjUuNSAwIDAxNiA5LjV6TTggNWgydjJIOFY1em0tMiA2LjVhLjUuNSAwIDAxLjQ5LS41aDUuMDJhLjUuNSAwIDAxMCAxSDYuNDlhLjUuNSAwIDAxLS40OS0uNXoiLz48L3N2Zz4="); +} + +.google-oracledatabase-cloud-vm-cluster { + background-image: url("data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMzIgMzIiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTE1LjYxIDI5Yy02LjE3IDAtMTEtMi44Ni0xMS02LjVWMTZoMnY2LjVjMCAyLjE3IDMuNjIgNC41IDkgNC41djJ6bTAgMHYtMmM1LjM4IDAgOS0yLjMzIDktNC41VjE2aDJ2Ni41YzAgMy42NC00LjgzIDYuNS0xMSA2LjV6IiBmaWxsPSIjNWY2MzY4Ii8+PHBhdGggZD0iTTE1LjYxIDIyLjVjLTYuMTcgMC0xMS0yLjg2LTExLTYuNVY5LjVoMlYxNmMwIDIuMTcgMy42MiA0LjUgOSA0LjV2MnptMCAwdi0yYzUuMzggMCA5LTIuMzMgOS00LjVWOS41aDJWMTZjMCAzLjY0LTQuODMgNi41LTExIDYuNXoiIGZpbGw9IiM4MDg2OGIiLz48cGF0aCBkPSJNMTUuNjEgMTZjLTYuMTcgMC0xMS0yLjg2LTExLTYuNVM5LjQ0IDMgMTUuNjEgM3YyYy01LjM4IDAtOSAyLjMzLTkgNC41czMuNjIgNC41IDkgNC41djJ6bTAgMHYtMmM1LjM4IDAgOS0yLjMzIDktNC41cy0zLjYyLTQuNS05LTQuNVYzYzYuMTcgMCAxMSAyLjg2IDExIDYuNXMtNC44MyA2LjUtMTEgNi41eiIgZmlsbD0iIzlhYTBhNiIvPjwvc3ZnPg=="); +} +`, + + 'ocd-light-theme.css': String.raw`/* Copyright (c) 2020, Oracle and/or its affiliates. All rights reserved. */ +/* Licensed under the Universal Permissive License v 1.0 as shown at https://oss.oracle.com/licenses/upl. */ +.ocd-console-header-colour { + background-color: white; +} + +.ocd-console-menubar-colour { + background-color: white; +} + +.ocd-console-toolbar-colour { + background-color: white; +} + +.ocd-console-footer-colour { + background-color: white; +} +`, + + 'ocd-svg.css': String.raw`/* Copyright (c) 2020, Oracle and/or its affiliates. All rights reserved. */ +/* Licensed under the Universal Permissive License v 1.0 as shown at https://oss.oracle.com/licenses/upl. */ +:root { + + --svg-icon-height: 40px; + --svg-icon-width: 40px; + --svg-resource-simple-width: 40px; + --svg-resource-detailed-width: 170px; + --svg-resource-container-width: 200px; + + --svg-container-resource-stroke: #312D2A; + --svg-container-resource-stroke-width: 1; + --svg-container-resource-stroke-dasharray: 3, 2; + --svg-container-resource-stroke-opacitiy: 1; + --svg-container-resource-stroke-corner-rx: 5; + + --svg-simple-resource-stroke: #161513; + --svg-simple-resource-stroke-width: 0.5; + --svg-simple-resource-stroke-dasharray: none; + --svg-simple-resource-stroke-opacitiy: 0.5; + --svg-simple-resource-stroke-corner-rx: 5; + + --svg-selected-resource-stroke: #161513; + --svg-selected-resource-stroke-width: 1.5; + --svg-selected-resource-stroke-dasharray: none; + --svg-selected-resource-stroke-opacitiy: 1; + --svg-selected-resource-stroke-corner-rx: 5; + + --svg-resource-parent-connector-stroke: #161513; + --svg-resource-parent-connector-stroke-width: 1.5; + --svg-resource-parent-connector-stroke-dasharray: none; + --svg-resource-parent-connector-stroke-opacitiy: 1; + + --svg-resource-association-connector-stroke: #161513; + --svg-resource-association-connector-stroke-width: 1.5; + --svg-resource-association-connector-stroke-dasharray: 3, 2; + --svg-resource-association-connector-stroke-opacitiy: 1; + + --svg-analytics-resources-background-colour: rgba(59, 112, 135, 0.9); + --svg-database-resources-background-colour: rgba(59, 112, 135, 0.9); + --svg-gateway-resources-background-colour: rgba(59, 112, 135, 0.9); + --svg-identity-resources-background-colour: rgba(199, 59, 89, 0.9); + --svg-infrastructure-resources-background-colour: rgba(59, 112, 135, 0.9); + --svg-network-resources-background-colour: rgba(121, 96, 135, 0.9); + --svg-storage-resources-background-colour: rgba(146, 88, 101, 0.9); + --svg-tenancy-resources-background-colour: rgba(240, 193, 84, 0.9); + +} + +svg { + font-family: Helvetica Neue, Helvetica, Arial, sans-serif; +} + +.ocd-svg-icon { + width: var(--svg-icon-width); + height: var(--svg-icon-height); + background-repeat: no-repeat; + background-position-x: center; + background-position-y: center; + background-size: 30px 30px; +} + +.ocd-svg-parent-connector { + stroke: var(--svg-resource-parent-connector-stroke); + stroke-width: var(--svg-resource-parent-connector-stroke-width); + stroke-dasharray: var(--svg-resource-parent-connector-stroke-dasharray); + stroke-opacity: var(--svg-resource-parent-connector-stroke-opacitiy); + fill-opacity: 0; +} + +.ocd-svg-association-connector { + stroke: var(--svg-resource-association-connector-stroke); + stroke-width: var(--svg-resource-association-connector-stroke-width); + stroke-dasharray: var(--svg-resource-association-connector-stroke-dasharray); + stroke-opacity: var(--svg-resource-association-connector-stroke-opacitiy); + fill-opacity: 0; +} + +.ocd-svg-container { + stroke: var(--svg-container-resource-stroke); + stroke-width: var(--svg-container-resource-stroke-width); + stroke-dasharray: var(--svg-container-resource-stroke-dasharray); + stroke-opacity: var(--svg-container-resource-stroke-opacitiy); + rx: var(--svg-container-resource-stroke-corner-rx); +} + +.ocd-svg-simple { + stroke: var(--svg-simple-resource-stroke); + stroke-width: var(--svg-simple-resource-stroke-width); + stroke-dasharray: var(--svg-simple-resource-stroke-dasharray); + stroke-opacity: var(--svg-simple-resource-stroke-opacitiy); + rx: var(--svg-simple-resource-stroke-corner-rx); +} + +.ocd-svg-resource-selected { + stroke-width: var(--svg-selected-resource-stroke-width); + stroke-dasharray: var(--svg-selected-resource-stroke-dasharray); + stroke-opacity: var(--svg-selected-resource-stroke-opacitiy); +} + +.ocd-svg-resource-simple { + width: var(--svg-resource-simple-width); + height: var(--svg-icon-height); +} + +.ocd-svg-resource-detailed { + width: var(--svg-resource-detailed-width); + height: var(--svg-icon-height); +} + +.ocd-svg-resource-container { + width: var(--svg-resource-container-width); +} + +.ocd-svg-foreign-object { + height: var(--svg-icon-height); +} + +.ocd-svg-foreign-object > div { + display: grid; + grid-template-columns: var(--svg-icon-width) auto; + width: 100%; +} + +.ocd-svg-foreign-object-display-name { + display: block; + padding: 0 0 0 5px; + margin-top: auto; + margin-bottom: auto; +} + +.ocd-svg-foreign-object-display-name > span { + display: block; + width: 100%; + opacity: 0.8; + margin: 0; + padding: 0; + border: none; + box-sizing: border-box; + font-size: smaller; + overflow-x: hidden; + text-overflow: ellipsis; + white-space: nowrap; + user-select: none; +} + +.ocd-svg-foreign-object-display-name > input { + display: block; + width: 100%; + text-overflow: ellipsis; + margin: 0; + padding: 0; + border: none; + box-sizing: border-box; + font-weight: bolder; + background: transparent; +} + +.ocd-svg-foreign-object-name { + font-weight: bolder; +} + +.ocd-svg-container-icon-background { + border-color: var(--svg-simple-resource-stroke); + border-width: var(--svg-simple-resource-stroke-width); + border-top-left-radius: 5px 5px; + border-bottom-right-radius: 5px 5px; +} + +.ocd-svg-detailed-icon-background { + border-color: var(--svg-simple-resource-stroke); + border-width: var(--svg-simple-resource-stroke-width); + border-top-left-radius: 5px 5px; + border-bottom-left-radius: 5px 5px; +} + +.ocd-svg-simple-icon-background { + border-color: var(--svg-simple-resource-stroke); + border-width: var(--svg-simple-resource-stroke-width); + border-radius: 5px 5px; +} + +`, + + 'ocd.css': String.raw`/* Copyright (c) 2020, Oracle and/or its affiliates. All rights reserved. */ +/* Licensed under the Universal Permissive License v 1.0 as shown at https://oss.oracle.com/licenses/upl. */ +:root { + --console-titlebar-height: 25px; + --console-menubar-height: 25px; + --console-header-height: 50px; + --console-toolbar-height: 25px; + --console-toolbar-icon-height: 25px; + --console-toolbar-icon-width: 25px; + --console-footer-height: 30px; + --console-logo-height: 50px; + --console-logo-width: 50px; + --console-tab-bar-height: 25px; + --console-layers-bar-height: 25px; + --console-pages-bar-height: 25px; + --console-palette-width: 200px; + --console-properties-width: 500px; + + --tabular-row-number-column-width: 40px; + --tabular-line-colour: #312D2A; + --tabular-header-background-colour: #8ebaaa; + --tabular-body-odd-background-colour: #ffffff; + --tabular-body-even-background-colour: #9ec2c9; + + --variables-line-colour: #312D2A; + --variables-header-background-colour: #d3e4de; + --variables-body-odd-background-colour: #ffffff; + --variables-body-even-background-colour: #9ec2c9; + + --library-design-height: 200px; + --library-design-width: 300px; + --library-design-background-size: 100px; + --library-design-background-colour: #8ebaaa; +} + +body { + display: block; + margin: 0; + padding: 0; + font-family: Helvetica Neue, Helvetica, Arial, sans-serif; + overflow: hidden; +} + +details { + display: block; + box-sizing: border-box; + margin-top: 1em; + width: 100%; + max-width: 100%; +} + +details:not([open]) { + transition: all 2.5s ease-in-out; +} + +details[open] { + transition: all 2.5s ease-in-out; +} + +details > summary::-webkit-details-marker { + display:none; +} + +details:focus { + outline: none; +} + +summary { + width: 100%; + max-width: 100%; + box-sizing: border-box; + font-weight: bold; + min-height: 20px; + display: inline-block; + vertical-align: middle; + text-align: left; + margin-bottom: 5px; +} + +.summary-background { + background-position: left center; + background-repeat: no-repeat; + background-size: 20px; + padding-left: 25px; + margin-right: 1em; +} + +[contenteditable="true"] { + padding-left: 0.25em; + padding-right: 0.25em; +} + +[contenteditable="true"]:empty { + padding-left: 0.5em; + padding-right: 0.5em; +} + +[contenteditable="true"]:empty::before { + content: 0; + color: red; +} + +[contenteditable="true"] br { + display: none; +} + +/* +** Style Tables +*/ + +/* Classes for formatting divs as tables */ +.table {display: table; margin: 0 auto;} +.thead {display: table-header-group; min-width: 100%;} +.tbody {display: table-row-group;} +.tr {display: table-row;} +.th {display: table-cell; color: black; overflow: hidden;} +.td {display: table-cell; color: black; overflow: hidden;} +.th-menu {display: table-cell; color: black; overflow: visible} + +.hidden { + display: none !important; + visibility: hidden !important; +} + +.ocd-image { + background-image: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA0Mi4xIDIyIj48ZyBmaWxsPSIjZmZmIj48cGF0aCBkPSJNLjUgMjEuNUwuNiAyMGMuMy0zLjQgMi4yLTYuNSA1LjMtOC4xLjctLjMgMS4xLTEgMS4zLTEuNy41LTIuNCAyLjEtNC41IDQuNC01LjUgMS0uNCAyLS42IDMuMS0uNkgxNS42Yy43IDAgMS4zLS4zIDEuNy0uNyAxLjgtMS45IDQuMi0zIDYuOC0zIDMuNSAwIDYuNyAyIDguMyA1LjIuMy43LjkgMS4xIDEuNyAxLjMgMS4xLjIgMi4xLjcgMyAxLjIgNC4yIDIuNyA1LjcgOC4yIDMuMyAxMi42bC0uNC43SC41eiIvPjxwYXRoIGQ9Ik0yNC4xIDFjMy40IDAgNi40IDEuOSA3LjkgNC45LjQuOCAxLjEgMS40IDIgMS42IDEgLjIgMiAuNiAyLjkgMS4yIDQgMi41IDUuNCA3LjggMy4xIDExLjlsLS4yLjRIMS4xbC4xLS45Yy4yLTMuMyAyLjEtNi4xIDUtNy43LjgtLjQgMS4zLTEuMiAxLjUtMiAuNC0yLjMgMi00LjIgNC4xLTUuMS45LS40IDEuOS0uNiAyLjktLjZoMWMuOCAwIDEuNS0uMyAyLS45QzE5LjMgMiAyMS43IDEgMjQuMSAxbTAtMWMtMi43IDAtNS4zIDEuMS03LjIgMy4xLS4zLjQtLjguNi0xLjMuNmgtMWMtMS4xIDAtMi4yLjItMy4zLjctMi4zIDEtNC4xIDMuMi00LjYgNS44LS4xLjYtLjUgMS0xIDEuM0MyLjUgMTMuMi40IDE2LjQuMSAyMGwtLjEuOVYyMmg0MC40bC4zLS41LjItLjVjMi41LTQuNiAxLTEwLjQtMy41LTEzLjItMS0uNi0yLTEuMS0zLjItMS4zLS42LS4xLTEuMS0uNS0xLjMtMUMzMS4yIDIuMSAyNy44IDAgMjQuMSAweiIvPjwvZz48cGF0aCBkPSJNNDAgMjAuNWwtLjIuNWgtMThjLTE1LjEgMC0xNS4xLTEuNyAwLTEuN2gxN2MxLjQtMy4zLjItNy4zLTIuOC05LjItLjctLjUtMS41LS44LTIuMy0xLTEuNC0uMy0yLjYtMS4yLTMuMi0yLjUtMS4yLTIuNC0zLjYtMy45LTYuMy0zLjktMiAwLTMuOS44LTUuMiAyLjMtMSAxLTIuMyAxLjUtMy44IDEuNC0uOS0uMS0xLjguMS0yLjcuNC0xLjYuNy0yLjggMi4yLTMuMSAzLjktLjMgMS40LTEuMSAyLjUtMi40IDMuMkM0LjkgMTUgMy40IDE3IDMgMTkuM2gxOC44Yy41LjctLjcgMS4yIDAgMS43SDEuMWwuMS0uOWMuMi0zLjMgMi4xLTYuMSA1LTcuNy44LS40IDEuMy0xLjIgMS41LTIgLjQtMi4zIDItNC4yIDQuMS01LjEgMS4xLS41IDIuMy0uNyAzLjUtLjYuOS4xIDEuNy0uMiAyLjMtLjlDMTkuMyAyIDIxLjcgMSAyNC4xIDFjMy40IDAgNi40IDEuOSA3LjkgNC45LjQuOCAxLjEgMS40IDIgMS42IDEgLjIgMiAuNiAyLjkgMS4yIDQgMi40IDUuMyA3LjcgMy4xIDExLjh6IiBmaWxsPSIjMmM1OTY3Ii8+PGcgZmlsbD0iIzJjNTk2NyI+PHBhdGggZD0iTTguNDUgMTYuNDd2LS4yNTRxMC0uMTg2LS4wMTQtLjQtLjAxNC0uMjI2LS4wMTQtLjQxM3YtLjI2N3EwLS40NC4wOC0xLjAyNi4wOTQtLjU4Ny4zMi0xLjEyLjIyNy0uNTQ3LjY0LS45Mi40MTQtLjM3NCAxLjA4LS4zNzRoNi4yOTRxLjU3MyAwIDEuMDI2LjM0Ny40NjcuMzQ3Ljc4Ny44NTMuMzMzLjUwNy41MDcgMS4wOTQuMTczLjU3My4xNzMgMS4wNTMgMCAuMzg3LS4xMzMuOTYtLjEzNC41NzMtLjQgMS4xMDctLjI2Ny41Mi0uNjY3Ljg5My0uMzg3LjM3My0uOTIuMzczaC02Ljg1M3EtLjMyIDAtLjYyNy0uMnQtLjU3My0uNDhxLS4yNTQtLjI5My0uNDU0LS42MjYtLjE4Ni0uMzM0LS4yNTMtLjZ6bTEuMTItMS4zMzRxMCAuMzM0LjA4LjcwNy4wOC4zNi4yNjYuNjguMTg2LjMwNy40OC41MDcuMjkzLjIuNzIuMmg1LjMzM3EuNDQgMCAuNzMzLS4yMTQuMjk0LS4yMjYuNDY3LS41Ni4xODctLjMzMy4yNjctLjcyLjA4LS4zODYuMDgtLjczMyAwLS4yNC0uMDY3LS41NzMtLjA2Ny0uMzM0LS4yMTMtLjY0LS4xMzQtLjMwNy0uMzYtLjUyLS4yMTQtLjIyNy0uNTItLjIyN2gtNi4xMDdxLS4zODcgMC0uNjEzLjI0LS4yMjcuMjQtLjM0Ny41NzMtLjEyLjMyLS4xNi42OC0uMDQuMzYtLjA0LjZ6TTIwLjAzNyAxNC45NXEwIC40NC4wOTMgMS4wMjYuMTA3LjU4Ny4zNDcgMS4xMi4yNC41MzQuNjQuOTA3LjQxMy4zNzMgMS4wNC4zNzNoNS41MzNxLjA5NCAwIC4yLS4xMi4xMi0uMTIuMjE0LS4yOTMuMDkzLS4xNzMuMTQ2LS4zNDcuMDY3LS4xNzMuMDY3LS4yOEgyMi43M3EtLjI2NiAwLS40OTMtLjE3My0uMjEzLS4xNzMtLjM4Ny0uNDEzLS4xNi0uMjQtLjI2Ni0uNDk0LS4xMDctLjI2Ni0uMTQ3LS40NTNWMTQuNDdxMC0uMTg3LjA4LS40NC4wOTMtLjI2Ny4yNC0uNTA3dC4zNDctLjRxLjItLjE3My40NC0uMTczaDUuMTQ2bC4wNC0uMDU0cS4wNTQtLjA1My4xMDctLjEzMy4wNjctLjA4LjEyLS4xNi4wNjctLjA4LjEwNy0uMTMzLjAxMy0uMDU0LjA1My0uMTYuMDUzLS4xMDcuMTA3LS4yMjcuMDY2LS4xMi4xMi0uMjI3LjA2Ni0uMTA2LjEwNi0uMTZoLTYuMTA2cS0uNTc0IDAtMS4wMTQuMzQ3LS40MjYuMzQ3LS43Mi44NTMtLjI4LjQ5NC0uNDI2IDEuMDU0LS4xNDcuNTYtLjE0NyAxek0zNy42MDQgMTQuOTVxMC0uNDQtLjE0Ni0xLS4xNDctLjU2LS40NC0xLjA1NC0uMjk0LS41MDYtLjczNC0uODUzLS40MjYtLjM0Ny0xLS4zNDdoLTYuMTA2djYuNjhoNi4yOTNxLjYxMyAwIDEuMDI3LS4zNzMuNDEzLS4zNzMuNjUzLS45MDcuMjUzLS41MzMuMzQ3LTEuMTIuMTA2LS41ODYuMTA2LTEuMDI2em0tNy4xMi0xLjk4N2g0LjY0cS4yMTQgMCAuNDE0LjE2LjIuMTYuMzQ2LjQuMTQ3LjIyNy4yMjcuNDkzLjA5My4yNTQuMDkzLjQ1NHYxLjMzM3EtLjA0LjE4Ny0uMTQ2LjQ1My0uMTA3LjI1NC0uMjguNDk0LS4xNzQuMjQtLjQuNDEzLS4yMTQuMTczLS40NjcuMTczaC00LjQyN3oiLz48L2c+PC9zdmc+"); +} + +.ocd-logo { + height: var(--console-logo-height); + width: var(--console-logo-width); + background-repeat: no-repeat; + background-position: center; +} + +.ocd-background { + background-repeat: no-repeat; + background-position: center; + background-size: 100%; +} + +.ocd-busy-cursor { + cursor: progress; +} + +.draggable { + cursor: move; + cursor: -webkit-grab; + cursor: -moz-grab; + cursor: grab; +} + +.draggable:active { + cursor: -webkit-grabbing; + cursor: -moz-grabbing; + cursor: grabbing; +} + +.ocd-designer-tab-bar { + display: flex; + box-sizing: border-box; + margin: 0; + padding: 0; + height: var(--console-tab-bar-height); + min-height: var(--console-tab-bar-height); + max-height: var(--console-tab-bar-height); + width: 100%; + border-bottom: #312D2A solid 1px; +} + +.ocd-designer-tab { + display: flex; + flex-direction: row; + align-items: center; + border-right: #555555 solid 1px; + padding-right: 5px; + font-size: smaller; +} + +.ocd-designer-tab:hover { + box-shadow: 0 0 5px #1d2733; +} + +.ocd-designer-tab > span { + margin: 0 5px 0 5px; +} + +.ocd-sort-background-icon { + background-repeat: no-repeat; + background-position: right; + background-size: 15px; +} + +.ocd-sortable-column { + cursor: default; +} + + + + + + + +/* +** Top Level Layout +*/ + +.ocd-console { + display: grid; + grid-template-rows: [console-header] var(--console-header-height) [console-toolbar] var(--console-toolbar-height) [console-body] auto [console-footer] var(--console-footer-height); + box-sizing: border-box; + margin: 0; + padding: 0; + + width: 100%; + height: 100vh; + background-color: var(--console-background-colour); +} + +.ocd-console-title-bar { + display: grid; + grid-auto-flow: column; + margin: 0; + padding: 0 20px 0 5px; + box-sizing: border-box; + min-height: var(--console-titlebar-height); + max-height: var(--console-titlebar-height); + height: var(--console-titlebar-height); + width: 100%; + align-items: center; + vertical-align: middle; +} + +.ocd-console-title-bar input { + width: 100%; + border: none; +} + +.ocd-console-menu-bar { + margin: 0; + padding: 0; + box-sizing: border-box; + min-height: var(--console-menubar-height); + max-height: var(--console-menubar-height); + height: var(--console-menubar-height); + width: 100%; + border-bottom: #555555 1px solid; + display: grid; + grid-auto-flow: column; +} + +.ocd-console-header { + display: grid; + grid-template-columns: var(--console-logo-width) auto; + margin: 0; + padding: 0 0 0 5px; + box-sizing: border-box; + min-height: var(--console-header-height); + max-height: var(--console-header-height); + height: var(--console-header-height); + width: 100%; + border-bottom: #555555 1px solid; + align-items: center; +} + +.ocd-title-and-menu { + padding-left: 10px; + margin: auto; + display: block; + height: var(--console-logo-height); + width: 100%; +} + +.ocd-console-toolbar { + margin: 0; + padding: 0 3px 0 3px; + box-sizing: border-box; + min-height: var(--console-toolbar-height); + max-height: var(--console-toolbar-height); + height: var(--console-toolbar-height); + width: 100%; + border-bottom: #555555 1px solid; + display: grid; + grid-auto-flow: column; +} + +.ocd-toolbar-separator-right { + padding-right: 2px !important; + margin-right: 2px !important; + border-right: #d0d7de solid 1px !important; +} + +.ocd-toolbar-left { + display: inline-block; + margin-right: auto; + align-items: left; +} + +.ocd-toolbar-left > div { + display: grid; + grid-auto-flow: column; +} + +.ocd-toolbar-centre { + display: inline-block; + margin-left: auto; + margin-right: auto; + align-items: center; +} + +.ocd-toolbar-centre > div { + display: grid; + grid-auto-flow: column; +} + +.ocd-toolbar-right { + display: inline-block; + margin-left: auto; + align-items: right; +} + +.ocd-toolbar-right > div { + display: grid; + grid-auto-flow: column; +} + +.ocd-console-toolbar-icon, .ocd-console-three-dot-menu-icon { + background-repeat: no-repeat; + background-position: center; + background-size: 15px; + width: 25px; + height: 25px; +} + +.ocd-console-toolbar-icon:hover::before { + transform: scale(1.1); + box-shadow: 0 0 15px #1d2733; +} + +.ocd-console-toolbar-icon:hover { + color: #1d2733; + box-shadow: 0 0 5px #1d2733; + text-shadow: 0 0 5px #1d2733; +} + +.ocd-console-toolbar-dropdown { + margin: 0; + padding: 0; + box-sizing: border-box; +} + +.ocd-console-toolbar-dropdown > ul { + margin: 0; + padding: 0; + box-sizing: border-box; + display: flex; + align-items: center; + flex-wrap: wrap; + list-style: none; + text-decoration: none; +} + +.ocd-console-toolbar-dropdown-item { + position: relative; + font-size: 14px; +} + +.ocd-console-toolbar-dropdown-item > ul { + position: absolute; + box-shadow: 0 10px 15px -3px rgba(46, 41, 51, 0.08), + 0 4px 6px -2px rgba(71, 63, 79, 0.16); + font-size: 0.875rem; + z-index: 99999; + min-width: 10rem; + padding: 0.5rem 0; + list-style: none; + background-color: #f2f7f7; + border-radius: 0.5rem; + border: 1px solid #d1d1d4; + display: none; +} + +.ocd-console-toolbar-dropdown-item > ul.show { + display: block; + cursor: pointer; +} + +.ocd-console-toolbar-dropdown-item > ul.slide-down { + top: var(--console-layers-bar-height); +} + +.ocd-console-toolbar-dropdown-item > ul.slide-right { + right: 0 +} + +.ocd-console-toolbar-dropdown-item > ul.slide-up { + bottom: var(--console-pages-bar-height); +} + +.ocd-mouseover-highlight:hover { + color: #1d2733; + box-shadow: 0 0 5px #1d2733; +} + +.ocd-dropdown-menu-item { + display: block; + padding: 0 10px 0 10px; +} + +.ocd-dropdown-menu-item > div { + margin: 2px 0 2px 0; + white-space: nowrap; +} + +.ocd-console-body { + display: block; + box-sizing: border-box; + width: 100%; + overflow: hidden; +} + +.ocd-console-footer { + display: flex; + grid-auto-flow: column; + margin: 0; + padding: 0; + box-sizing: border-box; + min-height: var(--console-footer-height); + max-height: var(--console-footer-height); + height: var(--console-footer-height); + + border-top: #aeaeae 1px solid; + color: #aeaeae; + font-family: Helvetica Neue, Helvetica, Arial, sans-serif; + font-size: small; + align-items: center; +} + +.ocd-footer-left { + display: inline-block; + margin-right: auto; + align-items: left; + height: 100%; +} + +.ocd-footer-left > div { + display: grid; + grid-auto-flow: column; + height: 100%; +} + +.ocd-footer-left > div > div { + display: flex; + min-height: 100%; + margin-left: 5px; +} + +.ocd-footer-left > div > div > label, +.ocd-footer-left > div > div > span { + margin: auto; +} + +.ocd-active-file-modified-icon { + background-repeat: no-repeat; + background-position: left; + background-size: 25px; + width: 25px; + height: 25px; + padding-left: 30px; +} + +.ocd-footer-centre { + display: inline-block; + margin-left: auto; + margin-right: auto; + align-items: center; +} + +.ocd-footer-centre > div { + display: grid; + grid-auto-flow: column; +} + +.ocd-footer-right { + display: inline-block; + margin-left: auto; + margin-right: 10px; + align-items: right; + height: 100%; +} + +.ocd-footer-right > div { + display: grid; + grid-auto-flow: column; + height: 100%; +} + +.ocd-footer-right > div > label, +.ocd-footer-right > div > span { + margin: auto; +} + +.ocd-cache-picker { + display: grid; + grid-auto-flow: column; +} + +.ocd-cache-picker > div { + margin: auto; +} + +.ocd-cache-picker > div > span { + padding-right: 5px; +} + + + + + +/* +** Menu Items +*/ + +.ocd-console-main-menu { + margin: 0; + padding: 0; + box-sizing: border-box; + display: flex; + align-items: center; + flex-wrap: wrap; + list-style: none; +} + +.ocd-menu-item { + position: relative; + font-size: 14px; +} + +.ocd-menu-item-icon { + background-position: center left 3px; + background-repeat: no-repeat; + background-size: 13px; +} + +.ocd-menu-item>a { + display: block; + padding: 0 10px 0 10px; + font-size: inherit; + color: inherit; + text-decoration: none; + text-align: left; +} + +.ocd-menu-item>a:hover {} + +.ocd-submenu-item { + position: relative; + font-size: 14px; +} + +.ocd-submenu-item>a { + display: block; + padding: 0 5px 0 20px; + font-size: inherit; + color: inherit; + text-decoration: none; + margin: 0 0 10px 0; + text-align: left; +} + +.ocd-submenu-item-has-submenu { + background-image: url("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTIiIGhlaWdodD0iMjQiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0wIDBsMTIgMTJMMCAyNFYweiIgZmlsbD0iIzE2MTUxMyIvPjwvc3ZnPg=="); + background-position: right 10px center; + background-repeat: no-repeat; + background-size: 4px; +} + +.ocd-submenu-item a:hover { + background-color: #f2f2f2; + box-shadow: 0 0 5px #1d2733; +} + +.ocd-dropdown-menu { + position: absolute; + box-shadow: 0 10px 15px -3px rgba(46, 41, 51, 0.08), + 0 4px 6px -2px rgba(71, 63, 79, 0.16); + font-size: 0.875rem; + z-index: 9999; + min-width: 10rem; + padding: 0.5rem 0 0 0; + list-style: none; + background-color: #f2f7f7; + border-radius: 0.5rem; + border: 1px solid #d1d1d4; + display: none; +} + +.ocd-dropdown-menu.show { + display: block; +} + +.ocd-dropdown-menu .ocd-dropdown-submenu { + position: absolute; + left: 98%; + top: -10px; +} + + + + + +/* +** Palettes +*/ + +.ocd-palettes-view { + display: flex; + flex-direction: column; + box-sizing: border-box; + width: var(--console-palette-width) +} + +.ocd-palettes { + display: flex; + flex-direction: row; + box-sizing: border-box; + overflow-y: auto; + overflow-x: hidden; + width: var(--console-palette-width) +} + +.ocd-palette-select { + display: flex; + flex-direction: row; + margin: 0; + padding: 0; + height: var(--console-layers-bar-height); + min-height: var(--console-layers-bar-height); + max-height: var(--console-layers-bar-height); + width: 100%; + border-bottom: #312D2A solid 1px; + border-right: #312D2A solid 1px; + font-size: smaller; +} + +.ocd-palette-select > div { + display: flex; + flex-direction: row; + align-items: center; + vertical-align: middle; +} + +.ocd-palette-select > div > input { + height: 100%; + display: block; + box-sizing: border-box; +} + +.ocd-palette-select > div > label, +.ocd-palette-select > div > span { + margin: auto; +} + + + + + + +/* +** Loading +*/ + +.ocd-query-wrapper { + display: block; + position: absolute; + top: 0; + right: 0; + bottom: 0; + left: 0; + z-index: 100; + padding: 100px 100px; + width: 100%; + height: 100%; + opacity: 0.8; +} + +@keyframes animate-icing { + 0% { + background-position: -140px 0 + } + 10% { + background-position: -70px 0 + } + 15% { + background-position: -46.66667px 0 + } + 30% { + background-position: 0 0 + } + 70% { + background-position: 0 0 + } + 85% { + background-position: 46.66667px 0 + } + 90% { + background-position: 70px 0 + } + to { + background-position: 140px 0 + } +} + +#misshapen-doughnut { + animation: animate-icing 2.2s linear infinite; + background: linear-gradient(#eee, #eee) no-repeat; + border: 1px solid #fff; + border-radius: 80px; + height: 80px; + width: 140px; + margin: auto; + position: relative; + opacity: 1; +} + +#misshapen-doughnut:before { + background: linear-gradient(90deg, #a3f022, #3e9fff); + border-radius: 80px; + content: ""; + display: block; + height: 100%; + position: absolute; + width: 100%; + z-index: -1 +} + +#misshapen-doughnut:after { + background-color: #fff; + border-radius: 80px; + content: ""; + display: block; + height: 50px; + left: 15px; + position: relative; + top: 15px; + width: 110px +} + + + + + + +/* +** Designer View +*/ + +.ocd-designer-toolbar { + display: grid; + grid-auto-flow: column; +} + +.ocd-designer-toolbar-zoom-controls { + margin-left: 2px; + display: grid; + grid-auto-flow: column; +} + +.ocd-designer-toolbar-zoom-controls > div { + margin: auto; +} + +.ocd-designer-toolbar-zoom-controls select { + border: none; +} + +.ocd-designer { + display: grid; + grid-template-columns: var(--console-palette-width) calc(100% - var(--console-palette-width) - var(--console-properties-width)) var(--console-properties-width); + box-sizing: border-box; + width: 100%; + height: 100%; +} + +.ocd-designer-left-panel-only { + grid-template-columns: var(--console-palette-width) calc(100% - var(--console-palette-width)); +} + +.ocd-designer-right-panel-only { + grid-template-columns: calc(100% - var(--console-properties-width)) var(--console-properties-width); +} + +.ocd-designer-no-side-panels { + grid-template-columns: 100%; +} + +.ocd-designer-palette-and-properties { + grid-template-columns: var(--console-palette-width) calc(100% - var(--console-palette-width) - var(--console-properties-width)) var(--console-properties-width); +} + +.ocd-designer-left-panel { + display: flex; + flex-direction: column; + overflow-x: hidden; + overflow-y: hidden; + box-sizing: border-box; + width: var(--console-palette-width); + min-width: var(--console-palette-width); + min-height: 100%; + border-right: #555555 1px solid; +} + +.ocd-designer-palette { + display: block; + direction: rtl; + overflow-x: hidden; + overflow-y: scroll; + box-sizing: border-box; + width: 100%; + min-height: 100%; + padding-bottom: 30px; +} + +.ocd-model-palette { + overflow: scroll; + white-space: nowrap; +} + +.ocd-model-palette ul { + list-style: none; + display: block; + padding: 0; + margin: 0; +} + +.ocd-model-palette li { + padding-left: 0.5em; + margin-top: 2px; +} + +.ocd-model-palette li > div { + display: inline-block; + margin-left: 0; + padding-left: 0; + background-repeat: no-repeat; + background-position: left; + background-position-x: 0.75em; + background-size: 1.25em 1.25em; + white-space: nowrap; +} + +.ocd-model-palette li > div.tree-collapsed::before { + content: "+"; + color: #336600; + display: inline-block; +} + +.simple-list-element > div { + display: flex !important; + flex-direction: row; + flex-wrap: nowrap; + justify-content: flex-start; + align-items: center; +} + +.simple-list-element div > div.draggable { + display: block; + background-repeat: no-repeat; + background-position: center; + background-size: 15px 15px; + width: 20px; + height: 20px; + flex: none; +} + +.simple-list-element div > div.draggable:active { + width: 35px; + height: 35px; + background-size: 30px 30px; + border: 1px dashed red; +} + +.simple-list-element > div > label, +.simple-list-element > div > span { + clear: both; + margin-left: 5px; + text-wrap: none; + white-space: nowrap; + padding-right: 1em; + flex: auto; + font-size: small; +} + +.collapsible-list-element > div > label, +.collapsible-list-element > div > span { + clear: both; + margin-left: 0.5em; + text-wrap: none; + white-space: nowrap; + padding-right: 1em; + font-size: smaller; +} + +.collapsible-list-element > div::before { + content: "-"; + color: #336600; + display: inline-block; +} + +.ocd-designer-palette-provider { + display: block; + direction: ltr; + width: 100%; + padding: 0 0 10px 0; + background-color: white; +} + +.ocd-designer-palette-provider>details { + display: block; + margin: 0; + padding: 0; + width: 100%; +} + +.ocd-designer-palette-provider>details>summary { + display: flex; + font-size: smaller; + font-weight: bolder; + color: #1d2733; + width: 100%; + height: var(--console-layers-bar-height); + min-height: var(--console-layers-bar-height); + max-height: var(--console-layers-bar-height); + border-bottom: solid black 1px; +} + +.ocd-designer-palette-provider>details>summary::marker, +.ocd-designer-palette-provider>details>summary::-webkit-details-marker { + display: none; +} + +.ocd-designer-palette-provider>details>summary:hover { + background-color: #f0f2f5; +} + +.ocd-designer-palette-provider>details>summary>div { + display: flex; + align-items: left; + background-repeat: no-repeat; + background-size: 20px; + background-position-x: 2px; + background-position-y: center; + height: 100%; + width: fit-content; + text-overflow: ellipsis; +} + +.ocd-designer-palette-provider>details>summary>div>label, +.ocd-designer-palette-provider>details>summary>div>span { + margin: auto; + text-overflow: ellipsis; + text-wrap: nowrap; +} + +.ocd-designer-palette-provider>details>summary:before { + border-radius: 5px; + content: '\25B9'; + color: #1d2733; + float: left; + margin: 2px; + padding: 0 0 0 0; + text-align: center; + width: 10px; +} + +.ocd-designer-palette-provider>details[open]>summary:before { + content: '\25BF'; +} + +.ocd-designer-palette-group { + display: block; + direction: ltr; + width: 100%; + padding: 5px 0 10px 0; + background-color: white; +} + +.ocd-designer-palette-group>details { + display: block; + width: 100%; + padding-left: 15px; +} + +.ocd-designer-palette-group>details>summary { + display: inline-block; + font-size: small; + width: 100%; + height: 24px; + border-bottom: solid black 1px; + padding-bottom: 2px; +} + +.ocd-designer-palette-group>details>summary::marker, +.ocd-designer-palette-group>details>summary::-webkit-details-marker { + display: none; +} + +.ocd-designer-palette-group>details>summary>div { + display: flex; + align-items: left; + background-repeat: no-repeat; + background-size: 20px; + background-position-x: 2px; + background-position-y: center; + height: 100%; + width: fit-content; + padding-left: 24px; +} + +.ocd-designer-palette-group>details>summary>div>label, +.ocd-designer-palette-group>details>summary>div>span { + margin: auto; +} + +.ocd-designer-palette-group>details>summary:before { + border-radius: 5px; + content: '\25B9'; + color: #1d2733; + float: left; + margin: 2px; + padding: 0 0 0 0; + text-align: center; + width: 10px; +} + +.ocd-designer-palette-group>details[open]>summary:before { + content: '\25BF'; +} + +.ocd-designer-palette-group-grid { + display: grid; + grid-template-columns: repeat(auto-fit, minmax(45px, 45px)); +} + +.ocd-designer-palette-group-verbose-grid { + display: grid; + grid-template-columns: repeat(auto-fit, minmax(80px, 80px)); +} + +.ocd-designer-palette-resource { + display: block; + background-repeat: no-repeat; + background-position-x: center; + background-size: 30px 30px; + font-size: small; + margin: 5px; + padding-top: 30px; + text-align: center; + border: 1px solid white; + justify-self: center; +} + +.ocd-designer-palette-group-grid .ocd-designer-palette-resource { + width: 35px; +} + +.ocd-designer-palette-group-verbose-grid .ocd-designer-palette-resource { + width: 80px; +} + +.ocd-designer-palette-resource:hover { + border: 1px dashed red; +} + +.ocd-designer-view { + display: flex; + flex-direction: column; + box-sizing: border-box; + min-height: 100%; + flex-grow: 1; +} + +.ocd-designer-canvas-layers-bar { + display: grid; + grid-template-columns: var(--console-toolbar-icon-width) auto var(--console-toolbar-icon-width); + height: var(--console-layers-bar-height); + min-height: var(--console-layers-bar-height); + max-height: var(--console-layers-bar-height); + width: 100%; + border-bottom: #312D2A solid 1px; + padding: 0; + margin: 0; + box-sizing: border-box; +} + +.ocd-designer-canvas-layers { + display: flex; + box-sizing: border-box; + margin: 0; + padding: 0; + height: var(--console-layers-bar-height); + min-height: var(--console-layers-bar-height); + max-height: var(--console-layers-bar-height); + width: 100%; + max-width: 100%; + border-bottom: #312D2A solid 1px; + border-left: #312D2A solid 1px; + border-right: #312D2A solid 1px; + overflow-x: auto; + overflow-y: hidden; + scrollbar-width: none; /* Firefox */ +} + +.ocd-designer-canvas-layers::-webkit-scrollbar { + display: none; /* Safari and Chrome */ +} + +.ocd-designer-canvas-layer { + display: flex; + flex-direction: row; + align-items: center; + border-right: #555555 solid 1px; + padding-right: 5px; + font-size: smaller; + box-sizing: border-box; + height: var(--console-layers-bar-height); + max-height: var(--console-layers-bar-height); +} + +.ocd-designer-canvas-layer > label, +.ocd-designer-canvas-layer > span { + padding: 0 5px; + font-weight: bolder; + text-wrap: nowrap; +} + +.ocd-designer-canvas-layer:hover { + box-shadow: 0 0 5px #1d2733; +} + +.ocd-layer-selected { + background-color: #d1d1d4; +} + +.ocd-layer-selected input { + font-weight: bolder; +} + +.ocd-layer-visiblity-icon { + display: block; + height: var(--console-layers-bar-height); + width: var(--console-layers-bar-height); + background-position: center; + background-repeat: no-repeat; + background-size: 13px; +} + +.ocd-layer-icon { + display: block; + height: var(--console-layers-bar-height); + width: var(--console-layers-bar-height); + background-position: center; + background-repeat: no-repeat; + background-size: 15px; +} + +.ocd-canvas-layer-name { + display: block; + margin: auto; + padding-left: var(--console-layers-bar-height); + max-height: var(--console-layers-bar-height); + background-repeat: no-repeat; + background-position-x: left; + background-position-y: center; + background-size: 20px; + flex-grow: 1; +} + +.ocd-canvas-layer-name > input, .ocd-canvas-page-name > input { + display: block; + text-overflow: ellipsis; + margin: 0; + padding: 0; + border: none; + box-sizing: border-box; + background-color: inherit; +} + +.ocd-designer-canvas-pages-bar { + display: grid; + grid-template-columns: var(--console-toolbar-icon-width) auto var(--console-toolbar-icon-width); + width: 100%; + border-top: #312D2A solid 1px; + padding: 0; + margin: 0; + box-sizing: border-box; +} + +.ocd-designer-canvas-pages { + display: flex; + box-sizing: border-box; + margin: 0; + padding: 0; + height: var(--console-pages-bar-height); + min-height: var(--console-pages-bar-height); + max-height: var(--console-pages-bar-height); + width: 100%; + max-width: 100%; + border-left: #312D2A solid 1px; + border-right: #312D2A solid 1px; + overflow-x: auto; + scrollbar-width: none; /* Firefox */ +} + +.ocd-designer-canvas-pages::-webkit-scrollbar { + display: none; /* Safari and Chrome */ +} + +.ocd-designer-canvas-page { + display: flex; + flex-direction: row; + align-items: center; + border-right: #555555 solid 1px; + padding-left: 5px; + padding-right: 5px; + font-size: smaller; + white-space: nowrap; +} + +.ocd-designer-canvas-page:hover { + box-shadow: 0 0 5px #1d2733; +} + +.ocd-canvas-page-name { + display: block; + margin: auto; + max-height: var(--console-pages-bar-height); + flex-grow: 1; +} + +.ocd-page-selected { + background-color: #d1d1d4; +} + +.ocd-page-selected span { + font-weight: bolder; +} + +.ocd-designer-canvas { + display: block; + box-sizing: border-box; + flex-grow: 1; + position: relative; + overflow: auto; +} + +.ocd-designer-canvas-svg { + fill: white; +} + +/* +** SVG Designer Canvas +*/ + +.ocd-svg-resize { + fill: purple; + opacity: 0.1; +} + +.ocd-svg-resize-point { + fill: purple; +} + +.ocd-svg-container-ew-resize { + stroke-width: 3px; + stroke: red; + stroke-opacity: 1; + fill: none; + pointer-events: all; +} + +.ocd-svg-container-ew-resize:hover { + cursor: ew-resize; +} + +.ocd-svg-container-ns-resize { + stroke-width: 3px; + stroke: black; + stroke-opacity: 0.01; + fill: none; + pointer-events: all; +} + +.ocd-svg-container-ns-resize:hover { + cursor: ns-resize; +} + +.ocd-svg-drag-ghost { + opacity: 0.4; + pointer-events: none; +} + +.ocd-svg-context-menu { + height: 18em; + width: 12em; +} + +.ocd-svg-context-menu > div { + border-radius: 5px; + padding: 0; + margin: 0; + box-sizing: border-box; + vertical-align: top; +} + +.ocd-svg-context-menu-item a:hover { + background-color: #f2f2f2; + box-shadow: 0 0 5px #1d2733; +} + + + +.ocd-context-menu-div { + position: relative; +} + +.ocd-context-menu { + list-style: none; + list-style-type: none; + box-shadow: 0 10px 15px -3px rgba(46, 41, 51, 0.08), + 0 4px 6px -2px rgba(71, 63, 79, 0.16); + font-size: 0.875rem; + z-index: 9999; + min-width: 10rem; + padding: 0.5rem 0; + margin: 0; + background-color: #f2f7f7; + border-radius: 0.5rem; + border: 1px solid #d1d1d4; +} + +.ocd-svg-context-menu-item > a { + display: block; + padding: 0 10px 0 10px; + font-size: inherit; + color: inherit; + text-decoration: none; + text-align: left; +} + + + + +/* +** Documentation View +*/ + +.ocd-documentation-view { + display: flex; + flex-direction: column; + height: 100%; + max-height: 100%; +} + +.ocd-documentation-entry { + display: block; + width: 100%; + height: 100%; + overflow-y: scroll; + margin: 2px; +} + +.ocd-documentation-entry > textarea { + font-family: 'Courier New', Courier, monospace; + display: block; + box-sizing: border-box; + width: 100%; + height: 100%; + min-height: 100%; + resize: none; + border: none; + padding: 5px; +} + +.ocd-documentation-preview { + display: block; + width: 100%; + height: 100%; + overflow-y: scroll; + padding: 5px; +} + + + + + +/* +** Validation View +*/ + +.ocd-validation-view { + display: block; + width: 100%; + max-width: 100%; + height: 100%; + max-height: 100%; + padding-right: 1em; + box-sizing: border-box; + overflow-y: scroll; + overflow-x: hidden; +} + + + + + +/* +** Markdown View +*/ + +.ocd-markdown-view { + display: flex; + flex-direction: column; + height: 100%; + max-height: 100%; +} + +table { + border-spacing: 0; + border-collapse: collapse; + display: block; + margin-top: 0; + margin-bottom: 16px; + width: max-content; + max-width: 100%; + overflow: auto; + } + + tr { + background-color: #ffffff; + border-top: 1px solid hsla(210, 18%, 87%, 1); + } + + tr:nth-child(2n) { + background-color: #f6f8fa; + } + + td, + th { + padding: 6px 13px; + border: 1px solid #d0d7de; + } + + th { + font-weight: 600; + } + + + + + +/* +** Terraform View +*/ + +.ocd-terraform-view { + display: flex; + flex-direction: column; + max-height: 100%; +} + +.ocd-selected-terraform-content { + display: block; + overflow: auto; + width: 100%; + flex-grow: 1; +} + +.ocd-selected-terraform-content > pre { + max-height: 100%; + max-width: 100%; + margin: 5px; + word-wrap: normal; + text-wrap: pretty; +} + + + + +/* +** Tabular View +*/ + +.ocd-tabular-view { + display: flex; + flex-direction: column; + height: 100%; + max-height: 100%; +} + +.ocd-selected-tabular-content { + display: block; + overflow: auto; + width: 100%; + flex-grow: 1; +} + +.ocd-tabular-content { + width: 100%; + min-width: 100%; +} + +.ocd-tabular-list-header { + font-weight: bolder; + font-size: smaller; +} + +.ocd-tabular-list-header > .tr { + background-color: var(--tabular-header-background-colour); +} + +.ocd-tabular-list-header .th { + border-bottom: var(--tabular-line-colour) solid 1px; + border-right: var(--tabular-line-colour) solid 1px; + padding: 2px; + text-align: center; + vertical-align: middle; +} + +.ocd-tabular-list-header .th:first-child { + text-align: center; + padding-left: 0; + border-left: var(--tabular-line-colour) solid 1px; + width: 40px; +} + +.ocd-tabular-list-body { + font-size: smaller; +} + +.ocd-tabular-list-body > .tr:nth-child(odd) { + background-color: var(--tabular-body-odd-background-colour); +} + +.ocd-tabular-list-body > .tr:nth-child(even) { + background-color: var(--tabular-body-even-background-colour); +} + +.ocd-tabular-list-body .td { + border-bottom: var(--tabular-line-colour) solid 1px; + border-right: var(--tabular-line-colour) solid 1px; + padding: 2px; +} + +.ocd-tabular-list-body .td:first-child { + text-align: center; + padding-left: 0; + border-left: var(--tabular-line-colour) solid 1px; +} + + + + +/* +** Library View +*/ + +.ocd-library-view { + display: flex; + flex-direction: column; + height: 100%; + max-height: 100%; +} + +.ocd-selected-library-content { + display: block; + overflow: auto; + width: 100%; + flex-grow: 1; + background-color: #5c85d6; +} + +.ocd-library-content { + display: block; + width: 100%; + min-width: 100%; + height: 100%; + padding: 5px; + overflow-y: scroll; +} + +.ocd-library-design { + float: left; + border: 1px solid black; + border-radius: 5px; + margin: 15px; + height: var(--library-design-height); + width: var(--library-design-width); + max-height: var(--library-design-height); + max-width: var(--library-design-width); + background-origin: padding-box; + background-repeat: no-repeat; + background-clip: padding-box; + background-size: var(--library-design-background-size); + background-color: var(--library-design-background-colour); +} + +.ocd-library-design-title { + font-weight: bolder; + margin: 2px; + padding-left: var(--library-design-background-size); + height: var(--library-design-background-size); +} + +.ocd-library-design-description { + font-style: italic; + margin: 2px; +} + + + + +/* +** Variables View +*/ + +.ocd-variables-view { + display: flex; + flex-direction: column; + height: 100%; + max-height: 100%; +} + +.ocd-variables-table { + overflow: auto; + width: 100%; + flex-grow: 1; +} + +.ocd-variables-list-header { + min-width: 100%; + font-weight: bolder; + font-size: smaller; +} + +.ocd-variables-list-header > .tr { + background-color: var(--variables-header-background-colour); +} + +.ocd-variables-list-header .th { + border-top: var(--variables-line-colour) solid 1px; + border-bottom: var(--variables-line-colour) solid 1px; + border-right: var(--variables-line-colour) solid 1px; + padding: 2px; + text-align: center; +} + +.ocd-variables-list-header .th:first-child { + padding-left: 0; + border-left: var(--tabular-line-colour) solid 1px; + width: 20rem; +} + +.ocd-variables-list-body { + font-size: smaller; +} + +.ocd-variables-list-body > .tr:nth-child(odd) { + background-color: var(--tabular-body-odd-background-colour); +} + +.ocd-variables-list-body > .tr:nth-child(even) { + background-color: var(--tabular-body-even-background-colour); +} + +.ocd-variables-list-body .td { + border-bottom: var(--tabular-line-colour) solid 1px; + border-right: var(--tabular-line-colour) solid 1px; + padding: 2px; +} + +.ocd-variables-list-body .td:first-child { + padding-left: 0; + border-left: var(--tabular-line-colour) solid 1px; +} + +.ocd-variables-list-body input { + min-width: 100%; + box-sizing: border-box; +} + + + + +/* +** Tags View +*/ + +.ocd-common-tags-view { + display: flex; + flex-direction: column; + height: 100%; + max-height: 100%; +} + +.ocd-tags-table { + overflow: auto; + width: 100%; + flex-grow: 1; +} + +.ocd-tags-list-header { + min-width: 100%; + font-weight: bolder; + font-size: smaller; +} + +.ocd-tags-list-header > .tr { + background-color: var(--variables-header-background-colour); +} + +.ocd-tags-list-header .th { + border-top: var(--variables-line-colour) solid 1px; + border-bottom: var(--variables-line-colour) solid 1px; + border-right: var(--variables-line-colour) solid 1px; + padding: 2px; + text-align: center; +} + +.ocd-tags-list-header .th:first-child { + padding-left: 0; + border-left: var(--tabular-line-colour) solid 1px; + width: 10rem; +} + +.ocd-tags-list-body { + font-size: smaller; +} + +.ocd-tags-list-body > .tr:nth-child(odd) { + background-color: var(--tabular-body-odd-background-colour); +} + +.ocd-tags-list-body > .tr:nth-child(even) { + background-color: var(--tabular-body-even-background-colour); +} + +.ocd-tags-list-body .td { + border-bottom: var(--tabular-line-colour) solid 1px; + border-right: var(--tabular-line-colour) solid 1px; + padding: 2px; +} + +.ocd-tags-list-body .td:first-child { + padding-left: 0; + border-left: var(--tabular-line-colour) solid 1px; +} + +.ocd-tags-list-body input { + min-width: 100%; + box-sizing: border-box; +} + + + + + + +/* +** Properties +*/ + +.ocd-radio-buttons-vertical { + display: grid; + grid-auto-flow: row; +} + +.action-button-background { + background-position: center; + background-repeat: no-repeat; + background-size: 1em; + width: 2em; + height: 1em; +} + +.ocd-summary-row { + display: grid; + grid-template-columns: auto 2em; + border: none; +} + +.ocd-designer-properties, .ocd-designer-right-panel { + display: flex; + flex-direction: column; + overflow-x: hidden; + overflow-y: hidden; + box-sizing: border-box; + width: var(--console-properties-width); + min-width: var(--console-properties-width); + min-height: 100%; + border-left: #555555 1px solid; +} + +.ocd-properties-header { + display: block; + box-sizing: border-box; + width: 100%; + padding: 10px 5px; + border-bottom: 1px solid #d1d1d4; +} + +.property-editor-title { + display: block; + box-sizing: border-box; + padding-left: 25px; + width: 100%; + vertical-align: middle; + background-position-x: left; + background-position-y: center; + background-repeat: no-repeat; + background-size: 20px 20px; + font-weight: bolder; +} + +.heading-background { + background-position: right center; + background-repeat: no-repeat; + background-size: 20px; + margin-right: 1em; +} + +.ocd-properties-panel { + display: block; + box-sizing: border-box; + flex-grow: 1; + width: 100%; + overflow-y: scroll; + overflow-x: hidden; +} + +.ocd-properties-documentation-panel { + display: grid; + grid-template-rows: var(--console-layers-bar-height) auto; +} + +.ocd-properties-documentation-panel > textarea { + font-family: 'Courier New', Courier, monospace; + display: block; + box-sizing: border-box; + width: 100%; + height: 100%; + resize: none; + border: none; + padding: 5px; +} + +.ocd-properties-documentation-preview-bar { + border-bottom: #312D2A solid 1px; + font-size: smaller; + margin-top: auto; + margin-bottom: auto; + padding-bottom: 2px; +} + +.ocd-properties-documentation-preview { + display: block; + width: 100%; + height: 100%; + overflow-y: scroll; + padding-left: 5px; +} + +/* Properties Arragement Panel */ +.ocd-properties-arrangement-panel { + display: flex; + flex-direction: column; + font-size: smaller; +} + +.ocd-arrangement-z-positioning { + display: grid; + grid-template-columns: auto auto; + border-bottom: 1px solid #d1d1d4; + margin: 5px 0 5px 0; + padding: 5px; +} + +.ocd-arrangement-z-positioning > div { + display: flex; + flex-direction: row; + align-items: center; + border: 1px solid #d1d1d4; + border-radius: 0.5rem; + margin: 2px; + padding: 2px; +} + +.ocd-arrangement-z-positioning > div:hover { + background-color: #d1d1d4; +} + +.ocd-arrangement-z-positioning > div > span { + margin: auto; +} + +.ocd-arrangement-size { + display: grid; + grid-template-columns: 10em auto auto; + border-bottom: 1px solid #d1d1d4; + margin: 5px 0 5px 0; + padding: 5px; +} + +.ocd-arrangement-size > div { + display: block; + margin: 2px; + padding: 2px; +} + +.ocd-arrangement-size > div > span { + opacity: 0.5; +} + +.ocd-arrangement-xy-positioning { + display: grid; + grid-template-columns: 10em auto auto; + border-bottom: 1px solid #d1d1d4; + margin: 5px 0 5px 0; + padding: 5px; +} + +.ocd-arrangement-xy-positioning > div { + display: block; + margin: 2px; + padding: 2px; +} + +.ocd-arrangement-xy-positioning > div > span { + opacity: 0.5; +} + +/* Properties Style Panel */ +.ocd-properties-style-panel { + display: flex; + flex-direction: column; + font-size: smaller; +} + +.ocd-style-fill { + display: grid; + grid-template-columns: auto auto; + column-gap: 15px; + row-gap: 5px; + min-height: 40px; + border-bottom: 1px solid #d1d1d4; + margin: 5px 0 5px 0; + padding: 5px; +} + +.ocd-style-fill > div { + margin-top: auto; + margin-bottom: auto; +} + +.ocd-style-stroke { + display: grid; + grid-template-columns: auto auto; + column-gap: 15px; + row-gap: 5px; + min-height: 40px; + border-bottom: 1px solid #d1d1d4; + margin: 5px 0 5px 0; + padding: 5px; +} + +.ocd-style-stroke input[type='number'] { + text-align: right; +} + +.ocd-style-stroke > div { + margin-top: auto; + margin-bottom: auto; +} + +.ocd-stroke-dasharray-radio { + border: solid 1px #161513; + border-radius: 5px; + width: 110px; + padding: 2px; +} + +.ocd-style-stroke-dasharray { + display: inline-flex; + align-items: center; + background-repeat: no-repeat; + background-position-x: 10px; + background-position-y: center; + background-size: 100px 2px; + width: 110px; + height: 20px; + padding: 0; + margin-top: auto; + margin-bottom: auto; +} + +.ocd-style-stroke-dasharray > input[type='radio'] { + margin: 0 5px 0 0; +} + +.ocd-style-stroke-dasharray-1-1 { + background-image: url("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNTAiIGhlaWdodD0iMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cGF0aCBkPSJNNSAwaDM1IiBzdHJva2U9IiMxNjE1MTMiIHN0cm9rZS1kYXNoYXJyYXk9IjEgMSIvPjwvc3ZnPg=="); +} + +.ocd-style-stroke-dasharray-2-2 { + background-image: url("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNTAiIGhlaWdodD0iMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cGF0aCBkPSJNNSAwaDM1IiBzdHJva2U9IiMxNjE1MTMiIHN0cm9rZS1kYXNoYXJyYXk9IjIgMiIvPjwvc3ZnPg=="); +} + +.ocd-style-stroke-dasharray-3-3 { + background-image: url("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNTAiIGhlaWdodD0iMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cGF0aCBkPSJNNSAwaDM1IiBzdHJva2U9IiMxNjE1MTMiIHN0cm9rZS1kYXNoYXJyYXk9IjMgMyIvPjwvc3ZnPg=="); +} + +.ocd-style-stroke-dasharray-3-2 { + background-image: url("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNTAiIGhlaWdodD0iMyIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cGF0aCBkPSJNNSAxaDM1IiBzdHJva2U9IiMxNjE1MTMiIHN0cm9rZS1kYXNoYXJyYXk9IjMgMiIvPjwvc3ZnPg=="); +} + +.ocd-style-stroke-dasharray-3-2-1 { + background-image: url("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNTAiIGhlaWdodD0iMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cGF0aCBkPSJNNSAwaDM1IiBzdHJva2U9IiMxNjE1MTMiIHN0cm9rZS1kYXNoYXJyYXk9IjMgMiAxIi8+PC9zdmc+"); +} + +.ocd-style-stroke-dasharray-3-1-2-1 { + background-image: url("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNTAiIGhlaWdodD0iMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cGF0aCBkPSJNNSAwaDM1IiBzdHJva2U9IiMxNjE1MTMiIHN0cm9rZS1kYXNoYXJyYXk9IjMgMSAyIDIiLz48L3N2Zz4="); +} + +.ocd-style-stroke-dasharray-none { + background-image: url("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNTAiIGhlaWdodD0iMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cGF0aCBkPSJNNSAwaDM1IiBzdHJva2U9IiMxNjE1MTMiLz48L3N2Zz4="); +} + +.ocd-style-stroke-width { + display: block; + vertical-align: top; + height: 100%; + padding-right: 10px; +} + +.ocd-style-stroke-width > input[type='number'] { + margin-left: auto; + width: 5em; +} + +.ocd-style-stroke-width > span { + margin-top: auto; + margin-bottom: auto; + margin-left: 2px; +} + +.ocd-colour-picker { + position: relative; + height: 100% +} + +.ocd-colour-picker-swatch { + width: 28px; + height: 28px; + border-radius: 8px; + border: 3px solid #fff; + box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.1), inset 0 0 0 1px rgba(0, 0, 0, 0.1); + cursor: pointer; +} + +.ocd-colour-picker-popup { + position: absolute; + top: calc(100% + 2px); + left: 0; + border-radius: 9px; + box-shadow: 0 6px 12px rgba(0, 0, 0, 0.15); + z-index: 1000; +} + +.ocd-property-row { + box-sizing: border-box; + margin: 1px 3px 1px 2px; + padding: 1px 3px 1px 2px; + width: 100%; +} + +.ocd-simple-property-row { + display: grid; + grid-template-columns: 150px auto; + border: 1px solid lightgray; +} + +.ocd-property-row label, +.ocd-property-row span { + font-size: smaller; +} + +.ocd-property-row div > input[type="text"], input[type="email"], input[type="password"], input[type="range"], input[type="number"], select { + box-sizing: border-box; + width: 100%; + margin: 1px; +} + +.ocd-property-row > div { + box-sizing: content-box; + padding: 0 5px 0 5px; +} + +.ocd-property-row > div:first-child { + border-right: 1px solid lightgray; + text-overflow: ellipsis; +} + +.ocd-property-row > div:first-child > label, +.ocd-property-row > div:first-child > span { + font-weight: bolder; +} + +/* Properties Validation */ +.ocd-validation-tab { + background-position: right; + background-repeat: no-repeat; + background-size: 20px; + padding-right: 20px; +} + +.ocd-validation-results { + margin-right: 1em; +} + +.ocd-validation-results .ocd-details-body { + padding-right: 1em; +} + +.ocd-validation-result { + border-radius: 5px; + border: grey 1px solid; + width: 100%; + margin: 5px 25px 5px 5px; + box-sizing: border-box; +} + +.ocd-validation-error-result { + border-left-color: #cc0000; + border-left-width: 5px; + border-left-style: solid; + padding: 10px; + width: 100%; +} + +.ocd-validation-error-highlight { + fill: #cc0000; +} + +.ocd-validation-warning-result { + border-left-color: #ffcc00; + border-left-width: 5px; + border-left-style: solid; + padding: 10px; + width: 100%; +} + +.ocd-validation-warning-highlight { + fill: #ffcc00; +} + +.ocd-validation-information-result { + border-left-color: #5c85d6; + border-left-width: 5px; + border-left-style: solid; + padding: 10px; + width: 100%; +} + +.ocd-validation-result-title { + padding-left: 25px; + width: 100%; + height: 20px; + vertical-align: middle; + background-position-x: left; + background-position-y: center; + background-repeat: no-repeat; + background-size: 20px 20px; + color: darkgray; +} + +.ocd-validation-message { + word-wrap: normal; + width: 100%; + margin-top: 5px; +} + + + + + +/* +** Dialogs +*/ + +.ocd-query-dialog { + position: absolute; + left: 0; + top: 0; + margin: 0; + padding: 0; + box-sizing: border-box; + width: 100%; + height: 100%; + overflow: hidden; + background: rgba(0, 0, 0, 0.05); +} + +.ocd-query-dialog > div { + position: absolute; + left: 50%; + top: 50%; + transform: translate(-50%, -50%); + display: flex; + flex-direction: column; + box-sizing: border-box; + border: solid 2px var(--dialog-border-colour); + border-radius: 10px; + background-color: var(--dialog-background-colour); + padding: 5px; + height: 610px; + width: 600px; +} + +.ocd-reference-data-query-dialog { + position: absolute; + left: 0; + top: 0; + margin: 0; + padding: 0; + box-sizing: border-box; + width: 100%; + height: 100%; + overflow: hidden; + background: rgba(0, 0, 0, 0.05); +} + +.ocd-reference-data-query-dialog > div { + position: absolute; + left: 50%; + top: 50%; + transform: translate(-50%, -50%); + display: flex; + flex-direction: column; + box-sizing: border-box; + border: solid 2px var(--dialog-border-colour); + border-radius: 10px; + background-color: var(--dialog-background-colour); + padding: 5px; + height: 150px; + width: 600px; +} + +.ocd-dialog-title { + background-color: var(--dialog-title-background-colour); + color: var(--dialog-title-colour); + border-bottom: 1px solid #161513; + height: var(--console-titlebar-height); + text-align: center; +} + +.ocd-dialog-body { + flex-grow: 1; + background-color: var(--dialog-body-background-colour); + color: var(--dialog-body-colour); + padding: 10px; +} + +.ocd-dialog-body > div { + display: grid; + grid-template-columns: 150px 410px; + column-gap: 5px; + row-gap: 5px; +} + +.ocd-dialog-footer { + background-color: var(--dialog-footer-background-colour); + color: var(--dialog-footer-colour); + border-top: 1px solid #161513; + height: var(--console-titlebar-height); + padding: 2px; +} + +.ocd-dialog-footer > div { + display: grid; + grid-template-columns: auto auto; + column-gap: 15px; + row-gap: 5px; +} + +.ocd-compartment-picker { + display: inline-block; + border: 1px solid var(--dialog-input-border-colour); + padding: 2px; + box-sizing: border-box; + height: 410px; + width: 410px; + overflow-y: scroll; + overflow-x: hidden; +} + +.ocd-compartment-picker ul { + margin: 0; + padding: 0; + box-sizing: border-box; + align-items: center; + list-style: none; + text-decoration: none; +} + +.ocd-compartment-picker li > ul { + padding-left: 1em; +} + +.ocd-compartment-picker li > label, +.ocd-compartment-picker li > span { + font-family: var(--dialog-input-font-family); + font-size: var(--dialog-input-font-size); +} + +.ocd-compartment-picker li > label:hover, +.ocd-compartment-picker li > span:hover { + font-weight: bolder; +} + +.ocd-compartment-search { + margin-right: 5px; +} + +.ocd-compartment-search > input { + width: 100%; +} + +.ocd-compartment-hierarchy { + display: inline-block; + font-family: var(--dialog-input-font-family); + font-size: var(--dialog-input-font-size); +} + + + + + +/* +** Slide Positioning +*/ + +.ocd-slide-left { + transform: translateX(-100%); + transition: all 0.25s; +} + +.ocd-slide-right { + transform: translateX(100%); + transition: all 0.25s; +}`, + + 'oci-theme.css': String.raw`/* Copyright (c) 2020, Oracle and/or its affiliates. All rights reserved. */ +/* Licensed under the Universal Permissive License v 1.0 as shown at https://oss.oracle.com/licenses/upl. */ +/* +** Groups +*/ +.oci-cloud { + background-image: url("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMzIiIGhlaWdodD0iMzIiIHZpZXdCb3g9IjAgMCA3NCA1NCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48ZGVmcz48bGluZWFyR3JhZGllbnQgaWQ9InByZWZpeF9fYSIgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiIHgxPSI2MS4yOTUiIHkxPSIxMC45OTgiIHgyPSIuOTkzIiB5Mj0iNTMuNzY3Ij48c3RvcCBvZmZzZXQ9IjAiIHN0b3AtY29sb3I9IiM2ODk5ZDEiLz48c3RvcCBvZmZzZXQ9Ii43MjIiIHN0b3AtY29sb3I9IiNiN2Q1NTMiLz48L2xpbmVhckdyYWRpZW50PjxsaW5lYXJHcmFkaWVudCBpZD0icHJlZml4X19iIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgeDE9IjYyLjYyNiIgeTE9IjEyLjg3NSIgeDI9IjU5LjU2MiIgeTI9IjE1LjA0OCI+PHN0b3Agb2Zmc2V0PSIwIiBzdG9wLWNvbG9yPSIjNjg5OWQxIi8+PHN0b3Agb2Zmc2V0PSIuNzIyIiBzdG9wLWNvbG9yPSIjYjdkNTUzIi8+PC9saW5lYXJHcmFkaWVudD48bGluZWFyR3JhZGllbnQgaWQ9InByZWZpeF9fYyIgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiIHgxPSI2Mi44OTgiIHkxPSIxMy4yNTgiIHgyPSIyLjU5NiIgeTI9IjU2LjAyNiI+PHN0b3Agb2Zmc2V0PSIwIiBzdG9wLWNvbG9yPSIjNjg5OWQxIi8+PHN0b3Agb2Zmc2V0PSIuNzIyIiBzdG9wLWNvbG9yPSIjYjdkNTUzIi8+PC9saW5lYXJHcmFkaWVudD48bGluZWFyR3JhZGllbnQgaWQ9InByZWZpeF9fZCIgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiIHgxPSIxMC44MzIiIHkxPSIyMy40MjEiIHgyPSIxMC4yNTgiIHkyPSIyMy44MjgiPjxzdG9wIG9mZnNldD0iMCIgc3RvcC1jb2xvcj0iIzY4OTlkMSIvPjxzdG9wIG9mZnNldD0iLjcyMiIgc3RvcC1jb2xvcj0iI2I3ZDU1MyIvPjwvbGluZWFyR3JhZGllbnQ+PC9kZWZzPjxwYXRoIGQ9Ik00NC4zOCAyOC42NWwuMDQuMTJjLjAxLjAzLjAyLjA3LjA0LjExbC4xNy4zLS4xMy4yNi4xOS0uMTcuMjQuMTljLjA1LjAyLjA2LjAzLjA3LjAzbC4wNi4wMi40LjAzaC4xNmMuMDYgMCAuMTItLjAxLjE3LS4wMi4wNy0uMDEuMTMtLjAzLjE5LS4wNi4xMi0uMDUuMi0uMTIuMjgtLjIyTDYzLjEzIDcuNDFsLjQ3IDIuNDgtLjI0LjE0LjI1LS4wNSAyLjA0IDEzLjVjLjAyLjAzLjAzLjA1LjA1LjA3bC4wNi4wNi4wNi4wNi4xLjA0Yy4wMy4wMS4wNi4wMi4xLjAzLjA3LjAyLjEuMDMuMTIuMDNoLjRsLjEzLS4wNGMuMDgtLjAyLjE1LS4wMy4yMi0uMDYuMjgtLjExLjQ3LS4yOS41My0uNTIuMDItLjA2LjAzLS4xMS4wMy0uMTZsLjAyLS4wOS0uMDEtLjI3LS4wOC0xLjIuMjUtLjEtLjI2LjAzLTIuMTYtMTcuNTdjLS4wMi0uMDMtLjAzLS4wNS0uMDUtLjA3YS40MzUuNDM1IDAgMDEtLjA2LS4wN2wtLjEtLjFhLjU3Mi41NzIgMCAwMC0uMDgtLjA3bC4xMS0uMjUtLjE2LjItLjI0LS4xNmMtLjA0LS4wMi0uMDctLjA0LS4xMS0uMDUtLjA0LS4wMi0uMDctLjAzLS4xMS0uMDUtLjA0LS4wMS0uMDctLjAzLS4xLS4wM0w0OC40MyA1LjIxbC0uMS0uMjUuMDMuMjYtMy4xNy41OGMtLjI3LjA2LS4zOS4zMS0uNDQuNDYtLjAzLjA4LS4wNS4xNC0uMDYuMjF2LjE2YzAgLjA5LS4wMS4xMiAwIC4xNnYuMDdsLjAxLjA1Yy4wMS4wNy4wMi4xMi4wMy4xNi4wMS4wNC4wMi4wOC4wNC4xMi4wMS4wMy4wMi4wNy4wNC4xcy4wMy4wNy4wNS4xYy4wMi4wMy4wNC4wNS4wNi4wOC4wMi4wMy4wNC4wNS4wNi4wNy4wMi4wMi4wNS4wNC4wNy4wNS4wMy4wMi4wNi4wMy4wOS4wNC4wNC4wMi4wNy4wMy4xLjAzLjA0LjAxLjA4LjAxLjEzLjAxbC4wMi4yNi4wNS0uMjUgMS41My0uMDkuMDguMjUuMDEtLjI2IDcuNTktLjg5LjEzLjI1LS4wMy0uMjYgNi42NC0uNjUtMTYuNyAyMS41OWMtLjA4LjExLS4xNS4yMi0uMjEuMzQtLjA0LjA4LS4wNy4xNi0uMDguMjNhLjg4Ljg4IDAgMDAtLjAxLjMxYy0uMDIuMDctLjAxLjExLS4wMS4xNXoiIGZpbGw9InVybCgjcHJlZml4X19hKSIvPjxwYXRoIGQ9Ik03MS4xNCAzOC4xbC0uMDEtLjE3YzAtLjEzLS4wMS0uMjYtLjAxLS4zOXYtLjE3YzAtLjA3IDAtLjE0LS4wMS0uMjIgMC0uMDctLjAxLS4xNC0uMDItLjIxbC0uMDItLjE2LS4wMy0uMjktLjAyLS4yYy0uMDEtLjA4LS4wMS0uMTYtLjAyLS4yNGwtLjA1LS4zNWMtLjAxLS4xLS4wMy0uMTktLjA1LS4yOWwtLjAzLS4xOS0uMDMtLjJjLS4wMi0uMDctLjAzLS4xNC0uMDUtLjJsLS4wMy0uMTJjLS4wMy0uMS0uMDUtLjIxLS4wOC0uMzFsLS4wNC0uMTRjLS4wMS0uMDYtLjAzLS4xMi0uMDUtLjE4bC0uMDYtLjE1LS4wNS0uMTRjLS4wMy0uMS0uMDctLjE5LS4xLS4yOWwtLjA0LS4xMmEuODY1Ljg2NSAwIDAwLS4wNy0uMTdjLS4wMi0uMDUtLjA1LS4xMS0uMDgtLjE2bC0uMDUtLjFjLS4wNC0uMDktLjA4LS4xOC0uMTMtLjI3bC0uMDYtLjEyYy0uMDItLjA1LS4wNS0uMS0uMDctLjE1LS4wMy0uMDUtLjA1LS4xLS4wOC0uMTVsLS4wNi0uMTFjLS4wNS0uMDgtLjA5LS4xNy0uMTQtLjI1bC0uMDctLjEyYy0uMDMtLjA1LS4wNS0uMDktLjA4LS4xNGwtLjE2LS4yNGMtLjA1LS4wOC0uMS0uMTYtLjE2LS4yNGwtLjA3LS4xMWMtLjAzLS4wNC0uMDYtLjA5LS4wOS0uMTNsLS43LS44OWMtLjA1LS4wNi0uMS0uMTItLjE1LS4xN2wtLjM0LS4zOS4xMi0uMjUtLjE5LjE3Yy0uMDUtLjA2LS4xMS0uMTItLjE3LS4xN2wtLjQzLS40MmMtLjA0LS4wNC0uMDgtLjA3LS4xMi0uMTFsLS4wOS0uMDhjLS4wNy0uMDYtLjE0LS4xMy0uMjEtLjE5bC0uMDgtLjA3Yy0uMDQtLjA0LS4wOS0uMDgtLjEzLS4xMmwtLjExLS4xYy0uMDMtLjAzLS4wNy0uMDYtLjEtLjA5LS4wNC0uMDItLjEyLS4wNC0uMjEtLjA3LS4xLS4wMy0uMTktLjA2LS4yOS0uMDdsLS4wNy0uMDJjLS4wMi0uMDEtLjA0LS4wMS0uMDYtLjAxLS4wNi0uMDEtLjA5IDAtLjEzIDAtLjIyLjAxLS4zNi4wNC0uNDguMDlhLjg0OC44NDggMCAwMC0uNDcuNDdjLS4wNS4xMS0uMDcuMjQtLjA3LjQgMCAuMTEuMDEuMjEuMDQuMzEuMDIuMDkuMDUuMTcuMDkuMjYuMDMuMDguMDguMTYuMTIuMjQuMDQuMDcuMDkuMTQuMTUuMjFhMy4zMiAzLjMyIDAgMDAuMzYuMzdjLjA2LjA1LjEuMDkuMTMuMTNsLjU4LjU3Yy4wNS4wNC4wOS4wOS4xMy4xMy4wNC4wNC4wOC4wOS4xMi4xNGwuMDcuMDljLjA3LjA3LjEzLjE1LjE5LjIzbC4wNy4wOWMuMDQuMDUuMDguMDkuMTIuMTRsLjA0LjA1Yy4wNS4wNi4xLjEyLjE0LjE4LjA0LjA1LjA3LjEuMTEuMTVsLjA2LjA5Yy4wNi4wOC4xMi4xNi4xNy4yNWwuMDcuMWMuMDQuMDUuMDcuMS4xLjE1LjAzLjA2LjA3LjExLjEuMTdsLjA1LjA5Yy4wNC4wNy4wNy4xMy4xMS4ybC4wNy4xM2MuMDQuMDcuMDguMTQuMTEuMjFsLjA1LjA5Yy4wMy4wNi4wNy4xMy4wOS4xOS4wMy4wNi4wNS4xMi4wOC4xOGwuMDUuMTEuMTIuMy4wNS4xMWMuMDMuMDYuMDUuMTIuMDcuMThsLjA2LjIuMDQuMTNjLjAzLjA5LjA1LjE5LjA4LjI4bC4wNS4xNy4wNi4yYy4wMi4wNy4wMy4xNS4wNC4yMmwuMDIuMTNjLjAyLjA5LjAzLjE4LjA1LjI3bC4wNC4yMmMuMDEuMDcuMDMuMTUuMDMuMjMuMDEuMDkuMDIuMTkuMDIuMjlsLjAxLjFjLjAxLjEuMDEuMi4wMi4zMWwuMDEuMjNjLjAxLjA4LjAxLjE3LjAxLjI2di4wOGMwIC4wNyAwIC4xNC0uMDEuMjJsLS4wMS4xMmMtLjAxLjE4LS4wMS4zMS0uMDIuNDNsLS4wMy4zNi0uMDIuMTlhNS44NTIgNS44NTIgMCAwMS0uMTEuNzhsLS4wMi4wOWMtLjA0LjIxLS4wNi4zNi0uMS41Mi0uMDUuMTktLjEuMzktLjE2LjU4LS4wNy4yMi0uMTQuNDMtLjIyLjY0LS4xLjI2LS4yMS41MS0uMzQuNzYtLjIuMzktLjQuNzQtLjYzIDEuMDUtLjIyLjMxLS40NC41OC0uNjcuODItLjM1LjM4LS43Ni43NC0xLjI1IDEuMWExMC4xNCAxMC4xNCAwIDAxLTIuMDMgMS4yYy0uMjMuMTEtLjQ4LjIxLS43Mi4zLS4yNS4xLS40Ni4xOC0uNjcuMjVsLS4wOS4wM2MtLjA0LjAyLS4wOC4wMy0uMTIuMDUtLjA4LjAzLS4xNi4wNC0uMjMuMDYtLjA1LjAxLS4xLjAyLS4xNS4wNC0uMTkuMDUtLjM3LjEtLjU2LjE0LS4wNy4wMi0uMTQuMDMtLjIxLjA1YTMuNTg5IDMuNTg5IDAgMDEtLjY2LjEybC0uMTguMDJjLS4xNi4wMi0uMzIuMDUtLjQ4LjA3bC0uMTkuMDNjLS4xLjAxLS4xOS4wMy0uMjkuMDQtLjA5LjAxLS4xNy4wMS0uMjYuMDJsLS44LjA1Yy0uMDguMDEtLjE3LjAxLS4yNS4wMS0uMTQuMDEtLjI4LjAxLS40Mi4wMWwtMjAuNTMuMDF2LjEzbC0yMS4zMi0uMTRjLS4xMiAwLS4yMy0uMDEtLjM1LS4wMWwtLjE0LS4wMmMtLjA4IDAtLjE3IDAtLjI1LS4wMWwtLjIzLS4wMy0uMTQtLjAyYy0uMTMtLjAyLS4yNS0uMDMtLjM3LS4wNS0uMTItLjAyLS4yNC0uMDMtLjM2LS4wNi0uMDgtLjAyLS4xNy0uMDMtLjI1LS4wNWwtLjIyLS4wNWMtLjA3LS4wMS0uMTUtLjAzLS4yMi0uMDUtLjEtLjAzLS4yLS4wNi0uMy0uMDhsLS4zMy0uMS0uMTEtLjAzYy0uMDctLjAyLS4xNS0uMDQtLjIyLS4wNy0uMDYtLjAyLS4xMy0uMDUtLjE5LS4wN2wtLjExLS4wMy0uMy0uMTItLjEyLS4wNWMtLjA2LS4wMi0uMTItLjA0LS4xOC0uMDdzLS4xMS0uMDUtLjE3LS4wOGwtLjQ5LS4yNC0uMTgtLjA5Yy0uMDYtLjAzLS4xMS0uMDYtLjE3LS4wOWwtLjEtLjA2Yy0uMDktLjA1LS4xOC0uMS0uMjYtLjE1bC0uMDktLjA1Yy0uMDYtLjAzLS4xMi0uMDYtLjE3LS4xbC0uMjUtLjE2Yy0uMDgtLjA1LS4xNy0uMTEtLjI1LS4xNmwtLjA5LS4wNmMtLjA1LS4wMy0uMTEtLjA3LS4xNi0uMWwtLjA4LS4wNmMtLjAzLS4wMi0uMDYtLjA1LS4xLS4wOGwtLjA2LS4wNS0uMTUtLjEyLS4wOS0uMDdhMi44IDIuOCAwIDAxLS4yLS4xNmwtLjEyLS4xYy0uMDUtLjA0LS4xLS4wNy0uMTQtLjExbC0uMDgtLjA1Yy0uMDUtLjA0LS4xLS4wNy0uMTQtLjEyLS4wNC0uMDQtLjA4LS4wOC0uMTMtLjEybC0uMDgtLjA4Yy0uMDUtLjA0LS4wOS0uMDktLjEzLS4xM2wtLjA4LS4wOC0uMjEtLjIxLS4wOC0uMDhjLS4wNC0uMDQtLjA4LS4wOC0uMTItLjEzbC0uMDgtLjA4Yy0uMDQtLjA0LS4wOC0uMDktLjEyLS4xMy0uMDQtLjA1LS4wOC0uMDktLjExLS4xNGwtLjA3LS4wOWMtLjA1LS4wNi0uMDktLjExLS4xMy0uMTdsLS4zLS4zOS0uMTEtLjE0Yy0uMDQtLjA1LS4wNy0uMTEtLjEtLjE2bC0uMDYtLjA5Yy0uMDQtLjA1LS4wNy0uMTEtLjEtLjE2bC0uMDYtLjFjLS4wNS0uMDgtLjEtLjE3LS4xNi0uMjZsLS4wNi0uMWMtLjAzLS4wNS0uMDYtLjEtLjA5LS4xNmwtLjA0LS4wOGMtLjAzLS4wNi0uMDctLjEzLS4xLS4xOXMtLjA1LS4xMS0uMDgtLjE3bC0uMjMtLjUxYy0uMDMtLjA2LS4wNi0uMTItLjA4LS4xOGwtLjA1LS4xMmMtLjAzLS4wNi0uMDUtLjEyLS4wNy0uMTgtLjAyLS4wNi0uMDQtLjEzLS4wNi0uMTlMNCA0MC4xNmMtLjAzLS4wOC0uMDUtLjE2LS4wOC0uMjRsLS4wNi0uMTdjLS4wMi0uMDctLjA1LS4xNC0uMDctLjJsLS4wNC0uMTJjLS4wMi0uMDYtLjA0LS4xMy0uMDYtLjE5LS4wMi0uMDctLjAzLS4xNC0uMDUtLjIxbC0uMDMtLjEzYy0uMDItLjA5LS4wNC0uMTktLjA3LS4yOGwtLjA0LS4xN2MtLjAyLS4wNy0uMDMtLjE0LS4wNS0uMjJsLS4wMy0uMTNjLS4wMi0uMDctLjAzLS4xNC0uMDQtLjIybC0uMDMtLjIyLS4wMi0uMTVjLS4wMi0uMTItLjAzLS4yMy0uMDUtLjM1bC0uMDItLjE1LS4wMy0uMjMtLjAxLS4wOGMtLjAxLS4wNC0uMDEtLjA5LS4wMi0uMTMgMC0uMDMgMC0uMDctLjAxLS4xMS0uMDEtLjE0LS4wMS0uMjItLjAxLS4zTDMuMTcgMzZjLS4wMS0uMTMtLjAxLS4yNi0uMDItLjRsLS4wMS0uMTVjLS4wMS0uMDgtLjAxLS4xNi0uMDEtLjI0di0uNDFjMC0uMDkuMDEtLjE4LjAyLS4yN2wuMDEtLjE3LjAzLS40NC4wMS0uMTdjLjAxLS4wOS4wMS0uMTguMDItLjI3LjAxLS4xMS4wMy0uMjMuMDUtLjM0bC4wMy0uMTVjLjAyLS4xMy4wNS0uMjUuMDctLjM4bC4wNi0uMzJjLjAyLS4xMS4wNC0uMjIuMDctLjMzLjA0LS4xNy4wOS0uMzMuMTQtLjVsLjAyLS4wOGMuMDYtLjIuMTMtLjQuMi0uNjEuMDMtLjA5LjA1LS4xNi4wOC0uMjMuMDYtLjEyLjA5LS4yNC4xNC0uMzVsLjAzLS4wNmMuMTEtLjI3LjI0LS41Mi4zNi0uNzcuMTUtLjMuMzEtLjYuNS0uOTIuMy0uNS41OS0uOTIuODgtMS4yOS42LS43NiAxLjMyLTEuNDggMi4xNC0yLjE0LjUxLS40MS45OS0uNzYgMS40Ni0xLjA1LjMxLS4yLjY0LS4zOC45Ny0uNTZsLjA5LS4wNWMuMTUtLjA4LjMxLS4xNS40Ny0uMjJsLjQ0LS4yYy4xOC0uMDguMzUtLjE3LjUzLS4yNC4xNS0uMDYuMzEtLjEyLjQ2LS4xN2wuNDItLjE1Yy4xNC0uMDUuMjktLjExLjQzLS4xNmwuMTYuMjItLjA5LS4yNGMuNTYtLjIuODYtLjUxIDEuMDEtMS4wNWwuMDMtLjA5Yy4wMi0uMDYuMDQtLjEzLjA1LS4ybC4yOS0yLjA5LjA2LS4zMy4wNi0uMzNjLjAyLS4xMi4wNC0uMjMuMDYtLjM0LjAzLS4xMy4wNy0uMjcuMS0uNGwuMDgtLjMyYy4wMi0uMS4wNS0uMi4wOC0uMjlsLjAzLS4wOWMuMDctLjIuMTItLjMzLjE3LS40N2wuMTUtLjRjLjA2LS4xNy4xMi0uMzQuMTktLjUuMS0uMjUuMjEtLjUuMzMtLjc0LjEzLS4yOC4yNy0uNTYuNDItLjgzLjE3LS4zMi4zNi0uNjQuNjEtMS4wMi4zOS0uNjEuODQtMS4xOSAxLjMxLTEuNzMuMzEtLjM1LjY1LS42OSAxLTEgLjUxLS40NiAxLjA3LS44OCAxLjY3LTEuMjUuMzYtLjIyLjY2LS40MS45OS0uNTcuMjMtLjEyLjQ3LS4yMi43MS0uMzJsLjI3LS4xMmE0Ljk0IDQuOTQgMCAwMS44Ny0uMzJjLjA4LS4wMi4xNS0uMDQuMjMtLjA3LjE5LS4wNi4zOS0uMTIuNTktLjE4LjA4LS4wMi4xNS0uMDUuMjMtLjA3YTQuNTcgNC41NyAwIDAxLjcyLS4xN2wuMzEtLjA2Yy4xMi0uMDIuMjQtLjA1LjM2LS4wNy4xMS0uMDIuMjItLjAzLjMzLS4wNWwuMjktLjA0Yy4xMS0uMDIuMjMtLjAzLjM0LS4wNWwuMzEtLjAzLjI4LS4wMi4zMi0uMDNjLjExLS4wMS4yMS0uMDEuMzItLjAxaC4xMWMuMTgtLjAxLjM3LS4wMS41NS0uMDFoLjI4Yy4xMyAwIC4yNy4wMS40LjAybC4xNC4wMWMuMDggMCAuMTcuMDEuMjUuMDEuMDguMDEuMTYuMDIuMjQuMDJsLjIyLjAyLjI5LjAzYy4xMi4wMS4yNC4wMy4zNi4wNS4wOS4wMS4xOS4wMy4yOC4wNWwuMi4wM2MuMDcuMDEuMTUuMDIuMjIuMDQuMDcuMDEuMTQuMDMuMjEuMDVsLjEyLjAzYy4xMS4wMy4yMi4wNS4zMy4wOGwuMTEuMDMuMjIuMDYuMi4wNi4xMS4wNGMuMTQuMDQuMjMuMDcuMzEuMS4xMy4wNC4yMi4wNy4zMS4xMS4wNi4wMi4xMi4wNS4xOS4wN2wuMTguMDdjLjA3LjAzLjE1LjA2LjIyLjA5LjEzLjA1LjIxLjA5LjI5LjEzLjA2LjAzLjEzLjA2LjE5LjA5bC4wOS4wNGMuMTMuMDYuMi4xLjI4LjE0bC4yNy4xNGMuMDUuMDMuMTEuMDYuMTYuMDlsLjQ2LjI3Yy4wNS4wMy4xMS4wNi4xNi4xLjA1LjAzLjEuMDYuMTUuMWwuNDQuM2MuMDUuMDMuMS4wNy4xNS4xbC45My43MmMuMDUuMDQuMDkuMDguMTQuMTJsLjA4LjA3LjIyLjE5LjA4LjA3Yy4wNS4wNC4wOS4wOC4xNC4xMmwuMTIuMTIuNS41LjEzLS4xMi4xMS4zNGMuMDUuMDkuMS4xNS4xNS4yMmExLjI4OCAxLjI4OCAwIDAwLjM3LjI5Yy4wOS4wNC4xNi4wNy4yNC4wOS4xLjAyLjE4LjA0LjI3LjA0LjE4LS4wMS4zMi0uMDQuNDUtLjA5LjI5LS4xMi41My0uMzYuNjUtLjY1LjA1LS4xMy4wOC0uMjcuMDktLjQyIDAtLjExLS4wMS0uMi0uMDMtLjI5LS4wMi0uMDktLjA2LS4xNy0uMDktLjI1bC0uMDctLjEzYy0uMDItLjAyLS4wNS0uMDQtLjA2LS4wNy0uMDQtLjA2LS4xLS4xMS0uMTYtLjE3bC0uMDgtLjA4LS41NS0uNTMtLjUxLS40OWMtLjA0LS4wMy0uMDctLjA3LS4xMS0uMWwuMTEtLjI1LS4xNy4xOS0xLjk0LTEuNTMtLjEyLS4wOWMtLjA0LS4wMy0uMDgtLjA1LS4xMS0uMDgtLjA0LS4wMy0uMDgtLjA1LS4xMy0uMDhsLS43NS0uNDRjLS4wNC0uMDMtLjA5LS4wNS0uMTMtLjA4bC0uMjYtLjE0Yy0uMDUtLjAyLS4wOS0uMDUtLjE0LS4wN2wtLjgtLjM5Yy0uMDQtLjAyLS4wOS0uMDUtLjE0LS4wN2wtLjE1LS4wNi0uMTQtLjA1YTEuMjIgMS4yMiAwIDAxLS4xNy0uMDdsLS41My0uMTljLS4wNS0uMDItLjEtLjA0LS4xNi0uMDZsLS4yNS0uMDhjLS4xLS4wMy0uMTYtLjA1LS4yMi0uMDZsLS4xNC0uMDQtLjMxLS4wOS0uMTQtLjA0Yy0uMDYtLjAyLS4xMS0uMDMtLjE3LS4wNWwtLjA3LS4wMmMtLjA5LS4wMi0uMTctLjA1LS4yNS0uMDYtLjA2LS4wMS0uMTItLjAyLS4xOS0uMDRsLS4xNS0uMDNjLS4xMS0uMDItLjIyLS4wNC0uMzQtLjA2bC0uMTQtLjAzYy0uMDYtLjAxLS4xMy0uMDMtLjE5LS4wNGwtLjEtLjAyYy0uMDgtLjAxLS4xNy0uMDMtLjI1LS4wNC0uMDctLjAxLS4xMy0uMDEtLjItLjAybC0uMTYtLjAxYy0uMTItLjAxLS4yNC0uMDMtLjM2LS4wNGwtLjE2LS4wMmMtLjA3LS4wMS0uMTMtLjAyLS4yLS4wMmwtMS44OC0uMTVoLS43NGwtMS40Ni4yMy0uMzMuMDYtLjMyLjA2LS4zMi4wNi0uMTMtLjI0LjA2LjI1Yy0uMS4wMi0uMTkuMDUtLjI4LjA3bC0uMTkuMDVjLS4xOS4wNS0uMzcuMDktLjU1LjE1LS4yLjA2LS4zOS4xMi0uNTguMTgtLjIxLjA3LS40Mi4xNS0uNjIuMjItLjIzLjA5LS40NS4xOC0uNjguMjgtLjI2LjExLS41LjIyLS43My4zMy0uMy4xNS0uNTkuMzItLjg4LjQ4LS4zNy4yMS0uNzQuNDUtMS4xLjctMS4xNy44MS0yLjI2IDEuNzgtMy4yMyAyLjg4LS40LjQ1LS43OC45NC0xLjIgMS41NS0uMjUuMzctLjUuNzQtLjcyIDEuMTItLjE3LjI5LS4zNC41OS0uNDkuODlsLS4wMy4wNmMtLjEyLjI0LS4yNC40OC0uMzUuNzItLjA3LjE2LS4xNC4zMy0uMi40OWwtLjEzLjM0Yy0uMDcuMTctLjEzLjMzLS4xOS41LS4wNS4xNC0uMDkuMjgtLjE0LjQybC0uMTIuMzYtLjEyLjM5Yy0uMDMuMS0uMDUuMjEtLjA4LjMybC0uMDkuMzctLjA5LjM4Yy0uMDMuMTMtLjA2LjI3LS4wOC40MWwtLjAyLjA5LS4wOS40OS0uMDQuMjFjLS4wMi4wOS0uMDQuMTgtLjA1LjI4LS4xLjY4LS41Mi45My0uOTEgMS4wOWwtLjI0LjFjLS4yNC4xLS40Ny4yLS43LjMtLjI2LjEyLS41Mi4yNC0uNzcuMzctLjI5LjE1LS41OC4zLS44Ni40NmExNi43OTIgMTYuNzkyIDAgMDAtMi44NCAyLjA0bC0xLjI1IDEuMjVjLS41Mi41OC0uOTggMS4xNC0xLjM3IDEuNy0uMDIuMDItLjAzLjA1LS4wNC4wNy0uMDIuMDMtLjA0LjA3LS4wNi4xLS4xOS4yOC0uMzguNi0uNiAxLS4xNC4yNi0uMjcuNTMtLjQuOC0uMTEuMjMtLjIxLjQ3LS4zMS43LS4wOS4yMy0uMTcuNDMtLjI0LjY0LS4wNC4xMi0uMDguMjQtLjExLjM3bC0uMTIuNDFjLS4wNC4xMi0uMDcuMjQtLjExLjM2bC0uMTIuNTJjLS4wMi4xLS4wNC4xOS0uMDUuMjlsLS4wNi4zNC0uMDYuMzRjLS4wMS4wNy0uMDMuMTUtLjA0LjIyLS4wMy4wOS0uMDQuMTctLjA1LjI1bC0uMTUgMS4wOC4xMiAzLjA5LjA5LjYtLjI0LjE1LjI2LS4wNC4wNS4yM2MuMDEuMDcuMDMuMTQuMDQuMmwuMDMuMTNjLjAzLjEzLjA0LjIzLjA3LjMzbC4wMy4xNmMuMDEuMDYuMDIuMTIuMDQuMTguMDEuMDYuMDMuMTIuMDUuMThsLjEzLjQ0Yy4wNC4xNC4wNi4yMy4wOS4zMWwuMDQuMTVjLjAxLjA1LjAzLjExLjA1LjE2LjAyLjA1LjA0LjExLjA2LjE2bC4zMi44M2MuMDIuMDUuMDQuMTEuMDYuMTZsLjEzLjI3Yy4wMi4wNS4wNS4xLjA3LjE1bC4wNi4xMmMuMDQuMDkuMDkuMTguMTMuMjdsLjA2LjEzYy4wMi4wNS4wNS4xLjA3LjE0bC4xNC4yNmMuMDMuMDUuMDUuMDkuMDguMTNsLjQ0LjcyYy4wMy4wNS4wNi4wOS4wOS4xNC4wMy4wNC4wNS4wOC4wOC4xMWwuNTEuNjkuMDkuMTIuMTguMjFjLjAzLjA0LjA3LjA4LjExLjEybC4wOC4wOWMuMDYuMDcuMTIuMTQuMTkuMjFsLjM4LjQyYy4wMy4wMy4wNy4wNi4xLjA5bC42Mi41OGMuMDMuMDMuMDcuMDcuMTEuMWwuNzYuNjJjLjA0LjAzLjA4LjA3LjEyLjFsLjIzLjE2Yy4wNi4wNS4xMy4wOS4xOS4xM2wuNzcuNWMuMDguMDUuMTcuMS4yNS4xNWwxLjU5LjgxIDMuNTkgMS4yOGMuMDUuMDIuMTUuMDEuMjUuMDFoMS4wNGwxNy42Ni4wMWguNjFsMjQuODEtLjA2Yy4wOCAwIC4xNSAwIC4yMy0uMDEuMDggMCAuMTYtLjAxLjI0LS4wMmwuMTktLjAyLjI5LS4wMy4yMi0uMDJjLjEyLS4wMS4yNS0uMDIuMzctLjA0LjA3LS4wMS4xMy0uMDEuMi0uMDIuMDgtLjAxLjE2LS4wMS4yNC0uMDIuMDktLjAxLjE4LS4wMy4yNy0uMDUuMDctLjAyLjE1LS4wMy4yMi0uMDQuMTctLjAzLjMzLS4wNi40OS0uMDlsLjIxLS4wNGMuMDktLjAyLjE5LS4wMy4yOC0uMDUuMTItLjAzLjIzLS4wNi4zNS0uMWwuMi0uMDYuNTEtLjE1LjA3LS4wMmMuMDgtLjAzLjE2LS4wNS4yNS0uMDcuMTEtLjAzLjIyLS4wNi4zMy0uMS4yMS0uMDguNC0uMTUuNTktLjIzbC4wOC0uMDNjLjI0LS4xLjQ4LS4yMS43Mi0uMzIuMjctLjEzLjU0LS4yNi44LS40LjM2LS4xOS42OC0uMzguOTctLjU3IDEuMTEtLjcxIDIuMDItMS41MyAyLjgxLTIuNS4yNy0uMzQuNTMtLjcuNzctMS4wNy4xNy0uMjguMzItLjU3LjQ2LS44Ni4xMS0uMjMuMjEtLjQ3LjMxLS43bC4wNy0uMThjLjA2LS4xNi4xMy0uMzEuMTgtLjQ3LjA0LS4xMS4wNi0uMjMuMDktLjM0bC4wOS0uMzRjLjA0LS4xMy4wNy0uMjYuMS0uNGwuMDYtLjM1LjAyLS4xM2MuMDMtLjE1LjA1LS4zMS4wNy0uNDdsLjAzLS4xOGMuMDEtLjA5LjAzLS4xOS4wNC0uMjguMDEtLjA4LjAxLS4xNi4wMS0uMjRsLjAxLS4yNWMuMDEtLjEyLjAyLS4yMy4wMi0uMzVsLjAxLS4xN2MwLS4wOC4wMS0uMTYuMDEtLjI0LS4wNC0uMDYtLjA0LS4xNC0uMDUtLjIxeiIgZmlsbD0idXJsKCNwcmVmaXhfX2MpIi8+PC9zdmc+"); +} + +.oci-compute { + background-image: url("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMzIiIGhlaWdodD0iMzIiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGRlZnM+PGxpbmVhckdyYWRpZW50IHgxPSI5NS42OTIlIiB5MT0iNC4zMDglIiB4Mj0iMCUiIHkyPSIxMDAlIiBpZD0icHJlZml4X19hIj48c3RvcCBzdG9wLWNvbG9yPSIjNTNBMEZEIiBvZmZzZXQ9IjAlIi8+PHN0b3Agc3RvcC1jb2xvcj0iI0I0RUM1MSIgb2Zmc2V0PSIxMDAlIi8+PC9saW5lYXJHcmFkaWVudD48L2RlZnM+PHBhdGggZD0iTTMxLjMzMyAxMC42NjdhLjY2Ny42NjcgMCAwMDAtMS4zMzRoLTJWNi42NjdoMmEuNjY3LjY2NyAwIDAwMC0xLjMzNGgtMnYtLjY2NmMwLTEuMTAzLS44OTctMi0yLTJoLS42NjZ2LTJhLjY2Ny42NjcgMCAwMC0xLjMzNCAwdjJoLTIuNjY2di0yYS42NjcuNjY3IDAgMDAtMS4zMzQgMHYyaC0yLjY2NnYtMmEuNjY3LjY2NyAwIDAwLTEuMzM0IDB2MmgtMi42NjZ2LTJhLjY2Ny42NjcgMCAwMC0xLjMzNCAwdjJoLTIuNjY2di0yYS42NjcuNjY3IDAgMDAtMS4zMzQgMHYySDYuNjY3di0yYS42NjcuNjY3IDAgMDAtMS4zMzQgMHYyaC0uNjY2Yy0xLjEwMyAwLTIgLjg5Ny0yIDJ2LjY2NmgtMmEuNjY3LjY2NyAwIDAwMCAxLjMzNGgydjIuNjY2aC0yYS42NjcuNjY3IDAgMDAwIDEuMzM0aDJ2Mi42NjZoLTJhLjY2Ny42NjcgMCAwMDAgMS4zMzRoMnYyLjY2NmgtMmEuNjY3LjY2NyAwIDAwMCAxLjMzNGgydjIuNjY2aC0yYS42NjcuNjY3IDAgMDAwIDEuMzM0aDJ2Mi42NjZoLTJhLjY2Ny42NjcgMCAwMDAgMS4zMzRoMnYuNjY2YzAgMS4xMDMuODk3IDIgMiAyaC42NjZ2MmEuNjY3LjY2NyAwIDAwMS4zMzQgMHYtMmgyLjY2NnYyYS42NjcuNjY3IDAgMDAxLjMzNCAwdi0yaDIuNjY2djJhLjY2Ny42NjcgMCAwMDEuMzM0IDB2LTJoMi42NjZ2MmEuNjY3LjY2NyAwIDAwMS4zMzQgMHYtMmgyLjY2NnYyYS42NjcuNjY3IDAgMDAxLjMzNCAwdi0yaDIuNjY2djJhLjY2Ny42NjcgMCAwMDEuMzM0IDB2LTJoLjY2NmMxLjEwMyAwIDItLjg5NyAyLTJ2LS42NjZoMmEuNjY3LjY2NyAwIDAwMC0xLjMzNGgtMnYtMi42NjZoMmEuNjY3LjY2NyAwIDAwMC0xLjMzNGgtMnYtMi42NjZoMmEuNjY3LjY2NyAwIDAwMC0xLjMzNGgtMnYtMi42NjZoMmEuNjY3LjY2NyAwIDAwMC0xLjMzNGgtMnYtMi42NjZoMnpNMjggMjcuMzMzYzAgLjM2OC0uMy42NjctLjY2Ny42NjdINC42NjdBLjY2OC42NjggMCAwMTQgMjcuMzMzVjQuNjY3QzQgNC4yOTkgNC4zIDQgNC42NjcgNGgyMi42NjZjLjM2NyAwIC42NjcuMjk5LjY2Ny42Njd2MjIuNjY2ek05LjMzMyA4YTEuMzM0IDEuMzM0IDAgMTAtMi42NjcuMDAxQTEuMzM0IDEuMzM0IDAgMDA5LjMzMyA4em0xMS4zMzQgMi42NjdoLTkuMzM0YS42NjcuNjY3IDAgMDAtLjY2Ni42NjZ2OS4zMzRjMCAuMzY4LjI5OC42NjYuNjY2LjY2Nmg5LjMzNGEuNjY3LjY2NyAwIDAwLjY2Ni0uNjY2di05LjMzNGEuNjY3LjY2NyAwIDAwLS42NjYtLjY2NnpNMjAgMjBoLTh2LThoOHY4eiIgZmlsbD0idXJsKCNwcmVmaXhfX2EpIiBmaWxsLXJ1bGU9Im5vbnplcm8iLz48L3N2Zz4="); +} + +.oci-container { + background-image: url("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMzIiIGhlaWdodD0iMzIiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGRlZnM+PGxpbmVhckdyYWRpZW50IHgxPSI5NS42OTIlIiB5MT0iNC4zMDglIiB4Mj0iMCUiIHkyPSIxMDAlIiBpZD0icHJlZml4X19hIj48c3RvcCBzdG9wLWNvbG9yPSIjNTNBMEZEIiBvZmZzZXQ9IjAlIi8+PHN0b3Agc3RvcC1jb2xvcj0iI0I0RUM1MSIgb2Zmc2V0PSIxMDAlIi8+PC9saW5lYXJHcmFkaWVudD48L2RlZnM+PHBhdGggZD0iTTMxLjMzMyAxMC42NjdhLjY2Ny42NjcgMCAwMDAtMS4zMzRoLTJWNi42NjdoMmEuNjY3LjY2NyAwIDAwMC0xLjMzNGgtMnYtLjY2NmMwLTEuMTAzLS44OTctMi0yLTJoLS42NjZ2LTJhLjY2Ny42NjcgMCAwMC0xLjMzNCAwdjJoLTIuNjY2di0yYS42NjcuNjY3IDAgMDAtMS4zMzQgMHYyaC0yLjY2NnYtMmEuNjY3LjY2NyAwIDAwLTEuMzM0IDB2MmgtMi42NjZ2LTJhLjY2Ny42NjcgMCAwMC0xLjMzNCAwdjJoLTIuNjY2di0yYS42NjcuNjY3IDAgMDAtMS4zMzQgMHYySDYuNjY3di0yYS42NjcuNjY3IDAgMDAtMS4zMzQgMHYyaC0uNjY2Yy0xLjEwMyAwLTIgLjg5Ny0yIDJ2LjY2NmgtMmEuNjY3LjY2NyAwIDAwMCAxLjMzNGgydjIuNjY2aC0yYS42NjcuNjY3IDAgMDAwIDEuMzM0aDJ2Mi42NjZoLTJhLjY2Ny42NjcgMCAwMDAgMS4zMzRoMnYyLjY2NmgtMmEuNjY3LjY2NyAwIDAwMCAxLjMzNGgydjIuNjY2aC0yYS42NjcuNjY3IDAgMDAwIDEuMzM0aDJ2Mi42NjZoLTJhLjY2Ny42NjcgMCAwMDAgMS4zMzRoMnYuNjY2YzAgMS4xMDMuODk3IDIgMiAyaC42NjZ2MmEuNjY3LjY2NyAwIDAwMS4zMzQgMHYtMmgyLjY2NnYyYS42NjcuNjY3IDAgMDAxLjMzNCAwdi0yaDIuNjY2djJhLjY2Ny42NjcgMCAwMDEuMzM0IDB2LTJoMi42NjZ2MmEuNjY3LjY2NyAwIDAwMS4zMzQgMHYtMmgyLjY2NnYyYS42NjcuNjY3IDAgMDAxLjMzNCAwdi0yaDIuNjY2djJhLjY2Ny42NjcgMCAwMDEuMzM0IDB2LTJoLjY2NmMxLjEwMyAwIDItLjg5NyAyLTJ2LS42NjZoMmEuNjY3LjY2NyAwIDAwMC0xLjMzNGgtMnYtMi42NjZoMmEuNjY3LjY2NyAwIDAwMC0xLjMzNGgtMnYtMi42NjZoMmEuNjY3LjY2NyAwIDAwMC0xLjMzNGgtMnYtMi42NjZoMmEuNjY3LjY2NyAwIDAwMC0xLjMzNGgtMnYtMi42NjZoMnpNMjggMjcuMzMzYzAgLjM2OC0uMy42NjctLjY2Ny42NjdINC42NjdBLjY2OC42NjggMCAwMTQgMjcuMzMzVjQuNjY3QzQgNC4yOTkgNC4zIDQgNC42NjcgNGgyMi42NjZjLjM2NyAwIC42NjcuMjk5LjY2Ny42Njd2MjIuNjY2ek05LjMzMyA4YTEuMzM0IDEuMzM0IDAgMTAtMi42NjcuMDAxQTEuMzM0IDEuMzM0IDAgMDA5LjMzMyA4em0xMS4zMzQgMi42NjdoLTkuMzM0YS42NjcuNjY3IDAgMDAtLjY2Ni42NjZ2OS4zMzRjMCAuMzY4LjI5OC42NjYuNjY2LjY2Nmg5LjMzNGEuNjY3LjY2NyAwIDAwLjY2Ni0uNjY2di05LjMzNGEuNjY3LjY2NyAwIDAwLS42NjYtLjY2NnpNMjAgMjBoLTh2LThoOHY4eiIgZmlsbD0idXJsKCNwcmVmaXhfX2EpIiBmaWxsLXJ1bGU9Im5vbnplcm8iLz48L3N2Zz4="); +} + +.oci-database { + background-image: url("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMzIiIGhlaWdodD0iMzIiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGRlZnM+PGxpbmVhckdyYWRpZW50IHgxPSI3Mi4zODklIiB5MT0iNC4zMDglIiB4Mj0iMjUuNSUiIHkyPSIxMDAlIiBpZD0icHJlZml4X19hIj48c3RvcCBzdG9wLWNvbG9yPSIjNTNBMEZEIiBvZmZzZXQ9IjAlIi8+PHN0b3Agc3RvcC1jb2xvcj0iI0I0RUM1MSIgb2Zmc2V0PSIxMDAlIi8+PC9saW5lYXJHcmFkaWVudD48L2RlZnM+PHBhdGggZD0iTTE2LjUgMUMxMS40MSAxIDYgMi4zMTUgNiA0Ljc1djIyLjVDNiAyOS42ODUgMTEuNDEgMzEgMTYuNSAzMVMyNyAyOS42ODUgMjcgMjcuMjVWNC43NUMyNyAyLjMxNSAyMS41OSAxIDE2LjUgMXptOS41ODcgMTguODk3YzAgMS4xMTMtMy42NDcgMi42NjYtOS41ODcgMi42NjYtNS45NCAwLTkuNTg3LTEuNTUzLTkuNTg3LTIuNjY2di01Ljc3MmMxLjg0MiAxLjMzMyA1Ljc5NyAyLjA0IDkuNTg3IDIuMDRzNy43NDUtLjcwNyA5LjU4Ny0yLjA0djUuNzcyem0wLTcuNWMwIDEuMTEzLTMuNjQ3IDIuNjY1LTkuNTg3IDIuNjY1LTUuOTQgMC05LjU4Ny0xLjU1Mi05LjU4Ny0yLjY2NVY2LjYyNWMxLjg0MiAxLjMzMyA1Ljc5NyAyLjA0IDkuNTg3IDIuMDRzNy43NDUtLjcwNyA5LjU4Ny0yLjA0djUuNzcyek0xNi41IDEuOTM3YzUuOTQgMCA5LjU4NyAxLjYzOCA5LjU4NyAyLjgxMyAwIDEuMTc1LTMuNjQ3IDIuODEzLTkuNTg3IDIuODEzLTUuOTQgMC05LjU4Ny0xLjYzOC05LjU4Ny0yLjgxMyAwLTEuMTc1IDMuNjQ3LTIuODEzIDkuNTg3LTIuODEzem0wIDI4LjEyNWMtNS45NCAwLTkuNTg3LTEuNTUyLTkuNTg3LTIuNjY1di01Ljc3MmMxLjg0MiAxLjMzMyA1Ljc5NyAyLjA0IDkuNTg3IDIuMDRzNy43NDUtLjcwNyA5LjU4Ny0yLjA0djUuNzcyYzAgMS4xMTMtMy42NDcgMi42NjYtOS41ODcgMi42NjZ6IiBmaWxsPSJ1cmwoI3ByZWZpeF9fYSkiIGZpbGwtcnVsZT0ibm9uemVybyIvPjwvc3ZnPg=="); +} + +.oci-hamburger { + background-image: url("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjQiIGhlaWdodD0iMjQiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPjxkZWZzPjxwYXRoIGQ9Ik0yMS41IDZoLTE5YS41LjUgMCAwMTAtMWgxOWEuNS41IDAgMDEwIDF6bTAgMTNoLTE5YS41LjUgMCAwMTAtMWgxOWEuNS41IDAgMDEwIDF6bTAtNi41aC0xOWEuNS41IDAgMDEwLTFoMTlhLjUuNSAwIDAxMCAxeiIgaWQ9InByZWZpeF9fYSIvPjwvZGVmcz48ZyBmaWxsPSJub25lIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiPjxtYXNrIGlkPSJwcmVmaXhfX2IiIGZpbGw9IiNmZmYiPjx1c2UgeGxpbms6aHJlZj0iI3ByZWZpeF9fYSIvPjwvbWFzaz48dXNlIGZpbGw9IiMwMDAiIGZpbGwtcnVsZT0ibm9uemVybyIgeGxpbms6aHJlZj0iI3ByZWZpeF9fYSIvPjxnIG1hc2s9InVybCgjcHJlZml4X19iKSIgZmlsbD0iI0ZGRiIgZmlsbC1ydWxlPSJub256ZXJvIj48cGF0aCBkPSJNMCAwaDI0djI0SDB6Ii8+PC9nPjwvZz48L3N2Zz4="); +} + +.oci-identity { + background-image: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCI+PGRlZnM+PGZpbHRlciBpZD0icHJlZml4X19hIj48ZmVDb2xvck1hdHJpeCBpbj0iU291cmNlR3JhcGhpYyIgdmFsdWVzPSIwIDAgMCAwIDAuMjIzNTI5IDAgMCAwIDAgMC43NzI1NDkgMCAwIDAgMCAwLjY1MDk4MCAwIDAgMCAxLjAwMDAwMCAwIi8+PC9maWx0ZXI+PC9kZWZzPjxnIGZpbHRlcj0idXJsKCNwcmVmaXhfX2EpIiBmaWxsPSJub25lIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiPjxwYXRoIHN0cm9rZT0iIzM5QzVBNiIgc3Ryb2tlLXdpZHRoPSIyIiBkPSJNOSAxMmwyIDIgNS01TTUgNmw3LTMgNyAzYy41IDMuNjY3LS4yIDExLjgtNyAxNS0yLjY2Ny0uODMzLTcuOC01LTctMTV6Ii8+PC9nPjwvc3ZnPg=="); +} + +.oci-network { + background-image: url("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMzUiIGhlaWdodD0iMzUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgYXJpYS1oaWRkZW49InRydWUiPjxkZWZzPjxsaW5lYXJHcmFkaWVudCB4MT0iOTUuNjkyJSIgeTE9IjQuMzA4JSIgeDI9IjAlIiB5Mj0iMTAwJSIgaWQ9InByZWZpeF9fYSI+PHN0b3Agc3RvcC1jb2xvcj0iIzUzQTBGRCIgb2Zmc2V0PSIwJSIvPjxzdG9wIHN0b3AtY29sb3I9IiNCNEVDNTEiIG9mZnNldD0iMTAwJSIvPjwvbGluZWFyR3JhZGllbnQ+PC9kZWZzPjxwYXRoIGQ9Ik0xNy45MjUgN3YxLjkzQTEwLjIzNCAxMC4yMzQgMCAwMTIyLjIxMiA4YzUuMzU5IDAgOS43MDMgNC4wNTUgOS43MDMgOS4wNTggMCAuNzU3LS4xIDEuNDkzLS4yODcgMi4xOTYgMS45NDQuNTAxIDMuMzcyIDIuMTY0IDMuMzcyIDQuMTM5di4zMTRDMzUgMjYuMDc3IDMyLjk0IDI4IDMwLjQgMjhIN3YyLjA1YTIuNSAyLjUgMCAxMS0xIDBWMjhINC42QzIuMDYgMjggMCAyNi4wNzggMCAyMy43MDd2LS4zMTRjMC0yLjI3IDEuODg4LTQuMTMgNC4yNzgtNC4yODNhNi40NDMgNi40NDMgMCAwMS0uMTgzLTEuNTI5YzAtMy43ODggMy4yOS02Ljg1OCA3LjM0Ny02Ljg1OCAxLjE0MyAwIDIuMjI2LjI0MyAzLjE5LjY3OGE5LjU3IDkuNTcgMCAwMTIuNDQyLTIuMDI5TDE3LjA3NSA3aC44NXpNNi41IDMxYTEuNSAxLjUgMCAxMDAgMyAxLjUgMS41IDAgMDAwLTN6bTguODctMTguOTZsLS40NjYuNTM4LS42NjItLjI5NmE2Ljc5MiA2Ljc5MiAwIDAwLTIuNzgtLjU4N2MtMy41MyAwLTYuMzggMi42NDMtNi4zOCA1Ljg5IDAgLjQ0NS4wNTIuODgzLjE1NyAxLjMwOGwuMjUzIDEuMDMzLTEuMTA4LjA3QzIuNDc5IDIwLjEyIDEgMjEuNTgzIDEgMjMuMzR2LjMxQzEgMjUuNDk1IDIuNjI0IDI3IDQuNjQxIDI3SDZ2LTVhMSAxIDAgMDEuODgzLS45OTNMNyAyMWg0di0zLjVhLjUuNSAwIDExMSAwVjIxaDUuMDc1bC0uMDAxLTEwLjQ2NmE4LjUyNCA4LjUyNCAwIDAwLTEuNzA1IDEuNTA1ek0yMi4xOTUgOWMtMS41MyAwLTIuOTkyLjM2NS00LjI3MiAxLjAzTDE3LjkyNSAyMUgyNHYxaC0ydjMuNWEuNS41IDAgMTEtMSAwVjIySDd2NWgyMy4zNTlDMzIuMzc2IDI3IDM0IDI1LjQ5NCAzNCAyMy42NXYtLjMxMWMwLTEuNTEtMS4wOTctMi44MjgtMi42NjMtMy4yMjhsLS45LS4yMy4yMzEtLjg2M2MuMTctLjYzMy4yNTctMS4yODYuMjU3LTEuOTUxIDAtNC40NS0zLjkwMi04LjA2Ny04LjcyOS04LjA2N3pNMjYuNSAxOWEyLjUgMi41IDAgMTEwIDUgMi41IDIuNSAwIDAxMC01em0wIDFhMS41IDEuNSAwIDEwMCAzIDEuNSAxLjUgMCAwMDAtM3ptLTktMjBhMy41IDMuNSAwIDExMCA3IDMuNSAzLjUgMCAwMTAtN3ptMCAxYTIuNSAyLjUgMCAxMDAgNSAyLjUgMi41IDAgMDAwLTV6IiBmaWxsPSJ1cmwoI3ByZWZpeF9fYSkiIGZpbGwtcnVsZT0ibm9uemVybyIvPjwvc3ZnPg=="); +} + +.oci-refresh { + background-image: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA0NzMuNjc3IDQ3My42NzciPjxnIGZpbGw9IiMzMTJEMkEiPjxwYXRoIGQ9Ik0zNzAuNDU3IDEzOC44OTNjLTMzLjk3LTQ4LjYzMy04OS43NS03Ni40NzgtMTQ5LjM2Ni02OS42NUMxNjMuNzMgNzUuODEgMTE3LjQzIDExMi45IDk0LjQ1IDE2NC40MmwtMjkuNTEzLS4wNzVjLTUuMTg3LS4wMTEtOS4wMTYgNS45OTEtNi4wOTkgMTAuNTY0bDUxLjczMyA4MS4xNmMyLjkwOSA0LjU3IDkuMjE4IDQuNDU4IDEyLjEyLS4wNDUgMTcuMzc4LTI2Ljk2NiAzNC43NTktNTMuOTM2IDUyLjE0MS04MC45MDIgMS44NzctMi45MTMgMS4yNDUtNS43MjktLjUxMi03LjY3NC0xLjA5Ni0xLjY1Ny0yLjkxMy0yLjgzOC01LjUxMi0yLjg0NmwtMjcuNDUyLS4wNjdjNDIuMjE2LTY3LjA4OCAxNDQuNjk1LTczLjIxIDE5Mi44MDEtNC4zMzggMTUuNDE1IDIyLjA1NyA1MS44NzIuOTkyIDM2LjMtMjEuMzA0ek00MTQuNDQ5IDI5Ny41NDVjLTE3LjI0My0yNy4wNTItMzQuNDk0LTU0LjEwOC01MS43NDEtODEuMTYtMi45MDktNC41Ny05LjIxOC00LjQ1OC0xMi4xMi4wNDUtMTcuMzc0IDI2Ljk2Ni0zNC43NTYgNTMuOTM2LTUyLjEzMyA4MC45MDItMS44ODEgMi45MTctMS4yNDUgNS43MzMuNTIgNy42ODEgMS4wOTIgMS42NTMgMi45MDkgMi44MzEgNS41MDUgMi44MzhsMjcuNDQ4LjA2N2MtNDIuMjIgNjcuMDgtMTQ0LjY5NSA3My4yMjgtMTkyLjc5NyA0LjM0Mi0xNS40MDctMjIuMDYtNTEuODYtLjk5NS0zNi4yOTMgMjEuMzA0IDMzLjk2MyA0OC42MzMgODkuNzQ2IDc2LjQ3NCAxNDkuMzU5IDY5LjY1IDU3LjM2MS02LjU3IDEwMy42NTctNDMuNjYzIDEyNi42NDQtOTUuMTggOS44MzUuMDI2IDE5LjY3NC4wNDkgMjkuNTEzLjA3NSA1LjE4My4wMTUgOS4wMTItNS45OTEgNi4wOTUtMTAuNTY0eiIvPjwvZz48L3N2Zz4="); +} + +.oci-storage { + background-image: url("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMzIiIGhlaWdodD0iMzIiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGRlZnM+PGxpbmVhckdyYWRpZW50IHgxPSI5NS42OTIlIiB5MT0iNC4zMDglIiB4Mj0iMCUiIHkyPSIxMDAlIiBpZD0icHJlZml4X19hIj48c3RvcCBzdG9wLWNvbG9yPSIjNTNBMEZEIiBvZmZzZXQ9IjAlIi8+PHN0b3Agc3RvcC1jb2xvcj0iI0I0RUM1MSIgb2Zmc2V0PSIxMDAlIi8+PC9saW5lYXJHcmFkaWVudD48L2RlZnM+PHBhdGggZD0iTTI5LjY5NSA3Ljk5M0wxNi44NjIgMS4wN2EuNTkuNTkgMCAwMC0uNTQtLjAwOWwtMTQgNi45MjNBLjU3Ny41NzcgMCAwMDIgOC41djE1YzAgLjIxMS4xMTcuNDA2LjMwNC41MDdsMTIuODM0IDYuOTIzYy4wMDcuMDAzLjAxNS4wMDIuMDIzLjAwNWEuNTczLjU3MyAwIDAwLjI1Ni4wNjVjLjA4OCAwIC4xNy0uMDIzLjI0NS0uMDU3LjAwNC0uMDAyLjAxIDAgLjAxNi0uMDAzbDE0LTYuOTIzQS41OC41OCAwIDAwMzAgMjMuNXYtMTVhLjU3NS41NzUgMCAwMC0uMzA1LS41MDd6bS0xNC4yNjcgNi43OGwtNS4xNjgtMi43OUwyMi45ODggNS42OWw1LjE2OSAyLjc5LTEyLjcyOSA2LjI5M3ptMS4xNDQtMTIuNTQ1bDUuMTY4IDIuNzg5TDkuMDEyIDExLjMxIDMuODQzIDguNTIzbDEyLjcyOS02LjI5NXpNMy4xNjcgOS40NzJsMTEuNjY2IDYuMjk0djEzLjY4NkwzLjE2NyAyMy4xNTdWOS40NzJ6TTE2IDI5LjQ5VjE1Ljc4bDEyLjgzMy02LjM0N3YxMy43MUwxNiAyOS40OXptLTQuOTcxLTEyLjQ3NmEuNTcyLjU3MiAwIDAxLjIzLjc4My41NzguNTc4IDAgMDEtLjUxLjMuNTc4LjU3OCAwIDAxLS4yNzktLjA3bC0zLjUtMS44ODlhLjU3My41NzMgMCAwMS0uMjMyLS43ODIuNTg3LjU4NyAwIDAxLjc5LS4yM2wzLjUgMS44ODh6IiBmaWxsPSJ1cmwoI3ByZWZpeF9fYSkiIGZpbGwtcnVsZT0ibm9uemVybyIvPjwvc3ZnPg=="); +} + +/* +** Resources +*/ +.oci-analytics-instance { + background-image: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA0OS4yIDQyIj48ZyBmaWxsPSIjZmZmIj48cGF0aCBkPSJNMTcuMyA0MS41di0xLjhsMi40LTEuMmguM2wuMS0uNWgtOC44VjI1SC41bC4xLTEuNmMuMy00IDIuNi03LjYgNi4yLTkuNC44LS40IDEuNC0xLjIgMS41LTIgLjYtMi44IDIuNS01LjIgNS4xLTYuNCAxLjEtLjUgMi4zLS43IDMuNi0uN2gxLjFjLjggMCAxLjUtLjMgMi0uOSAyLjEtMi4yIDUtMy41IDgtMy41IDQuMSAwIDcuOSAyLjMgOS43IDYgLjQuOCAxLjEgMS40IDIgMS42IDEuMi4zIDIuNC44IDMuNSAxLjUgNC45IDMuMSA2LjYgOS42IDMuOSAxNC43bC0uMi43aC04Ljl2MTNoLTguOGwuMS41aC41bDIuNCAxLjJ2MS44aC0xNXoiLz48cGF0aCBkPSJNMjguMiAxYzQgMCA3LjUgMi4yIDkuMyA1LjcuNS45IDEuMyAxLjYgMi40IDEuOCAxLjIuMyAyLjMuNyAzLjQgMS40IDQuNyAzIDYuMyA5LjEgMy43IDE0bC0uMy41aC05LjF2MTIuOWgtOC45bC4yIDEuNWguOWwyIDF2MUgxNy45di0xbDItMWguNmwuMi0xLjVoLTguOVYyNC41SDEuMWwuMS0xLjFjLjMtMy45IDIuNS03LjIgNS45LTlDOCAxMy45IDguNyAxMyA4LjkgMTJjLjUtMi43IDIuMy00LjkgNC44LTYgMS4xLS41IDIuMi0uNyAzLjQtLjdoMS4xYy45IDAgMS44LS40IDIuNC0xIDItMi4xIDQuNy0zLjMgNy42LTMuM20wLTFDMjUgMCAyMiAxLjMgMTkuOSAzLjZjLS40LjUtMSAuNy0xLjcuN2gtMS4xYy0xLjMgMC0yLjYuMy0zLjguOC0yLjggMS4yLTQuOCAzLjgtNS40IDYuOC0uMS43LS42IDEuMy0xLjMgMS43LTMuNyAyLTYuMiA1LjYtNi41IDkuOEwwIDI0LjV2MUgxMC44djEyLjloNy45bC0xLjMuNi0uNi4zVjQyaDE1Ljl2LTIuNmwtLjYtLjMtMS4zLS42aDcuNnYtMTNoOC43bC4zLS41LjMtLjVjMi45LTUuNCAxLjEtMTIuMS00LTE1LjQtMS4xLS43LTIuNC0xLjItMy43LTEuNS0uNy0uMi0xLjQtLjYtMS43LTEuM0MzNi41IDIuNCAzMi42IDAgMjguMiAweiIvPjwvZz48ZyBmaWxsPSIjMmM1OTY3Ij48cGF0aCBkPSJNMTEuOCAzNy41aDguOWwtLjIgMS41aC0uNmwtMiAxdjFoMTMuOXYtMWwtMi0xaC0uOWwtLjItMS41aDguOXYtMjBIMTEuOHYyMHpNMjIuNSAzOWwuMi0xLjVoNGwuMiAxLjVoLTQuNHptLTguNy0xOS41aDIxLjh2MTIuNGgtMy4zdjFoLTJ2LTFoLTIuNHYxaC0ydi0xaC0yLjR2MWgtMnYtMWgtMi40djFoLTJ2LTFoLTNWMTkuNXptMCAxNC40aDIxLjh2MS41SDEzLjh2LTEuNXoiLz48cGF0aCBkPSJNNDMuMiAxMGMtMS0uNy0yLjItMS4xLTMuNC0xLjQtMS0uMi0xLjktLjktMi40LTEuOEMzNS43IDMuMiAzMi4yIDEgMjguMiAxYy0yLjkgMC01LjcgMS4yLTcuNiAzLjMtLjcuNy0xLjcgMS4xLTIuNyAxLTEuNS0uMS0yLjkuMS00LjIuNy0yLjUgMS4xLTQuMyAzLjQtNC44IDYtLjIgMS0uOSAxLjktMS44IDIuNC0zLjQgMS44LTUuNiA1LjItNS45IDlsLS4xIDEuMWg5LjJ2LTJoLTdjLjUtMi43IDIuMi01IDQuNy02LjMgMS41LS44IDIuNS0yLjIgMi44LTMuOC40LTIgMS44LTMuNyAzLjctNC42IDEtLjQgMi4xLS42IDMuMS0uNSAxLjcuMiAzLjMtLjQgNC40LTEuN0MyMy43IDQgMjUuOSAzIDI4LjIgM2MzLjIgMCA2LjEgMS44IDcuNSA0LjYuNyAxLjUgMi4xIDIuNiAzLjggMi45IDEgLjIgMS45LjYgMi43IDEuMSAzLjYgMi4zIDUgNyAzLjMgMTAuOGgtNi4zdjJoNy42bC4zLS41YzIuNS00LjguOS0xMS0zLjktMTMuOXpNMTYuOCAyOC4zdjQuNmgydi00LjZ6TTIxLjMgMjYuM3Y2LjZoMnYtNi42eiIvPjxwYXRoIGQ9Ik0yNS44IDIzLjV2OS40aDJ2LTkuNHpNMzAuMiAyMXYxMS45aDIuMVYyMXoiLz48L2c+PC9zdmc+"); +} + +.oci-autonomous-database { + background-image: url("data:image/svg+xml;base64,PHN2ZyB2ZXJzaW9uPSIxLjEiIGlkPSJwcmVmaXhfX0xheWVyXzEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeD0iMCIgeT0iMCIgdmlld0JveD0iMCAwIDQ4LjQ3IDQyLjAyIiB4bWw6c3BhY2U9InByZXNlcnZlIj48c3R5bGU+LnByZWZpeF9fc3Qwe2ZpbGw6I2ZmZn08L3N0eWxlPjxwYXRoIGNsYXNzPSJwcmVmaXhfX3N0MCIgZD0iTTIyLjUgNDEuNTJjLTMuMTIgMC02LjA3LS4yOS04LjI5LS44My0yLjk1LS43MS00LjM5LTEuNzgtNC4zOS0zLjI5VjIyLjlILjU0bC4xMS0xLjUyYy4yNy0zLjY3IDIuMzktNi44OSA1LjY1LTguNjEuNzEtLjM4IDEuMjEtMS4wNCAxLjM2LTEuODEuNTEtMi42IDIuMjYtNC43OCA0LjY4LTUuODUgMS4wMi0uNDUgMi4xNS0uNjggMy4yNi0uNjguMjUgMCAuNS4wMS43NS4wMy4wOS4wMS4xNy4wMS4yNi4wMS43MSAwIDEuMzYtLjI4IDEuODItLjc4QTkuODUgOS44NSAwIDAxMjQuOTQuNTRsMS0uMDJ2LjAxYzMuNjkuMDggNi45OSAyLjE3IDguNjUgNS40OS4xMi4yNC4yOS40Ny40OC42Ny4yNC4zNS41Ni44Ljg0IDEuMiAzIC4xIDUuNzMgMS42NyA3LjMzIDQuMjRsLjA0LjA3LjM1IDEuNTMgNC4xMiA0LjEyLTIuMDEgMi4wMS0xLjMtMS4zYy0uNzkgNC4xOS00LjQ5IDcuMzQtOC44NSA3LjM0LS4xNCAwLS4yOCAwLS40Mi0uMDF2MTEuNTNjMCAxLjUtMS40NCAyLjU4LTQuMzkgMy4yOS0yLjIxLjUyLTUuMTYuODEtOC4yOC44MXoiLz48cGF0aCBjbGFzcz0icHJlZml4X19zdDAiIGQ9Ik0yNS43MiAxLjAyYzMuNTkgMCA2LjgzIDIgOC40MyA1LjIyLjE1LjMuMzUuNTcuNTguOC4yMi4zNC42Mi45LjkzIDEuMzQgMi45OC4wMiA1LjY2IDEuNTkgNy4xNiA0LjAxbC4zNyAxLjU4IDMuODcgMy44Ny0xLjMgMS4zLTEuNjctMS42N2MtLjMgNC40Mi0zLjk5IDcuOTItOC40OCA3LjkyLS4zMSAwLS42Mi0uMDMtLjkyLS4wNnYxMi4wOGMwIDEuMjQtMS4zMSAyLjE2LTQgMi44LTIuMi41My01LjEuODEtOC4xOC44MXMtNS45OC0uMjktOC4xOC0uODFjLTIuNjktLjY0LTQtMS41Ni00LTIuOFYyMi40SDEuMDhsLjA3LS45OWMuMjYtMy41IDIuMjctNi41NiA1LjM5LTguMi44NS0uNDUgMS40NC0xLjIzIDEuNjItMi4xNmE3LjYgNy42IDAgMDE0LjM5LTUuNDkgNy43IDcuNyAwIDAxMy43Ni0uNjFjLjEuMDEuMi4wMS4zMS4wMS44NCAwIDEuNjMtLjMzIDIuMTktLjk0YTkuMzY4IDkuMzY4IDAgMDE2LjY1LTMuMDFsLjAyLjkyLS4wMi0uOTJjLjA5LjAxLjE3LjAxLjI2LjAxTTI2LjQ0IDBsLTEgLjAzaC0uMDJsLS45OC4wM3YuMDVhMTAuMjUgMTAuMjUgMCAwMC02LjM2IDMuMjVjLS4zNy40LS44OS42Mi0xLjQ2LjYyLS4wNyAwLS4xNCAwLS4yMS0uMDEtLjI3LS4wMi0uNTMtLjA0LS44LS4wNC0xLjE4IDAtMi4zOC4yNS0zLjQ2LjczYTguNTg4IDguNTg4IDAgMDAtNC45NyA2LjIxYy0uMTIuNjMtLjUzIDEuMTYtMS4xMSAxLjQ2YTExLjA3IDExLjA3IDAgMDAtNS45MiA5LjAxbC0uMDcuOTlMMCAyMy40aDkuMzJ2MTQuMDFjMCAyLjYzIDMuNTkgMy40OSA0Ljc3IDMuNzcgMi4yNy41NCA1LjI2Ljg0IDguNDEuODQgMy4xNiAwIDYuMTQtLjMgOC40MS0uODQgMS4xOC0uMjggNC43Ny0xLjE0IDQuNzctMy43N1YyNi4zOWM0LjI1LS4wNCA3LjktMi45MSA5LjA1LTYuODZsLjMyLjMyLjcxLjcxLjcxLS43MSAxLjMtMS4zLjcxLS43MS0uNzEtLjcxLTMuNjctMy42Ny0uMy0xLjMxLS4wNC0uMTUtLjA5LS4xNGE5LjQ3IDkuNDcgMCAwMC03LjQ4LTQuNDZjLS4yMy0uMzMtLjQ3LS42OC0uNjMtLjkxbC0uMDUtLjA4LS4wNy0uMDdjLS4xNi0uMTctLjMtLjM1LS4zOS0uNTUtMS42Ny0zLjM0LTQuOTItNS41LTguNjEtNS43NVYweiIvPjxwYXRoIGQ9Ik0zLjEyIDIwLjU2aDUuODJ2MS44NEgxLjA4bC4wNy0uOTljLjI2LTMuNSAyLjI3LTYuNTYgNS4zOS04LjIuODUtLjQ1IDEuNDQtMS4yMyAxLjYyLTIuMTZhNy41ODggNy41ODggMCAwMTguMTUtNi4xYy45Ni4wOSAxLjg3LS4yNSAyLjUtLjkzYTkuMzY4IDkuMzY4IDAgMDE2LjY1LTMuMDFoLjI1YzMuNTkgMCA2LjgzIDIgOC40MyA1LjIyLjE1LjMuMzUuNTcuNTguOC0uNjkuMDYtMS4zNy4xOS0yLjAxLjM5LS4wNy0uMTItLjE0LS4yNC0uMjEtLjM3YTcuNTUgNy41NSAwIDAwLTYuNzktNC4yaC0uMjFjLTIuMDUuMDUtMy45Ni45Mi01LjM2IDIuNDItMS4wMiAxLjEtMi40OSAxLjY1LTQuMDIgMS41MS0uOTctLjA5LTEuOTUuMDctMi44NS40NmE1Ljc4IDUuNzggMCAwMC0zLjMzIDQuMTYgNC45NjggNC45NjggMCAwMS0yLjU3IDMuNDMgOC4yNjUgOC4yNjUgMCAwMC00LjI1IDUuNzNNMzQuNjkgMTJoMS44MmwyLjU1IDguODZIMzcuMUwzNi42NiAxOWgtMi4yMWwtLjQzIDEuODZoLTEuOUwzNC42OSAxMnptLjExIDUuNDloMS41MmwtLjc2LTMuMzEtLjc2IDMuMzF6bS03LjY4LTEuMTlsLTEuNjctMS42Ny0xLjMgMS4zIDMuODcgMy44NyAzLjg3LTMuODctMS4zLTEuMy0xLjYyIDEuNjJhNi42NjcgNi42NjcgMCAwMTYuNjMtNi4wMmMyLjUgMCA0Ljc0IDEuNCA1Ljg4IDMuNTJsMS4zNC0xLjM0QTguNTMgOC41MyAwIDAwMzUuNiA4LjRjLTQuNDktLjAyLTguMTggMy40OC04LjQ4IDcuOW0xOS45NCAxLjU0bC0zLjg3LTMuODctMy44NyAzLjg3IDEuMyAxLjMgMS42Mi0xLjYyYTYuNjY3IDYuNjY3IDAgMDEtNi42MyA2LjAyYy0yLjUgMC00Ljc0LTEuNC01Ljg4LTMuNTJsLTEuMzQgMS4zNGE4LjUzIDguNTMgMCAwMDcuMjIgNC4wMWM0LjQ5IDAgOC4xOC0zLjUgOC40OC03LjkybDEuNjcgMS42NyAxLjMtMS4yOHptLTE0LjIxIDguNzRjLjU5LjE4IDEuMjEuMyAxLjg0LjM2VjM3LjRjMCAxLjI0LTEuMzEgMi4xNi00IDIuOC0yLjIuNTMtNS4xLjgxLTguMTguODFzLTUuOTgtLjI5LTguMTgtLjgxYy0yLjY5LS42NC00LTEuNTYtNC0yLjhWMTcuOGMwLTEuMjUgMS4zMi0yLjE0IDQuMDItMi43MyAyLjEzLS40NiA1LjAzLS43MiA4LjE2LS43MmguNDZ2MS44NGgtLjQ2Yy02LjU1IDAtOS45MyAxLjA3LTEwLjM0IDEuNjd2LjExYy40NC42NyA0LjE5IDEuODQgMTAuMzQgMS44NCAxLjI3IDAgMi40NC0uMDUgMy41LS4xMy4xOC42Mi40MSAxLjIyLjcgMS43OC0xLjMyLjEyLTIuNzQuMTktNC4yLjE5LTMuMDggMC01Ljk4LS4yOS04LjE4LS44MS0uODYtLjIxLTEuNTgtLjQ0LTIuMTctLjcxdjQuMjhjLjQ0LjY3IDQuMTkgMS44NCAxMC4zNCAxLjg0IDMuNDEgMCA2LjA3LS4zNiA3Ljg1LS43OS43Ni40OCAxLjU5Ljg2IDIuNDcgMS4xMi0uNTguMjYtMS4yOS40OS0yLjE0LjY5LTIuMi41My01LjEuODEtOC4xOC44MXMtNS45OC0uMjktOC4xOC0uODFjLS44Ni0uMjEtMS41OC0uNDQtMi4xNy0uNzF2NC4zM2MuNDQuNjcgNC4xOSAxLjg0IDEwLjM0IDEuODRzOS45MS0xLjE3IDEwLjM0LTEuODR2LTQuMzF6bTAgNi40OGMtLjU4LjI2LTEuMy41LTIuMTcuNzEtMi4yLjUzLTUuMS44MS04LjE4Ljgxcy01Ljk4LS4yOS04LjE4LS44MWMtLjg2LS4yMS0xLjU4LS40NC0yLjE3LS43MXY0LjI5Yy4zOS41NiAzLjc5IDEuODQgMTAuMzQgMS44NHM5Ljk2LTEuMjcgMTAuMzQtMS44NHYtNC4yOXoiIGZpbGw9IiMyYzU5NjciLz48L3N2Zz4="); +} + +.oci-availability-domain, .oci-ad { + background-image: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAxNjEuOSAxNjIiPjxwYXRoIGZpbGw9IiMzMTJEMkEiIGQ9Ik0xNTIuOCAxNTIuOUg5VjkuMmgxNDMuOHYxNDMuN3ptLTEzNC44LTloMTI1LjhWMTguMkgxOHYxMjUuN3ptMTExLjEtMTEuNkgzMi45Vjk3LjRoOTYuM3YzNC45em0tODcuMi05aDc4LjN2LTE2LjlINDEuOXYxNi45em02My45LTEzLjFjLTIuNiAwLTQuNyAyLjEtNC43IDQuN3MyLjEgNC43IDQuNyA0LjcgNC43LTIuMSA0LjctNC43LTIuMS00LjctNC43LTQuN3pNMzMuMSA5MGg0Mi42VjYzLjlIMzMuMVY5MHptMTcuMy03VjcwLjloNy43VjgzaC03Ljd6bTE4LjMgMGgtNi42VjcwLjloNi42Vjgzek00MC4xIDcwLjloNi4zVjgzaC02LjNWNzAuOXptLTctMTMuOWg0Mi42VjMwLjhIMzMuMVY1N3ptMTcuMy03VjM3LjhoNy43VjUwaC03Ljd6bTE4LjMgMGgtNi42VjM3LjhoNi42VjUwek00MC4xIDM3LjhoNi4zVjUwaC02LjNWMzcuOHpNODYuOCA5MGg0Mi42VjYzLjlIODYuOFY5MHptMTcuMi03VjcwLjloNy43VjgzSDEwNHptMTguMyAwaC02LjZWNzAuOWg2LjZWODN6TTkzLjggNzAuOWg2LjJWODNoLTYuMlY3MC45em0tNy00MC4xVjU3aDQyLjZWMzAuOEg4Ni44em0yNC45IDdWNTBIMTA0VjM3LjhoNy43em0tMTcuOSAwaDYuMlY1MGgtNi4yVjM3Ljh6TTEyMi4zIDUwaC02LjZWMzcuOGg2LjZWNTB6Ii8+PC9zdmc+"); +} + +.oci-bastion { + background-image: url("data:image/svg+xml;base64,PHN2ZyBkYXRhLW5hbWU9IkxheWVyIDEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmlld0JveD0iMCAwIDI2Ljk1IDQyIj48cGF0aCBkPSJNMjAuNTIgNDEuNWE1LjkzIDUuOTMgMCAwMS0zLjczLTEuMzNILjV2LTYuNzJoMS44MUwyLjkyIDIwYTIuMjIgMi4yMiAwIDAxLTEuODUtMi4xOVY5LjI2SDcuNHYzLjA1aDEuMVY5LjI2aDEuOVYuNWg2LjA2YTIuMTkgMi4xOSAwIDAxMi4xMyAxLjcxSDI1bC0yIDMuNCAyIDMuMzJoLTYuNzJhMi4xNiAyLjE2IDAgMDEtMi4wOC0xLjU5aC0uMDh2LS4xM2gtMy4xOXYyLjA1aDEuOXYzLjA1aDEuMVY5LjI2aDYuMzN2OC41QTIuMjIgMi4yMiAwIDAxMjAuNDEgMjBsLjQxIDkuN2E1LjkzIDUuOTMgMCAwMS0uMyAxMS44NXoiIGZpbGw9IiNmZmYiLz48cGF0aCBkPSJNMTYuNDYgMWExLjY5IDEuNjkgMCAwMTEuNjggMS42OWg1Ljk1bC0xLjcgMi45MSAxLjc0IDIuODFoLTUuODVhMS42NyAxLjY3IDAgMDEtMS42Ni0xLjU5LjEzLjEzIDAgMDAtLjEzLS4xM2gtNC4wNnYzLjA3aDEuOXYzLjA1aDIuMVY5Ljc2aDUuMzN2OGExLjcyIDEuNzIgMCAwMS0xLjcxIDEuNzJoLS4xNmwuNDUgMTAuNjdoLjE4QTUuNDMgNS40MyAwIDExMTcgMzkuNjdIMVYzNGgxLjc5bC42NS0xNC40N2gtLjE1YTEuNzIgMS43MiAwIDAxLTEuNzItMS43MnYtOEg2Ljl2My4wNUg5di0zLjFoMS45VjFoNS41Nm0wLTFIOS45djguNzZIOHYzLjA1aC0uMVY4Ljc2SC41N3Y5YTIuNzMgMi43MyAwIDAwMS44MyAyLjU3TDEuODMgMzNIMHY3LjcyaDE2LjYyYTYuNDIgNi40MiAwIDEwNC42OC0xMS41M2wtLjM3LTguODZhMi43MyAyLjczIDAgMDAxLjgzLTIuNTdWOS40M2gzLjE2TDI1IDcuOWwtMS40NS0yLjNMMjUgMy4yMmwuODktMS41MUgxOUEyLjcgMi43IDAgMDAxNi40NiAwem0tMyA3LjcxaDIuMTl2LjEzaC4yM2EyLjU1IDIuNTUgMCAwMC42Ni45MmgtMS4xMXYzLjA1aC0uMVY4Ljc2aC0xLjl2LTF6IiBmaWxsPSIjZmZmIi8+PHBhdGggZD0iTTIuNTIgMzguMTR2LTIuNjZIMTRhNyA3IDAgMDEuMi0xLjUzSDQuMzFMNSAxOS40OGgxMy40bC40NCA5Ljc1YTYuMjYgNi4yNiAwIDAxMS40OC0uMjNsLS40My05LjUzaC4xNmExLjcyIDEuNzIgMCAwMDEuNzEtMS43MnYtOGgtNS4zM3YzLjA1aC0yLjFWOS43NmgtMS45di0zaDQuMDZhLjEzLjEzIDAgMDEuMTMuMTMgMS42NyAxLjY3IDAgMDAxLjY2IDEuNTloNS44NWwtMS43NC0yLjg2IDEuNy0yLjkxaC01Ljk1QTEuNjkgMS42OSAwIDAwMTYuNDYgMUgxMC45djguNzZIOXYzLjA1SDYuOVY5Ljc2SDEuNTd2OGExLjcyIDEuNzIgMCAwMDEuNzIgMS43MmguMTVMMi43OSAzNEgxdjUuNzJoMTQuMzlhNi41OCA2LjU4IDAgMDEtLjkxLTEuNTN6bTE4LjkxLTMzLjlsLS44MiAxLjQuNzggMS4yNmgtMy4xMWEuMTMuMTMgMCAwMS0uMTQtLjEzVjQuMjR6bS01LTEuNzJhLjE3LjE3IDAgMDEuMTYuMTdWNS4yaC00LjE2VjIuNTJ6TTMuMjkgMThhLjE4LjE4IDAgMDEtLjE5LS4xOXYtNi41MmgyLjI4djNoNS4xNHYtM2gyLjI5djNIMTh2LTNoMi4yOXY2LjQ3YS4xOS4xOSAwIDAxLS4xOS4xOUgzLjI5eiIgZmlsbD0iIzJjNTk2NyIvPjxwYXRoIGQ9Ik0yMC41MiAzMC4xNEE1LjQzIDUuNDMgMCAxMDI2IDM1LjU3YTUuNDMgNS40MyAwIDAwLTUuNDgtNS40M3ptMCA5LjM0YTMuOTEgMy45MSAwIDExMy45MS0zLjkxIDMuOTEgMy45MSAwIDAxLTMuOTEgMy45MXoiIGZpbGw9IiMyYzU5NjciLz48cGF0aCBmaWxsPSIjMmM1OTY3IiBkPSJNMjEuODggMzMuNzRsLTIuMSAyLjEtLjY1LS42NS0xLjA4IDEuMDdMMTkuNzggMzhsMy4xOC0zLjE4LTEuMDgtMS4wOHpNMTMuMjMgMjIuNDhsLjk5IDFoLTQuMDhWMjVoNC4wNmwtLjk3Ljk3IDEuMDcgMS4wOCAyLjgzLTIuODItMi44My0yLjgyLTEuMDcgMS4wN3pNMTAuMTggMjYuNTVMOS4xIDI1LjQ4IDYuMjggMjguM2wyLjgyIDIuODIgMS4wOC0xLjA4LS44NS0uODVoMy44NnYtMS41Mkg5LjA2bDEuMTItMS4xMnoiLz48ZyBkYXRhLW5hbWU9Ik9DSSBJY29uIExhYmVsIiBmaWxsPSIjMmM1OTY3Ij48cGF0aCBkPSJNMi41MiAzOC4xNHYtMi42NkgxNGE3IDcgMCAwMS4yLTEuNTNINC4zMUw1IDE5LjQ4aDEzLjRsLjQ0IDkuNzVhNi4yNiA2LjI2IDAgMDExLjQ4LS4yM2wtLjQzLTkuNTNoLjE2YTEuNzIgMS43MiAwIDAwMS43MS0xLjcydi04aC01LjMzdjMuMDVoLTIuMVY5Ljc2aC0xLjl2LTNoNC4wNmEuMTMuMTMgMCAwMS4xMy4xMyAxLjY3IDEuNjcgMCAwMDEuNjYgMS41OWg1Ljg1bC0xLjc0LTIuODYgMS43LTIuOTFoLTUuOTVBMS42OSAxLjY5IDAgMDAxNi40NiAxSDEwLjl2OC43Nkg5djMuMDVINi45VjkuNzZIMS41N3Y4YTEuNzIgMS43MiAwIDAwMS43MiAxLjcyaC4xNUwyLjc5IDM0SDF2NS43MmgxNC4zOWE2LjU4IDYuNTggMCAwMS0uOTEtMS41M3ptMTguOTEtMzMuOWwtLjgyIDEuNC43OCAxLjI2aC0zLjExYS4xMy4xMyAwIDAxLS4xNC0uMTNWNC4yNHptLTUtMS43MmEuMTcuMTcgMCAwMS4xNi4xN1Y1LjJoLTQuMTZWMi41MnpNMy4yOSAxOGEuMTguMTggMCAwMS0uMTktLjE5di02LjUyaDIuMjh2M2g1LjE0di0zaDIuMjl2M0gxOHYtM2gyLjI5djYuNDdhLjE5LjE5IDAgMDEtLjE5LjE5SDMuMjl6Ii8+PHBhdGggZD0iTTIwLjUyIDMwLjE0QTUuNDMgNS40MyAwIDEwMjYgMzUuNTdhNS40MyA1LjQzIDAgMDAtNS40OC01LjQzem0wIDkuMzRhMy45MSAzLjkxIDAgMTEzLjkxLTMuOTEgMy45MSAzLjkxIDAgMDEtMy45MSAzLjkxeiIvPjxwYXRoIGQ9Ik0yMS44OCAzMy43NGwtMi4xIDIuMS0uNjUtLjY1LTEuMDggMS4wN0wxOS43OCAzOGwzLjE4LTMuMTgtMS4wOC0xLjA4ek0xMy4yMyAyMi40OGwuOTkgMWgtNC4wOFYyNWg0LjA2bC0uOTcuOTcgMS4wNyAxLjA4IDIuODMtMi44Mi0yLjgzLTIuODItMS4wNyAxLjA3ek0xMC4xOCAyNi41NUw5LjEgMjUuNDggNi4yOCAyOC4zbDIuODIgMi44MiAxLjA4LTEuMDgtLjg1LS44NWgzLjg2di0xLjUySDkuMDZsMS4xMi0xLjEyeiIvPjwvZz48L3N2Zz4="); +} + +.oci-boot-volume { + background-image: url("data:image/svg+xml;base64,PHN2ZyB2ZXJzaW9uPSIxLjEiIGlkPSJwcmVmaXhfX0xheWVyXzEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeD0iMCIgeT0iMCIgdmlld0JveD0iMCAwIDQyIDQyIiB4bWw6c3BhY2U9InByZXNlcnZlIj48c3R5bGU+LnByZWZpeF9fc3Qwe2ZpbGw6I2ZmZn0ucHJlZml4X19zdDF7ZmlsbDojYmI1MDFjfTwvc3R5bGU+PHBhdGggY2xhc3M9InByZWZpeF9fc3QwIiBkPSJNMi42NyA0MS41QzEuNDggNDEuNS41IDQwLjUzLjUgMzkuMzNWMi42N0MuNSAxLjQ3IDEuNDcuNSAyLjY3LjVoMzYuNjdjMS4xOSAwIDIuMTcuOTcgMi4xNyAyLjE3djM2LjY3YzAgMS4yLS45NyAyLjE3LTIuMTcgMi4xN0gyLjY3eiIvPjxwYXRoIGNsYXNzPSJwcmVmaXhfX3N0MCIgZD0iTTM5LjMzIDFjLjkyIDAgMS42Ny43NSAxLjY3IDEuNjd2MzYuNjdjMCAuOTItLjc1IDEuNjctMS42NyAxLjY3SDIuNjdDMS43NSA0MSAxIDQwLjI1IDEgMzkuMzNWMi42N0MxIDEuNzUgMS43NSAxIDIuNjcgMWgzNi42Nm0wLTFIMi42N0MxLjIgMCAwIDEuMiAwIDIuNjd2MzYuNjdDMCA0MC44IDEuMiA0MiAyLjY3IDQyaDM2LjY3QzQwLjggNDIgNDIgNDAuOCA0MiAzOS4zM1YyLjY3QzQyIDEuMiA0MC44IDAgMzkuMzMgMHoiLz48Zz48cGF0aCBjbGFzcz0icHJlZml4X19zdDEiIGQ9Ik0xOS44NSA5LjQ2SDcuNFYyMS43aDEyLjQ1VjkuNDZ6bS0xLjQ4IDEwLjc2SDguODl2LTkuMjhoOS40OHY5LjI4ek0zNC42NiA5LjQ2SDIyLjIxVjIxLjdoMTIuNDVWOS40NnptLTEuNDkgMTAuNzZoLTkuNDh2LTkuMjhoOS40OHY5LjI4ek0xOS44NSAyMy45OUg3LjR2MTIuMjRoMTIuNDVWMjMuOTl6bS0xLjQ4IDEwLjc2SDguODl2LTkuMjhoOS40OHY5LjI4ek0zNC42NiAyMy45OUgyMi4yMXYxMi4yNGgxMi40NVYyMy45OXptLTEuNDkgMTAuNzZoLTkuNDh2LTkuMjhoOS40OHY5LjI4eiIvPjxwYXRoIGNsYXNzPSJwcmVmaXhfX3N0MSIgZD0iTTEgMzkuMzNjMCAuOTIuNzUgMS42NyAxLjY3IDEuNjdoMzYuNjdjLjkyIDAgMS42Ny0uNzUgMS42Ny0xLjY3VjQuOTlIMXYzNC4zNHpNMi40OCA2LjQ3aDM3LjA0djMyLjg3YzAgLjEtLjA4LjE5LS4xOS4xOUgyLjY3YS4xOS4xOSAwIDAxLS4xOS0uMTlWNi40N3pNMzkuMzMgMUgyLjY3QzEuNzUgMSAxIDEuNzUgMSAyLjY3djEuMjFoNDBWMi42N0M0MSAxLjc1IDQwLjI1IDEgMzkuMzMgMXoiLz48L2c+PC9zdmc+"); +} + +.oci-volume, .oci-block-storage-volume { + background-image: url("data:image/svg+xml;base64,PHN2ZyB2ZXJzaW9uPSIxLjEiIGlkPSJwcmVmaXhfX0xheWVyXzEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeD0iMCIgeT0iMCIgdmlld0JveD0iMCAwIDQyIDQyIiB4bWw6c3BhY2U9InByZXNlcnZlIj48c3R5bGU+LnByZWZpeF9fc3Qwe2ZpbGw6I2ZmZn0ucHJlZml4X19zdDF7ZmlsbDojMmM1OTY3fTwvc3R5bGU+PHBhdGggY2xhc3M9InByZWZpeF9fc3QwIiBkPSJNMi42NyA0MS41QzEuNDggNDEuNS41IDQwLjUzLjUgMzkuMzNWMi42N0MuNSAxLjQ3IDEuNDcuNSAyLjY3LjVoMzYuNjdjMS4xOSAwIDIuMTcuOTcgMi4xNyAyLjE3djM2LjY3YzAgMS4yLS45NyAyLjE3LTIuMTcgMi4xN0gyLjY3eiIvPjxwYXRoIGNsYXNzPSJwcmVmaXhfX3N0MCIgZD0iTTM5LjMzIDFjLjkyIDAgMS42Ny43NSAxLjY3IDEuNjd2MzYuNjdjMCAuOTItLjc1IDEuNjctMS42NyAxLjY3SDIuNjdDMS43NSA0MSAxIDQwLjI1IDEgMzkuMzNWMi42N0MxIDEuNzUgMS43NSAxIDIuNjcgMWgzNi42Nm0wLTFIMi42N0MxLjIgMCAwIDEuMiAwIDIuNjd2MzYuNjdDMCA0MC44IDEuMiA0MiAyLjY3IDQyaDM2LjY3QzQwLjggNDIgNDIgNDAuOCA0MiAzOS4zM1YyLjY3QzQyIDEuMiA0MC44IDAgMzkuMzMgMHoiLz48Zz48cGF0aCBjbGFzcz0icHJlZml4X19zdDEiIGQ9Ik0xOS44NSA5LjQ2SDcuNFYyMS43aDEyLjQ1VjkuNDZ6bS0xLjQ4IDEwLjc2SDguODl2LTkuMjhoOS40OHY5LjI4ek0zNC42NiA5LjQ2SDIyLjIxVjIxLjdoMTIuNDVWOS40NnptLTEuNDkgMTAuNzZoLTkuNDh2LTkuMjhoOS40OHY5LjI4ek0xOS44NSAyMy45OUg3LjR2MTIuMjRoMTIuNDVWMjMuOTl6bS0xLjQ4IDEwLjc2SDguODl2LTkuMjhoOS40OHY5LjI4ek0zNC42NiAyMy45OUgyMi4yMXYxMi4yNGgxMi40NVYyMy45OXptLTEuNDkgMTAuNzZoLTkuNDh2LTkuMjhoOS40OHY5LjI4eiIvPjxwYXRoIGNsYXNzPSJwcmVmaXhfX3N0MSIgZD0iTTEgMzkuMzNjMCAuOTIuNzUgMS42NyAxLjY3IDEuNjdoMzYuNjdjLjkyIDAgMS42Ny0uNzUgMS42Ny0xLjY3VjQuOTlIMXYzNC4zNHpNMi40OCA2LjQ3aDM3LjA0djMyLjg3YzAgLjEtLjA4LjE5LS4xOS4xOUgyLjY3YS4xOS4xOSAwIDAxLS4xOS0uMTlWNi40N3pNMzkuMzMgMUgyLjY3QzEuNzUgMSAxIDEuNzUgMSAyLjY3djEuMjFoNDBWMi42N0M0MSAxLjc1IDQwLjI1IDEgMzkuMzMgMXoiLz48L2c+PC9zdmc+"); +} + +.oci-compartment { + background-image: url("data:image/svg+xml;base64,PHN2ZyB2ZXJzaW9uPSIxLjEiIGlkPSJwcmVmaXhfX0xheWVyXzEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeD0iMCIgeT0iMCIgdmlld0JveD0iMCAwIDUyLjQ1IDQyIiB4bWw6c3BhY2U9InByZXNlcnZlIj48c3R5bGU+LnByZWZpeF9fc3Qwe2ZpbGw6I2ZmZn0ucHJlZml4X19zdDF7ZmlsbDojMmM1OTY3fTwvc3R5bGU+PHBhdGggY2xhc3M9InByZWZpeF9fc3QwIiBkPSJNLjUgNDEuNVYzLjM3Qy41IDEuNzkgMS43OS41IDMuMzcuNWgxMy4wOWMuOSAwIDEuNzYuNDMgMi4zIDEuMTZsMi42OCAzLjZINDkuMWMxLjU4IDAgMi44NyAxLjI5IDIuODcgMi44N1Y0MS41SC41eiIvPjxwYXRoIGNsYXNzPSJwcmVmaXhfX3N0MCIgZD0iTTE2LjQ2IDFjLjc0IDAgMS40NS4zNiAxLjkuOTVsMi44MyAzLjhINDkuMWMxLjMgMCAyLjM3IDEuMDYgMi4zNyAyLjM3VjQxSDFWMy4zN0MxIDIuMDYgMi4wNiAxIDMuMzcgMWgxMy4wOW0wLTFIMy4zN0MxLjUxIDAgMCAxLjUxIDAgMy4zN1Y0Mmg1Mi40NVY4LjEyYzAtMS44Ni0xLjUxLTMuMzctMy4zNy0zLjM3aC0yNy40bC0yLjUzLTMuNEEzLjM2MiAzLjM2MiAwIDAwMTYuNDYgMHoiLz48Zz48cGF0aCBjbGFzcz0icHJlZml4X19zdDEiIGQ9Ik00OS4wOSA1Ljc2SDIxLjE4bC0yLjgzLTMuOGMtLjQ0LS42LTEuMTUtLjk2LTEuODktLjk2SDMuMzdDMi4wNiAxIDEgMi4wNiAxIDMuMzdWNDFoNTAuNDVWOC4xMmMwLTEuMy0xLjA2LTIuMzYtMi4zNi0yLjM2em0uMjYgMzMuMTRIMy4xVjMuMzdjMC0uMTQuMTItLjI2LjI2LS4yNmgxMy4wOWMuMDggMCAuMTYuMDQuMjEuMTFsMy40NiA0LjY1aDI4Ljk2Yy4xNCAwIC4yNi4xMi4yNi4yNlYzOC45eiIvPjxwYXRoIGNsYXNzPSJwcmVmaXhfX3N0MSIgZD0iTTkuMTUgMTMuNjRoMi4xdi0zLjE1aDMuMTV2LTIuMWgtMy4xNVY1LjIzaC0yLjF2My4xNkg1Ljk5djIuMWgzLjE2ek00MC45MyAyMi4zMmwtMS44NC0zLjMtMS44MyAzLjMtMi43OCA1LjAyLTEuNzMgMy4xMmgxMi43M2wtMS43NS0zLjEzLTIuOC01LjAxem0tNC42MiA2LjA0bDIuNzgtNS4wMiAyLjggNS4wMmgtNS41OHpNMjkuNTYgMjAuMjNjLS44OC0uNTQtMS44OC0uODMtMi45LS44M2E1LjUyNiA1LjUyNiAwIDAwLTUuMzcgNi43OSA1LjUgNS41IDAgMDA2LjYzIDQuMSA1LjUwOCA1LjUwOCAwIDAwMy40My0yLjQ3IDUuNTQgNS41NCAwIDAwLjY4LTQuMTcgNS40ODggNS40ODggMCAwMC0yLjQ3LTMuNDJ6bTAgNi40OWMtLjQ4Ljc4LTEuMjMgMS4zMi0yLjEyIDEuNTNhMy40MzMgMy40MzMgMCAwMS00LjExLTIuNTRjLS40My0xLjgzLjcxLTMuNjggMi41NC00LjExLjI2LS4wNi41My0uMDkuNzktLjA5LjYzIDAgMS4yNC4xNyAxLjc5LjUxLjc4LjQ4IDEuMzIgMS4yMyAxLjUzIDIuMTIuMjEuODguMDYgMS44LS40MiAyLjU4ek0xNi44MyAyMC43M2wtLjYxLTEuMDRIOS45OWwtLjYxIDEuMDQtMS45MiAzLjI4LS42MiAxLjA2LjYyIDEuMDYgMS45MiAzLjI5LjYxIDEuMDRIMTYuMjNsLjYxLTEuMDQgMS45Mi0zLjI5LjYyLTEuMDYtLjYyLTEuMDYtMS45My0zLjI4em0tMS44MSA3LjYzSDExLjJsLTEuOTItMy4yOSAxLjkyLTMuMjhoMy44MmwxLjkyIDMuMjgtMS45MiAzLjI5eiIvPjwvZz48L3N2Zz4="); +} + +.oci-customer-premise-equipment, .oci-cpe { + background-image: url("data:image/svg+xml;base64,PHN2ZyBkYXRhLW5hbWU9IkxheWVyIDEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmlld0JveD0iMCAwIDQyIDQyIj48cmVjdCB4PSIuNSIgeT0iLjUiIHdpZHRoPSI0MSIgaGVpZ2h0PSI0MSIgcng9IjIuMTciIGZpbGw9IiNmZmYiLz48cGF0aCBkPSJNMzkuMzMgMUExLjY3IDEuNjcgMCAwMTQxIDIuNjd2MzYuNjZBMS42NyAxLjY3IDAgMDEzOS4zMyA0MUgyLjY3QTEuNjcgMS42NyAwIDAxMSAzOS4zM1YyLjY3QTEuNjcgMS42NyAwIDAxMi42NyAxaDM2LjY2bTAtMUgyLjY3QTIuNjggMi42OCAwIDAwMCAyLjY3djM2LjY2QTIuNjggMi42OCAwIDAwMi42NyA0MmgzNi42NkEyLjY4IDIuNjggMCAwMDQyIDM5LjMzVjIuNjdBMi42OCAyLjY4IDAgMDAzOS4zMyAweiIgZmlsbD0iI2ZmZiIvPjxwYXRoIGQ9Ik0zOS4zMyAxSDIuNjdBMS42NyAxLjY3IDAgMDAxIDIuNjd2MzYuNjZBMS42NyAxLjY3IDAgMDAyLjY3IDQxaDM2LjY2QTEuNjcgMS42NyAwIDAwNDEgMzkuMzNWMi42N0ExLjY3IDEuNjcgMCAwMDM5LjMzIDF6bS4xOSAzOC4zM2EuMi4yIDAgMDEtLjE5LjE5SDIuNjdhLjIuMiAwIDAxLS4xOS0uMTlWMi42N2EuMi4yIDAgMDEuMTktLjE5aDM2LjY2YS4yLjIgMCAwMS4xOS4xOXoiIGZpbGw9IiMyYzU5NjciLz48cGF0aCBkPSJNMjEgMy41OUExNy40MSAxNy40MSAwIDEwMzguNDEgMjEgMTcuNDMgMTcuNDMgMCAwMDIxIDMuNTl6bTAgMzMuMzRBMTUuOTMgMTUuOTMgMCAxMTM2LjkzIDIxIDE2IDE2IDAgMDEyMSAzNi45M3oiIGZpbGw9IiMyYzU5NjciLz48cGF0aCBmaWxsPSIjMmM1OTY3IiBkPSJNMjEuNzQgMzEuMDZWMTEuMTJMMjQgMTMuMzhsMS4wNC0xLjA1TDIxIDguMjlsLTQuMDQgNC4wNEwxOCAxMy4zOGwyLjI2LTIuMjZ2MTkuOTRMMTggMjguODFsLTEuMDQgMS4wNUwyMSAzMy45bDQuMDQtNC4wNEwyNCAyOC44MWwtMi4yNiAyLjI1eiIvPjxwYXRoIGZpbGw9IiMyYzU5NjciIGQ9Ik0yNi44OSAxOGwtMS4wNC0xLjA0TDIxLjggMjFsNC4wNSA0LjA0TDI2Ljg5IDI0bC0yLjI1LTIuMjZoOS4xM3YtMS40OGgtOS4xM0wyNi44OSAxOHpNMTYuMTUgMTYuOTZMMTUuMTEgMThsMi4yNSAyLjI2SDguMjJ2MS40OGg5LjE0TDE1LjExIDI0bDEuMDQgMS4wNEwyMC4yIDIxbC00LjA1LTQuMDR6Ii8+PC9zdmc+"); +} + +.oci-database-system, .oci-db-system { + background-image: url("data:image/svg+xml;base64,PHN2ZyB2ZXJzaW9uPSIxLjEiIGlkPSJwcmVmaXhfX0xheWVyXzEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeD0iMCIgeT0iMCIgdmlld0JveD0iMCAwIDQyIDQyIiB4bWw6c3BhY2U9InByZXNlcnZlIj48c3R5bGU+LnByZWZpeF9fc3Qwe2ZpbGw6I2ZmZn08L3N0eWxlPjxwYXRoIGNsYXNzPSJwcmVmaXhfX3N0MCIgZD0iTTI5LjY2IDQxLjV2LTQuNDloLTkuNzJWMjYuOTJoLTQuODZ2LTQuNjdoLTIuNzR2NC42N0g3LjY3djIuNzRoNC42N1Y0MS41SC41VjI5LjY2aDQuNjd2LTIuNzRILjVWMTUuMDhoMTEuODR2NC42N2gyLjc0di00LjY3aDQuODZ2LTIuNzRoLTQuODZWLjVoMTEuODR2MTEuODRoLTQuNDl2Mi43NGg0LjQ5djQuNjdoMi43NHYtNC42N0g0MS41djExLjg0aC00LjY3djIuNzRoNC42N1Y0MS41SDI5LjY2em0wLTYuOTh2LTQuODZoNC42N3YtMi43NGgtNC42N3YtNC42N2gtMi43NHY0LjY3aC00LjQ5djcuNmg3LjIzeiIvPjxwYXRoIGNsYXNzPSJwcmVmaXhfX3N0MCIgZD0iTTI2LjQyIDF2MTAuODRoLTQuNDl2My43NGg0LjQ5djQuNjdoMy43NHYtNC42N0g0MXYxMC44NGgtNC42N3YzLjc0SDQxVjQxSDMwLjE2di00LjQ5aC05LjcyVjI2LjQyaC00Ljg2di00LjY3aC0zLjc0djQuNjdINy4xN3YzLjc0aDQuNjdWNDFIMVYzMC4xNmg0LjY3di0zLjc0SDFWMTUuNThoMTAuODR2NC42N2gzLjc0di00LjY3aDQuODZ2LTMuNzRoLTQuODZWMWgxMC44NG0tNC40OSAzNC4wMmg4LjIydi00Ljg2aDQuNjd2LTMuNzRoLTQuNjd2LTQuNjdoLTMuNzR2NC42N2gtNC40OXY4LjZNMjcuNDIgMEgxNC41OHYxMi44NEgxOS40NHYxLjc0SDE0LjU4djQuNjdoLTEuNzR2LTQuNjdIMHYxMi44NGg0LjY3djEuNzRIMFY0MmgxMi44NFYyOS4xNkg4LjE3di0xLjc0aDQuNjd2LTQuNjdoMS43NHY0LjY3SDE5LjQ0djEwLjA5aDkuNzJWNDJINDJWMjkuMTZoLTQuNjd2LTEuNzRINDJWMTQuNThIMjkuMTZ2NC42N2gtMS43NHYtNC42N2gtNC40OXYtMS43NGg0LjQ5VjB6bTAgMjIuNzVoMS43NHY0LjY3aDQuNjd2MS43NGgtNC42N1YzNC4wMmgtNi4yMnYtNi42aDQuNDl2LTQuNjdoLS4wMXoiLz48cGF0aCBkPSJNNDEgMjYuNDJWMTUuNThIMzAuMTZ2NC42N2gtMy43NHYtNC42N2gtNC40OXYtMy43NGg0LjQ5VjFIMTUuNTh2MTAuODRoNC44NnYzLjc0aC00Ljg2djQuNjdoLTMuNzR2LTQuNjdIMXYxMC44NGg0LjY3djMuNzRIMVY0MWgxMC44NFYzMC4xNkg3LjE3di0zLjc0aDQuNjd2LTQuNjdoMy43NHY0LjY3aDQuODZ2MTAuMDloOS43MlY0MUg0MVYzMC4xNmgtNC42N3YtMy43NEg0MXpNMTcuMDcgMi41aDcuODV2Ny44NWgtNy44NVYyLjV6bS02LjcyIDM3SDIuNXYtNy44NWg3Ljg1djcuODV6bTAtMTQuNTdIMi41di03Ljg1aDcuODV2Ny44NXptMjEuMy03Ljg2aDcuODV2Ny44NWgtNy44NXYtNy44NXptLTE0LjU4IDBoNy44NXY3Ljg1aC03Ljg1di03Ljg1ek0zOS41IDM5LjVoLTcuODV2LTcuODVoNy44NXY3Ljg1em0tNC42Ny05LjM0aC00LjY3djQuODZoLTguMjJ2LTguNmg0LjQ5di00LjY3aDMuNzR2NC42N2g0LjY3djMuNzR6IiBmaWxsPSIjMmM1OTY3Ii8+PC9zdmc+"); +} + +.oci-drg, .oci-dynamic-routing-gateway { + background-image: url("data:image/svg+xml;base64,PHN2ZyBkYXRhLW5hbWU9IkxheWVyIDEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmlld0JveD0iMCAwIDQyIDQyIj48Y2lyY2xlIGN4PSIyMSIgY3k9IjIxIiByPSIyMC41IiBmaWxsPSIjZmZmIi8+PHBhdGggZD0iTTIxIDFBMjAgMjAgMCAxMTEgMjEgMjAgMjAgMCAwMTIxIDFtMC0xYTIxIDIxIDAgMTAyMSAyMUEyMSAyMSAwIDAwMjEgMHoiIGZpbGw9IiNmZmYiLz48cGF0aCBkPSJNMjEgMWEyMCAyMCAwIDEwMjAgMjBBMjAgMjAgMCAwMDIxIDF6bTAgMzguMzNBMTguMzMgMTguMzMgMCAxMTM5LjMzIDIxIDE4LjM1IDE4LjM1IDAgMDEyMSAzOS4zM3oiIGZpbGw9IiMyYzU5NjciLz48cGF0aCBmaWxsPSIjMmM1OTY3IiBkPSJNMjEuODMgMzIuNzRWOS40N2wyLjU0IDIuNTQgMS4xOC0xLjE4TDIxIDYuMjhsLTQuNTUgNC41NSAxLjE4IDEuMTggMi41NC0yLjU0djIzLjI3bC0yLjU0LTIuNTQtMS4xOCAxLjE4TDIxIDM1LjkzbDQuNTUtNC41NS0xLjE4LTEuMTgtMi41NCAyLjU0eiIvPjxwYXRoIGZpbGw9IiMyYzU5NjciIGQ9Ik0xNS41NSAxNi40NWwtMS4xOCAxLjE4IDIuNTQgMi41NEg2LjIxdjEuNjZoMTAuN2wtMi41NCAyLjU0IDEuMTggMS4xOEwyMC4wOSAyMWwtNC41NC00LjU1ek0yNS4wOSAyMC4xN2wyLjU0LTIuNTQtMS4xOC0xLjE4TDIxLjkxIDIxbDQuNTQgNC41NSAxLjE4LTEuMTgtMi41NC0yLjU0aDEwLjd2LTEuNjZoLTEwLjd6Ii8+PC9zdmc+"); +} + +.oci-drg-attachment { + background-image: url("data:image/svg+xml;base64,PHN2ZyB2ZXJzaW9uPSIxLjEiIGlkPSJwcmVmaXhfX0xheWVyXzEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeD0iMCIgeT0iMCIgdmlld0JveD0iMCAwIDQyLjcyIDQyIiB4bWw6c3BhY2U9InByZXNlcnZlIj48c3R5bGU+LnByZWZpeF9fc3Qwe2ZpbGw6I2ZmZn0ucHJlZml4X19zdDF7ZmlsbDojYmI1MDFjfTwvc3R5bGU+PHBhdGggY2xhc3M9InByZWZpeF9fc3QwIiBkPSJNMjEuMzQgNDEuNWMtMi4zMSAwLTQuMy0yLjA4LTUuNzMtNi4wMWwtLjExLS4zOGMtMi4xMyAxLjA0LTMuOTcgMS41Ni01LjQ3IDEuNTYtMS4zMyAwLTIuMzktLjQtMy4xOC0xLjE4LTIuMjYtMi4yNi0xLjItNi45NyAyLjkxLTEyLjkybC4yNS0uMzNINS40N2wxLjk1IDEuOTUtMS43NiAxLjc2TC43MSAyMWw0Ljk1LTQuOTUgMS43NiAxLjc2LTEuOTUgMS45NWg0LjU2bC0uMjUtLjI5Yy0uMDktLjEzLS4xOC0uMjYtLjI2LS4zN2wtLjI5LS40MkM1LjU2IDEzLjEgNC42OSA4LjY2IDYuODQgNi41Yy43OC0uNzggMS44Ni0xLjE4IDMuMTktMS4xOCAxLjQ0IDAgMy4xNi40NiA1LjExIDEuMzdsLjM0LjE5Yy4zNC0uOTguNzEtMS44NCAxLjEtMi41OUMxOC4yMyAxLjE1IDIwLjA4LjUgMjEuMzQuNWMyLjMxIDAgNC4zIDIuMDggNS43MyA2LjAxbC4xMS4zN2MyLjEyLTEuMDMgMy45Ni0xLjU2IDUuNDgtMS41NiAxLjMyIDAgMi4zOS40IDMuMTcgMS4xOCAyLjMzIDIuMzMgMS4xOSA3LjEyLTMuMTIgMTMuMjJsNC41Mi4wMi0xLjkzLTEuOTQgMS43Ni0xLjc2TDQyLjAxIDIxbC00Ljk1IDQuOTUtMS43Ni0xLjc1IDEuOTUtMS45NWgtNC41NGMuMzIuNDUuNjIuODkuOSAxLjMyIDMuNTMgNS40NiA0LjM1IDkuODEgMi4yMyAxMS45My0uNzguNzgtMS44NSAxLjE4LTMuMTkgMS4xOC0xLjQzIDAtMy4xNS0uNDYtNS4xMS0xLjM3bC0uMzMtLjE5Yy0uMjYuNzUtLjUzIDEuNDMtLjgyIDIuMDQtMS43MiAzLjU5LTMuNyA0LjM0LTUuMDUgNC4zNHoiIHRyYW5zZm9ybT0icm90YXRlKDkwIDIxIDIxKSIvPjxwYXRoIGNsYXNzPSJwcmVmaXhfX3N0MCIgZD0iTTIxLjM0IDFjMi4xIDAgMy45MyAyLjA0IDUuMjYgNS42OGwuMjYuOTJjMi4xNS0xLjExIDQuMTYtMS43NyA1LjgtMS43NyAxLjE0IDAgMi4xMS4zMiAyLjgyIDEuMDMgMi40NiAyLjQ2LjI3IDcuOTMtMy43NCAxMy4zNmw2LjcxLjAzTDM2IDE3LjgxbDEuMDUtMS4wNUw0MS4zIDIxbC00LjI1IDQuMjVMMzYgMjQuMTlsMi40NS0yLjQ1aC02LjcyYy41Mi43IDEuMDEgMS40IDEuNDYgMi4wOSAzLjQgNS4yNSA0LjIzIDkuMzcgMi4zIDExLjMtLjY5LjY5LTEuNjUgMS4wMy0yLjg0IDEuMDMtMS4zNiAwLTMuMDItLjQ1LTQuOS0xLjMzbC0uODMtLjQ2Yy0uMy45NC0uNjMgMS44LS45OSAyLjU2LTEuNiAzLjM3LTMuMzggNC4wNy00LjU5IDQuMDctMi4wOSAwLTMuOTMtMi4wNS01LjI2LTUuNjhsLS4yNi0uOTJjLTIuMTUgMS4xMS00LjE1IDEuNzgtNS43OSAxLjc4LTEuMTUgMC0yLjExLS4zMi0yLjgzLTEuMDQtMi4zLTIuMy0uNTQtNy4yMiAyLjk2LTEyLjI4bC44Ni0xLjEySDQuMjZsMS4xMiAxLjEyIDEuMzMgMS4zMy0xLjA1IDEuMDVMMS40MSAyMWw0LjI1LTQuMjUgMS4wNSAxLjA1LTEuMzMgMS4zMy0xLjEyIDEuMTJoNi44NmwtLjk2LTEuMTJjLS4xNy0uMjUtLjM0LS40OS0uNS0uNzRsLS4wMS4wMUM2LjEyIDEzLjA0IDUuMjMgOC44MyA3LjIgNi44NmMuNjktLjY5IDEuNjUtMS4wMyAyLjg0LTEuMDMgMS4zNiAwIDMuMDEuNDUgNC45IDEuMzNsLjgzLjQ2Yy4zNy0xLjE2Ljc5LTIuMjEgMS4yNi0zLjA5QzE4LjU2IDEuNjEgMjAuMjIgMSAyMS4zNCAxbTAtMWMtMS40IDAtMy40NC43LTUuMiA0LjA2LS4zMy42Mi0uNjQgMS4zMy0uOTMgMi4xMS0xLjk2LS45LTMuNy0xLjM1LTUuMTctMS4zNS0xLjQ3IDAtMi42Ny40NS0zLjU1IDEuMzMtMi4yIDIuMi0xLjY1IDYuMjggMS41NCAxMS41NmwtLjYxLS42MS0xLjA1LTEuMDUtLjcxLS43MS0uNzEuNzFMLjcgMjAuMyAwIDIxbC43MS43MSA0LjI1IDQuMjUuNzEuNzEuNzEtLjcxIDEuMDUtMS4wNS42My0uNjNjLTMuMjIgNS4yOS0zLjc4IDkuMzYtMS41NiAxMS41OC44OC44OCAyLjA3IDEuMzMgMy41MyAxLjMzczMuMTktLjQ2IDUuMTctMS4zN2MxLjkgNS4xIDQuMzggNi4xOCA2LjE0IDYuMTggMS41IDAgMy42Ny0uOCA1LjQ5LTQuNjMuMjMtLjQ4LjQ0LS45OS42NS0xLjU1IDEuOTYuOSAzLjcgMS4zNSA1LjE3IDEuMzUgMS40NyAwIDIuNjctLjQ1IDMuNTQtMS4zMiAyLjMzLTIuMzMgMS41Ni02Ljc5LTIuMTYtMTIuNTUtLjEyLS4xOC0uMjQtLjM3LS4zNi0uNTVoMi4zOGwtLjc0Ljc0LS43MS43MS43MS43MSAxLjA1IDEuMDUuNzEuNzEuNzEtLjcxIDQuMjUtNC4yNS42OS0uNzEtLjcxLS43MS00LjI1LTQuMjUtLjcxLS43MS0uNzEuNzEtMS4wNCAxLjA2LS43MS43MS43MS43MS43My43My0yLjM2LS4wMWM0LjAxLTUuOTUgNC45My0xMC42NyAyLjUyLTEzLjA4LS44OC0uODgtMi4wNy0xLjMzLTMuNTMtMS4zMy0xLjQ3IDAtMy4yMS40Ni01LjE4IDEuMzZDMjUuNTggMS4wOCAyMy4xIDAgMjEuMzQgMHpNNi42OCAxOS4yNmwuNzQtLjc0LjY4LS42OGMuMjMuMzcuNDYuNzUuNzEgMS4xM2wuMi4zSDYuNjh2LS4wMXptMCAzLjQ4aDIuMzVjLS4zMy40OS0uNjMuOTYtLjkyIDEuNDNsLS42OS0uNjktLjc0LS43NHoiIHRyYW5zZm9ybT0icm90YXRlKDkwIDIxIDIxKSIvPjxnPjxwYXRoIGNsYXNzPSJwcmVmaXhfX3N0MSIgZD0iTTMyLjQ0IDIxLjEzYy4wNi4wOC4xMi4xNi4xNy4yNC4wOS4xMi4xOC4yNC4yNi4zNiAwIDAgMCAuMDEuMDEuMDFoNS41N0wzNiAyNC4xOWwxLjA1IDEuMDVMNDEuMyAyMWwtNC4yNS00LjI1TDM2IDE3LjgxbDIuNDUgMi40NWgtNS41N2MtLjE4LjI1LS4zNi41LS41NC43NC4wMy4wNC4wNi4wOS4xLjEzek0yMS4zNCA0MWMxLjIxIDAgMi45OS0uNyA0LjU4LTQuMDYuOTMtMS45NiAxLjY4LTQuNiAyLjE3LTcuNjEuMzUtMi4yLjU2LTQuNTMuNjItNi45NS0uNTgtLjc0LTEuMi0xLjQ4LTEuODUtMi4yMiAwIC4yOC4wMS41Ni4wMS44NCAwIDIuODItLjIxIDUuNTItLjYxIDguMDQtLjQ2IDIuODQtMS4xNSA1LjMtMi4wMSA3LjEtLjkxIDEuOS0xLjk2IDMtMi45IDMtMS4xIDAtMi40OS0xLjUxLTMuNjEtNC43Mi0uNTYuMzMtMS4xMS42My0xLjY1LjkgMS4zMiAzLjYzIDMuMTYgNS42OCA1LjI1IDUuNjh6TTIzLjgzIDE1Ljczek0xMi4xNSAxOC43MmMtLjMzLS40Ni0uNjQtLjkxLS45My0xLjM1bC0uMDEuMDFjLTMuMjYtNC45Ni0zLjcxLTguMi0yLjctOS4yMS43OC0uNzggMi44MS0uNyA1Ljg5Ljc5LjE2LS42My4zNC0xLjIzLjUzLTEuODEtMy41Mi0xLjY1LTYuMjUtMS43OC03LjczLS4yOS0xLjk3IDEuOTctMS4wOCA2LjE4IDIuNDYgMTEuNTVsLjAxLS4wMWMuMTYuMjUuMzMuNDkuNS43NGgxLjY0Yy4xMS0uMTQuMjItLjI4LjM0LS40MnpNMTMuOTkgMjIuODZjLjA3IDIuMTYuMjYgNC4yNS41NiA2LjIzLjE0LjkxLjMgMS43Ni40OCAyLjU4LjU1LS4zIDEuMTItLjYzIDEuNjktLjk5LS4xMi0uNTktLjIzLTEuMjEtLjMzLTEuODctLjI5LTEuODktLjQ3LTMuODgtLjU0LTUuOTRoLTEuODZ6IiB0cmFuc2Zvcm09InJvdGF0ZSg5MCAyMSAyMSkiLz48cGF0aCBjbGFzcz0icHJlZml4X19zdDEiIGQ9Ik0zMy4xOCAyMy44NGMtMS43My0yLjY3LTQuMDItNS40Ni02LjYyLTguMDYtLjQ4LS40OC0uOTgtLjk2LTEuNDYtMS40MWE1MC40NjIgNTAuNDYyIDAgMDAtNS44My00LjdjLS4zNC0uMjQtLjY4LS40Ni0xLjAxLS42Ny0uMTguNi0uMzQgMS4yMy0uNDkgMS45LjE1LjEuMy4yLjQ2LjMxIDEuODYgMS4yNyAzLjc1IDIuNzkgNS42MSA0LjUyLjQ3LjQ0Ljk1LjkgMS40MSAxLjM3IDIuNTIgMi41MiA0LjcyIDUuMiA2LjM4IDcuNzYgMy4xMyA0LjgzIDMuNTMgNy45OSAyLjU0IDguOTgtLjc3Ljc3LTIuODEuNy01LjktLjc5LS4xNi42My0uMzQgMS4yMy0uNTMgMS44MSAxLjg5Ljg4IDMuNTQgMS4zMyA0LjkgMS4zMyAxLjE5IDAgMi4xNS0uMzQgMi44NC0xLjAzIDEuOTQtMS45NSAxLjEtNi4wNy0yLjMtMTEuMzJ6IiB0cmFuc2Zvcm09InJvdGF0ZSg5MCAyMSAyMSkiLz48cGF0aCBjbGFzcz0icHJlZml4X19zdDEiIGQ9Ik0yMy41NiAyOS4wMWMuNjgtLjU5IDEuMzYtMS4yIDIuMDItMS44Mi4xMS0uOTQuMi0xLjkuMjYtMi44OC0uMTkuMi0uMzkuNC0uNTkuNmE1Ni40NzggNTYuNDc4IDAgMDEtMy4xOCAyLjk0Yy40OS40Ljk5Ljc5IDEuNDkgMS4xNnpNMTAuMTYgMjIuODZjLTMuNSA1LjA3LTUuMjYgOS45OS0yLjk2IDEyLjI4LjcxLjcxIDEuNjggMS4wNCAyLjgzIDEuMDQgMi44IDAgNi42OC0xLjkzIDEwLjU0LTQuNzctLjUtLjM5LTEtLjc5LTEuNS0xLjIxLTQuOTkgMy41OC05LjIzIDQuOTUtMTAuNTUgMy42NC0xLjM2LTEuMzYuMTQtNS43OSAzLjk0LTEwLjk3aC0yLjN6TTIyLjEyIDEwLjZjLjUuMzkgMSAuNzkgMS41IDEuMjEgMy43NC0yLjY4IDcuMDYtNC4xMyA5LjA0LTQuMTMuNjYgMCAxLjE4LjE2IDEuNTEuNDkgMS4zMiAxLjMyLS4wNiA1LjU2LTMuNjQgMTAuNTUuNDIuNS44MiAxIDEuMjEgMS41IDQtNS40MyA2LjItMTAuOSAzLjc0LTEzLjM2LTIuNDYtMi40Ni03LjkzLS4yNy0xMy4zNiAzLjc0ek0xNS40OSAxOS4xNGMuNjEtLjY4IDEuMjYtMS4zNiAxLjk0LTIuMDUgMS4wNi0xLjA2IDIuMTMtMi4wNCAzLjE4LTIuOTQtLjUtLjQxLTEtLjgtMS40OS0xLjE3LTEuMDMuODktMi4wNCAxLjgyLTMgMi43OWE1NC4xNCA1NC4xNCAwIDAwLTMuMDkgMy4zNmgyLjQ2ek0yMS4zNCAxYy0xLjEyIDAtMi43OC42MS00LjMyIDMuNTMtMS4wNiAyLjAyLTEuOSA0LjgzLTIuNDQgOC4xNC0uMiAxLjIzLS4zNSAyLjUxLS40NiAzLjgyLjQzLS40Ni44Ny0uOTIgMS4zMy0xLjM3LjI1LS4yNS41MS0uNS43Ny0uNzUuMDYtLjQ3LjEzLS45NC4yLTEuNDEuNS0zLjExIDEuMjgtNS43MyAyLjI1LTcuNTcuODYtMS42MyAxLjgxLTIuNTMgMi42Ny0yLjUzIDEuMSAwIDIuNDkgMS41MSAzLjYxIDQuNzIuNTYtLjMzIDEuMTEtLjYzIDEuNjUtLjlDMjUuMjcgMy4wNCAyMy40NCAxIDIxLjM0IDF6IiB0cmFuc2Zvcm09InJvdGF0ZSg5MCAyMSAyMSkiLz48cGF0aCBjbGFzcz0icHJlZml4X19zdDEiIGQ9Ik0yOC4xMyAxMi45MmMtLjE0LS45MS0uMy0xLjc3LS40OC0yLjU5LS41NS4zLTEuMTIuNjMtMS42OS45OS4xMi41OS4yMyAxLjIyLjM0IDEuODguMDYuMzguMTEuNzcuMTYgMS4xNi4yNi4yNS41MS41Ljc2Ljc1LjQ1LjQ1Ljg5LjkxIDEuMzMgMS4zNy0uMS0xLjIxLS4yNC0yLjQtLjQyLTMuNTZ6TTIzLjY3IDMyLjUxYy4yNS4xNy41MS4zMy43Ni40OS4xOC0uNi4zNC0xLjIzLjQ5LTEuOS0uMDctLjA1LS4xNC0uMDktLjIxLS4xNC0xLjg1LTEuMjQtMy43My0yLjczLTUuNTktNC40NC0uNTYtLjUyLTEuMTItMS4wNS0xLjY5LTEuNjEtLjItLjItLjM5LS40LS41OS0uNi4wNi45OC4xNSAxLjk0LjI2IDIuODguMjUuMjQuNS40Ny43NS43IDEuOTMgMS43NyAzLjg5IDMuMzIgNS44MiA0LjYyek0yNS45MyAyMS43NGMwLS4yNS4wMS0uNDkuMDEtLjc0czAtLjUtLjAxLS43NEg0LjI2bDEuMTItMS4xMiAxLjMzLTEuMzMtMS4wNS0xLjA1TDEuNDEgMjFsNC4yNSA0LjI1IDEuMDUtMS4wNS0xLjMzLTEuMzMtMS4xMi0xLjEyaDIxLjY3eiIgdHJhbnNmb3JtPSJyb3RhdGUoOTAgMjEgMjEpIi8+PC9nPjwvc3ZnPg=="); +} + +.oci-dhcp-options { + background-image: url("data:image/svg+xml;base64,PHN2ZyB2ZXJzaW9uPSIxLjEiIGlkPSJwcmVmaXhfX0xheWVyXzEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeD0iMCIgeT0iMCIgdmlld0JveD0iMCAwIDQyLjkzIDQyIiB4bWw6c3BhY2U9InByZXNlcnZlIj48c3R5bGU+LnByZWZpeF9fc3Qwe2ZpbGw6I2ZmZn08L3N0eWxlPjxwYXRoIGNsYXNzPSJwcmVmaXhfX3N0MCIgZD0iTTI1LjU0IDQxLjVjLTIuMDYgMC0zLjc0LTEuNjgtMy43NC0zLjc0IDAtMS4yLjU4LTIuMzIgMS41NC0zLjAybC0uNS0xLjc5Yy0uNzkuMTQtMS42LjIyLTIuNC4yMi00LjEgMC03Ljg5LTEuODItMTAuNDYtNWwtLjg0LjU2Yy4wOS4zMi4xMy42NS4xMy45OCAwIDIuMTEtMS43MiAzLjgzLTMuODMgMy44M3MtMy44My0xLjcyLTMuODMtMy44M2MwLTIuMTEgMS43Mi0zLjgzIDMuODMtMy44My44NSAwIDEuNjYuMjggMi4zMy43OWwuODQtLjU2YTEzLjQ4NyAxMy40ODcgMCAwMS0xLjMzLTkuMmwtMS40Ni0uNDVjLS41My41Ni0xLjI3Ljg4LTIuMDQuODgtMS41NSAwLTIuODEtMS4yNi0yLjgxLTIuODFzMS4yNi0yLjgyIDIuODEtMi44MmMxLjM5IDAgMi41NyAxLjA0IDIuNzggMi4zOGwxLjQ2LjQ1Yy40Ny0xLjEzIDEuMDktMi4xOSAxLjg2LTMuMTZsLTEuMTctMS4xMWMtLjg2LjU2LTEuODUuODYtMi44OS44Ni0yLjkzIDAtNS4zMS0yLjM4LTUuMzEtNS4zMlMyLjg4LjUgNS44Mi41YTUuMzEzIDUuMzEzIDAgMDE0LjYgNy45N2wxLjE3IDEuMTFjMi40Ni0yLjE2IDUuNTktMy4zNCA4Ljg2LTMuMzQgMi44NyAwIDUuNi44OSA3LjkxIDIuNThsLjc2LS44N2EzLjkzIDMuOTMgMCAxMTMuNDYgMi4wN2MtLjU3IDAtMS4xMy0uMTMtMS42NS0uMzdsLS43MS44YzIuMzggMi41MSAzLjY5IDUuNzggMy42OSA5LjI1IDAgMS4xMy0uMTQgMi4yNS0uNDIgMy4zNWwxLjIzLjQ0Yy44MS0xLjA3IDIuMDYtMS43IDMuNDEtMS43IDIuMzcgMCA0LjMgMS45MyA0LjMgNC4zcy0xLjkzIDQuMy00LjMgNC4zLTQuMy0xLjkzLTQuMy00LjNjMC0uMDkgMC0uMTguMDEtLjI4bC0xLjItLjQzYTEzLjQ5IDEzLjQ5IDAgMDEtNy40MSA2Ljg5bC40OCAxLjc0YTMuNzQgMy43NCAwIDAxMy41NiAzLjc0IDMuNzM0IDMuNzM0IDAgMDEtMy43MyAzLjc1eiIvPjxwYXRoIGNsYXNzPSJwcmVmaXhfX3N0MCIgZD0iTTUuODEgMWMyLjY1IDAgNC44MSAyLjE2IDQuODEgNC44MSAwIDEuMDItLjMyIDEuOTYtLjg2IDIuNzRsMS44IDEuNzFjMi4zMi0yLjE4IDUuNDQtMy41MiA4Ljg3LTMuNTIgMy4wMSAwIDUuNzggMS4wMyA3Ljk4IDIuNzZsMS4zMS0xLjQ5Yy0uMzctLjU1LS41OS0xLjIxLS41OS0xLjkxIDAtMS44OSAxLjU0LTMuNDMgMy40My0zLjQzIDEuOSAwIDMuNDQgMS41MyAzLjQ0IDMuNDJzLTEuNTQgMy40My0zLjQzIDMuNDNjLS42NSAwLTEuMjUtLjE4LTEuNzYtLjQ5bC0xLjI3IDEuNDVjMi4zOSAyLjM1IDMuODcgNS42MiAzLjg3IDkuMjMgMCAxLjI3LS4xOSAyLjUtLjUzIDMuNjZsMi4wMy43M2MuNjctMS4wOCAxLjg2LTEuOCAzLjIyLTEuOCAyLjA5IDAgMy44IDEuNyAzLjggMy44IDAgMi4wOS0xLjcgMy44LTMuOCAzLjhhMy43OTggMy43OTggMCAwMS0zLjc1LTQuNDFsLTIuMDEtLjcyYTEzLjA0NCAxMy4wNDQgMCAwMS03Ljc1IDcuMjFsLjcxIDIuNTZjLjA3IDAgLjEzLS4wMS4yLS4wMWEzLjI0IDMuMjQgMCAxMTAgNi40OCAzLjI0IDMuMjQgMCAwMS0zLjI0LTMuMjRjMC0xLjIuNjYtMi4yNCAxLjYyLTIuOGwtLjcyLTIuNTljLS44OS4xOS0xLjgxLjMtMi43Ni4zLTQuMjMgMC03Ljk4LTIuMDMtMTAuMzUtNS4xN2wtMS41NCAxLjAyYy4xNC4zNy4yMi43Ny4yMiAxLjE4IDAgMS44NC0xLjUgMy4zMy0zLjMzIDMuMzMtMS44NCAwLTMuMzMtMS41LTMuMzMtMy4zMyAwLTEuODQgMS41LTMuMzMgMy4zMy0zLjMzLjg5IDAgMS42OS4zNSAyLjI5LjkybDEuNTQtMS4wMmExMi45NDkgMTIuOTQ5IDAgMDEtMS43OS02LjU2YzAtMS4wOC4xNC0yLjEzLjM5LTMuMTRsLTIuMjItLjY5YTIuMzA1IDIuMzA1IDAgMDEtNC4xOC0xLjM1IDIuMzExIDIuMzExIDAgMDE0LjYyLS4wNWwyLjIyLjY5Yy41My0xLjQgMS4yOS0yLjY5IDIuMjUtMy44MmwtMS44LTEuNzFjLS44MS42My0xLjgzIDEtMi45NCAxQzMuMTYgMTAuNjMgMSA4LjQ3IDEgNS44MSAxIDMuMTYgMy4xNiAxIDUuODEgMW0wLTFDMi42MSAwIDAgMi42MSAwIDUuODFjMCAyLjQ0IDEuNTEgNC41MyAzLjY0IDUuMzlhMy4zMTMgMy4zMTMgMCAwMC0zLjE3IDMuMzFjMCAxLjgzIDEuNDkgMy4zMSAzLjMxIDMuMzEuOCAwIDEuNTctLjMgMi4xNy0uODJsLjc1LjIzYy0uMTQuODEtLjIyIDEuNjMtLjIyIDIuNDUgMCAyLjE3LjUxIDQuMyAxLjQ3IDYuMjNsLS4xOC4xMmMtLjY5LS40NS0xLjUtLjY5LTIuMzMtLjY5LTIuMzkgMC00LjMzIDEuOTQtNC4zMyA0LjMzUzMuMDUgMzQgNS40NCAzNHM0LjMzLTEuOTQgNC4zMy00LjMzYzAtLjI1LS4wMi0uNS0uMDctLjc1bC4xOC0uMTJjMi42NiAzLjA4IDYuNDYgNC44MyAxMC41NiA0LjgzLjY4IDAgMS4zNi0uMDUgMi4wNC0uMTVsLjI5IDEuMDRjLS45Mi44LTEuNDcgMS45Ny0xLjQ3IDMuMjEgMCAyLjM0IDEuOSA0LjI0IDQuMjQgNC4yNHM0LjI0LTEuOSA0LjI0LTQuMjRjMC0yLjE0LTEuNi0zLjkyLTMuNjctNC4ybC0uMjctLjk4YzMuMDUtMS4yOCA1LjU2LTMuNjIgNy4wNi02LjU3bC40My4xNmE0LjgwNCA0LjgwNCAwIDAwNC44IDQuNzJjMi42NCAwIDQuOC0yLjE1IDQuOC00LjggMC0yLjY0LTIuMTUtNC44LTQuOC00LjgtMS4zOSAwLTIuNjcuNTktMy41OCAxLjYxbC0uNDgtLjE3Yy4yMi0xIC4zMy0yLjAxLjMzLTMuMDMgMC0zLjQ1LTEuMjQtNi43LTMuNTItOS4yNWwuMTctLjJjLjQ4LjE4Ljk5LjI3IDEuNTEuMjcgMi40NCAwIDQuNDMtMS45OSA0LjQzLTQuNDNTMzUgMS42MyAzMi41NiAxLjYzYTQuNDM5IDQuNDM5IDAgMDAtNC4wNiA2LjIxbC0uMjUuMjhjLTIuMzItMS41OC01LTIuNDEtNy44My0yLjQxLTMuMjQgMC02LjM1IDEuMTItOC44NCAzLjE3bC0uNTctLjU0Yy4zOS0uNzkuNTktMS42Ni41OS0yLjU2QzExLjYzIDIuNjEgOS4wMiAwIDUuODEgMHptMCAxMS42M2MxIDAgMS45Ni0uMjUgMi44Mi0uNzNsLjU2LjU0Yy0uNTguNzgtMS4wNyAxLjYxLTEuNDcgMi40OWwtLjc1LS4yM2MtLjIzLS44OS0uODMtMS42NC0xLjYzLTIuMDguMTcgMCAuMzIuMDEuNDcuMDF6Ii8+PGc+PHBhdGggZD0iTTM4LjEzIDIyLjNjLTEuMzYgMC0yLjU1LjcyLTMuMjIgMS44bC0yLjAzLS43M2MuMzQtMS4xNi41My0yLjM5LjUzLTMuNjYgMC0zLjYxLTEuNDgtNi44OC0zLjg3LTkuMjNsMS4yNy0xLjQ1Yy41Mi4zMSAxLjEyLjQ5IDEuNzYuNDkgMS44OSAwIDMuNDMtMS41NCAzLjQzLTMuNDNzLTEuNTQtMy40My0zLjQzLTMuNDNjLTEuODkgMC0zLjQzIDEuNTQtMy40MyAzLjQzIDAgLjcxLjIyIDEuMzcuNTkgMS45MWwtMS4zMSAxLjVjLTIuMi0xLjczLTQuOTctMi43Ni03Ljk4LTIuNzYtMy40MyAwLTYuNTUgMS4zNC04Ljg3IDMuNTJsLTEuOC0xLjcxYy41NC0uNzguODYtMS43Mi44Ni0yLjc0QzEwLjYzIDMuMTYgOC40NyAxIDUuODEgMVMxIDMuMTYgMSA1LjgxczIuMTYgNC44MSA0LjgxIDQuODFjMS4xMSAwIDIuMTItLjM4IDIuOTQtMWwxLjggMS43MWMtLjk1IDEuMTItMS43MiAyLjQxLTIuMjUgMy44MmwtMi4yMi0uNjlhMi4zMTEgMi4zMTEgMCAwMC00LjYyLjA1YzAgMS4yNyAxLjA0IDIuMzEgMi4zMSAyLjMxLjc3IDAgMS40NS0uMzggMS44Ny0uOTZsMi4yMi42OWMtLjI1IDEuMDEtLjM5IDIuMDYtLjM5IDMuMTQgMCAyLjM5LjY1IDQuNjMgMS43OSA2LjU2bC0xLjU0IDEuMDJjLS42LS41Ny0xLjQtLjkyLTIuMjktLjkyLTEuODQgMC0zLjMzIDEuNS0zLjMzIDMuMzMgMCAxLjg0IDEuNSAzLjMzIDMuMzMgMy4zM3MzLjMzLTEuNSAzLjMzLTMuMzNjMC0uNDItLjA4LS44Mi0uMjItMS4xOGwxLjU0LTEuMDJjMi4zNyAzLjE0IDYuMTMgNS4xNyAxMC4zNSA1LjE3Ljk1IDAgMS44Ny0uMSAyLjc2LS4zbC43MiAyLjU5YTMuMjM2IDMuMjM2IDAgMDAxLjYyIDYuMDQgMy4yNCAzLjI0IDAgMTAwLTYuNDhjLS4wNyAwLS4xMy4wMS0uMi4wMWwtLjcxLTIuNTZjMy40OS0xLjE5IDYuMzItMy44NCA3Ljc1LTcuMjFsMi4wMS43MmEzLjgwNSAzLjgwNSAwIDAwMy43NSA0LjQxYzIuMDkgMCAzLjgtMS43IDMuOC0zLjhzLTEuNzEtMy43Ny0zLjgtMy43N3ptLTcuNS0xNi4yMWMwLTEuMDcuODctMS45NCAxLjk0LTEuOTQgMS4wNyAwIDEuOTQuODcgMS45NCAxLjk0cy0uODcgMS45NC0xLjk0IDEuOTRjLTEuMDcuMDEtMS45NC0uODctMS45NC0xLjk0ek00LjYxIDE0LjUyYzAgLjQ2LS4zNy44My0uODMuODMtLjQ2IDAtLjgzLS4zNy0uODMtLjgzcy4zNy0uODMuODMtLjgzYy40NiAwIC44My4zNy44My44M3pNNy4zIDI5LjdjMCAxLjAyLS44MyAxLjg1LTEuODUgMS44NVMzLjYgMzAuNzIgMy42IDI5LjdzLjgzLTEuODUgMS44NS0xLjg1IDEuODUuODMgMS44NSAxLjg1em0yMCA4LjA2YzAgLjk3LS43OSAxLjc2LTEuNzYgMS43NnMtMS43Ni0uNzktMS43Ni0xLjc2Ljc5LTEuNzYgMS43Ni0xLjc2IDEuNzYuNzkgMS43NiAxLjc2ek04Ljk5IDIwLjQ0aDUuMzZjLjE1IDMuODggMS41MSA3LjUzIDMuOSAxMC41My01LjA1LS45OC04LjkyLTUuMjgtOS4yNi0xMC41M3ptOS4yNi0xMi4wMWMtMi4zOSAzLTMuNzUgNi42NS0zLjkgMTAuNTNIOC45OWMuMzQtNS4yNSA0LjIxLTkuNTUgOS4yNi0xMC41M3pNMzEuOSAxOC45NmgtNS4zNmMtLjE1LTMuODgtMS41MS03LjUzLTMuOS0xMC41MyA1LjA1Ljk4IDguOTIgNS4yOCA5LjI2IDEwLjUzem0tMTYuMDcgMGMuMTctNC4wNSAxLjc4LTcuODEgNC41Ny0xMC43NGguMDhjMi43OSAyLjkzIDQuMzkgNi42OSA0LjU3IDEwLjc0aC05LjIyem0wIDEuNDhoOS4yMmMtLjE3IDQuMDQtMS43OCA3LjgxLTQuNTcgMTAuNzRoLS4wOGExNi41MjEgMTYuNTIxIDAgMDEtNC41Ny0xMC43NHptMTAuNzEgMGg1LjM2Yy0uMzQgNS4yNS00LjIxIDkuNTUtOS4yNiAxMC41MyAyLjM5LTMgMy43NS02LjY0IDMuOS0xMC41M3pNNS44MSA5LjE1Yy0xLjg0IDAtMy4zMy0xLjUtMy4zMy0zLjMzczEuNS0zLjMzIDMuMzMtMy4zMyAzLjMzIDEuNSAzLjMzIDMuMzMtMS40OSAzLjMzLTMuMzMgMy4zM3ptMzIuMzIgMTkuMjZhMi4zMTEgMi4zMTEgMCAwMTAtNC42MmMxLjI3IDAgMi4zMSAxLjA0IDIuMzEgMi4zMXMtMS4wMyAyLjMxLTIuMzEgMi4zMXoiIGZpbGw9IiNiYjUwMWMiLz48L2c+PC9zdmc+"); +} + +.oci-dynamic-group { + background-image: url("data:image/svg+xml;base64,PHN2ZyBkYXRhLW5hbWU9IkxheWVyIDEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmlld0JveD0iMCAwIDU2LjkzIDQyIj48cGF0aCBkPSJNLjUgNDEuNVYyNi4zMUE1LjM2IDUuMzYgMCAwMTUuODUgMjFIOHYtLjMxYTcuNDQgNy40NCAwIDExNy43My0uMTVoLjVhNi4zIDYuMyAwIDAxNS0yLjQ1aDIuNlYxN0E4Ljg5IDguODkgMCAxMTMzIDE3djFoMi42NmE2LjQ0IDYuNDQgMCAwMTUgMi40NWguNWE3LjQ0IDcuNDQgMCAxMTcuOC4xMVYyMWgyYTUuMzYgNS4zNiAwIDAxNS4zNSA1LjM1VjQxLjV6IiBmaWxsPSIjZmZmIi8+PHBhdGggZD0iTTI4LjQyIDFhOC4zOSA4LjM5IDAgMDE0LjEgMTUuNzJ2MS44M2gzLjE2YTYgNiAwIDAxNC44IDIuNDVoMy4yM2E2Ljk0IDYuOTQgMCAxMTMgMGgxLjh2LjQ2aDIuNTVhNC44NiA0Ljg2IDAgMDE0Ljg1IDQuODVWNDFIMVYyNi4zMWE0Ljg2IDQuODYgMCAwMTQuODUtNC44NWgyLjYyVjIxaDEuNzNhNi45NCA2Ljk0IDAgMTEzIDBoMy4yM2E1Ljc4IDUuNzggMCAwMTQuNzItMi40NWgzLjF2LTEuODdBOC4zOSA4LjM5IDAgMDEyOC40MiAxbTAtMWE5LjM5IDkuMzkgMCAwMC01LjE1IDE3LjI0di4zMWgtMi4xYTYuNjMgNi42MyAwIDAwLTIuNS40OSA3Ljk0IDcuOTQgMCAxMC0xNC45LTMuODEgOCA4IDAgMDAzIDYuMjNoLTFBNS44NiA1Ljg2IDAgMDAwIDI2LjMxVjQyaDU2LjkzVjI2LjMxYTUuODYgNS44NiAwIDAwLTUuODUtNS44NWgtMWE3Ljk0IDcuOTQgMCAxMC0xMi44NC02LjIzIDcuODcgNy44NyAwIDAwMSAzLjgzIDcgNyAwIDAwLTIuNi0uNTFoLTIuMTJ2LS4yNkE5LjQgOS40IDAgMDAyOC40MiAweiIgZmlsbD0iI2ZmZiIvPjxwYXRoIGQ9Ik00NS4yMiAyMS4xN2E2Ljk1IDYuOTUgMCAxMC02Ljk0LTYuOTQgNyA3IDAgMDA2Ljk0IDYuOTR6bTAtMTIuMTdBNS4yNyA1LjI3IDAgMTE0MCAxNC4yMyA1LjI4IDUuMjggMCAwMTQ1LjIyIDl6IiBmaWxsPSIjQkI1MTI3Ii8+PHBhdGggZD0iTTUxLjA4IDIxLjQ2aC0xLjQzbC0uMjUuMzNhNS4yNyA1LjI3IDAgMDEtOC4zNiAwbC0uMjUtLjMzaC0uMDhhNS44MiA1LjgyIDAgMDAtNS0yLjkxSDM0bC0uMjUuMzNhNi43MiA2LjcyIDAgMDEtMTAuNjYgMGwtLjI1LS4zM2gtMS42N2E1LjgxIDUuODEgMCAwMC01IDIuOTFsLS4yNS4zM2E1LjI3IDUuMjcgMCAwMS04LjM2IDBsLS4yNS0uMzNINS44NUE0Ljg2IDQuODYgMCAwMDEgMjYuMzFWNDFoMS42OFYyNi4zMWEzLjE4IDMuMTggMCAwMTMuMTctMy4xOGguNjJhNyA3IDAgMDA4Ljg5IDEuMzZWNDFIMTdWMjQuMzZhNC4xMyA0LjEzIDAgMDE0LjEzLTQuMTNIMjJhOC40MSA4LjQxIDAgMDAxMi43OSAwaC44NmE0LjEzIDQuMTMgMCAwMTQuMTMgNC4xM1Y0MWgxLjY4VjI0LjQzYTYuOTMgNi45MyAwIDAwOS0xLjNoLjYyYTMuMTkgMy4xOSAwIDAxMy4xOCAzLjE4VjQxaDEuNjdWMjYuMzFhNC44NiA0Ljg2IDAgMDAtNC44NS00Ljg1eiIgZmlsbD0iI0JCNTEyNyIvPjxwYXRoIGQ9Ik0xMS43MSAyMS4xN2E2Ljk1IDYuOTUgMCAxMC02Ljk0LTYuOTQgNyA3IDAgMDA2Ljk0IDYuOTR6bTAtMTIuMTdhNS4yNyA1LjI3IDAgMTEtNS4yNyA1LjI3QTUuMjcgNS4yNyAwIDAxMTEuNzEgOXpNMjguNDIgMTcuNzlBOC40IDguNCAwIDEwMjAgOS40YTguNCA4LjQgMCAwMDguNDIgOC4zOXptMC0xNS4xMUE2LjcyIDYuNzIgMCAxMTIxLjcgOS40YTYuNzMgNi43MyAwIDAxNi43Mi02Ljcyek0yMS4xNyAzMC42NGgtLjg0VjQxaDEuNjh2LTguNjhsLS44NC0xLjY4ek0zNS42MiAzMC42NGwtLjg0IDEuNjhWNDFoMS42OFYzMC42NGgtLjg0ek01MC4wNyAzMy45OVY0MWgxLjY4di04LjY4aC0uODRsLS44NCAxLjY3ek01LjE4IDMyLjMyVjQxaDEuNjd2LTcuMDFsLS44NC0xLjY3aC0uODN6IiBmaWxsPSIjQkI1MTI3Ii8+PC9zdmc+"); +} + +.oci-fast-connect { + background-image: url("data:image/svg+xml;base64,PHN2ZyB2ZXJzaW9uPSIxLjEiIGlkPSJwcmVmaXhfX0xheWVyXzEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeD0iMCIgeT0iMCIgdmlld0JveD0iMCAwIDYwLjMzIDQyIiB4bWw6c3BhY2U9InByZXNlcnZlIj48c3R5bGU+LnByZWZpeF9fc3Qwe2ZpbGw6I2ZmZn0ucHJlZml4X19zdDF7ZmlsbDojMmM1OTY3fTwvc3R5bGU+PHBhdGggY2xhc3M9InByZWZpeF9fc3QwIiBkPSJNMzAuMDggNDEuNWE5LjcxMyA5LjcxMyAwIDAxLTcuNTgtMy42NWMtLjM2LjA1LS43Mi4wNy0xLjA3LjA3YTguMjgzIDguMjgzIDAgMDEtNi4yOC0yLjg5SDYuOTF2LTIuNzdoNi42NmE4LjQyNSA4LjQyNSAwIDAxLS40LTMuNDljMC0uMDUuMDEtLjEuMDItLjE1SDMuODF2LTIuNzdoNy42N2E3Ljk0OCA3Ljk0OCAwIDAxLTEuODUtMy42NEguNXYtMi43N2g5LjAzYy4xOC0xLjI0LjY0LTIuNCAxLjM1LTMuNDJIMy44MXYtMi43N2gxMC4wMmMtLjE1LS44LS4xOC0xLjYyLS4xLTIuNDQuMDQtLjQuMTEtLjguMjEtMS4ySDYuOTFWNi44NWg4LjI2Yy40OC0uNzEgMS4wNS0xLjM0IDEuNy0xLjg4YTguNTUyIDguNTUyIDAgMDE2LjM1LTEuOWMuNTYuMDYgMS4xMS4xNyAxLjY0LjMzQTEyLjM4MyAxMi4zODMgMCAwMTM0LjA1LjU2YzQuMDIuNDEgNy41NyAyLjc1IDkuNTQgNi4yOWg5LjYydjIuNzdoLTguNDljLjE5LjY4LjMxIDEuMzguMzggMi4wNy44Ni40MSAxLjY2LjkzIDIuMzggMS41N2g5LjA0djIuNzdoLTYuODVjLjU3IDEuMDYuOTUgMi4yMiAxLjExIDMuNDJoOS4wNXYyLjc3aC05LjA1YTEwLjA5IDEwLjA5IDAgMDEtMS4yNSAzLjY0aDYuOTl2Mi43N2gtOS4zNmwtLjMxLjI1YTcuODYgNy44NiAwIDAxLS4yMyAzLjRoNi40M2wuMTIuMzNjLjAzLjA4LjEyLjM0LjAzIDEuOTdsLS4wMy40N2gtOGE4LjAyIDguMDIgMCAwMS03IDIuOTFjLS4xOS0uMDItLjM3LS4wNC0uNTYtLjA4YTkuNTc0IDkuNTc0IDAgMDEtNy41MyAzLjYyeiIvPjxwYXRoIGNsYXNzPSJwcmVmaXhfX3N0MCIgZD0iTTMyLjggMWMuNCAwIC44LjAyIDEuMi4wNiA0LjA3LjQxIDcuNDkgMi44NyA5LjI5IDYuMjloOS40MXYxLjc3aC04LjY2Yy4zMS45Mi41MSAxLjkuNTggMi45IDEgLjQzIDEuODkgMS4wMyAyLjY2IDEuNzRoOC43M3YxLjc3aC03LjIzYTkuNjkgOS42OSAwIDAxMS41NSA0LjQyaDguOTl2MS43N2gtOC45OXYuMDZhOS40NzIgOS40NzIgMCAwMS0xLjcyIDQuNThoNy40MXYxLjc3aC05LjA0Yy0uMjIuMTgtLjQ0LjM2LS42OC41My4xNC43MS4xNyAxLjQzLjEgMi4xNC0uMDcuNjktLjI0IDEuMzYtLjQ4IDEuOThoNi43OGMuMDkuMjQgMCAxLjc3IDAgMS43N2gtNy43N2E3LjQ5MiA3LjQ5MiAwIDAxLTUuOTYgMi45OCA3Ljc2IDcuNzYgMCAwMS0xLjU4LS4xN0E5LjE1NSA5LjE1NSAwIDAxMzAuMDggNDFjLS4zMSAwLS42Mi0uMDItLjkzLS4wNWE5LjE0NCA5LjE0NCAwIDAxLTYuNDMtMy42NGMtLjQzLjA3LS44Ni4xMS0xLjI5LjExLS4yNiAwLS41MS0uMDEtLjc3LS4wNGE3Ljc4NiA3Ljc4NiAwIDAxLTUuMjctMi44M2MtLjAxLS4wMS0uMDEtLjAyLS4wMi0uMDJINy40MXYtMS43N2g2Ljg5YTcuNzY0IDcuNzY0IDAgMDEtLjYzLTMuOTRjLjAyLS4yNC4wNi0uNDcuMTEtLjdINC4zMXYtMS43N2g4LjQyYTcuMzk2IDcuMzk2IDAgMDEtMi42OC00LjY0SDF2LTEuNzdoOC45OHYtLjEyYTcuNDUgNy40NSAwIDAxMS45NC00LjNINC4zMXYtMS43N0gxNC40Yy4wMi0uMDEuMDMtLjAyLjA1LS4wM2E4LjEgOC4xIDAgMDEtLjIyLTIuODZjLjA2LS42LjE5LTEuMTkuMzgtMS43NWgtNy4yVjcuMzVoOC4wM2MuNDctLjc0IDEuMDUtMS40MiAxLjc1LTEuOTlhOC4xIDguMSAwIDAxNS4xNS0xLjg0Yy4yOCAwIC41Ni4wMS44NC4wNC42Mi4wNiAxLjIyLjE5IDEuODEuMzlDMjcuMTYgMi4wNCAyOS45MyAxIDMyLjggMW0wLTFjLTIuOTMgMC01Ljc3IDEtOC4wNSAyLjg0LS40OC0uMTMtLjk4LS4yMi0xLjQ4LS4yNy0uMzEtLjAzLS42My0uMDUtLjk0LS4wNS0yLjEzIDAtNC4xMy43MS01Ljc4IDIuMDdhOS4xOSA5LjE5IDAgMDAtMS42NSAxLjc2SDYuNHYzLjc3aDYuOTJhOC44MjQgOC44MjQgMCAwMC0uMDcgMi42NEgzLjMxdjMuNzdoNi42N2MtLjQxLjc1LS43MSAxLjU3LS44OCAyLjQySDB2My43N2g5LjI0Yy4yNS45NS42NiAxLjg0IDEuMjEgMi42NEgzLjMxdjMuNzdoOS4zM2MtLjA1Ljg5LjA0IDEuNzguMjYgMi42NEg2LjQxdjMuNzdoOC41YTguNzI4IDguNzI4IDAgMDA2LjUyIDIuODljLjI4IDAgLjU3LS4wMS44Ni0uMDQgMS43IDIuMDEgNC4xMyAzLjMgNi43NiAzLjU3LjM0LjAzLjY5LjA1IDEuMDQuMDUgMy4wMSAwIDUuOC0xLjMgNy43NC0zLjU4LjEuMDEuMjEuMDMuMzEuMDRhOC40ODYgOC40ODYgMCAwMDcuMjktMi45NGg4LjIzbC4wNS0uOTRjLjEtMS43NCAwLTIuMDItLjA2LTIuMTdsLS4yNC0uNjVINDcuMjdjLjA2LS4yOS4xMS0uNTguMTQtLjg4LjA2LS41OC4wNS0xLjE3LS4wMS0xLjc2aDkuNjN2LTMuNzdoLTYuNjZjLjQtLjg0LjY5LTEuNzMuODUtMi42NGg5LjEydi0zLjc3aC05LjEyYy0uMTUtLjgzLS40LTEuNjUtLjc0LTIuNDJoNi41NXYtMy43N2gtOS4zNWExMC44MiAxMC44MiAwIDAwLTIuMS0xLjRjLS4wNS0uNDEtLjEyLS44My0uMjEtMS4yNGg4LjM1VjYuMzVoLTkuODNBMTIuODAzIDEyLjgwMyAwIDAwMzQuMTEuMDdDMzMuNjcuMDIgMzMuMjMgMCAzMi44IDB6Ii8+PGc+PHBhdGggY2xhc3M9InByZWZpeF9fc3QxIiBkPSJNNy40MSA3LjM1djEuNzdoNS44MWMuMTctLjYxLjQtMS4yLjY5LTEuNzdoLTYuNXpNNTIuNyA5LjEyVjcuMzVoLTcuOTNjLjI2LjU3LjQ4IDEuMTYuNjYgMS43N2g3LjI3ek0xMS44NyAxMy43Nkg0LjMxdjEuNzdoNS45MWMuNDctLjY3IDEuMDItMS4yNiAxLjY1LTEuNzd6TTU2LjAyIDE1LjUydi0xLjc3aC02Ljg5Yy40Ni41NS44NyAxLjE0IDEuMjIgMS43N2g1LjY3ek01MS42NyAyMS43MWg3LjY2di0xLjc3aC03LjY2Yy4wNS41OS4wNSAxLjE4IDAgMS43N3pNOC42NSAxOS45NEgxdjEuNzdoNy43Yy0uMDctLjU4LS4wOS0xLjE3LS4wNS0xLjc3ek0xMC44MSAyNi4zNWgtNi41djEuNzdoOC4xMWMuMDItLjEuMDMtLjE5LjA1LS4yOS0uNjItLjQyLTEuMTgtLjkyLTEuNjYtMS40OHpNNTYuMDIgMjguMTJ2LTEuNzdINTAuMmMtLjM3LjYzLS44MSAxLjIyLTEuMyAxLjc3aDcuMTJ6TTUyLjcgMzQuNTN2LTEuNzdoLTUuMzdjLS4yLjYyLS40NyAxLjIyLS44IDEuNzdoNi4xN3pNNy40MSAzMi43NnYxLjc3aDYuMzNjLS4zNi0uNTYtLjY1LTEuMTUtLjg4LTEuNzdINy40MXoiLz48cGF0aCBjbGFzcz0icHJlZml4X19zdDEiIGQ9Ik01MC4zNCAyMS43N2E5LjU4IDkuNTggMCAwMC01LjcxLTkuNzVDNDQuMjMgNi4zIDM5Ljc2IDEuNjQgMzQgMS4wNmMtMy4yOS0uMzMtNi41NC43Mi05LjAyIDIuODktLjU4LS4yLTEuMTktLjMzLTEuODEtLjM5YTguMTIgOC4xMiAwIDAwLTUuOTkgMS44IDguMTI3IDguMTI3IDAgMDAtMi45NiA1LjUxYy0uMS45Ny0uMDIgMS45My4yMiAyLjg2YTcuNDM3IDcuNDM3IDAgMDAtNC40NiA2LjFBNy40NTMgNy40NTMgMCAwMDE0IDI3LjJjLS4xNy41My0uMjkgMS4wNy0uMzQgMS42Mi0uMjEgMi4wOC40IDQuMTEgMS43MiA1LjczYTcuNzQ3IDcuNzQ3IDAgMDA1LjI3IDIuODNjLjY4LjA3IDEuMzcuMDUgMi4wNS0uMDdhOS4xNDQgOS4xNDQgMCAwMDYuNDMgMy42NGMuMzEuMDMuNjIuMDUuOTMuMDUgMi44OCAwIDUuNTgtMS4zNSA3LjMzLTMuNjZhNy43NiA3Ljc2IDAgMDAxLjU4LjE3YzMuNzggMCA3LjA0LTIuODggNy40My02LjcyLjA3LS43MS4wNC0xLjQyLS4xLTIuMTRhOS41NTQgOS41NTQgMCAwMDQuMDQtNi44OHptLTUuODkgNi43MmMuMi43MS4yNyAxLjQyLjIgMi4xMmE1LjY3NCA1LjY3NCAwIDAxLTIuMDcgMy44NSA1LjY5IDUuNjkgMCAwMS00LjE4IDEuMjZjLS4zNy0uMDQtLjc0LS4xMS0xLjExLS4yM2wtLjY0LS4yLS4zNi41NmE3LjM5MiA3LjM5MiAwIDAxLTYuOTcgMy4zNSA3LjQxIDcuNDEgMCAwMS01LjQ3LTMuMzRsLS4zNC0uNTMtLjYxLjE1Yy0uNjkuMTctMS4zOC4yMi0yLjA1LjE1YTYgNiAwIDAxLTQuMDgtMi4xOSA1Ljk4MiA1Ljk4MiAwIDAxLTEuMzMtNC40M2MuMDctLjY1LjI0LTEuMjkuNTItMS45bC4zOS0uODYtLjg5LS4zM2E1LjcwMiA1LjcwMiAwIDAxLTMuNjEtNC4yaDEyLjM5bC0yLjQxIDIuNDMgMS4yNSAxLjI1IDQuNTMtNC41Ni00LjUzLTQuNTYtMS4yNSAxLjI1IDIuNDEgMi40M0gxMS43NWE1LjcgNS43IDAgMDE0LjA1LTQuODNsLjkxLS4yNy0uMzQtLjg5Yy0uMzYtLjk0LS40OS0xLjkyLS4zOS0yLjkxLjE3LTEuNyAxLTMuMjMgMi4zMi00LjMxIDEuMzMtMS4xIDMtMS42IDQuNy0xLjQzLjYzLjA2IDEuMjUuMjIgMS44NC40N2wuNTQuMjMuNDItLjQxYzIuMTQtMi4wNyA1LjA3LTMuMDkgOC4wMy0yLjc5IDUuMDcuNTEgOC45NiA0Ljc0IDkuMDYgOS44M2wuMDEuNjEuNTcuMjFhNy44MTQgNy44MTQgMCAwMTUuMSA2LjQ4SDM2LjIzbDIuMTktMi4yMS0xLjI1LTEuMjUtNC4zMSA0LjM0IDQuNTMgNC41NiAxLjI1LTEuMjUtMi40MS0yLjQzaDEyLjMzYTcuNzY0IDcuNzY0IDAgMDEtMy43MiA1Ljc4bC0uNTcuMzUuMTguNjV6Ii8+PC9nPjwvc3ZnPg=="); +} + +.oci-file-storage-system, .oci-file-system { + background-image: url("data:image/svg+xml;base64,PHN2ZyB2ZXJzaW9uPSIxLjEiIGlkPSJwcmVmaXhfX0xheWVyXzEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeD0iMCIgeT0iMCIgdmlld0JveD0iMCAwIDQyIDQyIiB4bWw6c3BhY2U9InByZXNlcnZlIj48c3R5bGU+LnByZWZpeF9fc3Qwe2ZpbGw6I2ZmZn0ucHJlZml4X19zdDF7ZmlsbDojMmM1OTY3fTwvc3R5bGU+PHBhdGggY2xhc3M9InByZWZpeF9fc3QwIiBkPSJNMi42NyA0MS41QzEuNDggNDEuNS41IDQwLjUzLjUgMzkuMzNWMi42N0MuNSAxLjQ3IDEuNDcuNSAyLjY3LjVoMzYuNjdjMS4xOSAwIDIuMTcuOTcgMi4xNyAyLjE3djM2LjY3YzAgMS4yLS45NyAyLjE3LTIuMTcgMi4xN0gyLjY3eiIvPjxwYXRoIGNsYXNzPSJwcmVmaXhfX3N0MCIgZD0iTTM5LjMzIDFjLjkyIDAgMS42Ny43NSAxLjY3IDEuNjd2MzYuNjdjMCAuOTItLjc1IDEuNjctMS42NyAxLjY3SDIuNjdDMS43NSA0MSAxIDQwLjI1IDEgMzkuMzNWMi42N0MxIDEuNzUgMS43NSAxIDIuNjcgMWgzNi42Nm0wLTFIMi42N0MxLjIgMCAwIDEuMiAwIDIuNjd2MzYuNjdDMCA0MC44IDEuMiA0MiAyLjY3IDQyaDM2LjY3QzQwLjggNDIgNDIgNDAuOCA0MiAzOS4zM1YyLjY3QzQyIDEuMiA0MC44IDAgMzkuMzMgMHoiLz48Zz48cGF0aCBjbGFzcz0icHJlZml4X19zdDEiIGQ9Ik0xIDM5LjMzYzAgLjkyLjc1IDEuNjcgMS42NyAxLjY3aDM2LjY3Yy45MiAwIDEuNjctLjc1IDEuNjctMS42N1Y0Ljk5SDF2MzQuMzR6TTIuNDggNi40N2gzNy4wNHYzMi44N2MwIC4xLS4wOC4xOS0uMTkuMTlIMi42N2EuMTkuMTkgMCAwMS0uMTktLjE5VjYuNDd6TTM5LjMzIDFIMi42N0MxLjc1IDEgMSAxLjc1IDEgMi42N3YxLjIxaDQwVjIuNjdDNDEgMS43NSA0MC4yNSAxIDM5LjMzIDF6Ii8+PHBhdGggY2xhc3M9InByZWZpeF9fc3QxIiBkPSJNMzYuMDYgMTUuNjhjMC0uODItLjY4LTEuNDgtMS41Mi0xLjQ4SDE4LjA2bC0xLjY0LTIuMDljLS4yOS0uMzYtLjc0LS41OC0xLjIxLS41OEg3LjQ2Yy0uODQgMC0xLjUyLjY2LTEuNTIgMS40OHYyMS4zaDMwLjEyVjE1LjY4em0tMjguNi0yLjY3aDcuNzVjLjAyIDAgLjA0LjAxLjA0LjAxbDEuNTEgMS45Mi0xLjUgMS45cy0uMDIuMDEtLjA0LjAxaC03Ljh2LTMuODRjMCAuMDEuMDEgMCAuMDQgMHptMjcuMTIgMTkuODJINy40MlYxOC4zNGg3LjhjLjQ3IDAgLjkyLS4yMiAxLjItLjU4bDEuNjUtMi4wOGgxNi40N2MuMDIgMCAuMDMuMDEuMDQuMDF2MTcuMTR6Ii8+PHBhdGggY2xhc3M9InByZWZpeF9fc3QxIiBkPSJNOC43IDE0LjJoNS43NnYxLjQ4SDguN3oiLz48L2c+PC9zdmc+"); +} + +.oci-group { + background-image: url("data:image/svg+xml;base64,PHN2ZyBkYXRhLW5hbWU9IkxheWVyIDEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmlld0JveD0iMCAwIDU2LjkzIDQyIj48cGF0aCBkPSJNLjUgNDEuNVYyNi4zMUE1LjM2IDUuMzYgMCAwMTUuODUgMjFIOHYtLjMxYTcuNDQgNy40NCAwIDExNy43My0uMTVoLjVhNi4zIDYuMyAwIDAxNS0yLjQ1aDIuNlYxN0E4Ljg5IDguODkgMCAxMTMzIDE3djFoMi42NmE2LjQ0IDYuNDQgMCAwMTUgMi40NWguNWE3LjQ0IDcuNDQgMCAxMTcuOC4xMVYyMWgyYTUuMzYgNS4zNiAwIDAxNS4zNSA1LjM1VjQxLjV6IiBmaWxsPSIjZmZmIi8+PHBhdGggZD0iTTI4LjQyIDFhOC4zOSA4LjM5IDAgMDE0LjEgMTUuNzJ2MS44M2gzLjE2YTYgNiAwIDAxNC44IDIuNDVoMy4yM2E2Ljk0IDYuOTQgMCAxMTMgMGgxLjh2LjQ2aDIuNTVhNC44NiA0Ljg2IDAgMDE0Ljg1IDQuODVWNDFIMVYyNi4zMWE0Ljg2IDQuODYgMCAwMTQuODUtNC44NWgyLjYyVjIxaDEuNzNhNi45NCA2Ljk0IDAgMTEzIDBoMy4yM2E1Ljc4IDUuNzggMCAwMTQuNzItMi40NWgzLjF2LTEuODdBOC4zOSA4LjM5IDAgMDEyOC40MiAxbTAtMWE5LjM5IDkuMzkgMCAwMC01LjE1IDE3LjI0di4zMWgtMi4xYTYuNjMgNi42MyAwIDAwLTIuNS40OSA3Ljk0IDcuOTQgMCAxMC0xNC45LTMuODEgOCA4IDAgMDAzIDYuMjNoLTFBNS44NiA1Ljg2IDAgMDAwIDI2LjMxVjQyaDU2LjkzVjI2LjMxYTUuODYgNS44NiAwIDAwLTUuODUtNS44NWgtMWE3Ljk0IDcuOTQgMCAxMC0xMi44NC02LjIzIDcuODcgNy44NyAwIDAwMSAzLjgzIDcgNyAwIDAwLTIuNi0uNTFoLTIuMTJ2LS4yNkE5LjQgOS40IDAgMDAyOC40MiAweiIgZmlsbD0iI2ZmZiIvPjxwYXRoIGQ9Ik00NS4yMiAyMS4xN2E2Ljk1IDYuOTUgMCAxMC02Ljk0LTYuOTQgNyA3IDAgMDA2Ljk0IDYuOTR6bTAtMTIuMTdBNS4yNyA1LjI3IDAgMTE0MCAxNC4yMyA1LjI4IDUuMjggMCAwMTQ1LjIyIDl6IiBmaWxsPSIjMmM1OTY3Ii8+PHBhdGggZD0iTTUxLjA4IDIxLjQ2aC0xLjQzbC0uMjUuMzNhNS4yNyA1LjI3IDAgMDEtOC4zNiAwbC0uMjUtLjMzaC0uMDhhNS44MiA1LjgyIDAgMDAtNS0yLjkxSDM0bC0uMjUuMzNhNi43MiA2LjcyIDAgMDEtMTAuNjYgMGwtLjI1LS4zM2gtMS42N2E1LjgxIDUuODEgMCAwMC01IDIuOTFsLS4yNS4zM2E1LjI3IDUuMjcgMCAwMS04LjM2IDBsLS4yNS0uMzNINS44NUE0Ljg2IDQuODYgMCAwMDEgMjYuMzFWNDFoMS42OFYyNi4zMWEzLjE4IDMuMTggMCAwMTMuMTctMy4xOGguNjJhNyA3IDAgMDA4Ljg5IDEuMzZWNDFIMTdWMjQuMzZhNC4xMyA0LjEzIDAgMDE0LjEzLTQuMTNIMjJhOC40MSA4LjQxIDAgMDAxMi43OSAwaC44NmE0LjEzIDQuMTMgMCAwMTQuMTMgNC4xM1Y0MWgxLjY4VjI0LjQzYTYuOTMgNi45MyAwIDAwOS0xLjNoLjYyYTMuMTkgMy4xOSAwIDAxMy4xOCAzLjE4VjQxaDEuNjdWMjYuMzFhNC44NiA0Ljg2IDAgMDAtNC44NS00Ljg1eiIgZmlsbD0iIzJjNTk2NyIvPjxwYXRoIGQ9Ik0xMS43MSAyMS4xN2E2Ljk1IDYuOTUgMCAxMC02Ljk0LTYuOTQgNyA3IDAgMDA2Ljk0IDYuOTR6bTAtMTIuMTdhNS4yNyA1LjI3IDAgMTEtNS4yNyA1LjI3QTUuMjcgNS4yNyAwIDAxMTEuNzEgOXpNMjguNDIgMTcuNzlBOC40IDguNCAwIDEwMjAgOS40YTguNCA4LjQgMCAwMDguNDIgOC4zOXptMC0xNS4xMUE2LjcyIDYuNzIgMCAxMTIxLjcgOS40YTYuNzMgNi43MyAwIDAxNi43Mi02Ljcyek0yMS4xNyAzMC42NGgtLjg0VjQxaDEuNjh2LTguNjhsLS44NC0xLjY4ek0zNS42MiAzMC42NGwtLjg0IDEuNjhWNDFoMS42OFYzMC42NGgtLjg0ek01MC4wNyAzMy45OVY0MWgxLjY4di04LjY4aC0uODRsLS44NCAxLjY3ek01LjE4IDMyLjMyVjQxaDEuNjd2LTcuMDFsLS44NC0xLjY3aC0uODN6IiBmaWxsPSIjMmM1OTY3Ii8+PC9zdmc+"); +} + +.oci-instance { + background-image: url("data:image/svg+xml;base64,PHN2ZyB2ZXJzaW9uPSIxLjEiIGlkPSJwcmVmaXhfX0xheWVyXzEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeD0iMCIgeT0iMCIgdmlld0JveD0iMCAwIDQyIDQyIiB4bWw6c3BhY2U9InByZXNlcnZlIj48c3R5bGU+LnByZWZpeF9fc3Qwe2ZpbGw6I2ZmZn0ucHJlZml4X19zdDF7ZmlsbDojMmM1OTY3fTwvc3R5bGU+PHBhdGggY2xhc3M9InByZWZpeF9fc3QwIiBkPSJNMi42NyA0MS41QzEuNDggNDEuNS41IDQwLjUzLjUgMzkuMzNWMi42N0MuNSAxLjQ4IDEuNDcuNSAyLjY3LjVoMzYuNjdjMS4xOSAwIDIuMTcuOTcgMi4xNyAyLjE3djM2LjY3YzAgMS4xOS0uOTcgMi4xNy0yLjE3IDIuMTdIMi42N3oiLz48cGF0aCBjbGFzcz0icHJlZml4X19zdDAiIGQ9Ik0zOS4zMyAxYy45MiAwIDEuNjcuNzUgMS42NyAxLjY3djM2LjY3YzAgLjkyLS43NSAxLjY3LTEuNjcgMS42N0gyLjY3QzEuNzUgNDEgMSA0MC4yNSAxIDM5LjMzVjIuNjdDMSAxLjc1IDEuNzUgMSAyLjY3IDFoMzYuNjZtMC0xSDIuNjdDMS4yIDAgMCAxLjIgMCAyLjY3djM2LjY3QzAgNDAuOCAxLjIgNDIgMi42NyA0MmgzNi42N0M0MC44IDQyIDQyIDQwLjggNDIgMzkuMzNWMi42N0M0MiAxLjIgNDAuOCAwIDM5LjMzIDB6Ii8+PGc+PHBhdGggY2xhc3M9InByZWZpeF9fc3QxIiBkPSJNMzkuMzMgMUgyLjY3QzEuNzUgMSAxIDEuNzUgMSAyLjY3djM2LjY3YzAgLjkxLjc1IDEuNjYgMS42NyAxLjY2aDM2LjY3Yy45MiAwIDEuNjctLjc1IDEuNjctMS42N1YyLjY3QzQxIDEuNzUgNDAuMjUgMSAzOS4zMyAxem0uMTkgMzguMzNjMCAuMS0uMDguMTktLjE5LjE5SDIuNjdhLjE5LjE5IDAgMDEtLjE5LS4xOVYyLjY3YzAtLjEuMDgtLjE5LjE5LS4xOWgzNi42N2MuMSAwIC4xOS4wOC4xOS4xOXYzNi42NnoiLz48cGF0aCBjbGFzcz0icHJlZml4X19zdDEiIGQ9Ik02LjU2IDM1LjQ0aDI5LjA3di04Ljg5SDYuNTZ2OC44OXptMS40OC03LjRoMjYuMTF2NS45M0g4LjA0di01LjkzeiIvPjxjaXJjbGUgY2xhc3M9InByZWZpeF9fc3QxIiBjeD0iMzAuODEiIGN5PSIzMSIgcj0iMS4xMSIvPjxwYXRoIGNsYXNzPSJwcmVmaXhfX3N0MSIgZD0iTTE1LjQ0IDYuNTZINi41NnY4Ljg5aDguODlWNi41NnptLTEuNDggNy40SDguMDRWOC4wNGg1LjkzdjUuOTJ6TTI1LjQ0IDYuNTZoLTguODl2OC44OWg4Ljg5VjYuNTZ6bS0xLjQ4IDcuNGgtNS45M1Y4LjA0aDUuOTN2NS45MnpNMTUuNDQgMTYuNTZINi41NnY4Ljg5aDguODl2LTguODl6bS0xLjQ4IDcuNEg4LjA0di01LjkzaDUuOTN2NS45M3pNMjUuNDQgMTYuNTZoLTguODl2OC44OWg4Ljg5di04Ljg5em0tMS40OCA3LjRoLTUuOTN2LTUuOTNoNS45M3Y1Ljkzek0zNS40NCA2LjU2aC04Ljg5djguODloOC44OVY2LjU2em0tMS40OCA3LjRoLTUuOTNWOC4wNGg1LjkzdjUuOTJ6TTM1LjQ0IDE2LjU2aC04Ljg5djguODloOC44OXYtOC44OXptLTEuNDggNy40aC01Ljkzdi01LjkzaDUuOTN2NS45M3oiLz48L2c+PC9zdmc+"); +} + +.oci-instance-pool { + background-image: url("data:image/svg+xml;base64,PHN2ZyB2ZXJzaW9uPSIxLjEiIGlkPSJwcmVmaXhfX0xheWVyXzEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeD0iMCIgeT0iMCIgdmlld0JveD0iMCAwIDQyIDQyIiB4bWw6c3BhY2U9InByZXNlcnZlIj48c3R5bGU+LnByZWZpeF9fc3Qwe2ZpbGw6I2ZmZn0ucHJlZml4X19zdDF7ZmlsbDojMmM1OTY3fTwvc3R5bGU+PHBhdGggY2xhc3M9InByZWZpeF9fc3QwIiBkPSJNMi42NyA0MS41QzEuNDggNDEuNS41IDQwLjUzLjUgMzkuMzNWMi42N0MuNSAxLjQ4IDEuNDcuNSAyLjY3LjVoMzYuNjdjMS4xOSAwIDIuMTcuOTcgMi4xNyAyLjE3djM2LjY3YzAgMS4xOS0uOTcgMi4xNy0yLjE3IDIuMTdIMi42N3oiLz48cGF0aCBjbGFzcz0icHJlZml4X19zdDAiIGQ9Ik0zOS4zMyAxYy45MiAwIDEuNjcuNzUgMS42NyAxLjY3djM2LjY3YzAgLjkyLS43NSAxLjY3LTEuNjcgMS42N0gyLjY3QzEuNzUgNDEgMSA0MC4yNSAxIDM5LjMzVjIuNjdDMSAxLjc1IDEuNzUgMSAyLjY3IDFoMzYuNjZtMC0xSDIuNjdDMS4yIDAgMCAxLjIgMCAyLjY3djM2LjY3QzAgNDAuOCAxLjIgNDIgMi42NyA0MmgzNi42N0M0MC44IDQyIDQyIDQwLjggNDIgMzkuMzNWMi42N0M0MiAxLjIgNDAuOCAwIDM5LjMzIDB6Ii8+PGc+PHBhdGggY2xhc3M9InByZWZpeF9fc3QxIiBkPSJNMzkuMzMgMUgyLjY3QzEuNzUgMSAxIDEuNzUgMSAyLjY3djM2LjY3YzAgLjkxLjc1IDEuNjYgMS42NyAxLjY2aDM2LjY3Yy45MiAwIDEuNjctLjc1IDEuNjctMS42N1YyLjY3QzQxIDEuNzUgNDAuMjUgMSAzOS4zMyAxem0uMTkgMzguMzNjMCAuMS0uMDguMTktLjE5LjE5SDIuNjdhLjE5LjE5IDAgMDEtLjE5LS4xOVYyLjY3YzAtLjEuMDgtLjE5LjE5LS4xOWgzNi42N2MuMSAwIC4xOS4wOC4xOS4xOXYzNi42NnoiLz48cGF0aCBjbGFzcz0icHJlZml4X19zdDEiIGQ9Ik0yNy45NCA4LjdIMTQuMDZ2Ny40MWgxMy44OVY4Ljd6bS0xLjQ4IDUuOTNIMTUuNTR2LTQuNDRoMTAuOTN2NC40NHoiLz48Y2lyY2xlIGNsYXNzPSJwcmVmaXhfX3N0MSIgY3g9IjI0LjI0IiBjeT0iMTIuNCIgcj0iLjc0Ii8+PHBhdGggY2xhc3M9InByZWZpeF9fc3QxIiBkPSJNMjEuNTYgMjQuNjNoMTMuODl2LTcuNDFIMjEuNTZ2Ny40MXptMS40OC01LjkzaDEwLjkzdjQuNDRIMjMuMDRWMTguN3oiLz48Y2lyY2xlIGNsYXNzPSJwcmVmaXhfX3N0MSIgY3g9IjMxLjc0IiBjeT0iMjAuOTIiIHI9Ii43NCIvPjxwYXRoIGNsYXNzPSJwcmVmaXhfX3N0MSIgZD0iTTIwLjQ0IDE3LjIySDYuNTZ2Ny40MWgxMy44OXYtNy40MXptLTEuNDggNS45Mkg4LjA0VjE4LjdoMTAuOTN2NC40NHoiLz48Y2lyY2xlIGNsYXNzPSJwcmVmaXhfX3N0MSIgY3g9IjE2Ljc0IiBjeT0iMjAuOTIiIHI9Ii43NCIvPjxwYXRoIGNsYXNzPSJwcmVmaXhfX3N0MSIgZD0iTTM2LjU2IDI4Ljc2Yy0xLjcuOTMtNi41OCAzLjA2LTE1LjQ3IDMuMDYtMTAuMTkgMC0xNC4zMi0xLjk5LTE1LjY0LTIuODd2LTQuMzJIMy45NnY1LjA2bC4yOS4yMmMxLjMyIDEuMDIgNS41OSAzLjM5IDE2Ljg0IDMuMzkgMTAuMDIgMCAxNS4yMy0yLjY2IDE2LjU5LTMuNDhsLjM2LS4yMnYtNC45OGgtMS40OHY0LjE0eiIvPjwvZz48L3N2Zz4="); +} + +.oci-internet-gateway { + background-image: url("data:image/svg+xml;base64,PHN2ZyBkYXRhLW5hbWU9IkxheWVyIDEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmlld0JveD0iMCAwIDM5LjMxIDQyLjgzIj48cGF0aCBkPSJNMTUuNTUgMzhMMTcgMzYuNTljLS4zLS4wNS0uNi0uMTEtLjktLjE5bC0uMzktLjA5Yy0uMjctLjA3LS41My0uMTUtLjc5LS4yNGE1IDUgMCAwMS0uNTEtLjE3bC0uNjMtLjI1LS42My0uMjctLjQxLS4yLS44LS40My0uMjktLjE4Yy0uMzEtLjE5LS41OC0uMzYtLjgzLS41NGwtLjQzLS4zMS0uNDMtLjMyLS40MS0uMzRBMTUuNDggMTUuNDggMCAwMTggMzEuNTNsLS4zNi0uNDEtLjMyLS40My0uMzItLjQyYy0uMTgtLjI2LS4zNS0uNTItLjUyLS43OWwtLjItLjM0Yy0uMTQtLjI0LS4yNy0uNDgtLjQtLjczcy0uMTYtLjMyLS4yMy0uNDctLjE5LS40Mi0uMjctLjYzLS4xOC0uNDItLjI1LS42M2E0IDQgMCAwMS0uMTMtLjQ1Yy0uMTEtLjMyLS4xOS0uNTgtLjI2LS44NUw0LjY2IDI1Yy0uMDctLjMtLjE0LS42MS0uMTktLjkybC0uMDgtLjVjMC0uMTgtLjA2LS4zNi0uMDgtLjU1di0uNDhILjV2LTIuMjZoMy43OHYtLjQ4YzAtLjE5LjA1LS4zNy4wOC0uNTVsLjA4LS41YzAtLjMxLjEyLS42Mi4yLS45M3MuMDYtLjI4LjA5LS4zOGMuMDctLjI3LjE1LS41My4yNC0uOHMuMTEtLjMzLjE2LS41LjE3LS40My4yNi0uNjQuMTctLjQxLjI3LS42Mi4xNi0uMzIuMjQtLjQ4LjI1LS40OC4zOS0uNzJsLjIxLS4zNXEuMjQtLjM5LjUxLS43OGwuMzEtLjQyYy4xLS4xNS4yMS0uMy4zMi0uNDRsLjM2LS40MmExNC40NCAxNC40NCAwIDAxMS41NS0xLjQ5bC40LS4zNS40NS0uMzMuNC0uM2MuMjYtLjE4LjUzLS4zNS43OS0uNTFsLjM0LS4yMS43NC0uNC40Ny0uMjNxLjMxLS4xNS42My0uMjdsLjYzLS4yNi40NS0uMTUuODUtLjI1LjM4LS4xLjkyLS4yLTEuNDUtMS40MiA0LjEtNC4xIDQuMTEgNC4xLTEuNDMgMS40Mi45LjE5LjM5LjFjLjI3LjA3LjUzLjE1Ljc5LjI0bC41MS4xNi42My4yNi42My4yN2MuMTMuMDYuMjYuMTIuMzguMTlsLjEuMDVxLjM2LjE4LjcyLjM5bC4yOS4xNy44NC41NS40NC4zMi40Mi4zMS40MS4zNGExNC4yNSAxNC4yNSAwIDAxMS41MSAxLjVsLjM2LjQyYy4xMS4xNC4yMi4yOS4zMi40NGwuMzEuNDJxLjI3LjM5LjUxLjc4bC4yMS4zNGMuMTQuMjQuMjcuNDkuMzkuNzNsLjI0LjQ4cS4xNS4zMS4yNy42M2MuMDkuMjEuMTguNDIuMjUuNjNzLjExLjMxLjE2LjQ3LjE4LjU2LjI1LjgzbC4wOS4zOGMuMDguMzEuMTQuNjIuMi45M2wuMDguNWE0Ljg2IDQuODYgMCAwMS4wNy41NXYuNDhoMy43N3YyLjI1SDM1VjIzYTUgNSAwIDAxLS4wNy41NGwtLjA4LjUxYy0uMDYuMzEtLjEyLjYyLS4yLjkybC0uMDkuMzljLS4wNy4yNy0uMTUuNTMtLjI0Ljc5YTUgNSAwIDAxLS4xNy41MWMtLjA3LjIxLS4xNi40Mi0uMjUuNjNzLS4xNy40Mi0uMjcuNjNsLS4yMi40NGMtLjE0LjI4LS4yNy41Mi0uNDEuNzZsLS4yMS4zNGMtLjE2LjI3LS4zMy41My0uNTEuNzlsLS4zLjQxLS4zMy40NS0uMzUuNDNBMTUuMjcgMTUuMjcgMCAwMTI5Ljc2IDMzbC0uNC4zNS0uNDIuMzEtLjQ0LjMyYy0uMjYuMTgtLjUyLjM1LS43OS41MWwtLjMzLjIxYy0uMjUuMTQtLjQ5LjI3LS43NC4zOWgtLjA5bC0uMzguMTktLjYzLjI3LS42My4yNS0uNTEuMTdjLS4yNi4wOS0uNTIuMTctLjc5LjI0bC0uMzkuMDljLS4zLjA4LS42LjE0LS45LjE5TDIzLjc2IDM4bC00LjExIDQuMXptNS4yMy0uMTlMMjIgMzYuNjVoLS4xNGE1LjE3IDUuMTcgMCAwMS0uNTUuMDdoLS40OHptLTIuMjUgMHYtMWgtLjQ4YTQuODYgNC44NiAwIDAxLS41NS0uMDdoLS4xNHptMi43My0zMS43NGwuNTUuMDhoLjE0TDIwLjc4IDV2MXptLTMuOS4xaC4xNGwuNTUtLjA4LjQ4LS4wOVY1eiIgZmlsbD0iI2ZmZiIvPjxwYXRoIGQ9Ik0xOS42NSAxLjQxbDEuNTEgMS41MS4wNS4wNSAxLjg0IDEuODQtLjg4Ljg4LTEtMS0uOTMtLjk0djIuNzdsLjkzLjA3LjcyLjExaC4zYy4zIDAgLjU5LjEyLjg5LjE5bC4zNy4wOS43Ny4yMy40OS4xNi42MS4yNS42OC4yOC40Ni4yM2MuMjQuMTIuNDcuMjQuNy4zOGwuMzMuMmMuMjYuMTYuNTIuMzIuNzcuNWwuMjMuMThjLjIuMTQuNC4yOC41OS40M2ExNS4yNSAxNS4yNSAwIDAxMi4yIDIuMmMuMTUuMTkuMjkuMzkuNDMuNThsLjE4LjI0Yy4xOC4yNS4zNC41MS41Ljc3cy4xMy4yMS4yLjMzLjI2LjQ2LjM4LjcuMTUuMzEuMjMuNDYuMTguNC4yNi42MS4xNy40LjI0LjYxLjExLjMzLjE3LjQ5LjE2LjUxLjIzLjc3bC4wOS4zN2MuMDcuMy4xMy41OS4xOS44OXYuM2MwIC4xLjA4LjQ4LjExLjcycTAgLjQ3LjA2LjkzaDMuNzdWMjJoLTMuNzhxMCAuNDctLjA2LjkzYzAgLjI0LS4wNy40OC0uMTEuNzJzMCAuMiAwIC4zYy0uMDYuMy0uMTIuNTktLjE5Ljg5bC0uMDkuMzdjLS4wNy4yNi0uMTUuNTEtLjIzLjc3cy0uMTEuMzItLjE3LjQ5LS4xNi40MS0uMjQuNjEtLjE3LjQxLS4yNi42MWwtLjIzLjQ2LS4zOC43LS4yLjMzYy0uMTYuMjYtLjMyLjUxLS41Ljc2bC0uMTguMjVjLS4xNC4xOS0uMjguMzktLjQzLjU4QTE1LjI1IDE1LjI1IDAgMDEyOSAzM2MtLjE5LjE1LS4zOS4yOS0uNTkuNDNsLS4yMy4xOGMtLjI1LjE4LS41MS4zNC0uNzcuNWwtLjMzLjJjLS4yMy4xMy0uNDYuMjYtLjcuMzhsLS40Ni4yMy0uNjEuMjYtLjYxLjI0LS40OS4xNy0uNzcuMjMtLjM3LjA5LS44OS4xOWgtLjNsLS43Mi4xMXEtLjQ3IDAtLjkzLjA2VjM5bC45My0uOTMgMS0xIC44OC44OC0xLjg0IDEuODQtLjY4LjY3LS44OC44OC0uODgtLjg4LS42Ny0uNjdMMTYuMjYgMzhsLjg4LS44OCAxIDFMMTkgMzl2LTIuN3EtLjQ3IDAtLjkzLS4wNmwtLjcyLS4xMWgtLjNsLS44OS0uMTktLjM3LS4wOS0uNzctLjIzLS40OS0uMTdjLS4yMS0uMDctLjQxLS4xNi0uNjEtLjI0bC0uNjEtLjI2LS40Ni0uMjNjLS4yNC0uMTItLjQ3LS4yNS0uNy0uMzhsLS4zMy0uMmMtLjI2LS4xNi0uNTItLjMyLS43Ny0uNWwtLjIzLS4xOGMtLjItLjE0LS40LS4yOC0uNTktLjQzYTE1LjI1IDE1LjI1IDAgMDEtMi4yLTIuMmMtLjE1LS4xOS0uMjktLjM5LS40My0uNTlzLS4xMi0uMTUtLjE4LS4yNGMtLjE4LS4yNS0uMzQtLjUtLjUtLjc2LS4wNy0uMTEtLjE0LS4yMi0uMi0uMzNzLS4yNi0uNDctLjM4LS43bC0uMjMtLjQ2Yy0uMDktLjItLjE4LS40MS0uMjYtLjYxcy0uMTctLjQxLS4yNS0uNjEtLjExLS4zMy0uMTYtLjQ5LS4xNi0uNTEtLjIzLS43N2wtLjA5LS4zN2MtLjA3LS4zLS4xMy0uNTktLjE5LS45di0uMjljMC0uMS0uMDgtLjQ4LS4xMS0uNzIgMC0uMzEgMC0uNjItLjA3LS45M0gxdi0xLjI3aDMuNzZjMC0uMzEgMC0uNjIuMDctLjkzIDAtLjI0LjA3LS40OC4xMS0uNzJzMC0uMiAwLS4zYy4wNi0uMy4xMi0uNTkuMTktLjg5bC4wOS0uMzdjLjA3LS4yNi4xNS0uNTIuMjMtLjc3bC4xNi0uNDljLjA4LS4yMS4xNi0uNDEuMjUtLjYxcy4xNy0uNDEuMjYtLjYxLjE1LS4zMS4yMy0uNDYuMjQtLjQ3LjM4LS43QTMuNzkgMy43OSAwIDAxNyAxMy42Yy4xNi0uMjUuMzItLjUxLjUtLjc2bC4xOC0uMjRjLjE0LS4xOS4yOC0uMzkuNDMtLjU4YTE1LjI1IDE1LjI1IDAgMDEyLjItMi4ybC41OC0uNDMuMjQtLjE4Yy4yNS0uMTguNTEtLjM0Ljc3LS41YTMuNjIgMy42MiAwIDAxLjMzLS4yYy4yMy0uMTMuNDYtLjI2LjctLjM4bC40Ni0uMjMuNjEtLjI2LjYxLS4yNS40OS0uMTYuNzItLjIzLjM3LS4wOWMuMy0uMDcuNTktLjE0Ljg5LS4xOWguM2wuNzItLjExLjktLjA5VjMuNzlsLS45My45NC0xIDEtLjg4LS44OEwxOC4xIDN2LS4wNWwxLjUtMS41MW0wLTEuNDFsLS42LjY4LTEuNSAxLjVoLS4wNkwxNS41NSA0LjFsLS43LjcxLjcuNzEuNDIuNDFoLS4xMWwtLjMuMDctLjgyLjI1aC0uMDVsLS40Ny4xNS0uNjYuMjYtLjY0LjM0LS40Mi4yMWgtLjA3Yy0uMjYuMTMtLjUxLjI2LS43NS40bC0uMjYuMTYtLjEuMDZjLS4yNy4xNy0uNTQuMzQtLjgxLjUzYTEuMDkgMS4wOSAwIDAwLS4xNy4xM2wtLjA5LjA2LS4xNi4xMi0uNDYuMzMtLjg1LjY5Yy0uMjguMjYtLjU1LjUyLS44MS44bC0uNzEuODQtLjM0LjQ1LS4xLjIyLS4wNi4wOWExLjA5IDEuMDkgMCAwMC0uMTMuMTdjLS4xOS4yNy0uMzYuNTQtLjUzLjgxdi4wOWwtLjE3LjI3Yy0uMTQuMjQtLjI3LjQ5LS40Ljc1cy0uMTcuMzMtLjI1LjQ5LS4xOS40My0uMjguNjQtLjE3LjQ0LS4yNS42Ni0uMTEuMzEtLjE2LjQ2di4wNmMtLjA5LjI3LS4xNy41NC0uMjUuODIgMCAuMSAwIC4yLS4wNy4zdi4xYy0uMDguMzEtLjE1LjYzLS4yIDF2LjUyYzAgLjE5LS4wNi4zNy0uMDguNTdIMFYyM2gzLjgxYzAgLjE5LjA1LjM4LjA4LjU3di4yTDQgMjR2LjJjLjA1LjMzLjEyLjY0LjIgMXYuMWMwIC4xIDAgLjIuMDcuMy4wOC4yOC4xNi41NS4yNS44MmwuMTUuNDhjLjA5LjIyLjE3LjQ0LjI2LjY1cy4xOC40NC4yOC42NWwuMjMuNDVjLjE1LjI5LjI4LjU1LjQyLjc5bC4xNi4yNi4wNi4xYy4xNy4yNy4zNC41NC41My44MWwuMTMuMTguMDYuMDguMTIuMTZjLjExLjE2LjIyLjMxLjM0LjQ2bC43Ljg1cS4zOS40Mi44MS44MWwuODMuNy40NS4zNC4xNy4xMi4wOS4wNy4xNi4xMmMuMjcuMTkuNTUuMzYuODIuNTNsLjA5LjA1LjI2LjE2Yy4yNS4xNS41LjI4Ljc2LjQxaC4wNWwuNDQuMjIuNjUuMjguNjUuMjYuNDcuMTZoLjA1Yy4yNy4wOS41NC4xNy44Mi4yNGwuMy4wOGguMWwtLjQyLjQyLS43LjcxLjcuNzEgMS44NCAxLjg0LjY4LjY3Ljg4Ljg4LjcuNzEuNzEtLjcxLjg4LS44OC42OC0uNjcgMS44My0xLjg0LjcxLS43MS0uNzEtLjcxLS40Mi0uNDJoLjFsLjMtLjA4Yy4yOC0uMDcuNTUtLjE1LjgyLS4yNGwuNTEtLjE3LjY3LS4yN2MuMjEtLjA4LjQzLS4xOC42NC0uMjhzLjI5LS4xNC40My0uMjFoLjA2Yy4yNS0uMTMuNTEtLjI2Ljc1LS40MWwuMzMtLjIzaC4xYy4yNy0uMTcuNTQtLjM0LjgxLS41M2wuMTgtLjEzLjA4LS4wNi4xNi0uMTIuNDYtLjM0Ljg0LS42OWMuMjctLjI2LjU0LS41Mi44LS44bC43Mi0uODVjLjEyLS4xNS4yMy0uMzEuMzUtLjQ3bC4xMS0uMTUuMDYtLjA4LjEzLS4xOGMuMTktLjI3LjM2LS41NC41My0uODF2LS4wOWwuMTYtLjI2Yy4xNS0uMjUuMjgtLjUxLjQxLS43NnMuMTctLjM0LjI0LS40OS4yLS40My4yOC0uNjUuMTgtLjQzLjI2LS42NS4xMS0uMzIuMTYtLjQ4di0uMDVxLjE0LS4zOS4yNC0uODFjMC0uMSAwLS4yLjA4LS4zdi0uMWMuMDgtLjMyLjE1LS42My4yLS45NXYtLjUyYzAtLjE5LjA2LS4zOC4wOC0uNTdoMy44MXYtMy4zMmgtMy42NmMwLS4yLS4wNS0uMzgtLjA4LS41N3YtLjUyYzAtLjMyLS4xMi0uNjMtLjItMXYtLjExYzAtLjEgMC0uMTktLjA3LS4yOS0uMDctLjI4LS4xNS0uNTUtLjI0LS44MnYtLjA1Yy0uMDUtLjE2LS4xLS4zMS0uMTYtLjQ3cy0uMTctLjQ0LS4yNi0uNjUtLjE4LS40NC0uMjgtLjY1LS4xNC0uMy0uMjItLjQ1Yy0uMTUtLjMtLjI4LS41NS0uNDItLjc5bC0uMTYtLjI2LS4wNi0uMWMtLjE3LS4yNy0uMzQtLjU0LS41My0uODFsLS4xMy0uMTctLjE5LS4wOC0uMTItLjE2Yy0uMTEtLjE2LS4yMi0uMzEtLjM0LS40NmwtLjctLjg2Yy0uMjYtLjI4LS41My0uNTUtLjgtLjhMMjkuNjggOWwtLjQ2LS4zNC0uMTYtLjEyLS4wNi0uMDItLjE4LS4xM2MtLjI3LS4xOS0uNTQtLjM2LS44Mi0uNTNsLS4wOC0uMDUtLjI3LS4xN2MtLjI0LS4xNC0uNS0uMjctLjc1LS40aC0uMDZMMjYuMzkgN2wtLjY1LS4yOC0uNjUtLjI1LS40Ny0uMTZoLS4wNUwyMy43NSA2aC0uNGwuNDItLjQxLjcxLS43MS0uNzEtLjcxLTEuODUtMS45MWgtLjA1TDIwLjM2LjcxIDE5LjY1IDB6IiBmaWxsPSIjZmZmIi8+PHBhdGggZD0iTTIxLjIxIDM1djEuMjZBMTUgMTUgMCAwMDM0LjUgMjNoLTEuMjVhMTMuNzEgMTMuNzEgMCAwMS0xMi4wNCAxMnpNNi4wNiAyM0g0LjgxQTE1IDE1IDAgMDAxOC4xIDM2LjI2VjM1QTEzLjcxIDEzLjcxIDAgMDE2LjA2IDIzek0zMy4yNSAxOS44NmgxLjI1QTE1IDE1IDAgMDAyMS4yMSA2LjU3djEuMjVhMTMuNzMgMTMuNzMgMCAwMTEyLjA0IDEyLjA0ek0xOC4xIDcuODJWNi41N0ExNSAxNSAwIDAwNC44MSAxOS44NmgxLjI1QTEzLjczIDEzLjczIDAgMDExOC4xIDcuODJ6IiBmaWxsPSIjMmM1OTY3Ii8+PHBhdGggZmlsbD0iIzJjNTk2NyIgZD0iTTIwLjI4IDMuNzlsLjkzLjk0Ljk2Ljk2Ljg4LS44OC0xLjg0LTEuODQtLjA1LS4wNS0xLjUxLTEuNTEtMS41IDEuNTEtLjA1LjA1LTEuODQgMS44NC44OC44OC45Ni0uOTYuOTMtLjk0djM1LjI0bC0uOTMtLjkzLS45Ni0uOTYtLjg4Ljg4IDEuODQgMS44NC42Ny42Ny44OC44OC44OC0uODguNjgtLjY3IDEuODQtMS44NC0uODgtLjg4LS45Ni45Ni0uOTMuOTNWMy43OXoiLz48cGF0aCBmaWxsPSIjMmM1OTY3IiBkPSJNMjIuNzEgMjAuNzlsLjkzLS45My45Ni0uOTYtLjg4LS44OC0xLjg0IDEuODQtMS41NSAxLjU1IDEuNTUgMS41NiAxLjg0IDEuODQuODgtLjg4LS45Ni0uOTYtLjkzLS45M2gxNS42di0xLjI1aC0xNS42ek0xNi42IDIyLjA0bC0uOTMuOTMtLjk2Ljk2Ljg4Ljg4IDIuNTEtMi41Mi44OC0uODgtLjg4LS44Ny0yLjUxLTIuNTItLjg4Ljg4Ljk2Ljk2LjkzLjkzSDF2MS4yNWgxNS42eiIvPjwvc3ZnPg=="); +} + +.oci-ipsec-connection, .oci-ipsec { + background-image: url("data:image/svg+xml;base64,PHN2ZyB2ZXJzaW9uPSIxLjEiIGlkPSJwcmVmaXhfX0xheWVyXzEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeD0iMCIgeT0iMCIgdmlld0JveD0iMCAwIDQyLjk5IDQyIiB4bWw6c3BhY2U9InByZXNlcnZlIj48c3R5bGU+LnByZWZpeF9fc3Qwe2ZpbGw6I2ZmZn0ucHJlZml4X19zdDF7ZmlsbDpub25lfS5wcmVmaXhfX3N0MntmaWxsOiMyYzU5Njd9PC9zdHlsZT48cGF0aCBjbGFzcz0icHJlZml4X19zdDAiIGQ9Ik0xMCA0MS41bC0xLjg4LS45NFYyNS44M0g1LjQ4bDIuMzMgMi4zMy0xLjc2IDEuNzYtNS4zNC01LjM0IDUuMzQtNS4zNEw3LjgxIDIxbC0yLjMzIDIuMzNoMi42NVYxMS41OWgzLjczdi0xLjMxYzAtNS4yMSA0LjAxLTkuNSA5LjEzLTkuNzYuMTctLjAyLjM0LS4wMi41MS0uMDIgMi40OCAwIDQuODMuOTQgNi42MyAyLjY1IDEuOTQgMS44NCAzIDQuMzIgMyA2Ljk5djEuNDVoMy43M3YxMS43NWgyLjY1bC0yLjMzLTIuMzMgMS43Ni0xLjc2IDUuMzQgNS4zNC01LjM0IDUuMzQtMS43Ni0xLjc2IDIuMzMtMi4zM2gtMi42NXYxNC43M2wtMS44OC45NEgxMHoiLz48cGF0aCBjbGFzcz0icHJlZml4X19zdDAiIGQ9Ik0yMS41IDFjMi4zNSAwIDQuNTcuODggNi4yOCAyLjUxYTkuMDQ1IDkuMDQ1IDAgMDEyLjg1IDYuNjN2MS45NWgzLjczdjExLjc1aDQuMzVsLTIuODMtMi44MyAxLjA2LTEuMDYgNC42MyA0LjYzLTQuNjMgNC42My0xLjA2LTEuMDYgMi44My0yLjgzaC00LjM1djE0LjkybC0xLjQ5Ljc2SDEwLjEybC0xLjUtLjc1VjI1LjMzSDQuMjdsMi44MyAyLjgzLTEuMDYgMS4wNi00LjYzLTQuNjMgNC42My00LjYzIDEuMDYgMS4wNi0yLjgzIDIuODNoNC4zNVYxMi4wOWgzLjczdi0xLjgxYzAtNC45NCAzLjgtOS4wMSA4LjY2LTkuMjYuMTctLjAyLjMzLS4wMi40OS0uMDJtMC0xYy0uMTggMC0uMzYgMC0uNTQuMDEtNS4zOS4yOC05LjYgNC43OS05LjYgMTAuMjZ2LjgxSDcuNjJ2OS4wM2wtLjg3LS44Ny0uNzEtLjcxLS43MS43MUwuNyAyMy44N2wtLjcuNzIuNzEuNzEgNC42MyA0LjYzLjcxLjcxLjcxLS43MS44Ny0uODdWNDAuODhsLjU1LjI4IDEuNS43NS4yLjA5aDIzLjI0bC4yMS0uMTEgMS41LS43NS41NS0uMjhWMjkuMDRsLjg3Ljg3LjcxLjcxLjcxLS43MSA0LjYzLTQuNjMuNzEtLjcxLS43MS0uNzEtNC42My00LjYzLS43MS0uNzEtLjcxLjcxLS44Ny44N3YtOS4wM2gtMy43M3YtLjk1YzAtMi44MS0xLjEyLTUuNDItMy4xNi03LjM1QTEwLjIxIDEwLjIxIDAgMDAyMS41IDB6bTEzLjg3IDIyLjg0di0uOTRsLjk0Ljk0aC0uOTR6bS0yOC42OSAwbC45NC0uOTR2Ljk0aC0uOTR6bTI4LjY5IDMuNDloLjk0bC0uOTQuOTR2LS45NHptLTI4LjY5IDBoLjk0di45NGwtLjk0LS45NHoiLz48Zz48cGF0aCBjbGFzcz0icHJlZml4X19zdDEiIGQ9Ik0yMS4zNiA1LjFjLTIuNy4wNy00LjkgMi4zOS00LjkgNS4xNnYxLjgyaDEwLjA3di0xLjk1YzAtMS4zNy0uNTQtMi42NS0xLjUyLTMuNjFhNS4wMyA1LjAzIDAgMDAtMy42NS0xLjQyeiIvPjxwYXRoIGNsYXNzPSJwcmVmaXhfX3N0MSIgZD0iTTE0Ljk3IDEwLjI2YzAtMy41OCAyLjg1LTYuNTcgNi4zNi02LjY2IDEuNzgtLjA1IDMuNDYuNjEgNC43MyAxLjg1YTYuNDg2IDYuNDg2IDAgMDExLjk3IDQuNjh2MS45NWgxLjEydi0xLjk1YzAtMi4xMi0uODUtNC4wOS0yLjM4LTUuNTVhNy41ODYgNy41ODYgMCAwMC01LjY3LTIuMDljLTQuMDYuMjEtNy4yNCAzLjYyLTcuMjQgNy43N3YxLjgxaDEuMTJ2LTEuODF6TTEwLjEyIDIzLjg0aDEuNDl2MS40OWgtMS40OVYzNi45aDIyLjc2VjI1LjMzaC0xLjQ5di0xLjQ5aDEuNDlWMTMuNThIMTAuMTJ2MTAuMjZ6bTE4LjY1IDBoMS40OXYxLjQ5aC0xLjQ5di0xLjQ5em0tMi42MSAwaDEuNDl2MS40OWgtMS40OXYtMS40OXptLTcuNzguMTlhMy4xMzggMy4xMzggMCAwMTIuNTUtMi41M2MyLS4zNSAzLjc0IDEuMTkgMy43NCAzLjEyIDAgMS4yLS42NyAyLjI0LTEuNjUgMi43OGwuNTkgNC4wOWgtNC4yM2wuNjMtNC4wN2EzLjE2OSAzLjE2OSAwIDAxLTEuNjMtMy4zOXptLTMuMDQtLjE5aDEuNDl2MS40OWgtMS40OXYtMS40OXptLTIuNjEgMGgxLjQ5djEuNDloLTEuNDl2LTEuNDl6Ii8+PHBhdGggY2xhc3M9InByZWZpeF9fc3QyIiBkPSJNMjAuMDIgMjcuNDJsLS42MyA0LjA3aDQuMjNsLS41OS00LjA5Yy45OC0uNTQgMS42NS0xLjU4IDEuNjUtMi43OCAwLTEuOTQtMS43NC0zLjQ3LTMuNzQtMy4xMmEzLjE1IDMuMTUgMCAwMC0yLjU1IDIuNTNjLS4yOCAxLjQ1LjQ2IDIuNzcgMS42MyAzLjM5eiIvPjxwYXRoIGNsYXNzPSJwcmVmaXhfX3N0MiIgZD0iTTM2Ljk1IDE5Ljk1bC0xLjA2IDEuMDYgMi44MyAyLjgzaC00LjM1VjEyLjA5aC0zLjczdi0xLjk1YzAtMi41My0xLjAxLTQuODgtMi44NS02LjYzYTkuMDc3IDkuMDc3IDAgMDAtNi43OC0yLjVjLTQuODUuMjUtOC42NiA0LjMyLTguNjYgOS4yNnYxLjgxSDguNjJ2MTEuNzVINC4yN0w3LjEgMjFsLTEuMDYtMS4wNi00LjYzIDQuNjMgNC42MyA0LjYzIDEuMDYtMS4wNi0yLjgzLTIuODNoNC4zNXYxMy4wNmgyNS43NFYyNS4zM2g0LjM1bC0yLjgzIDIuODMgMS4wNiAxLjA2IDQuNjMtNC42My00LjYyLTQuNjR6bS0yMy4xLTkuNjhjMC00LjE1IDMuMTgtNy41NiA3LjI0LTcuNzcgMi4xMi0uMTEgNC4xNC42MyA1LjY3IDIuMDlhNy41NyA3LjU3IDAgMDEyLjM4IDUuNTV2MS45NWgtMS4xMnYtMS45NWMwLTEuNzgtLjctMy40NC0xLjk3LTQuNjhhNi40NTkgNi40NTkgMCAwMC00LjczLTEuODVjLTMuNTEuMDktNi4zNiAzLjA4LTYuMzYgNi42NnYxLjgyaC0xLjEydi0xLjgyem0xMi42OC0uMTR2MS45NUgxNi40NnYtMS44MmMwLTIuNzggMi4yLTUuMSA0LjktNS4xNiAxLjM4LS4wMyAyLjY3LjQ3IDMuNjUgMS40My45OC45NSAxLjUyIDIuMjMgMS41MiAzLjZ6bTYuMzQgMTMuNzFoLTEuNDl2MS40OWgxLjQ5VjM2LjlIMTAuMTJWMjUuMzNoMS40OXYtMS40OWgtMS40OVYxMy41OGgyMi43NnYxMC4yNnpNOC42MiAzOS41MXYuNzRsMS41Ljc1aDIyLjc1bDEuNS0uNzV2LS43NHoiLz48cGF0aCBjbGFzcz0icHJlZml4X19zdDIiIGQ9Ik0xNS4zNCAyMy44NGgxLjQ5djEuNDloLTEuNDl6TTEyLjczIDIzLjg0aDEuNDl2MS40OWgtMS40OXpNMjguNzcgMjMuODRoMS40OXYxLjQ5aC0xLjQ5ek0yNi4xNiAyMy44NGgxLjQ5djEuNDloLTEuNDl6Ii8+PC9nPjwvc3ZnPg=="); +} + +.oci-key { + background-image: url("data:image/svg+xml;base64,PHN2ZyB2ZXJzaW9uPSIxLjEiIGlkPSJwcmVmaXhfX0xheWVyXzEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeD0iMCIgeT0iMCIgdmlld0JveD0iMCAwIDMyLjI1IDQyLjIxIiB4bWw6c3BhY2U9InByZXNlcnZlIj48c3R5bGU+LnByZWZpeF9fc3Qwe2ZpbGw6I2ZmZn0ucHJlZml4X19zdDF7ZmlsbDojMmM1OTY3fTwvc3R5bGU+PHBhdGggY2xhc3M9InByZWZpeF9fc3QwIiBkPSJNMTUuNTcgNDEuMzdDNi40NCAzNi44Ljk1IDI5LjY4LjUgMjEuODVWNy4yNEwxNi4xMy41NGwxNS42MyA2Ljd2MTQuNThjLS40NSA3Ljg2LTUuOTQgMTQuOTctMTUuMDcgMTkuNTVsLS41NS4yOC0uNTctLjI4eiIvPjxwYXRoIGNsYXNzPSJwcmVmaXhfX3N0MCIgZD0iTTE2LjEzIDEuMDlsMTUuMTMgNi40OHYxNC4yNWMtLjQzIDcuNjUtNS44MyAxNC42MS0xNC44IDE5LjFsLS4zMy4xNy0uMzMtLjE3QzYuODMgMzYuNDMgMS40NCAyOS40NyAxIDIxLjgyVjcuNTdsMTUuMTMtNi40OG0wLTEuMDlsLS4zOS4xN0wuNjEgNi42NSAwIDYuOTFWMjEuODVjLjQ2IDguMDQgNi4wNSAxNS4zMSAxNS4zNSAxOS45N2wuMzMuMTcuNDUuMjIuNDUtLjIyLjMzLS4xN2M5LjMtNC42NiAxNC44OS0xMS45MiAxNS4zNS0xOS45NFY2LjkxbC0uNjEtLjI2TDE2LjUyLjE3IDE2LjEzIDB6Ii8+PGc+PHBhdGggY2xhc3M9InByZWZpeF9fc3QxIiBkPSJNMTYuMTMgMS4wOUwxIDcuNTd2MTQuMjVjLjQ0IDcuNjUgNS44MyAxNC42MSAxNC43OSAxOS4xbC4zMy4xNy4zMy0uMTdjOC45Ny00LjQ5IDE0LjM2LTExLjQ1IDE0LjgtMTkuMVY3LjU3TDE2LjEzIDEuMDl6bTEzLjY1IDIwLjY3Yy0uNDEgNy01LjM4IDEzLjQzLTEzLjY1IDE3LjY4QzcuODUgMzUuMTkgMi44OCAyOC43NiAyLjQ4IDIxLjc2VjguNTRsMTMuNjUtNS44NSAxMy42NSA1Ljg1djEzLjIyeiIvPjxwYXRoIGNsYXNzPSJwcmVmaXhfX3N0MSIgZD0iTTExLjYxIDE2LjY1Yy0xLjg4IDAtMy40MSAxLjUzLTMuNDEgMy40MXMxLjUzIDMuNDEgMy40MSAzLjQxYzEuNiAwIDIuOTMtMS4xIDMuMzEtMi41OGg0LjUzdjIuNThoMS40OHYtMi41OGgxLjY2djIuNzdoMS40OHYtNC4yNGgtOS4xYy0uMzItMS41OC0xLjctMi43Ny0zLjM2LTIuNzd6bTAgNS4zNWMtMS4wNyAwLTEuOTQtLjg3LTEuOTQtMS45NHMuODctMS45NCAxLjk0LTEuOTQgMS45NC44NyAxLjk0IDEuOTRTMTIuNjggMjIgMTEuNjEgMjJ6Ii8+PC9nPjwvc3ZnPg=="); +} + +.oci-load-balancer { + background-image: url("data:image/svg+xml;base64,PHN2ZyBpZD0icHJlZml4X19MYXllcl8xIiBkYXRhLW5hbWU9IkxheWVyIDEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmlld0JveD0iMCAwIDQyLjQ3IDQyLjgzIj48ZGVmcz48c3R5bGU+LnByZWZpeF9fY2xzLTF7ZmlsbDojZmZmfS5wcmVmaXhfX2Nscy0ye2ZpbGw6IzJjNTk2N30ucHJlZml4X19jbHMtM3tmaWxsOm5vbmV9PC9zdHlsZT48L2RlZnM+PHBhdGggY2xhc3M9InByZWZpeF9fY2xzLTEiIGQ9Ik0zMS4zNyAzN2wxLjc2LTEuNzUgMi4xNSAyLjE1Yy0uMjgtMi43Ny0xLjE4LTYuNzctMy44Ni05LjYyYTExLjcxIDExLjcxIDAgMDAtOC4xNC0zLjUzdi42MkEzMi4zNSAzMi4zNSAwIDAxMjAgMzcuNTljLTIuMSAzLjU2LTQuMjIgNC4zLTUuNjQgNC4zYTQuMDggNC4wOCAwIDAxLS43Ny0uMDdjLTQtLjc0LTYuNDctNi44MS03LjQxLTEyLjI0YTQzLjI2IDQzLjI2IDAgMDEtLjY4LTYuOTJoLTV2LTIuNDloNUE0My44MSA0My44MSAwIDAxNi4yNiAxM2MxLjMxLTcuMzkgNC40NS0xMiA4LjE5LTEyIDIuMTggMCA2LjA5IDEuNTkgOC4xOSAxMi4yNWE0NS42NSA0NS42NSAwIDAxLjU4IDQuODV2LjYyYTExLjg5IDExLjg5IDAgMDA4LjI4LTMuNmMyLjY4LTIuODggMy41My02Ljg5IDMuNzgtOS42NWwtMi4xNSAyLjE2LTEuNzYtMS43NUwzNi41NC43MWw1LjE3IDUuMTdMNDAgNy42MyAzNy44MiA1LjVjLS4yNSAzLjA3LTEuMiA3Ljc3LTQuNDUgMTEuMjdhMTMuMTIgMTMuMTIgMCAwMS01LjEyIDMuNGg4LjYybC0yLTEuOTEgMS43MS0xLjggNS4xOCA0LjkzLTUuMTYgNS4xNS0xLjc2LTEuNzVMMzcgMjIuNjZoLTguOUExMy4wOCAxMy4wOCAwIDAxMzMuMjQgMjZjMy4yOCAzLjUgNC4yNyA4LjI0IDQuNTUgMTEuMzNMNDAgMzUuMmwxLjcxIDEuOC01LjE3IDUuMTd6Ii8+PHBhdGggY2xhc3M9InByZWZpeF9fY2xzLTEiIGQ9Ik0zNi41NCAxLjQxbDEgMSAxIC45NEw0MSA1Ljg4bC0xIDEtMS41Ni0xLjQ3LTEtMWMtLjExIDIuODMtLjgxIDguMjItNC4zOSAxMi4wN2ExMy44NSAxMy44NSAwIDAxLTkuNzcgNC4yNGgxNC44NGwtMi41Ni0yLjQzIDEtMS4wOEw0MSAyMS40bC00LjQgNC40NC0xLjA1LTEuMDUgMi42My0yLjYzSDIyLjg0YTEzLjg0IDEzLjg0IDAgMDExMCA0LjE5YzMuNTkgMy44MyA0LjM1IDkuMjQgNC40OSAxMi4xMWwxLTEuMDVMNDAgMzUuOWwxIDEuMS0yLjQ5IDIuNS0xIDEtMSAxLTEuMDgtMS4yLS42NC0uNjNMMzIuMDggMzdsMS4wNS0xLjA1IDEuNTUgMS41NSAxLjIgMS4yYy0uMTItMi42Mi0uODEtNy43Ny00LjA5LTExLjI3YTEyLjQyIDEyLjQyIDAgMDAtOS0zLjdxMCAuNTUtLjA2IDEuMTFhMzEuODQgMzEuODQgMCAwMS0zLjE1IDEyLjU2Yy0xLjg5IDMuMTktMy43NyA0LTUuMTggNGEzLjY2IDMuNjYgMCAwMS0uNjgtLjA2Yy0zLjc5LS43LTYuMTQtNi44MS03LTExLjgzQTQ0IDQ0IDAgMDE2IDIyLjE2SDF2LTEuNDloNWE0Mi41MyA0Mi41MyAwIDAxLjcyLTcuNTlDOCA2IDExIDEuNSAxNC40NSAxLjQ3YzIgMCA1LjYzIDEuNTYgNy42NiAxMS44NWE0Mi4xOSA0Mi4xOSAwIDAxLjU3IDQuNzdjMCAuMzYuMDUuNzMuMDcgMS4xMWExMi41OSAxMi41OSAwIDAwOS4xMi0zLjc5YzMuMjktMy41NCAzLjktOC43IDQtMTEuMjhsLTEuMTUgMS4yLTEuNTkgMS42LTEuMDUtMSAyLjcyLTIuNzguNTQtLjU0IDEuMi0xLjJtMC0xLjQxbC0uNzEuNzEtMS4xOSAxLjItLjU1LjU0LTIuNzIgMi43Mi0uNzEuNzEuNzEuNyAxLjA1IDEgLjcxLjcxLjcxLS43MS44MS0uODFhMTUgMTUgMCAwMS0zLjQ3IDcuOTMgMTEuMjQgMTEuMjQgMCAwMS03LjQ1IDMuNFYxOGE0OCA0OCAwIDAwLS41OC00Ljg4QzIxLjA3IDIuNjcgMTcuMjkuNDcgMTQuNDkuNDdoLS4wOGMtNCAwLTcuMjcgNC42OS04LjY0IDEyLjQzYTQzLjI2IDQzLjI2IDAgMDAtLjcyIDYuNzdIMHYzLjQ5aDUuMDVhNDIuMTkgNDIuMTkgMCAwMC42NyA2LjUyYzEgNS41OCAzLjUyIDExLjg0IDcuODEgMTIuNjNhNSA1IDAgMDAuODYuMDhjMS41NSAwIDMuODUtLjc4IDYtNC40OWEzMi42NSAzMi42NSAwIDAwMy4yOC0xMyAuNDUuNDUgMCAwMTAtLjExIDExLjA1IDExLjA1IDAgMDE3LjMxIDMuMzNBMTUuMTQgMTUuMTQgMCAwMTM0LjU5IDM2bC0uNzUtLjc1LS43MS0uNzEtLjcxLjcxLTEuMDUgMS0uNzEuNzEuNzEuNzEgMi43MiAyLjcxLjYzLjY0IDEuMTEgMS4xMS43MS43MS43MS0uNzEgMS0xIDEtMSAyLjUtMi40OS43MS0uNzEtLjcxLS43MS0xLjA1LTEuMDUtLjcxLS43LS43LjcxLTEuMDggMS4wN2ExOS4wNiAxOS4wNiAwIDAwLTQuNjEtMTAuNTYgMTMuNDggMTMuNDggMCAwMC0zLjIxLTIuNTNoNS4zOGwtLjkzLjkyLS43LjcxLjcuNyAxIDEuMDUuNzEuNzEuNzEtLjcxIDQuNDMtNC40My43My0uNzMtLjc0LS43LTQuNDUtNC4yNC0uNzMtLjY5LS42OS43Mi0xIDEuMDgtLjY5LjcyLjcyLjY5Ljc1LjcxaC01LjA4YTEzLjUgMTMuNSAwIDAwMy4yMy0yLjU2QTE4LjgxIDE4LjgxIDAgMDAzOC4yMSA2LjZsMSAxIC43LjcxLjcxLS43MSAxLjA1LTEgLjcxLS43LS43MS0uNzEtMi40NS0yLjUxLS45NC0uOTQtMS0xLS43NC0uNzR6Ii8+PHBhdGggY2xhc3M9InByZWZpeF9fY2xzLTIiIGQ9Ik0yOC41MiAyMi4xNmg5LjY2bC0yLjYzIDIuNjMgMS4wNSAxLjA1TDQxIDIxLjRsLTQuNDUtNC4yNC0xIDEuMDggMi41NiAyLjQzaC05LjQyYTE1LjY2IDE1LjY2IDAgMDEtMi42NS43NyAxNi4xOCAxNi4xOCAwIDAxMi40OC43MnoiLz48cGF0aCBjbGFzcz0icHJlZml4X19jbHMtMyIgZD0iTTE0LjQ5IDMuMzNjLTIgMC00LjY3IDMuMTgtNS44OSAxMC4wOGE0Mi41OCA0Mi41OCAwIDAwLS42OSA3LjI0aDguOUwxNCAxOC4wNWwxLTEuMDcgNC42MyA0LjQyLTQuNDMgNC40NC0xLTEuMDUgMi42My0yLjYzaC05YTQxLjM1IDQxLjM1IDAgMDAuNjUgN2MxIDUuNTggMy4yOCA5LjkyIDUuNTIgMTAuMzMgMS41Ny4yOSAzLTEuNDggMy45MS0zIDMuMy02LjI3IDMuNTctMTYgMi4zNy0yMi44QzE4LjgyIDYgMTYuMzMgMy4zMyAxNC40OSAzLjMzeiIvPjxwYXRoIGNsYXNzPSJwcmVmaXhfX2Nscy0zIiBkPSJNMTQuNDkgMy4zM2MtMiAwLTQuNjcgMy4xOC01Ljg5IDEwLjA4YTQyLjU4IDQyLjU4IDAgMDAtLjY5IDcuMjRoOC45TDE0IDE4LjA1bDEtMS4wNyA0LjYzIDQuNDItNC40MyA0LjQ0LTEtMS4wNSAyLjYzLTIuNjNoLTlhNDEuMzUgNDEuMzUgMCAwMC42NSA3YzEgNS41OCAzLjI4IDkuOTIgNS41MiAxMC4zMyAxLjU3LjI5IDMtMS40OCAzLjkxLTMgMy4zLTYuMjcgMy41Ny0xNiAyLjM3LTIyLjhDMTguODIgNiAxNi4zMyAzLjMzIDE0LjQ5IDMuMzN6Ii8+PHBhdGggY2xhc3M9InByZWZpeF9fY2xzLTIiIGQ9Ik0zOC40MSAzNy40NGwtMSAxLjA1Yy0uMTQtMi44Ny0uOS04LjI4LTQuNDktMTIuMTFhMTMuODQgMTMuODQgMCAwMC0xMC00LjE5VjIwLjdBMTQgMTQgMCAwMDMzIDE2LjQzYzMuNTgtMy44NSA0LjI4LTkuMjQgNC4zOS0xMi4wN2wxIDFMNDAgNi45M2wxLTEtMi40OC0yLjU0LTEtLjk0LTEtMS0xLjIgMS4yLS41NC41NC0yLjcgMi42OSAxLjA1IDEgMS41OS0xLjYgMS4xOC0xLjEzYy0uMDkgMi41OC0uNyA3Ljc0LTQgMTEuMjhhMTIuNTkgMTIuNTkgMCAwMS05LjEyIDMuNzljMC0uMzggMC0uNzUtLjA3LTEuMTFhNDIuMTkgNDIuMTkgMCAwMC0uNTctNC43N0MyMC4xMiAzIDE2LjQ5IDEuNDcgMTQuNDkgMS40NyAxMSAxLjUgOCA2IDYuNzUgMTMuMDhBNDIuNTMgNDIuNTMgMCAwMDYgMjAuNjdIMXYxLjQ5aDVhNDQgNDQgMCAwMC43IDcuMzRjLjg3IDUgMy4yMiAxMS4xMyA3IDExLjgzYTMuNjYgMy42NiAwIDAwLjY4LjA2YzEuNDEgMCAzLjI5LS44MSA1LjE4LTRhMzEuODQgMzEuODQgMCAwMDMuMTUtMTIuNTZxMC0uNTUuMDYtMS4xMWExMi40MiAxMi40MiAwIDAxOSAzLjdjMy4yOCAzLjUgNCA4LjY1IDQuMDkgMTEuMjdsLTEuMi0xLjItMS41My0xLjU5LTEuMDUgMS4xIDIuNzEgMi43Mi42NC42MyAxLjExIDEuMTEgMS0xIDEtMUw0MSAzN2wtMS0xLjF6TTE4IDM2LjQ3Yy0uOTIgMS41NS0yLjM0IDMuMzItMy45MSAzLTIuMjQtLjQxLTQuNTYtNC43NS01LjUyLTEwLjMzYTQxLjM1IDQxLjM1IDAgMDEtLjY1LTdoOWwtMi42MyAyLjYzIDEgMS4wNSA0LjQzLTQuNDRMMTUuMDYgMTdsLTEgMS4wNyAyLjc0IDIuNjJINy44OGE0Mi41OCA0Mi41OCAwIDAxLjY5LTcuMjRjMS4yMy02Ljk0IDMuOTItMTAuMTEgNS45LTEwLjEyIDEuODQgMCA0LjMzIDIuNzEgNS44NCAxMC4zNCAxLjIyIDYuODQuOTUgMTYuNTMtMi4zMSAyMi44eiIvPjwvc3ZnPg=="); +} + +.oci-load-balancer-backend-set { + background-image: url("data:image/svg+xml;base64,PHN2ZyBkYXRhLW5hbWU9IkxheWVyIDEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmlld0JveD0iMCAwIDQyIDQyIj48cmVjdCB4PSIuNSIgeT0iLjUiIHdpZHRoPSI0MSIgaGVpZ2h0PSI0MSIgcng9IjIuMTciIGZpbGw9IiNmZmYiLz48cGF0aCBkPSJNMzkuMzMgMUExLjY3IDEuNjcgMCAwMTQxIDIuNjd2MzYuNjZBMS42NyAxLjY3IDAgMDEzOS4zMyA0MUgyLjY3QTEuNjcgMS42NyAwIDAxMSAzOS4zM1YyLjY3QTEuNjcgMS42NyAwIDAxMi42NyAxaDM2LjY2bTAtMUgyLjY3QTIuNjggMi42OCAwIDAwMCAyLjY3djM2LjY2QTIuNjggMi42OCAwIDAwMi42NyA0MmgzNi42NkEyLjY4IDIuNjggMCAwMDQyIDM5LjMzVjIuNjdBMi42OCAyLjY4IDAgMDAzOS4zMyAweiIgZmlsbD0iI2ZmZiIvPjxwYXRoIGQ9Ik0zOS4zMyAxSDIuNjdBMS42NyAxLjY3IDAgMDAxIDIuNjd2MzYuNjZBMS42NyAxLjY3IDAgMDAyLjY3IDQxaDQuMTdhMi42OCAyLjY4IDAgMDEtLjU1LTEuNDhIMi42N2EuMi4yIDAgMDEtLjE5LS4xOVYyLjY3YS4yLjIgMCAwMS4xOS0uMTloMzYuNjZhLjIuMiAwIDAxLjE5LjE5djM2LjY2YS4yLjIgMCAwMS0uMTkuMTloLTMuNjJhMi42OCAyLjY4IDAgMDEtLjU1IDEuNDhoNC4xN0ExLjY3IDEuNjcgMCAwMDQxIDM5LjMzVjIuNjdBMS42NyAxLjY3IDAgMDAzOS4zMyAxeiIgZmlsbD0iIzJjNTk2NyIvPjxwYXRoIGQ9Ik02LjU2IDYuNTZ2Ny42OEEyLjgxIDIuODEgMCAwMTggMTIuODZWOGg2djQuNjNoMS40OFY2LjU2ek0xNi41NiA2LjU2djYuMTFoMS40OFY4LjA0aDUuOTJ2NC42M2gxLjQ4VjYuNTZoLTguODh6TTI2LjU2IDYuNTZ2Ni4xMUgyOFY4aDZ2NC44MmEyLjgxIDIuODEgMCAwMTEuNDggMS4zOFY2LjU2eiIgZmlsbD0iIzJjNTk2NyIvPjxwYXRoIGQ9Ik0zNC42MSAzOS4zM1YxNS40NGExLjY3IDEuNjcgMCAwMC0xLjY3LTEuNjZIOS4wNmExLjY3IDEuNjcgMCAwMC0xLjY3IDEuNjZ2MjMuODlBMS42NyAxLjY3IDAgMDA5LjA2IDQxaDIuMjJhMi44NCAyLjg0IDAgMDEtLjU1LTEuNDhIOS4wNmEuMi4yIDAgMDEtLjE5LS4xOVYxNS40NGEuMTkuMTkgMCAwMS4xOS0uMThoMjMuODhhLjE5LjE5IDAgMDEuMTkuMTh2MjMuODlhLjIuMiAwIDAxLS4xOS4xOWgtMS42N2EyLjg0IDIuODQgMCAwMS0uNTUgMS40OGgyLjIyYTEuNjcgMS42NyAwIDAwMS42Ny0xLjY3eiIgZmlsbD0iIzJjNTk2NyIvPjxwYXRoIGQ9Ik0xMS44NCAxOC4yM3YzLjg4YTIuODQgMi44NCAwIDAxMS40OC0uNTV2LTEuODVoMnYxLjg1aDEuNDh2LTMuMzN6TTE4LjUyIDE4LjIzdjMuMzNoMS40OXYtMS44NWgxLjk4djEuODVoMS40OXYtMy4zM2gtNC45NnpNMjUuMjEgMTguMjN2My4zM2gxLjQ4di0xLjg1aDJ2MS44NWEyLjg0IDIuODQgMCAwMTEuNDguNTV2LTMuODh6TTMwLjE3IDM5LjMzdi0xNWExLjY2IDEuNjYgMCAwMC0xLjY3LTEuNjZoLTE1YTEuNjYgMS42NiAwIDAwLTEuNjcgMS42NnYxNUExLjY3IDEuNjcgMCAwMDEzLjUgNDFoMTVhMS42NyAxLjY3IDAgMDAxLjY3LTEuNjd6bS0xNi44NiAwdi0xNWEuMTkuMTkgMCAwMS4xOS0uMThoMTVhLjE5LjE5IDAgMDEuMTkuMTh2MTVhLjIuMiAwIDAxLS4xOS4xOWgtMTVhLjIuMiAwIDAxLS4xOS0uMTl6IiBmaWxsPSIjMmM1OTY3Ii8+PHBhdGggZmlsbD0iIzJjNTk2NyIgZD0iTTE1IDM0LjU5aDEyLjA3djMuMjRIMTV6TTE1IDI1Ljg0aDMuMjR2My4yNEgxNXpNMTkuMzggMjUuODRoMy4yNHYzLjI0aC0zLjI0ek0xNSAzMC4yMWgzLjI0djMuMjRIMTV6TTE5LjM4IDMwLjIxaDMuMjR2My4yNGgtMy4yNHpNMjMuNzUgMjUuODRoMy4yNHYzLjI0aC0zLjI0ek0yMy43NSAzMC4yMWgzLjI0djMuMjRoLTMuMjR6Ii8+PC9zdmc+"); +} + +.oci-load-balancer-listener { + background-image: url("data:image/svg+xml;base64,PHN2ZyBpZD0icHJlZml4X19MYXllcl8xIiBkYXRhLW5hbWU9IkxheWVyIDEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmlld0JveD0iMCAwIDQyLjA2IDQyIj48ZGVmcz48c3R5bGU+LnByZWZpeF9fY2xzLTF7ZmlsbDojZmZmfS5wcmVmaXhfX2Nscy0ye2ZpbGw6IzJjNTk2N308L3N0eWxlPjwvZGVmcz48cGF0aCBjbGFzcz0icHJlZml4X19jbHMtMSIgZD0iTTM2LjIyIDQxLjVMMjkgMzIuMzNIMTUuODFsLTQuMiA0LjIxLS4zNi0uMzZhMy4yNSAzLjI1IDAgMDAtNC41OSAwbC0uMzYuMzYtMy41OS0zLjZMLjUgMzAuODVWLjVoNDEuMDZ2NDF6Ii8+PHBhdGggY2xhc3M9InByZWZpeF9fY2xzLTEiIGQ9Ik00MS4wNiAxdjQwaC00LjU5bC03LjE5LTkuMTdIMTUuNmwtLjc1Ljc2LS44Mi44Mi0yLjQyIDIuNDJhMy43NSAzLjc1IDAgMDAtNS4zMSAwbC0yLjU0LTIuNTQtLjctLjdMMSAzMC42M1YxaDQwLjA2bTEtMUgwdjMxLjA2bC4zMS4zIDIuMDYgMiAuNjkuNjggMi41NCAyLjUuNy43MS43LS43MWEyLjc0IDIuNzQgMCAwMTMuODkgMGwuNzEuNzEuNy0uNzEgMi40Mi0yLjQyLjgyLS44Mi40Ny0uNDdoMTIuNzhsNi44OSA4Ljc5LjMyLjM4aDYuMDhWMHoiLz48cGF0aCBjbGFzcz0icHJlZml4X19jbHMtMSIgZD0iTTkgNDEuNDhhMyAzIDAgMDEtMi4xMy01LjEybC4yMi0uMi4yMS0uMTZhMy4wNyAzLjA3IDAgMDExLjctLjUyIDMgMyAwIDAxMS42LjUybC4yLjE1YTIgMiAwIDAxLjI0LjIxIDMgMyAwIDAxMCA0LjI3IDMgMyAwIDAxLTIuMDQuODV6Ii8+PHBhdGggY2xhc3M9InByZWZpeF9fY2xzLTEiIGQ9Ik05IDM2YTIuNDkgMi40OSAwIDAxMS4zNi40MS44OC44OCAwIDAxLjE3LjEybC4xNi4xNGEyLjUgMi41IDAgMDEtMy41MyAzLjUzIDIuNDkgMi40OSAwIDAxLS43My0xLjc3IDIuNDQgMi40NCAwIDAxLjczLTEuNzZsLjA2LS4wNS4xMi0uMTFoLjA2bC4xNS0uMUEyLjUzIDIuNTMgMCAwMTkgMzZtMC0xYTMuNDkgMy40OSAwIDAwLTEuODkuNTZsLS4xOS4xNC0uMDguMDYtLjE2LjE1aC0uMDVsLS4xOC4wOWEzLjUxIDMuNTEgMCAxMDUgMGgtLjExcy0uMTEtLjEtLjE3LS4xNmgtLjA1bC0uMjEtLjE1QTMuNDIgMy40MiAwIDAwOSAzNXoiLz48cGF0aCBjbGFzcz0icHJlZml4X19jbHMtMiIgZD0iTTEuMDYgMUwxIDI4LjgzYTEyLjQ3IDEyLjQ3IDAgMDExLjY3LTEuMTZ2LTI1SDM5LjR2MzYuNjZoLTIuMTJsLTcuMTktOS4xNkgxOC4zMmguMDVsLjg0Ljg0LjA2LjA2LjY2LjcxaDkuMzVMMzYuNDcgNDFoNC41OVYxeiIvPjxwYXRoIGNsYXNzPSJwcmVmaXhfX2Nscy0yIiBkPSJNMTQuMzEgMjEuODNMMTcuMTUgMjRsMy02LjU1di03LjI4SDExdjcuODdoMy4yOHptLTEuNjEtNS40NXYtNC41M2g1LjgxVjE3bC0yIDQuMzVMMTYgMjF2LTQuNjJ6TTI1LjE4IDIxLjgzTDI4IDI0bDMtNi41NXYtNy4yOGgtOS4xdjcuODdoMy4yOHptLTEuNjEtNS40NXYtNC41M2g1LjgxVjE3bC0yIDQuMzUtLjUzLS4zNXYtNC42MnpNMi4xOCAzMS43MWMuMTEtLjEyLjIzLS4yMy4zNS0uMzRhOS41NyA5LjU3IDAgMDExMi43NyAwYy4xMi4xMS4yNC4yMi4zNS4zNGwxLjE4LTEuMThhMTEuMjYgMTEuMjYgMCAwMC0xNS44MyAweiIvPjxwYXRoIGNsYXNzPSJwcmVmaXhfX2Nscy0yIiBkPSJNOSAzMC4xNWE4LjMyIDguMzIgMCAwMC01LjkgMi40NGwxLjE4IDEuMThjLjE2LS4xNi4zMi0uMzEuNDktLjQ1YTYuNyA2LjcgMCAwMTguNDUgMGMuMTcuMTQuMzMuMjkuNDkuNDVsMS4xOC0xLjE4QTguMzEgOC4zMSAwIDAwOSAzMC4xNXoiLz48cGF0aCBjbGFzcz0icHJlZml4X19jbHMtMiIgZD0iTTkgMzMuMDdhNS4zNiA1LjM2IDAgMDAtMy42NCAxLjRsLS4yLjE4IDEuMTQgMS4xOGEzLjc1IDMuNzUgMCAwMTUuMzEgMGwxLjE4LTEuMTgtLjItLjE4QTUuMzYgNS4zNiAwIDAwOSAzMy4wN3pNMTAuNzIgMzYuNzFsLS4xNi0uMTRhLjg4Ljg4IDAgMDAtLjE3LS4xMiAyLjQ5IDIuNDkgMCAwMC0yLjcxIDBsLS4xNS4xaC0uMDZsLS4xMi4xMS0uMDYuMDVhMi40NCAyLjQ0IDAgMDAtLjczIDEuNzYgMi40OSAyLjQ5IDAgMDAuNzMgMS43NyAyLjUgMi41IDAgMTAzLjUzLTMuNTN6Ii8+PC9zdmc+"); +} + +.oci-loadbalancer { + background-image: url("data:image/svg+xml;base64,PHN2ZyB2ZXJzaW9uPSIxLjEiIGlkPSJwcmVmaXhfX0xheWVyXzEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeD0iMCIgeT0iMCIgdmlld0JveD0iMCAwIDQyLjM4IDQyIiB4bWw6c3BhY2U9InByZXNlcnZlIj48c3R5bGU+LnByZWZpeF9fc3Qwe2ZpbGw6I2ZmZn08L3N0eWxlPjxwYXRoIGNsYXNzPSJwcmVmaXhfX3N0MCIgZD0iTTM0LjIgNDEuNXYtMi40OGgzLjAxTDIzLjE2IDI0Ljk2Yy0uMzcgNC43Ni0xLjQ2IDguOTUtMy4xNyAxMi4xOC0yLjEgMy41Ni00LjIyIDQuMjktNS42MyA0LjI5LS4yNSAwLS41MS0uMDItLjc2LS4wNy00LjAzLS43NC02LjQ2LTYuNzktNy40LTEyLjIxLS4zOC0yLjAzLS42Mi00LjQxLS42Ny02LjkxSC41di0yLjQ4aDUuMDNjLjA2LTIuNTkuMzEtNS4wNy43Mi03LjE3QzcuNTYgNS4yMyAxMC42OS42NCAxNC40Mi42YzIuMTggMCA2LjA4IDEuNTkgOC4xOCAxMi4yMy4yNCAxLjM1LjQxIDIuNzUuNTMgNC4yTDM3LjE3IDIuOThIMzQuMlYuNWg3LjN2Ny4zaC0yLjQ4VjQuNjRMMjMuOSAxOS43NmgxMi44OGwtMi0xLjkxIDEuNzEtMS44IDUuMTcgNC45Mi01LjE0IDUuMTQtMS43NS0xLjc1IDIuMTItMi4xM0gyMy45NUwzOS4wMiAzNy4zdi0zLjFoMi40OHY3LjNoLTcuM3oiLz48cGF0aCBjbGFzcz0icHJlZml4X19zdDAiIGQ9Ik00MSAxdjYuM2gtMS40OFYzLjQ0TDIyLjc5IDIwLjE3di4wOWgxNS4yNWwtMi41NS0yLjQzIDEuMDItMS4wNyA0LjQ0IDQuMjMtNC40MyA0LjQzLTEuMDUtMS4wNSAyLjYyLTIuNjJoLTE1LjN2LjA1bDE2LjcyIDE2LjcyVjM0LjdINDFWNDFoLTYuM3YtMS40OGgzLjcybC0xNS43LTE1LjdjLS4yNSA0LjU3LTEuMTcgOS4yOC0zLjE4IDEzLjA4bC0uMDIuMDRjLTEuODggMy4xOS0zLjc1IDMuOTktNS4xNyAzLjk5LS4yNCAwLS40Ny0uMDItLjY4LS4wNi0zLjc4LS42OS02LjEzLTYuNzktNi45OS0xMS44MS0uNDItMi4yLS42NC00Ljc1LS42OC03LjMySDF2LTEuNDhoNS4wMmMuMDQtMi42Ny4yOC01LjMxLjcyLTcuNThDOCA1LjU3IDEwLjk1IDEuMTMgMTQuNDIgMS4xaC4wNGMyIDAgNS42MiAxLjU1IDcuNjQgMTEuODJ2LjAyYy4yNyAxLjU2LjQ5IDMuMzMuNiA1LjIxTDM4LjM4IDIuNDhIMzQuN1YxSDQxbTEtMWgtOC4zdjMuNDhoMi4yNkwyMy41MyAxNS45MmMtLjExLTEuMDktLjI2LTIuMTQtLjQ0LTMuMTVDMjEuMDIgMi4yOSAxNy4yNi4xIDE0LjQ2LjFjLTQuMDkuMDQtNy4zMyA0LjY4LTguNzEgMTIuNDEtLjM5IDEuOTktLjYzIDQuMzEtLjcxIDYuNzVIMHYzLjQ4aDUuMDRjLjA4IDIuMzQuMzEgNC41OC42NyA2LjUxLjk2IDUuNTcgMy41MSAxMS44MiA3LjggMTIuNi4yOC4wNS41Ny4wOC44Ni4wOCAxLjU0IDAgMy44NC0uNzggNi4wMy00LjQ4di0uMDFsLjAzLS4wNWMxLjYyLTMuMDYgMi42OS02Ljk0IDMuMTQtMTEuMzNsMTIuNDUgMTIuNDVIMzMuN1Y0Mkg0MnYtOC4zaC0zLjQ4djIuNEwyNS4xNiAyMi43NGgxMC41M2wtLjkyLjkyLS43MS43MS43MS43MSAxLjA1IDEuMDUuNzEuNzEuNzEtLjcxIDQuNDMtNC40My43Mi0uNzItLjc0LS43MS00LjQ0LTQuMjMtLjcyLS42OS0uNjkuNzItMS4wMiAxLjA3LS42OS43Mi43Mi42OS43NC43SDI1LjExbDEzLjQxLTEzLjRWOC4zSDQyVjB6Ii8+PGc+PHBhdGggZD0iTTE0LjQ2IDIuOTVoLS4wMmMtMS45Ny4wMi00LjY2IDMuMTgtNS44OCAxMC4wNnYuMDJjLS40MiAyLjE3LS42NSA0LjY4LS42OSA3LjIzaDguODhsLTIuNzQtMi42MSAxLjAyLTEuMDcgNC42MiA0LjQxLTQuNDMgNC40Mi0xLjA1LTEuMDUgMi42Mi0yLjYySDcuODZjLjA0IDIuNDYuMjUgNC44OS42NSA2Ljk5Ljk2IDUuNTcgMy4yNyA5LjkgNS41MSAxMC4zMS4xMS4wMi4yMy4wMy4zNC4wMyAxLjQzIDAgMi43MS0xLjYzIDMuNTYtMy4wNiAzLjI5LTYuMjUgMy41Ni0xNS45MiAyLjM2LTIyLjc1LTEuNS03LjYtMy45OS0xMC4zMS01LjgyLTEwLjMxeiIgZmlsbD0ibm9uZSIvPjxwYXRoIGQ9Ik00MSA3LjNWMWgtNi4zdjEuNDhoMy42N0wyMi43MSAxOC4xNWMtLjExLTEuODgtLjMyLTMuNjUtLjYtNS4yMXYtLjAyQzIwLjA4IDIuNjUgMTYuNDYgMS4xIDE0LjQ2IDEuMWgtLjA0QzEwLjk1IDEuMTMgOCA1LjU3IDYuNzQgMTIuNjhjLS40NCAyLjI3LS42OCA0LjkxLS43MiA3LjU4SDF2MS40OGg1LjAxYy4wNCAyLjU4LjI2IDUuMTIuNjggNy4zMi44NiA1LjAxIDMuMjEgMTEuMTEgNi45OSAxMS44MS4yMS4wNC40NC4wNi42OC4wNiAxLjQxIDAgMy4yOC0uOCA1LjE3LTMuOTlsLjAyLS4wNGMyLjAxLTMuOCAyLjkzLTguNTEgMy4xOC0xMy4wOGwxNS43IDE1LjdIMzQuN1Y0MUg0MXYtNi4zaC0xLjQ4djMuODFMMjIuNzkgMjEuNzl2LS4wNUgzOC4xbC0yLjYyIDIuNjIgMS4wNSAxLjA1IDQuNDMtNC40My00LjQ0LTQuMjMtMS4wMiAxLjA3IDIuNTUgMi40M0gyMi43OXYtLjA5TDM5LjUyIDMuNDRWNy4zSDQxek0xNy45MiAzNi4wMmMtLjg1IDEuNDMtMi4xMyAzLjA2LTMuNTYgMy4wNi0uMTEgMC0uMjMtLjAxLS4zNC0uMDMtMi4yMy0uNDEtNC41NS00Ljc0LTUuNTEtMTAuMzEtLjQtMi4xMS0uNjEtNC41NC0uNjUtNi45OWg4Ljk0bC0yLjYyIDIuNjIgMS4wNSAxLjA1TDE5LjY2IDIxbC00LjYyLTQuNDEtMS4wMiAxLjA3IDIuNzQgMi42MWgtOC45Yy4wNC0yLjU1LjI3LTUuMDYuNjktNy4yM3YtLjAyYzEuMjItNi44OSAzLjkxLTEwLjA0IDUuODgtMTAuMDZoLjAyYzEuODMgMCA0LjMyIDIuNzEgNS44MyAxMC4zMiAxLjIgNi44MS45MyAxNi40OS0yLjM2IDIyLjc0eiIgZmlsbD0iIzJjNTk2NyIvPjwvZz48L3N2Zz4="); +} + +.oci-local-peering-gateway { + background-image: url("data:image/svg+xml;base64,PHN2ZyBkYXRhLW5hbWU9IkxheWVyIDEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmlld0JveD0iMCAwIDIyIDIyIj48Y2lyY2xlIGN4PSIxMSIgY3k9IjExIiByPSIxMC41IiBmaWxsPSIjZmZmIi8+PHBhdGggZD0iTTExIDFBMTAgMTAgMCAxMTEgMTEgMTAgMTAgMCAwMTExIDFtMC0xYTExIDExIDAgMTAxMSAxMUExMSAxMSAwIDAwMTEgMHoiIGZpbGw9IiNmZmYiLz48cGF0aCBkPSJNMTEgMWExMCAxMCAwIDEwMTAgMTBBMTAgMTAgMCAwMDExIDF6bTAgMTkuMTdBOS4xNyA5LjE3IDAgMTEyMC4xNyAxMSA5LjE5IDkuMTkgMCAwMTExIDIwLjE3eiIgZmlsbD0iIzJjNTk2NyIvPjxwYXRoIGZpbGw9IiMyYzU5NjciIGQ9Ik0xNi4xOSA4LjczbC0uNTkuNTggMS4yNyAxLjI3SDUuMjRMNi41IDkuMzFsLS41OS0uNThMMy42NCAxMWwyLjI3IDIuMjcuNTktLjU4LTEuMjYtMS4yN2gxMS42M2wtMS4yNyAxLjI3LjU5LjU4TDE4LjQ2IDExbC0yLjI3LTIuMjd6Ii8+PC9zdmc+"); +} + +.oci-lpg { + background-image: url("data:image/svg+xml;base64,PHN2ZyB2ZXJzaW9uPSIxLjEiIGlkPSJwcmVmaXhfX0xheWVyXzEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeD0iMCIgeT0iMCIgdmlld0JveD0iMCAwIDQyIDEzLjYyIiB4bWw6c3BhY2U9InByZXNlcnZlIj48c3R5bGU+LnByZWZpeF9fc3Qwe2ZpbGw6I2ZmZn0ucHJlZml4X19zdDF7ZmlsbDojMmM1OTY3fTwvc3R5bGU+PHBhdGggY2xhc3M9InByZWZpeF9fc3QwIiBkPSJNMzUuMTkgMTMuMTJjLTMuMDYgMC01LjY1LTIuMTgtNi4yLTUuMTVIMTMuMDFBNi4zMDcgNi4zMDcgMCAwMS41IDYuODFDLjUgMy4zMyAzLjMzLjUgNi44MS41YzMuMDYgMCA1LjY1IDIuMTggNi4yIDUuMTVIMjlhNi4zMDcgNi4zMDcgMCAwMTEyLjUxIDEuMTZjMCAzLjQ4LTIuODQgNi4zMS02LjMyIDYuMzF6Ii8+PHBhdGggY2xhc3M9InByZWZpeF9fc3QwIiBkPSJNMzUuMTkgMUMzOC4zOSAxIDQxIDMuNjEgNDEgNi44MXMtMi42MSA1LjgxLTUuODEgNS44MWMtMi45OCAwLTUuNDQtMi4yNi01Ljc3LTUuMTVIMTIuNThjLS4zMyAyLjg5LTIuNzkgNS4xNS01Ljc3IDUuMTUtMy4yIDAtNS44MS0yLjYxLTUuODEtNS44MVMzLjYxIDEgNi44MSAxYzIuOTggMCA1LjQ0IDIuMjYgNS43NyA1LjE1aDE2Ljg1QTUuODAzIDUuODAzIDAgMDEzNS4xOSAxbTAtMWMtMy4xNiAwLTUuODUgMi4xNi02LjYgNS4xNUgxMy40MUE2LjgwNCA2LjgwNCAwIDAwNi44MSAwQzMuMDUgMCAwIDMuMDUgMCA2LjgxczMuMDUgNi44MSA2LjgxIDYuODFjMy4xNiAwIDUuODUtMi4xNiA2LjYtNS4xNWgxNS4xOGE2LjgwNCA2LjgwNCAwIDAwNi42IDUuMTVjMy43NSAwIDYuODEtMy4wNSA2LjgxLTYuODFTMzguOTUgMCAzNS4xOSAweiIvPjxnPjxwYXRoIGNsYXNzPSJwcmVmaXhfX3N0MSIgZD0iTTI4LjQzIDYuMTVIMTMuNTdhNy4yODYgNy4yODYgMCAwMTAgMS4zMmgxNC44NmE3LjI4NiA3LjI4NiAwIDAxMC0xLjMyek0xMi42MiA2LjgxYzAtMy4yLTIuNjEtNS44MS01LjgxLTUuODFTMSAzLjYxIDEgNi44MXMyLjYxIDUuODEgNS44MSA1LjgxIDUuODEtMi42MSA1LjgxLTUuODF6TTYuODEgMTEuM2E0LjQ5IDQuNDkgMCAxMTAtOC45OCA0LjQ5IDQuNDkgMCAwMTAgOC45OHpNMzUuMTkgMWMtMy4yIDAtNS44MSAyLjYxLTUuODEgNS44MXMyLjYxIDUuODEgNS44MSA1LjgxUzQxIDEwLjAxIDQxIDYuODEgMzguMzkgMSAzNS4xOSAxem0wIDEwLjNhNC40OSA0LjQ5IDAgMTEwLTguOTggNC40OSA0LjQ5IDAgMDEwIDguOTh6Ii8+PHBhdGggY2xhc3M9InByZWZpeF9fc3QxIiBkPSJNNy40NiA0LjY0bC0uOTMtLjk0LTMuMSAzLjEgMy4xIDMuMS45My0uOTMtMS41MS0xLjVoNC4zYy4wNC0uMjEuMDYtLjQzLjA2LS42NnMtLjAyLS40NS0uMDYtLjY2aC00LjNsMS41MS0xLjUxek0zNC4zOCA4Ljk4bC45My45MyAzLjEtMy4xLTMuMS0zLjEtLjkzLjkzIDEuNTEgMS41MWgtNC4xM2MtLjA0LjIxLS4wNi40My0uMDYuNjZzLjAyLjQ1LjA2LjY2aDQuMTNsLTEuNTEgMS41MXoiLz48L2c+PC9zdmc+"); +} + +.oci-mount-target { + background-image: url("data:image/svg+xml;base64,PHN2ZyB2ZXJzaW9uPSIxLjEiIGlkPSJwcmVmaXhfX0xheWVyXzEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeD0iMCIgeT0iMCIgdmlld0JveD0iMCAwIDI2LjM0IDQyIiB4bWw6c3BhY2U9InByZXNlcnZlIj48c3R5bGU+LnByZWZpeF9fc3Qwe2ZpbGw6I2ZmZn0ucHJlZml4X19zdDF7ZmlsbDojMmM1OTY3fTwvc3R5bGU+PHBhdGggY2xhc3M9InByZWZpeF9fc3QwIiBkPSJNMi43NyA0MS41QzEuNTIgNDEuNS41IDQwLjQ4LjUgMzkuMjNWMTMuNzJjMC0xLjI1IDEuMDItMi4yNyAyLjI3LTIuMjdoNS40MmwtLjU1LS44QzUuNiA3LjcgNi4yOSAzLjY3IDkuMTggMS42NkE2LjYzOSA2LjYzOSAwIDAxMTIuOTUuNWMyLjExIDAgNC4wMyAxLjAyIDUuMjYgMi43OSAxLjU0IDIuMjEgMS41NSA1LjE3LjA0IDcuMzZsLS41NS44aDUuODdjMS4yNSAwIDIuMjcgMS4wMiAyLjI3IDIuMjd2MjUuNTJjMCAxLjI1LTEuMDIgMi4yNy0yLjI3IDIuMjdIMi43N3oiLz48cGF0aCBjbGFzcz0icHJlZml4X19zdDAiIGQ9Ik0xMi45NSAxYzEuOTUgMCAzLjcyLjk0IDQuODUgMi41NyAxLjQyIDIuMDQgMS40MyA0Ljc3LjA0IDYuNzlsLTEuMDkgMS41OGg2LjgyYy45NyAwIDEuNzcuNzkgMS43NyAxLjc3djI1LjUyYzAgLjk3LS43OSAxLjc3LTEuNzcgMS43N0gyLjc3QzEuNzkgNDEgMSA0MC4yMSAxIDM5LjIzVjEzLjcyYzAtLjk3Ljc5LTEuNzcgMS43Ny0xLjc3aDYuMzdsLTEuMDktMS41OEM2LjE3IDcuNjQgNi44IDMuOTIgOS40NyAyLjA3IDEwLjQ2IDEuMzggMTEuNjkgMSAxMi45NSAxbTAtMUMxMS41IDAgMTAuMDYuNDQgOC45IDEuMjVjLTMuMTIgMi4xNi0zLjg3IDYuNTEtMS42NiA5LjY5bC4wMS4wMUgyLjc3QTIuNzcgMi43NyAwIDAwMCAxMy43MnYyNS41MkMwIDQwLjc2IDEuMjQgNDIgMi43NyA0MmgyMC44MWEyLjc3IDIuNzcgMCAwMDIuNzctMi43N1YxMy43MmEyLjc3IDIuNzcgMCAwMC0yLjc3LTIuNzdoLTQuOTJsLjAxLS4wMmMxLjYzLTIuMzYgMS42MS01LjU0LS4wNC03LjkzLTEuMzQtMS45LTMuNC0zLTUuNjgtM3oiLz48Zz48cGF0aCBjbGFzcz0icHJlZml4X19zdDEiIGQ9Ik0yMy41NyAxMS45NWgtNS4zOWwtMS4wOCAxLjU3aDYuNDdjLjExIDAgLjIuMDkuMi4ydjI1LjUyYS4yLjIgMCAwMS0uMi4ySDIuNzdhLjIuMiAwIDAxLS4yLS4yVjEzLjcyYzAtLjExLjA5LS4yLjItLjJoNi4wMmwtMS4wOC0xLjU3SDIuNzdjLS45OCAwLTEuNzcuNzktMS43NyAxLjc3djI1LjUyYzAgLjk3Ljc5IDEuNzYgMS43NyAxLjc2aDIwLjgxYy45NyAwIDEuNzctLjc5IDEuNzctMS43N1YxMy43MmMtLjAxLS45OC0uOC0xLjc3LTEuNzgtMS43N3oiLz48cGF0aCBjbGFzcz0icHJlZml4X19zdDEiIGQ9Ik0zLjc1IDIxLjc2aDE4Ljg0VjE0LjdIMTYuM2wtMS4wOCAxLjU3aDUuOHYzLjkySDUuMzJ2LTMuOTJoNS4zNUw5LjYgMTQuN0gzLjc1eiIvPjxjaXJjbGUgY2xhc3M9InByZWZpeF9fc3QxIiBjeD0iMTkuMDYiIGN5PSIxOC4yMyIgcj0iLjc5Ii8+PHBhdGggY2xhc3M9InByZWZpeF9fc3QxIiBkPSJNMy43NSAzMC4wMWgxOC44NHYtNy4wN0gzLjc1djcuMDd6bTEuNTctNS41aDE1Ljd2My45M0g1LjMydi0zLjkzeiIvPjxjaXJjbGUgY2xhc3M9InByZWZpeF9fc3QxIiBjeD0iMTkuMDYiIGN5PSIyNi40OCIgcj0iLjc5Ii8+PHBhdGggY2xhc3M9InByZWZpeF9fc3QxIiBkPSJNMy43NSAzOC4yNWgxOC44NHYtNy4wN0gzLjc1djcuMDd6bTEuNTctNS40OWgxNS43djMuOTNINS4zMnYtMy45M3oiLz48Y2lyY2xlIGNsYXNzPSJwcmVmaXhfX3N0MSIgY3g9IjE5LjA2IiBjeT0iMzQuNzIiIHI9Ii43OSIvPjxwYXRoIGNsYXNzPSJwcmVmaXhfX3N0MSIgZD0iTTEyLjk1IDE3LjVsNC44OS03LjEzYzEuMzktMi4wMiAxLjM4LTQuNzUtLjA0LTYuNzlDMTYuNjYgMS45NCAxNC44OSAxIDEyLjk1IDFjLTEuMjUgMC0yLjQ5LjM4LTMuNDggMS4wNy0yLjY3IDEuODUtMy4zIDUuNTctMS40MSA4LjNsNC44OSA3LjEzem0zLjU2LTEzLjAzYzEuMDUgMS41MSAxLjA2IDMuNTIuMDQgNS4wMWwtMy42IDUuMjUtMy42LTUuMjVjLTEuNC0yLjAxLS45NC00Ljc2IDEuMDEtNi4xMi43Mi0uNSAxLjY2LS43OSAyLjU5LS43OSAxLjQyIDAgMi43Mi42OSAzLjU2IDEuOXoiLz48cGF0aCBjbGFzcz0icHJlZml4X19zdDEiIGQ9Ik0xMi45NSA5LjYxYzEuMzkgMCAyLjUyLTEuMTMgMi41Mi0yLjUyIDAtMS4zOS0xLjEzLTIuNTItMi41Mi0yLjUyLTEuMzkgMC0yLjUyIDEuMTMtMi41MiAyLjUyLS4wMSAxLjM5IDEuMTMgMi41MiAyLjUyIDIuNTJ6bTAtMy40N2MuNTIgMCAuOTUuNDMuOTUuOTVzLS40My45NS0uOTUuOTUtLjk1LS40My0uOTUtLjk1Yy0uMDEtLjUyLjQyLS45NS45NS0uOTV6Ii8+PC9nPjwvc3ZnPg=="); +} + +.oci-mysql-database-system, .oci-mysql-db-system { + background-image: url("data:image/svg+xml;base64,PHN2ZyB2ZXJzaW9uPSIxLjEiIGlkPSJwcmVmaXhfX0xheWVyXzEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeD0iMCIgeT0iMCIgdmlld0JveD0iMCAwIDM3LjEzIDQyIiB4bWw6c3BhY2U9InByZXNlcnZlIj48c3R5bGU+LnByZWZpeF9fc3Qwe2ZpbGw6I2ZmZn0ucHJlZml4X19zdDF7ZmlsbDpub25lfS5wcmVmaXhfX3N0MntmaWxsOiMyYzU5Njd9PC9zdHlsZT48cGF0aCBjbGFzcz0icHJlZml4X19zdDAiIGQ9Ik0yNy41NCA0MS41Yy02LjQ1IDAtOC4xNy0xLjY5LTguNDUtMi4wM2wtLjI3LS4zM3YtNC40SDcuMDRjLTIuMjMtLjE2LTMuOTEtLjk1LTUuMDUtMi4zNUMuMTMgMzAuMTIuNTQgMjcuMTkuNTQgMjcuMTZjLjUzLTMuMDkgMi4yOS00LjY1IDMuNjgtNS40M2E4LjEyIDguMTIgMCAwMTIuMDctLjc5YzEuMjItMy4xNSAzLjY2LTMuODYgNC4xNC0zLjk3LjYyLS4xOSAxLjI5LS4yOSAxLjk2LS4yOS43NiAwIDEuNTEuMTIgMi4yMS4zNi0uMi0uMTctLjM5LS4zOS0uNTgtLjY0LTEuMTktMS42LTEuMDctMy42Ni0uNzYtNS4wOS4wNy0uMzYuMTctLjcyLjI5LTEuMDcuMDUtLjEyLjA5LS4yMS4xNC0uM2EuMy4zIDAgMDAuMDQtLjA4IDEuNjYgMS42NiAwIDAxLS4yMy0uMjJjLS4yOC0uMzQtLjUyLS42OS0uNzMtMS4wNS0uMy0uNTMtLjU2LTEuMDgtLjc3LTEuNjVsLS4yLS40NGMtLjA2LS4xNS0uMTItLjMxLS4xNi0uNDctLjAzLS4xMS0uMDctLjIyLS4xMS0uMzJhNC40MyA0LjQzIDAgMDAtLjYtLjc2Yy0uMTEtLjEyLS4xNy0uMTgtLjIzLS4yNi0uMDUtLjA2LS4xMS0uMTMtLjE4LS4yLS42LS42NS0xLjU5LTEuNy0xLjAyLTIuODguMjEtLjQ3LjYyLS44MyAxLjEyLS45OS4yNC0uMDguNTEtLjEyLjgtLjEyIDEuMTggMCAyLjU0LjY0IDMuMjQgMS4wMi4xNS4wOS4yOC4xOC40MS4yOC4wOS4wNy4xOC4xMy4yOC4xOSAxLjQ3LjAyIDIuOTUuMzggNC4yNyAxLjAyIDIuNiAxLjMxIDQuODYgMy4yNSA2LjU1IDUuNjEuMjYuMzguNDcuNzguNjUgMS4xOS4wOS4xOS4xOC40LjI5LjYxYTM2LjU5IDM2LjU5IDAgMDAxLjQ0IDIuNjNjLjA4LjEzLjE0LjI1LjIuMzcuMTMuMjUuMjcuNDguNDUuNjkuMjQuMTcuNS4yOC43OC4zNC4yNC4wNy40Mi4xMy41Ny4xOS42My4yNiAxLjE5LjUyIDEuNzIuODEgMS4xNy41OSAyLjIzIDEuMzggMy4xNCAyLjMyLjM2LjM2LjMxLjcuMjUuODgtLjE1LjQ2LS42Ny41NC0xLjAxLjZsLS4yMi4wNGMtLjMxLjA2LS42My4xMS0uOTUuMTMtLjI4LjAyLS41NS4wNi0uODIuMTFsLS4wNy4wMmMuMTcuMDkuMzMuMTcuNDYuMjRsLjE3LjA5Yy4xOC4wOS4zNC4xNy40Ny4yNS43NC40NCAxLjQuOTkgMS45OCAxLjY0bC40OC4zOGMuMjUuMjEuMzEuMzIuMzMuMzYuMS4xOC4xMy40My4xNC41MS4wMS4yOC0uMDkuNzEtLjEuNzYtLjA2LjI1LS4yNy44Mi0uMzUgMS4wNHYxNC41bC0uNDguMzZjLS4wOS4wNi0yLjUxIDEuODItOC4xNSAxLjgyem0tOC45OC0yMi43NWMuOTMgMCAxLjc5LjIgMi41Ny41OXYtLjAyYy0uNjctLjI5LTEuMy0uOC0xLjgyLTEuMjJsLS4wOC0uMDdjLS42Ny0uNS0xLjIzLTEuMDktMS42Ny0xLjc5di0uMDFjLS4xMS41MS0uMzQgMS4wNC0xLjAzIDEuMjctLjE5LjA3LS4zOS4xLS41OS4xaC0uMWMuNTguMzMgMS4xMS43NSAxLjU4IDEuMjQuMzktLjA2Ljc3LS4wOSAxLjE0LS4wOXoiLz48cGF0aCBjbGFzcz0icHJlZml4X19zdDAiIGQ9Ik0xMS40MiAxYzEuMDkgMCAyLjQxLjY0IDMgLjk2LjExLjA3LjIyLjE0LjMzLjIzLjE0LjEyLjMuMjIuNDcuMyAxLjQ1LjAxIDIuODcuMzQgNC4xNy45NyAyLjUzIDEuMjcgNC43MSAzLjE1IDYuMzYgNS40Ni4yMy4zNS40My43MS42IDEuMS4xLjIxLjIuNDMuMzEuNjUuNTEgMS4wMSAxIDEuOTEgMS40NiAyLjY2LjA3LjExLjEzLjIzLjE5LjM0LjE0LjMuMzMuNTguNTUuODIuMy4yMy42NS4zOCAxLjAyLjQ2LjE4LjA1LjM1LjEuNDguMTYuNjIuMjYgMS4xNi41MSAxLjY4Ljc5IDEuMTIuNTcgMi4xNSAxLjMyIDMuMDIgMi4yMy4xNC4xNC4xOC4yNi4xNC4zNi0uMDYuMTktLjM3LjIzLS42NC4yN2wtLjIxLjA0Yy0uMy4wNi0uNi4xLS45LjEyLS4zLjAyLS41OS4wNi0uODguMTJsLS4xLjAyYy0uMzQuMDktLjY4LjE2LTEuMDIuMjEuMi4zNy44OS43MSAxLjQ0Ljk4LjIuMS40LjIuNTUuMjkuNy40MiAxLjMzLjk0IDEuODcgMS41NWwuMjYuMjFjLjEuMDcuMjcuMjIuMjcuMjJzLjE4LjE1LjIyLjIyYy4wNC4wNi4wNy4yMS4wNy4yOS4wMS4xNi0uMDUuNDctLjA5LjYyLS4wNy4yNy0uMzYgMS4wNy0uMzYgMS4wN3YxNC4zNGwtLjI3LjIxYy0uMS4wNy0yLjQxIDEuNzMtNy44NyAxLjczLTYuMzQgMC03LjktMS42Ni04LjA2LTEuODVsLS4xNi0uMTl2LTQuNzJINy4wNGMtMi4wNS0uMTUtMy42Mi0uODgtNC42Ny0yLjE2LTEuNjctMi4wNS0xLjM2LTQuNzMtMS4zNC00Ljg0di0uMDRjLjUtMi44NiAyLjE0LTQuMzEgMy40My01LjAzLjY5LS4zOCAxLjQzLS42NSAyLjItLjggMS4xLTMuMTYgMy41MS0zLjgzIDMuODgtMy45MWE2LjQ0MyA2LjQ0MyAwIDAxNi42OSAxLjkyYy40OC0uMDkuOTItLjE0IDEuMzMtLjE0IDEuMyAwIDIuMy40MiAzLjA3Ljk4di0xLjI2Yy0uNzQtLjIyLTEuNDgtLjg0LTIuMDgtMS4zMmwtLjA0LS4wM2E2LjIwNyA2LjIwNyAwIDAxLTEuNTQtMS42NWMtLjE4LS4zMi0uMzYtLjYyLS41NS0uOTRsLS4xMi0uMjJjLS4wMS4wMy0uMDEuMDctLjAyLjEtLjAxLjA2LS4wMi4xMy0uMDQuMTktLjA1LjIxLS4wOS40My0uMTEuNjUtLjA4LjU2LS4xNiAxLjA5LS43NyAxLjMtLjE0LjA1LS4yOS4wOC0uNDMuMDgtLjUyIDAtMS4wMi0uMzQtMS41Mi0xLTEuMDgtMS40NS0uOTYtMy4zNS0uNjgtNC42OS4wNy0uMzQuMTYtLjY4LjI3LTEuMDIuMDMtLjA3LjA2LS4xNC4xLS4yMS4wOC0uMTIuMTMtLjI2LjE3LS40YS41OS41OSAwIDAwLS4yNS0uMzNjLS4wNi0uMDUtLjEyLS4xLS4xOC0uMTYtLjI1LS4zLS40Ny0uNjItLjY2LS45Ni0uMjgtLjUtLjUzLTEuMDMtLjczLTEuNTdsLS4yLS40OWMtLjA2LS4xMy0uMTEtLjI3LS4xNC0uNDEtLjA0LS4xNC0uMDgtLjI3LS4xNC0uNC0uMi0uMzMtLjQzLS42My0uNjktLjktLjA3LS4wOC0uMTMtLjE0LS4yLS4yM3MtLjE2LS4xOC0uMjYtLjI5Yy0uNTEtLjU0LTEuMjktMS4zNi0uODctMi4yNC4xNi0uMzUuNDYtLjYxLjgyLS43My4yMS0uMDYuNDItLjA5LjY1LS4wOW0wLTFjLS4zNSAwLS42Ny4wNS0uOTYuMTQtLjYyLjItMS4xNC42Ni0xLjQyIDEuMjctLjcxIDEuNDcuNDcgMi43MyAxLjA0IDMuMzRsLjA3LjA4Yy4wNi4wNi4xMS4xMi4xNS4xN2wuMjIuMjUuMDEuMDEuMDMuMDRjLjIuMjEuMzcuNDMuNTMuNjcuMDMuMDYuMDUuMTMuMDcuMTkuMDUuMTguMTEuMzcuMTkuNTVsLjE5LjQ3Yy4yMS41Ni40OCAxLjEzLjc4IDEuNjguMjMuMzkuNDguNzYuNzcgMS4xbC4wMi4wMi4wMS4wMWMtLjAxLjAxLS4wMS4wMy0uMDIuMDRsLS4wMS4wMy0uMDEuMDNjLS4xMi4zNy0uMjMuNzUtLjMxIDEuMTMtLjMgMS40LS40MyAzLjM2LjU1IDUuMDNhNy4xODcgNy4xODcgMCAwMC0zLjAzLjI1Yy0uNTkuMTQtMy4wNS45Mi00LjM2IDQuMDMtLjY3LjE4LTEuMzIuNDQtMS45NC43OC0xLjQ4LjgzLTMuMzYgMi40OS0zLjkzIDUuNzNsLS4wMS4wOXYuMDdjLS4wNS41NC0uMjQgMy4zMiAxLjU3IDUuNTMgMS4yMyAxLjUgMy4wNCAyLjM2IDUuMzcgMi41M2gxMS4zNnY0LjA4bC4yMy4yOC4xNi4xOWMuNDMuNTIgMi4zMyAyLjIxIDguODMgMi4yMSA1LjcgMCA4LjItMS43MyA4LjQ2LTEuOTNsLjI4LS4yMS40LS4zVjI0LjljLjExLS4yOS4yOC0uNzcuMzQtMS4wMi4wMy0uMTMuMTMtLjU4LjExLS45MSAwLS4wNC0uMDMtLjQyLS4yLS43Mi0uMDQtLjA3LS4xMy0uMjItLjQ0LS40OS0uMDEtLjAxLS4yLS4xNy0uMzEtLjI1bC0uMjEtLjE0Yy0uNTMtLjU5LTEuMTQtMS4xLTEuODEtMS41M2wuMzYtLjA2LjE5LS4wM2MuMzgtLjA2IDEuMTYtLjE4IDEuNDEtLjk0LjA4LS4yMi4yLS44MS0uMzktMS4zOWExMi4wNSAxMi4wNSAwIDAwLTMuMjctMi40MWMtLjUyLS4yOC0xLjEtLjU1LTEuNzUtLjgyYTUuNjUgNS42NSAwIDAwLS41OC0uMTlsLS4wNC0uMDEtLjA0LS4wMWMtLjE5LS4wNC0uMzgtLjEyLS41NC0uMjMtLjEzLS4xNi0uMjQtLjMzLS4zMy0uNTItLjA4LS4xNi0uMTUtLjI4LS4yMi0uNDEtLjQzLS43LS45LTEuNTUtMS40My0yLjYtLjEyLS4yMi0uMjEtLjQyLS4zLS42MWE3LjE2IDcuMTYgMCAwMC0uNjgtMS4yNCAxOC41MjcgMTguNTI3IDAgMDAtNi43NC01Ljc5Yy0xLjM2LS42Ni0yLjg2LTEuMDMtNC4zNi0xLjA4bC0uMS0uMDdjLS4xNS0uMTItLjMtLjIzLS40Ni0uMzJDMTQuMTYuNjggMTIuNzEgMCAxMS40MiAwem01LjYzIDE3LjgzYy4yOC0uMTUuNDktLjM1LjY0LS41Ny4zLjM2LjY0LjcgMS4wMiAxaC0uMTNjLS4zMiAwLS42NC4wMi0uOTcuMDYtLjE5LS4xOC0uMzctLjM0LS41Ni0uNDl6Ii8+PGc+PHBhdGggY2xhc3M9InByZWZpeF9fc3QxIiBkPSJNMjAuNyAzMS4wM3YzLjA1Yy40OS4zMyAyLjI2IDEuMjQgNi44NCAxLjI0IDMuODkgMCA2LS44OSA2Ljc3LTEuM3YtMy4wOGMtMS4yNi41My0zLjQzIDEuMTMtNi43NyAxLjEzLTMuNjgtLjAxLTUuNzQtLjU2LTYuODQtMS4wNHpNMjcuNTIgMjYuNTJjNC42NyAwIDYuNzktMS4yMiA2Ljc5LTEuNTkgMC0uMzctMi4xMi0xLjYtNi43OS0xLjZzLTYuNzkgMS4yMi02Ljc5IDEuNmMwIC4zNyAyLjEzIDEuNTkgNi43OSAxLjU5ek0yNy41MyAyNy45MWMtMS44NS4wMy0zLjctLjIxLTUuNDktLjctLjQ2LS4xNC0uOTEtLjMyLTEuMzQtLjU1djIuODJjLjQ5LjMyIDIuMjYgMS4yMSA2Ljg0IDEuMjEgNC4xMyAwIDYuMjctLjk5IDYuNzctMS4yN2wuMDEtMi43M2MtLjQyLjIxLS44NS4zOS0xLjMuNTItMS43OS40OS0zLjY0LjczLTUuNDkuN3pNMjAuNyAzNS42NHYyLjc2Yy40OS4zMyAyLjI2IDEuMjQgNi44NCAxLjI0IDMuODkgMCA2LS44OSA2Ljc3LTEuM3YtMi43OWMtMS4yNi41NC0zLjQzIDEuMTUtNi43NyAxLjE1LTMuNjgtLjAxLTUuNzQtLjU2LTYuODQtMS4wNnoiLz48cGF0aCBjbGFzcz0icHJlZml4X19zdDIiIGQ9Ik03LjI3IDIyLjgybC41My0uMDQuMTUtLjUxYy44Mi0yLjg0IDIuODMtMy4zMSAyLjkxLTMuMzNsLjA3LS4wMmMzLjM5LTEgNS4zIDEuNjMgNS4zOCAxLjc0bC4zLjQzLjUxLS4xM2MxLjk1LS41IDMuMjEuMDQgNC4wMS43Ni4xNy0uMDYuMzUtLjEzLjU1LS4xOS4zMy0uMS42OC0uMTkgMS4wNS0uMjctLjk2LTEuMTktMi42Ny0yLjQ0LTUuNDktMS44OGE2LjQyOCA2LjQyOCAwIDAwLTYuNy0xLjkyYy0uMzcuMDktMi43OC43NS0zLjg4IDMuOTEtLjc3LjE1LTEuNTEuNDItMi4yLjgtMS4yOS43Mi0yLjkzIDIuMTctMy40MyA1LjAzdi4wNGMtLjAyLjExLS4zMyAyLjggMS4zNCA0Ljg0IDEuMDUgMS4yOCAyLjYyIDIuMDEgNC42NyAyLjE2aDExLjIxdi0xLjUxSDcuMTJjLTEuNi0uMTItMi44LS42Ni0zLjU3LTEuNi0xLjIxLTEuNDctMS4wNC0zLjUxLTEuMDItMy43Ljc1LTQuMjUgNC41OC00LjYgNC43NC00LjYxek0xNi4xOCA1LjA2YS44NC44NCAwIDAwLS4zNC0uMTcgMS41OSAxLjU5IDAgMDAtLjcyLjA0di4wM2guMDRjLjE4LjE3LjM0LjM1LjQ4LjU1LjE4LjI0LjM0LjQ5LjQ5Ljc1LjMxLS4xNC40Ny0uNDguMzgtLjgtLjA4LS4xNS0uMTktLjI5LS4zMy0uNHoiLz48cGF0aCBjbGFzcz0icHJlZml4X19zdDIiIGQ9Ik0zNi4xMyAyMy4wM2MtLjA2LS4wNy0uMS0uMTUtLjE0LS4yMy0uMDQtLjEtLjA5LS4xOS0uMTUtLjI3LS4wOS0uMDgtLjE4LS4xNS0uMjctLjIybC0uMjYtLjIxYTcuOTY0IDcuOTY0IDAgMDAtMS44Ny0xLjU1Yy0uMTUtLjA5LS4zNS0uMTktLjU1LS4yOS0uNTUtLjI3LTEuMjQtLjYxLTEuNDQtLjk4LjM0LS4wNS42OS0uMTIgMS4wMi0uMjFsLjEtLjAyYy4yOS0uMDYuNTgtLjEuODgtLjEyLjMtLjAyLjYtLjA2LjktLjEybC4yMS0uMDRjLjI3LS4wNC41OC0uMDkuNjQtLjI3LjA0LS4xIDAtLjIyLS4xNC0uMzYtLjg3LS45MS0xLjktMS42Ni0zLjAyLTIuMjMtLjUxLS4yNy0xLjA2LS41My0xLjY4LS43OS0uMTMtLjA1LS4zLS4xMS0uNDgtLjE2LS4zNy0uMDgtLjcyLS4yMy0xLjAyLS40Ni0uMjItLjI1LS40LS41My0uNTUtLjgyLS4wNi0uMTItLjEyLS4yMy0uMTktLjM0LS40Ni0uNzUtLjk1LTEuNjUtMS40Ni0yLjY2LS4xMi0uMjEtLjIyLS40My0uMzEtLjY1LS4xNi0uMzgtLjM2LS43NS0uNi0xLjFhMTcuNDYgMTcuNDYgMCAwMC02LjM2LTUuNDZjLTEuMy0uNjMtMi43My0uOTctNC4xNy0uOTctLjE3LS4wOC0uMzMtLjE4LS40Ny0uMy0uMS0uMDgtLjIxLS4xNi0uMzMtLjIzLS43MS0uMzktMi41LTEuMjQtMy42NS0uODctLjM3LjEyLS42Ni4zOC0uODIuNzMtLjQyLjg4LjM1IDEuNy44NyAyLjI1LjEuMTEuMTkuMjEuMjYuMjkuMDcuMDkuMTMuMTUuMi4yMy4yNi4yNy41LjU4LjY5LjkuMDYuMTMuMTEuMjYuMTQuNC4wNC4xNC4wOS4yOC4xNC40MWwuMi40OWMuMi41NC40NSAxLjA3LjczIDEuNTcuMTkuMzQuNDIuNjYuNjYuOTYuMDUuMDYuMTEuMTEuMTguMTYuMTIuMDcuMjEuMTkuMjUuMzMtLjA0LjE0LS4wOS4yNy0uMTcuNC0uMDQuMDctLjA3LjE0LS4xLjIxLS4xMS4zMy0uMi42Ny0uMjcgMS4wMi0uMjkgMS4zNC0uNCAzLjI0LjY4IDQuNjkuNjMuODUgMS4yOCAxLjE2IDEuOTUuOTIuNjEtLjIxLjY5LS43NC43Ny0xLjMuMDItLjIyLjA2LS40My4xMS0uNjUuMDItLjA2LjAzLS4xMi4wNC0uMTkgMC0uMDMuMDEtLjA3LjAyLS4xbC4xMy4yM2MuMTkuMzIuMzcuNjIuNTUuOTQuNDEuNjQuOTMgMS4yIDEuNTQgMS42NWwuMDQuMDNjLjYuNDggMS4zNCAxLjEgMi4wOCAxLjMybC4wOC4wMXYtLjJoLS4wN2MtLjA4LS4wOC0uMTYtLjE1LS4yNi0uMi0uMDUtLjAzLS4xLS4wNi0uMTQtLjA5LS4zMy0uMjgtLjY0LS41OC0uOTItLjkxLS43NS0uODYtMS40MS0xLjc5LTItMi43OC0uMjctLjQzLS40OS0uODktLjcxLTEuMzRsLS4wNi0uMTJjLS4wMy0uMDctLjA2LS4xNC0uMDgtLjIxYS41NjQuNTY0IDAgMDAtLjIzLS4zN2wtLjA1LS4wMi0uMDQuMDRjLS4wOS4xMi0uMTkuMjMtLjMuMzMtLjIyLjIxLS40LjQ1LS41NS43MS0uMjUuNTctLjM5IDEuMTgtLjQzIDEuOC0uMDIuMTYtLjA0LjMyLS4wNy40OGgtLjAxYy0uNDYtLjExLS42NS0uNTEtLjg0LS44OWwtLjA2LS4xMmMtLjU1LTEuMS0uNi0yLjgyLS4xNi00LjAyLjAyLS4wNi4wNi0uMTUuMTEtLjI1LjI3LS41OS41MS0xLjE4LjMzLTEuNDRhMS4zIDEuMyAwIDAwLS40MS0uNDZjLS4wOS0uMDctLjE4LS4xNS0uMjYtLjIzLS4yNC0uMy0uNDUtLjYyLS42My0uOTctLjE5LS40LS4zNi0uODEtLjUxLTEuMjQtLjE3LS40OS0uMzctLjk3LS42LTEuNDItLjIxLS4zNS0uNDUtLjY4LS43Mi0uOThsLS4xNy0uMmMtLjA4LS4xLS4xOS0uMjEtLjMxLS4zMy0uMzktLjM5LS44OC0uODgtLjc2LTEuMzNhLjM2LjM2IDAgMDEuMjUtLjI3Yy41Ny0uMjMgMS45Mi40MyAyLjU2LjgyLjA4LjA1LjE1LjA5LjIzLjE0LjIuMTMuNC4yNC42MS4zNS4zMy4xMy42OS4xOSAxLjA0LjE3LjE2IDAgLjMyIDAgLjQ4LjAzLjUyLjA2IDEuMDMuMTYgMS41My4zMSAxLjA1LjMzIDIuMDUuODEgMi45NiAxLjQyIDEuODEgMS4xOSAzLjMzIDIuNzcgNC40NSA0LjYyLjExLjE4LjIuMzcuMjcuNTcuMDYuMTUuMTMuMy4yMi40Ni4yLjQuNDIuOC42NCAxLjIuMTkuMzUuMzkuNzEuNTcgMS4wNWwuMS4xOWMuMzEuNjcuNzEgMS4zIDEuMTggMS44Ny4yLjI0Ljc5LjM5IDEuMy41Mi4yMS4wNS40LjEuNTUuMTUuNzguMjcgMS41NC42MSAyLjI2IDEgLjM3LjIuNzQuNDIgMS4xLjY1LjA1LjAzLjEyLjA3LjIuMTIuMjMuMS40NC4yNS42LjQ0LTEuNDItLjAyLTIuNS4xMi0zLjM4LjQzLS4wNy4wMi0uMTQuMDQtLjIyLjA1LS4yNS4wNS0uNTMuMTItLjU1LjM4di4wNGwuMDMuMDJjLjA3LjA3LjEyLjE1LjE1LjI0LjAzLjA4LjA3LjE2LjEzLjI0LjI2LjM3LjU4LjY5Ljk0Ljk1LjM1LjIzLjc0LjQ5IDEuMTUuNzEuMzUuMTguNzEuMzQgMS4wNy40Ny4zNy4xNC43My4zIDEuMDguNDcuMjIuMTIuNDUuMjcuNjcuNDEuMTcuMTEuMzMuMjEuNS4zMS4wNy4wNS4xMy4xLjE5LjE1LjExLjExLjI1LjIuNC4yNWwuMDkuMDN2LS4xNmwtLjAzLS4wMXpNMzMuMDEgMjIuNjZjLTEuNzktLjQ5LTMuNjQtLjczLTUuNDktLjctMS44NS0uMDMtMy43LjIxLTUuNDkuNy0yLjIuNjgtMi42NyAxLjYxLTIuNjcgMi4yOGgtLjA0djE0LjAybC4xNi4xOWMuMTYuMTkgMS43MiAxLjg1IDguMDYgMS44NSA1LjQ2IDAgNy43Ny0xLjY2IDcuODctMS43NGwuMjctLjIxVjI0LjcyaC0uMDJjLS4wOC0uNjEtLjY0LTEuNDUtMi42NS0yLjA2em0tNS40OS42N2M0LjY3IDAgNi43OSAxLjIyIDYuNzkgMS42IDAgLjM3LTIuMTIgMS41OS02Ljc5IDEuNTlzLTYuNzktMS4yMi02Ljc5LTEuNTljMC0uMzcgMi4xMi0xLjYgNi43OS0xLjZ6bTYuNzkgMTVjLS43Ny40MS0yLjg4IDEuMy02Ljc3IDEuMy00LjU5IDAtNi4zNi0uOTEtNi44NC0xLjI0di0yLjc2YzEuMS40OSAzLjE3IDEuMDUgNi44NCAxLjA1IDMuMzQgMCA1LjUxLS42MSA2Ljc3LTEuMTV2Mi44em0wLTQuMzJjLS43Ny40MS0yLjg4IDEuMy02Ljc3IDEuMy00LjU5IDAtNi4zNi0uOTEtNi44NC0xLjI0di0zLjA1YzEuMS40OSAzLjE3IDEuMDMgNi44NCAxLjAzIDMuMzQgMCA1LjUxLS42IDYuNzctMS4xM3YzLjA5em0wLTQuNTljLS41LjI3LTIuNjQgMS4yNy02Ljc3IDEuMjctNC41OCAwLTYuMzYtLjg5LTYuODQtMS4yMXYtMi44MmMuNDMuMjMuODcuNDEgMS4zNC41NSAxLjc5LjQ5IDMuNjQuNzMgNS40OS43IDEuODUuMDMgMy43LS4yMSA1LjQ5LS43LjQ1LS4xMy44OS0uMyAxLjMtLjUybC0uMDEgMi43M3oiLz48L2c+PC9zdmc+"); +} + +.oci-nat-gateway { + background-image: url("data:image/svg+xml;base64,PHN2ZyBkYXRhLW5hbWU9IkxheWVyIDEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmlld0JveD0iMCAwIDM2LjE5IDQyLjQxIj48cGF0aCBkPSJNMTguMSA0MS45MWExNy4xNCAxNy4xNCAwIDAxLTEuNzYtLjA5aC0uMzVsLS4zNS0uMDVjLS4zNCAwLS42Ny0uMDktMS0uMTZzLS42NS0uMTYtMS0uMjRsLS4zNC0uMDktLjMtLjEzYTE3Ljg0IDE3Ljg0IDAgMDEtNC43NC0yLjI3bC0uMzktLjI5LS4zNC0uMjYtLjYzLS40OC0uMzUtLjMyLS4yOC0uMjVjLS4yMi0uMi0uNDQtLjQtLjY1LS42MWwtLjMtLjMzYy0uMy0uMzItLjU5LS42NC0uODctMUExNy40OSAxNy40OSAwIDAxMi42MSAxNmMuMjYtLjQ5LjUzLS45My44LTEuMzVsLjE2LS4yM2MuMjUtLjM2LjUtLjcuNzYtMWwuMjgtLjMzYy4yNC0uMjkuNS0uNTguNzctLjg3bC4zMS0uMzFjLjI4LS4yOC41Ni0uNTUuODYtLjhsLjI2LS4yM2MuMzUtLjI5LjY4LS41NSAxLS44TDggOS45MWMuMzgtLjI3Ljc4LS41MiAxLjE4LS43NmExNy45MyAxNy45MyAwIDAxNC40LTEuODNjLjUxLS4xMyAxLS4yNCAxLjQ5LS4zMmguMDhMMTMuNSA1LjMgMTguMDkuNzFsNC42IDQuNTlMMjEgN2guMDVsLjUyLjA4LjQ5LjEyLjQ5LjEzLjYuMTUuNS4xNWExNy4zOSAxNy4zOSAwIDAxMi40MiAxbC40OS4yNWMuMjEuMTEuNC4yMy41OS4zNWwuNDEuMjVjLjQyLjI3LjgyLjU2IDEuMjIuODVhMTcuNzkgMTcuNzkgMCAwMTMuMzIgMy4zNGMuMzQuNDUuNi44NC44NSAxLjIzbC4xMy4yMWMuMjIuMzYuNDMuNzMuNjIgMS4xbC4xOC4zNGMuMTcuMzUuMzMuNzEuNDggMS4wN2wuMTcuNDJjLjEzLjM2LjI2LjcyLjM3IDEuMWwuMTMuNGMuMTEuNDIuMjEuODMuMyAxLjI1bC4wNS4yOGExNC42MyAxNC42MyAwIDAxLjIyIDEuNTIgMTcuNjMgMTcuNjMgMCAwMS0xLjI2IDguNTIgMTcuMzkgMTcuMzkgMCAwMS03LjgyIDguNjNjLS40NC4yNC0uODQuNDItMS4yNC42bC0uMTYuMDgtLjI0LjExLS44MS4zLS40LjE0LS40Mi4xNWMtLjI1LjA4LS41LjEzLS43NC4ybC0uNDYuMTEtLjQ3LjExYTE2LjkxIDE2LjkxIDAgMDEtMy40OC4zNXpNMTUuMjUgN2wuMzQtLjA2LjY3LS4xLjU1LS4wNWguMDdWNS4zNXpNMjAgNi44M2wuNjIuMDkuMzUuMDYtMS42Ny0xLjYzdjEuNDNoLjA3di0uMDV6IiBmaWxsPSIjZmZmIi8+PHBhdGggZD0iTTE4LjA5IDEuNDFsMS43MiAxLjcyLjA2LjA2TDIyIDUuM2wtMSAxLTEuMS0xLjEtMS4xLTEuMDZ2My4xMmMuMzYgMCAuNzIgMCAxLjA3LjA2LjI4IDAgLjU2LjA4Ljg0LjEybC43My4xMWMuMjQuMDUuNDguMTIuNzEuMThzLjU2LjEzLjgzLjIxYTE3IDE3IDAgMDEzLjI3IDEuNGMuMjcuMTUuNTEuMzEuNzcuNDdsLjIuMTJjLjQxLjI2LjguNTQgMS4xOC44M0ExNy4xMSAxNy4xMSAwIDAxMzEuNyAxNGwuMDYuMDdjLjI3LjM3LjUzLjc1Ljc3IDEuMTNsLjEzLjJjLjIxLjM1LjQxLjcxLjYgMS4wN2wuMTcuMzNjLjE3LjM0LjMyLjY5LjQ2IDEgLjA2LjEzLjEyLjI3LjE3LjQuMTMuMzYuMjUuNzEuMzYgMS4wNyAwIC4xNC4wOS4yNy4xMi40LjEyLjQuMjEuOC4zIDEuMjF2LjI3YTE0LjY0IDE0LjY0IDAgMDEuMjEgMS40OCAxNyAxNyAwIDAxLTguODMgMTYuNjJoLS4wNmMtLjM3LjItLjc2LjM4LTEuMTQuNTZsLS40LjE4Yy0uMzEuMTMtLjYyLjI0LS45NC4zNXMtLjQyLjE2LS42NC4yMi0uNjIuMTctLjkzLjI0LS40NS4xMy0uNjguMTdhMTYuNzMgMTYuNzMgMCAwMS0zLjM5LjM0IDE2LjMxIDE2LjMxIDAgMDEtMS43MS0uMDhsLS41NS0uMDhjLS4zNyAwLS43NC0uMS0xLjExLS4xN3MtLjcyLS4xOC0xLjA4LS4yN2wtLjU0LS4xNGExNyAxNyAwIDAxLTQuNi0yLjIxYy0uMi0uMTMtLjM4LS4yOC0uNTctLjQycy0uNTItLjM3LS43Ni0uNTgtLjM0LS4zLS41MS0uNDYtLjUtLjQ0LS43My0uNjgtLjItLjIyLS4zLS4zMnEtLjQzLS40Ny0uODQtMWExNyAxNyAwIDAxLTEuNjktMTguNjVjLjI0LS40NC41LS44Ny43Ny0xLjI4bC4xOC0uMjZjLjIzLS4zNS40OC0uNjguNzMtMWwuMjctLjMzYy4yNC0uMjguNDktLjU3Ljc1LS44NGwuMzEtLjMxYy4yNy0uMjcuNTQtLjUzLjgzLS43OGEzLjExIDMuMTEgMCAwMS4yOC0uMjNjLjMxLS4yNy42NC0uNTIgMS0uNzZsLjE5LS4xNGMuMzgtLjI2Ljc2LS41MSAxLjE2LS43NGguMDdhMTYuNzYgMTYuNzYgMCAwMTQuMTktMS43M2MuNDctLjEyLjk0LS4yMyAxLjQxLS4zMWguMjRjLjI5IDAgLjU4LS4xMS44OC0uMTQuMzYgMCAuNzEtLjA3IDEuMDctLjA4VjQuMTRsLTEuMDcgMS4wNy0xLjEgMS4xLTEtMSAyLjEtMi4xMS4wNi0uMDYgMS43Mi0xLjcybTAtMS40MWwtLjcuNzEtMS43MiAxLjcxLS4wNi4wNi0yLjExIDIuMS0uNzEuNzEuNzEuNy42Ny42N2MtLjIxIDAtLjQzLjA5LS42NC4xNWExOC41MyAxOC41MyAwIDAwLTQuNDggMS44NUw5IDguNzJjLS40MS4yNC0uODIuNTEtMS4yMi43OGwtLjIuMTRjLS4zNS4yNi0uNjkuNTMtMSAuODFsLS4zLjI1Yy0uMjkuMjUtLjU3LjUyLS44OC44MmwtLjA3LjA3LS4zMy4yNmMtLjI2LjI3LS41Mi41Ni0uOC44OWwtLjA3LjA5LS4yMS4yNWMtLjI1LjMyLS41LjY2LS43OCAxLjA2bC0uMDUuMDgtLjA5LjE3Yy0uMjguNDMtLjU1Ljg4LS44IDEuMzVBMTggMTggMCAwMDQgMzUuNjJsLjA1LjA2Yy4yOS4zNi42MS43MS44OCAxbC4wNy4xMi4yLjIyYy4yMi4yMi40NC40Mi42Ny42MmwuMTEuMTEuMTYuMTQuMzguMzQuNjQuNDkuMTcuMTMuMTguMTQuNDEuM2ExOC4zIDE4LjMgMCAwMDQuODggMi4zNGwuMzguMWguMzFjLjMzLjA5LjY3LjE4IDEgLjI1cy43MS4xMiAxLjA1LjE2aC43Yy42LjA2IDEuMjEuMDkgMS44MS4wOWExOC4wNyAxOC4wNyAwIDAwMy41OS0uMzZsLjQ5LS4xMi4yMi0uMDZoLjIyYy4yNi0uMDYuNTItLjEyLjc3LS4ybC40Ny0uMTYuMjEtLjA4LjE0LS4wNWMuMjktLjEuNTctLjIuODYtLjMybC4yNy0uMTIuMTUtLjA3Yy4zNi0uMTYuNzktLjM2IDEuMjEtLjU5aC4wNWExNy44NCAxNy44NCAwIDAwOC04Ljg3IDE4LjE0IDE4LjE0IDAgMDAxLjMtOC43MnYtLjA2Yy0uMDUtLjUxLS4xMy0xLS4yMi0xLjU0YTEuMDYgMS4wNiAwIDAxMC0uMTl2LS4xYy0uMS0uNDctLjItLjg5LS4zMS0xLjI4YTIuODEgMi44MSAwIDAwLS4xLS4zMXYtLjExYy0uMTMtLjQyLS4yNi0uNzktLjM5LTEuMTMgMC0uMTItLjA5LS4yNC0uMTQtLjM2di0uMDdjLS4xNi0uNC0uMzItLjc2LS40OS0xLjEtLjA2LS4xLS4xMS0uMjEtLjE2LS4zMS0uMjMtLjQzLS40NC0uODEtLjY2LTEuMTdsLS4xMi0uMTljLS4yNy0uNDMtLjU1LS44NC0uODMtMS4yMmwtLjA3LS4wOGExNy44NCAxNy44NCAwIDAwLTMuNC0zLjI5Yy0uNDUtLjM0LS44Ny0uNjQtMS4yOC0uOWwtLjE0LS4xaC0uMDdsLS4yMS0uMTNjLS4yLS4xMy0uNC0uMjUtLjYxLS4zNmwtMS0uNTNjLS40NS0uMjEtLjkxLS40MS0xLjM3LS41OEwyMy4zMiA3aC0uMDVsLS42MS0uMTUtLjI0LS4wNi0uMjQtLjA2aC0uMTVsLjY2LS43My43LS43MS0uNy0uNzEtMi4xMS0yLjEtLjA2LS4wNkwxOC44LjcxIDE4LjA5IDB6IiBmaWxsPSIjZmZmIi8+PHBhdGggZD0iTTE5Ljg3IDcuMzJ2MS40M2ExNS42NyAxNS42NyAwIDExLTMuNTYgMFY3LjMyYTE3LjEgMTcuMSAwIDEwMy41NiAweiIgZmlsbD0iIzJjNTk2NyIvPjxwYXRoIGZpbGw9IiMyYzU5NjciIGQ9Ik0xNy4zOCAzNy4xNGgxLjQydi0zM2wxLjA3IDEuMDcgMS4xIDEuMSAxLjAxLTEuMDEtMi4xMS0yLjExLS4wNi0uMDYtMS43Mi0xLjcyLTEuNzIgMS43Mi0uMDYuMDYtMi4xIDIuMTEgMSAxLjAxIDEuMS0xLjEgMS4wNy0xLjA3djMzeiIvPjxwYXRoIGZpbGw9IiMyYzU5NjciIGQ9Ik0yMy43NiAyNy4ybC0yLjE3LTIuMTdoOS4xNHYtMS40MmgtOS4xNGwyLjE3LTIuMTctMS4wMS0xLjAxLTIuODggMi44OC0xIDEuMDEgMSAxLjAxIDIuODggMi44OCAxLjAxLTEuMDF6TTEyLjQzIDIxLjQ0bDIuMTYgMi4xN0g1LjQ1djEuNDJoOS4xNGwtMi4xNiAyLjE3IDEgMS4wMSAyLjg4LTIuODggMS4wMS0xLjAxLTEuMDEtMS4wMS0yLjg4LTIuODgtMSAxLjAxeiIvPjwvc3ZnPg=="); +} + +.oci-network-load-balancer { + background-image: url("data:image/svg+xml;base64,PHN2ZyB2ZXJzaW9uPSIxLjEiIGlkPSJwcmVmaXhfX0xheWVyXzEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeD0iMCIgeT0iMCIgdmlld0JveD0iMCAwIDQyIDQyIiB4bWw6c3BhY2U9InByZXNlcnZlIj48c3R5bGU+LnByZWZpeF9fc3Qwe2ZpbGw6I2ZmZn08L3N0eWxlPjxwYXRoIGNsYXNzPSJwcmVmaXhfX3N0MCIgZD0iTTM0LjIgNDEuNXYtMi40OGgzLjAxTDIzLjE2IDI0Ljk2Yy0uMzcgNC43Ni0xLjQ2IDguOTUtMy4xNyAxMi4xOC0yLjEgMy41Ni00LjIyIDQuMjktNS42MyA0LjI5LS4yNSAwLS41MS0uMDItLjc2LS4wNy00LjAzLS43NC02LjQ2LTYuNzktNy40LTEyLjIxLS4zOC0yLjAzLS42Mi00LjQxLS42Ny02LjkxSC41di0yLjQ4aDUuMDNjLjA2LTIuNTkuMzEtNS4wNy43Mi03LjE3QzcuNTYgNS4yMyAxMC42OS42NCAxNC40Mi42YzIuMTggMCA2LjA4IDEuNTkgOC4xOCAxMi4yMy4yNCAxLjM1LjQxIDIuNzUuNTMgNC4yTDM3LjE3IDIuOThIMzQuMlYuNWg3LjN2Ny4zaC0yLjQ4VjQuNjRMMjMuOSAxOS43NmgxMi44OGwtMi0xLjkxIDEuNzEtMS44IDUuMTcgNC45Mi01LjE0IDUuMTQtMS43NS0xLjc1IDIuMTItMi4xM0gyMy45NUwzOS4wMiAzNy4zdi0zLjFoMi40OHY3LjNoLTcuM3oiIHRyYW5zZm9ybT0icm90YXRlKDkwIDIxIDIxKSIvPjxwYXRoIGNsYXNzPSJwcmVmaXhfX3N0MCIgZD0iTTQxIDF2Ni4zaC0xLjQ4VjMuNDRMMjIuNzkgMjAuMTd2LjA5aDE1LjI1bC0yLjU1LTIuNDMgMS4wMi0xLjA3IDQuNDQgNC4yMy00LjQzIDQuNDMtMS4wNS0xLjA1IDIuNjItMi42MmgtMTUuM3YuMDVsMTYuNzIgMTYuNzJWMzQuN0g0MVY0MWgtNi4zdi0xLjQ4aDMuNzJsLTE1LjctMTUuN2MtLjI1IDQuNTctMS4xNyA5LjI4LTMuMTggMTMuMDhsLS4wMi4wNGMtMS44OCAzLjE5LTMuNzUgMy45OS01LjE3IDMuOTktLjI0IDAtLjQ3LS4wMi0uNjgtLjA2LTMuNzgtLjY5LTYuMTMtNi43OS02Ljk5LTExLjgxLS40Mi0yLjItLjY0LTQuNzUtLjY4LTcuMzJIMXYtMS40OGg1LjAyYy4wNC0yLjY3LjI4LTUuMzEuNzItNy41OEM4IDUuNTcgMTAuOTUgMS4xMyAxNC40MiAxLjFoLjA0YzIgMCA1LjYyIDEuNTUgNy42NCAxMS44MnYuMDJjLjI3IDEuNTYuNDkgMy4zMy42IDUuMjFMMzguMzggMi40OEgzNC43VjFINDFtMS0xaC04LjN2My40OGgyLjI2TDIzLjUzIDE1LjkyYy0uMTEtMS4wOS0uMjYtMi4xNC0uNDQtMy4xNUMyMS4wMiAyLjI5IDE3LjI2LjEgMTQuNDYuMWMtNC4wOS4wNC03LjMzIDQuNjgtOC43MSAxMi40MS0uMzkgMS45OS0uNjMgNC4zMS0uNzEgNi43NUgwdjMuNDhoNS4wNGMuMDggMi4zNC4zMSA0LjU4LjY3IDYuNTEuOTYgNS41NyAzLjUxIDExLjgyIDcuOCAxMi42LjI4LjA1LjU3LjA4Ljg2LjA4IDEuNTQgMCAzLjg0LS43OCA2LjAzLTQuNDh2LS4wMWwuMDMtLjA1YzEuNjItMy4wNiAyLjY5LTYuOTQgMy4xNC0xMS4zM2wxMi40NSAxMi40NUgzMy43VjQySDQydi04LjNoLTMuNDh2Mi40TDI1LjE2IDIyLjc0aDEwLjUzbC0uOTIuOTItLjcxLjcxLjcxLjcxIDEuMDUgMS4wNS43MS43MS43MS0uNzEgNC40My00LjQzLjcyLS43Mi0uNzQtLjcxLTQuNDQtNC4yMy0uNzItLjY5LS42OS43Mi0xLjAyIDEuMDctLjY5LjcyLjcyLjY5Ljc0LjdIMjUuMTFsMTMuNDEtMTMuNFY4LjNINDJWMHoiIHRyYW5zZm9ybT0icm90YXRlKDkwIDIxIDIxKSIvPjxnPjxwYXRoIGQ9Ik0xNC40NiAyLjk1aC0uMDJjLTEuOTcuMDItNC42NiAzLjE4LTUuODggMTAuMDZ2LjAyYy0uNDIgMi4xNy0uNjUgNC42OC0uNjkgNy4yM2g4Ljg4bC0yLjc0LTIuNjEgMS4wMi0xLjA3IDQuNjIgNC40MS00LjQzIDQuNDItMS4wNS0xLjA1IDIuNjItMi42Mkg3Ljg2Yy4wNCAyLjQ2LjI1IDQuODkuNjUgNi45OS45NiA1LjU3IDMuMjcgOS45IDUuNTEgMTAuMzEuMTEuMDIuMjMuMDMuMzQuMDMgMS40MyAwIDIuNzEtMS42MyAzLjU2LTMuMDYgMy4yOS02LjI1IDMuNTYtMTUuOTIgMi4zNi0yMi43NS0xLjUtNy42LTMuOTktMTAuMzEtNS44Mi0xMC4zMXoiIGZpbGw9Im5vbmUiIHRyYW5zZm9ybT0icm90YXRlKDkwIDIxIDIxKSIvPjxwYXRoIGQ9Ik00MSA3LjNWMWgtNi4zdjEuNDhoMy42N0wyMi43MSAxOC4xNWMtLjExLTEuODgtLjMyLTMuNjUtLjYtNS4yMXYtLjAyQzIwLjA4IDIuNjUgMTYuNDYgMS4xIDE0LjQ2IDEuMWgtLjA0QzEwLjk1IDEuMTMgOCA1LjU3IDYuNzQgMTIuNjhjLS40NCAyLjI3LS42OCA0LjkxLS43MiA3LjU4SDF2MS40OGg1LjAxYy4wNCAyLjU4LjI2IDUuMTIuNjggNy4zMi44NiA1LjAxIDMuMjEgMTEuMTEgNi45OSAxMS44MS4yMS4wNC40NC4wNi42OC4wNiAxLjQxIDAgMy4yOC0uOCA1LjE3LTMuOTlsLjAyLS4wNGMyLjAxLTMuOCAyLjkzLTguNTEgMy4xOC0xMy4wOGwxNS43IDE1LjdIMzQuN1Y0MUg0MXYtNi4zaC0xLjQ4djMuODFMMjIuNzkgMjEuNzl2LS4wNUgzOC4xbC0yLjYyIDIuNjIgMS4wNSAxLjA1IDQuNDMtNC40My00LjQ0LTQuMjMtMS4wMiAxLjA3IDIuNTUgMi40M0gyMi43OXYtLjA5TDM5LjUyIDMuNDRWNy4zSDQxek0xNy45MiAzNi4wMmMtLjg1IDEuNDMtMi4xMyAzLjA2LTMuNTYgMy4wNi0uMTEgMC0uMjMtLjAxLS4zNC0uMDMtMi4yMy0uNDEtNC41NS00Ljc0LTUuNTEtMTAuMzEtLjQtMi4xMS0uNjEtNC41NC0uNjUtNi45OWg4Ljk0bC0yLjYyIDIuNjIgMS4wNSAxLjA1TDE5LjY2IDIxbC00LjYyLTQuNDEtMS4wMiAxLjA3IDIuNzQgMi42MWgtOC45Yy4wNC0yLjU1LjI3LTUuMDYuNjktNy4yM3YtLjAyYzEuMjItNi44OSAzLjkxLTEwLjA0IDUuODgtMTAuMDZoLjAyYzEuODMgMCA0LjMyIDIuNzEgNS44MyAxMC4zMiAxLjIgNi44MS45MyAxNi40OS0yLjM2IDIyLjc0eiIgZmlsbD0iI2JiNTAxYyIgdHJhbnNmb3JtPSJyb3RhdGUoOTAgMjEgMjEpIi8+PC9nPjwvc3ZnPg=="); +} + +.oci-oke-cluster { + background-image: url("data:image/svg+xml;base64,PHN2ZyB2ZXJzaW9uPSIxLjEiIGlkPSJwcmVmaXhfX0xheWVyXzEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeD0iMCIgeT0iMCIgdmlld0JveD0iMCAwIDQyIDQyIiB4bWw6c3BhY2U9InByZXNlcnZlIj48c3R5bGU+LnByZWZpeF9fc3Qwe2ZpbGw6I2ZmZn0ucHJlZml4X19zdDF7ZmlsbDojMmM1OTY3fTwvc3R5bGU+PHBhdGggY2xhc3M9InByZWZpeF9fc3QwIiBkPSJNMi42NyA0MS41QzEuNDggNDEuNS41IDQwLjUzLjUgMzkuMzNWMi42N0MuNSAxLjQ4IDEuNDcuNSAyLjY3LjVoMzYuNjdjMS4xOSAwIDIuMTcuOTcgMi4xNyAyLjE3djM2LjY3YzAgMS4xOS0uOTcgMi4xNy0yLjE3IDIuMTdIMi42N3oiLz48cGF0aCBjbGFzcz0icHJlZml4X19zdDAiIGQ9Ik0zOS4zMyAxYy45MiAwIDEuNjcuNzUgMS42NyAxLjY3djM2LjY3YzAgLjkyLS43NSAxLjY3LTEuNjcgMS42N0gyLjY3QzEuNzUgNDEgMSA0MC4yNSAxIDM5LjMzVjIuNjdDMSAxLjc1IDEuNzUgMSAyLjY3IDFoMzYuNjZtMC0xSDIuNjdDMS4yIDAgMCAxLjIgMCAyLjY3djM2LjY3QzAgNDAuOCAxLjIgNDIgMi42NyA0MmgzNi42N0M0MC44IDQyIDQyIDQwLjggNDIgMzkuMzNWMi42N0M0MiAxLjIgNDAuOCAwIDM5LjMzIDB6Ii8+PGc+PHBhdGggY2xhc3M9InByZWZpeF9fc3QxIiBkPSJNMzkuMzMgMUgyLjY3QzEuNzUgMSAxIDEuNzUgMSAyLjY3djM2LjY3YzAgLjkxLjc1IDEuNjYgMS42NyAxLjY2aDM2LjY3Yy45MiAwIDEuNjctLjc1IDEuNjctMS42N1YyLjY3QzQxIDEuNzUgNDAuMjUgMSAzOS4zMyAxem0uMTkgMzguMzNjMCAuMS0uMDguMTktLjE5LjE5SDIuNjdhLjE5LjE5IDAgMDEtLjE5LS4xOVYyLjY3YzAtLjEuMDgtLjE5LjE5LS4xOWgzNi42N2MuMSAwIC4xOS4wOC4xOS4xOXYzNi42NnoiLz48cGF0aCBjbGFzcz0icHJlZml4X19zdDEiIGQ9Ik0yMC4zNSA1LjQ0aC04Ljg5djguODloOC44OVY1LjQ0em0tMS40OCA3LjQxaC01LjkzVjYuOTNoNS45M3Y1Ljkyek0zMC4zNSA1LjQ0aC04Ljg5djguODloOC44OVY1LjQ0em0tMS40OCA3LjQxaC01LjkzVjYuOTNoNS45M3Y1Ljkyek0xOC4wNCAxNi45M2g1LjkydjIuMzRsMS40OC4zN3YtNC4yaC04Ljg4djQuMmwxLjQ4LS4zN3pNMjguMDQgMTYuOTNoNS45MnY0LjgybDEuNDguMzd2LTYuNjhoLTguODh2NC40OGwxLjQ4LjM2ek04LjA0IDE2LjkzaDUuOTJ2My4zNWwxLjQ4LS4zNnYtNC40OEg2LjU2djYuNjhsMS40OC0uMzd6TTIxIDE5LjY4TDUuMTggMjMuNjFsLjE4LjcyYzEuNzggNy4yIDguMjEgMTIuMjMgMTUuNjQgMTIuMjNzMTMuODYtNS4wMyAxNS42NC0xMi4yM2wuMTgtLjcyTDIxIDE5LjY4em0tLjc0IDEuNzF2MTMuNjZjLTYuMTgtLjMtMTEuNDgtNC40NS0xMy4yNy0xMC4zN2wxMy4yNy0zLjI5ek0yMSAzNS42M3ptLjc0LS41OFYyMS4zOWwxMy4yNyAzLjI5YTE0LjU5NSAxNC41OTUgMCAwMS0xMy4yNyAxMC4zN3oiLz48L2c+PC9zdmc+"); +} + +.oci-oke-node-pool, .oci-node-pool { + background-image: url("data:image/svg+xml;base64,PHN2ZyB2ZXJzaW9uPSIxLjEiIGlkPSJwcmVmaXhfX0xheWVyXzEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeD0iMCIgeT0iMCIgdmlld0JveD0iMCAwIDQyIDQyIiB4bWw6c3BhY2U9InByZXNlcnZlIj48c3R5bGU+LnByZWZpeF9fc3Qwe2ZpbGw6I2ZmZn0ucHJlZml4X19zdDF7ZmlsbDojYmI1MDFjfTwvc3R5bGU+PHBhdGggY2xhc3M9InByZWZpeF9fc3QwIiBkPSJNMi42NyA0MS41QzEuNDggNDEuNS41IDQwLjUzLjUgMzkuMzNWMi42N0MuNSAxLjQ4IDEuNDcuNSAyLjY3LjVoMzYuNjdjMS4xOSAwIDIuMTcuOTcgMi4xNyAyLjE3djM2LjY3YzAgMS4xOS0uOTcgMi4xNy0yLjE3IDIuMTdIMi42N3oiLz48cGF0aCBjbGFzcz0icHJlZml4X19zdDAiIGQ9Ik0zOS4zMyAxYy45MiAwIDEuNjcuNzUgMS42NyAxLjY3djM2LjY3YzAgLjkyLS43NSAxLjY3LTEuNjcgMS42N0gyLjY3QzEuNzUgNDEgMSA0MC4yNSAxIDM5LjMzVjIuNjdDMSAxLjc1IDEuNzUgMSAyLjY3IDFoMzYuNjZtMC0xSDIuNjdDMS4yIDAgMCAxLjIgMCAyLjY3djM2LjY3QzAgNDAuOCAxLjIgNDIgMi42NyA0MmgzNi42N0M0MC44IDQyIDQyIDQwLjggNDIgMzkuMzNWMi42N0M0MiAxLjIgNDAuOCAwIDM5LjMzIDB6Ii8+PGc+PHBhdGggY2xhc3M9InByZWZpeF9fc3QxIiBkPSJNMzkuMzMgMUgyLjY3QzEuNzUgMSAxIDEuNzUgMSAyLjY3djM2LjY3YzAgLjkxLjc1IDEuNjYgMS42NyAxLjY2aDM2LjY3Yy45MiAwIDEuNjctLjc1IDEuNjctMS42N1YyLjY3QzQxIDEuNzUgNDAuMjUgMSAzOS4zMyAxem0uMTkgMzguMzNjMCAuMS0uMDguMTktLjE5LjE5SDIuNjdhLjE5LjE5IDAgMDEtLjE5LS4xOVYyLjY3YzAtLjEuMDgtLjE5LjE5LS4xOWgzNi42N2MuMSAwIC4xOS4wOC4xOS4xOXYzNi42NnoiLz48cGF0aCBjbGFzcz0icHJlZml4X19zdDEiIGQ9Ik0yNy45NCA4LjdIMTQuMDZ2Ny40MWgxMy44OVY4Ljd6bS0xLjQ4IDUuOTNIMTUuNTR2LTQuNDRoMTAuOTN2NC40NHoiLz48Y2lyY2xlIGNsYXNzPSJwcmVmaXhfX3N0MSIgY3g9IjI0LjI0IiBjeT0iMTIuNCIgcj0iLjc0Ii8+PHBhdGggY2xhc3M9InByZWZpeF9fc3QxIiBkPSJNMjEuNTYgMjQuNjNoMTMuODl2LTcuNDFIMjEuNTZ2Ny40MXptMS40OC01LjkzaDEwLjkzdjQuNDRIMjMuMDRWMTguN3oiLz48Y2lyY2xlIGNsYXNzPSJwcmVmaXhfX3N0MSIgY3g9IjMxLjc0IiBjeT0iMjAuOTIiIHI9Ii43NCIvPjxwYXRoIGNsYXNzPSJwcmVmaXhfX3N0MSIgZD0iTTIwLjQ0IDE3LjIySDYuNTZ2Ny40MWgxMy44OXYtNy40MXptLTEuNDggNS45Mkg4LjA0VjE4LjdoMTAuOTN2NC40NHoiLz48Y2lyY2xlIGNsYXNzPSJwcmVmaXhfX3N0MSIgY3g9IjE2Ljc0IiBjeT0iMjAuOTIiIHI9Ii43NCIvPjxwYXRoIGNsYXNzPSJwcmVmaXhfX3N0MSIgZD0iTTM2LjU2IDI4Ljc2Yy0xLjcuOTMtNi41OCAzLjA2LTE1LjQ3IDMuMDYtMTAuMTkgMC0xNC4zMi0xLjk5LTE1LjY0LTIuODd2LTQuMzJIMy45NnY1LjA2bC4yOS4yMmMxLjMyIDEuMDIgNS41OSAzLjM5IDE2Ljg0IDMuMzkgMTAuMDIgMCAxNS4yMy0yLjY2IDE2LjU5LTMuNDhsLjM2LS4yMnYtNC45OGgtMS40OHY0LjE0eiIvPjwvZz48L3N2Zz4="); +} + +.oci-network-security-group { + background-image: url("data:image/svg+xml;base64,PHN2ZyBkYXRhLW5hbWU9IkxheWVyIDEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmlld0JveD0iMCAwIDMxLjc3IDQxLjExIj48cGF0aCBkPSJNMTUuNjcgNDAuNDdDMTUuMDUgNDAuMTguNSAzMy4zNi41IDI2LjA2VjQuNzJIMWMxMC4xMSAwIDE0LjM4LTMuMzcgMTQuMzgtNC43MmgxYzAgMSAzLjYgNC43MSAxNC4zOSA0LjcxaC41djIxLjM1YzAgNy4zLTE0LjU2IDE0LjEyLTE1LjE4IDE0LjQxbC0uMjEuMDl6IiBmaWxsPSIjZmZmIi8+PHBhdGggZD0iTTE1Ljg4IDBjMCAxLjQ5IDQuMSA1LjIxIDE0Ljg5IDUuMjF2MjAuODVjMCA3LjA3LTE0Ljg5IDE0LTE0Ljg5IDE0UzEgMzMuMTMgMSAyNi4wNlY1LjIyYzEwLjQyIDAgMTQuODgtMy41MyAxNC44OC01LjIybTEgMGgtMkMxNC44NC44NyAxMS4xMSA0LjIyIDEgNC4yMkgwdjIxLjg0YzAgNy42MiAxNC44MyAxNC41NyAxNS40NiAxNC44NmwuNDIuMTkuNDItLjE5Yy42My0uMjkgMTUuNDctNy4yNCAxNS40Ny0xNC44NlY0LjIyaC0xQzIwLjc1IDQuMjIgMTcgLjg5IDE2Ljg4IDB6IiBmaWxsPSIjZmZmIi8+PHBhdGggZD0iTTE1LjE0IDE0LjUyVjMuMzdBMTIuNjMgMTIuNjMgMCAwMTEzIDQuNiAyNy42MyAyNy42MyAwIDAxMi40OSA2LjY5VjE5aDEyLjY1ek0yLjQ5IDIwLjQ4djUuNThjMCAyLjM0IDIuNCA1LjMyIDYuNzcgOC4zOUE1NC42MiA1NC42MiAwIDAwMTUuMTQgMzhWMjAuNDh6TTE2LjYzIDE5aDEyLjY1VjYuNjlhMjcgMjcgMCAwMS0xMC42My0yLjE3IDEyIDEyIDAgMDEtMi0xLjE4VjE5ek0xNS44OCAzOC4zNmgtLjA4ek0xNi42MyAyMC40OFYzOGE1My42OSA1My42OSAwIDAwNS44Ny0zLjUzYzQuMzctMy4wNyA2Ljc4LTYuMDUgNi43OC04LjM5di01LjZIMTYuNjN6IiBmaWxsPSJub25lIi8+PHBhdGggZD0iTTE1Ljg4IDBjMCAxLjY4LTQuNDYgNS4yMS0xNC44OCA1LjIxdjIwLjg1YzAgNy4wNyAxNC44OCAxNCAxNC44OCAxNHMxNC44OS02Ljg4IDE0Ljg5LTEzLjk1VjUuMjJDMjAgNS4yMiAxNS44OCAxLjUgMTUuODggMHptLjc1IDMuMzNhMTIgMTIgMCAwMDIgMS4xOCAyNyAyNyAwIDAwMTAuNjUgMi4xOFYxOUgxNi42M3pNMi40OSA2LjY5QTI3LjYzIDI3LjYzIDAgMDAxMyA0LjZhMTIuNjMgMTIuNjMgMCAwMDIuMTgtMS4yM1YxOUgyLjQ5em02Ljc3IDI3Ljc2Yy00LjM3LTMuMDctNi43Ny02LjA1LTYuNzctOC4zOXYtNS41OGgxMi42NVYzOGE1NC42MiA1NC42MiAwIDAxLTUuODgtMy41NXptNi42MiAzLjkxaC4wOHptMTMuNC0xMi4zYzAgMi4zNC0yLjQxIDUuMzItNi43OCA4LjM5QTUzLjY5IDUzLjY5IDAgMDExNi42MyAzOFYyMC40OGgxMi42NXoiIGZpbGw9IiMyYzU5NjciLz48L3N2Zz4="); +} + +.oci-nosql-database, .oci-nosql-table { + background-image: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAzNy44IDQyIj48ZyBmaWxsPSIjZmZmIj48cGF0aCBkPSJNMTguOSA0MS41QzE3IDQxLjUuNSA0MS4zLjUgMzYuMVY2LjV2LS4yLS4yQy41IDIgMTAuNC41IDE4LjkuNVMzNy4zIDIgMzcuMyA2LjF2MzBjMCA1LjItMTYuNSA1LjQtMTguNCA1LjR6Ii8+PHBhdGggZD0iTTE4LjkgMWM4LjYgMCAxNy45IDEuNiAxNy45IDUuMXYzMGMwIDMuOS0xMS43IDQuOS0xNy45IDQuOVMxIDQwIDEgMzYuMVY2LjV2LS4yLS4yQzEgMi42IDEwLjMgMSAxOC45IDFtMC0xQzE1LjggMCAwIC4zIDAgNi4xdjMwQzAgNDEuNyAxNS44IDQyIDE4LjkgNDJjMy4yIDAgMTguOS0uMyAxOC45LTUuOVY2LjV2LS4yLS4yQzM3LjguMyAyMi4xIDAgMTguOSAweiIvPjwvZz48ZyBmaWxsPSIjMmM1OTY3Ij48cGF0aCBkPSJNMjMuOCAyOS4zYy0xLjYuMS0zLjIuMi00LjkuMnMtMy4zLS4xLTQuOS0uMlYzMWMxLjguMSAzLjUuMiA0LjkuMnMzLjEtLjEgNC45LS4ydi0xLjd6TTE0IDIxLjJjMS44LjEgMy41LjIgNC45LjJzMy4xLS4xIDQuOS0uMnYtMS43Yy0xLjYuMS0zLjIuMi00LjkuMnMtMy4zLS4xLTQuOS0uMnYxLjd6Ii8+PHBhdGggZD0iTTM2LjggNi4xYzAtMy41LTkuMy01LjEtMTcuOS01LjFTMSAyLjYgMSA2LjF2MzBDMSA0MCAxMi43IDQxIDE4LjkgNDFzMTcuOS0xIDE3LjktNC45VjYuNXYtLjItLjJ6bS02IDMyYy0zLjIuOC03LjQgMS4yLTExLjkgMS4ycy04LjctLjQtMTEuOS0xLjJjLTMuNi0uOS00LjQtMS44LTQuNC0yLjF2LTcuNmMxLjUuOSAzLjcgMS41IDYuMiAxLjl2LTEuN2MtLjctLjEtMS4zLS4yLTEuOS0uNC0zLjYtLjktNC40LTEuOC00LjQtMi4xdi03LjVjMS41LjkgMy43IDEuNSA2LjIgMS45di0xLjdjLS43LS4xLTEuMy0uMi0xLjktLjQtMy42LS45LTQuNC0xLjgtNC40LTIuMVY4LjRjMy4xIDEuOSA5LjggMi43IDE2LjIgMi43czEzLjItLjkgMTYuMi0yLjd2OC4xYzAgLjMtLjggMS4yLTQuNCAyLjEtLjYuMS0xLjIuMy0xLjkuNHYxLjdjMi41LS40IDQuNy0xIDYuMi0xLjl2Ny41YzAgLjMtLjggMS4yLTQuNCAyLjEtLjYuMS0xLjIuMy0xLjkuNHYxLjdjMi41LS40IDQuNy0xIDYuMi0xLjl2Ny42Yy41LjEtLjMgMS4xLTMuOCAxLjl6TTE4LjkgMi43YzQuNSAwIDguNy40IDExLjkgMS4yIDMuNi45IDQuNCAxLjkgNC40IDIuMnMtLjggMS4zLTQuNCAyLjJjLTMuMi43LTcuNCAxLjEtMTEuOSAxLjFTMTAuMiA5IDcgOC4yYy0zLjUtLjktNC4zLTEuOC00LjMtMi4xUzMuNSA0LjggNyAzLjljMy4yLS44IDcuNC0xLjIgMTEuOS0xLjJ6Ii8+PHBhdGggZD0iTTEzLjYgMzUuNGMuNiAwIDEuMi0uMSAxLjctLjJ2LTIuMWMtLjMuMS0uNy4xLTEgLjEtLjYgMC0xLS4xLTEuMi0uNC0uMi0uMy0uMy0uNy0uMy0xLjN2LTUuMWwtMi4yLTEuNyAyLjItMS43di01YzAtLjYuMS0xIC4zLTEuMy4yLS4zLjYtLjQgMS4yLS40LjMgMCAuNiAwIDEgLjF2LTIuMWMtLjUtLjEtMS4xLS4yLTEuNy0uMi0yLjMgMC0zLjQgMS4yLTMuNCAzLjZ2NC43bC0yIDEuNnYxLjZsMS45IDEuNnY0LjdjLjEgMi4zIDEuMiAzLjUgMy41IDMuNXpNMjQuMiAxNC4yYy0uNiAwLTEuMi4xLTEuNy4ydjIuMWMuMy0uMS43LS4xIDEtLjEuNiAwIDEgLjEgMS4yLjQuMi4zLjMuNy4zIDEuM3Y1LjFsMi4yIDEuNy0yLjIgMS43djUuMWMwIC42LS4xIDEtLjMgMS4zLS4yLjMtLjYuNC0xLjIuNC0uMyAwLS42IDAtMS0uMXYyLjFjLjUuMSAxLjEuMiAxLjcuMiAyLjMgMCAzLjQtMS4yIDMuNC0zLjZ2LTQuN2wxLjktMS42VjI0bC0xLjktMS42di00LjdjLjEtMi40LTEuMS0zLjUtMy40LTMuNXoiLz48L2c+PC9zdmc+"); +} + +.oci-bucket, .oci-object-storage-bucket { + background-image: url("data:image/svg+xml;base64,PHN2ZyB2ZXJzaW9uPSIxLjEiIGlkPSJwcmVmaXhfX0xheWVyXzEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeD0iMCIgeT0iMCIgdmlld0JveD0iMCAwIDQyIDQyIiB4bWw6c3BhY2U9InByZXNlcnZlIj48c3R5bGU+LnByZWZpeF9fc3Qwe2ZpbGw6I2ZmZn0ucHJlZml4X19zdDF7ZmlsbDojMmM1OTY3fTwvc3R5bGU+PHBhdGggY2xhc3M9InByZWZpeF9fc3QwIiBkPSJNMi42NyA0MS41QzEuNDggNDEuNS41IDQwLjUzLjUgMzkuMzNWMi42N0MuNSAxLjQ3IDEuNDcuNSAyLjY3LjVoMzYuNjdjMS4xOSAwIDIuMTcuOTcgMi4xNyAyLjE3djM2LjY3YzAgMS4yLS45NyAyLjE3LTIuMTcgMi4xN0gyLjY3eiIvPjxwYXRoIGNsYXNzPSJwcmVmaXhfX3N0MCIgZD0iTTM5LjMzIDFjLjkyIDAgMS42Ny43NSAxLjY3IDEuNjd2MzYuNjdjMCAuOTItLjc1IDEuNjctMS42NyAxLjY3SDIuNjdDMS43NSA0MSAxIDQwLjI1IDEgMzkuMzNWMi42N0MxIDEuNzUgMS43NSAxIDIuNjcgMWgzNi42Nm0wLTFIMi42N0MxLjIgMCAwIDEuMiAwIDIuNjd2MzYuNjdDMCA0MC44IDEuMiA0MiAyLjY3IDQyaDM2LjY3QzQwLjggNDIgNDIgNDAuOCA0MiAzOS4zM1YyLjY3QzQyIDEuMiA0MC44IDAgMzkuMzMgMHoiLz48cGF0aCBjbGFzcz0icHJlZml4X19zdDEiIGQ9Ik0zMC40NCAxMS42NWwyLjcxIDQuNzItMi43NCA0LjcyaC01LjQ1bC0yLjcxLTQuNzIgMi43NC00LjcyaDUuNDVtLjg2LTEuNDhoLTcuMTZsLTMuNTkgNi4yIDMuNTcgNi4yaDcuMTZsMy41OS02LjItMy41Ny02LjJ6TTIwLjcyIDI1Ljk0YTQuNjkgNC42OSAwIDExLTQuNjkgNC42OWMuMDEtMi41OCAyLjExLTQuNjkgNC42OS00LjY5bTAtMS40OGE2LjE2IDYuMTYgMCAwMC02LjE3IDYuMTdjMCAzLjQyIDIuNzkgNi4xNyA2LjE3IDYuMTcgMy4zOSAwIDYuMTctMi43NiA2LjE3LTYuMTcuMDEtMy40MS0yLjc1LTYuMTctNi4xNy02LjE3ek0xMy42IDEyLjgzbDQuMzggNy45M0g5LjI2bDQuMzQtNy45M20tLjAxLTMuMDhMNi43NiAyMi4yNGgxMy43MkwxMy41OSA5Ljc1eiIvPjxnPjxwYXRoIGNsYXNzPSJwcmVmaXhfX3N0MSIgZD0iTTM5LjMzIDQxSDIuNjdDMS43NSA0MSAxIDQwLjI1IDEgMzkuMzNWNC45OWg0MHYzNC4zNWMwIC45MS0uNzUgMS42Ni0xLjY3IDEuNjZ6TTIuNDggNi40N3YzMi44N2MwIC4xLjA4LjE5LjE5LjE5aDM2LjY3Yy4xIDAgLjE5LS4wOC4xOS0uMTlWNi40N0gyLjQ4eiIvPjwvZz48Zz48cGF0aCBjbGFzcz0icHJlZml4X19zdDEiIGQ9Ik00MSAzLjg3SDF2LTEuMkMxIDEuNzUgMS43NSAxIDIuNjcgMWgzNi42N2MuOTEgMCAxLjY2Ljc1IDEuNjYgMS42N3YxLjJ6Ii8+PC9nPjwvc3ZnPg=="); +} + +.oci-policy { + background-image: url("data:image/svg+xml;base64,PHN2ZyB2ZXJzaW9uPSIxLjEiIGlkPSJwcmVmaXhfX0xheWVyXzEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeD0iMCIgeT0iMCIgdmlld0JveD0iMCAwIDQxLjk1IDQyIiB4bWw6c3BhY2U9InByZXNlcnZlIj48c3R5bGU+LnByZWZpeF9fc3Qwe2ZpbGw6I2ZmZn0ucHJlZml4X19zdDF7ZmlsbDojMmM1OTY3fTwvc3R5bGU+PHBhdGggY2xhc3M9InByZWZpeF9fc3QwIiBkPSJNLjUgNDEuNXYtMS41NWwxLjQ1LS43MnYtNC42YzAtMS4zNiAxLjEtMi40NiAyLjQ2LTIuNDZoMTMuMTJjMS4zNiAwIDIuNDYgMS4xIDIuNDYgMi40NnY0LjZsMS4yNC43NXYxLjUySC41eiIvPjxwYXRoIGNsYXNzPSJwcmVmaXhfX3N0MCIgZD0iTTE3LjUzIDMyLjY3YzEuMDggMCAxLjk2Ljg4IDEuOTYgMS45NnY0Ljg5aC4wMWwxLjIzLjc0VjQxSDF2LS43NGwxLjQ1LS43MnYtNC45MWMwLTEuMDguODgtMS45NiAxLjk2LTEuOTZoMTMuMTJtMC0xSDQuNDFjLTEuNjMgMC0yLjk2IDEuMzMtMi45NiAyLjk2djQuMjlsLS45LjQ1LS41NS4yN1Y0MmgyMS43M3YtMi4zMWwtLjQ5LS4yOS0uNzYtLjQ2di00LjMyYy4wMS0xLjYzLTEuMzItMi45NS0yLjk1LTIuOTV6Ii8+PGc+PHBhdGggY2xhc3M9InByZWZpeF9fc3QwIiBkPSJNMzQuNjcgMzguNTVsLTEwLjgxLTEwLjgtNS43LTYuMy0yLjI1IDIuMjVjLjQuODIuMjUgMS44Mi0uNDEgMi40OGwtMS4xMSAxLjExYy0uNDEuNDEtLjk1LjYzLTEuNTMuNjNzLTEuMTItLjIzLTEuNTMtLjYzbC04Ljg3LTguODdjLS44NC0uODQtLjg0LTIuMjIgMC0zLjA2bDEuMTEtMS4xMWMuNDEtLjQxLjk1LS42MyAxLjUzLS42My4zMyAwIC42Ni4wOC45NS4yMmw5LjExLTkuMTFjLS40LS44Mi0uMjUtMS44Mi40MS0yLjQ4bDEuMTEtMS4xMWMuNDEtLjQxLjk1LS42MyAxLjUzLS42M3MxLjEyLjIzIDEuNTMuNjNsOC44NyA4Ljg3Yy44NC44NC44NCAyLjIyIDAgMy4wNmwtMS4xMSAxLjExYy0uNDEuNDEtLjk1LjYzLTEuNTMuNjMtLjMzIDAtLjY2LS4wOC0uOTUtLjIybC0yLjIzIDIuMjMgNi40NSA1LjU1IDEwLjc3IDEwLjc3IDEuMzYgMS43OS0uNjUgMS45NC0yLjQxIDIuNDEtMS45NC42NS0xLjctMS4zOHoiLz48cGF0aCBjbGFzcz0icHJlZml4X19zdDAiIGQ9Ik0xOC4yMSAxYy40MyAwIC44NS4xNiAxLjE4LjQ5bDguODcgOC44N2MuNjUuNjUuNjUgMS43MSAwIDIuMzZsLTEuMTEgMS4xMWExLjY3NCAxLjY3NCAwIDAxLTIuMjEuMTRsLTIuODkgMi44OSA2Ljg2IDUuOUwzOS42NSAzMy41bDEuMTYgMS41My0uNTMgMS41Ny0yLjI0IDIuMjQtMS41Ny41My0xLjQ5LTEuMi0xMC43Ni0xMC43OC02LjA0LTYuNjctMi45IDIuOWMuNTEuNjUuNDcgMS42LS4xMyAyLjJsLTEuMTEgMS4xMWMtLjMyLjMyLS43NS40OS0xLjE4LjQ5cy0uODUtLjE2LTEuMTgtLjQ5bC04Ljg3LTguODdjLS42NS0uNjUtLjY1LTEuNzEgMC0yLjM2bDEuMTEtMS4xMWExLjY3NCAxLjY3NCAwIDAxMi4yMS0uMTRsOS42Ny05LjY3Yy0uNTEtLjY1LS40Ny0xLjYuMTMtMi4ybDEuMTEtMS4xMWMuMzEtLjMxLjc0LS40NyAxLjE3LS40N20wLTFjLS43MSAwLTEuMzguMjgtMS44OS43OGwtMS4xMSAxLjExYy0uNzMuNzMtLjk1IDEuNzktLjY1IDIuNzJsLTguNjUgOC42NWMtLjI3LS4wOS0uNTUtLjEzLS44My0uMTMtLjcxIDAtMS4zOC4yOC0xLjg4Ljc4TDIuMSAxNWEyLjY2OCAyLjY2OCAwIDAwMCAzLjc3bDguODcgOC44N2MuNS41IDEuMTcuNzggMS44OS43OC43MSAwIDEuMzgtLjI4IDEuODktLjc4bDEuMTEtMS4xMWMuNzMtLjczLjk1LTEuNzkuNjUtMi43MmwxLjY1LTEuNjUgNS4zMyA1Ljg5IDEwLjggMTAuODEuMDQuMDQuMDQuMDMgMS40OSAxLjIuNDMuMzQuNTItLjE3IDEuNTctLjUzLjIyLS4wNy4xNy0uMTcgMi4yNC0yLjI0LjE3LS4xNy4wNy0uMjIuNTMtMS41Ny4xNy0uNS0uMzItLjQyLTEuMTYtMS41My0uMDQtLjA1LS4wNS0uMDUtMTAuNzYtMTAuNzQtLjAzLS4wMy0uMDMtLjAyLTYuMDQtNS4yIDEuNjItMS42MmEyLjY4OSAyLjY4OSAwIDAwMi43Mi0uNjVsMS4xMS0xLjExYTIuNjY4IDIuNjY4IDAgMDAwLTMuNzdMMjAuMS43N0MxOS41OS4yOCAxOC45MiAwIDE4LjIxIDB6Ii8+PC9nPjxnPjxwYXRoIGNsYXNzPSJwcmVmaXhfX3N0MSIgZD0iTTE5LjQ5IDM5LjUyaC4xOEgyLjQ4aC4wM0wxIDQwLjI2VjQxaDE5Ljcxdi0uNzR6TTE5LjQ5IDM0LjYzYzAtMS4wOC0uODgtMS45Ni0xLjk2LTEuOTZINC40MWMtMS4wOCAwLTEuOTYuODgtMS45NiAxLjk2djMuNzdsMTcuMDQuMDF2LTMuNzh6bS0xLjQ4IDIuM2wtMTQuMDgtLjAxdi0yLjI5YzAtLjI2LjIyLS40OC40OC0uNDhoMTMuMTJjLjI2IDAgLjQ4LjIyLjQ4LjQ4djIuM3pNNDAuODEgMzUuMDJsLS41Mi0uNTItNC4zNCA0LjM0LjUyLjUyIDEuNTctLjUyIDIuMjUtMi4yNXpNMjguOTEgMjIuNzVsLTYuODYtNS45IDIuODktMi44OWMuMy4yNC42Ni4zNSAxLjAzLjM1LjQzIDAgLjg1LS4xNiAxLjE4LS40OWwxLjExLTEuMTFjLjY1LS42NS42NS0xLjcxIDAtMi4zNmwtOC44Ny04Ljg3Yy0uNjUtLjY1LTEuNzEtLjY1LTIuMzYgMGwtMS4xMSAxLjExYy0uNi42LS42NCAxLjU1LS4xMyAyLjJsLTkuNjcgOS42N2MtLjY1LS41MS0xLjYtLjQ3LTIuMi4xM0wyLjgxIDE1LjdjLS42NS42NS0uNjUgMS43MSAwIDIuMzZsOC44NyA4Ljg3Yy4zMi4zMi43NS40OSAxLjE4LjQ5cy44NS0uMTYgMS4xOC0uNDlsMS4xMS0xLjExYy42LS42LjY0LTEuNTUuMTMtMi4ybDIuOS0yLjkgNi4wNCA2LjY3IDEwLjc3IDEwLjc3IDQuNjctNC42Ny0xMC43NS0xMC43NHpNMTYuOTcgMy42NGwxLjExLTEuMTFjLjA0LS4wNC4wOC0uMDUuMTMtLjA1cy4wOS4wMi4xMy4wNWw4Ljg3IDguODdjLjA3LjA3LjA3LjE5IDAgLjI2bC0xLjExIDEuMTFjLS4wNy4wNy0uMTkuMDctLjI2IDBMMTYuOTcgMy45YS4xODcuMTg3IDAgMDEwLS4yNnptLTIuODggMjEuMTRsLTEuMTEgMS4xMWMtLjA3LjA3LS4xOS4wNy0uMjYgMGwtOC44Ny04Ljg3YS4xODcuMTg3IDAgMDEwLS4yNmwxLjExLTEuMTFjLjA0LS4wNC4wOC0uMDUuMTMtLjA1cy4wOS4wMi4xMy4wNWw4Ljg3IDguODdjLjA4LjA3LjA4LjE5IDAgLjI2em0uMTUtMi4yMWwtNy4wNi03LjA2IDkuNjUtOS42NSA3LjA2IDcuMDYtMi45NiAyLjk2LTMuNzUgMy43NS0yLjk0IDIuOTR6bTExLjA2IDMuODJsLTYuMDctNi43MSAxLjc4LTEuNzggNi44OCA1LjkyIDkuNjggOS42OC0yLjU4IDIuNTgtOS42OS05LjY5eiIvPjwvZz48L3N2Zz4="); +} + +.oci-remote-peering-connection { + background-image: url("data:image/svg+xml;base64,PHN2ZyB2ZXJzaW9uPSIxLjEiIGlkPSJwcmVmaXhfX0xheWVyXzEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeD0iMCIgeT0iMCIgdmlld0JveD0iMCAwIDQyIDE3LjQxIiB4bWw6c3BhY2U9InByZXNlcnZlIj48c3R5bGU+LnByZWZpeF9fc3Qwe2ZpbGw6I2ZmZn0ucHJlZml4X19zdDF7ZmlsbDojMmM1OTY3fTwvc3R5bGU+PHBhdGggY2xhc3M9InByZWZpeF9fc3QwIiBkPSJNMzAuMTYgNi4xYTE0LjU3MiAxNC41NzIgMCAwMC05LjIzLTMuMjljLTMuMzQgMC02LjU5IDEuMTQtOS4xNiAzLjIybC0uMzQuMjctLjMyLS4zYy0uMy0uMjgtLjYzLS41NC0uOTgtLjc1bC0uNTgtLjM1LjUzLS40NGMuNDItLjM1Ljg0LS42NyAxLjI2LS45NkMxNC4xNyAxLjU0IDE3LjQ4LjUxIDIwLjkzLjUxYTE2LjcyNSAxNi43MjUgMCAwMTEwLjkxIDQuMDFsLjUxLjQ0LS41Ny4zN2MtLjM0LjIyLS42Ny40OC0uOTcuNzdsLS4zMS4yOS0uMzQtLjI5eiIvPjxwYXRoIGNsYXNzPSJwcmVmaXhfX3N0MCIgZD0iTTIwLjkyIDFjMy4zNSAwIDYuNTcgMSA5LjMxIDIuOS40NS4zMS44Ny42NCAxLjI5Ljk5LS4zNy4yNC0uNzIuNTItMS4wNC44My0yLjYzLTIuMTYtNS45Ny0zLjQtOS41NS0zLjQtMy41NSAwLTYuODYgMS4yMi05LjQ3IDMuMzMtLjMyLS4zLS42OC0uNTgtMS4wNi0uODEuMzktLjMzLjgtLjY0IDEuMjItLjkzQzE0LjM2IDIgMTcuNTggMSAyMC45MiAxbTAtMUExNy4yNDUgMTcuMjQ1IDAgMDA5Ljc1IDQuMDdsLTEuMDUuODkgMS4xNy43M2MuMzIuMi42Mi40My45LjdsLjY0LjYuNjgtLjU1YzIuNDgtMi4wMSA1LjYyLTMuMTEgOC44NC0zLjExIDMuMjYgMCA2LjQyIDEuMTMgOC45MiAzLjE3bC42OS41Ny42NC0uNjJjLjI3LS4yNi41Ny0uNS44OS0uNzFMMzMuMTkgNWwtMS4wMy0uODdjLS40NS0uMzgtLjkxLS43My0xLjM2LTEuMDVBMTcuMjIyIDE3LjIyMiAwIDAwMjAuOTIgMHoiLz48Y2lyY2xlIGNsYXNzPSJwcmVmaXhfX3N0MCIgY3g9IjYuODEiIGN5PSIxMC42IiByPSI2LjMxIi8+PHBhdGggY2xhc3M9InByZWZpeF9fc3QwIiBkPSJNNi44MSA0LjhjMy4yIDAgNS44MSAyLjYxIDUuODEgNS44MXMtMi42MSA1LjgxLTUuODEgNS44MUMzLjYxIDE2LjQxIDEgMTMuODEgMSAxMC42czIuNjEtNS44IDUuODEtNS44bTAtMUMzLjA1IDMuOCAwIDYuODUgMCAxMC42czMuMDUgNi44MSA2LjgxIDYuODFjMy43NSAwIDYuODEtMy4wNSA2LjgxLTYuODEgMC0zLjc1LTMuMDYtNi44LTYuODEtNi44eiIvPjxnPjxjaXJjbGUgY2xhc3M9InByZWZpeF9fc3QwIiBjeD0iMzUuMTkiIGN5PSIxMC42IiByPSI2LjMxIi8+PHBhdGggY2xhc3M9InByZWZpeF9fc3QwIiBkPSJNMzUuMTkgNC44YzMuMiAwIDUuODEgMi42IDUuODEgNS44cy0yLjYxIDUuODEtNS44MSA1LjgxLTUuODEtMi42MS01LjgxLTUuODEgMi42MS01LjggNS44MS01LjhtMC0xYy0zLjc1IDAtNi44MSAzLjA1LTYuODEgNi44MSAwIDMuNzUgMy4wNSA2LjgxIDYuODEgNi44MVM0MiAxNC4zNiA0MiAxMC42YzAtMy43NS0zLjA1LTYuOC02LjgxLTYuOHoiLz48L2c+PGc+PHBhdGggY2xhc3M9InByZWZpeF9fc3QxIiBkPSJNMzAuMjMgMy45QzI3LjQ5IDIgMjQuMjcgMSAyMC45MiAxcy02LjU3IDEtOS4zMSAyLjljLS40Mi4yOS0uODMuNjEtMS4yMi45My4zOC4yNC43My41MSAxLjA2LjgxIDIuNjEtMi4xMiA1LjkyLTMuMzMgOS40Ny0zLjMzIDMuNTggMCA2LjkyIDEuMjQgOS41NSAzLjQuMzItLjMxLjY3LS41OCAxLjA0LS44My0uNC0uMzQtLjgzLS42Ny0xLjI4LS45OHpNNi44MSA0LjhDMy42MSA0LjggMSA3LjQgMSAxMC42czIuNjEgNS44MSA1LjgxIDUuODEgNS44MS0yLjYxIDUuODEtNS44MS0yLjYxLTUuOC01LjgxLTUuOHptNC40OSA1LjhhNC40OSA0LjQ5IDAgMTEtOC45OCAwIDQuNDkgNC40OSAwIDAxOC45OCAwek0zNS4xOSA0LjhjLTMuMiAwLTUuODEgMi42MS01LjgxIDUuODFzMi42MSA1LjgxIDUuODEgNS44MWMzLjIgMCA1LjgxLTIuNjEgNS44MS01LjgxUzM4LjM5IDQuOCAzNS4xOSA0Ljh6bTAgMTAuMjlhNC40OSA0LjQ5IDAgMTEwLTguOTggNC40OSA0LjQ5IDAgMDEwIDguOTh6Ii8+PHBhdGggY2xhc3M9InByZWZpeF9fc3QxIiBkPSJNNS4xIDguODFsLTEuMTkuNTUgMS44MSAzLjg5IDMuODktMS44MS0uNTYtMS4xOS0xLjguODRDNy43NiA5Ljk2IDguNCA4LjkzIDkuMTQgOGMtLjMzLS4zLS43MS0uNTMtMS4xNC0uNjgtLjggMS4wMy0xLjQ4IDIuMTYtMi4wMiAzLjM3TDUuMSA4Ljgxek0zMi43NCAxMC4yNGwtLjU2IDEuMTkgMy44OSAxLjgxIDEuODEtMy44OS0xLjE5LS41Ni0uODUgMS44MmExNi41IDE2LjUgMCAwMC0xLjk2LTMuMjZjLS40MS4xNy0uNzkuNDEtMS4xLjcyLjcyLjkyIDEuMzQgMS45NCAxLjg0IDMuMDRsLTEuODgtLjg3eiIvPjwvZz48Zz48cGF0aCBjbGFzcz0icHJlZml4X19zdDEiIGQ9Ik0zMC4yMyAzLjlDMjcuNDkgMiAyNC4yNyAxIDIwLjkyIDFzLTYuNTcgMS05LjMxIDIuOWMtLjQyLjI5LS44My42MS0xLjIyLjkzLjM4LjI0LjczLjUxIDEuMDYuODEgMi42MS0yLjEyIDUuOTItMy4zMyA5LjQ3LTMuMzMgMy41OCAwIDYuOTIgMS4yNCA5LjU1IDMuNC4zMi0uMzEuNjctLjU4IDEuMDQtLjgzLS40LS4zNC0uODMtLjY3LTEuMjgtLjk4ek02LjgxIDQuOEMzLjYxIDQuOCAxIDcuNCAxIDEwLjZzMi42MSA1LjgxIDUuODEgNS44MSA1LjgxLTIuNjEgNS44MS01LjgxLTIuNjEtNS44LTUuODEtNS44em00LjQ5IDUuOGE0LjQ5IDQuNDkgMCAxMS04Ljk4IDAgNC40OSA0LjQ5IDAgMDE4Ljk4IDB6TTM1LjE5IDQuOGMtMy4yIDAtNS44MSAyLjYxLTUuODEgNS44MXMyLjYxIDUuODEgNS44MSA1LjgxYzMuMiAwIDUuODEtMi42MSA1LjgxLTUuODFTMzguMzkgNC44IDM1LjE5IDQuOHptMCAxMC4yOWE0LjQ5IDQuNDkgMCAxMTAtOC45OCA0LjQ5IDQuNDkgMCAwMTAgOC45OHoiLz48cGF0aCBjbGFzcz0icHJlZml4X19zdDEiIGQ9Ik01LjEgOC44MWwtMS4xOS41NSAxLjgxIDMuODkgMy44OS0xLjgxLS41Ni0xLjE5LTEuOC44NEM3Ljc2IDkuOTYgOC40IDguOTMgOS4xNCA4Yy0uMzMtLjMtLjcxLS41My0xLjE0LS42OC0uOCAxLjAzLTEuNDggMi4xNi0yLjAyIDMuMzdMNS4xIDguODF6TTMyLjc0IDEwLjI0bC0uNTYgMS4xOSAzLjg5IDEuODEgMS44MS0zLjg5LTEuMTktLjU2LS44NSAxLjgyYTE2LjUgMTYuNSAwIDAwLTEuOTYtMy4yNmMtLjQxLjE3LS43OS40MS0xLjEuNzIuNzIuOTIgMS4zNCAxLjk0IDEuODQgMy4wNGwtMS44OC0uODd6Ii8+PC9nPjwvc3ZnPg=="); +} + +.oci-route-table { + background-image: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA0MiA0MiI+PGcgZmlsbD0iI2ZmZiI+PHBhdGggZD0iTS41LjVoNDF2NDFILjV6Ii8+PHBhdGggZD0iTTQxIDF2NDBIMVYxaDQwbTEtMUgwdjQyaDQyVjB6Ii8+PC9nPjxnIGZpbGw9IiNiYjUwMWMiPjxwYXRoIGQ9Ik0xIDF2NDBoNDBWMUgxem0zOC41IDEyLjhIMTMuNlYyLjVoMjUuOXYxMS4zem0tMzcgMTQuNGg5LjZ2MTEuNEgyLjVWMjguMnptOS42LTI1Ljd2MTEuNEgyLjVWMi41aDkuNnptMCAxMi44djExLjRIMi41VjE1LjNoOS42em0xLjUgMjQuMlYyOC4yaDI1Ljl2MTEuNEgxMy42em0wLTEyLjhWMTUuM2gyNS45djExLjRIMTMuNnoiLz48cGF0aCBkPSJNMTUgMTIuM2gxLjdsLjktMS43LjkgMS43aDEuNmwtMS41LTIuN0wyMCA3LjFoLTEuNmwtLjggMS42LS45LTEuNmgtMS42bDEuNSAyLjV6TTIwLjkgMTEuMWgxLjR2MS4yaC0xLjR6TTI1IDEyLjNsLjktMS43LjkgMS43aDEuNmwtMS42LTIuNyAxLjUtMi41aC0xLjVsLS45IDEuNi0uOS0xLjZoLTEuNmwxLjUgMi41LTEuNSAyLjd6TTI4LjkgMTEuMWgxLjR2MS4yaC0xLjR6TTMyLjcgMTIuM2wuOS0xLjcgMSAxLjdoMS41bC0xLjUtMi43TDM2IDcuMWgtMS41bC0uOSAxLjYtLjktMS42aC0xLjVsMS40IDIuNS0xLjUgMi43ek0zNi42IDExLjFIMzh2MS4yaC0xLjR6TTIwIDIwLjFoLTEuNmwtLjggMS42LS45LTEuNmgtMS42bDEuNSAyLjUtMS42IDIuN2gxLjdsLjktMS43LjkgMS43aDEuNmwtMS41LTIuN3pNMjAuOSAyNGgxLjR2MS4yaC0xLjR6TTI4LjMgMjAuMWgtMS41bC0uOSAxLjYtLjktMS42aC0xLjZsMS41IDIuNS0xLjUgMi43SDI1bC45LTEuNy45IDEuN2gxLjZsLTEuNi0yLjd6TTI4LjkgMjRoMS40djEuMmgtMS40ek0zNiAyMC4xaC0xLjVsLS45IDEuNi0uOS0xLjZoLTEuNWwxLjQgMi41LTEuNSAyLjdoMS42bC45LTEuNyAxIDEuN2gxLjVsLTEuNS0yLjd6TTM2LjYgMjRIMzh2MS4yaC0xLjR6TTIwIDMyLjloLTEuNmwtLjggMS41LS45LTEuNWgtMS42bDEuNSAyLjRMMTUgMzhoMS43bC45LTEuNy45IDEuN2gxLjZsLTEuNS0yLjZ6TTIwLjkgMzYuOGgxLjRWMzhoLTEuNHpNMjguMyAzMi45aC0xLjVsLS45IDEuNS0uOS0xLjVoLTEuNmwxLjUgMi40LTEuNSAyLjdIMjVsLjktMS43LjkgMS43aDEuNmwtMS42LTIuNnpNMjguOSAzNi44aDEuNFYzOGgtMS40ek0zNiAzMi45aC0xLjVsLS45IDEuNS0uOS0xLjVoLTEuNWwxLjQgMi40LTEuNSAyLjdoMS42bC45LTEuNyAxIDEuN2gxLjVsLTEuNS0yLjZ6TTM2LjYgMzYuOEgzOFYzOGgtMS40eiIvPjwvZz48L3N2Zz4="); +} + +.oci-secret { + background-image: url("data:image/svg+xml;base64,PHN2ZyB2ZXJzaW9uPSIxLjEiIGlkPSJwcmVmaXhfX0xheWVyXzEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeD0iMCIgeT0iMCIgdmlld0JveD0iMCAwIDI4LjEzIDQyLjEyIiB4bWw6c3BhY2U9InByZXNlcnZlIj48c3R5bGU+LnByZWZpeF9fc3Qwe2ZpbGw6I2ZmZn0ucHJlZml4X19zdDF7ZmlsbDojYmI1MDFjfTwvc3R5bGU+PHBhdGggY2xhc3M9InByZWZpeF9fc3QwIiBkPSJNMTMuNTEgNDEuMjhDNS42MyAzNy4zMy44OSAzMS4xOS41IDI0LjQxVjExLjc3bDUuMjUtMi4yNWMtLjAyLS4yMi0uMDMtLjQ1LS4wMy0uNjdDNS43MiA0LjI1IDkuNDcuNSAxNC4wNy41czguMzUgMy43NSA4LjM1IDguMzVjMCAuMjItLjAxLjQ1LS4wMy42N2w1LjI1IDIuMjV2MTIuNjJjLS4zOSA2LjgtNS4xMyAxMi45NS0xMy4wMSAxNi45bC0uNTUuMjgtLjU3LS4yOXoiLz48cGF0aCBjbGFzcz0icHJlZml4X19zdDAiIGQ9Ik0xNC4wNyAxYzQuMzMgMCA3Ljg1IDMuNTIgNy44NSA3Ljg1IDAgLjMzLS4wMi42Ni0uMDYuOThsNS4yOCAyLjI2djEyLjI5Yy0uMzcgNi41OS01LjAyIDEyLjU5LTEyLjc0IDE2LjQ1bC0uMzQuMTctLjMzLS4xN0M2LjAyIDM2Ljk3IDEuMzggMzAuOTcgMSAyNC4zOFYxMi4xbDUuMjgtMi4yNmE4LjIyIDguMjIgMCAwMS0uMDYtLjk5QzYuMjIgNC41MiA5Ljc0IDEgMTQuMDcgMW0wLTFDOS4xOSAwIDUuMjIgMy45NyA1LjIyIDguODVjMCAuMTEgMCAuMjMuMDEuMzVMLjYxIDExLjE4bC0uNjEuMjZ2MTIuOTdDLjQgMzEuNCA1LjI0IDM3LjcgMTMuMjkgNDEuNzNsLjMzLjE3LjQ1LjIyLjQ1LS4yMi4zMy0uMTdDMjIuOSAzNy43IDI3Ljc0IDMxLjQgMjguMTQgMjQuNDRWMTEuNDNsLS42MS0uMjYtNC42Mi0xLjk3YzAtLjEyLjAxLS4yMy4wMS0uMzUgMC00Ljg4LTMuOTctOC44NS04Ljg1LTguODV6Ii8+PGc+PHBhdGggY2xhc3M9InByZWZpeF9fc3QxIiBkPSJNMjEuODUgOS44M2MuMDQtLjMzLjA2LS42NS4wNi0uOTggMC00LjMzLTMuNTItNy44NS03Ljg1LTcuODVTNi4yMiA0LjUyIDYuMjIgOC44NWMwIC4zMy4wMi42Ni4wNi45OEwxIDEyLjF2MTIuMjhjLjM4IDYuNTkgNS4wMiAxMi41OSAxMi43MyAxNi40NWwuMzMuMTcuMzMtLjE3YzcuNzItMy44NiAxMi4zNi05Ljg2IDEyLjc0LTE2LjQ1VjEyLjA5bC01LjI4LTIuMjZ6TTcuNjkgOC44NWMwLTMuNTEgMi44Ni02LjM3IDYuMzctNi4zN3M2LjM3IDIuODYgNi4zNyA2LjM3YzAgLjEyIDAgLjI1LS4wMS4zN0wxNC4wNyA2LjUgNy43MSA5LjIyYy0uMDEtLjEyLS4wMi0uMjUtLjAyLS4zN3ptMTcuOTYgMTUuNDdjLS4zNSA1Ljk1LTQuNTYgMTEuNDEtMTEuNTkgMTUuMDMtNy4wMi0zLjYyLTExLjIzLTkuMDgtMTEuNTgtMTUuMDNWMTMuMDdMMTQuMDcgOC4xbDExLjU5IDQuOTd2MTEuMjV6Ii8+PHBhdGggY2xhc3M9InByZWZpeF9fc3QxIiBkPSJNMTEuNDEgMjAuNmMwIDEuMDQuNjEgMS45MyAxLjQ5IDIuMzRsLjM2LjIxLS42OSA1LjExaDIuODVsLS42OS01LjE0LjEzLS4wOGEyLjU4NSAyLjU4NSAwIDAwMS43NS0yLjQ1YzAtMS40NC0xLjE2LTIuNi0yLjYtMi42cy0yLjYgMS4xNy0yLjYgMi42MXoiLz48L2c+PC9zdmc+"); +} + +.oci-security-list { + background-image: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAzMi4zIDQyLjIiPjxnIGZpbGw9IiNmZmYiPjxwYXRoIGQ9Ik0xNS44IDQxLjVDOCAzOC42IDQuMyAzMy42IDIuNSAyOS44Yy0yLTQuMy0yLTcuOS0yLTguMVY3LjNMMTYuMi42bDE1LjYgNi43djE0LjVjMCAuNi0uMiAxNC4yLTE1LjEgMTkuN2wtLjQuMi0uNS0uMnoiLz48cGF0aCBkPSJNMTYuMiAxLjFsMTUuMSA2LjV2MTQuMmMwIC42LS4yIDEzLjgtMTQuOCAxOS4ybC0uMy4xLS4yLS4xQzguMyAzOC4yIDQuNyAzMy4zIDMgMjkuNmMtMS45LTQuMS0yLTcuNy0yLTcuOFY3LjZsMTUuMi02LjVtMC0xLjFsLS40LjJMLjYgNi43bC0uNi4yVjIxLjhjMCAuMiAwIDMuOSAyLjEgOC4zIDEuOCAzLjggNS42IDkgMTMuNiAxMS45bC4zLjEuMy4xLjMtLjEuMy0uMWMxNS4zLTUuNiAxNS41LTE5LjYgMTUuNS0yMC4yVjYuOWwtLjYtLjNMMTYuNi4ybC0uNC0uMnoiLz48L2c+PHBhdGggZD0iTTIuNSA4LjZ2MTMuMmMwIC4xIDAgMy40IDEuOCA3LjIgMi4zIDQuOSA2LjMgOC40IDExLjkgMTAuNSAxMy40LTUuMSAxMy42LTE3LjIgMTMuNi0xNy43VjguNkwxNi4yIDIuNyAyLjUgOC42em0xMy42IDE5LjdIN3YtMS41aDkuMXYxLjV6bTAtNi44SDdWMjBoOS4xdjEuNXptMC03LjNIN3YtMS41aDkuMXYxLjV6bTQuMS0xLjVsMS4yIDEuMiAzLTMgMSAxLTQgNC0yLjItMi4yIDEtMXptNC42IDkuNWwtMSAxLTEuNS0xLjUtMS41IDEuNS0xLTEgMS41LTEuNS0xLjUtMS41IDEtMSAxLjUgMS41IDEuNS0xLjUgMSAxLTEuNSAxLjUgMS41IDEuNXptLTQuNiA0LjZsMS4yIDEuMiAzLTMgMSAxLTQgNC0yLjItMi4yIDEtMXoiIGZpbGw9Im5vbmUiLz48cGF0aCBkPSJNMTYuMiAxLjFMMSA3LjZ2MTQuMmMwIC4xIDAgMy43IDIgNy44IDEuNyAzLjcgNS40IDguNiAxMyAxMS40bC4zLjEuMy0uMWMxNC42LTUuNCAxNC44LTE4LjcgMTQuOC0xOS4yVjcuNkwxNi4yIDEuMXptMTMuNiAyMC43YzAgLjUtLjIgMTIuNi0xMy42IDE3LjctNS42LTIuMS05LjYtNS42LTExLjktMTAuNS0xLjgtMy45LTEuOC03LjEtMS44LTcuMlY4LjZsMTMuNy01LjkgMTMuNiA1Ljl2MTMuMnoiIGZpbGw9IiNiYjUwMWMiLz48cGF0aCBmaWxsPSIjYmI1MDFjIiBkPSJNNyAxMi43aDkuMXYxLjVIN3pNMjUuNCAxMmwtMS4xLTEtMi45IDIuOS0xLjItMS4yLTEuMSAxLjEgMi4zIDIuMnpNNyAyMGg5LjF2MS41SDd6TTIzLjggMTguMWwtMS41IDEuNi0xLjYtMS42LTEgMS4xIDEuNSAxLjUtMS41IDEuNSAxIDEuMSAxLjYtMS41IDEuNSAxLjUgMS0xLjEtMS41LTEuNSAxLjUtMS41ek03IDI2LjhoOS4xdjEuNUg3ek0yNS40IDI2LjFsLTEuMS0xLTIuOSAyLjktMS4yLTEuMi0xLjEgMS4xIDIuMyAyLjJ6Ii8+PC9zdmc+"); +} + +.oci-service-gateway { + background-image: url("data:image/svg+xml;base64,PHN2ZyBkYXRhLW5hbWU9IkxheWVyIDEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmlld0JveD0iMCAwIDQyLjE5IDQyIj48cGF0aCBkPSJNMjMuMjQgNDEuNWExOC4zIDE4LjMgMCAwMS0xNC42Ny03LjMxIDE4LjkzIDE4LjkzIDAgMDEtMi43Ny0yLjMyIDkuNzUgOS43NSAwIDAxLTEuMTQtMS4yNWMtLjE2LS4yLS44NS0xLjEyLTEtMS40MXMtLjE5LS4zLS4yOC0uNDZsLS4yNy0uNDRjLS4xMi0uMjEtLjI1LS40MS0uMzYtLjYycy0uMTctLjMzLS4yNS0uNWwtLjIzLS40OWMtLjEtLjItLjItLjQtLjI5LS42MXMtLjE1LS4zOC0uMjItLjU4TDEuNTQgMjVjLS4wOC0uMTktLjE1LS4zOS0uMjItLjZzLS4xMi0uNDYtLjE4LS42OUwxIDIzLjE3YzAtLjE3LS4wOS0uMzUtLjEzLS41M3MtLjExLS42NC0uMTUtMWwtLjA2LS40NWMwLS4xNC0uMDUtLjI3LS4wNy0uNDFDLjUzIDIwLjIuNSAxOS41Ny41IDE4Ljk0QTE4LjQ2IDE4LjQ2IDAgMDExOC45NC41Yy41OSAwIDEuMjEgMCAxLjgzLjA5bC4zNy4wNWguMjJjLjM5IDAgLjc5LjEgMS4xOC4xOEwyMyAxbC4yLjA1Yy4zNy4wOS43LjE3IDEgLjI3bC41Mi4xNy4yLjA3LjkyLjM0Yy4yMS4wOC40MS4xOC42MS4yN2guMTFsLjg1LjQxLjY4LjM4Yy4yOC4xNi41NS4zMi44MS40OWwuNjYuNDUuNzMuNTVhOCA4IDAgMDEuOTEuNzggMTguNTQgMTguNTQgMCAwMTIuMzcgMi41NkExOC40NCAxOC40NCAwIDAxMjMuMjQgNDEuNXoiIGZpbGw9IiNmZmYiLz48cGF0aCBkPSJNMTguOTQgMWExNy41MyAxNy41MyAwIDAxMS43OC4wOWwuNTcuMDhjLjM5LjA1Ljc3LjEgMS4xNS4xOC4yMyAwIC40NS4xMS42OC4xNmwxIC4yNS42OC4yNGMuMzEuMTEuNjEuMjEuOTEuMzNsLjY5LjMxLjgzLjRjLjIzLjEyLjQ1LjI1LjY3LjM4cy41My4zMS43OC40Ny40My4yOS42NC40NC40OC4zNS43Mi41NGwuODYuNzNhMTguMTQgMTguMTQgMCAwMTIuMzcgMi41OEExNy45MyAxNy45MyAwIDExOC45MiAzMy44MmExNy45MiAxNy45MiAwIDAxLTIuNzYtMi4zcy0uOS0xLTEuMS0xLjIyLS44NC0xLjExLTEtMS4zOC0uMjctLjQ0LS40LS42Ni0uMzQtLjU0LS40OS0uODEtLjI0LS40OS0uMzUtLjczLS4yOC0uNTUtLjQtLjg0LS4yLS41NC0uMy0uODEtLjIxLS41NC0uMy0uODItLjE2LS42My0uMjQtLjk0LS4xNC0uNTEtLjItLjc3LS4xMi0uNzYtLjE3LTEuMTRjMC0uMjEtLjA4LS40Mi0uMS0uNjNRMSAxOS44NyAxIDE4Ljk0QTE4IDE4IDAgMDExOC45NCAxbTAtMUExOSAxOSAwIDAwMCAxOC45NGExNy44MiAxNy44MiAwIDAwLjEgMS45M2MwIC4xNSAwIC4zLjA2LjQ0czAgLjE1IDAgLjIzdi4yMWMwIC4zMi4wOC42NS4xNSAxcy4wOS4zNy4xNC41NiAwIC4xNy4wNy4yNWwuMDYuMjZjLjA2LjI1LjEyLjQ5LjIuNzNzLjE0LjQyLjIyLjYzbC4wOS4yNC4wOS4yNWE2LjM3IDYuMzcgMCAwMC4yMy42MWMuMDkuMjIuMi40NC4zLjY1bC4xMi4yMy4xMS4yNGE1LjIgNS4yIDAgMDAuMjYuNTNjLjEyLjIyLjI1LjQzLjM4LjY1bC4xMy4yMS4xMy4yMWMuMS4xNy4xOS4zMy4zLjQ5cy45IDEuMjQgMS4wOCAxLjQ1YTExIDExIDAgMDAxLjE5IDEuMzIgMTguNTYgMTguNTYgMCAwMDIuNzQgMi4zQTE4LjkzIDE4LjkzIDAgMTAzNCA3LjQ0YTE4Ljk0IDE4Ljk0IDAgMDAtMi40LTIuNTkgOS40OCA5LjQ4IDAgMDAtLjktLjc3bC0uNzYtLjU3LS42OC0uNDZjLS4yNi0uMTctLjU0LS4zMy0uODEtLjQ5cy0uNDctLjI4LS43MS0uNGwtLjg4LS40My0uMTItLjA1LS42MS0uMjdjLS4zMS0uMTMtLjYzLS4yNC0uOTQtLjM1TDI0Ljk0IDEgMjQuNC44MWMtLjMzLS4xLS42Ni0uMTgtMS0uMjZoLS4wN2wtLjItLjA3LS40OS0uMTFjLS40MS0uMDgtLjgyLS4xNC0xLjIyLS4xOWgtLjE5bC0uNDItLjA5QzIwLjE4IDAgMTkuNTUgMCAxOC45NCAweiIgZmlsbD0iI2ZmZiIvPjxwYXRoIGQ9Ik00LjU4IDI2Ljk0YTE2LjI3IDE2LjI3IDAgMDEtMi4wOC04IDE2LjQ1IDE2LjQ1IDAgMDEyMy44MS0xNC43QTE4LjcgMTguNyAwIDAxMzEgNS42MiAxNy45MyAxNy45MyAwIDAwNi4xNyAzMS41M2ExOC40OCAxOC40OCAwIDAxLTEuNTktNC41OXoiIGZpbGw9IiMyYzU5NjciLz48cGF0aCBkPSJNMjMuMjQgNS4xMWExNy45NSAxNy45NSAwIDEwMTggMTggMTggMTggMCAwMC0xOC0xOHptMCAzNC4zOWExNi40NSAxNi40NSAwIDExMTYuNDUtMTYuNDRBMTYuNDYgMTYuNDYgMCAwMTIzLjI0IDM5LjV6IiBmaWxsPSIjMmM1OTY3Ii8+PHBhdGggZmlsbD0iIzJjNTk2NyIgZD0iTTI3LjMyIDMyLjM3bC0xLjA1LTEuMDYtMi4yOCAyLjI4VjEyLjcxbDIuMjggMi4yOCAxLjA1LTEuMDYtNC4wOC00LjA4LTQuMDggNC4wOCAxLjA2IDEuMDYgMi4yOC0yLjI4djIwLjg4bC0yLjI4LTIuMjgtMS4wNiAxLjA2IDQuMDggNC4wOCA0LjA4LTQuMDh6Ii8+PHBhdGggZmlsbD0iIzJjNTk2NyIgZD0iTTE4LjM1IDI3LjE0bDQuMDgtNC4wOC00LjA4LTQuMDgtMS4wNiAxLjA1IDIuMjggMi4yOGgtOS42djEuNDloOS42bC0yLjI4IDIuMjggMS4wNiAxLjA2ek0zNi41MSAyMi4zMWgtOS41OWwyLjI3LTIuMjgtMS4wNS0xLjA1LTQuMDkgNC4wOCA0LjA5IDQuMDggMS4wNS0xLjA2LTIuMjctMi4yOGg5LjU5di0xLjQ5eiIvPjwvc3ZnPg=="); +} + +.oci-subnet { + background-image: url("data:image/svg+xml;base64,PHN2ZyB2ZXJzaW9uPSIxLjEiIGlkPSJwcmVmaXhfX0xheWVyXzEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeD0iMCIgeT0iMCIgdmlld0JveD0iMCAwIDQyIDQyIiB4bWw6c3BhY2U9InByZXNlcnZlIj48c3R5bGU+LnByZWZpeF9fc3Qwe2ZpbGw6I2ZmZn08L3N0eWxlPjxwYXRoIGNsYXNzPSJwcmVmaXhfX3N0MCIgZD0iTTI2LjMzIDQxLjVWMjYuMzNoNi4wNXYtNEg5LjQydjRoNi4yNVY0MS41SC41VjI2LjMzaDYuMjV2LTRILjV2LTIuNjZoMTkuMTd2LTRoLTYuMzZWLjVoMTUuMTd2MTUuMTdoLTYuMTV2NEg0MS41djIuNjZoLTYuNDZ2NGg2LjQ2VjQxLjV6Ii8+PHBhdGggY2xhc3M9InByZWZpeF9fc3QwIiBkPSJNMjcuOTggMXYxNC4xN2gtNi4xNXY1SDQxdjEuNjdoLTYuNDZ2NUg0MVY0MUgyNi44M1YyNi44M2g2LjA0di01SDguOTJ2NWg2LjI1VjQxSDFWMjYuODNoNi4yNXYtNUgxdi0xLjY3aDE5LjE3di01aC02LjM1VjFoMTQuMTZtMS0xSDEyLjgxdjE2LjE3aDYuMzV2M0gwdjMuNjdoNi4yNXYzSDBWNDJoMTYuMTdWMjUuODNIOS45MnYtM2gyMS45NnYzaC02LjA0VjQySDQyVjI1LjgzaC02LjQ2di0zSDQydi0zLjY3SDIyLjgzdi0zaDYuMTVWMHoiLz48Zz48cGF0aCBmaWxsPSJub25lIiBkPSJNMTUuNDggMi42N2gxMC44M1YxMy41SDE1LjQ4ek0yLjY3IDI4LjVIMTMuNXYxMC44M0gyLjY3ek0yOC41IDI4LjVoMTAuODN2MTAuODNIMjguNXoiLz48cGF0aCBkPSJNNDEgMjEuODN2LTEuNjdIMjEuODN2LTVoNi4xNVYxSDEzLjgxdjE0LjE3aDYuMzV2NUgxdjEuNjdoNi4yNXY1SDFWNDFoMTQuMTdWMjYuODNIOC45MnYtNWgyMy45NnY1aC02LjA0VjQxSDQxVjI2LjgzaC02LjQ2di01SDQxek0xMy41IDI4LjV2MTAuODNIMi42N1YyOC41SDEzLjV6bTEuOTgtMTVWMi42N2gxMC44M1YxMy41SDE1LjQ4em0yMy44NSAxNXYxMC44M0gyOC41VjI4LjVoMTAuODN6IiBmaWxsPSIjYmI1MDFjIi8+PC9nPjwvc3ZnPg=="); +} + +.oci-user { + background-image: url("data:image/svg+xml;base64,PHN2ZyB2ZXJzaW9uPSIxLjEiIGlkPSJwcmVmaXhfX0xheWVyXzEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeD0iMCIgeT0iMCIgdmlld0JveD0iMCAwIDMyLjk4IDQyIiB4bWw6c3BhY2U9InByZXNlcnZlIj48c3R5bGU+LnByZWZpeF9fc3Qwe2ZpbGw6I2ZmZn0ucHJlZml4X19zdDF7ZmlsbDojMmM1OTY3fTwvc3R5bGU+PHBhdGggY2xhc3M9InByZWZpeF9fc3QwIiBkPSJNMTYuNDkgMjEuMjljLTUuNzMgMC0xMC40LTQuNjYtMTAuNC0xMC4zOVMxMC43NS41IDE2LjQ5LjVjNS43MyAwIDEwLjQgNC42NiAxMC40IDEwLjQtLjAxIDUuNzMtNC42NyAxMC4zOS0xMC40IDEwLjM5eiIvPjxwYXRoIGNsYXNzPSJwcmVmaXhfX3N0MCIgZD0iTTE2LjQ5IDFjNS40NiAwIDkuOSA0LjQ0IDkuOSA5LjlzLTQuNDQgOS45LTkuOSA5LjktOS45LTQuNDQtOS45LTkuOVMxMS4wMyAxIDE2LjQ5IDFtMC0xYy02LjAxIDAtMTAuOSA0Ljg5LTEwLjkgMTAuOSAwIDYuMDEgNC44OSAxMC45IDEwLjkgMTAuOXMxMC45LTQuODkgMTAuOS0xMC45QzI3LjM4IDQuODkgMjIuNSAwIDE2LjQ5IDB6Ii8+PGc+PHBhdGggY2xhc3M9InByZWZpeF9fc3QwIiBkPSJNLjUgNDEuNVYyOC44NGMwLTQuMDIgMy4yNy03LjI5IDcuMjktNy4yOWgyLjE3bC40LjUyYTcuNjgyIDcuNjgyIDAgMDA2LjEzIDMuMDJjLjM0IDAgLjY4LS4wMiAxLjAyLS4wNiAyLS4yNSAzLjkxLTEuNCA1LjI1LTMuMTRsLjI2LS4zNGgyLjE3YzQuMDIgMCA3LjI5IDMuMjcgNy4yOSA3LjI5VjQxLjVILjV6Ii8+PHBhdGggY2xhc3M9InByZWZpeF9fc3QwIiBkPSJNMjUuMTggMjIuMDRhNi43OSA2Ljc5IDAgMDE2Ljc5IDYuNzlWNDFIMVYyOC44NGE2Ljc5IDYuNzkgMCAwMTYuNzktNi43OWgxLjkybC4yNS4zM2E4LjE4NCA4LjE4NCAwIDAwNi41MiAzLjIyYy4zNiAwIC43Mi0uMDIgMS4wOC0uMDcgMi4yMy0uMjggNC4yMi0xLjU1IDUuNTktMy4zM2wuMTEtLjE0aDEuOTJtMC0xLjAyaC0yLjQxbC0uMy4zOS0uMTEuMTRjLTEuMjYgMS42NC0zLjA1IDIuNzItNC45MiAyLjk1LS4zMi4wNC0uNjQuMDYtLjk1LjA2YTcuMTcgNy4xNyAwIDAxLTUuNzMtMi44M2wtLjI1LS4zMy0uMy0uMzlINy43OWMtNC4zIDAtNy43OSAzLjUtNy43OSA3Ljc5VjQyaDMyLjk4VjI4Ljg0YzAtNC4zLTMuNS03LjgtNy44LTcuOHoiLz48L2c+PGc+PHBhdGggY2xhc3M9InByZWZpeF9fc3QxIiBkPSJNMTYuNDkgMjAuNzljNS40NiAwIDkuOS00LjQ0IDkuOS05LjlTMjEuOTUgMSAxNi40OSAxcy05LjkgNC40NC05LjkgOS45IDQuNDQgOS44OSA5LjkgOS44OXptMC0xOC4xMmM0LjU0IDAgOC4yMyAzLjY5IDguMjMgOC4yM3MtMy42OSA4LjIzLTguMjMgOC4yMy04LjIzLTMuNjktOC4yMy04LjIzIDMuNjktOC4yMyA4LjIzLTguMjN6TTI1LjE4IDIyLjA0aC0xLjkybC0uMjUuMzNjLTEuNTcgMi4wNC0zLjk1IDMuMjItNi41MiAzLjIycy00Ljk1LTEuMTctNi41Mi0zLjIybC0uMjUtLjMzSDcuNzljLTMuNzQgMC02Ljc5IDMuMDUtNi43OSA2LjhWNDFoMS42N1YyOC44NGMwLTIuODMgMi4zLTUuMTMgNS4xMy01LjEzaDEuMWMxLjg5IDIuMjYgNC42MyAzLjU0IDcuNTggMy41NHM1LjctMS4yOSA3LjU4LTMuNTRoMS4xMWMyLjgzIDAgNS4xMyAyLjMgNS4xMyA1LjEzVjQxaDEuNjdWMjguODRjLjAxLTMuNzUtMy4wNC02LjgtNi43OS02Ljh6Ii8+PC9nPjwvc3ZnPg=="); +} + +.oci-user-group { + background-image: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA1Ni45IDQyIj48ZyBmaWxsPSIjZmZmIj48cGF0aCBkPSJNLjUgNDEuNVYyNi4zYzAtMyAyLjQtNS40IDUuNC01LjRIOHYtLjNjLTIuMi0xLjMtMy43LTMuNy0zLjctNi40IDAtNC4xIDMuMy03LjQgNy40LTcuNHM3LjQgMy4zIDcuNCA3LjRjMCAyLjYtMS40IDQuOS0zLjUgNi4zaC41YzEuMi0xLjUgMy0yLjQgNS0yLjRoMi42VjE3Yy0yLjYtMS42LTQuMi00LjUtNC4yLTcuNiAwLTQuOSA0LTguOSA4LjktOC45czguOSA0IDguOSA4LjljMCAzLjEtMS42IDYtNC4zIDcuNnYxaDIuN2MyIDAgMy44LjkgNS4xIDIuNGguNWE3LjQ4IDcuNDggMCAwMS0zLjUtNi4zYzAtNC4xIDMuMy03LjQgNy40LTcuNHM3LjQgMy4zIDcuNCA3LjRjMCAyLjYtMS40IDUuMS0zLjYgNi40di41aDJjMyAwIDUuNCAyLjQgNS40IDUuNHYxNS4ySC41eiIvPjxwYXRoIGQ9Ik0yOC40IDFjNC42IDAgOC40IDMuOCA4LjQgOC40IDAgMy4xLTEuNyA1LjktNC4zIDcuM3YxLjhoMy4yYzEuOSAwIDMuNyAxIDQuOCAyLjRoMy4yYy0zLjEtLjctNS40LTMuNS01LjQtNi44IDAtMy44IDMuMS02LjkgNi45LTYuOXM2LjkgMy4xIDYuOSA2LjljMCAzLjMtMi4zIDYuMS01LjQgNi44aDEuOHYuNUg1MWMyLjcgMCA0LjkgMi4yIDQuOSA0LjlWNDFIMVYyNi4zYzAtMi43IDIuMi00LjkgNC45LTQuOWgyLjZWMjFoMS43Yy0zLjEtLjctNS40LTMuNS01LjQtNi44IDAtMy44IDMuMS02LjkgNi45LTYuOXM2LjkgMy4xIDYuOSA2LjljMCAzLjMtMi4zIDYuMS01LjQgNi44aDMuMmMxLjEtMS41IDIuOC0yLjQgNC43LTIuNGgzLjF2LTEuOWMtMi41LTEuNC00LjItNC4yLTQuMi03LjNDMjAgNC44IDIzLjggMSAyOC40IDFtMC0xQzIzLjIgMCAxOSA0LjIgMTkgOS40YzAgMy4yIDEuNiA2LjEgNC4yIDcuOHYuM2gtMi4xYy0uOSAwLTEuNy4yLTIuNS41LjYtMS4xIDEtMi40IDEtMy44IDAtNC40LTMuNi03LjktNy45LTcuOXMtNy45IDMuNi03LjkgNy45YzAgMi41IDEuMiA0LjggMyA2LjJoLTFjLTMuMiAwLTUuOSAyLjYtNS45IDUuOVY0Mmg1Ni45VjI2LjNjMC0zLjItMi42LTUuOS01LjktNS45aC0xYzEuOS0xLjUgMy0zLjggMy02LjIgMC00LjQtMy42LTcuOS03LjktNy45cy03LjkgMy42LTcuOSA3LjljMCAxLjQuNCAyLjcgMSAzLjgtLjgtLjMtMS43LS41LTIuNi0uNWgtMi4ydi0uM2MyLjctMS43IDQuMy00LjcgNC4zLTcuOS4yLTUuMS00LTkuMy05LjItOS4zeiIvPjwvZz48ZyBmaWxsPSIjMmM1OTY3Ij48cGF0aCBkPSJNNDUuMiAyMS4yYzMuOCAwIDYuOS0zLjEgNi45LTYuOXMtMy4xLTctNi45LTctNi45IDMuMS02LjkgNi45IDMuMSA3IDYuOSA3em0wLTEyLjJjMi45IDAgNS4zIDIuNCA1LjMgNS4zcy0yLjQgNS4zLTUuMyA1LjMtNS4zLTIuNC01LjMtNS4zUzQyLjMgOSA0NS4yIDl6Ii8+PHBhdGggZD0iTTUxLjEgMjEuNWgtMS40bC0uMy4zYy0xIDEuMy0yLjUgMi4xLTQuMiAyLjEtMS42IDAtMy4yLS44LTQuMi0yLjFsLS4zLS4zaC0uMWMtMS0xLjctMi45LTIuOS01LTIuOUgzNGwtLjMuM2MtMS4zIDEuNy0zLjIgMi42LTUuMyAyLjZzLTQtMS01LjMtMi42bC0uMy0uM2gtMS43Yy0yLjEgMC00IDEuMi01IDIuOWwtLjMuM2MtMSAxLjMtMi41IDIuMS00LjIgMi4xcy0zLjItLjgtNC4yLTIuMWwtLjMtLjNINS45Yy0yLjcgMC00LjkgMi4yLTQuOSA0LjlWNDFoMS43VjI2LjNjMC0xLjggMS40LTMuMiAzLjItMy4yaC42YzEuMyAxLjUgMy4yIDIuNCA1LjIgMi40IDEuMyAwIDIuNi0uNCAzLjYtMVY0MUgxN1YyNC40YzAtMi4zIDEuOS00LjEgNC4xLTQuMWguOWMxLjYgMS45IDMuOSAzIDYuNCAzczQuOC0xLjEgNi40LTNoLjljMi4zIDAgNC4xIDEuOSA0LjEgNC4xVjQxaDEuNlYyNC40YzEuMS43IDIuNCAxLjEgMy43IDEuMSAyIDAgMy45LS45IDUuMi0yLjRoLjZjMS44IDAgMy4yIDEuNCAzLjIgMy4yVjQxaDEuN1YyNi4zYy4xLTIuNy0yLTQuOC00LjctNC44eiIvPjxwYXRoIGQ9Ik0xMS43IDIxLjJjMy44IDAgNi45LTMuMSA2LjktNi45cy0zLjEtNi45LTYuOS02LjktNi45IDMuMS02LjkgNi45IDMuMSA2LjkgNi45IDYuOXptMC0xMi4yYzIuOSAwIDUuMyAyLjQgNS4zIDUuM3MtMi40IDUuMy01LjMgNS4zLTUuMy0yLjQtNS4zLTUuM1M4LjggOSAxMS43IDl6TTI4LjQgMTcuOGM0LjYgMCA4LjQtMy44IDguNC04LjRTMzMuMSAxIDI4LjQgMSAyMCA0LjggMjAgOS40czMuOCA4LjQgOC40IDguNHptMC0xNS4xYTYuNyA2LjcgMCAxMTAgMTMuNCA2LjcgNi43IDAgMDEwLTEzLjR6TTIxLjIgMzAuNmgtLjlWNDFIMjJ2LTguN3pNMzUuNiAzMC42bC0uOCAxLjdWNDFoMS43VjMwLjZ6TTUwLjEgMzR2N2gxLjZ2LTguN2gtLjh6TTUuMiAzMi4zVjQxaDEuN3YtN0w2IDMyLjN6Ii8+PC9nPjwvc3ZnPg=="); +} + +.oci-vault { + background-image: url("data:image/svg+xml;base64,PHN2ZyBpZD0icHJlZml4X19MYXllcl8xIiBkYXRhLW5hbWU9IkxheWVyIDEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmlld0JveD0iMCAwIDQzLjY1IDQyIj48ZGVmcz48c3R5bGU+LnByZWZpeF9fc3Qwe2ZpbGw6I2ZmZn0ucHJlZml4X19zdDF7ZmlsbDojMmM1OTY3fTwvc3R5bGU+PC9kZWZzPjxwYXRoIGNsYXNzPSJwcmVmaXhfX3N0MCIgZD0iTS41IDQxLjV2LTEuNjNsMi4wMy0xLjAyaC4yNHYtNi4wMUgxLjEyVjIxLjUzaDEuNjV2LTMuOTVIMS4xMlY2LjI3aDEuNjVWLjVoMzguMTF2MzguMzVoLjI0bDIuMDMgMS4wMnYxLjYzSC41eiIvPjxwYXRoIGNsYXNzPSJwcmVmaXhfX3N0MCIgZD0iTTQwLjM4IDF2MzguMzVINDFsMS42NS44M1Y0MUgxdi0uODJsMS42NS0uODNoLjYydi03SDEuNjJWMjJoMS42NXYtNUgxLjYyVjYuNzdoMS42NVYxaDM3LjExbTEtMUgyLjI3djUuNzdILjYydjEyLjMxaDEuNjV2M0guNjJ2MTIuMjZoMS42NXY1LjA4SDIuMmwtMS42NS44Mi0uNTUuMzJWNDJoNDMuNjV2LTIuNDRsLS41NS0uMjgtMS42NS0uODJoLS4wN1YweiIvPjxwYXRoIGNsYXNzPSJwcmVmaXhfX3N0MSIgZD0iTTMuMjcgMTguMzJoMS42NXYyLjQ3SDMuMjd6Ii8+PHBhdGggY2xhc3M9InByZWZpeF9fc3QxIiBkPSJNNC45MiA1LjU0VjIuNjVoMzMuODF2MzMuODFINC45MnYtMi44OEgzLjI3djQuNTNoMzcuMTFWMUgzLjI3djQuNTRoMS42NXoiLz48cGF0aCBjbGFzcz0icHJlZml4X19zdDEiIGQ9Ik02LjE1IDMyLjM0djIuODloMzEuMzRWMy44OUg2LjE1djIuODhIMS42MnYxMC4zMWg0LjUzdjVIMS42MnYxMC4yNnptLTIuODgtMi44OWgxLjY1VjI3LjhIMy4yN3YtMS4yM2gxLjY1di0xLjY1SDMuMjd2LTEuMjRINy44di04LjI1SDMuMjdWMTQuMmgxLjY1di0xLjY1SDMuMjd2LTEuMjRoMS42NVY5LjY2SDMuMjdWOC40Mkg3LjhWNS41NGgyOC4wNXYyOEg3Ljh2LTIuODVIMy4yN3pNNDEgMzkuMzVIMi42NUwxIDQwLjE3VjQxaDQxLjY1di0uODNMNDEgMzkuMzV6Ii8+PHBhdGggY2xhc3M9InByZWZpeF9fc3QxIiBkPSJNMjkgMjAuMzhhNy40NSA3LjQ1IDAgMDEtLjIyIDEuNjJsMS40OC44NmE5LjA2IDkuMDYgMCAwMC4zNi0yLjUxIDguOCA4LjggMCAwMC02LjczLTguNTV2MS43MUE3LjE3IDcuMTcgMCAwMTI5IDIwLjM4ek0xNC42OCAyMC4zOGE3LjE2IDcuMTYgMCAwMTUuMDgtNi44NHYtMS43MUE4LjggOC44IDAgMDAxMyAyMC4zOGE5LjA2IDkuMDYgMCAwMC4zNiAyLjUxbDEuNTEtLjg5YTcuNDUgNy40NSAwIDAxLS4xOS0xLjYyek0yMS44MiAyNy41M0E3LjA4IDcuMDggMCAwMTE3IDI1LjU5bC0xLjQ4Ljg2YTguNzYgOC43NiAwIDAwMTIuNzEgMGwtMS41My0uODVhNy4xMyA3LjEzIDAgMDEtNC44OCAxLjkzeiIvPjxwYXRoIGNsYXNzPSJwcmVmaXhfX3N0MSIgZD0iTTIxIDE1LjE1YTUuNjkgNS42OSAwIDAwLTEuMjQuMzUgNS4zMyA1LjMzIDAgMDAtMy4yMyA1LjU3IDUuNjUgNS42NSAwIDAwLjMyIDEuMjRMMTEgMjUuNzFhMTIuNTQgMTIuNTQgMCAwMC44MyAxLjQybDUuODYtMy40YTUuNjYgNS42NiAwIDAwLjk0Ljg5IDUuMzkgNS4zOSAwIDAwNi4zOSAwIDUuNjYgNS42NiAwIDAwLjk0LS44OWw1Ljg2IDMuNGExMi41NCAxMi41NCAwIDAwLjgzLTEuNDJsLTUuODYtMy40YTUuMTUgNS4xNSAwIDAwLjMzLTEuMjQgNS4zMyA1LjMzIDAgMDAtMy4yMy01LjU3IDUuNjkgNS42OSAwIDAwLTEuMjQtLjM1di02LjhIMjF6bTQuNTEgNS4yM2EzLjY5IDMuNjkgMCAxMS0zLjY5LTMuNjQgMy42NiAzLjY2IDAgMDEzLjY5IDMuNjR6Ii8+PGVsbGlwc2UgY2xhc3M9InByZWZpeF9fc3QxIiBjeD0iMjEuODIiIGN5PSIyMC4zOCIgcng9IjIuMjkiIHJ5PSIyLjI3Ii8+PC9zdmc+"); +} + +.oci-vcn, .oci-virtual-cloud-network { + background-image: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA0My41IDQyIj48ZyBmaWxsPSIjZmZmIj48cGF0aCBkPSJNMzEuMiA0MS41Yy0yLjggMC01LjMtMi01LjktNC44aC03LjFjLS42IDIuNy0zIDQuOC01LjkgNC44LTMuMyAwLTYtMi43LTYtNiAwLTIuMSAxLjItNC4xIDMtNS4ybC0yLjItNi43aC0uNmMtMy4zIDAtNi0yLjctNi02czIuNy02IDYtNmMxLjUgMCAyLjkuNSA0IDEuNkwxNi4zIDljLS4zLS44LS41LTEuNi0uNS0yLjUgMC0zLjMgMi43LTYgNi02czYgMi43IDYgNmMwIC44LS4yIDEuNy0uNSAyLjVsNS43IDQuMmMxLjEtMSAyLjUtMS42IDQtMS42IDMuMyAwIDYgMi43IDYgNnMtMi43IDYtNiA2aC0uNmwtMi4yIDYuN2MxLjggMS4xIDMgMy4xIDMgNS4yIDAgMy4zLTIuNyA2LTYgNnoiLz48cGF0aCBkPSJNMjEuNyAxYzMgMCA1LjUgMi41IDUuNSA1LjUgMCAuOS0uMiAxLjgtLjcgMi42bDYuNCA0LjdjMS0xLjEgMi40LTEuNyA0LTEuNyAzIDAgNS41IDIuNSA1LjUgNS41cy0yLjUgNS41LTUuNSA1LjVjLS4zIDAtLjcgMC0xLS4xbC0yLjUgNy41YzEuOC45IDMuMSAyLjggMy4xIDUgMCAzLTIuNSA1LjUtNS41IDUuNS0yLjggMC01LjEtMi4xLTUuNS00LjhoLTcuOWMtLjQgMi43LTIuNyA0LjgtNS41IDQuOC0zIDAtNS41LTIuNS01LjUtNS41IDAtMi4yIDEuMy00LjEgMy4xLTVMNy41IDIzYy0uMy4xLS43LjEtMSAuMS0zIDAtNS41LTIuNS01LjUtNS41czIuNS01LjUgNS41LTUuNWMxLjYgMCAzIC43IDQgMS43bDYuNC00LjdjLS40LS44LS43LTEuNy0uNy0yLjYgMC0zIDIuNS01LjUgNS41LTUuNW0wLTFjLTMuNiAwLTYuNSAyLjktNi41IDYuNSAwIC44LjEgMS42LjQgMi4zbC01LjEgMy43Yy0xLjEtLjktMi42LTEuNC00LTEuNEMyLjkgMTEuMSAwIDE0IDAgMTcuNnMyLjkgNi41IDYuNSA2LjVoLjNsMS45IDZjLTEuOCAxLjItMi45IDMuMi0yLjkgNS40IDAgMy42IDIuOSA2LjUgNi41IDYuNSAyLjkgMCA1LjUtMiA2LjMtNC44aDYuM2MuOCAyLjggMy4zIDQuOCA2LjMgNC44IDMuNiAwIDYuNS0yLjkgNi41LTYuNSAwLTIuMi0xLjEtNC4yLTIuOS01LjRsMS45LTZoLjNjMy42IDAgNi41LTIuOSA2LjUtNi41cy0yLjktNi41LTYuNS02LjVjLTEuNSAwLTIuOS41LTQuMSAxLjRsLTUuMS0zLjdjLjMtLjcuNC0xLjUuNC0yLjMuMS0zLjYtMi45LTYuNS02LjUtNi41eiIvPjwvZz48cGF0aCBkPSJNMzcgMTIuMWMtMS42IDAtMyAuNy00IDEuN2wtNi40LTQuN2MuNC0uOC43LTEuNy43LTIuNiAwLTMtMi41LTUuNS01LjUtNS41cy01LjUgMi41LTUuNSA1LjVjMCAuOS4yIDEuOC43IDIuNmwtNi40IDQuN2MtMS0xLTIuNC0xLjctNC0xLjctMyAwLTUuNSAyLjUtNS41IDUuNXMyLjUgNS41IDUuNSA1LjVjLjMgMCAuNyAwIDEtLjFsMi40IDcuNWMtMS44LjktMy4xIDIuOC0zLjEgNSAwIDMgMi41IDUuNSA1LjUgNS41IDIuOCAwIDUuMS0yLjEgNS41LTQuOGg3LjljLjQgMi43IDIuNyA0LjggNS41IDQuOCAzIDAgNS41LTIuNSA1LjUtNS41IDAtMi4yLTEuMy00LjEtMy4xLTVMMzYgMjNjLjMuMS43LjEgMSAuMSAzIDAgNS41LTIuNSA1LjUtNS41UzQwIDEyLjEgMzcgMTIuMXptLTUuOCAyNy40Yy0yLjIgMC00LTEuOC00LTRzMS44LTQgNC00IDQgMS44IDQgNC0xLjggNC00IDR6bS0xMy40LTQuN2MtLjItMS4zLS44LTIuNC0xLjctMy4zbDMtNC4yYy44LjQgMS43LjcgMi42LjcuOSAwIDEuOC0uMiAyLjYtLjdsMyA0LjJjLS45LjgtMS41IDItMS43IDMuM2gtNy44em0tOS41LjdjMC0yLjIgMS44LTQgNC00czQgMS44IDQgNC0xLjggNC00IDQtNC0xLjgtNC00em0tMS44LTIyYzIuMiAwIDQgMS44IDQgNHMtMS44IDQtNCA0LTQtMS44LTQtNCAxLjgtNCA0LTR6bTExLjItN2MwLTIuMiAxLjgtNCA0LTRzNCAxLjggNCA0LTEuOCA0LTQgNC00LTEuOC00LTR6bTEzLjkgMTJsLTQuOSAxLjZjLS44LTEuNi0yLjQtMi44LTQuMi0zLjF2LTVjMS4zLS4yIDIuNC0uOCAzLjItMS43bDYuNCA0LjdjLS40LjgtLjcgMS43LS43IDIuNi4xLjMuMS42LjIuOXptLTUuOCA0YzAgMi4yLTEuOCA0LTQgNHMtNC0xLjgtNC00IDEuOC00IDQtNCA0IDEuNyA0IDR6TTIxIDEydjVjLTEuOS4zLTMuNSAxLjQtNC4yIDMuMWwtNC45LTEuNmMuMS0uMy4xLS42LjEtMSAwLS45LS4yLTEuOC0uNy0yLjZsNi40LTQuN2MuOSAxIDIgMS42IDMuMyAxLjh6bS05LjUgNy45bDQuOSAxLjZjLS4xLjMtLjEuNi0uMSAxIDAgMS42LjcgMyAxLjcgNGwtMyA0LjJjLS44LS40LTEuNy0uNy0yLjYtLjctLjMgMC0uNyAwLTEgLjFMOSAyMi42YzEtLjYgMS45LTEuNSAyLjUtMi43ek0zMS4yIDMwYy0uOSAwLTEuOC4yLTIuNi43bC0zLTQuMmMxLjEtMSAxLjctMi40IDEuNy00IDAtLjMgMC0uNy0uMS0xbDQuOS0xLjZjLjUgMS4xIDEuNSAyIDIuNiAyLjZMMzIuMiAzMGgtMXpNMzMgMTcuNmMwLTIuMiAxLjgtNCA0LTRzNCAxLjggNCA0LTEuOCA0LTQgNC00LTEuOC00LTR6IiBmaWxsPSIjYmI1MDFjIi8+PC9zdmc+"); +} + +/* +** Background Colours +*/ + +/* Infrastructure */ +.oci-instance-background-colour, +.oci-mount-target-background-colour { + background-color: var(--svg-infrastructure-resources-background-colour); +} + +/* Database */ +.oci-autonomous-database-background-colour, +.oci-db-system-background-colour, +.oci-mysql-db-system-background-colour, +.oci-nosql-table-background-colour { + background-color: var(--svg-database-resources-background-colour); +} + +/* Storage */ +.oci-boot-volume-background-colour, +.oci-bucket-background-colour, +.oci-file-system-background-colour, +.oci-volume-background-colour { + background-color: var(--svg-storage-resources-background-colour); +} + +/* Networking */ +.oci-dhcp-options-background-colour, +.oci-drg-attachment-background-colour, +.oci-ipsec-background-colour, +.oci-load-balancer-background-colour, +.oci-load-balancer-backend-set-background-colour, +.oci-load-balancer-listener-background-colour, +.oci-network-load-balancer-background-colour, +.oci-network-load-balancer-backend-set-background-colour, +.oci-network-security-group-background-colour, +.oci-remote-peering-connection-background-colour, +.oci-route-table-background-colour, +.oci-security-list-background-colour, +.oci-subnet-background-colour, +.oci-vcn-background-colour { + background-color: var(--svg-network-resources-background-colour); +} + +/* Gateways */ +.oci-drg-background-colour, +.oci-internet-gateway-background-colour, +.oci-local-peering-gateway-background-colour, +.oci-nat-gateway-background-colour, +.oci-service-gateway-background-colour { + background-color: var(--svg-gateway-resources-background-colour); +} + +/* Identity and Security */ +.oci-dynamic-group-background-colour, +.oci-group-background-colour, +.oci-key-background-colour, +.oci-policy-background-colour, +.oci-user-background-colour, +.oci-vault-background-colour { + background-color: var(--svg-identity-resources-background-colour); +} + +/* Analytics */ +.oci-analytics-instance-background-colour { + background-color: var(--svg-analytics-resources-background-colour); +} +`, + + 'theme.css': String.raw`/* Copyright (c) 2020, Oracle and/or its affiliates. All rights reserved. */ +/* Licensed under the Universal Permissive License v 1.0 as shown at https://oss.oracle.com/licenses/upl. */ +/* +** SVG Look & Feel Variables +*/ +:root { + --console-background-colour: #ffffff; + + --dialog-background-colour: #ffffff; + --dialog-border-colour: #131243; + --dialog-title-background-colour: #ffffff; + --dialog-title-colour: black; + --dialog-body-background-colour: #ffffff; + --dialog-body-colour: black; + --dialog-footer-background-colour: #ffffff; + --dialog-footer-colour: #161513; + --dialog-input-border-colour: #131243; + --dialog-input-font-family: Helvetica Neue, Helvetica, Arial, sans-serif; + --dialog-input-font-size: smaller; + --dialog-highlight-colour: #e6e8f4; +} + +/* +** Standard Element +*/ + +details > summary.summary-background { + background-image: url("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjAiIGhlaWdodD0iMjAiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGcgdHJhbnNmb3JtPSJtYXRyaXgoLTEgMCAwIDEgMjAgMCkiPjxlbGxpcHNlIGZpbGw9Im5vbmUiIHN0cm9rZT0iIzAwMCIgY3g9IjYuMTEiIGN5PSIzLjU1IiByeD0iMi4xMSIgcnk9IjIuMTUiLz48ZWxsaXBzZSBmaWxsPSJub25lIiBzdHJva2U9IiMwMDAiIGN4PSI2LjExIiBjeT0iMTUuNTUiIHJ4PSIyLjExIiByeT0iMi4xNSIvPjxjaXJjbGUgZmlsbD0ibm9uZSIgc3Ryb2tlPSIjMDAwIiBjeD0iMTMuMTUiIGN5PSI5LjU1IiByPSIyLjE1Ii8+PHBhdGggZD0iTTEgM2gzdjFIMXpNMTAgM2g4djFoLTh6TTEgOWg4djFIMXpNMTUgOWgzdjFoLTN6TTEgMTVoM3YxSDF6TTEwIDE1aDh2MWgtOHoiLz48L2c+PC9zdmc+"); +} + +details[open] > summary.summary-background { + background-image: url("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjAiIGhlaWdodD0iMjAiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGVsbGlwc2UgZmlsbD0ibm9uZSIgc3Ryb2tlPSIjMDAwIiBjeD0iNi4xMSIgY3k9IjMuNTUiIHJ4PSIyLjExIiByeT0iMi4xNSIvPjxlbGxpcHNlIGZpbGw9Im5vbmUiIHN0cm9rZT0iIzAwMCIgY3g9IjYuMTEiIGN5PSIxNS41NSIgcng9IjIuMTEiIHJ5PSIyLjE1Ii8+PGNpcmNsZSBmaWxsPSJub25lIiBzdHJva2U9IiMwMDAiIGN4PSIxMy4xNSIgY3k9IjkuNTUiIHI9IjIuMTUiLz48cGF0aCBkPSJNMSAzaDN2MUgxek0xMCAzaDh2MWgtOHpNMSA5aDh2MUgxek0xNSA5aDN2MWgtM3pNMSAxNWgzdjFIMXpNMTAgMTVoOHYxaC04eiIvPjwvc3ZnPg=="); +} + +/* +** Icons +*/ +.palette { + background-image: url("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjAiIGhlaWdodD0iMjAiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0zLjI1IDEwYTYuNzUgNi43NSAwIDExNC42NDYgNi40MTZjLjI0LS41NzMuMzU0LTEuMTk5LjM1NC0xLjgzM2E0LjUgNC41IDAgMDAtNS00LjQ3MlYxMHpNMTAgMS43NUE4LjI1IDguMjUgMCAwMDEuNzUgMTB2Mi4xMDdsMS0uMzUzYTMgMyAwIDAxNCAyLjgzYzAgLjY4OC0uMTg3IDEuMzAzLS41MjggMS43NzRsLS41MzMuNzM2LjgyMi4zODRBOC4yNSA4LjI1IDAgMTAxMCAxLjc1ek04LjMzMyA4LjMzM2ExLjY2NyAxLjY2NyAwIDEwMC0zLjMzMyAxLjY2NyAxLjY2NyAwIDAwMCAzLjMzM3ptNi42NjcgMGExLjY2NyAxLjY2NyAwIDExLTMuMzMzIDAgMS42NjcgMS42NjcgMCAwMTMuMzMzIDB6TTExLjY2NyAxNWExLjY2NyAxLjY2NyAwIDEwMC0zLjMzMyAxLjY2NyAxLjY2NyAwIDAwMCAzLjMzM3oiIGZpbGw9IiMxNjE1MTMiLz48L3N2Zz4="); +} + +.palette-list { + background-image: url("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTgiIGhlaWdodD0iMTgiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTcuMzMzIDMuMTY3aDEwTTcuMzMzIDloMTBtLTEwIDUuODMzaDEwTTQuODMzIDMuMTY3YTEuNjY3IDEuNjY3IDAgMTEtMy4zMzMgMCAxLjY2NyAxLjY2NyAwIDAxMy4zMzMgMHptMCA1LjgzM0ExLjY2NyAxLjY2NyAwIDExMS41IDlhMS42NjcgMS42NjcgMCAwMTMuMzMzIDB6bTAgNS44MzNhMS42NjcgMS42NjcgMCAxMS0zLjMzMyAwIDEuNjY3IDEuNjY3IDAgMDEzLjMzMyAweiIgc3Ryb2tlPSIjMTYxNTEzIiBzdHJva2Utd2lkdGg9IjEuODc1Ii8+PC9zdmc+"); +} + +.palette-icons { + background-image: url("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTgiIGhlaWdodD0iMTgiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTcuMzMzIDEuNUgxLjV2NS44MzNoNS44MzNWMS41ek03LjMzMyAxMC42NjdIMS41VjE2LjVoNS44MzN2LTUuODMzek0xNi41IDEuNWgtNS44MzN2NS44MzNIMTYuNVYxLjV6TTE2LjUgMTAuNjY3aC01LjgzM1YxNi41SDE2LjV2LTUuODMzeiIgc3Ryb2tlPSIjMjIyIiBzdHJva2Utd2lkdGg9IjEuNSIvPjwvc3ZnPg=="); +} + +.explorer { + background-image: url("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTgiIGhlaWdodD0iMTgiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTQgNC44MzNoMi41TTQgOWgyLjVNNCAxMy4xNjdoMi41bTEuNjY3LTguMzM0SDE0TTguMTY3IDlIMTRtLTUuODMzIDQuMTY3SDE0TTEuNSAxLjVoMTV2MTVoLTE1di0xNXoiIHN0cm9rZT0iIzE2MTUxMyIgc3Ryb2tlLXdpZHRoPSIxLjUiLz48L3N2Zz4="); +} + +.properties { + background-image: url("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjAiIGhlaWdodD0iMjAiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTIuNSAyLjV2LS43NWgtLjc1di43NWguNzV6bTAgMTVoLS43NXYuNzVoLjc1di0uNzV6bTguMzMzLTE1bC41My0uNTMtLjIxOS0uMjJoLS4zMXYuNzV6bTUgNXYuNzVhLjc1Ljc1IDAgMDAuNTMtMS4yOGwtLjUzLjUzem0tNSAwaC0uNzV2Ljc1aC43NVY3LjV6bTAgNy41bC0uNTMtLjUzLS4yMi4yMlYxNWguNzV6bTAgMi41aC0uNzV2Ljc1aC43NXYtLjc1em0yLjUgMHYuNzVoLjMxMWwuMjItLjIyLS41My0uNTN6bTQuMTY3LTQuMTY3bC41My41M2EuNzUuNzUgMCAwMDAtMS4wNmwtLjUzLjUzem0tMi41LTIuNWwuNTMtLjUzYS43NS43NSAwIDAwLTEuMDYgMGwuNTMuNTN6TTEuNzUgMi41djE1aDEuNXYtMTVoLTEuNXptLjc1IDE1Ljc1aDUuODMzdi0xLjVIMi41djEuNXptMC0xNWg4LjMzM3YtMS41SDIuNXYxLjV6bTcuODAzLS4yMmw1IDUgMS4wNi0xLjA2LTUtNS0xLjA2IDEuMDZ6bTUuNTMgMy43MmgtNXYxLjVoNXYtMS41em0tNC4yNS43NXYtNWgtMS41djVoMS41em0tMS41IDcuNXYyLjVoMS41VjE1aC0xLjV6bS43NSAzLjI1aDIuNXYtMS41aC0yLjV2MS41em0zLjAzLS4yMmw0LjE2Ny00LjE2Ni0xLjA2LTEuMDYxLTQuMTY3IDQuMTY3IDEuMDYgMS4wNnptNC4xNjctNS4yMjdsLTIuNS0yLjUtMS4wNiAxLjA2IDIuNSAyLjUgMS4wNi0xLjA2em0tMy41Ni0yLjVsLTQuMTY3IDQuMTY3IDEuMDYgMS4wNiA0LjE2Ny00LjE2Ni0xLjA2LTEuMDYxeiIgZmlsbD0iIzIyMiIvPjwvc3ZnPg=="); +} + +.zoom-in { + background-image: url("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTgiIGhlaWdodD0iMTgiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTguMTY3IDExLjVWNC44MzNNNC44MzMgOC4xNjdIMTEuNW01IDguMzMzbC0zLjYtMy42MzltMS45MzMtNC42OTRhNi42NjcgNi42NjcgMCAxMS0xMy4zMzMgMCA2LjY2NyA2LjY2NyAwIDAxMTMuMzMzIDB6IiBzdHJva2U9IiMxNjE1MTMiIHN0cm9rZS13aWR0aD0iMS41Ii8+PC9zdmc+"); +} + +.zoom-121 { + background-image: url("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjAiIGhlaWdodD0iMjAiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTEzIDloMG02IDEwbC00LjM0LTQuMzQ3TTE3IDlBOCA4IDAgMTExIDlhOCA4IDAgMDExNiAweiIgc3Ryb2tlPSIjMTYxNTEzIiBzdHJva2Utd2lkdGg9IjIiLz48L3N2Zz4="); +} + +.zoom-out { + background-image: url("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTgiIGhlaWdodD0iMTgiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTQuODMzIDguMTY3SDExLjVtNSA4LjMzM2wtMy42MTYtMy42MjJtMS45NS00LjcxMWE2LjY2NyA2LjY2NyAwIDExLTEzLjMzNCAwIDYuNjY3IDYuNjY3IDAgMDExMy4zMzMgMHoiIHN0cm9rZT0iIzE2MTUxMyIgc3Ryb2tlLXdpZHRoPSIxLjUiLz48L3N2Zz4="); +} + +.validate { + background-image: url("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNDAiIGhlaWdodD0iNDAiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTEwIDIwbDYgNiAxNC0xNG04IDhjMCA5Ljk0MS04LjA1OSAxOC0xOCAxOFMyIDI5Ljk0MSAyIDIwIDEwLjA1OSAyIDIwIDJzMTggOC4wNTkgMTggMTh6IiBzdHJva2U9IiMxNjE1MTMiIHN0cm9rZS13aWR0aD0iNCIvPjwvc3ZnPg=="); +} + +.threedotmenu { + background-image: url("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjAiIGhlaWdodD0iMjAiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0xMCAxNWExLjY2NyAxLjY2NyAwIDExMCAzLjMzM0ExLjY2NyAxLjY2NyAwIDAxMTAgMTV6bTEuNjY3LTVhMS42NjcgMS42NjcgMCAxMC0zLjMzNCAwIDEuNjY3IDEuNjY3IDAgMDAzLjMzNCAwem0wLTYuNjY3YTEuNjY3IDEuNjY3IDAgMTAtMy4zMzQgMCAxLjY2NyAxLjY2NyAwIDAwMy4zMzQgMHoiIGZpbGw9IiMyMjIiLz48L3N2Zz4="); +} + +.cost-estimate { + background-image: url("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNDAiIGhlaWdodD0iNDAiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTI4IDEySDE2YTQgNCAwIDAwMCA4aDhhNCA0IDAgMDEwIDhIMTJtOC0yMHYyNG0xOC0xMmMwIDkuOTQxLTguMDU5IDE4LTE4IDE4UzIgMjkuOTQxIDIgMjAgMTAuMDU5IDIgMjAgMnMxOCA4LjA1OSAxOCAxOHoiIHN0cm9rZT0iIzE2MTUxMyIgc3Ryb2tlLXdpZHRoPSI0Ii8+PC9zdmc+"); +} + +.eye-show { + background-image: url("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNDIiIGhlaWdodD0iMzMiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTIxIDJDMTIuMiAyIDUuMzMzIDExLjMzMyAzIDE2YzUuNiAxMS4yIDE0LjMzMyAxNCAxOCAxNCA4LjguOCAxNS42NjctOSAxOC0xNEMzNC4yIDQuOCAyNSAyIDIxIDJ6IiBzdHJva2U9IiMxNjE1MTMiIHN0cm9rZS13aWR0aD0iNCIvPjxwYXRoIGQ9Ik0yNyAxNmE2IDYgMCAxMS0xMiAwIDYgNiAwIDAxMTIgMHoiIHN0cm9rZT0iIzE2MTUxMyIgc3Ryb2tlLXdpZHRoPSI0Ii8+PC9zdmc+"); +} + +.eye-hide { + background-image: url("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNDQiIGhlaWdodD0iNDQiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTE4IDguNjM4QTEzLjE0NiAxMy4xNDYgMCAwMTIyIDhjNCAwIDEzLjIgMi43OTUgMTggMTMuOTc3LS44MTYgMS43NDYtMi4xODYgNC4wNzctNCA2LjMzOG0tMi4yNzcgMi41MzNDMzAuNTY4IDMzLjk2IDI2LjU0MiAzNi4zNjYgMjIgMzUuOTU0Yy0zLjY2NyAwLTEyLjQtMi43OTYtMTgtMTMuOTc3IDEuMzM4LTIuNjczIDQuMTY5LTYuODc4IDgtOS45NzltMTQuMjQzIDE0LjI0NWE2IDYgMCAxMS04LjQ4Ni04LjQ4Nk0yIDJsNDAgNDAiIHN0cm9rZT0iIzE2MTUxMyIgc3Ryb2tlLXdpZHRoPSI0Ii8+PC9zdmc+"); +} + +.add-plus { + background-image: url("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNDAiIGhlaWdodD0iNDAiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTIwIDB2NDBtMjAtMjBIMCIgc3Ryb2tlPSIjMTYxNTEzIiBzdHJva2Utd2lkdGg9IjQiLz48L3N2Zz4="); +} + +.left-palette { + background-image: url("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNDAiIGhlaWdodD0iNDAiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTM4IDE0SDJtMTIgMjRWMTRNMiAyaDM2djM2SDJWMnoiIHN0cm9rZT0iIzE2MTUxMyIgc3Ryb2tlLXdpZHRoPSI0Ii8+PC9zdmc+"); +} + +.library { + background-image: url("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNDgiIGhlaWdodD0iNDgiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTE2IDZINnYzNmgxMG0wLTM2djM2bTAtMzZoMTBNMTYgNDJoMTBWNm0wIDBoMTBsNiAzNkgzMkwyNiA2em0tMTAgOGgxMHYyMEgxNm0wLTIwdjIwbTAtMjBINnYyMGgxMCIgc3Ryb2tlPSIjMTYxNTEzIiBzdHJva2Utd2lkdGg9IjQiLz48L3N2Zz4="); +} + +.padlock-open { + background-image: url("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjQiIGhlaWdodD0iMjQiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTEyIDJhMyAzIDAgMDAtMyAzdjQuOTI5aDExdjEyLjA2SDRWOS45MjhoM1Y1YTUgNSAwIDAxMTAgMHYxaC0yVjVhMyAzIDAgMDAtMy0zem0tNiA5LjkyOXY4LjA2aDEydi04LjA2SDZ6IiBmaWxsPSIjMTYxNTEzIi8+PHBhdGggZD0iTTEwIDE3di0yaDR2MmgtNHoiIGZpbGw9IiMxNjE1MTMiLz48L3N2Zz4="); +} + +.padlock-closed { + background-image: url("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjQiIGhlaWdodD0iMjQiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTEyIDRhMyAzIDAgMDEzIDN2M0g5VjdhMyAzIDAgMDEzLTN6bTUgNlY3QTUgNSAwIDAwNyA3djNINHYxMmgxNlYxMGgtM3pNNiAxMmgxMnY4SDZ2LTh6IiBmaWxsPSIjMTYxNTEzIi8+PHBhdGggZD0iTTExIDE0aDJ2NGgtMnYtNHoiIGZpbGw9IiMxNjE1MTMiLz48L3N2Zz4="); +} + +.add-property { + background-image: url("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjAiIGhlaWdodD0iMjAiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTUgMTBoMTBtLTUtNXYxME0xIDFoMTh2MThIMVYxeiIgc3Ryb2tlPSIjMDQ3NTBhIiBzdHJva2Utd2lkdGg9IjIiLz48L3N2Zz4="); +} + +.delete-property { + background-image: url("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjAiIGhlaWdodD0iMjAiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTUuNzU3IDUuNzU3bDguNDg2IDguNDg2bTAtOC40ODZsLTguNDg2IDguNDg2TTEgMWgxOHYxOEgxVjF6IiBzdHJva2U9IiNiODEyMTIiIHN0cm9rZS13aWR0aD0iMiIvPjwvc3ZnPg=="); +} + +.delete-layer { + background-image: url("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjAiIGhlaWdodD0iMjAiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTUuNzU3IDUuNzU3bDguNDg2IDguNDg2bTAtOC40ODZsLTguNDg2IDguNDg2TTEgMWgxOHYxOEgxVjF6IiBzdHJva2U9IiNiODEyMTIiIHN0cm9rZS13aWR0aD0iMiIvPjwvc3ZnPg=="); +} + +.three-dot-menu { + background-image: url("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjAiIGhlaWdodD0iMjAiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0xMCAxNWExLjY2NyAxLjY2NyAwIDExMCAzLjMzM0ExLjY2NyAxLjY2NyAwIDAxMTAgMTV6bTEuNjY3LTVhMS42NjcgMS42NjcgMCAxMC0zLjMzNCAwIDEuNjY3IDEuNjY3IDAgMDAzLjMzNCAwem0wLTYuNjY3YTEuNjY3IDEuNjY3IDAgMTAtMy4zMzQgMCAxLjY2NyAxLjY2NyAwIDAwMy4zMzQgMHoiIGZpbGw9IiMyMjIiLz48L3N2Zz4="); +} + +.settings { + background-image: url("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTgiIGhlaWdodD0iMTgiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggY2xpcC1ydWxlPSJldmVub2RkIiBkPSJNMTYuNSAxMC42NjdWNy4zMzNoLTEuOTEyYTUuNzc4IDUuNzc4IDAgMDAtLjQ1Ni0xLjEwOGwxLjM1LTEuMzUtMi4zNTctMi4zNTctMS4zNSAxLjM1Yy0uMzUtLjE4OS0uNzItLjM0MS0xLjEwOC0uNDU2VjEuNUg3LjMzM3YxLjkxMmMtLjM4Ny4xMTUtLjc1OS4yNjctMS4xMDguNDU2bC0xLjM1LTEuMzUtMi4zNTcgMi4zNTcgMS4zNSAxLjM1Yy0uMTg5LjM1LS4zNDEuNzItLjQ1NiAxLjEwOEgxLjV2My4zMzRoMS45MTJjLjExNS4zODcuMjY3Ljc1OS40NTYgMS4xMDhsLTEuMzUgMS4zNSAyLjM1NyAyLjM1NyAxLjM1LTEuMzVjLjM1LjE4OS43Mi4zNDEgMS4xMDguNDU2VjE2LjVoMy4zMzR2LTEuOTEyYy4zODctLjExNS43NTktLjI2NyAxLjEwOC0uNDU2bDEuMzUgMS4zNSAyLjM1Ny0yLjM1Ny0xLjM1LTEuMzVjLjE5LS4zNS4zNDEtLjcyLjQ1Ny0xLjEwOEgxNi41eiIgc3Ryb2tlPSIjMTYxNTEzIiBzdHJva2Utd2lkdGg9IjEuNSIgc3Ryb2tlLW1pdGVybGltaXQ9IjEwIi8+PHBhdGggZD0iTTkgMTAuNjY3YTEuNjY3IDEuNjY3IDAgMTAwLTMuMzM0IDEuNjY3IDEuNjY3IDAgMDAwIDMuMzM0eiIgc3Ryb2tlPSIjMTYxNTEzIiBzdHJva2Utd2lkdGg9IjEuNSIgc3Ryb2tlLW1pdGVybGltaXQ9IjEwIi8+PC9zdmc+"); +} + +.sort-ascending { + background-image: url("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNDgiIGhlaWdodD0iNDgiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTM2IDE4TDI0IDMwIDEyIDE4IiBzdHJva2U9IiMxNjE1MTMiIHN0cm9rZS13aWR0aD0iNCIvPjwvc3ZnPg=="); +} + +.sort-descending { + background-image: url("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNDgiIGhlaWdodD0iNDgiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTEyIDMwbDEyLTEyIDEyIDEyIiBzdHJva2U9IiMxNjE1MTMiIHN0cm9rZS13aWR0aD0iNCIvPjwvc3ZnPg=="); +} + +.ocd-design-modified { + background-image: url("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNDgiIGhlaWdodD0iNDgiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTE2IDE0Yy0zIDIuNjY3LTcuMiAxMC40IDAgMjBtLTQuNDM0LTI0Yy00LjIgMy43MzMtMTAuMDggMTQuNTYgMCAyOE0zMiAxNGMzIDIuNjY3IDcuMiAxMC40IDAgMjBtNC40MzQtMjRjNC4yIDMuNzMzIDEwLjA4IDE0LjU2IDAgMjhNMjggMjRhNCA0IDAgMTEtOCAwIDQgNCAwIDAxOCAweiIgc3Ryb2tlPSIjMDQ0MGMwIiBzdHJva2Utd2lkdGg9IjQiLz48L3N2Zz4=") +} + +.ocd-validation-ok { + background-image: url("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNDgiIGhlaWdodD0iNDgiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTggMjRING00MCAwaC00TTI0IDQwdjRtMC00MHY0bS0xMiA0TDggOG0yOCA0bDQtNG0tNCAyOGw0IDRtLTI4LTRsLTQgNG0yNi0xNmMwIDUuNTIzLTQuNDc3IDEwLTEwIDEwcy0xMC00LjQ3Ny0xMC0xMCA0LjQ3Ny0xMCAxMC0xMCAxMCA0LjQ3NyAxMCAxMHoiIHN0cm9rZT0iIzAxNzEwMSIgc3Ryb2tlLXdpZHRoPSI0Ii8+PC9zdmc+"); +} + +.ocd-validation-warning { + background-image: url("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNDgiIGhlaWdodD0iNDgiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTM0IDMwaDRhNiA2IDAgMTEwIDEySDEyYTggOCAwIDAxLTgtOGMwLTMuNzc2IDIuNjI0LTYuOTIyIDYuMTQ0LTcuNzYyQzEwLjk5OCAyMC40NDggMTUuOTcyIDE2IDIyIDE2YzYuNjI2IDAgMTIgNS4zNzIgMTIgMTJ2MnptMCAwaC0yYTYgNiAwIDAwLTYgNm0xNC0xNGg2bS04LTZsNi00bS0xMCAwbDQtNm0tMTAgNFY0IiBzdHJva2U9IiNiYzQ0MDgiIHN0cm9rZS13aWR0aD0iNCIvPjwvc3ZnPg=="); +} + +.ocd-validation-error { + background-image: url("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNDgiIGhlaWdodD0iNDgiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTEyIDMyYTggOCAwIDAxLTgtOGMwLTMuNzc2IDIuNjI0LTYuOTIyIDYuMTQ0LTcuNzYyQzEwLjk5OCAxMC40NDggMTUuOTcyIDYgMjIgNmM2LjYyNiAwIDEyIDUuMzcyIDEyIDEydjJoNGE2IDYgMCAxMTAgMTJtLTE0LThsLTYgMTBoMTJsLTYgMTAiIHN0cm9rZT0iIzkwMDIwMiIgc3Ryb2tlLXdpZHRoPSI0Ii8+PC9zdmc+"); +} + +.ocd-panel-collapse-left { + background-image: url("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNDgiIGhlaWdodD0iNDgiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTYgNmgzNnYzNkg2TTYgNnYzNk02IDZoMTJ2MzZINm0yNi0xMmwtNi02IDYtNiIgc3Ryb2tlPSIjMTYxNTEzIiBzdHJva2Utd2lkdGg9IjQiIHN0cm9rZS1taXRlcmxpbWl0PSIxMCIvPjwvc3ZnPg=="); +} + +.ocd-panel-collapse-right { + background-image: url("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNDgiIGhlaWdodD0iNDgiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTQyIDQySDZWNmgzNm0wIDM2VjZtMCAzNkgzMFY2aDEyTTE2IDE4bDYgNi02IDYiIHN0cm9rZT0iIzE2MTUxMyIgc3Ryb2tlLXdpZHRoPSI0IiBzdHJva2UtbWl0ZXJsaW1pdD0iMTAiLz48L3N2Zz4="); +} + +.ocd-panel-collapse-both { + background-image: url("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNDgiIGhlaWdodD0iNDgiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTYgMTZWNmgxMG0xNiAwaDEwdjEwbTAgMTZ2MTBIMzJtLTE2IDBINlYzMiIgc3Ryb2tlPSIjMTYxNTEzIiBzdHJva2Utd2lkdGg9IjQiLz48L3N2Zz4="); +} + +.ocd-panel-expand-left { + background-image: url("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNDgiIGhlaWdodD0iNDgiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTYgNmgzNnYzNkg2TTYgNnYzNk02IDZoMTJ2MzZINm0yMC0yNGw2IDYtNiA2IiBzdHJva2U9IiMxNjE1MTMiIHN0cm9rZS13aWR0aD0iNCIgc3Ryb2tlLW1pdGVybGltaXQ9IjEwIi8+PC9zdmc+"); +} + +.ocd-panel-expand-right { + background-image: url("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNDgiIGhlaWdodD0iNDgiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTQyIDQySDZWNmgzNm0wIDM2VjZtMCAzNkgzMFY2aDEyTTIyIDMwbC02LTYgNi02IiBzdHJva2U9IiMxNjE1MTMiIHN0cm9rZS13aWR0aD0iNCIgc3Ryb2tlLW1pdGVybGltaXQ9IjEwIi8+PC9zdmc+"); +} + +.ocd-panel-expand-both { + background-image: url("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNDgiIGhlaWdodD0iNDgiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTE0IDR2MTBINE0zNCA0djEwaDEwbTAgMjBIMzR2MTBNNCAzNGgxMHYxMCIgc3Ryb2tlPSIjMTYxNTEzIiBzdHJva2Utd2lkdGg9IjQiLz48L3N2Zz4="); +} + +/* +** Element Themes +*/ + +.ocd-designer-tab-bar-theme { + background-color: white; +} + +.ocd-designer-tab-theme { + background-color: white; +} + +.ocd-designer-active-tab-theme { + background-color: #d1d1d4; +} + +.ocd-properties-panel-theme { + background-color: white; +} + +details > summary.summary-background { + background-image: url("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjAiIGhlaWdodD0iMjAiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGcgdHJhbnNmb3JtPSJtYXRyaXgoLTEgMCAwIDEgMjAgMCkiPjxlbGxpcHNlIGZpbGw9Im5vbmUiIHN0cm9rZT0iIzAwMCIgY3g9IjYuMTEiIGN5PSIzLjU1IiByeD0iMi4xMSIgcnk9IjIuMTUiLz48ZWxsaXBzZSBmaWxsPSJub25lIiBzdHJva2U9IiMwMDAiIGN4PSI2LjExIiBjeT0iMTUuNTUiIHJ4PSIyLjExIiByeT0iMi4xNSIvPjxjaXJjbGUgZmlsbD0ibm9uZSIgc3Ryb2tlPSIjMDAwIiBjeD0iMTMuMTUiIGN5PSI5LjU1IiByPSIyLjE1Ii8+PHBhdGggZD0iTTEgM2gzdjFIMXpNMTAgM2g4djFoLTh6TTEgOWg4djFIMXpNMTUgOWgzdjFoLTN6TTEgMTVoM3YxSDF6TTEwIDE1aDh2MWgtOHoiLz48L2c+PC9zdmc+"); +} + +details[open] > summary.summary-background { + background-image: url("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjAiIGhlaWdodD0iMjAiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGVsbGlwc2UgZmlsbD0ibm9uZSIgc3Ryb2tlPSIjMDAwIiBjeD0iNi4xMSIgY3k9IjMuNTUiIHJ4PSIyLjExIiByeT0iMi4xNSIvPjxlbGxpcHNlIGZpbGw9Im5vbmUiIHN0cm9rZT0iIzAwMCIgY3g9IjYuMTEiIGN5PSIxNS41NSIgcng9IjIuMTEiIHJ5PSIyLjE1Ii8+PGNpcmNsZSBmaWxsPSJub25lIiBzdHJva2U9IiMwMDAiIGN4PSIxMy4xNSIgY3k9IjkuNTUiIHI9IjIuMTUiLz48cGF0aCBkPSJNMSAzaDN2MUgxek0xMCAzaDh2MWgtOHpNMSA5aDh2MUgxek0xNSA5aDN2MWgtM3pNMSAxNWgzdjFIMXpNMTAgMTVoOHYxaC04eiIvPjwvc3ZnPg=="); +} +` +} + +export default svgCssData + diff --git a/ocd/packages/desktop/src/facade/OcdCacheFacade.ts b/ocd/packages/desktop/src/facade/OcdCacheFacade.ts index 261cd89f6..e5a4835a4 100644 --- a/ocd/packages/desktop/src/facade/OcdCacheFacade.ts +++ b/ocd/packages/desktop/src/facade/OcdCacheFacade.ts @@ -11,9 +11,9 @@ import { OcdCache } from "../components/OcdCache" export namespace OcdCacheFacade { export const loadCache = (): Promise => { - return window.ocdAPI ? window.ocdAPI.loadCache() : new Promise((resolve, reject) => {reject('Load Cache Config: Currently Not Implemented')}) + return window.ocdAPI ? window.ocdAPI.loadCache() : Promise.reject(new Error('Currently Not Implemented')) } export const saveCache = (cache: OcdCache): Promise => { - return window.ocdAPI ? window.ocdAPI.saveCache(cache) : new Promise((resolve, reject) => {reject('Save Cache Config: Currently Not Implemented')}) + return window.ocdAPI ? window.ocdAPI.saveCache(cache) : Promise.reject(new Error('Currently Not Implemented')) } } diff --git a/ocd/packages/desktop/src/facade/OcdConfigFacade.ts b/ocd/packages/desktop/src/facade/OcdConfigFacade.ts index 2b8ec7c54..3b52e62d5 100644 --- a/ocd/packages/desktop/src/facade/OcdConfigFacade.ts +++ b/ocd/packages/desktop/src/facade/OcdConfigFacade.ts @@ -11,9 +11,9 @@ import { OcdConsoleConfiguration } from "../components/OcdConsoleConfiguration" export namespace OcdConfigFacade { export const loadConsoleConfig = (): Promise => { - return window.ocdAPI ? window.ocdAPI.loadConsoleConfig() : new Promise((resolve, reject) => {reject('Load Console Config: Currently Not Implemented')}) + return window.ocdAPI ? window.ocdAPI.loadConsoleConfig() : Promise.reject(new Error('Currently Not Implemented')) } export const saveConsoleConfig = (config: OcdConsoleConfiguration): Promise => { - return window.ocdAPI ? window.ocdAPI.saveConsoleConfig(config) : new Promise((resolve, reject) => {reject('Save Console Config: Currently Not Implemented')}) + return window.ocdAPI ? window.ocdAPI.saveConsoleConfig(config) : Promise.reject(new Error('Currently Not Implemented')) } } diff --git a/ocd/packages/desktop/src/facade/OcdDesignFacade.ts b/ocd/packages/desktop/src/facade/OcdDesignFacade.ts index d5855b34b..d911484d5 100644 --- a/ocd/packages/desktop/src/facade/OcdDesignFacade.ts +++ b/ocd/packages/desktop/src/facade/OcdDesignFacade.ts @@ -14,30 +14,23 @@ export namespace OcdDesignFacade { export const loadDesign = (filename: string): Promise => { return window.ocdAPI ? window.ocdAPI.loadDesign(filename) : OcdDesignerBrowserActions.loadDesign(filename) } - export const saveDesign = (design: OcdDesign, filename: string): Promise => { + export const saveDesign = (design: OcdDesign, filename: string, suggestedFilename: string = ''): Promise => { console.debug('OcdDesignFacade: saveDesign', filename, JSON.stringify(design, null, 2)) - return window.ocdAPI ? window.ocdAPI.saveDesign(JSON.stringify(design, null, 2), filename) : OcdDesignerBrowserActions.saveDesign(design, filename) + return window.ocdAPI ? window.ocdAPI.saveDesign(JSON.stringify(design, null, 2), filename, suggestedFilename) : OcdDesignerBrowserActions.saveDesign(design, filename) } export const discardConfirmation = (): Promise => { return window.ocdAPI ? window.ocdAPI.discardConfirmation() : OcdDesignerBrowserActions.discardConfirmation() } export const exportTerraform = (design: OcdDesign, directory: string): Promise => { - return window.ocdAPI ? window.ocdAPI.exportTerraform(design, directory) : new Promise((resolve, reject) => {reject('Currently Not Implemented')}) + return window.ocdAPI ? window.ocdAPI.exportTerraform(design, directory) : Promise.reject(new Error('Currently Not Implemented')) } export const loadLibraryIndex = (): Promise => { - return window.ocdAPI ? window.ocdAPI.loadLibraryIndex() : new Promise((resolve, reject) => {reject('Currently Not Implemented')}) + return window.ocdAPI ? window.ocdAPI.loadLibraryIndex() : Promise.reject(new Error('Currently Not Implemented')) } export const loadLibraryDesign = (section: string, filename: string): Promise => { - return window.ocdAPI ? window.ocdAPI.loadLibraryDesign(section, filename) : new Promise((resolve, reject) => {reject('Currently Not Implemented')}) + return window.ocdAPI ? window.ocdAPI.loadLibraryDesign(section, filename) : Promise.reject(new Error('Currently Not Implemented')) + } + export const loadSvgCssFiles = (): Promise => { + return window.ocdAPI ? window.ocdAPI.loadSvgCssFiles() : Promise.reject(new Error('Currently Not Implemented')) } } - -// // @ts-ignore -// if (window.ocdAPI) window.ocdAPI.onOpenFile((event, filePath) => { -// console.debug('OcdDesignFacade: onOpenFile', filePath) -// OcdDesignFacade.loadDesign(filePath).then((results) => { -// if (!results.canceled) { -// console.debug(results.design) -// } -// }).catch((resp) => {console.warn('Load Design Failed with', resp)}) -// }) diff --git a/ocd/packages/desktop/src/facade/OcdExternalFacade.ts b/ocd/packages/desktop/src/facade/OcdExternalFacade.ts index 802ac3e80..e368edea3 100644 --- a/ocd/packages/desktop/src/facade/OcdExternalFacade.ts +++ b/ocd/packages/desktop/src/facade/OcdExternalFacade.ts @@ -5,6 +5,6 @@ export namespace OcdExternalFacade { export const openExternalUrl = (href: string): Promise => { - return window.ocdAPI ? window.ocdAPI.openExternalUrl(href) : new Promise((resolve, reject) => {reject('Currently Not Implemented')}) + return window.ocdAPI ? window.ocdAPI.openExternalUrl(href) : Promise.reject(new Error('Currently Not Implemented')) } } \ No newline at end of file diff --git a/ocd/packages/desktop/src/facade/OciApiFacade.ts b/ocd/packages/desktop/src/facade/OciApiFacade.ts index 56586deeb..5cb13cf82 100644 --- a/ocd/packages/desktop/src/facade/OciApiFacade.ts +++ b/ocd/packages/desktop/src/facade/OciApiFacade.ts @@ -9,24 +9,24 @@ export namespace OciApiFacade { export const getVersion = (): Promise => { - return window.ocdAPI ? window.ocdAPI.getVersion() : new Promise((resolve, reject) => {reject('Currently Not Implemented')}) + return window.ocdAPI ? window.ocdAPI.getVersion() : Promise.reject(new Error('Currently Not Implemented')) } export const loadOCIConfigProfileNames = (): Promise => { - return window.ocdAPI ? window.ocdAPI.loadOCIConfigProfileNames() : new Promise((resolve, reject) => {reject('Currently Not Implemented')}) + return window.ocdAPI ? window.ocdAPI.loadOCIConfigProfileNames() : Promise.reject(new Error('Currently Not Implemented')) } export const loadOCIConfigProfile = (profile: string = 'shipped'): Promise => { - return window.ocdAPI ? window.ocdAPI.loadOCIConfigProfile(profile) : new Promise((resolve, reject) => {reject('Currently Not Implemented')}) + return window.ocdAPI ? window.ocdAPI.loadOCIConfigProfile(profile) : Promise.reject(new Error('Currently Not Implemented')) } export const listRegions = (profile: string = 'DEFAULT'): Promise => { - return window.ocdAPI ? window.ocdAPI.listRegions(profile) : new Promise((resolve, reject) => {reject('Currently Not Implemented')}) + return window.ocdAPI ? window.ocdAPI.listRegions(profile) : Promise.reject(new Error('Currently Not Implemented')) } export const listTenancyCompartments = (profile: string = 'DEFAULT'): Promise => { - return window.ocdAPI ? window.ocdAPI.listTenancyCompartments(profile) : new Promise((resolve, reject) => {reject('Currently Not Implemented')}) + return window.ocdAPI ? window.ocdAPI.listTenancyCompartments(profile) : Promise.reject(new Error('Currently Not Implemented')) } - export const queryTenancy = (profile: string = 'DEFAULT', compartmentIds: string[] = [], region: string): Promise => { - return window.ocdAPI ? window.ocdAPI.queryTenancy(profile, compartmentIds, region) : new Promise((resolve, reject) => {reject('Currently Not Implemented')}) + export const queryTenancy = (profile: string = 'DEFAULT', compartmentIds: string[] = [], region: string = 'uk-london-1'): Promise => { + return window.ocdAPI ? window.ocdAPI.queryTenancy(profile, compartmentIds, region) : Promise.reject(new Error('Currently Not Implemented')) } - export const queryDropdown = (profile: string = 'DEFAULT', region: string): Promise => { - return window.ocdAPI ? window.ocdAPI.queryDropdown(profile, region) : new Promise((resolve, reject) => {reject('Currently Not Implemented')}) + export const queryDropdown = (profile: string = 'DEFAULT', region: string = 'uk-london-1'): Promise => { + return window.ocdAPI ? window.ocdAPI.queryDropdown(profile, region) : Promise.reject(new Error('Currently Not Implemented')) } } \ No newline at end of file diff --git a/ocd/packages/desktop/src/pages/OcdConsole.tsx b/ocd/packages/desktop/src/pages/OcdConsole.tsx index 8958e6ed0..e3adbd553 100644 --- a/ocd/packages/desktop/src/pages/OcdConsole.tsx +++ b/ocd/packages/desktop/src/pages/OcdConsole.tsx @@ -3,7 +3,7 @@ ** Licensed under the GNU GENERAL PUBLIC LICENSE v 3.0 as shown at https://www.gnu.org/licenses/. */ -import React, { createContext, useContext, useEffect, useRef, useState } from 'react' +import React, { createContext, useContext, useEffect, useMemo, useRef, useState } from 'react' import { OcdDesigner, OcdDesignerLeftToolbar, OcdDesignerRightToolbar } from './OcdDesigner' import { OcdDocument } from '../components/OcdDocument' import OcdConsoleMenuBar from '../components/OcdConsoleMenuBar' @@ -29,11 +29,6 @@ import OcdCommonTags from './OcdCommonTags' import { OcdReferenceDataQueryDialog } from '../components/dialogs/OcdReferenceDataQueryDialog' import { OcdActiveFileContext, OcdCacheContext, OcdConsoleConfigContext, OcdDocumentContext, OcdDragResourceContext, OcdSelectedResourceContext } from './OcdConsoleContext' -// Import css as text -// @ts-ignore -// eslint-disable-next-line import/no-webpack-loader-syntax -// import svgThemeCss from '!!css-loader?{"sourceMap":false,"exportType":"string"}!../css/oci-theme.css' - export const ThemeContext = createContext('') export const ActiveFileContext = createContext({activeFile: {name: '', modified: false}, setActiveFile: () => {}}) export const ConsoleConfigContext = createContext({ocdConsoleConfig: OcdConsoleConfig.new(), setOcdConsoleConfig: () => {}}) @@ -43,12 +38,28 @@ export const SelectedResourceContext = createContext export const DragResourceContext = createContext({dragResource: OcdDocument.newDragResource(), setDragResource: () => {}}) const OcdConsole = (): JSX.Element => { - // console.debug('OcdConsole: CSS', svgThemeCss) + // State Variables const [ocdDocument, setOcdDocument] = useState(OcdDocument.new()) const [ocdConsoleConfig, setOcdConsoleConfig] = useState(OcdConsoleConfig.new()) const [ocdCache, setOcdCache] = useState(OcdCacheData.new()) const [activeFile, setActiveFile] = useState({name: '', modified: false}) const [selectedResource, setSelectedResource] = useState({} as OcdSelectedResource) + // Memo Hooks + const activeFileContext = useMemo(() => ({activeFile, setActiveFile}), [activeFile]) + const cacheContext = useMemo(() => ({ocdCache, setOcdCache}), [ocdCache]) + const consoleConfigContext = useMemo(() => ({ocdConsoleConfig, setOcdConsoleConfig}), [ocdConsoleConfig]) + const documentContext = useMemo(() => ({ocdDocument, setOcdDocument}), [ocdDocument]) + const selectedResourceContext = useMemo(() => ({selectedResource, setSelectedResource}), [selectedResource]) + // Effect Hooks + // Check if OKIT-Ocd opened because of Double Click on file on OS + useEffect(() => { + // @ts-ignore + if (window.ocdAPI) window.ocdAPI.onOpenFile((event, filePath) => { // Running as an Electron App + console.debug('OcdConsole: onOpenFile', filePath) + loadDesign(filePath, setOcdDocument, ocdConsoleConfig, setOcdConsoleConfig, setActiveFile) + }) + }, []) // Empty Array to only run on initial render + // Load the Console Config Information useEffect(() => { OcdConfigFacade.loadConsoleConfig().then((results) => { console.debug('OcdConsole: Load Console Config', results) @@ -60,24 +71,18 @@ const OcdConsole = (): JSX.Element => { // OcdConfigFacade.saveConsoleConfig(ocdConsoleConfig.config).then((results) => {console.debug('OcdConsole: Saved Console Config')}).catch((response) => console.debug('OcdConsole:', response)) }) }, []) // Empty Array to only run on initial render + // Load the Dropdown Resource Cache useEffect(() => { - // @ts-ignore - if (window.ocdAPI) window.ocdAPI.onOpenFile((event, filePath) => { // Running as an Electron App - console.debug('OcdConsole: onOpenFile', filePath) - loadDesign(filePath, setOcdDocument, ocdConsoleConfig, setOcdConsoleConfig, setActiveFile) + OcdCacheFacade.loadCache().then((results) => { + console.debug('OcdConsole: Load Cache', results) + const cacheData = new OcdCacheData(results) + setOcdCache(cacheData) + }).catch((response) => { + console.debug('OcdConsole:', response) + OcdCacheFacade.saveCache(ocdCache.cache).then((results) => {console.debug('OcdConsole: Saved Cache')}).catch((response) => console.debug('OcdConsole:', response)) }) }, []) // Empty Array to only run on initial render // useEffect(() => { - // OcdCacheFacade.loadCache().then((results) => { - // console.debug('OcdConsole: Load Cache', results) - // const cacheData = new OcdCacheData(results) - // setOcdCache(cacheData) - // }).catch((response) => { - // console.debug('OcdConsole:', response) - // OcdCacheFacade.saveCache(ocdCache.cache).then((results) => {console.debug('OcdConsole: Saved Cache')}).catch((response) => console.debug('OcdConsole:', response)) - // }) - // }, []) // Empty Array to only run on initial render - // useEffect(() => { // if (ocdCache === undefined) { // OcdCacheFacade.loadCache().then((results) => { // console.debug('OcdConsole: Load Cache', results) @@ -105,12 +110,14 @@ const OcdConsole = (): JSX.Element => { // OcdCacheFacade.saveCache(cacheData.cache).then((results) => {console.debug('OcdConsole: Saved Cache')}).catch((response) => console.debug('OcdConsole:', response)) setOcdCache(cacheData) } + console.debug('OcdConsole: Console Config', ocdConsoleConfig) + console.debug('OcdConsole: Dropdown Cache', ocdCache) return ( - - - - - + + + + +
    setAndSaveOcdConsoleConfig(ocdConsoleConfig)} ocdDocument={ocdDocument} setOcdDocument={(ocdDocument:OcdDocument) => setOcdDocument(ocdDocument)} /> setAndSaveOcdConsoleConfig(ocdConsoleConfig)} ocdDocument={ocdDocument} setOcdDocument={(ocdDocument:OcdDocument) => setOcdDocument(ocdDocument)} /> @@ -172,7 +179,7 @@ const OcdConsoleSettingsEditor = ({ ocdConsoleConfig, setOcdConsoleConfig }: any return (
      -
    • +
      • @@ -229,7 +236,7 @@ const OcdConsoleToolbar = ({ ocdConsoleConfig, setOcdConsoleConfig, ocdDocument, ocdDocument={ocdDocument} setOcdDocument={(ocdDocument:OcdDocument) => setOcdDocument(ocdDocument)} />} -
        +
        {/*
        */}
    diff --git a/ocd/packages/desktop/src/pages/OcdLibrary.tsx b/ocd/packages/desktop/src/pages/OcdLibrary.tsx index a3f9b2654..62511419f 100644 --- a/ocd/packages/desktop/src/pages/OcdLibrary.tsx +++ b/ocd/packages/desktop/src/pages/OcdLibrary.tsx @@ -151,7 +151,7 @@ export const OcdLibrary = ({ ocdConsoleConfig, setOcdConsoleConfig, ocdDocument,
    {tabs.map((k: string) => { - return
    + return
    })}
    diff --git a/ocd/packages/desktop/src/renderer.d.ts b/ocd/packages/desktop/src/renderer.d.ts index 0993cb08f..a31007334 100644 --- a/ocd/packages/desktop/src/renderer.d.ts +++ b/ocd/packages/desktop/src/renderer.d.ts @@ -19,11 +19,12 @@ export interface OcdElectronAPI { queryDropdown: (profile: string, region: string) => Promise // OCD Design loadDesign: (filename: string) => Promise - saveDesign: (design: OcdDesign | string, filename: string) => Promise + saveDesign: (design: OcdDesign | string, filename: string, suggestedFilename: string | undefined) => Promise discardConfirmation: () => Promise exportTerraform: (design: OcdDesign | string, directory: string) => Promise loadLibraryIndex: () => Promise loadLibraryDesign: (section: string, filename: string) => Promise + loadSvgCssFiles: () => Promise // OCD Configuration loadConsoleConfig: () => Promise saveConsoleConfig: (config: OcdConsoleConfiguration) => Promise diff --git a/ocd/packages/export/package.json b/ocd/packages/export/package.json index c53f74ab6..f7f0a91bb 100644 --- a/ocd/packages/export/package.json +++ b/ocd/packages/export/package.json @@ -1,6 +1,6 @@ { "name": "@ocd/export", - "version": "0.2.4", + "version": "0.2.5", "description": "OKIT Open Cloud Designer Export Module", "title": "OKIT Open Cloud Designer Export Module", "author": { @@ -14,19 +14,33 @@ "okit" ], "license": "UPL-1.0", - "main": "lib/esm/index.js", + "exports": { + ".": { + "import": { + "types": "./lib/esm/index.d.ts", + "default": "./lib/esm/index.js" + }, + "require": { + "types": "./lib/cjs/index.d.ts", + "default": "./lib/cjs/index.js" + } + } + }, + "main": "lib/cjs/index.js", "module": "lib/esm/index.js", + "types": "lib/esm/index.d.js", "files": [ "lib/" ], "scripts": { "test": "echo \"Error: no test specified\" && exit 1", + "clean": "rm -rf lib dist", "pack": "mkdir -p dist && npm pack --pack-destination dist", "compile": "tsc -p tsconfig.json && tsc -p tsconfig-cjs.json", "build": "npm run compile && npm run pack" }, "dependencies": { - "@ocd/core": "^0.2.4", - "@ocd/model": "^0.2.4" + "@ocd/core": ">=0.2.5", + "@ocd/model": ">=0.2.5" } } diff --git a/ocd/packages/export/src/markdown/provider/azure/resources.ts b/ocd/packages/export/src/markdown/provider/azure/resources.ts index 480859760..ff041b328 100644 --- a/ocd/packages/export/src/markdown/provider/azure/resources.ts +++ b/ocd/packages/export/src/markdown/provider/azure/resources.ts @@ -15,9 +15,9 @@ export { AzureDnsZone } from './resources/AzureDnsZone' export { AzureKubernetesCluster } from './resources/AzureKubernetesCluster' export { AzureLoadBalancer } from './resources/AzureLoadBalancer' export { AzureMssqlServer } from './resources/AzureMssqlServer' -export { AzureOracledatabaseAutonomousDatabaseRegular } from './resources/AzureOracledatabaseAutonomousDatabaseRegular' -export { AzureOracledatabaseCloudVmCluster } from './resources/AzureOracledatabaseCloudVmCluster' -export { AzureOracledatabaseExadataInfrastructure } from './resources/AzureOracledatabaseExadataInfrastructure' +export { AzureOracleAutonomousDatabase } from './resources/AzureOracleAutonomousDatabase' +export { AzureOracleCloudVmCluster } from './resources/AzureOracleCloudVmCluster' +export { AzureOracleExadataInfrastructure } from './resources/AzureOracleExadataInfrastructure' export { AzureResourceGroup } from './resources/AzureResourceGroup' export { AzureSubnet } from './resources/AzureSubnet' export { AzureVirtualMachine } from './resources/AzureVirtualMachine' diff --git a/ocd/packages/export/src/markdown/provider/azure/resources/AzureOracleAutonomousDatabase.ts b/ocd/packages/export/src/markdown/provider/azure/resources/AzureOracleAutonomousDatabase.ts new file mode 100644 index 000000000..e3d3f7206 --- /dev/null +++ b/ocd/packages/export/src/markdown/provider/azure/resources/AzureOracleAutonomousDatabase.ts @@ -0,0 +1,11 @@ +/* +** Copyright (c) 2020, 2024, Oracle and/or its affiliates. +** Licensed under the Universal Permissive License v 1.0 as shown at https://oss.oracle.com/licenses/upl. +*/ + + import * as AutoGenerated from "./generated/AzureOracleAutonomousDatabase" + + export class AzureOracleAutonomousDatabase extends AutoGenerated.AzureOracleAutonomousDatabase {} + + export default AzureOracleAutonomousDatabase + \ No newline at end of file diff --git a/ocd/packages/export/src/markdown/provider/azure/resources/AzureOracleCloudVmCluster.ts b/ocd/packages/export/src/markdown/provider/azure/resources/AzureOracleCloudVmCluster.ts new file mode 100644 index 000000000..d63b19cd6 --- /dev/null +++ b/ocd/packages/export/src/markdown/provider/azure/resources/AzureOracleCloudVmCluster.ts @@ -0,0 +1,11 @@ +/* +** Copyright (c) 2020, 2024, Oracle and/or its affiliates. +** Licensed under the Universal Permissive License v 1.0 as shown at https://oss.oracle.com/licenses/upl. +*/ + + import * as AutoGenerated from "./generated/AzureOracleCloudVmCluster" + + export class AzureOracleCloudVmCluster extends AutoGenerated.AzureOracleCloudVmCluster {} + + export default AzureOracleCloudVmCluster + \ No newline at end of file diff --git a/ocd/packages/export/src/markdown/provider/azure/resources/AzureOracleExadataInfrastructure.ts b/ocd/packages/export/src/markdown/provider/azure/resources/AzureOracleExadataInfrastructure.ts new file mode 100644 index 000000000..81e65b878 --- /dev/null +++ b/ocd/packages/export/src/markdown/provider/azure/resources/AzureOracleExadataInfrastructure.ts @@ -0,0 +1,11 @@ +/* +** Copyright (c) 2020, 2024, Oracle and/or its affiliates. +** Licensed under the Universal Permissive License v 1.0 as shown at https://oss.oracle.com/licenses/upl. +*/ + + import * as AutoGenerated from "./generated/AzureOracleExadataInfrastructure" + + export class AzureOracleExadataInfrastructure extends AutoGenerated.AzureOracleExadataInfrastructure {} + + export default AzureOracleExadataInfrastructure + \ No newline at end of file diff --git a/ocd/packages/export/src/markdown/provider/azure/resources/AzureOracledatabaseAutonomousDatabaseRegular.ts b/ocd/packages/export/src/markdown/provider/azure/resources/AzureOracledatabaseAutonomousDatabaseRegular.ts deleted file mode 100644 index 982266b03..000000000 --- a/ocd/packages/export/src/markdown/provider/azure/resources/AzureOracledatabaseAutonomousDatabaseRegular.ts +++ /dev/null @@ -1,11 +0,0 @@ -/* -** Copyright (c) 2020, 2024, Oracle and/or its affiliates. -** Licensed under the Universal Permissive License v 1.0 as shown at https://oss.oracle.com/licenses/upl. -*/ - - import * as AutoGenerated from "./generated/AzureOracledatabaseAutonomousDatabaseRegular" - - export class AzureOracledatabaseAutonomousDatabaseRegular extends AutoGenerated.AzureOracledatabaseAutonomousDatabaseRegular {} - - export default AzureOracledatabaseAutonomousDatabaseRegular - \ No newline at end of file diff --git a/ocd/packages/export/src/markdown/provider/azure/resources/AzureOracledatabaseCloudVmCluster.ts b/ocd/packages/export/src/markdown/provider/azure/resources/AzureOracledatabaseCloudVmCluster.ts deleted file mode 100644 index da70ca68c..000000000 --- a/ocd/packages/export/src/markdown/provider/azure/resources/AzureOracledatabaseCloudVmCluster.ts +++ /dev/null @@ -1,11 +0,0 @@ -/* -** Copyright (c) 2020, 2024, Oracle and/or its affiliates. -** Licensed under the Universal Permissive License v 1.0 as shown at https://oss.oracle.com/licenses/upl. -*/ - - import * as AutoGenerated from "./generated/AzureOracledatabaseCloudVmCluster" - - export class AzureOracledatabaseCloudVmCluster extends AutoGenerated.AzureOracledatabaseCloudVmCluster {} - - export default AzureOracledatabaseCloudVmCluster - \ No newline at end of file diff --git a/ocd/packages/export/src/markdown/provider/azure/resources/AzureOracledatabaseExadataInfrastructure.ts b/ocd/packages/export/src/markdown/provider/azure/resources/AzureOracledatabaseExadataInfrastructure.ts deleted file mode 100644 index 9bd77e411..000000000 --- a/ocd/packages/export/src/markdown/provider/azure/resources/AzureOracledatabaseExadataInfrastructure.ts +++ /dev/null @@ -1,11 +0,0 @@ -/* -** Copyright (c) 2020, 2024, Oracle and/or its affiliates. -** Licensed under the Universal Permissive License v 1.0 as shown at https://oss.oracle.com/licenses/upl. -*/ - - import * as AutoGenerated from "./generated/AzureOracledatabaseExadataInfrastructure" - - export class AzureOracledatabaseExadataInfrastructure extends AutoGenerated.AzureOracledatabaseExadataInfrastructure {} - - export default AzureOracledatabaseExadataInfrastructure - \ No newline at end of file diff --git a/ocd/packages/export/src/markdown/provider/google/resources.ts b/ocd/packages/export/src/markdown/provider/google/resources.ts index f133edf5a..dbc4f5453 100644 --- a/ocd/packages/export/src/markdown/provider/google/resources.ts +++ b/ocd/packages/export/src/markdown/provider/google/resources.ts @@ -11,7 +11,7 @@ */ export { GoogleComputeNetwork } from './resources/GoogleComputeNetwork' -export { GoogleOracledatabaseAutonomousDatabaseRegular } from './resources/GoogleOracledatabaseAutonomousDatabaseRegular' -export { GoogleOracledatabaseCloudVmCluster } from './resources/GoogleOracledatabaseCloudVmCluster' -export { GoogleOracledatabaseExadataInfrastructure } from './resources/GoogleOracledatabaseExadataInfrastructure' +export { GoogleOracleDatabaseAutonomousDatabase } from './resources/GoogleOracleDatabaseAutonomousDatabase' +export { GoogleOracleDatabaseCloudExadataInfrastructure } from './resources/GoogleOracleDatabaseCloudExadataInfrastructure' +export { GoogleOracleDatabaseCloudVmCluster } from './resources/GoogleOracleDatabaseCloudVmCluster' \ No newline at end of file diff --git a/ocd/packages/export/src/markdown/provider/google/resources/GoogleOracleDatabaseAutonomousDatabase.ts b/ocd/packages/export/src/markdown/provider/google/resources/GoogleOracleDatabaseAutonomousDatabase.ts new file mode 100644 index 000000000..95af50cdc --- /dev/null +++ b/ocd/packages/export/src/markdown/provider/google/resources/GoogleOracleDatabaseAutonomousDatabase.ts @@ -0,0 +1,11 @@ +/* +** Copyright (c) 2020, 2024, Oracle and/or its affiliates. +** Licensed under the Universal Permissive License v 1.0 as shown at https://oss.oracle.com/licenses/upl. +*/ + + import * as AutoGenerated from "./generated/GoogleOracleDatabaseAutonomousDatabase" + + export class GoogleOracleDatabaseAutonomousDatabase extends AutoGenerated.GoogleOracleDatabaseAutonomousDatabase {} + + export default GoogleOracleDatabaseAutonomousDatabase + \ No newline at end of file diff --git a/ocd/packages/export/src/markdown/provider/google/resources/GoogleOracleDatabaseCloudExadataInfrastructure.ts b/ocd/packages/export/src/markdown/provider/google/resources/GoogleOracleDatabaseCloudExadataInfrastructure.ts new file mode 100644 index 000000000..4fb512f1c --- /dev/null +++ b/ocd/packages/export/src/markdown/provider/google/resources/GoogleOracleDatabaseCloudExadataInfrastructure.ts @@ -0,0 +1,11 @@ +/* +** Copyright (c) 2020, 2024, Oracle and/or its affiliates. +** Licensed under the Universal Permissive License v 1.0 as shown at https://oss.oracle.com/licenses/upl. +*/ + + import * as AutoGenerated from "./generated/GoogleOracleDatabaseCloudExadataInfrastructure" + + export class GoogleOracleDatabaseCloudExadataInfrastructure extends AutoGenerated.GoogleOracleDatabaseCloudExadataInfrastructure {} + + export default GoogleOracleDatabaseCloudExadataInfrastructure + \ No newline at end of file diff --git a/ocd/packages/export/src/markdown/provider/google/resources/GoogleOracleDatabaseCloudVmCluster.ts b/ocd/packages/export/src/markdown/provider/google/resources/GoogleOracleDatabaseCloudVmCluster.ts new file mode 100644 index 000000000..24f494679 --- /dev/null +++ b/ocd/packages/export/src/markdown/provider/google/resources/GoogleOracleDatabaseCloudVmCluster.ts @@ -0,0 +1,11 @@ +/* +** Copyright (c) 2020, 2024, Oracle and/or its affiliates. +** Licensed under the Universal Permissive License v 1.0 as shown at https://oss.oracle.com/licenses/upl. +*/ + + import * as AutoGenerated from "./generated/GoogleOracleDatabaseCloudVmCluster" + + export class GoogleOracleDatabaseCloudVmCluster extends AutoGenerated.GoogleOracleDatabaseCloudVmCluster {} + + export default GoogleOracleDatabaseCloudVmCluster + \ No newline at end of file diff --git a/ocd/packages/export/src/markdown/provider/google/resources/GoogleOracledatabaseAutonomousDatabaseRegular.ts b/ocd/packages/export/src/markdown/provider/google/resources/GoogleOracledatabaseAutonomousDatabaseRegular.ts deleted file mode 100644 index 8481ba211..000000000 --- a/ocd/packages/export/src/markdown/provider/google/resources/GoogleOracledatabaseAutonomousDatabaseRegular.ts +++ /dev/null @@ -1,11 +0,0 @@ -/* -** Copyright (c) 2020, 2024, Oracle and/or its affiliates. -** Licensed under the Universal Permissive License v 1.0 as shown at https://oss.oracle.com/licenses/upl. -*/ - - import * as AutoGenerated from "./generated/GoogleOracledatabaseAutonomousDatabaseRegular" - - export class GoogleOracledatabaseAutonomousDatabaseRegular extends AutoGenerated.GoogleOracledatabaseAutonomousDatabaseRegular {} - - export default GoogleOracledatabaseAutonomousDatabaseRegular - \ No newline at end of file diff --git a/ocd/packages/export/src/markdown/provider/google/resources/GoogleOracledatabaseCloudVmCluster.ts b/ocd/packages/export/src/markdown/provider/google/resources/GoogleOracledatabaseCloudVmCluster.ts deleted file mode 100644 index 1c0e7e579..000000000 --- a/ocd/packages/export/src/markdown/provider/google/resources/GoogleOracledatabaseCloudVmCluster.ts +++ /dev/null @@ -1,11 +0,0 @@ -/* -** Copyright (c) 2020, 2024, Oracle and/or its affiliates. -** Licensed under the Universal Permissive License v 1.0 as shown at https://oss.oracle.com/licenses/upl. -*/ - - import * as AutoGenerated from "./generated/GoogleOracledatabaseCloudVmCluster" - - export class GoogleOracledatabaseCloudVmCluster extends AutoGenerated.GoogleOracledatabaseCloudVmCluster {} - - export default GoogleOracledatabaseCloudVmCluster - \ No newline at end of file diff --git a/ocd/packages/export/src/markdown/provider/google/resources/GoogleOracledatabaseExadataInfrastructure.ts b/ocd/packages/export/src/markdown/provider/google/resources/GoogleOracledatabaseExadataInfrastructure.ts deleted file mode 100644 index 3ed4bfb16..000000000 --- a/ocd/packages/export/src/markdown/provider/google/resources/GoogleOracledatabaseExadataInfrastructure.ts +++ /dev/null @@ -1,11 +0,0 @@ -/* -** Copyright (c) 2020, 2024, Oracle and/or its affiliates. -** Licensed under the Universal Permissive License v 1.0 as shown at https://oss.oracle.com/licenses/upl. -*/ - - import * as AutoGenerated from "./generated/GoogleOracledatabaseExadataInfrastructure" - - export class GoogleOracledatabaseExadataInfrastructure extends AutoGenerated.GoogleOracledatabaseExadataInfrastructure {} - - export default GoogleOracledatabaseExadataInfrastructure - \ No newline at end of file diff --git a/ocd/packages/export/src/terraform/AzureExporter.ts b/ocd/packages/export/src/terraform/AzureExporter.ts index e86c7af58..286ad0e7f 100644 --- a/ocd/packages/export/src/terraform/AzureExporter.ts +++ b/ocd/packages/export/src/terraform/AzureExporter.ts @@ -40,7 +40,7 @@ export class AzureExporter extends OcdProviderExporter { // "azure_connection.tfvars": [this.azureProviderTFVars()], "azure_connection.tfvars": [this.azureProviderTFVars()], "azure_metadata.tf": [this.azureMetadata()], - ...uniqueFilenames.sort(OcdUtils.simpleSort).reduce((a, c) => {a[c] = [this.autoGeneratedNotice()]; return a}, {} as Record), + ...uniqueFilenames.toSorted(OcdUtils.simpleSort).reduce((a, c) => {a[c] = [this.autoGeneratedNotice()]; return a}, {} as Record), // "azure_user_variables.tf": [this.azureUserVariables(design)], } // Generate Azure Terraform diff --git a/ocd/packages/export/src/terraform/GoogleExporter.ts b/ocd/packages/export/src/terraform/GoogleExporter.ts index 8050035e8..8e34ac29d 100644 --- a/ocd/packages/export/src/terraform/GoogleExporter.ts +++ b/ocd/packages/export/src/terraform/GoogleExporter.ts @@ -31,7 +31,7 @@ export class GoogleExporter extends OcdProviderExporter { "google_provider_variables.tf": [this.googleProviderVariables()], "google_connection.tfvars": [this.googleProviderTFVars()], "google_metadata.tf": [this.googleMetadata()], - ...uniqueFilenames.sort(OcdUtils.simpleSort).reduce((a, c) => {a[c] = [this.autoGeneratedNotice()]; return a}, {} as Record), + ...uniqueFilenames.toSorted(OcdUtils.simpleSort).reduce((a, c) => {a[c] = [this.autoGeneratedNotice()]; return a}, {} as Record), "google_user_variables.tf": [this.googleUserVariables(design)], } // Generate Google Terraform diff --git a/ocd/packages/export/src/terraform/OciExporter.ts b/ocd/packages/export/src/terraform/OciExporter.ts index be6f25578..ae765e4ab 100644 --- a/ocd/packages/export/src/terraform/OciExporter.ts +++ b/ocd/packages/export/src/terraform/OciExporter.ts @@ -87,7 +87,7 @@ export class OciExporter extends OcdProviderExporter { "oci_provider_variables.tf": [this.ociProviderVariables()], "oci_connection.tfvars": [this.ociProviderTFVars()], "oci_metadata.tf": [this.ociMetadata()], - ...uniqueFilenames.sort(OcdUtils.simpleSort).reduce((a, c) => {a[c] = [this.autoGeneratedNotice()]; return a}, {} as Record), + ...uniqueFilenames.toSorted(OcdUtils.simpleSort).reduce((a, c) => {a[c] = [this.autoGeneratedNotice()]; return a}, {} as Record), "oci_user_variables.tf": [this.ociUserVariables(design)], } // Id to Terraform Resource Name Map diff --git a/ocd/packages/export/src/terraform/provider/azure/resources.ts b/ocd/packages/export/src/terraform/provider/azure/resources.ts index 480859760..ff041b328 100644 --- a/ocd/packages/export/src/terraform/provider/azure/resources.ts +++ b/ocd/packages/export/src/terraform/provider/azure/resources.ts @@ -15,9 +15,9 @@ export { AzureDnsZone } from './resources/AzureDnsZone' export { AzureKubernetesCluster } from './resources/AzureKubernetesCluster' export { AzureLoadBalancer } from './resources/AzureLoadBalancer' export { AzureMssqlServer } from './resources/AzureMssqlServer' -export { AzureOracledatabaseAutonomousDatabaseRegular } from './resources/AzureOracledatabaseAutonomousDatabaseRegular' -export { AzureOracledatabaseCloudVmCluster } from './resources/AzureOracledatabaseCloudVmCluster' -export { AzureOracledatabaseExadataInfrastructure } from './resources/AzureOracledatabaseExadataInfrastructure' +export { AzureOracleAutonomousDatabase } from './resources/AzureOracleAutonomousDatabase' +export { AzureOracleCloudVmCluster } from './resources/AzureOracleCloudVmCluster' +export { AzureOracleExadataInfrastructure } from './resources/AzureOracleExadataInfrastructure' export { AzureResourceGroup } from './resources/AzureResourceGroup' export { AzureSubnet } from './resources/AzureSubnet' export { AzureVirtualMachine } from './resources/AzureVirtualMachine' diff --git a/ocd/packages/export/src/terraform/provider/azure/resources/AzureOracleAutonomousDatabase.ts b/ocd/packages/export/src/terraform/provider/azure/resources/AzureOracleAutonomousDatabase.ts new file mode 100644 index 000000000..61630a60e --- /dev/null +++ b/ocd/packages/export/src/terraform/provider/azure/resources/AzureOracleAutonomousDatabase.ts @@ -0,0 +1,10 @@ +/* +** Copyright (c) 2020, 2024, Oracle and/or its affiliates. +** Licensed under the Universal Permissive License v 1.0 as shown at https://oss.oracle.com/licenses/upl. +*/ + +import * as AutoGenerated from "./generated/AzureOracleAutonomousDatabase" + +export class AzureOracleAutonomousDatabase extends AutoGenerated.AzureOracleAutonomousDatabase {} + +export default AzureOracleAutonomousDatabase diff --git a/ocd/packages/export/src/terraform/provider/azure/resources/AzureOracleCloudVmCluster.ts b/ocd/packages/export/src/terraform/provider/azure/resources/AzureOracleCloudVmCluster.ts new file mode 100644 index 000000000..91b98fccf --- /dev/null +++ b/ocd/packages/export/src/terraform/provider/azure/resources/AzureOracleCloudVmCluster.ts @@ -0,0 +1,10 @@ +/* +** Copyright (c) 2020, 2024, Oracle and/or its affiliates. +** Licensed under the Universal Permissive License v 1.0 as shown at https://oss.oracle.com/licenses/upl. +*/ + +import * as AutoGenerated from "./generated/AzureOracleCloudVmCluster" + +export class AzureOracleCloudVmCluster extends AutoGenerated.AzureOracleCloudVmCluster {} + +export default AzureOracleCloudVmCluster diff --git a/ocd/packages/export/src/terraform/provider/azure/resources/AzureOracleExadataInfrastructure.ts b/ocd/packages/export/src/terraform/provider/azure/resources/AzureOracleExadataInfrastructure.ts new file mode 100644 index 000000000..c387f1ac0 --- /dev/null +++ b/ocd/packages/export/src/terraform/provider/azure/resources/AzureOracleExadataInfrastructure.ts @@ -0,0 +1,10 @@ +/* +** Copyright (c) 2020, 2024, Oracle and/or its affiliates. +** Licensed under the Universal Permissive License v 1.0 as shown at https://oss.oracle.com/licenses/upl. +*/ + +import * as AutoGenerated from "./generated/AzureOracleExadataInfrastructure" + +export class AzureOracleExadataInfrastructure extends AutoGenerated.AzureOracleExadataInfrastructure {} + +export default AzureOracleExadataInfrastructure diff --git a/ocd/packages/export/src/terraform/provider/azure/resources/AzureOracledatabaseAutonomousDatabaseRegular.ts b/ocd/packages/export/src/terraform/provider/azure/resources/AzureOracledatabaseAutonomousDatabaseRegular.ts deleted file mode 100644 index 982266b03..000000000 --- a/ocd/packages/export/src/terraform/provider/azure/resources/AzureOracledatabaseAutonomousDatabaseRegular.ts +++ /dev/null @@ -1,11 +0,0 @@ -/* -** Copyright (c) 2020, 2024, Oracle and/or its affiliates. -** Licensed under the Universal Permissive License v 1.0 as shown at https://oss.oracle.com/licenses/upl. -*/ - - import * as AutoGenerated from "./generated/AzureOracledatabaseAutonomousDatabaseRegular" - - export class AzureOracledatabaseAutonomousDatabaseRegular extends AutoGenerated.AzureOracledatabaseAutonomousDatabaseRegular {} - - export default AzureOracledatabaseAutonomousDatabaseRegular - \ No newline at end of file diff --git a/ocd/packages/export/src/terraform/provider/azure/resources/AzureOracledatabaseCloudVmCluster.ts b/ocd/packages/export/src/terraform/provider/azure/resources/AzureOracledatabaseCloudVmCluster.ts deleted file mode 100644 index da70ca68c..000000000 --- a/ocd/packages/export/src/terraform/provider/azure/resources/AzureOracledatabaseCloudVmCluster.ts +++ /dev/null @@ -1,11 +0,0 @@ -/* -** Copyright (c) 2020, 2024, Oracle and/or its affiliates. -** Licensed under the Universal Permissive License v 1.0 as shown at https://oss.oracle.com/licenses/upl. -*/ - - import * as AutoGenerated from "./generated/AzureOracledatabaseCloudVmCluster" - - export class AzureOracledatabaseCloudVmCluster extends AutoGenerated.AzureOracledatabaseCloudVmCluster {} - - export default AzureOracledatabaseCloudVmCluster - \ No newline at end of file diff --git a/ocd/packages/export/src/terraform/provider/azure/resources/AzureOracledatabaseExadataInfrastructure.ts b/ocd/packages/export/src/terraform/provider/azure/resources/AzureOracledatabaseExadataInfrastructure.ts deleted file mode 100644 index 9bd77e411..000000000 --- a/ocd/packages/export/src/terraform/provider/azure/resources/AzureOracledatabaseExadataInfrastructure.ts +++ /dev/null @@ -1,11 +0,0 @@ -/* -** Copyright (c) 2020, 2024, Oracle and/or its affiliates. -** Licensed under the Universal Permissive License v 1.0 as shown at https://oss.oracle.com/licenses/upl. -*/ - - import * as AutoGenerated from "./generated/AzureOracledatabaseExadataInfrastructure" - - export class AzureOracledatabaseExadataInfrastructure extends AutoGenerated.AzureOracledatabaseExadataInfrastructure {} - - export default AzureOracledatabaseExadataInfrastructure - \ No newline at end of file diff --git a/ocd/packages/export/src/terraform/provider/google/resources.ts b/ocd/packages/export/src/terraform/provider/google/resources.ts index f133edf5a..dbc4f5453 100644 --- a/ocd/packages/export/src/terraform/provider/google/resources.ts +++ b/ocd/packages/export/src/terraform/provider/google/resources.ts @@ -11,7 +11,7 @@ */ export { GoogleComputeNetwork } from './resources/GoogleComputeNetwork' -export { GoogleOracledatabaseAutonomousDatabaseRegular } from './resources/GoogleOracledatabaseAutonomousDatabaseRegular' -export { GoogleOracledatabaseCloudVmCluster } from './resources/GoogleOracledatabaseCloudVmCluster' -export { GoogleOracledatabaseExadataInfrastructure } from './resources/GoogleOracledatabaseExadataInfrastructure' +export { GoogleOracleDatabaseAutonomousDatabase } from './resources/GoogleOracleDatabaseAutonomousDatabase' +export { GoogleOracleDatabaseCloudExadataInfrastructure } from './resources/GoogleOracleDatabaseCloudExadataInfrastructure' +export { GoogleOracleDatabaseCloudVmCluster } from './resources/GoogleOracleDatabaseCloudVmCluster' \ No newline at end of file diff --git a/ocd/packages/export/src/terraform/provider/google/resources/GoogleOracleDatabaseAutonomousDatabase.ts b/ocd/packages/export/src/terraform/provider/google/resources/GoogleOracleDatabaseAutonomousDatabase.ts new file mode 100644 index 000000000..8eff7c0cd --- /dev/null +++ b/ocd/packages/export/src/terraform/provider/google/resources/GoogleOracleDatabaseAutonomousDatabase.ts @@ -0,0 +1,10 @@ +/* +** Copyright (c) 2020, 2024, Oracle and/or its affiliates. +** Licensed under the Universal Permissive License v 1.0 as shown at https://oss.oracle.com/licenses/upl. +*/ + +import * as AutoGenerated from "./generated/GoogleOracleDatabaseAutonomousDatabase" + +export class GoogleOracleDatabaseAutonomousDatabase extends AutoGenerated.GoogleOracleDatabaseAutonomousDatabase {} + +export default GoogleOracleDatabaseAutonomousDatabase diff --git a/ocd/packages/export/src/terraform/provider/google/resources/GoogleOracleDatabaseCloudExadataInfrastructure.ts b/ocd/packages/export/src/terraform/provider/google/resources/GoogleOracleDatabaseCloudExadataInfrastructure.ts new file mode 100644 index 000000000..abbea1535 --- /dev/null +++ b/ocd/packages/export/src/terraform/provider/google/resources/GoogleOracleDatabaseCloudExadataInfrastructure.ts @@ -0,0 +1,10 @@ +/* +** Copyright (c) 2020, 2024, Oracle and/or its affiliates. +** Licensed under the Universal Permissive License v 1.0 as shown at https://oss.oracle.com/licenses/upl. +*/ + +import * as AutoGenerated from "./generated/GoogleOracleDatabaseCloudExadataInfrastructure" + +export class GoogleOracleDatabaseCloudExadataInfrastructure extends AutoGenerated.GoogleOracleDatabaseCloudExadataInfrastructure {} + +export default GoogleOracleDatabaseCloudExadataInfrastructure diff --git a/ocd/packages/export/src/terraform/provider/google/resources/GoogleOracleDatabaseCloudVmCluster.ts b/ocd/packages/export/src/terraform/provider/google/resources/GoogleOracleDatabaseCloudVmCluster.ts new file mode 100644 index 000000000..77ad2554d --- /dev/null +++ b/ocd/packages/export/src/terraform/provider/google/resources/GoogleOracleDatabaseCloudVmCluster.ts @@ -0,0 +1,10 @@ +/* +** Copyright (c) 2020, 2024, Oracle and/or its affiliates. +** Licensed under the Universal Permissive License v 1.0 as shown at https://oss.oracle.com/licenses/upl. +*/ + +import * as AutoGenerated from "./generated/GoogleOracleDatabaseCloudVmCluster" + +export class GoogleOracleDatabaseCloudVmCluster extends AutoGenerated.GoogleOracleDatabaseCloudVmCluster {} + +export default GoogleOracleDatabaseCloudVmCluster diff --git a/ocd/packages/export/src/terraform/provider/google/resources/GoogleOracledatabaseAutonomousDatabaseRegular.ts b/ocd/packages/export/src/terraform/provider/google/resources/GoogleOracledatabaseAutonomousDatabaseRegular.ts deleted file mode 100644 index bc1f27078..000000000 --- a/ocd/packages/export/src/terraform/provider/google/resources/GoogleOracledatabaseAutonomousDatabaseRegular.ts +++ /dev/null @@ -1,10 +0,0 @@ -/* -** Copyright (c) 2020, 2024, Oracle and/or its affiliates. -** Licensed under the Universal Permissive License v 1.0 as shown at https://oss.oracle.com/licenses/upl. -*/ - -import * as AutoGenerated from "./generated/GoogleOracledatabaseAutonomousDatabaseRegular" - -export class GoogleOracledatabaseAutonomousDatabaseRegular extends AutoGenerated.GoogleOracledatabaseAutonomousDatabaseRegular {} - -export default GoogleOracledatabaseAutonomousDatabaseRegular diff --git a/ocd/packages/export/src/terraform/provider/google/resources/GoogleOracledatabaseCloudVmCluster.ts b/ocd/packages/export/src/terraform/provider/google/resources/GoogleOracledatabaseCloudVmCluster.ts deleted file mode 100644 index 67b839593..000000000 --- a/ocd/packages/export/src/terraform/provider/google/resources/GoogleOracledatabaseCloudVmCluster.ts +++ /dev/null @@ -1,10 +0,0 @@ -/* -** Copyright (c) 2020, 2024, Oracle and/or its affiliates. -** Licensed under the Universal Permissive License v 1.0 as shown at https://oss.oracle.com/licenses/upl. -*/ - -import * as AutoGenerated from "./generated/GoogleOracledatabaseCloudVmCluster" - -export class GoogleOracledatabaseCloudVmCluster extends AutoGenerated.GoogleOracledatabaseCloudVmCluster {} - -export default GoogleOracledatabaseCloudVmCluster diff --git a/ocd/packages/export/src/terraform/provider/google/resources/GoogleOracledatabaseExadataInfrastructure.ts b/ocd/packages/export/src/terraform/provider/google/resources/GoogleOracledatabaseExadataInfrastructure.ts deleted file mode 100644 index 01b862122..000000000 --- a/ocd/packages/export/src/terraform/provider/google/resources/GoogleOracledatabaseExadataInfrastructure.ts +++ /dev/null @@ -1,10 +0,0 @@ -/* -** Copyright (c) 2020, 2024, Oracle and/or its affiliates. -** Licensed under the Universal Permissive License v 1.0 as shown at https://oss.oracle.com/licenses/upl. -*/ - -import * as AutoGenerated from "./generated/GoogleOracledatabaseExadataInfrastructure" - -export class GoogleOracledatabaseExadataInfrastructure extends AutoGenerated.GoogleOracledatabaseExadataInfrastructure {} - -export default GoogleOracledatabaseExadataInfrastructure diff --git a/ocd/packages/import/package.json b/ocd/packages/import/package.json index 95af84135..db93d3abb 100644 --- a/ocd/packages/import/package.json +++ b/ocd/packages/import/package.json @@ -1,6 +1,6 @@ { "name": "@ocd/import", - "version": "0.2.4", + "version": "0.2.5", "description": "OKIT Open Cloud Designer Import Module", "title": "OKIT Open Cloud Designer Import Module", "author": { @@ -14,19 +14,33 @@ "okit" ], "license": "UPL-1.0", - "main": "lib/esm/index.js", + "exports": { + ".": { + "import": { + "types": "./lib/esm/index.d.ts", + "default": "./lib/esm/index.js" + }, + "require": { + "types": "./lib/cjs/index.d.ts", + "default": "./lib/cjs/index.js" + } + } + }, + "main": "lib/cjs/index.js", "module": "lib/esm/index.js", + "types": "lib/esm/index.d.js", "files": [ "lib/" ], "scripts": { "test": "echo \"Error: no test specified\" && exit 1", + "clean": "rm -rf lib dist", "pack": "mkdir -p dist && npm pack --pack-destination dist", "compile": "tsc -p tsconfig.json && tsc -p tsconfig-cjs.json", "build": "npm run compile && npm run pack" }, "dependencies": { - "@ocd/core": "^0.2.4", - "@ocd/model": "^0.2.4" + "@ocd/core": ">=0.2.5", + "@ocd/model": ">=0.2.5" } } diff --git a/ocd/packages/model/package.json b/ocd/packages/model/package.json index be182df07..fd87b041d 100644 --- a/ocd/packages/model/package.json +++ b/ocd/packages/model/package.json @@ -1,6 +1,6 @@ { "name": "@ocd/model", - "version": "0.2.4", + "version": "0.2.5", "description": "OKIT Open Cloud Designer Model Definition Module", "title": "OKIT Open Cloud Designer Model Definition Module", "author": { @@ -14,18 +14,32 @@ "okit" ], "license": "UPL-1.0", - "main": "lib/esm/index.js", + "exports": { + ".": { + "import": { + "types": "./lib/esm/index.d.ts", + "default": "./lib/esm/index.js" + }, + "require": { + "types": "./lib/cjs/index.d.ts", + "default": "./lib/cjs/index.js" + } + } + }, + "main": "lib/cjs/index.js", "module": "lib/esm/index.js", + "types": "lib/esm/index.d.js", "files": [ "lib/" ], "scripts": { "test": "echo \"Error: no test specified\" && exit 1", + "clean": "rm -rf lib dist", "pack": "mkdir -p dist && npm pack --pack-destination dist", "compile": "tsc -p tsconfig.json && tsc -p tsconfig-cjs.json", "build": "npm run compile && npm run pack" }, "dependencies": { - "@ocd/core": "^0.2.4" + "@ocd/core": ">=0.2.5" } } diff --git a/ocd/packages/model/src/provider/azure/resources.ts b/ocd/packages/model/src/provider/azure/resources.ts index dc9a52e15..eab0d0734 100644 --- a/ocd/packages/model/src/provider/azure/resources.ts +++ b/ocd/packages/model/src/provider/azure/resources.ts @@ -15,9 +15,9 @@ export { AzureDnsZone, AzureDnsZoneClient } from './resources/AzureDnsZone' export { AzureKubernetesCluster, AzureKubernetesClusterClient } from './resources/AzureKubernetesCluster' export { AzureLoadBalancer, AzureLoadBalancerClient } from './resources/AzureLoadBalancer' export { AzureMssqlServer, AzureMssqlServerClient } from './resources/AzureMssqlServer' -export { AzureOracledatabaseAutonomousDatabaseRegular, AzureOracledatabaseAutonomousDatabaseRegularClient } from './resources/AzureOracledatabaseAutonomousDatabaseRegular' -export { AzureOracledatabaseCloudVmCluster, AzureOracledatabaseCloudVmClusterClient } from './resources/AzureOracledatabaseCloudVmCluster' -export { AzureOracledatabaseExadataInfrastructure, AzureOracledatabaseExadataInfrastructureClient } from './resources/AzureOracledatabaseExadataInfrastructure' +export { AzureOracleAutonomousDatabase, AzureOracleAutonomousDatabaseClient } from './resources/AzureOracleAutonomousDatabase' +export { AzureOracleCloudVmCluster, AzureOracleCloudVmClusterClient } from './resources/AzureOracleCloudVmCluster' +export { AzureOracleExadataInfrastructure, AzureOracleExadataInfrastructureClient } from './resources/AzureOracleExadataInfrastructure' export { AzureResourceGroup, AzureResourceGroupClient } from './resources/AzureResourceGroup' export { AzureSubnet, AzureSubnetClient } from './resources/AzureSubnet' export { AzureVirtualMachine, AzureVirtualMachineClient } from './resources/AzureVirtualMachine' diff --git a/ocd/packages/model/src/provider/azure/resources/AzureOracleAutonomousDatabase.ts b/ocd/packages/model/src/provider/azure/resources/AzureOracleAutonomousDatabase.ts new file mode 100644 index 000000000..9e187cd3b --- /dev/null +++ b/ocd/packages/model/src/provider/azure/resources/AzureOracleAutonomousDatabase.ts @@ -0,0 +1,48 @@ +/* +** Copyright (c) 2020, 2024, Oracle and/or its affiliates. +** Licensed under the Universal Permissive License v 1.0 as shown at https://oss.oracle.com/licenses/upl. +*/ + +import { OcdResources } from "../../../OcdDesign" +import * as AutoGenerated from "./generated/AzureOracleAutonomousDatabase" + +export interface AzureOracleAutonomousDatabase extends AutoGenerated.AzureOracleAutonomousDatabase {} + +export namespace AzureOracleAutonomousDatabase { + + export function newResource(type?: string): AzureOracleAutonomousDatabase { + const resource = { + ...AutoGenerated.AzureOracleAutonomousDatabase.newResource('oracle_autonomous_database'), + } + return resource + } + export function cloneResource(resource: AzureOracleAutonomousDatabase, type?: string): AzureOracleAutonomousDatabase { + return AutoGenerated.AzureOracleAutonomousDatabase.cloneResource(resource, 'oracle_autonomous_database') as AzureOracleAutonomousDatabase + } + export function allowedParentTypes(): string[] { + return [] + } + export function getParentId(resource: AzureOracleAutonomousDatabase): string { + const parentId = resource.compartmentId + return parentId + } + export function setParentId(resource: AzureOracleAutonomousDatabase, parentId: string): AzureOracleAutonomousDatabase { + return resource + } + export function getConnectionIds(resource: AzureOracleAutonomousDatabase, allResources: OcdResources): string[] { + // This List of Ids does not include the Parent Id or Compartment Id + let associationIds: string[] = [] + return associationIds + } +} + +export class AzureOracleAutonomousDatabaseClient extends AutoGenerated.AzureOracleAutonomousDatabaseClient { + static new(): AzureOracleAutonomousDatabase { + return AzureOracleAutonomousDatabase.newResource() + } + static clone(resource: AzureOracleAutonomousDatabase): AzureOracleAutonomousDatabase { + return AzureOracleAutonomousDatabase.cloneResource(resource) + } +} + +export default AzureOracleAutonomousDatabaseClient diff --git a/ocd/packages/model/src/provider/azure/resources/AzureOracleCloudVmCluster.ts b/ocd/packages/model/src/provider/azure/resources/AzureOracleCloudVmCluster.ts new file mode 100644 index 000000000..eb11b2f5a --- /dev/null +++ b/ocd/packages/model/src/provider/azure/resources/AzureOracleCloudVmCluster.ts @@ -0,0 +1,48 @@ +/* +** Copyright (c) 2020, 2024, Oracle and/or its affiliates. +** Licensed under the Universal Permissive License v 1.0 as shown at https://oss.oracle.com/licenses/upl. +*/ + +import { OcdResources } from "../../../OcdDesign" +import * as AutoGenerated from "./generated/AzureOracleCloudVmCluster" + +export interface AzureOracleCloudVmCluster extends AutoGenerated.AzureOracleCloudVmCluster {} + +export namespace AzureOracleCloudVmCluster { + + export function newResource(type?: string): AzureOracleCloudVmCluster { + const resource = { + ...AutoGenerated.AzureOracleCloudVmCluster.newResource('oracle_cloud_vm_cluster'), + } + return resource + } + export function cloneResource(resource: AzureOracleCloudVmCluster, type?: string): AzureOracleCloudVmCluster { + return AutoGenerated.AzureOracleCloudVmCluster.cloneResource(resource, 'oracle_cloud_vm_cluster') as AzureOracleCloudVmCluster + } + export function allowedParentTypes(): string[] { + return [] + } + export function getParentId(resource: AzureOracleCloudVmCluster): string { + const parentId = resource.compartmentId + return parentId + } + export function setParentId(resource: AzureOracleCloudVmCluster, parentId: string): AzureOracleCloudVmCluster { + return resource + } + export function getConnectionIds(resource: AzureOracleCloudVmCluster, allResources: OcdResources): string[] { + // This List of Ids does not include the Parent Id or Compartment Id + let associationIds: string[] = [] + return associationIds + } +} + +export class AzureOracleCloudVmClusterClient extends AutoGenerated.AzureOracleCloudVmClusterClient { + static new(): AzureOracleCloudVmCluster { + return AzureOracleCloudVmCluster.newResource() + } + static clone(resource: AzureOracleCloudVmCluster): AzureOracleCloudVmCluster { + return AzureOracleCloudVmCluster.cloneResource(resource) + } +} + +export default AzureOracleCloudVmClusterClient diff --git a/ocd/packages/model/src/provider/azure/resources/AzureOracleExadataInfrastructure.ts b/ocd/packages/model/src/provider/azure/resources/AzureOracleExadataInfrastructure.ts new file mode 100644 index 000000000..bd0e82f13 --- /dev/null +++ b/ocd/packages/model/src/provider/azure/resources/AzureOracleExadataInfrastructure.ts @@ -0,0 +1,48 @@ +/* +** Copyright (c) 2020, 2024, Oracle and/or its affiliates. +** Licensed under the Universal Permissive License v 1.0 as shown at https://oss.oracle.com/licenses/upl. +*/ + +import { OcdResources } from "../../../OcdDesign" +import * as AutoGenerated from "./generated/AzureOracleExadataInfrastructure" + +export interface AzureOracleExadataInfrastructure extends AutoGenerated.AzureOracleExadataInfrastructure {} + +export namespace AzureOracleExadataInfrastructure { + + export function newResource(type?: string): AzureOracleExadataInfrastructure { + const resource = { + ...AutoGenerated.AzureOracleExadataInfrastructure.newResource('oracle_exadata_infrastructure'), + } + return resource + } + export function cloneResource(resource: AzureOracleExadataInfrastructure, type?: string): AzureOracleExadataInfrastructure { + return AutoGenerated.AzureOracleExadataInfrastructure.cloneResource(resource, 'oracle_exadata_infrastructure') as AzureOracleExadataInfrastructure + } + export function allowedParentTypes(): string[] { + return [] + } + export function getParentId(resource: AzureOracleExadataInfrastructure): string { + const parentId = resource.compartmentId + return parentId + } + export function setParentId(resource: AzureOracleExadataInfrastructure, parentId: string): AzureOracleExadataInfrastructure { + return resource + } + export function getConnectionIds(resource: AzureOracleExadataInfrastructure, allResources: OcdResources): string[] { + // This List of Ids does not include the Parent Id or Compartment Id + let associationIds: string[] = [] + return associationIds + } +} + +export class AzureOracleExadataInfrastructureClient extends AutoGenerated.AzureOracleExadataInfrastructureClient { + static new(): AzureOracleExadataInfrastructure { + return AzureOracleExadataInfrastructure.newResource() + } + static clone(resource: AzureOracleExadataInfrastructure): AzureOracleExadataInfrastructure { + return AzureOracleExadataInfrastructure.cloneResource(resource) + } +} + +export default AzureOracleExadataInfrastructureClient diff --git a/ocd/packages/model/src/provider/azure/resources/AzureOracledatabaseAutonomousDatabaseRegular.ts b/ocd/packages/model/src/provider/azure/resources/AzureOracledatabaseAutonomousDatabaseRegular.ts deleted file mode 100644 index 6d778eab2..000000000 --- a/ocd/packages/model/src/provider/azure/resources/AzureOracledatabaseAutonomousDatabaseRegular.ts +++ /dev/null @@ -1,48 +0,0 @@ -/* -** Copyright (c) 2020, 2024, Oracle and/or its affiliates. -** Licensed under the Universal Permissive License v 1.0 as shown at https://oss.oracle.com/licenses/upl. -*/ - -import { OcdResources } from "../../../OcdDesign" -import * as AutoGenerated from "./generated/AzureOracledatabaseAutonomousDatabaseRegular" - -export interface AzureOracledatabaseAutonomousDatabaseRegular extends AutoGenerated.AzureOracledatabaseAutonomousDatabaseRegular {} - -export namespace AzureOracledatabaseAutonomousDatabaseRegular { - - export function newResource(type?: string): AzureOracledatabaseAutonomousDatabaseRegular { - const resource = { - ...AutoGenerated.AzureOracledatabaseAutonomousDatabaseRegular.newResource('oracledatabase_autonomous_database_regular'), - } - return resource - } - export function cloneResource(resource: AzureOracledatabaseAutonomousDatabaseRegular, type?: string): AzureOracledatabaseAutonomousDatabaseRegular { - return AutoGenerated.AzureOracledatabaseAutonomousDatabaseRegular.cloneResource(resource, 'oracledatabase_autonomous_database_regular') as AzureOracledatabaseAutonomousDatabaseRegular - } - export function allowedParentTypes(): string[] { - return [] - } - export function getParentId(resource: AzureOracledatabaseAutonomousDatabaseRegular): string { - const parentId = resource.compartmentId - return parentId - } - export function setParentId(resource: AzureOracledatabaseAutonomousDatabaseRegular, parentId: string): AzureOracledatabaseAutonomousDatabaseRegular { - return resource - } - export function getConnectionIds(resource: AzureOracledatabaseAutonomousDatabaseRegular, allResources: OcdResources): string[] { - // This List of Ids does not include the Parent Id or Compartment Id - let associationIds: string[] = [] - return associationIds - } -} - -export class AzureOracledatabaseAutonomousDatabaseRegularClient extends AutoGenerated.AzureOracledatabaseAutonomousDatabaseRegularClient { - static new(): AzureOracledatabaseAutonomousDatabaseRegular { - return AzureOracledatabaseAutonomousDatabaseRegular.newResource() - } - static clone(resource: AzureOracledatabaseAutonomousDatabaseRegular): AzureOracledatabaseAutonomousDatabaseRegular { - return AzureOracledatabaseAutonomousDatabaseRegular.cloneResource(resource) - } -} - -export default AzureOracledatabaseAutonomousDatabaseRegularClient diff --git a/ocd/packages/model/src/provider/azure/resources/AzureOracledatabaseCloudVmCluster.ts b/ocd/packages/model/src/provider/azure/resources/AzureOracledatabaseCloudVmCluster.ts deleted file mode 100644 index b2ce3c344..000000000 --- a/ocd/packages/model/src/provider/azure/resources/AzureOracledatabaseCloudVmCluster.ts +++ /dev/null @@ -1,48 +0,0 @@ -/* -** Copyright (c) 2020, 2024, Oracle and/or its affiliates. -** Licensed under the Universal Permissive License v 1.0 as shown at https://oss.oracle.com/licenses/upl. -*/ - -import { OcdResources } from "../../../OcdDesign" -import * as AutoGenerated from "./generated/AzureOracledatabaseCloudVmCluster" - -export interface AzureOracledatabaseCloudVmCluster extends AutoGenerated.AzureOracledatabaseCloudVmCluster {} - -export namespace AzureOracledatabaseCloudVmCluster { - - export function newResource(type?: string): AzureOracledatabaseCloudVmCluster { - const resource = { - ...AutoGenerated.AzureOracledatabaseCloudVmCluster.newResource('oracledatabase_cloud_vm_cluster'), - } - return resource - } - export function cloneResource(resource: AzureOracledatabaseCloudVmCluster, type?: string): AzureOracledatabaseCloudVmCluster { - return AutoGenerated.AzureOracledatabaseCloudVmCluster.cloneResource(resource, 'oracledatabase_cloud_vm_cluster') as AzureOracledatabaseCloudVmCluster - } - export function allowedParentTypes(): string[] { - return [] - } - export function getParentId(resource: AzureOracledatabaseCloudVmCluster): string { - const parentId = resource.compartmentId - return parentId - } - export function setParentId(resource: AzureOracledatabaseCloudVmCluster, parentId: string): AzureOracledatabaseCloudVmCluster { - return resource - } - export function getConnectionIds(resource: AzureOracledatabaseCloudVmCluster, allResources: OcdResources): string[] { - // This List of Ids does not include the Parent Id or Compartment Id - let associationIds: string[] = [] - return associationIds - } -} - -export class AzureOracledatabaseCloudVmClusterClient extends AutoGenerated.AzureOracledatabaseCloudVmClusterClient { - static new(): AzureOracledatabaseCloudVmCluster { - return AzureOracledatabaseCloudVmCluster.newResource() - } - static clone(resource: AzureOracledatabaseCloudVmCluster): AzureOracledatabaseCloudVmCluster { - return AzureOracledatabaseCloudVmCluster.cloneResource(resource) - } -} - -export default AzureOracledatabaseCloudVmClusterClient diff --git a/ocd/packages/model/src/provider/azure/resources/AzureOracledatabaseExadataInfrastructure.ts b/ocd/packages/model/src/provider/azure/resources/AzureOracledatabaseExadataInfrastructure.ts deleted file mode 100644 index 88a131000..000000000 --- a/ocd/packages/model/src/provider/azure/resources/AzureOracledatabaseExadataInfrastructure.ts +++ /dev/null @@ -1,48 +0,0 @@ -/* -** Copyright (c) 2020, 2024, Oracle and/or its affiliates. -** Licensed under the Universal Permissive License v 1.0 as shown at https://oss.oracle.com/licenses/upl. -*/ - -import { OcdResources } from "../../../OcdDesign" -import * as AutoGenerated from "./generated/AzureOracledatabaseExadataInfrastructure" - -export interface AzureOracledatabaseExadataInfrastructure extends AutoGenerated.AzureOracledatabaseExadataInfrastructure {} - -export namespace AzureOracledatabaseExadataInfrastructure { - - export function newResource(type?: string): AzureOracledatabaseExadataInfrastructure { - const resource = { - ...AutoGenerated.AzureOracledatabaseExadataInfrastructure.newResource('oracledatabase_exadata_infrastructure'), - } - return resource - } - export function cloneResource(resource: AzureOracledatabaseExadataInfrastructure, type?: string): AzureOracledatabaseExadataInfrastructure { - return AutoGenerated.AzureOracledatabaseExadataInfrastructure.cloneResource(resource, 'oracledatabase_exadata_infrastructure') as AzureOracledatabaseExadataInfrastructure - } - export function allowedParentTypes(): string[] { - return [] - } - export function getParentId(resource: AzureOracledatabaseExadataInfrastructure): string { - const parentId = resource.compartmentId - return parentId - } - export function setParentId(resource: AzureOracledatabaseExadataInfrastructure, parentId: string): AzureOracledatabaseExadataInfrastructure { - return resource - } - export function getConnectionIds(resource: AzureOracledatabaseExadataInfrastructure, allResources: OcdResources): string[] { - // This List of Ids does not include the Parent Id or Compartment Id - let associationIds: string[] = [] - return associationIds - } -} - -export class AzureOracledatabaseExadataInfrastructureClient extends AutoGenerated.AzureOracledatabaseExadataInfrastructureClient { - static new(): AzureOracledatabaseExadataInfrastructure { - return AzureOracledatabaseExadataInfrastructure.newResource() - } - static clone(resource: AzureOracledatabaseExadataInfrastructure): AzureOracledatabaseExadataInfrastructure { - return AzureOracledatabaseExadataInfrastructure.cloneResource(resource) - } -} - -export default AzureOracledatabaseExadataInfrastructureClient diff --git a/ocd/packages/model/src/provider/google/resources.ts b/ocd/packages/model/src/provider/google/resources.ts index fb44c5638..17f5dbec6 100644 --- a/ocd/packages/model/src/provider/google/resources.ts +++ b/ocd/packages/model/src/provider/google/resources.ts @@ -11,7 +11,7 @@ */ export { GoogleComputeNetwork, GoogleComputeNetworkClient } from './resources/GoogleComputeNetwork' -export { GoogleOracledatabaseAutonomousDatabaseRegular, GoogleOracledatabaseAutonomousDatabaseRegularClient } from './resources/GoogleOracledatabaseAutonomousDatabaseRegular' -export { GoogleOracledatabaseCloudVmCluster, GoogleOracledatabaseCloudVmClusterClient } from './resources/GoogleOracledatabaseCloudVmCluster' -export { GoogleOracledatabaseExadataInfrastructure, GoogleOracledatabaseExadataInfrastructureClient } from './resources/GoogleOracledatabaseExadataInfrastructure' +export { GoogleOracleDatabaseAutonomousDatabase, GoogleOracleDatabaseAutonomousDatabaseClient } from './resources/GoogleOracleDatabaseAutonomousDatabase' +export { GoogleOracleDatabaseCloudExadataInfrastructure, GoogleOracleDatabaseCloudExadataInfrastructureClient } from './resources/GoogleOracleDatabaseCloudExadataInfrastructure' +export { GoogleOracleDatabaseCloudVmCluster, GoogleOracleDatabaseCloudVmClusterClient } from './resources/GoogleOracleDatabaseCloudVmCluster' \ No newline at end of file diff --git a/ocd/packages/model/src/provider/google/resources/GoogleOracleDatabaseAutonomousDatabase.ts b/ocd/packages/model/src/provider/google/resources/GoogleOracleDatabaseAutonomousDatabase.ts new file mode 100644 index 000000000..18b69079e --- /dev/null +++ b/ocd/packages/model/src/provider/google/resources/GoogleOracleDatabaseAutonomousDatabase.ts @@ -0,0 +1,48 @@ +/* +** Copyright (c) 2020, 2024, Oracle and/or its affiliates. +** Licensed under the Universal Permissive License v 1.0 as shown at https://oss.oracle.com/licenses/upl. +*/ + +import { OcdResources } from "../../../OcdDesign" +import * as AutoGenerated from "./generated/GoogleOracleDatabaseAutonomousDatabase" + +export interface GoogleOracleDatabaseAutonomousDatabase extends AutoGenerated.GoogleOracleDatabaseAutonomousDatabase {} + +export namespace GoogleOracleDatabaseAutonomousDatabase { + + export function newResource(type?: string): GoogleOracleDatabaseAutonomousDatabase { + const resource = { + ...AutoGenerated.GoogleOracleDatabaseAutonomousDatabase.newResource('oracle_database_autonomous_database'), + } + return resource + } + export function cloneResource(resource: GoogleOracleDatabaseAutonomousDatabase, type?: string): GoogleOracleDatabaseAutonomousDatabase { + return AutoGenerated.GoogleOracleDatabaseAutonomousDatabase.cloneResource(resource, 'oracle_database_autonomous_database') as GoogleOracleDatabaseAutonomousDatabase + } + export function allowedParentTypes(): string[] { + return [] + } + export function getParentId(resource: GoogleOracleDatabaseAutonomousDatabase): string { + const parentId = resource.compartmentId + return parentId + } + export function setParentId(resource: GoogleOracleDatabaseAutonomousDatabase, parentId: string): GoogleOracleDatabaseAutonomousDatabase { + return resource + } + export function getConnectionIds(resource: GoogleOracleDatabaseAutonomousDatabase, allResources: OcdResources): string[] { + // This List of Ids does not include the Parent Id or Compartment Id + let associationIds: string[] = [] + return associationIds + } +} + +export class GoogleOracleDatabaseAutonomousDatabaseClient extends AutoGenerated.GoogleOracleDatabaseAutonomousDatabaseClient { + static new(): GoogleOracleDatabaseAutonomousDatabase { + return GoogleOracleDatabaseAutonomousDatabase.newResource() + } + static clone(resource: GoogleOracleDatabaseAutonomousDatabase): GoogleOracleDatabaseAutonomousDatabase { + return GoogleOracleDatabaseAutonomousDatabase.cloneResource(resource) + } +} + +export default GoogleOracleDatabaseAutonomousDatabaseClient diff --git a/ocd/packages/model/src/provider/google/resources/GoogleOracleDatabaseCloudExadataInfrastructure.ts b/ocd/packages/model/src/provider/google/resources/GoogleOracleDatabaseCloudExadataInfrastructure.ts new file mode 100644 index 000000000..9ff6d443f --- /dev/null +++ b/ocd/packages/model/src/provider/google/resources/GoogleOracleDatabaseCloudExadataInfrastructure.ts @@ -0,0 +1,48 @@ +/* +** Copyright (c) 2020, 2024, Oracle and/or its affiliates. +** Licensed under the Universal Permissive License v 1.0 as shown at https://oss.oracle.com/licenses/upl. +*/ + +import { OcdResources } from "../../../OcdDesign" +import * as AutoGenerated from "./generated/GoogleOracleDatabaseCloudExadataInfrastructure" + +export interface GoogleOracleDatabaseCloudExadataInfrastructure extends AutoGenerated.GoogleOracleDatabaseCloudExadataInfrastructure {} + +export namespace GoogleOracleDatabaseCloudExadataInfrastructure { + + export function newResource(type?: string): GoogleOracleDatabaseCloudExadataInfrastructure { + const resource = { + ...AutoGenerated.GoogleOracleDatabaseCloudExadataInfrastructure.newResource('oracle_database_cloud_exadata_infrastructure'), + } + return resource + } + export function cloneResource(resource: GoogleOracleDatabaseCloudExadataInfrastructure, type?: string): GoogleOracleDatabaseCloudExadataInfrastructure { + return AutoGenerated.GoogleOracleDatabaseCloudExadataInfrastructure.cloneResource(resource, 'oracle_database_cloud_exadata_infrastructure') as GoogleOracleDatabaseCloudExadataInfrastructure + } + export function allowedParentTypes(): string[] { + return [] + } + export function getParentId(resource: GoogleOracleDatabaseCloudExadataInfrastructure): string { + const parentId = resource.compartmentId + return parentId + } + export function setParentId(resource: GoogleOracleDatabaseCloudExadataInfrastructure, parentId: string): GoogleOracleDatabaseCloudExadataInfrastructure { + return resource + } + export function getConnectionIds(resource: GoogleOracleDatabaseCloudExadataInfrastructure, allResources: OcdResources): string[] { + // This List of Ids does not include the Parent Id or Compartment Id + let associationIds: string[] = [] + return associationIds + } +} + +export class GoogleOracleDatabaseCloudExadataInfrastructureClient extends AutoGenerated.GoogleOracleDatabaseCloudExadataInfrastructureClient { + static new(): GoogleOracleDatabaseCloudExadataInfrastructure { + return GoogleOracleDatabaseCloudExadataInfrastructure.newResource() + } + static clone(resource: GoogleOracleDatabaseCloudExadataInfrastructure): GoogleOracleDatabaseCloudExadataInfrastructure { + return GoogleOracleDatabaseCloudExadataInfrastructure.cloneResource(resource) + } +} + +export default GoogleOracleDatabaseCloudExadataInfrastructureClient diff --git a/ocd/packages/model/src/provider/google/resources/GoogleOracleDatabaseCloudVmCluster.ts b/ocd/packages/model/src/provider/google/resources/GoogleOracleDatabaseCloudVmCluster.ts new file mode 100644 index 000000000..b73bf1caa --- /dev/null +++ b/ocd/packages/model/src/provider/google/resources/GoogleOracleDatabaseCloudVmCluster.ts @@ -0,0 +1,48 @@ +/* +** Copyright (c) 2020, 2024, Oracle and/or its affiliates. +** Licensed under the Universal Permissive License v 1.0 as shown at https://oss.oracle.com/licenses/upl. +*/ + +import { OcdResources } from "../../../OcdDesign" +import * as AutoGenerated from "./generated/GoogleOracleDatabaseCloudVmCluster" + +export interface GoogleOracleDatabaseCloudVmCluster extends AutoGenerated.GoogleOracleDatabaseCloudVmCluster {} + +export namespace GoogleOracleDatabaseCloudVmCluster { + + export function newResource(type?: string): GoogleOracleDatabaseCloudVmCluster { + const resource = { + ...AutoGenerated.GoogleOracleDatabaseCloudVmCluster.newResource('oracle_database_cloud_vm_cluster'), + } + return resource + } + export function cloneResource(resource: GoogleOracleDatabaseCloudVmCluster, type?: string): GoogleOracleDatabaseCloudVmCluster { + return AutoGenerated.GoogleOracleDatabaseCloudVmCluster.cloneResource(resource, 'oracle_database_cloud_vm_cluster') as GoogleOracleDatabaseCloudVmCluster + } + export function allowedParentTypes(): string[] { + return [] + } + export function getParentId(resource: GoogleOracleDatabaseCloudVmCluster): string { + const parentId = resource.compartmentId + return parentId + } + export function setParentId(resource: GoogleOracleDatabaseCloudVmCluster, parentId: string): GoogleOracleDatabaseCloudVmCluster { + return resource + } + export function getConnectionIds(resource: GoogleOracleDatabaseCloudVmCluster, allResources: OcdResources): string[] { + // This List of Ids does not include the Parent Id or Compartment Id + let associationIds: string[] = [] + return associationIds + } +} + +export class GoogleOracleDatabaseCloudVmClusterClient extends AutoGenerated.GoogleOracleDatabaseCloudVmClusterClient { + static new(): GoogleOracleDatabaseCloudVmCluster { + return GoogleOracleDatabaseCloudVmCluster.newResource() + } + static clone(resource: GoogleOracleDatabaseCloudVmCluster): GoogleOracleDatabaseCloudVmCluster { + return GoogleOracleDatabaseCloudVmCluster.cloneResource(resource) + } +} + +export default GoogleOracleDatabaseCloudVmClusterClient diff --git a/ocd/packages/model/src/provider/google/resources/GoogleOracledatabaseAutonomousDatabaseRegular.ts b/ocd/packages/model/src/provider/google/resources/GoogleOracledatabaseAutonomousDatabaseRegular.ts deleted file mode 100644 index bd01336c5..000000000 --- a/ocd/packages/model/src/provider/google/resources/GoogleOracledatabaseAutonomousDatabaseRegular.ts +++ /dev/null @@ -1,48 +0,0 @@ -/* -** Copyright (c) 2020, 2024, Oracle and/or its affiliates. -** Licensed under the Universal Permissive License v 1.0 as shown at https://oss.oracle.com/licenses/upl. -*/ - -import { OcdResources } from "../../../OcdDesign" -import * as AutoGenerated from "./generated/GoogleOracledatabaseAutonomousDatabaseRegular" - -export interface GoogleOracledatabaseAutonomousDatabaseRegular extends AutoGenerated.GoogleOracledatabaseAutonomousDatabaseRegular {} - -export namespace GoogleOracledatabaseAutonomousDatabaseRegular { - - export function newResource(type?: string): GoogleOracledatabaseAutonomousDatabaseRegular { - const resource = { - ...AutoGenerated.GoogleOracledatabaseAutonomousDatabaseRegular.newResource('oracledatabase_autonomous_database_regular'), - } - return resource - } - export function cloneResource(resource: GoogleOracledatabaseAutonomousDatabaseRegular, type?: string): GoogleOracledatabaseAutonomousDatabaseRegular { - return AutoGenerated.GoogleOracledatabaseAutonomousDatabaseRegular.cloneResource(resource, 'oracledatabase_autonomous_database_regular') as GoogleOracledatabaseAutonomousDatabaseRegular - } - export function allowedParentTypes(): string[] { - return [] - } - export function getParentId(resource: GoogleOracledatabaseAutonomousDatabaseRegular): string { - const parentId = resource.compartmentId - return parentId - } - export function setParentId(resource: GoogleOracledatabaseAutonomousDatabaseRegular, parentId: string): GoogleOracledatabaseAutonomousDatabaseRegular { - return resource - } - export function getConnectionIds(resource: GoogleOracledatabaseAutonomousDatabaseRegular, allResources: OcdResources): string[] { - // This List of Ids does not include the Parent Id or Compartment Id - let associationIds: string[] = [] - return associationIds - } -} - -export class GoogleOracledatabaseAutonomousDatabaseRegularClient extends AutoGenerated.GoogleOracledatabaseAutonomousDatabaseRegularClient { - static new(): GoogleOracledatabaseAutonomousDatabaseRegular { - return GoogleOracledatabaseAutonomousDatabaseRegular.newResource() - } - static clone(resource: GoogleOracledatabaseAutonomousDatabaseRegular): GoogleOracledatabaseAutonomousDatabaseRegular { - return GoogleOracledatabaseAutonomousDatabaseRegular.cloneResource(resource) - } -} - -export default GoogleOracledatabaseAutonomousDatabaseRegularClient diff --git a/ocd/packages/model/src/provider/google/resources/GoogleOracledatabaseCloudVmCluster.ts b/ocd/packages/model/src/provider/google/resources/GoogleOracledatabaseCloudVmCluster.ts deleted file mode 100644 index 573f5c620..000000000 --- a/ocd/packages/model/src/provider/google/resources/GoogleOracledatabaseCloudVmCluster.ts +++ /dev/null @@ -1,48 +0,0 @@ -/* -** Copyright (c) 2020, 2024, Oracle and/or its affiliates. -** Licensed under the Universal Permissive License v 1.0 as shown at https://oss.oracle.com/licenses/upl. -*/ - -import { OcdResources } from "../../../OcdDesign" -import * as AutoGenerated from "./generated/GoogleOracledatabaseCloudVmCluster" - -export interface GoogleOracledatabaseCloudVmCluster extends AutoGenerated.GoogleOracledatabaseCloudVmCluster {} - -export namespace GoogleOracledatabaseCloudVmCluster { - - export function newResource(type?: string): GoogleOracledatabaseCloudVmCluster { - const resource = { - ...AutoGenerated.GoogleOracledatabaseCloudVmCluster.newResource('oracledatabase_cloud_vm_cluster'), - } - return resource - } - export function cloneResource(resource: GoogleOracledatabaseCloudVmCluster, type?: string): GoogleOracledatabaseCloudVmCluster { - return AutoGenerated.GoogleOracledatabaseCloudVmCluster.cloneResource(resource, 'oracledatabase_cloud_vm_cluster') as GoogleOracledatabaseCloudVmCluster - } - export function allowedParentTypes(): string[] { - return [] - } - export function getParentId(resource: GoogleOracledatabaseCloudVmCluster): string { - const parentId = resource.compartmentId - return parentId - } - export function setParentId(resource: GoogleOracledatabaseCloudVmCluster, parentId: string): GoogleOracledatabaseCloudVmCluster { - return resource - } - export function getConnectionIds(resource: GoogleOracledatabaseCloudVmCluster, allResources: OcdResources): string[] { - // This List of Ids does not include the Parent Id or Compartment Id - let associationIds: string[] = [] - return associationIds - } -} - -export class GoogleOracledatabaseCloudVmClusterClient extends AutoGenerated.GoogleOracledatabaseCloudVmClusterClient { - static new(): GoogleOracledatabaseCloudVmCluster { - return GoogleOracledatabaseCloudVmCluster.newResource() - } - static clone(resource: GoogleOracledatabaseCloudVmCluster): GoogleOracledatabaseCloudVmCluster { - return GoogleOracledatabaseCloudVmCluster.cloneResource(resource) - } -} - -export default GoogleOracledatabaseCloudVmClusterClient diff --git a/ocd/packages/model/src/provider/google/resources/GoogleOracledatabaseExadataInfrastructure.ts b/ocd/packages/model/src/provider/google/resources/GoogleOracledatabaseExadataInfrastructure.ts deleted file mode 100644 index 9655025be..000000000 --- a/ocd/packages/model/src/provider/google/resources/GoogleOracledatabaseExadataInfrastructure.ts +++ /dev/null @@ -1,48 +0,0 @@ -/* -** Copyright (c) 2020, 2024, Oracle and/or its affiliates. -** Licensed under the Universal Permissive License v 1.0 as shown at https://oss.oracle.com/licenses/upl. -*/ - -import { OcdResources } from "../../../OcdDesign" -import * as AutoGenerated from "./generated/GoogleOracledatabaseExadataInfrastructure" - -export interface GoogleOracledatabaseExadataInfrastructure extends AutoGenerated.GoogleOracledatabaseExadataInfrastructure {} - -export namespace GoogleOracledatabaseExadataInfrastructure { - - export function newResource(type?: string): GoogleOracledatabaseExadataInfrastructure { - const resource = { - ...AutoGenerated.GoogleOracledatabaseExadataInfrastructure.newResource('oracledatabase_exadata_infrastructure'), - } - return resource - } - export function cloneResource(resource: GoogleOracledatabaseExadataInfrastructure, type?: string): GoogleOracledatabaseExadataInfrastructure { - return AutoGenerated.GoogleOracledatabaseExadataInfrastructure.cloneResource(resource, 'oracledatabase_exadata_infrastructure') as GoogleOracledatabaseExadataInfrastructure - } - export function allowedParentTypes(): string[] { - return [] - } - export function getParentId(resource: GoogleOracledatabaseExadataInfrastructure): string { - const parentId = resource.compartmentId - return parentId - } - export function setParentId(resource: GoogleOracledatabaseExadataInfrastructure, parentId: string): GoogleOracledatabaseExadataInfrastructure { - return resource - } - export function getConnectionIds(resource: GoogleOracledatabaseExadataInfrastructure, allResources: OcdResources): string[] { - // This List of Ids does not include the Parent Id or Compartment Id - let associationIds: string[] = [] - return associationIds - } -} - -export class GoogleOracledatabaseExadataInfrastructureClient extends AutoGenerated.GoogleOracledatabaseExadataInfrastructureClient { - static new(): GoogleOracledatabaseExadataInfrastructure { - return GoogleOracledatabaseExadataInfrastructure.newResource() - } - static clone(resource: GoogleOracledatabaseExadataInfrastructure): GoogleOracledatabaseExadataInfrastructure { - return GoogleOracledatabaseExadataInfrastructure.cloneResource(resource) - } -} - -export default GoogleOracledatabaseExadataInfrastructureClient diff --git a/ocd/packages/model/src/provider/oci/resources/OciLoadBalancer.ts b/ocd/packages/model/src/provider/oci/resources/OciLoadBalancer.ts index 852b00357..63628316f 100644 --- a/ocd/packages/model/src/provider/oci/resources/OciLoadBalancer.ts +++ b/ocd/packages/model/src/provider/oci/resources/OciLoadBalancer.ts @@ -5,8 +5,13 @@ import { OcdResources } from "../../../OcdDesign" import * as AutoGenerated from "./generated/OciLoadBalancer" +import { OciLoadBalancerBackendSet } from "./OciLoadBalancerBackendSet" +import { OciLoadBalancerListener } from "./OciLoadBalancerListener" -export interface OciLoadBalancer extends AutoGenerated.OciLoadBalancer {} +export interface OciLoadBalancer extends AutoGenerated.OciLoadBalancer { + listeners?: OciLoadBalancerListener[] // Used to define type for query + backendSets?: OciLoadBalancerBackendSet[] // Used to define type for query +} export namespace OciLoadBalancer { export namespace ShapeDetails { diff --git a/ocd/packages/model/src/validator/OcdResourceValidator.ts b/ocd/packages/model/src/validator/OcdResourceValidator.ts index dce9f81fe..da762316d 100644 --- a/ocd/packages/model/src/validator/OcdResourceValidator.ts +++ b/ocd/packages/model/src/validator/OcdResourceValidator.ts @@ -30,8 +30,9 @@ export namespace OcdResourceValidator { // If not conditional then we will always display if (!conditional) return true // Check condition - const element = condition.element ? condition.element.indexOf('_') ? OcdUtils.toCamelCase(condition.element) : condition.element : '' - const display = OcdUtils.isCondition(resource[element], condition.operator, condition.value) + const element = condition.element?.indexOf('_') ? OcdUtils.toCamelCase(condition.element) : condition.element + const leftValue = element ? resource[element] : '' + const display = OcdUtils.isCondition(leftValue, condition.operator, condition.value) return display } export function noDefaultValidation(displayName: string, key: string, value: string | boolean | number, title: string, cssClass: string, resources: OcdResources, message: string | undefined = undefined): OcdValidationResult { diff --git a/ocd/packages/model/src/validator/provider/azure/resources.ts b/ocd/packages/model/src/validator/provider/azure/resources.ts index 480859760..ff041b328 100644 --- a/ocd/packages/model/src/validator/provider/azure/resources.ts +++ b/ocd/packages/model/src/validator/provider/azure/resources.ts @@ -15,9 +15,9 @@ export { AzureDnsZone } from './resources/AzureDnsZone' export { AzureKubernetesCluster } from './resources/AzureKubernetesCluster' export { AzureLoadBalancer } from './resources/AzureLoadBalancer' export { AzureMssqlServer } from './resources/AzureMssqlServer' -export { AzureOracledatabaseAutonomousDatabaseRegular } from './resources/AzureOracledatabaseAutonomousDatabaseRegular' -export { AzureOracledatabaseCloudVmCluster } from './resources/AzureOracledatabaseCloudVmCluster' -export { AzureOracledatabaseExadataInfrastructure } from './resources/AzureOracledatabaseExadataInfrastructure' +export { AzureOracleAutonomousDatabase } from './resources/AzureOracleAutonomousDatabase' +export { AzureOracleCloudVmCluster } from './resources/AzureOracleCloudVmCluster' +export { AzureOracleExadataInfrastructure } from './resources/AzureOracleExadataInfrastructure' export { AzureResourceGroup } from './resources/AzureResourceGroup' export { AzureSubnet } from './resources/AzureSubnet' export { AzureVirtualMachine } from './resources/AzureVirtualMachine' diff --git a/ocd/packages/model/src/validator/provider/azure/resources/AzureContainerRegistry.ts b/ocd/packages/model/src/validator/provider/azure/resources/AzureContainerRegistry.ts index ac5068cfd..e05862f88 100644 --- a/ocd/packages/model/src/validator/provider/azure/resources/AzureContainerRegistry.ts +++ b/ocd/packages/model/src/validator/provider/azure/resources/AzureContainerRegistry.ts @@ -6,7 +6,7 @@ import * as AutoGenerated from './generated/AzureContainerRegistry' import * as Model from '../../../../provider/azure/resources' import { AzureResources } from '../../../../OcdDesign' -import { OcdResourceValidator, OcdValidationResult, OcdValidatorResource } from '../../../OcdResourceValidator' +import { OcdValidationResult } from '../../../OcdResourceValidator' export namespace AzureContainerRegistry { export function validateResource(resource: Model.AzureContainerRegistry, resources: AzureResources): OcdValidationResult[] { diff --git a/ocd/packages/model/src/validator/provider/azure/resources/AzureDnsZone.ts b/ocd/packages/model/src/validator/provider/azure/resources/AzureDnsZone.ts index aa0d698ac..16560bbc3 100644 --- a/ocd/packages/model/src/validator/provider/azure/resources/AzureDnsZone.ts +++ b/ocd/packages/model/src/validator/provider/azure/resources/AzureDnsZone.ts @@ -6,7 +6,7 @@ import * as AutoGenerated from './generated/AzureDnsZone' import * as Model from '../../../../provider/azure/resources' import { AzureResources } from '../../../../OcdDesign' -import { OcdResourceValidator, OcdValidationResult, OcdValidatorResource } from '../../../OcdResourceValidator' +import { OcdValidationResult } from '../../../OcdResourceValidator' export namespace AzureDnsZone { export function validateResource(resource: Model.AzureDnsZone, resources: AzureResources): OcdValidationResult[] { diff --git a/ocd/packages/model/src/validator/provider/azure/resources/AzureKubernetesCluster.ts b/ocd/packages/model/src/validator/provider/azure/resources/AzureKubernetesCluster.ts index bb4c0a871..f5f40f932 100644 --- a/ocd/packages/model/src/validator/provider/azure/resources/AzureKubernetesCluster.ts +++ b/ocd/packages/model/src/validator/provider/azure/resources/AzureKubernetesCluster.ts @@ -6,7 +6,7 @@ import * as AutoGenerated from './generated/AzureKubernetesCluster' import * as Model from '../../../../provider/azure/resources' import { AzureResources } from '../../../../OcdDesign' -import { OcdResourceValidator, OcdValidationResult, OcdValidatorResource } from '../../../OcdResourceValidator' +import { OcdValidationResult } from '../../../OcdResourceValidator' export namespace AzureKubernetesCluster { export function validateResource(resource: Model.AzureKubernetesCluster, resources: AzureResources): OcdValidationResult[] { diff --git a/ocd/packages/model/src/validator/provider/azure/resources/AzureLoadBalancer.ts b/ocd/packages/model/src/validator/provider/azure/resources/AzureLoadBalancer.ts index 7d15af5ee..add3f1c21 100644 --- a/ocd/packages/model/src/validator/provider/azure/resources/AzureLoadBalancer.ts +++ b/ocd/packages/model/src/validator/provider/azure/resources/AzureLoadBalancer.ts @@ -6,7 +6,7 @@ import * as AutoGenerated from './generated/AzureLoadBalancer' import * as Model from '../../../../provider/azure/resources' import { AzureResources } from '../../../../OcdDesign' -import { OcdResourceValidator, OcdValidationResult, OcdValidatorResource } from '../../../OcdResourceValidator' +import { OcdValidationResult } from '../../../OcdResourceValidator' export namespace AzureLoadBalancer { export function validateResource(resource: Model.AzureLoadBalancer, resources: AzureResources): OcdValidationResult[] { diff --git a/ocd/packages/model/src/validator/provider/azure/resources/AzureMssqlServer.ts b/ocd/packages/model/src/validator/provider/azure/resources/AzureMssqlServer.ts index 08b7d0af0..93904a8ed 100644 --- a/ocd/packages/model/src/validator/provider/azure/resources/AzureMssqlServer.ts +++ b/ocd/packages/model/src/validator/provider/azure/resources/AzureMssqlServer.ts @@ -6,7 +6,7 @@ import * as AutoGenerated from './generated/AzureMssqlServer' import * as Model from '../../../../provider/azure/resources' import { AzureResources } from '../../../../OcdDesign' -import { OcdResourceValidator, OcdValidationResult, OcdValidatorResource } from '../../../OcdResourceValidator' +import { OcdValidationResult } from '../../../OcdResourceValidator' export namespace AzureMssqlServer { export function validateResource(resource: Model.AzureMssqlServer, resources: AzureResources): OcdValidationResult[] { diff --git a/ocd/packages/model/src/validator/provider/azure/resources/AzureOracleAutonomousDatabase.ts b/ocd/packages/model/src/validator/provider/azure/resources/AzureOracleAutonomousDatabase.ts new file mode 100644 index 000000000..bc2148f3d --- /dev/null +++ b/ocd/packages/model/src/validator/provider/azure/resources/AzureOracleAutonomousDatabase.ts @@ -0,0 +1,31 @@ +/* +** Copyright (c) 2020, 2024, Oracle and/or its affiliates. +** Licensed under the Universal Permissive License v 1.0 as shown at https://oss.oracle.com/licenses/upl. +*/ + +import * as AutoGenerated from './generated/AzureOracleAutonomousDatabase' +import * as Model from '../../../../provider/azure/resources' +import { AzureResources } from '../../../../OcdDesign' +import { OcdValidationResult } from '../../../OcdResourceValidator' + +export namespace AzureOracleAutonomousDatabase { + export function validateResource(resource: Model.AzureOracleAutonomousDatabase, resources: AzureResources): OcdValidationResult[] { + return [...AutoGenerated.AzureOracleAutonomousDatabase.validateResource(resource, resources), ...customValidation(resource, resources)] + } + export function isResourceValid(resource: Model.AzureOracleAutonomousDatabase, resources: AzureResources): boolean { + return (validateResource(resource, resources).filter((v: OcdValidationResult) => !v.valid).length > 0) + } + export function hasErrors(resource: Model.AzureOracleAutonomousDatabase, resources: AzureResources): boolean { + return (validateResource(resource, resources).filter((v: OcdValidationResult) => v.type === 'error').length > 0) + } + export function hasWarnings(resource: Model.AzureOracleAutonomousDatabase, resources: AzureResources): boolean { + return (validateResource(resource, resources).filter((v: OcdValidationResult) => v.type === 'warning').length > 0) + } + export function hasInformation(resource: Model.AzureOracleAutonomousDatabase, resources: AzureResources): boolean { + return (validateResource(resource, resources).filter((v: OcdValidationResult) => v.type === 'information').length > 0) + } + function customValidation(resource: Model.AzureOracleAutonomousDatabase, resources: AzureResources): OcdValidationResult[] { + const results: OcdValidationResult[] = [] + return results + } +} diff --git a/ocd/packages/model/src/validator/provider/azure/resources/AzureOracleCloudVmCluster.ts b/ocd/packages/model/src/validator/provider/azure/resources/AzureOracleCloudVmCluster.ts new file mode 100644 index 000000000..1a5413c40 --- /dev/null +++ b/ocd/packages/model/src/validator/provider/azure/resources/AzureOracleCloudVmCluster.ts @@ -0,0 +1,31 @@ +/* +** Copyright (c) 2020, 2024, Oracle and/or its affiliates. +** Licensed under the Universal Permissive License v 1.0 as shown at https://oss.oracle.com/licenses/upl. +*/ + +import * as AutoGenerated from './generated/AzureOracleCloudVmCluster' +import * as Model from '../../../../provider/azure/resources' +import { AzureResources } from '../../../../OcdDesign' +import { OcdValidationResult } from '../../../OcdResourceValidator' + +export namespace AzureOracleCloudVmCluster { + export function validateResource(resource: Model.AzureOracleCloudVmCluster, resources: AzureResources): OcdValidationResult[] { + return [...AutoGenerated.AzureOracleCloudVmCluster.validateResource(resource, resources), ...customValidation(resource, resources)] + } + export function isResourceValid(resource: Model.AzureOracleCloudVmCluster, resources: AzureResources): boolean { + return (validateResource(resource, resources).filter((v: OcdValidationResult) => !v.valid).length > 0) + } + export function hasErrors(resource: Model.AzureOracleCloudVmCluster, resources: AzureResources): boolean { + return (validateResource(resource, resources).filter((v: OcdValidationResult) => v.type === 'error').length > 0) + } + export function hasWarnings(resource: Model.AzureOracleCloudVmCluster, resources: AzureResources): boolean { + return (validateResource(resource, resources).filter((v: OcdValidationResult) => v.type === 'warning').length > 0) + } + export function hasInformation(resource: Model.AzureOracleCloudVmCluster, resources: AzureResources): boolean { + return (validateResource(resource, resources).filter((v: OcdValidationResult) => v.type === 'information').length > 0) + } + function customValidation(resource: Model.AzureOracleCloudVmCluster, resources: AzureResources): OcdValidationResult[] { + const results: OcdValidationResult[] = [] + return results + } +} diff --git a/ocd/packages/model/src/validator/provider/azure/resources/AzureOracleExadataInfrastructure.ts b/ocd/packages/model/src/validator/provider/azure/resources/AzureOracleExadataInfrastructure.ts new file mode 100644 index 000000000..d7ec0a878 --- /dev/null +++ b/ocd/packages/model/src/validator/provider/azure/resources/AzureOracleExadataInfrastructure.ts @@ -0,0 +1,31 @@ +/* +** Copyright (c) 2020, 2024, Oracle and/or its affiliates. +** Licensed under the Universal Permissive License v 1.0 as shown at https://oss.oracle.com/licenses/upl. +*/ + +import * as AutoGenerated from './generated/AzureOracleExadataInfrastructure' +import * as Model from '../../../../provider/azure/resources' +import { AzureResources } from '../../../../OcdDesign' +import { OcdValidationResult } from '../../../OcdResourceValidator' + +export namespace AzureOracleExadataInfrastructure { + export function validateResource(resource: Model.AzureOracleExadataInfrastructure, resources: AzureResources): OcdValidationResult[] { + return [...AutoGenerated.AzureOracleExadataInfrastructure.validateResource(resource, resources), ...customValidation(resource, resources)] + } + export function isResourceValid(resource: Model.AzureOracleExadataInfrastructure, resources: AzureResources): boolean { + return (validateResource(resource, resources).filter((v: OcdValidationResult) => !v.valid).length > 0) + } + export function hasErrors(resource: Model.AzureOracleExadataInfrastructure, resources: AzureResources): boolean { + return (validateResource(resource, resources).filter((v: OcdValidationResult) => v.type === 'error').length > 0) + } + export function hasWarnings(resource: Model.AzureOracleExadataInfrastructure, resources: AzureResources): boolean { + return (validateResource(resource, resources).filter((v: OcdValidationResult) => v.type === 'warning').length > 0) + } + export function hasInformation(resource: Model.AzureOracleExadataInfrastructure, resources: AzureResources): boolean { + return (validateResource(resource, resources).filter((v: OcdValidationResult) => v.type === 'information').length > 0) + } + function customValidation(resource: Model.AzureOracleExadataInfrastructure, resources: AzureResources): OcdValidationResult[] { + const results: OcdValidationResult[] = [] + return results + } +} diff --git a/ocd/packages/model/src/validator/provider/azure/resources/AzureOracledatabaseAutonomousDatabaseRegular.ts b/ocd/packages/model/src/validator/provider/azure/resources/AzureOracledatabaseAutonomousDatabaseRegular.ts deleted file mode 100644 index da2c7a5cb..000000000 --- a/ocd/packages/model/src/validator/provider/azure/resources/AzureOracledatabaseAutonomousDatabaseRegular.ts +++ /dev/null @@ -1,31 +0,0 @@ -/* -** Copyright (c) 2020, 2024, Oracle and/or its affiliates. -** Licensed under the Universal Permissive License v 1.0 as shown at https://oss.oracle.com/licenses/upl. -*/ - -import * as AutoGenerated from './generated/AzureOracledatabaseAutonomousDatabaseRegular' -import * as Model from '../../../../provider/azure/resources' -import { AzureResources } from '../../../../OcdDesign' -import { OcdResourceValidator, OcdValidationResult, OcdValidatorResource } from '../../../OcdResourceValidator' - -export namespace AzureOracledatabaseAutonomousDatabaseRegular { - export function validateResource(resource: Model.AzureOracledatabaseAutonomousDatabaseRegular, resources: AzureResources): OcdValidationResult[] { - return [...AutoGenerated.AzureOracledatabaseAutonomousDatabaseRegular.validateResource(resource, resources), ...customValidation(resource, resources)] - } - export function isResourceValid(resource: Model.AzureOracledatabaseAutonomousDatabaseRegular, resources: AzureResources): boolean { - return (validateResource(resource, resources).filter((v: OcdValidationResult) => !v.valid).length > 0) - } - export function hasErrors(resource: Model.AzureOracledatabaseAutonomousDatabaseRegular, resources: AzureResources): boolean { - return (validateResource(resource, resources).filter((v: OcdValidationResult) => v.type === 'error').length > 0) - } - export function hasWarnings(resource: Model.AzureOracledatabaseAutonomousDatabaseRegular, resources: AzureResources): boolean { - return (validateResource(resource, resources).filter((v: OcdValidationResult) => v.type === 'warning').length > 0) - } - export function hasInformation(resource: Model.AzureOracledatabaseAutonomousDatabaseRegular, resources: AzureResources): boolean { - return (validateResource(resource, resources).filter((v: OcdValidationResult) => v.type === 'information').length > 0) - } - function customValidation(resource: Model.AzureOracledatabaseAutonomousDatabaseRegular, resources: AzureResources): OcdValidationResult[] { - const results: OcdValidationResult[] = [] - return results - } -} diff --git a/ocd/packages/model/src/validator/provider/azure/resources/AzureOracledatabaseCloudVmCluster.ts b/ocd/packages/model/src/validator/provider/azure/resources/AzureOracledatabaseCloudVmCluster.ts deleted file mode 100644 index 5e64335b0..000000000 --- a/ocd/packages/model/src/validator/provider/azure/resources/AzureOracledatabaseCloudVmCluster.ts +++ /dev/null @@ -1,31 +0,0 @@ -/* -** Copyright (c) 2020, 2024, Oracle and/or its affiliates. -** Licensed under the Universal Permissive License v 1.0 as shown at https://oss.oracle.com/licenses/upl. -*/ - -import * as AutoGenerated from './generated/AzureOracledatabaseCloudVmCluster' -import * as Model from '../../../../provider/azure/resources' -import { AzureResources } from '../../../../OcdDesign' -import { OcdResourceValidator, OcdValidationResult, OcdValidatorResource } from '../../../OcdResourceValidator' - -export namespace AzureOracledatabaseCloudVmCluster { - export function validateResource(resource: Model.AzureOracledatabaseCloudVmCluster, resources: AzureResources): OcdValidationResult[] { - return [...AutoGenerated.AzureOracledatabaseCloudVmCluster.validateResource(resource, resources), ...customValidation(resource, resources)] - } - export function isResourceValid(resource: Model.AzureOracledatabaseCloudVmCluster, resources: AzureResources): boolean { - return (validateResource(resource, resources).filter((v: OcdValidationResult) => !v.valid).length > 0) - } - export function hasErrors(resource: Model.AzureOracledatabaseCloudVmCluster, resources: AzureResources): boolean { - return (validateResource(resource, resources).filter((v: OcdValidationResult) => v.type === 'error').length > 0) - } - export function hasWarnings(resource: Model.AzureOracledatabaseCloudVmCluster, resources: AzureResources): boolean { - return (validateResource(resource, resources).filter((v: OcdValidationResult) => v.type === 'warning').length > 0) - } - export function hasInformation(resource: Model.AzureOracledatabaseCloudVmCluster, resources: AzureResources): boolean { - return (validateResource(resource, resources).filter((v: OcdValidationResult) => v.type === 'information').length > 0) - } - function customValidation(resource: Model.AzureOracledatabaseCloudVmCluster, resources: AzureResources): OcdValidationResult[] { - const results: OcdValidationResult[] = [] - return results - } -} diff --git a/ocd/packages/model/src/validator/provider/azure/resources/AzureOracledatabaseExadataInfrastructure.ts b/ocd/packages/model/src/validator/provider/azure/resources/AzureOracledatabaseExadataInfrastructure.ts deleted file mode 100644 index e66657923..000000000 --- a/ocd/packages/model/src/validator/provider/azure/resources/AzureOracledatabaseExadataInfrastructure.ts +++ /dev/null @@ -1,31 +0,0 @@ -/* -** Copyright (c) 2020, 2024, Oracle and/or its affiliates. -** Licensed under the Universal Permissive License v 1.0 as shown at https://oss.oracle.com/licenses/upl. -*/ - -import * as AutoGenerated from './generated/AzureOracledatabaseExadataInfrastructure' -import * as Model from '../../../../provider/azure/resources' -import { AzureResources } from '../../../../OcdDesign' -import { OcdResourceValidator, OcdValidationResult, OcdValidatorResource } from '../../../OcdResourceValidator' - -export namespace AzureOracledatabaseExadataInfrastructure { - export function validateResource(resource: Model.AzureOracledatabaseExadataInfrastructure, resources: AzureResources): OcdValidationResult[] { - return [...AutoGenerated.AzureOracledatabaseExadataInfrastructure.validateResource(resource, resources), ...customValidation(resource, resources)] - } - export function isResourceValid(resource: Model.AzureOracledatabaseExadataInfrastructure, resources: AzureResources): boolean { - return (validateResource(resource, resources).filter((v: OcdValidationResult) => !v.valid).length > 0) - } - export function hasErrors(resource: Model.AzureOracledatabaseExadataInfrastructure, resources: AzureResources): boolean { - return (validateResource(resource, resources).filter((v: OcdValidationResult) => v.type === 'error').length > 0) - } - export function hasWarnings(resource: Model.AzureOracledatabaseExadataInfrastructure, resources: AzureResources): boolean { - return (validateResource(resource, resources).filter((v: OcdValidationResult) => v.type === 'warning').length > 0) - } - export function hasInformation(resource: Model.AzureOracledatabaseExadataInfrastructure, resources: AzureResources): boolean { - return (validateResource(resource, resources).filter((v: OcdValidationResult) => v.type === 'information').length > 0) - } - function customValidation(resource: Model.AzureOracledatabaseExadataInfrastructure, resources: AzureResources): OcdValidationResult[] { - const results: OcdValidationResult[] = [] - return results - } -} diff --git a/ocd/packages/model/src/validator/provider/azure/resources/AzureResourceGroup.ts b/ocd/packages/model/src/validator/provider/azure/resources/AzureResourceGroup.ts index 6a48fdc9c..36d3bee72 100644 --- a/ocd/packages/model/src/validator/provider/azure/resources/AzureResourceGroup.ts +++ b/ocd/packages/model/src/validator/provider/azure/resources/AzureResourceGroup.ts @@ -6,7 +6,7 @@ import * as AutoGenerated from './generated/AzureResourceGroup' import * as Model from '../../../../provider/azure/resources' import { AzureResources } from '../../../../OcdDesign' -import { OcdResourceValidator, OcdValidationResult, OcdValidatorResource } from '../../../OcdResourceValidator' +import { OcdValidationResult } from '../../../OcdResourceValidator' export namespace AzureResourceGroup { export function validateResource(resource: Model.AzureResourceGroup, resources: AzureResources): OcdValidationResult[] { diff --git a/ocd/packages/model/src/validator/provider/azure/resources/AzureSubnet.ts b/ocd/packages/model/src/validator/provider/azure/resources/AzureSubnet.ts index 3fb929bbf..f5d5a06bb 100644 --- a/ocd/packages/model/src/validator/provider/azure/resources/AzureSubnet.ts +++ b/ocd/packages/model/src/validator/provider/azure/resources/AzureSubnet.ts @@ -6,7 +6,7 @@ import * as AutoGenerated from './generated/AzureSubnet' import * as Model from '../../../../provider/azure/resources' import { AzureResources } from '../../../../OcdDesign' -import { OcdResourceValidator, OcdValidationResult, OcdValidatorResource } from '../../../OcdResourceValidator' +import { OcdValidationResult } from '../../../OcdResourceValidator' export namespace AzureSubnet { export function validateResource(resource: Model.AzureSubnet, resources: AzureResources): OcdValidationResult[] { diff --git a/ocd/packages/model/src/validator/provider/azure/resources/AzureVirtualMachine.ts b/ocd/packages/model/src/validator/provider/azure/resources/AzureVirtualMachine.ts index b5fec13f2..f34e2454f 100644 --- a/ocd/packages/model/src/validator/provider/azure/resources/AzureVirtualMachine.ts +++ b/ocd/packages/model/src/validator/provider/azure/resources/AzureVirtualMachine.ts @@ -6,7 +6,7 @@ import * as AutoGenerated from './generated/AzureVirtualMachine' import * as Model from '../../../../provider/azure/resources' import { AzureResources } from '../../../../OcdDesign' -import { OcdResourceValidator, OcdValidationResult, OcdValidatorResource } from '../../../OcdResourceValidator' +import { OcdValidationResult } from '../../../OcdResourceValidator' export namespace AzureVirtualMachine { export function validateResource(resource: Model.AzureVirtualMachine, resources: AzureResources): OcdValidationResult[] { diff --git a/ocd/packages/model/src/validator/provider/azure/resources/AzureVirtualNetwork.ts b/ocd/packages/model/src/validator/provider/azure/resources/AzureVirtualNetwork.ts index 09035ae5c..c4a18991e 100644 --- a/ocd/packages/model/src/validator/provider/azure/resources/AzureVirtualNetwork.ts +++ b/ocd/packages/model/src/validator/provider/azure/resources/AzureVirtualNetwork.ts @@ -6,7 +6,7 @@ import * as AutoGenerated from './generated/AzureVirtualNetwork' import * as Model from '../../../../provider/azure/resources' import { AzureResources } from '../../../../OcdDesign' -import { OcdResourceValidator, OcdValidationResult, OcdValidatorResource } from '../../../OcdResourceValidator' +import { OcdValidationResult } from '../../../OcdResourceValidator' export namespace AzureVirtualNetwork { export function validateResource(resource: Model.AzureVirtualNetwork, resources: AzureResources): OcdValidationResult[] { diff --git a/ocd/packages/model/src/validator/provider/google/resources.ts b/ocd/packages/model/src/validator/provider/google/resources.ts index f133edf5a..dbc4f5453 100644 --- a/ocd/packages/model/src/validator/provider/google/resources.ts +++ b/ocd/packages/model/src/validator/provider/google/resources.ts @@ -11,7 +11,7 @@ */ export { GoogleComputeNetwork } from './resources/GoogleComputeNetwork' -export { GoogleOracledatabaseAutonomousDatabaseRegular } from './resources/GoogleOracledatabaseAutonomousDatabaseRegular' -export { GoogleOracledatabaseCloudVmCluster } from './resources/GoogleOracledatabaseCloudVmCluster' -export { GoogleOracledatabaseExadataInfrastructure } from './resources/GoogleOracledatabaseExadataInfrastructure' +export { GoogleOracleDatabaseAutonomousDatabase } from './resources/GoogleOracleDatabaseAutonomousDatabase' +export { GoogleOracleDatabaseCloudExadataInfrastructure } from './resources/GoogleOracleDatabaseCloudExadataInfrastructure' +export { GoogleOracleDatabaseCloudVmCluster } from './resources/GoogleOracleDatabaseCloudVmCluster' \ No newline at end of file diff --git a/ocd/packages/model/src/validator/provider/google/resources/GoogleComputeNetwork.ts b/ocd/packages/model/src/validator/provider/google/resources/GoogleComputeNetwork.ts index 4594b6ec5..051dea8bf 100644 --- a/ocd/packages/model/src/validator/provider/google/resources/GoogleComputeNetwork.ts +++ b/ocd/packages/model/src/validator/provider/google/resources/GoogleComputeNetwork.ts @@ -6,7 +6,7 @@ import * as AutoGenerated from './generated/GoogleComputeNetwork' import * as Model from '../../../../provider/google/resources' import { GoogleResources } from '../../../../OcdDesign' -import { OcdResourceValidator, OcdValidationResult, OcdValidatorResource } from '../../../OcdResourceValidator' +import { OcdValidationResult } from '../../../OcdResourceValidator' export namespace GoogleComputeNetwork { export function validateResource(resource: Model.GoogleComputeNetwork, resources: GoogleResources): OcdValidationResult[] { diff --git a/ocd/packages/model/src/validator/provider/google/resources/GoogleOracleDatabaseAutonomousDatabase.ts b/ocd/packages/model/src/validator/provider/google/resources/GoogleOracleDatabaseAutonomousDatabase.ts new file mode 100644 index 000000000..547605bc3 --- /dev/null +++ b/ocd/packages/model/src/validator/provider/google/resources/GoogleOracleDatabaseAutonomousDatabase.ts @@ -0,0 +1,31 @@ +/* +** Copyright (c) 2020, 2024, Oracle and/or its affiliates. +** Licensed under the Universal Permissive License v 1.0 as shown at https://oss.oracle.com/licenses/upl. +*/ + +import * as AutoGenerated from './generated/GoogleOracleDatabaseAutonomousDatabase' +import * as Model from '../../../../provider/google/resources' +import { GoogleResources } from '../../../../OcdDesign' +import { OcdValidationResult } from '../../../OcdResourceValidator' + +export namespace GoogleOracleDatabaseAutonomousDatabase { + export function validateResource(resource: Model.GoogleOracleDatabaseAutonomousDatabase, resources: GoogleResources): OcdValidationResult[] { + return [...AutoGenerated.GoogleOracleDatabaseAutonomousDatabase.validateResource(resource, resources), ...customValidation(resource, resources)] + } + export function isResourceValid(resource: Model.GoogleOracleDatabaseAutonomousDatabase, resources: GoogleResources): boolean { + return (validateResource(resource, resources).filter((v: OcdValidationResult) => !v.valid).length > 0) + } + export function hasErrors(resource: Model.GoogleOracleDatabaseAutonomousDatabase, resources: GoogleResources): boolean { + return (validateResource(resource, resources).filter((v: OcdValidationResult) => v.type === 'error').length > 0) + } + export function hasWarnings(resource: Model.GoogleOracleDatabaseAutonomousDatabase, resources: GoogleResources): boolean { + return (validateResource(resource, resources).filter((v: OcdValidationResult) => v.type === 'warning').length > 0) + } + export function hasInformation(resource: Model.GoogleOracleDatabaseAutonomousDatabase, resources: GoogleResources): boolean { + return (validateResource(resource, resources).filter((v: OcdValidationResult) => v.type === 'information').length > 0) + } + function customValidation(resource: Model.GoogleOracleDatabaseAutonomousDatabase, resources: GoogleResources): OcdValidationResult[] { + const results: OcdValidationResult[] = [] + return results + } +} diff --git a/ocd/packages/model/src/validator/provider/google/resources/GoogleOracleDatabaseCloudExadataInfrastructure.ts b/ocd/packages/model/src/validator/provider/google/resources/GoogleOracleDatabaseCloudExadataInfrastructure.ts new file mode 100644 index 000000000..5a25c3467 --- /dev/null +++ b/ocd/packages/model/src/validator/provider/google/resources/GoogleOracleDatabaseCloudExadataInfrastructure.ts @@ -0,0 +1,31 @@ +/* +** Copyright (c) 2020, 2024, Oracle and/or its affiliates. +** Licensed under the Universal Permissive License v 1.0 as shown at https://oss.oracle.com/licenses/upl. +*/ + +import * as AutoGenerated from './generated/GoogleOracleDatabaseCloudExadataInfrastructure' +import * as Model from '../../../../provider/google/resources' +import { GoogleResources } from '../../../../OcdDesign' +import { OcdValidationResult } from '../../../OcdResourceValidator' + +export namespace GoogleOracleDatabaseCloudExadataInfrastructure { + export function validateResource(resource: Model.GoogleOracleDatabaseCloudExadataInfrastructure, resources: GoogleResources): OcdValidationResult[] { + return [...AutoGenerated.GoogleOracleDatabaseCloudExadataInfrastructure.validateResource(resource, resources), ...customValidation(resource, resources)] + } + export function isResourceValid(resource: Model.GoogleOracleDatabaseCloudExadataInfrastructure, resources: GoogleResources): boolean { + return (validateResource(resource, resources).filter((v: OcdValidationResult) => !v.valid).length > 0) + } + export function hasErrors(resource: Model.GoogleOracleDatabaseCloudExadataInfrastructure, resources: GoogleResources): boolean { + return (validateResource(resource, resources).filter((v: OcdValidationResult) => v.type === 'error').length > 0) + } + export function hasWarnings(resource: Model.GoogleOracleDatabaseCloudExadataInfrastructure, resources: GoogleResources): boolean { + return (validateResource(resource, resources).filter((v: OcdValidationResult) => v.type === 'warning').length > 0) + } + export function hasInformation(resource: Model.GoogleOracleDatabaseCloudExadataInfrastructure, resources: GoogleResources): boolean { + return (validateResource(resource, resources).filter((v: OcdValidationResult) => v.type === 'information').length > 0) + } + function customValidation(resource: Model.GoogleOracleDatabaseCloudExadataInfrastructure, resources: GoogleResources): OcdValidationResult[] { + const results: OcdValidationResult[] = [] + return results + } +} diff --git a/ocd/packages/model/src/validator/provider/google/resources/GoogleOracledatabaseCloudVmCluster.ts b/ocd/packages/model/src/validator/provider/google/resources/GoogleOracleDatabaseCloudVmCluster.ts similarity index 67% rename from ocd/packages/model/src/validator/provider/google/resources/GoogleOracledatabaseCloudVmCluster.ts rename to ocd/packages/model/src/validator/provider/google/resources/GoogleOracleDatabaseCloudVmCluster.ts index 7145e5267..765e707f4 100644 --- a/ocd/packages/model/src/validator/provider/google/resources/GoogleOracledatabaseCloudVmCluster.ts +++ b/ocd/packages/model/src/validator/provider/google/resources/GoogleOracleDatabaseCloudVmCluster.ts @@ -3,28 +3,28 @@ ** Licensed under the Universal Permissive License v 1.0 as shown at https://oss.oracle.com/licenses/upl. */ -import * as AutoGenerated from './generated/GoogleOracledatabaseCloudVmCluster' +import * as AutoGenerated from './generated/GoogleOracleDatabaseCloudVmCluster' import * as Model from '../../../../provider/google/resources' import { GoogleResources } from '../../../../OcdDesign' -import { OcdResourceValidator, OcdValidationResult, OcdValidatorResource } from '../../../OcdResourceValidator' +import { OcdValidationResult } from '../../../OcdResourceValidator' -export namespace GoogleOracledatabaseCloudVmCluster { - export function validateResource(resource: Model.GoogleOracledatabaseCloudVmCluster, resources: GoogleResources): OcdValidationResult[] { - return [...AutoGenerated.GoogleOracledatabaseCloudVmCluster.validateResource(resource, resources), ...customValidation(resource, resources)] +export namespace GoogleOracleDatabaseCloudVmCluster { + export function validateResource(resource: Model.GoogleOracleDatabaseCloudVmCluster, resources: GoogleResources): OcdValidationResult[] { + return [...AutoGenerated.GoogleOracleDatabaseCloudVmCluster.validateResource(resource, resources), ...customValidation(resource, resources)] } - export function isResourceValid(resource: Model.GoogleOracledatabaseCloudVmCluster, resources: GoogleResources): boolean { + export function isResourceValid(resource: Model.GoogleOracleDatabaseCloudVmCluster, resources: GoogleResources): boolean { return (validateResource(resource, resources).filter((v: OcdValidationResult) => !v.valid).length > 0) } - export function hasErrors(resource: Model.GoogleOracledatabaseCloudVmCluster, resources: GoogleResources): boolean { + export function hasErrors(resource: Model.GoogleOracleDatabaseCloudVmCluster, resources: GoogleResources): boolean { return (validateResource(resource, resources).filter((v: OcdValidationResult) => v.type === 'error').length > 0) } - export function hasWarnings(resource: Model.GoogleOracledatabaseCloudVmCluster, resources: GoogleResources): boolean { + export function hasWarnings(resource: Model.GoogleOracleDatabaseCloudVmCluster, resources: GoogleResources): boolean { return (validateResource(resource, resources).filter((v: OcdValidationResult) => v.type === 'warning').length > 0) } - export function hasInformation(resource: Model.GoogleOracledatabaseCloudVmCluster, resources: GoogleResources): boolean { + export function hasInformation(resource: Model.GoogleOracleDatabaseCloudVmCluster, resources: GoogleResources): boolean { return (validateResource(resource, resources).filter((v: OcdValidationResult) => v.type === 'information').length > 0) } - function customValidation(resource: Model.GoogleOracledatabaseCloudVmCluster, resources: GoogleResources): OcdValidationResult[] { + function customValidation(resource: Model.GoogleOracleDatabaseCloudVmCluster, resources: GoogleResources): OcdValidationResult[] { const results: OcdValidationResult[] = [] return results } diff --git a/ocd/packages/model/src/validator/provider/google/resources/GoogleOracledatabaseAutonomousDatabaseRegular.ts b/ocd/packages/model/src/validator/provider/google/resources/GoogleOracledatabaseAutonomousDatabaseRegular.ts deleted file mode 100644 index 495fa3f2d..000000000 --- a/ocd/packages/model/src/validator/provider/google/resources/GoogleOracledatabaseAutonomousDatabaseRegular.ts +++ /dev/null @@ -1,31 +0,0 @@ -/* -** Copyright (c) 2020, 2024, Oracle and/or its affiliates. -** Licensed under the Universal Permissive License v 1.0 as shown at https://oss.oracle.com/licenses/upl. -*/ - -import * as AutoGenerated from './generated/GoogleOracledatabaseAutonomousDatabaseRegular' -import * as Model from '../../../../provider/google/resources' -import { GoogleResources } from '../../../../OcdDesign' -import { OcdResourceValidator, OcdValidationResult, OcdValidatorResource } from '../../../OcdResourceValidator' - -export namespace GoogleOracledatabaseAutonomousDatabaseRegular { - export function validateResource(resource: Model.GoogleOracledatabaseAutonomousDatabaseRegular, resources: GoogleResources): OcdValidationResult[] { - return [...AutoGenerated.GoogleOracledatabaseAutonomousDatabaseRegular.validateResource(resource, resources), ...customValidation(resource, resources)] - } - export function isResourceValid(resource: Model.GoogleOracledatabaseAutonomousDatabaseRegular, resources: GoogleResources): boolean { - return (validateResource(resource, resources).filter((v: OcdValidationResult) => !v.valid).length > 0) - } - export function hasErrors(resource: Model.GoogleOracledatabaseAutonomousDatabaseRegular, resources: GoogleResources): boolean { - return (validateResource(resource, resources).filter((v: OcdValidationResult) => v.type === 'error').length > 0) - } - export function hasWarnings(resource: Model.GoogleOracledatabaseAutonomousDatabaseRegular, resources: GoogleResources): boolean { - return (validateResource(resource, resources).filter((v: OcdValidationResult) => v.type === 'warning').length > 0) - } - export function hasInformation(resource: Model.GoogleOracledatabaseAutonomousDatabaseRegular, resources: GoogleResources): boolean { - return (validateResource(resource, resources).filter((v: OcdValidationResult) => v.type === 'information').length > 0) - } - function customValidation(resource: Model.GoogleOracledatabaseAutonomousDatabaseRegular, resources: GoogleResources): OcdValidationResult[] { - const results: OcdValidationResult[] = [] - return results - } -} diff --git a/ocd/packages/model/src/validator/provider/google/resources/GoogleOracledatabaseExadataInfrastructure.ts b/ocd/packages/model/src/validator/provider/google/resources/GoogleOracledatabaseExadataInfrastructure.ts deleted file mode 100644 index 91f6f4d8d..000000000 --- a/ocd/packages/model/src/validator/provider/google/resources/GoogleOracledatabaseExadataInfrastructure.ts +++ /dev/null @@ -1,31 +0,0 @@ -/* -** Copyright (c) 2020, 2024, Oracle and/or its affiliates. -** Licensed under the Universal Permissive License v 1.0 as shown at https://oss.oracle.com/licenses/upl. -*/ - -import * as AutoGenerated from './generated/GoogleOracledatabaseExadataInfrastructure' -import * as Model from '../../../../provider/google/resources' -import { GoogleResources } from '../../../../OcdDesign' -import { OcdResourceValidator, OcdValidationResult, OcdValidatorResource } from '../../../OcdResourceValidator' - -export namespace GoogleOracledatabaseExadataInfrastructure { - export function validateResource(resource: Model.GoogleOracledatabaseExadataInfrastructure, resources: GoogleResources): OcdValidationResult[] { - return [...AutoGenerated.GoogleOracledatabaseExadataInfrastructure.validateResource(resource, resources), ...customValidation(resource, resources)] - } - export function isResourceValid(resource: Model.GoogleOracledatabaseExadataInfrastructure, resources: GoogleResources): boolean { - return (validateResource(resource, resources).filter((v: OcdValidationResult) => !v.valid).length > 0) - } - export function hasErrors(resource: Model.GoogleOracledatabaseExadataInfrastructure, resources: GoogleResources): boolean { - return (validateResource(resource, resources).filter((v: OcdValidationResult) => v.type === 'error').length > 0) - } - export function hasWarnings(resource: Model.GoogleOracledatabaseExadataInfrastructure, resources: GoogleResources): boolean { - return (validateResource(resource, resources).filter((v: OcdValidationResult) => v.type === 'warning').length > 0) - } - export function hasInformation(resource: Model.GoogleOracledatabaseExadataInfrastructure, resources: GoogleResources): boolean { - return (validateResource(resource, resources).filter((v: OcdValidationResult) => v.type === 'information').length > 0) - } - function customValidation(resource: Model.GoogleOracledatabaseExadataInfrastructure, resources: GoogleResources): OcdValidationResult[] { - const results: OcdValidationResult[] = [] - return results - } -} diff --git a/ocd/packages/model/src/validator/provider/oci/resources/OciAnalyticsInstance.ts b/ocd/packages/model/src/validator/provider/oci/resources/OciAnalyticsInstance.ts index 25cb8fb07..fe74161da 100644 --- a/ocd/packages/model/src/validator/provider/oci/resources/OciAnalyticsInstance.ts +++ b/ocd/packages/model/src/validator/provider/oci/resources/OciAnalyticsInstance.ts @@ -6,7 +6,7 @@ import * as AutoGenerated from './generated/OciAnalyticsInstance' import * as Model from '../../../../provider/oci/resources' import { OciResources } from '../../../../OcdDesign' -import { OcdResourceValidator, OcdValidationResult, OcdValidatorResource } from '../../../OcdResourceValidator' +import { OcdValidationResult } from '../../../OcdResourceValidator' export namespace OciAnalyticsInstance { export function validateResource(resource: Model.OciAnalyticsInstance, resources: OciResources): OcdValidationResult[] { diff --git a/ocd/packages/model/src/validator/provider/oci/resources/OciAutonomousDatabase.ts b/ocd/packages/model/src/validator/provider/oci/resources/OciAutonomousDatabase.ts index f817e98ae..7783e5eb4 100644 --- a/ocd/packages/model/src/validator/provider/oci/resources/OciAutonomousDatabase.ts +++ b/ocd/packages/model/src/validator/provider/oci/resources/OciAutonomousDatabase.ts @@ -6,7 +6,7 @@ import * as AutoGenerated from './generated/OciAutonomousDatabase' import * as Model from '../../../../provider/oci/resources' import { OciResources } from '../../../../OcdDesign' -import { OcdResourceValidator, OcdValidationResult, OcdValidatorResource } from '../../../OcdResourceValidator' +import { OcdValidationResult } from '../../../OcdResourceValidator' export namespace OciAutonomousDatabase { export function validateResource(resource: Model.OciAutonomousDatabase, resources: OciResources): OcdValidationResult[] { diff --git a/ocd/packages/model/src/validator/provider/oci/resources/OciBastion.ts b/ocd/packages/model/src/validator/provider/oci/resources/OciBastion.ts index 81032ed61..5bea6c478 100644 --- a/ocd/packages/model/src/validator/provider/oci/resources/OciBastion.ts +++ b/ocd/packages/model/src/validator/provider/oci/resources/OciBastion.ts @@ -6,7 +6,7 @@ import * as AutoGenerated from './generated/OciBastion' import * as Model from '../../../../provider/oci/resources' import { OciResources } from '../../../../OcdDesign' -import { OcdResourceValidator, OcdValidationResult, OcdValidatorResource } from '../../../OcdResourceValidator' +import { OcdValidationResult } from '../../../OcdResourceValidator' export namespace OciBastion { export function validateResource(resource: Model.OciBastion, resources: OciResources): OcdValidationResult[] { diff --git a/ocd/packages/model/src/validator/provider/oci/resources/OciBootVolume.ts b/ocd/packages/model/src/validator/provider/oci/resources/OciBootVolume.ts index fc3dc6a4c..be66548a1 100644 --- a/ocd/packages/model/src/validator/provider/oci/resources/OciBootVolume.ts +++ b/ocd/packages/model/src/validator/provider/oci/resources/OciBootVolume.ts @@ -6,7 +6,7 @@ import * as AutoGenerated from './generated/OciBootVolume' import * as Model from '../../../../provider/oci/resources' import { OciResources } from '../../../../OcdDesign' -import { OcdResourceValidator, OcdValidationResult, OcdValidatorResource } from '../../../OcdResourceValidator' +import { OcdValidationResult } from '../../../OcdResourceValidator' export namespace OciBootVolume { export function validateResource(resource: Model.OciBootVolume, resources: OciResources): OcdValidationResult[] { diff --git a/ocd/packages/model/src/validator/provider/oci/resources/OciBootVolumeAttachment.ts b/ocd/packages/model/src/validator/provider/oci/resources/OciBootVolumeAttachment.ts index 79f62254c..f27570ad4 100644 --- a/ocd/packages/model/src/validator/provider/oci/resources/OciBootVolumeAttachment.ts +++ b/ocd/packages/model/src/validator/provider/oci/resources/OciBootVolumeAttachment.ts @@ -6,7 +6,7 @@ import * as AutoGenerated from './generated/OciBootVolumeAttachment' import * as Model from '../../../../provider/oci/resources' import { OciResources } from '../../../../OcdDesign' -import { OcdResourceValidator, OcdValidationResult, OcdValidatorResource } from '../../../OcdResourceValidator' +import { OcdValidationResult } from '../../../OcdResourceValidator' export namespace OciBootVolumeAttachment { export function validateResource(resource: Model.OciBootVolumeAttachment, resources: OciResources): OcdValidationResult[] { diff --git a/ocd/packages/model/src/validator/provider/oci/resources/OciBucket.ts b/ocd/packages/model/src/validator/provider/oci/resources/OciBucket.ts index b8318ad6a..25fdc56c9 100644 --- a/ocd/packages/model/src/validator/provider/oci/resources/OciBucket.ts +++ b/ocd/packages/model/src/validator/provider/oci/resources/OciBucket.ts @@ -6,7 +6,7 @@ import * as AutoGenerated from './generated/OciBucket' import * as Model from '../../../../provider/oci/resources' import { OciResources } from '../../../../OcdDesign' -import { OcdResourceValidator, OcdValidationResult, OcdValidatorResource } from '../../../OcdResourceValidator' +import { OcdValidationResult } from '../../../OcdResourceValidator' export namespace OciBucket { export function validateResource(resource: Model.OciBucket, resources: OciResources): OcdValidationResult[] { diff --git a/ocd/packages/model/src/validator/provider/oci/resources/OciCompartment.ts b/ocd/packages/model/src/validator/provider/oci/resources/OciCompartment.ts index c6f48c7d6..8c86100c4 100644 --- a/ocd/packages/model/src/validator/provider/oci/resources/OciCompartment.ts +++ b/ocd/packages/model/src/validator/provider/oci/resources/OciCompartment.ts @@ -6,7 +6,7 @@ import * as AutoGenerated from './generated/OciCompartment' import * as Model from '../../../../provider/oci/resources' import { OciResources } from '../../../../OcdDesign' -import { OcdResourceValidator, OcdValidationResult, OcdValidatorResource } from '../../../OcdResourceValidator' +import { OcdValidationResult } from '../../../OcdResourceValidator' export namespace OciCompartment { export function validateResource(resource: Model.OciCompartment, resources: OciResources): OcdValidationResult[] { diff --git a/ocd/packages/model/src/validator/provider/oci/resources/OciCpe.ts b/ocd/packages/model/src/validator/provider/oci/resources/OciCpe.ts index d27827862..dce97cc13 100644 --- a/ocd/packages/model/src/validator/provider/oci/resources/OciCpe.ts +++ b/ocd/packages/model/src/validator/provider/oci/resources/OciCpe.ts @@ -6,7 +6,7 @@ import * as AutoGenerated from './generated/OciCpe' import * as Model from '../../../../provider/oci/resources' import { OciResources } from '../../../../OcdDesign' -import { OcdResourceValidator, OcdValidationResult, OcdValidatorResource } from '../../../OcdResourceValidator' +import { OcdValidationResult } from '../../../OcdResourceValidator' export namespace OciCpe { export function validateResource(resource: Model.OciCpe, resources: OciResources): OcdValidationResult[] { diff --git a/ocd/packages/model/src/validator/provider/oci/resources/OciDbSystem.ts b/ocd/packages/model/src/validator/provider/oci/resources/OciDbSystem.ts index 499b6a6eb..e8f3bfa97 100644 --- a/ocd/packages/model/src/validator/provider/oci/resources/OciDbSystem.ts +++ b/ocd/packages/model/src/validator/provider/oci/resources/OciDbSystem.ts @@ -6,7 +6,7 @@ import * as AutoGenerated from './generated/OciDbSystem' import * as Model from '../../../../provider/oci/resources' import { OciResources } from '../../../../OcdDesign' -import { OcdResourceValidator, OcdValidationResult, OcdValidatorResource } from '../../../OcdResourceValidator' +import { OcdValidationResult } from '../../../OcdResourceValidator' export namespace OciDbSystem { export function validateResource(resource: Model.OciDbSystem, resources: OciResources): OcdValidationResult[] { diff --git a/ocd/packages/model/src/validator/provider/oci/resources/OciDrg.ts b/ocd/packages/model/src/validator/provider/oci/resources/OciDrg.ts index c09a7cd9c..3daeb12cb 100644 --- a/ocd/packages/model/src/validator/provider/oci/resources/OciDrg.ts +++ b/ocd/packages/model/src/validator/provider/oci/resources/OciDrg.ts @@ -6,7 +6,7 @@ import * as AutoGenerated from './generated/OciDrg' import * as Model from '../../../../provider/oci/resources' import { OciResources } from '../../../../OcdDesign' -import { OcdResourceValidator, OcdValidationResult, OcdValidatorResource } from '../../../OcdResourceValidator' +import { OcdValidationResult } from '../../../OcdResourceValidator' export namespace OciDrg { export function validateResource(resource: Model.OciDrg, resources: OciResources): OcdValidationResult[] { diff --git a/ocd/packages/model/src/validator/provider/oci/resources/OciDrgAttachment.ts b/ocd/packages/model/src/validator/provider/oci/resources/OciDrgAttachment.ts index 4c0c0f071..fd00e84b7 100644 --- a/ocd/packages/model/src/validator/provider/oci/resources/OciDrgAttachment.ts +++ b/ocd/packages/model/src/validator/provider/oci/resources/OciDrgAttachment.ts @@ -6,7 +6,7 @@ import * as AutoGenerated from './generated/OciDrgAttachment' import * as Model from '../../../../provider/oci/resources' import { OciResources } from '../../../../OcdDesign' -import { OcdResourceValidator, OcdValidationResult, OcdValidatorResource } from '../../../OcdResourceValidator' +import { OcdValidationResult } from '../../../OcdResourceValidator' export namespace OciDrgAttachment { export function validateResource(resource: Model.OciDrgAttachment, resources: OciResources): OcdValidationResult[] { diff --git a/ocd/packages/model/src/validator/provider/oci/resources/OciDrgRouteDistribution.ts b/ocd/packages/model/src/validator/provider/oci/resources/OciDrgRouteDistribution.ts index a5a0e8d60..6bd8e3450 100644 --- a/ocd/packages/model/src/validator/provider/oci/resources/OciDrgRouteDistribution.ts +++ b/ocd/packages/model/src/validator/provider/oci/resources/OciDrgRouteDistribution.ts @@ -6,7 +6,7 @@ import * as AutoGenerated from './generated/OciDrgRouteDistribution' import * as Model from '../../../../provider/oci/resources' import { OciResources } from '../../../../OcdDesign' -import { OcdResourceValidator, OcdValidationResult, OcdValidatorResource } from '../../../OcdResourceValidator' +import { OcdValidationResult } from '../../../OcdResourceValidator' export namespace OciDrgRouteDistribution { export function validateResource(resource: Model.OciDrgRouteDistribution, resources: OciResources): OcdValidationResult[] { diff --git a/ocd/packages/model/src/validator/provider/oci/resources/OciDrgRouteDistributionStatement.ts b/ocd/packages/model/src/validator/provider/oci/resources/OciDrgRouteDistributionStatement.ts index 8db300a5a..a8824250c 100644 --- a/ocd/packages/model/src/validator/provider/oci/resources/OciDrgRouteDistributionStatement.ts +++ b/ocd/packages/model/src/validator/provider/oci/resources/OciDrgRouteDistributionStatement.ts @@ -6,7 +6,7 @@ import * as AutoGenerated from './generated/OciDrgRouteDistributionStatement' import * as Model from '../../../../provider/oci/resources' import { OciResources } from '../../../../OcdDesign' -import { OcdResourceValidator, OcdValidationResult, OcdValidatorResource } from '../../../OcdResourceValidator' +import { OcdValidationResult } from '../../../OcdResourceValidator' export namespace OciDrgRouteDistributionStatement { export function validateResource(resource: Model.OciDrgRouteDistributionStatement, resources: OciResources): OcdValidationResult[] { diff --git a/ocd/packages/model/src/validator/provider/oci/resources/OciDrgRouteTable.ts b/ocd/packages/model/src/validator/provider/oci/resources/OciDrgRouteTable.ts index 347e67ab4..ee3b61d5b 100644 --- a/ocd/packages/model/src/validator/provider/oci/resources/OciDrgRouteTable.ts +++ b/ocd/packages/model/src/validator/provider/oci/resources/OciDrgRouteTable.ts @@ -6,7 +6,7 @@ import * as AutoGenerated from './generated/OciDrgRouteTable' import * as Model from '../../../../provider/oci/resources' import { OciResources } from '../../../../OcdDesign' -import { OcdResourceValidator, OcdValidationResult, OcdValidatorResource } from '../../../OcdResourceValidator' +import { OcdValidationResult } from '../../../OcdResourceValidator' export namespace OciDrgRouteTable { export function validateResource(resource: Model.OciDrgRouteTable, resources: OciResources): OcdValidationResult[] { diff --git a/ocd/packages/model/src/validator/provider/oci/resources/OciDrgRouteTableRouteRule.ts b/ocd/packages/model/src/validator/provider/oci/resources/OciDrgRouteTableRouteRule.ts index a33a446c2..623d8a654 100644 --- a/ocd/packages/model/src/validator/provider/oci/resources/OciDrgRouteTableRouteRule.ts +++ b/ocd/packages/model/src/validator/provider/oci/resources/OciDrgRouteTableRouteRule.ts @@ -6,7 +6,7 @@ import * as AutoGenerated from './generated/OciDrgRouteTableRouteRule' import * as Model from '../../../../provider/oci/resources' import { OciResources } from '../../../../OcdDesign' -import { OcdResourceValidator, OcdValidationResult, OcdValidatorResource } from '../../../OcdResourceValidator' +import { OcdValidationResult } from '../../../OcdResourceValidator' export namespace OciDrgRouteTableRouteRule { export function validateResource(resource: Model.OciDrgRouteTableRouteRule, resources: OciResources): OcdValidationResult[] { diff --git a/ocd/packages/model/src/validator/provider/oci/resources/OciDynamicGroup.ts b/ocd/packages/model/src/validator/provider/oci/resources/OciDynamicGroup.ts index de6792b8d..e4c180415 100644 --- a/ocd/packages/model/src/validator/provider/oci/resources/OciDynamicGroup.ts +++ b/ocd/packages/model/src/validator/provider/oci/resources/OciDynamicGroup.ts @@ -6,7 +6,7 @@ import * as AutoGenerated from './generated/OciDynamicGroup' import * as Model from '../../../../provider/oci/resources' import { OciResources } from '../../../../OcdDesign' -import { OcdResourceValidator, OcdValidationResult, OcdValidatorResource } from '../../../OcdResourceValidator' +import { OcdValidationResult } from '../../../OcdResourceValidator' export namespace OciDynamicGroup { export function validateResource(resource: Model.OciDynamicGroup, resources: OciResources): OcdValidationResult[] { diff --git a/ocd/packages/model/src/validator/provider/oci/resources/OciFileSystem.ts b/ocd/packages/model/src/validator/provider/oci/resources/OciFileSystem.ts index e71ec5c80..5e4e0ef86 100644 --- a/ocd/packages/model/src/validator/provider/oci/resources/OciFileSystem.ts +++ b/ocd/packages/model/src/validator/provider/oci/resources/OciFileSystem.ts @@ -6,7 +6,7 @@ import * as AutoGenerated from './generated/OciFileSystem' import * as Model from '../../../../provider/oci/resources' import { OciResources } from '../../../../OcdDesign' -import { OcdResourceValidator, OcdValidationResult, OcdValidatorResource } from '../../../OcdResourceValidator' +import { OcdValidationResult } from '../../../OcdResourceValidator' export namespace OciFileSystem { export function validateResource(resource: Model.OciFileSystem, resources: OciResources): OcdValidationResult[] { diff --git a/ocd/packages/model/src/validator/provider/oci/resources/OciFileSystemExport.ts b/ocd/packages/model/src/validator/provider/oci/resources/OciFileSystemExport.ts index 6ebc62e1d..6ce080e6f 100644 --- a/ocd/packages/model/src/validator/provider/oci/resources/OciFileSystemExport.ts +++ b/ocd/packages/model/src/validator/provider/oci/resources/OciFileSystemExport.ts @@ -6,7 +6,7 @@ import * as AutoGenerated from './generated/OciFileSystemExport' import * as Model from '../../../../provider/oci/resources' import { OciResources } from '../../../../OcdDesign' -import { OcdResourceValidator, OcdValidationResult, OcdValidatorResource } from '../../../OcdResourceValidator' +import { OcdValidationResult } from '../../../OcdResourceValidator' export namespace OciFileSystemExport { export function validateResource(resource: Model.OciFileSystemExport, resources: OciResources): OcdValidationResult[] { diff --git a/ocd/packages/model/src/validator/provider/oci/resources/OciFileSystemExportSet.ts b/ocd/packages/model/src/validator/provider/oci/resources/OciFileSystemExportSet.ts index 683583cc7..3b06bf0cc 100644 --- a/ocd/packages/model/src/validator/provider/oci/resources/OciFileSystemExportSet.ts +++ b/ocd/packages/model/src/validator/provider/oci/resources/OciFileSystemExportSet.ts @@ -6,7 +6,7 @@ import * as AutoGenerated from './generated/OciFileSystemExportSet' import * as Model from '../../../../provider/oci/resources' import { OciResources } from '../../../../OcdDesign' -import { OcdResourceValidator, OcdValidationResult, OcdValidatorResource } from '../../../OcdResourceValidator' +import { OcdValidationResult } from '../../../OcdResourceValidator' export namespace OciFileSystemExportSet { export function validateResource(resource: Model.OciFileSystemExportSet, resources: OciResources): OcdValidationResult[] { diff --git a/ocd/packages/model/src/validator/provider/oci/resources/OciGroup.ts b/ocd/packages/model/src/validator/provider/oci/resources/OciGroup.ts index 33c7f15fd..9af759db3 100644 --- a/ocd/packages/model/src/validator/provider/oci/resources/OciGroup.ts +++ b/ocd/packages/model/src/validator/provider/oci/resources/OciGroup.ts @@ -6,7 +6,7 @@ import * as AutoGenerated from './generated/OciGroup' import * as Model from '../../../../provider/oci/resources' import { OciResources } from '../../../../OcdDesign' -import { OcdResourceValidator, OcdValidationResult, OcdValidatorResource } from '../../../OcdResourceValidator' +import { OcdValidationResult } from '../../../OcdResourceValidator' export namespace OciGroup { export function validateResource(resource: Model.OciGroup, resources: OciResources): OcdValidationResult[] { diff --git a/ocd/packages/model/src/validator/provider/oci/resources/OciInstance.ts b/ocd/packages/model/src/validator/provider/oci/resources/OciInstance.ts index 7e3a92559..6e6a351e8 100644 --- a/ocd/packages/model/src/validator/provider/oci/resources/OciInstance.ts +++ b/ocd/packages/model/src/validator/provider/oci/resources/OciInstance.ts @@ -6,7 +6,7 @@ import * as AutoGenerated from './generated/OciInstance' import * as Model from '../../../../provider/oci/resources' import { OciResources } from '../../../../OcdDesign' -import { OcdResourceValidator, OcdValidationResult, OcdValidatorResource } from '../../../OcdResourceValidator' +import { OcdValidationResult } from '../../../OcdResourceValidator' export namespace OciInstance { export function validateResource(resource: Model.OciInstance, resources: OciResources): OcdValidationResult[] { diff --git a/ocd/packages/model/src/validator/provider/oci/resources/OciInternetGateway.ts b/ocd/packages/model/src/validator/provider/oci/resources/OciInternetGateway.ts index d62c03e04..c61c17620 100644 --- a/ocd/packages/model/src/validator/provider/oci/resources/OciInternetGateway.ts +++ b/ocd/packages/model/src/validator/provider/oci/resources/OciInternetGateway.ts @@ -6,7 +6,7 @@ import * as AutoGenerated from './generated/OciInternetGateway' import * as Model from '../../../../provider/oci/resources' import { OciResources } from '../../../../OcdDesign' -import { OcdResourceValidator, OcdValidationResult, OcdValidatorResource } from '../../../OcdResourceValidator' +import { OcdValidationResult } from '../../../OcdResourceValidator' export namespace OciInternetGateway { export function validateResource(resource: Model.OciInternetGateway, resources: OciResources): OcdValidationResult[] { diff --git a/ocd/packages/model/src/validator/provider/oci/resources/OciIpsec.ts b/ocd/packages/model/src/validator/provider/oci/resources/OciIpsec.ts index 135ff8b02..22deb5993 100644 --- a/ocd/packages/model/src/validator/provider/oci/resources/OciIpsec.ts +++ b/ocd/packages/model/src/validator/provider/oci/resources/OciIpsec.ts @@ -6,7 +6,7 @@ import * as AutoGenerated from './generated/OciIpsec' import * as Model from '../../../../provider/oci/resources' import { OciResources } from '../../../../OcdDesign' -import { OcdResourceValidator, OcdValidationResult, OcdValidatorResource } from '../../../OcdResourceValidator' +import { OcdValidationResult } from '../../../OcdResourceValidator' export namespace OciIpsec { export function validateResource(resource: Model.OciIpsec, resources: OciResources): OcdValidationResult[] { diff --git a/ocd/packages/model/src/validator/provider/oci/resources/OciKey.ts b/ocd/packages/model/src/validator/provider/oci/resources/OciKey.ts index 2365e1cd9..83d5c70e0 100644 --- a/ocd/packages/model/src/validator/provider/oci/resources/OciKey.ts +++ b/ocd/packages/model/src/validator/provider/oci/resources/OciKey.ts @@ -6,7 +6,7 @@ import * as AutoGenerated from './generated/OciKey' import * as Model from '../../../../provider/oci/resources' import { OciResources } from '../../../../OcdDesign' -import { OcdResourceValidator, OcdValidationResult, OcdValidatorResource } from '../../../OcdResourceValidator' +import { OcdValidationResult } from '../../../OcdResourceValidator' export namespace OciKey { export function validateResource(resource: Model.OciKey, resources: OciResources): OcdValidationResult[] { diff --git a/ocd/packages/model/src/validator/provider/oci/resources/OciLoadBalancer.ts b/ocd/packages/model/src/validator/provider/oci/resources/OciLoadBalancer.ts index c731144b6..68ceae06e 100644 --- a/ocd/packages/model/src/validator/provider/oci/resources/OciLoadBalancer.ts +++ b/ocd/packages/model/src/validator/provider/oci/resources/OciLoadBalancer.ts @@ -5,8 +5,8 @@ import * as AutoGenerated from './generated/OciLoadBalancer' import * as Model from '../../../../provider/oci/resources' -import { OcdResources, OciResources } from '../../../../OcdDesign' -import { OcdResourceValidator, OcdValidationResult, OcdValidatorResource } from '../../../OcdResourceValidator' +import { OciResources } from '../../../../OcdDesign' +import { OcdValidationResult, OcdValidatorResource } from '../../../OcdResourceValidator' export namespace OciLoadBalancer { export function validateResource(resource: Model.OciLoadBalancer, resources: OciResources): OcdValidationResult[] { diff --git a/ocd/packages/model/src/validator/provider/oci/resources/OciLoadBalancerBackend.ts b/ocd/packages/model/src/validator/provider/oci/resources/OciLoadBalancerBackend.ts index c4fd712ef..889898ade 100644 --- a/ocd/packages/model/src/validator/provider/oci/resources/OciLoadBalancerBackend.ts +++ b/ocd/packages/model/src/validator/provider/oci/resources/OciLoadBalancerBackend.ts @@ -6,7 +6,7 @@ import * as AutoGenerated from './generated/OciLoadBalancerBackend' import * as Model from '../../../../provider/oci/resources' import { OciResources } from '../../../../OcdDesign' -import { OcdResourceValidator, OcdValidationResult, OcdValidatorResource } from '../../../OcdResourceValidator' +import { OcdValidationResult } from '../../../OcdResourceValidator' export namespace OciLoadBalancerBackend { export function validateResource(resource: Model.OciLoadBalancerBackend, resources: OciResources): OcdValidationResult[] { diff --git a/ocd/packages/model/src/validator/provider/oci/resources/OciLoadBalancerBackendSet.ts b/ocd/packages/model/src/validator/provider/oci/resources/OciLoadBalancerBackendSet.ts index fe1183632..7475efe80 100644 --- a/ocd/packages/model/src/validator/provider/oci/resources/OciLoadBalancerBackendSet.ts +++ b/ocd/packages/model/src/validator/provider/oci/resources/OciLoadBalancerBackendSet.ts @@ -6,7 +6,7 @@ import * as AutoGenerated from './generated/OciLoadBalancerBackendSet' import * as Model from '../../../../provider/oci/resources' import { OciResources } from '../../../../OcdDesign' -import { OcdResourceValidator, OcdValidationResult, OcdValidatorResource } from '../../../OcdResourceValidator' +import { OcdValidationResult } from '../../../OcdResourceValidator' export namespace OciLoadBalancerBackendSet { export function validateResource(resource: Model.OciLoadBalancerBackendSet, resources: OciResources): OcdValidationResult[] { diff --git a/ocd/packages/model/src/validator/provider/oci/resources/OciLoadBalancerListener.ts b/ocd/packages/model/src/validator/provider/oci/resources/OciLoadBalancerListener.ts index a1b09b0e6..7db8a1a20 100644 --- a/ocd/packages/model/src/validator/provider/oci/resources/OciLoadBalancerListener.ts +++ b/ocd/packages/model/src/validator/provider/oci/resources/OciLoadBalancerListener.ts @@ -6,7 +6,7 @@ import * as AutoGenerated from './generated/OciLoadBalancerListener' import * as Model from '../../../../provider/oci/resources' import { OciResources } from '../../../../OcdDesign' -import { OcdResourceValidator, OcdValidationResult, OcdValidatorResource } from '../../../OcdResourceValidator' +import { OcdValidationResult } from '../../../OcdResourceValidator' export namespace OciLoadBalancerListener { export function validateResource(resource: Model.OciLoadBalancerListener, resources: OciResources): OcdValidationResult[] { diff --git a/ocd/packages/model/src/validator/provider/oci/resources/OciLocalPeeringGateway.ts b/ocd/packages/model/src/validator/provider/oci/resources/OciLocalPeeringGateway.ts index 4b9ab3a95..b2ebe7efc 100644 --- a/ocd/packages/model/src/validator/provider/oci/resources/OciLocalPeeringGateway.ts +++ b/ocd/packages/model/src/validator/provider/oci/resources/OciLocalPeeringGateway.ts @@ -6,7 +6,7 @@ import * as AutoGenerated from './generated/OciLocalPeeringGateway' import * as Model from '../../../../provider/oci/resources' import { OciResources } from '../../../../OcdDesign' -import { OcdResourceValidator, OcdValidationResult, OcdValidatorResource } from '../../../OcdResourceValidator' +import { OcdValidationResult } from '../../../OcdResourceValidator' export namespace OciLocalPeeringGateway { export function validateResource(resource: Model.OciLocalPeeringGateway, resources: OciResources): OcdValidationResult[] { diff --git a/ocd/packages/model/src/validator/provider/oci/resources/OciMountTarget.ts b/ocd/packages/model/src/validator/provider/oci/resources/OciMountTarget.ts index 52df0efb6..99825df5f 100644 --- a/ocd/packages/model/src/validator/provider/oci/resources/OciMountTarget.ts +++ b/ocd/packages/model/src/validator/provider/oci/resources/OciMountTarget.ts @@ -6,7 +6,7 @@ import * as AutoGenerated from './generated/OciMountTarget' import * as Model from '../../../../provider/oci/resources' import { OciResources } from '../../../../OcdDesign' -import { OcdResourceValidator, OcdValidationResult, OcdValidatorResource } from '../../../OcdResourceValidator' +import { OcdValidationResult } from '../../../OcdResourceValidator' export namespace OciMountTarget { export function validateResource(resource: Model.OciMountTarget, resources: OciResources): OcdValidationResult[] { diff --git a/ocd/packages/model/src/validator/provider/oci/resources/OciMysqlDbSystem.ts b/ocd/packages/model/src/validator/provider/oci/resources/OciMysqlDbSystem.ts index f83c56d7d..7704e9df2 100644 --- a/ocd/packages/model/src/validator/provider/oci/resources/OciMysqlDbSystem.ts +++ b/ocd/packages/model/src/validator/provider/oci/resources/OciMysqlDbSystem.ts @@ -6,7 +6,7 @@ import * as AutoGenerated from './generated/OciMysqlDbSystem' import * as Model from '../../../../provider/oci/resources' import { OciResources } from '../../../../OcdDesign' -import { OcdResourceValidator, OcdValidationResult, OcdValidatorResource } from '../../../OcdResourceValidator' +import { OcdValidationResult } from '../../../OcdResourceValidator' export namespace OciMysqlDbSystem { export function validateResource(resource: Model.OciMysqlDbSystem, resources: OciResources): OcdValidationResult[] { diff --git a/ocd/packages/model/src/validator/provider/oci/resources/OciNatGateway.ts b/ocd/packages/model/src/validator/provider/oci/resources/OciNatGateway.ts index 8c00690c3..a864401a8 100644 --- a/ocd/packages/model/src/validator/provider/oci/resources/OciNatGateway.ts +++ b/ocd/packages/model/src/validator/provider/oci/resources/OciNatGateway.ts @@ -6,7 +6,7 @@ import * as AutoGenerated from './generated/OciNatGateway' import * as Model from '../../../../provider/oci/resources' import { OciResources } from '../../../../OcdDesign' -import { OcdResourceValidator, OcdValidationResult, OcdValidatorResource } from '../../../OcdResourceValidator' +import { OcdValidationResult } from '../../../OcdResourceValidator' export namespace OciNatGateway { export function validateResource(resource: Model.OciNatGateway, resources: OciResources): OcdValidationResult[] { diff --git a/ocd/packages/model/src/validator/provider/oci/resources/OciNetworkLoadBalancer.ts b/ocd/packages/model/src/validator/provider/oci/resources/OciNetworkLoadBalancer.ts index 3a46786ed..8dc592c66 100644 --- a/ocd/packages/model/src/validator/provider/oci/resources/OciNetworkLoadBalancer.ts +++ b/ocd/packages/model/src/validator/provider/oci/resources/OciNetworkLoadBalancer.ts @@ -6,7 +6,7 @@ import * as AutoGenerated from './generated/OciNetworkLoadBalancer' import * as Model from '../../../../provider/oci/resources' import { OciResources } from '../../../../OcdDesign' -import { OcdResourceValidator, OcdValidationResult, OcdValidatorResource } from '../../../OcdResourceValidator' +import { OcdValidationResult } from '../../../OcdResourceValidator' export namespace OciNetworkLoadBalancer { export function validateResource(resource: Model.OciNetworkLoadBalancer, resources: OciResources): OcdValidationResult[] { diff --git a/ocd/packages/model/src/validator/provider/oci/resources/OciNetworkSecurityGroup.ts b/ocd/packages/model/src/validator/provider/oci/resources/OciNetworkSecurityGroup.ts index 118e935b6..951b7b98b 100644 --- a/ocd/packages/model/src/validator/provider/oci/resources/OciNetworkSecurityGroup.ts +++ b/ocd/packages/model/src/validator/provider/oci/resources/OciNetworkSecurityGroup.ts @@ -6,7 +6,7 @@ import * as AutoGenerated from './generated/OciNetworkSecurityGroup' import * as Model from '../../../../provider/oci/resources' import { OciResources } from '../../../../OcdDesign' -import { OcdResourceValidator, OcdValidationResult, OcdValidatorResource } from '../../../OcdResourceValidator' +import { OcdValidationResult } from '../../../OcdResourceValidator' export namespace OciNetworkSecurityGroup { export function validateResource(resource: Model.OciNetworkSecurityGroup, resources: OciResources): OcdValidationResult[] { diff --git a/ocd/packages/model/src/validator/provider/oci/resources/OciNetworkSecurityGroupSecurityRule.ts b/ocd/packages/model/src/validator/provider/oci/resources/OciNetworkSecurityGroupSecurityRule.ts index 5abfbcf50..3c77fb659 100644 --- a/ocd/packages/model/src/validator/provider/oci/resources/OciNetworkSecurityGroupSecurityRule.ts +++ b/ocd/packages/model/src/validator/provider/oci/resources/OciNetworkSecurityGroupSecurityRule.ts @@ -6,7 +6,7 @@ import * as AutoGenerated from './generated/OciNetworkSecurityGroupSecurityRule' import * as Model from '../../../../provider/oci/resources' import { OciResources } from '../../../../OcdDesign' -import { OcdResourceValidator, OcdValidationResult, OcdValidatorResource } from '../../../OcdResourceValidator' +import { OcdValidationResult } from '../../../OcdResourceValidator' export namespace OciNetworkSecurityGroupSecurityRule { export function validateResource(resource: Model.OciNetworkSecurityGroupSecurityRule, resources: OciResources): OcdValidationResult[] { diff --git a/ocd/packages/model/src/validator/provider/oci/resources/OciNosqlIndex.ts b/ocd/packages/model/src/validator/provider/oci/resources/OciNosqlIndex.ts index 2459f2955..4a776d77a 100644 --- a/ocd/packages/model/src/validator/provider/oci/resources/OciNosqlIndex.ts +++ b/ocd/packages/model/src/validator/provider/oci/resources/OciNosqlIndex.ts @@ -6,7 +6,7 @@ import * as AutoGenerated from './generated/OciNosqlIndex' import * as Model from '../../../../provider/oci/resources' import { OciResources } from '../../../../OcdDesign' -import { OcdResourceValidator, OcdValidationResult, OcdValidatorResource } from '../../../OcdResourceValidator' +import { OcdValidationResult } from '../../../OcdResourceValidator' export namespace OciNosqlIndex { export function validateResource(resource: Model.OciNosqlIndex, resources: OciResources): OcdValidationResult[] { diff --git a/ocd/packages/model/src/validator/provider/oci/resources/OciNosqlTable.ts b/ocd/packages/model/src/validator/provider/oci/resources/OciNosqlTable.ts index 464c7729c..6ff42a55e 100644 --- a/ocd/packages/model/src/validator/provider/oci/resources/OciNosqlTable.ts +++ b/ocd/packages/model/src/validator/provider/oci/resources/OciNosqlTable.ts @@ -6,7 +6,7 @@ import * as AutoGenerated from './generated/OciNosqlTable' import * as Model from '../../../../provider/oci/resources' import { OciResources } from '../../../../OcdDesign' -import { OcdResourceValidator, OcdValidationResult, OcdValidatorResource } from '../../../OcdResourceValidator' +import { OcdValidationResult } from '../../../OcdResourceValidator' export namespace OciNosqlTable { export function validateResource(resource: Model.OciNosqlTable, resources: OciResources): OcdValidationResult[] { diff --git a/ocd/packages/model/src/validator/provider/oci/resources/OciOkeCluster.ts b/ocd/packages/model/src/validator/provider/oci/resources/OciOkeCluster.ts index e6c7fa260..d6710e119 100644 --- a/ocd/packages/model/src/validator/provider/oci/resources/OciOkeCluster.ts +++ b/ocd/packages/model/src/validator/provider/oci/resources/OciOkeCluster.ts @@ -6,7 +6,7 @@ import * as AutoGenerated from './generated/OciOkeCluster' import * as Model from '../../../../provider/oci/resources' import { OciResources } from '../../../../OcdDesign' -import { OcdResourceValidator, OcdValidationResult, OcdValidatorResource } from '../../../OcdResourceValidator' +import { OcdValidationResult } from '../../../OcdResourceValidator' export namespace OciOkeCluster { export function validateResource(resource: Model.OciOkeCluster, resources: OciResources): OcdValidationResult[] { diff --git a/ocd/packages/model/src/validator/provider/oci/resources/OciOkeNodePool.ts b/ocd/packages/model/src/validator/provider/oci/resources/OciOkeNodePool.ts index a8ba522b1..b673c4639 100644 --- a/ocd/packages/model/src/validator/provider/oci/resources/OciOkeNodePool.ts +++ b/ocd/packages/model/src/validator/provider/oci/resources/OciOkeNodePool.ts @@ -6,7 +6,7 @@ import * as AutoGenerated from './generated/OciOkeNodePool' import * as Model from '../../../../provider/oci/resources' import { OciResources } from '../../../../OcdDesign' -import { OcdResourceValidator, OcdValidationResult, OcdValidatorResource } from '../../../OcdResourceValidator' +import { OcdValidationResult } from '../../../OcdResourceValidator' export namespace OciOkeNodePool { export function validateResource(resource: Model.OciOkeNodePool, resources: OciResources): OcdValidationResult[] { diff --git a/ocd/packages/model/src/validator/provider/oci/resources/OciPolicy.ts b/ocd/packages/model/src/validator/provider/oci/resources/OciPolicy.ts index 51958bb3e..22d48e1fa 100644 --- a/ocd/packages/model/src/validator/provider/oci/resources/OciPolicy.ts +++ b/ocd/packages/model/src/validator/provider/oci/resources/OciPolicy.ts @@ -6,7 +6,7 @@ import * as AutoGenerated from './generated/OciPolicy' import * as Model from '../../../../provider/oci/resources' import { OciResources } from '../../../../OcdDesign' -import { OcdResourceValidator, OcdValidationResult, OcdValidatorResource } from '../../../OcdResourceValidator' +import { OcdValidationResult } from '../../../OcdResourceValidator' export namespace OciPolicy { export function validateResource(resource: Model.OciPolicy, resources: OciResources): OcdValidationResult[] { diff --git a/ocd/packages/model/src/validator/provider/oci/resources/OciRemotePeeringConnection.ts b/ocd/packages/model/src/validator/provider/oci/resources/OciRemotePeeringConnection.ts index 7501c09ee..7a1f033cf 100644 --- a/ocd/packages/model/src/validator/provider/oci/resources/OciRemotePeeringConnection.ts +++ b/ocd/packages/model/src/validator/provider/oci/resources/OciRemotePeeringConnection.ts @@ -6,7 +6,7 @@ import * as AutoGenerated from './generated/OciRemotePeeringConnection' import * as Model from '../../../../provider/oci/resources' import { OciResources } from '../../../../OcdDesign' -import { OcdResourceValidator, OcdValidationResult, OcdValidatorResource } from '../../../OcdResourceValidator' +import { OcdValidationResult } from '../../../OcdResourceValidator' export namespace OciRemotePeeringConnection { export function validateResource(resource: Model.OciRemotePeeringConnection, resources: OciResources): OcdValidationResult[] { diff --git a/ocd/packages/model/src/validator/provider/oci/resources/OciRouteTable.ts b/ocd/packages/model/src/validator/provider/oci/resources/OciRouteTable.ts index 381417ee5..88f4f807f 100644 --- a/ocd/packages/model/src/validator/provider/oci/resources/OciRouteTable.ts +++ b/ocd/packages/model/src/validator/provider/oci/resources/OciRouteTable.ts @@ -6,7 +6,7 @@ import * as AutoGenerated from './generated/OciRouteTable' import * as Model from '../../../../provider/oci/resources' import { OciResources } from '../../../../OcdDesign' -import { OcdResourceValidator, OcdValidationResult, OcdValidatorResource } from '../../../OcdResourceValidator' +import { OcdValidationResult } from '../../../OcdResourceValidator' export namespace OciRouteTable { export function validateResource(resource: Model.OciRouteTable, resources: OciResources): OcdValidationResult[] { diff --git a/ocd/packages/model/src/validator/provider/oci/resources/OciSecret.ts b/ocd/packages/model/src/validator/provider/oci/resources/OciSecret.ts index 6e908900b..c75dd45ab 100644 --- a/ocd/packages/model/src/validator/provider/oci/resources/OciSecret.ts +++ b/ocd/packages/model/src/validator/provider/oci/resources/OciSecret.ts @@ -6,7 +6,7 @@ import * as AutoGenerated from './generated/OciSecret' import * as Model from '../../../../provider/oci/resources' import { OciResources } from '../../../../OcdDesign' -import { OcdResourceValidator, OcdValidationResult, OcdValidatorResource } from '../../../OcdResourceValidator' +import { OcdValidationResult } from '../../../OcdResourceValidator' export namespace OciSecret { export function validateResource(resource: Model.OciSecret, resources: OciResources): OcdValidationResult[] { diff --git a/ocd/packages/model/src/validator/provider/oci/resources/OciSecurityList.ts b/ocd/packages/model/src/validator/provider/oci/resources/OciSecurityList.ts index c888fb484..de27217f6 100644 --- a/ocd/packages/model/src/validator/provider/oci/resources/OciSecurityList.ts +++ b/ocd/packages/model/src/validator/provider/oci/resources/OciSecurityList.ts @@ -6,7 +6,7 @@ import * as AutoGenerated from './generated/OciSecurityList' import * as Model from '../../../../provider/oci/resources' import { OciResources } from '../../../../OcdDesign' -import { OcdResourceValidator, OcdValidationResult, OcdValidatorResource } from '../../../OcdResourceValidator' +import { OcdValidationResult } from '../../../OcdResourceValidator' export namespace OciSecurityList { export function validateResource(resource: Model.OciSecurityList, resources: OciResources): OcdValidationResult[] { diff --git a/ocd/packages/model/src/validator/provider/oci/resources/OciServiceGateway.ts b/ocd/packages/model/src/validator/provider/oci/resources/OciServiceGateway.ts index bd45e2e21..0b9965059 100644 --- a/ocd/packages/model/src/validator/provider/oci/resources/OciServiceGateway.ts +++ b/ocd/packages/model/src/validator/provider/oci/resources/OciServiceGateway.ts @@ -6,7 +6,7 @@ import * as AutoGenerated from './generated/OciServiceGateway' import * as Model from '../../../../provider/oci/resources' import { OciResources } from '../../../../OcdDesign' -import { OcdResourceValidator, OcdValidationResult, OcdValidatorResource } from '../../../OcdResourceValidator' +import { OcdValidationResult } from '../../../OcdResourceValidator' export namespace OciServiceGateway { export function validateResource(resource: Model.OciServiceGateway, resources: OciResources): OcdValidationResult[] { diff --git a/ocd/packages/model/src/validator/provider/oci/resources/OciSubnet.ts b/ocd/packages/model/src/validator/provider/oci/resources/OciSubnet.ts index 2f0fdef9f..76e108e70 100644 --- a/ocd/packages/model/src/validator/provider/oci/resources/OciSubnet.ts +++ b/ocd/packages/model/src/validator/provider/oci/resources/OciSubnet.ts @@ -6,7 +6,7 @@ import * as AutoGenerated from './generated/OciSubnet' import * as Model from '../../../../provider/oci/resources' import { OciResources } from '../../../../OcdDesign' -import { OcdResourceValidator, OcdValidationResult, OcdValidatorResource } from '../../../OcdResourceValidator' +import { OcdValidationResult } from '../../../OcdResourceValidator' export namespace OciSubnet { export function validateResource(resource: Model.OciSubnet, resources: OciResources): OcdValidationResult[] { diff --git a/ocd/packages/model/src/validator/provider/oci/resources/OciUser.ts b/ocd/packages/model/src/validator/provider/oci/resources/OciUser.ts index de023a6fe..b90beabe6 100644 --- a/ocd/packages/model/src/validator/provider/oci/resources/OciUser.ts +++ b/ocd/packages/model/src/validator/provider/oci/resources/OciUser.ts @@ -6,7 +6,7 @@ import * as AutoGenerated from './generated/OciUser' import * as Model from '../../../../provider/oci/resources' import { OciResources } from '../../../../OcdDesign' -import { OcdResourceValidator, OcdValidationResult, OcdValidatorResource } from '../../../OcdResourceValidator' +import { OcdValidationResult } from '../../../OcdResourceValidator' export namespace OciUser { export function validateResource(resource: Model.OciUser, resources: OciResources): OcdValidationResult[] { diff --git a/ocd/packages/model/src/validator/provider/oci/resources/OciUserGroupMembership.ts b/ocd/packages/model/src/validator/provider/oci/resources/OciUserGroupMembership.ts index bc8155202..1684a6e47 100644 --- a/ocd/packages/model/src/validator/provider/oci/resources/OciUserGroupMembership.ts +++ b/ocd/packages/model/src/validator/provider/oci/resources/OciUserGroupMembership.ts @@ -6,7 +6,7 @@ import * as AutoGenerated from './generated/OciUserGroupMembership' import * as Model from '../../../../provider/oci/resources' import { OciResources } from '../../../../OcdDesign' -import { OcdResourceValidator, OcdValidationResult, OcdValidatorResource } from '../../../OcdResourceValidator' +import { OcdValidationResult } from '../../../OcdResourceValidator' export namespace OciUserGroupMembership { export function validateResource(resource: Model.OciUserGroupMembership, resources: OciResources): OcdValidationResult[] { diff --git a/ocd/packages/model/src/validator/provider/oci/resources/OciVault.ts b/ocd/packages/model/src/validator/provider/oci/resources/OciVault.ts index 7d40328ed..1a4f6b540 100644 --- a/ocd/packages/model/src/validator/provider/oci/resources/OciVault.ts +++ b/ocd/packages/model/src/validator/provider/oci/resources/OciVault.ts @@ -6,7 +6,7 @@ import * as AutoGenerated from './generated/OciVault' import * as Model from '../../../../provider/oci/resources' import { OciResources } from '../../../../OcdDesign' -import { OcdResourceValidator, OcdValidationResult, OcdValidatorResource } from '../../../OcdResourceValidator' +import { OcdValidationResult } from '../../../OcdResourceValidator' export namespace OciVault { export function validateResource(resource: Model.OciVault, resources: OciResources): OcdValidationResult[] { diff --git a/ocd/packages/model/src/validator/provider/oci/resources/OciVnicAttachment.ts b/ocd/packages/model/src/validator/provider/oci/resources/OciVnicAttachment.ts index 93c626a2a..1a059bf20 100644 --- a/ocd/packages/model/src/validator/provider/oci/resources/OciVnicAttachment.ts +++ b/ocd/packages/model/src/validator/provider/oci/resources/OciVnicAttachment.ts @@ -6,7 +6,7 @@ import * as AutoGenerated from './generated/OciVnicAttachment' import * as Model from '../../../../provider/oci/resources' import { OciResources } from '../../../../OcdDesign' -import { OcdResourceValidator, OcdValidationResult, OcdValidatorResource } from '../../../OcdResourceValidator' +import { OcdValidationResult } from '../../../OcdResourceValidator' export namespace OciVnicAttachment { export function validateResource(resource: Model.OciVnicAttachment, resources: OciResources): OcdValidationResult[] { diff --git a/ocd/packages/model/src/validator/provider/oci/resources/OciVolume.ts b/ocd/packages/model/src/validator/provider/oci/resources/OciVolume.ts index cc45c02bf..28ae0ba83 100644 --- a/ocd/packages/model/src/validator/provider/oci/resources/OciVolume.ts +++ b/ocd/packages/model/src/validator/provider/oci/resources/OciVolume.ts @@ -6,7 +6,7 @@ import * as AutoGenerated from './generated/OciVolume' import * as Model from '../../../../provider/oci/resources' import { OciResources } from '../../../../OcdDesign' -import { OcdResourceValidator, OcdValidationResult, OcdValidatorResource } from '../../../OcdResourceValidator' +import { OcdValidationResult } from '../../../OcdResourceValidator' export namespace OciVolume { export function validateResource(resource: Model.OciVolume, resources: OciResources): OcdValidationResult[] { diff --git a/ocd/packages/model/src/validator/provider/oci/resources/OciVolumeAttachment.ts b/ocd/packages/model/src/validator/provider/oci/resources/OciVolumeAttachment.ts index c81715b7e..f81b65c71 100644 --- a/ocd/packages/model/src/validator/provider/oci/resources/OciVolumeAttachment.ts +++ b/ocd/packages/model/src/validator/provider/oci/resources/OciVolumeAttachment.ts @@ -6,7 +6,7 @@ import * as AutoGenerated from './generated/OciVolumeAttachment' import * as Model from '../../../../provider/oci/resources' import { OciResources } from '../../../../OcdDesign' -import { OcdResourceValidator, OcdValidationResult, OcdValidatorResource } from '../../../OcdResourceValidator' +import { OcdValidationResult } from '../../../OcdResourceValidator' export namespace OciVolumeAttachment { export function validateResource(resource: Model.OciVolumeAttachment, resources: OciResources): OcdValidationResult[] { diff --git a/ocd/packages/query/package.json b/ocd/packages/query/package.json index 1f511090b..0098b1fdb 100644 --- a/ocd/packages/query/package.json +++ b/ocd/packages/query/package.json @@ -1,6 +1,6 @@ { "name": "@ocd/query", - "version": "0.2.4", + "version": "0.2.5", "description": "OKIT Open Cloud Designer Query Module", "title": "OKIT Open Cloud Designer Query Module", "author": { @@ -14,20 +14,34 @@ "okit" ], "license": "UPL-1.0", - "main": "lib/esm/index.js", + "exports": { + ".": { + "import": { + "types": "./lib/esm/index.d.ts", + "default": "./lib/esm/index.js" + }, + "require": { + "types": "./lib/cjs/index.d.ts", + "default": "./lib/cjs/index.js" + } + } + }, + "main": "lib/cjs/index.js", "module": "lib/esm/index.js", + "types": "lib/esm/index.d.js", "files": [ "lib/" ], "scripts": { "test": "echo \"Error: no test specified\" && exit 1", + "clean": "rm -rf lib dist", "pack": "mkdir -p dist && npm pack --pack-destination dist", "compile": "tsc -p tsconfig.json && tsc -p tsconfig-cjs.json", "build": "npm run compile && npm run pack" }, "dependencies": { - "@ocd/core": "^0.2.4", - "@ocd/model": "^0.2.4", - "oci-sdk": "^2.69.0" + "@ocd/core": ">=0.2.5", + "@ocd/model": ">=0.2.5", + "oci-sdk": ">=2.69.0" } } diff --git a/ocd/packages/query/src/OciQuery.ts b/ocd/packages/query/src/OciQuery.ts index c2c78d602..396215bed 100644 --- a/ocd/packages/query/src/OciQuery.ts +++ b/ocd/packages/query/src/OciQuery.ts @@ -9,9 +9,6 @@ import { OcdDesign, OciModelResources, OciResources } from '@ocd/model' import { analytics, bastion, common, core, database, filestorage, identity, keymanagement, loadbalancer, mysql, networkloadbalancer, nosql, objectstorage, vault } from 'oci-sdk' import { OciCommonQuery } from './OciQueryCommon' -import { OcdUtils } from '@ocd/core' -import { OciLoadBalancerBackend } from '@ocd/model/src/provider/oci/resources/generated/OciLoadBalancerBackend' -import { OciLoadBalancerBackendSet, OciLoadBalancerListener } from '@ocd/model/src/provider/oci/resources' export class OciQuery extends OciCommonQuery { // Clients @@ -263,53 +260,54 @@ export class OciQuery extends OciCommonQuery { // Load Balancers // @ts-ignore if (results[queries.indexOf(listLoadBalancers)].status === 'fulfilled' && results[queries.indexOf(listLoadBalancers)].value.length > 0) design.model.oci.resources.load_balancer = results[queries.indexOf(listLoadBalancers)].value - if (design.model.oci.resources.load_balancer && design.model.oci.resources.load_balancer.length > 0) { - // Create Backend Sets - design.model.oci.resources.load_balancer_backend_set = design.model.oci.resources.load_balancer.map((l) => Object.values(l.backendSets as OciLoadBalancerBackendSet[]).map((b) => { - return {...b, - id: l.id.replace('loadbalancer', 'load_balancer_backend_set'), - compartmentId: l.compartmentId, - displayName: b.name, - loadBalancerId: l.id, - lifecycleState: l.lifecycleState - } - })).flat() - // Create Backends - design.model.oci.resources.load_balancer_backend = design.model.oci.resources.load_balancer_backend_set.map((bs) => Object.values(bs.backends as OciLoadBalancerBackend[]).map((b) => { - const vnicAttachments = design.model.oci.resources.vnic_attachment ? design.model.oci.resources.vnic_attachment : [] - const vnicAttachment = vnicAttachments.find((v) => v.privateIp && v.privateIp.ipAddress === b.ipAddress) - const instanceId = vnicAttachment ? vnicAttachment.instanceId : '' - // const instanceId = design.model.oci.resources.vnic_attachment ? design.model.oci.resources.vnic_attachment.find((v) => v.privateIp && v.privateIp.ipAddress === b.ipAddress).instanceId : '' - return {...b, - - id: bs.id.replace('load_balancer_backend_set', 'load_balancer_backend'), - compartmentId: bs.compartmentId, - displayName: b.name, - backendSetId: bs.id, - backendsetName: bs.name, - loadBalancerId: bs.loadBalancerId, - instanceId: instanceId, - lifecycleState: bs.lifecycleState - } - })).flat() - // Create Listeners - design.model.oci.resources.load_balancer_listener = design.model.oci.resources.load_balancer.map((l) => (Object.values(l.listeners) as OciLoadBalancerListener[]).map((listener) => { - return {...listener, - id: l.id.replace('loadbalancer', 'load_balancer_listener'), - compartmentId: l.compartmentId, - displayName: listener.name, - defaultBackendSetName: design.model.oci.resources.load_balancer_backend_set.find((b) => b.loadBalancerId === l.id && b.displayName === listener.defaultBackendSetName)?.id, - loadBalancerId: l.id, - lifecycleState: l.lifecycleState - } - })).flat() - design.model.oci.resources.load_balancer.forEach((l) => { - delete l.backendSets - delete l.Listeners - }) - // console.debug('OciQuery: Load Balancer Backend Sets:', design.model.oci.resources.load_balancer_backend_set) - // console.debug('OciQuery: Load Balancer Backends:', design.model.oci.resources.load_balancer_backend) - } + if (design.model.oci.resources.load_balancer && design.model.oci.resources.load_balancer.length > 0) this.processLoadBalancers(design) + // if (design.model.oci.resources.load_balancer && design.model.oci.resources.load_balancer.length > 0) { + // // Create Backend Sets + // design.model.oci.resources.load_balancer_backend_set = design.model.oci.resources.load_balancer.map((l: OciModelResources.OciLoadBalancer) => Object.values(l.backendSets as OciModelResources.OciLoadBalancerBackendSet[]).map((b) => { + // return {...b, + // id: l.id.replace('loadbalancer', 'load_balancer_backend_set'), + // compartmentId: l.compartmentId, + // displayName: b.name, + // loadBalancerId: l.id, + // lifecycleState: l.lifecycleState + // } + // })).flat() + // // Create Backends + // design.model.oci.resources.load_balancer_backend = design.model.oci.resources.load_balancer_backend_set.map((bs) => Object.values(bs.backends as OciModelResources.OciLoadBalancerBackend[]).map((b) => { + // const vnicAttachments = design.model.oci.resources.vnic_attachment ? design.model.oci.resources.vnic_attachment : [] + // const vnicAttachment = vnicAttachments.find((v) => v.privateIp && v.privateIp.ipAddress === b.ipAddress) + // const instanceId = vnicAttachment ? vnicAttachment.instanceId : '' + // // const instanceId = design.model.oci.resources.vnic_attachment ? design.model.oci.resources.vnic_attachment.find((v) => v.privateIp && v.privateIp.ipAddress === b.ipAddress).instanceId : '' + // return {...b, + + // id: bs.id.replace('load_balancer_backend_set', 'load_balancer_backend'), + // compartmentId: bs.compartmentId, + // displayName: b.name, + // backendSetId: bs.id, + // backendsetName: bs.name, + // loadBalancerId: bs.loadBalancerId, + // instanceId: instanceId, + // lifecycleState: bs.lifecycleState + // } + // })).flat() + // // Create Listeners + // design.model.oci.resources.load_balancer_listener = design.model.oci.resources.load_balancer.map((l: OciModelResources.OciLoadBalancer) => (Object.values(l.listeners as OciModelResources.OciLoadBalancerListener[])).map((listener) => { + // return {...listener, + // id: l.id.replace('loadbalancer', 'load_balancer_listener'), + // compartmentId: l.compartmentId, + // displayName: listener.name, + // defaultBackendSetName: design.model.oci.resources.load_balancer_backend_set.find((b) => b.loadBalancerId === l.id && b.displayName === listener.defaultBackendSetName)?.id, + // loadBalancerId: l.id, + // lifecycleState: l.lifecycleState + // } + // })).flat() + // design.model.oci.resources.load_balancer.forEach((l) => { + // delete l.backendSets + // delete l.listeners + // }) + // // console.debug('OciQuery: Load Balancer Backend Sets:', design.model.oci.resources.load_balancer_backend_set) + // // console.debug('OciQuery: Load Balancer Backends:', design.model.oci.resources.load_balancer_backend) + // } // Network Load Balancers // @ts-ignore if (results[queries.indexOf(listNetworkLoadBalancers)].status === 'fulfilled' && results[queries.indexOf(listNetworkLoadBalancers)].value.length > 0) design.model.oci.resources.network_load_balancer = results[queries.indexOf(listNetworkLoadBalancers)].value @@ -754,6 +752,56 @@ export class OciQuery extends OciCommonQuery { }) } + processLoadBalancers(design: OcdDesign) { + if (design.model.oci.resources.load_balancer && design.model.oci.resources.load_balancer.length > 0) { + // Create Backend Sets + design.model.oci.resources.load_balancer_backend_set = design.model.oci.resources.load_balancer.map((l: OciModelResources.OciLoadBalancer) => Object.values(l.backendSets as OciModelResources.OciLoadBalancerBackendSet[]).map((b) => { + return {...b, + id: l.id.replace('loadbalancer', 'load_balancer_backend_set'), + compartmentId: l.compartmentId, + displayName: b.name, + loadBalancerId: l.id, + lifecycleState: l.lifecycleState + } + })).flat() + // Create Backends + design.model.oci.resources.load_balancer_backend = design.model.oci.resources.load_balancer_backend_set.map((bs) => Object.values(bs.backends as OciModelResources.OciLoadBalancerBackend[]).map((b) => { + const vnicAttachments = design.model.oci.resources.vnic_attachment ? design.model.oci.resources.vnic_attachment : [] + const vnicAttachment = vnicAttachments.find((v) => v.privateIp && v.privateIp.ipAddress === b.ipAddress) + const instanceId = vnicAttachment ? vnicAttachment.instanceId : '' + // const instanceId = design.model.oci.resources.vnic_attachment ? design.model.oci.resources.vnic_attachment.find((v) => v.privateIp && v.privateIp.ipAddress === b.ipAddress).instanceId : '' + return {...b, + + id: bs.id.replace('load_balancer_backend_set', 'load_balancer_backend'), + compartmentId: bs.compartmentId, + displayName: b.name, + backendSetId: bs.id, + backendsetName: bs.name, + loadBalancerId: bs.loadBalancerId, + instanceId: instanceId, + lifecycleState: bs.lifecycleState + } + })).flat() + // Create Listeners + design.model.oci.resources.load_balancer_listener = design.model.oci.resources.load_balancer.map((l: OciModelResources.OciLoadBalancer) => (Object.values(l.listeners as OciModelResources.OciLoadBalancerListener[])).map((listener) => { + return {...listener, + id: l.id.replace('loadbalancer', 'load_balancer_listener'), + compartmentId: l.compartmentId, + displayName: listener.name, + defaultBackendSetName: design.model.oci.resources.load_balancer_backend_set.find((b) => b.loadBalancerId === l.id && b.displayName === listener.defaultBackendSetName)?.id, + loadBalancerId: l.id, + lifecycleState: l.lifecycleState + } + })).flat() + design.model.oci.resources.load_balancer.forEach((l) => { + delete l.backendSets + delete l.listeners + }) + // console.debug('OciQuery: Load Balancer Backend Sets:', design.model.oci.resources.load_balancer_backend_set) + // console.debug('OciQuery: Load Balancer Backends:', design.model.oci.resources.load_balancer_backend) + } + } + listMountTargets(compartmentIds: string[], retryCount: number = 0): Promise { return new Promise((resolve, reject) => { this.listAvailabilityDomains(compartmentIds.slice(0,1)).then((ads) => { diff --git a/ocd/packages/react/package.json b/ocd/packages/react/package.json index fd8243960..a28f0aab5 100644 --- a/ocd/packages/react/package.json +++ b/ocd/packages/react/package.json @@ -1,6 +1,6 @@ { "name": "@ocd/react", - "version": "0.2.4", + "version": "0.2.5", "description": "", "main": "index.js", "scripts": { @@ -10,7 +10,7 @@ "author": "", "license": "ISC", "dependencies": { - "@ocd/core": "^0.2.4", - "@ocd/model": "^0.2.4" + "@ocd/core": ">=0.2.5", + "@ocd/model": ">=0.2.5" } } diff --git a/ocd/packages/web/package.json b/ocd/packages/web/package.json index d0df159e1..1fb79983b 100644 --- a/ocd/packages/web/package.json +++ b/ocd/packages/web/package.json @@ -1,6 +1,6 @@ { "name": "@ocd/web", - "version": "0.2.4", + "version": "0.2.5", "description": "OKIT Open Cloud Designer Web Interface", "title": "OKIT Open Cloud Designer Web Interface", "author": { diff --git a/okit-web/README.md b/okit-web/README.md new file mode 100644 index 000000000..37ddab055 --- /dev/null +++ b/okit-web/README.md @@ -0,0 +1 @@ +# Placeholder for the restructuring of the github repo \ No newline at end of file diff --git a/okit-web/backend/README.md b/okit-web/backend/README.md new file mode 100644 index 000000000..37ddab055 --- /dev/null +++ b/okit-web/backend/README.md @@ -0,0 +1 @@ +# Placeholder for the restructuring of the github repo \ No newline at end of file diff --git a/okit-web/frontend/README.md b/okit-web/frontend/README.md new file mode 100644 index 000000000..37ddab055 --- /dev/null +++ b/okit-web/frontend/README.md @@ -0,0 +1 @@ +# Placeholder for the restructuring of the github repo \ No newline at end of file diff --git a/okitweb/package-lock.json b/okitweb/package-lock.json deleted file mode 100644 index b0f4ec337..000000000 --- a/okitweb/package-lock.json +++ /dev/null @@ -1,443 +0,0 @@ -{ - "name": "okitweb", - "version": "0.63.0", - "lockfileVersion": 3, - "requires": true, - "packages": { - "": { - "name": "okitweb", - "version": "0.63.0", - "license": "UPL-1.0", - "dependencies": { - "d3": "7.9", - "jquery": "3.6.0" - } - }, - "node_modules/commander": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", - "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", - "engines": { - "node": ">= 10" - } - }, - "node_modules/d3": { - "version": "7.9.0", - "resolved": "https://registry.npmjs.org/d3/-/d3-7.9.0.tgz", - "integrity": "sha512-e1U46jVP+w7Iut8Jt8ri1YsPOvFpg46k+K8TpCb0P+zjCkjkPnV7WzfDJzMHy1LnA+wj5pLT1wjO901gLXeEhA==", - "dependencies": { - "d3-array": "3", - "d3-axis": "3", - "d3-brush": "3", - "d3-chord": "3", - "d3-color": "3", - "d3-contour": "4", - "d3-delaunay": "6", - "d3-dispatch": "3", - "d3-drag": "3", - "d3-dsv": "3", - "d3-ease": "3", - "d3-fetch": "3", - "d3-force": "3", - "d3-format": "3", - "d3-geo": "3", - "d3-hierarchy": "3", - "d3-interpolate": "3", - "d3-path": "3", - "d3-polygon": "3", - "d3-quadtree": "3", - "d3-random": "3", - "d3-scale": "4", - "d3-scale-chromatic": "3", - "d3-selection": "3", - "d3-shape": "3", - "d3-time": "3", - "d3-time-format": "4", - "d3-timer": "3", - "d3-transition": "3", - "d3-zoom": "3" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/d3-array": { - "version": "3.2.4", - "resolved": "https://registry.npmjs.org/d3-array/-/d3-array-3.2.4.tgz", - "integrity": "sha512-tdQAmyA18i4J7wprpYq8ClcxZy3SC31QMeByyCFyRt7BVHdREQZ5lpzoe5mFEYZUWe+oq8HBvk9JjpibyEV4Jg==", - "dependencies": { - "internmap": "1 - 2" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/d3-axis": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/d3-axis/-/d3-axis-3.0.0.tgz", - "integrity": "sha512-IH5tgjV4jE/GhHkRV0HiVYPDtvfjHQlQfJHs0usq7M30XcSBvOotpmH1IgkcXsO/5gEQZD43B//fc7SRT5S+xw==", - "engines": { - "node": ">=12" - } - }, - "node_modules/d3-brush": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/d3-brush/-/d3-brush-3.0.0.tgz", - "integrity": "sha512-ALnjWlVYkXsVIGlOsuWH1+3udkYFI48Ljihfnh8FZPF2QS9o+PzGLBslO0PjzVoHLZ2KCVgAM8NVkXPJB2aNnQ==", - "dependencies": { - "d3-dispatch": "1 - 3", - "d3-drag": "2 - 3", - "d3-interpolate": "1 - 3", - "d3-selection": "3", - "d3-transition": "3" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/d3-chord": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/d3-chord/-/d3-chord-3.0.1.tgz", - "integrity": "sha512-VE5S6TNa+j8msksl7HwjxMHDM2yNK3XCkusIlpX5kwauBfXuyLAtNg9jCp/iHH61tgI4sb6R/EIMWCqEIdjT/g==", - "dependencies": { - "d3-path": "1 - 3" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/d3-color": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/d3-color/-/d3-color-3.1.0.tgz", - "integrity": "sha512-zg/chbXyeBtMQ1LbD/WSoW2DpC3I0mpmPdW+ynRTj/x2DAWYrIY7qeZIHidozwV24m4iavr15lNwIwLxRmOxhA==", - "engines": { - "node": ">=12" - } - }, - "node_modules/d3-contour": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/d3-contour/-/d3-contour-4.0.2.tgz", - "integrity": "sha512-4EzFTRIikzs47RGmdxbeUvLWtGedDUNkTcmzoeyg4sP/dvCexO47AaQL7VKy/gul85TOxw+IBgA8US2xwbToNA==", - "dependencies": { - "d3-array": "^3.2.0" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/d3-delaunay": { - "version": "6.0.4", - "resolved": "https://registry.npmjs.org/d3-delaunay/-/d3-delaunay-6.0.4.tgz", - "integrity": "sha512-mdjtIZ1XLAM8bm/hx3WwjfHt6Sggek7qH043O8KEjDXN40xi3vx/6pYSVTwLjEgiXQTbvaouWKynLBiUZ6SK6A==", - "dependencies": { - "delaunator": "5" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/d3-dispatch": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/d3-dispatch/-/d3-dispatch-3.0.1.tgz", - "integrity": "sha512-rzUyPU/S7rwUflMyLc1ETDeBj0NRuHKKAcvukozwhshr6g6c5d8zh4c2gQjY2bZ0dXeGLWc1PF174P2tVvKhfg==", - "engines": { - "node": ">=12" - } - }, - "node_modules/d3-drag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/d3-drag/-/d3-drag-3.0.0.tgz", - "integrity": "sha512-pWbUJLdETVA8lQNJecMxoXfH6x+mO2UQo8rSmZ+QqxcbyA3hfeprFgIT//HW2nlHChWeIIMwS2Fq+gEARkhTkg==", - "dependencies": { - "d3-dispatch": "1 - 3", - "d3-selection": "3" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/d3-dsv": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/d3-dsv/-/d3-dsv-3.0.1.tgz", - "integrity": "sha512-UG6OvdI5afDIFP9w4G0mNq50dSOsXHJaRE8arAS5o9ApWnIElp8GZw1Dun8vP8OyHOZ/QJUKUJwxiiCCnUwm+Q==", - "dependencies": { - "commander": "7", - "iconv-lite": "0.6", - "rw": "1" - }, - "bin": { - "csv2json": "bin/dsv2json.js", - "csv2tsv": "bin/dsv2dsv.js", - "dsv2dsv": "bin/dsv2dsv.js", - "dsv2json": "bin/dsv2json.js", - "json2csv": "bin/json2dsv.js", - "json2dsv": "bin/json2dsv.js", - "json2tsv": "bin/json2dsv.js", - "tsv2csv": "bin/dsv2dsv.js", - "tsv2json": "bin/dsv2json.js" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/d3-ease": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/d3-ease/-/d3-ease-3.0.1.tgz", - "integrity": "sha512-wR/XK3D3XcLIZwpbvQwQ5fK+8Ykds1ip7A2Txe0yxncXSdq1L9skcG7blcedkOX+ZcgxGAmLX1FrRGbADwzi0w==", - "engines": { - "node": ">=12" - } - }, - "node_modules/d3-fetch": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/d3-fetch/-/d3-fetch-3.0.1.tgz", - "integrity": "sha512-kpkQIM20n3oLVBKGg6oHrUchHM3xODkTzjMoj7aWQFq5QEM+R6E4WkzT5+tojDY7yjez8KgCBRoj4aEr99Fdqw==", - "dependencies": { - "d3-dsv": "1 - 3" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/d3-force": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/d3-force/-/d3-force-3.0.0.tgz", - "integrity": "sha512-zxV/SsA+U4yte8051P4ECydjD/S+qeYtnaIyAs9tgHCqfguma/aAQDjo85A9Z6EKhBirHRJHXIgJUlffT4wdLg==", - "dependencies": { - "d3-dispatch": "1 - 3", - "d3-quadtree": "1 - 3", - "d3-timer": "1 - 3" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/d3-format": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/d3-format/-/d3-format-3.1.0.tgz", - "integrity": "sha512-YyUI6AEuY/Wpt8KWLgZHsIU86atmikuoOmCfommt0LYHiQSPjvX2AcFc38PX0CBpr2RCyZhjex+NS/LPOv6YqA==", - "engines": { - "node": ">=12" - } - }, - "node_modules/d3-geo": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/d3-geo/-/d3-geo-3.1.1.tgz", - "integrity": "sha512-637ln3gXKXOwhalDzinUgY83KzNWZRKbYubaG+fGVuc/dxO64RRljtCTnf5ecMyE1RIdtqpkVcq0IbtU2S8j2Q==", - "dependencies": { - "d3-array": "2.5.0 - 3" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/d3-hierarchy": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/d3-hierarchy/-/d3-hierarchy-3.1.2.tgz", - "integrity": "sha512-FX/9frcub54beBdugHjDCdikxThEqjnR93Qt7PvQTOHxyiNCAlvMrHhclk3cD5VeAaq9fxmfRp+CnWw9rEMBuA==", - "engines": { - "node": ">=12" - } - }, - "node_modules/d3-interpolate": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/d3-interpolate/-/d3-interpolate-3.0.1.tgz", - "integrity": "sha512-3bYs1rOD33uo8aqJfKP3JWPAibgw8Zm2+L9vBKEHJ2Rg+viTR7o5Mmv5mZcieN+FRYaAOWX5SJATX6k1PWz72g==", - "dependencies": { - "d3-color": "1 - 3" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/d3-path": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/d3-path/-/d3-path-3.1.0.tgz", - "integrity": "sha512-p3KP5HCf/bvjBSSKuXid6Zqijx7wIfNW+J/maPs+iwR35at5JCbLUT0LzF1cnjbCHWhqzQTIN2Jpe8pRebIEFQ==", - "engines": { - "node": ">=12" - } - }, - "node_modules/d3-polygon": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/d3-polygon/-/d3-polygon-3.0.1.tgz", - "integrity": "sha512-3vbA7vXYwfe1SYhED++fPUQlWSYTTGmFmQiany/gdbiWgU/iEyQzyymwL9SkJjFFuCS4902BSzewVGsHHmHtXg==", - "engines": { - "node": ">=12" - } - }, - "node_modules/d3-quadtree": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/d3-quadtree/-/d3-quadtree-3.0.1.tgz", - "integrity": "sha512-04xDrxQTDTCFwP5H6hRhsRcb9xxv2RzkcsygFzmkSIOJy3PeRJP7sNk3VRIbKXcog561P9oU0/rVH6vDROAgUw==", - "engines": { - "node": ">=12" - } - }, - "node_modules/d3-random": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/d3-random/-/d3-random-3.0.1.tgz", - "integrity": "sha512-FXMe9GfxTxqd5D6jFsQ+DJ8BJS4E/fT5mqqdjovykEB2oFbTMDVdg1MGFxfQW+FBOGoB++k8swBrgwSHT1cUXQ==", - "engines": { - "node": ">=12" - } - }, - "node_modules/d3-scale": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/d3-scale/-/d3-scale-4.0.2.tgz", - "integrity": "sha512-GZW464g1SH7ag3Y7hXjf8RoUuAFIqklOAq3MRl4OaWabTFJY9PN/E1YklhXLh+OQ3fM9yS2nOkCoS+WLZ6kvxQ==", - "dependencies": { - "d3-array": "2.10.0 - 3", - "d3-format": "1 - 3", - "d3-interpolate": "1.2.0 - 3", - "d3-time": "2.1.1 - 3", - "d3-time-format": "2 - 4" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/d3-scale-chromatic": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/d3-scale-chromatic/-/d3-scale-chromatic-3.1.0.tgz", - "integrity": "sha512-A3s5PWiZ9YCXFye1o246KoscMWqf8BsD9eRiJ3He7C9OBaxKhAd5TFCdEx/7VbKtxxTsu//1mMJFrEt572cEyQ==", - "dependencies": { - "d3-color": "1 - 3", - "d3-interpolate": "1 - 3" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/d3-selection": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/d3-selection/-/d3-selection-3.0.0.tgz", - "integrity": "sha512-fmTRWbNMmsmWq6xJV8D19U/gw/bwrHfNXxrIN+HfZgnzqTHp9jOmKMhsTUjXOJnZOdZY9Q28y4yebKzqDKlxlQ==", - "engines": { - "node": ">=12" - } - }, - "node_modules/d3-shape": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/d3-shape/-/d3-shape-3.2.0.tgz", - "integrity": "sha512-SaLBuwGm3MOViRq2ABk3eLoxwZELpH6zhl3FbAoJ7Vm1gofKx6El1Ib5z23NUEhF9AsGl7y+dzLe5Cw2AArGTA==", - "dependencies": { - "d3-path": "^3.1.0" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/d3-time": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/d3-time/-/d3-time-3.1.0.tgz", - "integrity": "sha512-VqKjzBLejbSMT4IgbmVgDjpkYrNWUYJnbCGo874u7MMKIWsILRX+OpX/gTk8MqjpT1A/c6HY2dCA77ZN0lkQ2Q==", - "dependencies": { - "d3-array": "2 - 3" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/d3-time-format": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/d3-time-format/-/d3-time-format-4.1.0.tgz", - "integrity": "sha512-dJxPBlzC7NugB2PDLwo9Q8JiTR3M3e4/XANkreKSUxF8vvXKqm1Yfq4Q5dl8budlunRVlUUaDUgFt7eA8D6NLg==", - "dependencies": { - "d3-time": "1 - 3" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/d3-timer": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/d3-timer/-/d3-timer-3.0.1.tgz", - "integrity": "sha512-ndfJ/JxxMd3nw31uyKoY2naivF+r29V+Lc0svZxe1JvvIRmi8hUsrMvdOwgS1o6uBHmiz91geQ0ylPP0aj1VUA==", - "engines": { - "node": ">=12" - } - }, - "node_modules/d3-transition": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/d3-transition/-/d3-transition-3.0.1.tgz", - "integrity": "sha512-ApKvfjsSR6tg06xrL434C0WydLr7JewBB3V+/39RMHsaXTOG0zmt/OAXeng5M5LBm0ojmxJrpomQVZ1aPvBL4w==", - "dependencies": { - "d3-color": "1 - 3", - "d3-dispatch": "1 - 3", - "d3-ease": "1 - 3", - "d3-interpolate": "1 - 3", - "d3-timer": "1 - 3" - }, - "engines": { - "node": ">=12" - }, - "peerDependencies": { - "d3-selection": "2 - 3" - } - }, - "node_modules/d3-zoom": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/d3-zoom/-/d3-zoom-3.0.0.tgz", - "integrity": "sha512-b8AmV3kfQaqWAuacbPuNbL6vahnOJflOhexLzMMNLga62+/nh0JzvJ0aO/5a5MVgUFGS7Hu1P9P03o3fJkDCyw==", - "dependencies": { - "d3-dispatch": "1 - 3", - "d3-drag": "2 - 3", - "d3-interpolate": "1 - 3", - "d3-selection": "2 - 3", - "d3-transition": "2 - 3" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/delaunator": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/delaunator/-/delaunator-5.0.1.tgz", - "integrity": "sha512-8nvh+XBe96aCESrGOqMp/84b13H9cdKbG5P2ejQCh4d4sK9RL4371qou9drQjMhvnPmhWl5hnmqbEE0fXr9Xnw==", - "dependencies": { - "robust-predicates": "^3.0.2" - } - }, - "node_modules/iconv-lite": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", - "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", - "dependencies": { - "safer-buffer": ">= 2.1.2 < 3.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/internmap": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/internmap/-/internmap-2.0.3.tgz", - "integrity": "sha512-5Hh7Y1wQbvY5ooGgPbDaL5iYLAPzMTUrjMulskHLH6wnv/A+1q5rgEaiuqEjB+oxGXIVZs1FF+R/KPN3ZSQYYg==", - "engines": { - "node": ">=12" - } - }, - "node_modules/jquery": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/jquery/-/jquery-3.6.0.tgz", - "integrity": "sha512-JVzAR/AjBvVt2BmYhxRCSYysDsPcssdmTFnzyLEts9qNwmjmu4JTAMYubEfwVOSwpQ1I1sKKFcxhZCI2buerfw==", - "license": "MIT" - }, - "node_modules/robust-predicates": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/robust-predicates/-/robust-predicates-3.0.2.tgz", - "integrity": "sha512-IXgzBWvWQwE6PrDI05OvmXUIruQTcoMDzRsOd5CDvHCVLcLHMTSYvOK5Cm46kWqlV3yAbuSpBZdJ5oP5OUoStg==" - }, - "node_modules/rw": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/rw/-/rw-1.3.3.tgz", - "integrity": "sha512-PdhdWy89SiZogBLaw42zdeqtRJ//zFd2PgQavcICDUgJT5oW10QCRKbJ6bg4r0/UY2M6BWd5tkxuGFRvCkgfHQ==" - }, - "node_modules/safer-buffer": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" - } - } -} diff --git a/okitweb/package.json b/okitweb/package.json deleted file mode 100644 index 4971c21fa..000000000 --- a/okitweb/package.json +++ /dev/null @@ -1,13 +0,0 @@ -{ - "name": "okitweb", - "version": "0.64.0", - "description": "OKIT Web application", - "scripts": {}, - "author": "Oracle", - "license": "UPL-1.0", - "private": true, - "dependencies": { - "d3": "7.9", - "jquery": "3.6.0" - } -} diff --git a/okitweb/static/okit/js/okit.js b/okitweb/static/okit/js/okit.js index 18651ac77..b848ad4d0 100644 --- a/okitweb/static/okit/js/okit.js +++ b/okitweb/static/okit/js/okit.js @@ -243,7 +243,7 @@ class OkitOCIData { } query(profile, region='', save=false) { - console.info('Querying Dropdown data for', profile, region); + console.info('OkitOCIData: Querying OCI Dropdown data for', profile, region); const self = this; const start = new Date().getTime() const section = okitOciConfig.getSection(profile) @@ -262,37 +262,37 @@ class OkitOCIData { cache: false }).done((resp) => { console.info('OkitOCIData: Querying Dropdown data for', profile, region); - const response = resp + // const response = resp const end = new Date().getTime() - const profile_region = okitOciConfig.getRegion(profile) + // const profile_region = okitOciConfig.getRegion(profile) console.info('OkitOCIData: Querying Dropdown Region Subscription for', profile, 'took', end - start, 'ms') // console.info('Region Subscriptions', typeof(response), response) // We Know that this Profile is not a PCA-X9 so we can use the OCI Dropdowwn Query - if (response.length === 1 && response[0].region_key !== profile_region) { - if (region === '') region = profile_region - console.info('OkitOCIData: Querying PCA Dropdown data for', profile, region); - $.getJSON('pca/dropdown', { - cache: false, - profile: profile, - region: region - }).done((resp) => { - self.dropdown_data = {...self.dropdown_data, ...resp}; - delete self.dropdown_data.default - delete self.dropdown_data.shipped - self.dropdown_data.cache_date = Date.now() - const end = new Date().getTime() - console.info('PCA-X9 Queried Dropdown Data for', profile, 'took', end - start, 'ms') - console.info('PCA-X9 Data', resp) - // save ? this.save(profile, region) : this.storeLocal(profile, region) - this.save(profile, region) - this.storeLocal(profile, region) - resolve(this) - }).fail((xhr, status, error) => { - console.warn('Status : '+ status) - console.warn('Error : '+ error) - reject(error) - }) - } else { + // if (response.length === 1 && response[0].region_key !== profile_region) { + // if (region === '') region = profile_region + // console.info('OkitOCIData: Querying PCA Dropdown data for', profile, region); + // $.getJSON('pca/dropdown', { + // cache: false, + // profile: profile, + // region: region + // }).done((resp) => { + // self.dropdown_data = {...self.dropdown_data, ...resp}; + // delete self.dropdown_data.default + // delete self.dropdown_data.shipped + // self.dropdown_data.cache_date = Date.now() + // const end = new Date().getTime() + // console.info('PCA-X9 Queried Dropdown Data for', profile, 'took', end - start, 'ms') + // console.info('PCA-X9 Data', resp) + // // save ? this.save(profile, region) : this.storeLocal(profile, region) + // this.save(profile, region) + // this.storeLocal(profile, region) + // resolve(this) + // }).fail((xhr, status, error) => { + // console.warn('Status : '+ status) + // console.warn('Error : '+ error) + // reject(error) + // }) + // } else { console.info('OkitOCIData: Querying OCI Dropdown data for', profile, region); $.getJSON('oci/dropdown', { profile: profile, @@ -316,7 +316,7 @@ class OkitOCIData { console.warn('Error : '+ error) reject(error) }) - } + // } }).fail((xhr, status, error) => { console.warn('Status : '+ status) console.warn('Error : '+ error) @@ -536,6 +536,48 @@ class OkitOCIData { } } +class OkitPCAData extends OkitOCIData { + query(profile, region='', save=false) { + console.info('OkitPCAData: Querying PCA Dropdown data for', profile, region); + const self = this; + const start = new Date().getTime() + // Get Shipped + return new Promise((resolve, reject) => { + $.getJSON('dropdown', {cache: false}).done((resp) => { + console.info('OkitPCAData: Retrieved Shipped Dropdown Data'); + self.dropdown_data = resp + // Test if Profile is valid + if (okitOciConfig && okitOciConfig.getSections().includes(profile)) { + $.getJSON('pca/dropdown', { + cache: false, + profile: profile, + region: region + }).done((resp) => { + self.dropdown_data = {...self.dropdown_data, ...resp}; + delete self.dropdown_data.default + delete self.dropdown_data.shipped + self.dropdown_data.cache_date = Date.now() + const end = new Date().getTime() + console.info('OkitPCAData: PCA-X9 Queried Dropdown Data for', profile, 'took', end - start, 'ms') + console.info('OkitPCAData: PCA-X9 Data', resp) + // save ? this.save(profile, region) : this.storeLocal(profile, region) + this.save(profile, region) + this.storeLocal(profile, region) + resolve(this) + }).fail((xhr, status, error) => { + console.warn('Status : '+ status) + console.warn('Error : '+ error) + reject(error) + }) + } else { + console.warn('OkitPCAData: Profile "', profile, '" does not exist in OCI Config') + reject('OkitPCAData: Profile', profile, 'does not exist in OCI Config') + } + }) + }) + } +} + class OkitRegions { key = "OkitRegionCache" constructor(loaded_callback) { @@ -634,20 +676,20 @@ class OkitRegions { const profile_region = okitOciConfig.getRegion(profile) console.info('Region Subscription for', profile, 'took', end - start, 'ms') console.info('Region Subscriptions', typeof(response), Array.isArray(response), response) - if (response.length === 1 && response[0].region_key !== profile_region) { - console.info('OkitRegions: Querying PCA data for', profile, profile_region); - $.getJSON(`pca/regions`, { - profile: profile, - cache: false - }).done((resp) => { - const end = new Date().getTime() - console.info('Load Regions took', end - start, 'ms') - self.regions = resp - self.storeLocal(profile); - if (self.loaded_callback) self.loaded_callback(); - resolve(this) - }).fail((xhr, status, error) => {reject(error)}) - } else { + // if (response.length === 1 && response[0].region_key !== profile_region) { + // console.info('OkitRegions: Querying PCA data for', profile, profile_region); + // $.getJSON(`pca/regions`, { + // profile: profile, + // cache: false + // }).done((resp) => { + // const end = new Date().getTime() + // console.info('Load Regions took', end - start, 'ms') + // self.regions = resp + // self.storeLocal(profile); + // if (self.loaded_callback) self.loaded_callback(); + // resolve(this) + // }).fail((xhr, status, error) => {reject(error)}) + // } else { console.info('OkitRegions: Querying OCI data for', profile, profile_region); self.regions = resp // if (self.regions.length === 1 && self.regions[0].region_key !== profile_region) self.regions = [{is_home_region: true, region_key: profile_region, region_name: profile_region, status: 'READY'}] @@ -667,7 +709,7 @@ class OkitRegions { // if (self.loaded_callback) self.loaded_callback(); // resolve(this) // }).fail((xhr, status, error) => {reject(error)}) - } + // } // $.getJSON(`oci/regions/${profile}`, { // profile: profile, // config: JSON.stringify(config), @@ -718,6 +760,37 @@ class OkitRegions { isRegionAvailable(region_id) {return this.regions.map((r) => r.id).includes(region_id)} } +class OkitPCARegions extends OkitRegions { + query(profile) { + console.info('OkitPCARegions: Loading Region data for', profile); + const self = this + const section = okitOciConfig.getSection(profile) + const config = section && section.session ? okitSessionOciConfigs.configs[profile] : {} + console.debug('OkitRegions: Config', config, 'Section', section) + + return new Promise((resolve, reject) => { + if (okitOciConfig && okitOciConfig.getSections().includes(profile)) { + const start = new Date().getTime() + $.getJSON(`pca/regions`, { + profile: profile, + cache: false + }).done((resp) => { + const end = new Date().getTime() + console.info('Load Regions took', end - start, 'ms') + self.regions = resp + self.storeLocal(profile); + if (self.loaded_callback) self.loaded_callback(); + resolve(this) + }).fail((xhr, status, error) => {reject(error)}) + } else { + console.warn('OkitOciData: Profile "', profile, '" does not exist in OCI Config') + reject('OkitOciData: Profile', profile, 'does not exist in OCI Config') + } + + }) + } +} + class OkitSettings { constructor() { this.is_default_security_list = false; diff --git a/okitweb/static/okit/js/okit_console.js b/okitweb/static/okit/js/okit_console.js index 7abb73d7c..a5a08db5b 100644 --- a/okitweb/static/okit/js/okit_console.js +++ b/okitweb/static/okit/js/okit_console.js @@ -5,8 +5,8 @@ console.debug('Loaded Console Javascript'); -const okitVersion = '0.64.0'; -const okitReleaseDate = '30th September 2024'; +const okitVersion = '0.65.0'; +const okitReleaseDate = '31st October 2024'; // const okitReleaseDate = 'Nightly'; // Validation diff --git a/okitweb/static/okit/js/okit_designer_ready.js b/okitweb/static/okit/js/okit_designer_ready.js index 5e89c99b6..3abee41eb 100644 --- a/okitweb/static/okit/js/okit_designer_ready.js +++ b/okitweb/static/okit/js/okit_designer_ready.js @@ -20,8 +20,13 @@ const initialiseGlobals = () => { okitSessionOciConfigs = new OkitSessionOCIConfigs(); okitSettings = new OkitSettings(); okitOciConfig = new OkitOCIConfig(loadHeaderConfigDropDown); - okitRegions = new OkitRegions(loadHeaderRegionsDropDown); - okitOciData = new OkitOCIData(okitSettings.profile, okitSettings.region); + if (pca_mode || c3_mode) { + okitRegions = new OkitPCARegions(loadHeaderRegionsDropDown); + okitOciData = new OkitPCAData(okitSettings.profile, okitSettings.region); + } else { + okitRegions = new OkitRegions(loadHeaderRegionsDropDown); + okitOciData = new OkitOCIData(okitSettings.profile, okitSettings.region); + } okitGitConfig = new OkitGITConfig(); okitOciProductPricing = new OkitOciProductPricing() diff --git a/okitweb/static/okit/json/release.json b/okitweb/static/okit/json/release.json index abce797a0..a4cb70d7b 100644 --- a/okitweb/static/okit/json/release.json +++ b/okitweb/static/okit/json/release.json @@ -1,5 +1,5 @@ { - "release": "0.64.0", - "tag": "v0.64.0", - "title": "September 2024 Release" + "release": "0.65.0", + "tag": "v0.65.0", + "title": "October 2024 Release" } \ No newline at end of file diff --git a/okitweb/static/okit/model/js/resources/node_pool.js b/okitweb/static/okit/model/js/resources/node_pool.js index ca5f1473d..bad0c92bc 100644 --- a/okitweb/static/okit/model/js/resources/node_pool.js +++ b/okitweb/static/okit/model/js/resources/node_pool.js @@ -48,7 +48,15 @@ class NodePool extends OkitArtifact { Object.defineProperty(this, 'node_pool_type', {get: function() {return this.getOkitJson().getResource(this.cluster_id).node_pool_type;}}); Object.defineProperty(this, 'virtual_nodes', {get: function() {return this.node_pool_type === 'Virtual'}}); } - + /* + ** Conversion Routine allowing loading of old json + */ + convert() { + super.convert(); + this.node_config_details.placement_configs.forEach((p) => p.availability_domain = String(p.availability_domain).slice(-1)) + if (this.nodes) delete this.nodes + } + isVirtualNodes = () => this.getOkitJson().getResource(this.cluster_id) && this.getOkitJson().getResource(this.cluster_id).node_pool_type === 'Virtual' setDefaultShape = () => this.node_shape = this.isVirtualNodes() ? 'Pod.Standard.E3.Flex' : 'VM.Standard.E3.Flex' diff --git a/okitweb/static/okit/view/js/okit_view.js b/okitweb/static/okit/view/js/okit_view.js index 6b2d73776..6a1302140 100644 --- a/okitweb/static/okit/view/js/okit_view.js +++ b/okitweb/static/okit/view/js/okit_view.js @@ -56,10 +56,10 @@ class OkitJsonView { drop(source, target) { let newFunction = 'new' + source.name; let getFunction = 'get' + target.type.split(' ').join(''); + console.debug('OkitJsonView: New:', newFunction,'Get:', getFunction) } - init() { - } + init() {return} clear() { for (const [key, value] of Object.entries(this)) { @@ -166,7 +166,7 @@ class OkitArtefactView { static get fo_x_tranlation() {return this.icon_width + 5;} static get fo_y_tranlation() {return 0;} - constructor(artefact=null, json_view) { + constructor(artefact, json_view) { this.artefact = artefact; // this.view = json_view // this.artefact = new Proxy(artefact, model_proxy_handler); @@ -338,6 +338,7 @@ class OkitArtefactView { id: this.icon_definition_id, transform: this.icon_transform } + return definition } getForeignObjectDefinition() { const definition = { diff --git a/visualiser/facades/ociConnection.py b/visualiser/facades/ociConnection.py index 91ee34561..a19c20970 100644 --- a/visualiser/facades/ociConnection.py +++ b/visualiser/facades/ociConnection.py @@ -25,7 +25,7 @@ class OCIConnection(object): PAGINATION_LIMIT = 1000 - OKIT_VERSION = 'v0.64.0' + OKIT_VERSION = 'v0.65.0' def __init__(self, config=None, configfile=None, profile=None, region=None, signer=None): self.tenancy_ocid = '' diff --git a/visualiser/generators/okitGenerator.py b/visualiser/generators/okitGenerator.py index 1606c7730..77ba2e4ac 100644 --- a/visualiser/generators/okitGenerator.py +++ b/visualiser/generators/okitGenerator.py @@ -27,7 +27,7 @@ logger = getLogger() class OCIGenerator(object): - OKIT_VERSION = "0.64.0" + OKIT_VERSION = "0.65.0" def __init__(self, template_dir, output_dir, visualiser_json, use_vars=False, add_provider=True): # Initialise generator output data variables self.rendered_resources = {} diff --git a/visualiser/query/ociQuery.py b/visualiser/query/ociQuery.py index b2e72e87d..5e7b3bab1 100644 --- a/visualiser/query/ociQuery.py +++ b/visualiser/query/ociQuery.py @@ -279,7 +279,7 @@ def convert(self, discovery_data, compartments, query_compartment_ids=[]): elif resource_type == "NetworkSecurityGroup": resource_list = self.network_security_group(resource_list, resources) elif resource_type == "NodePool": - logger.info(f'Node Pools {jsonToFormattedString(resource_list)}') + resource_list = self.node_pools(resource_list) elif resource_type == "NoSQLTable": resource_list = self.nosql_databases(resource_list, resources) elif resource_type == "RouteTable": @@ -490,6 +490,11 @@ def nosql_databases(self, databases, resources): database['indexes'] = [i for i in indexes if i['table_id'] == database['id']] return databases + def node_pools(self, node_pools): + for node_pool in node_pools: + node_pool.pop('nodes', None) + return node_pools + def object_storage_buckets(self, buckets, resources): for bucket in buckets: bucket["display_name"] = bucket["name"] diff --git a/visualiser/templates/terraform/node_pool.jinja2 b/visualiser/templates/terraform/node_pool.jinja2 index 95ecac160..b3434cd25 100644 --- a/visualiser/templates/terraform/node_pool.jinja2 +++ b/visualiser/templates/terraform/node_pool.jinja2 @@ -42,7 +42,7 @@ resource "oci_containerengine_node_pool" "{{ resource_name }}" { {% for config in node_config_details.placement_configs %} placement_configs { {# Get last character of AD from between the quotes this is the AD numerical value #} - availability_domain = data.oci_identity_availability_domains.AvailabilityDomains.availability_domains[{{ config.availability_domain[-2:-1] | safe | int }} - 1]["name"] + availability_domain = data.oci_identity_availability_domains.AvailabilityDomains.availability_domains[{{ config.availability_domain | safe | int }} - 1]["name"] subnet_id = {{ config.subnet_id }} } {% endfor %}