Skip to content

Commit 028703d

Browse files
Adding new Lustre Resource (#13181) (#21963)
[upstream:90ac94c0f810d38e929eb2eef14e60515c456977] Signed-off-by: Modular Magician <[email protected]>
1 parent 0d2fe3a commit 028703d

16 files changed

+1434
-2
lines changed

.changelog/13181.txt

+3
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
```release-note:new-resource
2+
`google_lustre_instance`
3+
```

.teamcity/components/inputs/services_beta.kt

+5
Original file line numberDiff line numberDiff line change
@@ -526,6 +526,11 @@ var ServicesListBeta = mapOf(
526526
"displayName" to "Looker",
527527
"path" to "./google-beta/services/looker"
528528
),
529+
"lustre" to mapOf(
530+
"name" to "lustre",
531+
"displayName" to "GoogleCloudManagedLustre",
532+
"path" to "./google-beta/services/lustre"
533+
),
529534
"managedkafka" to mapOf(
530535
"name" to "managedkafka",
531536
"displayName" to "Managedkafka",

.teamcity/components/inputs/services_ga.kt

+5
Original file line numberDiff line numberDiff line change
@@ -521,6 +521,11 @@ var ServicesListGa = mapOf(
521521
"displayName" to "Looker",
522522
"path" to "./google/services/looker"
523523
),
524+
"lustre" to mapOf(
525+
"name" to "lustre",
526+
"displayName" to "GoogleCloudManagedLustre",
527+
"path" to "./google/services/lustre"
528+
),
524529
"managedkafka" to mapOf(
525530
"name" to "managedkafka",
526531
"displayName" to "Managedkafka",

google/fwmodels/provider_model.go

+1
Original file line numberDiff line numberDiff line change
@@ -118,6 +118,7 @@ type ProviderModel struct {
118118
KMSCustomEndpoint types.String `tfsdk:"kms_custom_endpoint"`
119119
LoggingCustomEndpoint types.String `tfsdk:"logging_custom_endpoint"`
120120
LookerCustomEndpoint types.String `tfsdk:"looker_custom_endpoint"`
121+
LustreCustomEndpoint types.String `tfsdk:"lustre_custom_endpoint"`
121122
ManagedKafkaCustomEndpoint types.String `tfsdk:"managed_kafka_custom_endpoint"`
122123
MemcacheCustomEndpoint types.String `tfsdk:"memcache_custom_endpoint"`
123124
MemorystoreCustomEndpoint types.String `tfsdk:"memorystore_custom_endpoint"`

google/fwprovider/framework_provider.go

+6
Original file line numberDiff line numberDiff line change
@@ -688,6 +688,12 @@ func (p *FrameworkProvider) Schema(_ context.Context, _ provider.SchemaRequest,
688688
transport_tpg.CustomEndpointValidator(),
689689
},
690690
},
691+
"lustre_custom_endpoint": &schema.StringAttribute{
692+
Optional: true,
693+
Validators: []validator.String{
694+
transport_tpg.CustomEndpointValidator(),
695+
},
696+
},
691697
"managed_kafka_custom_endpoint": &schema.StringAttribute{
692698
Optional: true,
693699
Validators: []validator.String{

google/provider/provider.go

+6
Original file line numberDiff line numberDiff line change
@@ -588,6 +588,11 @@ func Provider() *schema.Provider {
588588
Optional: true,
589589
ValidateFunc: transport_tpg.ValidateCustomEndpoint,
590590
},
591+
"lustre_custom_endpoint": {
592+
Type: schema.TypeString,
593+
Optional: true,
594+
ValidateFunc: transport_tpg.ValidateCustomEndpoint,
595+
},
591596
"managed_kafka_custom_endpoint": {
592597
Type: schema.TypeString,
593598
Optional: true,
@@ -1122,6 +1127,7 @@ func ProviderConfigure(ctx context.Context, d *schema.ResourceData, p *schema.Pr
11221127
config.KMSBasePath = d.Get("kms_custom_endpoint").(string)
11231128
config.LoggingBasePath = d.Get("logging_custom_endpoint").(string)
11241129
config.LookerBasePath = d.Get("looker_custom_endpoint").(string)
1130+
config.LustreBasePath = d.Get("lustre_custom_endpoint").(string)
11251131
config.ManagedKafkaBasePath = d.Get("managed_kafka_custom_endpoint").(string)
11261132
config.MemcacheBasePath = d.Get("memcache_custom_endpoint").(string)
11271133
config.MemorystoreBasePath = d.Get("memorystore_custom_endpoint").(string)

google/provider/provider_mmv1_resources.go

+4-2
Original file line numberDiff line numberDiff line change
@@ -92,6 +92,7 @@ import (
9292
"github.com/hashicorp/terraform-provider-google/google/services/kms"
9393
"github.com/hashicorp/terraform-provider-google/google/services/logging"
9494
"github.com/hashicorp/terraform-provider-google/google/services/looker"
95+
"github.com/hashicorp/terraform-provider-google/google/services/lustre"
9596
"github.com/hashicorp/terraform-provider-google/google/services/managedkafka"
9697
"github.com/hashicorp/terraform-provider-google/google/services/memcache"
9798
"github.com/hashicorp/terraform-provider-google/google/services/memorystore"
@@ -494,9 +495,9 @@ var handwrittenIAMDatasources = map[string]*schema.Resource{
494495
}
495496

496497
// Resources
497-
// Generated resources: 557
498+
// Generated resources: 558
498499
// Generated IAM resources: 276
499-
// Total generated resources: 833
500+
// Total generated resources: 834
500501
var generatedResources = map[string]*schema.Resource{
501502
"google_folder_access_approval_settings": accessapproval.ResourceAccessApprovalFolderSettings(),
502503
"google_organization_access_approval_settings": accessapproval.ResourceAccessApprovalOrganizationSettings(),
@@ -1076,6 +1077,7 @@ var generatedResources = map[string]*schema.Resource{
10761077
"google_logging_metric": logging.ResourceLoggingMetric(),
10771078
"google_logging_organization_settings": logging.ResourceLoggingOrganizationSettings(),
10781079
"google_looker_instance": looker.ResourceLookerInstance(),
1080+
"google_lustre_instance": lustre.ResourceLustreInstance(),
10791081
"google_managed_kafka_cluster": managedkafka.ResourceManagedKafkaCluster(),
10801082
"google_managed_kafka_topic": managedkafka.ResourceManagedKafkaTopic(),
10811083
"google_memcache_instance": memcache.ResourceMemcacheInstance(),
+92
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,92 @@
1+
// Copyright (c) HashiCorp, Inc.
2+
// SPDX-License-Identifier: MPL-2.0
3+
4+
// ----------------------------------------------------------------------------
5+
//
6+
// *** AUTO GENERATED CODE *** Type: MMv1 ***
7+
//
8+
// ----------------------------------------------------------------------------
9+
//
10+
// This file is automatically generated by Magic Modules and manual
11+
// changes will be clobbered when the file is regenerated.
12+
//
13+
// Please read more about how to change this file in
14+
// .github/CONTRIBUTING.md.
15+
//
16+
// ----------------------------------------------------------------------------
17+
18+
package lustre
19+
20+
import (
21+
"encoding/json"
22+
"errors"
23+
"fmt"
24+
"time"
25+
26+
"github.com/hashicorp/terraform-provider-google/google/tpgresource"
27+
transport_tpg "github.com/hashicorp/terraform-provider-google/google/transport"
28+
)
29+
30+
type LustreOperationWaiter struct {
31+
Config *transport_tpg.Config
32+
UserAgent string
33+
Project string
34+
tpgresource.CommonOperationWaiter
35+
}
36+
37+
func (w *LustreOperationWaiter) QueryOp() (interface{}, error) {
38+
if w == nil {
39+
return nil, fmt.Errorf("Cannot query operation, it's unset or nil.")
40+
}
41+
// Returns the proper get.
42+
url := fmt.Sprintf("%s%s", w.Config.LustreBasePath, w.CommonOperationWaiter.Op.Name)
43+
44+
return transport_tpg.SendRequest(transport_tpg.SendRequestOptions{
45+
Config: w.Config,
46+
Method: "GET",
47+
Project: w.Project,
48+
RawURL: url,
49+
UserAgent: w.UserAgent,
50+
})
51+
}
52+
53+
func createLustreWaiter(config *transport_tpg.Config, op map[string]interface{}, project, activity, userAgent string) (*LustreOperationWaiter, error) {
54+
w := &LustreOperationWaiter{
55+
Config: config,
56+
UserAgent: userAgent,
57+
Project: project,
58+
}
59+
if err := w.CommonOperationWaiter.SetOp(op); err != nil {
60+
return nil, err
61+
}
62+
return w, nil
63+
}
64+
65+
// nolint: deadcode,unused
66+
func LustreOperationWaitTimeWithResponse(config *transport_tpg.Config, op map[string]interface{}, response *map[string]interface{}, project, activity, userAgent string, timeout time.Duration) error {
67+
w, err := createLustreWaiter(config, op, project, activity, userAgent)
68+
if err != nil {
69+
return err
70+
}
71+
if err := tpgresource.OperationWait(w, activity, timeout, config.PollInterval); err != nil {
72+
return err
73+
}
74+
rawResponse := []byte(w.CommonOperationWaiter.Op.Response)
75+
if len(rawResponse) == 0 {
76+
return errors.New("`resource` not set in operation response")
77+
}
78+
return json.Unmarshal(rawResponse, response)
79+
}
80+
81+
func LustreOperationWaitTime(config *transport_tpg.Config, op map[string]interface{}, project, activity, userAgent string, timeout time.Duration) error {
82+
if val, ok := op["name"]; !ok || val == "" {
83+
// This was a synchronous call - there is no operation to wait for.
84+
return nil
85+
}
86+
w, err := createLustreWaiter(config, op, project, activity, userAgent)
87+
if err != nil {
88+
// If w is nil, the op was synchronous.
89+
return err
90+
}
91+
return tpgresource.OperationWait(w, activity, timeout, config.PollInterval)
92+
}

0 commit comments

Comments
 (0)