From e3c51b9076fb9d28a3d23c10e8cf0cb9f386589b Mon Sep 17 00:00:00 2001 From: Karthik Date: Fri, 13 Sep 2024 12:18:50 -0700 Subject: [PATCH 01/24] BugFix Scheduled Operations changed to only Optional field for terraform version > 1.*.* --- ...abase_autonomous_database_resource_test.go | 166 +++++++++--------- 1 file changed, 83 insertions(+), 83 deletions(-) diff --git a/internal/integrationtest/database_autonomous_database_resource_test.go b/internal/integrationtest/database_autonomous_database_resource_test.go index 2f0fc8f772..97c59a153d 100644 --- a/internal/integrationtest/database_autonomous_database_resource_test.go +++ b/internal/integrationtest/database_autonomous_database_resource_test.go @@ -1682,35 +1682,35 @@ func TestResourceDatabaseAutonomousDatabaseResource_privateEndpoint(t *testing.T compartmentIdVariableStr + AutonomousDatabasePrivateEndpointResourceDependencies + acctest.GenerateResourceFromRepresentationMap("oci_database_autonomous_database", "test_autonomous_database", acctest.Optional, acctest.Update, acctest.GetUpdatedRepresentationCopy("nsg_ids", acctest.Representation{RepType: acctest.Optional, Create: []string{`${oci_core_network_security_group.test_network_security_group2.id}`}}, autonomousDatabasePrivateEndpointRepresentation)), Check: acctest.ComposeAggregateTestCheckFuncWrapper( - resource.TestCheckResourceAttr(datasourceName, "compartment_id", compartmentId), - resource.TestCheckResourceAttr(datasourceName, "db_workload", "OLTP"), - resource.TestCheckResourceAttr(datasourceName, "display_name", "displayName2"), - resource.TestCheckResourceAttr(datasourceName, "state", "AVAILABLE"), - - resource.TestCheckResourceAttr(datasourceName, "autonomous_databases.#", "1"), - resource.TestCheckResourceAttr(datasourceName, "autonomous_databases.0.compartment_id", compartmentId), - resource.TestCheckResourceAttr(datasourceName, "autonomous_databases.0.connection_strings.#", "1"), - resource.TestCheckResourceAttr(datasourceName, "autonomous_databases.0.cpu_core_count", "1"), - resource.TestCheckResourceAttr(datasourceName, "autonomous_databases.0.data_storage_size_in_tbs", "1"), - resource.TestCheckResourceAttr(datasourceName, "autonomous_databases.0.db_name", adbName), - resource.TestCheckResourceAttrSet(datasourceName, "autonomous_databases.0.db_version"), - resource.TestCheckResourceAttr(datasourceName, "autonomous_databases.0.db_workload", "OLTP"), - resource.TestCheckResourceAttr(datasourceName, "autonomous_databases.0.display_name", "displayName2"), - resource.TestCheckResourceAttr(datasourceName, "autonomous_databases.0.freeform_tags.%", "1"), - resource.TestCheckResourceAttrSet(datasourceName, "autonomous_databases.0.id"), - resource.TestCheckResourceAttr(datasourceName, "autonomous_databases.0.is_auto_scaling_enabled", "false"), - resource.TestCheckResourceAttr(datasourceName, "autonomous_databases.0.is_dedicated", "false"), - resource.TestCheckResourceAttrSet(datasourceName, "autonomous_databases.0.is_preview"), - resource.TestCheckResourceAttr(datasourceName, "autonomous_databases.0.nsg_ids.#", "1"), - //resource.TestCheckResourceAttrSet(datasourceName, "autonomous_databases.0.private_endpoint"), - resource.TestCheckResourceAttr(datasourceName, "autonomous_databases.0.private_endpoint_ip", "10.0.0.97"), - resource.TestCheckResourceAttr(datasourceName, "autonomous_databases.0.private_endpoint_label", "xlx4fc9y"), - resource.TestCheckResourceAttrSet(datasourceName, "autonomous_databases.0.state"), - resource.TestCheckResourceAttrSet(datasourceName, "autonomous_databases.0.subnet_id"), - resource.TestCheckResourceAttrSet(datasourceName, "autonomous_databases.0.time_created"), - resource.TestCheckResourceAttr(resourceName, "is_mtls_connection_required", "true"), - resource.TestCheckResourceAttr(resourceName, "connection_strings.0.profiles.#", "3"), - ), + resource.TestCheckResourceAttr(datasourceName, "compartment_id", compartmentId), + resource.TestCheckResourceAttr(datasourceName, "db_workload", "OLTP"), + resource.TestCheckResourceAttr(datasourceName, "display_name", "displayName2"), + resource.TestCheckResourceAttr(datasourceName, "state", "AVAILABLE"), + + resource.TestCheckResourceAttr(datasourceName, "autonomous_databases.#", "1"), + resource.TestCheckResourceAttr(datasourceName, "autonomous_databases.0.compartment_id", compartmentId), + resource.TestCheckResourceAttr(datasourceName, "autonomous_databases.0.connection_strings.#", "1"), + resource.TestCheckResourceAttr(datasourceName, "autonomous_databases.0.cpu_core_count", "1"), + resource.TestCheckResourceAttr(datasourceName, "autonomous_databases.0.data_storage_size_in_tbs", "1"), + resource.TestCheckResourceAttr(datasourceName, "autonomous_databases.0.db_name", adbName), + resource.TestCheckResourceAttrSet(datasourceName, "autonomous_databases.0.db_version"), + resource.TestCheckResourceAttr(datasourceName, "autonomous_databases.0.db_workload", "OLTP"), + resource.TestCheckResourceAttr(datasourceName, "autonomous_databases.0.display_name", "displayName2"), + resource.TestCheckResourceAttr(datasourceName, "autonomous_databases.0.freeform_tags.%", "1"), + resource.TestCheckResourceAttrSet(datasourceName, "autonomous_databases.0.id"), + resource.TestCheckResourceAttr(datasourceName, "autonomous_databases.0.is_auto_scaling_enabled", "false"), + resource.TestCheckResourceAttr(datasourceName, "autonomous_databases.0.is_dedicated", "false"), + resource.TestCheckResourceAttrSet(datasourceName, "autonomous_databases.0.is_preview"), + resource.TestCheckResourceAttr(datasourceName, "autonomous_databases.0.nsg_ids.#", "1"), + //resource.TestCheckResourceAttrSet(datasourceName, "autonomous_databases.0.private_endpoint"), + resource.TestCheckResourceAttr(datasourceName, "autonomous_databases.0.private_endpoint_ip", "10.0.0.97"), + resource.TestCheckResourceAttr(datasourceName, "autonomous_databases.0.private_endpoint_label", "xlx4fc9y"), + resource.TestCheckResourceAttrSet(datasourceName, "autonomous_databases.0.state"), + resource.TestCheckResourceAttrSet(datasourceName, "autonomous_databases.0.subnet_id"), + resource.TestCheckResourceAttrSet(datasourceName, "autonomous_databases.0.time_created"), + resource.TestCheckResourceAttr(resourceName, "is_mtls_connection_required", "true"), + resource.TestCheckResourceAttr(resourceName, "connection_strings.0.profiles.#", "3"), + ), }, //4. verify singular datasource { @@ -1719,32 +1719,32 @@ func TestResourceDatabaseAutonomousDatabaseResource_privateEndpoint(t *testing.T compartmentIdVariableStr + AutonomousDatabasePrivateEndpointResourceDependencies + acctest.GenerateResourceFromRepresentationMap("oci_database_autonomous_database", "test_autonomous_database", acctest.Optional, acctest.Update, acctest.GetUpdatedRepresentationCopy("nsg_ids", acctest.Representation{RepType: acctest.Optional, Create: []string{`${oci_core_network_security_group.test_network_security_group2.id}`}}, autonomousDatabasePrivateEndpointRepresentation)), Check: acctest.ComposeAggregateTestCheckFuncWrapper( - resource.TestCheckResourceAttrSet(singularDatasourceName, "autonomous_database_id"), - - resource.TestCheckResourceAttr(singularDatasourceName, "compartment_id", compartmentId), - resource.TestCheckResourceAttr(singularDatasourceName, "connection_strings.#", "1"), - resource.TestCheckResourceAttrSet(singularDatasourceName, "connection_strings.0.all_connection_strings.%"), - resource.TestCheckResourceAttr(singularDatasourceName, "cpu_core_count", "1"), - resource.TestCheckResourceAttr(singularDatasourceName, "data_storage_size_in_tbs", "1"), - resource.TestCheckResourceAttr(singularDatasourceName, "db_name", adbName), - resource.TestCheckResourceAttrSet(singularDatasourceName, "db_version"), - resource.TestCheckResourceAttr(singularDatasourceName, "db_workload", "OLTP"), - resource.TestCheckResourceAttrSet(singularDatasourceName, "db_version"), - resource.TestCheckResourceAttr(singularDatasourceName, "display_name", "displayName2"), - resource.TestCheckResourceAttr(singularDatasourceName, "freeform_tags.%", "1"), - resource.TestCheckResourceAttrSet(singularDatasourceName, "id"), - resource.TestCheckResourceAttr(singularDatasourceName, "is_auto_scaling_enabled", "false"), - resource.TestCheckResourceAttr(singularDatasourceName, "is_dedicated", "false"), - resource.TestCheckResourceAttrSet(singularDatasourceName, "is_preview"), - resource.TestCheckResourceAttr(singularDatasourceName, "nsg_ids.#", "1"), - //resource.TestCheckResourceAttrSet(singularDatasourceName, "private_endpoint"), - resource.TestCheckResourceAttr(singularDatasourceName, "private_endpoint_ip", "10.0.0.97"), - resource.TestCheckResourceAttr(singularDatasourceName, "private_endpoint_label", "xlx4fc9y"), - resource.TestCheckResourceAttrSet(singularDatasourceName, "state"), - resource.TestCheckResourceAttrSet(singularDatasourceName, "time_created"), - resource.TestCheckResourceAttr(resourceName, "is_mtls_connection_required", "true"), - resource.TestCheckResourceAttr(resourceName, "connection_strings.0.profiles.#", "3"), - ), + resource.TestCheckResourceAttrSet(singularDatasourceName, "autonomous_database_id"), + + resource.TestCheckResourceAttr(singularDatasourceName, "compartment_id", compartmentId), + resource.TestCheckResourceAttr(singularDatasourceName, "connection_strings.#", "1"), + resource.TestCheckResourceAttrSet(singularDatasourceName, "connection_strings.0.all_connection_strings.%"), + resource.TestCheckResourceAttr(singularDatasourceName, "cpu_core_count", "1"), + resource.TestCheckResourceAttr(singularDatasourceName, "data_storage_size_in_tbs", "1"), + resource.TestCheckResourceAttr(singularDatasourceName, "db_name", adbName), + resource.TestCheckResourceAttrSet(singularDatasourceName, "db_version"), + resource.TestCheckResourceAttr(singularDatasourceName, "db_workload", "OLTP"), + resource.TestCheckResourceAttrSet(singularDatasourceName, "db_version"), + resource.TestCheckResourceAttr(singularDatasourceName, "display_name", "displayName2"), + resource.TestCheckResourceAttr(singularDatasourceName, "freeform_tags.%", "1"), + resource.TestCheckResourceAttrSet(singularDatasourceName, "id"), + resource.TestCheckResourceAttr(singularDatasourceName, "is_auto_scaling_enabled", "false"), + resource.TestCheckResourceAttr(singularDatasourceName, "is_dedicated", "false"), + resource.TestCheckResourceAttrSet(singularDatasourceName, "is_preview"), + resource.TestCheckResourceAttr(singularDatasourceName, "nsg_ids.#", "1"), + //resource.TestCheckResourceAttrSet(singularDatasourceName, "private_endpoint"), + resource.TestCheckResourceAttr(singularDatasourceName, "private_endpoint_ip", "10.0.0.97"), + resource.TestCheckResourceAttr(singularDatasourceName, "private_endpoint_label", "xlx4fc9y"), + resource.TestCheckResourceAttrSet(singularDatasourceName, "state"), + resource.TestCheckResourceAttrSet(singularDatasourceName, "time_created"), + resource.TestCheckResourceAttr(resourceName, "is_mtls_connection_required", "true"), + resource.TestCheckResourceAttr(resourceName, "connection_strings.0.profiles.#", "3"), + ), }, //5. delete before next Create @@ -1793,34 +1793,34 @@ func TestResourceDatabaseAutonomousDatabaseResource_privateEndpoint(t *testing.T "private_endpoint_label": acctest.Representation{RepType: acctest.Optional, Create: `xlx4fc9y`}, "subnet_id": acctest.Representation{RepType: acctest.Optional, Create: `${oci_core_subnet.test_subnet.id}`}, }), []string{"whitelisted_ips"})), Check: acctest.ComposeAggregateTestCheckFuncWrapper( - resource.TestCheckResourceAttr(resourceName, "admin_password", "BEstrO0ng_#12"), - resource.TestCheckResourceAttr(resourceName, "compartment_id", compartmentId), - resource.TestCheckResourceAttr(resourceName, "cpu_core_count", "1"), - resource.TestCheckResourceAttr(resourceName, "data_storage_size_in_tbs", "1"), - resource.TestCheckResourceAttr(resourceName, "db_name", adbName), - resource.TestCheckResourceAttr(resourceName, "db_workload", "OLTP"), - resource.TestCheckResourceAttr(resourceName, "display_name", "displayName2"), - resource.TestCheckResourceAttr(resourceName, "freeform_tags.%", "1"), - resource.TestCheckResourceAttrSet(resourceName, "id"), - resource.TestCheckResourceAttr(resourceName, "is_auto_scaling_enabled", "false"), - resource.TestCheckResourceAttr(resourceName, "is_dedicated", "false"), - resource.TestCheckResourceAttr(resourceName, "is_preview_version_with_service_terms_accepted", "false"), - resource.TestCheckResourceAttr(resourceName, "license_model", "LICENSE_INCLUDED"), - resource.TestCheckResourceAttr(resourceName, "private_endpoint_label", "xlx4fc9y"), - resource.TestCheckResourceAttr(resourceName, "nsg_ids.#", "2"), - resource.TestCheckResourceAttrSet(resourceName, "state"), - resource.TestCheckResourceAttrSet(resourceName, "subnet_id"), - resource.TestCheckResourceAttr(resourceName, "is_mtls_connection_required", "true"), - resource.TestCheckResourceAttr(resourceName, "connection_strings.0.profiles.#", "3"), - - func(s *terraform.State) (err error) { - resId2, err = acctest.FromInstanceState(s, resourceName, "id") - if resId != resId2 { - return fmt.Errorf("Resource recreated when it was supposed to be updated.") - } - return err - }, - ), + resource.TestCheckResourceAttr(resourceName, "admin_password", "BEstrO0ng_#12"), + resource.TestCheckResourceAttr(resourceName, "compartment_id", compartmentId), + resource.TestCheckResourceAttr(resourceName, "cpu_core_count", "1"), + resource.TestCheckResourceAttr(resourceName, "data_storage_size_in_tbs", "1"), + resource.TestCheckResourceAttr(resourceName, "db_name", adbName), + resource.TestCheckResourceAttr(resourceName, "db_workload", "OLTP"), + resource.TestCheckResourceAttr(resourceName, "display_name", "displayName2"), + resource.TestCheckResourceAttr(resourceName, "freeform_tags.%", "1"), + resource.TestCheckResourceAttrSet(resourceName, "id"), + resource.TestCheckResourceAttr(resourceName, "is_auto_scaling_enabled", "false"), + resource.TestCheckResourceAttr(resourceName, "is_dedicated", "false"), + resource.TestCheckResourceAttr(resourceName, "is_preview_version_with_service_terms_accepted", "false"), + resource.TestCheckResourceAttr(resourceName, "license_model", "LICENSE_INCLUDED"), + resource.TestCheckResourceAttr(resourceName, "private_endpoint_label", "xlx4fc9y"), + resource.TestCheckResourceAttr(resourceName, "nsg_ids.#", "2"), + resource.TestCheckResourceAttrSet(resourceName, "state"), + resource.TestCheckResourceAttrSet(resourceName, "subnet_id"), + resource.TestCheckResourceAttr(resourceName, "is_mtls_connection_required", "true"), + resource.TestCheckResourceAttr(resourceName, "connection_strings.0.profiles.#", "3"), + + func(s *terraform.State) (err error) { + resId2, err = acctest.FromInstanceState(s, resourceName, "id") + if resId != resId2 { + return fmt.Errorf("Resource recreated when it was supposed to be updated.") + } + return err + }, + ), }, //8. delete before next Create { From 65966ac3afc44171b81a5f80bdd5213ca77c9c63 Mon Sep 17 00:00:00 2001 From: Rakshith Siddanahalli Murukannappa Date: Wed, 23 Oct 2024 15:09:51 -0700 Subject: [PATCH 02/24] Exempted - go fmt updates --- ...abase_autonomous_database_resource_test.go | 166 +++++++++--------- 1 file changed, 83 insertions(+), 83 deletions(-) diff --git a/internal/integrationtest/database_autonomous_database_resource_test.go b/internal/integrationtest/database_autonomous_database_resource_test.go index 97c59a153d..2f0fc8f772 100644 --- a/internal/integrationtest/database_autonomous_database_resource_test.go +++ b/internal/integrationtest/database_autonomous_database_resource_test.go @@ -1682,35 +1682,35 @@ func TestResourceDatabaseAutonomousDatabaseResource_privateEndpoint(t *testing.T compartmentIdVariableStr + AutonomousDatabasePrivateEndpointResourceDependencies + acctest.GenerateResourceFromRepresentationMap("oci_database_autonomous_database", "test_autonomous_database", acctest.Optional, acctest.Update, acctest.GetUpdatedRepresentationCopy("nsg_ids", acctest.Representation{RepType: acctest.Optional, Create: []string{`${oci_core_network_security_group.test_network_security_group2.id}`}}, autonomousDatabasePrivateEndpointRepresentation)), Check: acctest.ComposeAggregateTestCheckFuncWrapper( - resource.TestCheckResourceAttr(datasourceName, "compartment_id", compartmentId), - resource.TestCheckResourceAttr(datasourceName, "db_workload", "OLTP"), - resource.TestCheckResourceAttr(datasourceName, "display_name", "displayName2"), - resource.TestCheckResourceAttr(datasourceName, "state", "AVAILABLE"), - - resource.TestCheckResourceAttr(datasourceName, "autonomous_databases.#", "1"), - resource.TestCheckResourceAttr(datasourceName, "autonomous_databases.0.compartment_id", compartmentId), - resource.TestCheckResourceAttr(datasourceName, "autonomous_databases.0.connection_strings.#", "1"), - resource.TestCheckResourceAttr(datasourceName, "autonomous_databases.0.cpu_core_count", "1"), - resource.TestCheckResourceAttr(datasourceName, "autonomous_databases.0.data_storage_size_in_tbs", "1"), - resource.TestCheckResourceAttr(datasourceName, "autonomous_databases.0.db_name", adbName), - resource.TestCheckResourceAttrSet(datasourceName, "autonomous_databases.0.db_version"), - resource.TestCheckResourceAttr(datasourceName, "autonomous_databases.0.db_workload", "OLTP"), - resource.TestCheckResourceAttr(datasourceName, "autonomous_databases.0.display_name", "displayName2"), - resource.TestCheckResourceAttr(datasourceName, "autonomous_databases.0.freeform_tags.%", "1"), - resource.TestCheckResourceAttrSet(datasourceName, "autonomous_databases.0.id"), - resource.TestCheckResourceAttr(datasourceName, "autonomous_databases.0.is_auto_scaling_enabled", "false"), - resource.TestCheckResourceAttr(datasourceName, "autonomous_databases.0.is_dedicated", "false"), - resource.TestCheckResourceAttrSet(datasourceName, "autonomous_databases.0.is_preview"), - resource.TestCheckResourceAttr(datasourceName, "autonomous_databases.0.nsg_ids.#", "1"), - //resource.TestCheckResourceAttrSet(datasourceName, "autonomous_databases.0.private_endpoint"), - resource.TestCheckResourceAttr(datasourceName, "autonomous_databases.0.private_endpoint_ip", "10.0.0.97"), - resource.TestCheckResourceAttr(datasourceName, "autonomous_databases.0.private_endpoint_label", "xlx4fc9y"), - resource.TestCheckResourceAttrSet(datasourceName, "autonomous_databases.0.state"), - resource.TestCheckResourceAttrSet(datasourceName, "autonomous_databases.0.subnet_id"), - resource.TestCheckResourceAttrSet(datasourceName, "autonomous_databases.0.time_created"), - resource.TestCheckResourceAttr(resourceName, "is_mtls_connection_required", "true"), - resource.TestCheckResourceAttr(resourceName, "connection_strings.0.profiles.#", "3"), - ), + resource.TestCheckResourceAttr(datasourceName, "compartment_id", compartmentId), + resource.TestCheckResourceAttr(datasourceName, "db_workload", "OLTP"), + resource.TestCheckResourceAttr(datasourceName, "display_name", "displayName2"), + resource.TestCheckResourceAttr(datasourceName, "state", "AVAILABLE"), + + resource.TestCheckResourceAttr(datasourceName, "autonomous_databases.#", "1"), + resource.TestCheckResourceAttr(datasourceName, "autonomous_databases.0.compartment_id", compartmentId), + resource.TestCheckResourceAttr(datasourceName, "autonomous_databases.0.connection_strings.#", "1"), + resource.TestCheckResourceAttr(datasourceName, "autonomous_databases.0.cpu_core_count", "1"), + resource.TestCheckResourceAttr(datasourceName, "autonomous_databases.0.data_storage_size_in_tbs", "1"), + resource.TestCheckResourceAttr(datasourceName, "autonomous_databases.0.db_name", adbName), + resource.TestCheckResourceAttrSet(datasourceName, "autonomous_databases.0.db_version"), + resource.TestCheckResourceAttr(datasourceName, "autonomous_databases.0.db_workload", "OLTP"), + resource.TestCheckResourceAttr(datasourceName, "autonomous_databases.0.display_name", "displayName2"), + resource.TestCheckResourceAttr(datasourceName, "autonomous_databases.0.freeform_tags.%", "1"), + resource.TestCheckResourceAttrSet(datasourceName, "autonomous_databases.0.id"), + resource.TestCheckResourceAttr(datasourceName, "autonomous_databases.0.is_auto_scaling_enabled", "false"), + resource.TestCheckResourceAttr(datasourceName, "autonomous_databases.0.is_dedicated", "false"), + resource.TestCheckResourceAttrSet(datasourceName, "autonomous_databases.0.is_preview"), + resource.TestCheckResourceAttr(datasourceName, "autonomous_databases.0.nsg_ids.#", "1"), + //resource.TestCheckResourceAttrSet(datasourceName, "autonomous_databases.0.private_endpoint"), + resource.TestCheckResourceAttr(datasourceName, "autonomous_databases.0.private_endpoint_ip", "10.0.0.97"), + resource.TestCheckResourceAttr(datasourceName, "autonomous_databases.0.private_endpoint_label", "xlx4fc9y"), + resource.TestCheckResourceAttrSet(datasourceName, "autonomous_databases.0.state"), + resource.TestCheckResourceAttrSet(datasourceName, "autonomous_databases.0.subnet_id"), + resource.TestCheckResourceAttrSet(datasourceName, "autonomous_databases.0.time_created"), + resource.TestCheckResourceAttr(resourceName, "is_mtls_connection_required", "true"), + resource.TestCheckResourceAttr(resourceName, "connection_strings.0.profiles.#", "3"), + ), }, //4. verify singular datasource { @@ -1719,32 +1719,32 @@ func TestResourceDatabaseAutonomousDatabaseResource_privateEndpoint(t *testing.T compartmentIdVariableStr + AutonomousDatabasePrivateEndpointResourceDependencies + acctest.GenerateResourceFromRepresentationMap("oci_database_autonomous_database", "test_autonomous_database", acctest.Optional, acctest.Update, acctest.GetUpdatedRepresentationCopy("nsg_ids", acctest.Representation{RepType: acctest.Optional, Create: []string{`${oci_core_network_security_group.test_network_security_group2.id}`}}, autonomousDatabasePrivateEndpointRepresentation)), Check: acctest.ComposeAggregateTestCheckFuncWrapper( - resource.TestCheckResourceAttrSet(singularDatasourceName, "autonomous_database_id"), - - resource.TestCheckResourceAttr(singularDatasourceName, "compartment_id", compartmentId), - resource.TestCheckResourceAttr(singularDatasourceName, "connection_strings.#", "1"), - resource.TestCheckResourceAttrSet(singularDatasourceName, "connection_strings.0.all_connection_strings.%"), - resource.TestCheckResourceAttr(singularDatasourceName, "cpu_core_count", "1"), - resource.TestCheckResourceAttr(singularDatasourceName, "data_storage_size_in_tbs", "1"), - resource.TestCheckResourceAttr(singularDatasourceName, "db_name", adbName), - resource.TestCheckResourceAttrSet(singularDatasourceName, "db_version"), - resource.TestCheckResourceAttr(singularDatasourceName, "db_workload", "OLTP"), - resource.TestCheckResourceAttrSet(singularDatasourceName, "db_version"), - resource.TestCheckResourceAttr(singularDatasourceName, "display_name", "displayName2"), - resource.TestCheckResourceAttr(singularDatasourceName, "freeform_tags.%", "1"), - resource.TestCheckResourceAttrSet(singularDatasourceName, "id"), - resource.TestCheckResourceAttr(singularDatasourceName, "is_auto_scaling_enabled", "false"), - resource.TestCheckResourceAttr(singularDatasourceName, "is_dedicated", "false"), - resource.TestCheckResourceAttrSet(singularDatasourceName, "is_preview"), - resource.TestCheckResourceAttr(singularDatasourceName, "nsg_ids.#", "1"), - //resource.TestCheckResourceAttrSet(singularDatasourceName, "private_endpoint"), - resource.TestCheckResourceAttr(singularDatasourceName, "private_endpoint_ip", "10.0.0.97"), - resource.TestCheckResourceAttr(singularDatasourceName, "private_endpoint_label", "xlx4fc9y"), - resource.TestCheckResourceAttrSet(singularDatasourceName, "state"), - resource.TestCheckResourceAttrSet(singularDatasourceName, "time_created"), - resource.TestCheckResourceAttr(resourceName, "is_mtls_connection_required", "true"), - resource.TestCheckResourceAttr(resourceName, "connection_strings.0.profiles.#", "3"), - ), + resource.TestCheckResourceAttrSet(singularDatasourceName, "autonomous_database_id"), + + resource.TestCheckResourceAttr(singularDatasourceName, "compartment_id", compartmentId), + resource.TestCheckResourceAttr(singularDatasourceName, "connection_strings.#", "1"), + resource.TestCheckResourceAttrSet(singularDatasourceName, "connection_strings.0.all_connection_strings.%"), + resource.TestCheckResourceAttr(singularDatasourceName, "cpu_core_count", "1"), + resource.TestCheckResourceAttr(singularDatasourceName, "data_storage_size_in_tbs", "1"), + resource.TestCheckResourceAttr(singularDatasourceName, "db_name", adbName), + resource.TestCheckResourceAttrSet(singularDatasourceName, "db_version"), + resource.TestCheckResourceAttr(singularDatasourceName, "db_workload", "OLTP"), + resource.TestCheckResourceAttrSet(singularDatasourceName, "db_version"), + resource.TestCheckResourceAttr(singularDatasourceName, "display_name", "displayName2"), + resource.TestCheckResourceAttr(singularDatasourceName, "freeform_tags.%", "1"), + resource.TestCheckResourceAttrSet(singularDatasourceName, "id"), + resource.TestCheckResourceAttr(singularDatasourceName, "is_auto_scaling_enabled", "false"), + resource.TestCheckResourceAttr(singularDatasourceName, "is_dedicated", "false"), + resource.TestCheckResourceAttrSet(singularDatasourceName, "is_preview"), + resource.TestCheckResourceAttr(singularDatasourceName, "nsg_ids.#", "1"), + //resource.TestCheckResourceAttrSet(singularDatasourceName, "private_endpoint"), + resource.TestCheckResourceAttr(singularDatasourceName, "private_endpoint_ip", "10.0.0.97"), + resource.TestCheckResourceAttr(singularDatasourceName, "private_endpoint_label", "xlx4fc9y"), + resource.TestCheckResourceAttrSet(singularDatasourceName, "state"), + resource.TestCheckResourceAttrSet(singularDatasourceName, "time_created"), + resource.TestCheckResourceAttr(resourceName, "is_mtls_connection_required", "true"), + resource.TestCheckResourceAttr(resourceName, "connection_strings.0.profiles.#", "3"), + ), }, //5. delete before next Create @@ -1793,34 +1793,34 @@ func TestResourceDatabaseAutonomousDatabaseResource_privateEndpoint(t *testing.T "private_endpoint_label": acctest.Representation{RepType: acctest.Optional, Create: `xlx4fc9y`}, "subnet_id": acctest.Representation{RepType: acctest.Optional, Create: `${oci_core_subnet.test_subnet.id}`}, }), []string{"whitelisted_ips"})), Check: acctest.ComposeAggregateTestCheckFuncWrapper( - resource.TestCheckResourceAttr(resourceName, "admin_password", "BEstrO0ng_#12"), - resource.TestCheckResourceAttr(resourceName, "compartment_id", compartmentId), - resource.TestCheckResourceAttr(resourceName, "cpu_core_count", "1"), - resource.TestCheckResourceAttr(resourceName, "data_storage_size_in_tbs", "1"), - resource.TestCheckResourceAttr(resourceName, "db_name", adbName), - resource.TestCheckResourceAttr(resourceName, "db_workload", "OLTP"), - resource.TestCheckResourceAttr(resourceName, "display_name", "displayName2"), - resource.TestCheckResourceAttr(resourceName, "freeform_tags.%", "1"), - resource.TestCheckResourceAttrSet(resourceName, "id"), - resource.TestCheckResourceAttr(resourceName, "is_auto_scaling_enabled", "false"), - resource.TestCheckResourceAttr(resourceName, "is_dedicated", "false"), - resource.TestCheckResourceAttr(resourceName, "is_preview_version_with_service_terms_accepted", "false"), - resource.TestCheckResourceAttr(resourceName, "license_model", "LICENSE_INCLUDED"), - resource.TestCheckResourceAttr(resourceName, "private_endpoint_label", "xlx4fc9y"), - resource.TestCheckResourceAttr(resourceName, "nsg_ids.#", "2"), - resource.TestCheckResourceAttrSet(resourceName, "state"), - resource.TestCheckResourceAttrSet(resourceName, "subnet_id"), - resource.TestCheckResourceAttr(resourceName, "is_mtls_connection_required", "true"), - resource.TestCheckResourceAttr(resourceName, "connection_strings.0.profiles.#", "3"), - - func(s *terraform.State) (err error) { - resId2, err = acctest.FromInstanceState(s, resourceName, "id") - if resId != resId2 { - return fmt.Errorf("Resource recreated when it was supposed to be updated.") - } - return err - }, - ), + resource.TestCheckResourceAttr(resourceName, "admin_password", "BEstrO0ng_#12"), + resource.TestCheckResourceAttr(resourceName, "compartment_id", compartmentId), + resource.TestCheckResourceAttr(resourceName, "cpu_core_count", "1"), + resource.TestCheckResourceAttr(resourceName, "data_storage_size_in_tbs", "1"), + resource.TestCheckResourceAttr(resourceName, "db_name", adbName), + resource.TestCheckResourceAttr(resourceName, "db_workload", "OLTP"), + resource.TestCheckResourceAttr(resourceName, "display_name", "displayName2"), + resource.TestCheckResourceAttr(resourceName, "freeform_tags.%", "1"), + resource.TestCheckResourceAttrSet(resourceName, "id"), + resource.TestCheckResourceAttr(resourceName, "is_auto_scaling_enabled", "false"), + resource.TestCheckResourceAttr(resourceName, "is_dedicated", "false"), + resource.TestCheckResourceAttr(resourceName, "is_preview_version_with_service_terms_accepted", "false"), + resource.TestCheckResourceAttr(resourceName, "license_model", "LICENSE_INCLUDED"), + resource.TestCheckResourceAttr(resourceName, "private_endpoint_label", "xlx4fc9y"), + resource.TestCheckResourceAttr(resourceName, "nsg_ids.#", "2"), + resource.TestCheckResourceAttrSet(resourceName, "state"), + resource.TestCheckResourceAttrSet(resourceName, "subnet_id"), + resource.TestCheckResourceAttr(resourceName, "is_mtls_connection_required", "true"), + resource.TestCheckResourceAttr(resourceName, "connection_strings.0.profiles.#", "3"), + + func(s *terraform.State) (err error) { + resId2, err = acctest.FromInstanceState(s, resourceName, "id") + if resId != resId2 { + return fmt.Errorf("Resource recreated when it was supposed to be updated.") + } + return err + }, + ), }, //8. delete before next Create { From cec785ec775de602ef54930fd97f7f91901c86a4 Mon Sep 17 00:00:00 2001 From: Rakshith Siddanahalli Murukannappa Date: Wed, 23 Oct 2024 16:10:21 -0700 Subject: [PATCH 03/24] Finalize changelog and release for version v6.15.0 --- CHANGELOG.md | 39 ++++++++++++++++++++++++++++++++------- 1 file changed, 32 insertions(+), 7 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 7a0265c67f..f39ff9f378 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,19 +1,35 @@ -## 6.15.0 (October 23, 2024) +## 6.15.0 (Unreleased) ### Added - Support for FSS Resource Locking - Support for ADB-S: Customer Managed Keys via Azure Key Vault and AWS KMS - Compute support for ZPR -- nlb-cp zpr support +nlb-cp zpr support - Support for Add DB 23ai support to Globally Distributed Autonomous Database -- Support for OCI Data Science Model Store Backup and Retention +Support for OCI Data Science Model Store Backup and Retention - Support for FC Redundancy Project - +- Support for OIDC Discovery in OKE +- Support for Support Cross region Backup copy & Replication for volumes encrypted with Customer KMS Keys +- Support for GenerateOnPremConnectorConfiguration resource in Data Safe +- Support for OIDC Auth Terraform +- Support for GoldenGate new deployment creation page and extended connectivity test results +- Support for DNSSEC +- Direct API support for OCI BSS +- Support for Desktop as a Service: Desktop Session Lifecycle Management +- LBCP ppv2 support +- Desktop as a Service: Shape Flexibility +- Support for Operations Insights : Autonomous Database IAM based connections +- Support for Customer Facing Scalable agent upgrade | ExaCC and ExaCS +- 9/24- Support for ZPR v1 +- Support for PV Support for Launch w/Multiple Attachments Support for VMs +- Support for Stack Monitoring Maintenance Windows +- To Support for Depracate old apps admin user creation with password +- Support for Desktop as a Service: Private Access ### Bug Fix -- For the ACD Version selection using env variable and vmNetwork should not consider state for calculating hash -- Fixed the timestamp issue to corrected form +for the ACD Version selection using env variable and vmNetwork should not consider state for calculating hash +Fixed the timestamp issue to corrected form -## 6.14.0 (October 16, 2024) +## 6.14.0 (Unreleased) ### Added - Support for OIDC Discovery in OKE @@ -24,6 +40,15 @@ - Support for DNSSEC - Direct API support for OCI BSS - Support for Desktop as a Service: Desktop Session Lifecycle Management +- LBCP ppv2 support +- Desktop as a Service: Shape Flexibility +- Support for Operations Insights : Autonomous Database IAM based connections +- Support for Customer Facing Scalable agent upgrade | ExaCC and ExaCS +- 9/24- Support for ZPR v1 +- Support for PV Support for Launch w/Multiple Attachments Support for VMs +- Support for Stack Monitoring Maintenance Windows +- To Support for Depracate old apps admin user creation with password +- Support for Desktop as a Service: Private Access ### Bug Fix Fixed the timestamp issue to corrected form From 6836e17b0f3d6c18122bfe77b1e08ee5ecf3a292 Mon Sep 17 00:00:00 2001 From: Sandeep Konda Date: Fri, 18 Oct 2024 11:55:51 +0530 Subject: [PATCH 04/24] Added - Support to return the generated secret in response --- .../identity_domains_auth_token_test.go | 3 +++ ...entity_domains_customer_secret_key_test.go | 3 +++ ...ty_domains_oauth2client_credential_test.go | 3 +++ .../identity_domains_smtp_credential_test.go | 3 +++ ...identity_domains_auth_token_data_source.go | 4 ++++ .../identity_domains_auth_token_resource.go | 12 ++++++++++ ...domains_customer_secret_key_data_source.go | 4 ++++ ...ty_domains_customer_secret_key_resource.go | 12 ++++++++++ ...ins_oauth2client_credential_data_source.go | 4 ++++ ...omains_oauth2client_credential_resource.go | 12 ++++++++++ ...ity_domains_smtp_credential_data_source.go | 4 ++++ ...entity_domains_smtp_credential_resource.go | 12 ++++++++++ .../identity_domains_auth_token.html.markdown | 11 ++++++++++ ...identity_domains_auth_tokens.html.markdown | 11 ++++++++++ ..._domains_customer_secret_key.html.markdown | 8 +++++++ ...domains_customer_secret_keys.html.markdown | 8 +++++++ ...ains_oauth2client_credential.html.markdown | 10 +++++++++ ...ins_oauth2client_credentials.html.markdown | 10 +++++++++ ...tity_domains_smtp_credential.html.markdown | 9 ++++++++ ...ity_domains_smtp_credentials.html.markdown | 9 ++++++++ .../identity_domains_auth_token.html.markdown | 22 +++++++++++++++++++ ..._domains_customer_secret_key.html.markdown | 16 ++++++++++++++ ...ains_oauth2client_credential.html.markdown | 20 +++++++++++++++++ ...tity_domains_smtp_credential.html.markdown | 18 +++++++++++++++ 24 files changed, 228 insertions(+) diff --git a/internal/integrationtest/identity_domains_auth_token_test.go b/internal/integrationtest/identity_domains_auth_token_test.go index ca56f0cb9c..1f0119239c 100644 --- a/internal/integrationtest/identity_domains_auth_token_test.go +++ b/internal/integrationtest/identity_domains_auth_token_test.go @@ -112,6 +112,7 @@ func TestIdentityDomainsAuthTokenResource_basic(t *testing.T) { Check: acctest.ComposeAggregateTestCheckFuncWrapper( resource.TestCheckResourceAttrSet(resourceName, "idcs_endpoint"), resource.TestCheckResourceAttr(resourceName, "schemas.#", "1"), + resource.TestCheckResourceAttrSet(resourceName, "token"), ), }, @@ -136,6 +137,7 @@ func TestIdentityDomainsAuthTokenResource_basic(t *testing.T) { resource.TestCheckResourceAttr(resourceName, "tags.0.value", "value"), resource.TestCheckResourceAttr(resourceName, "user.#", "1"), resource.TestCheckResourceAttrSet(resourceName, "user.0.value"), + resource.TestCheckResourceAttrSet(resourceName, "token"), func(s *terraform.State) (err error) { resId, err = acctest.FromInstanceState(s, resourceName, "id") @@ -202,6 +204,7 @@ func TestIdentityDomainsAuthTokenResource_basic(t *testing.T) { "idcs_endpoint", "resource_type_schema_version", "tags", + "token", }, ResourceName: resourceName, }, diff --git a/internal/integrationtest/identity_domains_customer_secret_key_test.go b/internal/integrationtest/identity_domains_customer_secret_key_test.go index 004035954d..2c566aa35d 100644 --- a/internal/integrationtest/identity_domains_customer_secret_key_test.go +++ b/internal/integrationtest/identity_domains_customer_secret_key_test.go @@ -113,6 +113,7 @@ func TestIdentityDomainsCustomerSecretKeyResource_basic(t *testing.T) { Check: acctest.ComposeAggregateTestCheckFuncWrapper( resource.TestCheckResourceAttrSet(resourceName, "idcs_endpoint"), resource.TestCheckResourceAttr(resourceName, "schemas.#", "1"), + resource.TestCheckResourceAttrSet(resourceName, "secret_key"), ), }, @@ -138,6 +139,7 @@ func TestIdentityDomainsCustomerSecretKeyResource_basic(t *testing.T) { resource.TestCheckResourceAttr(resourceName, "tags.0.value", "value"), resource.TestCheckResourceAttr(resourceName, "user.#", "1"), resource.TestCheckResourceAttrSet(resourceName, "user.0.value"), + resource.TestCheckResourceAttrSet(resourceName, "secret_key"), func(s *terraform.State) (err error) { resId, err = acctest.FromInstanceState(s, resourceName, "id") @@ -205,6 +207,7 @@ func TestIdentityDomainsCustomerSecretKeyResource_basic(t *testing.T) { "idcs_endpoint", "resource_type_schema_version", "tags", + "secret_key", }, ResourceName: resourceName, }, diff --git a/internal/integrationtest/identity_domains_oauth2client_credential_test.go b/internal/integrationtest/identity_domains_oauth2client_credential_test.go index e6f371a1ce..38fbd52b0f 100644 --- a/internal/integrationtest/identity_domains_oauth2client_credential_test.go +++ b/internal/integrationtest/identity_domains_oauth2client_credential_test.go @@ -124,6 +124,7 @@ func TestIdentityDomainsOAuth2ClientCredentialResource_basic(t *testing.T) { resource.TestCheckResourceAttr(resourceName, "scopes.#", "1"), resource.TestCheckResourceAttr(resourceName, "scopes.0.audience", "audience"), resource.TestCheckResourceAttr(resourceName, "scopes.0.scope", "scope"), + resource.TestCheckResourceAttrSet(resourceName, "secret"), ), }, @@ -152,6 +153,7 @@ func TestIdentityDomainsOAuth2ClientCredentialResource_basic(t *testing.T) { resource.TestCheckResourceAttr(resourceName, "tags.0.value", "value"), resource.TestCheckResourceAttr(resourceName, "user.#", "1"), resource.TestCheckResourceAttrSet(resourceName, "user.0.value"), + resource.TestCheckResourceAttrSet(resourceName, "secret"), func(s *terraform.State) (err error) { resId, err = acctest.FromInstanceState(s, resourceName, "id") @@ -223,6 +225,7 @@ func TestIdentityDomainsOAuth2ClientCredentialResource_basic(t *testing.T) { "resource_type_schema_version", "tags", "is_reset_secret", + "secret", }, ResourceName: resourceName, }, diff --git a/internal/integrationtest/identity_domains_smtp_credential_test.go b/internal/integrationtest/identity_domains_smtp_credential_test.go index a7d42a8946..b15f602c6f 100644 --- a/internal/integrationtest/identity_domains_smtp_credential_test.go +++ b/internal/integrationtest/identity_domains_smtp_credential_test.go @@ -111,6 +111,7 @@ func TestIdentityDomainsSmtpCredentialResource_basic(t *testing.T) { Check: acctest.ComposeAggregateTestCheckFuncWrapper( resource.TestCheckResourceAttrSet(resourceName, "idcs_endpoint"), resource.TestCheckResourceAttr(resourceName, "schemas.#", "1"), + resource.TestCheckResourceAttrSet(resourceName, "password"), ), }, @@ -136,6 +137,7 @@ func TestIdentityDomainsSmtpCredentialResource_basic(t *testing.T) { resource.TestCheckResourceAttr(resourceName, "user.#", "1"), resource.TestCheckResourceAttrSet(resourceName, "user.0.value"), resource.TestCheckResourceAttrSet(resourceName, "user_name"), + resource.TestCheckResourceAttrSet(resourceName, "password"), func(s *terraform.State) (err error) { resId, err = acctest.FromInstanceState(s, resourceName, "id") @@ -201,6 +203,7 @@ func TestIdentityDomainsSmtpCredentialResource_basic(t *testing.T) { "idcs_endpoint", "resource_type_schema_version", "tags", + "password", }, ResourceName: resourceName, }, diff --git a/internal/service/identity_domains/identity_domains_auth_token_data_source.go b/internal/service/identity_domains/identity_domains_auth_token_data_source.go index 0910659b4c..fb81622b67 100644 --- a/internal/service/identity_domains/identity_domains_auth_token_data_source.go +++ b/internal/service/identity_domains/identity_domains_auth_token_data_source.go @@ -187,6 +187,10 @@ func (s *IdentityDomainsAuthTokenDataSourceCrud) SetData() error { s.D.Set("tenancy_ocid", *s.Res.TenancyOcid) } + if s.Res.Token != nil { + s.D.Set("token", *s.Res.Token) + } + if s.Res.UrnIetfParamsScimSchemasOracleIdcsExtensionSelfChangeUser != nil { s.D.Set("urnietfparamsscimschemasoracleidcsextensionself_change_user", []interface{}{ExtensionSelfChangeUserToMap(s.Res.UrnIetfParamsScimSchemasOracleIdcsExtensionSelfChangeUser)}) } else { diff --git a/internal/service/identity_domains/identity_domains_auth_token_resource.go b/internal/service/identity_domains/identity_domains_auth_token_resource.go index eab41ec204..75bbd5b68e 100644 --- a/internal/service/identity_domains/identity_domains_auth_token_resource.go +++ b/internal/service/identity_domains/identity_domains_auth_token_resource.go @@ -337,6 +337,10 @@ func IdentityDomainsAuthTokenResource() *schema.Resource { Type: schema.TypeString, Computed: true, }, + "token": { + Type: schema.TypeString, + Computed: true, + }, }, } } @@ -667,6 +671,10 @@ func (s *IdentityDomainsAuthTokenResourceCrud) SetData() error { s.D.Set("tenancy_ocid", *s.Res.TenancyOcid) } + if s.Res.Token != nil { + s.D.Set("token", *s.Res.Token) + } + if s.Res.UrnIetfParamsScimSchemasOracleIdcsExtensionSelfChangeUser != nil { s.D.Set("urnietfparamsscimschemasoracleidcsextensionself_change_user", []interface{}{ExtensionSelfChangeUserToMap(s.Res.UrnIetfParamsScimSchemasOracleIdcsExtensionSelfChangeUser)}) } else { @@ -766,6 +774,10 @@ func AuthTokenToMap(obj oci_identity_domains.AuthToken) map[string]interface{} { result["tenancy_ocid"] = string(*obj.TenancyOcid) } + if obj.Token != nil { + result["token"] = string(*obj.Token) + } + if obj.UrnIetfParamsScimSchemasOracleIdcsExtensionSelfChangeUser != nil { result["urnietfparamsscimschemasoracleidcsextensionself_change_user"] = []interface{}{ExtensionSelfChangeUserToMap(obj.UrnIetfParamsScimSchemasOracleIdcsExtensionSelfChangeUser)} } diff --git a/internal/service/identity_domains/identity_domains_customer_secret_key_data_source.go b/internal/service/identity_domains/identity_domains_customer_secret_key_data_source.go index 20f4581c16..d429867535 100644 --- a/internal/service/identity_domains/identity_domains_customer_secret_key_data_source.go +++ b/internal/service/identity_domains/identity_domains_customer_secret_key_data_source.go @@ -183,6 +183,10 @@ func (s *IdentityDomainsCustomerSecretKeyDataSourceCrud) SetData() error { s.D.Set("schemas", s.Res.Schemas) + if s.Res.SecretKey != nil { + s.D.Set("secret_key", *s.Res.SecretKey) + } + s.D.Set("status", s.Res.Status) tags := []interface{}{} diff --git a/internal/service/identity_domains/identity_domains_customer_secret_key_resource.go b/internal/service/identity_domains/identity_domains_customer_secret_key_resource.go index 71785d5627..0941dcb619 100644 --- a/internal/service/identity_domains/identity_domains_customer_secret_key_resource.go +++ b/internal/service/identity_domains/identity_domains_customer_secret_key_resource.go @@ -343,6 +343,10 @@ func IdentityDomainsCustomerSecretKeyResource() *schema.Resource { }, }, }, + "secret_key": { + Type: schema.TypeString, + Computed: true, + }, "tenancy_ocid": { Type: schema.TypeString, Computed: true, @@ -678,6 +682,10 @@ func (s *IdentityDomainsCustomerSecretKeyResourceCrud) SetData() error { s.D.Set("schemas", s.Res.Schemas) + if s.Res.SecretKey != nil { + s.D.Set("secret_key", *s.Res.SecretKey) + } + s.D.Set("status", s.Res.Status) tags := []interface{}{} @@ -785,6 +793,10 @@ func CustomerSecretKeyToMap(obj oci_identity_domains.CustomerSecretKey) map[stri result["schemas"] = obj.Schemas + if obj.SecretKey != nil { + result["secret_key"] = string(*obj.SecretKey) + } + result["status"] = string(obj.Status) tags := []interface{}{} diff --git a/internal/service/identity_domains/identity_domains_oauth2client_credential_data_source.go b/internal/service/identity_domains/identity_domains_oauth2client_credential_data_source.go index d13513b18f..d805997894 100644 --- a/internal/service/identity_domains/identity_domains_oauth2client_credential_data_source.go +++ b/internal/service/identity_domains/identity_domains_oauth2client_credential_data_source.go @@ -189,6 +189,10 @@ func (s *IdentityDomainsOAuth2ClientCredentialDataSourceCrud) SetData() error { } s.D.Set("scopes", scopes) + if s.Res.Secret != nil { + s.D.Set("secret", *s.Res.Secret) + } + s.D.Set("status", s.Res.Status) tags := []interface{}{} diff --git a/internal/service/identity_domains/identity_domains_oauth2client_credential_resource.go b/internal/service/identity_domains/identity_domains_oauth2client_credential_resource.go index c300b1bc2f..dd7a39eca7 100644 --- a/internal/service/identity_domains/identity_domains_oauth2client_credential_resource.go +++ b/internal/service/identity_domains/identity_domains_oauth2client_credential_resource.go @@ -368,6 +368,10 @@ func IdentityDomainsOAuth2ClientCredentialResource() *schema.Resource { }, }, }, + "secret": { + Type: schema.TypeString, + Computed: true, + }, "tenancy_ocid": { Type: schema.TypeString, Computed: true, @@ -732,6 +736,10 @@ func (s *IdentityDomainsOAuth2ClientCredentialResourceCrud) SetData() error { } s.D.Set("scopes", scopes) + if s.Res.Secret != nil { + s.D.Set("secret", *s.Res.Secret) + } + s.D.Set("status", s.Res.Status) tags := []interface{}{} @@ -856,6 +864,10 @@ func OAuth2ClientCredentialToMap(obj oci_identity_domains.OAuth2ClientCredential } result["scopes"] = scopes + if obj.Secret != nil { + result["secret"] = string(*obj.Secret) + } + result["status"] = string(obj.Status) tags := []interface{}{} diff --git a/internal/service/identity_domains/identity_domains_smtp_credential_data_source.go b/internal/service/identity_domains/identity_domains_smtp_credential_data_source.go index 7cb2285c6b..13aab82a54 100644 --- a/internal/service/identity_domains/identity_domains_smtp_credential_data_source.go +++ b/internal/service/identity_domains/identity_domains_smtp_credential_data_source.go @@ -173,6 +173,10 @@ func (s *IdentityDomainsSmtpCredentialDataSourceCrud) SetData() error { s.D.Set("ocid", *s.Res.Ocid) } + if s.Res.Password != nil { + s.D.Set("password", *s.Res.Password) + } + s.D.Set("schemas", s.Res.Schemas) s.D.Set("status", s.Res.Status) diff --git a/internal/service/identity_domains/identity_domains_smtp_credential_resource.go b/internal/service/identity_domains/identity_domains_smtp_credential_resource.go index ffc5f67bff..033e963a0d 100644 --- a/internal/service/identity_domains/identity_domains_smtp_credential_resource.go +++ b/internal/service/identity_domains/identity_domains_smtp_credential_resource.go @@ -333,6 +333,10 @@ func IdentityDomainsSmtpCredentialResource() *schema.Resource { }, }, }, + "password": { + Type: schema.TypeString, + Computed: true, + }, "tenancy_ocid": { Type: schema.TypeString, Computed: true, @@ -658,6 +662,10 @@ func (s *IdentityDomainsSmtpCredentialResourceCrud) SetData() error { s.D.Set("ocid", *s.Res.Ocid) } + if s.Res.Password != nil { + s.D.Set("password", *s.Res.Password) + } + s.D.Set("schemas", s.Res.Schemas) s.D.Set("status", s.Res.Status) @@ -772,6 +780,10 @@ func SmtpCredentialToMap(obj oci_identity_domains.SmtpCredential) map[string]int result["ocid"] = string(*obj.Ocid) } + if obj.Password != nil { + result["password"] = string(*obj.Password) + } + result["schemas"] = obj.Schemas result["status"] = string(obj.Status) diff --git a/website/docs/d/identity_domains_auth_token.html.markdown b/website/docs/d/identity_domains_auth_token.html.markdown index e4b13d4bf2..98daf9585e 100644 --- a/website/docs/d/identity_domains_auth_token.html.markdown +++ b/website/docs/d/identity_domains_auth_token.html.markdown @@ -403,6 +403,17 @@ The following attributes are exported: * returned: default * type: string * uniqueness: none +* `token` - token + + **Added In:** 2010242156 + + **SCIM++ Properties:** + * caseExact: true + * type: string + * mutability: readOnly + * required: false + * returned: default + * idcsSensitive: hash_sc * `urnietfparamsscimschemasoracleidcsextensionself_change_user` - Controls whether a user can update themselves or not via User related APIs * `allow_self_change` - If true, allows requesting user to update themselves. If false, requesting user can't update themself (default). diff --git a/website/docs/d/identity_domains_auth_tokens.html.markdown b/website/docs/d/identity_domains_auth_tokens.html.markdown index cae3c41092..579a252585 100644 --- a/website/docs/d/identity_domains_auth_tokens.html.markdown +++ b/website/docs/d/identity_domains_auth_tokens.html.markdown @@ -413,6 +413,17 @@ The following attributes are exported: * returned: default * type: string * uniqueness: none +* `token` - token + + **Added In:** 2010242156 + + **SCIM++ Properties:** + * caseExact: true + * type: string + * mutability: readOnly + * required: false + * returned: default + * idcsSensitive: hash_sc * `urnietfparamsscimschemasoracleidcsextensionself_change_user` - Controls whether a user can update themselves or not via User related APIs * `allow_self_change` - If true, allows requesting user to update themselves. If false, requesting user can't update themself (default). diff --git a/website/docs/d/identity_domains_customer_secret_key.html.markdown b/website/docs/d/identity_domains_customer_secret_key.html.markdown index 84c01dc956..181a90e0df 100644 --- a/website/docs/d/identity_domains_customer_secret_key.html.markdown +++ b/website/docs/d/identity_domains_customer_secret_key.html.markdown @@ -360,6 +360,14 @@ The following attributes are exported: * returned: default * type: string * uniqueness: none +* `secret_key` - The secret key. + + **SCIM++ Properties:** + * caseExact: true + * type: string + * mutability: readOnly + * required: false + * returned: default * `status` - The user's credential status. **Added In:** 2109090424 diff --git a/website/docs/d/identity_domains_customer_secret_keys.html.markdown b/website/docs/d/identity_domains_customer_secret_keys.html.markdown index cf5b1e4ba1..9b0b1bd3c2 100644 --- a/website/docs/d/identity_domains_customer_secret_keys.html.markdown +++ b/website/docs/d/identity_domains_customer_secret_keys.html.markdown @@ -370,6 +370,14 @@ The following attributes are exported: * returned: default * type: string * uniqueness: none +* `secret_key` - The secret key. + + **SCIM++ Properties:** + * caseExact: true + * type: string + * mutability: readOnly + * required: false + * returned: default * `status` - The user's credential status. **Added In:** 2109090424 diff --git a/website/docs/d/identity_domains_oauth2client_credential.html.markdown b/website/docs/d/identity_domains_oauth2client_credential.html.markdown index 320404e6d8..6cb8d020c4 100644 --- a/website/docs/d/identity_domains_oauth2client_credential.html.markdown +++ b/website/docs/d/identity_domains_oauth2client_credential.html.markdown @@ -395,6 +395,16 @@ The following attributes are exported: * multiValued: false * required: true * returned: default +* `secret` - Secret + + **SCIM++ Properties:** + * caseExact: false + * type: string + * mutability: readOnly + * required: false + * returned: default + * idcsScimCompliant: false + * idcsSensitive: hash_sc * `status` - The user's credential status. **Added In:** 2109090424 diff --git a/website/docs/d/identity_domains_oauth2client_credentials.html.markdown b/website/docs/d/identity_domains_oauth2client_credentials.html.markdown index fa8865a36a..f6f646357f 100644 --- a/website/docs/d/identity_domains_oauth2client_credentials.html.markdown +++ b/website/docs/d/identity_domains_oauth2client_credentials.html.markdown @@ -405,6 +405,16 @@ The following attributes are exported: * multiValued: false * required: true * returned: default +* `secret` - Secret + + **SCIM++ Properties:** + * caseExact: false + * type: string + * mutability: readOnly + * required: false + * returned: default + * idcsScimCompliant: false + * idcsSensitive: hash_sc * `status` - The user's credential status. **Added In:** 2109090424 diff --git a/website/docs/d/identity_domains_smtp_credential.html.markdown b/website/docs/d/identity_domains_smtp_credential.html.markdown index d58a4c9109..274f874bdd 100644 --- a/website/docs/d/identity_domains_smtp_credential.html.markdown +++ b/website/docs/d/identity_domains_smtp_credential.html.markdown @@ -333,6 +333,15 @@ The following attributes are exported: * returned: default * type: string * uniqueness: global +* `password` - Password + + **SCIM++ Properties:** + * caseExact: true + * type: string + * mutability: readOnly + * required: false + * returned: default + * idcsSensitive: hash_sc * `schemas` - REQUIRED. The schemas attribute is an array of Strings which allows introspection of the supported schema version for a SCIM representation as well any schema extensions supported by that representation. Each String value must be a unique URI. This specification defines URIs for User, Group, and a standard \"enterprise\" extension. All representations of SCIM schema MUST include a non-zero value array with value(s) of the URIs supported by that representation. Duplicate values MUST NOT be included. Value order is not specified and MUST not impact behavior. **SCIM++ Properties:** diff --git a/website/docs/d/identity_domains_smtp_credentials.html.markdown b/website/docs/d/identity_domains_smtp_credentials.html.markdown index 38ffbd23bc..06ddb14901 100644 --- a/website/docs/d/identity_domains_smtp_credentials.html.markdown +++ b/website/docs/d/identity_domains_smtp_credentials.html.markdown @@ -343,6 +343,15 @@ The following attributes are exported: * returned: default * type: string * uniqueness: global +* `password` - Password + + **SCIM++ Properties:** + * caseExact: true + * type: string + * mutability: readOnly + * required: false + * returned: default + * idcsSensitive: hash_sc * `schemas` - REQUIRED. The schemas attribute is an array of Strings which allows introspection of the supported schema version for a SCIM representation as well any schema extensions supported by that representation. Each String value must be a unique URI. This specification defines URIs for User, Group, and a standard \"enterprise\" extension. All representations of SCIM schema MUST include a non-zero value array with value(s) of the URIs supported by that representation. Duplicate values MUST NOT be included. Value order is not specified and MUST not impact behavior. **SCIM++ Properties:** diff --git a/website/docs/r/identity_domains_auth_token.html.markdown b/website/docs/r/identity_domains_auth_token.html.markdown index 760f921e47..3b60d99d64 100644 --- a/website/docs/r/identity_domains_auth_token.html.markdown +++ b/website/docs/r/identity_domains_auth_token.html.markdown @@ -417,6 +417,17 @@ The following arguments are supported: * returned: default * type: string * uniqueness: none +* `token` - (Optional) (Updatable) token + + **Added In:** 2010242156 + + **SCIM++ Properties:** + * caseExact: true + * type: string + * mutability: readOnly + * required: false + * returned: default + * idcsSensitive: hash_sc * `urnietfparamsscimschemasoracleidcsextensionself_change_user` - (Optional) Controls whether a user can update themselves or not via User related APIs * `allow_self_change` - (Optional) If true, allows requesting user to update themselves. If false, requesting user can't update themself (default). @@ -864,6 +875,17 @@ The following attributes are exported: * returned: default * type: string * uniqueness: none +* `token` - token + + **Added In:** 2010242156 + + **SCIM++ Properties:** + * caseExact: true + * type: string + * mutability: readOnly + * required: false + * returned: default + * idcsSensitive: hash_sc * `urnietfparamsscimschemasoracleidcsextensionself_change_user` - Controls whether a user can update themselves or not via User related APIs * `allow_self_change` - If true, allows requesting user to update themselves. If false, requesting user can't update themself (default). diff --git a/website/docs/r/identity_domains_customer_secret_key.html.markdown b/website/docs/r/identity_domains_customer_secret_key.html.markdown index 8b12b0fc8c..517eb89bbc 100644 --- a/website/docs/r/identity_domains_customer_secret_key.html.markdown +++ b/website/docs/r/identity_domains_customer_secret_key.html.markdown @@ -375,6 +375,14 @@ The following arguments are supported: * returned: default * type: string * uniqueness: none +* `secret_key` - (Optional) (Updatable) The secret key. + + **SCIM++ Properties:** + * caseExact: true + * type: string + * mutability: readOnly + * required: false + * returned: default * `status` - (Optional) The user's credential status. **Added In:** 2109090424 @@ -836,6 +844,14 @@ The following attributes are exported: * returned: default * type: string * uniqueness: none +* `secret_key` - The secret key. + + **SCIM++ Properties:** + * caseExact: true + * type: string + * mutability: readOnly + * required: false + * returned: default * `status` - The user's credential status. **Added In:** 2109090424 diff --git a/website/docs/r/identity_domains_oauth2client_credential.html.markdown b/website/docs/r/identity_domains_oauth2client_credential.html.markdown index bb4e741950..b164200ec8 100644 --- a/website/docs/r/identity_domains_oauth2client_credential.html.markdown +++ b/website/docs/r/identity_domains_oauth2client_credential.html.markdown @@ -416,6 +416,16 @@ The following arguments are supported: * multiValued: false * required: true * returned: default +* `secret` - (Optional) (Updatable) Secret + + **SCIM++ Properties:** + * caseExact: false + * type: string + * mutability: readOnly + * required: false + * returned: default + * idcsScimCompliant: false + * idcsSensitive: hash_sc * `status` - (Optional) The user's credential status. **Added In:** 2109090424 @@ -912,6 +922,16 @@ The following attributes are exported: * multiValued: false * required: true * returned: default +* `secret` - Secret + + **SCIM++ Properties:** + * caseExact: false + * type: string + * mutability: readOnly + * required: false + * returned: default + * idcsScimCompliant: false + * idcsSensitive: hash_sc * `status` - The user's credential status. **Added In:** 2109090424 diff --git a/website/docs/r/identity_domains_smtp_credential.html.markdown b/website/docs/r/identity_domains_smtp_credential.html.markdown index b6e5194fe7..d13e54f1a2 100644 --- a/website/docs/r/identity_domains_smtp_credential.html.markdown +++ b/website/docs/r/identity_domains_smtp_credential.html.markdown @@ -346,6 +346,15 @@ The following arguments are supported: * returned: default * type: string * uniqueness: global +* `password` - (Optional) (Updatable) Password + + **SCIM++ Properties:** + * caseExact: true + * type: string + * mutability: readOnly + * required: false + * returned: default + * idcsSensitive: hash_sc * `resource_type_schema_version` - (Optional) An endpoint-specific schema version number to use in the Request. Allowed version values are Earliest Version or Latest Version as specified in each REST API endpoint description, or any sequential number inbetween. All schema attributes/body parameters are a part of version 1. After version 1, any attributes added or deprecated will be tagged with the version that they were added to or deprecated in. If no version is provided, the latest schema version is returned. * `schemas` - (Required) REQUIRED. The schemas attribute is an array of Strings which allows introspection of the supported schema version for a SCIM representation as well any schema extensions supported by that representation. Each String value must be a unique URI. This specification defines URIs for User, Group, and a standard \"enterprise\" extension. All representations of SCIM schema MUST include a non-zero value array with value(s) of the URIs supported by that representation. Duplicate values MUST NOT be included. Value order is not specified and MUST not impact behavior. @@ -800,6 +809,15 @@ The following attributes are exported: * returned: default * type: string * uniqueness: global +* `password` - Password + + **SCIM++ Properties:** + * caseExact: true + * type: string + * mutability: readOnly + * required: false + * returned: default + * idcsSensitive: hash_sc * `schemas` - REQUIRED. The schemas attribute is an array of Strings which allows introspection of the supported schema version for a SCIM representation as well any schema extensions supported by that representation. Each String value must be a unique URI. This specification defines URIs for User, Group, and a standard \"enterprise\" extension. All representations of SCIM schema MUST include a non-zero value array with value(s) of the URIs supported by that representation. Duplicate values MUST NOT be included. Value order is not specified and MUST not impact behavior. **SCIM++ Properties:** From 169871ef20c663671afac09a6f6fbd68e3c8cadb Mon Sep 17 00:00:00 2001 From: Anushree Jana Date: Thu, 17 Oct 2024 15:39:36 -0400 Subject: [PATCH 05/24] Added - Support for Extending LBaaS to send traffic to gRPC backends --- website/docs/r/load_balancer_listener.html.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/website/docs/r/load_balancer_listener.html.markdown b/website/docs/r/load_balancer_listener.html.markdown index 51aa3e81f2..f6090f4ec2 100644 --- a/website/docs/r/load_balancer_listener.html.markdown +++ b/website/docs/r/load_balancer_listener.html.markdown @@ -73,7 +73,7 @@ The following arguments are supported: Example: `example_path_route_set` * `port` - (Required) (Updatable) The communication port for the listener. Example: `80` -* `protocol` - (Required) (Updatable) The protocol on which the listener accepts connection requests. To get a list of valid protocols, use the [ListProtocols](https://docs.cloud.oracle.com/iaas/api/#/en/loadbalancer/20170115/LoadBalancerProtocol/ListProtocols) operation. Example: `HTTP` +* `protocol` - (Required) (Updatable) The protocol on which the listener accepts connection requests. The supported protocols are HTTP, HTTP2, TCP, and GRPC. You can also use the [ListProtocols](https://docs.cloud.oracle.com/iaas/api/#/en/loadbalancer/20170115/LoadBalancerProtocol/ListProtocols) operation to get a list of valid protocols. Example: `HTTP` * `routing_policy_name` - (Optional) (Updatable) The name of the routing policy applied to this listener's traffic. Example: `example_routing_policy` * `rule_set_names` - (Optional) (Updatable) The names of the [rule sets](https://docs.cloud.oracle.com/iaas/api/#/en/loadbalancer/20170115/RuleSet/) to apply to the listener. Example: ["example_rule_set"] * `ssl_configuration` - (Optional) (Updatable) The load balancer's SSL handling configuration details. From 890edb5ce037636a7eb108e41adae86fd089ff65 Mon Sep 17 00:00:00 2001 From: tf-oci-pub Date: Wed, 16 Oct 2024 12:01:41 +0000 Subject: [PATCH 06/24] TERSI -4046: Bug Fix - Fix Audit and SQL Firewall bugs - DataSafe --- .../data_safe_alert_policy_test.go | 3 - .../data_safe_alert_policies_data_source.go | 6 +- .../service/data_safe/data_safe_export.go | 79 +++++++++++++++++++ .../service/data_safe/register_datasource.go | 4 +- 4 files changed, 85 insertions(+), 7 deletions(-) diff --git a/internal/integrationtest/data_safe_alert_policy_test.go b/internal/integrationtest/data_safe_alert_policy_test.go index a186da9fb7..0b78d1e389 100644 --- a/internal/integrationtest/data_safe_alert_policy_test.go +++ b/internal/integrationtest/data_safe_alert_policy_test.go @@ -130,7 +130,6 @@ func TestDataSafeAlertPolicyResource_basic(t *testing.T) { resource.TestCheckResourceAttr(resourceName, "compartment_id", compartmentId), resource.TestCheckResourceAttr(resourceName, "description", "Check if remote login password file is exclusive and remote login is enabled "), resource.TestCheckResourceAttr(resourceName, "display_name", "Check remote login"), - resource.TestCheckResourceAttr(resourceName, "freeform_tags.%", "1"), resource.TestCheckResourceAttrSet(resourceName, "id"), resource.TestCheckResourceAttr(resourceName, "severity", "CRITICAL"), resource.TestCheckResourceAttrSet(resourceName, "state"), @@ -165,7 +164,6 @@ func TestDataSafeAlertPolicyResource_basic(t *testing.T) { resource.TestCheckResourceAttr(resourceName, "compartment_id", compartmentIdU), resource.TestCheckResourceAttr(resourceName, "description", "Check if remote login password file is exclusive and remote login is enabled "), resource.TestCheckResourceAttr(resourceName, "display_name", "Check remote login"), - resource.TestCheckResourceAttr(resourceName, "freeform_tags.%", "1"), resource.TestCheckResourceAttrSet(resourceName, "id"), resource.TestCheckResourceAttr(resourceName, "severity", "CRITICAL"), resource.TestCheckResourceAttrSet(resourceName, "state"), @@ -195,7 +193,6 @@ func TestDataSafeAlertPolicyResource_basic(t *testing.T) { resource.TestCheckResourceAttr(resourceName, "compartment_id", compartmentId), resource.TestCheckResourceAttr(resourceName, "description", "description2"), resource.TestCheckResourceAttr(resourceName, "display_name", "displayName2"), - resource.TestCheckResourceAttr(resourceName, "freeform_tags.%", "1"), resource.TestCheckResourceAttrSet(resourceName, "id"), resource.TestCheckResourceAttr(resourceName, "severity", "HIGH"), resource.TestCheckResourceAttrSet(resourceName, "state"), diff --git a/internal/service/data_safe/data_safe_alert_policies_data_source.go b/internal/service/data_safe/data_safe_alert_policies_data_source.go index 0071a6c2f8..34d8fa5358 100644 --- a/internal/service/data_safe/data_safe_alert_policies_data_source.go +++ b/internal/service/data_safe/data_safe_alert_policies_data_source.go @@ -123,8 +123,10 @@ func (s *DataSafeAlertPoliciesDataSourceCrud) Get() error { request.DisplayName = &tmp } - tmp := true - request.IsUserDefined = &tmp + if isUserDefined, ok := s.D.GetOkExists("is_user_defined"); ok { + tmp := isUserDefined.(bool) + request.IsUserDefined = &tmp + } if state, ok := s.D.GetOkExists("state"); ok { request.LifecycleState = oci_data_safe.ListAlertPoliciesLifecycleStateEnum(state.(string)) diff --git a/internal/service/data_safe/data_safe_export.go b/internal/service/data_safe/data_safe_export.go index e086a9362e..ec548b72f6 100644 --- a/internal/service/data_safe/data_safe_export.go +++ b/internal/service/data_safe/data_safe_export.go @@ -4,7 +4,11 @@ package data_safe import ( + "context" "fmt" + "strings" + + "github.com/oracle/terraform-provider-oci/internal/tfresource" oci_data_safe "github.com/oracle/oci-go-sdk/v65/datasafe" @@ -18,6 +22,7 @@ func init() { exportDataSafeTargetDatabasePeerTargetDatabaseHints.GetIdFn = getDataSafeTargetDatabasePeerTargetDatabaseId exportDataSafeDiscoveryJobsResultHints.GetIdFn = getDataSafeDiscoveryJobsResultId + exportDataSafeAlertPolicyHints.FindResourcesOverrideFn = findAlertPolicies tf_export.RegisterCompartmentGraphs("data_safe", dataSafeResourceGraph) } @@ -457,3 +462,77 @@ var dataSafeResourceGraph = tf_export.TerraformResourceGraph{ }, }, } + +func findAlertPolicies(ctx *tf_export.ResourceDiscoveryContext, tfMeta *tf_export.TerraformResourceAssociation, parent *tf_export.OCIResource, resourceGraph *tf_export.TerraformResourceGraph) (resources []*tf_export.OCIResource, err error) { + results := []*tf_export.OCIResource{} + request := oci_data_safe.ListAlertPoliciesRequest{} + tmp := true + request.IsUserDefined = &tmp + request.CompartmentId = &parent.CompartmentId + request.RequestMetadata.RetryPolicy = tfresource.GetRetryPolicy(false, "data_safe") + + response, err := ctx.Clients.DataSafeClient().ListAlertPolicies(context.Background(), request) + if err != nil { + return nil, err + } + + request.Page = response.OpcNextPage + + for request.Page != nil { + listResponse, err := ctx.Clients.DataSafeClient().ListAlertPolicies(context.Background(), request) + if err != nil { + return nil, err + } + + response.Items = append(response.Items, listResponse.Items...) + request.Page = listResponse.OpcNextPage + } + + for _, alertPolicy := range response.Items { + alertPolicyResource := tf_export.ResourcesMap[tfMeta.ResourceClass] + + d := alertPolicyResource.TestResourceData() + d.SetId(*alertPolicy.Id) + + if err := alertPolicyResource.Read(d, ctx.Clients); err != nil { + rdError := &tf_export.ResourceDiscoveryError{ResourceType: tfMeta.ResourceClass, ParentResource: parent.TerraformName, Error: err, ResourceGraph: resourceGraph} + ctx.AddErrorToList(rdError) + continue + } + + state := d.Get("state") + if state != nil && len(tfMeta.DiscoverableLifecycleStates) > 0 { + discoverable := false + for _, val := range tfMeta.DiscoverableLifecycleStates { + if strings.EqualFold(state.(string), val) { + discoverable = true + break + } + } + if !discoverable { + continue + } + } + + resource := &tf_export.OCIResource{ + CompartmentId: parent.CompartmentId, + SourceAttributes: tf_export.ConvertResourceDataToMap(alertPolicyResource.Schema, d), + RawResource: alertPolicy, + TerraformResource: tf_export.TerraformResource{ + Id: d.Id(), + TerraformClass: tfMeta.ResourceClass, + }, + GetHclStringFn: tf_export.GetHclStringFromGenericMap, + Parent: parent, + } + + if resource.TerraformName, err = tf_export.GenerateTerraformNameFromResource(resource.SourceAttributes, alertPolicyResource.Schema); err != nil { + resource.TerraformName = fmt.Sprintf("%s_%s", parent.Parent.TerraformName, *alertPolicy.DisplayName) + resource.TerraformName = tf_export.CheckDuplicateResourceName(resource.TerraformName) + } + + results = append(results, resource) + } + + return results, nil +} diff --git a/internal/service/data_safe/register_datasource.go b/internal/service/data_safe/register_datasource.go index 88e2c9268d..7965031a0f 100644 --- a/internal/service/data_safe/register_datasource.go +++ b/internal/service/data_safe/register_datasource.go @@ -35,9 +35,9 @@ func RegisterDatasource() { tfresource.RegisterDatasource("oci_data_safe_data_safe_configuration", DataSafeDataSafeConfigurationDataSource()) tfresource.RegisterDatasource("oci_data_safe_data_safe_private_endpoint", DataSafeDataSafePrivateEndpointDataSource()) tfresource.RegisterDatasource("oci_data_safe_data_safe_private_endpoints", DataSafeDataSafePrivateEndpointsDataSource()) - + tfresource.RegisterDatasource("oci_data_safe_database_security_config", DataSafeDatabaseSecurityConfigDataSource()) + tfresource.RegisterDatasource("oci_data_safe_database_security_configs", DataSafeDatabaseSecurityConfigsDataSource()) tfresource.RegisterDatasource("oci_data_safe_discovery_analytic", DataSafeDiscoveryAnalyticDataSource()) - tfresource.RegisterDatasource("oci_data_safe_discovery_analytics", DataSafeDiscoveryAnalyticsDataSource()) tfresource.RegisterDatasource("oci_data_safe_discovery_job", DataSafeDiscoveryJobDataSource()) tfresource.RegisterDatasource("oci_data_safe_discovery_jobs", DataSafeDiscoveryJobsDataSource()) From 65f0cd2ed200cb95717e9d76d20dd5215c7b4124 Mon Sep 17 00:00:00 2001 From: Piyush Tiwari Date: Fri, 16 Aug 2024 21:35:18 +0530 Subject: [PATCH 07/24] Added - override_existing flag for container_engine.addon resource --- examples/container_engine/addons/main.tf | 80 ++++---------- .../containerengine_addon_test.go | 100 ++++++++---------- .../containerengine_addon_resource.go | 70 +++++++++--- .../containerengine_node_pools.html.markdown | 2 +- .../r/containerengine_addon.html.markdown | 10 +- 5 files changed, 123 insertions(+), 139 deletions(-) diff --git a/examples/container_engine/addons/main.tf b/examples/container_engine/addons/main.tf index 6e52f56c20..cd7ebb430b 100644 --- a/examples/container_engine/addons/main.tf +++ b/examples/container_engine/addons/main.tf @@ -20,7 +20,7 @@ provider "oci" { } /* -A complete example to setup a cluster, then configure add-ons, then create node pool. +A complete example to setup a cluster, then configure add-ons. */ data "oci_identity_availability_domain" "ad1" { compartment_id = var.tenancy_ocid @@ -51,17 +51,16 @@ resource "oci_core_route_table" "test_route_table" { } } -resource "oci_core_subnet" "nodePool_Subnet_1" { - #Required - availability_domain = data.oci_identity_availability_domain.ad1.name - cidr_block = "10.0.22.0/24" - compartment_id = var.compartment_ocid - vcn_id = oci_core_vcn.test_vcn.id - - # Provider code tries to maintain compatibility with old versions. - security_list_ids = [oci_core_vcn.test_vcn.default_security_list_id] - display_name = "tfSubNet1ForNodePool" - route_table_id = oci_core_route_table.test_route_table.id +resource "oci_core_subnet" "api_endpoint_subnet" { + #Required + cidr_block = "10.0.23.0/24" + compartment_id = var.compartment_ocid + vcn_id = oci_core_vcn.test_vcn.id + + # Provider code tries to maintain compatibility with old versions. + security_list_ids = [oci_core_vcn.test_vcn.default_security_list_id] + display_name = "apiEndpointSubnet" + route_table_id = oci_core_route_table.test_route_table.id } resource "oci_containerengine_cluster" "test_cluster" { @@ -71,6 +70,9 @@ resource "oci_containerengine_cluster" "test_cluster" { name = "tfTestCluster" vcn_id = oci_core_vcn.test_vcn.id type = "ENHANCED_CLUSTER" + endpoint_config { + subnet_id = oci_core_subnet.api_endpoint_subnet.id + } } resource "oci_containerengine_addon" "dashboard" { @@ -80,6 +82,11 @@ resource "oci_containerengine_addon" "dashboard" { cluster_id = oci_containerengine_cluster.test_cluster.id #Required, remove the resource on addon deletion remove_addon_resources_on_delete = true + + #Optional, will override an existing installation if true and Addon already exists + override_existing = false + + #Optional dynamic configurations { for_each = local.addon_mappings @@ -90,60 +97,11 @@ resource "oci_containerengine_addon" "dashboard" { } } -resource "oci_containerengine_node_pool" "test_node_pool" { - #Required - cluster_id = oci_containerengine_cluster.test_cluster.id - compartment_id = var.compartment_ocid - kubernetes_version = reverse(data.oci_containerengine_cluster_option.test_cluster_option.kubernetes_versions)[0] - name = "tfPool" - node_shape = "VM.Standard2.1" - - node_config_details { - size = 1 - placement_configs { - availability_domain = data.oci_identity_availability_domain.ad1.name - subnet_id = oci_core_subnet.nodePool_Subnet_1.id - } - } - - node_source_details { - #Required - image_id = local.image_id - source_type = "IMAGE" - - #Optional - boot_volume_size_in_gbs = "60" - } - - //use terraform depends_on to enforce cluster->add-on->node pool DAG - depends_on = [oci_containerengine_addon.dashboard] -} - data "oci_containerengine_cluster_option" "test_cluster_option" { cluster_option_id = "all" } -data "oci_containerengine_node_pool_option" "test_node_pool_option" { - node_pool_option_id = "all" - compartment_id = var.compartment_ocid -} - -data "oci_core_images" "shape_specific_images" { - #Required - compartment_id = var.tenancy_ocid - shape = "VM.Standard2.1" -} - locals { - all_images = "${data.oci_core_images.shape_specific_images.images}" - all_sources = "${data.oci_containerengine_node_pool_option.test_node_pool_option.sources}" - - compartment_images = [for image in local.all_images : image.id if length(regexall("Oracle-Linux-[0-9]*.[0-9]*-20[0-9]*",image.display_name)) > 0 ] - - oracle_linux_images = [for source in local.all_sources : source.image_id if length(regexall("Oracle-Linux-[0-9]*.[0-9]*-20[0-9]*",source.source_name)) > 0] - - image_id = tolist(setintersection( toset(local.compartment_images), toset(local.oracle_linux_images)))[0] - addon_mappings = { mapping1 = { key = "numOfReplicas" diff --git a/internal/integrationtest/containerengine_addon_test.go b/internal/integrationtest/containerengine_addon_test.go index ad40f8249a..c8edbc6d21 100644 --- a/internal/integrationtest/containerengine_addon_test.go +++ b/internal/integrationtest/containerengine_addon_test.go @@ -36,6 +36,10 @@ var ( addonConfigValue = "1" addonConfigValueUpdate = "2" + essentialAddonName = "CoreDNS" + essentialAddonConfigKey = "minReplica" + essentialAddonConfigValue = "4" + ContainerengineAddonSingularDataSourceRepresentation = map[string]interface{}{ "addon_name": acctest.Representation{RepType: acctest.Required, Create: `${oci_containerengine_addon.test_addon.addon_name}`}, "cluster_id": acctest.Representation{RepType: acctest.Required, Create: `${oci_containerengine_cluster.test_cluster.id}`}, @@ -57,71 +61,31 @@ var ( "version": acctest.Representation{RepType: acctest.Optional, Create: nil, Update: `${data.oci_containerengine_addon_options.adddon_options_dashboard.addon_options[0].versions[0].version_number}`}, } + ContainerengineEssentialAddonRepresentation = map[string]interface{}{ + "cluster_id": acctest.Representation{RepType: acctest.Required, Create: `${oci_containerengine_cluster.test_cluster.id}`}, + "addon_name": acctest.Representation{RepType: acctest.Required, Create: essentialAddonName}, + "remove_addon_resources_on_delete": acctest.Representation{RepType: acctest.Required, Create: `false`}, + "override_existing": acctest.Representation{RepType: acctest.Optional, Create: `true`}, + "configurations": acctest.RepresentationGroup{RepType: acctest.Optional, Group: ContainerengineEssentialAddonConfigurationsRepresentation}, + } + ContainerengineAddonConfigurationsRepresentation = map[string]interface{}{ "key": acctest.Representation{RepType: acctest.Optional, Create: addonConfigKey, Update: addonConfigKey}, "value": acctest.Representation{RepType: acctest.Optional, Create: addonConfigValue, Update: addonConfigValueUpdate}, } + ContainerengineEssentialAddonConfigurationsRepresentation = map[string]interface{}{ + "key": acctest.Representation{RepType: acctest.Optional, Create: essentialAddonConfigKey}, + "value": acctest.Representation{RepType: acctest.Optional, Create: essentialAddonConfigValue}, + } + ContainerengineAddonRequiredOnlyResourceCreate = acctest.GenerateResourceFromRepresentationMap("oci_containerengine_addon", "test_addon", acctest.Required, acctest.Create, ContainerengineAddonRepresentation) ContainerengineAddonOptionalResourceCreate = acctest.GenerateResourceFromRepresentationMap("oci_containerengine_addon", "test_addon", acctest.Optional, acctest.Create, ContainerengineAddonRepresentation) ContainerengineAddonOptionalResourceConfigUpdate = acctest.GenerateResourceFromRepresentationMap("oci_containerengine_addon", "test_addon", acctest.Optional, acctest.Update, ContainerengineAddonRepresentation) - clusterOptionAddonDataSourceRepresentation = map[string]interface{}{ - "cluster_option_id": acctest.Representation{RepType: acctest.Required, Create: `all`}, - "compartment_id": acctest.Representation{RepType: acctest.Optional, Create: `${var.compartment_id}`}, - } - - clusterAddonVcnRepresentation = map[string]interface{}{ - "cidr_block": acctest.Representation{RepType: acctest.Required, Create: `10.0.0.0/16`}, - "compartment_id": acctest.Representation{RepType: acctest.Required, Create: `${var.compartment_id}`}, - "defined_tags": acctest.Representation{RepType: acctest.Optional, Create: `${map("${oci_identity_tag_namespace.tag-namespace1.name}.${oci_identity_tag.tag1.name}", "value")}`, Update: `${map("${oci_identity_tag_namespace.tag-namespace1.name}.${oci_identity_tag.tag1.name}", "updatedValue")}`}, - "display_name": acctest.Representation{RepType: acctest.Optional, Create: `displayName`, Update: `displayName2`}, - "dns_label": acctest.Representation{RepType: acctest.Optional, Create: `dnslabel`}, - "freeform_tags": acctest.Representation{RepType: acctest.Optional, Create: map[string]string{"Department": "Finance"}, Update: map[string]string{"Department": "Accounting"}}, - "lifecycle": acctest.RepresentationGroup{RepType: acctest.Required, Group: ignoreDefinedTagsChangesRep}, - } - - clusterAddonSubnetRepresentation = map[string]interface{}{ - "cidr_block": acctest.Representation{RepType: acctest.Required, Create: `10.0.0.0/24`, Update: "10.0.0.0/16"}, - "compartment_id": acctest.Representation{RepType: acctest.Required, Create: `${var.compartment_id}`}, - "vcn_id": acctest.Representation{RepType: acctest.Required, Create: `${oci_core_vcn.test_vcn.id}`}, - "availability_domain": acctest.Representation{RepType: acctest.Optional, Create: `${lower("${data.oci_identity_availability_domains.test_availability_domains.availability_domains.0.name}")}`}, - "defined_tags": acctest.Representation{RepType: acctest.Optional, Create: `${map("${oci_identity_tag_namespace.tag-namespace1.name}.${oci_identity_tag.tag1.name}", "value")}`, Update: `${map("${oci_identity_tag_namespace.tag-namespace1.name}.${oci_identity_tag.tag1.name}", "updatedValue")}`}, - "dhcp_options_id": acctest.Representation{RepType: acctest.Optional, Create: `${oci_core_vcn.test_vcn.default_dhcp_options_id}`, Update: `${oci_core_dhcp_options.test_dhcp_options.id}`}, - "display_name": acctest.Representation{RepType: acctest.Optional, Create: `MySubnet`, Update: `displayName2`}, - "dns_label": acctest.Representation{RepType: acctest.Optional, Create: `dnslabel`}, - "freeform_tags": acctest.Representation{RepType: acctest.Optional, Create: map[string]string{"Department": "Finance"}, Update: map[string]string{"Department": "Accounting"}}, - "prohibit_public_ip_on_vnic": acctest.Representation{RepType: acctest.Optional, Create: `false`}, - "prohibit_internet_ingress": acctest.Representation{RepType: acctest.Optional, Create: `false`}, - "route_table_id": acctest.Representation{RepType: acctest.Optional, Create: `${oci_core_vcn.test_vcn.default_route_table_id}`, Update: `${oci_core_route_table.test_route_table.id}`}, - "security_list_ids": acctest.Representation{RepType: acctest.Optional, Create: []string{`${oci_core_vcn.test_vcn.default_security_list_id}`}, Update: []string{`${oci_core_security_list.test_security_list.id}`}}, - "lifecycle": acctest.RepresentationGroup{RepType: acctest.Required, Group: ignoreDefinedTagsChangesRep}, - } - - containerengineClusterRepresentation = map[string]interface{}{ - "compartment_id": acctest.Representation{RepType: acctest.Required, Create: `${var.compartment_id}`}, - "kubernetes_version": acctest.Representation{RepType: acctest.Required, Create: `${data.oci_containerengine_cluster_option.test_cluster_option.kubernetes_versions[length(data.oci_containerengine_cluster_option.test_cluster_option.kubernetes_versions)-2]}`, Update: `${data.oci_containerengine_cluster_option.test_cluster_option.kubernetes_versions[length(data.oci_containerengine_cluster_option.test_cluster_option.kubernetes_versions)-1]}`}, - "name": acctest.Representation{RepType: acctest.Required, Create: `name`, Update: `name2`}, - "vcn_id": acctest.Representation{RepType: acctest.Required, Create: `${oci_core_vcn.test_vcn.id}`}, - "defined_tags": acctest.Representation{RepType: acctest.Optional, Create: `${map("${oci_identity_tag_namespace.tag-namespace1.name}.${oci_identity_tag.tag1.name}", "value")}`, Update: `${map("${oci_identity_tag_namespace.tag-namespace1.name}.${oci_identity_tag.tag1.name}", "updatedValue")}`}, - "endpoint_config": acctest.RepresentationGroup{RepType: acctest.Optional, Group: clusterAddonEndpointConfigRepresentation}, - "freeform_tags": acctest.Representation{RepType: acctest.Optional, Create: map[string]string{"Department": "Finance"}, Update: map[string]string{"Department": "Accounting"}}, - "image_policy_config": acctest.RepresentationGroup{RepType: acctest.Optional, Group: clusterAddonImagePolicyConfigRepresentation}, - "kms_key_id": acctest.Representation{RepType: acctest.Optional, Create: `${lookup(data.oci_kms_keys.test_keys_dependency.keys[0], "id")}`}, - "options": acctest.RepresentationGroup{RepType: acctest.Optional, Group: ContainerengineClusterOptionsRepresentation}, - } - - clusterAddonEndpointConfigRepresentation = map[string]interface{}{ - "nsg_ids": acctest.Representation{RepType: acctest.Optional, Create: []string{`${oci_core_network_security_group.test_network_security_group.id}`}, Update: []string{}}, - "subnet_id": acctest.Representation{RepType: acctest.Required, Create: `${oci_core_subnet.test_subnet.id}`}, - } - - clusterAddonImagePolicyConfigRepresentation = map[string]interface{}{ - "is_policy_enabled": acctest.Representation{RepType: acctest.Optional, Create: `false`, Update: `true`}, - "key_details": acctest.RepresentationGroup{RepType: acctest.Optional, Group: ContainerengineClusterImagePolicyConfigKeyDetailsRepresentation}, - } + ContainerengineEssentialAddonResourceCreate = acctest.GenerateResourceFromRepresentationMap("oci_containerengine_addon", "test_essential_addon", acctest.Optional, acctest.Create, ContainerengineEssentialAddonRepresentation) AddonOptionDashboardDataSourceRepresentation = map[string]interface{}{ "kubernetes_version": acctest.Representation{RepType: acctest.Required, Create: `${data.oci_containerengine_cluster_option.test_cluster_option.kubernetes_versions[length(data.oci_containerengine_cluster_option.test_cluster_option.kubernetes_versions)-2]}`}, @@ -130,9 +94,13 @@ var ( ContainerengineAddonResourceDependencies = acctest.GenerateResourceFromRepresentationMap("oci_containerengine_cluster", "test_cluster", acctest.Required, acctest.Create, acctest.RepresentationCopyWithNewProperties(ContainerengineClusterRepresentation, map[string]interface{}{ - "type": acctest.Representation{RepType: acctest.Required, Create: `ENHANCED_CLUSTER`, Update: `ENHANCED_CLUSTER`}, + "type": acctest.Representation{RepType: acctest.Required, Create: `ENHANCED_CLUSTER`, Update: `ENHANCED_CLUSTER`}, + "cluster_pod_network_options": acctest.RepresentationGroup{RepType: acctest.Required, Group: clusterClusterPodNetworkOptionsRepresentation}, + "endpoint_config": acctest.RepresentationGroup{RepType: acctest.Required, Group: ContainerengineClusterEndpointConfigRepresentation}, })) + acctest.GenerateDataSourceFromRepresentationMap("oci_containerengine_cluster_option", "test_cluster_option", acctest.Required, acctest.Create, ContainerengineContainerengineClusterOptionSingularDataSourceRepresentation) + + acctest.GenerateResourceFromRepresentationMap("oci_core_network_security_group", "test_network_security_group", acctest.Required, acctest.Create, CoreNetworkSecurityGroupRepresentation) + + acctest.GenerateResourceFromRepresentationMap("oci_core_subnet", "test_subnet", acctest.Required, acctest.Create, CoreSubnetRepresentation) + acctest.GenerateResourceFromRepresentationMap("oci_core_vcn", "test_vcn", acctest.Required, acctest.Create, acctest.RepresentationCopyWithNewProperties(CoreVcnRepresentation, map[string]interface{}{ "dns_label": acctest.Representation{RepType: acctest.Required, Create: `dnslabel`}, })) + @@ -145,12 +113,15 @@ func TestContainerengineAddonResource_basic(t *testing.T) { httpreplay.SetScenario("TestContainerengineAddonResource_basic") defer httpreplay.SaveScenario() + fmt.Printf("ContainerengineEssentialAddonResourceCreate: %v", ContainerengineEssentialAddonResourceCreate) + config := acctest.ProviderTestConfig() compartmentId := utils.GetEnvSettingWithBlankDefault("compartment_ocid") compartmentIdVariableStr := fmt.Sprintf("variable \"compartment_id\" { default = \"%s\" }\n", compartmentId) resourceName := "oci_containerengine_addon.test_addon" + essentialAddonResourceName := "oci_containerengine_addon.test_essential_addon" datasourceName := "data.oci_containerengine_addons.test_addons" singularDatasourceName := "data.oci_containerengine_addon.test_addon" @@ -230,6 +201,20 @@ func TestContainerengineAddonResource_basic(t *testing.T) { }, ), }, + // verify update-on-install of an essential addon + { + Config: baseConfig + ContainerengineAddonOptionalResourceConfigUpdate + ContainerengineEssentialAddonResourceCreate, + + Check: acctest.ComposeAggregateTestCheckFuncWrapper( + resource.TestCheckResourceAttrSet(essentialAddonResourceName, "cluster_id"), + resource.TestCheckResourceAttr(essentialAddonResourceName, "configurations.#", "1"), + resource.TestCheckResourceAttr(essentialAddonResourceName, "configurations.0.key", essentialAddonConfigKey), + resource.TestCheckResourceAttr(essentialAddonResourceName, "configurations.0.value", essentialAddonConfigValue), + resource.TestCheckResourceAttrSet(essentialAddonResourceName, "current_installed_version"), + resource.TestCheckResourceAttr(essentialAddonResourceName, "addon_name", essentialAddonName), + resource.TestCheckResourceAttrSet(essentialAddonResourceName, "state"), + ), + }, // verify datasource { Config: baseConfig + ContainerengineAddonDataSource + ContainerengineAddonOptionalResourceConfigUpdate, @@ -246,7 +231,6 @@ func TestContainerengineAddonResource_basic(t *testing.T) { Config: baseConfig + ContainerengineAddonSingularDataSource + ContainerengineAddonOptionalResourceConfigUpdate, Check: acctest.ComposeAggregateTestCheckFuncWrapper( - resource.TestCheckNoResourceAttr(singularDatasourceName, "addon_error"), resource.TestCheckResourceAttrSet(singularDatasourceName, "time_created"), resource.TestCheckResourceAttr(singularDatasourceName, "configurations.#", "1"), resource.TestCheckResourceAttr(singularDatasourceName, "configurations.0.key", addonConfigKey), @@ -262,7 +246,7 @@ func TestContainerengineAddonResource_basic(t *testing.T) { Config: baseConfig + ContainerengineAddonRequiredOnlyResourceCreate, ImportState: true, ImportStateVerify: true, - ImportStateVerifyIgnore: []string{"remove_addon_resources_on_delete"}, + ImportStateVerifyIgnore: []string{"remove_addon_resources_on_delete", "override_existing"}, ResourceName: resourceName, }, }) @@ -272,7 +256,7 @@ func testAccCheckContainerengineAddonDestroy(s *terraform.State) error { noResourceFound := true client := acctest.TestAccProvider.Meta().(*tf_client.OracleClients).ContainerEngineClient() for _, rs := range s.RootModule().Resources { - if rs.Type == "oci_containerengine_addon" { + if rs.Type == "oci_containerengine_addon" && rs.Primary.Attributes["addon_name"] != essentialAddonName { noResourceFound = false request := oci_containerengine.GetAddonRequest{} diff --git a/internal/service/containerengine/containerengine_addon_resource.go b/internal/service/containerengine/containerengine_addon_resource.go index b6324fe40e..055d539efa 100644 --- a/internal/service/containerengine/containerengine_addon_resource.go +++ b/internal/service/containerengine/containerengine_addon_resource.go @@ -75,6 +75,11 @@ func ContainerengineAddonResource() *schema.Resource { }, }, }, + "override_existing": { + Type: schema.TypeBool, + Optional: true, + Default: false, + }, "version": { Type: schema.TypeString, Optional: true, @@ -222,6 +227,11 @@ func (s *ContainerengineAddonResourceCrud) Create() error { } } + if isOverrideExisting, ok := s.D.GetOkExists("override_existing"); ok { + tmp := isOverrideExisting.(bool) + request.IsOverrideExisting = &tmp + } + if version, ok := s.D.GetOkExists("version"); ok { tmp := version.(string) request.Version = &tmp @@ -239,24 +249,36 @@ func (s *ContainerengineAddonResourceCrud) Create() error { err = s.getAddonFromWorkRequest(workId, s.D.Timeout(schema.TimeoutCreate)) if err != nil { - // Try to delete the addon - log.Printf("[DEBUG] creation failed, attempting to delete the addon: %v\n", request.AddonName) - disableAddonRequest := oci_containerengine.DisableAddonRequest{ - AddonName: request.AddonName, - ClusterId: request.ClusterId, - RequestMetadata: oci_common.RequestMetadata{ - RetryPolicy: tfresource.GetRetryPolicy(s.DisableNotFoundRetries, "containerengine"), - }, - } + log.Printf("[DEBUG] creation failed for addon %v\n", request.AddonName) - if isRemoveExistingAddon, ok := s.D.GetOkExists("remove_addon_resources_on_delete"); ok { - tmp := isRemoveExistingAddon.(bool) - disableAddonRequest.IsRemoveExistingAddOn = &tmp + workRequestType, wrTypeErr := s.getAddonWorkRequestType(workId) + if wrTypeErr != nil { + return fmt.Errorf("can't check if addon was creating or updating: %w\n", wrTypeErr) } - _, deleteErr := s.Client.DisableAddon(context.Background(), disableAddonRequest) - if deleteErr != nil { - return deleteErr + // Don't disable the addon if Addon already existed before, signified by UpdateAddon type WR + if workRequestType == oci_containerengine.WorkRequestOperationTypeUpdateAddon { + return err + } else { + // Try to delete the addon + log.Printf("[DEBUG] attempting to delete the addon: %v\n", request.AddonName) + disableAddonRequest := oci_containerengine.DisableAddonRequest{ + AddonName: request.AddonName, + ClusterId: request.ClusterId, + RequestMetadata: oci_common.RequestMetadata{ + RetryPolicy: tfresource.GetRetryPolicy(s.DisableNotFoundRetries, "containerengine"), + }, + } + + if isRemoveExistingAddon, ok := s.D.GetOkExists("remove_addon_resources_on_delete"); ok { + tmp := isRemoveExistingAddon.(bool) + disableAddonRequest.IsRemoveExistingAddOn = &tmp + } + + _, deleteErr := s.Client.DisableAddon(context.Background(), disableAddonRequest) + if deleteErr != nil { + return deleteErr + } } } @@ -365,6 +387,24 @@ func getErrorFromContainerengineAddonWorkRequest(client *oci_containerengine.Con return workRequestErr } +func (s *ContainerengineAddonResourceCrud) getAddonWorkRequestType(workId *string) (oci_containerengine.WorkRequestOperationTypeEnum, error) { + retryPolicy := tfresource.GetRetryPolicy(s.DisableNotFoundRetries, "containerengine") + response, err := s.Client.GetWorkRequest(context.Background(), + oci_containerengine.GetWorkRequestRequest{ + WorkRequestId: workId, + RequestMetadata: oci_common.RequestMetadata{ + RetryPolicy: retryPolicy, + }, + }, + ) + + if err != nil { + return "", err + } + + return response.OperationType, nil +} + func (s *ContainerengineAddonResourceCrud) Get() error { request := oci_containerengine.GetAddonRequest{} diff --git a/website/docs/d/containerengine_node_pools.html.markdown b/website/docs/d/containerengine_node_pools.html.markdown index bdcd649811..5d7a132147 100644 --- a/website/docs/d/containerengine_node_pools.html.markdown +++ b/website/docs/d/containerengine_node_pools.html.markdown @@ -101,7 +101,7 @@ The following attributes are exported: * `node_source_details` - Source running on the nodes in the node pool. * `boot_volume_size_in_gbs` - The size of the boot volume in GBs. Minimum value is 50 GB. See [here](https://docs.cloud.oracle.com/en-us/iaas/Content/Block/Concepts/bootvolumes.htm) for max custom boot volume sizing and OS-specific requirements. * `image_id` - The OCID of the image used to boot the node. - * `source_type` - The source type for the node. Use `IMAGE` when specifying an OCID of an image. + * `source_type` - The source type for the node. Use `IMAGE` when specifying an OCID of an image. * `quantity_per_subnet` - The number of nodes in each subnet. * `ssh_public_key` - The SSH public key on each node in the node pool on launch. * `state` - The state of the nodepool. diff --git a/website/docs/r/containerengine_addon.html.markdown b/website/docs/r/containerengine_addon.html.markdown index fe6bde014a..8b3229f034 100644 --- a/website/docs/r/containerengine_addon.html.markdown +++ b/website/docs/r/containerengine_addon.html.markdown @@ -19,7 +19,7 @@ resource "oci_containerengine_addon" "test_addon" { #Required addon_name = oci_containerengine_addon.test_addon.name cluster_id = oci_containerengine_cluster.test_cluster.id - remove_addon_resources_on_delete = true + remove_addon_resources_on_delete = true #Optional configurations { @@ -28,6 +28,7 @@ resource "oci_containerengine_addon" "test_addon" { key = var.addon_configurations_key value = var.addon_configurations_value } + override_existing = false version = var.addon_version } ``` @@ -39,9 +40,10 @@ The following arguments are supported: * `addon_name` - (Required) The name of the addon. * `cluster_id` - (Required) The OCID of the cluster. * `remove_addon_resources_on_delete` - (Required) Whether to remove addon resource in deletion. -* `configurations` - (Optional) (Updatable) Addon configuration details. - * `key` - (Optional) (Updatable) configuration key name - * `value` - (Optional) (Updatable) configuration value name +* `configurations` - (Optional) (Updatable) Addon configuration details + * `key` - (Optional) (Updatable) configuration key name + * `value` - (Optional) (Updatable) configuration value name +* `override_existing` - (Optional) Whether or not to override an existing addon installation. Defaults to false. If set to true, any existing addon installation would be overridden as per new installation details. * `version` - (Optional) (Updatable) The version of addon to be installed. From de377541bc42237cbe1bd45aea4f3268007eb12f Mon Sep 17 00:00:00 2001 From: Ravi Prakash Bharti Date: Fri, 25 Oct 2024 09:09:55 +0530 Subject: [PATCH 08/24] BugFix - Integration test compilation fix --- internal/integrationtest/containerengine_addon_test.go | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/internal/integrationtest/containerengine_addon_test.go b/internal/integrationtest/containerengine_addon_test.go index c8edbc6d21..38dd353d6b 100644 --- a/internal/integrationtest/containerengine_addon_test.go +++ b/internal/integrationtest/containerengine_addon_test.go @@ -94,9 +94,9 @@ var ( ContainerengineAddonResourceDependencies = acctest.GenerateResourceFromRepresentationMap("oci_containerengine_cluster", "test_cluster", acctest.Required, acctest.Create, acctest.RepresentationCopyWithNewProperties(ContainerengineClusterRepresentation, map[string]interface{}{ - "type": acctest.Representation{RepType: acctest.Required, Create: `ENHANCED_CLUSTER`, Update: `ENHANCED_CLUSTER`}, - "cluster_pod_network_options": acctest.RepresentationGroup{RepType: acctest.Required, Group: clusterClusterPodNetworkOptionsRepresentation}, - "endpoint_config": acctest.RepresentationGroup{RepType: acctest.Required, Group: ContainerengineClusterEndpointConfigRepresentation}, + "type": acctest.Representation{RepType: acctest.Required, Create: `ENHANCED_CLUSTER`, Update: `ENHANCED_CLUSTER`}, + //"cluster_pod_network_options": acctest.RepresentationGroup{RepType: acctest.Required, Group: clusterClusterPodNetworkOptionsRepresentation}, + "endpoint_config": acctest.RepresentationGroup{RepType: acctest.Required, Group: ContainerengineClusterEndpointConfigRepresentation}, })) + acctest.GenerateDataSourceFromRepresentationMap("oci_containerengine_cluster_option", "test_cluster_option", acctest.Required, acctest.Create, ContainerengineContainerengineClusterOptionSingularDataSourceRepresentation) + acctest.GenerateResourceFromRepresentationMap("oci_core_network_security_group", "test_network_security_group", acctest.Required, acctest.Create, CoreNetworkSecurityGroupRepresentation) + From 7159f15741f9c8bfc4ca582de6001456d28b91f1 Mon Sep 17 00:00:00 2001 From: Xiaotong Yan Date: Thu, 11 Jul 2024 17:33:16 -0700 Subject: [PATCH 09/24] update resource scheduler public documentation --- examples/resourcescheduler/main.tf | 60 ++++----- ...resource_scheduler_schedules.html.markdown | 6 +- .../resource_scheduler_schedule.html.markdown | 115 ++++++++++-------- 3 files changed, 99 insertions(+), 82 deletions(-) diff --git a/examples/resourcescheduler/main.tf b/examples/resourcescheduler/main.tf index 1f49d0c7bd..3ac2c97248 100644 --- a/examples/resourcescheduler/main.tf +++ b/examples/resourcescheduler/main.tf @@ -29,11 +29,11 @@ variable "schedule_freeform_tags" { } variable "schedule_recurrence_details" { - default = "recurrenceDetails" + default = "FREQ=DAILY;INTERVAL=1" } variable "schedule_recurrence_type" { - default = "CRON" + default = "ICAL" } variable "schedule_resource_filters_attribute" { @@ -69,19 +69,18 @@ variable "schedule_resources_metadata" { } variable "schedule_state" { - default = "AVAILABLE" + default = "ACTIVE" } variable "schedule_time_ends" { - default = "timeEnds" + default = "2024-07-23T17:45:44.408Z" } variable "schedule_time_starts" { - default = "timeStarts" + default = "2024-07-13T17:45:44.408Z" } - provider "oci" { tenancy_ocid = var.tenancy_ocid user_ocid = var.user_ocid @@ -97,33 +96,38 @@ resource "oci_resource_scheduler_schedule" "test_schedule" { recurrence_details = var.schedule_recurrence_details recurrence_type = var.schedule_recurrence_type - #Optional - defined_tags = map(oci_identity_tag_namespace.tag-namespace1.name.oci_identity_tag.tag1.name, var.schedule_defined_tags_value) - description = var.schedule_description - display_name = var.schedule_display_name - freeform_tags = var.schedule_freeform_tags resource_filters { - #Required - attribute = var.schedule_resource_filters_attribute - - #Optional - condition = var.schedule_resource_filters_condition - should_include_child_compartments = var.schedule_resource_filters_should_include_child_compartments + # Required + attribute = "DEFINED_TAGS" value { - - #Optional - namespace = var.schedule_resource_filters_value_namespace - tag_key = var.schedule_resource_filters_value_tag_key - value = var.schedule_resource_filters_value_value + namespace="ResourceSchedulerCanary" + tag_key="ScheduleTagFilterTestKey" + value="foo" } } - resources { - #Required - id = var.schedule_resources_id - - #Optional - metadata = var.schedule_resources_metadata + resource_filters { + # Required + attribute = "LIFECYCLE_STATE" + value { + value="running" + } + value { + value="stopped" + } + } + resource_filters { + # Required + attribute = "COMPARTMENT_ID" + value { + value=var.compartment_id + } } + + #Optional + defined_tags = map(oci_identity_tag_namespace.tag-namespace1.name.oci_identity_tag.tag1.name, var.schedule_defined_tags_value) + description = var.schedule_description + display_name = var.schedule_display_name + freeform_tags = var.schedule_freeform_tags time_ends = var.schedule_time_ends time_starts = var.schedule_time_starts } diff --git a/website/docs/d/resource_scheduler_schedules.html.markdown b/website/docs/d/resource_scheduler_schedules.html.markdown index 49acc00650..5962a82a25 100644 --- a/website/docs/d/resource_scheduler_schedules.html.markdown +++ b/website/docs/d/resource_scheduler_schedules.html.markdown @@ -20,8 +20,8 @@ data "oci_resource_scheduler_schedules" "test_schedules" { #Optional compartment_id = var.compartment_id - display_name = var.schedule_display_name schedule_id = oci_resource_scheduler_schedule.test_schedule.id + display_name = var.schedule_display_name state = var.schedule_state } ``` @@ -30,9 +30,9 @@ data "oci_resource_scheduler_schedules" "test_schedules" { The following arguments are supported: -* `compartment_id` - (Optional) This is the [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the compartment in which to list resources. +* `compartment_id` - (Optional) This is the [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the compartment in which to list resources. You need to at least provide either `compartment_id` or `schedule_id` or both. +* `schedule_id` - (Optional) This is the [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the schedule. You need to at least provide either `compartment_id` or `schedule_id` or both. * `display_name` - (Optional) This is a filter to return only resources that match the given display name exactly. -* `schedule_id` - (Optional) This is the [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the schedule. * `state` - (Optional) This is a filter to return only resources that match the given lifecycle state. The state value is case-insensitive. diff --git a/website/docs/r/resource_scheduler_schedule.html.markdown b/website/docs/r/resource_scheduler_schedule.html.markdown index 88c89cc8f8..c7299c0000 100644 --- a/website/docs/r/resource_scheduler_schedule.html.markdown +++ b/website/docs/r/resource_scheduler_schedule.html.markdown @@ -17,41 +17,43 @@ Creates a Schedule ```hcl resource "oci_resource_scheduler_schedule" "test_schedule" { - #Required - action = var.schedule_action - compartment_id = var.compartment_id - recurrence_details = var.schedule_recurrence_details - recurrence_type = var.schedule_recurrence_type - - #Optional - defined_tags = {"Operations.CostCenter"= "42"} - description = var.schedule_description - display_name = var.schedule_display_name - freeform_tags = {"Department"= "Finance"} - resource_filters { - #Required - attribute = var.schedule_resource_filters_attribute - - #Optional - condition = var.schedule_resource_filters_condition - should_include_child_compartments = var.schedule_resource_filters_should_include_child_compartments - value { - - #Optional - namespace = var.schedule_resource_filters_value_namespace - tag_key = var.schedule_resource_filters_value_tag_key - value = var.schedule_resource_filters_value_value - } - } - resources { - #Required - id = var.schedule_resources_id - - #Optional - metadata = var.schedule_resources_metadata - } - time_ends = var.schedule_time_ends - time_starts = var.schedule_time_starts + #Required + action = var.schedule_action + compartment_id = var.compartment_id + recurrence_details = var.schedule_recurrence_details + recurrence_type = var.schedule_recurrence_type + + resource_filters { + # Required + attribute = "DEFINED_TAGS" + value { + namespace="SampleNamespace" + tag_key="SampleTagKey" + value="SampleValue" + } + } + resource_filters { + # Required + attribute = "LIFECYCLE_STATE" + value { + value="SampleLifecycleState" + } + } + resource_filters { + # Required + attribute = "COMPARTMENT_ID" + value { + value=var.compartment_id + } + } + + #Optional + defined_tags = map(oci_identity_tag_namespace.tag-namespace1.name.oci_identity_tag.tag1.name, var.schedule_defined_tags_value) + description = var.schedule_description + display_name = var.schedule_display_name + freeform_tags = var.schedule_freeform_tags + time_ends = var.schedule_time_ends + time_starts = var.schedule_time_starts } ``` @@ -61,25 +63,36 @@ The following arguments are supported: * `action` - (Required) (Updatable) This is the action that will be executed by the schedule. * `compartment_id` - (Required) The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the compartment in which the schedule is created -* `defined_tags` - (Optional) (Updatable) These are defined tags for this resource. Each key is predefined and scoped to a namespace. For more information, see [Resource Tags](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/resourcetags.htm). Example: `{"Operations.CostCenter": "42"}` -* `description` - (Optional) (Updatable) This is the description of the schedule. -* `display_name` - (Optional) (Updatable) This is a user-friendly name for the schedule. It does not have to be unique, and it's changeable. -* `freeform_tags` - (Optional) (Updatable) These are free-form tags for this resource. Each tag is a simple key-value pair with no predefined name, type, or namespace. For more information, see [Resource Tags](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/resourcetags.htm). Example: `{"Department": "Finance"}` -* `recurrence_details` - (Required) (Updatable) This is the frequency of recurrence of a schedule. The frequency field can either conform to RFC-5545 formatting or UNIX cron formatting for recurrences, based on the value specified by the recurrenceType field. -* `recurrence_type` - (Required) (Updatable) Type of recurrence of a schedule +* `recurrence_type` - (Required) (Updatable) Type of recurrence of a schedule. Could be set to `ICAL`, `CRON` +* `recurrence_details` - (Required) (Updatable) This is the frequency of recurrence of a schedule. The frequency field can either conform to RFC-5545 formatting or UNIX cron formatting for recurrences, based on the value specified by the recurrenceType field. Example: `FREQ=WEEKLY;BYDAY=MO,TU,WE,TH;BYHOUR=10;INTERVAL=1` + * `resource_filters` - (Optional) (Updatable) This is a list of resources filters. The schedule will be applied to resources matching all of them. - * `attribute` - (Required) (Updatable) This is the resource attribute on which the threshold is defined. - * `condition` - (Applicable when attribute=TIME_CREATED) (Updatable) This is the condition for the filter in comparison to its creation time. - * `should_include_child_compartments` - (Applicable when attribute=COMPARTMENT_ID) (Updatable) This sets whether to include child compartments. - * `value` - (Optional) (Updatable) This is a collection of resource lifecycle state values. - * `namespace` - (Applicable when attribute=DEFINED_TAGS) (Updatable) This is the namespace of the defined tag. - * `tag_key` - (Applicable when attribute=DEFINED_TAGS) (Updatable) This is the key of the defined tag. - * `value` - (Applicable when attribute=DEFINED_TAGS) (Updatable) This is the value of the defined tag. + * `attribute` - (Required) (Updatable) This is the resource attribute on which the threshold is defined. We support 5 different types of attributes: `DEFINED_TAGS`, `COMPARTMENT_ID`, `TIME_CREATED`, `LIFECYCLE_STATE` and `RESOURCE_TYPE`. + * `value` - (Optional) (Updatable) This is a collection of resource filter values, different types of filter has different value format, see below: + * When `attribute="DEFINED_TAGS"`: + * `namespace` - (Updatable) This is the namespace of the defined tag. + * `tag_key` - (Updatable) This is the key of the defined tag. + * `value` - (Updatable) This is the value of the defined tag. + * When `attribute="TIME_CREATED"`: + * `condition` - (Applicable when attribute=TIME_CREATED) (Updatable) This is the condition for the filter in comparison to its creation time. Could be set to `EQUAL`, `BEFORE` and `AFTER`. + * `value` - (Updatable) This is the date and time of resources used for filtering, in the format defined by [RFC 3339](https://tools.ietf.org/html/rfc3339) Example: `2016-08-25T21:10:29.600Z` + * When `attribute="COMPARTMENT_ID"`: + * `should_include_child_compartments` - (Updatable) This boolean sets whether to include child compartments. + * `value` - (Updatable) This is the compartment id used for filtering. + * When `attribute="RESOURCE_TYPE"`: + * `value` - (Updatable) This is the resource type used for filtering. + * when `attribute="LIFECYCLE_STATE"`: + * `value` - (Updatable) This is the lifecycle state value used for filtering. + * `resources` - (Optional) (Updatable) This is the list of resources to which the scheduled operation is applied. * `id` - (Required) (Updatable) This is the resource OCID. * `metadata` - (Optional) (Updatable) This is additional information that helps to identity the resource for the schedule. - { "id": "" "metadata": { "namespaceName": "sampleNamespace", "bucketName": "sampleBucket" } } + { "id": "" "metadata": { "namespaceName": "sampleNamespace", "bucketName": "sampleBucket" } } +* `defined_tags` - (Optional) (Updatable) These are defined tags for this resource. Each key is predefined and scoped to a namespace. For more information, see [Resource Tags](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/resourcetags.htm). Example: `{"Operations.CostCenter": "42"}` +* `description` - (Optional) (Updatable) This is the description of the schedule. +* `display_name` - (Optional) (Updatable) This is a user-friendly name for the schedule. It does not have to be unique, and it's changeable. +* `freeform_tags` - (Optional) (Updatable) These are free-form tags for this resource. Each tag is a simple key-value pair with no predefined name, type, or namespace. For more information, see [Resource Tags](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/resourcetags.htm). Example: `{"Department": "Finance"}` * `time_ends` - (Optional) (Updatable) This is the date and time the schedule ends, in the format defined by [RFC 3339](https://tools.ietf.org/html/rfc3339) Example: `2016-08-25T21:10:29.600Z` * `time_starts` - (Optional) (Updatable) This is the date and time the schedule starts, in the format defined by [RFC 3339](https://tools.ietf.org/html/rfc3339) Example: `2016-08-25T21:10:29.600Z` * `state` - (Optional) (Updatable) The target state for the Schedule. Could be set to `ACTIVE` or `INACTIVE`. @@ -105,10 +118,10 @@ The following attributes are exported: * `attribute` - This is the resource attribute on which the threshold is defined. * `condition` - This is the condition for the filter in comparison to its creation time. * `should_include_child_compartments` - This sets whether to include child compartments. - * `value` - This is a collection of resource lifecycle state values. + * `value` - This is a collection of resource filter values. * `namespace` - This is the namespace of the defined tag. * `tag_key` - This is the key of the defined tag. - * `value` - This is the value of the defined tag. + * `value` - This is the value of the designated resource filter type value. * `resources` - This is the list of resources to which the scheduled operation is applied. * `id` - This is the resource OCID. * `metadata` - This is additional information that helps to identity the resource for the schedule. From 12bc8811763faa0101f74cc9ac7903c36ad77f7f Mon Sep 17 00:00:00 2001 From: Nitin More Date: Tue, 2 Jul 2024 19:33:59 +0530 Subject: [PATCH 10/24] initial commit --- .../datascience_models_data_source.go | 211 +++++++++++++++--- 1 file changed, 182 insertions(+), 29 deletions(-) diff --git a/internal/service/datascience/datascience_models_data_source.go b/internal/service/datascience/datascience_models_data_source.go index 6f730052ff..12bdf6c386 100644 --- a/internal/service/datascience/datascience_models_data_source.go +++ b/internal/service/datascience/datascience_models_data_source.go @@ -5,11 +5,12 @@ package datascience import ( "context" - - "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" oci_datascience "github.com/oracle/oci-go-sdk/v65/datascience" + "github.com/oracle/terraform-provider-oci/internal/client" "github.com/oracle/terraform-provider-oci/internal/tfresource" + + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" ) func DatascienceModelsDataSource() *schema.Resource { @@ -21,14 +22,6 @@ func DatascienceModelsDataSource() *schema.Resource { Type: schema.TypeString, Required: true, }, - "model_version_set_name": { - Type: schema.TypeString, - Required: true, - }, - "version_label": { - Type: schema.TypeString, - Required: true, - }, "created_by": { Type: schema.TypeString, Optional: true, @@ -52,7 +45,185 @@ func DatascienceModelsDataSource() *schema.Resource { "models": { Type: schema.TypeList, Computed: true, - Elem: tfresource.GetDataSourceItemSchema(DatascienceModelResource()), + Elem: &schema.Resource{ + Schema: map[string]*schema.Schema{ + // Required + "artifact_content_length": { + Type: schema.TypeString, + Required: true, + ForceNew: true, + ValidateFunc: tfresource.ValidateInt64TypeString, + DiffSuppressFunc: tfresource.Int64StringDiffSuppressFunction, + }, + "model_artifact": { + Type: schema.TypeString, + Required: true, + ForceNew: true, + }, + "compartment_id": { + Type: schema.TypeString, + Required: true, + }, + "project_id": { + Type: schema.TypeString, + Required: true, + ForceNew: true, + }, + "model_version_set_id": { + Type: schema.TypeString, + Optional: true, + Computed: true, + }, + "model_version_set_name": { + Type: schema.TypeString, + Optional: true, + Computed: true, + }, + "version_id": { + Type: schema.TypeString, + Optional: true, + Computed: true, + }, + "version_label": { + Type: schema.TypeString, + Optional: true, + Computed: true, + }, + + // Optional + "custom_metadata_list": { + Type: schema.TypeList, + Optional: true, + Computed: true, + Elem: &schema.Resource{ + Schema: map[string]*schema.Schema{ + // Required + + // Optional + "category": { + Type: schema.TypeString, + Optional: true, + Computed: true, + }, + "description": { + Type: schema.TypeString, + Optional: true, + Computed: true, + }, + "key": { + Type: schema.TypeString, + Optional: true, + Computed: true, + }, + "value": { + Type: schema.TypeString, + Optional: true, + Computed: true, + }, + + // Computed + }, + }, + }, + "defined_metadata_list": { + Type: schema.TypeList, + Optional: true, + Computed: true, + Elem: &schema.Resource{ + Schema: map[string]*schema.Schema{ + // Required + + // Optional + "category": { + Type: schema.TypeString, + Optional: true, + Computed: true, + }, + "description": { + Type: schema.TypeString, + Optional: true, + Computed: true, + }, + "key": { + Type: schema.TypeString, + Optional: true, + Computed: true, + }, + "value": { + Type: schema.TypeString, + Optional: true, + Computed: true, + }, + + // Computed + }, + }, + }, + "artifact_content_disposition": { + Type: schema.TypeString, + Optional: true, + Computed: true, + ForceNew: true, + }, + "defined_tags": { + Type: schema.TypeMap, + Optional: true, + Computed: true, + DiffSuppressFunc: tfresource.DefinedTagsDiffSuppressFunction, + Elem: schema.TypeString, + }, + "description": { + Type: schema.TypeString, + Optional: true, + Computed: true, + }, + "display_name": { + Type: schema.TypeString, + Optional: true, + Computed: true, + }, + "freeform_tags": { + Type: schema.TypeMap, + Optional: true, + Computed: true, + Elem: schema.TypeString, + }, + "input_schema": { + Type: schema.TypeString, + Optional: true, + Computed: true, + ForceNew: true, + }, + "output_schema": { + Type: schema.TypeString, + Optional: true, + Computed: true, + ForceNew: true, + }, + + // Computed + "artifact_content_md5": { + Type: schema.TypeString, + Computed: true, + }, + "artifact_last_modified": { + Type: schema.TypeString, + Computed: true, + }, + "created_by": { + Type: schema.TypeString, + Computed: true, + }, + "empty_model": { + Type: schema.TypeBool, + Computed: true, + }, + "time_created": { + Type: schema.TypeString, + Computed: true, + }, + }, + }, }, }, } @@ -94,16 +265,6 @@ func (s *DatascienceModelsDataSourceCrud) Get() error { request.DisplayName = &tmp } - if model_version_set_name, ok := s.D.GetOkExists("model_version_set_name"); ok { - tmp := model_version_set_name.(string) - request.ModelVersionSetName = &tmp - } - - if version_label, ok := s.D.GetOkExists("version_label"); ok { - tmp := version_label.(string) - request.VersionLabel = &tmp - } - if id, ok := s.D.GetOkExists("id"); ok { tmp := id.(string) request.Id = &tmp @@ -184,14 +345,6 @@ func (s *DatascienceModelsDataSourceCrud) SetData() error { model["project_id"] = *r.ProjectId } - if r.ModelVersionSetName != nil { - model["model_version_set_name"] = *r.ModelVersionSetName - } - - if r.VersionLabel != nil { - model["version_label"] = *r.VersionLabel - } - model["state"] = r.LifecycleState if r.TimeCreated != nil { From 52d100d9ef9940836d7120e30d1186625bdd8d1d Mon Sep 17 00:00:00 2001 From: Nitin More Date: Fri, 19 Jul 2024 16:20:34 +0530 Subject: [PATCH 11/24] initial commit --- .../integrationtest/datascience_model_test.go | 1 + .../datascience_models_data_source.go | 18 ++++++++++++++++++ 2 files changed, 19 insertions(+) diff --git a/internal/integrationtest/datascience_model_test.go b/internal/integrationtest/datascience_model_test.go index e2a49b033b..2d1a608416 100644 --- a/internal/integrationtest/datascience_model_test.go +++ b/internal/integrationtest/datascience_model_test.go @@ -165,6 +165,7 @@ func TestDatascienceModelResource_basic(t *testing.T) { resource.TestCheckResourceAttrSet(resourceName, "created_by"), resource.TestCheckResourceAttr(resourceName, "description", "description"), resource.TestCheckResourceAttr(resourceName, "display_name", "displayName"), + resource.TestCheckResourceAttr(resourceName, "model_version_set_name", "version_set_name"), resource.TestCheckResourceAttr(resourceName, "freeform_tags.%", "1"), resource.TestCheckResourceAttrSet(resourceName, "id"), resource.TestCheckResourceAttr(resourceName, "input_schema", "{}"), diff --git a/internal/service/datascience/datascience_models_data_source.go b/internal/service/datascience/datascience_models_data_source.go index 12bdf6c386..26ccf86df3 100644 --- a/internal/service/datascience/datascience_models_data_source.go +++ b/internal/service/datascience/datascience_models_data_source.go @@ -265,6 +265,16 @@ func (s *DatascienceModelsDataSourceCrud) Get() error { request.DisplayName = &tmp } + if model_version_set_name, ok := s.D.GetOkExists("model_version_set_name"); ok { + tmp := model_version_set_name.(string) + request.ModelVersionSetName = &tmp + } + + if version_label, ok := s.D.GetOkExists("version_label"); ok { + tmp := version_label.(string) + request.VersionLabel = &tmp + } + if id, ok := s.D.GetOkExists("id"); ok { tmp := id.(string) request.Id = &tmp @@ -345,6 +355,14 @@ func (s *DatascienceModelsDataSourceCrud) SetData() error { model["project_id"] = *r.ProjectId } + if r.ModelVersionSetName != nil { + model["model_version_set_name"] = *r.ModelVersionSetName + } + + if r.VersionLabel != nil { + model["version_label"] = *r.VersionLabel + } + model["state"] = r.LifecycleState if r.TimeCreated != nil { From b1730cd2dcb851926a9b2894b7a3a60cb8e2a751 Mon Sep 17 00:00:00 2001 From: PraveenKumar Shanmugam Date: Thu, 12 Sep 2024 10:07:39 +0530 Subject: [PATCH 12/24] modifying test case --- internal/integrationtest/datascience_model_test.go | 1 - 1 file changed, 1 deletion(-) diff --git a/internal/integrationtest/datascience_model_test.go b/internal/integrationtest/datascience_model_test.go index 2d1a608416..e2a49b033b 100644 --- a/internal/integrationtest/datascience_model_test.go +++ b/internal/integrationtest/datascience_model_test.go @@ -165,7 +165,6 @@ func TestDatascienceModelResource_basic(t *testing.T) { resource.TestCheckResourceAttrSet(resourceName, "created_by"), resource.TestCheckResourceAttr(resourceName, "description", "description"), resource.TestCheckResourceAttr(resourceName, "display_name", "displayName"), - resource.TestCheckResourceAttr(resourceName, "model_version_set_name", "version_set_name"), resource.TestCheckResourceAttr(resourceName, "freeform_tags.%", "1"), resource.TestCheckResourceAttrSet(resourceName, "id"), resource.TestCheckResourceAttr(resourceName, "input_schema", "{}"), From 2d5138c39ffc6726576332d0519185fd85a3b4f0 Mon Sep 17 00:00:00 2001 From: PraveenKumar Shanmugam Date: Thu, 12 Sep 2024 11:16:14 +0530 Subject: [PATCH 13/24] updating provider version --- examples/datascience/model_catalog/model.tf | 1 + 1 file changed, 1 insertion(+) diff --git a/examples/datascience/model_catalog/model.tf b/examples/datascience/model_catalog/model.tf index c75c2bda64..343a7a7f9f 100644 --- a/examples/datascience/model_catalog/model.tf +++ b/examples/datascience/model_catalog/model.tf @@ -64,6 +64,7 @@ provider "oci" { fingerprint = var.fingerprint private_key_path = var.private_key_path region = var.region + version = "6.9.0" } resource "oci_datascience_project" "tf_project" { From 7e22649f69da8eb2a6b27ca03b6b4f3d0ba0458b Mon Sep 17 00:00:00 2001 From: PraveenKumar Shanmugam Date: Thu, 12 Sep 2024 11:41:51 +0530 Subject: [PATCH 14/24] updating provider version --- examples/datascience/model_catalog/model.tf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/examples/datascience/model_catalog/model.tf b/examples/datascience/model_catalog/model.tf index 343a7a7f9f..c5acb131c1 100644 --- a/examples/datascience/model_catalog/model.tf +++ b/examples/datascience/model_catalog/model.tf @@ -64,7 +64,7 @@ provider "oci" { fingerprint = var.fingerprint private_key_path = var.private_key_path region = var.region - version = "6.9.0" + version = "6.0.0" } resource "oci_datascience_project" "tf_project" { From 300b79f3bdaa086e86915a7be91187133115fdb7 Mon Sep 17 00:00:00 2001 From: PraveenKumar Shanmugam Date: Thu, 12 Sep 2024 11:45:21 +0530 Subject: [PATCH 15/24] updating provider version --- examples/datascience/model_catalog/model.tf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/examples/datascience/model_catalog/model.tf b/examples/datascience/model_catalog/model.tf index c5acb131c1..befc866485 100644 --- a/examples/datascience/model_catalog/model.tf +++ b/examples/datascience/model_catalog/model.tf @@ -64,7 +64,7 @@ provider "oci" { fingerprint = var.fingerprint private_key_path = var.private_key_path region = var.region - version = "6.0.0" + #version = "6.0.0" } resource "oci_datascience_project" "tf_project" { From dbf245890778c245ef7c0e3f59b948e74b9ba72c Mon Sep 17 00:00:00 2001 From: PraveenKumar Shanmugam Date: Tue, 22 Oct 2024 13:40:39 +0530 Subject: [PATCH 16/24] Model Version Set - DataScience BugFix --- examples/datascience/model_catalog/model.tf | 1 - .../integrationtest/datascience_model_test.go | 15 +- .../datascience/datascience_model_resource.go | 39 ++-- .../datascience_models_data_source.go | 201 ++---------------- 4 files changed, 52 insertions(+), 204 deletions(-) diff --git a/examples/datascience/model_catalog/model.tf b/examples/datascience/model_catalog/model.tf index befc866485..c75c2bda64 100644 --- a/examples/datascience/model_catalog/model.tf +++ b/examples/datascience/model_catalog/model.tf @@ -64,7 +64,6 @@ provider "oci" { fingerprint = var.fingerprint private_key_path = var.private_key_path region = var.region - #version = "6.0.0" } resource "oci_datascience_project" "tf_project" { diff --git a/internal/integrationtest/datascience_model_test.go b/internal/integrationtest/datascience_model_test.go index e2a49b033b..c4e81fcccb 100644 --- a/internal/integrationtest/datascience_model_test.go +++ b/internal/integrationtest/datascience_model_test.go @@ -83,9 +83,9 @@ var ( "value": acctest.Representation{RepType: acctest.Optional, Create: `ner`, Update: `ner`}, } DatascienceModelRetentionSettingRepresentation = map[string]interface{}{ - "archive_after_days": acctest.Representation{RepType: acctest.Required, Create: `40`, Update: `41`}, + "archive_after_days": acctest.Representation{RepType: acctest.Required, Create: `40`, Update: `40`}, "customer_notification_type": acctest.Representation{RepType: acctest.Optional, Create: `NONE`, Update: `ALL`}, - "delete_after_days": acctest.Representation{RepType: acctest.Optional, Create: `45`, Update: `46`}, + "delete_after_days": acctest.Representation{RepType: acctest.Optional, Create: `45`, Update: `45`}, } DatascienceModelResourceDependencies = acctest.GenerateResourceFromRepresentationMap("oci_datascience_project", "test_project", acctest.Required, acctest.Create, DatascienceProjectRepresentation) + @@ -226,9 +226,9 @@ func TestDatascienceModelResource_basic(t *testing.T) { resource.TestCheckResourceAttrSet(resourceName, "project_id"), resource.TestCheckResourceAttr(resourceName, "retention_operation_details.#", "1"), resource.TestCheckResourceAttr(resourceName, "retention_setting.#", "1"), - resource.TestCheckResourceAttr(resourceName, "retention_setting.0.archive_after_days", "10"), + resource.TestCheckResourceAttr(resourceName, "retention_setting.0.archive_after_days", "40"), resource.TestCheckResourceAttr(resourceName, "retention_setting.0.customer_notification_type", "NONE"), - resource.TestCheckResourceAttr(resourceName, "retention_setting.0.delete_after_days", "10"), + resource.TestCheckResourceAttr(resourceName, "retention_setting.0.delete_after_days", "45"), //resource.TestCheckResourceAttr(resourceName, "state", ACTIVE), resource.TestCheckResourceAttrSet(resourceName, "state"), resource.TestCheckResourceAttrSet(resourceName, "time_created"), @@ -272,9 +272,9 @@ func TestDatascienceModelResource_basic(t *testing.T) { resource.TestCheckResourceAttrSet(resourceName, "project_id"), resource.TestCheckResourceAttr(resourceName, "retention_operation_details.#", "1"), resource.TestCheckResourceAttr(resourceName, "retention_setting.#", "1"), - resource.TestCheckResourceAttr(resourceName, "retention_setting.0.archive_after_days", "11"), + resource.TestCheckResourceAttr(resourceName, "retention_setting.0.archive_after_days", "40"), resource.TestCheckResourceAttr(resourceName, "retention_setting.0.customer_notification_type", "ALL"), - resource.TestCheckResourceAttr(resourceName, "retention_setting.0.delete_after_days", "11"), + resource.TestCheckResourceAttr(resourceName, "retention_setting.0.delete_after_days", "45"), //resource.TestCheckResourceAttr(resourceName, "state", ACTIVE), resource.TestCheckResourceAttrSet(resourceName, "state"), resource.TestCheckResourceAttrSet(resourceName, "time_created"), @@ -309,8 +309,7 @@ func TestDatascienceModelResource_basic(t *testing.T) { resource.TestCheckResourceAttrSet(datasourceName, "models.0.project_id"), resource.TestCheckResourceAttrSet(datasourceName, "models.0.state"), resource.TestCheckResourceAttrSet(datasourceName, "models.0.time_created"), - resource.TestCheckResourceAttrSet(datasourceName, "models.0.version_id"), - resource.TestCheckResourceAttr(datasourceName, "models.0.version_label", "versionLabel2"), + resource.TestCheckResourceAttr(datasourceName, "models.0.version_label", ""), ), }, diff --git a/internal/service/datascience/datascience_model_resource.go b/internal/service/datascience/datascience_model_resource.go index d50804c98b..522721d1e5 100644 --- a/internal/service/datascience/datascience_model_resource.go +++ b/internal/service/datascience/datascience_model_resource.go @@ -56,6 +56,21 @@ func DatascienceModelResource() *schema.Resource { Required: true, ForceNew: true, }, + "model_version_set_name": { + Type: schema.TypeString, + Optional: true, + Computed: true, + }, + "model_version_set_id": { + Type: schema.TypeString, + Optional: true, + Computed: true, + }, + "version_label": { + Type: schema.TypeString, + Optional: true, + Computed: true, + }, // Optional "backup_setting": { @@ -253,10 +268,6 @@ func DatascienceModelResource() *schema.Resource { Type: schema.TypeString, Computed: true, }, - "model_version_set_name": { - Type: schema.TypeString, - Computed: true, - }, "retention_operation_details": { Type: schema.TypeList, Computed: true, @@ -751,6 +762,18 @@ func (s *DatascienceModelResourceCrud) SetData() error { s.D.Set("description", *s.Res.Description) } + if s.Res.ModelVersionSetName != nil { + s.D.Set("model_version_set_name", *s.Res.ModelVersionSetName) + } + + if s.Res.ModelVersionSetId != nil { + s.D.Set("model_version_set_id", *s.Res.ModelVersionSetId) + } + + if s.Res.VersionLabel != nil { + s.D.Set("version_label", *s.Res.VersionLabel) + } + if s.Res.DisplayName != nil { s.D.Set("display_name", *s.Res.DisplayName) } @@ -765,14 +788,6 @@ func (s *DatascienceModelResourceCrud) SetData() error { s.D.Set("lifecycle_details", *s.Res.LifecycleDetails) } - if s.Res.ModelVersionSetId != nil { - s.D.Set("model_version_set_id", *s.Res.ModelVersionSetId) - } - - if s.Res.ModelVersionSetName != nil { - s.D.Set("model_version_set_name", *s.Res.ModelVersionSetName) - } - if s.Res.OutputSchema != nil { s.D.Set("output_schema", *s.Res.OutputSchema) } diff --git a/internal/service/datascience/datascience_models_data_source.go b/internal/service/datascience/datascience_models_data_source.go index 26ccf86df3..c97820749b 100644 --- a/internal/service/datascience/datascience_models_data_source.go +++ b/internal/service/datascience/datascience_models_data_source.go @@ -5,6 +5,7 @@ package datascience import ( "context" + oci_datascience "github.com/oracle/oci-go-sdk/v65/datascience" "github.com/oracle/terraform-provider-oci/internal/client" @@ -22,6 +23,18 @@ func DatascienceModelsDataSource() *schema.Resource { Type: schema.TypeString, Required: true, }, + "model_version_set_name": { + Type: schema.TypeString, + Optional: true, + }, + "model_version_set_id": { + Type: schema.TypeString, + Optional: true, + }, + "version_label": { + Type: schema.TypeString, + Optional: true, + }, "created_by": { Type: schema.TypeString, Optional: true, @@ -45,185 +58,7 @@ func DatascienceModelsDataSource() *schema.Resource { "models": { Type: schema.TypeList, Computed: true, - Elem: &schema.Resource{ - Schema: map[string]*schema.Schema{ - // Required - "artifact_content_length": { - Type: schema.TypeString, - Required: true, - ForceNew: true, - ValidateFunc: tfresource.ValidateInt64TypeString, - DiffSuppressFunc: tfresource.Int64StringDiffSuppressFunction, - }, - "model_artifact": { - Type: schema.TypeString, - Required: true, - ForceNew: true, - }, - "compartment_id": { - Type: schema.TypeString, - Required: true, - }, - "project_id": { - Type: schema.TypeString, - Required: true, - ForceNew: true, - }, - "model_version_set_id": { - Type: schema.TypeString, - Optional: true, - Computed: true, - }, - "model_version_set_name": { - Type: schema.TypeString, - Optional: true, - Computed: true, - }, - "version_id": { - Type: schema.TypeString, - Optional: true, - Computed: true, - }, - "version_label": { - Type: schema.TypeString, - Optional: true, - Computed: true, - }, - - // Optional - "custom_metadata_list": { - Type: schema.TypeList, - Optional: true, - Computed: true, - Elem: &schema.Resource{ - Schema: map[string]*schema.Schema{ - // Required - - // Optional - "category": { - Type: schema.TypeString, - Optional: true, - Computed: true, - }, - "description": { - Type: schema.TypeString, - Optional: true, - Computed: true, - }, - "key": { - Type: schema.TypeString, - Optional: true, - Computed: true, - }, - "value": { - Type: schema.TypeString, - Optional: true, - Computed: true, - }, - - // Computed - }, - }, - }, - "defined_metadata_list": { - Type: schema.TypeList, - Optional: true, - Computed: true, - Elem: &schema.Resource{ - Schema: map[string]*schema.Schema{ - // Required - - // Optional - "category": { - Type: schema.TypeString, - Optional: true, - Computed: true, - }, - "description": { - Type: schema.TypeString, - Optional: true, - Computed: true, - }, - "key": { - Type: schema.TypeString, - Optional: true, - Computed: true, - }, - "value": { - Type: schema.TypeString, - Optional: true, - Computed: true, - }, - - // Computed - }, - }, - }, - "artifact_content_disposition": { - Type: schema.TypeString, - Optional: true, - Computed: true, - ForceNew: true, - }, - "defined_tags": { - Type: schema.TypeMap, - Optional: true, - Computed: true, - DiffSuppressFunc: tfresource.DefinedTagsDiffSuppressFunction, - Elem: schema.TypeString, - }, - "description": { - Type: schema.TypeString, - Optional: true, - Computed: true, - }, - "display_name": { - Type: schema.TypeString, - Optional: true, - Computed: true, - }, - "freeform_tags": { - Type: schema.TypeMap, - Optional: true, - Computed: true, - Elem: schema.TypeString, - }, - "input_schema": { - Type: schema.TypeString, - Optional: true, - Computed: true, - ForceNew: true, - }, - "output_schema": { - Type: schema.TypeString, - Optional: true, - Computed: true, - ForceNew: true, - }, - - // Computed - "artifact_content_md5": { - Type: schema.TypeString, - Computed: true, - }, - "artifact_last_modified": { - Type: schema.TypeString, - Computed: true, - }, - "created_by": { - Type: schema.TypeString, - Computed: true, - }, - "empty_model": { - Type: schema.TypeBool, - Computed: true, - }, - "time_created": { - Type: schema.TypeString, - Computed: true, - }, - }, - }, + Elem: tfresource.GetDataSourceItemSchema(DatascienceModelResource()), }, }, } @@ -347,10 +182,6 @@ func (s *DatascienceModelsDataSourceCrud) SetData() error { model["lifecycle_details"] = *r.LifecycleDetails } - if r.ModelVersionSetId != nil { - model["model_version_set_id"] = *r.ModelVersionSetId - } - if r.ProjectId != nil { model["project_id"] = *r.ProjectId } @@ -359,6 +190,10 @@ func (s *DatascienceModelsDataSourceCrud) SetData() error { model["model_version_set_name"] = *r.ModelVersionSetName } + if r.ModelVersionSetId != nil { + model["model_version_set_id"] = *r.ModelVersionSetId + } + if r.VersionLabel != nil { model["version_label"] = *r.VersionLabel } From 344972b68f1b1e38bac1b2b0880e04288b3ddfa4 Mon Sep 17 00:00:00 2001 From: spokale Date: Wed, 11 Sep 2024 21:27:13 +0000 Subject: [PATCH 17/24] Updating oci_core_instance_pool resource to allow unordered attach/detach operations updating tests to generate reports for Acceptance and Backward compatibility --- .../compute/instance_pool/instance_pool.tf | 9 - .../instance_pool/instance_pool_ipv6.tf | 4 +- .../core_instance_pool_test.go | 96 ++++++++ .../load_balancer_backend_set_test.go | 7 + .../load_balancer_load_balancer_test.go | 8 + .../core/core_instance_pool_resource.go | 228 +++++++++++++++--- .../docs/r/core_instance_pool.html.markdown | 4 +- 7 files changed, 308 insertions(+), 48 deletions(-) diff --git a/examples/compute/instance_pool/instance_pool.tf b/examples/compute/instance_pool/instance_pool.tf index 798297b1ce..8788cc33e2 100644 --- a/examples/compute/instance_pool/instance_pool.tf +++ b/examples/compute/instance_pool/instance_pool.tf @@ -333,11 +333,6 @@ data "oci_core_instance" "test_instance_pool_instance_singular_datasource" { instance_id = data.oci_core_instance_pool_instances.test_instance_pool_instances_datasource.instances[count.index]["id"] } -data "oci_core_instance_pool_load_balancer_attachment" "test_instance_pool_load_balancer_attachment" { - instance_pool_id = oci_core_instance_pool.test_instance_pool.id - instance_pool_load_balancer_attachment_id = oci_core_instance_pool.test_instance_pool.load_balancers[0].id -} - output "pooled_instances_private_ips" { value = [data.oci_core_instance.test_instance_pool_instance_singular_datasource.*.private_ip] } @@ -350,7 +345,3 @@ output "pooled_instances_hostname_labels" { value = [data.oci_core_instance.test_instance_pool_instance_singular_datasource.*.hostname_label] } -output "load_balancer_backend_set_name" { - value = [data.oci_core_instance_pool_load_balancer_attachment.test_instance_pool_load_balancer_attachment.backend_set_name] -} - diff --git a/examples/compute/instance_pool/instance_pool_ipv6.tf b/examples/compute/instance_pool/instance_pool_ipv6.tf index dfcf68df71..fb637a0abb 100644 --- a/examples/compute/instance_pool/instance_pool_ipv6.tf +++ b/examples/compute/instance_pool/instance_pool_ipv6.tf @@ -140,7 +140,7 @@ resource "oci_core_instance_configuration" "test_instance_configuration_ipv6" { assign_public_ip = true display_name = "TestInstanceConfigurationVNIC" skip_source_dest_check = false - subnet_id = oci_core_subnet.test_subnet.id + subnet_id = oci_core_subnet.test_subnet_ipv6.id assign_ipv6ip = true ipv6address_ipv6subnet_cidr_pair_details { ipv6subnet_cidr = oci_core_subnet.test_subnet_ipv6.ipv6cidr_blocks[0] @@ -161,7 +161,7 @@ resource "oci_core_instance_configuration" "test_instance_configuration_ipv6" { secondary_vnics { display_name = "TestInstancePoolSecondaryVNIC" create_vnic_details { - subnet_id = oci_core_subnet.test_subnet.id + subnet_id = oci_core_subnet.test_subnet_ipv6.id assign_ipv6ip = true display_name = "TestInstancePoolSecondaryVNIC" ipv6address_ipv6subnet_cidr_pair_details { diff --git a/internal/integrationtest/core_instance_pool_test.go b/internal/integrationtest/core_instance_pool_test.go index 8aab1038b6..62e774c581 100644 --- a/internal/integrationtest/core_instance_pool_test.go +++ b/internal/integrationtest/core_instance_pool_test.go @@ -171,6 +171,13 @@ var ( "vnic_selection": acctest.Representation{RepType: acctest.Required, Create: `PrimaryVnic`}, } + CoreInstancePoolLoadBalancers3Representation = map[string]interface{}{ + "backend_set_name": acctest.Representation{RepType: acctest.Required, Create: `${oci_load_balancer_backend_set.test_backend_set3.name}`}, + "load_balancer_id": acctest.Representation{RepType: acctest.Required, Create: `${oci_load_balancer_load_balancer.test_load_balancer3.id}`}, + "port": acctest.Representation{RepType: acctest.Required, Create: `10`}, + "vnic_selection": acctest.Representation{RepType: acctest.Required, Create: `PrimaryVnic`}, + } + CoreInstancePoolConfigurationPoolRepresentation = map[string]interface{}{ "compartment_id": acctest.Representation{RepType: acctest.Required, Create: `${var.compartment_id}`}, "instance_details": acctest.RepresentationGroup{RepType: acctest.Required, Group: CoreInstancePoolInstanceConfigurationInstanceDetailsPoolRepresentation}, @@ -240,9 +247,11 @@ var ( DefinedTagsDependencies + acctest.GenerateResourceFromRepresentationMap("oci_load_balancer_backend_set", "test_backend_set", acctest.Required, acctest.Create, backendSetRepresentation) + acctest.GenerateResourceFromRepresentationMap("oci_load_balancer_backend_set", "test_backend_set2", acctest.Required, acctest.Create, backendSet2Representation) + + acctest.GenerateResourceFromRepresentationMap("oci_load_balancer_backend_set", "test_backend_set3", acctest.Required, acctest.Create, backendSet3Representation) + acctest.GenerateResourceFromRepresentationMap("oci_load_balancer_certificate", "test_certificate", acctest.Required, acctest.Create, certificateRepresentation) + acctest.GenerateResourceFromRepresentationMap("oci_load_balancer_load_balancer", "test_load_balancer", acctest.Required, acctest.Create, loadBalancerRepresentation) + acctest.GenerateResourceFromRepresentationMap("oci_load_balancer_load_balancer", "test_load_balancer2", acctest.Required, acctest.Create, loadBalancer2Representation) + + acctest.GenerateResourceFromRepresentationMap("oci_load_balancer_load_balancer", "test_load_balancer3", acctest.Required, acctest.Create, loadBalancer3Representation) + LoadBalancerSubnetDependencies CoreInstancePoolResourceDependenciesIpv6 = utils.OciImageIdsVariable + @@ -481,6 +490,93 @@ func TestCoreInstancePoolResource_basic(t *testing.T) { }, ), }, + // verify unordered attach + { + Config: config + compartmentIdVariableStr + CoreInstancePoolResourceDependencies + + acctest.GenerateResourceFromRepresentationMap("oci_core_instance_pool", "test_instance_pool", acctest.Optional, acctest.Update, acctest.RepresentationCopyWithNewProperties(CoreInstancePoolRepresentation, map[string]interface{}{ + "load_balancers": []acctest.RepresentationGroup{{RepType: acctest.Optional, Group: CoreInstancePoolLoadBalancersRepresentation}, {RepType: acctest.Optional, Group: CoreInstancePoolLoadBalancers3Representation}, {RepType: acctest.Optional, Group: CoreInstancePoolLoadBalancers2Representation}}, + })), + Check: acctest.ComposeAggregateTestCheckFuncWrapper( + resource.TestCheckResourceAttr(resourceName, "compartment_id", compartmentId), + resource.TestCheckResourceAttr(resourceName, "display_name", "displayName2"), + resource.TestCheckResourceAttr(resourceName, "freeform_tags.%", "1"), + resource.TestCheckResourceAttrSet(resourceName, "id"), + resource.TestCheckResourceAttrSet(resourceName, "instance_configuration_id"), + resource.TestCheckResourceAttr(resourceName, "load_balancers.#", "3"), + resource.TestCheckResourceAttrSet(resourceName, "load_balancers.0.backend_set_name"), + resource.TestCheckResourceAttrSet(resourceName, "load_balancers.0.id"), + resource.TestCheckResourceAttrSet(resourceName, "load_balancers.0.instance_pool_id"), + resource.TestCheckResourceAttrSet(resourceName, "load_balancers.0.load_balancer_id"), + resource.TestCheckResourceAttr(resourceName, "load_balancers.0.port", "10"), + resource.TestCheckResourceAttrSet(resourceName, "load_balancers.0.state"), + resource.TestCheckResourceAttr(resourceName, "load_balancers.0.vnic_selection", "PrimaryVnic"), + resource.TestCheckResourceAttrSet(resourceName, "load_balancers.1.backend_set_name"), + resource.TestCheckResourceAttrSet(resourceName, "load_balancers.1.id"), + resource.TestCheckResourceAttrSet(resourceName, "load_balancers.1.instance_pool_id"), + resource.TestCheckResourceAttrSet(resourceName, "load_balancers.1.load_balancer_id"), + resource.TestCheckResourceAttr(resourceName, "load_balancers.1.port", "10"), + resource.TestCheckResourceAttrSet(resourceName, "load_balancers.1.state"), + resource.TestCheckResourceAttr(resourceName, "load_balancers.1.vnic_selection", "PrimaryVnic"), + resource.TestCheckResourceAttrSet(resourceName, "load_balancers.2.backend_set_name"), + resource.TestCheckResourceAttrSet(resourceName, "load_balancers.2.id"), + resource.TestCheckResourceAttrSet(resourceName, "load_balancers.2.instance_pool_id"), + resource.TestCheckResourceAttrSet(resourceName, "load_balancers.2.load_balancer_id"), + resource.TestCheckResourceAttr(resourceName, "load_balancers.2.port", "10"), + resource.TestCheckResourceAttrSet(resourceName, "load_balancers.2.state"), + resource.TestCheckResourceAttr(resourceName, "load_balancers.2.vnic_selection", "PrimaryVnic"), + resource.TestCheckResourceAttr(resourceName, "placement_configurations.#", "1"), + resource.TestCheckResourceAttrSet(resourceName, "placement_configurations.0.availability_domain"), + resource.TestCheckResourceAttr(resourceName, "placement_configurations.0.fault_domains.#", "1"), + resource.TestCheckResourceAttrSet(resourceName, "placement_configurations.0.primary_subnet_id"), + resource.TestCheckResourceAttr(resourceName, "size", "3"), + resource.TestCheckResourceAttr(resourceName, "state", "RUNNING"), + resource.TestCheckResourceAttrSet(resourceName, "time_created"), + ), + }, + // verify unordered detach + { + Config: config + compartmentIdVariableStr + CoreInstancePoolResourceDependencies + + acctest.GenerateResourceFromRepresentationMap("oci_core_instance_pool", "test_instance_pool", acctest.Optional, acctest.Update, acctest.RepresentationCopyWithNewProperties(CoreInstancePoolRepresentation, map[string]interface{}{ + "load_balancers": []acctest.RepresentationGroup{{RepType: acctest.Optional, Group: CoreInstancePoolLoadBalancersRepresentation}, {RepType: acctest.Optional, Group: CoreInstancePoolLoadBalancers2Representation}}, + })), + Check: acctest.ComposeAggregateTestCheckFuncWrapper( + resource.TestCheckResourceAttr(resourceName, "compartment_id", compartmentId), + resource.TestCheckResourceAttr(resourceName, "display_name", "displayName2"), + resource.TestCheckResourceAttr(resourceName, "freeform_tags.%", "1"), + resource.TestCheckResourceAttrSet(resourceName, "id"), + resource.TestCheckResourceAttrSet(resourceName, "instance_configuration_id"), + resource.TestCheckResourceAttr(resourceName, "load_balancers.#", "2"), + resource.TestCheckResourceAttrSet(resourceName, "load_balancers.0.backend_set_name"), + resource.TestCheckResourceAttrSet(resourceName, "load_balancers.0.id"), + resource.TestCheckResourceAttrSet(resourceName, "load_balancers.0.instance_pool_id"), + resource.TestCheckResourceAttrSet(resourceName, "load_balancers.0.load_balancer_id"), + resource.TestCheckResourceAttr(resourceName, "load_balancers.0.port", "10"), + resource.TestCheckResourceAttrSet(resourceName, "load_balancers.0.state"), + resource.TestCheckResourceAttr(resourceName, "load_balancers.0.vnic_selection", "PrimaryVnic"), + resource.TestCheckResourceAttrSet(resourceName, "load_balancers.1.backend_set_name"), + resource.TestCheckResourceAttrSet(resourceName, "load_balancers.1.id"), + resource.TestCheckResourceAttrSet(resourceName, "load_balancers.1.instance_pool_id"), + resource.TestCheckResourceAttrSet(resourceName, "load_balancers.1.load_balancer_id"), + resource.TestCheckResourceAttr(resourceName, "load_balancers.1.port", "10"), + resource.TestCheckResourceAttrSet(resourceName, "load_balancers.1.state"), + resource.TestCheckResourceAttr(resourceName, "load_balancers.1.vnic_selection", "PrimaryVnic"), + resource.TestCheckResourceAttr(resourceName, "placement_configurations.#", "1"), + resource.TestCheckResourceAttrSet(resourceName, "placement_configurations.0.availability_domain"), + resource.TestCheckResourceAttr(resourceName, "placement_configurations.0.fault_domains.#", "1"), + resource.TestCheckResourceAttrSet(resourceName, "placement_configurations.0.primary_subnet_id"), + resource.TestCheckResourceAttr(resourceName, "size", "3"), + resource.TestCheckResourceAttr(resourceName, "state", "RUNNING"), + resource.TestCheckResourceAttrSet(resourceName, "time_created"), + + func(s *terraform.State) (err error) { + resId2, err = acctest.FromInstanceState(s, resourceName, "id") + if resId != resId2 { + return fmt.Errorf("Resource recreated when it was supposed to be updated.") + } + return err + }, + ), + }, // verify detach { Config: config + compartmentIdVariableStr + CoreInstancePoolResourceDependencies + diff --git a/internal/integrationtest/load_balancer_backend_set_test.go b/internal/integrationtest/load_balancer_backend_set_test.go index 23841c3064..49e454fa94 100644 --- a/internal/integrationtest/load_balancer_backend_set_test.go +++ b/internal/integrationtest/load_balancer_backend_set_test.go @@ -77,6 +77,13 @@ var ( "policy": acctest.Representation{RepType: acctest.Required, Create: `LEAST_CONNECTIONS`}, } + backendSet3Representation = map[string]interface{}{ + "health_checker": acctest.RepresentationGroup{RepType: acctest.Required, Group: backendSetHealthCheckerRepresentation}, + "load_balancer_id": acctest.Representation{RepType: acctest.Required, Create: `${oci_load_balancer_load_balancer.test_load_balancer3.id}`}, + "name": acctest.Representation{RepType: acctest.Required, Create: `backendSet3`}, + "policy": acctest.Representation{RepType: acctest.Required, Create: `LEAST_CONNECTIONS`}, + } + backendSetLBRepresentation = acctest.RepresentationCopyWithNewProperties(acctest.RepresentationCopyWithRemovedProperties(backendSetRepresentation, []string{`session_persistence_configuration`}), map[string]interface{}{ "lb_cookie_session_persistence_configuration": acctest.RepresentationGroup{RepType: acctest.Optional, Group: backendSetLbCookieSessionPersistenceConfigurationRepresentation}, }) diff --git a/internal/integrationtest/load_balancer_load_balancer_test.go b/internal/integrationtest/load_balancer_load_balancer_test.go index a0649aa0cd..4e65f49796 100644 --- a/internal/integrationtest/load_balancer_load_balancer_test.go +++ b/internal/integrationtest/load_balancer_load_balancer_test.go @@ -70,6 +70,14 @@ var ( "lifecycle": acctest.RepresentationGroup{RepType: acctest.Required, Group: ignoreChangesLBRepresentation}, } + loadBalancer3Representation = map[string]interface{}{ + "compartment_id": acctest.Representation{RepType: acctest.Required, Create: `${var.compartment_id}`}, + "display_name": acctest.Representation{RepType: acctest.Required, Create: `example_load_balancer3`, Update: `displayName4`}, + "shape": acctest.Representation{RepType: acctest.Required, Create: `100Mbps`, Update: `400Mbps`}, + "subnet_ids": acctest.Representation{RepType: acctest.Required, Create: []string{`${oci_core_subnet.lb_test_subnet_3.id}`, `${oci_core_subnet.lb_test_subnet_4.id}`}}, + "lifecycle": acctest.RepresentationGroup{RepType: acctest.Required, Group: ignoreChangesLBRepresentation}, + } + ignoreChangesLBRepresentation = map[string]interface{}{ "ignore_changes": acctest.Representation{RepType: acctest.Required, Create: []string{`defined_tags`}}, } diff --git a/internal/service/core/core_instance_pool_resource.go b/internal/service/core/core_instance_pool_resource.go index faccaf41be..9b8f6af990 100644 --- a/internal/service/core/core_instance_pool_resource.go +++ b/internal/service/core/core_instance_pool_resource.go @@ -207,7 +207,7 @@ func CoreInstancePoolResource() *schema.Resource { Computed: true, }, "load_balancers": { - Type: schema.TypeList, + Type: schema.TypeSet, Optional: true, Computed: true, DiffSuppressFunc: tfresource.LoadBalancersSuppressDiff, @@ -402,15 +402,12 @@ func (s *CoreInstancePoolResourceCrud) Create() error { } if loadBalancers, ok := s.D.GetOkExists("load_balancers"); ok { - interfaces := loadBalancers.([]interface{}) + set := loadBalancers.(*schema.Set) + interfaces := set.List() + tmp := make([]oci_core.AttachLoadBalancerDetails, len(interfaces)) - for i := range interfaces { - stateDataIndex := i - fieldKeyFormat := fmt.Sprintf("%s.%d.%%s", "load_balancers", stateDataIndex) - converted, err := s.mapToAttachLoadBalancerDetails(fieldKeyFormat) - if err != nil { - return err - } + for i, item := range interfaces { + converted := mapToAttachLoadBalancerDetails(item.(map[string]interface{})) tmp[i] = converted } if len(tmp) != 0 || s.D.HasChange("load_balancers") { @@ -523,7 +520,12 @@ func (s *CoreInstancePoolResourceCrud) Update() error { } if _, ok := s.D.GetOkExists("load_balancers"); ok && s.D.HasChange("load_balancers") { - oldRaw, newRaw := s.D.GetChange("load_balancers") + oldPoint, newPoint := s.D.GetChange("load_balancers") + oldSet := oldPoint.(*schema.Set) + oldRaw := oldSet.List() + newSet := newPoint.(*schema.Set) + newRaw := newSet.List() + err := s.updateLoadBalancers(oldRaw, newRaw) if err != nil { return err @@ -1070,18 +1072,24 @@ func (s *CoreInstancePoolResourceCrud) oneEditAway(oldLoadBalancers []oci_core.A if Abs(newLbsLength-oldLbsLength) == 0 { deltas, positionToUpdate := s.getLoadBalancerDeltas(oldLoadBalancers, newLoadBalancers) if deltas > 1 { - return false, "", oci_core.AttachLoadBalancerDetails{}, oci_core.AttachLoadBalancerDetails{}, "Error: Failed to update load balancers details, only one load balancer can be modified but found more than one" + uniqueDeltas := s.getUniqueLoadBalancerDeltas(oldLoadBalancers, newLoadBalancers) + if uniqueDeltas > 1 { + return false, "", oci_core.AttachLoadBalancerDetails{}, oci_core.AttachLoadBalancerDetails{}, "Error: Failed to update load balancers details, only one load balancer can be modified but found more than one" + } else { + return true, "ignoreOrder", oci_core.AttachLoadBalancerDetails{}, oci_core.AttachLoadBalancerDetails{}, "Info: Ignoring order of load balancers" + } + } else if deltas == 1 && positionToUpdate == newLbsLength-1 { return true, "update", oldLoadBalancers[positionToUpdate], newLoadBalancers[positionToUpdate], "" } - return false, "", oci_core.AttachLoadBalancerDetails{}, oci_core.AttachLoadBalancerDetails{}, "Error: Failed to update load balancers, only the load balancer which is at the end of the config can be modified" + return true, "ignoreOrder", oci_core.AttachLoadBalancerDetails{}, oci_core.AttachLoadBalancerDetails{}, "Error: Failed to update load balancers, only the load balancer which is at the end of the config can be modified" } // If the new lbs length is > old one that means an attach of an lb if newLbsLength > oldLbsLength { deltas, _ := s.getLoadBalancerDeltas(oldLoadBalancers, newLoadBalancers) if deltas != 0 { - return false, "", oci_core.AttachLoadBalancerDetails{}, oci_core.AttachLoadBalancerDetails{}, "Error: Failed to attach load balancer, only the load balancer which is at the end of the config can be attached" + return true, "ignoreOrder", oci_core.AttachLoadBalancerDetails{}, oci_core.AttachLoadBalancerDetails{}, "Error: Failed to attach load balancer, only the load balancer which is at the end of the config can be attached" } return true, "attach", oci_core.AttachLoadBalancerDetails{}, newLoadBalancers[newLbsLength-1], "" } @@ -1118,45 +1126,164 @@ func (s *CoreInstancePoolResourceCrud) updateLoadBalancers(oldRaw interface{}, n if !canEdit { return fmt.Errorf(errorMsg) } - id := s.D.Id() - if operation == "detach" || operation == "update" { - detachLoadBalancerRequest := oci_core.DetachLoadBalancerRequest{} - detachLoadBalancerRequest.LoadBalancerId = oldLoadbalancer.LoadBalancerId - detachLoadBalancerRequest.RequestMetadata.RetryPolicy = tfresource.GetRetryPolicy(s.DisableNotFoundRetries, "core") - detachLoadBalancerRequest.InstancePoolId = &id - detachLoadBalancerRequest.BackendSetName = oldLoadbalancer.BackendSetName - _, err := s.Client.DetachLoadBalancer(context.Background(), detachLoadBalancerRequest) + if operation == "ignoreOrder" { + log.Printf("Unordered edits are present in the request") + log.Printf("Error Msg from oneEditAway func: %s\n", errorMsg) + s.multipleEdits(oldBalancers, newBalancers) + } else { + id := s.D.Id() - if err != nil { - return err + if operation == "detach" || operation == "update" { + detachLoadBalancerRequest := oci_core.DetachLoadBalancerRequest{} + detachLoadBalancerRequest.LoadBalancerId = oldLoadbalancer.LoadBalancerId + detachLoadBalancerRequest.RequestMetadata.RetryPolicy = tfresource.GetRetryPolicy(s.DisableNotFoundRetries, "core") + detachLoadBalancerRequest.InstancePoolId = &id + detachLoadBalancerRequest.BackendSetName = oldLoadbalancer.BackendSetName + _, err := s.Client.DetachLoadBalancer(context.Background(), detachLoadBalancerRequest) + + if err != nil { + return err + } + + _, err = s.pollForLbOperationCompletion(&id, &oldLoadbalancer) + + if err != nil { + return err + } } - _, err = s.pollForLbOperationCompletion(&id, &oldLoadbalancer) + if operation == "attach" || operation == "update" { + attachLoadBalancerRequest := oci_core.AttachLoadBalancerRequest{} + attachLoadBalancerRequest.InstancePoolId = &id + attachLoadBalancerRequest.RequestMetadata.RetryPolicy = tfresource.GetRetryPolicy(s.DisableNotFoundRetries, "core") + attachLoadBalancerRequest.AttachLoadBalancerDetails = newLoadBalancer + _, err := s.Client.AttachLoadBalancer(context.Background(), attachLoadBalancerRequest) - if err != nil { - return err + if err != nil { + return err + } + + _, err = s.pollForLbOperationCompletion(&id, &attachLoadBalancerRequest.AttachLoadBalancerDetails) + + if err != nil { + return err + } + } + } + return nil +} + +/* +* +This function handles unordered addition of load balancers and multiple changes to the load balancer list. +It is designed to manage multiple attach and detach operations + +Currently, upstream filtering ensures only unordered requests are sent to this function to maintain alignment +with the other SDK. In the future, when the other SDKs are updated to handle multiple operations on the load +balancer list, we can update the conditions upstream to forward those requests to this function as well. +*/ +func (s *CoreInstancePoolResourceCrud) multipleEdits(oldLoadBalancers []oci_core.AttachLoadBalancerDetails, newLoadBalancers []oci_core.AttachLoadBalancerDetails) { + log.Printf("entering the multiple edits") + + var noChangeLBS []int + var attachLBS []oci_core.AttachLoadBalancerDetails + var detachLBS []oci_core.AttachLoadBalancerDetails + + for _, newLoadBalancer := range newLoadBalancers { + foundMatch := false + for i, oldLoadBalancer := range oldLoadBalancers { + if lbHasChanges(newLoadBalancer, oldLoadBalancer) { + continue + } + log.Printf("Adding index to noChangeLBS list") + noChangeLBS = append(noChangeLBS, i) + foundMatch = true + //break + } + if !foundMatch { + attachLBS = append(attachLBS, newLoadBalancer) + } + } + + for i, oldLoadBalancer := range oldLoadBalancers { + foundMatch := false + for _, noChangeLB := range noChangeLBS { + if i == noChangeLB { + foundMatch = true + } + } + if !foundMatch { + detachLBS = append(detachLBS, oldLoadBalancer) } } - if operation == "attach" || operation == "update" { - attachLoadBalancerRequest := oci_core.AttachLoadBalancerRequest{} - attachLoadBalancerRequest.InstancePoolId = &id - attachLoadBalancerRequest.RequestMetadata.RetryPolicy = tfresource.GetRetryPolicy(s.DisableNotFoundRetries, "core") - attachLoadBalancerRequest.AttachLoadBalancerDetails = newLoadBalancer - _, err := s.Client.AttachLoadBalancer(context.Background(), attachLoadBalancerRequest) + id := s.D.Id() + + for _, detachLB := range detachLBS { + log.Printf("calling detach load balancer") + err := s.detachLoadBalancer(id, detachLB) + log.Printf("Detach load balancer process complete") if err != nil { - return err + log.Printf("Error occurred while detaching load balancer: %v", err) + // return err + // *** decide if we want to return err here or continue trying to detach remaining lbs } + } - _, err = s.pollForLbOperationCompletion(&id, &attachLoadBalancerRequest.AttachLoadBalancerDetails) + for _, attachLB := range attachLBS { + log.Printf("calling attach load balancer") + err := s.attachLoadBalancer(id, attachLB) + log.Printf("Attach load balancer process complete") if err != nil { - return err + log.Printf("Error occurred while attaching load balancer: %v", err) + // return err + // *** decide if we want to return err here or continue trying to attach remaining lbs } } +} + +func (s *CoreInstancePoolResourceCrud) attachLoadBalancer(id string, newLoadBalancer oci_core.AttachLoadBalancerDetails) error { + attachLoadBalancerRequest := oci_core.AttachLoadBalancerRequest{} + attachLoadBalancerRequest.InstancePoolId = &id + attachLoadBalancerRequest.RequestMetadata.RetryPolicy = tfresource.GetRetryPolicy(s.DisableNotFoundRetries, "core") + attachLoadBalancerRequest.AttachLoadBalancerDetails = newLoadBalancer + + // Perform the actual attach operation + _, err := s.Client.AttachLoadBalancer(context.Background(), attachLoadBalancerRequest) + if err != nil { + return err + } + + _, err = s.pollForLbOperationCompletion(&id, &attachLoadBalancerRequest.AttachLoadBalancerDetails) + if err != nil { + return err + } + + return nil +} + +func (s *CoreInstancePoolResourceCrud) detachLoadBalancer(id string, oldLoadbalancer oci_core.AttachLoadBalancerDetails) error { + detachLoadBalancerRequest := oci_core.DetachLoadBalancerRequest{} + detachLoadBalancerRequest.LoadBalancerId = oldLoadbalancer.LoadBalancerId + detachLoadBalancerRequest.InstancePoolId = &id + detachLoadBalancerRequest.BackendSetName = oldLoadbalancer.BackendSetName + detachLoadBalancerRequest.RequestMetadata.RetryPolicy = tfresource.GetRetryPolicy(s.DisableNotFoundRetries, "core") + + // Perform the actual detach operation + _, err := s.Client.DetachLoadBalancer(context.Background(), detachLoadBalancerRequest) + if err != nil { + return err + } + + _, err = s.pollForLbOperationCompletion(&id, &oldLoadbalancer) + if err != nil { + return err + } + return nil } @@ -1230,6 +1357,37 @@ func (s *CoreInstancePoolResourceCrud) getLoadBalancerDeltas(balancers []oci_cor return deltas, positionToUpdate } +func (s *CoreInstancePoolResourceCrud) getUniqueLoadBalancerDeltas(balancers []oci_core.AttachLoadBalancerDetails, balancers2 []oci_core.AttachLoadBalancerDetails) int { + deltas := 0 + + for _, oldLb := range balancers { + found := false + for _, newLb := range balancers2 { + if oldLb == newLb { + found = true + break + } + } + if !found { + deltas++ + } + } + for _, newLb := range balancers2 { + found := false + for _, oldLb := range balancers { + if oldLb == newLb { + found = true + break + } + } + if !found { + deltas++ + } + } + // Dividing by 2 because we calculate same delta twice + return deltas / 2.0 +} + func lbHasChanges(details oci_core.AttachLoadBalancerDetails, details2 oci_core.AttachLoadBalancerDetails) bool { return !(*details.BackendSetName == *details2.BackendSetName && *details.LoadBalancerId == *details2.LoadBalancerId && diff --git a/website/docs/r/core_instance_pool.html.markdown b/website/docs/r/core_instance_pool.html.markdown index 83f69ff80e..91b834d137 100644 --- a/website/docs/r/core_instance_pool.html.markdown +++ b/website/docs/r/core_instance_pool.html.markdown @@ -86,7 +86,7 @@ The following arguments are supported: * `instance_configuration_id` - (Required) (Updatable) The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the instance configuration associated with the instance pool. * `instance_display_name_formatter` - (Optional) (Updatable) A user-friendly formatter for the instance pool's instances. Instance displaynames follow the format. The formatter does not retroactively change instance's displaynames, only instance displaynames in the future follow the format * `instance_hostname_formatter` - (Optional) (Updatable) A user-friendly formatter for the instance pool's instances. Instance hostnames follow the format. The formatter does not retroactively change instance's hostnames, only instance hostnames in the future follow the format -* `load_balancers` - (Optional) The load balancers to attach to the instance pool. +* `load_balancers` - (Optional) The load balancers to attach to the instance pool. (Note: From 6.14.0 load_balancers field in oci_core_instance_pool is changed from TypeList to TypeSet - to support load balancer insert operation. Also, LB cant by accessed by index) * `backend_set_name` - (Required) The name of the backend set on the load balancer to add instances to. * `load_balancer_id` - (Required) The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the load balancer to attach to the instance pool. * `port` - (Required) The port value to use when creating the backend set. @@ -135,7 +135,7 @@ The following attributes are exported: * `instance_configuration_id` - The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the instance configuration associated with the instance pool. * `instance_display_name_formatter` - A user-friendly formatter for the instance pool's instances. Instance displaynames follow the format. The formatter does not retroactively change instance's displaynames, only instance displaynames in the future follow the format * `instance_hostname_formatter` - A user-friendly formatter for the instance pool's instances. Instance hostnames follow the format. The formatter does not retroactively change instance's hostnames, only instance hostnames in the future follow the format -* `load_balancers` - The load balancers attached to the instance pool. +* `load_balancers` - The load balancers attached to the instance pool. (Note: From 6.14.0 load_balancers field in oci_core_instance_pool is changed from TypeList to TypeSet - to support load balancer insert operation. Also, LB cant by accessed by index) * `backend_set_name` - The name of the backend set on the load balancer. * `id` - The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the load balancer attachment. * `instance_pool_id` - The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the instance pool of the load balancer attachment. From a4aa28ec4978166059691acc57a3ec48a547c4e2 Mon Sep 17 00:00:00 2001 From: Antony Selva Johnson Date: Tue, 15 Oct 2024 17:35:40 +0530 Subject: [PATCH 18/24] Added - Support for ESP & ICMP traffic support in NLB --- .../network_load_balancer_full/nlb_full.tf | 42 +++++++++- .../network_load_balancer_listener_test.go | 76 ++++++++++++++++++- ...oad_balancer_network_load_balancer_test.go | 10 +++ ...work_load_balancer_listener_data_source.go | 4 + ...network_load_balancer_listener_resource.go | 23 ++++++ ...rk_load_balancer_backend_set.html.markdown | 20 ++--- ...k_load_balancer_backend_sets.html.markdown | 18 ++--- ...twork_load_balancer_listener.html.markdown | 1 + ...work_load_balancer_listeners.html.markdown | 1 + ...lancer_network_load_balancer.html.markdown | 2 + ...ancer_network_load_balancers.html.markdown | 2 + ...rk_load_balancer_backend_set.html.markdown | 21 +---- ...twork_load_balancer_listener.html.markdown | 3 + ...lancer_network_load_balancer.html.markdown | 5 ++ 14 files changed, 185 insertions(+), 43 deletions(-) diff --git a/examples/network_load_balancer/network_load_balancer_full/nlb_full.tf b/examples/network_load_balancer/network_load_balancer_full/nlb_full.tf index 4f4ea8fe5a..8f67e50a62 100644 --- a/examples/network_load_balancer/network_load_balancer_full/nlb_full.tf +++ b/examples/network_load_balancer/network_load_balancer_full/nlb_full.tf @@ -409,6 +409,32 @@ resource "oci_network_load_balancer_backend_set" "nlb-bes3" { depends_on = [oci_network_load_balancer_backend_set.nlb-bes2] } +resource "oci_network_load_balancer_backend_set" "nlb-bes4" { + name = "nlb-bes4" + network_load_balancer_id = oci_network_load_balancer_network_load_balancer.nlb1.id + policy = "THREE_TUPLE" + is_fail_open = false + is_instant_failover_enabled = true + is_preserve_source = true + + health_checker { + port = "53" + protocol = "DNS" + timeout_in_millis = 10000 + interval_in_millis = 10000 + retries = 3 + dns { + domain_name = "oracle.com" + query_class = "IN" + query_type = "A" + rcodes = ["NOERROR", "SERVFAIL"] + transport_protocol = "UDP" + } + } + depends_on = [oci_network_load_balancer_backend_set.nlb-bes3] +} + + resource "oci_network_load_balancer_listener" "nlb-listener1" { network_load_balancer_id = oci_network_load_balancer_network_load_balancer.nlb1.id name = "tcp_listener" @@ -417,7 +443,7 @@ resource "oci_network_load_balancer_listener" "nlb-listener1" { protocol = "TCP" tcp_idle_timeout = 360 is_ppv2enabled = true - depends_on = [oci_network_load_balancer_backend_set.nlb-bes3] + depends_on = [oci_network_load_balancer_backend_set.nlb-bes4] } resource "oci_network_load_balancer_listener" "nlb-listener2" { @@ -441,6 +467,18 @@ resource "oci_network_load_balancer_listener" "nlb-listener3" { depends_on = [oci_network_load_balancer_listener.nlb-listener2] } +resource "oci_network_load_balancer_listener" "nlb-listener4" { + network_load_balancer_id = oci_network_load_balancer_network_load_balancer.nlb1.id + name = "l3_ip_listener" + default_backend_set_name = oci_network_load_balancer_backend_set.nlb-bes4.name + port = 0 + protocol = "L3IP" + tcp_idle_timeout = 240 + udp_idle_timeout = 180 + l3ip_idle_timeout = 360 + depends_on = [oci_network_load_balancer_listener.nlb-listener3] +} + resource "oci_network_load_balancer_backend" "nlb-be1" { network_load_balancer_id = oci_network_load_balancer_network_load_balancer.nlb1.id backend_set_name = oci_network_load_balancer_backend_set.nlb-bes1.name @@ -450,7 +488,7 @@ resource "oci_network_load_balancer_backend" "nlb-be1" { is_drain = false is_offline = false weight = 1 - depends_on = [oci_network_load_balancer_listener.nlb-listener3] + depends_on = [oci_network_load_balancer_listener.nlb-listener4] } resource "oci_network_load_balancer_backend" "nlb-be2" { diff --git a/internal/integrationtest/network_load_balancer_listener_test.go b/internal/integrationtest/network_load_balancer_listener_test.go index 2eee0daf86..0da67a2ced 100644 --- a/internal/integrationtest/network_load_balancer_listener_test.go +++ b/internal/integrationtest/network_load_balancer_listener_test.go @@ -74,9 +74,26 @@ var ( "ip_version": acctest.Representation{RepType: acctest.Optional, Create: `IPV4`}, } + NetworkLoadBalancerL3IPListenerRepresentation = map[string]interface{}{ + "default_backend_set_name": acctest.Representation{RepType: acctest.Required, Create: `${oci_network_load_balancer_backend_set.test_backend_set.name}`}, + "name": acctest.Representation{RepType: acctest.Required, Create: `example_listener`}, + "network_load_balancer_id": acctest.Representation{RepType: acctest.Required, Create: `${oci_network_load_balancer_network_load_balancer.test_network_load_balancer.id}`}, + "port": acctest.Representation{RepType: acctest.Required, Create: `0`, Update: `0`}, + "tcp_idle_timeout": acctest.Representation{RepType: acctest.Optional, Create: `180`, Update: `240`}, + "udp_idle_timeout": acctest.Representation{RepType: acctest.Optional, Create: `180`, Update: `300`}, + "l3ip_idle_timeout": acctest.Representation{RepType: acctest.Optional, Create: `200`, Update: `400`}, + "protocol": acctest.Representation{RepType: acctest.Required, Create: `L3IP`}, + "ip_version": acctest.Representation{RepType: acctest.Optional, Create: `IPV4`}, + "is_ppv2enabled": acctest.Representation{RepType: acctest.Optional, Create: `false`, Update: `true`}, + } + NetworkLoadBalancerListenerResourceDependencies = acctest.GenerateResourceFromRepresentationMap("oci_core_subnet", "test_subnet", acctest.Required, acctest.Create, CoreSubnetRepresentation) + acctest.GenerateResourceFromRepresentationMap("oci_core_vcn", "test_vcn", acctest.Required, acctest.Create, CoreVcnRepresentation) + - acctest.GenerateResourceFromRepresentationMap("oci_network_load_balancer_backend_set", "test_backend_set", acctest.Required, acctest.Create, NetworkLoadBalancerBackendSetRepresentation) + + acctest.GenerateResourceFromRepresentationMap("oci_network_load_balancer_backend_set", "test_backend_set", acctest.Required, acctest.Create, + acctest.RepresentationCopyWithNewProperties(NetworkLoadBalancerBackendSetRepresentation, map[string]interface{}{ + "is_preserve_source": acctest.Representation{RepType: acctest.Optional, Create: `true`}, + "policy": acctest.Representation{RepType: acctest.Required, Create: `TWO_TUPLE`, Update: `THREE_TUPLE`}, + })) + acctest.GenerateResourceFromRepresentationMap("oci_network_load_balancer_network_load_balancer", "test_network_load_balancer", acctest.Required, acctest.Create, NetworkLoadBalancerNetworkLoadBalancerRepresentation) ) @@ -199,7 +216,6 @@ func TestNetworkLoadBalancerListenerResource_basic(t *testing.T) { }, ), }, - // verify updates to updatable parameters { Config: config + compartmentIdVariableStr + NetworkLoadBalancerListenerResourceDependencies + @@ -228,6 +244,62 @@ func TestNetworkLoadBalancerListenerResource_basic(t *testing.T) { Config: config + compartmentIdVariableStr + NetworkLoadBalancerListenerResourceDependencies, }, + // verify L3IP Listener create with optionals + { + Config: config + compartmentIdVariableStr + NetworkLoadBalancerListenerResourceDependencies + + acctest.GenerateResourceFromRepresentationMap("oci_network_load_balancer_listener", "test_listener", acctest.Optional, acctest.Create, NetworkLoadBalancerL3IPListenerRepresentation), + Check: acctest.ComposeAggregateTestCheckFuncWrapper( + resource.TestCheckResourceAttrSet(resourceName, "default_backend_set_name"), + resource.TestCheckResourceAttr(resourceName, "ip_version", "IPV4"), + resource.TestCheckResourceAttr(resourceName, "is_ppv2enabled", "false"), + resource.TestCheckResourceAttr(resourceName, "name", "example_listener"), + resource.TestCheckResourceAttrSet(resourceName, "network_load_balancer_id"), + resource.TestCheckResourceAttr(resourceName, "port", "0"), + resource.TestCheckResourceAttr(resourceName, "protocol", "L3IP"), + resource.TestCheckResourceAttr(resourceName, "tcp_idle_timeout", "180"), + resource.TestCheckResourceAttr(resourceName, "udp_idle_timeout", "180"), + resource.TestCheckResourceAttr(resourceName, "l3ip_idle_timeout", "200"), + + func(s *terraform.State) (err error) { + resId, err = acctest.FromInstanceState(s, resourceName, "id") + if isEnableExportCompartment, _ := strconv.ParseBool(utils.GetEnvSettingWithDefault("enable_export_compartment", "true")); isEnableExportCompartment { + if errExport := resourcediscovery.TestExportCompartmentWithResourceName(&resId, &compartmentId, resourceName); errExport != nil { + return errExport + } + } + return err + }, + ), + }, + // verify L3IP updates to updatable parameters + { + Config: config + compartmentIdVariableStr + NetworkLoadBalancerListenerResourceDependencies + + acctest.GenerateResourceFromRepresentationMap("oci_network_load_balancer_listener", "test_listener", acctest.Optional, acctest.Update, NetworkLoadBalancerL3IPListenerRepresentation), + Check: acctest.ComposeAggregateTestCheckFuncWrapper( + resource.TestCheckResourceAttrSet(resourceName, "default_backend_set_name"), + resource.TestCheckResourceAttr(resourceName, "is_ppv2enabled", "true"), + resource.TestCheckResourceAttr(resourceName, "ip_version", "IPV4"), + resource.TestCheckResourceAttr(resourceName, "name", "example_listener"), + resource.TestCheckResourceAttrSet(resourceName, "network_load_balancer_id"), + resource.TestCheckResourceAttr(resourceName, "port", "0"), + resource.TestCheckResourceAttr(resourceName, "protocol", "L3IP"), + resource.TestCheckResourceAttr(resourceName, "tcp_idle_timeout", "240"), + resource.TestCheckResourceAttr(resourceName, "udp_idle_timeout", "300"), + resource.TestCheckResourceAttr(resourceName, "l3ip_idle_timeout", "400"), + func(s *terraform.State) (err error) { + resId2, err = acctest.FromInstanceState(s, resourceName, "id") + if resId != resId2 { + return fmt.Errorf("Resource recreated when it was supposed to be updated.") + } + return err + }, + ), + }, + // delete before next Create + { + Config: config + compartmentIdVariableStr + NetworkLoadBalancerListenerResourceDependencies, + }, + // verify Create with optionals { Config: config + compartmentIdVariableStr + NetworkLoadBalancerListenerResourceDependencies + diff --git a/internal/integrationtest/network_load_balancer_network_load_balancer_test.go b/internal/integrationtest/network_load_balancer_network_load_balancer_test.go index 33bde93a7f..5b674b8eba 100644 --- a/internal/integrationtest/network_load_balancer_network_load_balancer_test.go +++ b/internal/integrationtest/network_load_balancer_network_load_balancer_test.go @@ -156,8 +156,18 @@ func TestNetworkLoadBalancerNetworkLoadBalancerResource_basic(t *testing.T) { var resId, resId2 string acctest.ResourceTest(t, testAccCheckNetworkLoadBalancerNetworkLoadBalancerDestroy, []resource.TestStep{ + // Initialize Tag dependencies: After a tag is created, if it is defined in the resource immediately, a 400-InvalidParameter error due to invalid tags may be returned. + // However, this error is not observed if we wait for some time. To prevent the issue, a preconfigured 30-second wait is added. + { + Config: config + compartmentIdVariableStr + DefinedTagsDependencies, + }, + // verify Create with optionals { + //wait for 30 sec + PreConfig: func() { + time.Sleep(30 * time.Second) + }, Config: config + compartmentIdVariableStr + NetworkLoadBalancerNetworkLoadBalancerResourceDependencies + NetworkLoadBalancerReservedIpDependencies + acctest.GenerateResourceFromRepresentationMap("oci_network_load_balancer_network_load_balancer", "test_network_load_balancer", acctest.Optional, acctest.Create, networkLoadBalancerRepresentationIpv6), Check: acctest.ComposeAggregateTestCheckFuncWrapper( diff --git a/internal/service/network_load_balancer/network_load_balancer_listener_data_source.go b/internal/service/network_load_balancer/network_load_balancer_listener_data_source.go index 67a018bab0..0f78e5dad5 100644 --- a/internal/service/network_load_balancer/network_load_balancer_listener_data_source.go +++ b/internal/service/network_load_balancer/network_load_balancer_listener_data_source.go @@ -84,6 +84,10 @@ func (s *NetworkLoadBalancerListenerDataSourceCrud) SetData() error { s.D.Set("is_ppv2enabled", *s.Res.IsPpv2Enabled) } + if s.Res.L3IpIdleTimeout != nil { + s.D.Set("l3ip_idle_timeout", *s.Res.L3IpIdleTimeout) + } + if s.Res.Name != nil { s.D.Set("name", *s.Res.Name) } diff --git a/internal/service/network_load_balancer/network_load_balancer_listener_resource.go b/internal/service/network_load_balancer/network_load_balancer_listener_resource.go index 8a0502768f..5cf44b19f6 100644 --- a/internal/service/network_load_balancer/network_load_balancer_listener_resource.go +++ b/internal/service/network_load_balancer/network_load_balancer_listener_resource.go @@ -69,6 +69,11 @@ func NetworkLoadBalancerListenerResource() *schema.Resource { Optional: true, Computed: true, }, + "l3ip_idle_timeout": { + Type: schema.TypeInt, + Optional: true, + Computed: true, + }, "tcp_idle_timeout": { Type: schema.TypeInt, Optional: true, @@ -145,6 +150,11 @@ func (s *NetworkLoadBalancerListenerResourceCrud) Create() error { request.IsPpv2Enabled = &tmp } + if l3IpIdleTimeout, ok := s.D.GetOkExists("l3ip_idle_timeout"); ok { + tmp := l3IpIdleTimeout.(int) + request.L3IpIdleTimeout = &tmp + } + if name, ok := s.D.GetOkExists("name"); ok { tmp := name.(string) request.Name = &tmp @@ -351,6 +361,11 @@ func (s *NetworkLoadBalancerListenerResourceCrud) Update() error { request.IsPpv2Enabled = &tmp } + if l3IpIdleTimeout, ok := s.D.GetOkExists("l3ip_idle_timeout"); ok { + tmp := l3IpIdleTimeout.(int) + request.L3IpIdleTimeout = &tmp + } + if listenerName, ok := s.D.GetOkExists("name"); ok { tmp := listenerName.(string) request.ListenerName = &tmp @@ -437,6 +452,10 @@ func (s *NetworkLoadBalancerListenerResourceCrud) SetData() error { s.D.Set("is_ppv2enabled", *s.Res.IsPpv2Enabled) } + if s.Res.L3IpIdleTimeout != nil { + s.D.Set("l3ip_idle_timeout", *s.Res.L3IpIdleTimeout) + } + if s.Res.Name != nil { s.D.Set("name", *s.Res.Name) } @@ -490,6 +509,10 @@ func NlbListenerSummaryToMap(obj oci_network_load_balancer.ListenerSummary) map[ result["is_ppv2enabled"] = bool(*obj.IsPpv2Enabled) } + if obj.L3IpIdleTimeout != nil { + result["l3ip_idle_timeout"] = int(*obj.L3IpIdleTimeout) + } + if obj.Name != nil { result["name"] = string(*obj.Name) } diff --git a/website/docs/d/network_load_balancer_backend_set.html.markdown b/website/docs/d/network_load_balancer_backend_set.html.markdown index 83f005c45b..f26cc7401d 100644 --- a/website/docs/d/network_load_balancer_backend_set.html.markdown +++ b/website/docs/d/network_load_balancer_backend_set.html.markdown @@ -36,16 +36,16 @@ The following arguments are supported: The following attributes are exported: -* `backends` - Array of backends. - * `ip_address` - The IP address of the backend server. Example: `10.0.0.3` - * `is_backup` - Whether the network load balancer should treat this server as a backup unit. If `true`, then the network load balancer forwards no ingress traffic to this backend server unless all other backend servers not marked as "isBackup" fail the health check policy. Example: `false` - * `is_drain` - Whether the network load balancer should drain this server. Servers marked "isDrain" receive no incoming traffic. Example: `false` - * `is_offline` - Whether the network load balancer should treat this server as offline. Offline servers receive no incoming traffic. Example: `false` - * `name` - A read-only field showing the IP address/IP OCID and port that uniquely identify this backend server in the backend set. Example: `10.0.0.3:8080`, or `ocid1.privateip..oc1.<unique_ID>:443` or `10.0.0.3:0` - * `port` - The communication port for the backend server. Example: `8080` - * `target_id` - The IP OCID/Instance OCID associated with the backend server. Example: `ocid1.privateip..oc1.<unique_ID>` - * `weight` - The network load balancing policy weight assigned to the server. Backend servers with a higher weight receive a larger proportion of incoming traffic. For example, a server weighted '3' receives three times the number of new connections as a server weighted '1'. For more information about load balancing policies, see [How Network Load Balancing Policies Work](https://docs.cloud.oracle.com/iaas/Content/Balance/Reference/lbpolicies.htm). Example: `3` -* `health_checker` - The health check policy configuration. For more information, see [Editing Health Check Policies](https://docs.cloud.oracle.com/iaas/Content/Balance/Tasks/editinghealthcheck.htm). +* `backends` - An array of backends. + * `ip_address` - The IP address of the backend server. Example: `10.0.0.3` + * `is_backup` - Whether the network load balancer should treat this server as a backup unit. If `true`, then the network load balancer forwards no ingress traffic to this backend server unless all other backend servers not marked as "isBackup" fail the health check policy. Example: `false` + * `is_drain` - Whether the network load balancer should drain this server. Servers marked "isDrain" receive no incoming traffic. Example: `false` + * `is_offline` - Whether the network load balancer should treat this server as offline. Offline servers receive no incoming traffic. Example: `false` + * `name` - A read-only field showing the IP address/IP OCID and port that uniquely identify this backend server in the backend set. Example: `10.0.0.3:8080`, or `ocid1.privateip..oc1.<unique_ID>:443` or `10.0.0.3:0` + * `port` - The communication port for the backend server. Example: `8080` + * `target_id` - The IP OCID/Instance OCID associated with the backend server. Example: `ocid1.privateip..oc1.<unique_ID>` + * `weight` - The network load balancing policy weight assigned to the server. Backend servers with a higher weight receive a larger proportion of incoming traffic. For example, a server weighted '3' receives three times the number of new connections as a server weighted '1'. For more information about load balancing policies, see [How Network Load Balancing Policies Work](https://docs.cloud.oracle.com/iaas/Content/Balance/Reference/lbpolicies.htm). Example: `3` +* `health_checker` - The health check policy configuration. For more information, see [Editing Health Check Policies](https://docs.cloud.oracle.com/iaas/Content/Balance/Tasks/editinghealthcheck.htm). * `dns` - DNS healthcheck configurations. * `domain_name` - The absolute fully-qualified domain name to perform periodic DNS queries. If not provided, an extra dot will be added at the end of a domain name during the query. * `query_class` - The class the dns health check query to use; either IN or CH. Example: `IN` diff --git a/website/docs/d/network_load_balancer_backend_sets.html.markdown b/website/docs/d/network_load_balancer_backend_sets.html.markdown index e7a26ec973..71f9c725b2 100644 --- a/website/docs/d/network_load_balancer_backend_sets.html.markdown +++ b/website/docs/d/network_load_balancer_backend_sets.html.markdown @@ -38,15 +38,15 @@ The following attributes are exported: The following attributes are exported: -* `backends` - Array of backends. - * `ip_address` - The IP address of the backend server. Example: `10.0.0.3` - * `is_backup` - Whether the network load balancer should treat this server as a backup unit. If `true`, then the network load balancer forwards no ingress traffic to this backend server unless all other backend servers not marked as "isBackup" fail the health check policy. Example: `false` - * `is_drain` - Whether the network load balancer should drain this server. Servers marked "isDrain" receive no incoming traffic. Example: `false` - * `is_offline` - Whether the network load balancer should treat this server as offline. Offline servers receive no incoming traffic. Example: `false` - * `name` - A read-only field showing the IP address/IP OCID and port that uniquely identify this backend server in the backend set. Example: `10.0.0.3:8080`, or `ocid1.privateip..oc1.<unique_ID>:443` or `10.0.0.3:0` - * `port` - The communication port for the backend server. Example: `8080` - * `target_id` - The IP OCID/Instance OCID associated with the backend server. Example: `ocid1.privateip..oc1.<unique_ID>` - * `weight` - The network load balancing policy weight assigned to the server. Backend servers with a higher weight receive a larger proportion of incoming traffic. For example, a server weighted '3' receives three times the number of new connections as a server weighted '1'. For more information about load balancing policies, see [How Network Load Balancing Policies Work](https://docs.cloud.oracle.com/iaas/Content/Balance/Reference/lbpolicies.htm). Example: `3` +* `backends` - An array of backends. + * `ip_address` - The IP address of the backend server. Example: `10.0.0.3` + * `is_backup` - Whether the network load balancer should treat this server as a backup unit. If `true`, then the network load balancer forwards no ingress traffic to this backend server unless all other backend servers not marked as "isBackup" fail the health check policy. Example: `false` + * `is_drain` - Whether the network load balancer should drain this server. Servers marked "isDrain" receive no incoming traffic. Example: `false` + * `is_offline` - Whether the network load balancer should treat this server as offline. Offline servers receive no incoming traffic. Example: `false` + * `name` - A read-only field showing the IP address/IP OCID and port that uniquely identify this backend server in the backend set. Example: `10.0.0.3:8080`, or `ocid1.privateip..oc1.<unique_ID>:443` or `10.0.0.3:0` + * `port` - The communication port for the backend server. Example: `8080` + * `target_id` - The IP OCID/Instance OCID associated with the backend server. Example: `ocid1.privateip..oc1.<unique_ID>` + * `weight` - The network load balancing policy weight assigned to the server. Backend servers with a higher weight receive a larger proportion of incoming traffic. For example, a server weighted '3' receives three times the number of new connections as a server weighted '1'. For more information about load balancing policies, see [How Network Load Balancing Policies Work](https://docs.cloud.oracle.com/iaas/Content/Balance/Reference/lbpolicies.htm). Example: `3` * `health_checker` - The health check policy configuration. For more information, see [Editing Health Check Policies](https://docs.cloud.oracle.com/iaas/Content/Balance/Tasks/editinghealthcheck.htm). * `dns` - DNS healthcheck configurations. * `domain_name` - The absolute fully-qualified domain name to perform periodic DNS queries. If not provided, an extra dot will be added at the end of a domain name during the query. diff --git a/website/docs/d/network_load_balancer_listener.html.markdown b/website/docs/d/network_load_balancer_listener.html.markdown index 77e876b9cb..d530cc29ea 100644 --- a/website/docs/d/network_load_balancer_listener.html.markdown +++ b/website/docs/d/network_load_balancer_listener.html.markdown @@ -37,6 +37,7 @@ The following attributes are exported: * `default_backend_set_name` - The name of the associated backend set. Example: `example_backend_set` * `ip_version` - IP version associated with the listener. * `is_ppv2enabled` - Property to enable/disable PPv2 feature for this listener. +* `l3ip_idle_timeout` - The duration for L3IP idle timeout in seconds. Example: `200` * `name` - A friendly name for the listener. It must be unique and it cannot be changed. Example: `example_listener` * `port` - The communication port for the listener. Example: `80` * `protocol` - The protocol on which the listener accepts connection requests. For public network load balancers, ANY protocol refers to TCP/UDP with the wildcard port. For private network load balancers, ANY protocol refers to TCP/UDP/ICMP (note that ICMP requires isPreserveSourceDestination to be set to true). "ListNetworkLoadBalancersProtocols" API is deprecated and it will not return the updated values. Use the allowed values for the protocol instead. Example: `TCP` diff --git a/website/docs/d/network_load_balancer_listeners.html.markdown b/website/docs/d/network_load_balancer_listeners.html.markdown index 32f7fb2f1d..fe8f06daa3 100644 --- a/website/docs/d/network_load_balancer_listeners.html.markdown +++ b/website/docs/d/network_load_balancer_listeners.html.markdown @@ -41,6 +41,7 @@ The following attributes are exported: * `default_backend_set_name` - The name of the associated backend set. Example: `example_backend_set` * `ip_version` - IP version associated with the listener. * `is_ppv2enabled` - Property to enable/disable PPv2 feature for this listener. +* `l3ip_idle_timeout` - The duration for L3IP idle timeout in seconds. Example: `200` * `name` - A friendly name for the listener. It must be unique and it cannot be changed. Example: `example_listener` * `port` - The communication port for the listener. Example: `80` * `protocol` - The protocol on which the listener accepts connection requests. For public network load balancers, ANY protocol refers to TCP/UDP with the wildcard port. For private network load balancers, ANY protocol refers to TCP/UDP/ICMP (note that ICMP requires isPreserveSourceDestination to be set to true). "ListNetworkLoadBalancersProtocols" API is deprecated and it will not return the updated values. Use the allowed values for the protocol instead. Example: `TCP` diff --git a/website/docs/d/network_load_balancer_network_load_balancer.html.markdown b/website/docs/d/network_load_balancer_network_load_balancer.html.markdown index 8fdc608e93..8fd6d82cdc 100644 --- a/website/docs/d/network_load_balancer_network_load_balancer.html.markdown +++ b/website/docs/d/network_load_balancer_network_load_balancer.html.markdown @@ -139,6 +139,8 @@ The following attributes are exported: * `listeners` - Listeners associated with the network load balancer. * `default_backend_set_name` - The name of the associated backend set. Example: `example_backend_set` * `ip_version` - IP version associated with the listener. + * `is_ppv2enabled` - Property to enable/disable PPv2 feature for this listener. + * `l3ip_idle_timeout` - The duration for L3IP idle timeout in seconds. Example: `200` * `name` - A friendly name for the listener. It must be unique and it cannot be changed. Example: `example_listener` * `port` - The communication port for the listener. Example: `80` * `protocol` - The protocol on which the listener accepts connection requests. For public network load balancers, ANY protocol refers to TCP/UDP with the wildcard port. For private network load balancers, ANY protocol refers to TCP/UDP/ICMP (note that ICMP requires isPreserveSourceDestination to be set to true). "ListNetworkLoadBalancersProtocols" API is deprecated and it will not return the updated values. Use the allowed values for the protocol instead. Example: `TCP` diff --git a/website/docs/d/network_load_balancer_network_load_balancers.html.markdown b/website/docs/d/network_load_balancer_network_load_balancers.html.markdown index 7e512fdf04..b0e947565d 100644 --- a/website/docs/d/network_load_balancer_network_load_balancers.html.markdown +++ b/website/docs/d/network_load_balancer_network_load_balancers.html.markdown @@ -118,6 +118,8 @@ The following attributes are exported: * `listeners` - Listeners associated with the network load balancer. * `default_backend_set_name` - The name of the associated backend set. Example: `example_backend_set` * `ip_version` - IP version associated with the listener. + * `is_ppv2enabled` - Property to enable/disable PPv2 feature for this listener. + * `l3ip_idle_timeout` - The duration for L3IP idle timeout in seconds. Example: `200` * `name` - A friendly name for the listener. It must be unique and it cannot be changed. Example: `example_listener` * `port` - The communication port for the listener. Example: `80` * `protocol` - The protocol on which the listener accepts connection requests. For public network load balancers, ANY protocol refers to TCP/UDP with the wildcard port. For private network load balancers, ANY protocol refers to TCP/UDP/ICMP (note that ICMP requires isPreserveSourceDestination to be set to true). "ListNetworkLoadBalancersProtocols" API is deprecated and it will not return the updated values. Use the allowed values for the protocol instead. Example: `TCP` diff --git a/website/docs/r/network_load_balancer_backend_set.html.markdown b/website/docs/r/network_load_balancer_backend_set.html.markdown index fa9d3a266f..6d0c498579 100644 --- a/website/docs/r/network_load_balancer_backend_set.html.markdown +++ b/website/docs/r/network_load_balancer_backend_set.html.markdown @@ -112,26 +112,7 @@ The following attributes are exported: * `name` - A read-only field showing the IP address/IP OCID and port that uniquely identify this backend server in the backend set. Example: `10.0.0.3:8080`, or `ocid1.privateip..oc1.<unique_ID>:443` or `10.0.0.3:0` * `port` - The communication port for the backend server. Example: `8080` * `target_id` - The IP OCID/Instance OCID associated with the backend server. Example: `ocid1.privateip..oc1.<unique_ID>` - * `weight` - The network load balancing policy weight assigned to the server. Backend servers with a higher weight receive a larger proportion of incoming traffic. For example, a server weighted '3' receives three times the number of new connections as a server weighted '1'. For more information about load balancing policies, see [How Network Load Balancing Policies Work](https://docs.cloud.oracle.com/iaas/Content/NetworkLoadBalancer/introducton.htm#Policies). Example: `3` -* `health_checker` - The health check policy configuration. For more information, see [Editing Health Check Policies](https://docs.cloud.oracle.com/iaas/Content/NetworkLoadBalancer/HealthCheckPolicies/health-check-policy-management.htm). - * `interval_in_millis` - The interval between health checks, in milliseconds. The default value is 10000 (10 seconds). Example: `10000` - * `port` - The backend server port against which to run the health check. If the port is not specified, then the network load balancer uses the port information from the `Backend` object. The port must be specified if the backend port is 0. Example: `8080` - * `protocol` - The protocol the health check must use; either HTTP or HTTPS, or UDP or TCP. Example: `HTTP` - * `request_data` - Base64 encoded pattern to be sent as UDP or TCP health check probe. - * `response_body_regex` - A regular expression for parsing the response body from the backend server. Example: `^((?!false).|\s)*$` - * `response_data` - Base64 encoded pattern to be validated as UDP or TCP health check probe response. - * `retries` - The number of retries to attempt before a backend server is considered "unhealthy". This number also applies when recovering a server to the "healthy" state. The default value is 3. Example: `3` - * `return_code` - The status code a healthy backend server should return. If you configure the health check policy to use the HTTP protocol, then you can use common HTTP status codes such as "200". Example: `200` - * `timeout_in_millis` - The maximum time, in milliseconds, to wait for a reply to a health check. A health check is successful only if a reply returns within this timeout period. The default value is 3000 (3 seconds). Example: `3000` - * `url_path` - The path against which to run the health check. Example: `/healthcheck` - * `ip_address` - The IP address of the backend server. Example: `10.0.0.3` - * `is_backup` - Whether the network load balancer should treat this server as a backup unit. If `true`, then the network load balancer forwards no ingress traffic to this backend server unless all other backend servers not marked as "isBackup" fail the health check policy. Example: `false` - * `is_drain` - Whether the network load balancer should drain this server. Servers marked "isDrain" receive no incoming traffic. Example: `false` - * `is_offline` - Whether the network load balancer should treat this server as offline. Offline servers receive no incoming traffic. Example: `false` - * `name` - A read-only field showing the IP address/IP OCID and port that uniquely identify this backend server in the backend set. Example: `10.0.0.3:8080`, or `ocid1.privateip..oc1.<unique_ID>:443` or `10.0.0.3:0` - * `port` - The communication port for the backend server. Example: `8080` - * `target_id` - The IP OCID/Instance OCID associated with the backend server. Example: `ocid1.privateip..oc1.<unique_ID>` - * `weight` - The network load balancing policy weight assigned to the server. Backend servers with a higher weight receive a larger proportion of incoming traffic. For example, a server weighted '3' receives three times the number of new connections as a server weighted '1'. For more information about load balancing policies, see [How Network Load Balancing Policies Work](https://docs.cloud.oracle.com/iaas/Content/Balance/Reference/lbpolicies.htm). Example: `3` + * `weight` - The network load balancing policy weight assigned to the server. Backend servers with a higher weight receive a larger proportion of incoming traffic. For example, a server weighted '3' receives three times the number of new connections as a server weighted '1'. For more information about load balancing policies, see [How Network Load Balancing Policies Work](https://docs.cloud.oracle.com/iaas/Content/NetworkLoadBalancer/introducton.htm#Policies). Example: `3` * `health_checker` - The health check policy configuration. For more information, see [Editing Health Check Policies](https://docs.cloud.oracle.com/iaas/Content/Balance/Tasks/editinghealthcheck.htm). * `dns` - DNS healthcheck configurations. * `domain_name` - The absolute fully-qualified domain name to perform periodic DNS queries. If not provided, an extra dot will be added at the end of a domain name during the query. diff --git a/website/docs/r/network_load_balancer_listener.html.markdown b/website/docs/r/network_load_balancer_listener.html.markdown index ec1909e4a7..2a80a7c131 100644 --- a/website/docs/r/network_load_balancer_listener.html.markdown +++ b/website/docs/r/network_load_balancer_listener.html.markdown @@ -26,6 +26,7 @@ resource "oci_network_load_balancer_listener" "test_listener" { #Optional ip_version = var.listener_ip_version is_ppv2enabled = var.listener_is_ppv2enabled + l3ip_idle_timeout = var.listener_l3ip_idle_timeout tcp_idle_timeout = var.listener_tcp_idle_timeout udp_idle_timeout = var.listener_udp_idle_timeout } @@ -38,6 +39,7 @@ The following arguments are supported: * `default_backend_set_name` - (Required) (Updatable) The name of the associated backend set. Example: `example_backend_set` * `ip_version` - (Optional) (Updatable) IP version associated with the listener. * `is_ppv2enabled` - (Optional) (Updatable) Property to enable/disable PPv2 feature for this listener. +* `l3ip_idle_timeout` - (Optional) (Updatable) The duration for L3IP idle timeout in seconds. Example: `200` * `name` - (Required) A friendly name for the listener. It must be unique and it cannot be changed. Example: `example_listener` * `network_load_balancer_id` - (Required) The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the network load balancer to update. * `port` - (Required) (Updatable) The communication port for the listener. Example: `80` @@ -56,6 +58,7 @@ The following attributes are exported: * `default_backend_set_name` - The name of the associated backend set. Example: `example_backend_set` * `ip_version` - IP version associated with the listener. * `is_ppv2enabled` - Property to enable/disable PPv2 feature for this listener. +* `l3ip_idle_timeout` - The duration for L3IP idle timeout in seconds. Example: `200` * `name` - A friendly name for the listener. It must be unique and it cannot be changed. Example: `example_listener` * `port` - The communication port for the listener. Example: `80` * `protocol` - The protocol on which the listener accepts connection requests. For public network load balancers, ANY protocol refers to TCP/UDP with the wildcard port. For private network load balancers, ANY protocol refers to TCP/UDP/ICMP (note that ICMP requires isPreserveSourceDestination to be set to true). "ListNetworkLoadBalancersProtocols" API is deprecated and it will not return the updated values. Use the allowed values for the protocol instead. Example: `TCP` diff --git a/website/docs/r/network_load_balancer_network_load_balancer.html.markdown b/website/docs/r/network_load_balancer_network_load_balancer.html.markdown index d382884c6f..a6566d6472 100644 --- a/website/docs/r/network_load_balancer_network_load_balancer.html.markdown +++ b/website/docs/r/network_load_balancer_network_load_balancer.html.markdown @@ -131,6 +131,7 @@ resource "oci_network_load_balancer_network_load_balancer" "test_network_load_ba #Optional ip_version = var.network_load_balancer_listeners_ip_version is_ppv2enabled = var.network_load_balancer_listeners_is_ppv2enabled + l3ip_idle_timeout = var.network_load_balancer_listeners_l3ip_idle_timeout tcp_idle_timeout = var.network_load_balancer_listeners_tcp_idle_timeout udp_idle_timeout = var.network_load_balancer_listeners_udp_idle_timeout } @@ -207,6 +208,8 @@ The following arguments are supported: * `listeners` - (Optional) Listeners associated with the network load balancer. * `default_backend_set_name` - (Required) The name of the associated backend set. Example: `example_backend_set` * `ip_version` - (Optional) IP version associated with the listener. + * `is_ppv2enabled` - (Optional) Property to enable/disable PPv2 feature for this listener. + * `l3ip_idle_timeout` - (Optional) The duration for L3IP idle timeout in seconds. Example: `200` * `name` - (Required) A friendly name for the listener. It must be unique and it cannot be changed. Example: `example_listener` * `port` - (Required) The communication port for the listener. Example: `80` * `protocol` - (Required) The protocol on which the listener accepts connection requests. For public network load balancers, ANY protocol refers to TCP/UDP with the wildcard port. For private network load balancers, ANY protocol refers to TCP/UDP/ICMP (note that ICMP requires isPreserveSourceDestination to be set to true). "ListNetworkLoadBalancersProtocols" API is deprecated and it will not return the updated values. Use the allowed values for the protocol instead. Example: `TCP` @@ -321,6 +324,8 @@ The following attributes are exported: * `listeners` - Listeners associated with the network load balancer. * `default_backend_set_name` - The name of the associated backend set. Example: `example_backend_set` * `ip_version` - IP version associated with the listener. + * `is_ppv2enabled` - Property to enable/disable PPv2 feature for this listener. + * `l3ip_idle_timeout` - The duration for L3IP idle timeout in seconds. Example: `200` * `name` - A friendly name for the listener. It must be unique and it cannot be changed. Example: `example_listener` * `port` - The communication port for the listener. Example: `80` * `protocol` - The protocol on which the listener accepts connection requests. For public network load balancers, ANY protocol refers to TCP/UDP with the wildcard port. For private network load balancers, ANY protocol refers to TCP/UDP/ICMP (note that ICMP requires isPreserveSourceDestination to be set to true). "ListNetworkLoadBalancersProtocols" API is deprecated and it will not return the updated values. Use the allowed values for the protocol instead. Example: `TCP` From 8bb31d3e4ffdd89e473300b4b5be2c099c29a9cb Mon Sep 17 00:00:00 2001 From: Ravi Prakash Bharti Date: Fri, 25 Oct 2024 17:16:06 +0530 Subject: [PATCH 19/24] Vendored - oci-go-sdk v65.77.1 changes for existing & new services --- .../v65/cloudbridge/aws_asset_source.go | 192 -------------- .../cloudbridge/aws_asset_source_summary.go | 171 ------------- .../v65/cloudbridge/aws_ebs_asset.go | 166 ------------ .../v65/cloudbridge/aws_ebs_properties.go | 69 ----- .../v65/cloudbridge/aws_ec2_asset.go | 174 ------------- .../v65/cloudbridge/aws_ec2_properties.go | 133 ---------- .../create_aws_asset_source_details.go | 150 ----------- .../create_aws_ebs_asset_details.go | 121 --------- .../create_aws_ec2_asset_details.go | 129 ---------- .../v65/cloudbridge/group_identifier.go | 42 --- .../cloudbridge/instance_network_interface.go | 78 ------ .../instance_network_interface_association.go | 51 ---- .../instance_network_interface_attachment.go | 54 ---- .../instance_private_ip_address.go | 46 ---- .../v65/cloudbridge/instance_state.go | 42 --- ...upported_cloud_regions_request_response.go | 241 ------------------ .../v65/cloudbridge/monthly_cost_summary.go | 42 --- .../oci-go-sdk/v65/cloudbridge/placement.go | 60 ----- .../supported_cloud_region_collection.go | 39 --- .../supported_cloud_region_lifecycle_state.go | 56 ---- .../supported_cloud_region_summary.go | 61 ----- .../oracle/oci-go-sdk/v65/cloudbridge/tag.go | 42 --- .../update_aws_asset_source_details.go | 119 --------- .../update_aws_ebs_asset_details.go | 89 ------- .../update_aws_ec2_asset_details.go | 97 ------- .../v65/cloudbridge/volume_attachment.go | 51 ---- .../containerengine/install_addon_details.go | 3 + .../loadbalancer/create_listener_details.go | 5 +- .../oci-go-sdk/v65/loadbalancer/listener.go | 5 +- .../v65/loadbalancer/listener_details.go | 5 +- .../loadbalancer/update_listener_details.go | 5 +- .../v65/networkloadbalancer/backend_set.go | 1 - .../backend_set_details.go | 2 - .../backend_set_summary.go | 6 +- .../create_listener_details.go | 4 + .../v65/networkloadbalancer/listener.go | 4 + .../networkloadbalancer/listener_details.go | 4 + .../networkloadbalancer/listener_protocols.go | 4 + .../networkloadbalancer/listener_summary.go | 4 + ...network_load_balancers_protocol_summary.go | 4 + .../update_listener_details.go | 4 + ...atoraccesscontrol_accessrequests_client.go | 20 +- ...toraccesscontrol_operatoractions_client.go | 4 +- ...toraccesscontrol_operatorcontrol_client.go | 12 +- ...ontrol_operatorcontrolassignment_client.go | 16 +- 45 files changed, 69 insertions(+), 2558 deletions(-) delete mode 100644 vendor/github.com/oracle/oci-go-sdk/v65/cloudbridge/aws_asset_source.go delete mode 100644 vendor/github.com/oracle/oci-go-sdk/v65/cloudbridge/aws_asset_source_summary.go delete mode 100644 vendor/github.com/oracle/oci-go-sdk/v65/cloudbridge/aws_ebs_asset.go delete mode 100644 vendor/github.com/oracle/oci-go-sdk/v65/cloudbridge/aws_ebs_properties.go delete mode 100644 vendor/github.com/oracle/oci-go-sdk/v65/cloudbridge/aws_ec2_asset.go delete mode 100644 vendor/github.com/oracle/oci-go-sdk/v65/cloudbridge/aws_ec2_properties.go delete mode 100644 vendor/github.com/oracle/oci-go-sdk/v65/cloudbridge/create_aws_asset_source_details.go delete mode 100644 vendor/github.com/oracle/oci-go-sdk/v65/cloudbridge/create_aws_ebs_asset_details.go delete mode 100644 vendor/github.com/oracle/oci-go-sdk/v65/cloudbridge/create_aws_ec2_asset_details.go delete mode 100644 vendor/github.com/oracle/oci-go-sdk/v65/cloudbridge/group_identifier.go delete mode 100644 vendor/github.com/oracle/oci-go-sdk/v65/cloudbridge/instance_network_interface.go delete mode 100644 vendor/github.com/oracle/oci-go-sdk/v65/cloudbridge/instance_network_interface_association.go delete mode 100644 vendor/github.com/oracle/oci-go-sdk/v65/cloudbridge/instance_network_interface_attachment.go delete mode 100644 vendor/github.com/oracle/oci-go-sdk/v65/cloudbridge/instance_private_ip_address.go delete mode 100644 vendor/github.com/oracle/oci-go-sdk/v65/cloudbridge/instance_state.go delete mode 100644 vendor/github.com/oracle/oci-go-sdk/v65/cloudbridge/list_supported_cloud_regions_request_response.go delete mode 100644 vendor/github.com/oracle/oci-go-sdk/v65/cloudbridge/monthly_cost_summary.go delete mode 100644 vendor/github.com/oracle/oci-go-sdk/v65/cloudbridge/placement.go delete mode 100644 vendor/github.com/oracle/oci-go-sdk/v65/cloudbridge/supported_cloud_region_collection.go delete mode 100644 vendor/github.com/oracle/oci-go-sdk/v65/cloudbridge/supported_cloud_region_lifecycle_state.go delete mode 100644 vendor/github.com/oracle/oci-go-sdk/v65/cloudbridge/supported_cloud_region_summary.go delete mode 100644 vendor/github.com/oracle/oci-go-sdk/v65/cloudbridge/tag.go delete mode 100644 vendor/github.com/oracle/oci-go-sdk/v65/cloudbridge/update_aws_asset_source_details.go delete mode 100644 vendor/github.com/oracle/oci-go-sdk/v65/cloudbridge/update_aws_ebs_asset_details.go delete mode 100644 vendor/github.com/oracle/oci-go-sdk/v65/cloudbridge/update_aws_ec2_asset_details.go delete mode 100644 vendor/github.com/oracle/oci-go-sdk/v65/cloudbridge/volume_attachment.go diff --git a/vendor/github.com/oracle/oci-go-sdk/v65/cloudbridge/aws_asset_source.go b/vendor/github.com/oracle/oci-go-sdk/v65/cloudbridge/aws_asset_source.go deleted file mode 100644 index 98d91488ce..0000000000 --- a/vendor/github.com/oracle/oci-go-sdk/v65/cloudbridge/aws_asset_source.go +++ /dev/null @@ -1,192 +0,0 @@ -// Copyright (c) 2016, 2018, 2024, Oracle and/or its affiliates. All rights reserved. -// This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. -// Code generated. DO NOT EDIT. - -// Oracle Cloud Bridge API -// -// API for Oracle Cloud Bridge service. -// - -package cloudbridge - -import ( - "encoding/json" - "fmt" - "github.com/oracle/oci-go-sdk/v65/common" - "strings" -) - -// AwsAssetSource AWS asset source. Used for discovery of EC2 instances and EBS volumes registered for the AWS account. -type AwsAssetSource struct { - - // The OCID (https://docs.cloud.oracle.com/Content/General/Concepts/identifiers.htm) of the resource. - Id *string `mandatory:"true" json:"id"` - - // The OCID (https://docs.cloud.oracle.com/Content/General/Concepts/identifiers.htm) of the compartment for the resource. - CompartmentId *string `mandatory:"true" json:"compartmentId"` - - // A user-friendly name for the asset source. Does not have to be unique, and it's mutable. - // Avoid entering confidential information. - DisplayName *string `mandatory:"true" json:"displayName"` - - // The OCID (https://docs.cloud.oracle.com/Content/General/Concepts/identifiers.htm) of the environment. - EnvironmentId *string `mandatory:"true" json:"environmentId"` - - // The OCID (https://docs.cloud.oracle.com/Content/General/Concepts/identifiers.htm) of the inventory that will contain created assets. - InventoryId *string `mandatory:"true" json:"inventoryId"` - - // The OCID (https://docs.cloud.oracle.com/Content/General/Concepts/identifiers.htm) of the compartment that is going to be used to create assets. - AssetsCompartmentId *string `mandatory:"true" json:"assetsCompartmentId"` - - // The detailed state of the asset source. - LifecycleDetails *string `mandatory:"true" json:"lifecycleDetails"` - - // The time when the asset source was created in the RFC3339 format. - TimeCreated *common.SDKTime `mandatory:"true" json:"timeCreated"` - - // The point in time that the asset source was last updated in the RFC3339 format. - TimeUpdated *common.SDKTime `mandatory:"true" json:"timeUpdated"` - - DiscoveryCredentials *AssetSourceCredentials `mandatory:"true" json:"discoveryCredentials"` - - // AWS region information, from where the resources are discovered. - AwsRegion *string `mandatory:"true" json:"awsRegion"` - - // The key of customer's aws account to be discovered/migrated. - AwsAccountKey *string `mandatory:"true" json:"awsAccountKey"` - - // The OCID (https://docs.cloud.oracle.com/Content/General/Concepts/identifiers.htm) of an attached discovery schedule. - DiscoveryScheduleId *string `mandatory:"false" json:"discoveryScheduleId"` - - // The freeform tags associated with this resource, if any. Each tag is a simple key-value pair with no - // predefined name, type, or namespace/scope. For more information, see Resource Tags (https://docs.cloud.oracle.com/iaas/Content/General/Concepts/resourcetags.htm). - // Example: `{"Department": "Finance"}` - FreeformTags map[string]string `mandatory:"false" json:"freeformTags"` - - // The defined tags associated with this resource, if any. Each key is predefined and scoped to namespaces. - // For more information, see Resource Tags (https://docs.cloud.oracle.com/iaas/Content/General/Concepts/resourcetags.htm). - // Example: `{"Operations": {"CostCenter": "42"}}` - DefinedTags map[string]map[string]interface{} `mandatory:"false" json:"definedTags"` - - // The system tags associated with this resource, if any. The system tags are set by Oracle cloud infrastructure services. Each key is predefined and scoped to namespaces. - // For more information, see Resource Tags (https://docs.cloud.oracle.com/iaas/Content/General/Concepts/resourcetags.htm). - // Example: `{orcl-cloud: {free-tier-retain: true}}` - SystemTags map[string]map[string]interface{} `mandatory:"false" json:"systemTags"` - - ReplicationCredentials *AssetSourceCredentials `mandatory:"false" json:"replicationCredentials"` - - // Flag indicating whether historical metrics are collected for assets, originating from this asset source. - AreHistoricalMetricsCollected *bool `mandatory:"false" json:"areHistoricalMetricsCollected"` - - // Flag indicating whether real-time metrics are collected for assets, originating from this asset source. - AreRealtimeMetricsCollected *bool `mandatory:"false" json:"areRealtimeMetricsCollected"` - - // Flag indicating whether cost data collection is enabled for assets, originating from this asset source. - IsCostInformationCollected *bool `mandatory:"false" json:"isCostInformationCollected"` - - // The current state of the asset source. - LifecycleState AssetSourceLifecycleStateEnum `mandatory:"true" json:"lifecycleState"` -} - -// GetId returns Id -func (m AwsAssetSource) GetId() *string { - return m.Id -} - -// GetCompartmentId returns CompartmentId -func (m AwsAssetSource) GetCompartmentId() *string { - return m.CompartmentId -} - -// GetDisplayName returns DisplayName -func (m AwsAssetSource) GetDisplayName() *string { - return m.DisplayName -} - -// GetEnvironmentId returns EnvironmentId -func (m AwsAssetSource) GetEnvironmentId() *string { - return m.EnvironmentId -} - -// GetInventoryId returns InventoryId -func (m AwsAssetSource) GetInventoryId() *string { - return m.InventoryId -} - -// GetAssetsCompartmentId returns AssetsCompartmentId -func (m AwsAssetSource) GetAssetsCompartmentId() *string { - return m.AssetsCompartmentId -} - -// GetDiscoveryScheduleId returns DiscoveryScheduleId -func (m AwsAssetSource) GetDiscoveryScheduleId() *string { - return m.DiscoveryScheduleId -} - -// GetLifecycleState returns LifecycleState -func (m AwsAssetSource) GetLifecycleState() AssetSourceLifecycleStateEnum { - return m.LifecycleState -} - -// GetLifecycleDetails returns LifecycleDetails -func (m AwsAssetSource) GetLifecycleDetails() *string { - return m.LifecycleDetails -} - -// GetTimeCreated returns TimeCreated -func (m AwsAssetSource) GetTimeCreated() *common.SDKTime { - return m.TimeCreated -} - -// GetTimeUpdated returns TimeUpdated -func (m AwsAssetSource) GetTimeUpdated() *common.SDKTime { - return m.TimeUpdated -} - -// GetFreeformTags returns FreeformTags -func (m AwsAssetSource) GetFreeformTags() map[string]string { - return m.FreeformTags -} - -// GetDefinedTags returns DefinedTags -func (m AwsAssetSource) GetDefinedTags() map[string]map[string]interface{} { - return m.DefinedTags -} - -// GetSystemTags returns SystemTags -func (m AwsAssetSource) GetSystemTags() map[string]map[string]interface{} { - return m.SystemTags -} - -func (m AwsAssetSource) String() string { - return common.PointerString(m) -} - -// ValidateEnumValue returns an error when providing an unsupported enum value -// This function is being called during constructing API request process -// Not recommended for calling this function directly -func (m AwsAssetSource) ValidateEnumValue() (bool, error) { - errMessage := []string{} - - if _, ok := GetMappingAssetSourceLifecycleStateEnum(string(m.LifecycleState)); !ok && m.LifecycleState != "" { - errMessage = append(errMessage, fmt.Sprintf("unsupported enum value for LifecycleState: %s. Supported values are: %s.", m.LifecycleState, strings.Join(GetAssetSourceLifecycleStateEnumStringValues(), ","))) - } - if len(errMessage) > 0 { - return true, fmt.Errorf(strings.Join(errMessage, "\n")) - } - return false, nil -} - -// MarshalJSON marshals to json representation -func (m AwsAssetSource) MarshalJSON() (buff []byte, e error) { - type MarshalTypeAwsAssetSource AwsAssetSource - s := struct { - DiscriminatorParam string `json:"type"` - MarshalTypeAwsAssetSource - }{ - "AWS", - (MarshalTypeAwsAssetSource)(m), - } - - return json.Marshal(&s) -} diff --git a/vendor/github.com/oracle/oci-go-sdk/v65/cloudbridge/aws_asset_source_summary.go b/vendor/github.com/oracle/oci-go-sdk/v65/cloudbridge/aws_asset_source_summary.go deleted file mode 100644 index 21c58c1f12..0000000000 --- a/vendor/github.com/oracle/oci-go-sdk/v65/cloudbridge/aws_asset_source_summary.go +++ /dev/null @@ -1,171 +0,0 @@ -// Copyright (c) 2016, 2018, 2024, Oracle and/or its affiliates. All rights reserved. -// This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. -// Code generated. DO NOT EDIT. - -// Oracle Cloud Bridge API -// -// API for Oracle Cloud Bridge service. -// - -package cloudbridge - -import ( - "encoding/json" - "fmt" - "github.com/oracle/oci-go-sdk/v65/common" - "strings" -) - -// AwsAssetSourceSummary Summary of an AWS asset source provided in the list. -type AwsAssetSourceSummary struct { - - // The OCID (https://docs.cloud.oracle.com/Content/General/Concepts/identifiers.htm) of the resource. - Id *string `mandatory:"true" json:"id"` - - // The OCID (https://docs.cloud.oracle.com/Content/General/Concepts/identifiers.htm) of the compartment for the resource. - CompartmentId *string `mandatory:"true" json:"compartmentId"` - - // The OCID (https://docs.cloud.oracle.com/Content/General/Concepts/identifiers.htm) of the environment. - EnvironmentId *string `mandatory:"true" json:"environmentId"` - - // A user-friendly name for the asset source. Does not have to be unique, and it's mutable. - // Avoid entering confidential information. - DisplayName *string `mandatory:"true" json:"displayName"` - - // The detailed state of the asset source. - LifecycleDetails *string `mandatory:"true" json:"lifecycleDetails"` - - // The OCID (https://docs.cloud.oracle.com/Content/General/Concepts/identifiers.htm) of the inventory that will contain created assets. - InventoryId *string `mandatory:"true" json:"inventoryId"` - - // The OCID (https://docs.cloud.oracle.com/Content/General/Concepts/identifiers.htm) of the compartment that is going to be used to create assets. - AssetsCompartmentId *string `mandatory:"true" json:"assetsCompartmentId"` - - // AWS region information, from where the resources are discovered. - AwsRegion *string `mandatory:"true" json:"awsRegion"` - - // The key of customer's aws account to be discovered/migrated. - AwsAccountKey *string `mandatory:"true" json:"awsAccountKey"` - - // The time when the asset source was created in RFC3339 format. - TimeCreated *common.SDKTime `mandatory:"false" json:"timeCreated"` - - // The point in time that the asset source was last updated in RFC3339 format. - TimeUpdated *common.SDKTime `mandatory:"false" json:"timeUpdated"` - - // The freeform tags associated with this resource, if any. Each tag is a simple key-value pair with no - // predefined name, type, or namespace/scope. For more information, see Resource Tags (https://docs.cloud.oracle.com/iaas/Content/General/Concepts/resourcetags.htm). - // Example: `{"Department": "Finance"}` - FreeformTags map[string]string `mandatory:"false" json:"freeformTags"` - - // The defined tags associated with this resource, if any. Each key is predefined and scoped to namespaces. - // For more information, see Resource Tags (https://docs.cloud.oracle.com/iaas/Content/General/Concepts/resourcetags.htm). - // Example: `{"Operations": {"CostCenter": "42"}}` - DefinedTags map[string]map[string]interface{} `mandatory:"false" json:"definedTags"` - - // The system tags associated with this resource, if any. The system tags are set by Oracle cloud infrastructure services. Each key is predefined and scoped to namespaces. - // For more information, see Resource Tags (https://docs.cloud.oracle.com/iaas/Content/General/Concepts/resourcetags.htm). - // Example: `{orcl-cloud: {free-tier-retain: true}}` - SystemTags map[string]map[string]interface{} `mandatory:"false" json:"systemTags"` - - // The current state of the asset source. - LifecycleState AssetSourceLifecycleStateEnum `mandatory:"true" json:"lifecycleState"` -} - -// GetId returns Id -func (m AwsAssetSourceSummary) GetId() *string { - return m.Id -} - -// GetCompartmentId returns CompartmentId -func (m AwsAssetSourceSummary) GetCompartmentId() *string { - return m.CompartmentId -} - -// GetEnvironmentId returns EnvironmentId -func (m AwsAssetSourceSummary) GetEnvironmentId() *string { - return m.EnvironmentId -} - -// GetDisplayName returns DisplayName -func (m AwsAssetSourceSummary) GetDisplayName() *string { - return m.DisplayName -} - -// GetLifecycleState returns LifecycleState -func (m AwsAssetSourceSummary) GetLifecycleState() AssetSourceLifecycleStateEnum { - return m.LifecycleState -} - -// GetLifecycleDetails returns LifecycleDetails -func (m AwsAssetSourceSummary) GetLifecycleDetails() *string { - return m.LifecycleDetails -} - -// GetInventoryId returns InventoryId -func (m AwsAssetSourceSummary) GetInventoryId() *string { - return m.InventoryId -} - -// GetAssetsCompartmentId returns AssetsCompartmentId -func (m AwsAssetSourceSummary) GetAssetsCompartmentId() *string { - return m.AssetsCompartmentId -} - -// GetTimeCreated returns TimeCreated -func (m AwsAssetSourceSummary) GetTimeCreated() *common.SDKTime { - return m.TimeCreated -} - -// GetTimeUpdated returns TimeUpdated -func (m AwsAssetSourceSummary) GetTimeUpdated() *common.SDKTime { - return m.TimeUpdated -} - -// GetFreeformTags returns FreeformTags -func (m AwsAssetSourceSummary) GetFreeformTags() map[string]string { - return m.FreeformTags -} - -// GetDefinedTags returns DefinedTags -func (m AwsAssetSourceSummary) GetDefinedTags() map[string]map[string]interface{} { - return m.DefinedTags -} - -// GetSystemTags returns SystemTags -func (m AwsAssetSourceSummary) GetSystemTags() map[string]map[string]interface{} { - return m.SystemTags -} - -func (m AwsAssetSourceSummary) String() string { - return common.PointerString(m) -} - -// ValidateEnumValue returns an error when providing an unsupported enum value -// This function is being called during constructing API request process -// Not recommended for calling this function directly -func (m AwsAssetSourceSummary) ValidateEnumValue() (bool, error) { - errMessage := []string{} - - if _, ok := GetMappingAssetSourceLifecycleStateEnum(string(m.LifecycleState)); !ok && m.LifecycleState != "" { - errMessage = append(errMessage, fmt.Sprintf("unsupported enum value for LifecycleState: %s. Supported values are: %s.", m.LifecycleState, strings.Join(GetAssetSourceLifecycleStateEnumStringValues(), ","))) - } - if len(errMessage) > 0 { - return true, fmt.Errorf(strings.Join(errMessage, "\n")) - } - return false, nil -} - -// MarshalJSON marshals to json representation -func (m AwsAssetSourceSummary) MarshalJSON() (buff []byte, e error) { - type MarshalTypeAwsAssetSourceSummary AwsAssetSourceSummary - s := struct { - DiscriminatorParam string `json:"type"` - MarshalTypeAwsAssetSourceSummary - }{ - "AWS", - (MarshalTypeAwsAssetSourceSummary)(m), - } - - return json.Marshal(&s) -} diff --git a/vendor/github.com/oracle/oci-go-sdk/v65/cloudbridge/aws_ebs_asset.go b/vendor/github.com/oracle/oci-go-sdk/v65/cloudbridge/aws_ebs_asset.go deleted file mode 100644 index 4efe59b9ff..0000000000 --- a/vendor/github.com/oracle/oci-go-sdk/v65/cloudbridge/aws_ebs_asset.go +++ /dev/null @@ -1,166 +0,0 @@ -// Copyright (c) 2016, 2018, 2024, Oracle and/or its affiliates. All rights reserved. -// This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. -// Code generated. DO NOT EDIT. - -// Oracle Cloud Bridge API -// -// API for Oracle Cloud Bridge service. -// - -package cloudbridge - -import ( - "encoding/json" - "fmt" - "github.com/oracle/oci-go-sdk/v65/common" - "strings" -) - -// AwsEbsAsset AWS EBS type of asset. -type AwsEbsAsset struct { - - // Inventory ID to which an asset belongs to. - InventoryId *string `mandatory:"true" json:"inventoryId"` - - // Asset OCID that is immutable on creation. - Id *string `mandatory:"true" json:"id"` - - // The OCID of the compartment to which an asset belongs to. - CompartmentId *string `mandatory:"true" json:"compartmentId"` - - // The source key that the asset belongs to. - SourceKey *string `mandatory:"true" json:"sourceKey"` - - // The key of the asset from the external environment. - ExternalAssetKey *string `mandatory:"true" json:"externalAssetKey"` - - // The time when the asset was created. An RFC3339 formatted datetime string. - TimeCreated *common.SDKTime `mandatory:"true" json:"timeCreated"` - - // The time when the asset was updated. An RFC3339 formatted datetime string. - TimeUpdated *common.SDKTime `mandatory:"true" json:"timeUpdated"` - - AwsEbs *AwsEbsProperties `mandatory:"true" json:"awsEbs"` - - // Asset display name. - DisplayName *string `mandatory:"false" json:"displayName"` - - // List of asset source OCID. - AssetSourceIds []string `mandatory:"false" json:"assetSourceIds"` - - // The freeform tags associated with this resource, if any. Each tag is a simple key-value pair with no - // predefined name, type, or namespace/scope. For more information, see Resource Tags (https://docs.cloud.oracle.com/iaas/Content/General/Concepts/resourcetags.htm). - // Example: `{"Department": "Finance"}` - FreeformTags map[string]string `mandatory:"false" json:"freeformTags"` - - // The defined tags associated with this resource, if any. Each key is predefined and scoped to namespaces. - // For more information, see Resource Tags (https://docs.cloud.oracle.com/iaas/Content/General/Concepts/resourcetags.htm). - // Example: `{"Operations": {"CostCenter": "42"}}` - DefinedTags map[string]map[string]interface{} `mandatory:"false" json:"definedTags"` - - // The system tags associated with this resource, if any. The system tags are set by Oracle cloud infrastructure services. Each key is predefined and scoped to namespaces. - // For more information, see Resource Tags (https://docs.cloud.oracle.com/iaas/Content/General/Concepts/resourcetags.htm). - // Example: `{orcl-cloud: {free-tier-retain: true}}` - SystemTags map[string]map[string]interface{} `mandatory:"false" json:"systemTags"` - - // The current state of the asset. - LifecycleState AssetLifecycleStateEnum `mandatory:"true" json:"lifecycleState"` -} - -// GetDisplayName returns DisplayName -func (m AwsEbsAsset) GetDisplayName() *string { - return m.DisplayName -} - -// GetInventoryId returns InventoryId -func (m AwsEbsAsset) GetInventoryId() *string { - return m.InventoryId -} - -// GetId returns Id -func (m AwsEbsAsset) GetId() *string { - return m.Id -} - -// GetCompartmentId returns CompartmentId -func (m AwsEbsAsset) GetCompartmentId() *string { - return m.CompartmentId -} - -// GetSourceKey returns SourceKey -func (m AwsEbsAsset) GetSourceKey() *string { - return m.SourceKey -} - -// GetExternalAssetKey returns ExternalAssetKey -func (m AwsEbsAsset) GetExternalAssetKey() *string { - return m.ExternalAssetKey -} - -// GetTimeCreated returns TimeCreated -func (m AwsEbsAsset) GetTimeCreated() *common.SDKTime { - return m.TimeCreated -} - -// GetTimeUpdated returns TimeUpdated -func (m AwsEbsAsset) GetTimeUpdated() *common.SDKTime { - return m.TimeUpdated -} - -// GetAssetSourceIds returns AssetSourceIds -func (m AwsEbsAsset) GetAssetSourceIds() []string { - return m.AssetSourceIds -} - -// GetLifecycleState returns LifecycleState -func (m AwsEbsAsset) GetLifecycleState() AssetLifecycleStateEnum { - return m.LifecycleState -} - -// GetFreeformTags returns FreeformTags -func (m AwsEbsAsset) GetFreeformTags() map[string]string { - return m.FreeformTags -} - -// GetDefinedTags returns DefinedTags -func (m AwsEbsAsset) GetDefinedTags() map[string]map[string]interface{} { - return m.DefinedTags -} - -// GetSystemTags returns SystemTags -func (m AwsEbsAsset) GetSystemTags() map[string]map[string]interface{} { - return m.SystemTags -} - -func (m AwsEbsAsset) String() string { - return common.PointerString(m) -} - -// ValidateEnumValue returns an error when providing an unsupported enum value -// This function is being called during constructing API request process -// Not recommended for calling this function directly -func (m AwsEbsAsset) ValidateEnumValue() (bool, error) { - errMessage := []string{} - - if _, ok := GetMappingAssetLifecycleStateEnum(string(m.LifecycleState)); !ok && m.LifecycleState != "" { - errMessage = append(errMessage, fmt.Sprintf("unsupported enum value for LifecycleState: %s. Supported values are: %s.", m.LifecycleState, strings.Join(GetAssetLifecycleStateEnumStringValues(), ","))) - } - if len(errMessage) > 0 { - return true, fmt.Errorf(strings.Join(errMessage, "\n")) - } - return false, nil -} - -// MarshalJSON marshals to json representation -func (m AwsEbsAsset) MarshalJSON() (buff []byte, e error) { - type MarshalTypeAwsEbsAsset AwsEbsAsset - s := struct { - DiscriminatorParam string `json:"assetType"` - MarshalTypeAwsEbsAsset - }{ - "AWS_EBS", - (MarshalTypeAwsEbsAsset)(m), - } - - return json.Marshal(&s) -} diff --git a/vendor/github.com/oracle/oci-go-sdk/v65/cloudbridge/aws_ebs_properties.go b/vendor/github.com/oracle/oci-go-sdk/v65/cloudbridge/aws_ebs_properties.go deleted file mode 100644 index 27dbc70094..0000000000 --- a/vendor/github.com/oracle/oci-go-sdk/v65/cloudbridge/aws_ebs_properties.go +++ /dev/null @@ -1,69 +0,0 @@ -// Copyright (c) 2016, 2018, 2024, Oracle and/or its affiliates. All rights reserved. -// This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. -// Code generated. DO NOT EDIT. - -// Oracle Cloud Bridge API -// -// API for Oracle Cloud Bridge service. -// - -package cloudbridge - -import ( - "fmt" - "github.com/oracle/oci-go-sdk/v65/common" - "strings" -) - -// AwsEbsProperties AWS EBS volume related properties. -type AwsEbsProperties struct { - - // Indicates whether the volume is encrypted. - IsEncrypted *bool `mandatory:"true" json:"isEncrypted"` - - // Indicates whether Amazon EBS Multi-Attach is enabled. - IsMultiAttachEnabled *bool `mandatory:"true" json:"isMultiAttachEnabled"` - - // The size of the volume, in GiBs. - SizeInGiBs *int `mandatory:"true" json:"sizeInGiBs"` - - // The ID of the volume. - VolumeKey *string `mandatory:"true" json:"volumeKey"` - - // The volume type. - VolumeType *string `mandatory:"true" json:"volumeType"` - - // Information about the volume attachments. - Attachments []VolumeAttachment `mandatory:"false" json:"attachments"` - - // The Availability Zone for the volume. - AvailabilityZone *string `mandatory:"false" json:"availabilityZone"` - - // The number of I/O operations per second. - Iops *int `mandatory:"false" json:"iops"` - - // The volume state. - Status *string `mandatory:"false" json:"status"` - - // Any tags assigned to the volume. - Tags []Tag `mandatory:"false" json:"tags"` - - // The throughput that the volume supports, in MiB/s. - Throughput *int `mandatory:"false" json:"throughput"` -} - -func (m AwsEbsProperties) String() string { - return common.PointerString(m) -} - -// ValidateEnumValue returns an error when providing an unsupported enum value -// This function is being called during constructing API request process -// Not recommended for calling this function directly -func (m AwsEbsProperties) ValidateEnumValue() (bool, error) { - errMessage := []string{} - - if len(errMessage) > 0 { - return true, fmt.Errorf(strings.Join(errMessage, "\n")) - } - return false, nil -} diff --git a/vendor/github.com/oracle/oci-go-sdk/v65/cloudbridge/aws_ec2_asset.go b/vendor/github.com/oracle/oci-go-sdk/v65/cloudbridge/aws_ec2_asset.go deleted file mode 100644 index 086caff6b9..0000000000 --- a/vendor/github.com/oracle/oci-go-sdk/v65/cloudbridge/aws_ec2_asset.go +++ /dev/null @@ -1,174 +0,0 @@ -// Copyright (c) 2016, 2018, 2024, Oracle and/or its affiliates. All rights reserved. -// This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. -// Code generated. DO NOT EDIT. - -// Oracle Cloud Bridge API -// -// API for Oracle Cloud Bridge service. -// - -package cloudbridge - -import ( - "encoding/json" - "fmt" - "github.com/oracle/oci-go-sdk/v65/common" - "strings" -) - -// AwsEc2Asset AWS EC2 type of asset. -type AwsEc2Asset struct { - - // Inventory ID to which an asset belongs to. - InventoryId *string `mandatory:"true" json:"inventoryId"` - - // Asset OCID that is immutable on creation. - Id *string `mandatory:"true" json:"id"` - - // The OCID of the compartment to which an asset belongs to. - CompartmentId *string `mandatory:"true" json:"compartmentId"` - - // The source key that the asset belongs to. - SourceKey *string `mandatory:"true" json:"sourceKey"` - - // The key of the asset from the external environment. - ExternalAssetKey *string `mandatory:"true" json:"externalAssetKey"` - - // The time when the asset was created. An RFC3339 formatted datetime string. - TimeCreated *common.SDKTime `mandatory:"true" json:"timeCreated"` - - // The time when the asset was updated. An RFC3339 formatted datetime string. - TimeUpdated *common.SDKTime `mandatory:"true" json:"timeUpdated"` - - Compute *ComputeProperties `mandatory:"true" json:"compute"` - - Vm *VmProperties `mandatory:"true" json:"vm"` - - AwsEc2 *AwsEc2Properties `mandatory:"true" json:"awsEc2"` - - // Asset display name. - DisplayName *string `mandatory:"false" json:"displayName"` - - // List of asset source OCID. - AssetSourceIds []string `mandatory:"false" json:"assetSourceIds"` - - // The freeform tags associated with this resource, if any. Each tag is a simple key-value pair with no - // predefined name, type, or namespace/scope. For more information, see Resource Tags (https://docs.cloud.oracle.com/iaas/Content/General/Concepts/resourcetags.htm). - // Example: `{"Department": "Finance"}` - FreeformTags map[string]string `mandatory:"false" json:"freeformTags"` - - // The defined tags associated with this resource, if any. Each key is predefined and scoped to namespaces. - // For more information, see Resource Tags (https://docs.cloud.oracle.com/iaas/Content/General/Concepts/resourcetags.htm). - // Example: `{"Operations": {"CostCenter": "42"}}` - DefinedTags map[string]map[string]interface{} `mandatory:"false" json:"definedTags"` - - // The system tags associated with this resource, if any. The system tags are set by Oracle cloud infrastructure services. Each key is predefined and scoped to namespaces. - // For more information, see Resource Tags (https://docs.cloud.oracle.com/iaas/Content/General/Concepts/resourcetags.htm). - // Example: `{orcl-cloud: {free-tier-retain: true}}` - SystemTags map[string]map[string]interface{} `mandatory:"false" json:"systemTags"` - - AwsEc2Cost *MonthlyCostSummary `mandatory:"false" json:"awsEc2Cost"` - - AttachedEbsVolumesCost *MonthlyCostSummary `mandatory:"false" json:"attachedEbsVolumesCost"` - - // The current state of the asset. - LifecycleState AssetLifecycleStateEnum `mandatory:"true" json:"lifecycleState"` -} - -// GetDisplayName returns DisplayName -func (m AwsEc2Asset) GetDisplayName() *string { - return m.DisplayName -} - -// GetInventoryId returns InventoryId -func (m AwsEc2Asset) GetInventoryId() *string { - return m.InventoryId -} - -// GetId returns Id -func (m AwsEc2Asset) GetId() *string { - return m.Id -} - -// GetCompartmentId returns CompartmentId -func (m AwsEc2Asset) GetCompartmentId() *string { - return m.CompartmentId -} - -// GetSourceKey returns SourceKey -func (m AwsEc2Asset) GetSourceKey() *string { - return m.SourceKey -} - -// GetExternalAssetKey returns ExternalAssetKey -func (m AwsEc2Asset) GetExternalAssetKey() *string { - return m.ExternalAssetKey -} - -// GetTimeCreated returns TimeCreated -func (m AwsEc2Asset) GetTimeCreated() *common.SDKTime { - return m.TimeCreated -} - -// GetTimeUpdated returns TimeUpdated -func (m AwsEc2Asset) GetTimeUpdated() *common.SDKTime { - return m.TimeUpdated -} - -// GetAssetSourceIds returns AssetSourceIds -func (m AwsEc2Asset) GetAssetSourceIds() []string { - return m.AssetSourceIds -} - -// GetLifecycleState returns LifecycleState -func (m AwsEc2Asset) GetLifecycleState() AssetLifecycleStateEnum { - return m.LifecycleState -} - -// GetFreeformTags returns FreeformTags -func (m AwsEc2Asset) GetFreeformTags() map[string]string { - return m.FreeformTags -} - -// GetDefinedTags returns DefinedTags -func (m AwsEc2Asset) GetDefinedTags() map[string]map[string]interface{} { - return m.DefinedTags -} - -// GetSystemTags returns SystemTags -func (m AwsEc2Asset) GetSystemTags() map[string]map[string]interface{} { - return m.SystemTags -} - -func (m AwsEc2Asset) String() string { - return common.PointerString(m) -} - -// ValidateEnumValue returns an error when providing an unsupported enum value -// This function is being called during constructing API request process -// Not recommended for calling this function directly -func (m AwsEc2Asset) ValidateEnumValue() (bool, error) { - errMessage := []string{} - - if _, ok := GetMappingAssetLifecycleStateEnum(string(m.LifecycleState)); !ok && m.LifecycleState != "" { - errMessage = append(errMessage, fmt.Sprintf("unsupported enum value for LifecycleState: %s. Supported values are: %s.", m.LifecycleState, strings.Join(GetAssetLifecycleStateEnumStringValues(), ","))) - } - if len(errMessage) > 0 { - return true, fmt.Errorf(strings.Join(errMessage, "\n")) - } - return false, nil -} - -// MarshalJSON marshals to json representation -func (m AwsEc2Asset) MarshalJSON() (buff []byte, e error) { - type MarshalTypeAwsEc2Asset AwsEc2Asset - s := struct { - DiscriminatorParam string `json:"assetType"` - MarshalTypeAwsEc2Asset - }{ - "AWS_EC2", - (MarshalTypeAwsEc2Asset)(m), - } - - return json.Marshal(&s) -} diff --git a/vendor/github.com/oracle/oci-go-sdk/v65/cloudbridge/aws_ec2_properties.go b/vendor/github.com/oracle/oci-go-sdk/v65/cloudbridge/aws_ec2_properties.go deleted file mode 100644 index 58bd09aec0..0000000000 --- a/vendor/github.com/oracle/oci-go-sdk/v65/cloudbridge/aws_ec2_properties.go +++ /dev/null @@ -1,133 +0,0 @@ -// Copyright (c) 2016, 2018, 2024, Oracle and/or its affiliates. All rights reserved. -// This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. -// Code generated. DO NOT EDIT. - -// Oracle Cloud Bridge API -// -// API for Oracle Cloud Bridge service. -// - -package cloudbridge - -import ( - "fmt" - "github.com/oracle/oci-go-sdk/v65/common" - "strings" -) - -// AwsEc2Properties AWS virtual machine related properties. -type AwsEc2Properties struct { - - // The architecture of the image. - Architecture *string `mandatory:"true" json:"architecture"` - - // The ID of the instance. - InstanceKey *string `mandatory:"true" json:"instanceKey"` - - // The instance type. - InstanceType *string `mandatory:"true" json:"instanceType"` - - // The device name of the root device volume. - RootDeviceName *string `mandatory:"true" json:"rootDeviceName"` - - State *InstanceState `mandatory:"true" json:"state"` - - // The boot mode of the instance. - BootMode *string `mandatory:"false" json:"bootMode"` - - // The ID of the Capacity Reservation. - CapacityReservationKey *string `mandatory:"false" json:"capacityReservationKey"` - - // Indicates if the elastic inference accelerators attached to an instance - AreElasticInferenceAcceleratorsPresent *bool `mandatory:"false" json:"areElasticInferenceAcceleratorsPresent"` - - // Indicates whether the instance is enabled for AWS Nitro Enclaves. - IsEnclaveOptions *bool `mandatory:"false" json:"isEnclaveOptions"` - - // Indicates whether the instance is enabled for hibernation. - IsHibernationOptions *bool `mandatory:"false" json:"isHibernationOptions"` - - // The ID of the AMI used to launch the instance. - ImageKey *string `mandatory:"false" json:"imageKey"` - - // Indicates whether this is a Spot Instance or a Scheduled Instance. - InstanceLifecycle *string `mandatory:"false" json:"instanceLifecycle"` - - // The public IPv4 address, or the Carrier IP address assigned to the instance. - IpAddress *string `mandatory:"false" json:"ipAddress"` - - // The IPv6 address assigned to the instance. - Ipv6Address *string `mandatory:"false" json:"ipv6Address"` - - // The kernel associated with this instance, if applicable. - KernelKey *string `mandatory:"false" json:"kernelKey"` - - // The time the instance was launched. - TimeLaunch *common.SDKTime `mandatory:"false" json:"timeLaunch"` - - // The license configurations for the instance. - Licenses []string `mandatory:"false" json:"licenses"` - - // Provides information on the recovery and maintenance options of your instance. - MaintenanceOptions *string `mandatory:"false" json:"maintenanceOptions"` - - // The monitoring for the instance. - Monitoring *string `mandatory:"false" json:"monitoring"` - - // The network interfaces for the instance. - NetworkInterfaces []InstanceNetworkInterface `mandatory:"false" json:"networkInterfaces"` - - Placement *Placement `mandatory:"false" json:"placement"` - - // (IPv4 only) The private DNS hostname name assigned to the instance. - PrivateDnsName *string `mandatory:"false" json:"privateDnsName"` - - // The private IPv4 address assigned to the instance. - PrivateIpAddress *string `mandatory:"false" json:"privateIpAddress"` - - // The root device type used by the AMI. The AMI can use an EBS volume or an instance store volume. - RootDeviceType *string `mandatory:"false" json:"rootDeviceType"` - - // The security groups for the instance. - SecurityGroups []GroupIdentifier `mandatory:"false" json:"securityGroups"` - - // Indicates whether source/destination checking is enabled. - IsSourceDestCheck *bool `mandatory:"false" json:"isSourceDestCheck"` - - // If the request is a Spot Instance request, this value will be true. - IsSpotInstance *bool `mandatory:"false" json:"isSpotInstance"` - - // Specifies whether enhanced networking with the Intel 82599 Virtual Function interface is enabled. - SriovNetSupport *string `mandatory:"false" json:"sriovNetSupport"` - - // EC2-VPC The ID of the subnet in which the instance is running. - SubnetKey *string `mandatory:"false" json:"subnetKey"` - - // Any tags assigned to the instance. - Tags []Tag `mandatory:"false" json:"tags"` - - // If the instance is configured for NitroTPM support, the value is v2.0. - TpmSupport *string `mandatory:"false" json:"tpmSupport"` - - // The virtualization type of the instance. - VirtualizationType *string `mandatory:"false" json:"virtualizationType"` - - // EC2-VPC The ID of the VPC in which the instance is running. - VpcKey *string `mandatory:"false" json:"vpcKey"` -} - -func (m AwsEc2Properties) String() string { - return common.PointerString(m) -} - -// ValidateEnumValue returns an error when providing an unsupported enum value -// This function is being called during constructing API request process -// Not recommended for calling this function directly -func (m AwsEc2Properties) ValidateEnumValue() (bool, error) { - errMessage := []string{} - - if len(errMessage) > 0 { - return true, fmt.Errorf(strings.Join(errMessage, "\n")) - } - return false, nil -} diff --git a/vendor/github.com/oracle/oci-go-sdk/v65/cloudbridge/create_aws_asset_source_details.go b/vendor/github.com/oracle/oci-go-sdk/v65/cloudbridge/create_aws_asset_source_details.go deleted file mode 100644 index 2a458729d5..0000000000 --- a/vendor/github.com/oracle/oci-go-sdk/v65/cloudbridge/create_aws_asset_source_details.go +++ /dev/null @@ -1,150 +0,0 @@ -// Copyright (c) 2016, 2018, 2024, Oracle and/or its affiliates. All rights reserved. -// This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. -// Code generated. DO NOT EDIT. - -// Oracle Cloud Bridge API -// -// API for Oracle Cloud Bridge service. -// - -package cloudbridge - -import ( - "encoding/json" - "fmt" - "github.com/oracle/oci-go-sdk/v65/common" - "strings" -) - -// CreateAwsAssetSourceDetails AWS asset source creation request. -type CreateAwsAssetSourceDetails struct { - - // The OCID (https://docs.cloud.oracle.com/Content/General/Concepts/identifiers.htm) of the compartment for the resource. - CompartmentId *string `mandatory:"true" json:"compartmentId"` - - // The OCID (https://docs.cloud.oracle.com/Content/General/Concepts/identifiers.htm) of the environment. - EnvironmentId *string `mandatory:"true" json:"environmentId"` - - // The OCID (https://docs.cloud.oracle.com/Content/General/Concepts/identifiers.htm) of the inventory that will contain created assets. - InventoryId *string `mandatory:"true" json:"inventoryId"` - - // The OCID (https://docs.cloud.oracle.com/Content/General/Concepts/identifiers.htm) of the compartment that is going to be used to create assets. - AssetsCompartmentId *string `mandatory:"true" json:"assetsCompartmentId"` - - DiscoveryCredentials *AssetSourceCredentials `mandatory:"true" json:"discoveryCredentials"` - - // AWS region information, from where the resources are discovered. - AwsRegion *string `mandatory:"true" json:"awsRegion"` - - // The key of customer's aws account to be discovered/migrated. - AwsAccountKey *string `mandatory:"true" json:"awsAccountKey"` - - // A user-friendly name for the asset source. Does not have to be unique, and it's mutable. - // Avoid entering confidential information. The name is generated by the service if it is not - // explicitly provided. - DisplayName *string `mandatory:"false" json:"displayName"` - - // The OCID (https://docs.cloud.oracle.com/Content/General/Concepts/identifiers.htm) of the discovery schedule that is going to be attached to the created asset. - DiscoveryScheduleId *string `mandatory:"false" json:"discoveryScheduleId"` - - // The freeform tags associated with this resource, if any. Each tag is a simple key-value pair with no - // predefined name, type, or namespace/scope. For more information, see Resource Tags (https://docs.cloud.oracle.com/iaas/Content/General/Concepts/resourcetags.htm). - // Example: `{"Department": "Finance"}` - FreeformTags map[string]string `mandatory:"false" json:"freeformTags"` - - // The defined tags associated with this resource, if any. Each key is predefined and scoped to namespaces. - // For more information, see Resource Tags (https://docs.cloud.oracle.com/iaas/Content/General/Concepts/resourcetags.htm). - // Example: `{"Operations": {"CostCenter": "42"}}` - DefinedTags map[string]map[string]interface{} `mandatory:"false" json:"definedTags"` - - // The system tags associated with this resource, if any. The system tags are set by Oracle cloud infrastructure services. Each key is predefined and scoped to namespaces. - // For more information, see Resource Tags (https://docs.cloud.oracle.com/iaas/Content/General/Concepts/resourcetags.htm). - // Example: `{orcl-cloud: {free-tier-retain: true}}` - SystemTags map[string]map[string]interface{} `mandatory:"false" json:"systemTags"` - - ReplicationCredentials *AssetSourceCredentials `mandatory:"false" json:"replicationCredentials"` - - // Flag indicating whether historical metrics are collected for assets, originating from this asset source. - AreHistoricalMetricsCollected *bool `mandatory:"false" json:"areHistoricalMetricsCollected"` - - // Flag indicating whether real-time metrics are collected for assets, originating from this asset source. - AreRealtimeMetricsCollected *bool `mandatory:"false" json:"areRealtimeMetricsCollected"` - - // Flag indicating whether cost data collection is enabled for assets, originating from this asset source. - IsCostInformationCollected *bool `mandatory:"false" json:"isCostInformationCollected"` -} - -// GetDisplayName returns DisplayName -func (m CreateAwsAssetSourceDetails) GetDisplayName() *string { - return m.DisplayName -} - -// GetCompartmentId returns CompartmentId -func (m CreateAwsAssetSourceDetails) GetCompartmentId() *string { - return m.CompartmentId -} - -// GetEnvironmentId returns EnvironmentId -func (m CreateAwsAssetSourceDetails) GetEnvironmentId() *string { - return m.EnvironmentId -} - -// GetInventoryId returns InventoryId -func (m CreateAwsAssetSourceDetails) GetInventoryId() *string { - return m.InventoryId -} - -// GetAssetsCompartmentId returns AssetsCompartmentId -func (m CreateAwsAssetSourceDetails) GetAssetsCompartmentId() *string { - return m.AssetsCompartmentId -} - -// GetDiscoveryScheduleId returns DiscoveryScheduleId -func (m CreateAwsAssetSourceDetails) GetDiscoveryScheduleId() *string { - return m.DiscoveryScheduleId -} - -// GetFreeformTags returns FreeformTags -func (m CreateAwsAssetSourceDetails) GetFreeformTags() map[string]string { - return m.FreeformTags -} - -// GetDefinedTags returns DefinedTags -func (m CreateAwsAssetSourceDetails) GetDefinedTags() map[string]map[string]interface{} { - return m.DefinedTags -} - -// GetSystemTags returns SystemTags -func (m CreateAwsAssetSourceDetails) GetSystemTags() map[string]map[string]interface{} { - return m.SystemTags -} - -func (m CreateAwsAssetSourceDetails) String() string { - return common.PointerString(m) -} - -// ValidateEnumValue returns an error when providing an unsupported enum value -// This function is being called during constructing API request process -// Not recommended for calling this function directly -func (m CreateAwsAssetSourceDetails) ValidateEnumValue() (bool, error) { - errMessage := []string{} - - if len(errMessage) > 0 { - return true, fmt.Errorf(strings.Join(errMessage, "\n")) - } - return false, nil -} - -// MarshalJSON marshals to json representation -func (m CreateAwsAssetSourceDetails) MarshalJSON() (buff []byte, e error) { - type MarshalTypeCreateAwsAssetSourceDetails CreateAwsAssetSourceDetails - s := struct { - DiscriminatorParam string `json:"type"` - MarshalTypeCreateAwsAssetSourceDetails - }{ - "AWS", - (MarshalTypeCreateAwsAssetSourceDetails)(m), - } - - return json.Marshal(&s) -} diff --git a/vendor/github.com/oracle/oci-go-sdk/v65/cloudbridge/create_aws_ebs_asset_details.go b/vendor/github.com/oracle/oci-go-sdk/v65/cloudbridge/create_aws_ebs_asset_details.go deleted file mode 100644 index e770cc81d3..0000000000 --- a/vendor/github.com/oracle/oci-go-sdk/v65/cloudbridge/create_aws_ebs_asset_details.go +++ /dev/null @@ -1,121 +0,0 @@ -// Copyright (c) 2016, 2018, 2024, Oracle and/or its affiliates. All rights reserved. -// This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. -// Code generated. DO NOT EDIT. - -// Oracle Cloud Bridge API -// -// API for Oracle Cloud Bridge service. -// - -package cloudbridge - -import ( - "encoding/json" - "fmt" - "github.com/oracle/oci-go-sdk/v65/common" - "strings" -) - -// CreateAwsEbsAssetDetails Create AWS EBS type of asset. -type CreateAwsEbsAssetDetails struct { - - // Inventory ID to which an asset belongs. - InventoryId *string `mandatory:"true" json:"inventoryId"` - - // The OCID of the compartment that the asset belongs to. - CompartmentId *string `mandatory:"true" json:"compartmentId"` - - // The source key to which the asset belongs. - SourceKey *string `mandatory:"true" json:"sourceKey"` - - // The key of the asset from the external environment. - ExternalAssetKey *string `mandatory:"true" json:"externalAssetKey"` - - AwsEbs *AwsEbsProperties `mandatory:"true" json:"awsEbs"` - - // Asset display name. - DisplayName *string `mandatory:"false" json:"displayName"` - - // List of asset source OCID. - AssetSourceIds []string `mandatory:"false" json:"assetSourceIds"` - - // The freeform tags associated with this resource, if any. Each tag is a simple key-value pair with no - // predefined name, type, or namespace/scope. For more information, see Resource Tags (https://docs.cloud.oracle.com/iaas/Content/General/Concepts/resourcetags.htm). - // Example: `{"Department": "Finance"}` - FreeformTags map[string]string `mandatory:"false" json:"freeformTags"` - - // The defined tags associated with this resource, if any. Each key is predefined and scoped to namespaces. - // For more information, see Resource Tags (https://docs.cloud.oracle.com/iaas/Content/General/Concepts/resourcetags.htm). - // Example: `{"Operations": {"CostCenter": "42"}}` - DefinedTags map[string]map[string]interface{} `mandatory:"false" json:"definedTags"` -} - -// GetDisplayName returns DisplayName -func (m CreateAwsEbsAssetDetails) GetDisplayName() *string { - return m.DisplayName -} - -// GetInventoryId returns InventoryId -func (m CreateAwsEbsAssetDetails) GetInventoryId() *string { - return m.InventoryId -} - -// GetCompartmentId returns CompartmentId -func (m CreateAwsEbsAssetDetails) GetCompartmentId() *string { - return m.CompartmentId -} - -// GetSourceKey returns SourceKey -func (m CreateAwsEbsAssetDetails) GetSourceKey() *string { - return m.SourceKey -} - -// GetExternalAssetKey returns ExternalAssetKey -func (m CreateAwsEbsAssetDetails) GetExternalAssetKey() *string { - return m.ExternalAssetKey -} - -// GetAssetSourceIds returns AssetSourceIds -func (m CreateAwsEbsAssetDetails) GetAssetSourceIds() []string { - return m.AssetSourceIds -} - -// GetFreeformTags returns FreeformTags -func (m CreateAwsEbsAssetDetails) GetFreeformTags() map[string]string { - return m.FreeformTags -} - -// GetDefinedTags returns DefinedTags -func (m CreateAwsEbsAssetDetails) GetDefinedTags() map[string]map[string]interface{} { - return m.DefinedTags -} - -func (m CreateAwsEbsAssetDetails) String() string { - return common.PointerString(m) -} - -// ValidateEnumValue returns an error when providing an unsupported enum value -// This function is being called during constructing API request process -// Not recommended for calling this function directly -func (m CreateAwsEbsAssetDetails) ValidateEnumValue() (bool, error) { - errMessage := []string{} - - if len(errMessage) > 0 { - return true, fmt.Errorf(strings.Join(errMessage, "\n")) - } - return false, nil -} - -// MarshalJSON marshals to json representation -func (m CreateAwsEbsAssetDetails) MarshalJSON() (buff []byte, e error) { - type MarshalTypeCreateAwsEbsAssetDetails CreateAwsEbsAssetDetails - s := struct { - DiscriminatorParam string `json:"assetType"` - MarshalTypeCreateAwsEbsAssetDetails - }{ - "AWS_EBS", - (MarshalTypeCreateAwsEbsAssetDetails)(m), - } - - return json.Marshal(&s) -} diff --git a/vendor/github.com/oracle/oci-go-sdk/v65/cloudbridge/create_aws_ec2_asset_details.go b/vendor/github.com/oracle/oci-go-sdk/v65/cloudbridge/create_aws_ec2_asset_details.go deleted file mode 100644 index 5f037132ca..0000000000 --- a/vendor/github.com/oracle/oci-go-sdk/v65/cloudbridge/create_aws_ec2_asset_details.go +++ /dev/null @@ -1,129 +0,0 @@ -// Copyright (c) 2016, 2018, 2024, Oracle and/or its affiliates. All rights reserved. -// This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. -// Code generated. DO NOT EDIT. - -// Oracle Cloud Bridge API -// -// API for Oracle Cloud Bridge service. -// - -package cloudbridge - -import ( - "encoding/json" - "fmt" - "github.com/oracle/oci-go-sdk/v65/common" - "strings" -) - -// CreateAwsEc2AssetDetails Create AWS EC2 VM type of asset. -type CreateAwsEc2AssetDetails struct { - - // Inventory ID to which an asset belongs. - InventoryId *string `mandatory:"true" json:"inventoryId"` - - // The OCID of the compartment that the asset belongs to. - CompartmentId *string `mandatory:"true" json:"compartmentId"` - - // The source key to which the asset belongs. - SourceKey *string `mandatory:"true" json:"sourceKey"` - - // The key of the asset from the external environment. - ExternalAssetKey *string `mandatory:"true" json:"externalAssetKey"` - - Compute *ComputeProperties `mandatory:"true" json:"compute"` - - Vm *VmProperties `mandatory:"true" json:"vm"` - - AwsEc2 *AwsEc2Properties `mandatory:"true" json:"awsEc2"` - - // Asset display name. - DisplayName *string `mandatory:"false" json:"displayName"` - - // List of asset source OCID. - AssetSourceIds []string `mandatory:"false" json:"assetSourceIds"` - - // The freeform tags associated with this resource, if any. Each tag is a simple key-value pair with no - // predefined name, type, or namespace/scope. For more information, see Resource Tags (https://docs.cloud.oracle.com/iaas/Content/General/Concepts/resourcetags.htm). - // Example: `{"Department": "Finance"}` - FreeformTags map[string]string `mandatory:"false" json:"freeformTags"` - - // The defined tags associated with this resource, if any. Each key is predefined and scoped to namespaces. - // For more information, see Resource Tags (https://docs.cloud.oracle.com/iaas/Content/General/Concepts/resourcetags.htm). - // Example: `{"Operations": {"CostCenter": "42"}}` - DefinedTags map[string]map[string]interface{} `mandatory:"false" json:"definedTags"` - - AwsEc2Cost *MonthlyCostSummary `mandatory:"false" json:"awsEc2Cost"` - - AttachedEbsVolumesCost *MonthlyCostSummary `mandatory:"false" json:"attachedEbsVolumesCost"` -} - -// GetDisplayName returns DisplayName -func (m CreateAwsEc2AssetDetails) GetDisplayName() *string { - return m.DisplayName -} - -// GetInventoryId returns InventoryId -func (m CreateAwsEc2AssetDetails) GetInventoryId() *string { - return m.InventoryId -} - -// GetCompartmentId returns CompartmentId -func (m CreateAwsEc2AssetDetails) GetCompartmentId() *string { - return m.CompartmentId -} - -// GetSourceKey returns SourceKey -func (m CreateAwsEc2AssetDetails) GetSourceKey() *string { - return m.SourceKey -} - -// GetExternalAssetKey returns ExternalAssetKey -func (m CreateAwsEc2AssetDetails) GetExternalAssetKey() *string { - return m.ExternalAssetKey -} - -// GetAssetSourceIds returns AssetSourceIds -func (m CreateAwsEc2AssetDetails) GetAssetSourceIds() []string { - return m.AssetSourceIds -} - -// GetFreeformTags returns FreeformTags -func (m CreateAwsEc2AssetDetails) GetFreeformTags() map[string]string { - return m.FreeformTags -} - -// GetDefinedTags returns DefinedTags -func (m CreateAwsEc2AssetDetails) GetDefinedTags() map[string]map[string]interface{} { - return m.DefinedTags -} - -func (m CreateAwsEc2AssetDetails) String() string { - return common.PointerString(m) -} - -// ValidateEnumValue returns an error when providing an unsupported enum value -// This function is being called during constructing API request process -// Not recommended for calling this function directly -func (m CreateAwsEc2AssetDetails) ValidateEnumValue() (bool, error) { - errMessage := []string{} - - if len(errMessage) > 0 { - return true, fmt.Errorf(strings.Join(errMessage, "\n")) - } - return false, nil -} - -// MarshalJSON marshals to json representation -func (m CreateAwsEc2AssetDetails) MarshalJSON() (buff []byte, e error) { - type MarshalTypeCreateAwsEc2AssetDetails CreateAwsEc2AssetDetails - s := struct { - DiscriminatorParam string `json:"assetType"` - MarshalTypeCreateAwsEc2AssetDetails - }{ - "AWS_EC2", - (MarshalTypeCreateAwsEc2AssetDetails)(m), - } - - return json.Marshal(&s) -} diff --git a/vendor/github.com/oracle/oci-go-sdk/v65/cloudbridge/group_identifier.go b/vendor/github.com/oracle/oci-go-sdk/v65/cloudbridge/group_identifier.go deleted file mode 100644 index 5f6cdc984d..0000000000 --- a/vendor/github.com/oracle/oci-go-sdk/v65/cloudbridge/group_identifier.go +++ /dev/null @@ -1,42 +0,0 @@ -// Copyright (c) 2016, 2018, 2024, Oracle and/or its affiliates. All rights reserved. -// This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. -// Code generated. DO NOT EDIT. - -// Oracle Cloud Bridge API -// -// API for Oracle Cloud Bridge service. -// - -package cloudbridge - -import ( - "fmt" - "github.com/oracle/oci-go-sdk/v65/common" - "strings" -) - -// GroupIdentifier Describes a security group. -type GroupIdentifier struct { - - // The ID of the security group. - GroupKey *string `mandatory:"false" json:"groupKey"` - - // The name of the security group. - GroupName *string `mandatory:"false" json:"groupName"` -} - -func (m GroupIdentifier) String() string { - return common.PointerString(m) -} - -// ValidateEnumValue returns an error when providing an unsupported enum value -// This function is being called during constructing API request process -// Not recommended for calling this function directly -func (m GroupIdentifier) ValidateEnumValue() (bool, error) { - errMessage := []string{} - - if len(errMessage) > 0 { - return true, fmt.Errorf(strings.Join(errMessage, "\n")) - } - return false, nil -} diff --git a/vendor/github.com/oracle/oci-go-sdk/v65/cloudbridge/instance_network_interface.go b/vendor/github.com/oracle/oci-go-sdk/v65/cloudbridge/instance_network_interface.go deleted file mode 100644 index d081eae117..0000000000 --- a/vendor/github.com/oracle/oci-go-sdk/v65/cloudbridge/instance_network_interface.go +++ /dev/null @@ -1,78 +0,0 @@ -// Copyright (c) 2016, 2018, 2024, Oracle and/or its affiliates. All rights reserved. -// This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. -// Code generated. DO NOT EDIT. - -// Oracle Cloud Bridge API -// -// API for Oracle Cloud Bridge service. -// - -package cloudbridge - -import ( - "fmt" - "github.com/oracle/oci-go-sdk/v65/common" - "strings" -) - -// InstanceNetworkInterface Describes a network interface. -type InstanceNetworkInterface struct { - Association *InstanceNetworkInterfaceAssociation `mandatory:"false" json:"association"` - - Attachment *InstanceNetworkInterfaceAttachment `mandatory:"false" json:"attachment"` - - // The description. - Description *string `mandatory:"false" json:"description"` - - // The security groups. - SecurityGroups []GroupIdentifier `mandatory:"false" json:"securityGroups"` - - // The type of network interface. - InterfaceType *string `mandatory:"false" json:"interfaceType"` - - // The IPv4 delegated prefixes that are assigned to the network interface. - Ipv4Prefixes []string `mandatory:"false" json:"ipv4Prefixes"` - - // The IPv6 addresses associated with the network interface. - Ipv6Addresses []string `mandatory:"false" json:"ipv6Addresses"` - - // The IPv6 delegated prefixes that are assigned to the network interface. - Ipv6Prefixes []string `mandatory:"false" json:"ipv6Prefixes"` - - // The MAC address. - MacAddress *string `mandatory:"false" json:"macAddress"` - - // The ID of the network interface. - NetworkInterfaceKey *string `mandatory:"false" json:"networkInterfaceKey"` - - // The ID of the AWS account that created the network interface. - OwnerKey *string `mandatory:"false" json:"ownerKey"` - - // The private IPv4 addresses associated with the network interface. - PrivateIpAddresses []InstancePrivateIpAddress `mandatory:"false" json:"privateIpAddresses"` - - // Indicates whether source/destination checking is enabled. - IsSourceDestCheck *bool `mandatory:"false" json:"isSourceDestCheck"` - - // The status of the network interface. - Status *string `mandatory:"false" json:"status"` - - // The ID of the subnet. - SubnetKey *string `mandatory:"false" json:"subnetKey"` -} - -func (m InstanceNetworkInterface) String() string { - return common.PointerString(m) -} - -// ValidateEnumValue returns an error when providing an unsupported enum value -// This function is being called during constructing API request process -// Not recommended for calling this function directly -func (m InstanceNetworkInterface) ValidateEnumValue() (bool, error) { - errMessage := []string{} - - if len(errMessage) > 0 { - return true, fmt.Errorf(strings.Join(errMessage, "\n")) - } - return false, nil -} diff --git a/vendor/github.com/oracle/oci-go-sdk/v65/cloudbridge/instance_network_interface_association.go b/vendor/github.com/oracle/oci-go-sdk/v65/cloudbridge/instance_network_interface_association.go deleted file mode 100644 index 5914e83db8..0000000000 --- a/vendor/github.com/oracle/oci-go-sdk/v65/cloudbridge/instance_network_interface_association.go +++ /dev/null @@ -1,51 +0,0 @@ -// Copyright (c) 2016, 2018, 2024, Oracle and/or its affiliates. All rights reserved. -// This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. -// Code generated. DO NOT EDIT. - -// Oracle Cloud Bridge API -// -// API for Oracle Cloud Bridge service. -// - -package cloudbridge - -import ( - "fmt" - "github.com/oracle/oci-go-sdk/v65/common" - "strings" -) - -// InstanceNetworkInterfaceAssociation Describes association information for an Elastic IP address (IPv4). -type InstanceNetworkInterfaceAssociation struct { - - // The carrier IP address associated with the network interface. - CarrierIp *string `mandatory:"false" json:"carrierIp"` - - // The customer-owned IP address associated with the network interface. - CustomerOwnedIp *string `mandatory:"false" json:"customerOwnedIp"` - - // The ID of the owner of the Elastic IP address. - IpOwnerKey *string `mandatory:"false" json:"ipOwnerKey"` - - // The public DNS name. - PublicDnsName *string `mandatory:"false" json:"publicDnsName"` - - // The public IP address or Elastic IP address bound to the network interface. - PublicIp *string `mandatory:"false" json:"publicIp"` -} - -func (m InstanceNetworkInterfaceAssociation) String() string { - return common.PointerString(m) -} - -// ValidateEnumValue returns an error when providing an unsupported enum value -// This function is being called during constructing API request process -// Not recommended for calling this function directly -func (m InstanceNetworkInterfaceAssociation) ValidateEnumValue() (bool, error) { - errMessage := []string{} - - if len(errMessage) > 0 { - return true, fmt.Errorf(strings.Join(errMessage, "\n")) - } - return false, nil -} diff --git a/vendor/github.com/oracle/oci-go-sdk/v65/cloudbridge/instance_network_interface_attachment.go b/vendor/github.com/oracle/oci-go-sdk/v65/cloudbridge/instance_network_interface_attachment.go deleted file mode 100644 index c96dd9e223..0000000000 --- a/vendor/github.com/oracle/oci-go-sdk/v65/cloudbridge/instance_network_interface_attachment.go +++ /dev/null @@ -1,54 +0,0 @@ -// Copyright (c) 2016, 2018, 2024, Oracle and/or its affiliates. All rights reserved. -// This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. -// Code generated. DO NOT EDIT. - -// Oracle Cloud Bridge API -// -// API for Oracle Cloud Bridge service. -// - -package cloudbridge - -import ( - "fmt" - "github.com/oracle/oci-go-sdk/v65/common" - "strings" -) - -// InstanceNetworkInterfaceAttachment Describes a network interface attachment. -type InstanceNetworkInterfaceAttachment struct { - - // The ID of the network interface attachment. - AttachmentKey *string `mandatory:"false" json:"attachmentKey"` - - // The timestamp when the attachment initiated. - TimeAttach *common.SDKTime `mandatory:"false" json:"timeAttach"` - - // Indicates whether the network interface is deleted when the instance is terminated. - IsDeleteOnTermination *bool `mandatory:"false" json:"isDeleteOnTermination"` - - // The index of the device on the instance for the network interface attachment. - DeviceIndex *int `mandatory:"false" json:"deviceIndex"` - - // The index of the network card. - NetworkCardIndex *int `mandatory:"false" json:"networkCardIndex"` - - // The attachment state. - Status *string `mandatory:"false" json:"status"` -} - -func (m InstanceNetworkInterfaceAttachment) String() string { - return common.PointerString(m) -} - -// ValidateEnumValue returns an error when providing an unsupported enum value -// This function is being called during constructing API request process -// Not recommended for calling this function directly -func (m InstanceNetworkInterfaceAttachment) ValidateEnumValue() (bool, error) { - errMessage := []string{} - - if len(errMessage) > 0 { - return true, fmt.Errorf(strings.Join(errMessage, "\n")) - } - return false, nil -} diff --git a/vendor/github.com/oracle/oci-go-sdk/v65/cloudbridge/instance_private_ip_address.go b/vendor/github.com/oracle/oci-go-sdk/v65/cloudbridge/instance_private_ip_address.go deleted file mode 100644 index d7bca8576c..0000000000 --- a/vendor/github.com/oracle/oci-go-sdk/v65/cloudbridge/instance_private_ip_address.go +++ /dev/null @@ -1,46 +0,0 @@ -// Copyright (c) 2016, 2018, 2024, Oracle and/or its affiliates. All rights reserved. -// This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. -// Code generated. DO NOT EDIT. - -// Oracle Cloud Bridge API -// -// API for Oracle Cloud Bridge service. -// - -package cloudbridge - -import ( - "fmt" - "github.com/oracle/oci-go-sdk/v65/common" - "strings" -) - -// InstancePrivateIpAddress Describes a private IPv4 address. -type InstancePrivateIpAddress struct { - Association *InstanceNetworkInterfaceAssociation `mandatory:"false" json:"association"` - - // Indicates whether this IPv4 address is the primary private IP address of the network interface. - IsPrimary *bool `mandatory:"false" json:"isPrimary"` - - // The private IPv4 DNS name. - PrivateDnsName *string `mandatory:"false" json:"privateDnsName"` - - // The private IPv4 address of the network interface. - PrivateIpAddress *string `mandatory:"false" json:"privateIpAddress"` -} - -func (m InstancePrivateIpAddress) String() string { - return common.PointerString(m) -} - -// ValidateEnumValue returns an error when providing an unsupported enum value -// This function is being called during constructing API request process -// Not recommended for calling this function directly -func (m InstancePrivateIpAddress) ValidateEnumValue() (bool, error) { - errMessage := []string{} - - if len(errMessage) > 0 { - return true, fmt.Errorf(strings.Join(errMessage, "\n")) - } - return false, nil -} diff --git a/vendor/github.com/oracle/oci-go-sdk/v65/cloudbridge/instance_state.go b/vendor/github.com/oracle/oci-go-sdk/v65/cloudbridge/instance_state.go deleted file mode 100644 index 3686f7f462..0000000000 --- a/vendor/github.com/oracle/oci-go-sdk/v65/cloudbridge/instance_state.go +++ /dev/null @@ -1,42 +0,0 @@ -// Copyright (c) 2016, 2018, 2024, Oracle and/or its affiliates. All rights reserved. -// This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. -// Code generated. DO NOT EDIT. - -// Oracle Cloud Bridge API -// -// API for Oracle Cloud Bridge service. -// - -package cloudbridge - -import ( - "fmt" - "github.com/oracle/oci-go-sdk/v65/common" - "strings" -) - -// InstanceState Describes the current state of an instance. -type InstanceState struct { - - // The state of the instance as a 16-bit unsigned integer. - Code *int `mandatory:"false" json:"code"` - - // The current state of the instance. - Name *string `mandatory:"false" json:"name"` -} - -func (m InstanceState) String() string { - return common.PointerString(m) -} - -// ValidateEnumValue returns an error when providing an unsupported enum value -// This function is being called during constructing API request process -// Not recommended for calling this function directly -func (m InstanceState) ValidateEnumValue() (bool, error) { - errMessage := []string{} - - if len(errMessage) > 0 { - return true, fmt.Errorf(strings.Join(errMessage, "\n")) - } - return false, nil -} diff --git a/vendor/github.com/oracle/oci-go-sdk/v65/cloudbridge/list_supported_cloud_regions_request_response.go b/vendor/github.com/oracle/oci-go-sdk/v65/cloudbridge/list_supported_cloud_regions_request_response.go deleted file mode 100644 index 7ba5887aaa..0000000000 --- a/vendor/github.com/oracle/oci-go-sdk/v65/cloudbridge/list_supported_cloud_regions_request_response.go +++ /dev/null @@ -1,241 +0,0 @@ -// Copyright (c) 2016, 2018, 2024, Oracle and/or its affiliates. All rights reserved. -// This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. -// Code generated. DO NOT EDIT. - -package cloudbridge - -import ( - "fmt" - "github.com/oracle/oci-go-sdk/v65/common" - "net/http" - "strings" -) - -// ListSupportedCloudRegionsRequest wrapper for the ListSupportedCloudRegions operation -// -// # See also -// -// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/cloudbridge/ListSupportedCloudRegions.go.html to see an example of how to use ListSupportedCloudRegionsRequest. -type ListSupportedCloudRegionsRequest struct { - - // The asset source type. - AssetSourceType ListSupportedCloudRegionsAssetSourceTypeEnum `mandatory:"false" contributesTo:"query" name:"assetSourceType" omitEmpty:"true"` - - // A filter to return only supported cloud regions which name contains given nameContains as sub-string. - NameContains *string `mandatory:"false" contributesTo:"query" name:"nameContains"` - - // The field to sort by. Only one sort order may be provided. By default, name is in ascending order. - SortBy ListSupportedCloudRegionsSortByEnum `mandatory:"false" contributesTo:"query" name:"sortBy" omitEmpty:"true"` - - // The sort order to use, either 'ASC' or 'DESC'. - SortOrder ListSupportedCloudRegionsSortOrderEnum `mandatory:"false" contributesTo:"query" name:"sortOrder" omitEmpty:"true"` - - // The maximum number of items to return. - Limit *int `mandatory:"false" contributesTo:"query" name:"limit"` - - // A token representing the position at which to start retrieving results. This must come from the `opc-next-page` header field of a previous response. - Page *string `mandatory:"false" contributesTo:"query" name:"page"` - - // The client request ID for tracing. - OpcRequestId *string `mandatory:"false" contributesTo:"header" name:"opc-request-id"` - - // Metadata about the request. This information will not be transmitted to the service, but - // represents information that the SDK will consume to drive retry behavior. - RequestMetadata common.RequestMetadata -} - -func (request ListSupportedCloudRegionsRequest) String() string { - return common.PointerString(request) -} - -// HTTPRequest implements the OCIRequest interface -func (request ListSupportedCloudRegionsRequest) HTTPRequest(method, path string, binaryRequestBody *common.OCIReadSeekCloser, extraHeaders map[string]string) (http.Request, error) { - - _, err := request.ValidateEnumValue() - if err != nil { - return http.Request{}, err - } - return common.MakeDefaultHTTPRequestWithTaggedStructAndExtraHeaders(method, path, request, extraHeaders) -} - -// BinaryRequestBody implements the OCIRequest interface -func (request ListSupportedCloudRegionsRequest) BinaryRequestBody() (*common.OCIReadSeekCloser, bool) { - - return nil, false - -} - -// RetryPolicy implements the OCIRetryableRequest interface. This retrieves the specified retry policy. -func (request ListSupportedCloudRegionsRequest) RetryPolicy() *common.RetryPolicy { - return request.RequestMetadata.RetryPolicy -} - -// ValidateEnumValue returns an error when providing an unsupported enum value -// This function is being called during constructing API request process -// Not recommended for calling this function directly -func (request ListSupportedCloudRegionsRequest) ValidateEnumValue() (bool, error) { - errMessage := []string{} - if _, ok := GetMappingListSupportedCloudRegionsAssetSourceTypeEnum(string(request.AssetSourceType)); !ok && request.AssetSourceType != "" { - errMessage = append(errMessage, fmt.Sprintf("unsupported enum value for AssetSourceType: %s. Supported values are: %s.", request.AssetSourceType, strings.Join(GetListSupportedCloudRegionsAssetSourceTypeEnumStringValues(), ","))) - } - if _, ok := GetMappingListSupportedCloudRegionsSortByEnum(string(request.SortBy)); !ok && request.SortBy != "" { - errMessage = append(errMessage, fmt.Sprintf("unsupported enum value for SortBy: %s. Supported values are: %s.", request.SortBy, strings.Join(GetListSupportedCloudRegionsSortByEnumStringValues(), ","))) - } - if _, ok := GetMappingListSupportedCloudRegionsSortOrderEnum(string(request.SortOrder)); !ok && request.SortOrder != "" { - errMessage = append(errMessage, fmt.Sprintf("unsupported enum value for SortOrder: %s. Supported values are: %s.", request.SortOrder, strings.Join(GetListSupportedCloudRegionsSortOrderEnumStringValues(), ","))) - } - if len(errMessage) > 0 { - return true, fmt.Errorf(strings.Join(errMessage, "\n")) - } - return false, nil -} - -// ListSupportedCloudRegionsResponse wrapper for the ListSupportedCloudRegions operation -type ListSupportedCloudRegionsResponse struct { - - // The underlying http response - RawResponse *http.Response - - // A list of SupportedCloudRegionCollection instances - SupportedCloudRegionCollection `presentIn:"body"` - - // Unique Oracle-assigned identifier for the request. If you need to contact - // Oracle about a particular request, please provide the request ID. - OpcRequestId *string `presentIn:"header" name:"opc-request-id"` - - // For pagination of a list of items. When paging through a list, if this header appears in the response, - // then a partial list might have been returned. Include this value as the `page` parameter for the - // subsequent GET request to get the next batch of items. - OpcNextPage *string `presentIn:"header" name:"opc-next-page"` -} - -func (response ListSupportedCloudRegionsResponse) String() string { - return common.PointerString(response) -} - -// HTTPResponse implements the OCIResponse interface -func (response ListSupportedCloudRegionsResponse) HTTPResponse() *http.Response { - return response.RawResponse -} - -// ListSupportedCloudRegionsAssetSourceTypeEnum Enum with underlying type: string -type ListSupportedCloudRegionsAssetSourceTypeEnum string - -// Set of constants representing the allowable values for ListSupportedCloudRegionsAssetSourceTypeEnum -const ( - ListSupportedCloudRegionsAssetSourceTypeVmware ListSupportedCloudRegionsAssetSourceTypeEnum = "VMWARE" - ListSupportedCloudRegionsAssetSourceTypeAws ListSupportedCloudRegionsAssetSourceTypeEnum = "AWS" -) - -var mappingListSupportedCloudRegionsAssetSourceTypeEnum = map[string]ListSupportedCloudRegionsAssetSourceTypeEnum{ - "VMWARE": ListSupportedCloudRegionsAssetSourceTypeVmware, - "AWS": ListSupportedCloudRegionsAssetSourceTypeAws, -} - -var mappingListSupportedCloudRegionsAssetSourceTypeEnumLowerCase = map[string]ListSupportedCloudRegionsAssetSourceTypeEnum{ - "vmware": ListSupportedCloudRegionsAssetSourceTypeVmware, - "aws": ListSupportedCloudRegionsAssetSourceTypeAws, -} - -// GetListSupportedCloudRegionsAssetSourceTypeEnumValues Enumerates the set of values for ListSupportedCloudRegionsAssetSourceTypeEnum -func GetListSupportedCloudRegionsAssetSourceTypeEnumValues() []ListSupportedCloudRegionsAssetSourceTypeEnum { - values := make([]ListSupportedCloudRegionsAssetSourceTypeEnum, 0) - for _, v := range mappingListSupportedCloudRegionsAssetSourceTypeEnum { - values = append(values, v) - } - return values -} - -// GetListSupportedCloudRegionsAssetSourceTypeEnumStringValues Enumerates the set of values in String for ListSupportedCloudRegionsAssetSourceTypeEnum -func GetListSupportedCloudRegionsAssetSourceTypeEnumStringValues() []string { - return []string{ - "VMWARE", - "AWS", - } -} - -// GetMappingListSupportedCloudRegionsAssetSourceTypeEnum performs case Insensitive comparison on enum value and return the desired enum -func GetMappingListSupportedCloudRegionsAssetSourceTypeEnum(val string) (ListSupportedCloudRegionsAssetSourceTypeEnum, bool) { - enum, ok := mappingListSupportedCloudRegionsAssetSourceTypeEnumLowerCase[strings.ToLower(val)] - return enum, ok -} - -// ListSupportedCloudRegionsSortByEnum Enum with underlying type: string -type ListSupportedCloudRegionsSortByEnum string - -// Set of constants representing the allowable values for ListSupportedCloudRegionsSortByEnum -const ( - ListSupportedCloudRegionsSortByName ListSupportedCloudRegionsSortByEnum = "name" -) - -var mappingListSupportedCloudRegionsSortByEnum = map[string]ListSupportedCloudRegionsSortByEnum{ - "name": ListSupportedCloudRegionsSortByName, -} - -var mappingListSupportedCloudRegionsSortByEnumLowerCase = map[string]ListSupportedCloudRegionsSortByEnum{ - "name": ListSupportedCloudRegionsSortByName, -} - -// GetListSupportedCloudRegionsSortByEnumValues Enumerates the set of values for ListSupportedCloudRegionsSortByEnum -func GetListSupportedCloudRegionsSortByEnumValues() []ListSupportedCloudRegionsSortByEnum { - values := make([]ListSupportedCloudRegionsSortByEnum, 0) - for _, v := range mappingListSupportedCloudRegionsSortByEnum { - values = append(values, v) - } - return values -} - -// GetListSupportedCloudRegionsSortByEnumStringValues Enumerates the set of values in String for ListSupportedCloudRegionsSortByEnum -func GetListSupportedCloudRegionsSortByEnumStringValues() []string { - return []string{ - "name", - } -} - -// GetMappingListSupportedCloudRegionsSortByEnum performs case Insensitive comparison on enum value and return the desired enum -func GetMappingListSupportedCloudRegionsSortByEnum(val string) (ListSupportedCloudRegionsSortByEnum, bool) { - enum, ok := mappingListSupportedCloudRegionsSortByEnumLowerCase[strings.ToLower(val)] - return enum, ok -} - -// ListSupportedCloudRegionsSortOrderEnum Enum with underlying type: string -type ListSupportedCloudRegionsSortOrderEnum string - -// Set of constants representing the allowable values for ListSupportedCloudRegionsSortOrderEnum -const ( - ListSupportedCloudRegionsSortOrderAsc ListSupportedCloudRegionsSortOrderEnum = "ASC" - ListSupportedCloudRegionsSortOrderDesc ListSupportedCloudRegionsSortOrderEnum = "DESC" -) - -var mappingListSupportedCloudRegionsSortOrderEnum = map[string]ListSupportedCloudRegionsSortOrderEnum{ - "ASC": ListSupportedCloudRegionsSortOrderAsc, - "DESC": ListSupportedCloudRegionsSortOrderDesc, -} - -var mappingListSupportedCloudRegionsSortOrderEnumLowerCase = map[string]ListSupportedCloudRegionsSortOrderEnum{ - "asc": ListSupportedCloudRegionsSortOrderAsc, - "desc": ListSupportedCloudRegionsSortOrderDesc, -} - -// GetListSupportedCloudRegionsSortOrderEnumValues Enumerates the set of values for ListSupportedCloudRegionsSortOrderEnum -func GetListSupportedCloudRegionsSortOrderEnumValues() []ListSupportedCloudRegionsSortOrderEnum { - values := make([]ListSupportedCloudRegionsSortOrderEnum, 0) - for _, v := range mappingListSupportedCloudRegionsSortOrderEnum { - values = append(values, v) - } - return values -} - -// GetListSupportedCloudRegionsSortOrderEnumStringValues Enumerates the set of values in String for ListSupportedCloudRegionsSortOrderEnum -func GetListSupportedCloudRegionsSortOrderEnumStringValues() []string { - return []string{ - "ASC", - "DESC", - } -} - -// GetMappingListSupportedCloudRegionsSortOrderEnum performs case Insensitive comparison on enum value and return the desired enum -func GetMappingListSupportedCloudRegionsSortOrderEnum(val string) (ListSupportedCloudRegionsSortOrderEnum, bool) { - enum, ok := mappingListSupportedCloudRegionsSortOrderEnumLowerCase[strings.ToLower(val)] - return enum, ok -} diff --git a/vendor/github.com/oracle/oci-go-sdk/v65/cloudbridge/monthly_cost_summary.go b/vendor/github.com/oracle/oci-go-sdk/v65/cloudbridge/monthly_cost_summary.go deleted file mode 100644 index 0865acd6c2..0000000000 --- a/vendor/github.com/oracle/oci-go-sdk/v65/cloudbridge/monthly_cost_summary.go +++ /dev/null @@ -1,42 +0,0 @@ -// Copyright (c) 2016, 2018, 2024, Oracle and/or its affiliates. All rights reserved. -// This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. -// Code generated. DO NOT EDIT. - -// Oracle Cloud Bridge API -// -// API for Oracle Cloud Bridge service. -// - -package cloudbridge - -import ( - "fmt" - "github.com/oracle/oci-go-sdk/v65/common" - "strings" -) - -// MonthlyCostSummary Cost information for monthly maintenance. -type MonthlyCostSummary struct { - - // Monthly costs for maintenance of this asset. - Amount *float64 `mandatory:"true" json:"amount"` - - // Currency code as defined by ISO-4217. - CurrencyCode *string `mandatory:"true" json:"currencyCode"` -} - -func (m MonthlyCostSummary) String() string { - return common.PointerString(m) -} - -// ValidateEnumValue returns an error when providing an unsupported enum value -// This function is being called during constructing API request process -// Not recommended for calling this function directly -func (m MonthlyCostSummary) ValidateEnumValue() (bool, error) { - errMessage := []string{} - - if len(errMessage) > 0 { - return true, fmt.Errorf(strings.Join(errMessage, "\n")) - } - return false, nil -} diff --git a/vendor/github.com/oracle/oci-go-sdk/v65/cloudbridge/placement.go b/vendor/github.com/oracle/oci-go-sdk/v65/cloudbridge/placement.go deleted file mode 100644 index a0eeeef07b..0000000000 --- a/vendor/github.com/oracle/oci-go-sdk/v65/cloudbridge/placement.go +++ /dev/null @@ -1,60 +0,0 @@ -// Copyright (c) 2016, 2018, 2024, Oracle and/or its affiliates. All rights reserved. -// This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. -// Code generated. DO NOT EDIT. - -// Oracle Cloud Bridge API -// -// API for Oracle Cloud Bridge service. -// - -package cloudbridge - -import ( - "fmt" - "github.com/oracle/oci-go-sdk/v65/common" - "strings" -) - -// Placement Describes the placement of an instance. -type Placement struct { - - // The affinity setting for the instance on the Dedicated Host. - Affinity *string `mandatory:"false" json:"affinity"` - - // The Availability Zone of the instance. - AvailabilityZone *string `mandatory:"false" json:"availabilityZone"` - - // The name of the placement group the instance is in. - GroupName *string `mandatory:"false" json:"groupName"` - - // The ID of the Dedicated Host on which the instance resides. - HostKey *string `mandatory:"false" json:"hostKey"` - - // The ARN of the host resource group in which to launch the instances. - HostResourceGroupArn *string `mandatory:"false" json:"hostResourceGroupArn"` - - // The number of the partition that the instance is in. - PartitionNumber *int `mandatory:"false" json:"partitionNumber"` - - // Reserved for future use. - SpreadDomain *string `mandatory:"false" json:"spreadDomain"` - - // The tenancy of the instance (if the instance is running in a VPC). - Tenancy *string `mandatory:"false" json:"tenancy"` -} - -func (m Placement) String() string { - return common.PointerString(m) -} - -// ValidateEnumValue returns an error when providing an unsupported enum value -// This function is being called during constructing API request process -// Not recommended for calling this function directly -func (m Placement) ValidateEnumValue() (bool, error) { - errMessage := []string{} - - if len(errMessage) > 0 { - return true, fmt.Errorf(strings.Join(errMessage, "\n")) - } - return false, nil -} diff --git a/vendor/github.com/oracle/oci-go-sdk/v65/cloudbridge/supported_cloud_region_collection.go b/vendor/github.com/oracle/oci-go-sdk/v65/cloudbridge/supported_cloud_region_collection.go deleted file mode 100644 index 5ad3ca78a9..0000000000 --- a/vendor/github.com/oracle/oci-go-sdk/v65/cloudbridge/supported_cloud_region_collection.go +++ /dev/null @@ -1,39 +0,0 @@ -// Copyright (c) 2016, 2018, 2024, Oracle and/or its affiliates. All rights reserved. -// This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. -// Code generated. DO NOT EDIT. - -// Oracle Cloud Bridge API -// -// API for Oracle Cloud Bridge service. -// - -package cloudbridge - -import ( - "fmt" - "github.com/oracle/oci-go-sdk/v65/common" - "strings" -) - -// SupportedCloudRegionCollection Collection of supported cloud regions. -type SupportedCloudRegionCollection struct { - - // List of supported cloud regions. - Items []SupportedCloudRegionSummary `mandatory:"true" json:"items"` -} - -func (m SupportedCloudRegionCollection) String() string { - return common.PointerString(m) -} - -// ValidateEnumValue returns an error when providing an unsupported enum value -// This function is being called during constructing API request process -// Not recommended for calling this function directly -func (m SupportedCloudRegionCollection) ValidateEnumValue() (bool, error) { - errMessage := []string{} - - if len(errMessage) > 0 { - return true, fmt.Errorf(strings.Join(errMessage, "\n")) - } - return false, nil -} diff --git a/vendor/github.com/oracle/oci-go-sdk/v65/cloudbridge/supported_cloud_region_lifecycle_state.go b/vendor/github.com/oracle/oci-go-sdk/v65/cloudbridge/supported_cloud_region_lifecycle_state.go deleted file mode 100644 index 95577bbb37..0000000000 --- a/vendor/github.com/oracle/oci-go-sdk/v65/cloudbridge/supported_cloud_region_lifecycle_state.go +++ /dev/null @@ -1,56 +0,0 @@ -// Copyright (c) 2016, 2018, 2024, Oracle and/or its affiliates. All rights reserved. -// This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. -// Code generated. DO NOT EDIT. - -// Oracle Cloud Bridge API -// -// API for Oracle Cloud Bridge service. -// - -package cloudbridge - -import ( - "strings" -) - -// SupportedCloudRegionLifecycleStateEnum Enum with underlying type: string -type SupportedCloudRegionLifecycleStateEnum string - -// Set of constants representing the allowable values for SupportedCloudRegionLifecycleStateEnum -const ( - SupportedCloudRegionLifecycleStateActive SupportedCloudRegionLifecycleStateEnum = "ACTIVE" - SupportedCloudRegionLifecycleStateInactive SupportedCloudRegionLifecycleStateEnum = "INACTIVE" -) - -var mappingSupportedCloudRegionLifecycleStateEnum = map[string]SupportedCloudRegionLifecycleStateEnum{ - "ACTIVE": SupportedCloudRegionLifecycleStateActive, - "INACTIVE": SupportedCloudRegionLifecycleStateInactive, -} - -var mappingSupportedCloudRegionLifecycleStateEnumLowerCase = map[string]SupportedCloudRegionLifecycleStateEnum{ - "active": SupportedCloudRegionLifecycleStateActive, - "inactive": SupportedCloudRegionLifecycleStateInactive, -} - -// GetSupportedCloudRegionLifecycleStateEnumValues Enumerates the set of values for SupportedCloudRegionLifecycleStateEnum -func GetSupportedCloudRegionLifecycleStateEnumValues() []SupportedCloudRegionLifecycleStateEnum { - values := make([]SupportedCloudRegionLifecycleStateEnum, 0) - for _, v := range mappingSupportedCloudRegionLifecycleStateEnum { - values = append(values, v) - } - return values -} - -// GetSupportedCloudRegionLifecycleStateEnumStringValues Enumerates the set of values in String for SupportedCloudRegionLifecycleStateEnum -func GetSupportedCloudRegionLifecycleStateEnumStringValues() []string { - return []string{ - "ACTIVE", - "INACTIVE", - } -} - -// GetMappingSupportedCloudRegionLifecycleStateEnum performs case Insensitive comparison on enum value and return the desired enum -func GetMappingSupportedCloudRegionLifecycleStateEnum(val string) (SupportedCloudRegionLifecycleStateEnum, bool) { - enum, ok := mappingSupportedCloudRegionLifecycleStateEnumLowerCase[strings.ToLower(val)] - return enum, ok -} diff --git a/vendor/github.com/oracle/oci-go-sdk/v65/cloudbridge/supported_cloud_region_summary.go b/vendor/github.com/oracle/oci-go-sdk/v65/cloudbridge/supported_cloud_region_summary.go deleted file mode 100644 index 1bcfb726af..0000000000 --- a/vendor/github.com/oracle/oci-go-sdk/v65/cloudbridge/supported_cloud_region_summary.go +++ /dev/null @@ -1,61 +0,0 @@ -// Copyright (c) 2016, 2018, 2024, Oracle and/or its affiliates. All rights reserved. -// This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. -// Code generated. DO NOT EDIT. - -// Oracle Cloud Bridge API -// -// API for Oracle Cloud Bridge service. -// - -package cloudbridge - -import ( - "fmt" - "github.com/oracle/oci-go-sdk/v65/common" - "strings" -) - -// SupportedCloudRegionSummary Summary of the supported cloud region. -type SupportedCloudRegionSummary struct { - - // The asset source type associated with the supported cloud region. - AssetSourceType AssetSourceTypeEnum `mandatory:"true" json:"assetSourceType"` - - // The supported cloud region name. - Name *string `mandatory:"true" json:"name"` - - // The current state of the supported cloud region. - LifecycleState SupportedCloudRegionLifecycleStateEnum `mandatory:"true" json:"lifecycleState"` - - // The freeform tags associated with this resource, if any. Each tag is a simple key-value pair with no - // predefined name, type, or namespace/scope. For more information, see Resource Tags (https://docs.cloud.oracle.com/iaas/Content/General/Concepts/resourcetags.htm). - // Example: `{"Department": "Finance"}` - FreeformTags map[string]string `mandatory:"false" json:"freeformTags"` - - // The defined tags associated with this resource, if any. Each key is predefined and scoped to namespaces. - // For more information, see Resource Tags (https://docs.cloud.oracle.com/iaas/Content/General/Concepts/resourcetags.htm). - // Example: `{"Operations": {"CostCenter": "42"}}` - DefinedTags map[string]map[string]interface{} `mandatory:"false" json:"definedTags"` -} - -func (m SupportedCloudRegionSummary) String() string { - return common.PointerString(m) -} - -// ValidateEnumValue returns an error when providing an unsupported enum value -// This function is being called during constructing API request process -// Not recommended for calling this function directly -func (m SupportedCloudRegionSummary) ValidateEnumValue() (bool, error) { - errMessage := []string{} - if _, ok := GetMappingAssetSourceTypeEnum(string(m.AssetSourceType)); !ok && m.AssetSourceType != "" { - errMessage = append(errMessage, fmt.Sprintf("unsupported enum value for AssetSourceType: %s. Supported values are: %s.", m.AssetSourceType, strings.Join(GetAssetSourceTypeEnumStringValues(), ","))) - } - if _, ok := GetMappingSupportedCloudRegionLifecycleStateEnum(string(m.LifecycleState)); !ok && m.LifecycleState != "" { - errMessage = append(errMessage, fmt.Sprintf("unsupported enum value for LifecycleState: %s. Supported values are: %s.", m.LifecycleState, strings.Join(GetSupportedCloudRegionLifecycleStateEnumStringValues(), ","))) - } - - if len(errMessage) > 0 { - return true, fmt.Errorf(strings.Join(errMessage, "\n")) - } - return false, nil -} diff --git a/vendor/github.com/oracle/oci-go-sdk/v65/cloudbridge/tag.go b/vendor/github.com/oracle/oci-go-sdk/v65/cloudbridge/tag.go deleted file mode 100644 index 334284f8ad..0000000000 --- a/vendor/github.com/oracle/oci-go-sdk/v65/cloudbridge/tag.go +++ /dev/null @@ -1,42 +0,0 @@ -// Copyright (c) 2016, 2018, 2024, Oracle and/or its affiliates. All rights reserved. -// This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. -// Code generated. DO NOT EDIT. - -// Oracle Cloud Bridge API -// -// API for Oracle Cloud Bridge service. -// - -package cloudbridge - -import ( - "fmt" - "github.com/oracle/oci-go-sdk/v65/common" - "strings" -) - -// Tag Describes a tag. -type Tag struct { - - // The key of the tag. - Key *string `mandatory:"false" json:"key"` - - // The value of the tag. - Value *string `mandatory:"false" json:"value"` -} - -func (m Tag) String() string { - return common.PointerString(m) -} - -// ValidateEnumValue returns an error when providing an unsupported enum value -// This function is being called during constructing API request process -// Not recommended for calling this function directly -func (m Tag) ValidateEnumValue() (bool, error) { - errMessage := []string{} - - if len(errMessage) > 0 { - return true, fmt.Errorf(strings.Join(errMessage, "\n")) - } - return false, nil -} diff --git a/vendor/github.com/oracle/oci-go-sdk/v65/cloudbridge/update_aws_asset_source_details.go b/vendor/github.com/oracle/oci-go-sdk/v65/cloudbridge/update_aws_asset_source_details.go deleted file mode 100644 index 3e483f60a9..0000000000 --- a/vendor/github.com/oracle/oci-go-sdk/v65/cloudbridge/update_aws_asset_source_details.go +++ /dev/null @@ -1,119 +0,0 @@ -// Copyright (c) 2016, 2018, 2024, Oracle and/or its affiliates. All rights reserved. -// This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. -// Code generated. DO NOT EDIT. - -// Oracle Cloud Bridge API -// -// API for Oracle Cloud Bridge service. -// - -package cloudbridge - -import ( - "encoding/json" - "fmt" - "github.com/oracle/oci-go-sdk/v65/common" - "strings" -) - -// UpdateAwsAssetSourceDetails AWS asset source update request. -type UpdateAwsAssetSourceDetails struct { - - // A user-friendly name for the asset source. Does not have to be unique, and it's mutable. - // Avoid entering confidential information. - DisplayName *string `mandatory:"false" json:"displayName"` - - // The OCID (https://docs.cloud.oracle.com/Content/General/Concepts/identifiers.htm) of the compartment that is going to be used to create assets. - AssetsCompartmentId *string `mandatory:"false" json:"assetsCompartmentId"` - - // The OCID (https://docs.cloud.oracle.com/Content/General/Concepts/identifiers.htm) of the discovery schedule that is going to be assigned to an asset source. - DiscoveryScheduleId *string `mandatory:"false" json:"discoveryScheduleId"` - - // The freeform tags associated with this resource, if any. Each tag is a simple key-value pair with no - // predefined name, type, or namespace/scope. For more information, see Resource Tags (https://docs.cloud.oracle.com/iaas/Content/General/Concepts/resourcetags.htm). - // Example: `{"Department": "Finance"}` - FreeformTags map[string]string `mandatory:"false" json:"freeformTags"` - - // The defined tags associated with this resource, if any. Each key is predefined and scoped to namespaces. - // For more information, see Resource Tags (https://docs.cloud.oracle.com/iaas/Content/General/Concepts/resourcetags.htm). - // Example: `{"Operations": {"CostCenter": "42"}}` - DefinedTags map[string]map[string]interface{} `mandatory:"false" json:"definedTags"` - - // The system tags associated with this resource, if any. The system tags are set by Oracle cloud infrastructure services. Each key is predefined and scoped to namespaces. - // For more information, see Resource Tags (https://docs.cloud.oracle.com/iaas/Content/General/Concepts/resourcetags.htm). - // Example: `{orcl-cloud: {free-tier-retain: true}}` - SystemTags map[string]map[string]interface{} `mandatory:"false" json:"systemTags"` - - DiscoveryCredentials *AssetSourceCredentials `mandatory:"false" json:"discoveryCredentials"` - - ReplicationCredentials *AssetSourceCredentials `mandatory:"false" json:"replicationCredentials"` - - // Flag indicating whether historical metrics are collected for assets, originating from this asset source. - AreHistoricalMetricsCollected *bool `mandatory:"false" json:"areHistoricalMetricsCollected"` - - // Flag indicating whether real-time metrics are collected for assets, originating from this asset source. - AreRealtimeMetricsCollected *bool `mandatory:"false" json:"areRealtimeMetricsCollected"` - - // Flag indicating whether cost data collection is enabled for assets, originating from this asset source. - IsCostInformationCollected *bool `mandatory:"false" json:"isCostInformationCollected"` -} - -// GetDisplayName returns DisplayName -func (m UpdateAwsAssetSourceDetails) GetDisplayName() *string { - return m.DisplayName -} - -// GetAssetsCompartmentId returns AssetsCompartmentId -func (m UpdateAwsAssetSourceDetails) GetAssetsCompartmentId() *string { - return m.AssetsCompartmentId -} - -// GetDiscoveryScheduleId returns DiscoveryScheduleId -func (m UpdateAwsAssetSourceDetails) GetDiscoveryScheduleId() *string { - return m.DiscoveryScheduleId -} - -// GetFreeformTags returns FreeformTags -func (m UpdateAwsAssetSourceDetails) GetFreeformTags() map[string]string { - return m.FreeformTags -} - -// GetDefinedTags returns DefinedTags -func (m UpdateAwsAssetSourceDetails) GetDefinedTags() map[string]map[string]interface{} { - return m.DefinedTags -} - -// GetSystemTags returns SystemTags -func (m UpdateAwsAssetSourceDetails) GetSystemTags() map[string]map[string]interface{} { - return m.SystemTags -} - -func (m UpdateAwsAssetSourceDetails) String() string { - return common.PointerString(m) -} - -// ValidateEnumValue returns an error when providing an unsupported enum value -// This function is being called during constructing API request process -// Not recommended for calling this function directly -func (m UpdateAwsAssetSourceDetails) ValidateEnumValue() (bool, error) { - errMessage := []string{} - - if len(errMessage) > 0 { - return true, fmt.Errorf(strings.Join(errMessage, "\n")) - } - return false, nil -} - -// MarshalJSON marshals to json representation -func (m UpdateAwsAssetSourceDetails) MarshalJSON() (buff []byte, e error) { - type MarshalTypeUpdateAwsAssetSourceDetails UpdateAwsAssetSourceDetails - s := struct { - DiscriminatorParam string `json:"type"` - MarshalTypeUpdateAwsAssetSourceDetails - }{ - "AWS", - (MarshalTypeUpdateAwsAssetSourceDetails)(m), - } - - return json.Marshal(&s) -} diff --git a/vendor/github.com/oracle/oci-go-sdk/v65/cloudbridge/update_aws_ebs_asset_details.go b/vendor/github.com/oracle/oci-go-sdk/v65/cloudbridge/update_aws_ebs_asset_details.go deleted file mode 100644 index e00f831c63..0000000000 --- a/vendor/github.com/oracle/oci-go-sdk/v65/cloudbridge/update_aws_ebs_asset_details.go +++ /dev/null @@ -1,89 +0,0 @@ -// Copyright (c) 2016, 2018, 2024, Oracle and/or its affiliates. All rights reserved. -// This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. -// Code generated. DO NOT EDIT. - -// Oracle Cloud Bridge API -// -// API for Oracle Cloud Bridge service. -// - -package cloudbridge - -import ( - "encoding/json" - "fmt" - "github.com/oracle/oci-go-sdk/v65/common" - "strings" -) - -// UpdateAwsEbsAssetDetails The information of AWS EBS asset to be updated. -type UpdateAwsEbsAssetDetails struct { - - // Asset display name. - DisplayName *string `mandatory:"false" json:"displayName"` - - // List of asset source OCID. - AssetSourceIds []string `mandatory:"false" json:"assetSourceIds"` - - // The freeform tags associated with this resource, if any. Each tag is a simple key-value pair with no - // predefined name, type, or namespace/scope. For more information, see Resource Tags (https://docs.cloud.oracle.com/iaas/Content/General/Concepts/resourcetags.htm). - // Example: `{"Department": "Finance"}` - FreeformTags map[string]string `mandatory:"false" json:"freeformTags"` - - // The defined tags associated with this resource, if any. Each key is predefined and scoped to namespaces. - // For more information, see Resource Tags (https://docs.cloud.oracle.com/iaas/Content/General/Concepts/resourcetags.htm). - // Example: `{"Operations": {"CostCenter": "42"}}` - DefinedTags map[string]map[string]interface{} `mandatory:"false" json:"definedTags"` - - AwsEbs *AwsEbsProperties `mandatory:"false" json:"awsEbs"` -} - -// GetDisplayName returns DisplayName -func (m UpdateAwsEbsAssetDetails) GetDisplayName() *string { - return m.DisplayName -} - -// GetAssetSourceIds returns AssetSourceIds -func (m UpdateAwsEbsAssetDetails) GetAssetSourceIds() []string { - return m.AssetSourceIds -} - -// GetFreeformTags returns FreeformTags -func (m UpdateAwsEbsAssetDetails) GetFreeformTags() map[string]string { - return m.FreeformTags -} - -// GetDefinedTags returns DefinedTags -func (m UpdateAwsEbsAssetDetails) GetDefinedTags() map[string]map[string]interface{} { - return m.DefinedTags -} - -func (m UpdateAwsEbsAssetDetails) String() string { - return common.PointerString(m) -} - -// ValidateEnumValue returns an error when providing an unsupported enum value -// This function is being called during constructing API request process -// Not recommended for calling this function directly -func (m UpdateAwsEbsAssetDetails) ValidateEnumValue() (bool, error) { - errMessage := []string{} - - if len(errMessage) > 0 { - return true, fmt.Errorf(strings.Join(errMessage, "\n")) - } - return false, nil -} - -// MarshalJSON marshals to json representation -func (m UpdateAwsEbsAssetDetails) MarshalJSON() (buff []byte, e error) { - type MarshalTypeUpdateAwsEbsAssetDetails UpdateAwsEbsAssetDetails - s := struct { - DiscriminatorParam string `json:"assetType"` - MarshalTypeUpdateAwsEbsAssetDetails - }{ - "AWS_EBS", - (MarshalTypeUpdateAwsEbsAssetDetails)(m), - } - - return json.Marshal(&s) -} diff --git a/vendor/github.com/oracle/oci-go-sdk/v65/cloudbridge/update_aws_ec2_asset_details.go b/vendor/github.com/oracle/oci-go-sdk/v65/cloudbridge/update_aws_ec2_asset_details.go deleted file mode 100644 index 749f1dae78..0000000000 --- a/vendor/github.com/oracle/oci-go-sdk/v65/cloudbridge/update_aws_ec2_asset_details.go +++ /dev/null @@ -1,97 +0,0 @@ -// Copyright (c) 2016, 2018, 2024, Oracle and/or its affiliates. All rights reserved. -// This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. -// Code generated. DO NOT EDIT. - -// Oracle Cloud Bridge API -// -// API for Oracle Cloud Bridge service. -// - -package cloudbridge - -import ( - "encoding/json" - "fmt" - "github.com/oracle/oci-go-sdk/v65/common" - "strings" -) - -// UpdateAwsEc2AssetDetails The information of AWS VM asset to be updated. -type UpdateAwsEc2AssetDetails struct { - - // Asset display name. - DisplayName *string `mandatory:"false" json:"displayName"` - - // List of asset source OCID. - AssetSourceIds []string `mandatory:"false" json:"assetSourceIds"` - - // The freeform tags associated with this resource, if any. Each tag is a simple key-value pair with no - // predefined name, type, or namespace/scope. For more information, see Resource Tags (https://docs.cloud.oracle.com/iaas/Content/General/Concepts/resourcetags.htm). - // Example: `{"Department": "Finance"}` - FreeformTags map[string]string `mandatory:"false" json:"freeformTags"` - - // The defined tags associated with this resource, if any. Each key is predefined and scoped to namespaces. - // For more information, see Resource Tags (https://docs.cloud.oracle.com/iaas/Content/General/Concepts/resourcetags.htm). - // Example: `{"Operations": {"CostCenter": "42"}}` - DefinedTags map[string]map[string]interface{} `mandatory:"false" json:"definedTags"` - - Compute *ComputeProperties `mandatory:"false" json:"compute"` - - Vm *VmProperties `mandatory:"false" json:"vm"` - - AwsEc2 *AwsEc2Properties `mandatory:"false" json:"awsEc2"` - - AwsEc2Cost *MonthlyCostSummary `mandatory:"false" json:"awsEc2Cost"` - - AttachedEbsVolumesCost *MonthlyCostSummary `mandatory:"false" json:"attachedEbsVolumesCost"` -} - -// GetDisplayName returns DisplayName -func (m UpdateAwsEc2AssetDetails) GetDisplayName() *string { - return m.DisplayName -} - -// GetAssetSourceIds returns AssetSourceIds -func (m UpdateAwsEc2AssetDetails) GetAssetSourceIds() []string { - return m.AssetSourceIds -} - -// GetFreeformTags returns FreeformTags -func (m UpdateAwsEc2AssetDetails) GetFreeformTags() map[string]string { - return m.FreeformTags -} - -// GetDefinedTags returns DefinedTags -func (m UpdateAwsEc2AssetDetails) GetDefinedTags() map[string]map[string]interface{} { - return m.DefinedTags -} - -func (m UpdateAwsEc2AssetDetails) String() string { - return common.PointerString(m) -} - -// ValidateEnumValue returns an error when providing an unsupported enum value -// This function is being called during constructing API request process -// Not recommended for calling this function directly -func (m UpdateAwsEc2AssetDetails) ValidateEnumValue() (bool, error) { - errMessage := []string{} - - if len(errMessage) > 0 { - return true, fmt.Errorf(strings.Join(errMessage, "\n")) - } - return false, nil -} - -// MarshalJSON marshals to json representation -func (m UpdateAwsEc2AssetDetails) MarshalJSON() (buff []byte, e error) { - type MarshalTypeUpdateAwsEc2AssetDetails UpdateAwsEc2AssetDetails - s := struct { - DiscriminatorParam string `json:"assetType"` - MarshalTypeUpdateAwsEc2AssetDetails - }{ - "AWS_EC2", - (MarshalTypeUpdateAwsEc2AssetDetails)(m), - } - - return json.Marshal(&s) -} diff --git a/vendor/github.com/oracle/oci-go-sdk/v65/cloudbridge/volume_attachment.go b/vendor/github.com/oracle/oci-go-sdk/v65/cloudbridge/volume_attachment.go deleted file mode 100644 index 54ffadb292..0000000000 --- a/vendor/github.com/oracle/oci-go-sdk/v65/cloudbridge/volume_attachment.go +++ /dev/null @@ -1,51 +0,0 @@ -// Copyright (c) 2016, 2018, 2024, Oracle and/or its affiliates. All rights reserved. -// This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. -// Code generated. DO NOT EDIT. - -// Oracle Cloud Bridge API -// -// API for Oracle Cloud Bridge service. -// - -package cloudbridge - -import ( - "fmt" - "github.com/oracle/oci-go-sdk/v65/common" - "strings" -) - -// VolumeAttachment Describes volume attachment details. -type VolumeAttachment struct { - - // Indicates whether the EBS volume is deleted on instance termination. - IsDeleteOnTermination *bool `mandatory:"false" json:"isDeleteOnTermination"` - - // The device name. - Device *string `mandatory:"false" json:"device"` - - // The ID of the instance. - InstanceKey *string `mandatory:"false" json:"instanceKey"` - - // The attachment state of the volume. - Status *string `mandatory:"false" json:"status"` - - // The ID of the volume. - VolumeKey *string `mandatory:"false" json:"volumeKey"` -} - -func (m VolumeAttachment) String() string { - return common.PointerString(m) -} - -// ValidateEnumValue returns an error when providing an unsupported enum value -// This function is being called during constructing API request process -// Not recommended for calling this function directly -func (m VolumeAttachment) ValidateEnumValue() (bool, error) { - errMessage := []string{} - - if len(errMessage) > 0 { - return true, fmt.Errorf(strings.Join(errMessage, "\n")) - } - return false, nil -} diff --git a/vendor/github.com/oracle/oci-go-sdk/v65/containerengine/install_addon_details.go b/vendor/github.com/oracle/oci-go-sdk/v65/containerengine/install_addon_details.go index cd9a766908..4fe7ad4787 100644 --- a/vendor/github.com/oracle/oci-go-sdk/v65/containerengine/install_addon_details.go +++ b/vendor/github.com/oracle/oci-go-sdk/v65/containerengine/install_addon_details.go @@ -28,6 +28,9 @@ type InstallAddonDetails struct { // Addon configuration details. Configurations []AddonConfiguration `mandatory:"false" json:"configurations"` + + // Whether or not to override an existing addon installation. Defaults to false. If set to true, any existing addon installation would be overridden as per new installation details. + IsOverrideExisting *bool `mandatory:"false" json:"isOverrideExisting"` } func (m InstallAddonDetails) String() string { diff --git a/vendor/github.com/oracle/oci-go-sdk/v65/loadbalancer/create_listener_details.go b/vendor/github.com/oracle/oci-go-sdk/v65/loadbalancer/create_listener_details.go index 6f1d93b5ff..bea5393999 100644 --- a/vendor/github.com/oracle/oci-go-sdk/v65/loadbalancer/create_listener_details.go +++ b/vendor/github.com/oracle/oci-go-sdk/v65/loadbalancer/create_listener_details.go @@ -30,9 +30,8 @@ type CreateListenerDetails struct { // Example: `80` Port *int `mandatory:"true" json:"port"` - // The protocol on which the listener accepts connection requests. - // To get a list of valid protocols, use the ListProtocols - // operation. + // The protocol on which the listener accepts connection requests. The supported protocols are HTTP, HTTP2, TCP, and GRPC. + // You can also use the ListProtocols operation to get a list of valid protocols. // Example: `HTTP` Protocol *string `mandatory:"true" json:"protocol"` diff --git a/vendor/github.com/oracle/oci-go-sdk/v65/loadbalancer/listener.go b/vendor/github.com/oracle/oci-go-sdk/v65/loadbalancer/listener.go index ae1c79b543..1e6cddab89 100644 --- a/vendor/github.com/oracle/oci-go-sdk/v65/loadbalancer/listener.go +++ b/vendor/github.com/oracle/oci-go-sdk/v65/loadbalancer/listener.go @@ -33,9 +33,8 @@ type Listener struct { // Example: `80` Port *int `mandatory:"true" json:"port"` - // The protocol on which the listener accepts connection requests. - // To get a list of valid protocols, use the ListProtocols - // operation. + // The protocol on which the listener accepts connection requests. The supported protocols are HTTP, HTTP2, TCP, and GRPC. + // You can also use the ListProtocols operation to get a list of valid protocols. // Example: `HTTP` Protocol *string `mandatory:"true" json:"protocol"` diff --git a/vendor/github.com/oracle/oci-go-sdk/v65/loadbalancer/listener_details.go b/vendor/github.com/oracle/oci-go-sdk/v65/loadbalancer/listener_details.go index 914f4a4f59..9814c72eb9 100644 --- a/vendor/github.com/oracle/oci-go-sdk/v65/loadbalancer/listener_details.go +++ b/vendor/github.com/oracle/oci-go-sdk/v65/loadbalancer/listener_details.go @@ -27,9 +27,8 @@ type ListenerDetails struct { // Example: `80` Port *int `mandatory:"true" json:"port"` - // The protocol on which the listener accepts connection requests. - // To get a list of valid protocols, use the ListProtocols - // operation. + // The protocol on which the listener accepts connection requests. The supported protocols are HTTP, HTTP2, TCP, and GRPC. + // You can also use the ListProtocols operation to get a list of valid protocols. // Example: `HTTP` Protocol *string `mandatory:"true" json:"protocol"` diff --git a/vendor/github.com/oracle/oci-go-sdk/v65/loadbalancer/update_listener_details.go b/vendor/github.com/oracle/oci-go-sdk/v65/loadbalancer/update_listener_details.go index 5299af7238..87d824005a 100644 --- a/vendor/github.com/oracle/oci-go-sdk/v65/loadbalancer/update_listener_details.go +++ b/vendor/github.com/oracle/oci-go-sdk/v65/loadbalancer/update_listener_details.go @@ -27,9 +27,8 @@ type UpdateListenerDetails struct { // Example: `80` Port *int `mandatory:"true" json:"port"` - // The protocol on which the listener accepts connection requests. - // To get a list of valid protocols, use the ListProtocols - // operation. + // The protocol on which the listener accepts connection requests. The supported protocols are HTTP, HTTP2, TCP, and GRPC. + // You can also use the ListProtocols operation to get a list of valid protocols. // Example: `HTTP` Protocol *string `mandatory:"true" json:"protocol"` diff --git a/vendor/github.com/oracle/oci-go-sdk/v65/networkloadbalancer/backend_set.go b/vendor/github.com/oracle/oci-go-sdk/v65/networkloadbalancer/backend_set.go index f0616ef9a5..bdc8a7ae67 100644 --- a/vendor/github.com/oracle/oci-go-sdk/v65/networkloadbalancer/backend_set.go +++ b/vendor/github.com/oracle/oci-go-sdk/v65/networkloadbalancer/backend_set.go @@ -27,7 +27,6 @@ type BackendSet struct { // Example: `example_backend_set` Name *string `mandatory:"true" json:"name"` - // The health check policy configuration. HealthChecker *HealthChecker `mandatory:"true" json:"healthChecker"` // The network load balancer policy for the backend set. diff --git a/vendor/github.com/oracle/oci-go-sdk/v65/networkloadbalancer/backend_set_details.go b/vendor/github.com/oracle/oci-go-sdk/v65/networkloadbalancer/backend_set_details.go index 666a7490b9..dac452a982 100644 --- a/vendor/github.com/oracle/oci-go-sdk/v65/networkloadbalancer/backend_set_details.go +++ b/vendor/github.com/oracle/oci-go-sdk/v65/networkloadbalancer/backend_set_details.go @@ -20,8 +20,6 @@ import ( // Managing Backend Sets (https://docs.cloud.oracle.com/Content/Balance/Tasks/managingbackendsets.htm). // **Caution:** Oracle recommends that you avoid using any confidential information when you supply string values using the API. type BackendSetDetails struct { - - // The health check policy configuration. HealthChecker *HealthChecker `mandatory:"true" json:"healthChecker"` // The network load balancer policy for the backend set. diff --git a/vendor/github.com/oracle/oci-go-sdk/v65/networkloadbalancer/backend_set_summary.go b/vendor/github.com/oracle/oci-go-sdk/v65/networkloadbalancer/backend_set_summary.go index e807c241f5..cb1886532a 100644 --- a/vendor/github.com/oracle/oci-go-sdk/v65/networkloadbalancer/backend_set_summary.go +++ b/vendor/github.com/oracle/oci-go-sdk/v65/networkloadbalancer/backend_set_summary.go @@ -15,7 +15,10 @@ import ( "strings" ) -// BackendSetSummary The representation of BackendSetSummary +// BackendSetSummary The configuration of a network load balancer backend set. +// For more information about backend set configuration, see +// Managing Backend Sets (https://docs.cloud.oracle.com/Content/Balance/Tasks/managingbackendsets.htm). +// **Caution:** Oracle recommends that you avoid using any confidential information when you supply string values using the API. type BackendSetSummary struct { // A user-friendly name for the backend set that must be unique and cannot be changed. @@ -31,7 +34,6 @@ type BackendSetSummary struct { // An array of backends. Backends []Backend `mandatory:"true" json:"backends"` - // The health check policy configuration. HealthChecker *HealthChecker `mandatory:"true" json:"healthChecker"` // If this parameter is enabled, the network load balancer preserves the source IP of the packet forwarded to the backend servers. diff --git a/vendor/github.com/oracle/oci-go-sdk/v65/networkloadbalancer/create_listener_details.go b/vendor/github.com/oracle/oci-go-sdk/v65/networkloadbalancer/create_listener_details.go index f7a5faa926..b73698b96c 100644 --- a/vendor/github.com/oracle/oci-go-sdk/v65/networkloadbalancer/create_listener_details.go +++ b/vendor/github.com/oracle/oci-go-sdk/v65/networkloadbalancer/create_listener_details.go @@ -52,6 +52,10 @@ type CreateListenerDetails struct { // The duration for UDP idle timeout in seconds. // Example: `120` UdpIdleTimeout *int `mandatory:"false" json:"udpIdleTimeout"` + + // The duration for L3IP idle timeout in seconds. + // Example: `200` + L3IpIdleTimeout *int `mandatory:"false" json:"l3IpIdleTimeout"` } func (m CreateListenerDetails) String() string { diff --git a/vendor/github.com/oracle/oci-go-sdk/v65/networkloadbalancer/listener.go b/vendor/github.com/oracle/oci-go-sdk/v65/networkloadbalancer/listener.go index b2da9e1185..655a86a6ec 100644 --- a/vendor/github.com/oracle/oci-go-sdk/v65/networkloadbalancer/listener.go +++ b/vendor/github.com/oracle/oci-go-sdk/v65/networkloadbalancer/listener.go @@ -52,6 +52,10 @@ type Listener struct { // The duration for UDP idle timeout in seconds. // Example: `120` UdpIdleTimeout *int `mandatory:"false" json:"udpIdleTimeout"` + + // The duration for L3IP idle timeout in seconds. + // Example: `200` + L3IpIdleTimeout *int `mandatory:"false" json:"l3IpIdleTimeout"` } func (m Listener) String() string { diff --git a/vendor/github.com/oracle/oci-go-sdk/v65/networkloadbalancer/listener_details.go b/vendor/github.com/oracle/oci-go-sdk/v65/networkloadbalancer/listener_details.go index 194c1399f6..3437ab6657 100644 --- a/vendor/github.com/oracle/oci-go-sdk/v65/networkloadbalancer/listener_details.go +++ b/vendor/github.com/oracle/oci-go-sdk/v65/networkloadbalancer/listener_details.go @@ -52,6 +52,10 @@ type ListenerDetails struct { // The duration for UDP idle timeout in seconds. // Example: `120` UdpIdleTimeout *int `mandatory:"false" json:"udpIdleTimeout"` + + // The duration for L3IP idle timeout in seconds. + // Example: `200` + L3IpIdleTimeout *int `mandatory:"false" json:"l3IpIdleTimeout"` } func (m ListenerDetails) String() string { diff --git a/vendor/github.com/oracle/oci-go-sdk/v65/networkloadbalancer/listener_protocols.go b/vendor/github.com/oracle/oci-go-sdk/v65/networkloadbalancer/listener_protocols.go index 14afdbfea6..f77bb18e51 100644 --- a/vendor/github.com/oracle/oci-go-sdk/v65/networkloadbalancer/listener_protocols.go +++ b/vendor/github.com/oracle/oci-go-sdk/v65/networkloadbalancer/listener_protocols.go @@ -22,6 +22,7 @@ const ( ListenerProtocolsTcp ListenerProtocolsEnum = "TCP" ListenerProtocolsUdp ListenerProtocolsEnum = "UDP" ListenerProtocolsTcpAndUdp ListenerProtocolsEnum = "TCP_AND_UDP" + ListenerProtocolsL3Ip ListenerProtocolsEnum = "L3IP" ) var mappingListenerProtocolsEnum = map[string]ListenerProtocolsEnum{ @@ -29,6 +30,7 @@ var mappingListenerProtocolsEnum = map[string]ListenerProtocolsEnum{ "TCP": ListenerProtocolsTcp, "UDP": ListenerProtocolsUdp, "TCP_AND_UDP": ListenerProtocolsTcpAndUdp, + "L3IP": ListenerProtocolsL3Ip, } var mappingListenerProtocolsEnumLowerCase = map[string]ListenerProtocolsEnum{ @@ -36,6 +38,7 @@ var mappingListenerProtocolsEnumLowerCase = map[string]ListenerProtocolsEnum{ "tcp": ListenerProtocolsTcp, "udp": ListenerProtocolsUdp, "tcp_and_udp": ListenerProtocolsTcpAndUdp, + "l3ip": ListenerProtocolsL3Ip, } // GetListenerProtocolsEnumValues Enumerates the set of values for ListenerProtocolsEnum @@ -54,6 +57,7 @@ func GetListenerProtocolsEnumStringValues() []string { "TCP", "UDP", "TCP_AND_UDP", + "L3IP", } } diff --git a/vendor/github.com/oracle/oci-go-sdk/v65/networkloadbalancer/listener_summary.go b/vendor/github.com/oracle/oci-go-sdk/v65/networkloadbalancer/listener_summary.go index a2f8f8e26d..f50b9d26a9 100644 --- a/vendor/github.com/oracle/oci-go-sdk/v65/networkloadbalancer/listener_summary.go +++ b/vendor/github.com/oracle/oci-go-sdk/v65/networkloadbalancer/listener_summary.go @@ -52,6 +52,10 @@ type ListenerSummary struct { // The duration for UDP idle timeout in seconds. // Example: `120` UdpIdleTimeout *int `mandatory:"false" json:"udpIdleTimeout"` + + // The duration for L3IP idle timeout in seconds. + // Example: `200` + L3IpIdleTimeout *int `mandatory:"false" json:"l3IpIdleTimeout"` } func (m ListenerSummary) String() string { diff --git a/vendor/github.com/oracle/oci-go-sdk/v65/networkloadbalancer/network_load_balancers_protocol_summary.go b/vendor/github.com/oracle/oci-go-sdk/v65/networkloadbalancer/network_load_balancers_protocol_summary.go index 7d16a10bcc..92dc5380a6 100644 --- a/vendor/github.com/oracle/oci-go-sdk/v65/networkloadbalancer/network_load_balancers_protocol_summary.go +++ b/vendor/github.com/oracle/oci-go-sdk/v65/networkloadbalancer/network_load_balancers_protocol_summary.go @@ -22,6 +22,7 @@ const ( NetworkLoadBalancersProtocolSummaryTcp NetworkLoadBalancersProtocolSummaryEnum = "TCP" NetworkLoadBalancersProtocolSummaryUdp NetworkLoadBalancersProtocolSummaryEnum = "UDP" NetworkLoadBalancersProtocolSummaryTcpAndUdp NetworkLoadBalancersProtocolSummaryEnum = "TCP_AND_UDP" + NetworkLoadBalancersProtocolSummaryL3Ip NetworkLoadBalancersProtocolSummaryEnum = "L3IP" ) var mappingNetworkLoadBalancersProtocolSummaryEnum = map[string]NetworkLoadBalancersProtocolSummaryEnum{ @@ -29,6 +30,7 @@ var mappingNetworkLoadBalancersProtocolSummaryEnum = map[string]NetworkLoadBalan "TCP": NetworkLoadBalancersProtocolSummaryTcp, "UDP": NetworkLoadBalancersProtocolSummaryUdp, "TCP_AND_UDP": NetworkLoadBalancersProtocolSummaryTcpAndUdp, + "L3IP": NetworkLoadBalancersProtocolSummaryL3Ip, } var mappingNetworkLoadBalancersProtocolSummaryEnumLowerCase = map[string]NetworkLoadBalancersProtocolSummaryEnum{ @@ -36,6 +38,7 @@ var mappingNetworkLoadBalancersProtocolSummaryEnumLowerCase = map[string]Network "tcp": NetworkLoadBalancersProtocolSummaryTcp, "udp": NetworkLoadBalancersProtocolSummaryUdp, "tcp_and_udp": NetworkLoadBalancersProtocolSummaryTcpAndUdp, + "l3ip": NetworkLoadBalancersProtocolSummaryL3Ip, } // GetNetworkLoadBalancersProtocolSummaryEnumValues Enumerates the set of values for NetworkLoadBalancersProtocolSummaryEnum @@ -54,6 +57,7 @@ func GetNetworkLoadBalancersProtocolSummaryEnumStringValues() []string { "TCP", "UDP", "TCP_AND_UDP", + "L3IP", } } diff --git a/vendor/github.com/oracle/oci-go-sdk/v65/networkloadbalancer/update_listener_details.go b/vendor/github.com/oracle/oci-go-sdk/v65/networkloadbalancer/update_listener_details.go index e0f1ff5a3b..fdc59ed7db 100644 --- a/vendor/github.com/oracle/oci-go-sdk/v65/networkloadbalancer/update_listener_details.go +++ b/vendor/github.com/oracle/oci-go-sdk/v65/networkloadbalancer/update_listener_details.go @@ -48,6 +48,10 @@ type UpdateListenerDetails struct { // The duration for UDP idle timeout in seconds. // Example: `120` UdpIdleTimeout *int `mandatory:"false" json:"udpIdleTimeout"` + + // The duration for L3IP idle timeout in seconds. + // Example: `200` + L3IpIdleTimeout *int `mandatory:"false" json:"l3IpIdleTimeout"` } func (m UpdateListenerDetails) String() string { diff --git a/vendor/github.com/oracle/oci-go-sdk/v65/operatoraccesscontrol/operatoraccesscontrol_accessrequests_client.go b/vendor/github.com/oracle/oci-go-sdk/v65/operatoraccesscontrol/operatoraccesscontrol_accessrequests_client.go index 424a4c32ae..f3c5bf275c 100644 --- a/vendor/github.com/oracle/oci-go-sdk/v65/operatoraccesscontrol/operatoraccesscontrol_accessrequests_client.go +++ b/vendor/github.com/oracle/oci-go-sdk/v65/operatoraccesscontrol/operatoraccesscontrol_accessrequests_client.go @@ -147,7 +147,7 @@ func (client AccessRequestsClient) approveAccessRequest(ctx context.Context, req defer common.CloseBodyIfValid(httpResponse) response.RawResponse = httpResponse if err != nil { - apiReferenceLink := "https://docs.oracle.com/iaas/api/#/en/operatoraccesscontrol/20200630/AccessRequest/ApproveAccessRequest" + apiReferenceLink := "" err = common.PostProcessServiceError(err, "AccessRequests", "ApproveAccessRequest", apiReferenceLink) return response, err } @@ -205,7 +205,7 @@ func (client AccessRequestsClient) getAccessRequest(ctx context.Context, request defer common.CloseBodyIfValid(httpResponse) response.RawResponse = httpResponse if err != nil { - apiReferenceLink := "https://docs.oracle.com/iaas/api/#/en/operatoraccesscontrol/20200630/AccessRequest/GetAccessRequest" + apiReferenceLink := "" err = common.PostProcessServiceError(err, "AccessRequests", "GetAccessRequest", apiReferenceLink) return response, err } @@ -263,7 +263,7 @@ func (client AccessRequestsClient) getAuditLogReport(ctx context.Context, reques defer common.CloseBodyIfValid(httpResponse) response.RawResponse = httpResponse if err != nil { - apiReferenceLink := "https://docs.oracle.com/iaas/api/#/en/operatoraccesscontrol/20200630/AuditLogReport/GetAuditLogReport" + apiReferenceLink := "" err = common.PostProcessServiceError(err, "AccessRequests", "GetAuditLogReport", apiReferenceLink) return response, err } @@ -326,7 +326,7 @@ func (client AccessRequestsClient) interactionRequest(ctx context.Context, reque defer common.CloseBodyIfValid(httpResponse) response.RawResponse = httpResponse if err != nil { - apiReferenceLink := "https://docs.oracle.com/iaas/api/#/en/operatoraccesscontrol/20200630/AccessRequest/InteractionRequest" + apiReferenceLink := "" err = common.PostProcessServiceError(err, "AccessRequests", "InteractionRequest", apiReferenceLink) return response, err } @@ -384,7 +384,7 @@ func (client AccessRequestsClient) listAccessRequestHistories(ctx context.Contex defer common.CloseBodyIfValid(httpResponse) response.RawResponse = httpResponse if err != nil { - apiReferenceLink := "https://docs.oracle.com/iaas/api/#/en/operatoraccesscontrol/20200630/AccessRequest/ListAccessRequestHistories" + apiReferenceLink := "" err = common.PostProcessServiceError(err, "AccessRequests", "ListAccessRequestHistories", apiReferenceLink) return response, err } @@ -442,7 +442,7 @@ func (client AccessRequestsClient) listAccessRequests(ctx context.Context, reque defer common.CloseBodyIfValid(httpResponse) response.RawResponse = httpResponse if err != nil { - apiReferenceLink := "https://docs.oracle.com/iaas/api/#/en/operatoraccesscontrol/20200630/AccessRequest/ListAccessRequests" + apiReferenceLink := "" err = common.PostProcessServiceError(err, "AccessRequests", "ListAccessRequests", apiReferenceLink) return response, err } @@ -500,7 +500,7 @@ func (client AccessRequestsClient) listInteractions(ctx context.Context, request defer common.CloseBodyIfValid(httpResponse) response.RawResponse = httpResponse if err != nil { - apiReferenceLink := "https://docs.oracle.com/iaas/api/#/en/operatoraccesscontrol/20200630/AccessRequest/ListInteractions" + apiReferenceLink := "" err = common.PostProcessServiceError(err, "AccessRequests", "ListInteractions", apiReferenceLink) return response, err } @@ -563,7 +563,7 @@ func (client AccessRequestsClient) rejectAccessRequest(ctx context.Context, requ defer common.CloseBodyIfValid(httpResponse) response.RawResponse = httpResponse if err != nil { - apiReferenceLink := "https://docs.oracle.com/iaas/api/#/en/operatoraccesscontrol/20200630/AccessRequest/RejectAccessRequest" + apiReferenceLink := "" err = common.PostProcessServiceError(err, "AccessRequests", "RejectAccessRequest", apiReferenceLink) return response, err } @@ -626,7 +626,7 @@ func (client AccessRequestsClient) reviewAccessRequest(ctx context.Context, requ defer common.CloseBodyIfValid(httpResponse) response.RawResponse = httpResponse if err != nil { - apiReferenceLink := "https://docs.oracle.com/iaas/api/#/en/operatoraccesscontrol/20200630/AccessRequest/ReviewAccessRequest" + apiReferenceLink := "" err = common.PostProcessServiceError(err, "AccessRequests", "ReviewAccessRequest", apiReferenceLink) return response, err } @@ -689,7 +689,7 @@ func (client AccessRequestsClient) revokeAccessRequest(ctx context.Context, requ defer common.CloseBodyIfValid(httpResponse) response.RawResponse = httpResponse if err != nil { - apiReferenceLink := "https://docs.oracle.com/iaas/api/#/en/operatoraccesscontrol/20200630/AccessRequest/RevokeAccessRequest" + apiReferenceLink := "" err = common.PostProcessServiceError(err, "AccessRequests", "RevokeAccessRequest", apiReferenceLink) return response, err } diff --git a/vendor/github.com/oracle/oci-go-sdk/v65/operatoraccesscontrol/operatoraccesscontrol_operatoractions_client.go b/vendor/github.com/oracle/oci-go-sdk/v65/operatoraccesscontrol/operatoraccesscontrol_operatoractions_client.go index 6687364007..b413ca57aa 100644 --- a/vendor/github.com/oracle/oci-go-sdk/v65/operatoraccesscontrol/operatoraccesscontrol_operatoractions_client.go +++ b/vendor/github.com/oracle/oci-go-sdk/v65/operatoraccesscontrol/operatoraccesscontrol_operatoractions_client.go @@ -142,7 +142,7 @@ func (client OperatorActionsClient) getOperatorAction(ctx context.Context, reque defer common.CloseBodyIfValid(httpResponse) response.RawResponse = httpResponse if err != nil { - apiReferenceLink := "https://docs.oracle.com/iaas/api/#/en/operatoraccesscontrol/20200630/OperatorAction/GetOperatorAction" + apiReferenceLink := "" err = common.PostProcessServiceError(err, "OperatorActions", "GetOperatorAction", apiReferenceLink) return response, err } @@ -200,7 +200,7 @@ func (client OperatorActionsClient) listOperatorActions(ctx context.Context, req defer common.CloseBodyIfValid(httpResponse) response.RawResponse = httpResponse if err != nil { - apiReferenceLink := "https://docs.oracle.com/iaas/api/#/en/operatoraccesscontrol/20200630/OperatorAction/ListOperatorActions" + apiReferenceLink := "" err = common.PostProcessServiceError(err, "OperatorActions", "ListOperatorActions", apiReferenceLink) return response, err } diff --git a/vendor/github.com/oracle/oci-go-sdk/v65/operatoraccesscontrol/operatoraccesscontrol_operatorcontrol_client.go b/vendor/github.com/oracle/oci-go-sdk/v65/operatoraccesscontrol/operatoraccesscontrol_operatorcontrol_client.go index 2b51302e03..89ad306561 100644 --- a/vendor/github.com/oracle/oci-go-sdk/v65/operatoraccesscontrol/operatoraccesscontrol_operatorcontrol_client.go +++ b/vendor/github.com/oracle/oci-go-sdk/v65/operatoraccesscontrol/operatoraccesscontrol_operatorcontrol_client.go @@ -147,7 +147,7 @@ func (client OperatorControlClient) changeOperatorControlCompartment(ctx context defer common.CloseBodyIfValid(httpResponse) response.RawResponse = httpResponse if err != nil { - apiReferenceLink := "https://docs.oracle.com/iaas/api/#/en/operatoraccesscontrol/20200630/OperatorControl/ChangeOperatorControlCompartment" + apiReferenceLink := "" err = common.PostProcessServiceError(err, "OperatorControl", "ChangeOperatorControlCompartment", apiReferenceLink) return response, err } @@ -210,7 +210,7 @@ func (client OperatorControlClient) createOperatorControl(ctx context.Context, r defer common.CloseBodyIfValid(httpResponse) response.RawResponse = httpResponse if err != nil { - apiReferenceLink := "https://docs.oracle.com/iaas/api/#/en/operatoraccesscontrol/20200630/OperatorControl/CreateOperatorControl" + apiReferenceLink := "" err = common.PostProcessServiceError(err, "OperatorControl", "CreateOperatorControl", apiReferenceLink) return response, err } @@ -272,7 +272,7 @@ func (client OperatorControlClient) deleteOperatorControl(ctx context.Context, r defer common.CloseBodyIfValid(httpResponse) response.RawResponse = httpResponse if err != nil { - apiReferenceLink := "https://docs.oracle.com/iaas/api/#/en/operatoraccesscontrol/20200630/OperatorControl/DeleteOperatorControl" + apiReferenceLink := "" err = common.PostProcessServiceError(err, "OperatorControl", "DeleteOperatorControl", apiReferenceLink) return response, err } @@ -330,7 +330,7 @@ func (client OperatorControlClient) getOperatorControl(ctx context.Context, requ defer common.CloseBodyIfValid(httpResponse) response.RawResponse = httpResponse if err != nil { - apiReferenceLink := "https://docs.oracle.com/iaas/api/#/en/operatoraccesscontrol/20200630/OperatorControl/GetOperatorControl" + apiReferenceLink := "" err = common.PostProcessServiceError(err, "OperatorControl", "GetOperatorControl", apiReferenceLink) return response, err } @@ -388,7 +388,7 @@ func (client OperatorControlClient) listOperatorControls(ctx context.Context, re defer common.CloseBodyIfValid(httpResponse) response.RawResponse = httpResponse if err != nil { - apiReferenceLink := "https://docs.oracle.com/iaas/api/#/en/operatoraccesscontrol/20200630/OperatorControl/ListOperatorControls" + apiReferenceLink := "" err = common.PostProcessServiceError(err, "OperatorControl", "ListOperatorControls", apiReferenceLink) return response, err } @@ -446,7 +446,7 @@ func (client OperatorControlClient) updateOperatorControl(ctx context.Context, r defer common.CloseBodyIfValid(httpResponse) response.RawResponse = httpResponse if err != nil { - apiReferenceLink := "https://docs.oracle.com/iaas/api/#/en/operatoraccesscontrol/20200630/OperatorControl/UpdateOperatorControl" + apiReferenceLink := "" err = common.PostProcessServiceError(err, "OperatorControl", "UpdateOperatorControl", apiReferenceLink) return response, err } diff --git a/vendor/github.com/oracle/oci-go-sdk/v65/operatoraccesscontrol/operatoraccesscontrol_operatorcontrolassignment_client.go b/vendor/github.com/oracle/oci-go-sdk/v65/operatoraccesscontrol/operatoraccesscontrol_operatorcontrolassignment_client.go index 135ae8313a..6651438191 100644 --- a/vendor/github.com/oracle/oci-go-sdk/v65/operatoraccesscontrol/operatoraccesscontrol_operatorcontrolassignment_client.go +++ b/vendor/github.com/oracle/oci-go-sdk/v65/operatoraccesscontrol/operatoraccesscontrol_operatorcontrolassignment_client.go @@ -147,7 +147,7 @@ func (client OperatorControlAssignmentClient) changeOperatorControlAssignmentCom defer common.CloseBodyIfValid(httpResponse) response.RawResponse = httpResponse if err != nil { - apiReferenceLink := "https://docs.oracle.com/iaas/api/#/en/operatoraccesscontrol/20200630/OperatorControlAssignment/ChangeOperatorControlAssignmentCompartment" + apiReferenceLink := "" err = common.PostProcessServiceError(err, "OperatorControlAssignment", "ChangeOperatorControlAssignmentCompartment", apiReferenceLink) return response, err } @@ -210,7 +210,7 @@ func (client OperatorControlAssignmentClient) createOperatorControlAssignment(ct defer common.CloseBodyIfValid(httpResponse) response.RawResponse = httpResponse if err != nil { - apiReferenceLink := "https://docs.oracle.com/iaas/api/#/en/operatoraccesscontrol/20200630/OperatorControlAssignment/CreateOperatorControlAssignment" + apiReferenceLink := "" err = common.PostProcessServiceError(err, "OperatorControlAssignment", "CreateOperatorControlAssignment", apiReferenceLink) return response, err } @@ -268,7 +268,7 @@ func (client OperatorControlAssignmentClient) deleteOperatorControlAssignment(ct defer common.CloseBodyIfValid(httpResponse) response.RawResponse = httpResponse if err != nil { - apiReferenceLink := "https://docs.oracle.com/iaas/api/#/en/operatoraccesscontrol/20200630/OperatorControlAssignment/DeleteOperatorControlAssignment" + apiReferenceLink := "" err = common.PostProcessServiceError(err, "OperatorControlAssignment", "DeleteOperatorControlAssignment", apiReferenceLink) return response, err } @@ -326,7 +326,7 @@ func (client OperatorControlAssignmentClient) getAssignmentValidationStatus(ctx defer common.CloseBodyIfValid(httpResponse) response.RawResponse = httpResponse if err != nil { - apiReferenceLink := "https://docs.oracle.com/iaas/api/#/en/operatoraccesscontrol/20200630/OperatorControlAssignment/GetAssignmentValidationStatus" + apiReferenceLink := "" err = common.PostProcessServiceError(err, "OperatorControlAssignment", "GetAssignmentValidationStatus", apiReferenceLink) return response, err } @@ -384,7 +384,7 @@ func (client OperatorControlAssignmentClient) getOperatorControlAssignment(ctx c defer common.CloseBodyIfValid(httpResponse) response.RawResponse = httpResponse if err != nil { - apiReferenceLink := "https://docs.oracle.com/iaas/api/#/en/operatoraccesscontrol/20200630/OperatorControlAssignment/GetOperatorControlAssignment" + apiReferenceLink := "" err = common.PostProcessServiceError(err, "OperatorControlAssignment", "GetOperatorControlAssignment", apiReferenceLink) return response, err } @@ -442,7 +442,7 @@ func (client OperatorControlAssignmentClient) listOperatorControlAssignments(ctx defer common.CloseBodyIfValid(httpResponse) response.RawResponse = httpResponse if err != nil { - apiReferenceLink := "https://docs.oracle.com/iaas/api/#/en/operatoraccesscontrol/20200630/OperatorControlAssignment/ListOperatorControlAssignments" + apiReferenceLink := "" err = common.PostProcessServiceError(err, "OperatorControlAssignment", "ListOperatorControlAssignments", apiReferenceLink) return response, err } @@ -500,7 +500,7 @@ func (client OperatorControlAssignmentClient) updateOperatorControlAssignment(ct defer common.CloseBodyIfValid(httpResponse) response.RawResponse = httpResponse if err != nil { - apiReferenceLink := "https://docs.oracle.com/iaas/api/#/en/operatoraccesscontrol/20200630/OperatorControlAssignment/UpdateOperatorControlAssignment" + apiReferenceLink := "" err = common.PostProcessServiceError(err, "OperatorControlAssignment", "UpdateOperatorControlAssignment", apiReferenceLink) return response, err } @@ -563,7 +563,7 @@ func (client OperatorControlAssignmentClient) validateOperatorAssignment(ctx con defer common.CloseBodyIfValid(httpResponse) response.RawResponse = httpResponse if err != nil { - apiReferenceLink := "https://docs.oracle.com/iaas/api/#/en/operatoraccesscontrol/20200630/OperatorControlAssignment/ValidateOperatorAssignment" + apiReferenceLink := "" err = common.PostProcessServiceError(err, "OperatorControlAssignment", "ValidateOperatorAssignment", apiReferenceLink) return response, err } From 599928acc1b58e2d1d84e2647dc9400d1d357d24 Mon Sep 17 00:00:00 2001 From: Ravi Prakash Bharti Date: Fri, 25 Oct 2024 18:54:43 +0530 Subject: [PATCH 20/24] Finalize changelog and release for version v6.16.0 --- CHANGELOG.md | 52 ++++++++++++++--------------------- internal/globalvar/version.go | 4 +-- 2 files changed, 22 insertions(+), 34 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index f39ff9f378..38c594852d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,35 +1,32 @@ -## 6.15.0 (Unreleased) +## 6.16.0 (Unreleased) + +### Added +- Support for ESP & ICMP traffic support in NLB +- override_existing flag for container_engine.addon resource +- Support for Extending LBaaS to send traffic to gRPC backends +- Support to return the generated secret in response +- Support for Model Version Set - DataScience BugFix +- pdated resource scheduler public documentation +### Bug Fix +- Updated oci_core_instance_pool resource to allow unordered attach/detach operationsupdating tests to generate reports for Acceptance and Backward compatibility +- Fix Audit and SQL Firewall bugs - DataSafe + +## 6.15.0 (October 23, 2024) ### Added - Support for FSS Resource Locking - Support for ADB-S: Customer Managed Keys via Azure Key Vault and AWS KMS - Compute support for ZPR -nlb-cp zpr support +- nlb-cp zpr support - Support for Add DB 23ai support to Globally Distributed Autonomous Database -Support for OCI Data Science Model Store Backup and Retention +- Support for OCI Data Science Model Store Backup and Retention - Support for FC Redundancy Project -- Support for OIDC Discovery in OKE -- Support for Support Cross region Backup copy & Replication for volumes encrypted with Customer KMS Keys -- Support for GenerateOnPremConnectorConfiguration resource in Data Safe -- Support for OIDC Auth Terraform -- Support for GoldenGate new deployment creation page and extended connectivity test results -- Support for DNSSEC -- Direct API support for OCI BSS -- Support for Desktop as a Service: Desktop Session Lifecycle Management -- LBCP ppv2 support -- Desktop as a Service: Shape Flexibility -- Support for Operations Insights : Autonomous Database IAM based connections -- Support for Customer Facing Scalable agent upgrade | ExaCC and ExaCS -- 9/24- Support for ZPR v1 -- Support for PV Support for Launch w/Multiple Attachments Support for VMs -- Support for Stack Monitoring Maintenance Windows -- To Support for Depracate old apps admin user creation with password -- Support for Desktop as a Service: Private Access + ### Bug Fix -for the ACD Version selection using env variable and vmNetwork should not consider state for calculating hash -Fixed the timestamp issue to corrected form +- For the ACD Version selection using env variable and vmNetwork should not consider state for calculating hash +- Fixed the timestamp issue to corrected form -## 6.14.0 (Unreleased) +## 6.14.0 (October 16, 2024) ### Added - Support for OIDC Discovery in OKE @@ -40,15 +37,6 @@ Fixed the timestamp issue to corrected form - Support for DNSSEC - Direct API support for OCI BSS - Support for Desktop as a Service: Desktop Session Lifecycle Management -- LBCP ppv2 support -- Desktop as a Service: Shape Flexibility -- Support for Operations Insights : Autonomous Database IAM based connections -- Support for Customer Facing Scalable agent upgrade | ExaCC and ExaCS -- 9/24- Support for ZPR v1 -- Support for PV Support for Launch w/Multiple Attachments Support for VMs -- Support for Stack Monitoring Maintenance Windows -- To Support for Depracate old apps admin user creation with password -- Support for Desktop as a Service: Private Access ### Bug Fix Fixed the timestamp issue to corrected form diff --git a/internal/globalvar/version.go b/internal/globalvar/version.go index 0aa62503d3..03d91730e4 100644 --- a/internal/globalvar/version.go +++ b/internal/globalvar/version.go @@ -7,9 +7,9 @@ import ( "log" ) -const Version = "6.15.0" +const Version = "6.16.0" -const ReleaseDate = "2024-10-28" +const ReleaseDate = "2024-10-30" func PrintVersion() { log.Printf("[INFO] terraform-provider-oci %s\n", Version) From 211b65f43509ff5dadd73b529471b4f2a1ca7106 Mon Sep 17 00:00:00 2001 From: Ravi Prakash Bharti Date: Wed, 30 Oct 2024 12:19:11 +0530 Subject: [PATCH 21/24] Added - Release for v6.16.0 --- CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 38c594852d..a6f2bf9bef 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,4 +1,4 @@ -## 6.16.0 (Unreleased) +## 6.16.0 (October 30, 2024) ### Added - Support for ESP & ICMP traffic support in NLB From 1f04ec039681968e33a1923d43cf23f1dab0ae27 Mon Sep 17 00:00:00 2001 From: tf-oci-pub Date: Wed, 30 Oct 2024 06:55:24 +0000 Subject: [PATCH 22/24] Added - Description files for service examples --- examples/globally_distributed_database/description.md | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 examples/globally_distributed_database/description.md diff --git a/examples/globally_distributed_database/description.md b/examples/globally_distributed_database/description.md new file mode 100644 index 0000000000..4252927019 --- /dev/null +++ b/examples/globally_distributed_database/description.md @@ -0,0 +1,4 @@ +# Overview +This is a Terraform configuration that creates the `globally_distributed_database` service on Oracle Cloud Infrastructure. + +The Terraform code is used to create a Resource Manager stack, that creates the required resources and configures the application on the created resources. \ No newline at end of file From c3155555f694a199d2a1bd4d0e97854a045a9242 Mon Sep 17 00:00:00 2001 From: tf-oci-pub Date: Wed, 30 Oct 2024 06:55:26 +0000 Subject: [PATCH 23/24] Added - README.md of service examples with magic button --- .../globally_distributed_database/README.md | 6 ++++-- examples/zips/adm.zip | Bin 3439 -> 3439 bytes examples/zips/aiAnomalyDetection.zip | Bin 3302 -> 3302 bytes examples/zips/aiDocument.zip | Bin 1793 -> 1793 bytes examples/zips/aiLanguage.zip | Bin 1682 -> 1682 bytes examples/zips/aiVision.zip | Bin 1655 -> 1655 bytes examples/zips/always_free.zip | Bin 3850 -> 3850 bytes examples/zips/analytics.zip | Bin 2766 -> 2766 bytes examples/zips/announcements_service.zip | Bin 2718 -> 2718 bytes examples/zips/api_gateway.zip | Bin 27065 -> 27065 bytes examples/zips/apm.zip | Bin 47791 -> 47791 bytes examples/zips/appmgmt_control.zip | Bin 2681 -> 2681 bytes examples/zips/artifacts.zip | Bin 7102 -> 7102 bytes examples/zips/audit.zip | Bin 1804 -> 1804 bytes examples/zips/autoscaling.zip | Bin 5681 -> 5681 bytes examples/zips/bastion.zip | Bin 4998 -> 4998 bytes examples/zips/big_data_service.zip | Bin 13161 -> 13161 bytes examples/zips/blockchain.zip | Bin 1898 -> 1898 bytes examples/zips/budget.zip | Bin 3741 -> 3741 bytes examples/zips/capacity_management.zip | Bin 18114 -> 18114 bytes examples/zips/certificatesManagement.zip | Bin 10431 -> 10431 bytes examples/zips/cloudBridge.zip | Bin 9949 -> 9949 bytes examples/zips/cloudMigrations.zip | Bin 8429 -> 8429 bytes examples/zips/cloudguard.zip | Bin 26197 -> 26197 bytes examples/zips/cluster_placement_groups.zip | Bin 3160 -> 3160 bytes examples/zips/compute.zip | Bin 55516 -> 55544 bytes examples/zips/computecloudatcustomer.zip | Bin 4199 -> 4199 bytes examples/zips/computeinstanceagent.zip | Bin 3311 -> 3311 bytes examples/zips/concepts.zip | Bin 4864 -> 4864 bytes examples/zips/container_engine.zip | Bin 25928 -> 25520 bytes examples/zips/container_instances.zip | Bin 3326 -> 3326 bytes examples/zips/database.zip | Bin 159606 -> 161503 bytes examples/zips/databaseTools.zip | Bin 6461 -> 6461 bytes examples/zips/databasemanagement.zip | Bin 19637 -> 19637 bytes examples/zips/databasemigration.zip | Bin 8500 -> 8500 bytes examples/zips/datacatalog.zip | Bin 3256 -> 3256 bytes examples/zips/dataflow.zip | Bin 3618 -> 3618 bytes examples/zips/dataintegration.zip | Bin 18640 -> 18640 bytes examples/zips/datalabeling.zip | Bin 2175 -> 2175 bytes examples/zips/datasafe.zip | Bin 80723 -> 80723 bytes examples/zips/datascience.zip | Bin 50964 -> 50964 bytes examples/zips/delegation_management.zip | Bin 9452 -> 9452 bytes examples/zips/demand_signal.zip | Bin 2083 -> 2083 bytes examples/zips/desktops.zip | Bin 19178 -> 19178 bytes examples/zips/devops.zip | Bin 46272 -> 46272 bytes examples/zips/disaster_recovery.zip | Bin 12820 -> 12820 bytes examples/zips/dns.zip | Bin 13725 -> 13725 bytes examples/zips/em_warehouse.zip | Bin 1379 -> 1379 bytes examples/zips/email.zip | Bin 5650 -> 5650 bytes examples/zips/events.zip | Bin 1807 -> 1807 bytes examples/zips/fast_connect.zip | Bin 8373 -> 8373 bytes examples/zips/fleet_apps_management.zip | Bin 5676 -> 5676 bytes examples/zips/fleetsoftwareupdate.zip | Bin 5324 -> 5324 bytes examples/zips/functions.zip | Bin 3475 -> 3475 bytes examples/zips/fusionapps.zip | Bin 12261 -> 12261 bytes examples/zips/generative_ai.zip | Bin 4773 -> 4773 bytes .../zips/globally_distributed_database.zip | Bin 9310 -> 20518 bytes examples/zips/goldengate.zip | Bin 7407 -> 7407 bytes examples/zips/health_checks.zip | Bin 8826 -> 8826 bytes examples/zips/id6.zip | Bin 1003 -> 1003 bytes examples/zips/identity.zip | Bin 16317 -> 16317 bytes examples/zips/identity_data_plane.zip | Bin 1948 -> 1948 bytes examples/zips/identity_domains.zip | Bin 69207 -> 69207 bytes examples/zips/integration.zip | Bin 2683 -> 2683 bytes examples/zips/jms.zip | Bin 11220 -> 11220 bytes examples/zips/jms_java_downloads.zip | Bin 6918 -> 6918 bytes examples/zips/kms.zip | Bin 9520 -> 9520 bytes examples/zips/license_manager.zip | Bin 5213 -> 5213 bytes examples/zips/limits.zip | Bin 3707 -> 3707 bytes examples/zips/load_balancer.zip | Bin 6839 -> 6839 bytes examples/zips/log_analytics.zip | Bin 18960 -> 18960 bytes examples/zips/logging.zip | Bin 9687 -> 9687 bytes examples/zips/management_agent.zip | Bin 4134 -> 4134 bytes examples/zips/management_dashboard.zip | Bin 5585 -> 5585 bytes examples/zips/marketplace.zip | Bin 3062 -> 3062 bytes examples/zips/media_services.zip | Bin 9090 -> 9090 bytes examples/zips/metering_computation.zip | Bin 7270 -> 7270 bytes examples/zips/monitoring.zip | Bin 5315 -> 5315 bytes examples/zips/mysql.zip | Bin 7758 -> 7758 bytes examples/zips/network_firewall.zip | Bin 12995 -> 12995 bytes examples/zips/network_load_balancer.zip | Bin 7133 -> 7197 bytes examples/zips/networking.zip | Bin 42171 -> 42171 bytes examples/zips/nosql.zip | Bin 5136 -> 5136 bytes examples/zips/notifications.zip | Bin 6649 -> 6649 bytes examples/zips/object_storage.zip | Bin 11843 -> 11843 bytes examples/zips/ocvp.zip | Bin 4736 -> 4736 bytes examples/zips/onesubscription.zip | Bin 7807 -> 7807 bytes examples/zips/opa.zip | Bin 1703 -> 1703 bytes examples/zips/opensearch.zip | Bin 2613 -> 2613 bytes examples/zips/operator_access_control.zip | Bin 6928 -> 6928 bytes examples/zips/opsi.zip | Bin 35410 -> 35410 bytes examples/zips/optimizer.zip | Bin 2339 -> 2339 bytes .../zips/oracle_cloud_vmware_solution.zip | Bin 3979 -> 3979 bytes examples/zips/oracle_content_experience.zip | Bin 2090 -> 2090 bytes examples/zips/oracle_digital_assistant.zip | Bin 3038 -> 3038 bytes examples/zips/os_management_hub.zip | Bin 15606 -> 15606 bytes examples/zips/osmanagement.zip | Bin 8224 -> 8224 bytes examples/zips/osp_gateway.zip | Bin 3540 -> 3540 bytes examples/zips/osub_billing_schedule.zip | Bin 1704 -> 1704 bytes .../zips/osub_organization_subscription.zip | Bin 1757 -> 1757 bytes examples/zips/osub_subscription.zip | Bin 1795 -> 1795 bytes examples/zips/osub_usage.zip | Bin 1749 -> 1749 bytes examples/zips/pic.zip | Bin 8004 -> 8004 bytes examples/zips/psql.zip | Bin 3454 -> 3454 bytes examples/zips/queue.zip | Bin 2767 -> 2767 bytes examples/zips/recovery.zip | Bin 4365 -> 4365 bytes examples/zips/redis.zip | Bin 2401 -> 2401 bytes examples/zips/resourcemanager.zip | Bin 6565 -> 6565 bytes examples/zips/resourcescheduler.zip | Bin 2123 -> 2183 bytes examples/zips/security_attribute.zip | Bin 2048 -> 2048 bytes examples/zips/serviceManagerProxy.zip | Bin 1691 -> 1691 bytes examples/zips/service_catalog.zip | Bin 3854 -> 3854 bytes examples/zips/service_connector_hub.zip | Bin 2891 -> 2891 bytes examples/zips/service_mesh.zip | Bin 9180 -> 9180 bytes examples/zips/stack_monitoring.zip | Bin 23415 -> 23415 bytes examples/zips/storage.zip | Bin 29943 -> 30335 bytes examples/zips/streaming.zip | Bin 2116 -> 2116 bytes examples/zips/usage_proxy.zip | Bin 3238 -> 3238 bytes examples/zips/vault_secret.zip | Bin 1999 -> 1999 bytes examples/zips/vbs_inst.zip | Bin 1788 -> 1788 bytes examples/zips/visual_builder.zip | Bin 1860 -> 1860 bytes examples/zips/vn_monitoring.zip | Bin 3703 -> 3703 bytes .../zips/vulnerability_scanning_service.zip | Bin 2339 -> 2339 bytes examples/zips/web_app_acceleration.zip | Bin 2374 -> 2374 bytes examples/zips/web_app_firewall.zip | Bin 2909 -> 2909 bytes ..._application_acceleration_and_security.zip | Bin 6483 -> 6483 bytes examples/zips/zpr.zip | Bin 1702 -> 1702 bytes 127 files changed, 4 insertions(+), 2 deletions(-) diff --git a/examples/globally_distributed_database/README.md b/examples/globally_distributed_database/README.md index 46e150c278..35db21c33c 100644 --- a/examples/globally_distributed_database/README.md +++ b/examples/globally_distributed_database/README.md @@ -1,4 +1,6 @@ -# Overview -This is a Terraform configuration that creates the Globally Distributed Database service on Oracle Cloud Infrastructure. +# Overview +This is a Terraform configuration that creates the `globally_distributed_database` service on Oracle Cloud Infrastructure. + +The Terraform code is used to create a Resource Manager stack, that creates the required resources and configures the application on the created resources. ## Magic Button [![Deploy to Oracle Cloud](https://oci-resourcemanager-plugin.plugins.oci.oraclecloud.com/latest/deploy-to-oracle-cloud.svg)](https://cloud.oracle.com/resourcemanager/stacks/create?zipUrl=https://github.com/oracle/terraform-provider-oci/raw/master/examples/zips/globally_distributed_database.zip) \ No newline at end of file diff --git a/examples/zips/adm.zip b/examples/zips/adm.zip index a3250cfb88bac1d94667d78a76e6f3369abb526a..7246f8d2abe9cc9d0e69603973f0268786b2ef4b 100644 GIT binary patch delta 274 zcmaDa^)n-5WViPI1!IGKxUH(2utE< delta 274 zcmaDa^G#HAJ742&!VdK#bs|8T1FSCD znjNGLh&L{cWMl?voy^E&2@~7w$n=yQEU3xl027>Cz;z5PX36cq4AeL|fJX+*pUv%w S!e`@gN8#u5_<{Kcc+>y_@ixu? delta 178 zcmaDR`Am{Gz?+$civa|px&kKh8mUx&2{J{JJJZb>=fi{x> diff --git a/examples/zips/aiDocument.zip b/examples/zips/aiDocument.zip index e4f07238ec91efbf30bf28f5b0ee3a2fc882f5a9..331db5917bfc48908e5b4a61e5359ee7db24de54 100644 GIT binary patch delta 156 zcmZqVYvkh%@MdP=VgP~HW^ogFwb&zXD5gi>P@HHd#S9XOHU^6TMK?|jU<3(Ge!*x6 z6Wgr76u<-)EM~EQ2~OU`vL7r~!fL?`)Hr!Ps|=Wbj@1!`Z^&kk!k@(E2Ik*pQv(2w C%r!6o delta 156 zcmZqVYvkh%@MdP=VgP}tu7HWWTI|(d`P1vZ@=vsrVg`vs8-qoFq8q0MFoJ|8zhE?k ziEUP33Sa^Y7PDBu1SfA|*$);gVYOfeYMi{DRR+vI$Lff}H)OL%;ZI_71M_dQsR00k C3pDir diff --git a/examples/zips/aiLanguage.zip b/examples/zips/aiLanguage.zip index f6c952f09eeccaadd9d45d5b137f518089731ada..8aa955de57bd260b9ff4c06d98fbf5af51b391e8 100644 GIT binary patch delta 156 zcmbQlJBgP!z?+$civa{)o5fA!)nbplp_m?hLvf;=6f;O9+88VX6x}#Agb^e(`3<8X zOl-3X(;bK)Gm8aGaIzE20kA?=RtsjJ#>oz>GGKl@t0M~k5UV{3UzyDf%+Fy{0{}%l BGLHZN delta 156 zcmbQlJBgP!z?+$civa|px&kKhYOz;;yqOQ@MdP=VgP~HW^ogFwb>(YD5gi>P@HHl#S9XOF#(GJMK?|lWdsRLe$QwG z6Wgr8>x8QR?;m_i82lJossR01B Cdo^VM delta 156 zcmeB@>yqOQ@MdP=VgP}tu7HWW+U(U|`P1vZ@=vsvVg`xCn1Drqq8q1&GJ=FAzh^Xp ziEY+k^5OyumhxD_1SfChIS3Z3ndQOx#z?+$civa{)o5fA!)nt#np_m?hLvf<56f;O9$_Ok16x}#Emk}g1nVAVL zw%LX$2qHL<*#M?+^9g1N7O=|4?B+1R$%-8NAz~cn%s|s7Kjf4F^KCdCQ26su`IETp OP^1&MT*3SmTxtM3*g|vw delta 192 zcmX>ndQOx#z?+$civa|px&kKhYO+^<G#HAJ742&!VdK#bs|8T1FSC1 zjvb^9h&QfIW@H9xoh-=Y3KQEL%ajBWJj84R7i47#UL*aA-Q@Dwj4dyTjf}(T7qC3;A85tPNm>3x3CLd&zn4FcyjT}a6jYAwsams+~JrVX>VaH(22kPYZN~le`e>{JgXU z!Rl(FEn%7`?}L1V!WIk8xs%G(7oEj2Bc?2CT{>HV})d-LU~Es&wPRv8Y-W z=YgV1Al@H~s>XO96jkrzBeAH;N^n6@bs@nUiz?ehPZU)v5@GH{_M=o1s#y(5*vxvH z1-LASD=!+m@y{qNw6Xg@q2Xc}1zVD5@@|I-~H-(wwlE vJu3|svXEHgP7lMPsyW>c#jMZip;%O9Ww@cJx|9J^1u@$*(;X~7Ia3V)W;w?_ delta 1311 zcmdmanQ`Z3M&1B#W)?065Qypun8>TmUj3Cnz3wajWCI=%PJ~2^4U&WuGf3?oXRr`Z z{bn}CRjhnKu}H8%U}CbMjPm5nIR42W*jUlEPL^c%gz269P)B%k4SN9#$jr&_xvel1 z`|>!#6mOo&!^#F$I9JFHL*aiRZ@9uhVG)RlT?%TG`@{v16@y*6;Od>U7G?&9P_D`E z6{LYmxF_=`a&mDpFoOaB>?w(P%wW5gOIssr2aB=EIKl1mm$87^Wrm^fiGnR$p@!l| zMzC%fWpfOL<;oBrfvn!6Yy~lKu8`Vfc?}5+#nBqBa8s9S%!jzsQ^y!X;Q}2Vo^Dcr=%26LDMLD9Kk(Vgkmj0_BBObiTilMk{I3#-R`& zv6@0636gTa31o7XsR!K1ou;fDV6Pvvb-=J&)y^HRu-HzI8?11NrvG z^FUE05buvgRb#vlimLbVkyun^CAgrdx{%=io^MhkQ76FxR&1=Netl+8G%%|Z5;wX86ma_ z`CwK2MJOGvI7!$9;*Xi49#|E#ip9eePYzrxytz(H1ft>jY^BNP`MD=6NOJImhM)vF z!d;&w5TRfz>BItd7f9#+b;7uHJ&;A{(vsT=@y#=N>`~~d;0kl#=7|b>*}+x>YPe(d z%^r-YFUG&M{NLUJ2I@wbU3aK(j_ z6d|6OI!zBrG0Y>rNMZ;BBBtlT4LCb}6ExLuD^0$?oqe*vb_^dQbl#c?N%f!vD?95r zMCbF_R#>fZoddBRqR z!UQL?F4_qW--Cupw3qwuSia-=KZ&x^Bs0myNvmfld$$M5hpy-iX z6^Wr|=Bi>8HF~R~Fx0GCU5cW{aZMP8nw@KMQPg;>^}tZGX)UTBRM%mu>0gJcCT^MZ zWZCt47-r?J4@R-?)&}Xxf7e@KsEgbXkESjZg&(*v8ijvuV=9Ijp_@?6kXt1^`Qs)# z40VBTlUj3Cnz3wajZQ>Q6SHdw~V#mT^o zCN*)HHIizP$^O&Xz&cnNoxtKi<(vH&cQJtlxmnDxDo$mwg)3gkasZ+@husFN;xp{d zaK&OA+00;*TewZID!#)FaURGSay(`b#o_!$NQxmoT+8o`B!=*Zj6f>fwhn=xj1b#| ze6TA1B9snSoFr@l@yAS253Gt=#o}R#CkHMT-drap0@3h%w$kMD{M?fjBsq9OLr{Vo z;jYgTh)}SVbYcO!3#4=ZI$_+p9>^keY02$`_~w~B_9%2!aD_Q=^F)Qc>|iSbHQcfK zW{*Z7T(OAeC5U?hHOwZ<>j@%hfCTn)U~&TaaKa|h$#R?6(A^7BbW|@KW+E^hiflI5 zpA!al!nIa}ReEj4tYE>l{JN8RB+*SmgxBTnP?%|(^?Upvni?hsA-N5q_}j!1xZ=V| ziV)9Cou-GR80HaQBr${m5!3VF2ArL~37TrSl_uZc&OTXSJBE)DI&aN{q;C+-85_78i-=g1v+rSngxCk!Lthu zVS`dSIy8v=-G5s_QV-^shrz6Squy zvg~?246}0A2cy_`YlHOUzw50q)J1NHM^hJy!VlaSjlw^-F%`p%&`qdj$gPr|{Be^V zhPuGb$tY%B+nj)*CSpqyvYJUi?}=|!L>8JHxKVm?=~h_OA(GPdtu-j>-mZ|IJYkzU zh7~ur!IBRo8Mto84CeLQQN69R1C~q?_RZUohGDkaPRt-~+G&sCuE#rVG4wg@f+YLS GU1|UU1s4zi diff --git a/examples/zips/appmgmt_control.zip b/examples/zips/appmgmt_control.zip index 69102157839226201959f0c89e357bdea2f789bf..34c545ade6e88d142b09d1f22855bef424f7a261 100644 GIT binary patch delta 286 zcmew<@>7I2z?+$civa{)o5fA!)mMqUp_m>G#HAJ742&!VdMT>JpsUq3S00 zut+h3v>x{Y3ju{UOE9)Fg2W~-V6uP<-e-z}2->iCqHCVKk|hA9a1*N+M4d02Elh0k zM7ASf10&dNnSnM;e#;>P=5J>Y1oOF}d@YU$6#fzpHx%_eoZ%?)t(7I2z?+$civa|px&kKh>Z??LF_?=wX~1Z`M6(KSzA$r1olxQW#ZqRyAi7A7`% zBHIzLff4Ms%s?9^zvYkt^S84Hg8AG~z7|IW3V#WQ8;W`!&Ttg@R?avSJ}Z|um>o1Ln^WjlfVNCgy^o zrbf&Uh5tq@5JOMAII5cS;u#ofA|?D$%sC~IjlvI?Y(e4wm2|)`BVNiIMa>zhBouyt Lv@4iDLs|_01m?$) delta 583 zcmdmIzR#RDz?+$civa|px&kKhYO+^<J}Sz2T-*u>i+=FGrQm~1F5HaS3o4J>9N>IM~)0rTgGMqsEB6LUdP zQzPbw!ha(ch@mH5997ME@eB+#krMtW=A4qqM&XA`wxIC;N;+Ve5ijM9qUMZL5(+;+ L+7-;7A*}`gM{&ls diff --git a/examples/zips/audit.zip b/examples/zips/audit.zip index b2fbe7d1b754b328471b5a935789245fd6310a20..5d6d203b7a285d523c692c4c34283090b1f0d301 100644 GIT binary patch delta 178 zcmeC->*3=K@MdP=VgP~HW^ogFRaGKyD5ggPacKoN10%~zW(Ee9dY~*wod}TT0ILhr zV+W}N;*H(@jLbl-lkYO>z{EBSFm*721!uDu!vrT^W!ViDo6Ks=4AeOJB&!UV|AN&9 Th402@g~DIN<_P9LV^aeF_H8)p delta 178 zcmeC->*3=K@MdP=VgP}tu7HWWsw&lA`P1uwxU_l T!gph{Lg6oBa|H9Bv8e$7>pp_m?hLvfJF_KRu$_4o6IjrM%>*u(&lbQa2-F@adU@9@ed((&EYbIiEUoNwSom~UNApGu%DkBqH?Yv+~&!51^0s$&KI&|2D*5%qp%E^ u|4YaPg`Xhoh{8WC?2f|M5phD{PY`iM;eQu#M&ZYZqVf-lLd@e9Qv(3Is(Nt% delta 357 zcmdm}vr&gPz?+$civa|px&kKhYO_~=Vqwr%yQTYc&A?9(5sR01IIC<*; diff --git a/examples/zips/bastion.zip b/examples/zips/bastion.zip index 9564047446ba08111eda508e63a1ab9fec5c9d21..6b9179806afcc3236c968e7e8399c94b0629a9ea 100644 GIT binary patch delta 303 zcmZouZ&T+D@MdP=VgP~HW^ogF)!8F&D5gi>P@HHj#S9XOFa(PLMK@0HVF3wEzRzL+ z6Wc7t>dy!k%wU5n+`NG80TWoTnNt_0a`JZ0!(g#mE`-9ZT(2Rz7xS3H72fCB1y(qR z*9a!I`6};9h>48?rp!RMO#UY%16FiHz#fHfDQJhnpDBnc|4YysMLt{zRepz%Gm5;d LumhN%Agl%eRXT4V delta 303 zcmZouZ&T+D@MdP=VgP}tu7HWW>g?5D`P1vZ@=vsuVg`vs7=lHBq8lgpuz-Xn-)Av^ ziES2R^=AYNX0X8(ZeGClfC((v%&7}gIe9zhVX#;&7ee7yuGbLVi+N1p3h(pm0xO)u zYXlS9e3f@4#KcAcQ)ZxBCjS$X0V}#8V2{GL6tqL(&lE(J|0QURA|Eb8AV=J L*a6H>5LN>KQ1Wi6 diff --git a/examples/zips/big_data_service.zip b/examples/zips/big_data_service.zip index 4c6be6b7d4e4a633c68e57b93a070b5d184b5128..514fcab3ba5e579ae09e2a1f94cfae7d6fd33c25 100644 GIT binary patch delta 804 zcmaEv_A-q(z?+$civa{)o5fA!HDHgtp_m?hLvgZ#qzETMBGCy+LW&ur_P8fl2&jIu zI3p7iNNlnUvo*T9$<@pdym?uFLMzUFADBQ;805|b3+f_!eiOZz5CvgfQtK|b) z6lwc2|K4h51_n{i$$~NplM^^4;9BcBk1~U`y7Rgt>k|a&OO>=cE6mBjkgLSNU@`fj zgzRJmeFZK~24;}AK`vzH)8z!~HW!Du5F}VG9tm;HWeGQABf$!7C4J#`Pm~mb_-~oC z4TeHC8E3e{0GVSDM@lM~!v(_?LfFAZu2Z*z2~Pg3z6b1Ma2$aNu#eXniNc%>i7jxX zOqSI2g6Z6xrKt>Y^#mxsu$cT% zLUyu(z5*8~12f3mAQ!Up>2iW~n~OtS2ofw8kA%49vV@L2GJK#h~{u*rb==4_5A{8?=FDE!}SZeYF(yBYvW C88+7d delta 156 zcmaFG_ll1wd7vh diff --git a/examples/zips/budget.zip b/examples/zips/budget.zip index d2d6c349069b9c7d1a7ce97b66fc175ce7889802..f1c1f41746b4d7dcad99c55f3bba1be17c93ad93 100644 GIT binary patch delta 415 zcmbO$J6D!Bz?+$civa{)o5fA!Rb!95p_m?hLvf;&6f;O9+(HE^l3rTD&A`a=l9_>l zr5>mrq*DY)bAWYjwg>A3s@?eWJ2Ob@=tbUAO!74TrnBe5CY&*eXh3vXU z#8?ukZ&F!)5@>%fKLdl@#Dl_oT?3ADeLpMgPc;z8lbkJ*J`rfvSq{uE;GQ*IMxpmCFBcx1rFTl2UnfsDs+ pKO>VIGu#K07xVZMqfCg`mKbG)yiO>NxXNoyj5Z@ah_-S*H2`sYZ^8fo diff --git a/examples/zips/capacity_management.zip b/examples/zips/capacity_management.zip index 0a9a99d413e93f6db9bb3543b4f56479c1e7c429..9aae4aa5f1bfecf12a72f6c1ee9a2070921c2f6c 100644 GIT binary patch delta 1153 zcmX@q%Xp}lkvG7bnT3l11YVoPP2@FZkG!Fn9(_Y`vZIIyCqg2{8%aWn8Km}d8dwOZ zezOCk5GzP*awuCgy1L0%*gD|~Q`qYn!3v*o1YjtP;w*wIyv%tBqHqScJBC7Lo;bL| z44zdiU=u|JeK8ca31-6;{t)~IG4Z3YCx*f}ktDdn<08i)3MYyMV<_YhFNZ5^6Tc5p zm?0U8q41$(4P0T0lmZjjjqNfvaKTeD;Sk*_a)B7SXUY}B6$;D0hbUxK#0=aP#df$t zA*H7fg};=o;DXjF|2e>R+v)~kShHET6s}NT&jX^nO5YJCIQfwN5wPY?16O3tg21?r zbgbLyR?7rTH=GO%E|Ud$R3`Uu@=P``l!58q9Beop;_r!KdXxR#6nH{II2o7`2@IT$ zCa0KGz;!$}se(8n!ORh)aB`um4A=pO%_714jW!Uzop}k0ysxA59z}kYLnDg3uVW^P{0+ycDExjW4;1x3of1&wtDT!s i_zEumDC#G=1f$5axn`iqPjF2{kr#Gr1M}y&sR0109Hx2z delta 1153 zcmX@q%Xp}lkvG7bnT3l11fseECh{7ySAXSCulveB*-=D<6Csh}jU*w(3{rbJ4J-sy zzuAFNh!rF@Ig~9LUESm>Y@Kk0DeU!(V1>^(0x%RtaTdW9UgkUmQ8SmazFSOlna zvl`nc@oixQ zn`zP>4e57u;Og#+rbEp06!$_`w_Q9D zu1;Pe8KSOLG8kRmAITE9x^k&Jh`JZjp6KdAW#ZxLcFV*-)Je&?zyv3!${hx~SzF!( z6fl!z)n&l^iSmJ9evT4^&!P~IBHyYIjUvyaSd1b+QC@oTCPgz8HC##%Ghk+REBT`6 z`K9ECqCQJG3Pt{zasrBchDrm9JeO(&ihPS|K8n1kS|W=447DZ{c^ma`6#1>{xhQ-W LjUX_8riK~-uvq`9 delta 710 zcmdlVxId6Lz?+$civa|px&kKhnz2`ZD z&9xM;hZ|Ba5C##vA?Sc^nT?PSTwT9V91~dc2azCjb!nnSaCP@Z(;?=0ihH4}+b*66 zS0^u#3{lrA8H}#(k7Nm4UAa^qMBNK%Pjq#mGVySAyJcb^>ZIgcV1koVX z3Yf{V>M~&dMEO84KSv3|XHkepk#ALqMv-SyEJl%^C@(#ElcE`l8ZIS>889=um3&e3 z{8I8mQJpp_m?hLvgYLvj`_bBE}p^LW&urcDplJ2&jHD zBja~Qkl5tkOm^t%CdV=d!xe64He&)S{3xIl zAc&r|JZh5*R9GjobMj(XV!`PS*U-kP!VI=#Esq6;LQY;cxWX`A4v5K#{3dY0Is8Eo zzkC!h!qDw5h;Ubj;9Yj8HENUlB!w^(ACW}3Nl2;>V(MaPOPE!YA4?wq8?a2q8bdRy ztS?O6=1AFWi00#RmY|@T{7^}3@&-jVux2HBSE!f_nBOTMh@s|>ybp?+EQLf2HE$Ih zP}KMgY56m>Q#*qk6e k`Jf7l@ss&fVa|XAL941ehWYPQJyFb#REq}lx2vfE0Am~#$p8QV delta 776 zcmccXd)JpYz?+$civa|px&kKhYO_~=lVh2K;R?4in=yeEeiTp_N>9xzDb^1S;bdS&SPC|KvKyNfTu(b& z5Jb;f9<|8@Dy);)Ie9TGvEX!vYiQ$CVFp{Wmd64^At$dJTwxe52gKw=eiOLh9R47P zUp@*LVd!=jM7XO%@Gd*l8nwxNl0q1Yk4PfiBqY@bF?F%DCCsYHkEIWQ4Ok{)jiH%U z))%I3bEIrGMDuYuOHfcveyAiid4nPwShJG6D^yGd%(inzsrL zC~Eu_JuuYlRCGg8qo@>$MUC|2%}UzH>Lw|NAaf^|DLY|kd#fNl`Kz)jiaHw=Y)+7# jd{70&_{n^#FlRu5pjFi!!~A!uo+xHVszrnO+tt(n=xh|V diff --git a/examples/zips/cloudMigrations.zip b/examples/zips/cloudMigrations.zip index fb109fef69686e180d59f4c2e38165f4b99c3052..b468f287aa0fca5a02907f375eb214d920c098e4 100644 GIT binary patch delta 596 zcmaFs_|}m(z?+$civa{)o5fA!)n|{qp_m?hLvgYKhX^M^BEb$xLW&ur_K-hV2&jIu z1mjL-kl5raEcWQ?CY!Sc!WH(jdNY9)-etGJP-x5HjZnxD#0FOQgwFylsLUV42o|gm zu)@%NO~4JIP|yfsO@y!uhQb5F(Qt)IBF0dKVm=rOPl)Bh721fegIN7m!WJet*--Kj z*g4-MZJB|=FxgRF2FwqY@`3WjCJV?y{Bc++7DbJdv@eF5jneTbYK&yOFx1SGiNp|- wlyyVV*C^|Oq2{%02#T6SxgZQRSLHHM)FjA9VW_zyUyUJFso)J3JFcJx0CjoC#sB~S delta 596 zcmaFs_|}m(z?+$civa|px&kKh>a$mW&ROSz21PfLO zSYhbCCg6rpC};$+CPLT+L*W78Xt+Wp5o4%AF&_+tC&Y5$3T?#KL9Bi&VG9$SY$$mM z?3{0sw#>j_nCvJo1LlWH`9S$%lLcfU{x~cZi=xI!+80C3M(KDIHAXUC7;5IpL}G|Z w%DSQGYn1iCQ1e;M1& diff --git a/examples/zips/cloudguard.zip b/examples/zips/cloudguard.zip index 680a6027f22dc09eb6bee4ea51ae697d7ca66ae8..0b6a2f9dcd52ad5a769bff10e8bb3bc15fdaa49d 100644 GIT binary patch delta 1321 zcmcb5hVkkdM&1B#W)?065O{4CH<4G1J@STPdh`v&$rpS@I1v)j=13A!%pkSfg1|yR z^_%$_t5`r{lY3Z0(bY|6Ws89;%wTh87X&Jd1ltHDR3>k9keD1B#m^HO!pXplZ~)kz z$pU;4aQ*pw&1_(czKR%PSmY(@23I&;bP+_Mjf@wD!c{VXaD_~=v)REWE>N+@P{^zr z23MG%D##30SfXJJ7hI>|!w44qt7(CuJ5tL7u5g8xDn$1MT{8@YT6!*Ug{684Fomj< z^%8h6!UPm6)ubAk760JW!0(8nrV)9i}>2$5a@@&ScXN zxSjhhv`Tz(y(QP=KZ$(E*8Q~fg#`BnUDe5X z4uZ(0fSs|}ApmaOFNZ0R)H2c48AIU@S4ez;JmKl)0*RXmzLppY-})lr#>?*r#J7Th z)))#40;AwoUkscDu{tjd5??@TCa(?K4R&L8xCJQjOd>#*tYl^7|t_P~W4RvSf)b6gmT8vP{c$=BjEQPe2L2Vtn$5Ra5ye KREYca)6@WgOYJBC delta 1321 zcmcb5hVkkdM&1B#W)?065Qypun8>TeUj3Cnz3waj;W;U=zUquWtEb6=Vi0EYUEA3$D}fVFU~Q)wICS9jWC3SGYn;6{7ost{H|xEj<^w!cx5im_pUb zdI>xjVFC`mUH_fja+w$y0@)cD^d<|cN=(*IkmiC09wJs z+|GTbGa+_HS(+d#1Y5N>`Lu&E8w0~+U}De$S|vWY-jZwbpF}=n>wa4LLW28(uIl7G z2SH?0z|L6g5CFICm%|iDYMJQjjG^#{Dpk+ya#NCNGGT0rQWByF&Ph5WY@C0*d^) zh-4Ib1MP4*H5JkQt85&m5xMNCjN0HA?frbrK{$q+KihN9J1`7XK KD#ZQzX=(t>1?x!w diff --git a/examples/zips/cluster_placement_groups.zip b/examples/zips/cluster_placement_groups.zip index 96cbf2b7779a6d62d6fbb2fe3bf3eda3004584cf..e8e7e09b5da81eb4abf92098cbf053634576d9c9 100644 GIT binary patch delta 230 zcmca1aYKSPz?+$civa{)o5fA!wP26Dp_m?hLvf;y6f;O9(-JHK6y3Penh7K{`8ks# zOl-40b37wha3YI6T<|&zRHZ1p8%%I=68mAWLJbat!aNQyi0<8-Zp=U{Cg09BQ239yA@W8%Y5=^QQ78Za delta 230 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ΠmX7`P&gu8QM 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 I{PpSo0dAZRrT_o{ diff --git a/examples/zips/computecloudatcustomer.zip b/examples/zips/computecloudatcustomer.zip index 94ad93a368301d908a1239117e69845d9c3f7e50..5de3779ca3a17c1b1cbc1c6b3b0cb4fb933f9a6f 100644 GIT binary patch delta 277 zcmaE^@LYj6z?+$civa{)o5fA!HDiywp_m?hLviv%c9Ds3Y|J3h^gtw0DX`F;G_Vj* z@n%m(PZp5a>2*MXo0{|8S BU#EuPxZrKpNJg-rIeRd==E>{Wv)~HlIo2|R6`tpIfeB8Q;yDHud(7j) z476ghBcIr02VSsaCVTS6L&apkYEJQ%pzss;d@=N#=SxIU6U1ME!hgdb1mO#)0RRx! BUq}D| diff --git a/examples/zips/computeinstanceagent.zip b/examples/zips/computeinstanceagent.zip index 4da76e2ba8feb7541268e32cac0a7cdafd2996ec..4081628cf409932333b9a621a432044a3f8575d6 100644 GIT binary patch delta 235 zcmaDa`CgJYz?+$civa{)o5fA!HBpJYp_m>G#HAJ742&!VdK#bs|8T1FSC9 zmK~%Hh&Qf`WMl?voy^MQO_birB}^$W&71EtEnx%eZsT-<2~IxGc?2vrjmwD{Xv5^& jTryz(FD`E|--8>%Pv?$Ak$=Qpgu*Z52>|m?@~8m-P<~2m delta 235 zcmaDa`CgJYz?+$civa|px&kKhny6HNr*lW5$UovPLgAP31c3P`dDH+(UrHkY diff --git a/examples/zips/concepts.zip b/examples/zips/concepts.zip index 6fc0fdda86d867f395666970413d5456c54310f2..88dddaf15d379177882ccb9784f6085e0e7a0ccd 100644 GIT binary patch delta 449 zcmZorYf$42@MdP=VgP~HW^ogFHP|C>D5gi>P@HHZ#S9XOw1JDvfr#vM28#gIZDwZl zU;?R{?8j`1rfl+ZW(T;scg(LC!Rl_a+Q9`C*jOQg8tguB!D{wah#)hkAzaX!(;p(( z%jF0b1i5dHlpxUN$ccBiE&IvHz@W&=z+g04kW+N>1}@3TdfYs4-HzPC5J!gdn!yAo zPvPAIc2F>%88gr)lP~a#al(UP@@hUWsHhBBl{kMO7FAvR&M2zh^ZTLj;{|+B_-6&8 fQ23sL_E0{u-KzxsQB+9_g`w~#3%P*#w}jLHB8Zo0 delta 449 zcmZorYf$42@MdP=VgP}tu7HWW8tm0y`P1vZ@=vspVg`vs+Q3ETKty&rgGGSqHZwDN zFo9G}_G30hQ#N@yvjbe+JLXr6V0E`y?cjn6Y^)GL4R#;6U^ROyM39-&5H4uV=?@X? z<#GfIg4{PpN)TvsfYuXB1WM`TbD%@d7?5{Idd4 fD11*rdng~-?p1>RD5|7|!ch2=gQ~t`_uy3;q!_WCm+D5JhNj6^(Ixl^xsn_gHJ2txaVyb zO4)v93qBHh){7#6kjKIhEbqg(DaZK+k&*!P&PrmMc2F@V9HtzMnQG&PakH6r&t zhh+DX>l3cey8X=UZnIBd9#ce!>Bh$o&fHg9e#B8Uq49wEvw0n%M;g{@AM()4N_IRi zbJOV6dQ-P`8huktB0rVQ6FFn_p5OKS5?6;QZzaTYdIgV8cgmG?{}vpk({#G!%gcwZ zEH~BfdT(qxRkho#e%GSY-0V`tPFJnkfew{=p;!LPurjBj$E{-F%cvE9_NC?&&iQ%1 z=3{Y{#BqzVxJ?h139VT;DOXWr^Hckse_~&TJ~*+2{Xk*oZXun!303wRmbsoXKfmc? zlE}q>zcZfoXB<7PEbaH$F7wxvRNX|$tog^*h2}O!O~0)B=HR9ONB`Fs+1P)$7Go)4 zF6a8Fm02&A+dyzyc%#c0 zom=G@0($(i?hlhXI`b=uhyudjAN!34ve{HQ1 z-*r$yYws~5!C8R`bt1Cu9W`0A>m%23y^)%w{P~7;%+}~X{0ut$xeYc2IZ0k3DeV^@ z@2eDeW4y36@Stp9tK;JN%hw(|=6l?IpNhYb>W9XddG1>4nJ0VBR<)~Myx&&8diG6= z>-<+bzKfWg;Qe>uhTiRF51rhYqR+&@2k#Ii<@b20k;+&JGSb){lCgzg{5_F;o|l2 z_vgg3zKwNk`MrGgy8!vcLOk6!T@-DjTb%EGs4D*K6t&~0gJG-<=R+QScYlA~pVy^a zoDV$>-=&mb6gR=xr(lmx;XK3AP|e)J3Qp^P8|oD!RN0%KJ03BZ$ul*jd1{68E>V7# zm%lF@{j`SJZfd0=bJY>wWoH%QqrO$~WZYOK`@?e0;^31FoYGq7L=tNh1C6S#oRaF& zk2}-2eOKFs6Y;TC>@#O1o_BclVac@<>lTadE4;qk++)s056_G@d%hgMYvbv+w^Yq! z!y?X4jjO_V>))2lnJ|gdc$-w-JT}Xtjhp6H?3w#-Z;+O6c=UdI=F%xUeCzl6`Zll2%fEblq2ZHH_MqxZ1XwU}fU2*^{+pJ+mjQXg zjIbiD)?XM_8cv?>e*jz@46s6k&AQc?2%v<~?08*0vkFW!kgOeF!#U{%oL(1m( zNMER!4A`u5ks%mrT%!C?)NF~0M&TPqN22i8M8}};wPK=B_{(Aghq)D@COaVvMa|=cSQLIzqC1AUrxQa_ z)Ho%<`~Y$9fh1Q9J?hCYF&S`!15sg3o|){3V%(o(X{NQllM|z4CfE84u(5(GFqDYP zN|9#T>IYIGP?DIQo|%`f9~uHzC!+vLK6YjXbDyv?Fq~ImV9;cc045{`24G5JSkfry e4>p@SRYVg@tr+0V$_7#^4TMg>+B6~@!~+0ES>@&c delta 2838 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 SlOo)?>9$GkQosewmf8RDA;S#- diff --git a/examples/zips/container_instances.zip b/examples/zips/container_instances.zip index c797a1de4f5901b42dcdffef740e84b3e1cc2f56..39da80a928b977d2d40a3c80b8b7d1656d7f41c0 100644 GIT binary patch delta 178 zcmew-`A?EJz?+$civa{)o5fA!HCBndp_m>G#HAJ742&!VdK#bs|8T1FSB^ zh8?61h&L_|XJiIyoy^E&1ryus#Pow5ENIK+2os##%5@Yh=F9EK4AeMzBDV~fzk%Be Tg)hV7fx>U&@dxv7@TdU*UjjIB delta 178 zcmew-`A?EJz?+$civa|px&kKh8mm-)z?p*S`G diff --git a/examples/zips/database.zip b/examples/zips/database.zip index 6bdad235daa7e50777bbd6f3d068ade9100c978b..7a3cb9811509f6f2793ae70cb3a55ee4a22fb662 100644 GIT binary patch delta 10995 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 BnG65` delta 421 zcmdmMwAY9?z?+$civa|px&kKh>ay2- z6i6|H^z5+#>j4UH{9nch5}JITOIIK_B?&{lAW$;$M_riZ9CikVXSNIs>Jtm)C;w*> zfSIsajCmV7)Ce;qr+{smtjTQ)SD4GajtQ(#j?WrHVJ)8%T;VZ32Trg;P6-PPg{czu zaD}TSL?9*tT|fD~6eosa8EJ&|3DPRePi0h&53FHChHe{b|c_4gkyOn+y3yP~-N Rg0~L}-_FMm%qb|&H4m$(GGg}4*^@)Y@lm9ab zz)aXI#=MOkYJ?e*Q@}P&*5tN@E6n9y#{^a=$7hY9u$IpWuJ9P211DG^r-TKD!c+-+ zxWd&EA`laSuAlr~iW5Vzj5Naf1Zfp!s5|xeONudk3YL2)htQxZKM4{xyA-T2OqNh| zggYZaF_aaodxsjtW59sj{7WqqqWihN?&Nw64h$1kYrtb+^E-_mh}&v)AcBzSgoNQ; z9cQ>z>biR&K7OumieaLI0m8&)gZ~f{f!0s*V&%e21(WZYAe1YbUV?=rFmMvF2Tp(m zB5q2mUPraQJ3QAjYXXciW+k#Of^fKJW{G#HAJ742&!VdK->LS4!poI41 zi!6FPp&^_M%uv0P?{P^ngN!>K%nlL);?0VT^O-?nlMl0mBLrD}n81Ps>{f8WjqD+e zU_lN}Q?MY=H82w=Cvv*L6i!~l`4+5h4wp5Cy5C&xFm;)QVJK7(ii9g{ z5MqY7u}w4-F8D~)j|HsTSjrwIIJr{lAXv;++8*TT$rI(pIN_lw(3TW?5$xRWD?Nu&9cW^F&c~TrL!gDm(cA6jdAK(^2@A3dtz^eG0x{ IKA)l*0GQ~q8vppp_m?hLvfP=CFi|8FL;0i+$s? tWCmI~Igwii%n#&pMd9z@azf$DaHH}YxE)aBA91^&@I83k!Td=)Y5<(kTnGRF delta 264 zcmdlXxkHjSz?+$civa|px&kKhYO~jT_#Qm&VE!Z?H2|LkTeJWG diff --git a/examples/zips/dataflow.zip b/examples/zips/dataflow.zip index 77e505cbcc2f8de759568bdbc2a81b7ee74aa791..e9f3f2dbef0ee7453f2326e1908868365b6b6c57 100644 GIT binary patch delta 225 zcmZ1^vq*+Fz?+$civa{)o5fA!)nJdjp_m?hLvf;w6f;O9(hw{H6x}#6gb^e(`30js zOl-3pQynK*a6Y#gOmOlY?tNgfxjbe{Amd6axEUB(UNSQkqDnp? delta 225 zcmZ1^vq*+Fz?+$civa|px&kKhYOvRQH#0rS;NChIE+Oty96<>F*u1_e4K zAb*1G{H>S*Hz!TW6k^Ui6$`lFU6mk+f6Wz4Ca-lCf*AsdIdB9`p05V?4KRQq27gmW z7@Vk41u^)ZmKoe&Y3-j7L2*4NupqLDwR(`C067&FW@q%n;F>iJ=0h}}HnN2YPUbh> z1NPH7V>b)~EldL8>R?XnF^z+XZT@I#1xY}9mbRcknrz@8hDeo@do5$3qB3ABc&su| z_|vTFu;?C GhZ+FYX0tv3 delta 1239 zcmcaGk@3PrM&1B#W)?065Qypun8>ToUh|bdz3wajM#{)6IT)`8=fca`Bll7GZCfhpka&a;+g905A zkUzn8{#HzZo0Fzw3NdG%iUnNou1XNZzvc=ilh-;6!3=@K95{j|&sT%{1{lB)gTJXG z3{KRjf*5>H%M5O?wDwPkptznBSPdy_T_1Q5momJXRSf z{ApHoSag|LC!wg?Wu1${_q6H2qU*DbFN&%p+Xxi?9ou9qx)SaDQB+;Bi$dZ1*~8p| z?5|7q(I~3?9nw(v*BvUMd}LkO&eD^69c@rlzIKF}4+)`sry>-2W@k67CWWJ@dhIAZ z`MxwI?&jQ_2P~@+>d1Eof#XST?)h_pV6uz}b4w%2n GLk$3XCb7x@ diff --git a/examples/zips/datalabeling.zip b/examples/zips/datalabeling.zip index 2fd55903bb3da743d532b3ed8a1d60b50709f057..dc542e47e5d6ce07777561b31cbdb0fa9bf68b65 100644 GIT binary patch delta 193 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 delta 7363 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 diff --git a/examples/zips/delegation_management.zip b/examples/zips/delegation_management.zip index 1d894f32b863c40e91a0ca7fd86450dc669adbeb..f833d073a7a01eff01f1a0917b71b3ca7510a4e3 100644 GIT binary patch delta 769 zcmaFk`Noqsz?+$civa{)o5fA!HD!;yp_m?hLvb>rhzKWKV)85=gUJWP1Sab+|I)+%0N+4M5n2H(zM{x`z delta 769 zcmaFk`Noqsz?+$civa|px&kKhnzGk?92JiZtTxp@(8tmKVi0-Jb^-wv)@S|A*vyHqd` zL-#Aee7M2{AqR-U#lqnj3gtwq;R+XsyoD&7Am)al@RwL5Tw#B*m@9H3%ilOHIvfyG0lOHtIlmM+6k(=4+ZMNNQg7>1e? zve_tVLgjKX)I5=!iK1q{d^Cm{83mYo5N_P8;De%1Q86Av-y+3Y6g7@YsTgWbD0QN! XDOL`_Q1enb9Yd^0B@irjOhpX<5L634 diff --git a/examples/zips/demand_signal.zip b/examples/zips/demand_signal.zip index f22732b8d11131f24f21741163a51418b05b7471..11947bd661cdcadfeada616f4c3c92f20036363f 100644 GIT binary patch delta 156 zcmZ21uvmaMz?+$civa{)o5fA!)n$*op_m?hLvf;`6f;O9&JipE6y3PYf*B+<`606z zOl-3pO9&%au$0vrCOCOJ>tV21Et@qnP~&7Bb{R1L7Mni`-<#b9g};&A6U_h1t_A?0 COf;wf delta 156 zcmZ21uvmaMz?+$civa|px&kKh>ay2-swe{%=I1Scz~TTkxe`2ZGg8Na0@0 z)CzzLeiZLy5*GnR4+kh(Bbzoq57lR6U}$D$V2A}qmeS+`H~z_=+zq*)(FKZ|GrFD- z3nlcu;ZDoazX=I#H)D8MK|?!w@)^siU}v8+v4LygF?|Tp@WH|!<{S(SDOQGX4RfqQ zAl81iHiHRHHn2GaHugs0NUzP8R-L^s)nLPcf3dNu75Q249u+EMr+ z_K7I`>-I4y{7{E@6#g{_KNP;3V-^bkk|V1A04IN_JhIylI-$DC**P1TaUh|bdz3wajBu0^m0c^}5!AMh7K|!EkBv=cS zFq}M5N_ny$qaaUc2qyzG+yp6*_Q|r0L16tr;mxtqT#S<&nE1dF6PYUE5`xUNj1WPV zV7TCGmOV^h!By;jaKZoVKbgUTzqtcpf|C{0tta>Kd;p6#@;bo8H}hylL5x-9kAVwz z@C!o(=LsN;{VcED6*RP?C!evL3U>BM6C1b&9@B>q4IeD*Va~zOkYZ&B*D%K_1Y+%H zYcrVOWCNQ+V3WVvn1PbhWJ4!0PIxMv>}%_cMRb#GC{$DitXI=60foQXt{sIRVxNe@ zziuCc!Vh(bN8w*{@I&FdIcA~oFFB&>4{-8_$|Jk|pcAUAoSm~#Ou67Z7lq&Nl7qsR zbxlX%FLQ;t0@)TLw;)tiZm}qQRrfd){!;fw6uyT?Bntnq2ddv3J-txm*LwP*@MXO0 OQTVl9E@1u#6^M(KNY@B5zGq(9Dip7Y#u z&VAl{YsLN6io3#)&dGgb&fmiqEe=Jvm-(LBns-m_aBL!mSWnKGeLY6ZZV@swi9%+B zJNxIqZq5{0bJvJ0R!a=rt72LxCO5e(TFpNrpLZ9^?|3G-@?yL)7_Y-i=^^mOe6_AT zPen50Whxptf%i>7sw+<$SipEgfqOW=jke8qHQ(;6lgnh45oFePJ89xP{G)41O0Ft=P)&dO_4elYjx=W|?nZd;Et zUh~#=;61&qgeJ*vx>2DYRVd5xr$e9I!$gjT3{A?(r(w^z2zP}S{!hX$BA@2?>WKZY zqg}!Zy#w zSy}S$xOLe3U)sYgSr%Ub$?p^M#DhRFJE@8BmXh|u;V2xs*&W zkvR<(A?bQ4t&P_5<>{w@x0(S?mGCV3HyQ7?-U_{F4raUdGIOw&@pfdU0dF;9FR_mX z_&hP8M0Uj_%9^r`K%dAlNn`_^w*F;bbs z2pBjuG4wr4b`|;fGV4oD4a&E$CL8h_Vd(Y3*JzUHi^c?(tQEm0CaFDM+)8OYR}u=B z7g?Gs=~yToFFizg>{8~fqQkb8ErL6LtrUsWolet-)T_wuSPxNGbYJmN=pWh=zI!)? zP3yn0p!;rQC^=Fn{$qNRbUVzGC#%J8ocRaNTj+%Me#1y)t@9J%4sV{*IA2Y& zd_^V13R|KO8*LC*+4Klswk4rhXE!4LNA?ngYaJN~pK|0Qd`DLr!h5^25bjH|5&j-| z3&nxmxc+2!JgQ&nPC>D*$Aan?d+HHx=`BV0gWh%&+upB2vAPdpy1(2pCHcB96>(lV zUy0%`&mTr{Wygj+5g6=I4%x^M)=O#?6ky|dtpr%?U;#aa{_2j4;U4+qN; zUiU#K!o!9N5I!tOz&14Z)HH6XcN$+~)C{)K$1~VQsn^V?htIDSqIlnR%>V9sf`HTW yV`p`UKQMa$;aZ21gw4euPQ#oDaekkJ&za6`%ZSLSSV8 delta 2798 zcmZWpZA_b06fU%YARVA1VQY0T1Y{X(86{{|4B!e3CT#~r%AkBWDNNX4^5Kxd00+#4 zwdDdb#*mG#F+MhU7pFwxj1rS2I*nQUgK-$Mh+-BKQ4BFk-?Mw~duo&ZIOloJbI&>V zdGDPS_d6@@N<+F_;UjbYa^E#Ll;K_tYkt1}+%AMI)V|aGEn3+iwGn?Gm zKmT=erpUUxhO<~LG00!$X|b5xmS@pw;VH$uyI6kDGr^S?(>~ zlNm2lSuYoPU;C%J^0Wc@j5idpPrhZdZS#H2H@j;UGFe3gne}~+G|4^uqN__xS>7_a za}%3?At=zU5H%;a?O_7T+w?GZjOs;x5TDzwGVnCatx%V-@@n-KnEULrIj%gn9j6$t zc}F|&p4?eXljJwusMwD>l;wo8p^xujB1c1pCKcq9uxDI^yTS|pC$S|WkLHA`h=Z`> zh25NJI&K%w`XK6%iyR4$E@HJ8q7R5(A@?z<8=J_}) zOa2|V0ek;TdyFMZu9DccD2i5!zeHo$4?pEp{j*4$(=vxiKUPZCw(MJJ$tXiNO=-IO-1 z-{yiIxRIgcNU`{j>8;Z3Fi)PY;@`-FDsSjwwU&J&0`ugjZ>RI)!IOI%jC3raqoE&M z9@fZ<&o{2XCDb+VK5l<&)Qg;f9bv+hTzt~fUa7%9q!XNgwquBOdC5l7(Ag24v9aE97`ce_+g^Lv^ z{^H^>6leAWPBnh)&qcW9(g`u9_@hh5QQR~DGtfH=x_k!J&tI-Vv2pM%RR8N>8NzGd z??iamP(H#(hO8)#x&r#Nzt6AWc{8teBR%h7@Br<%efUj;t4EF^{i`Fb2=^XVk>XM8 z)5TG&kvsMp()eMl8ELePW8bcgmm_}bwIfn~*95j*=Y&HFlZ5M~sQm8rlPI=K!WGhy zA58*ISLU?M;1t+~=AM|wE%i?0YmAz~Hu`7=+bH#h8TIhljRF)OxQY4S-b@g2dVcJz w4)F(O4QnhQI|AIZr`U z>Tz4a1@pN>A%e$woWX(+hl1^%tj8M(S12!Y9-=UT-xn^pgvVw)?KG9d~tiw402Cns`>Y<3Xa1~K-hcsNXAbGU>M#G^UVmS90-N1c@Rhbx3T z>Z2^g^`Ky~mfH@o>#KqjOeNe=no6E9F@&R@s(8Q!;i1H+ZVwZj?5=(o;w24xPy|gr zs3!yF=V=5(`C^j;^w_{+k2Nwe#PT#_FvQ+yCS!;dY9(Qaebw@Sib3p**AB!`b4fcL zLo8Y+8bj=cP85b%h;AZ=*md0m46#VPRHzul9S`)}G1PeK$6|<`(8qMIwLt)ey0r%3 T7-DLMVHjfb41K|3?+n!d;Mp{+ delta 879 zcmbP|G9`sKz?+$civa|px&kKh8nV}Xr;?W#wORylaqfScu!xh3E z^-&h$dQdP~%Wa3)^;N+MrV{QbO(jp57{XCcRXpH=@K9n@w}%N%c2_?P@sfr;D1s&* z)RO`8^E85?e6h&^dTd~^#~PU!VtJY|7-DZUlQF~!wURKzzG`_u#UOUZYX@Sexul(r zAr`F@jUjeJCkjI>L^lyb?7D6OhFGLtDpU;Ojt6?~7-~HAV==@|=wrIq+8_W!-CBci T3^6ssFbuJIhQ462cZO;J>0mRk diff --git a/examples/zips/dns.zip b/examples/zips/dns.zip index bfb14cbc20f49c62ae5697fc04cf5873268cce6f..c2bc403a765967344c9f9e91fe38dcd6c9031c06 100644 GIT binary patch delta 1020 zcmbQ6JvW;-z?+$civa{)o5fA!Rc4R8p_m?hLviv$Q4vnK#N-X4auW}*^MrpC1)KR?Ko=|saWL39lPv@-U<%>xnJ$Dd@siMOh>06SwJ?k{FdkjY{k#UBJZGI>71>&fu z@^FQlwH2%&0g|BzaR9Q3dlli~0r#eYGTiH%)504J#-yV_^WiCQ22a$UQj-=tyOx~D5|dOxuNjw^)NO-J$awLEQ-p%`l#+r zGJv@cS?6H`ODwLCGlba!@q3e@FN)b84Fgg5DMm1PWV0_D!EA(>Vqy&QF@(Rs7}aka ZCaC-Z6L%C_Zkkx3@J&r2=9inQ0RXh0T+;vm delta 1020 zcmbQ6JvW;-z?+$civa|px&kKhDzn#oX0Lf5qutC%;$y26p@lHA}eF8tOYC zwmi|$feVUj`a!MMg8O~)0eN^`* z8Nl3!tn;veB^Fo68NzIV_`S){7sc$4hJh&j6eE~Cve}o7U^YTbF)@bu7{Xs*jOsTI Y6I6bIi93odH%+Wi_@<^1^UF=u0B=KEn*aa+ diff --git a/examples/zips/em_warehouse.zip b/examples/zips/em_warehouse.zip index f3b7fdea08ae3355de3659e968d3a5a6a239d92f..f4da3d7ec1dcf6705c219f28a96fc7756fc0ad27 100644 GIT binary patch delta 155 zcmaFN^_Yt{z?+$civa{)o5fA!)nSjkp_m?hLvf;m6f;O9)*37V6rDJ~3nVgGhtU)! zv^j$@oDnQ|h{*~jIGLIG09fo8vlTN?-{d?N88Bao#S?|!%i@f}|HR?}=G(HW0RXDE BG*|!t delta 155 zcmaFN^_Yt{z?+$civa|px&kKh>af>*G#HAJ742&!VdK#bs|8T1FSC0 zlpUlFh$l`u!wl3pIg!x-CbW45V+|u%P@LHWE*QkT79z;RstXr1W1Y>&3)CK2zP3d7 z6VUj(lN)%&CeIKS;NoOphFY4mA zDP)JjUn%5-!sivXM&V}(JEHK<3frRabwq4X_+28FDEy})sQNubtx)8bh`NILZ$#Aq D(nP7g delta 489 zcmbQFGf9Uxz?+$civa|px&kKhs;bm{lV=DEaB(s)L#^1%$Ib)MD$Ah{*BZ>x01>>#sRtM2=JJOK#&T=J1^c<5 zKm^NpjbVb5H}LKPJ296}2QIdN?;KdHkl!38ws}4OU5Ms>L1U1ECchJs0V{eU=#0Ym z6tY9%uM~1Z;qwYxqwuqY9Z~pag>6yzIwCeG{4Nno6#i2YRQ(>JRw(jIL|wuBH==3) D3xBCD diff --git a/examples/zips/events.zip b/examples/zips/events.zip index 1113f2cb8f3e846b7a7b3c122709290578bca78a..26909c1c29194d46f29c814eb8e09406ecf33507 100644 GIT binary patch delta 156 zcmeC@>*wPQ@MdP=VgP~HW^ogF)z~9%D5gi>P@HHb#S9V&*9D6JMK^XgF@c083oz@$ z#5TJz`!j+CXRw&S1Sel+*#j1v#A?C})HwMhs|=X`g4G&@@5*M2!e7GX1m?eFQv(2r CV>Ouo delta 156 zcmeC@>*wPQ@MdP=VgP}tu7HWWYV0*%`P1vZ@=vsqVg`wX>w-mqq8q!Lm_S041(@|= zVw>HV{Tac6GgwSuf|D<^>;a2SVl`m~YMgwMRR+v|!D@}dcV)9h;V)rx0`p(8sR00h C)-`DW diff --git a/examples/zips/fast_connect.zip b/examples/zips/fast_connect.zip index cbeee5589d77637d4d13722bd7f5190974b83cee..99159293f067e40927a7788bacd89be0b7f3a367 100644 GIT binary patch delta 568 zcmdn$xYdz2z?+$civa{)o5fA!)nSjkp_m?hLvf;m6f;O9)($KJ6y3Neg&8C?nUlpF zCbrp~g@cg~C>Uvi`fgm0gLI0ARN>v!UoaYC29jxxcRK85EEGCBXL)l;AB0C=U_1jNh`Qm zq~w0En6#7?$lsG>Wx(8WDIa9+Qz=(uu8(v8GIyVJ6f)OJ21Ry_OdztXysR@aw?)af>*Zj9z;J6rw?3z zJm(fhu%TkyP6$D62Z-Pz9%s1V8y+!;AS<6KT+op(7$P{G-vTapjeieBaH^mmOmOlm z!GB^NaI&7nbFi3%q!nB& zQgT07Oj^nc-?mqW2AS>6j-_Pl&BGS@}H1H_%&ub>71uIt0J diff --git a/examples/zips/fleet_apps_management.zip b/examples/zips/fleet_apps_management.zip index 6a9bc9febbbedf2f8ce2bf3f9f99b5b4bd19a29d..5aac14d73fc7ddb114b5fdc1626162afe8d16f08 100644 GIT binary patch delta 369 zcmZ3ZvqpzEz?+$civa{)o5fA!HD!;yp_m?hLvgYLuM{&#D9sKm1Qg!5I))J>G?|OZ z3tidd3Z_Juy3G%mKCyrmUS+q&P-w#83|CmkQ2s%UnH(nM0~M74t2!bSfkl;_a6XEv^TM83R9T4x YqNrLc5{5;Us%SPA(M_Tdy=-D?08;&U?*IS* delta 369 zcmZ3ZvqpzEz?+$civa|px&kKhnzGk?Oud-WXC^X@4hAXV&D1a#Z$m4;bFqStKuJ9nQG&9)5`vP#? zlQjj8g2g@xIx_>EH+h4w7^eu(BOD;FOb!$Bfr`q2RUHwEz@o}dI3GpTd0|g1s;oo; YQBk diff --git a/examples/zips/fleetsoftwareupdate.zip b/examples/zips/fleetsoftwareupdate.zip index 3b839fe367aa6366170ab7b5e5446328d1b4f27a..074c60a43b59c9ae61ae5204397a98955e1adfea 100644 GIT binary patch delta 326 zcmX@3c}9~rz?+$civa{)o5fA!HCBndp_m>G#HAJ742&!VdK#bs|8T1FSB^ zn;oPMh&OKg&BP4UI(Z8-Tx>HN%QuMNe>P{B!p)xShZ(^t`8jRifpve<+NqK19SHEWb=d4FC*sZh!y) delta 326 zcmX@3c}9~rz?+$civa|px&kKh8mrWNdM=w8@S80*^Ba S|0s_g3SX7i70l1&RRaJFzd)$~ delta 193 zcmbO%Jz1JJz?+$civa|px&kKhYO>dS= zhS7@=q-?T|h}q=(Og!jnC-XDM!4;PQ#d(>QG4?PR(XhGCU$QO z#f9vJFvXi+vTHMeoxs6sK6yWv;N*BNRtyatT%~XgEZmGR4Zau(D|rzLzw+`y6tW2z z!*x3d1VY?3MbIBZH@i?3Tw#aMLRio^VJMs=f(VxHB9|c6oDp}$P-rTV3O8|~#7BsU zQ>6kh6mm+}!WH&PdqNc6l(E53Xek>AS2$6Yg9RLRa}+ILf|GA69srBYQ?g(N#_{Av z6|u<*T5MpkA4-W(F&QwwT6rRd8aRgI!1Obx^j$21)=^k{0uqL{lvs{=!go{IG3Ty0Ynbw{)@{Tieb pjH2eaPBDgAF}iUmYVPQEW2ouW^FmScRWBZeU#9N{=I_^60|3k!Sfu~} delta 986 zcmaDF|1_RAz?+$civa|px&kKhYO&XRYw zsZs$L3OS`~;R<`DJs}Ej%Gh8iw3H2mE1W3H!2%AuIf@oA!O6E34}ityDOoTB<9KqT zir8cYEjF;&52Zw?m<*U-tvnG!jh;#Xikbx~IhblxlTg%bQk{gMCQU68Ma@ICdJHv9 z>d`1_{;M}*s9BS`nz?+$civa{)o5fA!)n$*op_m?hLvf;`6f;O9&H^j~6rDKtEl6Z?FQXYu zX!9w?5Js?|BC{o2Fp+r{MDQPrDO}Ks^*Re!r3jY`Tri&NIYgx=58Rr~9Xw|tf)RYy zFqM;M@f`%~j^npx2D)YP9DW%ve>cAy3SU{k1%=-!;EuxoB;bs~4;KtV;hz>nHP2Yc K6D(gZqy_*;U2Am! delta 303 zcmZ3gx>S`nz?+$civa|px&kKh>ay2-b2X4*g4xY0R!3aKU zn99ks_zr?~$MIV;1Kl!t4!;bTznk9;g|95&g2L|P5^zT0hYJRw@J|b(nrAHJ K36`%HQUd@|Fl!Y6 diff --git a/examples/zips/globally_distributed_database.zip b/examples/zips/globally_distributed_database.zip index 457a52c317e776ba76729371191d25dc93b5ca9e..e729af23360988a5cfa11d93b76db767166515ff 100644 GIT binary patch delta 9092 zcmeHNbyU<_+Z~23>6AuVkOpPwP={hbkxV}2 zEn>JR3IG5(9S%Dg?&9Wr+uq9BjmN|040()(df@_4&_1IA0BA4-(kYhD8OVnhy7MhE zUzs5b*C<>S4}O!2vq}u->Qv?syR_=+CHU^zC5SO0o#W`?w}&xJhM>&Qa6ZeKRJ-Af zVeR&nP8{E|9umg|Wl|T_Xa2npVNOp5&E~~dJ+Wo(T0JSzcsrd*8!AWpq%VOXE+o#& ze2rToKgV`Q&Fof2m1YIm^VZoMV?1$!a0}`1q!t6AfFbRI{%)fo4-X^Tz|4(^@DUkU zLPp5up4g#!U#KsWL5;;2Xq42%Zkmz~%5_v-u*MEWJ&rCZVmnxXC1C;+ef5<(FKR?g z1b_el>@+TD$8kv_0D@r0arjLvViG!4TX^y0cfR9rRaoz$3ilCN2w|1Uvb&K~TXLw# zB=e5u`G zZG;tt$ygL;w-9jQ%2z%YhRmIgEf}5bVmoU)^{QEmOWn(^;>3F#lhc>Dx6$G^Tjn?) zAI=Q#w9cdZ8Pv88ux(Gqw{g$*>7{dQ8mKRQROaaKktnOM>oC#k6s`l0yx~4_UOM2s znoR|7%ZCGd8=|&#Be8o3)SjgUX5zw!b)KaMb*s3#+M#MJ$-HdaFD*3Hu2qeRF@D&h zW2$P6_7R-{vzfaTv!61y73`+Ey17%JM!llCed8idxxaw#p7)WuWZz&=H z=5PT38{}#Dm>7PYMw_r5cmna;BI>|IOhZHg0BD~=XixTa+uY6G+`{oMyQ)|vW&AN8 zj(9YdD@65~OGB zF8Sq_^Bi{zns5fm(InP@GN1cfKREr9M+4=C&4GG@nFae7HI>SBJ;R2AN2myO!=5un zUN7NtKeQ+(zXiHUFu}`LQ_fK$B7M*+&$l?rq3_yTHlR>eA*7xVN$vB5 zIs&o`1LG4;r;tWp{Qh*;pEHun=`!h5-BHx6H(rP?VY;w3o9az^6cN%bg zd{eaP9f$60FMWkxyW2gNCkZe7Mo=>?CtL7p`C=`H3m$hQv802X3MX%}5cSKwc|p*w zJiL7eeNN27SfpM>1s3Pz0$W?Fbf98Oboed{hj9v#j*wB;*n}C+#1Zb16CZwEux56Y zhYJNq>FBAHaC2NN!e@V77$n}rjk)LXZnh1`5o&z@h1Lst(pRDZz3=$8*)p~j(8#e3 z!oY=r7vmbxuVHvE`zlan*~Q5A24tlt?H50Ca*4*Thltoy_8h6z#Aw;p3d~B=rF^~x zxeMd5Z}y7W1NY)XItS(A!=2W{SM7-f7-DIIK^OA5FY{&7P<-IKWHwyVwNGU!8=t>W z{$LQSSKE+g5+BDuIMTA1p#YVZcmw80cDS2_yv-00M`Yz^3Bx+OXF;~i1Rj(pgw}WLW zw8(vAltvStbd`n$W?rT3AFo99VMqv0v8z>h-B2`nf_m+7y-5axzEc`}Ul?Mm%sd)l zIIQxCby#QRyVLz5I;Wc8{*fB|O~yL>hQ*n;?tj=aFQm5LU!sHDq2clJgGXc)$v)!V zf!xWoAMG==U=;mhwE&}Tx5-#H-k`cEJxjlPO>7iKUP(0|0Bb(XEp(odN10y9ngD?g z3@PD0{`g+y9#8%JF~y4(4R;R%P_zOVE`(YQIHbOlk1EXS^|(k|5M3f|L7?WOdoVLs zGWZNPxw^cGo_csKE^67tBUp6brRX*Vg{LFvg9gx|OQy?f{%YH7M8jRSSkD6$(Cx_P zn+Fr`vFfF0vtZbFwPJ#GC`C2h*|zBv`SK#-d3N~jc{JLBY2tlj+&1tLPFPt=NyZ<`A&=fw zEHn7P148AXYQiPcJ$V-`vldnt>EfSr5l^{@fX|e*BAQ^;On|hP(sCj9S)zHA8@*;l zG8a|r`iT8T(=I@MWq-wdnZP;#4*N0wUlUBQhySi%B18zuEI#`I283V& zAwDkyPs={~Nnrk2F^Q`o6jRvFAx=@X8y;_klv>1RLW>i{RF%xisK~|Xag>=$pRF9< z)Dgb2<4>d3bisr;S*P5t>Z!((BKw7R?&5NqGUhGRsMzz~EjNOr-BML9XGPP76F1@n zHsku^Ei2|VRKgl$>3#V%o&}3hzB66BlBCn4#Hl)W2@fHeHac2|q_%QQC#K#r(LbVC zA1L$(`CF_BrWB}9I>=V^*OS+7x#@Il_wbYp!8c7bnpqR%9h*~+L=GFl(QwQTEYjTh zTF>nxFyrgJ8Ej#~kp!u#=fTQoTttpHs6O_2Wxw4ISchzz-h5f8d68sHF!rg$qYau3 zTq&INi-}2tf=4uf>bE|`<+1~sB|coK8etb2#;`++5W4A&lIz|-=qA0>Ff;tfzyDG= zS)Rgwp3>hbC)K`IV?J~MAe8QRCwn5D{!S0C=ubG03lqY2OkLeg)0xV~94W(4{M!=E za0y$alR$XQQhl@ftTGAIilfl*!!hLAL9(?6WxA=6BzDrH+WzzU|Hgq*Mp+D9!NP%hHHmGzk z7HqB}X`U;py`{H$;%+zrV2SNlAIVr8v+;uEpfx!y?u75uQGvQ0QAu#L4KVS4 z1q0h_^tpq99ahSZ=QV3ZCsP5_O!v~sVDD?w%7DTFlg-KFLG2-Wb2eNw#W55dn%3YZ zug@{UwH&k=pDt_XZQ7-g9%wDUEn-(O>B}w~OdfN7I2e$uQr|`>m$pf2Oyw;XAfqtQ zqp(_rH~xhw&BOIYSDuk#Cf}f6t~$u)n&B5F-Jr^7QtXH- zVqJwClSL1Dp7v@SSQ}|CcB6nxU$H4znPqi>8ozD=JvE<3=~8C#D&~k?%_1-L;E-HR znaR#s)daCC>9R}MrqAy_et+bzA=tB+?z%m`9%n>10dcu*i(8Yk83(#Tx{a-r;K2?q z=6&9rUfrTQl$Os_p>BGS!MtI0+8Ac!Gt{I|hoee`^Zv?W^_z@+a`(BiiU1Z>KZINW~I~@A&n)eI?n9modG(y;R8MWof{;XdTy71kwEh=JppaZTJ%G&^A{? z*gFO_!0UbIK87~+c&?aG!uzHDoaD`Fdo6L>QhNdDl3?c-kIFpRk?qetV^UGD1-O>j z6$^>?bABwifo4iueGk)(I)g&r`>$pP$d)G-Vd`9>=*}~#*b0KLdyn3F86~HZ==`WK z6RTOlD3GdEpv{6Zcj2YgfztD%wes&QL)CKQN~w}zi!7ZlJ1?6)@pfsSy z%4E^E8lxZkX+J&#u3Da515J2^46H2(#I`hta+|H~)`ZIx%R+RXV(X@3PM$FVzY2}; z$HM3Z%P3J{;VFzMvW8F+nk}4?aFJ@>dWj<7Rr8{*9)u?u;6>ov%;MzLbJ>l4O&eAlOXwk& z2?ldS2+*|{Qs%Vsb2%|Hr1ptP7*kk?`P7W?3ec{K>V4Ws?al1+AgmgE*0=XuI#ax! z?HW~OeW^d)oo)FzjJ;|A2`oLL(?cvtSJ8xk(}!WTFc!pFjp|X zn!p#qk<<7w5=M$Qy+#A~5+M{*+!r?3tB^MJzb=kUVdZ+7*VA&X=4L%gfjbD5%$%%gXGotc^=L5+&Q##g{9m&;=Z zx|niY`AtN*5Xyq@4ByiBJma2M9HAgzs(!tR+McW1e|Htl{4GYu&tlTYk))W=;mL{y#ewa^ zo!AD(cAMq|G&mY5huyGbW7^v0h`{7iM$gC{K^d;cGYZjZWH9ja>9wb&hK3bA{W*q{ z1G=oTx}w%HIdKNzAcnd(d|Y0XAl_F83D9<6V2i{RXrLu;-XB}~7X++TP?bmOr+Gfu zy>`>}9~JOYd$g{<_$6hJmxpj+jk0pXd>nK3-U?{?UU#llz^hET_Dclyt>XOB1Y(4PNc8b@n^!ZjW9#)hU>WK}T~*sLBWW3F z@_QC*+g87iOQq546F~IMh1ug{60i%m#NL|{owqwRifg1oXSjH)cDv?o6Hsw7Ja38} z3=fKmm?_KhU;6Ov%k&f9?Zzscj!#ZpTkYnUStkvql7Pfv+5lR z9FvUFW@I08uKI`{YH)9ULX9h^UuM3z6 z6YO??8a`O$K3LY$I_d$X(JquwS#19$KrLlp6H(uu2n3kravPpaO6npdY92W49UEu^ ze<0+#$}>#}!-oefa?@NOd(%!E5>DhvnTg#KtFd~;rL@dS`amd+uAcHqr|u}Il5Fhy z@xv9QKgUH|l_zVV!UFS}0jstr`3g^`FT?z1ma+3n4~tvX-jrxp8geB>In#hQ5cR^Dgb(E;CEq1BtNEbM&j-A7WF~$GC;1XlmxE^MCNlj+f5p zvesG!ZI1-sbf3*%i1c-pa-J$NRF%BKPa0`Gwq5gwC98J5;8*sI`A&vwiFiV258qvD zMYVz;>g*7z5a6yIF_)+&{%Af#H5b8VVexU^El+5OS#^QGv_ zzXQmFhdN~ffU`KR+cVM{zCKx55d&BXrn{xrJQ!Rq3OQ>70k%+Ay<}em~yaMWXYch z3rQQ|7tXz7Zm&2|voKtlmMtTf+0QaK0w7y--&ZS8-1NH5Le81LTpj&JP-v*0ZM~?y z9X9H)K_VvBja@4FI+r%>K2bloYo4yOTo2gqy^$BqwY8tuHmf3}d1M+{euIzbuGVHf z`G>d4a3aR8lB!bmaFNc+b@V!gJ$GtUPs@j#qw6dv)q{=G>M-&f`UhDxAmXYtZ3+5V=w3#_nl$ z@Z<&qwdZ4{NfowW2ACr7=EA+UgZ5#;BV50lnpGpH=Zxk2Vs#IX5mdtDaMGKOl@1D( zdfN2C8&ojy?Vc}64oZ4jSZj*v7c~}0bL&3K<7*x!-iEnIf2zxC8@to=B zpGEP%@!0q-yyhiD^ED|W_Q&x8Ca4z*?!6kjnv@jHo!Kk>jgDDG;7u3V636XAKc4X{ zd{he(fhP{mEe45=FWyy=?@C`6%u>3@KLIF3Ri zwIw;oZAC0KF`9YtU0wTEB!AjO|5uak7u){i+WN1#Y_R2j*JXpj|6P|2cK6?P*_e9% z=d%6JW&4jVo8|wX%XZp8Gf843Q8??T+#=ydxq#?d>ciU}d6Xdv?t%}dWArpWkCnaQqt^p%qMo3CQh zw<&Q(EgcwN%ccs{J_zI0F~`4}K&Ri1t*5aJfLeBmw|YtLszYQ<$quLWYv+SwI|Rmq zq9?HR>aYx2jl`Y$862gc2IyQ4#Wa#tbiEu^uaZ914y3MVxREKncbg@Wksr-WJ?cce zN8MtVhP??soD(>jwU2CS_-GPvU$(Jk2vM6+fOM#5z1gH!bV{g*%_TK4le7IzXBI$- zh{N%V5U?U`4ge(ak+2_IkN798B5erzNv9UUK*RW#HtkO=!fXTN27UMwOL>Atav{&r zAaym7XheZ$OE~RvUd1?vM(Wuip>fg9&=-H(!#l@>)W1Vwaza02I_>AtANQ=!B7xM$ zLxPgyor4kpnUl&GsgU5mUZiZ0;OIo>;CxKXNKmBK9ugEndIqKXO{?$R=8?L5NIZ*_ zXFNZ{c&_XBClmc~R{W|0w2+vVlY*E}I{y?W>-kj@oN@eJZi0U@{m9K(y0bN1IJL#k zDE^w9+DOZ=p+5st{l+6d$Ae@cBk|NRobjAl%Kw<2dPwjTrZYIr@2%2vEBQ4)Es>~p zna`-sY*XX}MY2ngu-TmFvHvMUZISRXyyx-fQxxgSkA$5NIKxu^2m!JMa4rBZewE2c zM66fOh)!eqw@G?Zx_(Vk2oe?NwKFQpA8Yz;p8iNOgY35&B#4sNfOvS3Xc#4rX#{?) wR>&VV0Duq@;Gxuyd5f4yIF3Jq&V8XpT?rlW)dB#30`a4H0RU)}KK|?f02;3Tf&c&j delta 2815 zcmaJ@c|4SB8-9ne4YG|aGlneLMV1ILNs(e0WG&l}eF%lg93o{4lYK8bjIAt<%=&pu!=C#|HX`c)DQ%m4e)@EZG1? z8jLoAFR=q4@H<8T0OP3uUzCYSr!sfT>KWWXd`D_X^HjbycXf;Yl1aAdXnV4(v7HV1 zo8JhTDWi9v^C#V`TWz;FSo$1A1AP5ZY4eM6V}tH7XQ~sW&JRJS+Ew&PiuSKkqB^eB z<86XK`3!5L{LV30A+Oe9`= zHE-?23|>V3_^4~qbzEjzS?88tr3SGl;Ao7%$((Dtv3yF4H3Y-!1T-`{K(O<~z~Sd( zijRdnQ!~euA1QZjGtlJyCF4ia7Thvbl{u=6jx-qws8iyEMT5Qg|E*wRGSakDnZt1P z0z|$R;n&7|_-F<5zLk{G2C_xA8!yQvxTIY}b^6IHv$B+a}NmM2&%ra@gOnCI6CXhMFeU)#!o z0`EjxR`Jb<!n`ANv%k(rTC+{hEKq617;m&sxMX0!j)h>WO655H9+ZzlRwzV&X1wlje9 zJ~m}rVe7nYmulB)Qy1$k+%6IyE&1-)H&G9l^m3D`&IcpI%RUlh%(_Guc07XqNbDl# z+%VMqO2h#`g_a-QKR5^*9JD*T-M2w~R&Q0#VeUUxLm>lJ@{V~QoZxL?)z;Snd?=opcTdnC~+pk}>hQ-|AN`VakMn~;d3u0&*{jxQq6K55NKvG>`!HVUNNgJ^`6JmiBk?YO(JNLZ zJ7;w*Qn62kMj>lC^9q;*pLuB*KMg5{hB!}|zKcKs)0gsYyDps8SWIM9;H~3GvjiPN zgmVUQd>SU<4jz3W%#y!_RF|fh>y1td!Y-95^(*IYiDHGMp9Ok!UeS?zIabQ+*nf3d zxHb&|E5)amT^HjToe~`zlXTaIYlB1KruH^2$F!6lyBf7sT~?m=NZ?22-|7yqkawP4 zcMn4zd5Uu7^Y#}WWLksDm!KYTCPhU=7TkH3%ggzx^lE)(F$8OCrf`ynD5{3>982a! zg}Pu!XExJ02D>YcJ-_LTq2RPP3R8j?TesjEtO9UVyQbx#WV`YG*}dA))xwl?yiO*( zncxkV!n@R4T~0O;ni*6t75IuKhTCi291~tD{3}8YSu=9boZ?%WlzF^{C!;E-$MA?< zJ&EL8)kJ#3ang0#x+iu);|sAFR#1CH7&&z6k;7`C@C>%2D>hDW9s9O+Hs9;6sv<1R zSOL5-qC4m$(AqE$v6$DeQB^Bn^OfG1h|+Kk!@Ca`SW*;qWC0!Ry7E|$aCSzk>S|Dd zf}{Mo31lB}eQ(587z4URVo!|QpjY|}!+2s*Ul2^BETIbN!e!=rX7tT;)xcf8n;A9j zdcs3XtF8;yK~b9P*zyn-fz{!L?n-cHW=!UCPc4DW6V7L*Gwyq6c^C~xjQYum5@ayCeJW{^^CD+0sZ+4^Fj zsWBCb(ilu(=#VEGMT(glypI@6O@C*PPl{?v{xjZu-+6mkIkyG$HAto{rc}$bT6`dP zvlOfzF3KA;x6&)uK}qyeR<0Z;xE*1pfFFKlN3Z7|$s5&)klNalTzPT?odQ{_wTKkhUCX4j_1r{jJ za3q0Q*v9!@8A#-F_lp%-aF>p}>TC*flM z)w2MC)N2(0sJ;snM>+$9d#18{bS(_iP7CuBOy|^e;BF8N{KL3~=osmoiVlQkB($5! z@jC}OU+@nObp2riyEy4Aj1Eo!?{GRv!kBkq==_WhBh3C|pW1YLq_Z_Tz&~6&03ROF z-$=fDoEeM(%18UkV_}FqcG^(M*Uidu*G}j>k8a@;OBE!2|&J5VTVG7ktHnNB{r; diff --git a/examples/zips/goldengate.zip b/examples/zips/goldengate.zip index 8aca4f72d7ee02125585aa087fc35e2c35935d9c..145c1648b1d0be3e9f11a2c5f9c315cf0707b032 100644 GIT binary patch delta 578 zcmaEF`QDN@z?+$civa{)o5fA!)nbplp_m?hLvi9l5l*=HV0lt z5ulFE+>93(L1L2=*;OaYO7L=VGBCqU0;`^E&TIo$Ud8-`8LHeAVJfnXyVxxe5)cE# zIUL{y#Bl^NfeqNig)sFi*9(Z?172geN+~{nh|6;L?a@s<&yVndjKE2V<`+U{=<1w= zZQUObL_7pVez%15WL60c z6gB=5UTA8ZQTPgy?kMUzCH+wNKP4ghVRoiUIil!4A%*HDb7@pJt(A5`F;7^=8-?E> L;|AuRlu-i!8F9th delta 578 zcmaEF`QDN@z?+$civa|px&kKhYO&XR8at^=h#0DvZoD?%i^*%SS z2vEmnZpI6YAhF4b?5dMxC3v|w8JOWFfmKg7XSRVWuVQ|}3{`H5FcsOxUF?jgyc0k1J!r4*k(#AP}B_UI;_=STQJM&Kkw^9vy}bahU` zws7;>gq0xbR*PD|1Sh`|-3NBfYB39tw!cz?+$civa{)o5fA!)n$*op_m?hLvf;`6f;O9&I2JL!YKk&#{pJ(Dh4bL zRJ~c3@f#CJ?d0F0Mw9okaPx$Qa56B%%|X&NxrZeZrfu>;F_BHI6Tmtr#%WB}m*bhd zUX~w^=Kt&nJCiuLn89}Db6a6`;N-L1o=8?nZ?@o>3~}W-J~NoaW^Vp4MyN3wlY0b& zkc<+C`!({)`x6%?GchnMa+Wetj#$q9;LlRwC^fyKT_g+aw+!2CSvEDSZgiqexs zWlT}j<;bLCsQW5|YF4f+rddB_Jy6U^mJ3JW-;r~{F!!gd^yFB1T@-a|{eo!cz?+$civa|px&kKh>ay2-R?;{dBX6$2Ir zs@|;2_>BpqcJgmgqsjYNxOqZDI2oAX<{;^s+`|$H(>D2_n8+s931FQQ<1{Ag%kfNJ zFUyZd^M7`Pok<*A%wRk7xvj7|aPnDhPb90PH(T&bhPd(^pBYSIGdF)2Bh(m;$vpx> zNJfdn{Tg}Y{fP^cnHU%raxgF$PhQ9_1yssA`Mta#7u27iP!JMa%OnU4g-CESzVHN^r=EAemi1V^(1%BLhP#GXsMeR5kzPND)!E8%sr+A#VIF>V)JzL|jZx6oZHA z=7VDAA>N!UX$>=C@>R)$U|-IZvIfP=G#HAJ742&!VdK#bs|8T1FSAY zhaIF2h&Q$eGBN|TPQJ}(2oswu%(M?Ic7@518K`D52eS;Aug+|R!f$4_2lJ0Is{sJi Cohiux delta 141 zcmaFO{+gXPz?+$civa|px&kKhDy!6d`Jho zpoA*Wl^Q&uAy79Wyf^uwkQ-d5p71}gY5F2?(>Aw?C_x;!O4J#qaPt>YQ;1`9B%I)a zr4oOb!P-k?+~I`&f zgL@4J1A{a;$oJcDBM12{|PdmCRA^>McDDE#BL b4k&z0J5+wRoePTmM>Kx8JtT~#+p7Tp7X^2! delta 1030 zcmdm6zqg(@z?+$civa|px&kKhYOvRQQf1if&wx&m;&Giaa=L z^NJ)!28L@)3=Fc985Kk)?=j`&;$&b3X$9iVKFl?YAkC9cv)I9OZx&$Xf(Xj88Nvla z*^(fFyV(6;f|L09Zz zQi(szVC^L`?r_0FGMNzVdU6OeTjX*ef}iC*;VPXKEuN1%t_ROv)7pr`L z!M%oqfk7G^GdtB%A!dG5w}cBCYFI#2=4ctg1(#~wg9x_i zA_VvA+CsGd*E55ww9)5*sPs033r_AZ+zs}+n-L;%YK&YU3J;r@fl|ig3pO%fMbf5z zDEw|yM-=`$Q(*c*QXgYxkHX(;7K6gKHn&6J&o;M3;r}v^h4RHF7g(@?-B4-aiK6C- zMFG#HAJ742&!VdK#bs|8T1FSB^ zogJhOh&OJkU}6Spovh1j0~6a^z#Pj67QDdX2oszv!Fm`hc8}GO8K`mcOg0%X-;pg8 Tg};N%3x%)3?hoddv8w?9^;I{V delta 178 zcmbQkKZl<;z?+$civa|px&kKh8mrWNg~C^1_XqRK*wp~;J~wOt diff --git a/examples/zips/identity_domains.zip b/examples/zips/identity_domains.zip index 5d86ee79f7c4c51cad262345dd10e6e7fb4ecb86..7482f2b617d1e47b542d79cec3905226b7b5a1ab 100644 GIT binary patch delta 2396 zcmZ8he@v8h7=OR_zW4i%L|cZHXc88Mg&Q2^4l=^s%Lq$82jDDTn8zd_;c z%-2VGk;muTDvFU*Stq^v5c3yHD?WnlX19AJKs zQpmtyN`^*Z8dG0pU_ok%K>-h>uV-K&eGgHg zl>lH;iGwlsmw2J+$4fUe&|SJ7n4gz(CDY|y!0fEFGp1Pe6M+41a37adA0_co&FAdT zHLWFra8)A+tK@q7Q}SmsW|L76V?*>0)f7T{+KxPS=aC&p0o1#>x%qB4fbF|-7&E-< zmL@J*C?%Azwpl9(<4N+hmKCyVZu!D0w%q}(;@jjqMJzY3wgYyB?Bi~@_ALS7Z`JWC z-`2%eP4D5hJ3SY{_QXSc)oKpC3wI8D$R}y7zr8qG{n&ACoAY=*)ES`bSVxaEm4U>! zPdOQQ;gk!QacB8>x1aq8m^aR4G3N8lZP3y0Eqr^Q^*#+?Q7bq2bSr^7o7-Mt={MVk zfceW;+@!>>V_R6;&ix3qcLVc%A8-DGZx}{#@|lxbYh>QDdik5d700|fdO$~(E*!_y zcdH?PdB+A;erHE)zP+8?rue{+Q5jsQhlANabU`}lWp9SRpw|YHKJMcS|6AW)0CW5K zA~p2)KzdP-FFXy#tpD#KFSOy(kB}~2W^YLyn zDbww7AcpU3ioS7j%gmDssdBOm#lKFvP@FTBi{kTBb`&qU`#Oq0xm$^1ZODP*y`g** z{}I}b;;MU26#slL2gNT=QOZp#QC>Eh7Dtl*2dVVY?*IS* delta 2396 zcmZ8heN0nV6o0qx^}9vUWe&HAn+zQrZkS+kelTW%LSa-Hf@SzomzkL{6AjUB3`aH- zwm%l}sTbo1qhVp$BBs^^8besv!bTQCb(@l9b4pNIgy94#RzB9gQ}5-p$xCy7_jm3& zzu!6UT{|sZJ1v zN&y1{DXUcqQ=j@81M^c;bP9MNeJun1>3fI*CR;W!u*OoaH;4P&TGa8*DIu(CP>y#$ zC$G<1z$ja?7DL(nRtp2YRy%;RxlEsIvw4&PBewO7n3neq^!KMdpMj|bb&%aoYK z90>p>726ndf3XLeeyU_616?I+f%#P#S29`F0nB!%l`+Ngp8)KAoBO!9;xLJiXg+Iw zv0)VvgzG9nSSHt6pOueH84Y?tj1JK^u&n^n({|*tI}hzR44~G<&CPSU0Bqfr&6uHG zcT{naLMg$7RgG#v7)g?EG%b}KGfU=HvF!G%72n3*FJ!s7m2I#qWFL3Kv2P&=f47QP zxlk2dHLaW5Zg*b>+Y_t#s%@+O0PgJjgiq33dv8Ic`q5+DHv6$!sMAN+u#V<6l!C7)agacB5=x1aeGn77VmGUiK-Ezr^LO?-P-c%BEau$dcts+qu@jV-UU^xG{1 z!2IP~Zc^fR(JicO<$m~EJAwI;mp6aOI|!pV@xlqUIXv%at$eP;irABtC?^`b3Y$cuzwVmZ0I`QC(GZ_ zRqnjO{WIR|f_nplMNEJ4tvbwjdm$U^^Ee5 zl;Pe85JUGjMBX^LY3dn;i)OH2@=Q58pFfNHt((R9)3Zqb@jV31>-ZId{G)3KL4xQx zLXZObq>5~v+XAgu5#%W~ilh)RJ`@R3L4zVeHqc6myopl&k_Zw?ooa%V(LQxdV;P#5 z#(Wx*k1kEr#)y++0j-Xp{h@9hK?_3f>j;_{twFk|l0HxeE6Xj*2X>la^e+h}t6951J diff --git a/examples/zips/integration.zip b/examples/zips/integration.zip index 359d9bdd14dd3aa8da86828f29e1815fd24e7794..f9a4ed384cd13b86eeaee7f5ebcda22480ff232a 100644 GIT binary patch delta 156 zcmew@@>_&Az?+$civa{)o5fA!)n<>pp_m?hLvfj CW;WRX delta 156 zcmew@@>_&Az?+$civa|px&kKhYO~jTIAy?mS57As{z^^<6h1eXJD4BJr3L_Y C**2*F diff --git a/examples/zips/jms.zip b/examples/zips/jms.zip index 21c79a207485df155682a920192c1038aacc9862..8e8fbc723e4bd531be605fbeab936c7f3b6dbc1e 100644 GIT binary patch delta 888 zcmcZ-ekGhYz?+$civa{)o5fA!RaS|-p_m>G#HAJ742&!VdK#bs|8T1FSB@ zlpUlFh&N7`HdBFv1*0eu)L5r0+r z2{1}>7$-Bb2u~J}6M<{fmiq^GvyMF6ADh$VnIPupC}_hJZl0&`86r4E$&eWsos$DK zWxzV0D>=_}i47Q20_R4k-K@6>k*&OBH(*zL%;E3V(%a1PWhCEdYf-MGe(G zKh^9|P@F8tDZ+`6NOnMykYWa@J?;+{0;=CE z%NWB55}RDZ6ojl!5GWSeCDvndhmnEdEGq*;?8HLt$=b|TaGg2K-yk|;1#BnViE(go zGB6`t0JdoIMb>z@dULi;Ca_J1Ioy$L0*mQ!#=;d&;w*tE*ewpcEPnqOj}C~6ADvr+i}#62Ec=3Uh8UPka%nJYj delta 611 zcmZoOYct~w@MdP=VgP}tu7HWWM(j0T`P1vZ@=q4z6yZcjBs(BUNHK%d9`^?e0o8Ao zWsG42iA}Cy3PM&V2o#I#66-O!!^psJmX(1ac4DFSWNl_ExXv8rZxEfa0=ARw#5lM( z8JH0+09!QqB5OQcy*XPa6WFH19PY?AfyMMVW8n%Xah5<7a`ITi1-*IVAhxaH4ZzT? zz?TnKIF0WJ%vl~73Qr0k+@mjO2T@oc1PLLa<0o$yIt+GCt*`^gGm{NP#U>|6uz|(y z3;RLEWWaoXkys2h=R^`v)C7n&VyO8n8it}KTPznt%`dS~6g7q7*(m&f;+`0KG9}_r d)V!3a#Zc2BiDLI8DVWs|FZD}7y!b#$4FHF9%U1vZ diff --git a/examples/zips/kms.zip b/examples/zips/kms.zip index ffc2b606a51a0f6f330272b56367e5b8c06d01d8..e9ee5b160d6b35af06ae9496df8a24dde4d363d8 100644 GIT binary patch delta 840 zcmdnswZV%wz?+$civa{)o5fA!RaS|-p_m>G#HAJ742&!VdK#bs|8T1FSB@ zh#jO3h&T4$W?}|vot(|A1rysmhgqHxEVz$F4<GVJaC6kZsgemR_MTM0#i7- zns+%b&@+)52e}Sz0{WJ9a-fvRsLl_!b#oNIAH;^$0{Sr1 zHa`^TVg{?s6VZkVPF^6=4i?iA)rE;|juU;t2)5TCG3D+*puKZ}_KHrfSLQ;pcXNff z1jLTX5(Y4>lTS%Nj0=%8gp2h^?f_fiE`@Mll@v5e=19Y%Wb;MoB@h!UWDP;yo1`cM z)_7Xh0hy~SXMxOZm$O0UK9w_vaK$*`32CyOyeYDpsq)Uq++Xrm$lNdmS7h#91r*!m z6`hb}n-x*?-bdwHE7>9|o~2}o%>Alljm!;FMlougvK_K4pNc&)H(v!s@o5!sAWY^` GRRaL&y&2yC delta 840 zcmdnswZV%wz?+$civa|px&kKhDy!6d^iF^Ol&hdn+!yu8oN4C zHcu{OH-+n7%N_^O&Bv(&6P)bG`4()AA(uH!Y;!)>HHbnF9=O9NH}dQOD|FyBfhn9^ z&AXfz=$S~3gIotU0e#ClIZ#Su@_I#XE=~q!sE;Q{@SOo`ROg4=x;cv94`Rb=0ezTh zn;!~vF@sg+iD<(FCod3b2a9Qm>cYe}$B8~+1lwznm~!_Y(B8Q~dqpSLD{~>)ySYMK z0%FHx2?Lnc$)_YB#)U{4!o_+dcYv*MmqIwON(ve!bEM%>viYL)5{QWvvW6h8Sl0*dYO zicZL~&59^`@1t_9m28m}&r-5P=6+SOM&<@7qZqYL*$!EjPsJXYo3DbR__PW*5GHe} GssR87To~g3 diff --git a/examples/zips/license_manager.zip b/examples/zips/license_manager.zip index a1b16e8dae73f0af5d45ebc672e2cfc27178cb45..dea8b4aa7240bb1ef3d1f76c58306698ce73024c 100644 GIT binary patch delta 468 zcmcbsaaV&kz?+$civa{)o5fA!)mMqUp_m>G#HAJ742&!VdK#bs|8T1FSB= zo*kqPh$k*P%nZ~yIfu~?CN%jV<8-iCG?NufZ1WtZ$&6q@BNj)P;N&Wney|u1Yb;!> zfb}R?%z`ZnE;f_x1XwJE-2x`Ic`?)<(e{B8U(D0~wE4;2190e=)ezhE{B le~w@V3SUjg4Taw)Z{azCaB>w(KUj>1H5M*b zz~3&%Z`g~Nz?u`e;3iI< z!?hbM7R7DC477FfL~a={e*?EQnE#O%!sq32M&TFnIHB;b@z|p1H|0fDKZ`d6MZEwY JM1Lrs8UR=_YJ>m) diff --git a/examples/zips/load_balancer.zip b/examples/zips/load_balancer.zip index 993208b0af5dd6ce8bb838b8ec79667904c031e4..9ca2c9694edc1e0ccd402100f6cf8f04e5ac4d07 100644 GIT binary patch delta 280 zcmdmPy4{pFz?+$civa{)o5fA!)n$*op_m?hLvf;`6f;O9&J-acGI1RnSa7>NSP-am z<6kR&kkDi+0Sioplcx!|!c=a4BoNF3R%#(?1{W+94PgWeo)NQ#2~Oq{KL8fHC~nOR zv}5uCNij~i8z<{YI73Bcz^W!o_+nATBY_ay2-NNBQ^fCZ+)$k|ZM&1B#W)?065O{4CH<4GDJ@STPdh`v&iH=gtAdxsLun16e<9tyjkkI5a z;u@1|`FTP^I2o8xRZkXYc7-Y5oXq?aqCTF@1kKdR+u7XU>R8wpLe#C`w1o@4;dEgJ zTlU*bWAYw5UM@_#`gvX8%5U*5f|yY+05JpMgUJsB5bCrA-$RU*6}3cnQ|1cpf@I0T`D-egB!smZ@2Wzcn6NyWl-&XbB}1$*$1yfeDG zWQAzBx}yp*5SKhr@(c- z)gg#KtgS%_a&n@R44D7L+5^lFbcOKaY`jq9PuT>c$lKdGp~x?`4ME{c+Igd>Kj>+w!ZaQy|D(~#zj-r2!Lnw;=I2-B7c8>ZeYWf|cQPl7_LCl2N z(cqMgBG2m_h@!v2ITJ;m+a(-@-{O*jqMpmu1x3EV)fYwnzH0)Ce4?8_iu@(FR1|)s nJ0zT8@v_$)5)Ux<8+qiSn0L^_4Mo4EC#w2+o}OU&SDtDB*D$&% delta 1238 zcmbO*g>k|ZM&1B#W)?065Qypun8>TkUh|bdz3wajL`NxRkVu>rSOh4#alR-MNNDmI zag9l~{5+u{oD9sUswayxyTX)jPGdN{9D-0nZ?Yq=)Z|~1GUz(3q+;PZ=SfAgf<5?0-Wgq8 zvO+Xm-BAS@h)bR*c_P$_aKhtka-eb;O!Y)ZvCT)6ty#fNn)mR3yfq^OgB244g96w| z4zAp=a0JHNW_!(0Mz9m6YuO`=21onkUs^#hLpKL&JF$S(&Cqv5SNB&x9Ih_fAP8dK z217`M11(wn+7ROWcgB#EffO;}Ch>5+drhn%>VBJ9pxY5{j!0CC&0j&(O|Y_tX`Xz^ z>JY>q*4Cf|IXTfu2F(9r?E&Tox_;|MA6^ioQWdO?Glc{Z*fUMQP1V-f+Anw>Wdq*D`_?*0LI4D7?sO4Ob}4rUfz4fkPWZVLyi>Oa-%@TTW z!5tFsA%0pVWeOL3CN&2l*eU~YD^kEsz9nM|S12cY1ETP!oGHlRlMUr%z*YpvJAnC) ziV*%Lc{db!DTPQBc^M_?$r}`uQPg}@@I+CQplFFAzgy8BMP5e94n@9338Ek7rsq(3 rn48>{eNohJQ%*(3 zfv#+FHM2KN-R85*YZ<``Ygr926kcSthAR|i(}I}jz@d$yu%E*auJAYqH#5{krO7@@ z++3Ut%xDgstjPm6cycz+OR(~AUWfyLYB%@sszNN=#&3^dnWR7@+_Fjmb`G%aW(hsG z;0}rR5I?PwGKC91lbQn&Y?Xny6)E5*-;%L~E0mMH0a5r<&J^VE$%gVWU@HRT9l(4? zMF@YByc>$VltLtmyo{3cqnmA}^z4haz921kn$3({rdi q%uVjfz9{OqDW{|G?Nw}0_;Xd9!F-s0CRK?2F!PgDy}|MuRn-8j=G+ee diff --git a/examples/zips/management_agent.zip b/examples/zips/management_agent.zip index c6d49a3864cec3a0dff8c931d94ff01eb9b99851..6d984054c3402394f95acae3d675136afc0eda37 100644 GIT binary patch delta 286 zcmZ3cuuOqBz?+$civa{)o5fA!HBgDXp_m>G#HAJ742&!VdK#bs|8T1FSAF zfE}a`h$rrN#0=Cqc`l<5c|G#HAJ742&!VdK#bs|8T1FSC9 zmK~%Hh&QebXXFEFjnwsKz0J+ez+kODnO{ITa%v4I6y1gznLZUV0v!Gb12PB6jAwL*u$Vot(NAR{Noi^zca%Y?mA_`)KdDEvAR SUljgZH2Db80I>XOQ8fUa6I3?< delta 270 zcmcbpeNme?z?+$civa|px&kKhnyA!#*ua7;0@iRrH-XoTU_lchCz#;mTA@Q=F(+Xskdc$)MP$JIWy0Pld|?q!6n>qE SFAD!HntX(409byts2Tv6@l)>r diff --git a/examples/zips/marketplace.zip b/examples/zips/marketplace.zip index c4757c9c2cfea65a707cad8af83823aae0dcf803..9e7cad59c650ddbc9232147841e5ae0e0671c57d 100644 GIT binary patch delta 234 zcmew+{!N@Wz?+$civa{)o5fA!)n<>pp_m?hLvf9Z>jf-0ooh1#UF}H2qJb delta 234 zcmew+{!N@Wz?+$civa|px&kKhYO~jTp z%?wgC*^$KrE?C3j&j=Pg$7%!@WM`{m0trV$A~=iB94>f+F9>3$u0RZ2aDo6QL~xFv6I}4ApcXUOb|Fz8xL~U2 zE{IAcafF!(;wBJ_rb~LjRX&q+hX@+Tz}-2ySY{X4NCR0LW?)E64wRPx^ZR5&Q1~oz zz9{@+xi}R5XSrw;eu2Cf3jdCLAPV1K!4-wSO(6?~@1z)j!r!78g~B&bLe)QADGWuP LUm0S5jItU4NjJNe delta 547 zcmZp2Z*u1i@MdP=VgP}tu7HWWdMY(v`P1uwxU_X%Lo>9W%Gp#&Sc|&s9eHf0~dVG z@d+Y$huax0sK!$W5uC+m4i~(^7X&d=S0Dy1I6;6DA~;9T2`>0lP>UICyO5|4TrgF1 z7eu9!IKs>XaTAC|(D0~(< zUle|^TpSAjvs^R^zd+s#g?~pr5QXor;EKZErjUigcTx;M;crolLg5=Iq3WNm6ow+t LuMDw2Mp+F2qj|dS diff --git a/examples/zips/metering_computation.zip b/examples/zips/metering_computation.zip index c95281545ffe095b4a940ddeab604cf5462dcce0..f3b008f108b395f48681f58b6baef9a22c698e9a 100644 GIT binary patch delta 597 zcmaE6@yvoZz?+$civa{)o5fA!HBpJYp_m>G#HAJ742&!VdMT>Qb%Pq3R~v z3P~}8v>tW@3ju{Ub2GX#gTy9>vP7e+n|y^O39itVRgV#@Fpn(|L*Zk#2)IHg_JvGf zh0i!`;euLR5fI(2+!)T8{Focz9&Mg2OngB1M1uVZCMJL6RGI7}#m&XZz>MaT$zp z7=&*i=8q!3P%INgUPrtDMSh=nJc_)%L>dbJxP&)~dJ{=h`{qfa+Q%;iQ4e!ZjZ_ed X{tr@-DCTENC!p}(N(X@X4l-&0Jb=fY delta 597 zcmaE6@yvoZz?+$civa|px&kKhnyA!#cXcn8y}~q3|(V1YDsL`$8tL z!e^Yea6v7u2#D@hZVcy4e$0(?WMVw%Qljn#W2D>^*)CpwEt4=`U) z48k`M^GA_iD3*yLuOnW7BEL^O9!1_>A`OLqT*4bgy@@2Mee)zy?cyD diff --git a/examples/zips/monitoring.zip b/examples/zips/monitoring.zip index 5d9a4d7292dce54847d05f0a9e4648da88e01426..5da15aa330cb608e13025deffb01a0fc1a2cf2c9 100644 GIT binary patch delta 451 zcmX@Cd03M-z?+$civa{)o5fA!)nbplp_m?hLvf;=6f;O9+DHW|l3rTD&A`a=l9_>l zr5>mrq*DY)bAWYjv;pe`s@?ddj0vQ5axSx>5ixor*PRRzUdGD6P$0p;pfdR&x9sG% z%=|FpHZ!vvUx^1{S&`=!K%hPRJfz$$TLXbRkY* aM-*K-!rtggZVE@D3x$ZdfraLZr~v>4Lxb`F delta 451 zcmX@Cd03M-z?+$civa|px&kKhYO&XRrRFUFJon3D3D-aP?>y?TXynW zW`3A)o0(Y-u!7Ay#%T-_+{ES2CZ$CuEPVWWJCGx)7(Z ZBZ{sZVQ+LLH-#h7g+fH!z(R9H)Bq~CgN6VA diff --git a/examples/zips/mysql.zip b/examples/zips/mysql.zip index 409424400a8e7e8677755c32e2b3760e25a9ed1a..657d737ff94b358d331d01dc8891da0049c80fa7 100644 GIT binary patch delta 487 zcmX?SbIyi0z?+$civa{)o5fA!Rb`L7p_m?hLviv(VG&M*M3^O#gcLJK?PdqC5K#Tb zUwKR*p~(RJ$5vVRk`W_(awbtV=^q4FJB;o+$tT delta 487 zcmX?SbIyi0z?+$civa|px&kKhs-Lz=@J-QdY(9CmPpyE)D? zgBAAj=)naK@dPn~1;zPv;DTO!2CPs==wcXoP8eY~r^tMW-K!;xVY(+jmDmf`yj0Q{ zG#HAJ742&!VdMT>JlCCsS^RJ z=Kz~`%!3_d9uRL9WsG5F2HG*XgvAmrxP>L05iH2ZW(O0T9L#nEEGEV7L6j|%+t^EB znm03Y)Iv;bJ&o^3Nd_olq=<3pyw%L(EK5$%hNx zQMnIMxlautXrf*U5nQ8T#|#YK$shH^IN|X)nMczfDk=l^cdcd^3jeF7I|@He%Lj`o zXS7gtxo9_`=z5{ujKc5LX+YuY>(-#~&+4|L@XPcnQ1}A+1t|PQ`gJILCxc29{#}E5 S6n>pyEec=O2*RIhqy_-U7ziK$ delta 748 zcmX?{dN`Fgz?+$civa|px&kKh8mQEKZR{m5 z&6^oHY9S^za+bmc|8l-!0vq{?rwA^X%qs+OP=!DqT=1>HL5TK^LX~hqL*Zi(?Y~5` z;DXs=9uUE85=n4Dc}b{XmUIDJ@S$`E#G)MeY`EY(`R5RePAC?_1s#->A!eqjRG*K^w2(HnvV+IEA<7KJZs1mVv$QUd^wVFyS6 diff --git a/examples/zips/network_load_balancer.zip b/examples/zips/network_load_balancer.zip index 1a89afbd3a4552936a6a0fd28cfa3eaf608be443..43eb0496d7f379a19e2a952bdde197eeb53b67b6 100644 GIT binary patch delta 3745 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 delta 3674 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 diff --git a/examples/zips/networking.zip b/examples/zips/networking.zip index dd722aa236e7b6d8ee4c906a05947a9654b6e14d..6de6891c1f31e8e8eb20d039bbb024923103600f 100644 GIT binary patch delta 2501 zcmZ`(drVtp6usV>oqqx|OJ<5PVp>{Gl1V=j_n&|{Zw=7^}u@zkt z!fUmBYbhNYbTIK5ht1rQMPr@*v4HLmlL-k?5;a+7X0n)=X_n01?{FW7B1uWkIluEe z=lst3?zJ0=Yc~{`j{R)1isAqM*wO6I+_cI$r+fMEoQ{-f*DA#TiJ0~N?$xp&r;g*D zFL>85KP55DEKAC~oWEN|+ePtpG=+M>_ejSezrZ8I%7&bu>{gH3+wBa#*p)jaTQ|99WEU@yPva`u5&RCgx&@L@?&OVh&Z<9WWrGI&3+VeOm4XqIrlW+Q$gOWJ;wRQy+TgoP% zxjE83qF%Z5%{rSnRc^frR#4OMl<4ejaKHo$&Z2}-i(HZ>Ue_!DpKaWg0KC*_7a5b9 z<^j04S5F?ETbIxn9sl;t@Kr@J!?ZraFh%~@Ivzuq6lX_wo_xWv9KE1S-V)A5gy zCWS=2TpVW<_Ql`AM<-@r?l(K6+neur6mIWcSD{=r%6Bo;l$RQRG383);5gEDQkwpq zlj~tulkS~@B;;53m-LP&Jlo}5)c3#x-w3`F>)U^VN@;3-16lv`tqFP^0(JDR*9-z| z?5RrN_VpYUfe(64!Ibaz?&LqhhUfhFtD1 zkYk1hfI=wIzGMp}<_4PNaB^tyrDc>AC|+^87R9fgh86_AO}<8i|G;+`+4}dK$R1y2 zYy21=@&jJzKYPfA^4&uqi4b4t)sVHsfG|zu0JR0o_oM{HO=o~ph+D=qBzne-Fv>tH z;vfMlivJs^L-FH53yS{`gw+Z)_*GR8qg9d6FxECBRE0P?LwJtgLzO6AJ@Oo~zZ)r| zwoua;#y$JOxaW+JhO9rk1#!H7wgGYQ+OVTo8|NtA*{xB0rnTpQL%5OIWp?FxjQ{5R z@|rcMr%%V4k-c>s@8-&QF^WGH!8iO?1auR0`7Kh8@K0aB&#HYuLvCFtL>R*a^dN9d QP1K`!?qmnG1C#mx0kk}zHUIzs delta 2501 zcmZ`(ZA@Eb6u$HVqXo*4>GYP8F;-gkQC#d~A7#LxP&*kNf}@oW&2)mITNW^~tQB1o zLV?xtuBCKr(80vdIBe#YEE?SFR~C?R(i|6~q5Iy>@@*##P7fWxeXYmqjYHYm{PuL`*t=Z4*?jiS)THhX z1;ga0Gt6dxET25VrjsKBDKdiSu2m-#lp&^kT3(*|G%B;m+NzpnsWVLtP8fotzIJt; z2>e<-pG=+MoCBisevU1bI%7&5F$dB!iyIr3#*p)jb5&x>Z7v-;yPvy+Bsow4;j;4Ibe6`el)4v=fsAUU-~15oFaO;Y;9P1WGE8YN`ds0ZhFPwtd= zL|0YleCui!%P`X_^36exTo~RUm$`du5vUh2ndGTdlYdO*VvFV5&Vx|5c5O`nmYSh1 zzh$?%4VqcpU6BB^lsQGl56ZX{T4uqaBU^%*87nHEXQ>u5Ubk3*`pX()0(F`d2H<9$-Z<9WWrGEuv#{D=c53LpylW+Rh{gOC^^)>|+TgoP% zyExK2s$RMD^#-drRbHbJR#4aUl<4elvcm)mj*^5?OPrD>9_JhYpKIQc0KCv_6B(0Q z<^j04TSp$AS)0%p9skz#@MT3Z!?ZubFeU!jS{_Ndw z=&MQK_VpbSfe-plz?ARxZ|6V4WPdOh9#{V!YUg{wF8A7y{i)Z9Y{P&Z<^M9IAr}XV zpb$!QF4;nfn}aQKI5{x%$}-9-6t6m2kK&h4LJI=lMqe|+f9QJw*}C@~$evhc zYy21=@&jJzKWEsA@?FCqi4b4t*N`tX z;vfMFivJsEK=C6%Gm8Hhgw+Z)_*K=8pjDC32-Y?uRD(FWLwJrqLe(fo#hfvLj(02l?GS^xk5 diff --git a/examples/zips/nosql.zip b/examples/zips/nosql.zip index eb3c3536edb2c5816422a4db41ed9a89b198cf0e..46584278db60d4a7c141948008bebb04819c4402 100644 GIT binary patch delta 433 zcmbQBF+qbjz?+$civa{)o5fA!Rb`L7p_m?hLveBdiwGw|BFqp;LW&urcC`gq2&jJJ zD-C9l&}2~-6Le*hb6Kom>Nc-u@n-@nWMntTP#D8*2Uoa|Js+Y_m`e{X=)o1p2-ZD^ zTN^|7Yi=XBLKU8s5ZxE}jA4S4x%l^hHJ{`+W(K->a)N-^^8M?ZJ{J delta 433 zcmbQBF+qbjz?+$civa|px&kKhsN{$nosf@GXvc`IYB^d@&h3@u$Y{HJyc8v%&!-4 z!%*{FzzIc-x1cA6nr(uvC~9Pdd{Fq^LN*wBUJ6;FsBsZ?K;bVFb_DZZ39A7B8o808 diff --git a/examples/zips/notifications.zip b/examples/zips/notifications.zip index eadd6bebab564a43ae7c3681cdd4bc1b7d4c7b36..64b62734773a06fc72ad43f2b8a7b955472ae8c8 100644 GIT binary patch delta 505 zcmexq{L`2>z?+$civa{)o5fA!)n$*op_m?hLvf;`6f;O9&I%zSGI>2O8(4IYD_9h$ zb~6X#UnY>)WDXXDU#2ryonM?Sf@Rv%Ux{6;i3`M?O(i6z?+$civa|px&kKh>ay2-?G6xGnFoZ=ABACJE30Jv;Z6_mGWeJBPTyPJE7DVtRr$1cKo~s`sc#+!- zF386d01-^&H3kcUT?u#7l!qzas$&-cm zfgKtmV$BTHIk`|&j1wM6lQ)WZKt*N1s-#7OQTP+k_^e{#DDrh;{wVzSVzDUvJaHE& jAKBI`;*Kb)%q4tK_)8^FUBxdMh9ciC=?UgvmQ(`(p69E+ diff --git a/examples/zips/object_storage.zip b/examples/zips/object_storage.zip index bcc8e6e5fc27255c2343b37e12d38a8e6a34370d..94b3b214c86897785e87ac5489f66f9d12202a47 100644 GIT binary patch delta 778 zcmX>cb2x@Kz?+$civa{)o5fA!)nkvmp_m?hLvgaBm=rTeDBcb%1Qg!5WHBR1XtEcR zB}{B{7tKb6We@Is1ss$tO!E)Y>_aC;1^Lhuu3E!PL2}`fa!*t z$SCd$6WbgrUdjx%=B$(nhGtc1Yq-L6=@^K^kI5peW|6xMvHFp`4NT=^RfXkX6VEF^ z0u9+YMv8$jb(^~sy`Vv%jLmU=U(ki9m(^1P01T}k-T(jq delta 778 zcmX>cb2x@Kz?+$civa|px&kKh>ao{+0t#O+F4)fU8X{QA=7(iER!QFJ%T>b5_a(L$j*1HC$o3bPUAd$7B&!v&h|sSp7)e2Bvbds={)xiRTp{ zfrjiHBgH_Ny3JjRUeKUWMrf8&ISAH#PsN5A7%h_@s>y))HmW`-{8g&%D12cxUoiim z4n%#ES`4!MB=r(x?&N9e#VCAj4ObNYBn>wd{x1y=6n=^(L_N&9)0!bD@{U?@DExz3 w(O^DIy`8obiu@vNPZU0{4yt=fbi7dXKhS}A7ZyDJy74IbFX%$l%j&5C00{LS;s5{u diff --git a/examples/zips/ocvp.zip b/examples/zips/ocvp.zip index e04e070da531c06286da3ce5b6912fe3a8e69aa9..d0780d35bcbbaf325d027f47baed0396ea7ae7e2 100644 GIT binary patch delta 178 zcmZorZBXS6@MdP=VgP~HW^ogFRa7ExD5ggPacKoN10%~zW(Ee9dY~*wod}TT0ILht zWe2GP;*FjDjLbl-lW#L>!^Af8GO_T11w{mmV1ko<1$KkQxCM=vff^?}2+Dx@@q*SU S{5^t}D131t2QWWMNDTlop)`~L delta 178 zcmZorZBXS6@MdP=VgP}tu7HWWDk?Q!`P1uwxU_b0=vOt+=52TK#h|f1ZBYdctL9v S{vJU~6u!8S1DGErqy_*hiZo;Z diff --git a/examples/zips/onesubscription.zip b/examples/zips/onesubscription.zip index 422f8a57a04faf5e8906dc6715b2343532501333..10e3528d1bcbc2130f14705c644def41b3d295e8 100644 GIT binary patch delta 761 zcmexw^WTOyz?+$civa{)o5fA!)n|{qp_m?hLvgYow+JUfBEb_$LW&ur_G|!H2&jIu z3S&MaNNn;nCUOpkSHYC?Nwjex_(RnEz26!WR;YLy?~(7K$RzDIS9& z-!7hxA}=73ha$f~A`wMiSuz8KzgE%>MZKt0B#Qh5sRR^xA?YX-`95ig`7r+o$^@gx bx5=QYXOi_sF)v>>9!32J*)%XeQcev3qQd-@ delta 761 zcmexw^WTOyz?+$civa|px&kKh>a*8;H6WA;k<*do}eg+W8?#x7zuV7n3$ZvYc~14 z1V0xi12e*rV7E-pVvmArJs!xT4Y5F%-xWjQG=3kr!k7H~OyIEkEoci9oNO<2KoHfp3=Gzj8QFCv z+X#ze7*{SF0n@qpns6e-UMo>sP_RsHl#l@%KT|Xu%>O73;R}hyp~z1X3q_IV6pulX zZx>HTkr$B2Ly=z~k%%I%ESZ7AUn}W`qFz)g5=DN3R04{;kaQG^e4jMLe3*X(Wr9)U b+hkDHGs$|Rn3pdbkD~sAY#Nv!DW?Vif%^Ng diff --git a/examples/zips/opa.zip b/examples/zips/opa.zip index b802cbaad53d95ae7e77f834b613d14f7448a442..051ab5813f140a37f69a65142a496e803d2a6ee6 100644 GIT binary patch delta 178 zcmZ3^yPTIdz?+$civa{)o5fA!RaS|-p_m>G#HAJ742&!VdK#bs|8T1FSAY zhaIF2h&Q(TGcp6UPQJ;g1ryuM#bm?;7PMzEgb7YAXW0W5Gh;Pm25OwFz$OFccd}Zc S@Sn0;pz!V4?7{p-HZ=fV;x!Tg delta 178 zcmZ3^yPTIdz?+$civa|px&kKhDy!6dmPz?+$civa{)o5fA!)nbplp_m?hLvf;=6f;O9+88VX6x}#AkP##_`6Z(T zOl-0S(|)knD<)esos+$pU0}*KPh;+90jtyCuwVw7HCc~Sj8gyiZ0FRhJUjP6A delta 209 zcmdlgvQ>mPz?+$civa|px&kKhYO&XR7a7us|d;*gg5et}wyLyM>Q|#acvMnSs8W{6S0x z%zrHs3gwGUl41i3C5fh^DiKXYSCS`IkD`QMJO*7!uXrhn5*3LMbS1MSQqhGJCH+uz XO_U5nSHdZki7qrnDi|#EN=gj?@N2eW delta 505 zcmbPWHo=THz?+$civa|px&kKhnzPq@0xH~W z%(#{jq-^qIreJh+lcSgm;R-J?zhD6?+{@vIp-`VQ9jHPO6$}=7C8Y)cHmkM9 diff --git a/examples/zips/opsi.zip b/examples/zips/opsi.zip index b47e2c971168c19f9aa3f5943227f81e0685a5a2..6019cc30dd89bfd6db2afc63b1a322e107c59a09 100644 GIT binary patch delta 1957 zcmZXTNla5w6o$(zZ3;0~rUFVqSU|CmLIOlUiULy7QYfVeNEs}H&;k$WOrZ>|U?RC} zOe8VJDPqDx!$LyTm5C-`SSSl{iZ0NFCPs}eMEY*t?K^qho%4V9Khx{hV(`{tuuxqc z63XZKe_!)k7ldgM`t20s`Rx>>)`-w|VR(o?tu14v6X?`hJDob9AEpI~Lj5^Z6qdu{ z$a8cx>@+J+zehjA>WG0Vyd{J-Scz0{z!<)UfF^!625$)SSYV*iAEAzw$CaokJ2Chb zHH=$z#mUh7kz{@(FC;K9=06-U5nd-sWB6K*@sGFw*b{#agR4o6Z1C{GUi9q-<-8!2 z$E%Cx@r)=aUV@HWQqfCG221wtuy{)*6ege*C%wtfT ziPwcsh$mXe93)_5RyH${484;jqF2H&j`NDFlRQYsabxEtc`*mvmp2ixE$uBgI*g3@Ufx@)H$W&g;Jw76Mu; z2k`4J$_5VDSz{yM=bBUuF3FFfBtrypdyX;}W3RVg6IjBAra6c{j_D!`*51JGlJYk}??ZUef2Qh?Y@bpif2f|uH zqmWUILFVJwMc~nEnFDdGwE=jRy2R+d75B>QCfa5P%mW*qjnT91<3QiEUjQ}Kjv=5c zJz}))$N`MT*$tQ-XBmh~U9EtB>T&?Rb-V@WyW=(xTix}5|K{!hIyEr^^u)PI z0$u4*0{yWE_Fq1w2l|t#N$|d7S_kx zf`o`pWZ*^NMIzNzP@v&Ob)lW83%e-@i@M0%_p*22!?(NV`TySkbNaTu6t%q+CD2xL zqIs;)uW3%ZD9DKQ?hDQSeIe57MCgYgh7(Hb%V_BoDz)BDr4H#w8EjE>D2Ixr=lTImm<;)6~4{dQR{SiLd{JH@prND*gO61gNRnOd!{x^-^o-YkE1U#$RSw|S z-_#8Zu(QTZz^^q@3@$59pfpn~8k;;Gz8HPI{kq5!Hg(Nx>NvUe)eQ3+^$ud5sK1Ka zz1LX907XVC0q2c;3|?=}VSszhX9<|wvWdZeZD&Zb*i?mQnC;3X$@MM`Zc<>DF)U4H zeCE(MdDondEnoCjFu?r2$VKk-y~Lp1k{>RERxIn(DtfH>p+6a_b)-`9hE+?&axacg z+pIu;ZYu$?#I6B6vYUXOFjx!p;9wij`3@C`t&T3h|8@j{zU2|4jiGYDNQZq4W_K7e zsu9S19=QxWdY$tiPINT@&r-h_J#gV(!@Ci>J%D-W#JkKc5w>+0X4XxJ>boHbd z9eCw{(fPUov*RlRajCx*@X!2Sptp{;0DX7V4Pw_=J>b8ObpYKlJ_GdBiB6#3ng{@0 zJ*fuzlS$Zr`IHgpPp2lp`;KV?(08W&K=;lR0sY-fHHgp8!n?1`7K8Uk0!qMl2XMdP W@Bd9e5A>QK+}B>Pl+ttNGXDcAT;e(a diff --git a/examples/zips/optimizer.zip b/examples/zips/optimizer.zip index 4e084d458ef26918b9f1b28d049e0976906b4cbe..92350a9f38b846ea7dea3c8a41ab223f36d10bd6 100644 GIT binary patch delta 225 zcmZ21v{;BYz?+$civa{)o5fA!)nt#np_m?hLvf<56f;O9$_Ok16x}#EkP##_`8lHj zOl-3pQxywXa5kGcOmOl|wtZl+S?uOYAmd6axEUB(UNSQdSwsN>K11+8WmqQHzdL2El diff --git a/examples/zips/oracle_cloud_vmware_solution.zip b/examples/zips/oracle_cloud_vmware_solution.zip index 1cd4047c7a86545de7705a761a559f926da4fb73..4ef6ae9b48c887ab513ee694fca16669f36c80ed 100644 GIT binary patch delta 156 zcmeB{@0RBc@MdP=VgP~HW^ogFZP+7kD5gi>P@EVb#S9Y3bp?w6MK|t@X9NjNmS%E> ziEU10GUoyd&gb!h2~PgNa~LePjn|7AsB!XZJ{d4yi7yz1KbCOCN(>k+V6BAYuiP~&7-b{R1L6k7la--g`}g};V96wGJgPy+y{ C!84rz delta 156 zcmZ1_uu6b8z?+$civa|px&kKhTC&%Cl z6WbiY^pOcH=)>v`6P!GY^$1ujk}3bIgv{SVg;8!3crEN7lr?xD*%O`$Q=Ua@8DJg01v4~zyJUM delta 214 zcmca7eove?z?+$civa|px&kKhTCmrAVM3X016l69a=j2Lpr7`qCb0I&9Bwe} slOJ##0gEl?bOR}zoX8~uv4YDVh2OyCi^6};6@bD|G#HAJ742&!VdMT>XKa8q3R~C zm0||zJmn1*0g7&xVO+)x5}UkQP-n6qD+f<#2qyzGs`|-FtPXGunXHc(!5aM7-OM-F_ZVxH^8`nGkiW1ufClaR?#o^%vR!QO6~21=s8?9szO8 zG6{Qh&76{MaCKplDXd_}?3MFCSEniO4_8+&zYk)Gg9^kvU_eZ6Q#lCM>!oUru6L=b z9bE4#)jdpLbt^S&(baKjLgD}v;-Q+c5I1ktazs}rr44Z&NL{A3FFV-0oksSc2$^hX zB?IP583#f6Vv_?**}!6b#*rv$I8EF!)D)Tcp{RLe5{jWF(liD|&2`fN3^kr+;V5c2 zO{6E^HPgXRr)>_i58=+)<{l_|SuK1q^p#kIps0Ce5r&~A$ubs0?4c#hEJ!#7Sh-@T i*>2^7Vz#QaH-?%?*0At}n8Rk{kD;dA2I8g*HfjKW06(t) delta 922 zcmexX`K^*Sz?+$civa|px&kKh8miQMW5sZa6B^-?uQ*Sl2J z4zBl=>K-Prx|JHX=<2vMA#nf-@lefJh?}=+IijnR(uOz>q%Kq2mmO^0P9u9zgiJQH zk^%FjjDw(jvB?3ZY+$iI<46=WoF?uVYKlz!P}Dp!3B^zoX&Qr~=DKMBh8j<^a1=G1 zCeoAdn(1Ju(>90Mhj8a?a}N}~tQNi)`bsQ9P}ID#2*Xg5WEqPg_Rtb$79^YktXwhF iY`5}3FRCEfT(L@@kUqol_dzS&X099MBN`YA9Qs&?7?t#$JlQ})GgsOh6~=~ zyuc22%tk?oi3lf8Ru_tdt7{iJ4Reh8PxCz)<+r_QmVn4+9fyH)8 zSb=Pwd{IgU%omk(hVsRbOskTNKvDHYG9HVn`?AuLCrH_$sQe(6fJJ4IbQFrJchZR{ z{6ZN=EV{19z|4ZUHB2@gi>mvwktk+G$-#6X`{<4wHh((G`=IDuFYf{7|B_b&0Ji_- Ar2qf` delta 665 zcmZ4Bu)u*gz?+$civa|px&kKh>af>*_F%ZWW9+vf>XvXC!v*hg zUSJ11W}_g)M1+$ks|!WK)wK(qhB-!ka=)BBPiP1y12e*pyg&~{{w}{1yMmE{L3{Fl z7FnPw4KAn}pt{YnqK607wz! App_m?hLvfxA9*d zBS_KYd?pi^*ydGCArL`E7GpH6lOtHH;Ob_w^uW}qP4;8sMORzThERKeEtd&wkpZVA z%z()SoCm>TCR~=xK*vlj;F1CJ`?=hpe6h*zxY)pA-?@A-#L~E(Q1qSRcEnJl%j1Ej aMtbrl9yJVgzu@W+cBb&UgVn9$RRaLUf`23c delta 362 zcmca2eMOo#z?+$civa|px&kKhYO~jTG#HAJ742&!VdK#bs|8T1FSC1 zjvb^9h&Qf|XJiIyoy^N*0~6aEz|;v5yu<7a6P&EZaty5SJ&Q9lP~&8NHW@HKgw+Ry Se~8r!g|EjJ2&< RKg8;V!q;O91oNBN)Bw4yHT?hp diff --git a/examples/zips/osub_organization_subscription.zip b/examples/zips/osub_organization_subscription.zip index df86242e848a9ddf9fc19318c5d94d7c1b03aff2..e713616e48ecbe0a11e219cbca2bf3dd86be6f84 100644 GIT binary patch delta 177 zcmcc1dzY6tz?+$civa{)o5fA!wNr__p_m>G#HAJ742&!VdK#bs|8T1FSCJ zogJhOh&S#{WMl?vovg^@3KQF$%Tx>ze9Y_v6P#?uavY>^5~~k0P~T*KRvECqJl0SY S{!`Xq6n+$26qvuAO$`7A6E~Xx delta 177 zcmcc1dzY6tz?+$civa|px&kKh+NsohWh#aUK4$iT2~IX+ISx`diPeW0sBf}As|;9Q9&0EH S|0!!Q3O|Z13e4ZmrUn50^fzk& diff --git a/examples/zips/osub_subscription.zip b/examples/zips/osub_subscription.zip index 94e38b5c1c5e79b8a6334ed0a3349f681a701612..2bb1a7c41aa8b1e20f6efcd773545b8fba663f2c 100644 GIT binary patch delta 196 zcmZqXYv$t(@MdP=VgP~HW^ogF4UHmiD5ggPacKoN10%~zW(Ee9dY~*wod}TT0I7?t zdU+_#hLM56iHU(hWpW~m+{8XUc92dW-ncl7kr}9H@*hSEnAm1(CQ&A^U@(h4OmOl{ mmVIEcC{}xBpvK90Y%*Z}ZdMNzzABp=3cr`l7tFuQrUn4?hdZ(E`5mJn zOl-3nlN=LR(4EBsCOEl`Wj|QVgVjO_WL#+lHv=QfOJ)WJmU^H?0p5&Ea?Bz?76-`E b$%|MWiBZPNW>1W=G&VP8prw=7v#9|9@7z1L delta 225 zcmcc0dzF_rz?+$civa|px&kKhYO&XRG#HAJ742&!VdMT>O!p8q3R~j z=aXUvY26eG76J-y=3{)v0ur12pVa_e-Q-|4Z@9vxY*tKyK!uS9XKh}Q#K^#KjfsIl zb#fw`>||a}0k|?p?lMMBxFaVo<}$%B^*5J2lJXixu=NLcqTzx{ydDt2Tt00K-Fx`V z;0hhNp}H#s9N~fo1h^o&&kE|m1UCu!K*aoobumm_AZ!6sw;66?oM;?e@UUn!M7N^2 zAxv;`r1(y-!$le0RRg6>G%Ku delta 697 zcmX?Ncf^i2z?+$civa|px&kKhDy!6dr#>Bv& zIysR|b}}!g09=_PcNrrm+>w(PbD3b6`kTuhNqG$;*!lxJ(QrW}UJr<1E}u4r?mc{F zaD|TCP~8;*j&Q*P0$dQ?X9aa&f}4bVAY%T)x)>%d5VnA++YC1`PBacKcvv(VqFYhi z5GFV|QhX=a;i3|T%)o%094IX|xj~ixRPjlgmNj M-;uKi^X25#0IUn?EC2ui diff --git a/examples/zips/psql.zip b/examples/zips/psql.zip index 4bf4d2a23acd2f1f9b55730efc6dcb6e8673b18f..a37d4df6d344247ac4e45d93f5b2536fac1114e8 100644 GIT binary patch delta 296 zcmew-^-qd7z?+$civa{)o5fA!RZ)q&p_m>G#HAJ742&!VdK#bs|8T1FSAo zmmQ=Ih&Of?GBN|TPX5cN4HMg}&-8&AEU3h01QVPb&2|ecX2GsSlqHkf*ll5&H=klJ zg_!8XZNv<;cJf3XF;2L9CQswG#v=Ne+Y*bYACCi6R0iyx4LlZDRB`cogGD2F)c~pt BROJ8w delta 296 zcmew-^-qd7z?+$civa|px&kKhs;Ja_vdR~+_z?+$civa{)o5fA!RaJ?+p_m>G#HAJ742&!VdK#bs|8T1FSC0 zfE}a`h$r^eGXr%_=4aG{32k;^3}gfg&R{Zx3tnK#g$O#Z=)eVwSyY(8Drd19!vrT^ xVc!Q9o62F#476eLX$~1M{}qQF3g3&<28F+Z(;kJ-$z_GYPvvq1^H*}I0RRG-Qd|H4 delta 251 zcmX>vdR~+_z?+$civa|px&kKhs;bm{Q&+m@MdP=VgP~HW^ogFHP|C>D5gi>P@HHZ#S9XOw1SCDp3e*s+U^Jz0xI12 zKbi@oYH}>IHM+9NdzhVI>Nc~o1TcdYMzA|zDr9$uE9Bx>2QhIsmmys6GglBJShoj{ z8BB0;E6)Ll7_S*K&?%D}d1b)-1-u>*z5s;J#pjPAU(M%Q&+m@MdP=VgP}tu7HWW8tgS+`P1vZ@=vspVg`vsTERpn&u4}RZFd9<0Tpii zAI$_(H93~q8eQ4sJjP0+_)HBiJ1<6|%d-6>@Q`gP6FR%MdR3nJb79tlNXf z3??|amFECNjMt1A=#}2q!{3%orgq#SBup)(R{FRK4*X z6AMUa@@E!3nAm0w)<8zEU=15YD^TI&ZEX9%V&&|{%pkr1hZw?+$!FLdp`tQiRr(wr SDEyfmHYoh>91!)^oN54)20)kq diff --git a/examples/zips/resourcemanager.zip b/examples/zips/resourcemanager.zip index ab6ca6f3052a9be0ba5a6a9e87ebf4193d049787..34d88a0e480d7fcf96ca75a970f71d4eb0a50d0e 100644 GIT binary patch delta 325 zcmZ2#ywsRCz?+$civa{)o5fA!)mMqUp_m>G#HAJ742&!VdK#bs|8T1FSB= zjUA*8h&Qf1#KH{JI=P6|6DGF!5Gxy4>?pSdOl&g?j|U@I(4W@{E;xgC3KLjRU%($O z*eVbQQTa^J3@)fF^dF*9Rn!(HI5|^v2Uxd?m@PBVEt7R6WWfApu@DsgPqAzTEYc|Zz$;v=GRNA0RRa5YfS(E delta 325 zcmZ2#ywsRCz?+$civa|px&kKh>Z{azk#2eQhVqpeqom|A~2@_jt&@RXu;LXg!#Q*}Y&Eh8V8X863P)v^o;?fFk21b^b%nS@H^*~vWIuRhv0a6z^ z)o$TEV@3uB2POsvmC1}uaufUb*g-mhc;jMUMqZGjFOS0x_XG8tO#aKLR}Ym%H+N}R zZ2n~fk=pm`Hyq;jh~Cw=XyHP;klZeGS)2%x%wSM>vxO zGJ}iH?~MQUwXn_E&}FGZ#pZ>Y zM<;RA%llpy$+T~@5Nwh6c*Ni4yk(JLVw1{>1kQ&Z?>Kgys=H`%^hI&u{7XBM798GL zZzdsQu>6PIr;14iXC5U_IcoCp!r{fNq7xRJ-nTHvyW*VYWL=gVb`6tXj(vfBPuH;) zZ(1suE%`WSezM;8mXj-dQWq-So4CZovn4sRhMhw-rMbR4WD)15yu&Z8dafOOd-iUX zSVePQdclGom5E291!W7O1k@*N{PwGR#^pVmnWSGAFIV#aXqZ&-UQO>{cI($4`4)<^ zd)}A+eapaqV)o=LR$I|R$E(wvmK~p0G3N;Da~6vWGmn^*HdS?(en>T%uNQvbPG|k$ zgukV`X7&7fwfWJ>T4@)?uEiIdlMDK*^M6Qq+Re1Uh% z)D5y%Qcdnoc~E-gQWDRW;LkoU`4+mTm~!TZeOk_zDyK8;`av76!)=m ze9PTd&!x0u>EQ*d8;zv(C7K0mPTe>xY;?MK(x39wx3ib%Cq6$DGV^N9y%*K;%b(R; zzb}y`^Ub1uZJS)5(c}=htwPtOpB=uP`Pb~zRsa3I;VR5?O_rbjJFjxF_KN*3cN(`i zxNhC&5wnU_>+FX8cDL@Zt(dY(C}4Y&)T#_OS?f%;Ag)CoBL5=43grI0FzfcM1=F;? zXgC$8&WoIND=#FiY2M1q`64f0xBQy*>Z(caA*(-ZsJWeuP03_7Fz*WibG#-fw@>Eh z5a8luV20-D$uC&9GXrz{@r|JGrI?jk5(d-v)jOA%q$4UKBP@~77UacKoN10%~zW(Ee9dY~*wod}TT0I7?d zYPay7F(U(m0}}&-%49|+xru#z>>!;$ym7HFBQHo1pLEsxV4(ivlm9a6)k9^`&7B*1 z-~YCOK;8NH!c%b$Ntz2hs~;_F_H$xB#r4M2sMCAxPR}&!sk=J=*QQ%@_RZBvofxHB ze*f>Mx%+3IeXwcGx2C;0A~LDR3+k%A{bc!n-hS?Zpb0&}3a)nAtOlx$Yp(YgFIwS~ zaL%$`!kV+mORLPpf6+~zya+dL&*Bx`bGQPexwb#eKW5qZ``66PYg`Y!v$5=5BrDis zlRPKlVw1>CJ6+>x$3Hy38hBMA!DCJ}VPf+P zw6}{2W_fc@HCrgN_KcaydP`r=WovR-CR{dMxwDD8qh4O_`Rd~(TPq^$*6N8Dn&kAb ztyxgH>O{9sdCPT^f|R9;zZnUykvenWYVS}l`cgI?t z?8a#p54yN!3N2-+uU>bxVfNFvwq?J{3ct^Yi@1hrFT*~R*JYCq8>9L>TBPT5*1DDV8pI^`ZIem8Eynr0<;HW3{4{I;XY7P5y zT4-@sfk@BW=FrU78mnA(CeK=)oD$Amo+Y=54^nfzPoX8iGI&3liZwtf_$-@DLk`xX1V z>q@g&tb+KvUxetMG5Vo!W|hg)nJ_6tFv8LWyeOvde(^TiHBO S_zLXqDEv-#KQR9myBYv%+%;+d diff --git a/examples/zips/serviceManagerProxy.zip b/examples/zips/serviceManagerProxy.zip index de2490f78d475265d9732f120f641245f2b69e71..219e5483278711ab5f895954b10b97ee3266a2a1 100644 GIT binary patch delta 178 zcmbQuJDZm`z?+$civa{)o5fA!HCBndp_m>G#HAJ742&!VdK#bs|8T1FSB^ zh8?61h&L_|W@H9xo&1;43MRJMj%hwb@ByKbT+2rUn2BpEnQy delta 178 zcmbQuJDZm`z?+$civa|px&kKh8mrWN{ SeyzUR@MdP=VgP~HW^ogF^;IHoD5ggPacKoN10%~zW(Ee9dY~*wod}TT0IN%I zWCy7O;*Bdp7@2`uC;w;kg^6trW(tJ}u4YCE{%2N)2x_ugz*T0j20;Y(vYEjJf3aCX z1kE{I;eyQ^EKFdFy0~m%f|Jj2?E#DRa@#Tk9W!|WuMC*~hT9*7AIlSs!oP*a59f75 Yk>Ahjg2Gqj3r6A3;`0XcU+}2`0JmapQ~&?~ delta 326 zcmeB^>yzUR@MdP=VgP}tu7HWW`YJVF`P1uwxU_!O7>i_JGBDxow$&j+wlGR|d>~!|jj4kL8I*;om~zhx59j X$nWQMLE)?N1*7n1@p*&!FZk2|!p&{; diff --git a/examples/zips/service_connector_hub.zip b/examples/zips/service_connector_hub.zip index 333866dfbe0b19e97ce709f8b764d21c6fe49ff6..da633f468bd855565cdce7031bd8f5aa964bcdeb 100644 GIT binary patch delta 178 zcmX>tc3O-#z?+$civa{)o5fA!HC2hcp_m>G#HAJ742&!VdK#bs|8T1FSC1 zjvb^9h&Qf|Vq^wtoy@^x0~6cq&1A|37HsBlh6zqS%W()SHi^@j8K`mc4Ne&_|2wA- T3O|+03x$7?D-g_Atc3O-#z?+$civa|px&kKhnyS=%||DDqZ Tg`djhg~Gqc6$s|5a;pIVKqff! diff --git a/examples/zips/service_mesh.zip b/examples/zips/service_mesh.zip index c1cf559f689a46ac67ad1296f2b24702e78ba2a7..54f48a0c92e02add317fb282bb77b77386fc83fe 100644 GIT binary patch delta 509 zcmccPe#f0Rz?+$civa{)o5fA!)nSjkp_m?hLvf;m6f;O9)*37V6rDKV8!YnH1}3uE zfYE{pBsMvl*$ytaf%y?5Sa2$9dP!wNLa7LE3R76p{P%#i$Rz%4WnOm;pfy{lV6oJf*Rt9q?Z&OwS06vYh{r~^~ delta 509 zcmccPe#f0Rz?+$civa|px&kKh>af>*e^)K;}MFia_Q@D}%X{w<)Uu0F>UeRsaA1 diff --git a/examples/zips/stack_monitoring.zip b/examples/zips/stack_monitoring.zip index 1cbbe5ee5c8f8baca4afdf604f6c774393550f90..318a3742db3246c7882038da0aa3424f78afbaf2 100644 GIT binary patch delta 1607 zcmeyqjq&?7M&1B#W)?065O{4CH<8zXJ@STPdh`v&$p`dBI1v(w&PWnc%pkQV!ofm7 z^_$fg*E4~{ChsxSnLNQ=ii?wh8DS1s`D9m?WVrhEEY6Hz^I4;DoFdY}{;t zP`Dl61xlE~f_Wkl7z$sBG{O}YiQa;k=r7@dp>VrIBwV4mWHu}~>;)5xvy1gZLr_D6 z59I#O&paCffbOqhogBcTIQhP|&}0J{Rk$fJGFcE)PRiM1Sf?ZJ4_DYE{~w~TMadjP z;e90sxI#7Mi;!UVm(ZTvt17~S?ksSycKQc8$1pN5FflVQxPXJTS5+Tw#$nYmh#5BO zmTI+HXdFdSi{i3prInj#R_Zq`o3P-vku8E)t$olc0tIQ?i0g?IJa;R>@2 z{2;dPG4#YxsA+^qc9V@ZLQHfw^~O-R%`^jUqN>>vh{7`#wipU^Eg_mgiLBmo4a90a z>p%>Ji>-^{Cd%66LKODeCSWKOv}=VcoNE`%22PEiUF=|jlPz2ig2n#0+JW-bWWx{{ zFh9mE5X@KfgYeJ0rJ~4(xrd|5yBDI!CwU~G$UpI@K#{NWj6sqA<5`0uKg%lsMV`ky z8AX1gcN&Vkq)$JJ{Qp4d$xnUEQPkM^rlY7i?u+UN2R~FlT=w%t(eLCRi=zLazblHo zMt~oRJje~315n+-6PSUbXIh{;nw}sO`Qji{H~$IBN0ILhUWlSUAS4q-{&vVz6!}S^ zsD9=SL-q5#ut*gBlHp}2`ZtDqqsYreK-9z1&CG~+6nUx0Mil*fBlA$?eWNC$@R_20 J!2G~yH2_I|O)LNa delta 1607 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 Mn+ExX_4N?^AH@o&*Z=?k delta 8305 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ċ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 diff --git a/examples/zips/vault_secret.zip b/examples/zips/vault_secret.zip index 01b06d383c725203dd5fd4aa16636a04a2fdc171..1949f4d73ad62c3bf7787b42b52f0dbd583650ec 100644 GIT binary patch delta 156 zcmX@lf1aN=z?+$civa{)o5fA!)nSjkp_m?hLvf;m6f;O9))XuP6x}#8gb^e(`2(Xd zOl-3j6BjdB(45r@COEl*bw60lip`1{sByAAy9}5=jm;T_|C`Mbg&)W60p_n{R|5c* CT{G_h delta 156 zcmX@lf1aN=z?+$civa|px&kKh>af>*QzR2uu$;vVCOCNu%K?ZOs~Iy;<77cL88H7mt33+efXx<#-_Pa(=3iq|0|4De BG&ukO delta 156 zcmeyv`-hh|z?+$civa|px&kKhYOvRQG#HAJ742&!VdK#bs|8T1FSCI zoE@YNh&Rp+V`K(uo&1f_6ehOWh$)8&EVz)x1|~T93CjVn*m71IW}wE&zHBmJJ}a9m T3O|R<8HIn5%?r$zV^;$JDi=3R delta 178 zcmX@YcZ82Oz?+$civa|px&kKh>Z#Ox^F){|pv&TaWsN{m!1vGW?Zmt7h{dL^d w%pm@M9vLwIHn%63pU(^7yYU2|@OSXIps1JQ^+S>G;|)dOv+_aA3*=J+0OMm`DF6Tf delta 271 zcmew^^Ie8Fz?+$civa|px&kKh>ay2-dlV+~I1)+2bJwRB}P=0-8E`H`f8M{yJ`J wW)S~Bj|`Z9o7)r2&*z2k-FN~}_&a!9P}Ixu`k~18@rI)CS@|I51@fr@0Ow&{)c^nh diff --git a/examples/zips/vulnerability_scanning_service.zip b/examples/zips/vulnerability_scanning_service.zip index 9321be369f92a56e572e030ba6eb7af7a523e538..9598f2288c5ce45c2533233dc7dd4611192f53e3 100644 GIT binary patch delta 178 zcmZ21v{;BYz?+$civa{)o5fA!wNr__p_m>G#HAJ742&!VdK#bs|8T1FSCJ zogJhOh&S#{WMl?vovg^@3KQF$%e0FbEU3li0~4HF%XSPb=Em;B4AeNekwXT|-@+b> T!q?^qM&U2uhywHfa;O0S_K-Lg delta 178 zcmZ21v{;BYz?+$civa|px&kKh+NsohW!l9I7Sv+%feB8oWjh8Ib7S{m25Ow#$RPvfZ($Eb S;cIgQqwp7SM1lE#In)5}c{k+% diff --git a/examples/zips/web_app_acceleration.zip b/examples/zips/web_app_acceleration.zip index a8e087cea4c5d00ab3945aa4c84b318472377c4f..da80fca15c739bd2438080034a956286751cc190 100644 GIT binary patch delta 178 zcmX>mbWDghz?+$civa{)o5fA!HBpJYp_m>G#HAJ742&!VdK#bs|8T1FSC9 zmK~%Hh&Qf`W@H9xoy^W;4HMh!$z;X?7Hnd3f(cGO&2|_pHj&+l8K`mcIu02y|0}yU T3O|X%6NP`4BLK`-;8X(uAiFqZ delta 178 zcmX>mbWDghz?+$civa|px&kKhnyA!#G#HAJ742&!VdK#bs|8T1FSC5 znjNGLh&L`yWMc+uoy^W|2@~7w&K|=E7F@<*2NRt9n&TK)YzwCyGf?B?1TGmcUxdpO Tg3Pz delta 178 zcmcaBc2|ryz?+$civa|px&kKh8mQEK@--+RXm&-sByBQgbbL!PdovI?;w$k!apjJ3g+udssR8{ C*fpL2 delta 156 zcmca?blHeEz?+$civa|px&kKhda~DiG#HAJ742&!VdK#bs|8T1FSAY zhaIF2h&Q(TGcp6UPQJ;g1ryuM#iY*!7PMh8gb7YAVc7>3Gi5bo25Ouv&n5%rcd%Na S@Sm_+pz!V3?7{p7HZ=fRQZ)ep delta 178 zcmZ3+yNs7Nz?+$civa|px&kKhDy!6d<3)-+4!UQLmu Date: Wed, 30 Oct 2024 07:54:49 +0000 Subject: [PATCH 24/24] Added - README.md of service examples with magic button --- examples/zips/adm.zip | Bin 3439 -> 3439 bytes examples/zips/aiAnomalyDetection.zip | Bin 3302 -> 3302 bytes examples/zips/aiDocument.zip | Bin 1793 -> 1793 bytes examples/zips/aiLanguage.zip | Bin 1682 -> 1682 bytes examples/zips/aiVision.zip | Bin 1655 -> 1655 bytes examples/zips/always_free.zip | Bin 3850 -> 3850 bytes examples/zips/analytics.zip | Bin 2766 -> 2766 bytes examples/zips/announcements_service.zip | Bin 2718 -> 2718 bytes examples/zips/api_gateway.zip | Bin 27065 -> 27065 bytes examples/zips/apm.zip | Bin 47791 -> 47791 bytes examples/zips/appmgmt_control.zip | Bin 2681 -> 2681 bytes examples/zips/artifacts.zip | Bin 7102 -> 7102 bytes examples/zips/audit.zip | Bin 1804 -> 1804 bytes examples/zips/autoscaling.zip | Bin 5681 -> 5681 bytes examples/zips/bastion.zip | Bin 4998 -> 4998 bytes examples/zips/big_data_service.zip | Bin 13161 -> 13161 bytes examples/zips/blockchain.zip | Bin 1898 -> 1898 bytes examples/zips/budget.zip | Bin 3741 -> 3741 bytes examples/zips/capacity_management.zip | Bin 18114 -> 18114 bytes examples/zips/certificatesManagement.zip | Bin 10431 -> 10431 bytes examples/zips/cloudBridge.zip | Bin 9949 -> 9949 bytes examples/zips/cloudMigrations.zip | Bin 8429 -> 8429 bytes examples/zips/cloudguard.zip | Bin 26197 -> 26197 bytes examples/zips/cluster_placement_groups.zip | Bin 3160 -> 3160 bytes examples/zips/compute.zip | Bin 55544 -> 55544 bytes examples/zips/computecloudatcustomer.zip | Bin 4199 -> 4199 bytes examples/zips/computeinstanceagent.zip | Bin 3311 -> 3311 bytes examples/zips/concepts.zip | Bin 4864 -> 4864 bytes examples/zips/container_engine.zip | Bin 25520 -> 25520 bytes examples/zips/container_instances.zip | Bin 3326 -> 3326 bytes examples/zips/database.zip | Bin 161503 -> 161503 bytes examples/zips/databaseTools.zip | Bin 6461 -> 6461 bytes examples/zips/databasemanagement.zip | Bin 19637 -> 19637 bytes examples/zips/databasemigration.zip | Bin 8500 -> 8500 bytes examples/zips/datacatalog.zip | Bin 3256 -> 3256 bytes examples/zips/dataflow.zip | Bin 3618 -> 3618 bytes examples/zips/dataintegration.zip | Bin 18640 -> 18640 bytes examples/zips/datalabeling.zip | Bin 2175 -> 2175 bytes examples/zips/datasafe.zip | Bin 80723 -> 80723 bytes examples/zips/datascience.zip | Bin 50964 -> 50964 bytes examples/zips/delegation_management.zip | Bin 9452 -> 9452 bytes examples/zips/demand_signal.zip | Bin 2083 -> 2083 bytes examples/zips/desktops.zip | Bin 19178 -> 19178 bytes examples/zips/devops.zip | Bin 46272 -> 46272 bytes examples/zips/disaster_recovery.zip | Bin 12820 -> 12820 bytes examples/zips/dns.zip | Bin 13725 -> 13725 bytes examples/zips/em_warehouse.zip | Bin 1379 -> 1379 bytes examples/zips/email.zip | Bin 5650 -> 5650 bytes examples/zips/events.zip | Bin 1807 -> 1807 bytes examples/zips/fast_connect.zip | Bin 8373 -> 8373 bytes examples/zips/fleet_apps_management.zip | Bin 5676 -> 5676 bytes examples/zips/fleetsoftwareupdate.zip | Bin 5324 -> 5324 bytes examples/zips/functions.zip | Bin 3475 -> 3475 bytes examples/zips/fusionapps.zip | Bin 12261 -> 12261 bytes examples/zips/generative_ai.zip | Bin 4773 -> 4773 bytes .../zips/globally_distributed_database.zip | Bin 20518 -> 20571 bytes examples/zips/goldengate.zip | Bin 7407 -> 7407 bytes examples/zips/health_checks.zip | Bin 8826 -> 8826 bytes examples/zips/id6.zip | Bin 1003 -> 1003 bytes examples/zips/identity.zip | Bin 16317 -> 16317 bytes examples/zips/identity_data_plane.zip | Bin 1948 -> 1948 bytes examples/zips/identity_domains.zip | Bin 69207 -> 69207 bytes examples/zips/integration.zip | Bin 2683 -> 2683 bytes examples/zips/jms.zip | Bin 11220 -> 11220 bytes examples/zips/jms_java_downloads.zip | Bin 6918 -> 6918 bytes examples/zips/kms.zip | Bin 9520 -> 9520 bytes examples/zips/license_manager.zip | Bin 5213 -> 5213 bytes examples/zips/limits.zip | Bin 3707 -> 3707 bytes examples/zips/load_balancer.zip | Bin 6839 -> 6839 bytes examples/zips/log_analytics.zip | Bin 18960 -> 18960 bytes examples/zips/logging.zip | Bin 9687 -> 9687 bytes examples/zips/management_agent.zip | Bin 4134 -> 4134 bytes examples/zips/management_dashboard.zip | Bin 5585 -> 5585 bytes examples/zips/marketplace.zip | Bin 3062 -> 3062 bytes examples/zips/media_services.zip | Bin 9090 -> 9090 bytes examples/zips/metering_computation.zip | Bin 7270 -> 7270 bytes examples/zips/monitoring.zip | Bin 5315 -> 5315 bytes examples/zips/mysql.zip | Bin 7758 -> 7758 bytes examples/zips/network_firewall.zip | Bin 12995 -> 12995 bytes examples/zips/network_load_balancer.zip | Bin 7197 -> 7197 bytes examples/zips/networking.zip | Bin 42171 -> 42171 bytes examples/zips/nosql.zip | Bin 5136 -> 5136 bytes examples/zips/notifications.zip | Bin 6649 -> 6649 bytes examples/zips/object_storage.zip | Bin 11843 -> 11843 bytes examples/zips/ocvp.zip | Bin 4736 -> 4736 bytes examples/zips/onesubscription.zip | Bin 7807 -> 7807 bytes examples/zips/opa.zip | Bin 1703 -> 1703 bytes examples/zips/opensearch.zip | Bin 2613 -> 2613 bytes examples/zips/operator_access_control.zip | Bin 6928 -> 6928 bytes examples/zips/opsi.zip | Bin 35410 -> 35410 bytes examples/zips/optimizer.zip | Bin 2339 -> 2339 bytes .../zips/oracle_cloud_vmware_solution.zip | Bin 3979 -> 3979 bytes examples/zips/oracle_content_experience.zip | Bin 2090 -> 2090 bytes examples/zips/oracle_digital_assistant.zip | Bin 3038 -> 3038 bytes examples/zips/os_management_hub.zip | Bin 15606 -> 15606 bytes examples/zips/osmanagement.zip | Bin 8224 -> 8224 bytes examples/zips/osp_gateway.zip | Bin 3540 -> 3540 bytes examples/zips/osub_billing_schedule.zip | Bin 1704 -> 1704 bytes .../zips/osub_organization_subscription.zip | Bin 1757 -> 1757 bytes examples/zips/osub_subscription.zip | Bin 1795 -> 1795 bytes examples/zips/osub_usage.zip | Bin 1749 -> 1749 bytes examples/zips/pic.zip | Bin 8004 -> 8004 bytes examples/zips/psql.zip | Bin 3454 -> 3454 bytes examples/zips/queue.zip | Bin 2767 -> 2767 bytes examples/zips/recovery.zip | Bin 4365 -> 4365 bytes examples/zips/redis.zip | Bin 2401 -> 2401 bytes examples/zips/resourcemanager.zip | Bin 6565 -> 6565 bytes examples/zips/resourcescheduler.zip | Bin 2183 -> 2183 bytes examples/zips/security_attribute.zip | Bin 2048 -> 2048 bytes examples/zips/serviceManagerProxy.zip | Bin 1691 -> 1691 bytes examples/zips/service_catalog.zip | Bin 3854 -> 3854 bytes examples/zips/service_connector_hub.zip | Bin 2891 -> 2891 bytes examples/zips/service_mesh.zip | Bin 9180 -> 9180 bytes examples/zips/stack_monitoring.zip | Bin 23415 -> 23415 bytes examples/zips/storage.zip | Bin 30335 -> 30335 bytes examples/zips/streaming.zip | Bin 2116 -> 2116 bytes examples/zips/usage_proxy.zip | Bin 3238 -> 3238 bytes examples/zips/vault_secret.zip | Bin 1999 -> 1999 bytes examples/zips/vbs_inst.zip | Bin 1788 -> 1788 bytes examples/zips/visual_builder.zip | Bin 1860 -> 1860 bytes examples/zips/vn_monitoring.zip | Bin 3703 -> 3703 bytes .../zips/vulnerability_scanning_service.zip | Bin 2339 -> 2339 bytes examples/zips/web_app_acceleration.zip | Bin 2374 -> 2374 bytes examples/zips/web_app_firewall.zip | Bin 2909 -> 2909 bytes ..._application_acceleration_and_security.zip | Bin 6483 -> 6483 bytes examples/zips/zpr.zip | Bin 1702 -> 1702 bytes 126 files changed, 0 insertions(+), 0 deletions(-) diff --git a/examples/zips/adm.zip b/examples/zips/adm.zip index 7246f8d2abe9cc9d0e69603973f0268786b2ef4b..7332d987e832628c90423747d50a3bf263156cb1 100644 GIT binary patch delta 246 zcmaDa^Ah{u4wYsJdQ~6b9p?Fcx=25Af5-WIsm}vQzQTY delta 246 zcmaDa^m>zv&GB1-f6Hp*n7c3BYV`G~?BT!)Sbw&eJ zC6l$7%%N&Fr!yHagA~nVHAYkPp4AGbNS|#1SkXmJBdE}1POd#5ZO6Hcm?CdXuH%sf t@uaw|Aw2QPdE9Iukuq*OB>Ah{u4wYsJdQ~6b9p?Fcx=25Af5-WIsji1RB8YK diff --git a/examples/zips/aiAnomalyDetection.zip b/examples/zips/aiAnomalyDetection.zip index d5efecc81397dd2c66aaaed17c14484b9664e709..0defb2b23f52e2b8d501cf3707b2332a22bb8b65 100644 GIT binary patch delta 162 zcmaDR`Am{0z?+$civa|#*-hjzR(5%&nC=e5r4`%^j4Usi85mgVfs!C)B0!o0q%6sX z4W!KF*~TSNj7-<;CNWt-1vWb{J!1!oOxECXgbGd0=Q<7&vEX)Oa(On{pGOwNo5k&g S#AD_0K;q@`_=9-+dDH>aSTZaC delta 162 zcmaDR`Am{0z?+$civa{)n@!{~R*t-(m>vzpr4`%^j4Usi85mgVfs!C)B0!o0q%6sX z4Wumc#>OR4j7+c1CNWt-1vWb{J!1!oOxECXgbGd0=Q<7&vEX)Oio7w|pGOwNo5k&g S#AD_0K;q@`_=9-+dDH<31v2LV diff --git a/examples/zips/aiDocument.zip b/examples/zips/aiDocument.zip index 331db5917bfc48908e5b4a61e5359ee7db24de54..72078729b53d69ea110bd256964a4fcf804cc212 100644 GIT binary patch delta 148 zcmZqVYvkhz@MdP=VgP|_b`yED*<79}rn^6zEXXE2F@S>!C>CV`7IS&FaY`T~P+;!C>CV`7K^;GaY`T~P+;nn>&b?&87|jQQ$4i delta 140 zcmbQlJBgPkz?+$civa{)n@!}=W{bR`m>zv&qOCL&kRN3N=11PxI3<)3C@}doqY+eO zvoh0Nun-fAB~)m#Bg;XMA{JIlrpOzU?OA0(yf{`TB;G+*2PB>nn>&b?&87|jglaB_ diff --git a/examples/zips/aiVision.zip b/examples/zips/aiVision.zip index c873174d9f847b2d793f197bb4b9c8231838c783..824b3b2c2c5f937413c871e456c28ac27b01edf2 100644 GIT binary patch delta 140 zcmey)^PPt$z?+$civa|#*-hlpWOI3@nC|{;qO~*=kRM?L=DR%GI3a`)C@}dMqXAT8 zvkcQ!u+V2_bEwc{1D5?DMITwrnOvSt?q-z*@jO`_ka(+D?T~n!Y_1?)0Gm1hGZiqj delta 140 zcmey)^PPt$z?+$civa{)n@!}=WQ)9^m>zv&qO~*=kRM?L=11PxI3a`)C@}dMqXAT8 zvkcQ!u+V2_bEwc{1D5?DMITwrnIdmY?q-z*@jO`_ka(+D?T~n!Y_1?)0Gm1hWuGx` diff --git a/examples/zips/always_free.zip b/examples/zips/always_free.zip index fe2726ee5a27d0005ab3ebf583e4987829f56598..f2eba006b1ebabf2b0006480a7dc7e28dab08e43 100644 GIT binary patch delta 140 zcmeB@>yqOM@MdP=VgP|_b`yDY*j%0|rn^6zXeZ4C#y$J?2vf0JUZ? Aq5uE@ delta 140 zcmeB@>yqOM@MdP=VgP~HW)pdI*dlKzrbpkHXeZ4C#y$J?2vf0O#;A AT>t<8 diff --git a/examples/zips/analytics.zip b/examples/zips/analytics.zip index a23f2afc20f6a2fbed37aa7c949e23dc1e2b2628..07fe00ba6f34567f318114554b781c7568ec99c9 100644 GIT binary patch delta 173 zcmX>ndQOxlz?+$civa|#*-hlpVsm+>nC|{;qKz~YkRNFb=DR%GI4O@2C@`6c2_~}H znkg78G=bR=s%Z0ZW=R&1sz>Y=P@%~R90$N692QJ2&n7?Mlm+puIUSLBb5VHzIqi|; M;ndQOxlz?+$civa{)n@!}=VvD??m>zv&qKz~YkRNFb=11PxI4O@2C@`6c2_~}H znkg78G=bR=s%Z0ZW=R&1sz>Y=P@%~R90$N692QKGHzq&elm+puIUSLBb5VHzIqi|; M;)qgjiStnL(<;*uxG=dq hn>>S47R0;4;fus`;tWCJZRhkx;wf_lfq3Oy>HrXoK7jxL delta 196 zcmbOyI!}}*z?+$civa{)n@!{~Q;xi$m>vzpr4`%^j4Usi85mgVfs!C)B0!o0q%75* z4Wumc#>Q1Cj7+c1CJQjRK}9ylFeQV94l>)qgjiStnL(<;*uxG+WD hm^_117R0;4;fus`;tWCJZRhkx;wf_lfq3Oy>HuL=KWhL0 diff --git a/examples/zips/api_gateway.zip b/examples/zips/api_gateway.zip index 545c90ee1c838bc67fa5969cd9f4ddb8dca1ce22..43e476162007458f83d01a1b3372de81ccb3e944 100644 GIT binary patch delta 1066 zcmdmanQ`Z3MxFp~W)?065V&SHkw=Hk<(Xo-`?JXpg+w{v!qK(}VQD6yy4@~d0hec+ zSs7Qe@?Eowiv$}1CMFBYC{NCeE*gzV82{S)$mDGCr41)J2Vpgy@zTmVhsL2)~nLRN|S%plX2N!y?) zVwG`*De{xCgqmiKrs%N(+$43yPmCawq?Iku6qPAMTnY@H-OAQrljaDiPnOq^KvNi{ z;RdsEnZ^RJyF7GE&=k$rfdmfFvxgE!ik$~cQIVZKH%QT9PfIjK|2^S~e7$r8 zL5ixQt)TiQ?~XnU5^0FBVsd#lIWb-q#Je5i4dQJ~1@qivgOKEQ#RekD>BL1K$t{iZ zM3Uo=4?vPTm@G4SPP`$K{JZ!lB>Bt)S0uUf2|h@2Hi=$Ha?2CJE`YjKG6`8oCBfaRd3cw~BjE*gzV82{S)$mDGCr41)J2Vpgy@zTmVhsL2)~nLRN|S%plX2N!y?) zVwG`*De{xCgqmiKrs%N(+$43yPmCawq?Iku6qPAMTnY@H-OAQrljaDiPnOq^KvNi{ z;RdsEnZ^RJyF7GE&=k$rfdmfFvxgE!ik$~cQIVZKH%QT9PfIjK|2^S~e7$r8 zL5ixQt)TiQ?~XnU5^0FBVv4*mIWb-q#Je5i4dQJ~1@qivgOKEQ#RekD>BL1K$t{iZ zM3Uo=4?vPTm@G4SPP`$K{JZ!lB>Bt)S0uUf2|h@2Hi=$Ha?2CJE`YjKG6`8oCBfaRd3cw~Bja zo9QrRKkDY(mVX;WK^H5NHvacnTBr#grXb|v~Y8ZX__p^?#Cq_HI=B*et-1C7=)sL)ujf|69> zDjW1QN&-^8Ng`DuLhPb+0?|Re#>DHgauMQN87mOe;(KHHjs`PtONLx>xrpGaJYp)tssXWvLHAGMQp9yd&=wax~;kLz&*VeQ^lwjk=BW z#0#deP`)#T<9go2=ELZ91&>Z2;7d-0dU!BnUoSG64^Q-hKlNY}7CbOsgx&}-Wb6}& zw}y}5AS0uNkQfbd9#)CGb?l}f-x%}Z$r{YXBE&D|$mWJujvil+5Sd)Gy`ubI1a=~F zVOU|B&|<}>$;i_oPmp-fS}qG7%oZ0W)=U)$rMpv2xU})Sh?EdD?dK=>YFZ;=R5=rQ zi{WdznRdK}PHT~r4Wb+;!^?K9<=`Z7)2QF3<|_s}#@B5Z0Is#41=y6m0bmCm^#JR4 zGy`nMQ3Wt=whmx{*-CI?=Gp<%GD59o4ytrVOLYuEwl`C|>HtMrqNQle-6)PK>uxd#9M delta 1705 zcmZ`&T}V@57&QNVW~8KP+aA2p3J7xE)+zAq`JsJqGCvOk;LXF z>P&|zb5l3xw)~qA1ziXkL1iooq@Zr}reZhU*v_}_j8}F#ci;Ow&-*>kd*06#5W50m z8Cx4o#Yb`9PN7Mb6{GiObhr7D!KOf8hhxP%g=lCv6RBt7;^LyBBS4e21S-@Pte`}d zxT^Pi>qYBgu1P#qBtYz>%6OukdWDJCB&7nxHxeyROpfh|<~kb8oGl4*N~HpVFVc{) zpan)&gatbJDM%#g9P&C?B?*oubn*8+O86_{?(0vi7a;ygyvh?h6a_fJXmYgxkxFSN zM8r-fdGDnpVX}cyp>$=e^m5bw@e&`ukA!oVC@U$Pn<*A(zs-b+IjKHu_(z)1ztN_j z;|&|rUr4x)Y<87E$Mx(+o~X$AfUjn=i%^>C5G0c+{tWKOJGm4YJ;^B56B7}K&|a%r zNKd?AY76B(lQ*X0Ol&;}Uzhvv^Z~BqkgEmKL%a`snfv?2}BQ$JGRSesk$S&z8mZeHe`biyBa2-B-Zrt-A|on>!wlfQaMn3TDlAHT|148%O?QtU&eotY=?FQPG?~S nrZ~BZH-k)PVznD|Ilfj5PKGt?fb{&n2Gdpe$VMs9Q(w|Qpwz)( diff --git a/examples/zips/appmgmt_control.zip b/examples/zips/appmgmt_control.zip index 34c545ade6e88d142b09d1f22855bef424f7a261..071700da2d771de117592f2357e20ba7ad665233 100644 GIT binary patch delta 260 zcmew<@>7H-z?+$civa|#*-hjzP7H-z?+$civa{)n@!{~P>#Hzm>vzpr4`%^j4Usi85mgVfs!c7;$7Gv$|iTS zNHYQT9rFeYMBdme&e+BX6q!7q$r2`Xk0}}~WXnC|{;@&Yzd4!CfnB|=!538-$XH(0>s*=9CI zVJ4u+WNBt|R5g=JnH`~uChuYP0;%C(ae-+IVqpbqi)4c+0^0~Odh%YjXqX~7_A*A0 z&@>JwG_!wm#K9EBb4s&-6xHySLxm>)_ynMNb93 zg57jS*aBvfl*m4iNw-8Sm|UJsHjoyd93a645-}Eahlt36c(X+#(d0$NT#@9f#r%AURL6-U%byd^M3aw@2td+*QX&V57be+?#QP)Zh^9AA$_GjQv{W(@&tKXN#G5Xy F4gk>kwYUHP delta 523 zcmdmIzR#Q|z?+$civa{)n@!}=VvD??m>zv&@&Yzd4!CfnB|=!538-$XH&`I@#%4A~ zVJ4u+WNBt|R5g=JnH`~uChuYP0;%C(ae-+IVqpbqi)4c+0^0~Odh%YjXqX~7_A*A0 z&@>JwG_!wm#K9EBb4s&-6xHySLxm>)_ynMNb93 zg57jS*aBvfl*m4iNw-8Sm?CdXHjoyd93a645-}Eahlt36c(X+#(d0$NT#@9f#r%AURL6-U%byd^M3aw@2td+*QX&V57be+?#QP)Zh^9AA$_GjQv{W(@&tKXN#G5Xy F4gjDjxN`si diff --git a/examples/zips/audit.zip b/examples/zips/audit.zip index 5d6d203b7a285d523c692c4c34283090b1f0d301..fb408813f37a95a91c12e8522f2b770c7a297b8a 100644 GIT binary patch delta 163 zcmeC->*3=G@MdP=VgP|_b`yEjlwF=Frn>`iX$3a}Bg;!>1_qXTpd?6{2$1FgDGSwS z11WQPwy`UKk?ES<jp8d(LW$ T#B*h{M&d1Ga{}?6vZ(_A*>W^W delta 163 zcmeC->*3=G@MdP=VgP~HW)peTlp}8_rbh#DX$3a}Bg;!>1_qXTpd?6{2$1FgDGSwS z11XEVv9T+Fk?FPBjp8d(LW$ T#B*h{M&d1Ga{}?6vZ(_A4q-I~ diff --git a/examples/zips/autoscaling.zip b/examples/zips/autoscaling.zip index b916e799276a4f6ca1914889ede0a224155dfa5d..7f6d42768529217da77966daffcbe9b81ddf8114 100644 GIT binary patch delta 317 zcmdm}vr&g9z?+$civa|#*-hlpVRLz=nC|{;@?YSRnm`3MZ)5CZ1PQq@Tfv0dm{&7_gpAotVM2LqfnZe!*)3o~|Jk#^sm>zv&@oDw diff --git a/examples/zips/bastion.zip b/examples/zips/bastion.zip index 6b9179806afcc3236c968e7e8399c94b0629a9ea..80bd6708aeb87e1f5944871ca6ef1742f9e511e1 100644 GIT binary patch delta 271 zcmZouZ&T+9@MdP=VgP|_b`yCt*j%0|rn^6zXeG@AZV10{t%wUS{@$3dEn$2qr zGyDqgDzHfn0%lAu&nEvBk_9QaF5rN~vk{35misAagCrLwgeZV10{t%wUS{@$3dEn$2qr zGyDqgDzHfn0%lB+HzxlTk_9QaF5rN~vk{35misAagCrLwge zo5dKJnSdgbrI~Fo)lIHqhUf+=Jj^^9tT2Mj3X8(6Y>qG!|FB(S1ev&0T4xfcAevgf zYj$ywwmh@5f$)D8sf*q#;(FchEXh2Vv(Da6B&D2x@yRTo%p2_9eBS=PQuM)QLTxy! xABrUBY!HKF$^ipp8*~i8HbDI_-_Q+7ADfXclD-lnWR=g2A|Wb;Cx;q~000qZ_`?7I delta 724 zcmaEv_A-qpz?+$civa{)n@!{~WQ)9^m>zv&GNZ0A7m`GRGm^yQ0%i^-pz32@V8O^6 zo5dKJnSdgbrI~Fo)lIHqhUf+=Jj^^9tT2Mj3X8(6Y>qG!|FB(S1ev&0T4xfcAevgf z*Jg2%wmh@5f$)D8sf*q#;(FchEXh2Vv(Da6B&D2x@yRTo%o+BS=PQuM)QLTxy! xABrUBY!HKF$^ipp8*~i8HbDI_-_Q+7ADfXclD-lnWR=g2A|Wb;Cx;q~0004X{AK_E diff --git a/examples/zips/blockchain.zip b/examples/zips/blockchain.zip index a8a86c09cd23ab42f3f7845eaee3188579128ced..d129745177b5bbd41373660fe0c9149bf1314cc3 100644 GIT binary patch delta 140 zcmaFG_ll1vz?+$civa|#*-hlpW^;L_nC|{;qOCL&kRN3N=DR%GI3zv&qOCL&kRN3N=11PxI3~?&pjenCk{A~=iwICD2T1WI z2e5?8vyDG~FauRi{={Mc71^x8>dy!gs$?^T3QgX^whJUuz^;egyvYaIVQM%3VSffT z@d>vnlMBc(;v6tHPPXE4hlt67j9bLxhr|=)wL{_+@H%7YzQSvRq{5I7szP{jC!Yua D{K{3) delta 272 zcmbO$J6Dz`z?+$civa{)n@!|VXN$a{m>zv&av-npL>~?&pjenCk{A~=iwICD2T1WI z2e3rsjg3EkFauRi{={Mc71^x8>dy!gs$?^T3QgX^whJUuz^;egyvYaIVQM%3VSffT z@d>vnQzXbS;v6tHPPXE4hlt67j9bLxhr|=)wL{_+@H%7YzQSvRq{5I7szP{jC!Yua Ds-#yJ diff --git a/examples/zips/capacity_management.zip b/examples/zips/capacity_management.zip index 9aae4aa5f1bfecf12a72f6c1ee9a2070921c2f6c..3868f7802173543c429a94dfa1d0b5d1334a4ba0 100644 GIT binary patch delta 1068 zcmX@q%Xp}lkte{LnT3l11g_al=k~y&kclTA zrZAmnH4Df@5kWsJ3R?wpU<$treg~WQLD&n6!dQ`Hn8ITsC%_6Ph=pKL$Sz(1Q`jp0 z0IV=wG7O8t2a>fgg~?KiOdvP5$=Je#PRc}p^(xB+VbME7t^}q~Nd5y@A&Vlmplw#{ zfGHGIdInbbQ`s6SwAf086J)K8ZZH-*HtCkZwCd@3g0)uaJ3)meAJjhz(%NC*hDGZ~ zgJ_u6Aj278uT2ospX~3Zz#SUG$-sBA<4&C%s`SCw~R-Un{L^NBxh+Ah9tMaDi=x4&N>E3 zZnt$6l3bWg1d`l&n?fYHMB5}JxhJ-5NOIkFDM)ex_T5OlJ@(#6Dm5GukmOc6G$G0P zIA$TqU3Z*@#OrhNL{j;~DG^Do%DDxJC+`w~q;i5w2$CGDYbKIhqOHv2)vj(x@=k~y&kclTA zrZAmnH4Df@5kWsJ3R?wpU<$treg~WQLD&n6!dQ`Hn8ITsC%_6Ph=pKL$Sz(1Q`jp0 z0IV=wG7O8t2a>fgg~?KiOdvP5$=Je#PRc}p^(xB+VbME7t^}q~Nd5y@A&Vlmplw#{ zfGHGIdInbbQ`s6SwAf086J)K8ZZH-*HtCkZwCd@3g0)uaJ3)meAJjhz(%NC*hDGZ~ zgJ_u6Aj278uT2ospX~3Zz#SUG$-sBA<4&C%s`SCw~R-Un{L^NBxh+Ah9tMaDi=x4&N>E3 zZnt$6l3bWg1d`l&n?fYHMB5}JxhJ-5NOIkFDM)ex_T5OlJ@(#6Dm5GukmOc6G$G0P zIA$TqU3Z*@#OrhNL{j;~DG^Do%DDxJC+`w~q;i5w2$CGDYbKIhqOHv2)vj(x@3uH}j74FpXfaITJ<$xXi5}wKSQKs( zPl73wlSlz8Y>^DXqVTt5DNJFRR6bbYb7?Ou3PWTPU?teg1pS+O^Rk{YB-gkX24DD zQu0I6^;5|oO-H73G?M&N1xeL^497RX!2Xs S^Uy?`HG&}`!jo5PhyVcRCH`mt delta 719 zcmdlVxId65z?+$civa{)n@!{~XN$a{m>zv&a-qEN#25}Hpjes3uH}j74FpXfaITJ<$xXi5}wKSQKs( zPl73wlSlz8Y>^DXqVTt5DNJFRR6bbYb7?Ou3PWTPU?teg1pS+O^Rk{YB-gkX24DD zQu0I6^;5|oO-H73G?M&N1xeL^497RX!2Xs S^Uy?`HG&}`!jo5PhyVc0m;vhm diff --git a/examples/zips/cloudBridge.zip b/examples/zips/cloudBridge.zip index 25c686109216078a7ed141248ed763f0e65501ad..3827b76f79867ca83cd2361689fd936017b3156c 100644 GIT binary patch delta 738 zcmccXd)JpIz?+$civa|#*-hlpVRLz=nC|{;GNY0(7m`G@1(L+%e>@yaK-Jq^z=AH% zHZlHS1PV<4#bl4EY;p{92vptXZOrCOAcY?UGz8OA^Gb^KLqj+jm=ShDjh^hvW)0KR z#ug0LvxY}~a)Ao#WOhzoES8vadcZWaa;h?eELp>2iA5m?uRBa(C@&}2m~?yRlDFlc8DeFllvrvuqZw(33rj8R6p3%MbcJKizYvkJ_ypjRK^C2 zRu)-5sJhJ&vN>R_$KgwE$@pYpQ(_9CjUmk z5lP-p(GyL6hoU=@yn<2~hP=$=%}UxxYW^#QBJoOQIMJZRaq5DjkOAVKXs(K-r7@-ye;R#PZsU`vdJJm>zv&GNY0(7m`G@1(L+%e>@yaK-Jq^z=DxC zHZlHS1PV<4#bl4EY;p{92vptXZOrCOAcY?UGz8OA^Gb^KLqj+jm=ShDjh^hvW)0KR z#ug0LvxY}~a)Ao#WOhzoES8vadcZWaa;h?eELp>2iA5m?uRBa(C@&}2m~?yRlDFlc8DeFllvrvuqZw(33rj8R6p3%MbcJKizYvkJ_ypjRK^C2 zRu)-5sJhJ&vN>R_$KgwE$@pYpQ(_9CjUmk z5lP-p(GyL6hoU=@yn<2~hP=$=%}UxxYW^#QBJoOQIMJZRaq5DjkOAVKXs(K-r7@-ye;R#PZsU`vdE?EGT diff --git a/examples/zips/cloudMigrations.zip b/examples/zips/cloudMigrations.zip index b468f287aa0fca5a02907f375eb214d920c098e4..ade3b7c93fc6d5863c3f102ce2646bfee31bd9af 100644 GIT binary patch delta 534 zcmaFs_|}mpz?+$civa|#*-hjzU~_qk=)Ef74p%5>47Ma(*cFSy{lYOYg^D635QSpCSQH)?%Y!Mj7GDpx`i+DgRA{n+ zaMv}WCmxUx3FCUF0cU!&&iC3ZE1K|lzzNsJr0N_x-Z~y=R delta 534 zcmaFs_|}mpz?+$civa{)n@!{~V2iw=m>zv&@k=)Ef74p%5>47Ma(*cFSy{lYOYg^D635QSpCSQH)?%Y!Mj7GDpx`i+DgRA{n+ zaMv}WCmxUx3FCUF0cU!&&iC3ZE1K|lzzNsJr0Hg}TDgXcg diff --git a/examples/zips/cloudguard.zip b/examples/zips/cloudguard.zip index 0b6a2f9dcd52ad5a769bff10e8bb3bc15fdaa49d..3663b24dd5db00bf3a7bca149e90e4daeb8f3b49 100644 GIT binary patch delta 1181 zcmcb5hVkkdMxFp~W)?065V&qPkw=@&^_gP2`?JXtql700a4-SIqAZZaCfkdG1-Ax+ z1zn$Q=3}g8VY+5FxtleN%>}L(tPUv3!WIh_b$PZqoy~(CXx`+Fyw;coPUh!}gqfJf z*TM!;_(jABi$YIPcbLLyqKnx;R$I$>W3hUrOc2a!M%g)FtLLjYU@?(NH5_JQys8j0 z$i!j|6PVt$8orDm*Zk46#G*Gs%M+$|xt1DO?|EHwEUwYibA_2$qL;`FGV#2w+GM>1 z9`4W(P6lQ~utS4*vZ0YH%;*}U4knPZ{%ERA)-e^vVtkTmD9rf1rnA7tM_QUeY9SL^> z@fhR5Jne`?m>keGYa>#aTp)5lo>62rhzHfTFVYi9pGH(VOdrt94N(qAa)QyJFgc(p z?a`4)W-`VkAeq?|*{>x85-FF|JVw^(hMJkU<3xNsy}^pa#IUyIX3 zvPmI67)d`!enY$_lKx*nd1$BrZOcn=N78#OAsI<;RH8GIzI}=QNc!}WT#@umNs5Q* z1DYw49E2p-o(v8LP-p_>7*jlu?@`hr1^o_|Aql700a4-SIqAZZaCfkdG1-Ax+ z1tV{4=3}g80VJC#lO>{9>p|y-R7KJNif?x_6W#@pcp0DD7MIn=FI80%@st_~C>S7HOn9y1cUq+D7 zA5BXvdLy(vVG5UPse$#L*EPqYP*cwprm#dW5vovavR(oYcW4MF12ZDnp+P*^&J3O8Ch!W90n^aBUqd0n;1c@BbD6fbfJ zgem^%Fclol6I@-eDE#gUi2-1G@NjblhjqWN6&8hWeBoj3>30u7!q#(%|MP?(( z?Thq8lGBJvN0QqR<$xq77#)fv*B%{-B*z$&fF#!xS03wxq%to-X7aaK zZ6tZ8xNszSy(F2**WxshBFRBWa_!0BaDc`FV~PioTviI$=TNy1DPBl&(W#k8yr-#PcLK|u$&P6v E05W#KApigX diff --git a/examples/zips/cluster_placement_groups.zip b/examples/zips/cluster_placement_groups.zip index e8e7e09b5da81eb4abf92098cbf053634576d9c9..fcee8054aac233ff92cd24537f4af22447a5306a 100644 GIT binary patch delta 230 zcmca1aYKS9z?+$civa|#+fC%LWOIF{nC|{;vLTP~#5fKnpjd_#Sj_d=#uYY9K!M56 zn4F*@oAsCz7(qf4SR7zN*H|E`MA+S-LX#8OkAM`ZbHEkla(ILF?c#K2as^v9`2!ah fNRbkk2bxGXR{)yGA1*&Mk!zv&vLTP~#5fKnpjd_#SS<3!#uYY9K!M56 zn4F*@oAsCz7(qf4SR7zN*H|E`MA+S-LX#8OkAM`ZbHEkla(ILF?c#K2iUeCW`2!ah fNRbkk2bxGXR{)yGA1*&Mk!16pzSIPf`VFV1dXhiSU1@RqX|B^ zSz5F{r0`6S^m_n^d)3aq^ zg!poFq&gTwte%-l(d!N{D(z2eBj8-S~3l?$xMAFh?!MLMX3p1!M&0}>hOD6#8 zEf@OD-8m|oGj1p^fvbdnuFyO8%V4h;DTrdOof$a=hRGkW}yc+In2p_+*W)dKJXw+KzXyl>s zUl4h7m=%$gj!fErzk^#rSmvr@Ic(+05j|_B`D^uT$||f)2S|MEm0E7&;kuW#7Zj9q zvQCil*L|Kzq5iXLn3U|C7f!{0k%L4jU4yWegAF$Lj02YhXz}F?fVMUX8~(4!1xC%y z%OYIWHw%aVs5u4dCSBaf#eOB%gzxyqwHi36C9Ufsl#aJ&)|MqM`(QD6EDY>l2jM4)=<{w=a?C`hG!_nm&t^^1RQ8(x(0` z(sW1vT9j6M*Q4l&w?ImM;pO|o!_9Z?h&+6^1VwqiLTRbnmxt0R13OUEFpw=J%l&wQ z`}}2y{K~&gO5S}Bd-mS5O4FJ5d2#T3=05KWqL{%VqKV(0bm2tO(Yd}ItTT{((}Gcvl7(_-YTF#{5>AH!pp zJ;bF|4>w3l#~1*8);z+ax-N;50ufX0=uad!13#h8?*jZ_FDY(kH}RB4R#k4j5z6O%rXEa*^@E3rz|j>0Lfj>i7ZD*le`0t1};B!k%j{Q^Z?KasSoSTJrc*1`-LOY&IV`;s6) zedR*GUw4nmW=*7(Ti`0;A336#Lta-ZNsLtim7;vQm7NzkY0ac#aa-5(>gOxEDbQ2F z0P?+}nIboAf`NZ+J}}^_EMT5us+=$b*P&7d&97bpth^fTYX}{`qh=BydT7*I@>uwx z@m~;`IL3;|YI`c}f6&gYAS83!z7n?bvR2QUX^yY?g|Z6kk^vGQd#jGyc&P4u-8BUz zooNuHd=3B4q|m^{bxcZj$pfe2yUszPl&(ow%aJB4e8&D80<_>}3P9UigbiPAae`4} z>xwW}jjh7rKWj~bx=ANDaL*w@W|6Ueu27oAJDD@|qzl5zi>^ZjtFvwOC3z&x6+>#3He z)$UxBKH=VsqL1$FQgT_Z5v2!v%cbeuK0Qh|^<_)bE^h+S^)E-1ntqd%@}}Q_(m4a$ zr0LFq^(d|OY(P=1r$9=6>*4#u!;KGZh&=Mpf}%Wcp|sTH%|q#=!Cfe78qAWCJuDYeS)RqM@o>2W26d2no<6m*m<2Bz?6J{V9nO{b5t?97rJd{J){jpZ)w=n6a|n1akQK3Pf=|54(1K eARnb$0((%j^hGg>uD!tK;)6Ik8|1DuxcCPf@X22Q diff --git a/examples/zips/computecloudatcustomer.zip b/examples/zips/computecloudatcustomer.zip index 5de3779ca3a17c1b1cbc1c6b3b0cb4fb933f9a6f..0965c43a30480f780008fed552c732b97b60ff3f 100644 GIT binary patch delta 249 zcmaE^@LYi>z?+$civa|#+fC##XLEg~nC|{;@&tC#iE(U9K(VwSgqSo);C4D#!1dW? z4@NH*pvdGYtPU`tTdYxxAR#mM5L9iG*Rp5B6v=U{V+JWY$L$Ignk>n493=9H$Cb(T y*<=Sk@yQOnAnPZ4@FqY+WI?=>yroFIcs@Tg)#vzz?+$civa{)n@!{~XN$a{m>zv&@&tC#iE(U9K(VwSgqSo);C4D#Ao9j$ z4@NH*pvdGYtPU`tTdYxxAR#mM5L9iG*Rp5B6v=U{V+JWY$L$Ignk>n493=9H$CWAa y#$*RR@yQOnAnPZ4@FqY+WI?=>yroFIcs@Tg)#vzvzpr4`%^j4Usi85mgVfs!C)B0!o0q%6gb z4Wumc#>N#$A;FjGjzD z6_b6L%}|s~UdHSQQ}dSjH6uvPEmnJ&kUSe3SV*1S7baB2-Ub$8;xvK@S#bt{g?hN0 zz(PRxfbF0Bk;@aN#(`S|?0_&{bEwed$-H|()&=pIGr2ySe4byN1Lm>GtN6SjVzM9= zV*EiEDmwXHkW{?m_ebKz3HT!M&Im*!@jL__AUq`7Rtg3nsgM#1N8(Kqas}~j3aJAC DN4tdB delta 383 zcmZorYf$3}@MdP=VgP~HW)pcd*&=T!rbpkHXf4eIGtN6SjVzM9= zV*EiEDmwXHkW{?m_ebKz3HT!M&Im*!@jL__AUq`7Rtg3nsgM#1N8(Kqas}~j3aJAC Ds*HxF diff --git a/examples/zips/container_engine.zip b/examples/zips/container_engine.zip index c4f4c60702b5e68b42c9a0fc66b4df45ea67b779..2f772a4e8c1c5f9f0caf95c7cbb7f9e75bf14e3a 100644 GIT binary patch delta 1026 zcmZ9KPbh<79LM*Ly_gxYkw)WU2TH~YWh2dAf40}3Z121OOhh?xlZ%Lxn%6;6%1*e5 zlcUIT5|`bSWG5HO5?MTt=l4v{d;IkIet*AT&wG;OPLiB%crY(tt3qGO9@n+-&UF2Z zE3G{8#zKmt-8pR1r|e<5TL1PiuTiO9jLK_e-Ii1u&+4$_OrMo;8ya=WuI%zX|6+(_ zc@IdV1qW(`GDSmx1nn}1P_kGARHN&`Rz&XxbgIu_bW}bF=&RhChl0&U8eBC-aMyFC z3tRXi6OzO#xk(FD7z$+_cZ3cA_7lLfMz_v}>OSNU4m8O&SM6oMTA@LL8GE zWXO)}XGn!V#E`f@z>t!F%#if}O_AxEAl-*dUkcLc#Q6x0Fg$2bF#Fhg!40uYk2M!i5t^I?=;L5O9d4;+%(%n{k#Eeb6oUEPo zC6y=MoJVoEJBKZ%lp`otn%*B5bSl-WS$Qk3*_Mi886$S&&L06J7*;rh5(OflDq|0}LMA7mGgBI)n9pV+&dW7bzy^M5c9fERe%_@(icwHYO71-$N0o$||NmuoQjMUgL3Qg+` zi@52_-T|ni*^SrSZV{N=PYbcR;~ z$v7`j?9$cFjH?#2PyF|MQIW&rW;|VL8T|;Q%7KKZ-FRF;ieyY$rAZ*fIgvyl#IeYJ zhV05-hLm~(42gMt3@P-<4B7C}6q&B`(|ySFWj~!xoKOE4(=#8CfDq?7Fad=0c!G3i z;yeUBj58DpGUPTS03j)R*bRgc-ju7V~;sl3~=oBR+bw4%0IPFpT Ig8R|3U;pTdXaE2J diff --git a/examples/zips/container_instances.zip b/examples/zips/container_instances.zip index 39da80a928b977d2d40a3c80b8b7d1656d7f41c0..6daf88ad68f01fadd7ccad518ff5ab544eb77a2d 100644 GIT binary patch delta 162 zcmew-`A?E3z?+$civa|#+fC##QFeW%nC=e5r4`%^j4Usi85mgVfs!C)B0!o0q%7H% z4W!KV*~VoNj7-<|h~^QZ#=E73FJ delta 162 zcmew-`A?E3z?+$civa{)n@!{~QI5Q!m>vzpr4`%^j4Usi85mgVfs!C)B0!o0q%7H% z4Wumc#>Qn4j7+c1CNWt<1vWb}{bUD|h~^QZ#=TU|7Y diff --git a/examples/zips/database.zip b/examples/zips/database.zip index 7a3cb9811509f6f2793ae70cb3a55ee4a22fb662..92437eb769a76a8c0ab3ba4f4a49ed52cc254f54 100644 GIT binary patch delta 7754 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 diff --git a/examples/zips/databaseTools.zip b/examples/zips/databaseTools.zip index addfde41c22cb6354742640b087e95af5c582f78..0fee1d23441e8b094ebad37e3e2585058a1a55bd 100644 GIT binary patch delta 378 zcmdmMwAY9yz?+$civa|#+fC%rV{?6`nC|{;qJuOOkRNLb=Zj80z{ds>+v*4wbA7h) z&oWk^z~m)t))=ZLGqHO?m2D1U|G@-O=fh=!sctcsJxtvTt|n%Xx*R@BOm!#t++gZN z_&?u5w?K}O};052qdyd#D>ZB+2jWzvLN1n5oZwZf;gC$Eb5OW wcUjaENzPU*0!eP0m=ltmq_{7VT)VhClH7ao5F}oTgewy7l!Ozv&qJuOOkRNLb=Zj80z{ds>+v*4wi@dS% z&oWk^z~m)t))=ZLGqHO?m2D1U|G@-O=fh=!sctcsJxtvTt|n%Xx*R@BOm!#t++gZN z_&?u5w?K}O};052qdyd#D*#I#^eVgvLN1n5oZwZf;gC$Eb5OW wcUjaENzPU*0!eP0m=ltmq_{7VT)VhClH7ao5F}oTgewy7l!Op7pUX^+ch^9YU*V4Idl3&X4;nHJ9zjU1)NzoR%p7pUX^+ch^9YU*V4Idl3&X4;nHJ9zjU1)NzoR%KaDBE}fpGydP-OBUmI$~It1lBsD4*RLCbWS)lo2Gv&S{2f(&PkASE!=N zt2y6+)Xe6xK~wXK%L8VR2X{UjNYPF~XEa6fLQyb9^+GIQH?@j}!Gs=)`m=!a8A&-n zg(g=>9Ri8iNINjOKASv2UYr9KER*L-2SCJRK`QuUl8|^4Wzvv%60)8cx|?KOkW@UE p4aQIrE$4-#;+R|*h6-ExKqM9Gvzpr4`%^j4Usi85mgVfs!c75}nu}$|m3C zl4b(xI~D>Kh`g~`fpGydP-OBUmI$~It1lBsD4*RLCbWS)lo2Gv&S{2f(&PkASE!=N zt2y6+)Xe6xK~wXK%L8VR2X{UjNYPF~XEa6fLQyb9^+GIQH?@j}!Gs=)`m=!a8A&-n zg(g=>9Ri8iNINh^-k3Z=UYr9KER*L-2SCJRK`QuUl8|^4Wzvv%60)8cx|?KOkW@UE p4aQIrE$4-#;+R|*h6-ExKqM9GmD7sJ732h25HEns4T-m%%NdC$&5g{f=XOMrd&upI#B=BI0P!aBr~?3IK2z2J delta 246 zcmdlXxkHjCz?+$civa{)n@!}=VT-(>m>zv&vLTl+7c+|pP?!TG5p4mMh`cdz=0&F0 zW|MOmO`!stmou(q1PO&P!-Xa?hk%8ivlzovDX`vU0;&4XZVnZiY{RhyB=U*F3MOL2 yc@QM>mD7qT666F~5HEns4T-m%%NdC$&5g{f=XOMrd&upI#B=BI0P!aBr~?4+G*tWm diff --git a/examples/zips/dataflow.zip b/examples/zips/dataflow.zip index e9f3f2dbef0ee7453f2326e1908868365b6b6c57..c40f66cf4a7978fc243afaadc3880b29df914347 100644 GIT binary patch delta 212 zcmZ1^vq**~z?+$civa|#+fC%rWOIF{nC|{;qO~*=kRM?L=DR-II3bh~C@}dsqXAT8 zvn*3RCrD@>w>ea3@@?+@Adxvd=87O=N-MY-7+GF2Gcd5!1I-WcW@M6M76Gz2fObv( Z!s9@Ms!(1#B2;bRb!BpWHu*QNIshgmIoALH delta 212 zcmZ1^vq**~z?+$civa{)n@!}=WQ)9^m>zv&qO~*=kRM?L=11PxI3bh~C@}dsqXAT8 zvn*3RCrD@>w>ea3@@?+@Adxvd=87O=N-MY-7+GF2Gcd5!1I-WcW@M6M76Gz2fObv( Z!s9@Ms!(1#B2;bRb!CdYG5I&IIska(I)4BF diff --git a/examples/zips/dataintegration.zip b/examples/zips/dataintegration.zip index ac2777379e4322a2afa2052148e913de8df8893c..dc3811f5b19393fb100499f3e07c25295c4fa925 100644 GIT binary patch delta 1067 zcmcaGk@3PrMxFp~W)?065V&qPk;j0|^_gP2`?JZ7YN8x);rIZAurw1;-KA)-fa|l# z{U(Z&b=hwM1t;q>6+%TfFJo$B1_|l0g`(=5yo@aYi&hSfYM9ne4t^Gp)>%9bXj=dB zc*7L=@d`156eaP6!G!klIdOo5n8cmX^regYLKRKEp!XA`W~&6mS+37E3rJpP0tvm8 z_CwPaB@+qLhUCeuvN=%E&FXTzV6BE~rjzxR1h_*(I2oAX!3PSb$@3smlWm=NIiZr^ zF#83P{H2%*Gb&Zd3~ba~6-$`V9hG3P7Y)_Cz(U|Sff@>PJuvjaCVf?ho0OnY4L0en zmO0EMDeYfiAu&B?G?QxdAf5)g2^un|^}}J>Gz=DiwVg7ug9=UNGu{hw_*r9jG=t1d zf?#T(PU<#|hZ*$2)Eb-^bS>?efHpbW$$|{&v5W)p4BfyyZmUcr-c+l4B$cMt$w+cL zt@Dt09yXmwDnHryA;~4$Mk4WU+om9?Ot1?;lDlXZjl}b{2ipgA=SBM%Bso8abR^z2 zhbj;csswq`5@_Yb`M38+v%Qw#Iy3q1@RiygeULu5CH%%q>gj| delta 1067 zcmcaGk@3PrMxFp~W)?065O{4ik;i~7@`hr1^o_}lYN8x);rIZAurw1;-KA)-K;(_d z{U(Z&b=hwM1t;q>6+%TfFJo$B1_|l0g`(=5yo@aYi&hSfYM9ne4t^Gp)>%9bXj=dB zc*7L=@d`156eaP6!G!klIdOo5n8cmX^regYLKRKEp!XA`W~&6mS&=t33rJpP0tvm8 z_CwPaB@+qLhUCeuvN=%E&FXTzV6BE~rjzxR1h_*(I2oAX!3PSb$@3smlWm=NIiZr^ zF#83P{H2%*Gb&Zd3~ba~6-$`V9hG3P7Y)_Cz(U|Sff@>PJuvjaCVf?ho0OnY4L0en zmO0EMDeYfiAu&B?G?QxdAf5)g2^un|^}}J>Gz=DiwVg7ug9=UNGu{hw_*r9jG=t1d zf?#T(PU<#|hZ*$2)Eb-^bS>?efHpbW$$|{&v5W)p4BfyyZmUcr-c+l4B$cMt$w+cL zt@Dt09yXmwDnHryA;~4$Mk4WU+om9?Ot1?;lDlXZjl}b{2ipgA=SBM%Bso8abR^z2 zhbj;csswq`5@_Yb`M38+v%Qw#Iy3q1@RiygeULu5CH(MG?R(| diff --git a/examples/zips/datalabeling.zip b/examples/zips/datalabeling.zip index dc542e47e5d6ce07777561b31cbdb0fa9bf68b65..03e815dac4c2b04094f65c4920314ac5f2302417 100644 GIT binary patch delta 173 zcmew_@Lzx@z?+$civa|#+fC%rWpjO|nC|{;qP;W|kRM|U=DR-IIA4GfC@^^=qZw3W z^IOJHu#gM02~4Pt`3G32g4G%-GuIw&IyjAQ@ ONIYH+PY^GHLmdFWgFdqW delta 173 zcmew_@Lzx@z?+$civa{)n@!}=WsAI_m>zv&qP;W|kRM|U=11PxIA4GfC@^^=qZw3W z^IOJHu#gM02~4Pt`3G32g4G%-GuIw&IyjAQ@ ONIYH+PY^GHLmdDHI6s8| diff --git a/examples/zips/datasafe.zip b/examples/zips/datasafe.zip index 67fb44f48bbf84e05c1d28b820a692f02d08001d..49b873dd1047710885b1ed54699e2e29da1a5254 100644 GIT binary patch delta 6533 zcmZvgc~q5U8o+tk!qQ)?|wu(@7e2l2V}3QgfL1d+vR|@A*Eie|XOI`91sce#bBG zI)8cB*|TVtle4>n^ygwut7nX>=|<$T$8XTcn84N|SI3Jv^ue_#dis$ zgOf~zadB&>2~qc{L z>2%s8=t>XS`U#Ilu%70%NE5|5g^dHKvq-9r-c#EJ$-rQE zt-#A8_CY2O4e1)2Ws$Q4^loGlL>HN9Y%`(}fzA{f>jih#7zo_u3D%*2IRa?r#H9jy zZ(MYN?iCK|vyvDq51ByO&-b~tV~KpiDUnp@>g&&PY%8;Fkh z5}|QF{uTszGii>-Y*lijfclfygV~`~QPi9gp#jgNEEZt&l*0fvnz(;o=eE>P4V#@> zA=r-8L10_btpB8x$2+~%2GP=n2+P^@X8?@Mv<`>@wr0x3cF!sY$go-RJeH1(1dSf- zud-JO@A)};$h+jAk*y`fPg^Ef&+__Y+RxXs-U@qI4JVnRMu?sNOe0S zEW>40V63>j2!YVI#7yrai+SIYo#?Pz2>sV=9~w~+M7=5!Z3ZlP6@LchGnHvbSt^yj zN9%lq3wyjqohis_&;F8u3EbCCN9x-bB60Mq+F;>pxON7ZFo#C5={{tF zI#?;Qx0gRBV8aUQ#g<0qYLGh(t8=ICuXNP}*|$=jnv}YeV0~!SObxVPwLC1{tH(m? ztZ$YZEB7aMUYF>#qQJDSD$LThwiA?0_2nANpVa?F#9P|1!B$8k?`9}HxXxo#jieM! z>qJ>CAFt~GmC7I^dn1Shs_Ov-T{GD`at$wNwF`fJLnO+d>4TM+O*bqa8@7X$jOGM( zJD7}m^TAGk_sH4Zjt&m@J!#RW<0Vcnym1rx8xKN)!;O={a?c4UMEr$#Z#G2(Ncc8f(qU`UCqF24V z`M$W?t?;`$%7k6r&Mjbf_bzKgmAia@SDk?BUYcsNYh)jUlX0Rj3hdG%EK=#@ZE2YU z3ZWN_ZQI7$jUkynF3dO4B|x94lwKzLc=jt|;4Hgd@d4ayj%9{;;zASm+Pi>ld*v=v z?A-%N_IDcT^Xy|z5SMaaHqc=;4JM$$-zuy5h4t3=*>Up z13&Dm}bR#C-N}C_w$4xudMNcm4ZyzFH<{>e~`x zdy#dt>4^2?0bWmk%dsPGLoSBRQFQP_gT3PZ<3lm){3|HJQgPH;rtQa)L=+z#djLkd zj+de+q^zf%*e;-+6O90wPFlYom3&T|+$f-ou7v=#pR!(X1^VTb_3Mn+Kdaj$=93M@ z6Q9xbzjE4I4h}zhW*1oO{Mh>PC>EVQnI_!kezFxT_C-&kpVhk3svb{!m6+7CP-wLF zSnmhFN`CcAm)ERbZ11~v=BM&@vrnzteR*pfjpz*mJ4!62z1Gvq13uBa2x8$MaBapA zyW6+vGxUj~w~Txi4jK_(h=gdx7hO{MLoZnWMRC+{L0;T57v2N4wO?zm+m)|H$1O$Q zltTIVgCc!=xzfZwoxRey^vN4OukS3VNPE=sQ^44IdzERtB(Kw@OK$>i*qq67(}>P) z$^)0>kSeddWwjp~MTbiL>9Z$%MybG;0XyG$ZVBIjJo>@%Fq&KJC!w_KyLi#W!SAdi zDPGI->B`HalkKzKQ2%R`rVIJSXlK_vm&&rkH4i-UwsR! zU%#~mt2f*}ps3TV!TDHd8CknWqm|pZ0Su zCSLt{3nD&p!h6kyb=zZ`kBCa}eV*MXeF!9enRw@Kt@KE|CXYl>Q4kV1eqo>{fn~s6-5nP

! zdfe2Z1nUS|adzI5GY52}0Q>TFCwmlMe2?|)Kkno)jO2R|?KU%aPlDH(m3R`g&yuSe zY+~+M?1k~J=vkB(nSq&RFI8)#o5Kpc)oxz)R=MHZTY*h%_aS(7c~J_n_^-a&*37}; zRzFo&cmVlW{Gvbh{Yn5?fu%bF$m{&K?bcc|tPWIX*b|5|_1z}mq z+>9lZq+n)D7+H=O9^MmJd@l?l6OlB9a}%w4G8r@1^kf+_vFZ`1s=T1r9w8f$n46f5 zwQq&1w7cUa4-q5=Gv7v#5@e#-pzh;w1MVZ^<$4NhzY&Qm#UO|2pdqzJbwiFDVM9cz_>Mo0qj)Duwch;FskU~<1l5&un+O@p0W?h{&!GSy zhooqA4qKve4loh?e<4*9u{8!JLN;rNB{|5fIhNGom|f!tL*ni@BE7V-cFrWST@lmR z0X=h$ClfJJ7_XXs-dz(G8xvp{M9pXd$;RU01i)=#TKJou)hCjv7&(_n@B<3#RiC6@ zuhU7YA?ADVG&XT485UmzAw7U>&SZjLKz3j9%&@*vkum;kdL{|@KPb_BasU7T delta 6533 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 diff --git a/examples/zips/datascience.zip b/examples/zips/datascience.zip index ee94297c4b3ae1010eab4f351654bb524d7ca9dc..a380a42efdb42a88533294a4c24dd77d5adb8fe8 100644 GIT binary patch delta 848 zcmbQz$2_HvnJ2)TnT3l11g_gnSfyyRJaCkz6fSScO*Kricf`mV)2EbIhsTp#BgnA~cPhOzMhcH!~je&s!X#eDk zdN4CKE9mDlffP?Pbb#r^xWTm ziv?u(?mdveaD6uU_nreFk-dAZn1DR_W8#wq_JRE*vCkV#q-9?Wnh4|maEJ&vGAsAT zp~?T)?~EiLa{yWOl>>fgs+|w|qls)j=z%68b0`GK#EFLjka$doJ<(L>9Ckw!`LSPS y^83T;NV?3Acp>o?9f7(S9u90r?U3YCkNTpSc=;%@e!F8XNU9ef1H1q2F?9gUuR`|# delta 848 zcmbQz$2_HvnJ2)TnT3l11YVm>SfyyRJaCkz6fSScO*Kricf`mV)2EbIhsTp#BgnA~cPhOzMhcH!~je&s!X#eDk zdN4CKE9mDlffP?Pbb#r^xWTm ziv?u(?mdveh`cfR_nreFk-dAZn1DR_W8#wq_JRE*vCkV#q-9?Wnh4|maEJ&vGAsAT zp~?T)?~EiLa{yWOl>>fgs+|w|qls)j=z%68b0`GK#EFLjka$doJ<(L>9Ckw!`LSPS y^83T;NV?3Acp>o?9f7(S9u90r?U3YCkNTpSc=;%@e!F8XNU9ef1H1q2F?9gFWk!<# diff --git a/examples/zips/delegation_management.zip b/examples/zips/delegation_management.zip index f833d073a7a01eff01f1a0917b71b3ca7510a4e3..dbcb94ebceeede69b428b18a0f6d22d0f1ae3e5c 100644 GIT binary patch delta 723 zcmaFk`Noqcz?+$civa|#+fC##V{?6`nC|{;GNYm}7eZq4Odi9@2gC#>>ocGF zOxb7z9z|?tg`-9D!$>WEqj*A!Wz6#!GCXjho`R!p^r350tT1y0j zFtxrEEP$zt7jguvTO=HTsZLg;2BvPl$UCsQeld4Ubw9zv&GNYm}7eZq4Odi9@2gC#>>ocGF zOxb7z9z|?tg`-9D!$>WEqj*A!Wz6#!GCXjho`R!p^r350tT1y0j zFtxrEEP$zt7jguvTO=HTsZLg;2BvPl$UCsQeld4Ubw9voeLFq=a~Hp{YvGJ=FkSZ$y}lee)R0g2SG*)X|+%#sE1Zn6a+@x0hwk$4-}y&yc{ I$^0B5024|v<^TWy delta 153 zcmZ21uvma6z?+$civa{)n@!}=V~f0@m>zv&@ekw-6gd&v^ zSwNQVQG+{8UR?*Q(O1J2tP0iAtr`JP(akV#WoQM$gg%IOF>#0hDXeFRqg-ogQD7rNqPDm+Z+a&_{GMY$rY4nWI;S1TNfnWM%yqDPtg-Br(u_f#9L+8fy4{8 zPeS5dvyVmMg*YT2@vb`fBk^1vvypfg9g+3k>%Xtka#NY@kqQS?oCKMcaJC}-XRZUS37umBgw7t^h4rF UdpRKSYP?)QJYaU6e9cP)0B4zSeEekw-6gd&v^ zSwNQVQG+{8UR?*Q(O1J2tP0iAtr`Jf(byZCVcyEn3WN!L5bt8*5CO&!2QZc<2kMr< z>^ZIL1vXS%-v=g?secO`e6Gf@AbFUb?`^xxjJSe@h&+^RC0LejJcEAbQb|>c?Bz@ zTyl|kGOig&yrr&S`=DkTx&}hC@bpHKTjS}6 W#FO@NK;qSSxq^7W>^k|Hmk0nCymcD@ diff --git a/examples/zips/devops.zip b/examples/zips/devops.zip index 92ab4d5e69a5ab72aa047158eb353b3b87e48d4f..df7392913ad00f4e0c489b841c412fc5a74e8894 100644 GIT binary patch delta 2629 zcmZuxZA_C_6fSM~5Q~<;MhJBRLOK?PM(9`u!+@45C@o!!R4Ejkg^7FxEHVgMMgWaa z%B2ovBCJvvSQYBr%vgq-F)>+KwrukUiDOwLLlUzkZY;|(*Z1_^ayt9|JLh?x^L^j> z75@ARU!=+x2t#??_aMtEk_O3_<0=))FjkX5StA?@2_laR-&k&+ov0y!lJ+?3K})M_^H1l%y>%dV&w ztU@m4RP+v}UW!%)aIT#(Z{RevZ%a%e_R_uul4DHXDA^2scfO>1o;a}eUB)}TwFh{i z@kgkOgjYJa#4+2L$KJUOIFrRPGCD0JUnFjMJ|=mVX!u`*FsYuUsh8%#bmx-2Bu%ZA zOY`xo2mAy}OsQbf-V}KdNBlmm924mvie;Xb=|#~&Jd!msxvKsZnB&>>D(3nt{U4b2 zpPALnRoGkut{<~Ya1t6$n{%2G7jrUU7SVE*AL2RrAxdOZ9L)8mwzTqQF%9yI9DOy{E7rv*vrPl;PNFpj7Qgl!ZqKn^d3}P)jhbyl^QRJ z-XeG4vCR^)Ll%gG(o-|kd5T|81+P0G%#yh|fX7=3AfvfSpnvL&WaD)|Zgzof4c_PQ zQ$r|}uxet@!No3czI8v&O)qeJo0>M{>TVl`gHCAoYR|Smh7Fj^saQ+v{@VOH_R@&b zj$JI`@s1O)iiMzf66+F^eX}A~{(7(6Ruo-(na0-jB2?k*_WT%qiBUalsjljtU?4V~ zVLx=&+?jtN-(0Wfmo8r>YrUUy32ybt_-^ZtWeaDCEIFL@I{~ZCqC(h`WjC_S6B1(R ze+{ue=|6(-4671h(^fsgk_Pe-W*g8VY$G{{u=mJuWQhl{u5B<2=@tj~B5RMW4C(IL zP9jWyz7k=N&i5dz@BId3#SVc*XQOjS$ifh0q4P<

b02E>t5+eGxFK{rTcygz1Ot zIg4UXhU<{k{sGiVGeli7Bi-#wCS<8bT9EGX$T5VSxZH=Zgwaxj*+;98l{^M9X)Rxk z;f~ZF+EA1bJM55F)@5%(Sj?59DCXFePK1TnC8T0J8{v1yu~z4J8(|L}9Y|}QP$TT= zL=Cb!CQA_W*(AP{a~};LY}eE~NOym#5n1|a*ahwC$uwYS<0Dt`T?IRF1vV$%NAfki z|4*;s{VT2?LOH*@Za~)V8<_ds4VVAhHVf~H ac4lgEI-8E!3stk2$lwNd8R~f_#p;{4<#6 zDCAU-%Hx(iKE-!WxO-n2Z0wF zca*wFc#Vxq9KC~itbIFxGgBfb6LUiHMZ&h{W0GeH`u{};lj&HRCRsjAcQMIJQa2d6 zG#|fu$WO3@+xiQLmNy(l_}NAeaXS2n!@b3B(`%Upk@{{z$h zGqaAlirVYJ^2c2qm&9nsU8q`FUzMoRWOc417yo z$sb_SqIQX+v!DUUu0qd+`jT~uYF5w#MJ*JRqB`uSAiJuK5fk4k0HUiflZ;G>H__|! z4g9Od8(3YeqFXQa6F64e$^u)oVjwC6aYQ*LAv^VF8$P0}f~h*nPD6u#R}@m0 zdt?$)sW)-UUe|k`k+1wzWgnCCtKwl{FISg>%a>@YKDH4QuK7-l_n=~H@53#w)q6?w z7P$kDX_t~+@<1Gvo|?YVQ~X9Mc-;YEhRm%2Jl<*mnaE89{Zo4c8?XCuvkUBM_CAN7 znnR%kR~vf{4t9Y{od zyN5+Q(R&hBu^bdfVjN;}U_r#n-{_UwN?!kdrZM-w2vyhzJU>QXV&ouOs-tc&7>KQB z*$>^Zc=lh&w>aearE8sJedu#8!R=u=-)-GBY~w7EA)B*)Ctx)iln7fj>_t}3w3O&a z(h&QTk)sIDFe(r>XVf7qakKzo=1~p8Hj~2$dykwzme_=KU8XmYZpE}8S^LZtNO#YC z3SqhnH3)ljVGvov?>8eWW(+Jk8?8-Bmd79qolpA32E@L9u?|_POMp@B&zDLOrn5A0 z7R8=e8j;og0n|z}L|*Pex;vNKkfj{&K)T1{#}Rh&$}qy>C(03Kov1}t(j>&BwR|;+ zJ5qgUMo~hnutQo|zqJ)%(N~Y5n3Grg5Ef#UlB%gJgx{OOTCMGEggvzNB5lvK3Sm#D z>ygzvQ-+w&X7Ht)|7a9pduHE3x(Bl@$kNThE@)Rz<^V$*AHRn0D%g%IFx&AylCIo8tn28v8(V)cg!g|jj*u0rQLadyjFrfs_(_mG)+}1FmJnk^C&@mnt zun@#85GyC^@E=YU1lzv&a-fzl7m`Gx8o8tn28v8(V)cg!g|jj*u0rQLadyjFrfs_(_mG)+}1FmJnk^C&@mnt zun@#85GyC^@+b^M6G-Mxe;#zlyxnr6T+_;NEcfiK27uCk1 z_pd1250+vOKSYYd9XwH-nHgm7G$|bNOm2kV2oMP~9oeOV;=Kl;e-Ni+bv0IK?s zffbT1vWCbmXf*UgGUbC|5E3uh2rLIR<&qJyuZ)esE{BH3d}Cy{vYR0D@=ZLD%)DV@ Qjl?rCg}PICa;K>X01@j^mjD0& delta 913 zcmbQ6JvW;tz?+$civa{)n@!|VVT-(>m>zv&@yxnr6T+_;NEcfiK27uCk1 z_pd1250+vOKSYYd9XwH-nHgm7G$|bNOm2kV2oMP~9oeOV;=Kl;e-Ni+bv0IK?s zffbT1vWCbmXf*UgGUbC|5E3uh2rLIR<&qJyuZ)esE{BH3d}Cy{vYR0D@=ZLD%)DV@ Qjl?rCg}PICa;K>X0DL4>+W-In diff --git a/examples/zips/em_warehouse.zip b/examples/zips/em_warehouse.zip index f4da3d7ec1dcf6705c219f28a96fc7756fc0ad27..148468453ea2b2731a162e04c81d668082bd8bc0 100644 GIT binary patch delta 139 zcmaFN^_Yt%z?+$civa|#+fC%rWpjO|nC|{;qP;W|kRM|M=DR+dIIkPXpRCPj1{K(x z&KSW65<19a4HcTq#C#AWa+KMc$@SUfTozdnPm#q7iPyv8g2emC;tAr}u&M(9u<9?U delta 139 zcmaFN^_Yt%z?+$civa{)n@!}=WsAI_m>zv&qP;W|kRM|M=11O`IIkPXpRCPj1{K(x z&KSW65<19a4HcTq#C#AWa+KMcDe}hTTozdnPm#q7iPyv8g2emC;tAr}u&M(9-dZqF diff --git a/examples/zips/email.zip b/examples/zips/email.zip index c1237b04cc07b46094ebda6f7ed9b5025cb87232..053e28657395ecac6442fc527c7658558162c8f5 100644 GIT binary patch delta 443 zcmbQFGf9Uhz?+$civa|#+fC$AQ+9o(nC=e5r4`%^j4Usi85mgVfs!C)B0!o0q%72o z4W!KV*~E!wnXcPSPGB^I3T&RvSjz|!5@R-n2?a8*0}C;->cNCeS?4hFUbl;jEMHrq z`w3|5-N_BSVv}bG3vhBWFhk7V%*)OT)+fVZ0Mi%5(Fhj0%Bc?%;^GPb3&n8jz=Zm^ zpMr%-c}<`~lh^a^2DvJSPZuUKpYJ?Kq=4T7rfnVnJ+QVuK@%p|XOrIw$$}I-7IZ=4 zc?j7f@m2^qBk_2IZIF1G!cIuMGs1RAJZ%wMBwnY86%y}>2(mtRQEMc*#iDK?-fK~H E0MpQ%F8}}l delta 443 zcmbQFGf9Uhz?+$civa{)n@!|VQ;xi$m>vzpr4`%^j4Usi85mgVfs!C)B0!o0q%72o z4Wumc#>9zdnO>VsPGB^I3T&RvSjz|!5@R-n2?a8*0}C;->cNCeS?4hFzBY@CEMHrq z`w3|5-N_BSVv}bG3vhBWFhk7V%*)OT)+fVZ0Mi%5(Fhj0%Bc?%;^GPb3&n8jz=Zm^ zpMr%-c}<`~lh^a^2DvJSPZuUKpYJ?Kq=4T7rfnVnJ+QVuK@+CP82(mtRQEMc*#iDK?-fK~H E0BaVWCjbBd diff --git a/examples/zips/events.zip b/examples/zips/events.zip index 26909c1c29194d46f29c814eb8e09406ecf33507..264e405e518d3bb82c0de9c53ab36a5c316f8f7f 100644 GIT binary patch delta 140 zcmeC@>*wPM@MdP=VgP~bb`yEj*<7C~rn^6zXerGEm-0FuQp A=>Px# delta 140 zcmeC@>*wPM@MdP=VgP~HW)peT*&=T!rbpkHXerGEm-0KjE2 AkpKVy diff --git a/examples/zips/fast_connect.zip b/examples/zips/fast_connect.zip index 99159293f067e40927a7788bacd89be0b7f3a367..e5d56172bb0f6e998f29f860004fb353d1bc7691 100644 GIT binary patch delta 500 zcmdn$xYdy-z?+$civa|#+fC%rWpjO|nC|{;qP;W|kRM|Y=DR-IxGI@T_#hMRR#m(sp6N=;93RWe`4ObP%?FbfH$m0T2^_oW4X=d!U?O(HZ$TouB5)@(h_HjTb&A@;OgbYf z%mh;PP}~isPgmjvNJL!H8YU7Uc>p9LC1uUz`fT!l8CejoOv)FD_e9DKiRUdHh{W3~ z9gW1ZltGqTEfa(!CnxKI#A}vyN8-JfjYZ;R%Ech@p2;EGkRzv&qP;W|kRM|Y=11PxxGI@T_#hMRR#m(sp6N=;93RWe`4ObP%?FbfH$m0T2^_oW4X=d!U?O(HZ$TouB5)@(h_HjTb&A@;OgbYf z%mh;PP}~isPgmjvNJL!H8YU7Uc>p9LC1uSNd1LZ_8CejoOv)FD_e9DKiRUdHh{W3~ z9gW1ZltGqTEfa(!CnxKI#A}vyN8-JfjYZ;R%Ech@p2;EGkRzv&vOTXf6Hp-49xM=fW8DuW@Y&f7W&8L0#&rxgZ&62NEIKaElenoGZrkgfy)mj#KQdrtnn8wT%!x$ z6|gEP0Vk-c$w>moK}Kl{Ix)F|+$9U*^$A8H@i>K$c`ZUgNOIqWypedx!ZAp^2g1lI PgGB-$a>A2$h=>3HR>EfB delta 285 zcmX@3c}9~bz?+$civa{)n@!{~VT-(>m>zv&@DuW@Y&f7W&8L0#&rxgZ&62NEIKaElenoGZrkgfy)mj#KQdrtnn8wT%!x$ z6|gEP0Vk-c$w>moK}Kl{Ix$6p+$9U*^$A8H@i>K$c`ZUgNOIqWypedx!ZAp^2g1lI PgGB-$a>A2$h=>3H4*6&> diff --git a/examples/zips/functions.zip b/examples/zips/functions.zip index fe07bd18a7df0e6cd9d416f6b98cadffc88cb8a3..de7f6e51e4dad2e3919bbc4911a4977250949c8a 100644 GIT binary patch delta 173 zcmbO%Jz1J3z?+$civa|#+fC%rVsm|_nC|{;qKz~YkRNFb=DR-II4O`3C@}dcqZw3W zvm%o)Gf2pc)et6>%WBRF5?aP(0Tr73gliv2WC^zglk2m|4m`3T-d}DV!Z delta 173 zcmbO%Jz1J3z?+$civa{)n@!}=VvD??m>zv&qKz~YkRNFb=11PxI4O`3C@}dcqZw3W zvm%o)Gf2pc)et6>%WBRF5?aP(0Tr73gliv2WC^zgQ{;`w4m`3T-d}DYcY90m*C`hE><+f?ObIr#mwAHP{n>|iYj>FioWpjgB7s~n85Ve z3j~2(GFdPHO&^<3HB3>v&?0C6IHM_=C<6EVH<8O=!%vI5p(!$vNQ0TQK;jeFq$yH? zXo@(b>tKp{q`kn3Zphf8DYB3af+?CH%gF)?o!N?(P@&1U6c2(#<|Cn)MLsGq5s}oH=P&*Jw{;)Q>j{zv&@<%374!Ces2trtz38?O33s@lX#^z{7 zZ$_ZVWNi`i$@iIfP}NQ5V~&R@EM~R=E8NHuil#`DwH2ypax|mP<_E0uV1YcY90m*C`hE><+f?ObIr#mwAHP{n>|iYj>FioWpjgB7s~n85Ve z3j~2(GFdPHO&^<3HB3>v&?0C6IHM_=C<6EVH<8O=!%vI5p(!$vNQ0TQK;jeFq$yH? zXo@(b>tKp{q`kn3Zphf8DYB3af+?CH%gF)?o!N?(P@&1U6c2(#<|Cn)MLsGq5s}oH=P&*Jw{;)Q>j{S`Xz?+$civa|#+fC%rV{?6`nC|{;qJuOOkRNLa=DR+dIOiRZKe>m|94fH+ zBx5KeNJxR%3MQ1mJR2?Fe7R1}d?~cS%5^zQ0bqIJM@jeQ;Ao0QkgOPZr1d&ZK67mAc I)d{Hs0Ab!@6#xJL delta 271 zcmZ3gx>S`Xz?+$civa{)n@!}=V~f0@m>zv&qJuOOkRNLa=11O`IOiRZKe>m|94fH+ zBx5KeNJxR%3MQ1mJR2J{70mfBjdNi_F(y~QE;F)(o4(w#7o^Y33KqtjGo7!fbVclLG zsuL|f)n>so50={wbBz|>-=!wFfqU;Gu?R`0gq}~0S(kqVG=Fd3S~~IM)y|9S>U9mS z2ox@U^ddKabGL$l+|{-GCs+Nh^Hy*$n!}+T>S6J(W2;4&r{LO01!tzD^-DM_71lJ! zNvViRo;iK=ep<`=lM^qLsHBAF+kck{HQ>27(ALlww8NBE9%7k2ajnmbE%NLewoR@+ zx$sPrk@ll?GwWTS)JGZ|-2drIiCN%t*X!@|DwOI=7fBz_U8SxUona?iZy9jIQoDEQ zBDEW@{q($fKJxB5n0)1t=-2(_@trCE7(v+t5eX|!%rDsp3||#sM3^$jFihU#UGYIsWkL!N;F81xKF8ZS>i;BO03 N`rluX?Xx3D0sy^m<_rJ; delta 1143 zcmcb;fN|LZMxFp~W)?065O`xYk;jfL`i5e9^o@xD(oC<-CgvuvMMC+a93nt991K9w z57}VR$QzRr86N_bO?F|L1{K--fXS2*BqYv~2UFC|@&+VQ$yy0h^n+D{jqkNtT;yDd z%?f5L3=E}$lLMFvC(q}Rgelp_6UYM6B`8=66OuJN#RL*c5XpfFT@q0OtNJDZw=GMu z2c+nSWEMH7EL6&e3QdN3hef3d zrU>L6ke%za;QG9^eON(4GY#rss$kB4X`BlaiZQtYcA1eS-1Oy^y&!#NR7CYf! z)?ovlw)eGMy>Zu^AN@|?*>>ng;+IQvPib^5wo3DpQL&8u{-yZwv`vi%Z`9n^|EQm6 zEa*S4uRHfS>nFz>LdJ4R-xD4ee9$vo)z6&K&NYp5s){{FoO6yri}0Gg8o$*vw{EC+ zJIdDTaPHtVh1t?>(j0M4KDv8&*^ix3U){MfPG|auzH`wPeyb$o-n=WzmU6afJZAsu zdF^tmQ_Y4Ke|32#C3)NOz35nNsPephS4>d)lD^G3=ks!t^AA;)n!cSAm$`;3K-5WX z`>tM%de#|F>p%Bs+|oB(I$^oIeO*Dto?GX#t*6hrsV(TXer=fY@srytAMaU|Xfw<1 z`b6fJ(!UKS%$TEkEcVph?c0mKzg>FAN_llWDA7ZL^o`l%`wl+fR3CF=vZ3QSCZGtT zlMhq$jmiE_vY@!gbIM}^ruFxpVBTM+N+jNN=OswI7?&C(-cOfyB;G<-WR+=d-AHmm z?o~*a(%wl zNIWe+WK&M~!Tb)+y@;eZInUn{rVAK;H~eLo<~dAe^wgXzA0P}0N|OLZwtbGEQU(Ag CyV6$x diff --git a/examples/zips/goldengate.zip b/examples/zips/goldengate.zip index 145c1648b1d0be3e9f11a2c5f9c315cf0707b032..76f315a906f78ebb56c51fefe19824fc508229c3 100644 GIT binary patch delta 617 zcmaEF`QDNzz?+$civa|#+fC%rW^;X}nC|{;@4oQD3qCX^&%!8{1653Y*K# cq|sfzM%opj6Kzv&@4oQD3qCX^&%!8{1653Y*K# cq|sfzM%opj6K!Mz?+$civa|#+fC%rV{?6`nC|{;@nY><> zADf@Zt4CvtEzgN(`JwnlZy T4E7_tk{3wsA-nM8G$j!L*aGPM delta 645 zcmez6^2>!Mz?+$civa{)n@!}=V~f0@m>zv&@nY><> zADf@Zt4CvtEzgN(`JwnlZy T4E7_tk{3wsA-nM8G$j!LR1E9J diff --git a/examples/zips/id6.zip b/examples/zips/id6.zip index 15c5e674c529deacba083439de51cbfd01db7b40..22877aafa63b4073808329047e550403d9dfad57 100644 GIT binary patch delta 130 zcmaFO{+gX9z?+$civa|#+fC$AQFeW%nC=e5r4`%^j4Usi85mgVfs!C)B0!o0q%2sM z4W!KV*~YdYMyBg_lW#E^K}9ADG3^J5TxK$2a(yvzpr4`%^j4Usi85mgVfs!C)B0!o0q%2sM z4Wumc#>TcFMyA(hlW#E^K}9ADG3^J5TxK$2io7wIomm#dQ)9M9;x#clfOtok)d4FW BCglJC diff --git a/examples/zips/identity.zip b/examples/zips/identity.zip index 805436bef0857848dfc7d583f630268ec34ec363..93428c83310d732b84f7a34d3dab73c3420ad4f4 100644 GIT binary patch delta 877 zcmdm6zqg(zz?+$civa|#+fC%rWOIF{nC|{;@6CoEyNV z-{&@f35oKUv4T|j3I@RREf%~35@{5&0gE6zbn*iscbGC=;r}3IdLl55n_EPb!ERV7 z>H;(Vv#1%^Mr{dam{5ttUuKZTVi^yZ&_S6jutr@uxLM6|xnQAB@?J1iP70U6LSjmA zU;8Nqf`t|;!-Z}tr-N;DQgeW5>`+SstNNgB1rsvRumr2h)-r|(Ez!CU7HZXn3+>aj z18e-JXAVZl&%_#8-)8FwBsm=$WS94%@ZQ<@A*qbD^+4hsvvow`Y1kq2 Wy6jw$t delta 877 zcmdm6zqg(zz?+$civa{)n@!}=WQ)9^m>zv&@6CoEyNV z-{&@f35oKUv4T|j3I@RREf%~35@{5&0gE6zbn*iscbGC=;r}3IdLl55n_EPb!ERV7 z>H;(Vv#1%^Mr{dam{5ttUuKZTVi^yZ&_S6jutr@uxLM6|xnQAB@?J1iP70U6LSjmA zU;8Nqf`t|;!-Z}tr-N;DQgeW5>`+SstNNgB1rsvRumr2h)-r|(Ez!CU7HZXn3+>aj z18e-JXAVZl&%_#8-)8FwBsm=$WS94%@ZQ<@A*qbD^+4hsvvow`Y1kq2 Wy6jw$7c+|pP?!TGk?aAMaDBFMVOX>Kq7ZpotRufX32th4s2mayzOk>NIYfs00>Wb IatFHz0G$ypp#T5? delta 153 zcmbQkKZlm>zv&vLc%>7c+|pP?!TGk?aAMh`h0JVOX>Kq7ZpotPp)X32th4s2mayzOk>NIYfs00>Wb IatFHz0M02eNdN!< diff --git a/examples/zips/identity_domains.zip b/examples/zips/identity_domains.zip index 7482f2b617d1e47b542d79cec3905226b7b5a1ab..9c23f6dfc4c529f9578c8723fbfe8adcf6130f42 100644 GIT binary patch delta 2117 zcmY*ZZA_C_6y~;XySB7!6E;VjWXAas6r)?DI9(B;v_L@=Q9x`e#Hf*dgoI5DE^}MP z_G_-McxR%r4l_TdhWeUNNye5DKck>%tczx16fnvF#quS>yr;c)=k34qoafwgp68sm z!TnNjzhutO(MqN$_6yp6G%wQIyJu{6bj!O&Voh2p?j>ws2~Rd8?A`vx0<9)!lXX&h z1X1#&K8Zm#;}Q<-G%f*Fz-;AE$UG3wSUs~H5lHq|#VU?D?*p?YF_$yj6RjG?G$bwM zP*&1B1A{(Wyo^JE#oGvjW?5HrXs6X{WYFtrwg?0*wxk)LMP)_`XEtWI0Ge=c6|%$G zz-oJ)yjEG5brj~fos+}s=DWU!x~7%f4|!u@oH8w65Ae)_EY7SfXn^si7G`j0W8pGj z)fb70hl^T()l_2VEY12009`KSJ}L1Vz6HqV{(!UYxpM(p=y7uB3s0D(FB2X)%gTXu zqCAtcM#~>+VuChzapF+?d-b}gsDIy;JALoS`4b67W0aO{-`=exZ*JBxH=b7H@xsiH z0&L6PN-hz+EvqD;X;YQx;I9f_h`w4lnO)rhPA1fd3)xWf2^>w^mtraAT~DU4rjxQT zBYV$R@O&E;%42>i0!>@?x%gg>;x9~KDmvuHES5$g#7C7+rMShpc^^2bZ zWWOTLq4r8EG<97SH@Wv}*v)}!qQlaTvrwqH$@eEG^}el?-AskzhFd~J=+*#SNzXt0 zCY0p6;UjG66o#1YwZePt5Aq{Y!Mc>L-{HOC9?^Nl!(V~<=&>**srLt9we+R(Vr_pb zyOIn2;@`nI&Pn{`|Fy{2*ra%DC!tog`$jS4ip`KW=GMKP$7!G3#~_yG?ay+ zkB72R^!JblMJ2;76rCT=MA3o~Jj>4`m}wa;M$Fn#q`^D34yCq_twzz~G2Fc3c>&6G zKF5OAjyqBAkMXrAN`8R_`ChC+xi=@U5#EVXlzVj&PgXmL>&7RMyt=If8DDpeAX{h( zA!uxRoDeiAeM3V^{%=WlYX~xmnzSSjWvjIWO-n;sf@IPPiL6BAI}$-+Xt9o<`DvR@ zHHKBM8sn6ng8yQO3~*Ql8eY)783aaVrhB|iTe-r3xjL` delta 2117 zcmY*ZZA_C_6y~;XYg<}$g4>9b%=j4`i@Mn2{6NM>3lu~djsi9nV$_U%goI5Dnz=1w z`?amFdNon8!_3X8p}r<`B;qpSXC^2bt=Xa&B^b*9#quS>yr;c)=k34qoafwgp68sm zw+~9U4@&03JgsDkVZV^|NAnWBD>!>gSy0|R5^vH<2`^y-OL%f2;R^bjinN-LRn|!v zQA8<_`XmOeHZJGTPUCW51|K@a_*CoxbYi+eC~HS>%Kc5pv4{shjw`)EPaLW$Wc)V ztdo`5oHbhcND~*bx?RabiAx)FF){znmAiaz%7qh2Mq`YYZQm7CtXo=i%#Ej21-vl( zqX65ox0*`?Z!4+^XxdyOI{0fM7ox8fPUhBjf|E&g;zBmoeF8_*{)JeIdH0j)tm&jI z%*fsIB|P6wh4Q%lC7@~R0Vf}=<-j^%Sq_Osxet8}tcQo!a8`1|FEGSSpSZLIKg|Ki zd6c^dqD~&|2l()@bY9$j>;XVmj&nm^E}H2t4;~|fm43~bBAAy+~V&B$ahAJ zJa}dyK(m@x@fM!u$g<7{g#2m0KY)V{|0$p~ZLO@(dqEs7`-;jh%mW9$y3FrVxpDbZ zfU>TNbEv=C22GvU#7*wI7IAany6CW?^E?!4Zt?xeDZOtf6}Qr$xG^Y1go6WcB|Uff zO(@oTkt1yF5{8)Wx50ZI4-2DG!MfD$v+&+HQv9t$k^{Sli#m zuH;g`_;)Z4^Z{w~X`05x{<>x{f@`n@MV*7|P?Y)1j-nIKvQRWVT#TY`!(}LvhH_B! z@lY;`?hJWQR66WL(Z%6x6umuyXE`#0nU+x(V%Co$4c@U2P-^?wdK87maPz9?MJU(x z91Geo?m)S7;~P+9eSrn}Uc8TTuTEeiyc6XpH+2$ERzHdB#wU@yz1s*fe(!aHY@w-y zpt0!*LeQjihK7{>-;(~IA;>6d(vkv{t<@4VEe&f4l1Zy1vKEp5kq8n)T{?p1r|mk` z7&g6XjMI9Ohn`BBqLScMhk64+i>KQS1Z|f-F%aZFEjJRhVA^3+y_{hp$X429Qcble pmY{{u##oi2*UiL@W~OG<%dr-fqR%ZPACbE)B>Dx!(~LNh@E;jTjcxz{ diff --git a/examples/zips/integration.zip b/examples/zips/integration.zip index f9a4ed384cd13b86eeaee7f5ebcda22480ff232a..e5384f0fa9c9909e39d11a47752ab67b6e1694e6 100644 GIT binary patch delta 140 zcmew@@>_%_z?+$civa|#+fC%rVRL<^nC|{;qMbAokRNRd=DR-IIL((4C@}dcqcK!u zvmDb|R*=wJb}OjRWL=J3Ad#0GR!pwXCcoyC1@T-sosoDeI31CATwER?UI>>u0B%q+ ADF6Tf delta 140 zcmew@@>_%_z?+$civa{)n@!}=VT-(>m>zv&qMbAokRNRd=11PxIL((4C@}dcqcK!u zvmDb|R*=wJb}OjRWL=J3Ad#0GR!osMCcoyC1@T-sosoDeI31CATwER?UI>>u0GseK A(EtDd diff --git a/examples/zips/jms.zip b/examples/zips/jms.zip index 8e8fbc723e4bd531be605fbeab936c7f3b6dbc1e..a2a1e2674b8bb71b5125a1a51fb6c6943a853a6e 100644 GIT binary patch delta 783 zcmcZ-ekGhIz?+$civa|#+fC$AQFeW%nC=e5r4`%^j4Usi85mgVfs!C)B0!o0q%7Es z4W!KV*~We;MyBg_lUFlZLq#UPVLSyA*}-HA6X$b4W6h#aBgB7h2f!p_2BpfUhCT0Lr)g!hK zEaW5M4-;A_5eXLhBMEcWW>=}zV4+XaR!~)wjby+<^-l)wWi#2GASZm3g$31QExG?7 z5p8*xGdHKnGlLDvR?vZ2H&@{cSZK165tHk)$pMk6t r4oU8#Ml2F9UlZBBhngNpa$Z`_1*@WZMh1tw8$LYO4bP8j2d& delta 783 zcmcZ-ekGhIz?+$civa{)n@!|VQI5Q!m>vzpr4`%^j4Usi85mgVfs!C)B0!o0q%7Es z4Wumc#>RdrMyA(hlUFlZLq#UPVLSyA*}-HA6X$b4W6h#aBgB7h2f!p_2BpfUhCT0Lr)g!hK zEaW5M4-;A_5eXLhBMEcWW>=}zV4+XaR!~)wjby+<^-l)wWi#2GASZm3g$31QExG?7 z5p8*xGdHKnGlLDvR?vZ2H&@{cSZK165mV%i$pMk6t r4oU8#Ml2F9UlZBBhngNpa$Z`_1*@WZMh1tw8$LYO4bPxa%IC diff --git a/examples/zips/jms_java_downloads.zip b/examples/zips/jms_java_downloads.zip index 3f02067335e69ce8b28c1cd5ccc8a373f579a738..da384567d84cc7eaa2e4dba3189982fe48f175e0 100644 GIT binary patch delta 569 zcmZoOYct~s@MdP=VgP~bb`yDw*<7C~rn^6z94Ic#g(Q*Wh$Jz2p8y9FQ1!6@u%PR+ z%`%L!j6jje)l9*d>L!0=DuF4?X8sOV7$aae*-ngulaqlNVIkDq$ro4?pz0@2#Dncy%^QeCuRLD?OyN|%qfm!=Vo`WP z0Oq32dV=;~h515|AaQ**d7ID?ko#(c9hrcu`7E(KH2I%mVMy`?;yFmXzv5nKsxu_wk>p=U)S=0@OCsC$UlM8? Q*zJ8%P@f1-{v;&=0GBq#Bme*a delta 569 zcmZoOYct~s@MdP=VgP~HW)pdg*&=T!rbpkH94Ic#g(Q*Wh$Jz2p8y9FQ1!6@uwdkk z%`%L!j6jje)l9*d>L!0=DuF4?X8sOV7$aae*-ngulaqlNVIkDq$ro4?pz0@2#Dncy%^QeCuRLD?OyN|%qfm!=Vo`WP z0Oq32dV=;~h515|Ac?#&d7ID?ko#(c9hrcu`7E(KH2I%mVMy`?;yFmXzv5nKsxu_wk>p=U)S=0@OCsC$UlM8? Q*zJ8%P@f1-{v;&=07`Mlng9R* diff --git a/examples/zips/kms.zip b/examples/zips/kms.zip index e9ee5b160d6b35af06ae9496df8a24dde4d363d8..a22357a61cca943cf8679549862f5af907c17d10 100644 GIT binary patch delta 780 zcmdnswZV%gz?+$civa|#+fC$AQFeW%nC=e5r4`%^j4Usi85mgVfs!C)B0!o0q%7E& z4W!KV*~XqbOib79CTB5gLq#^vW>#PX3GHRkhYC&p#PSFva*b6BrihJA7OY5>U4s}4 zCl|1r!L+Vnj|Xez<|;O+c@)P7ah3nY><+o0F4)8REam;e2O7y43h#mTivY_XiujO27bS+XI1a zW{|2}5gnM>^F=y9BATLlFh#MVPZ`1186>9M{RgyeF3>vB$@R)y2HNW3;VTO{5SISU9+oCB6RCfmxJA*q-m?}EhpDQ}I$3srDK;_XpDwpC8i8A+~5 z5n10o6rPom9g@nKN>)g`FG@B@yg+4SQ`RcmBgyfqI3V%zRFGAkQUUv!Q&k-R%wrZs delta 780 zcmdnswZV%gz?+$civa{)n@!|VQI5Q!m>vzpr4`%^j4Usi85mgVfs!C)B0!o0q%7E& z4Wumc#>SpIOiZuMCTB5gLq#^vW>#PX3GHRkhYC&p#PSFva*b6BrihJA7OY5>U4s}4 zCl|1r!L+Vnj|Xez<|;O+c@)P7ah3nY><+o0F4)8REam;e2O7y43h#mTivY_XiujO27bS+XI1a zW{|2}5gnM>^F=y9BATLlFh#MVPZ`1186>9M{RgyeF3>vB$@R)y2HNW3;VTO{5SISU9+oCB6RCfmxJA*q-m?}EhpDQ}I$3srDK;_XpDwpC8i8A+~5 z5n10o6rPom9g@nKN>)g`FG@B@yg+4SQ`RcmBgyfqI3V%zRFGAkQUUv!Q&k-R#Ml|P diff --git a/examples/zips/license_manager.zip b/examples/zips/license_manager.zip index dea8b4aa7240bb1ef3d1f76c58306698ce73024c..cb18b44e5911b7cf640cfd10a27369f2b3afafc4 100644 GIT binary patch delta 421 zcmcbsaaV&Uz?+$civa|#+fC##Po{S`tsB~LgKN$!QP4~S#Hzm>vzpr4`%^j4Usi85mgVfs!C)B0!o0q%7Wn z4Wumc#>AyZm|mMr&Svz73QRu0I0GaS#bgZ?**u$R3L{9!ki`k6sFGy@NQ9d;4knV% zdJH6D&K3<5nZb4vB$CW-2{ULBdmz}LuN;mrAsfzGu+VNUnAw||xu1fCUh#OtjI!ok z4l?QquN_Q8gKsZLo{S`tsB~LgKN$!QP4~Se)1A{I|ZkkDRM1DMcf)&Q`OD?3CV*l>_RljpI!!xX({FJ=M>C2+xv znmn6p4@e}E+my)_KZ37qP0;%KSaX}R*zv&awEIwL_anrpjen5LQEPYu-ptR5P4(c z;~-|Bz+`h4Q>e)1A{I|ZkkDRM1DMcf)&Q`OD?3CV*l>_RljpI!!xX({FJ=M>C2+xv znmn6p4@e}E+mtC1KZ37qP0;%KSaX}R*B&jHa`>yVF4*K7d3|om57Eif`m?s*+7LR^NJq?iChr3VRC&o wdB3DM2h2^AbtPONVzM9=lO+5wR4_`qBdN%g3_;@ElXOMmxk!0|coU@50b!a~$N&HU delta 252 zcmdmPy4{o~z?+$civa{)n@!}=V~f0@m>zv&qJuOOkRNLX=Zj8U#|9GG<^UFoys`0* zH9t^bvZa6}x}wQb1>B&jHa`>yVF4*K7d3|om57Eif`m?s*+7LR^NJq?iChr3VT!yl wdB3DM2h2^AbtPONVzM9=lO+5wR4_`qBdN%g3_;@ElXOMmxk!0|coU@50rW&z?f?J) diff --git a/examples/zips/log_analytics.zip b/examples/zips/log_analytics.zip index bb061e208a05eb4173f52a729c14ba4fc27af9ef..c97a85ac9efd8966272361c34e33cb70320cc3a9 100644 GIT binary patch delta 1159 zcmbO*g>k|ZMxFp~W)?065V&qPkw=fs^_gP2`?JY~ywXfSfmmy>fa|l3^Te2d0+UaR zYfiG|=MD|wWMD>7I$4a_4XSo?67w&x;y5-_RP!cpV{?ZoVrE|iR6ti4VEq8;w$$@c}|inIhjfDM!pwL)`9rKktYq~oGY zP_NmdDbkkkgDI+)2w(&`?V=>aaD;W1QgJXvbERTfL5hCMyP%nrq!0sBbVNZGY~5oe zFN7jd4pqg?7p)G1+%(PFhROBWWJfpg$-vkHiF~&9gowz3c(FF#X!0j* zLXhO`Y@N~M7uklQiAdP_An7>ZAv1ZQoi>`9w|2ouY7*_CI^eE4XOArJk|ZMxFp~W)?065O{4ikw=d$@`hr1^o_}dywXfSfmmy>K;(^$^Te2d0+UaR zYfiG|=MD|wWMD>7I$4a_4XSo?67w&x;y5-_RP!cpV{?ZoVrE|iR6ti4VEq8;w$$@c}|inIhjfDM!pwL)`9rKktYq~oGY zP_NmdDbkkkgDI+)2w(&`?V=>aaD;W1QgJXvbERTfL5hCMyP%nrq!0sBbVNZGY~5oe zFN7jd4pqg?7p)G1+%(PFhAHyKWJfpg$-vkHiF~&9gowz3c(FF#X!0j* zLXhO`Y@N~M7uklQiAdP_An7>ZAv1ZQoi>`9w|2ouY7*_CI^eE4XOArJ&7kr10U*d%)n9W+IK97Zrj$2fSHAtotL_EF;I zzv&av_H_6Hp-B7%UKZW8;J#CZND%Ic7^# zC6lX|eV}SKpJ86d2vStTYKW%j0;>&7kr10U*d%)n9W+IK97Zrj$2fSHAtotL_EF;I zEi$Z diff --git a/examples/zips/management_agent.zip b/examples/zips/management_agent.zip index 6d984054c3402394f95acae3d675136afc0eda37..b22d6beb4acb2914236bd8263e56e51cce694203 100644 GIT binary patch delta 250 zcmZ3cuuOp`z?+$civa|#+fC##WOIF{nC|{;vLL@O7c+|pP?!TGkq`)$aD6s$`(vi- zc9Z8Y20#Tie_||V1PP@xyTF7tGH0`bgycA_U_x=6Az)QoxL_tt=H`9~QuL179;#@v zG0y>z$X6bFCRdOXWI?=8-gqS5Ro*xxUIzv&vLL@O7c+|pP?!TGkq`)$h`cdz`(vip zW|QYI20#Tie_||V1PP@xyTF7tGH0`bgycA_U_x=6Az)QoxL_tt=H`9~QuL179;#@v zG0y>z$X6bFrbv(zWI?=8-gqS5Ro*xxUIAKzI98L$Q zzRjCB{nvzpr4`%^j4Usi85mgVfs!C)B0!o0q%6gb z4Wumc#>N#9jC`-n;v#juS#NW*GcZ`IPv#d;nH(U($;rvU3{kY%g-MN_>9yJ998L$Q zzRjCB{n1x4D7&uFp0zG1@Q# zRZMnZF@*_Lvji}LgwC=W!-Uw_>X|@7?HpE6p~=TN_Jc$^IIWmmpG{uCCC&k}eez>Y hH;9-lNQDm>zv&qMbAokRNRU1x4D7&kvBFoG1@Q# zRZMnZF@*_Lvji}LgwC=W!-Uw_>X|@7?HpE6p~=TN_Jc$^IIWl>Z%kgmCC&k}eez>Y hH;9-lNQDy{=r*?tOh}cd2rM*{&jKcN zoi7+{mX1IyOsHRg3oJBS&>1H5L{OU41A%X5JQdSydV1(@ahPz8$Q;!y=Y$;F@w^Jp$Ws;p0GPtMasU7T delta 511 zcmZp2Z*u1e@MdP=VgP~HW)pez*&=T!rbpkH=qSwuy{=r*?tOh}cd2rM*{&jKcN zoi7+{mX1IyOsHRg3oJBS&>1H5L{OU41A%X5JQdSydV1(@ahPz8$Q;!y=Y$;F@w^Jp$Ws;p004Eoz5oCK diff --git a/examples/zips/metering_computation.zip b/examples/zips/metering_computation.zip index f3b008f108b395f48681f58b6baef9a22c698e9a..2c4f2ba17415ade880bbdc9af45a548cd16a4d27 100644 GIT binary patch delta 566 zcmaE6@yvoJz?+$civa|#+fC##WpjO|nC|{;a-*0q7m`GZHIl?+e<2Pgpz1?TU_sYs zo4FW0n1LdbLs()k)lI(4k_=O5!>Z2+QkcsYghk;awn&&lNA^WbAcapk?O;NhT#;bC zE!LErf`$cJh0V4 zBF<2u$+Ja{fZUfT>dfQ{3NBd?@2IFJgeN|Ep9C97L|-fbNq&J?7Mi@acp;MfUhxDp zc{_=8G?8NxK1e!@CDCo1D~W6)pA=Lz+(p$=!ASbwOGTlXpCz4$Ch|r)5F#QxIY>qX E0JF-+=Kufz delta 566 zcmaE6@yvoJz?+$civa{)n@!{~WsAI_m>zv&a-*0q7m`GZHIl?+e<2Pgpz1?TV8O^6 zo4FW0n1LdbLs()k)lI(4k_=O5!>Z2+QkcsYghk;awn&&lNA^WbAcapk?O;NhT#;bC zE!LErf`$cJh0V4 zBF<2u$+Ja{fZUfT>dX`g3NBd?@2IFJgeN|Ep9C97L|-fbNq&J?7Mi@acp;MfUhxDp zc{_=8G?8NxK1e!@CDCo1D~W6)pA=Lz+(p$=!ASbwOGTlXpCz4$Ch|r)5F#QxIY>qX E0CX|RT>t<8 diff --git a/examples/zips/monitoring.zip b/examples/zips/monitoring.zip index 5da15aa330cb608e13025deffb01a0fc1a2cf2c9..0233ad9ad9e01a0bc175a6fdbb69f1db7181cf57 100644 GIT binary patch delta 382 zcmX@Cd03Mtz?+$civa|#+fC%rW^;X}nC|{;qOCL&kRN5N4B;!LmsW5yFtWU4W?*2c z2Py_>69Lj3AZ;6L!P;D(ZTwu$1k^VDTSIkjW@0(W3etL%(*!2;pEH0F zBoxSPN0e!sxP4$+S$OzaKw3owETKY^Lj?ANMFcIGT%S!25R?V+@&z3sJn>1wY#@P) qg5F5dwn7f5(({BoQ3W`JosiUL3;Uo--w=*M6$ln_2MNp(Q3n7HM|2PX delta 382 zcmX@Cd03Mtz?+$civa{)n@!}=W{bR`m>zv&qOCL&kRN5N4B;!LmsW5yFtWU4W?*2c z2Py_>69Lj3AZ;6L!P+8kZ2Vl#1k^VDTSIkjW@0(W3etL%(*!2;pEH0F zBoxSPN0e!sxP4$+S$OzaKw3owETKY^Lj?ANMFcIGB5zC%5R?V+@&z3sJn>1wY#@P) qg5F5dwn7f5(({BoQ3W`JosiUL3;Uo--w=*M6$ln_2MNp(Q3n7TWOa%F diff --git a/examples/zips/mysql.zip b/examples/zips/mysql.zip index 657d737ff94b358d331d01dc8891da0049c80fa7..3300d0162cab839d4bfb02e7f4534561b9e7093c 100644 GIT binary patch delta 439 zcmX?SbIyh*z?+$civa|#+fC$AV{?6`nC|{;@&;j14!Cfr6+&2=38-$9BUr%o*~Xvw zOhAFjHNuLMbYzkGp`5Utm3rI+c!vfX7$)z0jFh#pKE--@> z_3-G!gbwlqGlGP~_;g`Ho_vO^AfXyzJv5`v3d8N=5Lp1WZa4|9uP5EkcuQJe+(6uq->B>=u10esF*D6hNR+`v@a4bL&g?~cTC0_ ZL${JFvibG0Q1ij=c`WM$Qm-zj4gd%pkQo2~ delta 439 zcmX?SbIyh*z?+$civa{)n@!|VV~f0@m>zv&@&;j14!Cfr6+&2=38-$9BUm8v#>Sud zOhAFjHNuLMbYzkGp`5Utm3rI+c!vfX7$)z0jFh#pKE--@> z_3-G!gbwlqGlGP~_;g`Ho_vO^AfXyzJv5`v3d8N=5Lp1WZa4|9uP5EkcuQJe+(6uq->B>=u10esF*D6hNR+`v@a4bL&g?~cTC0_ ZL${JFvibG0Q1ij=c`WM$Qm-zj4gk2kk`Vv^ diff --git a/examples/zips/network_firewall.zip b/examples/zips/network_firewall.zip index 52ea60d61c86f182c90d1bf2154545a132981695..9add6fcc0da0ec4d20ed7f9ae6b9da4e5bbbe4c5 100644 GIT binary patch delta 678 zcmX?{dN`FQz?+$civa|#+fC##RCax)nC=e5r4`%^j4Usi85mgVfs!c75}fcU69Fpc z0GW2wlMQ5=>$A-wjIqp2*X<@3vsl4|HnT)9f`oY4?4d%FgV>IOL?qcgi7|e1D|;za z=O&Iiuvrb9WiaFaaK2^&8TOK=7$%g&D-3o-xj;Tl=#9W3u*MBSRWKm~;p1S9KSi@) zLRn&-V4_-y$cn9yDM7hvO$D;B|o?3Gl&W~HhWz=UqA zJOHcOs|FV`Rxbk!t=6z-a(y=WgPu4CERH5~YX(5XWI_I`(F{l8ebMwl;>BwDV(31t zg{HRJ7KwL8w*!e+s#l4`vzpr4`%^j4Usi85mgVfs!c75}fcU69Fpc z0GW2wlMQ5AIOL?qcgi7|e1D|;za z=O&Iiuvrb9WiaFaaK2^&8TOK=7$%g&D-3o-xj;Tl=#9W3u*MBSRWKm~;p1S9KSi@) zLRn&-V4_-y$cn9yDM7hvO$D;B|o?3Gl&W~HhWz=UqA zJOHcOs|FV`Rxbk!t=6z-io7xTgPu4CERH5~YX(5XWI_I`(F{l8ebMwl;>BwDV(31t zg{HRJ7KwL8w*!e+s#l4`zv&asrYC<$K_yrk$Fwq*82vIXbV!Xy6ArbeUKIiFj)_vHA-~Q+S z{Lkgx<*Vw;SJj4Ek7lu6rTiqFVMAe-Je$|znq}S6ilvCzsNEXwdNBPblQHSs)9^yz zAysmbN;R!v6#*&SrDy&=y-ugnC>HYUg@689q)s~7ZS_{DlxGtTO+urfKeMV3m1+ZO z1x@Lmoae6)Nxun2KK&%rX^kla`Amwa#aN4?&x|(~D=3~*kLXU0Co5%cWsXR;p{Q;r zkC%2BmSmLQmJE>PjyV-CE%I5mqv)dLQ+TFrY+De8Y^BirSNQ^&3xeSO zexWG*uh0d^wN9ww>+%6zSziWT=?rPBC0OmjZUY_O-qz9&NNur+QA31GfdGUyHLGPt^vzSt|DTob*JLa zy<6%24dyeYv$AVZLnh1MX0e#$=1FL!+gnO3fAETaAA8oLhP#AghF|QwUt(QxVExo!#o>>+&d`# zX;dHj9p<4mDg#}X@w<)$y!gtmff8tURgar^hI(31bgw6nT4wJ?wXFRA%VASY4`<(7 zh2+%%Amx1?LO$r*O^B`Ei-h|WN6qX~e*seNb-!PDaozr)AY79S?jcpX4(~-W&;9OU z>RuJvL3E#lL@w@LaKwiiPR<@_B4qW^MnXmw5GhQnqG3_RQ!XEc zG8@q~vF%8>Zkj!fgy&v+Ot^DR*@&4Xj@gNBX`~ei*9}CTLBhT6M(U7oP5a;`BwTZS zP+SJr6h~#EiAL!LvSV(d>4?$ZevY|_W=s4zLcWYwBH^#wj?*qe$7vVYF*AGg#2T#R zoxF0Q0SWg~CZ`#qldB)1JN|Y^?2mhSPYN$it}P()Fs=GxSX7AwwU~+fd^plf$eK~Q z$&W{!M6+Uy?&R$;F$H(lC!6B F{|7@VtM~u_ delta 2425 zcmZvcYiyHc6vs;oEA46(HZ*zLCJwOO9580ODqGpyrM9C8t1w)*m1#80!OV=#h||Ir zo6K#c*gbS@VeHCfUJ?QoH6fZA{DKTWnCKdo2vHM5X1vBAArbeUKIiFj)_vHA-~Q+S z{Lkgxr7OxySCqOsw`#doA^*(V!n(pNZ!)j7Dam@IH7gObF{?S;eSi8-2K~HkulM=D z1B%&Y3dM|yRR*MRx0d<)wHl2=C0lrt=l}U@nR4F7ZYiIJN^de@S0z+3`ZKEqh zl+m>2@kRbJk+fS;x$}k z^LS~85y^q_Tapg4+%~4-rA0o|P83}*eFo38uib%YdTkdVyJb6~kfjuw|2khFV?hwy zKPVK1{}nm`IX4Mad{aK4%bUxEDvF~cu*&M&dzFY|bUZbIoqt=RybV(qX;?2u{?>oQnbsJW&@qn}-%TIsWiT7WffsWqj6i1Tmd=QT0 zk2g0j8U$FKj``MQsT7K84XcwR*4DL(4<^ywl?Rib^l#ya{pkNfzO{)%wna8FxqC?b z)2KQ8JIq6^mj}8k<98hic<_~910~Szx?UIY4E466=x%QywamUPO0WF?FNaMtEu4K{ zHIi2bfmHOn3Hh+Ui4e)wFy;<^JtLAYi%xR+GzIkFGQBKJE- zsC#v27twth61lj0!BHP-I5~T?nUMAGH4-wqgh*jp6%C6jo^thIE%AAKP)v?%=K72* zmsyCene9Zvbu;WqBs}-VW5S(l%0`VWam-3|DHra0;#nrM`6AUozFn$8&Q?dO=2Xtu|nCFHAk6%zisd0xFusZh@vIn%y3zW&wKvNX=v+E`6AgJ68}RNN6^< z4w}AK+{Q3P$~>#U`p)y2K!qlA^6v#{JHczv&vOkL`2V6MR2q7%Z1XQ=m5-bpTW8+Ir zW}v`i5f)QaC6jYlY@lj3uVV>d0xFusZh@vIn%y3zW&wKvNX=v+E`6AgJ68}RNN6^< z4w}AK+{Q3P$~>#U`p)y2K!qlA^6v#{JHcE>-Z$Y(bTj_dO<{lCqI=G0RVU=sgVEx delta 496 zcmexq{L`2xz?+$civa{)n@!}=V~f0@m>zv&@E>-Z$Y(bTj_dO<{lCqI=G0RWl4tFr(A diff --git a/examples/zips/object_storage.zip b/examples/zips/object_storage.zip index 94b3b214c86897785e87ac5489f66f9d12202a47..cef3d36587bf864260930d66abacb3424472b383 100644 GIT binary patch delta 716 zcmX>cb2x@4z?+$civa|#+fC%rXLEg~nC|{;qN6kukRN9c=DR-IxOfR8P++nrlND5C zb0^bQu#f|b15BumJmPj~Q=(DIhSQX4ClVimKQ4N|T?guj` zM7)d{Wb_#+Q&deV(l#(PY0|M^Hy)LR+r=z*2W;0vd0Uv#Dhew=2AxxY1PR=BL&YGN zL7j@;5YH;ZbxEom0_nP|V$0Wjo%sp^5m6H@bo@WeS_Q8&3!Efz_| zf3;F1-ccb2x@4z?+$civa{)n@!}=XN$a{m>zv&qN6kukRN9c=11PxxOfR8P++nrlND5C zb0^bQu#f|b15BumJmPj~Q=(DIhSQX4ClVimKQ4N|T?guj` zM7)d{Wb_#+Q&deV(l#(PY0|M^Hy)LR+r=z*2W;0vd0Uv#Dhew=2AxxY1PR=BL&YGN zL7j@;5YH;ZbxEom0_nP|V#^eHW3r-_EQn{V>Wjo%sp^5m6H@bo@WeS_Q8&3!Efz_| zf3;F1-c`iX$3a}Bg;!>1_qXTpd?6{2$1FgDGSkK z11WQTwy`6Ck?FeK1_qXTpd?6{2$1FgDGSkK z11XEVv9Tk7k?FPBY{4y+tZK-Fgg!Gf;O zHY+n0Fakv;Pi6AJR5yv)AEqvpxeToCEK3xoy2)Owi7Et50ZqhWeavB!Wd(crX%38iy}f`#^R`CzeEmpd4yu#Gzg!`_Ab z`jh2(g|KK0;SGUlT*q4jwn2yA4U595{Jt=SFZczRKtc6O&<-jz*-q#nNQ6;12#eM- z;YgU)tHMcOJ1j-*m|Q_oBn#3uLo@=y6Q3l`1`-eyi${{4C>Dk)%^@C(B;6*Sfhx@} zk&h%jUm^)rT1he!RbY*zJCb@4sVG$GeyKzxX+h~|ROw!6sQF;82*`w>O1H|Osb`e+ WK{75+HUU-rd)ah|fbisOIS~LZv;h(T delta 736 zcmexw^WTOiz?+$civa{)n@!{~V2iw=m>zv&@<(Z5E+mO~FC>Y{4y+tZK-Fgg!Ge)D zHY+n0Fakv;Pi6AJR5yv)AEqvpxeToCEK3xoy2)Owi7Et50ZqhWeavB!Wd(crX%38iy}f`#^R`CzeEmpd4yu#Gzg!`_Ab z`jh2(g|KK0;SGUlT*q4jwn2yA4U595{Jt=SFZczRKtc6O&<-jz*-q#nNQ6;12#eM- z;YgU)tHMcOJ1j-*m?A+@Bn#3uLo@=y6Q3l`1`-eyi${{4C>Dk)%^@C(B;6*Sfhx@} zk&h%jUm^)rT1he!RbY*zJCb@4sVG$GeyKzxX+h~|ROw!6sQF;82*`w>O1H|Osb`e+ WK{75+HUU-rd)ah|fbisOIS~Mtt^_au diff --git a/examples/zips/opa.zip b/examples/zips/opa.zip index 051ab5813f140a37f69a65142a496e803d2a6ee6..b8192c62a71eb0ed42bbdddb53da1f8813652036 100644 GIT binary patch delta 163 zcmZ3^yPTINz?+$civa|#+fC$AQFeW%nC=e5r4`%^j4Usi85mgVfs!C)B0!o0q%2sM z4W!KV*~Yd2MyBg_lW#C;Lq#@oG8r?0gzQ+1phA<&SoVTMOj(VXT%S#rXOji-I#{id Scu!a@k$84&4j^6wn>qklaxjDd delta 163 zcmZ3^yPTINz?+$civa{)n@!|VQI5Q!m>vzpr4`%^j4Usi85mgVfs!C)B0!o0q%2sM z4Wumc#>Tb)MyA(hlW#C;Lq#@oG8r?0gzQ+1phA<&SoVTMOj(VXB5zEVXOji-I#{id Scu!a@k$84&4j^6wn>qlAIx#E& diff --git a/examples/zips/opensearch.zip b/examples/zips/opensearch.zip index 7a710cf07b8c4ade6e71c7ad7803069cac993393..e94e9c5e4925a2641877aa87ff75d7b11b87890b 100644 GIT binary patch delta 189 zcmdlgvQ>m9z?+$civa|#+fC%rW^;X}nC|{;qOCL&kRN3N=DR-II3i zvO3cNkjP6WI}|;Wy_j90N;Xerp1=Z9qt0Q;m9z?+$civa{)n@!}=W{bR`m>zv&qOCL&kRN3N=11PxI3i zvO3cNkjP6WI}|;Wy_j90N;Xerp1=Z9qt0Q;6nSH^E~hw$2+$%9pjDF_Ih-)Wo^ZHB W#AHFbd^mkDRP5vo28r=;sRID}x;s?> diff --git a/examples/zips/operator_access_control.zip b/examples/zips/operator_access_control.zip index 9e80cc19478ec967bee4e6d63b47cedc53f7958d..976e6224c38e5e2c5461a25e67d2afa50013589a 100644 GIT binary patch delta 440 zcmbPWHo=T1z?+$civa|#+fC%LU~_$@nC|{;vLL7E#CSF)pjf&GLQEPYa48Bb;QDN{ z5#u^WpvdG$Od+UhCPy+C!4zF&e#rt-w1>kVO_3gF229Z$P6x0__qg2A6nSt*z!WXx z{tQ+$o7WL0^oTbBEabxPiKcG@e+*2KkU$hO$OU=AZcw4gyM&K}M4Cn1m|UMtE|io7 z@m`69fq0A%UZQ9QvYcoVl3cD>1Ckt{cr21!k9Zl9oU%kHlH5#*G$fvaq(73%36kMR WavV}wNW95XAt0V0r|{%IQX&A)44P*E delta 440 zcmbPWHo=T1z?+$civa{)n@!}gV2iw=m>zv&vLL7E#CSF)pjf&GLQEPYa48Bb5P4&> z5#u^WpvdG$Od+UhCPy+C!4zF&e#rt-w1>kVO_3gF229Z$P6x0__qg2A6nSt*z!WXx z{tQ+$o7WL0^oTbBEabxPiKcG@e+*2KkU$hO$OU=AZcw4gyM&K}M4Cn1m?CdXE|io7 z@m`69fq0A%UZQ9QvYcoVl3cD>1Ckt{cr21!k9Zl9oU%kHlH5#*G$fvaq(73%36kMR WavV}wNW95XAt0V0r|{%IQX&AR1e}Qg diff --git a/examples/zips/opsi.zip b/examples/zips/opsi.zip index 6019cc30dd89bfd6db2afc63b1a322e107c59a09..31abc2e1876224e452f6366585cbbc7cad682d01 100644 GIT binary patch delta 1831 zcmZXTNla5w7=@uwkcP5>GDtxIfdvIx0S#zcrEQ9|XsM-u%wR2u(w0)D4iw7lh?j+l zB&Kml#Ds-}g@ib4+!&)FQ5I;#Xc}~3j8UTt2i~Rk_2##`d(L;x`~Um;R%bb@vz%zH zIxL(Q!u-~xGtrq5N`IP3hQ<&3=rE>d}fIK$l`$lZZ-C96j>29TbflUYeNm~o$^LiB2$=q`a z&_8;nDc@&r27Y?4oAMv`Lcg?+_TTlHK)$2@JW%2Xs;NeqTZrZdPnJ36v{8)OD@1>t67ZZ#R|mzcy8?6I_at*S0s5iaMbQmIjlh3B z&>{QF*de);GL;6E7kQu)@g8sM*w4N<;h z`~dLR#x+1uOeldeKXH)ih@6xG-!vJR8sF;6NdxdTQ}EU{rw%jBj5roar{n$scBtOk delta 1831 zcmZXTTTGH+9L5zzlYuviheS(Fz3>EiXj+33nkHCCh>~ZG&@2G~PY9xTKs(y&MO$u- zb=b1ai<}oZ*Wsp{)@p7Qo3(6pVYRi^s?|jYzgOOmcmKG1pXc{H-~a!9e5h~R9BT6s`RVua;(Ea?4<>7l~#O$C*5cLx~~ zL>IVaL6u3OZ(J>j9*$@VW2A*B1%QOSqXg>aFb$d!wR7e=R8fMpH%!Jj&W&~IbDEykhLLG@p3@s(=0VGLrk*1}TOboqFJ4B?M zbUWVRT4puK#bgVh{VA*`P;=2O4Dm{ef)IPZZ6$Ex7bPYVRhFjXVa!r>Fp4LBCp}Fdova>1i}Lb- zbVuRBPjr{-Kl005 zDD#KQ(W*e{6|J3=#?_q1Oa*~*G;dmA7VaSVH= z0Q3*rH0As3Ex=Ffby5DqUg($g(f->$Bgl95p9Mjl!1s+#QNGes1^l}ndVcxXG2q`D^HBM=@jBqIjSo}4 zV`4AxUrwliqL@4gl=;bhR7a#&27IG8Fg3o_=UyG~Ra5ZRHl_|R%#1h&NvC7~0YCHS AH~;_u diff --git a/examples/zips/optimizer.zip b/examples/zips/optimizer.zip index 92350a9f38b846ea7dea3c8a41ab223f36d10bd6..aea0cb3ec88e4a1ec9a8e4e77be68c2c8288d15f 100644 GIT binary patch delta 212 zcmZ21v{;BIz?+$civa|#+fC%rVsm|_nC|{;qKz~YkRNFb=DR-II4Ot`C@}dMqajpe zvn*3J3rJ`dn*~&8@(s5AAd#8u7K$KaN-MY-7+GF2Gcd5!1I-WcW@M6M76Gz2fObv( Z#O_Fhst^u)B2;bRaAR_PHu(>SIsgT3Ih6na delta 212 zcmZ21v{;BIz?+$civa{)n@!}=VvD??m>zv&qKz~YkRNFb=11PxI4Ot`C@}dMqajpe zvn*3J3rJ`dn*~&8@(s5AAd#8u7K$KaN-MY-7+GF2Gcd5!1I-WcW@M6M76Gz2fObv( Z#O_Fhst^u)B2;bRaAS(RG5HUNIsjNMIz0dY diff --git a/examples/zips/oracle_cloud_vmware_solution.zip b/examples/zips/oracle_cloud_vmware_solution.zip index 4ef6ae9b48c887ab513ee694fca16669f36c80ed..a6f47498c97645f10619054f61a33b8a989746d2 100644 GIT binary patch delta 140 zcmeB{@0RBY@MdP=VgP~bb`yDQ*<7C~rn^6z=r7F#zv&qK`Bake}%c=11PxxG9DaC@@)o$q_2D zIh^Se6G+IL)dMOtc_!;okVpcX2UFyY$ujJ+Al^x~KqQ_uyFU_dHG3F{$IPJ)0Nhh($ diff --git a/examples/zips/oracle_digital_assistant.zip b/examples/zips/oracle_digital_assistant.zip index eaa9a21a398f9089160bbf24f634cb060087fc2d..7f0ca83050bcf632daa1e91ea42cd0a0025a8da5 100644 GIT binary patch delta 181 zcmca7eoveyz?+$civa|#+fC%LWOIF{nC|{;vLmBFi}4nOs38%Ysee3P9r3bNM0h T-f;yY@e;U0Aw1#9r?^D`hpRot delta 181 zcmca7eoveyz?+$civa{)n@!}gWQ)9^m>zv&vLmBFi}4nIb_Z%Ysee3P9r3bNM0h T-f;yY@e;U0Aw1#9r?^D`(fK}@ diff --git a/examples/zips/os_management_hub.zip b/examples/zips/os_management_hub.zip index 86ad70128894ce1e6a7294a3284f1eb74d7bc5b1..cf9d68a5e3061b5ce9830404bc7341e24f5cfc8b 100644 GIT binary patch delta 811 zcmexX`K^*Cz?+$civa|#+fC##Vsm|_nC|{;@mP$CF>En=ehban` zOl1YRV2_+9nj#JP0GOgW`TbzS?NuNqxjviRs&WXV%~RC^P1_PxdziMDs(YD0idJaY zp(*0jgak7%R6{i5z^>e)<%Fh4QXAqVprQzv&@mP$CF>En=ehban` zOl1YRV2_+9nj#JP0GOgW`TbzS?NuNqMc$a)s&WXV%~RC^P1_PxdziMDs(YD0idJaY zp(*0jgak7%R6{i5z^>e)<%Fh4QXAqVprQ zFrmAg7ui9s*&qlp4#m-v)r6v83fqLvKwYCTxnEA6J2Zroff?1Cyw~mGB7c`(ie16T zz@R<(KZ`6-r3NQdo$IsBGNOmUW;_&w1P0VH194CYO|}xZhgvqdUfdKUvQ69?Ch}c; zKS*SUgf){ZC|qShJP}D35KmDa%&U})M3Va~nSdmBPgZ8~1SvZt`S((ZNb-f!(MWP{ zrIV0&1u{-ZDlf}`^+8<_Dw}~McTYA7NnfNKvJJQ8klpGa?~9~zoxCT6Cp?))K?DGf C*wO+3 delta 593 zcmZ4Bu)u*Qz?+$civa{)n@!}=WsAI_m>zv&a-fXxN>zj6i|O zZy3EXl}(Of3WBQJyou=|SYa!R4;F=ASb|{+eOcFl75--P#iB5qJp`ukDEl3-!o{2> zFrmAg7ui9s*&qlp4#m-v)r6v83fqLvKwYCTxnEA6J2Zroff?1CysypTB7c`(ie16T zz@R<(KZ`6-r3NQdUF40;GNOmUW;_&w1P0VH194CYO|}xZhgvqdUfdKUvQ69?Ch}c; zKS*SUgf&wnC|qShJP}D35KmDa%&U})M3Va~nSdmBPgZ8~1SvZt`S((ZNb-f!(MWP{ zrIV0&1u{-ZDlf}`^+8<_Dw}~McTYA7NnfNKvJJQ8klpGa?~9~zoxCT6Cp?))K?DGb CxzwTn diff --git a/examples/zips/osp_gateway.zip b/examples/zips/osp_gateway.zip index 636867788f15cd8a6e218cc5a33eb4008e098ba1..1d0b1d0f42d864641f2c293ac87ddbbedcdfc719 100644 GIT binary patch delta 362 zcmca2eMOolz?+$civa|#+fC%rVRL<^nC|{;aw3~32V6MX5+N+j1XQ=(0W9G9Y~$a2 zMxemtJSJ19$mW$yp&+42EGDR$CWo_F!_>@R>4m6KpX|rRi>9uQ4X$oKTOJe0czsSQ zsMg8(oQFUn##~lRt{`U$PgdYzncT<21`_S#az}`AfkeJ>`JsuVayuhL;5tuoJ0V2D jI(2wF5h6(HWF~LoQA5ap)&4|Q3l>S{^?<24z$*d(gWPs~ delta 362 zcmca2eMOolz?+$civa{)n@!}=VT-(>m>zv&aw3~32V6MX5+N+j1XQ=(0W1)CW8>d^ zMxemtJSJ19$mW$yp&+42EGDR$CWo_F!_>@R>4m6KpX|rRi>9uQ4X$oKTOJe0czsSQ zsMg8(oQFUn##~lRksxOZPgdYzncT<21`_S#az}`AfkeJ>`JsuVayuhL;5tuoJ0V2D jI(2wF5h6(HWF~LoQA5ap)&4|Q3l>S{^?<24z$*d(qJ4Mw diff --git a/examples/zips/osub_billing_schedule.zip b/examples/zips/osub_billing_schedule.zip index 082fdd7733e60236fd13eea83d483bc3e50d5c46..d4ef976c99b0edf9e9ce0ccd35eea791cefb948b 100644 GIT binary patch delta 179 zcmZ3%yMmV|z?+$civa|#+fC##V{?6`nC|{;awD5C7c+|pP?!TGk!lZ?aDBFMRRSZ^ zb-T$tOtw&w&HhYXV4>U0E>NM#sw~Grir%rfFu8)w;$dWxV}_YFIhfTKtN1}yZ>-|F JY(WrlbpYf0F+%_V delta 179 zcmZ3%yMmV|z?+$civa{)n@!{~V~f0@m>zv&awD5C7c+|pP?!TGk!lZ?h`h0JRRSZ^ zYqQBbOtw&w&HhYXV4>U0E>NM#sw~Grir%rfFhzpR;$dWxV}_YFIhfTKtN1}yZ>-|F JY(WrlbpRpyG3x*T diff --git a/examples/zips/osub_organization_subscription.zip b/examples/zips/osub_organization_subscription.zip index e713616e48ecbe0a11e219cbca2bf3dd86be6f84..67e3643869f57a46c69168a3d6f5444a97da4cf2 100644 GIT binary patch delta 152 zcmcc1dzY6dz?+$civa|#+fC%LXLEg~nC|{;VxTk=ke}xP=DR-IxF?AbC@@)p$qg#9 zIftnPEcA%k7b-N_l;s3S(SH_SCRd;l!jpa3xIhBAtYN4EPgp}x1tQs^p#mq_L;!pc BG}r(D delta 152 zcmcc1dzY6dz?+$civa{)n@!}gXN$a{m>zv&VxTk=ke}xP=11PxxF?AbC@@)p$qg#9 zIftnPEcA%k7b-N_l;s3S(SH_SrbwU>!jpa3xIhBAtYN4EPgp}x1tQs^p#mq_L;$c% BHGlvB diff --git a/examples/zips/osub_subscription.zip b/examples/zips/osub_subscription.zip index 2bb1a7c41aa8b1e20f6efcd773545b8fba663f2c..69e811330d757f2d6a8cda95d0410e5783f37899 100644 GIT binary patch delta 163 zcmZqXYv$t#@MdP=VgP~bb`yDwlwF@Grn>`iX$3a}Bg;!>1_qXTpd?6{2$1FgDND3w z11WQTwsBE7Bhz)e$-fybp(2~Dn8cVsLP0DJP@%~)SoVWNB3T`nT%S$OWs?Q*cCmUQ S@l@E{k$639ejwf*Hgy1*|1x<1 delta 163 zcmZqXYv$t#@MdP=VgP~HW)pdglp}8_rbh#DX$3a}Bg;!>1_qXTpd?6{2$1FgDND3w z11XEVv2js2BhzcM$-fybp(2~Dn8cVsLP0DJP@%~)SoVWNB3T`nB5zF2Ws?Q*cCmUQ S@l@E{k$639ejwf*Hgy2W$1@=S diff --git a/examples/zips/osub_usage.zip b/examples/zips/osub_usage.zip index 12e44d45fd166fe6eb25398c60f235257d00cc02..69dbb8ade65294f3d58819239f6861966186acdf 100644 GIT binary patch delta 212 zcmcc0dzF_bz?+$civa|#+fC%rW^;X}nC|{;qOCL&kRN3N=DR-II3=7BC@}dgqY+eO zvnrE36G+I7#S$tsxs~MrNW`7hQW0cKX$3a}Bg;!>1_qXTp!osbj7)OOB0v@g(5}e~ ZS)GVb#lq%5gsN0FcP7_olh?7S0|0qOH*Ej_ delta 212 zcmcc0dzF_bz?+$civa{)n@!}=W{bR`m>zv&qOCL&kRN3N=11PxI3=7BC@}dgqY+eO zvnrE36G+I7#S$tsxs~MrNW`7hQW0cKX$3a}Bg;!>1_qXTp!osbj7)OOB0v@g(5}e~ ZS)GVb#lq%5gsN0Fcc#c2lh?7S0|3khI28Z@ diff --git a/examples/zips/pic.zip b/examples/zips/pic.zip index 9078f6403ef718b1a94dd090f7a23347361235ea..7c944735809bcab49c68410af772c567cf6e64d2 100644 GIT binary patch delta 622 zcmX?Ncf^h-z?+$civa|#+fC$AVRL<^nC|{;@m>zv&@P5=M^ diff --git a/examples/zips/psql.zip b/examples/zips/psql.zip index a37d4df6d344247ac4e45d93f5b2536fac1114e8..f383397e085d55e940b6e15360e4eac10e59500e 100644 GIT binary patch delta 274 zcmew-^-qc?z?+$civa|#+fC$ARd#)*nC=e5r4`%^j4Usi85mgVfs!C)B0!o0q%1^_ z4W!KV*~X3{MyBg_lm9U4Kt(p|F@0nP2`RD}Lxmvzpr4`%^j4Usi85mgVfs!C)B0!o0q%1^_ z4Wumc#>S2!MyA(hlm9U4Kt(p|F@0nP2`RD}LxmvdR~+#z?+$civa|#+fC$AQ+9o(nC=e5r4`%^j4Usi85mgVfs!C)B0!o0q%72s z4W!KV*~Fd(rt5Z-`55(~0-K!~gBU?V)0vE5Lg$(Cz(V#cx-g+47FA}Ds+sI2P@&0} w+4qA)rf`@rxjvhGibEE}d&yys#Pj5|MdB^zbU@;9a9JbqQn;KzycJyP05=Oub^rhX delta 228 zcmX>vdR~+#z?+$civa{)n@!|VQ;xi$m>vzpr4`%^j4Usi85mgVfs!C)B0!o0q%72s z4Wumc#>Acmrq^bZ`55(~0-K!~gBU?V)0vE5Lg$(Cz(V#cx-g+47FA}Ds+sI2P@&0} w+4qA)rf`@rMc$ZvibEE}d&yys#Pj5|MdB^zbU@;9a9JbqQn;KzycJyP0G<;}asU7T diff --git a/examples/zips/recovery.zip b/examples/zips/recovery.zip index 7f8460eb3582cbc75d725a786f42983187f91bca..2a0f4d4a3e6f787a93c06bc03fbeb50c15a0cb24 100644 GIT binary patch delta 301 zcmeBG>Q&+i@MdP=VgP~bb`yCt*<7C~rn^6zXf4eI&H$>iP4&QLX*Sy%#@L5jlJ9nlrBd%zTNa;yiNw2R9KCiICbm=UDUoyQz1 zG`WT6AXtRgoXPdsQ&+i@MdP=VgP~HW)pcd*&=T!rbpkHXf4eI&H$>iP4&QLX*Sy%#@L5jlJ9nlrBd%zTNa;yiNw2R9KCiICbm=UDUoyQz1 zG`WT6AXtRgoGJ3g_5c6? diff --git a/examples/zips/redis.zip b/examples/zips/redis.zip index 2de7dfcb3b37fd7ba217166cc040a2246d7a0e88..2c5fc5f849a95b1de50bb3ddfa5e42d3a021a18e 100644 GIT binary patch delta 182 zcmaDT^iYT=z?+$civa|#+fC$AV{?6`nC|{;V!tQ{Tr|`KE-K9gRJFz$%y)gZ@hvk8 zP+;;W7JaD5W_8veMvzc78$^@qv&mc8_Jc&q*iD##Jbn&wxXF`GvpYe=WI-zQI6RSf QGdOIKc;7g{Dy=xx0o~F%_y7O^ delta 182 zcmaDT^iYT=z?+$civa{)n@!|VV~f0@m>zv&V!tQ{Tr|`KE-K9gRJFz$%#XaW@hvk8 zP+;;W7JaD5W_8veMvzc78$?s&jmcZt_Jc&q*iD##Jbn&wxXF`GvpYe=WI-zQI6RSf QGdOIKc;7g{Dy=xx0Vkh3$^ZZW diff --git a/examples/zips/resourcemanager.zip b/examples/zips/resourcemanager.zip index 34d88a0e480d7fcf96ca75a970f71d4eb0a50d0e..098934b284f08c23c648deedd874b03285686a15 100644 GIT binary patch delta 284 zcmZ2#ywsQ{z?+$civa|#+fC##U~_$@nC|{;vY@0e7c+|pP?!TG5$_I`aDBFM&0!X% z>voe1S-qeln-8)wvVnw-a9hHJn0Y)IK|+4K&M=|ryi=J#LV5xLFrgNKc(AIcg62@6 z#Y#fVAVn&oc2JSY8KOHuBFbWROs*hj$%1%IVxdU9A7T+myh3qzB;HN&KqQ{GL>vzv&vY@0e7c+|pP?!TG5$_I`h`h0J&0!X% z*JhIoS-qeln-8)wvVnw-a9hHJn0Y)IK|+4K&M=|ryi=J#LV5xLFrgNKc(AIcg62@6 z#Y#fVAVn&oc2JSY8KOHuBFbWROpzdG$%1%IVxdU9A7T+myh3qzB;HN&KqQ{GL>v`iX$3a}Bg;!>1_qXTpd?6{2$1FgDNC|p z11WQTwsA=WBhz)e$^RIwpdy>?n3$PCLe8v?P@&0Ptj9niL2QmpuFod1%Yryt*t`%N Sd3Fy3r-R)e$eDbTT^#`PgfR&K delta 160 zcmZn=Xb|8D@MdP=VgP~HW)pdgl_PH`rbh#DX$3a}Bg;!>1_qXTpd?6{2$1FgDNC|p z11XEVv2jTRBhzcM$^RIwpdy>?n3$PCLe8v?P@&0Ptj9niL2QmpkvAr>%Yryt*t`%N Sd3Fy3r-R)e$eDbTT^#@+&oQw8 diff --git a/examples/zips/serviceManagerProxy.zip b/examples/zips/serviceManagerProxy.zip index 219e5483278711ab5f895954b10b97ee3266a2a1..598595c0249a35d13aa2635511967085dca2ef13 100644 GIT binary patch delta 163 zcmbQuJDZm$z?+$civa|#+fC##QFeW%nC=e5r4`%^j4Usi85mgVfs!C)B0!o0q%7H% z4W!KV*~Vodj7-<$Azatg;}U534s4 SZwIR<5>JUO0K_X{QwIR>S2BVC delta 163 zcmbQuJDZm$z?+$civa{)n@!{~QI5Q!m>vzpr4`%^j4Usi85mgVfs!C)B0!o0q%7H% z4Wumc#>QnKj7+c1CjViyhKg*qWm*6hy3gzc6`HKhasZ_0C5sbNJUO0K_X{QwIPbE;A|s diff --git a/examples/zips/service_catalog.zip b/examples/zips/service_catalog.zip index 18d7fffb1953c826bd47bd4fb8f4d24674b3a48c..05c0337412006d076ba6c9af5de3c932341515d1 100644 GIT binary patch delta 295 zcmeB^>yzUN@MdP=VgP~bb`yCFlwF@Grn>`iX$3a}Bg;!>1_qXTpd?6{2$1FgDT{Yv z11WQTwsCnVBhz)e$^RJrpdy=tn8Lt9tC-`=FjeWS!C;|1Z00bbpKR7( zAu|p)m{1c3D-+20PA)sB(B!jRdqE;S+;&W^&nD03l?Cx$a|a;tVt8VZcsEgaVZ820 Xa{G8)k$5V6AxONLd_ExFb3Szdr!!?1 delta 295 zcmeB^>yzUN@MdP=VgP~HW)pb~lp}8_rbh#DX$3a}Bg;!>1_qXTpd?6{2$1FgDT{Yv z11XEVv2l4QBhzcM$^RJrpdy=tn8Lt9tC-`=FjeWS!C;|1Z00bbpKR7( zAu|p)m{1c3D-+20PA)sB(B!jRdqE;S+;&WnHzv>Ll?Cx$a|a;tVt8VZcsEgaVZ820 Xa{G8)k$5V6AxONLd_ExFb3SzdTY6?@ diff --git a/examples/zips/service_connector_hub.zip b/examples/zips/service_connector_hub.zip index da633f468bd855565cdce7031bd8f5aa964bcdeb..301c0e5a2d8824846e3c9a9eba912b169802f765 100644 GIT binary patch delta 153 zcmX>tc3O-lz?+$civa|#+fC##V{?6`nC|{;@0 z>vogbnQWmVo4uIK*g!%}94=6y$!9nYgG45Bx-hwd%#sE1zH#~@@lv?Fk$4xlf*?HM I$>!W509L~@M*si- delta 153 zcmX>tc3O-lz?+$civa{)n@!{~V~f0@m>zv&@0 z*JhL1nQWmVo4uIK*g!%}94=6y$!9nYgG45Bx-dn8%#sE1zH#~@@lv?Fk$4xlf*?HM I$>!W50EgQ%?*IS* diff --git a/examples/zips/service_mesh.zip b/examples/zips/service_mesh.zip index 54f48a0c92e02add317fb282bb77b77386fc83fe..56ef3ce4948742a373519ff3d315b0782b8ea26b 100644 GIT binary patch delta 483 zcmccPe#f0Bz?+$civa|#+fC%rWpjO|nC|{;a-*U!7c+|pP?!TG5n}_EaD6s$o(~g{ z|Hc-|->lDQ$pjRcoW*Pp6I##wm=Pp2h1CfrbcfX%tV)u@5-Kz~f};tf=ne;5pCYFs zGf2pV#|);gfhQPj)Ky-%J`uh~kfP~)E-*z8`PQ+4geHobz=TeV#)9=}iCe?$%NE}Y zQlur}4O3Jt;SYAy87Y|1WJONl%?8pt!NRX)t(jawAt4LW=Pu`k#M>n2jl`3a_eJ9M z$Ojr-}@lq9#RbEzbL6WmjL{_;#F$hUcSjh>ASEl5N#CxC=iNuRihVq0bpHLP7 E0H0y4_W%F@ delta 483 zcmccPe#f0Bz?+$civa{)n@!}=WsAI_m>zv&a-*U!7c+|pP?!TG5n}_Eh`cdzo(~g{ z|Hc-|->lDQ$pjRcoW*Pp6I##wm=Pp2h1CfrbcfX%tV)u@5-Kz~f};tf=ne;5pCYFs zGf2pV#|);gfhQPj)Ky-%J`uh~kfP~)E-*z8`PQ+4geHobz=TeV#)9=}iCe?$%NE}Y zQlur}4O3Jt;SYAy87Y|1WJONl%?8pt!NRX)t(hW0At4LW=Pu`k#M>n2jl`3a_eJ9M z$Ojr-}@lq9#RbEzbL6WmjL{_;#F$hUcSjh>ASEl5N#CxC=iNuRihVq0bpHLP7 E0LPQCLjV8( diff --git a/examples/zips/stack_monitoring.zip b/examples/zips/stack_monitoring.zip index 318a3742db3246c7882038da0aa3424f78afbaf2..f74fa0c8a886a8a68d5c0aaa8aa7e12c65b0f5e0 100644 GIT binary patch delta 1483 zcmeyqjq&?7MxFp~W)?065V&qPk;jnD^_gP2`?JXhl|(tq{CYYi^(c55?{3Kk_ z6m64;f+-S{%z=8+K_Ia>yI4Oo1jC;nrQ!aJmdOSyKOyIUW~R1$0MyLIjq+f}H7i-5 zskx`*2(wpJ`4Tw5{3LWH_o|9;W3e_-H5#V+kZL(twY9nxOsHBt3~GSxBuxo4i>x)_ z9-OTy3U=`(?Ibis<~mbghF#R@0xOEuk3my(N52E6D9gYfY~yZ2FEm9OM(_ZdWV8uv zlAEaynxd_ynJ|-7%$9-`owl$;Q>0@F(FRO@b(U+v*6CUYp($EqT>>*n#wHJ}sK+)D zO_6|I8%)t0yAU=|YWd`14;7kh?s^C$^4ry($@SUfLT_0RFWM~#!V{k?-~-li&Mgf| zeqyN1Bx~2wtpy&!llP?NFcKPq10yO!a;6+IK{X??Q`+`IcDhW?c Hjurs`vV$+n delta 1483 zcmeyqjq&?7MxFp~W)?065O{4ik;jlN@`hr1^o_{}l|(tq{CYYi^(c55?{3Kk_ z6m64;f+-S{%z=8+K_Ia>yI4Oo1jC;nrQ!aJmdOSyKOyIUW~R1$0MyLIjq+f}H7i-5 zskx`*2(wpJ`4Tw5{3LWH_o|9;W3e_-H5#V+kZL(twY9nxOsHBt3~GSxBuxo4i>x)_ z9-OTy3U=`(?Ibis<~mbghF#R@0xOEuk3my(N52E6D9gYfY~yZ2FEm9OM(_ZdWV8uv zlAEaynxd_ynJ|-7%$9-`owl$;Q>0@F(FRO@b(U+v*6CUYp($EqT>>*n#wHJ}sK+)D zO_6|I8%)t0yAU=|YWd`14;7kh?s^C$^4ry(De}hTLT_0RFWM~#!V{k?-~-li&Mgf| zeqyN1Bx~2wtpy&!llP?NFcKPq10yO!a;6+IK{X??Q`+`IcDhW?c Hjurs`vn4i# diff --git a/examples/zips/storage.zip b/examples/zips/storage.zip index 9293dab5513670576274326d0bd557a60e87dece..97de08f77a02e36d78bf151d1e903d26915dca3b 100644 GIT binary patch delta 1494 zcmezWhVlO!MxFp~W)?065V&qPkw=5g^_gP2`?JZ0CBhSZIhcTA;W|iSlN*A;g3GMI zg09atKHtX-R5f`yizifM^EZ}QCXi4lJ515$Y3$NWeAn&bB28J_2dF!et3FN0{4y5hUcwV*(SZ=dlC}?c#+S{hPM|?0{N9N0_Q3f=pls zoDepJ2{DV9uz<|6l(2val}k)!2MO^gn8SoT71n}{|Dk9F6S7cx02Y!`ftwYo5(PGX zqnZs&)n~QEV4)eBW-y^EnnGZq7upUmAw8W|uvuGm;WmEKodQeu`&6$Q3Oo4s&N50IHsFH90$=2Q~1ry2d2=&+y<<$%?jdIRE3YN zJYWh9tzCFP;Z*MKjAS(=aZJAJ4l{7FzK1DDS(*nVYEaEP;sMd@`fM|==Sy%@{P6XH zS;6aB%Dj1RU@_R=M!}GfMm3--7-rGtJHfhO1GppHVFpA*F3gKUlYf(k?C#L~Ff{oy`GII6b_M8W z>?}YILFGcI4seW3EsQ|Z&sT&THbq5H)4;0V7KNgzPA>L_h=AqK7bhU`0!o6=R39!u aj%V#ssA*um3rmqhN~jDP3&NAL%R~V1U_&(k delta 1494 zcmezWhVlO!MxFp~W)?065O{4ikw=3q@`hr1^o_}eCBhSZIhcTA;W|iSlN*A;g3GMI zf{`~iKHtX-R5f`yizifM^EZ}QCXi4lJ515$Y3$NWe6P*oB28J_2dF!et3FN0{4y5hUcwV*(SZ=dlC}?c#+S{hPM|?0{N9N0_Q3f=pls zoDepJ2{DV9uz<|6l(2val}k)!2MO^gn8SoT71n}{|Dk9F6S7cx02Y!`ftwYo5(PGX zqnZs&)n~QEV4)eBW-y^EnnGZq7upUmAw8W|uvuGm;WmEKodQeu`&6$Q3Oo4s&N50IHsFH90$=2Q~1ry2d2=&+y<<$%?jdIRE3YN zJYWh9tzCFP;Z*MKjAS(=aZJAJ4l{7FzK1DDS(*nVYEaEP;sMbdd1EuL=Sy%@{P6XH zS;6aB%Dj1RU@_R=M!}GfMm3--7-rGtJHfhO1GppHVFpA*F3gKUlYf(k?C#L~Ff{oy`GII6b_M8W z>?}YILFGcI4seW3EsQ|Z&sT&THbq5H)4;0V7KNgzPA>L_h=AqK7bhU`0!o6=R39!u aj%V#ssA*um3rmqhN~jDP3&NAL%R~SZ*Gd@x diff --git a/examples/zips/streaming.zip b/examples/zips/streaming.zip index ad1165ff5a1e1a595ac91feb4897965769702148..f8b1eac8ff8cdbe49a609dbd320cdc3876bf3e9e 100644 GIT binary patch delta 212 zcmX>ia72J7z?+$civa|#+fC%rVsm|_nC|{;qKz~YkRNFb=DR-II4O`3C@}dcqajpe zvkcQbW{}VxRtu=mia72J7z?+$civa{)n@!}=VvD??m>zv&qKz~YkRNFb=11PxI4O`3C@}dcqajpe zvkcQbW{}VxRtu=mC diff --git a/examples/zips/usage_proxy.zip b/examples/zips/usage_proxy.zip index 1471adab762dec72ded7da1661f883f89a41fb85..006380b19f5a53012217eda17274b579fbcb326c 100644 GIT binary patch delta 326 zcmZ1`xlEELz?+$civa|#+fC%rVRL<^nC|{;qMbAokRR=$4B;!LmsW5yFtWU4W?*2c z2Py_>69Lj3AZ>@d!P;D(Z5C#%WCUuQ+{a`J6FSKh3KmjeaU#aB$*nA&Fs)Zun!s8k z*oR)jMAgPGv4oBi$=5|Elneupmc=bH$06IWt00000 delta 326 zcmZ1`xlEELz?+$civa{)n@!}=VT-(>m>zv&qMbAokRR=$4B;!LmsW5yFtWU4W?*2c z2Py_>69Lj3AZ>@d!P+8kY!+s$WCUuQ+{a`J6FSKh3KmjeaU#aB$*nA&Fs)Zun!s8k z*oR)jMAgPGv4oBi$=5|Elneupmc=bH$00lQ_Pyhe` diff --git a/examples/zips/vault_secret.zip b/examples/zips/vault_secret.zip index 1949f4d73ad62c3bf7787b42b52f0dbd583650ec..2dc30dcadebfa5bede3d97e91091d74721608244 100644 GIT binary patch delta 140 zcmX@lf1aNwz?+$civa|#+fC%rWpjO|nC|{;qP;W|kRM|P=DR-II3tu1C@}dwqX|@G zvnCTaGf2pc)fy@^xt#R?NW_xOn#uLqWIJ|Q5N|4*3li@an-dZ*mfaJ?Tfwdl0G`M% AKL7v# delta 140 zcmX@lf1aNwz?+$civa{)n@!}=WsAI_m>zv&qP;W|kRM|P=11PxI3tu1C@}dwqX|@G zvnCTaGf2pc)fy@^xt#R?NW_xOnkn+eWIJ|Q5N|4*3li@an-dZ*mfaJ?Tfwdl0L*AF A=Kufz diff --git a/examples/zips/vbs_inst.zip b/examples/zips/vbs_inst.zip index cba648d0f73eac5e597ce0ecf8c3339425286a0b..f9302cadf3aa3ae90013005f90c4d673cad6df32 100644 GIT binary patch delta 140 zcmeyv`-hh&z?+$civa|#+fC%rWOIF{nC|{;qO~*=kRM?L=DR-II3b7;C@}d6qXAT8 zvlLSl6G*6x#T+U$c{9sFun4O;lk2m|0&KD%-Z@qWB%VH-9TKmP%@xGE%BBtg-q$aQ delta 140 zcmeyv`-hh&z?+$civa{)n@!}=WQ)9^m>zv&qO~*=kRM?L=11PxI3b7;C@}d6qXAT8 zvlLSl6G*6x#T+U$c{9sFun4O;Q{;`w0&KD%-Z@qWB%VH-9TKmP%@xGE%BBtg42Cc< diff --git a/examples/zips/visual_builder.zip b/examples/zips/visual_builder.zip index 6a34f8ed394d050196dfb66fd4df4c9a6b4a5389..f1ae10951e9bd10dd6b261e33d9f3a368cf3190d 100644 GIT binary patch delta 143 zcmX@YcZ828z?+$civa|#+fC%rXLEg~nC|{;qN6kukRN9O=DR-II47JDC@}deqZw3W zvmsM16G&(Qi!D@W@?(~RAdzLPwoIm(LY%WN=3vAv%-b6>?$p-8q E0H$a$^8f$< delta 143 zcmX@YcZ828z?+$civa{)n@!}=XN$a{m>zv&qN6kukRN9O=11PxI47JDC@}deqZw3W zvmsM16G&(Qi!D@W@?(~RAdzLPwoH*XCU0bu1@Tze+>m(LY%WN=3vAv%-b6>?$p-8q E0M-C9n*aa+ diff --git a/examples/zips/vn_monitoring.zip b/examples/zips/vn_monitoring.zip index f3af8be6c249e9a49d90450551415196f0872166..ec97a7aad3049b55f4154ddffb31a3fcf9d4ab3b 100644 GIT binary patch delta 243 zcmew^^Ie7~z?+$civa|#+fC%rV{?6`nC|{;qJuOOkRNLU=Zj80z{Um=+v5xtbA7g% zmGJ~KP-OCX7IT;o4{I1BNGOHP5ku$X6KozZbzdP2RHwhqRrLS> delta 243 zcmew^^Ie7~z?+$civa{)n@!}=V~f0@m>zv&qJuOOkRNLU=Zj80z{Um=+v5xti@dR! zmGJ~KP-OCX7IT;o4{I1BNGOHP5ku$X6KozZbzHsS)R~rBT diff --git a/examples/zips/vulnerability_scanning_service.zip b/examples/zips/vulnerability_scanning_service.zip index 9598f2288c5ce45c2533233dc7dd4611192f53e3..b5463d42f93dff48db4efac2f3a4566a91e2d870 100644 GIT binary patch delta 152 zcmZ21v{;BIz?+$civa|#+fC%LXLEg~nC|{;VxTk=ke}xP=DR-IxF?AbC@@)p$qg#9 zIfrRCGe}62%@-;(xrXgHNW_)hm&p}qgz#iJ4lazv&VxTk=ke}xP=11PxxF?AbC@@)p$qg#9 zIfrRCGe}62%@-;(xrXgHNW_)hmnjlxgz#iJ4lambWDgRz?+$civa|#+fC##Rd#)*nC=e5r4`%^j4Usi85mgVfs!C)B0!o0q%6gb z4W!KV*~S$yj7-<RXg~U6<5eVYRbE*RX22wND delta 163 zcmX>mbWDgRz?+$civa{)n@!{~RgS!&m>vzpr4`%^j4Usi85mgVfs!C)B0!o0q%6gb z4Wumc#>N#fj7+c1CbKcwKt(otFqyM}gc{kLp+b{Su^j=4Okj6rio7v-Er%?K_l4aD TiI>RXg~U6<5eVYRbE*RXHX1a3 diff --git a/examples/zips/web_app_firewall.zip b/examples/zips/web_app_firewall.zip index eb6a4d46c0610e2478be44cbfc1702ead5624409..c9ec9d0afa94386efa6abacb7237d44fdd4d7b89 100644 GIT binary patch delta 163 zcmcaBc2|riz?+$civa|#+fC##RCax)nC=e5r4`%^j4Usi85mgVfs!C)B0!o0q%6UP z4W!KV*~UdlY)sefCbO|yK}9yZvBxrkgqCvHLxm>4;y4Zx+01Frk250x delta 163 zcmcaBc2|riz?+$civa{)n@!{~RF1r%m>vzpr4`%^j4Usi85mgVfs!C)B0!o0q%6UP z4Wumc#>PcSY)r4sCbO|yK}9yZvBxrkgqCvHLxm>4;y4Zx+01Fr6nSHEJeMqpC(PxA S#H-`-K;k{;@&)nCxYYqcS2N21 diff --git a/examples/zips/web_application_acceleration_and_security.zip b/examples/zips/web_application_acceleration_and_security.zip index 76a53c135af3a99250ff1e09e6f3a2dc48cbd161..d4aabb9441ba65d0d30f318d3f7686530d0c347e 100644 GIT binary patch delta 140 zcmca?blHd}z?+$civa|#+fC&0Vsm|_nC|{;VvIBskY5=L=DR-Icqy9^C@|TcDGVyI zc{WqEFi1#3ECMPtxlHT~NW?`vg30ySWCaOX5O1$|A`;JDA_a+eL?R8u(~(pM07UXI A?f?J) delta 140 zcmca?blHd}z?+$civa{)n@!~LVvD??m>zv&VvIBskY5=L=11Pxcqy9^C@|TcDGVyI zc{WqEFi1#3ECMPtxlHT~NW?`vf+_OGWCaOX5O1$|A`;JDA_a+eL?R8u(~(pM0CJKs AmH+?% diff --git a/examples/zips/zpr.zip b/examples/zips/zpr.zip index b487ff4ddf0a63fadfa14bb0832ac8543b05c446..2ce7d098ee72bf22bc55554ef62b6569cd065cbf 100644 GIT binary patch delta 163 zcmZ3+yNs77z?+$civa|#+fC$AQFeW%nC=e5r4`%^j4Usi85mgVfs!C)B0!o0q%2sM z4W!KV*~Yd2MyBg_lW#C;Lq#@oG8r&|gsfSNphA<2S@wfOOjwPWT%S#rW0M8(+F7lU Sc#l~vk$ARj4j^7Vn>qkhT`+S1 delta 163 zcmZ3+yNs77z?+$civa{)n@!|VQI5Q!m>vzpr4`%^j4Usi85mgVfs!C)B0!o0q%2sM z4Wumc#>Tb)MyA(hlW#C;Lq#@oG8r&|gsfSNphA<2S@wfOOjwPWB5zEVW0M8(+F7lU Sc#l~vk$ARj4j^7Vn>ql6B{3TS