Skip to content

Commit

Permalink
Add NetworkPolicy resource to Vmwareengine (#9514) (#16639)
Browse files Browse the repository at this point in the history
[upstream:03342cd8a219335227e839405bc91f9b282d8007]

Signed-off-by: Modular Magician <magic-modules@google.com>
  • Loading branch information
modular-magician authored Nov 30, 2023
1 parent a38e7d5 commit 4246363
Show file tree
Hide file tree
Showing 10 changed files with 1,378 additions and 2 deletions.
6 changes: 6 additions & 0 deletions .changelog/9514.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
```release-note:new-resource
`google_vmwareengine_network_policy`
```
```release-note:new-datasource
`google_vmwareengine_network_policy`
```
6 changes: 4 additions & 2 deletions google/provider/provider_mmv1_resources.go
Original file line number Diff line number Diff line change
Expand Up @@ -260,6 +260,7 @@ var handwrittenDatasources = map[string]*schema.Resource{
"google_vertex_ai_index": vertexai.DataSourceVertexAIIndex(),
"google_vmwareengine_network": vmwareengine.DataSourceVmwareengineNetwork(),
"google_vmwareengine_network_peering": vmwareengine.DataSourceVmwareengineNetworkPeering(),
"google_vmwareengine_network_policy": vmwareengine.DataSourceVmwareengineNetworkPolicy(),
"google_vmwareengine_private_cloud": vmwareengine.DataSourceVmwareenginePrivateCloud(),

// ####### END handwritten datasources ###########
Expand Down Expand Up @@ -361,9 +362,9 @@ var handwrittenIAMDatasources = map[string]*schema.Resource{
}

// Resources
// Generated resources: 345
// Generated resources: 346
// Generated IAM resources: 216
// Total generated resources: 561
// Total generated resources: 562
var generatedResources = map[string]*schema.Resource{
"google_folder_access_approval_settings": accessapproval.ResourceAccessApprovalFolderSettings(),
"google_organization_access_approval_settings": accessapproval.ResourceAccessApprovalOrganizationSettings(),
Expand Down Expand Up @@ -905,6 +906,7 @@ var generatedResources = map[string]*schema.Resource{
"google_vertex_ai_tensorboard": vertexai.ResourceVertexAITensorboard(),
"google_vmwareengine_network": vmwareengine.ResourceVmwareengineNetwork(),
"google_vmwareengine_network_peering": vmwareengine.ResourceVmwareengineNetworkPeering(),
"google_vmwareengine_network_policy": vmwareengine.ResourceVmwareengineNetworkPolicy(),
"google_vmwareengine_private_cloud": vmwareengine.ResourceVmwareenginePrivateCloud(),
"google_vpc_access_connector": vpcaccess.ResourceVPCAccessConnector(),
"google_workflows_workflow": workflows.ResourceWorkflowsWorkflow(),
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
// Copyright (c) HashiCorp, Inc.
// SPDX-License-Identifier: MPL-2.0
package vmwareengine

import (
"fmt"

"github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
"github.com/hashicorp/terraform-provider-google/google/tpgresource"
transport_tpg "github.com/hashicorp/terraform-provider-google/google/transport"
)

func DataSourceVmwareengineNetworkPolicy() *schema.Resource {

dsSchema := tpgresource.DatasourceSchemaFromResourceSchema(ResourceVmwareengineNetworkPolicy().Schema)
tpgresource.AddRequiredFieldsToSchema(dsSchema, "location", "name")
tpgresource.AddOptionalFieldsToSchema(dsSchema, "project")
return &schema.Resource{
Read: dataSourceVmwareengineNetworkPolicyRead,
Schema: dsSchema,
}
}

func dataSourceVmwareengineNetworkPolicyRead(d *schema.ResourceData, meta interface{}) error {
config := meta.(*transport_tpg.Config)

// Store the ID now
id, err := tpgresource.ReplaceVars(d, config, "projects/{{project}}/locations/{{location}}/networkPolicies/{{name}}")
if err != nil {
return fmt.Errorf("Error constructing id: %s", err)
}
d.SetId(id)
err = resourceVmwareengineNetworkPolicyRead(d, meta)
if err != nil {
return err
}

if d.Id() == "" {
return fmt.Errorf("%s not found", id)
}
return nil
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,67 @@
// Copyright (c) HashiCorp, Inc.
// SPDX-License-Identifier: MPL-2.0
package vmwareengine_test

import (
"testing"

"github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource"
"github.com/hashicorp/terraform-provider-google/google/acctest"
"github.com/hashicorp/terraform-provider-google/google/envvar"
)

func TestAccDataSourceVmwareengineNetworkPolicy_basic(t *testing.T) {
t.Parallel()

context := map[string]interface{}{
"region": envvar.GetTestRegionFromEnv(),
"random_suffix": acctest.RandString(t, 10),
}

acctest.VcrTest(t, resource.TestCase{
PreCheck: func() { acctest.AccTestPreCheck(t) },
ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories(t),
CheckDestroy: testAccCheckVmwareengineNetworkPolicyDestroyProducer(t),
Steps: []resource.TestStep{
{
Config: testAccVmwareengineNetworkPolicy_ds(context),
Check: resource.ComposeTestCheckFunc(
acctest.CheckDataSourceStateMatchesResourceStateWithIgnores("data.google_vmwareengine_network_policy.ds", "google_vmwareengine_network_policy.vmw-engine-network-policy", map[string]struct{}{}),
),
},
},
})
}

func testAccVmwareengineNetworkPolicy_ds(context map[string]interface{}) string {
return acctest.Nprintf(`
resource "google_vmwareengine_network" "network-policy-ds-nw" {
name = "tf-test-sample-nw%{random_suffix}"
location = "global"
type = "STANDARD"
description = "VMwareEngine standard network sample"
}
resource "google_vmwareengine_network_policy" "vmw-engine-network-policy" {
location = "%{region}"
name = "tf-test-sample-network-policy%{random_suffix}"
internet_access {
enabled = true
}
external_ip {
enabled = true
}
edge_services_cidr = "192.168.30.0/26"
vmware_engine_network = google_vmwareengine_network.network-policy-ds-nw.id
}
data "google_vmwareengine_network_policy" "ds" {
name = google_vmwareengine_network_policy.vmw-engine-network-policy.name
location = "%{region}"
depends_on = [
google_vmwareengine_network_policy.vmw-engine-network-policy,
]
}
`, context)
}
Loading

0 comments on commit 4246363

Please sign in to comment.