Skip to content

Commit

Permalink
add state_upgraders
Browse files Browse the repository at this point in the history
  • Loading branch information
akshat-jindal-nit committed Dec 11, 2024
1 parent af72466 commit c2be554
Show file tree
Hide file tree
Showing 2 changed files with 110 additions and 0 deletions.
3 changes: 3 additions & 0 deletions mmv1/products/compute/HaVpnGateway.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -48,6 +48,8 @@ async:
message: 'message'
collection_url_key: 'items'
custom_code:
schema_version: 1
state_upgraders: true
examples:
- name: 'ha_vpn_gateway_basic'
primary_resource_id: 'ha_gateway1'
Expand Down Expand Up @@ -140,6 +142,7 @@ properties:
description: |
The IP family of the gateway IPs for the HA-VPN gateway interfaces. If not specified, IPV4 will be used.
immutable: true
custom_flatten: 'templates/terraform/custom_flatten/default_if_empty.tmpl'
default_value: "IPV4"
enum_values:
- 'IPV4'
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,107 @@
func resourceComputeHaVpnGatewayResourceV0() *schema.Resource {
return &schema.Resource{
Schema: map[string]*schema.Schema{
"name": {
Type: schema.TypeString,
Required: true,
ForceNew: true,
ValidateFunc: verify.ValidateGCEName,
Description: `Name of the resource. Provided by the client when the resource is
created. The name must be 1-63 characters long, and comply with
RFC1035. Specifically, the name must be 1-63 characters long and
match the regular expression '[a-z]([-a-z0-9]*[a-z0-9])?' which means
the first character must be a lowercase letter, and all following
characters must be a dash, lowercase letter, or digit, except the last
character, which cannot be a dash.`,
},
"network": {
Type: schema.TypeString,
Required: true,
ForceNew: true,
DiffSuppressFunc: tpgresource.CompareSelfLinkOrResourceName,
Description: `The network this VPN gateway is accepting traffic for.`,
},
"description": {
Type: schema.TypeString,
Optional: true,
ForceNew: true,
Description: `An optional description of this resource.`,
},
"gateway_ip_version": {
Type: schema.TypeString,
Optional: true,
ForceNew: true,
ValidateFunc: verify.ValidateEnum([]string{"IPV4", "IPV6", ""}),
Description: `The IP family of the gateway IPs for the HA-VPN gateway interfaces. If not specified, IPV4 will be used. Default value: "IPV4" Possible values: ["IPV4", "IPV6"]`,
Default: "IPV4",
},
"region": {
Type: schema.TypeString,
Computed: true,
Optional: true,
ForceNew: true,
DiffSuppressFunc: tpgresource.CompareSelfLinkOrResourceName,
Description: `The region this gateway should sit in.`,
},
"stack_type": {
Type: schema.TypeString,
Optional: true,
ForceNew: true,
ValidateFunc: verify.ValidateEnum([]string{"IPV4_ONLY", "IPV4_IPV6", "IPV6_ONLY", ""}),
Description: `The stack type for this VPN gateway to identify the IP protocols that are enabled.
If not specified, IPV4_ONLY will be used. Default value: "IPV4_ONLY" Possible values: ["IPV4_ONLY", "IPV4_IPV6", "IPV6_ONLY"]`,
Default: "IPV4_ONLY",
},
"vpn_interfaces": {
Type: schema.TypeList,
Computed: true,
Optional: true,
ForceNew: true,
Description: `A list of interfaces on this VPN gateway.`,
Elem: &schema.Resource{
Schema: map[string]*schema.Schema{
"id": {
Type: schema.TypeInt,
Optional: true,
ForceNew: true,
Description: `The numeric ID of this VPN gateway interface.`,
},
"interconnect_attachment": {
Type: schema.TypeString,
Optional: true,
ForceNew: true,
DiffSuppressFunc: tpgresource.CompareSelfLinkOrResourceName,
Description: `URL of the interconnect attachment resource. When the value
of this field is present, the VPN Gateway will be used for
IPsec-encrypted Cloud Interconnect; all Egress or Ingress
traffic for this VPN Gateway interface will go through the
specified interconnect attachment resource.

Not currently available publicly.`,
},
"ip_address": {
Type: schema.TypeString,
Computed: true,
Description: `The external IP address for this VPN gateway interface.`,
},
},
},
},
"project": {
Type: schema.TypeString,
Optional: true,
Computed: true,
ForceNew: true,
},
"self_link": {
Type: schema.TypeString,
Computed: true,
},
},
UseJSONNumber: true,
}
}

func ResourceComputeHaVpnGatewayUpgradeV0(_ context.Context, rawState map[string]interface{}, meta interface{}) (map[string]interface{}, error) {
return tpgresource.TerraformLabelsStateUpgrade(rawState)
}

0 comments on commit c2be554

Please sign in to comment.