services/google/compute/alpha/instance_group_manager_internal.go (6,046 lines of code) (raw):
// Copyright 2025 Google LLC. All Rights Reserved.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
package alpha
import (
"bytes"
"context"
"encoding/json"
"fmt"
"io/ioutil"
"strings"
"github.com/GoogleCloudPlatform/declarative-resource-client-library/dcl"
"github.com/GoogleCloudPlatform/declarative-resource-client-library/dcl/operations"
)
func (r *InstanceGroupManager) validate() error {
if err := dcl.ValidateExactlyOneOfFieldsSet([]string{"InstanceTemplate", "Versions"}, r.InstanceTemplate, r.Versions); err != nil {
return err
}
if err := dcl.Required(r, "name"); err != nil {
return err
}
if err := dcl.Required(r, "targetSize"); err != nil {
return err
}
if err := dcl.RequiredParameter(r.Project, "Project"); err != nil {
return err
}
if !dcl.IsEmptyValueIndirect(r.DistributionPolicy) {
if err := r.DistributionPolicy.validate(); err != nil {
return err
}
}
if !dcl.IsEmptyValueIndirect(r.CurrentActions) {
if err := r.CurrentActions.validate(); err != nil {
return err
}
}
if !dcl.IsEmptyValueIndirect(r.Status) {
if err := r.Status.validate(); err != nil {
return err
}
}
if !dcl.IsEmptyValueIndirect(r.UpdatePolicy) {
if err := r.UpdatePolicy.validate(); err != nil {
return err
}
}
if !dcl.IsEmptyValueIndirect(r.StatefulPolicy) {
if err := r.StatefulPolicy.validate(); err != nil {
return err
}
}
return nil
}
func (r *InstanceGroupManagerDistributionPolicy) validate() error {
return nil
}
func (r *InstanceGroupManagerDistributionPolicyZones) validate() error {
return nil
}
func (r *InstanceGroupManagerVersions) validate() error {
if !dcl.IsEmptyValueIndirect(r.TargetSize) {
if err := r.TargetSize.validate(); err != nil {
return err
}
}
return nil
}
func (r *InstanceGroupManagerVersionsTargetSize) validate() error {
return nil
}
func (r *InstanceGroupManagerCurrentActions) validate() error {
return nil
}
func (r *InstanceGroupManagerStatus) validate() error {
if !dcl.IsEmptyValueIndirect(r.VersionTarget) {
if err := r.VersionTarget.validate(); err != nil {
return err
}
}
if !dcl.IsEmptyValueIndirect(r.Stateful) {
if err := r.Stateful.validate(); err != nil {
return err
}
}
return nil
}
func (r *InstanceGroupManagerStatusVersionTarget) validate() error {
return nil
}
func (r *InstanceGroupManagerStatusStateful) validate() error {
if !dcl.IsEmptyValueIndirect(r.PerInstanceConfigs) {
if err := r.PerInstanceConfigs.validate(); err != nil {
return err
}
}
return nil
}
func (r *InstanceGroupManagerStatusStatefulPerInstanceConfigs) validate() error {
return nil
}
func (r *InstanceGroupManagerAutoHealingPolicies) validate() error {
return nil
}
func (r *InstanceGroupManagerUpdatePolicy) validate() error {
if !dcl.IsEmptyValueIndirect(r.MaxSurge) {
if err := r.MaxSurge.validate(); err != nil {
return err
}
}
if !dcl.IsEmptyValueIndirect(r.MaxUnavailable) {
if err := r.MaxUnavailable.validate(); err != nil {
return err
}
}
return nil
}
func (r *InstanceGroupManagerUpdatePolicyMaxSurge) validate() error {
return nil
}
func (r *InstanceGroupManagerUpdatePolicyMaxUnavailable) validate() error {
return nil
}
func (r *InstanceGroupManagerNamedPorts) validate() error {
return nil
}
func (r *InstanceGroupManagerStatefulPolicy) validate() error {
if !dcl.IsEmptyValueIndirect(r.PreservedState) {
if err := r.PreservedState.validate(); err != nil {
return err
}
}
return nil
}
func (r *InstanceGroupManagerStatefulPolicyPreservedState) validate() error {
return nil
}
func (r *InstanceGroupManagerStatefulPolicyPreservedStateDisks) validate() error {
return nil
}
func (r *InstanceGroupManagerStatefulPolicyPreservedStateInternalIps) validate() error {
return nil
}
func (r *InstanceGroupManagerStatefulPolicyPreservedStateExternalIps) validate() error {
return nil
}
func (r *InstanceGroupManager) basePath() string {
params := map[string]interface{}{}
return dcl.Nprintf("https://www.googleapis.com/compute/beta/", params)
}
func (r *InstanceGroupManager) getURL(userBasePath string) (string, error) {
nr := r.urlNormalized()
params := map[string]interface{}{
"project": dcl.ValueOrEmptyString(nr.Project),
"location": dcl.ValueOrEmptyString(nr.Location),
"name": dcl.ValueOrEmptyString(nr.Name),
}
if dcl.IsRegion(nr.Location) {
return dcl.URL("projects/{{project}}/regions/{{location}}/instanceGroupManagers/{{name}}", nr.basePath(), userBasePath, params), nil
}
if dcl.IsZone(nr.Location) {
return dcl.URL("projects/{{project}}/zones/{{location}}/instanceGroupManagers/{{name}}", nr.basePath(), userBasePath, params), nil
}
return "", fmt.Errorf("No valid Get URL found")
}
func (r *InstanceGroupManager) listURL(userBasePath string) (string, error) {
nr := r.urlNormalized()
params := map[string]interface{}{
"project": dcl.ValueOrEmptyString(nr.Project),
"location": dcl.ValueOrEmptyString(nr.Location),
}
if dcl.IsRegion(nr.Location) {
return dcl.URL("projects/{{project}}/regions/{{location}}/instanceGroupManagers", nr.basePath(), userBasePath, params), nil
}
if dcl.IsZone(nr.Location) {
return dcl.URL("projects/{{project}}/zones/{{location}}/instanceGroupManagers", nr.basePath(), userBasePath, params), nil
}
return "", fmt.Errorf("No valid List URL found")
}
func (r *InstanceGroupManager) createURL(userBasePath string) (string, error) {
nr := r.urlNormalized()
params := map[string]interface{}{
"project": dcl.ValueOrEmptyString(nr.Project),
"location": dcl.ValueOrEmptyString(nr.Location),
}
if dcl.IsRegion(nr.Location) {
return dcl.URL("projects/{{project}}/regions/{{location}}/instanceGroupManagers", nr.basePath(), userBasePath, params), nil
}
if dcl.IsZone(nr.Location) {
return dcl.URL("projects/{{project}}/zones/{{location}}/instanceGroupManagers", nr.basePath(), userBasePath, params), nil
}
return "", fmt.Errorf("No valid Create URL found")
}
func (r *InstanceGroupManager) deleteURL(userBasePath string) (string, error) {
nr := r.urlNormalized()
params := map[string]interface{}{
"project": dcl.ValueOrEmptyString(nr.Project),
"location": dcl.ValueOrEmptyString(nr.Location),
"name": dcl.ValueOrEmptyString(nr.Name),
}
if dcl.IsRegion(nr.Location) {
return dcl.URL("projects/{{project}}/regions/{{location}}/instanceGroupManagers/{{name}}", nr.basePath(), userBasePath, params), nil
}
if dcl.IsZone(nr.Location) {
return dcl.URL("projects/{{project}}/zones/{{location}}/instanceGroupManagers/{{name}}", nr.basePath(), userBasePath, params), nil
}
return "", fmt.Errorf("No valid Delete URL found")
}
// instanceGroupManagerApiOperation represents a mutable operation in the underlying REST
// API such as Create, Update, or Delete.
type instanceGroupManagerApiOperation interface {
do(context.Context, *InstanceGroupManager, *Client) error
}
// newUpdateInstanceGroupManagerPatchRequest creates a request for an
// InstanceGroupManager resource's Patch update type by filling in the update
// fields based on the intended state of the resource.
func newUpdateInstanceGroupManagerPatchRequest(ctx context.Context, f *InstanceGroupManager, c *Client) (map[string]interface{}, error) {
req := map[string]interface{}{}
res := f
_ = res
if v, err := expandInstanceGroupManagerDistributionPolicy(c, f.DistributionPolicy, res); err != nil {
return nil, fmt.Errorf("error expanding DistributionPolicy into distributionPolicy: %w", err)
} else if !dcl.IsEmptyValueIndirect(v) {
req["distributionPolicy"] = v
}
if v := f.InstanceTemplate; !dcl.IsEmptyValueIndirect(v) {
req["instanceTemplate"] = v
}
if v, err := expandInstanceGroupManagerVersionsSlice(c, f.Versions, res); err != nil {
return nil, fmt.Errorf("error expanding Versions into versions: %w", err)
} else if v != nil {
req["versions"] = v
}
if v := f.TargetPools; v != nil {
req["targetPools"] = v
}
if v := f.BaseInstanceName; !dcl.IsEmptyValueIndirect(v) {
req["baseInstanceName"] = v
}
if v, err := expandInstanceGroupManagerStatus(c, f.Status, res); err != nil {
return nil, fmt.Errorf("error expanding Status into status: %w", err)
} else if !dcl.IsEmptyValueIndirect(v) {
req["status"] = v
}
if v := f.TargetSize; !dcl.IsEmptyValueIndirect(v) {
req["targetSize"] = v
}
if v, err := expandInstanceGroupManagerAutoHealingPoliciesSlice(c, f.AutoHealingPolicies, res); err != nil {
return nil, fmt.Errorf("error expanding AutoHealingPolicies into autoHealingPolicies: %w", err)
} else if v != nil {
req["autoHealingPolicies"] = v
}
if v, err := expandInstanceGroupManagerUpdatePolicy(c, f.UpdatePolicy, res); err != nil {
return nil, fmt.Errorf("error expanding UpdatePolicy into updatePolicy: %w", err)
} else if !dcl.IsEmptyValueIndirect(v) {
req["updatePolicy"] = v
}
if v, err := expandInstanceGroupManagerStatefulPolicy(c, f.StatefulPolicy, res); err != nil {
return nil, fmt.Errorf("error expanding StatefulPolicy into statefulPolicy: %w", err)
} else if !dcl.IsEmptyValueIndirect(v) {
req["statefulPolicy"] = v
}
if v := f.ServiceAccount; !dcl.IsEmptyValueIndirect(v) {
req["serviceAccount"] = v
}
if v := f.FailoverAction; !dcl.IsEmptyValueIndirect(v) {
req["failoverAction"] = v
}
b, err := c.getInstanceGroupManagerRaw(ctx, f)
if err != nil {
return nil, err
}
var m map[string]interface{}
if err := json.Unmarshal(b, &m); err != nil {
return nil, err
}
rawFingerprint, err := dcl.GetMapEntry(
m,
[]string{"fingerprint"},
)
if err != nil {
c.Config.Logger.WarningWithContextf(ctx, "Failed to fetch from JSON Path: %v", err)
} else {
req["fingerprint"] = rawFingerprint.(string)
}
return req, nil
}
// marshalUpdateInstanceGroupManagerPatchRequest converts the update into
// the final JSON request body.
func marshalUpdateInstanceGroupManagerPatchRequest(c *Client, m map[string]interface{}) ([]byte, error) {
return json.Marshal(m)
}
type updateInstanceGroupManagerPatchOperation struct {
// If the update operation has the REQUIRES_APPLY_OPTIONS trait, this will be populated.
// Usually it will be nil - this is to prevent us from accidentally depending on apply
// options, which should usually be unnecessary.
ApplyOptions []dcl.ApplyOption
FieldDiffs []*dcl.FieldDiff
}
// do creates a request and sends it to the appropriate URL. In most operations,
// do will transcribe a subset of the resource into a request object and send a
// PUT request to a single URL.
func (op *updateInstanceGroupManagerPatchOperation) do(ctx context.Context, r *InstanceGroupManager, c *Client) error {
_, err := c.GetInstanceGroupManager(ctx, r)
if err != nil {
return err
}
u, err := r.updateURL(c.Config.BasePath, "Patch")
if err != nil {
return err
}
req, err := newUpdateInstanceGroupManagerPatchRequest(ctx, r, c)
if err != nil {
return err
}
c.Config.Logger.InfoWithContextf(ctx, "Created update: %#v", req)
body, err := marshalUpdateInstanceGroupManagerPatchRequest(c, req)
if err != nil {
return err
}
resp, err := dcl.SendRequest(ctx, c.Config, "PATCH", u, bytes.NewBuffer(body), c.Config.RetryProvider)
if err != nil {
return err
}
var o operations.ComputeOperation
if err := dcl.ParseResponse(resp.Response, &o); err != nil {
return err
}
err = o.Wait(context.WithValue(ctx, dcl.DoNotLogRequestsKey, true), c.Config, r.basePath(), "GET")
if err != nil {
return err
}
return nil
}
// newUpdateInstanceGroupManagerSetInstanceTemplateRequest creates a request for an
// InstanceGroupManager resource's setInstanceTemplate update type by filling in the update
// fields based on the intended state of the resource.
func newUpdateInstanceGroupManagerSetInstanceTemplateRequest(ctx context.Context, f *InstanceGroupManager, c *Client) (map[string]interface{}, error) {
req := map[string]interface{}{}
res := f
_ = res
return req, nil
}
// marshalUpdateInstanceGroupManagerSetInstanceTemplateRequest converts the update into
// the final JSON request body.
func marshalUpdateInstanceGroupManagerSetInstanceTemplateRequest(c *Client, m map[string]interface{}) ([]byte, error) {
return json.Marshal(m)
}
type updateInstanceGroupManagerSetInstanceTemplateOperation struct {
// If the update operation has the REQUIRES_APPLY_OPTIONS trait, this will be populated.
// Usually it will be nil - this is to prevent us from accidentally depending on apply
// options, which should usually be unnecessary.
ApplyOptions []dcl.ApplyOption
FieldDiffs []*dcl.FieldDiff
}
// do creates a request and sends it to the appropriate URL. In most operations,
// do will transcribe a subset of the resource into a request object and send a
// PUT request to a single URL.
func (op *updateInstanceGroupManagerSetInstanceTemplateOperation) do(ctx context.Context, r *InstanceGroupManager, c *Client) error {
_, err := c.GetInstanceGroupManager(ctx, r)
if err != nil {
return err
}
u, err := r.updateURL(c.Config.BasePath, "setInstanceTemplate")
if err != nil {
return err
}
req, err := newUpdateInstanceGroupManagerSetInstanceTemplateRequest(ctx, r, c)
if err != nil {
return err
}
c.Config.Logger.InfoWithContextf(ctx, "Created update: %#v", req)
body, err := marshalUpdateInstanceGroupManagerSetInstanceTemplateRequest(c, req)
if err != nil {
return err
}
resp, err := dcl.SendRequest(ctx, c.Config, "PATCH", u, bytes.NewBuffer(body), c.Config.RetryProvider)
if err != nil {
return err
}
var o operations.ComputeOperation
if err := dcl.ParseResponse(resp.Response, &o); err != nil {
return err
}
err = o.Wait(context.WithValue(ctx, dcl.DoNotLogRequestsKey, true), c.Config, r.basePath(), "GET")
if err != nil {
return err
}
return nil
}
// newUpdateInstanceGroupManagerSetTargetPoolsRequest creates a request for an
// InstanceGroupManager resource's setTargetPools update type by filling in the update
// fields based on the intended state of the resource.
func newUpdateInstanceGroupManagerSetTargetPoolsRequest(ctx context.Context, f *InstanceGroupManager, c *Client) (map[string]interface{}, error) {
req := map[string]interface{}{}
res := f
_ = res
return req, nil
}
// marshalUpdateInstanceGroupManagerSetTargetPoolsRequest converts the update into
// the final JSON request body.
func marshalUpdateInstanceGroupManagerSetTargetPoolsRequest(c *Client, m map[string]interface{}) ([]byte, error) {
return json.Marshal(m)
}
type updateInstanceGroupManagerSetTargetPoolsOperation struct {
// If the update operation has the REQUIRES_APPLY_OPTIONS trait, this will be populated.
// Usually it will be nil - this is to prevent us from accidentally depending on apply
// options, which should usually be unnecessary.
ApplyOptions []dcl.ApplyOption
FieldDiffs []*dcl.FieldDiff
}
// do creates a request and sends it to the appropriate URL. In most operations,
// do will transcribe a subset of the resource into a request object and send a
// PUT request to a single URL.
func (op *updateInstanceGroupManagerSetTargetPoolsOperation) do(ctx context.Context, r *InstanceGroupManager, c *Client) error {
_, err := c.GetInstanceGroupManager(ctx, r)
if err != nil {
return err
}
u, err := r.updateURL(c.Config.BasePath, "setTargetPools")
if err != nil {
return err
}
req, err := newUpdateInstanceGroupManagerSetTargetPoolsRequest(ctx, r, c)
if err != nil {
return err
}
c.Config.Logger.InfoWithContextf(ctx, "Created update: %#v", req)
body, err := marshalUpdateInstanceGroupManagerSetTargetPoolsRequest(c, req)
if err != nil {
return err
}
resp, err := dcl.SendRequest(ctx, c.Config, "PATCH", u, bytes.NewBuffer(body), c.Config.RetryProvider)
if err != nil {
return err
}
var o operations.ComputeOperation
if err := dcl.ParseResponse(resp.Response, &o); err != nil {
return err
}
err = o.Wait(context.WithValue(ctx, dcl.DoNotLogRequestsKey, true), c.Config, r.basePath(), "GET")
if err != nil {
return err
}
return nil
}
func (c *Client) listInstanceGroupManagerRaw(ctx context.Context, r *InstanceGroupManager, pageToken string, pageSize int32) ([]byte, error) {
u, err := r.urlNormalized().listURL(c.Config.BasePath)
if err != nil {
return nil, err
}
m := make(map[string]string)
if pageToken != "" {
m["pageToken"] = pageToken
}
if pageSize != InstanceGroupManagerMaxPage {
m["pageSize"] = fmt.Sprintf("%v", pageSize)
}
u, err = dcl.AddQueryParams(u, m)
if err != nil {
return nil, err
}
resp, err := dcl.SendRequest(ctx, c.Config, "GET", u, &bytes.Buffer{}, c.Config.RetryProvider)
if err != nil {
return nil, err
}
defer resp.Response.Body.Close()
return ioutil.ReadAll(resp.Response.Body)
}
type listInstanceGroupManagerOperation struct {
Items []map[string]interface{} `json:"items"`
Token string `json:"nextPageToken"`
}
func (c *Client) listInstanceGroupManager(ctx context.Context, r *InstanceGroupManager, pageToken string, pageSize int32) ([]*InstanceGroupManager, string, error) {
b, err := c.listInstanceGroupManagerRaw(ctx, r, pageToken, pageSize)
if err != nil {
return nil, "", err
}
var m listInstanceGroupManagerOperation
if err := json.Unmarshal(b, &m); err != nil {
return nil, "", err
}
var l []*InstanceGroupManager
for _, v := range m.Items {
res, err := unmarshalMapInstanceGroupManager(v, c, r)
if err != nil {
return nil, m.Token, err
}
res.Project = r.Project
res.Location = r.Location
l = append(l, res)
}
return l, m.Token, nil
}
func (c *Client) deleteAllInstanceGroupManager(ctx context.Context, f func(*InstanceGroupManager) bool, resources []*InstanceGroupManager) error {
var errors []string
for _, res := range resources {
if f(res) {
// We do not want deleteAll to fail on a deletion or else it will stop deleting other resources.
err := c.DeleteInstanceGroupManager(ctx, res)
if err != nil {
errors = append(errors, err.Error())
}
}
}
if len(errors) > 0 {
return fmt.Errorf("%v", strings.Join(errors, "\n"))
} else {
return nil
}
}
type deleteInstanceGroupManagerOperation struct{}
func (op *deleteInstanceGroupManagerOperation) do(ctx context.Context, r *InstanceGroupManager, c *Client) error {
r, err := c.GetInstanceGroupManager(ctx, r)
if err != nil {
if dcl.IsNotFound(err) {
c.Config.Logger.InfoWithContextf(ctx, "InstanceGroupManager not found, returning. Original error: %v", err)
return nil
}
c.Config.Logger.WarningWithContextf(ctx, "GetInstanceGroupManager checking for existence. error: %v", err)
return err
}
u, err := r.deleteURL(c.Config.BasePath)
if err != nil {
return err
}
// Delete should never have a body
body := &bytes.Buffer{}
resp, err := dcl.SendRequest(ctx, c.Config, "DELETE", u, body, c.Config.RetryProvider)
if err != nil {
return err
}
// wait for object to be deleted.
var o operations.ComputeOperation
if err := dcl.ParseResponse(resp.Response, &o); err != nil {
return err
}
if err := o.Wait(context.WithValue(ctx, dcl.DoNotLogRequestsKey, true), c.Config, r.basePath(), "GET"); err != nil {
return err
}
// We saw a race condition where for some successful delete operation, the Get calls returned resources for a short duration.
// This is the reason we are adding retry to handle that case.
retriesRemaining := 10
dcl.Do(ctx, func(ctx context.Context) (*dcl.RetryDetails, error) {
_, err := c.GetInstanceGroupManager(ctx, r)
if dcl.IsNotFound(err) {
return nil, nil
}
if retriesRemaining > 0 {
retriesRemaining--
return &dcl.RetryDetails{}, dcl.OperationNotDone{}
}
return nil, dcl.NotDeletedError{ExistingResource: r}
}, c.Config.RetryProvider)
return nil
}
// Create operations are similar to Update operations, although they do not have
// specific request objects. The Create request object is the json encoding of
// the resource, which is modified by res.marshal to form the base request body.
type createInstanceGroupManagerOperation struct {
response map[string]interface{}
}
func (op *createInstanceGroupManagerOperation) FirstResponse() (map[string]interface{}, bool) {
return op.response, len(op.response) > 0
}
func (op *createInstanceGroupManagerOperation) do(ctx context.Context, r *InstanceGroupManager, c *Client) error {
c.Config.Logger.InfoWithContextf(ctx, "Attempting to create %v", r)
u, err := r.createURL(c.Config.BasePath)
if err != nil {
return err
}
req, err := r.marshal(c)
if err != nil {
return err
}
resp, err := dcl.SendRequest(ctx, c.Config, "POST", u, bytes.NewBuffer(req), c.Config.RetryProvider)
if err != nil {
return err
}
// wait for object to be created.
var o operations.ComputeOperation
if err := dcl.ParseResponse(resp.Response, &o); err != nil {
return err
}
if err := o.Wait(context.WithValue(ctx, dcl.DoNotLogRequestsKey, true), c.Config, r.basePath(), "GET"); err != nil {
c.Config.Logger.Warningf("Creation failed after waiting for operation: %v", err)
return err
}
c.Config.Logger.InfoWithContextf(ctx, "Successfully waited for operation")
op.response, _ = o.FirstResponse()
if _, err := c.GetInstanceGroupManager(ctx, r); err != nil {
c.Config.Logger.WarningWithContextf(ctx, "get returned error: %v", err)
return err
}
return nil
}
func (c *Client) getInstanceGroupManagerRaw(ctx context.Context, r *InstanceGroupManager) ([]byte, error) {
u, err := r.getURL(c.Config.BasePath)
if err != nil {
return nil, err
}
resp, err := dcl.SendRequest(ctx, c.Config, "GET", u, &bytes.Buffer{}, c.Config.RetryProvider)
if err != nil {
return nil, err
}
defer resp.Response.Body.Close()
b, err := ioutil.ReadAll(resp.Response.Body)
if err != nil {
return nil, err
}
return b, nil
}
func (c *Client) instanceGroupManagerDiffsForRawDesired(ctx context.Context, rawDesired *InstanceGroupManager, opts ...dcl.ApplyOption) (initial, desired *InstanceGroupManager, diffs []*dcl.FieldDiff, err error) {
c.Config.Logger.InfoWithContext(ctx, "Fetching initial state...")
// First, let us see if the user provided a state hint. If they did, we will start fetching based on that.
var fetchState *InstanceGroupManager
if sh := dcl.FetchStateHint(opts); sh != nil {
if r, ok := sh.(*InstanceGroupManager); !ok {
c.Config.Logger.WarningWithContextf(ctx, "Initial state hint was of the wrong type; expected InstanceGroupManager, got %T", sh)
} else {
fetchState = r
}
}
if fetchState == nil {
fetchState = rawDesired
}
// 1.2: Retrieval of raw initial state from API
rawInitial, err := c.GetInstanceGroupManager(ctx, fetchState)
if rawInitial == nil {
if !dcl.IsNotFound(err) {
c.Config.Logger.WarningWithContextf(ctx, "Failed to retrieve whether a InstanceGroupManager resource already exists: %s", err)
return nil, nil, nil, fmt.Errorf("failed to retrieve InstanceGroupManager resource: %v", err)
}
c.Config.Logger.InfoWithContext(ctx, "Found that InstanceGroupManager resource did not exist.")
// Perform canonicalization to pick up defaults.
desired, err = canonicalizeInstanceGroupManagerDesiredState(rawDesired, rawInitial)
return nil, desired, nil, err
}
c.Config.Logger.InfoWithContextf(ctx, "Found initial state for InstanceGroupManager: %v", rawInitial)
c.Config.Logger.InfoWithContextf(ctx, "Initial desired state for InstanceGroupManager: %v", rawDesired)
// The Get call applies postReadExtract and so the result may contain fields that are not part of API version.
if err := extractInstanceGroupManagerFields(rawInitial); err != nil {
return nil, nil, nil, err
}
// 1.3: Canonicalize raw initial state into initial state.
initial, err = canonicalizeInstanceGroupManagerInitialState(rawInitial, rawDesired)
if err != nil {
return nil, nil, nil, err
}
c.Config.Logger.InfoWithContextf(ctx, "Canonicalized initial state for InstanceGroupManager: %v", initial)
// 1.4: Canonicalize raw desired state into desired state.
desired, err = canonicalizeInstanceGroupManagerDesiredState(rawDesired, rawInitial, opts...)
if err != nil {
return nil, nil, nil, err
}
c.Config.Logger.InfoWithContextf(ctx, "Canonicalized desired state for InstanceGroupManager: %v", desired)
// 2.1: Comparison of initial and desired state.
diffs, err = diffInstanceGroupManager(c, desired, initial, opts...)
return initial, desired, diffs, err
}
func canonicalizeInstanceGroupManagerInitialState(rawInitial, rawDesired *InstanceGroupManager) (*InstanceGroupManager, error) {
// TODO(magic-modules-eng): write canonicalizer once relevant traits are added.
if !dcl.IsZeroValue(rawInitial.InstanceTemplate) {
// Check if anything else is set.
if dcl.AnySet(rawInitial.Versions) {
rawInitial.InstanceTemplate = dcl.String("")
}
}
if !dcl.IsZeroValue(rawInitial.Versions) {
// Check if anything else is set.
if dcl.AnySet(rawInitial.InstanceTemplate) {
rawInitial.Versions = []InstanceGroupManagerVersions{}
}
}
return rawInitial, nil
}
/*
* Canonicalizers
*
* These are responsible for converting either a user-specified config or a
* GCP API response to a standard format that can be used for difference checking.
* */
func canonicalizeInstanceGroupManagerDesiredState(rawDesired, rawInitial *InstanceGroupManager, opts ...dcl.ApplyOption) (*InstanceGroupManager, error) {
if rawInitial == nil {
// Since the initial state is empty, the desired state is all we have.
// We canonicalize the remaining nested objects with nil to pick up defaults.
rawDesired.DistributionPolicy = canonicalizeInstanceGroupManagerDistributionPolicy(rawDesired.DistributionPolicy, nil, opts...)
rawDesired.CurrentActions = canonicalizeInstanceGroupManagerCurrentActions(rawDesired.CurrentActions, nil, opts...)
rawDesired.Status = canonicalizeInstanceGroupManagerStatus(rawDesired.Status, nil, opts...)
rawDesired.UpdatePolicy = canonicalizeInstanceGroupManagerUpdatePolicy(rawDesired.UpdatePolicy, nil, opts...)
rawDesired.StatefulPolicy = canonicalizeInstanceGroupManagerStatefulPolicy(rawDesired.StatefulPolicy, nil, opts...)
return rawDesired, nil
}
canonicalDesired := &InstanceGroupManager{}
if dcl.StringCanonicalize(rawDesired.Name, rawInitial.Name) {
canonicalDesired.Name = rawInitial.Name
} else {
canonicalDesired.Name = rawDesired.Name
}
if dcl.StringCanonicalize(rawDesired.Description, rawInitial.Description) {
canonicalDesired.Description = rawInitial.Description
} else {
canonicalDesired.Description = rawDesired.Description
}
canonicalDesired.DistributionPolicy = canonicalizeInstanceGroupManagerDistributionPolicy(rawDesired.DistributionPolicy, rawInitial.DistributionPolicy, opts...)
if dcl.IsZeroValue(rawDesired.InstanceTemplate) || (dcl.IsEmptyValueIndirect(rawDesired.InstanceTemplate) && dcl.IsEmptyValueIndirect(rawInitial.InstanceTemplate)) {
// Desired and initial values are equivalent, so set canonical desired value to initial value.
canonicalDesired.InstanceTemplate = rawInitial.InstanceTemplate
} else {
canonicalDesired.InstanceTemplate = rawDesired.InstanceTemplate
}
canonicalDesired.Versions = canonicalizeInstanceGroupManagerVersionsSlice(rawDesired.Versions, rawInitial.Versions, opts...)
if dcl.StringArrayCanonicalize(rawDesired.TargetPools, rawInitial.TargetPools) {
canonicalDesired.TargetPools = rawInitial.TargetPools
} else {
canonicalDesired.TargetPools = rawDesired.TargetPools
}
if dcl.StringCanonicalize(rawDesired.BaseInstanceName, rawInitial.BaseInstanceName) {
canonicalDesired.BaseInstanceName = rawInitial.BaseInstanceName
} else {
canonicalDesired.BaseInstanceName = rawDesired.BaseInstanceName
}
if dcl.IsZeroValue(rawDesired.TargetSize) || (dcl.IsEmptyValueIndirect(rawDesired.TargetSize) && dcl.IsEmptyValueIndirect(rawInitial.TargetSize)) {
// Desired and initial values are equivalent, so set canonical desired value to initial value.
canonicalDesired.TargetSize = rawInitial.TargetSize
} else {
canonicalDesired.TargetSize = rawDesired.TargetSize
}
canonicalDesired.AutoHealingPolicies = canonicalizeInstanceGroupManagerAutoHealingPoliciesSlice(rawDesired.AutoHealingPolicies, rawInitial.AutoHealingPolicies, opts...)
canonicalDesired.UpdatePolicy = canonicalizeInstanceGroupManagerUpdatePolicy(rawDesired.UpdatePolicy, rawInitial.UpdatePolicy, opts...)
canonicalDesired.NamedPorts = canonicalizeInstanceGroupManagerNamedPortsSlice(rawDesired.NamedPorts, rawInitial.NamedPorts, opts...)
canonicalDesired.StatefulPolicy = canonicalizeInstanceGroupManagerStatefulPolicy(rawDesired.StatefulPolicy, rawInitial.StatefulPolicy, opts...)
if dcl.IsZeroValue(rawDesired.ServiceAccount) || (dcl.IsEmptyValueIndirect(rawDesired.ServiceAccount) && dcl.IsEmptyValueIndirect(rawInitial.ServiceAccount)) {
// Desired and initial values are equivalent, so set canonical desired value to initial value.
canonicalDesired.ServiceAccount = rawInitial.ServiceAccount
} else {
canonicalDesired.ServiceAccount = rawDesired.ServiceAccount
}
if dcl.IsZeroValue(rawDesired.FailoverAction) || (dcl.IsEmptyValueIndirect(rawDesired.FailoverAction) && dcl.IsEmptyValueIndirect(rawInitial.FailoverAction)) {
// Desired and initial values are equivalent, so set canonical desired value to initial value.
canonicalDesired.FailoverAction = rawInitial.FailoverAction
} else {
canonicalDesired.FailoverAction = rawDesired.FailoverAction
}
if dcl.NameToSelfLink(rawDesired.Project, rawInitial.Project) {
canonicalDesired.Project = rawInitial.Project
} else {
canonicalDesired.Project = rawDesired.Project
}
if dcl.NameToSelfLink(rawDesired.Location, rawInitial.Location) {
canonicalDesired.Location = rawInitial.Location
} else {
canonicalDesired.Location = rawDesired.Location
}
if canonicalDesired.InstanceTemplate != nil {
// Check if anything else is set.
if dcl.AnySet(rawDesired.Versions) {
canonicalDesired.InstanceTemplate = dcl.String("")
}
}
if canonicalDesired.Versions != nil {
// Check if anything else is set.
if dcl.AnySet(rawDesired.InstanceTemplate) {
canonicalDesired.Versions = []InstanceGroupManagerVersions{}
}
}
return canonicalDesired, nil
}
func canonicalizeInstanceGroupManagerNewState(c *Client, rawNew, rawDesired *InstanceGroupManager) (*InstanceGroupManager, error) {
if dcl.IsEmptyValueIndirect(rawNew.Id) && dcl.IsEmptyValueIndirect(rawDesired.Id) {
rawNew.Id = rawDesired.Id
} else {
}
if dcl.IsEmptyValueIndirect(rawNew.CreationTimestamp) && dcl.IsEmptyValueIndirect(rawDesired.CreationTimestamp) {
rawNew.CreationTimestamp = rawDesired.CreationTimestamp
} else {
if dcl.StringCanonicalize(rawDesired.CreationTimestamp, rawNew.CreationTimestamp) {
rawNew.CreationTimestamp = rawDesired.CreationTimestamp
}
}
if dcl.IsEmptyValueIndirect(rawNew.Name) && dcl.IsEmptyValueIndirect(rawDesired.Name) {
rawNew.Name = rawDesired.Name
} else {
if dcl.StringCanonicalize(rawDesired.Name, rawNew.Name) {
rawNew.Name = rawDesired.Name
}
}
if dcl.IsEmptyValueIndirect(rawNew.Description) && dcl.IsEmptyValueIndirect(rawDesired.Description) {
rawNew.Description = rawDesired.Description
} else {
if dcl.StringCanonicalize(rawDesired.Description, rawNew.Description) {
rawNew.Description = rawDesired.Description
}
}
if dcl.IsEmptyValueIndirect(rawNew.Zone) && dcl.IsEmptyValueIndirect(rawDesired.Zone) {
rawNew.Zone = rawDesired.Zone
} else {
if dcl.StringCanonicalize(rawDesired.Zone, rawNew.Zone) {
rawNew.Zone = rawDesired.Zone
}
}
if dcl.IsEmptyValueIndirect(rawNew.Region) && dcl.IsEmptyValueIndirect(rawDesired.Region) {
rawNew.Region = rawDesired.Region
} else {
if dcl.StringCanonicalize(rawDesired.Region, rawNew.Region) {
rawNew.Region = rawDesired.Region
}
}
if dcl.IsEmptyValueIndirect(rawNew.DistributionPolicy) && dcl.IsEmptyValueIndirect(rawDesired.DistributionPolicy) {
rawNew.DistributionPolicy = rawDesired.DistributionPolicy
} else {
rawNew.DistributionPolicy = canonicalizeNewInstanceGroupManagerDistributionPolicy(c, rawDesired.DistributionPolicy, rawNew.DistributionPolicy)
}
if dcl.IsEmptyValueIndirect(rawNew.InstanceTemplate) && dcl.IsEmptyValueIndirect(rawDesired.InstanceTemplate) {
rawNew.InstanceTemplate = rawDesired.InstanceTemplate
} else {
}
if dcl.IsEmptyValueIndirect(rawNew.Versions) && dcl.IsEmptyValueIndirect(rawDesired.Versions) {
rawNew.Versions = rawDesired.Versions
} else {
rawNew.Versions = canonicalizeNewInstanceGroupManagerVersionsSlice(c, rawDesired.Versions, rawNew.Versions)
}
if dcl.IsEmptyValueIndirect(rawNew.InstanceGroup) && dcl.IsEmptyValueIndirect(rawDesired.InstanceGroup) {
rawNew.InstanceGroup = rawDesired.InstanceGroup
} else {
}
if dcl.IsEmptyValueIndirect(rawNew.TargetPools) && dcl.IsEmptyValueIndirect(rawDesired.TargetPools) {
rawNew.TargetPools = rawDesired.TargetPools
} else {
if dcl.StringArrayCanonicalize(rawDesired.TargetPools, rawNew.TargetPools) {
rawNew.TargetPools = rawDesired.TargetPools
}
}
if dcl.IsEmptyValueIndirect(rawNew.BaseInstanceName) && dcl.IsEmptyValueIndirect(rawDesired.BaseInstanceName) {
rawNew.BaseInstanceName = rawDesired.BaseInstanceName
} else {
if dcl.StringCanonicalize(rawDesired.BaseInstanceName, rawNew.BaseInstanceName) {
rawNew.BaseInstanceName = rawDesired.BaseInstanceName
}
}
if dcl.IsEmptyValueIndirect(rawNew.Fingerprint) && dcl.IsEmptyValueIndirect(rawDesired.Fingerprint) {
rawNew.Fingerprint = rawDesired.Fingerprint
} else {
if dcl.StringCanonicalize(rawDesired.Fingerprint, rawNew.Fingerprint) {
rawNew.Fingerprint = rawDesired.Fingerprint
}
}
if dcl.IsEmptyValueIndirect(rawNew.CurrentActions) && dcl.IsEmptyValueIndirect(rawDesired.CurrentActions) {
rawNew.CurrentActions = rawDesired.CurrentActions
} else {
rawNew.CurrentActions = canonicalizeNewInstanceGroupManagerCurrentActions(c, rawDesired.CurrentActions, rawNew.CurrentActions)
}
if dcl.IsEmptyValueIndirect(rawNew.Status) && dcl.IsEmptyValueIndirect(rawDesired.Status) {
rawNew.Status = rawDesired.Status
} else {
rawNew.Status = canonicalizeNewInstanceGroupManagerStatus(c, rawDesired.Status, rawNew.Status)
}
if dcl.IsEmptyValueIndirect(rawNew.TargetSize) && dcl.IsEmptyValueIndirect(rawDesired.TargetSize) {
rawNew.TargetSize = rawDesired.TargetSize
} else {
}
if dcl.IsEmptyValueIndirect(rawNew.SelfLink) && dcl.IsEmptyValueIndirect(rawDesired.SelfLink) {
rawNew.SelfLink = rawDesired.SelfLink
} else {
if dcl.StringCanonicalize(rawDesired.SelfLink, rawNew.SelfLink) {
rawNew.SelfLink = rawDesired.SelfLink
}
}
if dcl.IsEmptyValueIndirect(rawNew.AutoHealingPolicies) && dcl.IsEmptyValueIndirect(rawDesired.AutoHealingPolicies) {
rawNew.AutoHealingPolicies = rawDesired.AutoHealingPolicies
} else {
rawNew.AutoHealingPolicies = canonicalizeNewInstanceGroupManagerAutoHealingPoliciesSlice(c, rawDesired.AutoHealingPolicies, rawNew.AutoHealingPolicies)
}
if dcl.IsEmptyValueIndirect(rawNew.UpdatePolicy) && dcl.IsEmptyValueIndirect(rawDesired.UpdatePolicy) {
rawNew.UpdatePolicy = rawDesired.UpdatePolicy
} else {
rawNew.UpdatePolicy = canonicalizeNewInstanceGroupManagerUpdatePolicy(c, rawDesired.UpdatePolicy, rawNew.UpdatePolicy)
}
if dcl.IsEmptyValueIndirect(rawNew.NamedPorts) && dcl.IsEmptyValueIndirect(rawDesired.NamedPorts) {
rawNew.NamedPorts = rawDesired.NamedPorts
} else {
rawNew.NamedPorts = canonicalizeNewInstanceGroupManagerNamedPortsSlice(c, rawDesired.NamedPorts, rawNew.NamedPorts)
}
if dcl.IsEmptyValueIndirect(rawNew.StatefulPolicy) && dcl.IsEmptyValueIndirect(rawDesired.StatefulPolicy) {
rawNew.StatefulPolicy = rawDesired.StatefulPolicy
} else {
rawNew.StatefulPolicy = canonicalizeNewInstanceGroupManagerStatefulPolicy(c, rawDesired.StatefulPolicy, rawNew.StatefulPolicy)
}
if dcl.IsEmptyValueIndirect(rawNew.ServiceAccount) && dcl.IsEmptyValueIndirect(rawDesired.ServiceAccount) {
rawNew.ServiceAccount = rawDesired.ServiceAccount
} else {
}
if dcl.IsEmptyValueIndirect(rawNew.FailoverAction) && dcl.IsEmptyValueIndirect(rawDesired.FailoverAction) {
rawNew.FailoverAction = rawDesired.FailoverAction
} else {
}
rawNew.Project = rawDesired.Project
rawNew.Location = rawDesired.Location
return rawNew, nil
}
func canonicalizeInstanceGroupManagerDistributionPolicy(des, initial *InstanceGroupManagerDistributionPolicy, opts ...dcl.ApplyOption) *InstanceGroupManagerDistributionPolicy {
if des == nil {
return initial
}
if des.empty {
return des
}
if initial == nil {
return des
}
cDes := &InstanceGroupManagerDistributionPolicy{}
cDes.Zones = canonicalizeInstanceGroupManagerDistributionPolicyZonesSlice(des.Zones, initial.Zones, opts...)
if dcl.IsZeroValue(des.TargetShape) || (dcl.IsEmptyValueIndirect(des.TargetShape) && dcl.IsEmptyValueIndirect(initial.TargetShape)) {
// Desired and initial values are equivalent, so set canonical desired value to initial value.
cDes.TargetShape = initial.TargetShape
} else {
cDes.TargetShape = des.TargetShape
}
return cDes
}
func canonicalizeInstanceGroupManagerDistributionPolicySlice(des, initial []InstanceGroupManagerDistributionPolicy, opts ...dcl.ApplyOption) []InstanceGroupManagerDistributionPolicy {
if dcl.IsEmptyValueIndirect(des) {
return initial
}
if len(des) != len(initial) {
items := make([]InstanceGroupManagerDistributionPolicy, 0, len(des))
for _, d := range des {
cd := canonicalizeInstanceGroupManagerDistributionPolicy(&d, nil, opts...)
if cd != nil {
items = append(items, *cd)
}
}
return items
}
items := make([]InstanceGroupManagerDistributionPolicy, 0, len(des))
for i, d := range des {
cd := canonicalizeInstanceGroupManagerDistributionPolicy(&d, &initial[i], opts...)
if cd != nil {
items = append(items, *cd)
}
}
return items
}
func canonicalizeNewInstanceGroupManagerDistributionPolicy(c *Client, des, nw *InstanceGroupManagerDistributionPolicy) *InstanceGroupManagerDistributionPolicy {
if des == nil {
return nw
}
if nw == nil {
if dcl.IsEmptyValueIndirect(des) {
c.Config.Logger.Info("Found explicitly empty value for InstanceGroupManagerDistributionPolicy while comparing non-nil desired to nil actual. Returning desired object.")
return des
}
return nil
}
nw.Zones = canonicalizeNewInstanceGroupManagerDistributionPolicyZonesSlice(c, des.Zones, nw.Zones)
return nw
}
func canonicalizeNewInstanceGroupManagerDistributionPolicySet(c *Client, des, nw []InstanceGroupManagerDistributionPolicy) []InstanceGroupManagerDistributionPolicy {
if des == nil {
return nw
}
// Find the elements in des that are also in nw and canonicalize them. Remove matched elements from nw.
var items []InstanceGroupManagerDistributionPolicy
for _, d := range des {
matchedIndex := -1
for i, n := range nw {
if diffs, _ := compareInstanceGroupManagerDistributionPolicyNewStyle(&d, &n, dcl.FieldName{}); len(diffs) == 0 {
matchedIndex = i
break
}
}
if matchedIndex != -1 {
items = append(items, *canonicalizeNewInstanceGroupManagerDistributionPolicy(c, &d, &nw[matchedIndex]))
nw = append(nw[:matchedIndex], nw[matchedIndex+1:]...)
}
}
// Also include elements in nw that are not matched in des.
items = append(items, nw...)
return items
}
func canonicalizeNewInstanceGroupManagerDistributionPolicySlice(c *Client, des, nw []InstanceGroupManagerDistributionPolicy) []InstanceGroupManagerDistributionPolicy {
if des == nil {
return nw
}
// Lengths are unequal. A diff will occur later, so we shouldn't canonicalize.
// Return the original array.
if len(des) != len(nw) {
return nw
}
var items []InstanceGroupManagerDistributionPolicy
for i, d := range des {
n := nw[i]
items = append(items, *canonicalizeNewInstanceGroupManagerDistributionPolicy(c, &d, &n))
}
return items
}
func canonicalizeInstanceGroupManagerDistributionPolicyZones(des, initial *InstanceGroupManagerDistributionPolicyZones, opts ...dcl.ApplyOption) *InstanceGroupManagerDistributionPolicyZones {
if des == nil {
return initial
}
if des.empty {
return des
}
if initial == nil {
return des
}
cDes := &InstanceGroupManagerDistributionPolicyZones{}
if dcl.StringCanonicalize(des.Zone, initial.Zone) || dcl.IsZeroValue(des.Zone) {
cDes.Zone = initial.Zone
} else {
cDes.Zone = des.Zone
}
return cDes
}
func canonicalizeInstanceGroupManagerDistributionPolicyZonesSlice(des, initial []InstanceGroupManagerDistributionPolicyZones, opts ...dcl.ApplyOption) []InstanceGroupManagerDistributionPolicyZones {
if des == nil {
return initial
}
if len(des) != len(initial) {
items := make([]InstanceGroupManagerDistributionPolicyZones, 0, len(des))
for _, d := range des {
cd := canonicalizeInstanceGroupManagerDistributionPolicyZones(&d, nil, opts...)
if cd != nil {
items = append(items, *cd)
}
}
return items
}
items := make([]InstanceGroupManagerDistributionPolicyZones, 0, len(des))
for i, d := range des {
cd := canonicalizeInstanceGroupManagerDistributionPolicyZones(&d, &initial[i], opts...)
if cd != nil {
items = append(items, *cd)
}
}
return items
}
func canonicalizeNewInstanceGroupManagerDistributionPolicyZones(c *Client, des, nw *InstanceGroupManagerDistributionPolicyZones) *InstanceGroupManagerDistributionPolicyZones {
if des == nil {
return nw
}
if nw == nil {
if dcl.IsEmptyValueIndirect(des) {
c.Config.Logger.Info("Found explicitly empty value for InstanceGroupManagerDistributionPolicyZones while comparing non-nil desired to nil actual. Returning desired object.")
return des
}
return nil
}
if dcl.StringCanonicalize(des.Zone, nw.Zone) {
nw.Zone = des.Zone
}
return nw
}
func canonicalizeNewInstanceGroupManagerDistributionPolicyZonesSet(c *Client, des, nw []InstanceGroupManagerDistributionPolicyZones) []InstanceGroupManagerDistributionPolicyZones {
if des == nil {
return nw
}
// Find the elements in des that are also in nw and canonicalize them. Remove matched elements from nw.
var items []InstanceGroupManagerDistributionPolicyZones
for _, d := range des {
matchedIndex := -1
for i, n := range nw {
if diffs, _ := compareInstanceGroupManagerDistributionPolicyZonesNewStyle(&d, &n, dcl.FieldName{}); len(diffs) == 0 {
matchedIndex = i
break
}
}
if matchedIndex != -1 {
items = append(items, *canonicalizeNewInstanceGroupManagerDistributionPolicyZones(c, &d, &nw[matchedIndex]))
nw = append(nw[:matchedIndex], nw[matchedIndex+1:]...)
}
}
// Also include elements in nw that are not matched in des.
items = append(items, nw...)
return items
}
func canonicalizeNewInstanceGroupManagerDistributionPolicyZonesSlice(c *Client, des, nw []InstanceGroupManagerDistributionPolicyZones) []InstanceGroupManagerDistributionPolicyZones {
if des == nil {
return nw
}
// Lengths are unequal. A diff will occur later, so we shouldn't canonicalize.
// Return the original array.
if len(des) != len(nw) {
return nw
}
var items []InstanceGroupManagerDistributionPolicyZones
for i, d := range des {
n := nw[i]
items = append(items, *canonicalizeNewInstanceGroupManagerDistributionPolicyZones(c, &d, &n))
}
return items
}
func canonicalizeInstanceGroupManagerVersions(des, initial *InstanceGroupManagerVersions, opts ...dcl.ApplyOption) *InstanceGroupManagerVersions {
if des == nil {
return initial
}
if des.empty {
return des
}
if initial == nil {
return des
}
cDes := &InstanceGroupManagerVersions{}
if dcl.StringCanonicalize(des.Name, initial.Name) || dcl.IsZeroValue(des.Name) {
cDes.Name = initial.Name
} else {
cDes.Name = des.Name
}
if dcl.IsZeroValue(des.InstanceTemplate) || (dcl.IsEmptyValueIndirect(des.InstanceTemplate) && dcl.IsEmptyValueIndirect(initial.InstanceTemplate)) {
// Desired and initial values are equivalent, so set canonical desired value to initial value.
cDes.InstanceTemplate = initial.InstanceTemplate
} else {
cDes.InstanceTemplate = des.InstanceTemplate
}
cDes.TargetSize = canonicalizeInstanceGroupManagerVersionsTargetSize(des.TargetSize, initial.TargetSize, opts...)
return cDes
}
func canonicalizeInstanceGroupManagerVersionsSlice(des, initial []InstanceGroupManagerVersions, opts ...dcl.ApplyOption) []InstanceGroupManagerVersions {
if des == nil {
return initial
}
if len(des) != len(initial) {
items := make([]InstanceGroupManagerVersions, 0, len(des))
for _, d := range des {
cd := canonicalizeInstanceGroupManagerVersions(&d, nil, opts...)
if cd != nil {
items = append(items, *cd)
}
}
return items
}
items := make([]InstanceGroupManagerVersions, 0, len(des))
for i, d := range des {
cd := canonicalizeInstanceGroupManagerVersions(&d, &initial[i], opts...)
if cd != nil {
items = append(items, *cd)
}
}
return items
}
func canonicalizeNewInstanceGroupManagerVersions(c *Client, des, nw *InstanceGroupManagerVersions) *InstanceGroupManagerVersions {
if des == nil {
return nw
}
if nw == nil {
if dcl.IsEmptyValueIndirect(des) {
c.Config.Logger.Info("Found explicitly empty value for InstanceGroupManagerVersions while comparing non-nil desired to nil actual. Returning desired object.")
return des
}
return nil
}
if dcl.StringCanonicalize(des.Name, nw.Name) {
nw.Name = des.Name
}
nw.TargetSize = canonicalizeNewInstanceGroupManagerVersionsTargetSize(c, des.TargetSize, nw.TargetSize)
return nw
}
func canonicalizeNewInstanceGroupManagerVersionsSet(c *Client, des, nw []InstanceGroupManagerVersions) []InstanceGroupManagerVersions {
if des == nil {
return nw
}
// Find the elements in des that are also in nw and canonicalize them. Remove matched elements from nw.
var items []InstanceGroupManagerVersions
for _, d := range des {
matchedIndex := -1
for i, n := range nw {
if diffs, _ := compareInstanceGroupManagerVersionsNewStyle(&d, &n, dcl.FieldName{}); len(diffs) == 0 {
matchedIndex = i
break
}
}
if matchedIndex != -1 {
items = append(items, *canonicalizeNewInstanceGroupManagerVersions(c, &d, &nw[matchedIndex]))
nw = append(nw[:matchedIndex], nw[matchedIndex+1:]...)
}
}
// Also include elements in nw that are not matched in des.
items = append(items, nw...)
return items
}
func canonicalizeNewInstanceGroupManagerVersionsSlice(c *Client, des, nw []InstanceGroupManagerVersions) []InstanceGroupManagerVersions {
if des == nil {
return nw
}
// Lengths are unequal. A diff will occur later, so we shouldn't canonicalize.
// Return the original array.
if len(des) != len(nw) {
return nw
}
var items []InstanceGroupManagerVersions
for i, d := range des {
n := nw[i]
items = append(items, *canonicalizeNewInstanceGroupManagerVersions(c, &d, &n))
}
return items
}
func canonicalizeInstanceGroupManagerVersionsTargetSize(des, initial *InstanceGroupManagerVersionsTargetSize, opts ...dcl.ApplyOption) *InstanceGroupManagerVersionsTargetSize {
if des == nil {
return initial
}
if des.empty {
return des
}
if initial == nil {
return des
}
cDes := &InstanceGroupManagerVersionsTargetSize{}
if dcl.IsZeroValue(des.Fixed) || (dcl.IsEmptyValueIndirect(des.Fixed) && dcl.IsEmptyValueIndirect(initial.Fixed)) {
// Desired and initial values are equivalent, so set canonical desired value to initial value.
cDes.Fixed = initial.Fixed
} else {
cDes.Fixed = des.Fixed
}
if dcl.IsZeroValue(des.Percent) || (dcl.IsEmptyValueIndirect(des.Percent) && dcl.IsEmptyValueIndirect(initial.Percent)) {
// Desired and initial values are equivalent, so set canonical desired value to initial value.
cDes.Percent = initial.Percent
} else {
cDes.Percent = des.Percent
}
return cDes
}
func canonicalizeInstanceGroupManagerVersionsTargetSizeSlice(des, initial []InstanceGroupManagerVersionsTargetSize, opts ...dcl.ApplyOption) []InstanceGroupManagerVersionsTargetSize {
if dcl.IsEmptyValueIndirect(des) {
return initial
}
if len(des) != len(initial) {
items := make([]InstanceGroupManagerVersionsTargetSize, 0, len(des))
for _, d := range des {
cd := canonicalizeInstanceGroupManagerVersionsTargetSize(&d, nil, opts...)
if cd != nil {
items = append(items, *cd)
}
}
return items
}
items := make([]InstanceGroupManagerVersionsTargetSize, 0, len(des))
for i, d := range des {
cd := canonicalizeInstanceGroupManagerVersionsTargetSize(&d, &initial[i], opts...)
if cd != nil {
items = append(items, *cd)
}
}
return items
}
func canonicalizeNewInstanceGroupManagerVersionsTargetSize(c *Client, des, nw *InstanceGroupManagerVersionsTargetSize) *InstanceGroupManagerVersionsTargetSize {
if des == nil {
return nw
}
if nw == nil {
if dcl.IsEmptyValueIndirect(des) {
c.Config.Logger.Info("Found explicitly empty value for InstanceGroupManagerVersionsTargetSize while comparing non-nil desired to nil actual. Returning desired object.")
return des
}
return nil
}
return nw
}
func canonicalizeNewInstanceGroupManagerVersionsTargetSizeSet(c *Client, des, nw []InstanceGroupManagerVersionsTargetSize) []InstanceGroupManagerVersionsTargetSize {
if des == nil {
return nw
}
// Find the elements in des that are also in nw and canonicalize them. Remove matched elements from nw.
var items []InstanceGroupManagerVersionsTargetSize
for _, d := range des {
matchedIndex := -1
for i, n := range nw {
if diffs, _ := compareInstanceGroupManagerVersionsTargetSizeNewStyle(&d, &n, dcl.FieldName{}); len(diffs) == 0 {
matchedIndex = i
break
}
}
if matchedIndex != -1 {
items = append(items, *canonicalizeNewInstanceGroupManagerVersionsTargetSize(c, &d, &nw[matchedIndex]))
nw = append(nw[:matchedIndex], nw[matchedIndex+1:]...)
}
}
// Also include elements in nw that are not matched in des.
items = append(items, nw...)
return items
}
func canonicalizeNewInstanceGroupManagerVersionsTargetSizeSlice(c *Client, des, nw []InstanceGroupManagerVersionsTargetSize) []InstanceGroupManagerVersionsTargetSize {
if des == nil {
return nw
}
// Lengths are unequal. A diff will occur later, so we shouldn't canonicalize.
// Return the original array.
if len(des) != len(nw) {
return nw
}
var items []InstanceGroupManagerVersionsTargetSize
for i, d := range des {
n := nw[i]
items = append(items, *canonicalizeNewInstanceGroupManagerVersionsTargetSize(c, &d, &n))
}
return items
}
func canonicalizeInstanceGroupManagerCurrentActions(des, initial *InstanceGroupManagerCurrentActions, opts ...dcl.ApplyOption) *InstanceGroupManagerCurrentActions {
if des == nil {
return initial
}
if des.empty {
return des
}
if initial == nil {
return des
}
cDes := &InstanceGroupManagerCurrentActions{}
return cDes
}
func canonicalizeInstanceGroupManagerCurrentActionsSlice(des, initial []InstanceGroupManagerCurrentActions, opts ...dcl.ApplyOption) []InstanceGroupManagerCurrentActions {
if dcl.IsEmptyValueIndirect(des) {
return initial
}
if len(des) != len(initial) {
items := make([]InstanceGroupManagerCurrentActions, 0, len(des))
for _, d := range des {
cd := canonicalizeInstanceGroupManagerCurrentActions(&d, nil, opts...)
if cd != nil {
items = append(items, *cd)
}
}
return items
}
items := make([]InstanceGroupManagerCurrentActions, 0, len(des))
for i, d := range des {
cd := canonicalizeInstanceGroupManagerCurrentActions(&d, &initial[i], opts...)
if cd != nil {
items = append(items, *cd)
}
}
return items
}
func canonicalizeNewInstanceGroupManagerCurrentActions(c *Client, des, nw *InstanceGroupManagerCurrentActions) *InstanceGroupManagerCurrentActions {
if des == nil {
return nw
}
if nw == nil {
if dcl.IsEmptyValueIndirect(des) {
c.Config.Logger.Info("Found explicitly empty value for InstanceGroupManagerCurrentActions while comparing non-nil desired to nil actual. Returning desired object.")
return des
}
return nil
}
return nw
}
func canonicalizeNewInstanceGroupManagerCurrentActionsSet(c *Client, des, nw []InstanceGroupManagerCurrentActions) []InstanceGroupManagerCurrentActions {
if des == nil {
return nw
}
// Find the elements in des that are also in nw and canonicalize them. Remove matched elements from nw.
var items []InstanceGroupManagerCurrentActions
for _, d := range des {
matchedIndex := -1
for i, n := range nw {
if diffs, _ := compareInstanceGroupManagerCurrentActionsNewStyle(&d, &n, dcl.FieldName{}); len(diffs) == 0 {
matchedIndex = i
break
}
}
if matchedIndex != -1 {
items = append(items, *canonicalizeNewInstanceGroupManagerCurrentActions(c, &d, &nw[matchedIndex]))
nw = append(nw[:matchedIndex], nw[matchedIndex+1:]...)
}
}
// Also include elements in nw that are not matched in des.
items = append(items, nw...)
return items
}
func canonicalizeNewInstanceGroupManagerCurrentActionsSlice(c *Client, des, nw []InstanceGroupManagerCurrentActions) []InstanceGroupManagerCurrentActions {
if des == nil {
return nw
}
// Lengths are unequal. A diff will occur later, so we shouldn't canonicalize.
// Return the original array.
if len(des) != len(nw) {
return nw
}
var items []InstanceGroupManagerCurrentActions
for i, d := range des {
n := nw[i]
items = append(items, *canonicalizeNewInstanceGroupManagerCurrentActions(c, &d, &n))
}
return items
}
func canonicalizeInstanceGroupManagerStatus(des, initial *InstanceGroupManagerStatus, opts ...dcl.ApplyOption) *InstanceGroupManagerStatus {
if des == nil {
return initial
}
if des.empty {
return des
}
if initial == nil {
return des
}
cDes := &InstanceGroupManagerStatus{}
return cDes
}
func canonicalizeInstanceGroupManagerStatusSlice(des, initial []InstanceGroupManagerStatus, opts ...dcl.ApplyOption) []InstanceGroupManagerStatus {
if dcl.IsEmptyValueIndirect(des) {
return initial
}
if len(des) != len(initial) {
items := make([]InstanceGroupManagerStatus, 0, len(des))
for _, d := range des {
cd := canonicalizeInstanceGroupManagerStatus(&d, nil, opts...)
if cd != nil {
items = append(items, *cd)
}
}
return items
}
items := make([]InstanceGroupManagerStatus, 0, len(des))
for i, d := range des {
cd := canonicalizeInstanceGroupManagerStatus(&d, &initial[i], opts...)
if cd != nil {
items = append(items, *cd)
}
}
return items
}
func canonicalizeNewInstanceGroupManagerStatus(c *Client, des, nw *InstanceGroupManagerStatus) *InstanceGroupManagerStatus {
if des == nil {
return nw
}
if nw == nil {
if dcl.IsEmptyValueIndirect(des) {
c.Config.Logger.Info("Found explicitly empty value for InstanceGroupManagerStatus while comparing non-nil desired to nil actual. Returning desired object.")
return des
}
return nil
}
if dcl.BoolCanonicalize(des.IsStable, nw.IsStable) {
nw.IsStable = des.IsStable
}
nw.VersionTarget = canonicalizeNewInstanceGroupManagerStatusVersionTarget(c, des.VersionTarget, nw.VersionTarget)
nw.Stateful = canonicalizeNewInstanceGroupManagerStatusStateful(c, des.Stateful, nw.Stateful)
if dcl.StringCanonicalize(des.Autoscaler, nw.Autoscaler) {
nw.Autoscaler = des.Autoscaler
}
return nw
}
func canonicalizeNewInstanceGroupManagerStatusSet(c *Client, des, nw []InstanceGroupManagerStatus) []InstanceGroupManagerStatus {
if des == nil {
return nw
}
// Find the elements in des that are also in nw and canonicalize them. Remove matched elements from nw.
var items []InstanceGroupManagerStatus
for _, d := range des {
matchedIndex := -1
for i, n := range nw {
if diffs, _ := compareInstanceGroupManagerStatusNewStyle(&d, &n, dcl.FieldName{}); len(diffs) == 0 {
matchedIndex = i
break
}
}
if matchedIndex != -1 {
items = append(items, *canonicalizeNewInstanceGroupManagerStatus(c, &d, &nw[matchedIndex]))
nw = append(nw[:matchedIndex], nw[matchedIndex+1:]...)
}
}
// Also include elements in nw that are not matched in des.
items = append(items, nw...)
return items
}
func canonicalizeNewInstanceGroupManagerStatusSlice(c *Client, des, nw []InstanceGroupManagerStatus) []InstanceGroupManagerStatus {
if des == nil {
return nw
}
// Lengths are unequal. A diff will occur later, so we shouldn't canonicalize.
// Return the original array.
if len(des) != len(nw) {
return nw
}
var items []InstanceGroupManagerStatus
for i, d := range des {
n := nw[i]
items = append(items, *canonicalizeNewInstanceGroupManagerStatus(c, &d, &n))
}
return items
}
func canonicalizeInstanceGroupManagerStatusVersionTarget(des, initial *InstanceGroupManagerStatusVersionTarget, opts ...dcl.ApplyOption) *InstanceGroupManagerStatusVersionTarget {
if des == nil {
return initial
}
if des.empty {
return des
}
if initial == nil {
return des
}
cDes := &InstanceGroupManagerStatusVersionTarget{}
return cDes
}
func canonicalizeInstanceGroupManagerStatusVersionTargetSlice(des, initial []InstanceGroupManagerStatusVersionTarget, opts ...dcl.ApplyOption) []InstanceGroupManagerStatusVersionTarget {
if dcl.IsEmptyValueIndirect(des) {
return initial
}
if len(des) != len(initial) {
items := make([]InstanceGroupManagerStatusVersionTarget, 0, len(des))
for _, d := range des {
cd := canonicalizeInstanceGroupManagerStatusVersionTarget(&d, nil, opts...)
if cd != nil {
items = append(items, *cd)
}
}
return items
}
items := make([]InstanceGroupManagerStatusVersionTarget, 0, len(des))
for i, d := range des {
cd := canonicalizeInstanceGroupManagerStatusVersionTarget(&d, &initial[i], opts...)
if cd != nil {
items = append(items, *cd)
}
}
return items
}
func canonicalizeNewInstanceGroupManagerStatusVersionTarget(c *Client, des, nw *InstanceGroupManagerStatusVersionTarget) *InstanceGroupManagerStatusVersionTarget {
if des == nil {
return nw
}
if nw == nil {
if dcl.IsEmptyValueIndirect(des) {
c.Config.Logger.Info("Found explicitly empty value for InstanceGroupManagerStatusVersionTarget while comparing non-nil desired to nil actual. Returning desired object.")
return des
}
return nil
}
if dcl.BoolCanonicalize(des.IsReached, nw.IsReached) {
nw.IsReached = des.IsReached
}
return nw
}
func canonicalizeNewInstanceGroupManagerStatusVersionTargetSet(c *Client, des, nw []InstanceGroupManagerStatusVersionTarget) []InstanceGroupManagerStatusVersionTarget {
if des == nil {
return nw
}
// Find the elements in des that are also in nw and canonicalize them. Remove matched elements from nw.
var items []InstanceGroupManagerStatusVersionTarget
for _, d := range des {
matchedIndex := -1
for i, n := range nw {
if diffs, _ := compareInstanceGroupManagerStatusVersionTargetNewStyle(&d, &n, dcl.FieldName{}); len(diffs) == 0 {
matchedIndex = i
break
}
}
if matchedIndex != -1 {
items = append(items, *canonicalizeNewInstanceGroupManagerStatusVersionTarget(c, &d, &nw[matchedIndex]))
nw = append(nw[:matchedIndex], nw[matchedIndex+1:]...)
}
}
// Also include elements in nw that are not matched in des.
items = append(items, nw...)
return items
}
func canonicalizeNewInstanceGroupManagerStatusVersionTargetSlice(c *Client, des, nw []InstanceGroupManagerStatusVersionTarget) []InstanceGroupManagerStatusVersionTarget {
if des == nil {
return nw
}
// Lengths are unequal. A diff will occur later, so we shouldn't canonicalize.
// Return the original array.
if len(des) != len(nw) {
return nw
}
var items []InstanceGroupManagerStatusVersionTarget
for i, d := range des {
n := nw[i]
items = append(items, *canonicalizeNewInstanceGroupManagerStatusVersionTarget(c, &d, &n))
}
return items
}
func canonicalizeInstanceGroupManagerStatusStateful(des, initial *InstanceGroupManagerStatusStateful, opts ...dcl.ApplyOption) *InstanceGroupManagerStatusStateful {
if des == nil {
return initial
}
if des.empty {
return des
}
if initial == nil {
return des
}
cDes := &InstanceGroupManagerStatusStateful{}
return cDes
}
func canonicalizeInstanceGroupManagerStatusStatefulSlice(des, initial []InstanceGroupManagerStatusStateful, opts ...dcl.ApplyOption) []InstanceGroupManagerStatusStateful {
if dcl.IsEmptyValueIndirect(des) {
return initial
}
if len(des) != len(initial) {
items := make([]InstanceGroupManagerStatusStateful, 0, len(des))
for _, d := range des {
cd := canonicalizeInstanceGroupManagerStatusStateful(&d, nil, opts...)
if cd != nil {
items = append(items, *cd)
}
}
return items
}
items := make([]InstanceGroupManagerStatusStateful, 0, len(des))
for i, d := range des {
cd := canonicalizeInstanceGroupManagerStatusStateful(&d, &initial[i], opts...)
if cd != nil {
items = append(items, *cd)
}
}
return items
}
func canonicalizeNewInstanceGroupManagerStatusStateful(c *Client, des, nw *InstanceGroupManagerStatusStateful) *InstanceGroupManagerStatusStateful {
if des == nil {
return nw
}
if nw == nil {
if dcl.IsEmptyValueIndirect(des) {
c.Config.Logger.Info("Found explicitly empty value for InstanceGroupManagerStatusStateful while comparing non-nil desired to nil actual. Returning desired object.")
return des
}
return nil
}
if dcl.BoolCanonicalize(des.HasStatefulConfig, nw.HasStatefulConfig) {
nw.HasStatefulConfig = des.HasStatefulConfig
}
nw.PerInstanceConfigs = canonicalizeNewInstanceGroupManagerStatusStatefulPerInstanceConfigs(c, des.PerInstanceConfigs, nw.PerInstanceConfigs)
if dcl.BoolCanonicalize(des.IsStateful, nw.IsStateful) {
nw.IsStateful = des.IsStateful
}
return nw
}
func canonicalizeNewInstanceGroupManagerStatusStatefulSet(c *Client, des, nw []InstanceGroupManagerStatusStateful) []InstanceGroupManagerStatusStateful {
if des == nil {
return nw
}
// Find the elements in des that are also in nw and canonicalize them. Remove matched elements from nw.
var items []InstanceGroupManagerStatusStateful
for _, d := range des {
matchedIndex := -1
for i, n := range nw {
if diffs, _ := compareInstanceGroupManagerStatusStatefulNewStyle(&d, &n, dcl.FieldName{}); len(diffs) == 0 {
matchedIndex = i
break
}
}
if matchedIndex != -1 {
items = append(items, *canonicalizeNewInstanceGroupManagerStatusStateful(c, &d, &nw[matchedIndex]))
nw = append(nw[:matchedIndex], nw[matchedIndex+1:]...)
}
}
// Also include elements in nw that are not matched in des.
items = append(items, nw...)
return items
}
func canonicalizeNewInstanceGroupManagerStatusStatefulSlice(c *Client, des, nw []InstanceGroupManagerStatusStateful) []InstanceGroupManagerStatusStateful {
if des == nil {
return nw
}
// Lengths are unequal. A diff will occur later, so we shouldn't canonicalize.
// Return the original array.
if len(des) != len(nw) {
return nw
}
var items []InstanceGroupManagerStatusStateful
for i, d := range des {
n := nw[i]
items = append(items, *canonicalizeNewInstanceGroupManagerStatusStateful(c, &d, &n))
}
return items
}
func canonicalizeInstanceGroupManagerStatusStatefulPerInstanceConfigs(des, initial *InstanceGroupManagerStatusStatefulPerInstanceConfigs, opts ...dcl.ApplyOption) *InstanceGroupManagerStatusStatefulPerInstanceConfigs {
if des == nil {
return initial
}
if des.empty {
return des
}
if initial == nil {
return des
}
cDes := &InstanceGroupManagerStatusStatefulPerInstanceConfigs{}
if dcl.BoolCanonicalize(des.AllEffective, initial.AllEffective) || dcl.IsZeroValue(des.AllEffective) {
cDes.AllEffective = initial.AllEffective
} else {
cDes.AllEffective = des.AllEffective
}
return cDes
}
func canonicalizeInstanceGroupManagerStatusStatefulPerInstanceConfigsSlice(des, initial []InstanceGroupManagerStatusStatefulPerInstanceConfigs, opts ...dcl.ApplyOption) []InstanceGroupManagerStatusStatefulPerInstanceConfigs {
if dcl.IsEmptyValueIndirect(des) {
return initial
}
if len(des) != len(initial) {
items := make([]InstanceGroupManagerStatusStatefulPerInstanceConfigs, 0, len(des))
for _, d := range des {
cd := canonicalizeInstanceGroupManagerStatusStatefulPerInstanceConfigs(&d, nil, opts...)
if cd != nil {
items = append(items, *cd)
}
}
return items
}
items := make([]InstanceGroupManagerStatusStatefulPerInstanceConfigs, 0, len(des))
for i, d := range des {
cd := canonicalizeInstanceGroupManagerStatusStatefulPerInstanceConfigs(&d, &initial[i], opts...)
if cd != nil {
items = append(items, *cd)
}
}
return items
}
func canonicalizeNewInstanceGroupManagerStatusStatefulPerInstanceConfigs(c *Client, des, nw *InstanceGroupManagerStatusStatefulPerInstanceConfigs) *InstanceGroupManagerStatusStatefulPerInstanceConfigs {
if des == nil {
return nw
}
if nw == nil {
if dcl.IsEmptyValueIndirect(des) {
c.Config.Logger.Info("Found explicitly empty value for InstanceGroupManagerStatusStatefulPerInstanceConfigs while comparing non-nil desired to nil actual. Returning desired object.")
return des
}
return nil
}
if dcl.BoolCanonicalize(des.AllEffective, nw.AllEffective) {
nw.AllEffective = des.AllEffective
}
return nw
}
func canonicalizeNewInstanceGroupManagerStatusStatefulPerInstanceConfigsSet(c *Client, des, nw []InstanceGroupManagerStatusStatefulPerInstanceConfigs) []InstanceGroupManagerStatusStatefulPerInstanceConfigs {
if des == nil {
return nw
}
// Find the elements in des that are also in nw and canonicalize them. Remove matched elements from nw.
var items []InstanceGroupManagerStatusStatefulPerInstanceConfigs
for _, d := range des {
matchedIndex := -1
for i, n := range nw {
if diffs, _ := compareInstanceGroupManagerStatusStatefulPerInstanceConfigsNewStyle(&d, &n, dcl.FieldName{}); len(diffs) == 0 {
matchedIndex = i
break
}
}
if matchedIndex != -1 {
items = append(items, *canonicalizeNewInstanceGroupManagerStatusStatefulPerInstanceConfigs(c, &d, &nw[matchedIndex]))
nw = append(nw[:matchedIndex], nw[matchedIndex+1:]...)
}
}
// Also include elements in nw that are not matched in des.
items = append(items, nw...)
return items
}
func canonicalizeNewInstanceGroupManagerStatusStatefulPerInstanceConfigsSlice(c *Client, des, nw []InstanceGroupManagerStatusStatefulPerInstanceConfigs) []InstanceGroupManagerStatusStatefulPerInstanceConfigs {
if des == nil {
return nw
}
// Lengths are unequal. A diff will occur later, so we shouldn't canonicalize.
// Return the original array.
if len(des) != len(nw) {
return nw
}
var items []InstanceGroupManagerStatusStatefulPerInstanceConfigs
for i, d := range des {
n := nw[i]
items = append(items, *canonicalizeNewInstanceGroupManagerStatusStatefulPerInstanceConfigs(c, &d, &n))
}
return items
}
func canonicalizeInstanceGroupManagerAutoHealingPolicies(des, initial *InstanceGroupManagerAutoHealingPolicies, opts ...dcl.ApplyOption) *InstanceGroupManagerAutoHealingPolicies {
if des == nil {
return initial
}
if des.empty {
return des
}
if initial == nil {
return des
}
cDes := &InstanceGroupManagerAutoHealingPolicies{}
if dcl.IsZeroValue(des.HealthCheck) || (dcl.IsEmptyValueIndirect(des.HealthCheck) && dcl.IsEmptyValueIndirect(initial.HealthCheck)) {
// Desired and initial values are equivalent, so set canonical desired value to initial value.
cDes.HealthCheck = initial.HealthCheck
} else {
cDes.HealthCheck = des.HealthCheck
}
if dcl.IsZeroValue(des.InitialDelaySec) || (dcl.IsEmptyValueIndirect(des.InitialDelaySec) && dcl.IsEmptyValueIndirect(initial.InitialDelaySec)) {
// Desired and initial values are equivalent, so set canonical desired value to initial value.
cDes.InitialDelaySec = initial.InitialDelaySec
} else {
cDes.InitialDelaySec = des.InitialDelaySec
}
return cDes
}
func canonicalizeInstanceGroupManagerAutoHealingPoliciesSlice(des, initial []InstanceGroupManagerAutoHealingPolicies, opts ...dcl.ApplyOption) []InstanceGroupManagerAutoHealingPolicies {
if des == nil {
return initial
}
if len(des) != len(initial) {
items := make([]InstanceGroupManagerAutoHealingPolicies, 0, len(des))
for _, d := range des {
cd := canonicalizeInstanceGroupManagerAutoHealingPolicies(&d, nil, opts...)
if cd != nil {
items = append(items, *cd)
}
}
return items
}
items := make([]InstanceGroupManagerAutoHealingPolicies, 0, len(des))
for i, d := range des {
cd := canonicalizeInstanceGroupManagerAutoHealingPolicies(&d, &initial[i], opts...)
if cd != nil {
items = append(items, *cd)
}
}
return items
}
func canonicalizeNewInstanceGroupManagerAutoHealingPolicies(c *Client, des, nw *InstanceGroupManagerAutoHealingPolicies) *InstanceGroupManagerAutoHealingPolicies {
if des == nil {
return nw
}
if nw == nil {
if dcl.IsEmptyValueIndirect(des) {
c.Config.Logger.Info("Found explicitly empty value for InstanceGroupManagerAutoHealingPolicies while comparing non-nil desired to nil actual. Returning desired object.")
return des
}
return nil
}
return nw
}
func canonicalizeNewInstanceGroupManagerAutoHealingPoliciesSet(c *Client, des, nw []InstanceGroupManagerAutoHealingPolicies) []InstanceGroupManagerAutoHealingPolicies {
if des == nil {
return nw
}
// Find the elements in des that are also in nw and canonicalize them. Remove matched elements from nw.
var items []InstanceGroupManagerAutoHealingPolicies
for _, d := range des {
matchedIndex := -1
for i, n := range nw {
if diffs, _ := compareInstanceGroupManagerAutoHealingPoliciesNewStyle(&d, &n, dcl.FieldName{}); len(diffs) == 0 {
matchedIndex = i
break
}
}
if matchedIndex != -1 {
items = append(items, *canonicalizeNewInstanceGroupManagerAutoHealingPolicies(c, &d, &nw[matchedIndex]))
nw = append(nw[:matchedIndex], nw[matchedIndex+1:]...)
}
}
// Also include elements in nw that are not matched in des.
items = append(items, nw...)
return items
}
func canonicalizeNewInstanceGroupManagerAutoHealingPoliciesSlice(c *Client, des, nw []InstanceGroupManagerAutoHealingPolicies) []InstanceGroupManagerAutoHealingPolicies {
if des == nil {
return nw
}
// Lengths are unequal. A diff will occur later, so we shouldn't canonicalize.
// Return the original array.
if len(des) != len(nw) {
return nw
}
var items []InstanceGroupManagerAutoHealingPolicies
for i, d := range des {
n := nw[i]
items = append(items, *canonicalizeNewInstanceGroupManagerAutoHealingPolicies(c, &d, &n))
}
return items
}
func canonicalizeInstanceGroupManagerUpdatePolicy(des, initial *InstanceGroupManagerUpdatePolicy, opts ...dcl.ApplyOption) *InstanceGroupManagerUpdatePolicy {
if des == nil {
return initial
}
if des.empty {
return des
}
if initial == nil {
return des
}
cDes := &InstanceGroupManagerUpdatePolicy{}
if dcl.IsZeroValue(des.Type) || (dcl.IsEmptyValueIndirect(des.Type) && dcl.IsEmptyValueIndirect(initial.Type)) {
// Desired and initial values are equivalent, so set canonical desired value to initial value.
cDes.Type = initial.Type
} else {
cDes.Type = des.Type
}
if dcl.IsZeroValue(des.InstanceRedistributionType) || (dcl.IsEmptyValueIndirect(des.InstanceRedistributionType) && dcl.IsEmptyValueIndirect(initial.InstanceRedistributionType)) {
// Desired and initial values are equivalent, so set canonical desired value to initial value.
cDes.InstanceRedistributionType = initial.InstanceRedistributionType
} else {
cDes.InstanceRedistributionType = des.InstanceRedistributionType
}
if dcl.IsZeroValue(des.MinimalAction) || (dcl.IsEmptyValueIndirect(des.MinimalAction) && dcl.IsEmptyValueIndirect(initial.MinimalAction)) {
// Desired and initial values are equivalent, so set canonical desired value to initial value.
cDes.MinimalAction = initial.MinimalAction
} else {
cDes.MinimalAction = des.MinimalAction
}
cDes.MaxSurge = canonicalizeInstanceGroupManagerUpdatePolicyMaxSurge(des.MaxSurge, initial.MaxSurge, opts...)
cDes.MaxUnavailable = canonicalizeInstanceGroupManagerUpdatePolicyMaxUnavailable(des.MaxUnavailable, initial.MaxUnavailable, opts...)
if dcl.IsZeroValue(des.ReplacementMethod) || (dcl.IsEmptyValueIndirect(des.ReplacementMethod) && dcl.IsEmptyValueIndirect(initial.ReplacementMethod)) {
// Desired and initial values are equivalent, so set canonical desired value to initial value.
cDes.ReplacementMethod = initial.ReplacementMethod
} else {
cDes.ReplacementMethod = des.ReplacementMethod
}
if dcl.IsZeroValue(des.MostDisruptiveAllowedAction) || (dcl.IsEmptyValueIndirect(des.MostDisruptiveAllowedAction) && dcl.IsEmptyValueIndirect(initial.MostDisruptiveAllowedAction)) {
// Desired and initial values are equivalent, so set canonical desired value to initial value.
cDes.MostDisruptiveAllowedAction = initial.MostDisruptiveAllowedAction
} else {
cDes.MostDisruptiveAllowedAction = des.MostDisruptiveAllowedAction
}
if dcl.IsZeroValue(des.MinReadySec) || (dcl.IsEmptyValueIndirect(des.MinReadySec) && dcl.IsEmptyValueIndirect(initial.MinReadySec)) {
// Desired and initial values are equivalent, so set canonical desired value to initial value.
cDes.MinReadySec = initial.MinReadySec
} else {
cDes.MinReadySec = des.MinReadySec
}
return cDes
}
func canonicalizeInstanceGroupManagerUpdatePolicySlice(des, initial []InstanceGroupManagerUpdatePolicy, opts ...dcl.ApplyOption) []InstanceGroupManagerUpdatePolicy {
if dcl.IsEmptyValueIndirect(des) {
return initial
}
if len(des) != len(initial) {
items := make([]InstanceGroupManagerUpdatePolicy, 0, len(des))
for _, d := range des {
cd := canonicalizeInstanceGroupManagerUpdatePolicy(&d, nil, opts...)
if cd != nil {
items = append(items, *cd)
}
}
return items
}
items := make([]InstanceGroupManagerUpdatePolicy, 0, len(des))
for i, d := range des {
cd := canonicalizeInstanceGroupManagerUpdatePolicy(&d, &initial[i], opts...)
if cd != nil {
items = append(items, *cd)
}
}
return items
}
func canonicalizeNewInstanceGroupManagerUpdatePolicy(c *Client, des, nw *InstanceGroupManagerUpdatePolicy) *InstanceGroupManagerUpdatePolicy {
if des == nil {
return nw
}
if nw == nil {
if dcl.IsEmptyValueIndirect(des) {
c.Config.Logger.Info("Found explicitly empty value for InstanceGroupManagerUpdatePolicy while comparing non-nil desired to nil actual. Returning desired object.")
return des
}
return nil
}
nw.MaxSurge = canonicalizeNewInstanceGroupManagerUpdatePolicyMaxSurge(c, des.MaxSurge, nw.MaxSurge)
nw.MaxUnavailable = canonicalizeNewInstanceGroupManagerUpdatePolicyMaxUnavailable(c, des.MaxUnavailable, nw.MaxUnavailable)
return nw
}
func canonicalizeNewInstanceGroupManagerUpdatePolicySet(c *Client, des, nw []InstanceGroupManagerUpdatePolicy) []InstanceGroupManagerUpdatePolicy {
if des == nil {
return nw
}
// Find the elements in des that are also in nw and canonicalize them. Remove matched elements from nw.
var items []InstanceGroupManagerUpdatePolicy
for _, d := range des {
matchedIndex := -1
for i, n := range nw {
if diffs, _ := compareInstanceGroupManagerUpdatePolicyNewStyle(&d, &n, dcl.FieldName{}); len(diffs) == 0 {
matchedIndex = i
break
}
}
if matchedIndex != -1 {
items = append(items, *canonicalizeNewInstanceGroupManagerUpdatePolicy(c, &d, &nw[matchedIndex]))
nw = append(nw[:matchedIndex], nw[matchedIndex+1:]...)
}
}
// Also include elements in nw that are not matched in des.
items = append(items, nw...)
return items
}
func canonicalizeNewInstanceGroupManagerUpdatePolicySlice(c *Client, des, nw []InstanceGroupManagerUpdatePolicy) []InstanceGroupManagerUpdatePolicy {
if des == nil {
return nw
}
// Lengths are unequal. A diff will occur later, so we shouldn't canonicalize.
// Return the original array.
if len(des) != len(nw) {
return nw
}
var items []InstanceGroupManagerUpdatePolicy
for i, d := range des {
n := nw[i]
items = append(items, *canonicalizeNewInstanceGroupManagerUpdatePolicy(c, &d, &n))
}
return items
}
func canonicalizeInstanceGroupManagerUpdatePolicyMaxSurge(des, initial *InstanceGroupManagerUpdatePolicyMaxSurge, opts ...dcl.ApplyOption) *InstanceGroupManagerUpdatePolicyMaxSurge {
if des == nil {
return initial
}
if des.empty {
return des
}
if initial == nil {
return des
}
cDes := &InstanceGroupManagerUpdatePolicyMaxSurge{}
if dcl.IsZeroValue(des.Fixed) || (dcl.IsEmptyValueIndirect(des.Fixed) && dcl.IsEmptyValueIndirect(initial.Fixed)) {
// Desired and initial values are equivalent, so set canonical desired value to initial value.
cDes.Fixed = initial.Fixed
} else {
cDes.Fixed = des.Fixed
}
if dcl.IsZeroValue(des.Percent) || (dcl.IsEmptyValueIndirect(des.Percent) && dcl.IsEmptyValueIndirect(initial.Percent)) {
// Desired and initial values are equivalent, so set canonical desired value to initial value.
cDes.Percent = initial.Percent
} else {
cDes.Percent = des.Percent
}
return cDes
}
func canonicalizeInstanceGroupManagerUpdatePolicyMaxSurgeSlice(des, initial []InstanceGroupManagerUpdatePolicyMaxSurge, opts ...dcl.ApplyOption) []InstanceGroupManagerUpdatePolicyMaxSurge {
if des == nil {
return initial
}
if len(des) != len(initial) {
items := make([]InstanceGroupManagerUpdatePolicyMaxSurge, 0, len(des))
for _, d := range des {
cd := canonicalizeInstanceGroupManagerUpdatePolicyMaxSurge(&d, nil, opts...)
if cd != nil {
items = append(items, *cd)
}
}
return items
}
items := make([]InstanceGroupManagerUpdatePolicyMaxSurge, 0, len(des))
for i, d := range des {
cd := canonicalizeInstanceGroupManagerUpdatePolicyMaxSurge(&d, &initial[i], opts...)
if cd != nil {
items = append(items, *cd)
}
}
return items
}
func canonicalizeNewInstanceGroupManagerUpdatePolicyMaxSurge(c *Client, des, nw *InstanceGroupManagerUpdatePolicyMaxSurge) *InstanceGroupManagerUpdatePolicyMaxSurge {
if des == nil {
return nw
}
if nw == nil {
if dcl.IsEmptyValueIndirect(des) {
c.Config.Logger.Info("Found explicitly empty value for InstanceGroupManagerUpdatePolicyMaxSurge while comparing non-nil desired to nil actual. Returning desired object.")
return des
}
return nil
}
return nw
}
func canonicalizeNewInstanceGroupManagerUpdatePolicyMaxSurgeSet(c *Client, des, nw []InstanceGroupManagerUpdatePolicyMaxSurge) []InstanceGroupManagerUpdatePolicyMaxSurge {
if des == nil {
return nw
}
// Find the elements in des that are also in nw and canonicalize them. Remove matched elements from nw.
var items []InstanceGroupManagerUpdatePolicyMaxSurge
for _, d := range des {
matchedIndex := -1
for i, n := range nw {
if diffs, _ := compareInstanceGroupManagerUpdatePolicyMaxSurgeNewStyle(&d, &n, dcl.FieldName{}); len(diffs) == 0 {
matchedIndex = i
break
}
}
if matchedIndex != -1 {
items = append(items, *canonicalizeNewInstanceGroupManagerUpdatePolicyMaxSurge(c, &d, &nw[matchedIndex]))
nw = append(nw[:matchedIndex], nw[matchedIndex+1:]...)
}
}
// Also include elements in nw that are not matched in des.
items = append(items, nw...)
return items
}
func canonicalizeNewInstanceGroupManagerUpdatePolicyMaxSurgeSlice(c *Client, des, nw []InstanceGroupManagerUpdatePolicyMaxSurge) []InstanceGroupManagerUpdatePolicyMaxSurge {
if des == nil {
return nw
}
// Lengths are unequal. A diff will occur later, so we shouldn't canonicalize.
// Return the original array.
if len(des) != len(nw) {
return nw
}
var items []InstanceGroupManagerUpdatePolicyMaxSurge
for i, d := range des {
n := nw[i]
items = append(items, *canonicalizeNewInstanceGroupManagerUpdatePolicyMaxSurge(c, &d, &n))
}
return items
}
func canonicalizeInstanceGroupManagerUpdatePolicyMaxUnavailable(des, initial *InstanceGroupManagerUpdatePolicyMaxUnavailable, opts ...dcl.ApplyOption) *InstanceGroupManagerUpdatePolicyMaxUnavailable {
if des == nil {
return initial
}
if des.empty {
return des
}
if initial == nil {
return des
}
cDes := &InstanceGroupManagerUpdatePolicyMaxUnavailable{}
if dcl.IsZeroValue(des.Fixed) || (dcl.IsEmptyValueIndirect(des.Fixed) && dcl.IsEmptyValueIndirect(initial.Fixed)) {
// Desired and initial values are equivalent, so set canonical desired value to initial value.
cDes.Fixed = initial.Fixed
} else {
cDes.Fixed = des.Fixed
}
if dcl.IsZeroValue(des.Percent) || (dcl.IsEmptyValueIndirect(des.Percent) && dcl.IsEmptyValueIndirect(initial.Percent)) {
// Desired and initial values are equivalent, so set canonical desired value to initial value.
cDes.Percent = initial.Percent
} else {
cDes.Percent = des.Percent
}
return cDes
}
func canonicalizeInstanceGroupManagerUpdatePolicyMaxUnavailableSlice(des, initial []InstanceGroupManagerUpdatePolicyMaxUnavailable, opts ...dcl.ApplyOption) []InstanceGroupManagerUpdatePolicyMaxUnavailable {
if dcl.IsEmptyValueIndirect(des) {
return initial
}
if len(des) != len(initial) {
items := make([]InstanceGroupManagerUpdatePolicyMaxUnavailable, 0, len(des))
for _, d := range des {
cd := canonicalizeInstanceGroupManagerUpdatePolicyMaxUnavailable(&d, nil, opts...)
if cd != nil {
items = append(items, *cd)
}
}
return items
}
items := make([]InstanceGroupManagerUpdatePolicyMaxUnavailable, 0, len(des))
for i, d := range des {
cd := canonicalizeInstanceGroupManagerUpdatePolicyMaxUnavailable(&d, &initial[i], opts...)
if cd != nil {
items = append(items, *cd)
}
}
return items
}
func canonicalizeNewInstanceGroupManagerUpdatePolicyMaxUnavailable(c *Client, des, nw *InstanceGroupManagerUpdatePolicyMaxUnavailable) *InstanceGroupManagerUpdatePolicyMaxUnavailable {
if des == nil {
return nw
}
if nw == nil {
if dcl.IsEmptyValueIndirect(des) {
c.Config.Logger.Info("Found explicitly empty value for InstanceGroupManagerUpdatePolicyMaxUnavailable while comparing non-nil desired to nil actual. Returning desired object.")
return des
}
return nil
}
return nw
}
func canonicalizeNewInstanceGroupManagerUpdatePolicyMaxUnavailableSet(c *Client, des, nw []InstanceGroupManagerUpdatePolicyMaxUnavailable) []InstanceGroupManagerUpdatePolicyMaxUnavailable {
if des == nil {
return nw
}
// Find the elements in des that are also in nw and canonicalize them. Remove matched elements from nw.
var items []InstanceGroupManagerUpdatePolicyMaxUnavailable
for _, d := range des {
matchedIndex := -1
for i, n := range nw {
if diffs, _ := compareInstanceGroupManagerUpdatePolicyMaxUnavailableNewStyle(&d, &n, dcl.FieldName{}); len(diffs) == 0 {
matchedIndex = i
break
}
}
if matchedIndex != -1 {
items = append(items, *canonicalizeNewInstanceGroupManagerUpdatePolicyMaxUnavailable(c, &d, &nw[matchedIndex]))
nw = append(nw[:matchedIndex], nw[matchedIndex+1:]...)
}
}
// Also include elements in nw that are not matched in des.
items = append(items, nw...)
return items
}
func canonicalizeNewInstanceGroupManagerUpdatePolicyMaxUnavailableSlice(c *Client, des, nw []InstanceGroupManagerUpdatePolicyMaxUnavailable) []InstanceGroupManagerUpdatePolicyMaxUnavailable {
if des == nil {
return nw
}
// Lengths are unequal. A diff will occur later, so we shouldn't canonicalize.
// Return the original array.
if len(des) != len(nw) {
return nw
}
var items []InstanceGroupManagerUpdatePolicyMaxUnavailable
for i, d := range des {
n := nw[i]
items = append(items, *canonicalizeNewInstanceGroupManagerUpdatePolicyMaxUnavailable(c, &d, &n))
}
return items
}
func canonicalizeInstanceGroupManagerNamedPorts(des, initial *InstanceGroupManagerNamedPorts, opts ...dcl.ApplyOption) *InstanceGroupManagerNamedPorts {
if des == nil {
return initial
}
if des.empty {
return des
}
if initial == nil {
return des
}
cDes := &InstanceGroupManagerNamedPorts{}
if dcl.StringCanonicalize(des.Name, initial.Name) || dcl.IsZeroValue(des.Name) {
cDes.Name = initial.Name
} else {
cDes.Name = des.Name
}
if dcl.IsZeroValue(des.Port) || (dcl.IsEmptyValueIndirect(des.Port) && dcl.IsEmptyValueIndirect(initial.Port)) {
// Desired and initial values are equivalent, so set canonical desired value to initial value.
cDes.Port = initial.Port
} else {
cDes.Port = des.Port
}
return cDes
}
func canonicalizeInstanceGroupManagerNamedPortsSlice(des, initial []InstanceGroupManagerNamedPorts, opts ...dcl.ApplyOption) []InstanceGroupManagerNamedPorts {
if des == nil {
return initial
}
if len(des) != len(initial) {
items := make([]InstanceGroupManagerNamedPorts, 0, len(des))
for _, d := range des {
cd := canonicalizeInstanceGroupManagerNamedPorts(&d, nil, opts...)
if cd != nil {
items = append(items, *cd)
}
}
return items
}
items := make([]InstanceGroupManagerNamedPorts, 0, len(des))
for i, d := range des {
cd := canonicalizeInstanceGroupManagerNamedPorts(&d, &initial[i], opts...)
if cd != nil {
items = append(items, *cd)
}
}
return items
}
func canonicalizeNewInstanceGroupManagerNamedPorts(c *Client, des, nw *InstanceGroupManagerNamedPorts) *InstanceGroupManagerNamedPorts {
if des == nil {
return nw
}
if nw == nil {
if dcl.IsEmptyValueIndirect(des) {
c.Config.Logger.Info("Found explicitly empty value for InstanceGroupManagerNamedPorts while comparing non-nil desired to nil actual. Returning desired object.")
return des
}
return nil
}
if dcl.StringCanonicalize(des.Name, nw.Name) {
nw.Name = des.Name
}
return nw
}
func canonicalizeNewInstanceGroupManagerNamedPortsSet(c *Client, des, nw []InstanceGroupManagerNamedPorts) []InstanceGroupManagerNamedPorts {
if des == nil {
return nw
}
// Find the elements in des that are also in nw and canonicalize them. Remove matched elements from nw.
var items []InstanceGroupManagerNamedPorts
for _, d := range des {
matchedIndex := -1
for i, n := range nw {
if diffs, _ := compareInstanceGroupManagerNamedPortsNewStyle(&d, &n, dcl.FieldName{}); len(diffs) == 0 {
matchedIndex = i
break
}
}
if matchedIndex != -1 {
items = append(items, *canonicalizeNewInstanceGroupManagerNamedPorts(c, &d, &nw[matchedIndex]))
nw = append(nw[:matchedIndex], nw[matchedIndex+1:]...)
}
}
// Also include elements in nw that are not matched in des.
items = append(items, nw...)
return items
}
func canonicalizeNewInstanceGroupManagerNamedPortsSlice(c *Client, des, nw []InstanceGroupManagerNamedPorts) []InstanceGroupManagerNamedPorts {
if des == nil {
return nw
}
// Lengths are unequal. A diff will occur later, so we shouldn't canonicalize.
// Return the original array.
if len(des) != len(nw) {
return nw
}
var items []InstanceGroupManagerNamedPorts
for i, d := range des {
n := nw[i]
items = append(items, *canonicalizeNewInstanceGroupManagerNamedPorts(c, &d, &n))
}
return items
}
func canonicalizeInstanceGroupManagerStatefulPolicy(des, initial *InstanceGroupManagerStatefulPolicy, opts ...dcl.ApplyOption) *InstanceGroupManagerStatefulPolicy {
if des == nil {
return initial
}
if des.empty {
return des
}
if initial == nil {
return des
}
cDes := &InstanceGroupManagerStatefulPolicy{}
cDes.PreservedState = canonicalizeInstanceGroupManagerStatefulPolicyPreservedState(des.PreservedState, initial.PreservedState, opts...)
return cDes
}
func canonicalizeInstanceGroupManagerStatefulPolicySlice(des, initial []InstanceGroupManagerStatefulPolicy, opts ...dcl.ApplyOption) []InstanceGroupManagerStatefulPolicy {
if dcl.IsEmptyValueIndirect(des) {
return initial
}
if len(des) != len(initial) {
items := make([]InstanceGroupManagerStatefulPolicy, 0, len(des))
for _, d := range des {
cd := canonicalizeInstanceGroupManagerStatefulPolicy(&d, nil, opts...)
if cd != nil {
items = append(items, *cd)
}
}
return items
}
items := make([]InstanceGroupManagerStatefulPolicy, 0, len(des))
for i, d := range des {
cd := canonicalizeInstanceGroupManagerStatefulPolicy(&d, &initial[i], opts...)
if cd != nil {
items = append(items, *cd)
}
}
return items
}
func canonicalizeNewInstanceGroupManagerStatefulPolicy(c *Client, des, nw *InstanceGroupManagerStatefulPolicy) *InstanceGroupManagerStatefulPolicy {
if des == nil {
return nw
}
if nw == nil {
if dcl.IsEmptyValueIndirect(des) {
c.Config.Logger.Info("Found explicitly empty value for InstanceGroupManagerStatefulPolicy while comparing non-nil desired to nil actual. Returning desired object.")
return des
}
return nil
}
nw.PreservedState = canonicalizeNewInstanceGroupManagerStatefulPolicyPreservedState(c, des.PreservedState, nw.PreservedState)
return nw
}
func canonicalizeNewInstanceGroupManagerStatefulPolicySet(c *Client, des, nw []InstanceGroupManagerStatefulPolicy) []InstanceGroupManagerStatefulPolicy {
if des == nil {
return nw
}
// Find the elements in des that are also in nw and canonicalize them. Remove matched elements from nw.
var items []InstanceGroupManagerStatefulPolicy
for _, d := range des {
matchedIndex := -1
for i, n := range nw {
if diffs, _ := compareInstanceGroupManagerStatefulPolicyNewStyle(&d, &n, dcl.FieldName{}); len(diffs) == 0 {
matchedIndex = i
break
}
}
if matchedIndex != -1 {
items = append(items, *canonicalizeNewInstanceGroupManagerStatefulPolicy(c, &d, &nw[matchedIndex]))
nw = append(nw[:matchedIndex], nw[matchedIndex+1:]...)
}
}
// Also include elements in nw that are not matched in des.
items = append(items, nw...)
return items
}
func canonicalizeNewInstanceGroupManagerStatefulPolicySlice(c *Client, des, nw []InstanceGroupManagerStatefulPolicy) []InstanceGroupManagerStatefulPolicy {
if des == nil {
return nw
}
// Lengths are unequal. A diff will occur later, so we shouldn't canonicalize.
// Return the original array.
if len(des) != len(nw) {
return nw
}
var items []InstanceGroupManagerStatefulPolicy
for i, d := range des {
n := nw[i]
items = append(items, *canonicalizeNewInstanceGroupManagerStatefulPolicy(c, &d, &n))
}
return items
}
func canonicalizeInstanceGroupManagerStatefulPolicyPreservedState(des, initial *InstanceGroupManagerStatefulPolicyPreservedState, opts ...dcl.ApplyOption) *InstanceGroupManagerStatefulPolicyPreservedState {
if des == nil {
return initial
}
if des.empty {
return des
}
if initial == nil {
return des
}
cDes := &InstanceGroupManagerStatefulPolicyPreservedState{}
if dcl.IsZeroValue(des.Disks) || (dcl.IsEmptyValueIndirect(des.Disks) && dcl.IsEmptyValueIndirect(initial.Disks)) {
// Desired and initial values are equivalent, so set canonical desired value to initial value.
cDes.Disks = initial.Disks
} else {
cDes.Disks = des.Disks
}
if dcl.IsZeroValue(des.InternalIps) || (dcl.IsEmptyValueIndirect(des.InternalIps) && dcl.IsEmptyValueIndirect(initial.InternalIps)) {
// Desired and initial values are equivalent, so set canonical desired value to initial value.
cDes.InternalIps = initial.InternalIps
} else {
cDes.InternalIps = des.InternalIps
}
if dcl.IsZeroValue(des.ExternalIps) || (dcl.IsEmptyValueIndirect(des.ExternalIps) && dcl.IsEmptyValueIndirect(initial.ExternalIps)) {
// Desired and initial values are equivalent, so set canonical desired value to initial value.
cDes.ExternalIps = initial.ExternalIps
} else {
cDes.ExternalIps = des.ExternalIps
}
return cDes
}
func canonicalizeInstanceGroupManagerStatefulPolicyPreservedStateSlice(des, initial []InstanceGroupManagerStatefulPolicyPreservedState, opts ...dcl.ApplyOption) []InstanceGroupManagerStatefulPolicyPreservedState {
if dcl.IsEmptyValueIndirect(des) {
return initial
}
if len(des) != len(initial) {
items := make([]InstanceGroupManagerStatefulPolicyPreservedState, 0, len(des))
for _, d := range des {
cd := canonicalizeInstanceGroupManagerStatefulPolicyPreservedState(&d, nil, opts...)
if cd != nil {
items = append(items, *cd)
}
}
return items
}
items := make([]InstanceGroupManagerStatefulPolicyPreservedState, 0, len(des))
for i, d := range des {
cd := canonicalizeInstanceGroupManagerStatefulPolicyPreservedState(&d, &initial[i], opts...)
if cd != nil {
items = append(items, *cd)
}
}
return items
}
func canonicalizeNewInstanceGroupManagerStatefulPolicyPreservedState(c *Client, des, nw *InstanceGroupManagerStatefulPolicyPreservedState) *InstanceGroupManagerStatefulPolicyPreservedState {
if des == nil {
return nw
}
if nw == nil {
if dcl.IsEmptyValueIndirect(des) {
c.Config.Logger.Info("Found explicitly empty value for InstanceGroupManagerStatefulPolicyPreservedState while comparing non-nil desired to nil actual. Returning desired object.")
return des
}
return nil
}
return nw
}
func canonicalizeNewInstanceGroupManagerStatefulPolicyPreservedStateSet(c *Client, des, nw []InstanceGroupManagerStatefulPolicyPreservedState) []InstanceGroupManagerStatefulPolicyPreservedState {
if des == nil {
return nw
}
// Find the elements in des that are also in nw and canonicalize them. Remove matched elements from nw.
var items []InstanceGroupManagerStatefulPolicyPreservedState
for _, d := range des {
matchedIndex := -1
for i, n := range nw {
if diffs, _ := compareInstanceGroupManagerStatefulPolicyPreservedStateNewStyle(&d, &n, dcl.FieldName{}); len(diffs) == 0 {
matchedIndex = i
break
}
}
if matchedIndex != -1 {
items = append(items, *canonicalizeNewInstanceGroupManagerStatefulPolicyPreservedState(c, &d, &nw[matchedIndex]))
nw = append(nw[:matchedIndex], nw[matchedIndex+1:]...)
}
}
// Also include elements in nw that are not matched in des.
items = append(items, nw...)
return items
}
func canonicalizeNewInstanceGroupManagerStatefulPolicyPreservedStateSlice(c *Client, des, nw []InstanceGroupManagerStatefulPolicyPreservedState) []InstanceGroupManagerStatefulPolicyPreservedState {
if des == nil {
return nw
}
// Lengths are unequal. A diff will occur later, so we shouldn't canonicalize.
// Return the original array.
if len(des) != len(nw) {
return nw
}
var items []InstanceGroupManagerStatefulPolicyPreservedState
for i, d := range des {
n := nw[i]
items = append(items, *canonicalizeNewInstanceGroupManagerStatefulPolicyPreservedState(c, &d, &n))
}
return items
}
func canonicalizeInstanceGroupManagerStatefulPolicyPreservedStateDisks(des, initial *InstanceGroupManagerStatefulPolicyPreservedStateDisks, opts ...dcl.ApplyOption) *InstanceGroupManagerStatefulPolicyPreservedStateDisks {
if des == nil {
return initial
}
if des.empty {
return des
}
if initial == nil {
return des
}
cDes := &InstanceGroupManagerStatefulPolicyPreservedStateDisks{}
if dcl.IsZeroValue(des.AutoDelete) || (dcl.IsEmptyValueIndirect(des.AutoDelete) && dcl.IsEmptyValueIndirect(initial.AutoDelete)) {
// Desired and initial values are equivalent, so set canonical desired value to initial value.
cDes.AutoDelete = initial.AutoDelete
} else {
cDes.AutoDelete = des.AutoDelete
}
return cDes
}
func canonicalizeInstanceGroupManagerStatefulPolicyPreservedStateDisksSlice(des, initial []InstanceGroupManagerStatefulPolicyPreservedStateDisks, opts ...dcl.ApplyOption) []InstanceGroupManagerStatefulPolicyPreservedStateDisks {
if dcl.IsEmptyValueIndirect(des) {
return initial
}
if len(des) != len(initial) {
items := make([]InstanceGroupManagerStatefulPolicyPreservedStateDisks, 0, len(des))
for _, d := range des {
cd := canonicalizeInstanceGroupManagerStatefulPolicyPreservedStateDisks(&d, nil, opts...)
if cd != nil {
items = append(items, *cd)
}
}
return items
}
items := make([]InstanceGroupManagerStatefulPolicyPreservedStateDisks, 0, len(des))
for i, d := range des {
cd := canonicalizeInstanceGroupManagerStatefulPolicyPreservedStateDisks(&d, &initial[i], opts...)
if cd != nil {
items = append(items, *cd)
}
}
return items
}
func canonicalizeNewInstanceGroupManagerStatefulPolicyPreservedStateDisks(c *Client, des, nw *InstanceGroupManagerStatefulPolicyPreservedStateDisks) *InstanceGroupManagerStatefulPolicyPreservedStateDisks {
if des == nil {
return nw
}
if nw == nil {
if dcl.IsEmptyValueIndirect(des) {
c.Config.Logger.Info("Found explicitly empty value for InstanceGroupManagerStatefulPolicyPreservedStateDisks while comparing non-nil desired to nil actual. Returning desired object.")
return des
}
return nil
}
return nw
}
func canonicalizeNewInstanceGroupManagerStatefulPolicyPreservedStateDisksSet(c *Client, des, nw []InstanceGroupManagerStatefulPolicyPreservedStateDisks) []InstanceGroupManagerStatefulPolicyPreservedStateDisks {
if des == nil {
return nw
}
// Find the elements in des that are also in nw and canonicalize them. Remove matched elements from nw.
var items []InstanceGroupManagerStatefulPolicyPreservedStateDisks
for _, d := range des {
matchedIndex := -1
for i, n := range nw {
if diffs, _ := compareInstanceGroupManagerStatefulPolicyPreservedStateDisksNewStyle(&d, &n, dcl.FieldName{}); len(diffs) == 0 {
matchedIndex = i
break
}
}
if matchedIndex != -1 {
items = append(items, *canonicalizeNewInstanceGroupManagerStatefulPolicyPreservedStateDisks(c, &d, &nw[matchedIndex]))
nw = append(nw[:matchedIndex], nw[matchedIndex+1:]...)
}
}
// Also include elements in nw that are not matched in des.
items = append(items, nw...)
return items
}
func canonicalizeNewInstanceGroupManagerStatefulPolicyPreservedStateDisksSlice(c *Client, des, nw []InstanceGroupManagerStatefulPolicyPreservedStateDisks) []InstanceGroupManagerStatefulPolicyPreservedStateDisks {
if des == nil {
return nw
}
// Lengths are unequal. A diff will occur later, so we shouldn't canonicalize.
// Return the original array.
if len(des) != len(nw) {
return nw
}
var items []InstanceGroupManagerStatefulPolicyPreservedStateDisks
for i, d := range des {
n := nw[i]
items = append(items, *canonicalizeNewInstanceGroupManagerStatefulPolicyPreservedStateDisks(c, &d, &n))
}
return items
}
func canonicalizeInstanceGroupManagerStatefulPolicyPreservedStateInternalIps(des, initial *InstanceGroupManagerStatefulPolicyPreservedStateInternalIps, opts ...dcl.ApplyOption) *InstanceGroupManagerStatefulPolicyPreservedStateInternalIps {
if des == nil {
return initial
}
if des.empty {
return des
}
if initial == nil {
return des
}
cDes := &InstanceGroupManagerStatefulPolicyPreservedStateInternalIps{}
if dcl.IsZeroValue(des.AutoDelete) || (dcl.IsEmptyValueIndirect(des.AutoDelete) && dcl.IsEmptyValueIndirect(initial.AutoDelete)) {
// Desired and initial values are equivalent, so set canonical desired value to initial value.
cDes.AutoDelete = initial.AutoDelete
} else {
cDes.AutoDelete = des.AutoDelete
}
return cDes
}
func canonicalizeInstanceGroupManagerStatefulPolicyPreservedStateInternalIpsSlice(des, initial []InstanceGroupManagerStatefulPolicyPreservedStateInternalIps, opts ...dcl.ApplyOption) []InstanceGroupManagerStatefulPolicyPreservedStateInternalIps {
if dcl.IsEmptyValueIndirect(des) {
return initial
}
if len(des) != len(initial) {
items := make([]InstanceGroupManagerStatefulPolicyPreservedStateInternalIps, 0, len(des))
for _, d := range des {
cd := canonicalizeInstanceGroupManagerStatefulPolicyPreservedStateInternalIps(&d, nil, opts...)
if cd != nil {
items = append(items, *cd)
}
}
return items
}
items := make([]InstanceGroupManagerStatefulPolicyPreservedStateInternalIps, 0, len(des))
for i, d := range des {
cd := canonicalizeInstanceGroupManagerStatefulPolicyPreservedStateInternalIps(&d, &initial[i], opts...)
if cd != nil {
items = append(items, *cd)
}
}
return items
}
func canonicalizeNewInstanceGroupManagerStatefulPolicyPreservedStateInternalIps(c *Client, des, nw *InstanceGroupManagerStatefulPolicyPreservedStateInternalIps) *InstanceGroupManagerStatefulPolicyPreservedStateInternalIps {
if des == nil {
return nw
}
if nw == nil {
if dcl.IsEmptyValueIndirect(des) {
c.Config.Logger.Info("Found explicitly empty value for InstanceGroupManagerStatefulPolicyPreservedStateInternalIps while comparing non-nil desired to nil actual. Returning desired object.")
return des
}
return nil
}
return nw
}
func canonicalizeNewInstanceGroupManagerStatefulPolicyPreservedStateInternalIpsSet(c *Client, des, nw []InstanceGroupManagerStatefulPolicyPreservedStateInternalIps) []InstanceGroupManagerStatefulPolicyPreservedStateInternalIps {
if des == nil {
return nw
}
// Find the elements in des that are also in nw and canonicalize them. Remove matched elements from nw.
var items []InstanceGroupManagerStatefulPolicyPreservedStateInternalIps
for _, d := range des {
matchedIndex := -1
for i, n := range nw {
if diffs, _ := compareInstanceGroupManagerStatefulPolicyPreservedStateInternalIpsNewStyle(&d, &n, dcl.FieldName{}); len(diffs) == 0 {
matchedIndex = i
break
}
}
if matchedIndex != -1 {
items = append(items, *canonicalizeNewInstanceGroupManagerStatefulPolicyPreservedStateInternalIps(c, &d, &nw[matchedIndex]))
nw = append(nw[:matchedIndex], nw[matchedIndex+1:]...)
}
}
// Also include elements in nw that are not matched in des.
items = append(items, nw...)
return items
}
func canonicalizeNewInstanceGroupManagerStatefulPolicyPreservedStateInternalIpsSlice(c *Client, des, nw []InstanceGroupManagerStatefulPolicyPreservedStateInternalIps) []InstanceGroupManagerStatefulPolicyPreservedStateInternalIps {
if des == nil {
return nw
}
// Lengths are unequal. A diff will occur later, so we shouldn't canonicalize.
// Return the original array.
if len(des) != len(nw) {
return nw
}
var items []InstanceGroupManagerStatefulPolicyPreservedStateInternalIps
for i, d := range des {
n := nw[i]
items = append(items, *canonicalizeNewInstanceGroupManagerStatefulPolicyPreservedStateInternalIps(c, &d, &n))
}
return items
}
func canonicalizeInstanceGroupManagerStatefulPolicyPreservedStateExternalIps(des, initial *InstanceGroupManagerStatefulPolicyPreservedStateExternalIps, opts ...dcl.ApplyOption) *InstanceGroupManagerStatefulPolicyPreservedStateExternalIps {
if des == nil {
return initial
}
if des.empty {
return des
}
if initial == nil {
return des
}
cDes := &InstanceGroupManagerStatefulPolicyPreservedStateExternalIps{}
if dcl.IsZeroValue(des.AutoDelete) || (dcl.IsEmptyValueIndirect(des.AutoDelete) && dcl.IsEmptyValueIndirect(initial.AutoDelete)) {
// Desired and initial values are equivalent, so set canonical desired value to initial value.
cDes.AutoDelete = initial.AutoDelete
} else {
cDes.AutoDelete = des.AutoDelete
}
return cDes
}
func canonicalizeInstanceGroupManagerStatefulPolicyPreservedStateExternalIpsSlice(des, initial []InstanceGroupManagerStatefulPolicyPreservedStateExternalIps, opts ...dcl.ApplyOption) []InstanceGroupManagerStatefulPolicyPreservedStateExternalIps {
if dcl.IsEmptyValueIndirect(des) {
return initial
}
if len(des) != len(initial) {
items := make([]InstanceGroupManagerStatefulPolicyPreservedStateExternalIps, 0, len(des))
for _, d := range des {
cd := canonicalizeInstanceGroupManagerStatefulPolicyPreservedStateExternalIps(&d, nil, opts...)
if cd != nil {
items = append(items, *cd)
}
}
return items
}
items := make([]InstanceGroupManagerStatefulPolicyPreservedStateExternalIps, 0, len(des))
for i, d := range des {
cd := canonicalizeInstanceGroupManagerStatefulPolicyPreservedStateExternalIps(&d, &initial[i], opts...)
if cd != nil {
items = append(items, *cd)
}
}
return items
}
func canonicalizeNewInstanceGroupManagerStatefulPolicyPreservedStateExternalIps(c *Client, des, nw *InstanceGroupManagerStatefulPolicyPreservedStateExternalIps) *InstanceGroupManagerStatefulPolicyPreservedStateExternalIps {
if des == nil {
return nw
}
if nw == nil {
if dcl.IsEmptyValueIndirect(des) {
c.Config.Logger.Info("Found explicitly empty value for InstanceGroupManagerStatefulPolicyPreservedStateExternalIps while comparing non-nil desired to nil actual. Returning desired object.")
return des
}
return nil
}
return nw
}
func canonicalizeNewInstanceGroupManagerStatefulPolicyPreservedStateExternalIpsSet(c *Client, des, nw []InstanceGroupManagerStatefulPolicyPreservedStateExternalIps) []InstanceGroupManagerStatefulPolicyPreservedStateExternalIps {
if des == nil {
return nw
}
// Find the elements in des that are also in nw and canonicalize them. Remove matched elements from nw.
var items []InstanceGroupManagerStatefulPolicyPreservedStateExternalIps
for _, d := range des {
matchedIndex := -1
for i, n := range nw {
if diffs, _ := compareInstanceGroupManagerStatefulPolicyPreservedStateExternalIpsNewStyle(&d, &n, dcl.FieldName{}); len(diffs) == 0 {
matchedIndex = i
break
}
}
if matchedIndex != -1 {
items = append(items, *canonicalizeNewInstanceGroupManagerStatefulPolicyPreservedStateExternalIps(c, &d, &nw[matchedIndex]))
nw = append(nw[:matchedIndex], nw[matchedIndex+1:]...)
}
}
// Also include elements in nw that are not matched in des.
items = append(items, nw...)
return items
}
func canonicalizeNewInstanceGroupManagerStatefulPolicyPreservedStateExternalIpsSlice(c *Client, des, nw []InstanceGroupManagerStatefulPolicyPreservedStateExternalIps) []InstanceGroupManagerStatefulPolicyPreservedStateExternalIps {
if des == nil {
return nw
}
// Lengths are unequal. A diff will occur later, so we shouldn't canonicalize.
// Return the original array.
if len(des) != len(nw) {
return nw
}
var items []InstanceGroupManagerStatefulPolicyPreservedStateExternalIps
for i, d := range des {
n := nw[i]
items = append(items, *canonicalizeNewInstanceGroupManagerStatefulPolicyPreservedStateExternalIps(c, &d, &n))
}
return items
}
// The differ returns a list of diffs, along with a list of operations that should be taken
// to remedy them. Right now, it does not attempt to consolidate operations - if several
// fields can be fixed with a patch update, it will perform the patch several times.
// Diffs on some fields will be ignored if the `desired` state has an empty (nil)
// value. This empty value indicates that the user does not care about the state for
// the field. Empty fields on the actual object will cause diffs.
// TODO(magic-modules-eng): for efficiency in some resources, add batching.
func diffInstanceGroupManager(c *Client, desired, actual *InstanceGroupManager, opts ...dcl.ApplyOption) ([]*dcl.FieldDiff, error) {
if desired == nil || actual == nil {
return nil, fmt.Errorf("nil resource passed to diff - always a programming error: %#v, %#v", desired, actual)
}
c.Config.Logger.Infof("Diff function called with desired state: %v", desired)
c.Config.Logger.Infof("Diff function called with actual state: %v", actual)
var fn dcl.FieldName
var newDiffs []*dcl.FieldDiff
// New style diffs.
if ds, err := dcl.Diff(desired.Id, actual.Id, dcl.DiffInfo{OutputOnly: true, OperationSelector: dcl.RequiresRecreate()}, fn.AddNest("Id")); len(ds) != 0 || err != nil {
if err != nil {
return nil, err
}
newDiffs = append(newDiffs, ds...)
}
if ds, err := dcl.Diff(desired.CreationTimestamp, actual.CreationTimestamp, dcl.DiffInfo{OutputOnly: true, OperationSelector: dcl.RequiresRecreate()}, fn.AddNest("CreationTimestamp")); len(ds) != 0 || err != nil {
if err != nil {
return nil, err
}
newDiffs = append(newDiffs, ds...)
}
if ds, err := dcl.Diff(desired.Name, actual.Name, dcl.DiffInfo{OperationSelector: dcl.RequiresRecreate()}, fn.AddNest("Name")); len(ds) != 0 || err != nil {
if err != nil {
return nil, err
}
newDiffs = append(newDiffs, ds...)
}
if ds, err := dcl.Diff(desired.Description, actual.Description, dcl.DiffInfo{OperationSelector: dcl.RequiresRecreate()}, fn.AddNest("Description")); len(ds) != 0 || err != nil {
if err != nil {
return nil, err
}
newDiffs = append(newDiffs, ds...)
}
if ds, err := dcl.Diff(desired.Zone, actual.Zone, dcl.DiffInfo{OutputOnly: true, OperationSelector: dcl.RequiresRecreate()}, fn.AddNest("Zone")); len(ds) != 0 || err != nil {
if err != nil {
return nil, err
}
newDiffs = append(newDiffs, ds...)
}
if ds, err := dcl.Diff(desired.Region, actual.Region, dcl.DiffInfo{OutputOnly: true, OperationSelector: dcl.RequiresRecreate()}, fn.AddNest("Region")); len(ds) != 0 || err != nil {
if err != nil {
return nil, err
}
newDiffs = append(newDiffs, ds...)
}
if ds, err := dcl.Diff(desired.DistributionPolicy, actual.DistributionPolicy, dcl.DiffInfo{ServerDefault: true, ObjectFunction: compareInstanceGroupManagerDistributionPolicyNewStyle, EmptyObject: EmptyInstanceGroupManagerDistributionPolicy, OperationSelector: dcl.RequiresRecreate()}, fn.AddNest("DistributionPolicy")); len(ds) != 0 || err != nil {
if err != nil {
return nil, err
}
newDiffs = append(newDiffs, ds...)
}
if ds, err := dcl.Diff(desired.InstanceTemplate, actual.InstanceTemplate, dcl.DiffInfo{ServerDefault: true, Type: "ReferenceType", OperationSelector: dcl.TriggersOperation("updateInstanceGroupManagerPatchOperation")}, fn.AddNest("InstanceTemplate")); len(ds) != 0 || err != nil {
if err != nil {
return nil, err
}
newDiffs = append(newDiffs, ds...)
}
if ds, err := dcl.Diff(desired.Versions, actual.Versions, dcl.DiffInfo{ServerDefault: true, ObjectFunction: compareInstanceGroupManagerVersionsNewStyle, EmptyObject: EmptyInstanceGroupManagerVersions, OperationSelector: dcl.TriggersOperation("updateInstanceGroupManagerPatchOperation")}, fn.AddNest("Versions")); len(ds) != 0 || err != nil {
if err != nil {
return nil, err
}
newDiffs = append(newDiffs, ds...)
}
if ds, err := dcl.Diff(desired.InstanceGroup, actual.InstanceGroup, dcl.DiffInfo{OutputOnly: true, Type: "ReferenceType", OperationSelector: dcl.RequiresRecreate()}, fn.AddNest("InstanceGroup")); len(ds) != 0 || err != nil {
if err != nil {
return nil, err
}
newDiffs = append(newDiffs, ds...)
}
if ds, err := dcl.Diff(desired.TargetPools, actual.TargetPools, dcl.DiffInfo{Type: "ReferenceType", OperationSelector: dcl.TriggersOperation("updateInstanceGroupManagerPatchOperation")}, fn.AddNest("TargetPools")); len(ds) != 0 || err != nil {
if err != nil {
return nil, err
}
newDiffs = append(newDiffs, ds...)
}
if ds, err := dcl.Diff(desired.BaseInstanceName, actual.BaseInstanceName, dcl.DiffInfo{ServerDefault: true, OperationSelector: dcl.TriggersOperation("updateInstanceGroupManagerPatchOperation")}, fn.AddNest("BaseInstanceName")); len(ds) != 0 || err != nil {
if err != nil {
return nil, err
}
newDiffs = append(newDiffs, ds...)
}
if ds, err := dcl.Diff(desired.Fingerprint, actual.Fingerprint, dcl.DiffInfo{OutputOnly: true, OperationSelector: dcl.RequiresRecreate()}, fn.AddNest("Fingerprint")); len(ds) != 0 || err != nil {
if err != nil {
return nil, err
}
newDiffs = append(newDiffs, ds...)
}
if ds, err := dcl.Diff(desired.CurrentActions, actual.CurrentActions, dcl.DiffInfo{OutputOnly: true, ObjectFunction: compareInstanceGroupManagerCurrentActionsNewStyle, EmptyObject: EmptyInstanceGroupManagerCurrentActions, OperationSelector: dcl.RequiresRecreate()}, fn.AddNest("CurrentActions")); len(ds) != 0 || err != nil {
if err != nil {
return nil, err
}
newDiffs = append(newDiffs, ds...)
}
if ds, err := dcl.Diff(desired.Status, actual.Status, dcl.DiffInfo{OutputOnly: true, ObjectFunction: compareInstanceGroupManagerStatusNewStyle, EmptyObject: EmptyInstanceGroupManagerStatus, OperationSelector: dcl.RequiresRecreate()}, fn.AddNest("Status")); len(ds) != 0 || err != nil {
if err != nil {
return nil, err
}
newDiffs = append(newDiffs, ds...)
}
if ds, err := dcl.Diff(desired.TargetSize, actual.TargetSize, dcl.DiffInfo{OperationSelector: dcl.TriggersOperation("updateInstanceGroupManagerPatchOperation")}, fn.AddNest("TargetSize")); len(ds) != 0 || err != nil {
if err != nil {
return nil, err
}
newDiffs = append(newDiffs, ds...)
}
if ds, err := dcl.Diff(desired.SelfLink, actual.SelfLink, dcl.DiffInfo{OutputOnly: true, OperationSelector: dcl.RequiresRecreate()}, fn.AddNest("SelfLink")); len(ds) != 0 || err != nil {
if err != nil {
return nil, err
}
newDiffs = append(newDiffs, ds...)
}
if ds, err := dcl.Diff(desired.AutoHealingPolicies, actual.AutoHealingPolicies, dcl.DiffInfo{ObjectFunction: compareInstanceGroupManagerAutoHealingPoliciesNewStyle, EmptyObject: EmptyInstanceGroupManagerAutoHealingPolicies, OperationSelector: dcl.TriggersOperation("updateInstanceGroupManagerPatchOperation")}, fn.AddNest("AutoHealingPolicies")); len(ds) != 0 || err != nil {
if err != nil {
return nil, err
}
newDiffs = append(newDiffs, ds...)
}
if ds, err := dcl.Diff(desired.UpdatePolicy, actual.UpdatePolicy, dcl.DiffInfo{ServerDefault: true, ObjectFunction: compareInstanceGroupManagerUpdatePolicyNewStyle, EmptyObject: EmptyInstanceGroupManagerUpdatePolicy, OperationSelector: dcl.TriggersOperation("updateInstanceGroupManagerPatchOperation")}, fn.AddNest("UpdatePolicy")); len(ds) != 0 || err != nil {
if err != nil {
return nil, err
}
newDiffs = append(newDiffs, ds...)
}
if ds, err := dcl.Diff(desired.NamedPorts, actual.NamedPorts, dcl.DiffInfo{ObjectFunction: compareInstanceGroupManagerNamedPortsNewStyle, EmptyObject: EmptyInstanceGroupManagerNamedPorts, OperationSelector: dcl.RequiresRecreate()}, fn.AddNest("NamedPorts")); len(ds) != 0 || err != nil {
if err != nil {
return nil, err
}
newDiffs = append(newDiffs, ds...)
}
if ds, err := dcl.Diff(desired.StatefulPolicy, actual.StatefulPolicy, dcl.DiffInfo{ObjectFunction: compareInstanceGroupManagerStatefulPolicyNewStyle, EmptyObject: EmptyInstanceGroupManagerStatefulPolicy, OperationSelector: dcl.TriggersOperation("updateInstanceGroupManagerPatchOperation")}, fn.AddNest("StatefulPolicy")); len(ds) != 0 || err != nil {
if err != nil {
return nil, err
}
newDiffs = append(newDiffs, ds...)
}
if ds, err := dcl.Diff(desired.ServiceAccount, actual.ServiceAccount, dcl.DiffInfo{Type: "ReferenceType", OperationSelector: dcl.TriggersOperation("updateInstanceGroupManagerPatchOperation")}, fn.AddNest("ServiceAccount")); len(ds) != 0 || err != nil {
if err != nil {
return nil, err
}
newDiffs = append(newDiffs, ds...)
}
if ds, err := dcl.Diff(desired.FailoverAction, actual.FailoverAction, dcl.DiffInfo{Type: "EnumType", OperationSelector: dcl.TriggersOperation("updateInstanceGroupManagerPatchOperation")}, fn.AddNest("FailoverAction")); len(ds) != 0 || err != nil {
if err != nil {
return nil, err
}
newDiffs = append(newDiffs, ds...)
}
if ds, err := dcl.Diff(desired.Project, actual.Project, dcl.DiffInfo{Type: "ReferenceType", OperationSelector: dcl.RequiresRecreate()}, fn.AddNest("Project")); len(ds) != 0 || err != nil {
if err != nil {
return nil, err
}
newDiffs = append(newDiffs, ds...)
}
if ds, err := dcl.Diff(desired.Location, actual.Location, dcl.DiffInfo{OperationSelector: dcl.RequiresRecreate()}, fn.AddNest("Location")); len(ds) != 0 || err != nil {
if err != nil {
return nil, err
}
newDiffs = append(newDiffs, ds...)
}
if len(newDiffs) > 0 {
c.Config.Logger.Infof("Diff function found diffs: %v", newDiffs)
}
return newDiffs, nil
}
func compareInstanceGroupManagerDistributionPolicyNewStyle(d, a interface{}, fn dcl.FieldName) ([]*dcl.FieldDiff, error) {
var diffs []*dcl.FieldDiff
desired, ok := d.(*InstanceGroupManagerDistributionPolicy)
if !ok {
desiredNotPointer, ok := d.(InstanceGroupManagerDistributionPolicy)
if !ok {
return nil, fmt.Errorf("obj %v is not a InstanceGroupManagerDistributionPolicy or *InstanceGroupManagerDistributionPolicy", d)
}
desired = &desiredNotPointer
}
actual, ok := a.(*InstanceGroupManagerDistributionPolicy)
if !ok {
actualNotPointer, ok := a.(InstanceGroupManagerDistributionPolicy)
if !ok {
return nil, fmt.Errorf("obj %v is not a InstanceGroupManagerDistributionPolicy", a)
}
actual = &actualNotPointer
}
if ds, err := dcl.Diff(desired.Zones, actual.Zones, dcl.DiffInfo{ObjectFunction: compareInstanceGroupManagerDistributionPolicyZonesNewStyle, EmptyObject: EmptyInstanceGroupManagerDistributionPolicyZones, OperationSelector: dcl.RequiresRecreate()}, fn.AddNest("Zones")); len(ds) != 0 || err != nil {
if err != nil {
return nil, err
}
diffs = append(diffs, ds...)
}
if ds, err := dcl.Diff(desired.TargetShape, actual.TargetShape, dcl.DiffInfo{Type: "EnumType", OperationSelector: dcl.TriggersOperation("updateInstanceGroupManagerPatchOperation")}, fn.AddNest("TargetShape")); len(ds) != 0 || err != nil {
if err != nil {
return nil, err
}
diffs = append(diffs, ds...)
}
return diffs, nil
}
func compareInstanceGroupManagerDistributionPolicyZonesNewStyle(d, a interface{}, fn dcl.FieldName) ([]*dcl.FieldDiff, error) {
var diffs []*dcl.FieldDiff
desired, ok := d.(*InstanceGroupManagerDistributionPolicyZones)
if !ok {
desiredNotPointer, ok := d.(InstanceGroupManagerDistributionPolicyZones)
if !ok {
return nil, fmt.Errorf("obj %v is not a InstanceGroupManagerDistributionPolicyZones or *InstanceGroupManagerDistributionPolicyZones", d)
}
desired = &desiredNotPointer
}
actual, ok := a.(*InstanceGroupManagerDistributionPolicyZones)
if !ok {
actualNotPointer, ok := a.(InstanceGroupManagerDistributionPolicyZones)
if !ok {
return nil, fmt.Errorf("obj %v is not a InstanceGroupManagerDistributionPolicyZones", a)
}
actual = &actualNotPointer
}
if ds, err := dcl.Diff(desired.Zone, actual.Zone, dcl.DiffInfo{OperationSelector: dcl.RequiresRecreate()}, fn.AddNest("Zone")); len(ds) != 0 || err != nil {
if err != nil {
return nil, err
}
diffs = append(diffs, ds...)
}
return diffs, nil
}
func compareInstanceGroupManagerVersionsNewStyle(d, a interface{}, fn dcl.FieldName) ([]*dcl.FieldDiff, error) {
var diffs []*dcl.FieldDiff
desired, ok := d.(*InstanceGroupManagerVersions)
if !ok {
desiredNotPointer, ok := d.(InstanceGroupManagerVersions)
if !ok {
return nil, fmt.Errorf("obj %v is not a InstanceGroupManagerVersions or *InstanceGroupManagerVersions", d)
}
desired = &desiredNotPointer
}
actual, ok := a.(*InstanceGroupManagerVersions)
if !ok {
actualNotPointer, ok := a.(InstanceGroupManagerVersions)
if !ok {
return nil, fmt.Errorf("obj %v is not a InstanceGroupManagerVersions", a)
}
actual = &actualNotPointer
}
if ds, err := dcl.Diff(desired.Name, actual.Name, dcl.DiffInfo{OperationSelector: dcl.TriggersOperation("updateInstanceGroupManagerPatchOperation")}, fn.AddNest("Name")); len(ds) != 0 || err != nil {
if err != nil {
return nil, err
}
diffs = append(diffs, ds...)
}
if ds, err := dcl.Diff(desired.InstanceTemplate, actual.InstanceTemplate, dcl.DiffInfo{Type: "ReferenceType", OperationSelector: dcl.TriggersOperation("updateInstanceGroupManagerPatchOperation")}, fn.AddNest("InstanceTemplate")); len(ds) != 0 || err != nil {
if err != nil {
return nil, err
}
diffs = append(diffs, ds...)
}
if ds, err := dcl.Diff(desired.TargetSize, actual.TargetSize, dcl.DiffInfo{ObjectFunction: compareInstanceGroupManagerVersionsTargetSizeNewStyle, EmptyObject: EmptyInstanceGroupManagerVersionsTargetSize, OperationSelector: dcl.TriggersOperation("updateInstanceGroupManagerPatchOperation")}, fn.AddNest("TargetSize")); len(ds) != 0 || err != nil {
if err != nil {
return nil, err
}
diffs = append(diffs, ds...)
}
return diffs, nil
}
func compareInstanceGroupManagerVersionsTargetSizeNewStyle(d, a interface{}, fn dcl.FieldName) ([]*dcl.FieldDiff, error) {
var diffs []*dcl.FieldDiff
desired, ok := d.(*InstanceGroupManagerVersionsTargetSize)
if !ok {
desiredNotPointer, ok := d.(InstanceGroupManagerVersionsTargetSize)
if !ok {
return nil, fmt.Errorf("obj %v is not a InstanceGroupManagerVersionsTargetSize or *InstanceGroupManagerVersionsTargetSize", d)
}
desired = &desiredNotPointer
}
actual, ok := a.(*InstanceGroupManagerVersionsTargetSize)
if !ok {
actualNotPointer, ok := a.(InstanceGroupManagerVersionsTargetSize)
if !ok {
return nil, fmt.Errorf("obj %v is not a InstanceGroupManagerVersionsTargetSize", a)
}
actual = &actualNotPointer
}
if ds, err := dcl.Diff(desired.Fixed, actual.Fixed, dcl.DiffInfo{OperationSelector: dcl.TriggersOperation("updateInstanceGroupManagerPatchOperation")}, fn.AddNest("Fixed")); len(ds) != 0 || err != nil {
if err != nil {
return nil, err
}
diffs = append(diffs, ds...)
}
if ds, err := dcl.Diff(desired.Percent, actual.Percent, dcl.DiffInfo{OperationSelector: dcl.TriggersOperation("updateInstanceGroupManagerPatchOperation")}, fn.AddNest("Percent")); len(ds) != 0 || err != nil {
if err != nil {
return nil, err
}
diffs = append(diffs, ds...)
}
if ds, err := dcl.Diff(desired.Calculated, actual.Calculated, dcl.DiffInfo{OutputOnly: true, OperationSelector: dcl.RequiresRecreate()}, fn.AddNest("Calculated")); len(ds) != 0 || err != nil {
if err != nil {
return nil, err
}
diffs = append(diffs, ds...)
}
return diffs, nil
}
func compareInstanceGroupManagerCurrentActionsNewStyle(d, a interface{}, fn dcl.FieldName) ([]*dcl.FieldDiff, error) {
var diffs []*dcl.FieldDiff
desired, ok := d.(*InstanceGroupManagerCurrentActions)
if !ok {
desiredNotPointer, ok := d.(InstanceGroupManagerCurrentActions)
if !ok {
return nil, fmt.Errorf("obj %v is not a InstanceGroupManagerCurrentActions or *InstanceGroupManagerCurrentActions", d)
}
desired = &desiredNotPointer
}
actual, ok := a.(*InstanceGroupManagerCurrentActions)
if !ok {
actualNotPointer, ok := a.(InstanceGroupManagerCurrentActions)
if !ok {
return nil, fmt.Errorf("obj %v is not a InstanceGroupManagerCurrentActions", a)
}
actual = &actualNotPointer
}
if ds, err := dcl.Diff(desired.None, actual.None, dcl.DiffInfo{OutputOnly: true, OperationSelector: dcl.RequiresRecreate()}, fn.AddNest("None")); len(ds) != 0 || err != nil {
if err != nil {
return nil, err
}
diffs = append(diffs, ds...)
}
if ds, err := dcl.Diff(desired.Creating, actual.Creating, dcl.DiffInfo{OutputOnly: true, OperationSelector: dcl.RequiresRecreate()}, fn.AddNest("Creating")); len(ds) != 0 || err != nil {
if err != nil {
return nil, err
}
diffs = append(diffs, ds...)
}
if ds, err := dcl.Diff(desired.CreatingWithoutRetries, actual.CreatingWithoutRetries, dcl.DiffInfo{OutputOnly: true, OperationSelector: dcl.RequiresRecreate()}, fn.AddNest("CreatingWithoutRetries")); len(ds) != 0 || err != nil {
if err != nil {
return nil, err
}
diffs = append(diffs, ds...)
}
if ds, err := dcl.Diff(desired.Verifying, actual.Verifying, dcl.DiffInfo{OutputOnly: true, OperationSelector: dcl.RequiresRecreate()}, fn.AddNest("Verifying")); len(ds) != 0 || err != nil {
if err != nil {
return nil, err
}
diffs = append(diffs, ds...)
}
if ds, err := dcl.Diff(desired.Recreating, actual.Recreating, dcl.DiffInfo{OutputOnly: true, OperationSelector: dcl.RequiresRecreate()}, fn.AddNest("Recreating")); len(ds) != 0 || err != nil {
if err != nil {
return nil, err
}
diffs = append(diffs, ds...)
}
if ds, err := dcl.Diff(desired.Deleting, actual.Deleting, dcl.DiffInfo{OutputOnly: true, OperationSelector: dcl.RequiresRecreate()}, fn.AddNest("Deleting")); len(ds) != 0 || err != nil {
if err != nil {
return nil, err
}
diffs = append(diffs, ds...)
}
if ds, err := dcl.Diff(desired.Abandoning, actual.Abandoning, dcl.DiffInfo{OutputOnly: true, OperationSelector: dcl.RequiresRecreate()}, fn.AddNest("Abandoning")); len(ds) != 0 || err != nil {
if err != nil {
return nil, err
}
diffs = append(diffs, ds...)
}
if ds, err := dcl.Diff(desired.Restarting, actual.Restarting, dcl.DiffInfo{OutputOnly: true, OperationSelector: dcl.RequiresRecreate()}, fn.AddNest("Restarting")); len(ds) != 0 || err != nil {
if err != nil {
return nil, err
}
diffs = append(diffs, ds...)
}
if ds, err := dcl.Diff(desired.Refreshing, actual.Refreshing, dcl.DiffInfo{OutputOnly: true, OperationSelector: dcl.RequiresRecreate()}, fn.AddNest("Refreshing")); len(ds) != 0 || err != nil {
if err != nil {
return nil, err
}
diffs = append(diffs, ds...)
}
return diffs, nil
}
func compareInstanceGroupManagerStatusNewStyle(d, a interface{}, fn dcl.FieldName) ([]*dcl.FieldDiff, error) {
var diffs []*dcl.FieldDiff
desired, ok := d.(*InstanceGroupManagerStatus)
if !ok {
desiredNotPointer, ok := d.(InstanceGroupManagerStatus)
if !ok {
return nil, fmt.Errorf("obj %v is not a InstanceGroupManagerStatus or *InstanceGroupManagerStatus", d)
}
desired = &desiredNotPointer
}
actual, ok := a.(*InstanceGroupManagerStatus)
if !ok {
actualNotPointer, ok := a.(InstanceGroupManagerStatus)
if !ok {
return nil, fmt.Errorf("obj %v is not a InstanceGroupManagerStatus", a)
}
actual = &actualNotPointer
}
if ds, err := dcl.Diff(desired.IsStable, actual.IsStable, dcl.DiffInfo{OutputOnly: true, OperationSelector: dcl.RequiresRecreate()}, fn.AddNest("IsStable")); len(ds) != 0 || err != nil {
if err != nil {
return nil, err
}
diffs = append(diffs, ds...)
}
if ds, err := dcl.Diff(desired.VersionTarget, actual.VersionTarget, dcl.DiffInfo{OutputOnly: true, ObjectFunction: compareInstanceGroupManagerStatusVersionTargetNewStyle, EmptyObject: EmptyInstanceGroupManagerStatusVersionTarget, OperationSelector: dcl.RequiresRecreate()}, fn.AddNest("VersionTarget")); len(ds) != 0 || err != nil {
if err != nil {
return nil, err
}
diffs = append(diffs, ds...)
}
if ds, err := dcl.Diff(desired.Stateful, actual.Stateful, dcl.DiffInfo{OutputOnly: true, ObjectFunction: compareInstanceGroupManagerStatusStatefulNewStyle, EmptyObject: EmptyInstanceGroupManagerStatusStateful, OperationSelector: dcl.RequiresRecreate()}, fn.AddNest("Stateful")); len(ds) != 0 || err != nil {
if err != nil {
return nil, err
}
diffs = append(diffs, ds...)
}
if ds, err := dcl.Diff(desired.Autoscaler, actual.Autoscaler, dcl.DiffInfo{OutputOnly: true, OperationSelector: dcl.RequiresRecreate()}, fn.AddNest("Autoscaler")); len(ds) != 0 || err != nil {
if err != nil {
return nil, err
}
diffs = append(diffs, ds...)
}
return diffs, nil
}
func compareInstanceGroupManagerStatusVersionTargetNewStyle(d, a interface{}, fn dcl.FieldName) ([]*dcl.FieldDiff, error) {
var diffs []*dcl.FieldDiff
desired, ok := d.(*InstanceGroupManagerStatusVersionTarget)
if !ok {
desiredNotPointer, ok := d.(InstanceGroupManagerStatusVersionTarget)
if !ok {
return nil, fmt.Errorf("obj %v is not a InstanceGroupManagerStatusVersionTarget or *InstanceGroupManagerStatusVersionTarget", d)
}
desired = &desiredNotPointer
}
actual, ok := a.(*InstanceGroupManagerStatusVersionTarget)
if !ok {
actualNotPointer, ok := a.(InstanceGroupManagerStatusVersionTarget)
if !ok {
return nil, fmt.Errorf("obj %v is not a InstanceGroupManagerStatusVersionTarget", a)
}
actual = &actualNotPointer
}
if ds, err := dcl.Diff(desired.IsReached, actual.IsReached, dcl.DiffInfo{OutputOnly: true, OperationSelector: dcl.RequiresRecreate()}, fn.AddNest("IsReached")); len(ds) != 0 || err != nil {
if err != nil {
return nil, err
}
diffs = append(diffs, ds...)
}
return diffs, nil
}
func compareInstanceGroupManagerStatusStatefulNewStyle(d, a interface{}, fn dcl.FieldName) ([]*dcl.FieldDiff, error) {
var diffs []*dcl.FieldDiff
desired, ok := d.(*InstanceGroupManagerStatusStateful)
if !ok {
desiredNotPointer, ok := d.(InstanceGroupManagerStatusStateful)
if !ok {
return nil, fmt.Errorf("obj %v is not a InstanceGroupManagerStatusStateful or *InstanceGroupManagerStatusStateful", d)
}
desired = &desiredNotPointer
}
actual, ok := a.(*InstanceGroupManagerStatusStateful)
if !ok {
actualNotPointer, ok := a.(InstanceGroupManagerStatusStateful)
if !ok {
return nil, fmt.Errorf("obj %v is not a InstanceGroupManagerStatusStateful", a)
}
actual = &actualNotPointer
}
if ds, err := dcl.Diff(desired.HasStatefulConfig, actual.HasStatefulConfig, dcl.DiffInfo{OutputOnly: true, OperationSelector: dcl.RequiresRecreate()}, fn.AddNest("HasStatefulConfig")); len(ds) != 0 || err != nil {
if err != nil {
return nil, err
}
diffs = append(diffs, ds...)
}
if ds, err := dcl.Diff(desired.PerInstanceConfigs, actual.PerInstanceConfigs, dcl.DiffInfo{OutputOnly: true, ObjectFunction: compareInstanceGroupManagerStatusStatefulPerInstanceConfigsNewStyle, EmptyObject: EmptyInstanceGroupManagerStatusStatefulPerInstanceConfigs, OperationSelector: dcl.RequiresRecreate()}, fn.AddNest("PerInstanceConfigs")); len(ds) != 0 || err != nil {
if err != nil {
return nil, err
}
diffs = append(diffs, ds...)
}
if ds, err := dcl.Diff(desired.IsStateful, actual.IsStateful, dcl.DiffInfo{OutputOnly: true, OperationSelector: dcl.RequiresRecreate()}, fn.AddNest("IsStateful")); len(ds) != 0 || err != nil {
if err != nil {
return nil, err
}
diffs = append(diffs, ds...)
}
return diffs, nil
}
func compareInstanceGroupManagerStatusStatefulPerInstanceConfigsNewStyle(d, a interface{}, fn dcl.FieldName) ([]*dcl.FieldDiff, error) {
var diffs []*dcl.FieldDiff
desired, ok := d.(*InstanceGroupManagerStatusStatefulPerInstanceConfigs)
if !ok {
desiredNotPointer, ok := d.(InstanceGroupManagerStatusStatefulPerInstanceConfigs)
if !ok {
return nil, fmt.Errorf("obj %v is not a InstanceGroupManagerStatusStatefulPerInstanceConfigs or *InstanceGroupManagerStatusStatefulPerInstanceConfigs", d)
}
desired = &desiredNotPointer
}
actual, ok := a.(*InstanceGroupManagerStatusStatefulPerInstanceConfigs)
if !ok {
actualNotPointer, ok := a.(InstanceGroupManagerStatusStatefulPerInstanceConfigs)
if !ok {
return nil, fmt.Errorf("obj %v is not a InstanceGroupManagerStatusStatefulPerInstanceConfigs", a)
}
actual = &actualNotPointer
}
if ds, err := dcl.Diff(desired.AllEffective, actual.AllEffective, dcl.DiffInfo{OperationSelector: dcl.TriggersOperation("updateInstanceGroupManagerPatchOperation")}, fn.AddNest("AllEffective")); len(ds) != 0 || err != nil {
if err != nil {
return nil, err
}
diffs = append(diffs, ds...)
}
return diffs, nil
}
func compareInstanceGroupManagerAutoHealingPoliciesNewStyle(d, a interface{}, fn dcl.FieldName) ([]*dcl.FieldDiff, error) {
var diffs []*dcl.FieldDiff
desired, ok := d.(*InstanceGroupManagerAutoHealingPolicies)
if !ok {
desiredNotPointer, ok := d.(InstanceGroupManagerAutoHealingPolicies)
if !ok {
return nil, fmt.Errorf("obj %v is not a InstanceGroupManagerAutoHealingPolicies or *InstanceGroupManagerAutoHealingPolicies", d)
}
desired = &desiredNotPointer
}
actual, ok := a.(*InstanceGroupManagerAutoHealingPolicies)
if !ok {
actualNotPointer, ok := a.(InstanceGroupManagerAutoHealingPolicies)
if !ok {
return nil, fmt.Errorf("obj %v is not a InstanceGroupManagerAutoHealingPolicies", a)
}
actual = &actualNotPointer
}
if ds, err := dcl.Diff(desired.HealthCheck, actual.HealthCheck, dcl.DiffInfo{Type: "ReferenceType", OperationSelector: dcl.TriggersOperation("updateInstanceGroupManagerPatchOperation")}, fn.AddNest("HealthCheck")); len(ds) != 0 || err != nil {
if err != nil {
return nil, err
}
diffs = append(diffs, ds...)
}
if ds, err := dcl.Diff(desired.InitialDelaySec, actual.InitialDelaySec, dcl.DiffInfo{OperationSelector: dcl.TriggersOperation("updateInstanceGroupManagerPatchOperation")}, fn.AddNest("InitialDelaySec")); len(ds) != 0 || err != nil {
if err != nil {
return nil, err
}
diffs = append(diffs, ds...)
}
return diffs, nil
}
func compareInstanceGroupManagerUpdatePolicyNewStyle(d, a interface{}, fn dcl.FieldName) ([]*dcl.FieldDiff, error) {
var diffs []*dcl.FieldDiff
desired, ok := d.(*InstanceGroupManagerUpdatePolicy)
if !ok {
desiredNotPointer, ok := d.(InstanceGroupManagerUpdatePolicy)
if !ok {
return nil, fmt.Errorf("obj %v is not a InstanceGroupManagerUpdatePolicy or *InstanceGroupManagerUpdatePolicy", d)
}
desired = &desiredNotPointer
}
actual, ok := a.(*InstanceGroupManagerUpdatePolicy)
if !ok {
actualNotPointer, ok := a.(InstanceGroupManagerUpdatePolicy)
if !ok {
return nil, fmt.Errorf("obj %v is not a InstanceGroupManagerUpdatePolicy", a)
}
actual = &actualNotPointer
}
if ds, err := dcl.Diff(desired.Type, actual.Type, dcl.DiffInfo{Type: "EnumType", OperationSelector: dcl.TriggersOperation("updateInstanceGroupManagerPatchOperation")}, fn.AddNest("Type")); len(ds) != 0 || err != nil {
if err != nil {
return nil, err
}
diffs = append(diffs, ds...)
}
if ds, err := dcl.Diff(desired.InstanceRedistributionType, actual.InstanceRedistributionType, dcl.DiffInfo{Type: "EnumType", OperationSelector: dcl.TriggersOperation("updateInstanceGroupManagerPatchOperation")}, fn.AddNest("InstanceRedistributionType")); len(ds) != 0 || err != nil {
if err != nil {
return nil, err
}
diffs = append(diffs, ds...)
}
if ds, err := dcl.Diff(desired.MinimalAction, actual.MinimalAction, dcl.DiffInfo{Type: "EnumType", OperationSelector: dcl.TriggersOperation("updateInstanceGroupManagerPatchOperation")}, fn.AddNest("MinimalAction")); len(ds) != 0 || err != nil {
if err != nil {
return nil, err
}
diffs = append(diffs, ds...)
}
if ds, err := dcl.Diff(desired.MaxSurge, actual.MaxSurge, dcl.DiffInfo{ObjectFunction: compareInstanceGroupManagerUpdatePolicyMaxSurgeNewStyle, EmptyObject: EmptyInstanceGroupManagerUpdatePolicyMaxSurge, OperationSelector: dcl.TriggersOperation("updateInstanceGroupManagerPatchOperation")}, fn.AddNest("MaxSurge")); len(ds) != 0 || err != nil {
if err != nil {
return nil, err
}
diffs = append(diffs, ds...)
}
if ds, err := dcl.Diff(desired.MaxUnavailable, actual.MaxUnavailable, dcl.DiffInfo{ObjectFunction: compareInstanceGroupManagerUpdatePolicyMaxUnavailableNewStyle, EmptyObject: EmptyInstanceGroupManagerUpdatePolicyMaxUnavailable, OperationSelector: dcl.TriggersOperation("updateInstanceGroupManagerPatchOperation")}, fn.AddNest("MaxUnavailable")); len(ds) != 0 || err != nil {
if err != nil {
return nil, err
}
diffs = append(diffs, ds...)
}
if ds, err := dcl.Diff(desired.ReplacementMethod, actual.ReplacementMethod, dcl.DiffInfo{Type: "EnumType", OperationSelector: dcl.TriggersOperation("updateInstanceGroupManagerPatchOperation")}, fn.AddNest("ReplacementMethod")); len(ds) != 0 || err != nil {
if err != nil {
return nil, err
}
diffs = append(diffs, ds...)
}
if ds, err := dcl.Diff(desired.MostDisruptiveAllowedAction, actual.MostDisruptiveAllowedAction, dcl.DiffInfo{Type: "EnumType", OperationSelector: dcl.TriggersOperation("updateInstanceGroupManagerPatchOperation")}, fn.AddNest("MostDisruptiveAllowedAction")); len(ds) != 0 || err != nil {
if err != nil {
return nil, err
}
diffs = append(diffs, ds...)
}
if ds, err := dcl.Diff(desired.MinReadySec, actual.MinReadySec, dcl.DiffInfo{OperationSelector: dcl.TriggersOperation("updateInstanceGroupManagerPatchOperation")}, fn.AddNest("MinReadySec")); len(ds) != 0 || err != nil {
if err != nil {
return nil, err
}
diffs = append(diffs, ds...)
}
return diffs, nil
}
func compareInstanceGroupManagerUpdatePolicyMaxSurgeNewStyle(d, a interface{}, fn dcl.FieldName) ([]*dcl.FieldDiff, error) {
var diffs []*dcl.FieldDiff
desired, ok := d.(*InstanceGroupManagerUpdatePolicyMaxSurge)
if !ok {
desiredNotPointer, ok := d.(InstanceGroupManagerUpdatePolicyMaxSurge)
if !ok {
return nil, fmt.Errorf("obj %v is not a InstanceGroupManagerUpdatePolicyMaxSurge or *InstanceGroupManagerUpdatePolicyMaxSurge", d)
}
desired = &desiredNotPointer
}
actual, ok := a.(*InstanceGroupManagerUpdatePolicyMaxSurge)
if !ok {
actualNotPointer, ok := a.(InstanceGroupManagerUpdatePolicyMaxSurge)
if !ok {
return nil, fmt.Errorf("obj %v is not a InstanceGroupManagerUpdatePolicyMaxSurge", a)
}
actual = &actualNotPointer
}
if ds, err := dcl.Diff(desired.Fixed, actual.Fixed, dcl.DiffInfo{OperationSelector: dcl.TriggersOperation("updateInstanceGroupManagerPatchOperation")}, fn.AddNest("Fixed")); len(ds) != 0 || err != nil {
if err != nil {
return nil, err
}
diffs = append(diffs, ds...)
}
if ds, err := dcl.Diff(desired.Percent, actual.Percent, dcl.DiffInfo{OperationSelector: dcl.TriggersOperation("updateInstanceGroupManagerPatchOperation")}, fn.AddNest("Percent")); len(ds) != 0 || err != nil {
if err != nil {
return nil, err
}
diffs = append(diffs, ds...)
}
if ds, err := dcl.Diff(desired.Calculated, actual.Calculated, dcl.DiffInfo{OutputOnly: true, OperationSelector: dcl.RequiresRecreate()}, fn.AddNest("Calculated")); len(ds) != 0 || err != nil {
if err != nil {
return nil, err
}
diffs = append(diffs, ds...)
}
return diffs, nil
}
func compareInstanceGroupManagerUpdatePolicyMaxUnavailableNewStyle(d, a interface{}, fn dcl.FieldName) ([]*dcl.FieldDiff, error) {
var diffs []*dcl.FieldDiff
desired, ok := d.(*InstanceGroupManagerUpdatePolicyMaxUnavailable)
if !ok {
desiredNotPointer, ok := d.(InstanceGroupManagerUpdatePolicyMaxUnavailable)
if !ok {
return nil, fmt.Errorf("obj %v is not a InstanceGroupManagerUpdatePolicyMaxUnavailable or *InstanceGroupManagerUpdatePolicyMaxUnavailable", d)
}
desired = &desiredNotPointer
}
actual, ok := a.(*InstanceGroupManagerUpdatePolicyMaxUnavailable)
if !ok {
actualNotPointer, ok := a.(InstanceGroupManagerUpdatePolicyMaxUnavailable)
if !ok {
return nil, fmt.Errorf("obj %v is not a InstanceGroupManagerUpdatePolicyMaxUnavailable", a)
}
actual = &actualNotPointer
}
if ds, err := dcl.Diff(desired.Fixed, actual.Fixed, dcl.DiffInfo{OperationSelector: dcl.TriggersOperation("updateInstanceGroupManagerPatchOperation")}, fn.AddNest("Fixed")); len(ds) != 0 || err != nil {
if err != nil {
return nil, err
}
diffs = append(diffs, ds...)
}
if ds, err := dcl.Diff(desired.Percent, actual.Percent, dcl.DiffInfo{OperationSelector: dcl.TriggersOperation("updateInstanceGroupManagerPatchOperation")}, fn.AddNest("Percent")); len(ds) != 0 || err != nil {
if err != nil {
return nil, err
}
diffs = append(diffs, ds...)
}
if ds, err := dcl.Diff(desired.Calculated, actual.Calculated, dcl.DiffInfo{OutputOnly: true, OperationSelector: dcl.RequiresRecreate()}, fn.AddNest("Calculated")); len(ds) != 0 || err != nil {
if err != nil {
return nil, err
}
diffs = append(diffs, ds...)
}
return diffs, nil
}
func compareInstanceGroupManagerNamedPortsNewStyle(d, a interface{}, fn dcl.FieldName) ([]*dcl.FieldDiff, error) {
var diffs []*dcl.FieldDiff
desired, ok := d.(*InstanceGroupManagerNamedPorts)
if !ok {
desiredNotPointer, ok := d.(InstanceGroupManagerNamedPorts)
if !ok {
return nil, fmt.Errorf("obj %v is not a InstanceGroupManagerNamedPorts or *InstanceGroupManagerNamedPorts", d)
}
desired = &desiredNotPointer
}
actual, ok := a.(*InstanceGroupManagerNamedPorts)
if !ok {
actualNotPointer, ok := a.(InstanceGroupManagerNamedPorts)
if !ok {
return nil, fmt.Errorf("obj %v is not a InstanceGroupManagerNamedPorts", a)
}
actual = &actualNotPointer
}
if ds, err := dcl.Diff(desired.Name, actual.Name, dcl.DiffInfo{OperationSelector: dcl.RequiresRecreate()}, fn.AddNest("Name")); len(ds) != 0 || err != nil {
if err != nil {
return nil, err
}
diffs = append(diffs, ds...)
}
if ds, err := dcl.Diff(desired.Port, actual.Port, dcl.DiffInfo{OperationSelector: dcl.RequiresRecreate()}, fn.AddNest("Port")); len(ds) != 0 || err != nil {
if err != nil {
return nil, err
}
diffs = append(diffs, ds...)
}
return diffs, nil
}
func compareInstanceGroupManagerStatefulPolicyNewStyle(d, a interface{}, fn dcl.FieldName) ([]*dcl.FieldDiff, error) {
var diffs []*dcl.FieldDiff
desired, ok := d.(*InstanceGroupManagerStatefulPolicy)
if !ok {
desiredNotPointer, ok := d.(InstanceGroupManagerStatefulPolicy)
if !ok {
return nil, fmt.Errorf("obj %v is not a InstanceGroupManagerStatefulPolicy or *InstanceGroupManagerStatefulPolicy", d)
}
desired = &desiredNotPointer
}
actual, ok := a.(*InstanceGroupManagerStatefulPolicy)
if !ok {
actualNotPointer, ok := a.(InstanceGroupManagerStatefulPolicy)
if !ok {
return nil, fmt.Errorf("obj %v is not a InstanceGroupManagerStatefulPolicy", a)
}
actual = &actualNotPointer
}
if ds, err := dcl.Diff(desired.PreservedState, actual.PreservedState, dcl.DiffInfo{ObjectFunction: compareInstanceGroupManagerStatefulPolicyPreservedStateNewStyle, EmptyObject: EmptyInstanceGroupManagerStatefulPolicyPreservedState, OperationSelector: dcl.TriggersOperation("updateInstanceGroupManagerPatchOperation")}, fn.AddNest("PreservedState")); len(ds) != 0 || err != nil {
if err != nil {
return nil, err
}
diffs = append(diffs, ds...)
}
return diffs, nil
}
func compareInstanceGroupManagerStatefulPolicyPreservedStateNewStyle(d, a interface{}, fn dcl.FieldName) ([]*dcl.FieldDiff, error) {
var diffs []*dcl.FieldDiff
desired, ok := d.(*InstanceGroupManagerStatefulPolicyPreservedState)
if !ok {
desiredNotPointer, ok := d.(InstanceGroupManagerStatefulPolicyPreservedState)
if !ok {
return nil, fmt.Errorf("obj %v is not a InstanceGroupManagerStatefulPolicyPreservedState or *InstanceGroupManagerStatefulPolicyPreservedState", d)
}
desired = &desiredNotPointer
}
actual, ok := a.(*InstanceGroupManagerStatefulPolicyPreservedState)
if !ok {
actualNotPointer, ok := a.(InstanceGroupManagerStatefulPolicyPreservedState)
if !ok {
return nil, fmt.Errorf("obj %v is not a InstanceGroupManagerStatefulPolicyPreservedState", a)
}
actual = &actualNotPointer
}
if ds, err := dcl.Diff(desired.Disks, actual.Disks, dcl.DiffInfo{ObjectFunction: compareInstanceGroupManagerStatefulPolicyPreservedStateDisksNewStyle, EmptyObject: EmptyInstanceGroupManagerStatefulPolicyPreservedStateDisks, OperationSelector: dcl.TriggersOperation("updateInstanceGroupManagerPatchOperation")}, fn.AddNest("Disks")); len(ds) != 0 || err != nil {
if err != nil {
return nil, err
}
diffs = append(diffs, ds...)
}
if ds, err := dcl.Diff(desired.InternalIps, actual.InternalIps, dcl.DiffInfo{ObjectFunction: compareInstanceGroupManagerStatefulPolicyPreservedStateInternalIpsNewStyle, EmptyObject: EmptyInstanceGroupManagerStatefulPolicyPreservedStateInternalIps, OperationSelector: dcl.RequiresRecreate()}, fn.AddNest("InternalIps")); len(ds) != 0 || err != nil {
if err != nil {
return nil, err
}
diffs = append(diffs, ds...)
}
if ds, err := dcl.Diff(desired.ExternalIps, actual.ExternalIps, dcl.DiffInfo{ObjectFunction: compareInstanceGroupManagerStatefulPolicyPreservedStateExternalIpsNewStyle, EmptyObject: EmptyInstanceGroupManagerStatefulPolicyPreservedStateExternalIps, OperationSelector: dcl.TriggersOperation("updateInstanceGroupManagerPatchOperation")}, fn.AddNest("ExternalIps")); len(ds) != 0 || err != nil {
if err != nil {
return nil, err
}
diffs = append(diffs, ds...)
}
return diffs, nil
}
func compareInstanceGroupManagerStatefulPolicyPreservedStateDisksNewStyle(d, a interface{}, fn dcl.FieldName) ([]*dcl.FieldDiff, error) {
var diffs []*dcl.FieldDiff
desired, ok := d.(*InstanceGroupManagerStatefulPolicyPreservedStateDisks)
if !ok {
desiredNotPointer, ok := d.(InstanceGroupManagerStatefulPolicyPreservedStateDisks)
if !ok {
return nil, fmt.Errorf("obj %v is not a InstanceGroupManagerStatefulPolicyPreservedStateDisks or *InstanceGroupManagerStatefulPolicyPreservedStateDisks", d)
}
desired = &desiredNotPointer
}
actual, ok := a.(*InstanceGroupManagerStatefulPolicyPreservedStateDisks)
if !ok {
actualNotPointer, ok := a.(InstanceGroupManagerStatefulPolicyPreservedStateDisks)
if !ok {
return nil, fmt.Errorf("obj %v is not a InstanceGroupManagerStatefulPolicyPreservedStateDisks", a)
}
actual = &actualNotPointer
}
if ds, err := dcl.Diff(desired.AutoDelete, actual.AutoDelete, dcl.DiffInfo{Type: "EnumType", OperationSelector: dcl.TriggersOperation("updateInstanceGroupManagerPatchOperation")}, fn.AddNest("AutoDelete")); len(ds) != 0 || err != nil {
if err != nil {
return nil, err
}
diffs = append(diffs, ds...)
}
return diffs, nil
}
func compareInstanceGroupManagerStatefulPolicyPreservedStateInternalIpsNewStyle(d, a interface{}, fn dcl.FieldName) ([]*dcl.FieldDiff, error) {
var diffs []*dcl.FieldDiff
desired, ok := d.(*InstanceGroupManagerStatefulPolicyPreservedStateInternalIps)
if !ok {
desiredNotPointer, ok := d.(InstanceGroupManagerStatefulPolicyPreservedStateInternalIps)
if !ok {
return nil, fmt.Errorf("obj %v is not a InstanceGroupManagerStatefulPolicyPreservedStateInternalIps or *InstanceGroupManagerStatefulPolicyPreservedStateInternalIps", d)
}
desired = &desiredNotPointer
}
actual, ok := a.(*InstanceGroupManagerStatefulPolicyPreservedStateInternalIps)
if !ok {
actualNotPointer, ok := a.(InstanceGroupManagerStatefulPolicyPreservedStateInternalIps)
if !ok {
return nil, fmt.Errorf("obj %v is not a InstanceGroupManagerStatefulPolicyPreservedStateInternalIps", a)
}
actual = &actualNotPointer
}
if ds, err := dcl.Diff(desired.AutoDelete, actual.AutoDelete, dcl.DiffInfo{Type: "EnumType", OperationSelector: dcl.TriggersOperation("updateInstanceGroupManagerPatchOperation")}, fn.AddNest("AutoDelete")); len(ds) != 0 || err != nil {
if err != nil {
return nil, err
}
diffs = append(diffs, ds...)
}
return diffs, nil
}
func compareInstanceGroupManagerStatefulPolicyPreservedStateExternalIpsNewStyle(d, a interface{}, fn dcl.FieldName) ([]*dcl.FieldDiff, error) {
var diffs []*dcl.FieldDiff
desired, ok := d.(*InstanceGroupManagerStatefulPolicyPreservedStateExternalIps)
if !ok {
desiredNotPointer, ok := d.(InstanceGroupManagerStatefulPolicyPreservedStateExternalIps)
if !ok {
return nil, fmt.Errorf("obj %v is not a InstanceGroupManagerStatefulPolicyPreservedStateExternalIps or *InstanceGroupManagerStatefulPolicyPreservedStateExternalIps", d)
}
desired = &desiredNotPointer
}
actual, ok := a.(*InstanceGroupManagerStatefulPolicyPreservedStateExternalIps)
if !ok {
actualNotPointer, ok := a.(InstanceGroupManagerStatefulPolicyPreservedStateExternalIps)
if !ok {
return nil, fmt.Errorf("obj %v is not a InstanceGroupManagerStatefulPolicyPreservedStateExternalIps", a)
}
actual = &actualNotPointer
}
if ds, err := dcl.Diff(desired.AutoDelete, actual.AutoDelete, dcl.DiffInfo{Type: "EnumType", OperationSelector: dcl.TriggersOperation("updateInstanceGroupManagerPatchOperation")}, fn.AddNest("AutoDelete")); len(ds) != 0 || err != nil {
if err != nil {
return nil, err
}
diffs = append(diffs, ds...)
}
return diffs, nil
}
// urlNormalized returns a copy of the resource struct with values normalized
// for URL substitutions. For instance, it converts long-form self-links to
// short-form so they can be substituted in.
func (r *InstanceGroupManager) urlNormalized() *InstanceGroupManager {
normalized := dcl.Copy(*r).(InstanceGroupManager)
normalized.CreationTimestamp = dcl.SelfLinkToName(r.CreationTimestamp)
normalized.Name = dcl.SelfLinkToName(r.Name)
normalized.Description = dcl.SelfLinkToName(r.Description)
normalized.Zone = dcl.SelfLinkToName(r.Zone)
normalized.Region = dcl.SelfLinkToName(r.Region)
normalized.InstanceTemplate = dcl.SelfLinkToName(r.InstanceTemplate)
normalized.InstanceGroup = dcl.SelfLinkToName(r.InstanceGroup)
normalized.BaseInstanceName = dcl.SelfLinkToName(r.BaseInstanceName)
normalized.Fingerprint = dcl.SelfLinkToName(r.Fingerprint)
normalized.SelfLink = dcl.SelfLinkToName(r.SelfLink)
normalized.ServiceAccount = dcl.SelfLinkToName(r.ServiceAccount)
normalized.Project = dcl.SelfLinkToName(r.Project)
normalized.Location = dcl.SelfLinkToName(r.Location)
return &normalized
}
func (r *InstanceGroupManager) updateURL(userBasePath, updateName string) (string, error) {
nr := r.urlNormalized()
if updateName == "Patch" {
fields := map[string]interface{}{
"project": dcl.ValueOrEmptyString(nr.Project),
"location": dcl.ValueOrEmptyString(nr.Location),
"name": dcl.ValueOrEmptyString(nr.Name),
}
if dcl.IsRegion(nr.Location) {
return dcl.URL("projects/{{project}}/regions/{{location}}/instanceGroupManagers/{{name}}", nr.basePath(), userBasePath, fields), nil
}
if dcl.IsZone(nr.Location) {
return dcl.URL("projects/{{project}}/zones/{{location}}/instanceGroupManagers/{{name}}", nr.basePath(), userBasePath, fields), nil
}
return "", fmt.Errorf("No valid update URL for %s", updateName)
}
if updateName == "setInstanceTemplate" {
fields := map[string]interface{}{
"project": dcl.ValueOrEmptyString(nr.Project),
"location": dcl.ValueOrEmptyString(nr.Location),
"name": dcl.ValueOrEmptyString(nr.Name),
}
if dcl.IsRegion(nr.Location) {
return dcl.URL("projects/{{project}}/regions/{{location}}/instanceGroupManagers/{{name}}/setInstanceTemplate", nr.basePath(), userBasePath, fields), nil
}
if dcl.IsZone(nr.Location) {
return dcl.URL("projects/{{project}}/zones/{{location}}/instanceGroupManagers/{{name}}/setInstanceTemplate", nr.basePath(), userBasePath, fields), nil
}
return "", fmt.Errorf("No valid update URL for %s", updateName)
}
if updateName == "setTargetPools" {
fields := map[string]interface{}{
"project": dcl.ValueOrEmptyString(nr.Project),
"location": dcl.ValueOrEmptyString(nr.Location),
"name": dcl.ValueOrEmptyString(nr.Name),
}
if dcl.IsRegion(nr.Location) {
return dcl.URL("projects/{{project}}/regions/{{location}}/instanceGroupManagers/{{name}}/setTargetPools", nr.basePath(), userBasePath, fields), nil
}
if dcl.IsZone(nr.Location) {
return dcl.URL("projects/{{project}}/zones/{{location}}/instanceGroupManagers/{{name}}/setTargetPools", nr.basePath(), userBasePath, fields), nil
}
return "", fmt.Errorf("No valid update URL for %s", updateName)
}
return "", fmt.Errorf("unknown update name: %s", updateName)
}
// marshal encodes the InstanceGroupManager resource into JSON for a Create request, and
// performs transformations from the resource schema to the API schema if
// necessary.
func (r *InstanceGroupManager) marshal(c *Client) ([]byte, error) {
m, err := expandInstanceGroupManager(c, r)
if err != nil {
return nil, fmt.Errorf("error marshalling InstanceGroupManager: %w", err)
}
return json.Marshal(m)
}
// unmarshalInstanceGroupManager decodes JSON responses into the InstanceGroupManager resource schema.
func unmarshalInstanceGroupManager(b []byte, c *Client, res *InstanceGroupManager) (*InstanceGroupManager, error) {
var m map[string]interface{}
if err := json.Unmarshal(b, &m); err != nil {
return nil, err
}
return unmarshalMapInstanceGroupManager(m, c, res)
}
func unmarshalMapInstanceGroupManager(m map[string]interface{}, c *Client, res *InstanceGroupManager) (*InstanceGroupManager, error) {
flattened := flattenInstanceGroupManager(c, m, res)
if flattened == nil {
return nil, fmt.Errorf("attempted to flatten empty json object")
}
return flattened, nil
}
// expandInstanceGroupManager expands InstanceGroupManager into a JSON request object.
func expandInstanceGroupManager(c *Client, f *InstanceGroupManager) (map[string]interface{}, error) {
m := make(map[string]interface{})
res := f
_ = res
if v := f.Name; dcl.ValueShouldBeSent(v) {
m["name"] = v
}
if v := f.Description; dcl.ValueShouldBeSent(v) {
m["description"] = v
}
if v, err := expandInstanceGroupManagerDistributionPolicy(c, f.DistributionPolicy, res); err != nil {
return nil, fmt.Errorf("error expanding DistributionPolicy into distributionPolicy: %w", err)
} else if !dcl.IsEmptyValueIndirect(v) {
m["distributionPolicy"] = v
}
if v := f.InstanceTemplate; dcl.ValueShouldBeSent(v) {
m["instanceTemplate"] = v
}
if v, err := expandInstanceGroupManagerVersionsSlice(c, f.Versions, res); err != nil {
return nil, fmt.Errorf("error expanding Versions into versions: %w", err)
} else if v != nil {
m["versions"] = v
}
if v := f.TargetPools; v != nil {
m["targetPools"] = v
}
if v := f.BaseInstanceName; dcl.ValueShouldBeSent(v) {
m["baseInstanceName"] = v
}
if v := f.TargetSize; dcl.ValueShouldBeSent(v) {
m["targetSize"] = v
}
if v, err := expandInstanceGroupManagerAutoHealingPoliciesSlice(c, f.AutoHealingPolicies, res); err != nil {
return nil, fmt.Errorf("error expanding AutoHealingPolicies into autoHealingPolicies: %w", err)
} else if v != nil {
m["autoHealingPolicies"] = v
}
if v, err := expandInstanceGroupManagerUpdatePolicy(c, f.UpdatePolicy, res); err != nil {
return nil, fmt.Errorf("error expanding UpdatePolicy into updatePolicy: %w", err)
} else if !dcl.IsEmptyValueIndirect(v) {
m["updatePolicy"] = v
}
if v, err := expandInstanceGroupManagerNamedPortsSlice(c, f.NamedPorts, res); err != nil {
return nil, fmt.Errorf("error expanding NamedPorts into namedPorts: %w", err)
} else if v != nil {
m["namedPorts"] = v
}
if v, err := expandInstanceGroupManagerStatefulPolicy(c, f.StatefulPolicy, res); err != nil {
return nil, fmt.Errorf("error expanding StatefulPolicy into statefulPolicy: %w", err)
} else if !dcl.IsEmptyValueIndirect(v) {
m["statefulPolicy"] = v
}
if v := f.ServiceAccount; dcl.ValueShouldBeSent(v) {
m["serviceAccount"] = v
}
if v := f.FailoverAction; dcl.ValueShouldBeSent(v) {
m["failoverAction"] = v
}
if v, err := dcl.EmptyValue(); err != nil {
return nil, fmt.Errorf("error expanding Project into project: %w", err)
} else if !dcl.IsEmptyValueIndirect(v) {
m["project"] = v
}
if v, err := dcl.EmptyValue(); err != nil {
return nil, fmt.Errorf("error expanding Location into location: %w", err)
} else if !dcl.IsEmptyValueIndirect(v) {
m["location"] = v
}
return m, nil
}
// flattenInstanceGroupManager flattens InstanceGroupManager from a JSON request object into the
// InstanceGroupManager type.
func flattenInstanceGroupManager(c *Client, i interface{}, res *InstanceGroupManager) *InstanceGroupManager {
m, ok := i.(map[string]interface{})
if !ok {
return nil
}
if len(m) == 0 {
return nil
}
resultRes := &InstanceGroupManager{}
resultRes.Id = dcl.FlattenInteger(m["id"])
resultRes.CreationTimestamp = dcl.FlattenString(m["creationTimestamp"])
resultRes.Name = dcl.FlattenString(m["name"])
resultRes.Description = dcl.FlattenString(m["description"])
resultRes.Zone = dcl.FlattenString(m["zone"])
resultRes.Region = dcl.FlattenString(m["region"])
resultRes.DistributionPolicy = flattenInstanceGroupManagerDistributionPolicy(c, m["distributionPolicy"], res)
resultRes.InstanceTemplate = flattenInstanceGroupManagerInstanceTemplateWithConflict(c, m["instanceTemplate"], res)
resultRes.Versions = flattenInstanceGroupManagerVersionsWithConflict(c, m["versions"], res)
resultRes.InstanceGroup = dcl.FlattenString(m["instanceGroup"])
resultRes.TargetPools = dcl.FlattenStringSlice(m["targetPools"])
resultRes.BaseInstanceName = dcl.FlattenString(m["baseInstanceName"])
resultRes.Fingerprint = dcl.FlattenString(m["fingerprint"])
resultRes.CurrentActions = flattenInstanceGroupManagerCurrentActions(c, m["currentActions"], res)
resultRes.Status = flattenInstanceGroupManagerStatus(c, m["status"], res)
resultRes.TargetSize = dcl.FlattenInteger(m["targetSize"])
resultRes.SelfLink = dcl.FlattenString(m["selfLink"])
resultRes.AutoHealingPolicies = flattenInstanceGroupManagerAutoHealingPoliciesSlice(c, m["autoHealingPolicies"], res)
resultRes.UpdatePolicy = flattenInstanceGroupManagerUpdatePolicy(c, m["updatePolicy"], res)
resultRes.NamedPorts = flattenInstanceGroupManagerNamedPortsSlice(c, m["namedPorts"], res)
resultRes.StatefulPolicy = flattenInstanceGroupManagerStatefulPolicy(c, m["statefulPolicy"], res)
resultRes.ServiceAccount = dcl.FlattenString(m["serviceAccount"])
resultRes.FailoverAction = flattenInstanceGroupManagerFailoverActionEnum(m["failoverAction"])
resultRes.Project = dcl.FlattenString(m["project"])
resultRes.Location = dcl.FlattenString(m["location"])
return resultRes
}
// expandInstanceGroupManagerDistributionPolicyMap expands the contents of InstanceGroupManagerDistributionPolicy into a JSON
// request object.
func expandInstanceGroupManagerDistributionPolicyMap(c *Client, f map[string]InstanceGroupManagerDistributionPolicy, res *InstanceGroupManager) (map[string]interface{}, error) {
if f == nil {
return nil, nil
}
items := make(map[string]interface{})
for k, item := range f {
i, err := expandInstanceGroupManagerDistributionPolicy(c, &item, res)
if err != nil {
return nil, err
}
if i != nil {
items[k] = i
}
}
return items, nil
}
// expandInstanceGroupManagerDistributionPolicySlice expands the contents of InstanceGroupManagerDistributionPolicy into a JSON
// request object.
func expandInstanceGroupManagerDistributionPolicySlice(c *Client, f []InstanceGroupManagerDistributionPolicy, res *InstanceGroupManager) ([]map[string]interface{}, error) {
if f == nil {
return nil, nil
}
items := []map[string]interface{}{}
for _, item := range f {
i, err := expandInstanceGroupManagerDistributionPolicy(c, &item, res)
if err != nil {
return nil, err
}
items = append(items, i)
}
return items, nil
}
// flattenInstanceGroupManagerDistributionPolicyMap flattens the contents of InstanceGroupManagerDistributionPolicy from a JSON
// response object.
func flattenInstanceGroupManagerDistributionPolicyMap(c *Client, i interface{}, res *InstanceGroupManager) map[string]InstanceGroupManagerDistributionPolicy {
a, ok := i.(map[string]interface{})
if !ok {
return map[string]InstanceGroupManagerDistributionPolicy{}
}
if len(a) == 0 {
return map[string]InstanceGroupManagerDistributionPolicy{}
}
items := make(map[string]InstanceGroupManagerDistributionPolicy)
for k, item := range a {
items[k] = *flattenInstanceGroupManagerDistributionPolicy(c, item.(map[string]interface{}), res)
}
return items
}
// flattenInstanceGroupManagerDistributionPolicySlice flattens the contents of InstanceGroupManagerDistributionPolicy from a JSON
// response object.
func flattenInstanceGroupManagerDistributionPolicySlice(c *Client, i interface{}, res *InstanceGroupManager) []InstanceGroupManagerDistributionPolicy {
a, ok := i.([]interface{})
if !ok {
return []InstanceGroupManagerDistributionPolicy{}
}
if len(a) == 0 {
return []InstanceGroupManagerDistributionPolicy{}
}
items := make([]InstanceGroupManagerDistributionPolicy, 0, len(a))
for _, item := range a {
items = append(items, *flattenInstanceGroupManagerDistributionPolicy(c, item.(map[string]interface{}), res))
}
return items
}
// expandInstanceGroupManagerDistributionPolicy expands an instance of InstanceGroupManagerDistributionPolicy into a JSON
// request object.
func expandInstanceGroupManagerDistributionPolicy(c *Client, f *InstanceGroupManagerDistributionPolicy, res *InstanceGroupManager) (map[string]interface{}, error) {
if dcl.IsEmptyValueIndirect(f) {
return nil, nil
}
m := make(map[string]interface{})
if v, err := expandInstanceGroupManagerDistributionPolicyZonesSlice(c, f.Zones, res); err != nil {
return nil, fmt.Errorf("error expanding Zones into zones: %w", err)
} else if v != nil {
m["zones"] = v
}
if v := f.TargetShape; !dcl.IsEmptyValueIndirect(v) {
m["targetShape"] = v
}
return m, nil
}
// flattenInstanceGroupManagerDistributionPolicy flattens an instance of InstanceGroupManagerDistributionPolicy from a JSON
// response object.
func flattenInstanceGroupManagerDistributionPolicy(c *Client, i interface{}, res *InstanceGroupManager) *InstanceGroupManagerDistributionPolicy {
m, ok := i.(map[string]interface{})
if !ok {
return nil
}
r := &InstanceGroupManagerDistributionPolicy{}
if dcl.IsEmptyValueIndirect(i) {
return EmptyInstanceGroupManagerDistributionPolicy
}
r.Zones = flattenInstanceGroupManagerDistributionPolicyZonesSlice(c, m["zones"], res)
r.TargetShape = flattenInstanceGroupManagerDistributionPolicyTargetShapeEnum(m["targetShape"])
return r
}
// expandInstanceGroupManagerDistributionPolicyZonesMap expands the contents of InstanceGroupManagerDistributionPolicyZones into a JSON
// request object.
func expandInstanceGroupManagerDistributionPolicyZonesMap(c *Client, f map[string]InstanceGroupManagerDistributionPolicyZones, res *InstanceGroupManager) (map[string]interface{}, error) {
if f == nil {
return nil, nil
}
items := make(map[string]interface{})
for k, item := range f {
i, err := expandInstanceGroupManagerDistributionPolicyZones(c, &item, res)
if err != nil {
return nil, err
}
if i != nil {
items[k] = i
}
}
return items, nil
}
// expandInstanceGroupManagerDistributionPolicyZonesSlice expands the contents of InstanceGroupManagerDistributionPolicyZones into a JSON
// request object.
func expandInstanceGroupManagerDistributionPolicyZonesSlice(c *Client, f []InstanceGroupManagerDistributionPolicyZones, res *InstanceGroupManager) ([]map[string]interface{}, error) {
if f == nil {
return nil, nil
}
items := []map[string]interface{}{}
for _, item := range f {
i, err := expandInstanceGroupManagerDistributionPolicyZones(c, &item, res)
if err != nil {
return nil, err
}
items = append(items, i)
}
return items, nil
}
// flattenInstanceGroupManagerDistributionPolicyZonesMap flattens the contents of InstanceGroupManagerDistributionPolicyZones from a JSON
// response object.
func flattenInstanceGroupManagerDistributionPolicyZonesMap(c *Client, i interface{}, res *InstanceGroupManager) map[string]InstanceGroupManagerDistributionPolicyZones {
a, ok := i.(map[string]interface{})
if !ok {
return map[string]InstanceGroupManagerDistributionPolicyZones{}
}
if len(a) == 0 {
return map[string]InstanceGroupManagerDistributionPolicyZones{}
}
items := make(map[string]InstanceGroupManagerDistributionPolicyZones)
for k, item := range a {
items[k] = *flattenInstanceGroupManagerDistributionPolicyZones(c, item.(map[string]interface{}), res)
}
return items
}
// flattenInstanceGroupManagerDistributionPolicyZonesSlice flattens the contents of InstanceGroupManagerDistributionPolicyZones from a JSON
// response object.
func flattenInstanceGroupManagerDistributionPolicyZonesSlice(c *Client, i interface{}, res *InstanceGroupManager) []InstanceGroupManagerDistributionPolicyZones {
a, ok := i.([]interface{})
if !ok {
return []InstanceGroupManagerDistributionPolicyZones{}
}
if len(a) == 0 {
return []InstanceGroupManagerDistributionPolicyZones{}
}
items := make([]InstanceGroupManagerDistributionPolicyZones, 0, len(a))
for _, item := range a {
items = append(items, *flattenInstanceGroupManagerDistributionPolicyZones(c, item.(map[string]interface{}), res))
}
return items
}
// expandInstanceGroupManagerDistributionPolicyZones expands an instance of InstanceGroupManagerDistributionPolicyZones into a JSON
// request object.
func expandInstanceGroupManagerDistributionPolicyZones(c *Client, f *InstanceGroupManagerDistributionPolicyZones, res *InstanceGroupManager) (map[string]interface{}, error) {
if f == nil {
return nil, nil
}
m := make(map[string]interface{})
if v := f.Zone; !dcl.IsEmptyValueIndirect(v) {
m["zone"] = v
}
return m, nil
}
// flattenInstanceGroupManagerDistributionPolicyZones flattens an instance of InstanceGroupManagerDistributionPolicyZones from a JSON
// response object.
func flattenInstanceGroupManagerDistributionPolicyZones(c *Client, i interface{}, res *InstanceGroupManager) *InstanceGroupManagerDistributionPolicyZones {
m, ok := i.(map[string]interface{})
if !ok {
return nil
}
r := &InstanceGroupManagerDistributionPolicyZones{}
if dcl.IsEmptyValueIndirect(i) {
return EmptyInstanceGroupManagerDistributionPolicyZones
}
r.Zone = dcl.FlattenString(m["zone"])
return r
}
// expandInstanceGroupManagerVersionsMap expands the contents of InstanceGroupManagerVersions into a JSON
// request object.
func expandInstanceGroupManagerVersionsMap(c *Client, f map[string]InstanceGroupManagerVersions, res *InstanceGroupManager) (map[string]interface{}, error) {
if f == nil {
return nil, nil
}
items := make(map[string]interface{})
for k, item := range f {
i, err := expandInstanceGroupManagerVersions(c, &item, res)
if err != nil {
return nil, err
}
if i != nil {
items[k] = i
}
}
return items, nil
}
// expandInstanceGroupManagerVersionsSlice expands the contents of InstanceGroupManagerVersions into a JSON
// request object.
func expandInstanceGroupManagerVersionsSlice(c *Client, f []InstanceGroupManagerVersions, res *InstanceGroupManager) ([]map[string]interface{}, error) {
if f == nil {
return nil, nil
}
items := []map[string]interface{}{}
for _, item := range f {
i, err := expandInstanceGroupManagerVersions(c, &item, res)
if err != nil {
return nil, err
}
items = append(items, i)
}
return items, nil
}
// flattenInstanceGroupManagerVersionsMap flattens the contents of InstanceGroupManagerVersions from a JSON
// response object.
func flattenInstanceGroupManagerVersionsMap(c *Client, i interface{}, res *InstanceGroupManager) map[string]InstanceGroupManagerVersions {
a, ok := i.(map[string]interface{})
if !ok {
return map[string]InstanceGroupManagerVersions{}
}
if len(a) == 0 {
return map[string]InstanceGroupManagerVersions{}
}
items := make(map[string]InstanceGroupManagerVersions)
for k, item := range a {
items[k] = *flattenInstanceGroupManagerVersions(c, item.(map[string]interface{}), res)
}
return items
}
// flattenInstanceGroupManagerVersionsSlice flattens the contents of InstanceGroupManagerVersions from a JSON
// response object.
func flattenInstanceGroupManagerVersionsSlice(c *Client, i interface{}, res *InstanceGroupManager) []InstanceGroupManagerVersions {
a, ok := i.([]interface{})
if !ok {
return []InstanceGroupManagerVersions{}
}
if len(a) == 0 {
return []InstanceGroupManagerVersions{}
}
items := make([]InstanceGroupManagerVersions, 0, len(a))
for _, item := range a {
items = append(items, *flattenInstanceGroupManagerVersions(c, item.(map[string]interface{}), res))
}
return items
}
// expandInstanceGroupManagerVersions expands an instance of InstanceGroupManagerVersions into a JSON
// request object.
func expandInstanceGroupManagerVersions(c *Client, f *InstanceGroupManagerVersions, res *InstanceGroupManager) (map[string]interface{}, error) {
if f == nil {
return nil, nil
}
m := make(map[string]interface{})
if v := f.Name; !dcl.IsEmptyValueIndirect(v) {
m["name"] = v
}
if v := f.InstanceTemplate; !dcl.IsEmptyValueIndirect(v) {
m["instanceTemplate"] = v
}
if v, err := expandInstanceGroupManagerVersionsTargetSize(c, f.TargetSize, res); err != nil {
return nil, fmt.Errorf("error expanding TargetSize into targetSize: %w", err)
} else if !dcl.IsEmptyValueIndirect(v) {
m["targetSize"] = v
}
return m, nil
}
// flattenInstanceGroupManagerVersions flattens an instance of InstanceGroupManagerVersions from a JSON
// response object.
func flattenInstanceGroupManagerVersions(c *Client, i interface{}, res *InstanceGroupManager) *InstanceGroupManagerVersions {
m, ok := i.(map[string]interface{})
if !ok {
return nil
}
r := &InstanceGroupManagerVersions{}
if dcl.IsEmptyValueIndirect(i) {
return EmptyInstanceGroupManagerVersions
}
r.Name = dcl.FlattenString(m["name"])
r.InstanceTemplate = dcl.FlattenString(m["instanceTemplate"])
r.TargetSize = flattenInstanceGroupManagerVersionsTargetSize(c, m["targetSize"], res)
return r
}
// expandInstanceGroupManagerVersionsTargetSizeMap expands the contents of InstanceGroupManagerVersionsTargetSize into a JSON
// request object.
func expandInstanceGroupManagerVersionsTargetSizeMap(c *Client, f map[string]InstanceGroupManagerVersionsTargetSize, res *InstanceGroupManager) (map[string]interface{}, error) {
if f == nil {
return nil, nil
}
items := make(map[string]interface{})
for k, item := range f {
i, err := expandInstanceGroupManagerVersionsTargetSize(c, &item, res)
if err != nil {
return nil, err
}
if i != nil {
items[k] = i
}
}
return items, nil
}
// expandInstanceGroupManagerVersionsTargetSizeSlice expands the contents of InstanceGroupManagerVersionsTargetSize into a JSON
// request object.
func expandInstanceGroupManagerVersionsTargetSizeSlice(c *Client, f []InstanceGroupManagerVersionsTargetSize, res *InstanceGroupManager) ([]map[string]interface{}, error) {
if f == nil {
return nil, nil
}
items := []map[string]interface{}{}
for _, item := range f {
i, err := expandInstanceGroupManagerVersionsTargetSize(c, &item, res)
if err != nil {
return nil, err
}
items = append(items, i)
}
return items, nil
}
// flattenInstanceGroupManagerVersionsTargetSizeMap flattens the contents of InstanceGroupManagerVersionsTargetSize from a JSON
// response object.
func flattenInstanceGroupManagerVersionsTargetSizeMap(c *Client, i interface{}, res *InstanceGroupManager) map[string]InstanceGroupManagerVersionsTargetSize {
a, ok := i.(map[string]interface{})
if !ok {
return map[string]InstanceGroupManagerVersionsTargetSize{}
}
if len(a) == 0 {
return map[string]InstanceGroupManagerVersionsTargetSize{}
}
items := make(map[string]InstanceGroupManagerVersionsTargetSize)
for k, item := range a {
items[k] = *flattenInstanceGroupManagerVersionsTargetSize(c, item.(map[string]interface{}), res)
}
return items
}
// flattenInstanceGroupManagerVersionsTargetSizeSlice flattens the contents of InstanceGroupManagerVersionsTargetSize from a JSON
// response object.
func flattenInstanceGroupManagerVersionsTargetSizeSlice(c *Client, i interface{}, res *InstanceGroupManager) []InstanceGroupManagerVersionsTargetSize {
a, ok := i.([]interface{})
if !ok {
return []InstanceGroupManagerVersionsTargetSize{}
}
if len(a) == 0 {
return []InstanceGroupManagerVersionsTargetSize{}
}
items := make([]InstanceGroupManagerVersionsTargetSize, 0, len(a))
for _, item := range a {
items = append(items, *flattenInstanceGroupManagerVersionsTargetSize(c, item.(map[string]interface{}), res))
}
return items
}
// expandInstanceGroupManagerVersionsTargetSize expands an instance of InstanceGroupManagerVersionsTargetSize into a JSON
// request object.
func expandInstanceGroupManagerVersionsTargetSize(c *Client, f *InstanceGroupManagerVersionsTargetSize, res *InstanceGroupManager) (map[string]interface{}, error) {
if dcl.IsEmptyValueIndirect(f) {
return nil, nil
}
m := make(map[string]interface{})
if v := f.Fixed; v != nil {
m["fixed"] = v
}
if v := f.Percent; v != nil {
m["percent"] = v
}
return m, nil
}
// flattenInstanceGroupManagerVersionsTargetSize flattens an instance of InstanceGroupManagerVersionsTargetSize from a JSON
// response object.
func flattenInstanceGroupManagerVersionsTargetSize(c *Client, i interface{}, res *InstanceGroupManager) *InstanceGroupManagerVersionsTargetSize {
m, ok := i.(map[string]interface{})
if !ok {
return nil
}
r := &InstanceGroupManagerVersionsTargetSize{}
if dcl.IsEmptyValueIndirect(i) {
return EmptyInstanceGroupManagerVersionsTargetSize
}
r.Fixed = dcl.FlattenInteger(m["fixed"])
r.Percent = dcl.FlattenInteger(m["percent"])
r.Calculated = dcl.FlattenInteger(m["calculated"])
return r
}
// expandInstanceGroupManagerCurrentActionsMap expands the contents of InstanceGroupManagerCurrentActions into a JSON
// request object.
func expandInstanceGroupManagerCurrentActionsMap(c *Client, f map[string]InstanceGroupManagerCurrentActions, res *InstanceGroupManager) (map[string]interface{}, error) {
if f == nil {
return nil, nil
}
items := make(map[string]interface{})
for k, item := range f {
i, err := expandInstanceGroupManagerCurrentActions(c, &item, res)
if err != nil {
return nil, err
}
if i != nil {
items[k] = i
}
}
return items, nil
}
// expandInstanceGroupManagerCurrentActionsSlice expands the contents of InstanceGroupManagerCurrentActions into a JSON
// request object.
func expandInstanceGroupManagerCurrentActionsSlice(c *Client, f []InstanceGroupManagerCurrentActions, res *InstanceGroupManager) ([]map[string]interface{}, error) {
if f == nil {
return nil, nil
}
items := []map[string]interface{}{}
for _, item := range f {
i, err := expandInstanceGroupManagerCurrentActions(c, &item, res)
if err != nil {
return nil, err
}
items = append(items, i)
}
return items, nil
}
// flattenInstanceGroupManagerCurrentActionsMap flattens the contents of InstanceGroupManagerCurrentActions from a JSON
// response object.
func flattenInstanceGroupManagerCurrentActionsMap(c *Client, i interface{}, res *InstanceGroupManager) map[string]InstanceGroupManagerCurrentActions {
a, ok := i.(map[string]interface{})
if !ok {
return map[string]InstanceGroupManagerCurrentActions{}
}
if len(a) == 0 {
return map[string]InstanceGroupManagerCurrentActions{}
}
items := make(map[string]InstanceGroupManagerCurrentActions)
for k, item := range a {
items[k] = *flattenInstanceGroupManagerCurrentActions(c, item.(map[string]interface{}), res)
}
return items
}
// flattenInstanceGroupManagerCurrentActionsSlice flattens the contents of InstanceGroupManagerCurrentActions from a JSON
// response object.
func flattenInstanceGroupManagerCurrentActionsSlice(c *Client, i interface{}, res *InstanceGroupManager) []InstanceGroupManagerCurrentActions {
a, ok := i.([]interface{})
if !ok {
return []InstanceGroupManagerCurrentActions{}
}
if len(a) == 0 {
return []InstanceGroupManagerCurrentActions{}
}
items := make([]InstanceGroupManagerCurrentActions, 0, len(a))
for _, item := range a {
items = append(items, *flattenInstanceGroupManagerCurrentActions(c, item.(map[string]interface{}), res))
}
return items
}
// expandInstanceGroupManagerCurrentActions expands an instance of InstanceGroupManagerCurrentActions into a JSON
// request object.
func expandInstanceGroupManagerCurrentActions(c *Client, f *InstanceGroupManagerCurrentActions, res *InstanceGroupManager) (map[string]interface{}, error) {
if dcl.IsEmptyValueIndirect(f) {
return nil, nil
}
m := make(map[string]interface{})
return m, nil
}
// flattenInstanceGroupManagerCurrentActions flattens an instance of InstanceGroupManagerCurrentActions from a JSON
// response object.
func flattenInstanceGroupManagerCurrentActions(c *Client, i interface{}, res *InstanceGroupManager) *InstanceGroupManagerCurrentActions {
m, ok := i.(map[string]interface{})
if !ok {
return nil
}
r := &InstanceGroupManagerCurrentActions{}
if dcl.IsEmptyValueIndirect(i) {
return EmptyInstanceGroupManagerCurrentActions
}
r.None = dcl.FlattenInteger(m["none"])
r.Creating = dcl.FlattenInteger(m["creating"])
r.CreatingWithoutRetries = dcl.FlattenInteger(m["creatingWithoutRetries"])
r.Verifying = dcl.FlattenInteger(m["verifying"])
r.Recreating = dcl.FlattenInteger(m["recreating"])
r.Deleting = dcl.FlattenInteger(m["deleting"])
r.Abandoning = dcl.FlattenInteger(m["abandoning"])
r.Restarting = dcl.FlattenInteger(m["restarting"])
r.Refreshing = dcl.FlattenInteger(m["refreshing"])
return r
}
// expandInstanceGroupManagerStatusMap expands the contents of InstanceGroupManagerStatus into a JSON
// request object.
func expandInstanceGroupManagerStatusMap(c *Client, f map[string]InstanceGroupManagerStatus, res *InstanceGroupManager) (map[string]interface{}, error) {
if f == nil {
return nil, nil
}
items := make(map[string]interface{})
for k, item := range f {
i, err := expandInstanceGroupManagerStatus(c, &item, res)
if err != nil {
return nil, err
}
if i != nil {
items[k] = i
}
}
return items, nil
}
// expandInstanceGroupManagerStatusSlice expands the contents of InstanceGroupManagerStatus into a JSON
// request object.
func expandInstanceGroupManagerStatusSlice(c *Client, f []InstanceGroupManagerStatus, res *InstanceGroupManager) ([]map[string]interface{}, error) {
if f == nil {
return nil, nil
}
items := []map[string]interface{}{}
for _, item := range f {
i, err := expandInstanceGroupManagerStatus(c, &item, res)
if err != nil {
return nil, err
}
items = append(items, i)
}
return items, nil
}
// flattenInstanceGroupManagerStatusMap flattens the contents of InstanceGroupManagerStatus from a JSON
// response object.
func flattenInstanceGroupManagerStatusMap(c *Client, i interface{}, res *InstanceGroupManager) map[string]InstanceGroupManagerStatus {
a, ok := i.(map[string]interface{})
if !ok {
return map[string]InstanceGroupManagerStatus{}
}
if len(a) == 0 {
return map[string]InstanceGroupManagerStatus{}
}
items := make(map[string]InstanceGroupManagerStatus)
for k, item := range a {
items[k] = *flattenInstanceGroupManagerStatus(c, item.(map[string]interface{}), res)
}
return items
}
// flattenInstanceGroupManagerStatusSlice flattens the contents of InstanceGroupManagerStatus from a JSON
// response object.
func flattenInstanceGroupManagerStatusSlice(c *Client, i interface{}, res *InstanceGroupManager) []InstanceGroupManagerStatus {
a, ok := i.([]interface{})
if !ok {
return []InstanceGroupManagerStatus{}
}
if len(a) == 0 {
return []InstanceGroupManagerStatus{}
}
items := make([]InstanceGroupManagerStatus, 0, len(a))
for _, item := range a {
items = append(items, *flattenInstanceGroupManagerStatus(c, item.(map[string]interface{}), res))
}
return items
}
// expandInstanceGroupManagerStatus expands an instance of InstanceGroupManagerStatus into a JSON
// request object.
func expandInstanceGroupManagerStatus(c *Client, f *InstanceGroupManagerStatus, res *InstanceGroupManager) (map[string]interface{}, error) {
if dcl.IsEmptyValueIndirect(f) {
return nil, nil
}
m := make(map[string]interface{})
return m, nil
}
// flattenInstanceGroupManagerStatus flattens an instance of InstanceGroupManagerStatus from a JSON
// response object.
func flattenInstanceGroupManagerStatus(c *Client, i interface{}, res *InstanceGroupManager) *InstanceGroupManagerStatus {
m, ok := i.(map[string]interface{})
if !ok {
return nil
}
r := &InstanceGroupManagerStatus{}
if dcl.IsEmptyValueIndirect(i) {
return EmptyInstanceGroupManagerStatus
}
r.IsStable = dcl.FlattenBool(m["isStable"])
r.VersionTarget = flattenInstanceGroupManagerStatusVersionTarget(c, m["versionTarget"], res)
r.Stateful = flattenInstanceGroupManagerStatusStateful(c, m["stateful"], res)
r.Autoscaler = dcl.FlattenString(m["autoscaler"])
return r
}
// expandInstanceGroupManagerStatusVersionTargetMap expands the contents of InstanceGroupManagerStatusVersionTarget into a JSON
// request object.
func expandInstanceGroupManagerStatusVersionTargetMap(c *Client, f map[string]InstanceGroupManagerStatusVersionTarget, res *InstanceGroupManager) (map[string]interface{}, error) {
if f == nil {
return nil, nil
}
items := make(map[string]interface{})
for k, item := range f {
i, err := expandInstanceGroupManagerStatusVersionTarget(c, &item, res)
if err != nil {
return nil, err
}
if i != nil {
items[k] = i
}
}
return items, nil
}
// expandInstanceGroupManagerStatusVersionTargetSlice expands the contents of InstanceGroupManagerStatusVersionTarget into a JSON
// request object.
func expandInstanceGroupManagerStatusVersionTargetSlice(c *Client, f []InstanceGroupManagerStatusVersionTarget, res *InstanceGroupManager) ([]map[string]interface{}, error) {
if f == nil {
return nil, nil
}
items := []map[string]interface{}{}
for _, item := range f {
i, err := expandInstanceGroupManagerStatusVersionTarget(c, &item, res)
if err != nil {
return nil, err
}
items = append(items, i)
}
return items, nil
}
// flattenInstanceGroupManagerStatusVersionTargetMap flattens the contents of InstanceGroupManagerStatusVersionTarget from a JSON
// response object.
func flattenInstanceGroupManagerStatusVersionTargetMap(c *Client, i interface{}, res *InstanceGroupManager) map[string]InstanceGroupManagerStatusVersionTarget {
a, ok := i.(map[string]interface{})
if !ok {
return map[string]InstanceGroupManagerStatusVersionTarget{}
}
if len(a) == 0 {
return map[string]InstanceGroupManagerStatusVersionTarget{}
}
items := make(map[string]InstanceGroupManagerStatusVersionTarget)
for k, item := range a {
items[k] = *flattenInstanceGroupManagerStatusVersionTarget(c, item.(map[string]interface{}), res)
}
return items
}
// flattenInstanceGroupManagerStatusVersionTargetSlice flattens the contents of InstanceGroupManagerStatusVersionTarget from a JSON
// response object.
func flattenInstanceGroupManagerStatusVersionTargetSlice(c *Client, i interface{}, res *InstanceGroupManager) []InstanceGroupManagerStatusVersionTarget {
a, ok := i.([]interface{})
if !ok {
return []InstanceGroupManagerStatusVersionTarget{}
}
if len(a) == 0 {
return []InstanceGroupManagerStatusVersionTarget{}
}
items := make([]InstanceGroupManagerStatusVersionTarget, 0, len(a))
for _, item := range a {
items = append(items, *flattenInstanceGroupManagerStatusVersionTarget(c, item.(map[string]interface{}), res))
}
return items
}
// expandInstanceGroupManagerStatusVersionTarget expands an instance of InstanceGroupManagerStatusVersionTarget into a JSON
// request object.
func expandInstanceGroupManagerStatusVersionTarget(c *Client, f *InstanceGroupManagerStatusVersionTarget, res *InstanceGroupManager) (map[string]interface{}, error) {
if dcl.IsEmptyValueIndirect(f) {
return nil, nil
}
m := make(map[string]interface{})
return m, nil
}
// flattenInstanceGroupManagerStatusVersionTarget flattens an instance of InstanceGroupManagerStatusVersionTarget from a JSON
// response object.
func flattenInstanceGroupManagerStatusVersionTarget(c *Client, i interface{}, res *InstanceGroupManager) *InstanceGroupManagerStatusVersionTarget {
m, ok := i.(map[string]interface{})
if !ok {
return nil
}
r := &InstanceGroupManagerStatusVersionTarget{}
if dcl.IsEmptyValueIndirect(i) {
return EmptyInstanceGroupManagerStatusVersionTarget
}
r.IsReached = dcl.FlattenBool(m["isReached"])
return r
}
// expandInstanceGroupManagerStatusStatefulMap expands the contents of InstanceGroupManagerStatusStateful into a JSON
// request object.
func expandInstanceGroupManagerStatusStatefulMap(c *Client, f map[string]InstanceGroupManagerStatusStateful, res *InstanceGroupManager) (map[string]interface{}, error) {
if f == nil {
return nil, nil
}
items := make(map[string]interface{})
for k, item := range f {
i, err := expandInstanceGroupManagerStatusStateful(c, &item, res)
if err != nil {
return nil, err
}
if i != nil {
items[k] = i
}
}
return items, nil
}
// expandInstanceGroupManagerStatusStatefulSlice expands the contents of InstanceGroupManagerStatusStateful into a JSON
// request object.
func expandInstanceGroupManagerStatusStatefulSlice(c *Client, f []InstanceGroupManagerStatusStateful, res *InstanceGroupManager) ([]map[string]interface{}, error) {
if f == nil {
return nil, nil
}
items := []map[string]interface{}{}
for _, item := range f {
i, err := expandInstanceGroupManagerStatusStateful(c, &item, res)
if err != nil {
return nil, err
}
items = append(items, i)
}
return items, nil
}
// flattenInstanceGroupManagerStatusStatefulMap flattens the contents of InstanceGroupManagerStatusStateful from a JSON
// response object.
func flattenInstanceGroupManagerStatusStatefulMap(c *Client, i interface{}, res *InstanceGroupManager) map[string]InstanceGroupManagerStatusStateful {
a, ok := i.(map[string]interface{})
if !ok {
return map[string]InstanceGroupManagerStatusStateful{}
}
if len(a) == 0 {
return map[string]InstanceGroupManagerStatusStateful{}
}
items := make(map[string]InstanceGroupManagerStatusStateful)
for k, item := range a {
items[k] = *flattenInstanceGroupManagerStatusStateful(c, item.(map[string]interface{}), res)
}
return items
}
// flattenInstanceGroupManagerStatusStatefulSlice flattens the contents of InstanceGroupManagerStatusStateful from a JSON
// response object.
func flattenInstanceGroupManagerStatusStatefulSlice(c *Client, i interface{}, res *InstanceGroupManager) []InstanceGroupManagerStatusStateful {
a, ok := i.([]interface{})
if !ok {
return []InstanceGroupManagerStatusStateful{}
}
if len(a) == 0 {
return []InstanceGroupManagerStatusStateful{}
}
items := make([]InstanceGroupManagerStatusStateful, 0, len(a))
for _, item := range a {
items = append(items, *flattenInstanceGroupManagerStatusStateful(c, item.(map[string]interface{}), res))
}
return items
}
// expandInstanceGroupManagerStatusStateful expands an instance of InstanceGroupManagerStatusStateful into a JSON
// request object.
func expandInstanceGroupManagerStatusStateful(c *Client, f *InstanceGroupManagerStatusStateful, res *InstanceGroupManager) (map[string]interface{}, error) {
if dcl.IsEmptyValueIndirect(f) {
return nil, nil
}
m := make(map[string]interface{})
return m, nil
}
// flattenInstanceGroupManagerStatusStateful flattens an instance of InstanceGroupManagerStatusStateful from a JSON
// response object.
func flattenInstanceGroupManagerStatusStateful(c *Client, i interface{}, res *InstanceGroupManager) *InstanceGroupManagerStatusStateful {
m, ok := i.(map[string]interface{})
if !ok {
return nil
}
r := &InstanceGroupManagerStatusStateful{}
if dcl.IsEmptyValueIndirect(i) {
return EmptyInstanceGroupManagerStatusStateful
}
r.HasStatefulConfig = dcl.FlattenBool(m["hasStatefulConfig"])
r.PerInstanceConfigs = flattenInstanceGroupManagerStatusStatefulPerInstanceConfigs(c, m["perInstanceConfigs"], res)
r.IsStateful = dcl.FlattenBool(m["isStateful"])
return r
}
// expandInstanceGroupManagerStatusStatefulPerInstanceConfigsMap expands the contents of InstanceGroupManagerStatusStatefulPerInstanceConfigs into a JSON
// request object.
func expandInstanceGroupManagerStatusStatefulPerInstanceConfigsMap(c *Client, f map[string]InstanceGroupManagerStatusStatefulPerInstanceConfigs, res *InstanceGroupManager) (map[string]interface{}, error) {
if f == nil {
return nil, nil
}
items := make(map[string]interface{})
for k, item := range f {
i, err := expandInstanceGroupManagerStatusStatefulPerInstanceConfigs(c, &item, res)
if err != nil {
return nil, err
}
if i != nil {
items[k] = i
}
}
return items, nil
}
// expandInstanceGroupManagerStatusStatefulPerInstanceConfigsSlice expands the contents of InstanceGroupManagerStatusStatefulPerInstanceConfigs into a JSON
// request object.
func expandInstanceGroupManagerStatusStatefulPerInstanceConfigsSlice(c *Client, f []InstanceGroupManagerStatusStatefulPerInstanceConfigs, res *InstanceGroupManager) ([]map[string]interface{}, error) {
if f == nil {
return nil, nil
}
items := []map[string]interface{}{}
for _, item := range f {
i, err := expandInstanceGroupManagerStatusStatefulPerInstanceConfigs(c, &item, res)
if err != nil {
return nil, err
}
items = append(items, i)
}
return items, nil
}
// flattenInstanceGroupManagerStatusStatefulPerInstanceConfigsMap flattens the contents of InstanceGroupManagerStatusStatefulPerInstanceConfigs from a JSON
// response object.
func flattenInstanceGroupManagerStatusStatefulPerInstanceConfigsMap(c *Client, i interface{}, res *InstanceGroupManager) map[string]InstanceGroupManagerStatusStatefulPerInstanceConfigs {
a, ok := i.(map[string]interface{})
if !ok {
return map[string]InstanceGroupManagerStatusStatefulPerInstanceConfigs{}
}
if len(a) == 0 {
return map[string]InstanceGroupManagerStatusStatefulPerInstanceConfigs{}
}
items := make(map[string]InstanceGroupManagerStatusStatefulPerInstanceConfigs)
for k, item := range a {
items[k] = *flattenInstanceGroupManagerStatusStatefulPerInstanceConfigs(c, item.(map[string]interface{}), res)
}
return items
}
// flattenInstanceGroupManagerStatusStatefulPerInstanceConfigsSlice flattens the contents of InstanceGroupManagerStatusStatefulPerInstanceConfigs from a JSON
// response object.
func flattenInstanceGroupManagerStatusStatefulPerInstanceConfigsSlice(c *Client, i interface{}, res *InstanceGroupManager) []InstanceGroupManagerStatusStatefulPerInstanceConfigs {
a, ok := i.([]interface{})
if !ok {
return []InstanceGroupManagerStatusStatefulPerInstanceConfigs{}
}
if len(a) == 0 {
return []InstanceGroupManagerStatusStatefulPerInstanceConfigs{}
}
items := make([]InstanceGroupManagerStatusStatefulPerInstanceConfigs, 0, len(a))
for _, item := range a {
items = append(items, *flattenInstanceGroupManagerStatusStatefulPerInstanceConfigs(c, item.(map[string]interface{}), res))
}
return items
}
// expandInstanceGroupManagerStatusStatefulPerInstanceConfigs expands an instance of InstanceGroupManagerStatusStatefulPerInstanceConfigs into a JSON
// request object.
func expandInstanceGroupManagerStatusStatefulPerInstanceConfigs(c *Client, f *InstanceGroupManagerStatusStatefulPerInstanceConfigs, res *InstanceGroupManager) (map[string]interface{}, error) {
if dcl.IsEmptyValueIndirect(f) {
return nil, nil
}
m := make(map[string]interface{})
if v := f.AllEffective; !dcl.IsEmptyValueIndirect(v) {
m["allEffective"] = v
}
return m, nil
}
// flattenInstanceGroupManagerStatusStatefulPerInstanceConfigs flattens an instance of InstanceGroupManagerStatusStatefulPerInstanceConfigs from a JSON
// response object.
func flattenInstanceGroupManagerStatusStatefulPerInstanceConfigs(c *Client, i interface{}, res *InstanceGroupManager) *InstanceGroupManagerStatusStatefulPerInstanceConfigs {
m, ok := i.(map[string]interface{})
if !ok {
return nil
}
r := &InstanceGroupManagerStatusStatefulPerInstanceConfigs{}
if dcl.IsEmptyValueIndirect(i) {
return EmptyInstanceGroupManagerStatusStatefulPerInstanceConfigs
}
r.AllEffective = dcl.FlattenBool(m["allEffective"])
return r
}
// expandInstanceGroupManagerAutoHealingPoliciesMap expands the contents of InstanceGroupManagerAutoHealingPolicies into a JSON
// request object.
func expandInstanceGroupManagerAutoHealingPoliciesMap(c *Client, f map[string]InstanceGroupManagerAutoHealingPolicies, res *InstanceGroupManager) (map[string]interface{}, error) {
if f == nil {
return nil, nil
}
items := make(map[string]interface{})
for k, item := range f {
i, err := expandInstanceGroupManagerAutoHealingPolicies(c, &item, res)
if err != nil {
return nil, err
}
if i != nil {
items[k] = i
}
}
return items, nil
}
// expandInstanceGroupManagerAutoHealingPoliciesSlice expands the contents of InstanceGroupManagerAutoHealingPolicies into a JSON
// request object.
func expandInstanceGroupManagerAutoHealingPoliciesSlice(c *Client, f []InstanceGroupManagerAutoHealingPolicies, res *InstanceGroupManager) ([]map[string]interface{}, error) {
if f == nil {
return nil, nil
}
items := []map[string]interface{}{}
for _, item := range f {
i, err := expandInstanceGroupManagerAutoHealingPolicies(c, &item, res)
if err != nil {
return nil, err
}
items = append(items, i)
}
return items, nil
}
// flattenInstanceGroupManagerAutoHealingPoliciesMap flattens the contents of InstanceGroupManagerAutoHealingPolicies from a JSON
// response object.
func flattenInstanceGroupManagerAutoHealingPoliciesMap(c *Client, i interface{}, res *InstanceGroupManager) map[string]InstanceGroupManagerAutoHealingPolicies {
a, ok := i.(map[string]interface{})
if !ok {
return map[string]InstanceGroupManagerAutoHealingPolicies{}
}
if len(a) == 0 {
return map[string]InstanceGroupManagerAutoHealingPolicies{}
}
items := make(map[string]InstanceGroupManagerAutoHealingPolicies)
for k, item := range a {
items[k] = *flattenInstanceGroupManagerAutoHealingPolicies(c, item.(map[string]interface{}), res)
}
return items
}
// flattenInstanceGroupManagerAutoHealingPoliciesSlice flattens the contents of InstanceGroupManagerAutoHealingPolicies from a JSON
// response object.
func flattenInstanceGroupManagerAutoHealingPoliciesSlice(c *Client, i interface{}, res *InstanceGroupManager) []InstanceGroupManagerAutoHealingPolicies {
a, ok := i.([]interface{})
if !ok {
return []InstanceGroupManagerAutoHealingPolicies{}
}
if len(a) == 0 {
return []InstanceGroupManagerAutoHealingPolicies{}
}
items := make([]InstanceGroupManagerAutoHealingPolicies, 0, len(a))
for _, item := range a {
items = append(items, *flattenInstanceGroupManagerAutoHealingPolicies(c, item.(map[string]interface{}), res))
}
return items
}
// expandInstanceGroupManagerAutoHealingPolicies expands an instance of InstanceGroupManagerAutoHealingPolicies into a JSON
// request object.
func expandInstanceGroupManagerAutoHealingPolicies(c *Client, f *InstanceGroupManagerAutoHealingPolicies, res *InstanceGroupManager) (map[string]interface{}, error) {
if f == nil {
return nil, nil
}
m := make(map[string]interface{})
if v := f.HealthCheck; !dcl.IsEmptyValueIndirect(v) {
m["healthCheck"] = v
}
if v := f.InitialDelaySec; !dcl.IsEmptyValueIndirect(v) {
m["initialDelaySec"] = v
}
return m, nil
}
// flattenInstanceGroupManagerAutoHealingPolicies flattens an instance of InstanceGroupManagerAutoHealingPolicies from a JSON
// response object.
func flattenInstanceGroupManagerAutoHealingPolicies(c *Client, i interface{}, res *InstanceGroupManager) *InstanceGroupManagerAutoHealingPolicies {
m, ok := i.(map[string]interface{})
if !ok {
return nil
}
r := &InstanceGroupManagerAutoHealingPolicies{}
if dcl.IsEmptyValueIndirect(i) {
return EmptyInstanceGroupManagerAutoHealingPolicies
}
r.HealthCheck = dcl.FlattenString(m["healthCheck"])
r.InitialDelaySec = dcl.FlattenInteger(m["initialDelaySec"])
return r
}
// expandInstanceGroupManagerUpdatePolicyMap expands the contents of InstanceGroupManagerUpdatePolicy into a JSON
// request object.
func expandInstanceGroupManagerUpdatePolicyMap(c *Client, f map[string]InstanceGroupManagerUpdatePolicy, res *InstanceGroupManager) (map[string]interface{}, error) {
if f == nil {
return nil, nil
}
items := make(map[string]interface{})
for k, item := range f {
i, err := expandInstanceGroupManagerUpdatePolicy(c, &item, res)
if err != nil {
return nil, err
}
if i != nil {
items[k] = i
}
}
return items, nil
}
// expandInstanceGroupManagerUpdatePolicySlice expands the contents of InstanceGroupManagerUpdatePolicy into a JSON
// request object.
func expandInstanceGroupManagerUpdatePolicySlice(c *Client, f []InstanceGroupManagerUpdatePolicy, res *InstanceGroupManager) ([]map[string]interface{}, error) {
if f == nil {
return nil, nil
}
items := []map[string]interface{}{}
for _, item := range f {
i, err := expandInstanceGroupManagerUpdatePolicy(c, &item, res)
if err != nil {
return nil, err
}
items = append(items, i)
}
return items, nil
}
// flattenInstanceGroupManagerUpdatePolicyMap flattens the contents of InstanceGroupManagerUpdatePolicy from a JSON
// response object.
func flattenInstanceGroupManagerUpdatePolicyMap(c *Client, i interface{}, res *InstanceGroupManager) map[string]InstanceGroupManagerUpdatePolicy {
a, ok := i.(map[string]interface{})
if !ok {
return map[string]InstanceGroupManagerUpdatePolicy{}
}
if len(a) == 0 {
return map[string]InstanceGroupManagerUpdatePolicy{}
}
items := make(map[string]InstanceGroupManagerUpdatePolicy)
for k, item := range a {
items[k] = *flattenInstanceGroupManagerUpdatePolicy(c, item.(map[string]interface{}), res)
}
return items
}
// flattenInstanceGroupManagerUpdatePolicySlice flattens the contents of InstanceGroupManagerUpdatePolicy from a JSON
// response object.
func flattenInstanceGroupManagerUpdatePolicySlice(c *Client, i interface{}, res *InstanceGroupManager) []InstanceGroupManagerUpdatePolicy {
a, ok := i.([]interface{})
if !ok {
return []InstanceGroupManagerUpdatePolicy{}
}
if len(a) == 0 {
return []InstanceGroupManagerUpdatePolicy{}
}
items := make([]InstanceGroupManagerUpdatePolicy, 0, len(a))
for _, item := range a {
items = append(items, *flattenInstanceGroupManagerUpdatePolicy(c, item.(map[string]interface{}), res))
}
return items
}
// expandInstanceGroupManagerUpdatePolicy expands an instance of InstanceGroupManagerUpdatePolicy into a JSON
// request object.
func expandInstanceGroupManagerUpdatePolicy(c *Client, f *InstanceGroupManagerUpdatePolicy, res *InstanceGroupManager) (map[string]interface{}, error) {
if dcl.IsEmptyValueIndirect(f) {
return nil, nil
}
m := make(map[string]interface{})
if v := f.Type; !dcl.IsEmptyValueIndirect(v) {
m["type"] = v
}
if v := f.InstanceRedistributionType; !dcl.IsEmptyValueIndirect(v) {
m["instanceRedistributionType"] = v
}
if v := f.MinimalAction; !dcl.IsEmptyValueIndirect(v) {
m["minimalAction"] = v
}
if v, err := expandInstanceGroupManagerUpdatePolicyMaxSurge(c, f.MaxSurge, res); err != nil {
return nil, fmt.Errorf("error expanding MaxSurge into maxSurge: %w", err)
} else if v != nil {
m["maxSurge"] = v
}
if v, err := expandInstanceGroupManagerUpdatePolicyMaxUnavailable(c, f.MaxUnavailable, res); err != nil {
return nil, fmt.Errorf("error expanding MaxUnavailable into maxUnavailable: %w", err)
} else if !dcl.IsEmptyValueIndirect(v) {
m["maxUnavailable"] = v
}
if v := f.ReplacementMethod; !dcl.IsEmptyValueIndirect(v) {
m["replacementMethod"] = v
}
if v := f.MostDisruptiveAllowedAction; !dcl.IsEmptyValueIndirect(v) {
m["mostDisruptiveAllowedAction"] = v
}
if v := f.MinReadySec; !dcl.IsEmptyValueIndirect(v) {
m["minReadySec"] = v
}
return m, nil
}
// flattenInstanceGroupManagerUpdatePolicy flattens an instance of InstanceGroupManagerUpdatePolicy from a JSON
// response object.
func flattenInstanceGroupManagerUpdatePolicy(c *Client, i interface{}, res *InstanceGroupManager) *InstanceGroupManagerUpdatePolicy {
m, ok := i.(map[string]interface{})
if !ok {
return nil
}
r := &InstanceGroupManagerUpdatePolicy{}
if dcl.IsEmptyValueIndirect(i) {
return EmptyInstanceGroupManagerUpdatePolicy
}
r.Type = flattenInstanceGroupManagerUpdatePolicyTypeEnum(m["type"])
r.InstanceRedistributionType = flattenInstanceGroupManagerUpdatePolicyInstanceRedistributionTypeEnum(m["instanceRedistributionType"])
r.MinimalAction = flattenInstanceGroupManagerUpdatePolicyMinimalActionEnum(m["minimalAction"])
r.MaxSurge = flattenInstanceGroupManagerUpdatePolicyMaxSurge(c, m["maxSurge"], res)
r.MaxUnavailable = flattenInstanceGroupManagerUpdatePolicyMaxUnavailable(c, m["maxUnavailable"], res)
r.ReplacementMethod = flattenInstanceGroupManagerUpdatePolicyReplacementMethodEnum(m["replacementMethod"])
r.MostDisruptiveAllowedAction = flattenInstanceGroupManagerUpdatePolicyMostDisruptiveAllowedActionEnum(m["mostDisruptiveAllowedAction"])
r.MinReadySec = dcl.FlattenInteger(m["minReadySec"])
return r
}
// expandInstanceGroupManagerUpdatePolicyMaxSurgeMap expands the contents of InstanceGroupManagerUpdatePolicyMaxSurge into a JSON
// request object.
func expandInstanceGroupManagerUpdatePolicyMaxSurgeMap(c *Client, f map[string]InstanceGroupManagerUpdatePolicyMaxSurge, res *InstanceGroupManager) (map[string]interface{}, error) {
if f == nil {
return nil, nil
}
items := make(map[string]interface{})
for k, item := range f {
i, err := expandInstanceGroupManagerUpdatePolicyMaxSurge(c, &item, res)
if err != nil {
return nil, err
}
if i != nil {
items[k] = i
}
}
return items, nil
}
// expandInstanceGroupManagerUpdatePolicyMaxSurgeSlice expands the contents of InstanceGroupManagerUpdatePolicyMaxSurge into a JSON
// request object.
func expandInstanceGroupManagerUpdatePolicyMaxSurgeSlice(c *Client, f []InstanceGroupManagerUpdatePolicyMaxSurge, res *InstanceGroupManager) ([]map[string]interface{}, error) {
if f == nil {
return nil, nil
}
items := []map[string]interface{}{}
for _, item := range f {
i, err := expandInstanceGroupManagerUpdatePolicyMaxSurge(c, &item, res)
if err != nil {
return nil, err
}
items = append(items, i)
}
return items, nil
}
// flattenInstanceGroupManagerUpdatePolicyMaxSurgeMap flattens the contents of InstanceGroupManagerUpdatePolicyMaxSurge from a JSON
// response object.
func flattenInstanceGroupManagerUpdatePolicyMaxSurgeMap(c *Client, i interface{}, res *InstanceGroupManager) map[string]InstanceGroupManagerUpdatePolicyMaxSurge {
a, ok := i.(map[string]interface{})
if !ok {
return map[string]InstanceGroupManagerUpdatePolicyMaxSurge{}
}
if len(a) == 0 {
return map[string]InstanceGroupManagerUpdatePolicyMaxSurge{}
}
items := make(map[string]InstanceGroupManagerUpdatePolicyMaxSurge)
for k, item := range a {
items[k] = *flattenInstanceGroupManagerUpdatePolicyMaxSurge(c, item.(map[string]interface{}), res)
}
return items
}
// flattenInstanceGroupManagerUpdatePolicyMaxSurgeSlice flattens the contents of InstanceGroupManagerUpdatePolicyMaxSurge from a JSON
// response object.
func flattenInstanceGroupManagerUpdatePolicyMaxSurgeSlice(c *Client, i interface{}, res *InstanceGroupManager) []InstanceGroupManagerUpdatePolicyMaxSurge {
a, ok := i.([]interface{})
if !ok {
return []InstanceGroupManagerUpdatePolicyMaxSurge{}
}
if len(a) == 0 {
return []InstanceGroupManagerUpdatePolicyMaxSurge{}
}
items := make([]InstanceGroupManagerUpdatePolicyMaxSurge, 0, len(a))
for _, item := range a {
items = append(items, *flattenInstanceGroupManagerUpdatePolicyMaxSurge(c, item.(map[string]interface{}), res))
}
return items
}
// expandInstanceGroupManagerUpdatePolicyMaxSurge expands an instance of InstanceGroupManagerUpdatePolicyMaxSurge into a JSON
// request object.
func expandInstanceGroupManagerUpdatePolicyMaxSurge(c *Client, f *InstanceGroupManagerUpdatePolicyMaxSurge, res *InstanceGroupManager) (map[string]interface{}, error) {
if f == nil {
return nil, nil
}
m := make(map[string]interface{})
if v := f.Fixed; v != nil {
m["fixed"] = v
}
if v := f.Percent; v != nil {
m["percent"] = v
}
return m, nil
}
// flattenInstanceGroupManagerUpdatePolicyMaxSurge flattens an instance of InstanceGroupManagerUpdatePolicyMaxSurge from a JSON
// response object.
func flattenInstanceGroupManagerUpdatePolicyMaxSurge(c *Client, i interface{}, res *InstanceGroupManager) *InstanceGroupManagerUpdatePolicyMaxSurge {
m, ok := i.(map[string]interface{})
if !ok {
return nil
}
r := &InstanceGroupManagerUpdatePolicyMaxSurge{}
if dcl.IsEmptyValueIndirect(i) {
return EmptyInstanceGroupManagerUpdatePolicyMaxSurge
}
r.Fixed = dcl.FlattenInteger(m["fixed"])
r.Percent = dcl.FlattenInteger(m["percent"])
r.Calculated = dcl.FlattenInteger(m["calculated"])
return r
}
// expandInstanceGroupManagerUpdatePolicyMaxUnavailableMap expands the contents of InstanceGroupManagerUpdatePolicyMaxUnavailable into a JSON
// request object.
func expandInstanceGroupManagerUpdatePolicyMaxUnavailableMap(c *Client, f map[string]InstanceGroupManagerUpdatePolicyMaxUnavailable, res *InstanceGroupManager) (map[string]interface{}, error) {
if f == nil {
return nil, nil
}
items := make(map[string]interface{})
for k, item := range f {
i, err := expandInstanceGroupManagerUpdatePolicyMaxUnavailable(c, &item, res)
if err != nil {
return nil, err
}
if i != nil {
items[k] = i
}
}
return items, nil
}
// expandInstanceGroupManagerUpdatePolicyMaxUnavailableSlice expands the contents of InstanceGroupManagerUpdatePolicyMaxUnavailable into a JSON
// request object.
func expandInstanceGroupManagerUpdatePolicyMaxUnavailableSlice(c *Client, f []InstanceGroupManagerUpdatePolicyMaxUnavailable, res *InstanceGroupManager) ([]map[string]interface{}, error) {
if f == nil {
return nil, nil
}
items := []map[string]interface{}{}
for _, item := range f {
i, err := expandInstanceGroupManagerUpdatePolicyMaxUnavailable(c, &item, res)
if err != nil {
return nil, err
}
items = append(items, i)
}
return items, nil
}
// flattenInstanceGroupManagerUpdatePolicyMaxUnavailableMap flattens the contents of InstanceGroupManagerUpdatePolicyMaxUnavailable from a JSON
// response object.
func flattenInstanceGroupManagerUpdatePolicyMaxUnavailableMap(c *Client, i interface{}, res *InstanceGroupManager) map[string]InstanceGroupManagerUpdatePolicyMaxUnavailable {
a, ok := i.(map[string]interface{})
if !ok {
return map[string]InstanceGroupManagerUpdatePolicyMaxUnavailable{}
}
if len(a) == 0 {
return map[string]InstanceGroupManagerUpdatePolicyMaxUnavailable{}
}
items := make(map[string]InstanceGroupManagerUpdatePolicyMaxUnavailable)
for k, item := range a {
items[k] = *flattenInstanceGroupManagerUpdatePolicyMaxUnavailable(c, item.(map[string]interface{}), res)
}
return items
}
// flattenInstanceGroupManagerUpdatePolicyMaxUnavailableSlice flattens the contents of InstanceGroupManagerUpdatePolicyMaxUnavailable from a JSON
// response object.
func flattenInstanceGroupManagerUpdatePolicyMaxUnavailableSlice(c *Client, i interface{}, res *InstanceGroupManager) []InstanceGroupManagerUpdatePolicyMaxUnavailable {
a, ok := i.([]interface{})
if !ok {
return []InstanceGroupManagerUpdatePolicyMaxUnavailable{}
}
if len(a) == 0 {
return []InstanceGroupManagerUpdatePolicyMaxUnavailable{}
}
items := make([]InstanceGroupManagerUpdatePolicyMaxUnavailable, 0, len(a))
for _, item := range a {
items = append(items, *flattenInstanceGroupManagerUpdatePolicyMaxUnavailable(c, item.(map[string]interface{}), res))
}
return items
}
// expandInstanceGroupManagerUpdatePolicyMaxUnavailable expands an instance of InstanceGroupManagerUpdatePolicyMaxUnavailable into a JSON
// request object.
func expandInstanceGroupManagerUpdatePolicyMaxUnavailable(c *Client, f *InstanceGroupManagerUpdatePolicyMaxUnavailable, res *InstanceGroupManager) (map[string]interface{}, error) {
if dcl.IsEmptyValueIndirect(f) {
return nil, nil
}
m := make(map[string]interface{})
if v := f.Fixed; v != nil {
m["fixed"] = v
}
if v := f.Percent; v != nil {
m["percent"] = v
}
return m, nil
}
// flattenInstanceGroupManagerUpdatePolicyMaxUnavailable flattens an instance of InstanceGroupManagerUpdatePolicyMaxUnavailable from a JSON
// response object.
func flattenInstanceGroupManagerUpdatePolicyMaxUnavailable(c *Client, i interface{}, res *InstanceGroupManager) *InstanceGroupManagerUpdatePolicyMaxUnavailable {
m, ok := i.(map[string]interface{})
if !ok {
return nil
}
r := &InstanceGroupManagerUpdatePolicyMaxUnavailable{}
if dcl.IsEmptyValueIndirect(i) {
return EmptyInstanceGroupManagerUpdatePolicyMaxUnavailable
}
r.Fixed = dcl.FlattenInteger(m["fixed"])
r.Percent = dcl.FlattenInteger(m["percent"])
r.Calculated = dcl.FlattenInteger(m["calculated"])
return r
}
// expandInstanceGroupManagerNamedPortsMap expands the contents of InstanceGroupManagerNamedPorts into a JSON
// request object.
func expandInstanceGroupManagerNamedPortsMap(c *Client, f map[string]InstanceGroupManagerNamedPorts, res *InstanceGroupManager) (map[string]interface{}, error) {
if f == nil {
return nil, nil
}
items := make(map[string]interface{})
for k, item := range f {
i, err := expandInstanceGroupManagerNamedPorts(c, &item, res)
if err != nil {
return nil, err
}
if i != nil {
items[k] = i
}
}
return items, nil
}
// expandInstanceGroupManagerNamedPortsSlice expands the contents of InstanceGroupManagerNamedPorts into a JSON
// request object.
func expandInstanceGroupManagerNamedPortsSlice(c *Client, f []InstanceGroupManagerNamedPorts, res *InstanceGroupManager) ([]map[string]interface{}, error) {
if f == nil {
return nil, nil
}
items := []map[string]interface{}{}
for _, item := range f {
i, err := expandInstanceGroupManagerNamedPorts(c, &item, res)
if err != nil {
return nil, err
}
items = append(items, i)
}
return items, nil
}
// flattenInstanceGroupManagerNamedPortsMap flattens the contents of InstanceGroupManagerNamedPorts from a JSON
// response object.
func flattenInstanceGroupManagerNamedPortsMap(c *Client, i interface{}, res *InstanceGroupManager) map[string]InstanceGroupManagerNamedPorts {
a, ok := i.(map[string]interface{})
if !ok {
return map[string]InstanceGroupManagerNamedPorts{}
}
if len(a) == 0 {
return map[string]InstanceGroupManagerNamedPorts{}
}
items := make(map[string]InstanceGroupManagerNamedPorts)
for k, item := range a {
items[k] = *flattenInstanceGroupManagerNamedPorts(c, item.(map[string]interface{}), res)
}
return items
}
// flattenInstanceGroupManagerNamedPortsSlice flattens the contents of InstanceGroupManagerNamedPorts from a JSON
// response object.
func flattenInstanceGroupManagerNamedPortsSlice(c *Client, i interface{}, res *InstanceGroupManager) []InstanceGroupManagerNamedPorts {
a, ok := i.([]interface{})
if !ok {
return []InstanceGroupManagerNamedPorts{}
}
if len(a) == 0 {
return []InstanceGroupManagerNamedPorts{}
}
items := make([]InstanceGroupManagerNamedPorts, 0, len(a))
for _, item := range a {
items = append(items, *flattenInstanceGroupManagerNamedPorts(c, item.(map[string]interface{}), res))
}
return items
}
// expandInstanceGroupManagerNamedPorts expands an instance of InstanceGroupManagerNamedPorts into a JSON
// request object.
func expandInstanceGroupManagerNamedPorts(c *Client, f *InstanceGroupManagerNamedPorts, res *InstanceGroupManager) (map[string]interface{}, error) {
if f == nil {
return nil, nil
}
m := make(map[string]interface{})
if v := f.Name; !dcl.IsEmptyValueIndirect(v) {
m["name"] = v
}
if v := f.Port; !dcl.IsEmptyValueIndirect(v) {
m["port"] = v
}
return m, nil
}
// flattenInstanceGroupManagerNamedPorts flattens an instance of InstanceGroupManagerNamedPorts from a JSON
// response object.
func flattenInstanceGroupManagerNamedPorts(c *Client, i interface{}, res *InstanceGroupManager) *InstanceGroupManagerNamedPorts {
m, ok := i.(map[string]interface{})
if !ok {
return nil
}
r := &InstanceGroupManagerNamedPorts{}
if dcl.IsEmptyValueIndirect(i) {
return EmptyInstanceGroupManagerNamedPorts
}
r.Name = dcl.FlattenString(m["name"])
r.Port = dcl.FlattenInteger(m["port"])
return r
}
// expandInstanceGroupManagerStatefulPolicyMap expands the contents of InstanceGroupManagerStatefulPolicy into a JSON
// request object.
func expandInstanceGroupManagerStatefulPolicyMap(c *Client, f map[string]InstanceGroupManagerStatefulPolicy, res *InstanceGroupManager) (map[string]interface{}, error) {
if f == nil {
return nil, nil
}
items := make(map[string]interface{})
for k, item := range f {
i, err := expandInstanceGroupManagerStatefulPolicy(c, &item, res)
if err != nil {
return nil, err
}
if i != nil {
items[k] = i
}
}
return items, nil
}
// expandInstanceGroupManagerStatefulPolicySlice expands the contents of InstanceGroupManagerStatefulPolicy into a JSON
// request object.
func expandInstanceGroupManagerStatefulPolicySlice(c *Client, f []InstanceGroupManagerStatefulPolicy, res *InstanceGroupManager) ([]map[string]interface{}, error) {
if f == nil {
return nil, nil
}
items := []map[string]interface{}{}
for _, item := range f {
i, err := expandInstanceGroupManagerStatefulPolicy(c, &item, res)
if err != nil {
return nil, err
}
items = append(items, i)
}
return items, nil
}
// flattenInstanceGroupManagerStatefulPolicyMap flattens the contents of InstanceGroupManagerStatefulPolicy from a JSON
// response object.
func flattenInstanceGroupManagerStatefulPolicyMap(c *Client, i interface{}, res *InstanceGroupManager) map[string]InstanceGroupManagerStatefulPolicy {
a, ok := i.(map[string]interface{})
if !ok {
return map[string]InstanceGroupManagerStatefulPolicy{}
}
if len(a) == 0 {
return map[string]InstanceGroupManagerStatefulPolicy{}
}
items := make(map[string]InstanceGroupManagerStatefulPolicy)
for k, item := range a {
items[k] = *flattenInstanceGroupManagerStatefulPolicy(c, item.(map[string]interface{}), res)
}
return items
}
// flattenInstanceGroupManagerStatefulPolicySlice flattens the contents of InstanceGroupManagerStatefulPolicy from a JSON
// response object.
func flattenInstanceGroupManagerStatefulPolicySlice(c *Client, i interface{}, res *InstanceGroupManager) []InstanceGroupManagerStatefulPolicy {
a, ok := i.([]interface{})
if !ok {
return []InstanceGroupManagerStatefulPolicy{}
}
if len(a) == 0 {
return []InstanceGroupManagerStatefulPolicy{}
}
items := make([]InstanceGroupManagerStatefulPolicy, 0, len(a))
for _, item := range a {
items = append(items, *flattenInstanceGroupManagerStatefulPolicy(c, item.(map[string]interface{}), res))
}
return items
}
// expandInstanceGroupManagerStatefulPolicy expands an instance of InstanceGroupManagerStatefulPolicy into a JSON
// request object.
func expandInstanceGroupManagerStatefulPolicy(c *Client, f *InstanceGroupManagerStatefulPolicy, res *InstanceGroupManager) (map[string]interface{}, error) {
if dcl.IsEmptyValueIndirect(f) {
return nil, nil
}
m := make(map[string]interface{})
if v, err := expandInstanceGroupManagerStatefulPolicyPreservedState(c, f.PreservedState, res); err != nil {
return nil, fmt.Errorf("error expanding PreservedState into preservedState: %w", err)
} else if !dcl.IsEmptyValueIndirect(v) {
m["preservedState"] = v
}
return m, nil
}
// flattenInstanceGroupManagerStatefulPolicy flattens an instance of InstanceGroupManagerStatefulPolicy from a JSON
// response object.
func flattenInstanceGroupManagerStatefulPolicy(c *Client, i interface{}, res *InstanceGroupManager) *InstanceGroupManagerStatefulPolicy {
m, ok := i.(map[string]interface{})
if !ok {
return nil
}
r := &InstanceGroupManagerStatefulPolicy{}
if dcl.IsEmptyValueIndirect(i) {
return EmptyInstanceGroupManagerStatefulPolicy
}
r.PreservedState = flattenInstanceGroupManagerStatefulPolicyPreservedState(c, m["preservedState"], res)
return r
}
// expandInstanceGroupManagerStatefulPolicyPreservedStateMap expands the contents of InstanceGroupManagerStatefulPolicyPreservedState into a JSON
// request object.
func expandInstanceGroupManagerStatefulPolicyPreservedStateMap(c *Client, f map[string]InstanceGroupManagerStatefulPolicyPreservedState, res *InstanceGroupManager) (map[string]interface{}, error) {
if f == nil {
return nil, nil
}
items := make(map[string]interface{})
for k, item := range f {
i, err := expandInstanceGroupManagerStatefulPolicyPreservedState(c, &item, res)
if err != nil {
return nil, err
}
if i != nil {
items[k] = i
}
}
return items, nil
}
// expandInstanceGroupManagerStatefulPolicyPreservedStateSlice expands the contents of InstanceGroupManagerStatefulPolicyPreservedState into a JSON
// request object.
func expandInstanceGroupManagerStatefulPolicyPreservedStateSlice(c *Client, f []InstanceGroupManagerStatefulPolicyPreservedState, res *InstanceGroupManager) ([]map[string]interface{}, error) {
if f == nil {
return nil, nil
}
items := []map[string]interface{}{}
for _, item := range f {
i, err := expandInstanceGroupManagerStatefulPolicyPreservedState(c, &item, res)
if err != nil {
return nil, err
}
items = append(items, i)
}
return items, nil
}
// flattenInstanceGroupManagerStatefulPolicyPreservedStateMap flattens the contents of InstanceGroupManagerStatefulPolicyPreservedState from a JSON
// response object.
func flattenInstanceGroupManagerStatefulPolicyPreservedStateMap(c *Client, i interface{}, res *InstanceGroupManager) map[string]InstanceGroupManagerStatefulPolicyPreservedState {
a, ok := i.(map[string]interface{})
if !ok {
return map[string]InstanceGroupManagerStatefulPolicyPreservedState{}
}
if len(a) == 0 {
return map[string]InstanceGroupManagerStatefulPolicyPreservedState{}
}
items := make(map[string]InstanceGroupManagerStatefulPolicyPreservedState)
for k, item := range a {
items[k] = *flattenInstanceGroupManagerStatefulPolicyPreservedState(c, item.(map[string]interface{}), res)
}
return items
}
// flattenInstanceGroupManagerStatefulPolicyPreservedStateSlice flattens the contents of InstanceGroupManagerStatefulPolicyPreservedState from a JSON
// response object.
func flattenInstanceGroupManagerStatefulPolicyPreservedStateSlice(c *Client, i interface{}, res *InstanceGroupManager) []InstanceGroupManagerStatefulPolicyPreservedState {
a, ok := i.([]interface{})
if !ok {
return []InstanceGroupManagerStatefulPolicyPreservedState{}
}
if len(a) == 0 {
return []InstanceGroupManagerStatefulPolicyPreservedState{}
}
items := make([]InstanceGroupManagerStatefulPolicyPreservedState, 0, len(a))
for _, item := range a {
items = append(items, *flattenInstanceGroupManagerStatefulPolicyPreservedState(c, item.(map[string]interface{}), res))
}
return items
}
// expandInstanceGroupManagerStatefulPolicyPreservedState expands an instance of InstanceGroupManagerStatefulPolicyPreservedState into a JSON
// request object.
func expandInstanceGroupManagerStatefulPolicyPreservedState(c *Client, f *InstanceGroupManagerStatefulPolicyPreservedState, res *InstanceGroupManager) (map[string]interface{}, error) {
if dcl.IsEmptyValueIndirect(f) {
return nil, nil
}
m := make(map[string]interface{})
if v, err := expandInstanceGroupManagerStatefulPolicyPreservedStateDisksMap(c, f.Disks, res); err != nil {
return nil, fmt.Errorf("error expanding Disks into disks: %w", err)
} else if !dcl.IsEmptyValueIndirect(v) {
m["disks"] = v
}
if v, err := expandInstanceGroupManagerStatefulPolicyPreservedStateInternalIpsMap(c, f.InternalIps, res); err != nil {
return nil, fmt.Errorf("error expanding InternalIps into internalIps: %w", err)
} else if !dcl.IsEmptyValueIndirect(v) {
m["internalIps"] = v
}
if v, err := expandInstanceGroupManagerStatefulPolicyPreservedStateExternalIpsMap(c, f.ExternalIps, res); err != nil {
return nil, fmt.Errorf("error expanding ExternalIps into externalIps: %w", err)
} else if !dcl.IsEmptyValueIndirect(v) {
m["externalIps"] = v
}
return m, nil
}
// flattenInstanceGroupManagerStatefulPolicyPreservedState flattens an instance of InstanceGroupManagerStatefulPolicyPreservedState from a JSON
// response object.
func flattenInstanceGroupManagerStatefulPolicyPreservedState(c *Client, i interface{}, res *InstanceGroupManager) *InstanceGroupManagerStatefulPolicyPreservedState {
m, ok := i.(map[string]interface{})
if !ok {
return nil
}
r := &InstanceGroupManagerStatefulPolicyPreservedState{}
if dcl.IsEmptyValueIndirect(i) {
return EmptyInstanceGroupManagerStatefulPolicyPreservedState
}
r.Disks = flattenInstanceGroupManagerStatefulPolicyPreservedStateDisksMap(c, m["disks"], res)
r.InternalIps = flattenInstanceGroupManagerStatefulPolicyPreservedStateInternalIpsMap(c, m["internalIps"], res)
r.ExternalIps = flattenInstanceGroupManagerStatefulPolicyPreservedStateExternalIpsMap(c, m["externalIps"], res)
return r
}
// expandInstanceGroupManagerStatefulPolicyPreservedStateDisksMap expands the contents of InstanceGroupManagerStatefulPolicyPreservedStateDisks into a JSON
// request object.
func expandInstanceGroupManagerStatefulPolicyPreservedStateDisksMap(c *Client, f map[string]InstanceGroupManagerStatefulPolicyPreservedStateDisks, res *InstanceGroupManager) (map[string]interface{}, error) {
if f == nil {
return nil, nil
}
items := make(map[string]interface{})
for k, item := range f {
i, err := expandInstanceGroupManagerStatefulPolicyPreservedStateDisks(c, &item, res)
if err != nil {
return nil, err
}
if i != nil {
items[k] = i
}
}
return items, nil
}
// expandInstanceGroupManagerStatefulPolicyPreservedStateDisksSlice expands the contents of InstanceGroupManagerStatefulPolicyPreservedStateDisks into a JSON
// request object.
func expandInstanceGroupManagerStatefulPolicyPreservedStateDisksSlice(c *Client, f []InstanceGroupManagerStatefulPolicyPreservedStateDisks, res *InstanceGroupManager) ([]map[string]interface{}, error) {
if f == nil {
return nil, nil
}
items := []map[string]interface{}{}
for _, item := range f {
i, err := expandInstanceGroupManagerStatefulPolicyPreservedStateDisks(c, &item, res)
if err != nil {
return nil, err
}
items = append(items, i)
}
return items, nil
}
// flattenInstanceGroupManagerStatefulPolicyPreservedStateDisksMap flattens the contents of InstanceGroupManagerStatefulPolicyPreservedStateDisks from a JSON
// response object.
func flattenInstanceGroupManagerStatefulPolicyPreservedStateDisksMap(c *Client, i interface{}, res *InstanceGroupManager) map[string]InstanceGroupManagerStatefulPolicyPreservedStateDisks {
a, ok := i.(map[string]interface{})
if !ok {
return map[string]InstanceGroupManagerStatefulPolicyPreservedStateDisks{}
}
if len(a) == 0 {
return map[string]InstanceGroupManagerStatefulPolicyPreservedStateDisks{}
}
items := make(map[string]InstanceGroupManagerStatefulPolicyPreservedStateDisks)
for k, item := range a {
items[k] = *flattenInstanceGroupManagerStatefulPolicyPreservedStateDisks(c, item.(map[string]interface{}), res)
}
return items
}
// flattenInstanceGroupManagerStatefulPolicyPreservedStateDisksSlice flattens the contents of InstanceGroupManagerStatefulPolicyPreservedStateDisks from a JSON
// response object.
func flattenInstanceGroupManagerStatefulPolicyPreservedStateDisksSlice(c *Client, i interface{}, res *InstanceGroupManager) []InstanceGroupManagerStatefulPolicyPreservedStateDisks {
a, ok := i.([]interface{})
if !ok {
return []InstanceGroupManagerStatefulPolicyPreservedStateDisks{}
}
if len(a) == 0 {
return []InstanceGroupManagerStatefulPolicyPreservedStateDisks{}
}
items := make([]InstanceGroupManagerStatefulPolicyPreservedStateDisks, 0, len(a))
for _, item := range a {
items = append(items, *flattenInstanceGroupManagerStatefulPolicyPreservedStateDisks(c, item.(map[string]interface{}), res))
}
return items
}
// expandInstanceGroupManagerStatefulPolicyPreservedStateDisks expands an instance of InstanceGroupManagerStatefulPolicyPreservedStateDisks into a JSON
// request object.
func expandInstanceGroupManagerStatefulPolicyPreservedStateDisks(c *Client, f *InstanceGroupManagerStatefulPolicyPreservedStateDisks, res *InstanceGroupManager) (map[string]interface{}, error) {
if dcl.IsEmptyValueIndirect(f) {
return nil, nil
}
m := make(map[string]interface{})
if v := f.AutoDelete; !dcl.IsEmptyValueIndirect(v) {
m["autoDelete"] = v
}
return m, nil
}
// flattenInstanceGroupManagerStatefulPolicyPreservedStateDisks flattens an instance of InstanceGroupManagerStatefulPolicyPreservedStateDisks from a JSON
// response object.
func flattenInstanceGroupManagerStatefulPolicyPreservedStateDisks(c *Client, i interface{}, res *InstanceGroupManager) *InstanceGroupManagerStatefulPolicyPreservedStateDisks {
m, ok := i.(map[string]interface{})
if !ok {
return nil
}
r := &InstanceGroupManagerStatefulPolicyPreservedStateDisks{}
if dcl.IsEmptyValueIndirect(i) {
return EmptyInstanceGroupManagerStatefulPolicyPreservedStateDisks
}
r.AutoDelete = flattenInstanceGroupManagerStatefulPolicyPreservedStateDisksAutoDeleteEnum(m["autoDelete"])
return r
}
// expandInstanceGroupManagerStatefulPolicyPreservedStateInternalIpsMap expands the contents of InstanceGroupManagerStatefulPolicyPreservedStateInternalIps into a JSON
// request object.
func expandInstanceGroupManagerStatefulPolicyPreservedStateInternalIpsMap(c *Client, f map[string]InstanceGroupManagerStatefulPolicyPreservedStateInternalIps, res *InstanceGroupManager) (map[string]interface{}, error) {
if f == nil {
return nil, nil
}
items := make(map[string]interface{})
for k, item := range f {
i, err := expandInstanceGroupManagerStatefulPolicyPreservedStateInternalIps(c, &item, res)
if err != nil {
return nil, err
}
if i != nil {
items[k] = i
}
}
return items, nil
}
// expandInstanceGroupManagerStatefulPolicyPreservedStateInternalIpsSlice expands the contents of InstanceGroupManagerStatefulPolicyPreservedStateInternalIps into a JSON
// request object.
func expandInstanceGroupManagerStatefulPolicyPreservedStateInternalIpsSlice(c *Client, f []InstanceGroupManagerStatefulPolicyPreservedStateInternalIps, res *InstanceGroupManager) ([]map[string]interface{}, error) {
if f == nil {
return nil, nil
}
items := []map[string]interface{}{}
for _, item := range f {
i, err := expandInstanceGroupManagerStatefulPolicyPreservedStateInternalIps(c, &item, res)
if err != nil {
return nil, err
}
items = append(items, i)
}
return items, nil
}
// flattenInstanceGroupManagerStatefulPolicyPreservedStateInternalIpsMap flattens the contents of InstanceGroupManagerStatefulPolicyPreservedStateInternalIps from a JSON
// response object.
func flattenInstanceGroupManagerStatefulPolicyPreservedStateInternalIpsMap(c *Client, i interface{}, res *InstanceGroupManager) map[string]InstanceGroupManagerStatefulPolicyPreservedStateInternalIps {
a, ok := i.(map[string]interface{})
if !ok {
return map[string]InstanceGroupManagerStatefulPolicyPreservedStateInternalIps{}
}
if len(a) == 0 {
return map[string]InstanceGroupManagerStatefulPolicyPreservedStateInternalIps{}
}
items := make(map[string]InstanceGroupManagerStatefulPolicyPreservedStateInternalIps)
for k, item := range a {
items[k] = *flattenInstanceGroupManagerStatefulPolicyPreservedStateInternalIps(c, item.(map[string]interface{}), res)
}
return items
}
// flattenInstanceGroupManagerStatefulPolicyPreservedStateInternalIpsSlice flattens the contents of InstanceGroupManagerStatefulPolicyPreservedStateInternalIps from a JSON
// response object.
func flattenInstanceGroupManagerStatefulPolicyPreservedStateInternalIpsSlice(c *Client, i interface{}, res *InstanceGroupManager) []InstanceGroupManagerStatefulPolicyPreservedStateInternalIps {
a, ok := i.([]interface{})
if !ok {
return []InstanceGroupManagerStatefulPolicyPreservedStateInternalIps{}
}
if len(a) == 0 {
return []InstanceGroupManagerStatefulPolicyPreservedStateInternalIps{}
}
items := make([]InstanceGroupManagerStatefulPolicyPreservedStateInternalIps, 0, len(a))
for _, item := range a {
items = append(items, *flattenInstanceGroupManagerStatefulPolicyPreservedStateInternalIps(c, item.(map[string]interface{}), res))
}
return items
}
// expandInstanceGroupManagerStatefulPolicyPreservedStateInternalIps expands an instance of InstanceGroupManagerStatefulPolicyPreservedStateInternalIps into a JSON
// request object.
func expandInstanceGroupManagerStatefulPolicyPreservedStateInternalIps(c *Client, f *InstanceGroupManagerStatefulPolicyPreservedStateInternalIps, res *InstanceGroupManager) (map[string]interface{}, error) {
if dcl.IsEmptyValueIndirect(f) {
return nil, nil
}
m := make(map[string]interface{})
if v := f.AutoDelete; !dcl.IsEmptyValueIndirect(v) {
m["autoDelete"] = v
}
return m, nil
}
// flattenInstanceGroupManagerStatefulPolicyPreservedStateInternalIps flattens an instance of InstanceGroupManagerStatefulPolicyPreservedStateInternalIps from a JSON
// response object.
func flattenInstanceGroupManagerStatefulPolicyPreservedStateInternalIps(c *Client, i interface{}, res *InstanceGroupManager) *InstanceGroupManagerStatefulPolicyPreservedStateInternalIps {
m, ok := i.(map[string]interface{})
if !ok {
return nil
}
r := &InstanceGroupManagerStatefulPolicyPreservedStateInternalIps{}
if dcl.IsEmptyValueIndirect(i) {
return EmptyInstanceGroupManagerStatefulPolicyPreservedStateInternalIps
}
r.AutoDelete = flattenInstanceGroupManagerStatefulPolicyPreservedStateInternalIpsAutoDeleteEnum(m["autoDelete"])
return r
}
// expandInstanceGroupManagerStatefulPolicyPreservedStateExternalIpsMap expands the contents of InstanceGroupManagerStatefulPolicyPreservedStateExternalIps into a JSON
// request object.
func expandInstanceGroupManagerStatefulPolicyPreservedStateExternalIpsMap(c *Client, f map[string]InstanceGroupManagerStatefulPolicyPreservedStateExternalIps, res *InstanceGroupManager) (map[string]interface{}, error) {
if f == nil {
return nil, nil
}
items := make(map[string]interface{})
for k, item := range f {
i, err := expandInstanceGroupManagerStatefulPolicyPreservedStateExternalIps(c, &item, res)
if err != nil {
return nil, err
}
if i != nil {
items[k] = i
}
}
return items, nil
}
// expandInstanceGroupManagerStatefulPolicyPreservedStateExternalIpsSlice expands the contents of InstanceGroupManagerStatefulPolicyPreservedStateExternalIps into a JSON
// request object.
func expandInstanceGroupManagerStatefulPolicyPreservedStateExternalIpsSlice(c *Client, f []InstanceGroupManagerStatefulPolicyPreservedStateExternalIps, res *InstanceGroupManager) ([]map[string]interface{}, error) {
if f == nil {
return nil, nil
}
items := []map[string]interface{}{}
for _, item := range f {
i, err := expandInstanceGroupManagerStatefulPolicyPreservedStateExternalIps(c, &item, res)
if err != nil {
return nil, err
}
items = append(items, i)
}
return items, nil
}
// flattenInstanceGroupManagerStatefulPolicyPreservedStateExternalIpsMap flattens the contents of InstanceGroupManagerStatefulPolicyPreservedStateExternalIps from a JSON
// response object.
func flattenInstanceGroupManagerStatefulPolicyPreservedStateExternalIpsMap(c *Client, i interface{}, res *InstanceGroupManager) map[string]InstanceGroupManagerStatefulPolicyPreservedStateExternalIps {
a, ok := i.(map[string]interface{})
if !ok {
return map[string]InstanceGroupManagerStatefulPolicyPreservedStateExternalIps{}
}
if len(a) == 0 {
return map[string]InstanceGroupManagerStatefulPolicyPreservedStateExternalIps{}
}
items := make(map[string]InstanceGroupManagerStatefulPolicyPreservedStateExternalIps)
for k, item := range a {
items[k] = *flattenInstanceGroupManagerStatefulPolicyPreservedStateExternalIps(c, item.(map[string]interface{}), res)
}
return items
}
// flattenInstanceGroupManagerStatefulPolicyPreservedStateExternalIpsSlice flattens the contents of InstanceGroupManagerStatefulPolicyPreservedStateExternalIps from a JSON
// response object.
func flattenInstanceGroupManagerStatefulPolicyPreservedStateExternalIpsSlice(c *Client, i interface{}, res *InstanceGroupManager) []InstanceGroupManagerStatefulPolicyPreservedStateExternalIps {
a, ok := i.([]interface{})
if !ok {
return []InstanceGroupManagerStatefulPolicyPreservedStateExternalIps{}
}
if len(a) == 0 {
return []InstanceGroupManagerStatefulPolicyPreservedStateExternalIps{}
}
items := make([]InstanceGroupManagerStatefulPolicyPreservedStateExternalIps, 0, len(a))
for _, item := range a {
items = append(items, *flattenInstanceGroupManagerStatefulPolicyPreservedStateExternalIps(c, item.(map[string]interface{}), res))
}
return items
}
// expandInstanceGroupManagerStatefulPolicyPreservedStateExternalIps expands an instance of InstanceGroupManagerStatefulPolicyPreservedStateExternalIps into a JSON
// request object.
func expandInstanceGroupManagerStatefulPolicyPreservedStateExternalIps(c *Client, f *InstanceGroupManagerStatefulPolicyPreservedStateExternalIps, res *InstanceGroupManager) (map[string]interface{}, error) {
if dcl.IsEmptyValueIndirect(f) {
return nil, nil
}
m := make(map[string]interface{})
if v := f.AutoDelete; !dcl.IsEmptyValueIndirect(v) {
m["autoDelete"] = v
}
return m, nil
}
// flattenInstanceGroupManagerStatefulPolicyPreservedStateExternalIps flattens an instance of InstanceGroupManagerStatefulPolicyPreservedStateExternalIps from a JSON
// response object.
func flattenInstanceGroupManagerStatefulPolicyPreservedStateExternalIps(c *Client, i interface{}, res *InstanceGroupManager) *InstanceGroupManagerStatefulPolicyPreservedStateExternalIps {
m, ok := i.(map[string]interface{})
if !ok {
return nil
}
r := &InstanceGroupManagerStatefulPolicyPreservedStateExternalIps{}
if dcl.IsEmptyValueIndirect(i) {
return EmptyInstanceGroupManagerStatefulPolicyPreservedStateExternalIps
}
r.AutoDelete = flattenInstanceGroupManagerStatefulPolicyPreservedStateExternalIpsAutoDeleteEnum(m["autoDelete"])
return r
}
// flattenInstanceGroupManagerDistributionPolicyTargetShapeEnumMap flattens the contents of InstanceGroupManagerDistributionPolicyTargetShapeEnum from a JSON
// response object.
func flattenInstanceGroupManagerDistributionPolicyTargetShapeEnumMap(c *Client, i interface{}, res *InstanceGroupManager) map[string]InstanceGroupManagerDistributionPolicyTargetShapeEnum {
a, ok := i.(map[string]interface{})
if !ok {
return map[string]InstanceGroupManagerDistributionPolicyTargetShapeEnum{}
}
if len(a) == 0 {
return map[string]InstanceGroupManagerDistributionPolicyTargetShapeEnum{}
}
items := make(map[string]InstanceGroupManagerDistributionPolicyTargetShapeEnum)
for k, item := range a {
items[k] = *flattenInstanceGroupManagerDistributionPolicyTargetShapeEnum(item.(interface{}))
}
return items
}
// flattenInstanceGroupManagerDistributionPolicyTargetShapeEnumSlice flattens the contents of InstanceGroupManagerDistributionPolicyTargetShapeEnum from a JSON
// response object.
func flattenInstanceGroupManagerDistributionPolicyTargetShapeEnumSlice(c *Client, i interface{}, res *InstanceGroupManager) []InstanceGroupManagerDistributionPolicyTargetShapeEnum {
a, ok := i.([]interface{})
if !ok {
return []InstanceGroupManagerDistributionPolicyTargetShapeEnum{}
}
if len(a) == 0 {
return []InstanceGroupManagerDistributionPolicyTargetShapeEnum{}
}
items := make([]InstanceGroupManagerDistributionPolicyTargetShapeEnum, 0, len(a))
for _, item := range a {
items = append(items, *flattenInstanceGroupManagerDistributionPolicyTargetShapeEnum(item.(interface{})))
}
return items
}
// flattenInstanceGroupManagerDistributionPolicyTargetShapeEnum asserts that an interface is a string, and returns a
// pointer to a *InstanceGroupManagerDistributionPolicyTargetShapeEnum with the same value as that string.
func flattenInstanceGroupManagerDistributionPolicyTargetShapeEnum(i interface{}) *InstanceGroupManagerDistributionPolicyTargetShapeEnum {
s, ok := i.(string)
if !ok {
return nil
}
return InstanceGroupManagerDistributionPolicyTargetShapeEnumRef(s)
}
// flattenInstanceGroupManagerUpdatePolicyTypeEnumMap flattens the contents of InstanceGroupManagerUpdatePolicyTypeEnum from a JSON
// response object.
func flattenInstanceGroupManagerUpdatePolicyTypeEnumMap(c *Client, i interface{}, res *InstanceGroupManager) map[string]InstanceGroupManagerUpdatePolicyTypeEnum {
a, ok := i.(map[string]interface{})
if !ok {
return map[string]InstanceGroupManagerUpdatePolicyTypeEnum{}
}
if len(a) == 0 {
return map[string]InstanceGroupManagerUpdatePolicyTypeEnum{}
}
items := make(map[string]InstanceGroupManagerUpdatePolicyTypeEnum)
for k, item := range a {
items[k] = *flattenInstanceGroupManagerUpdatePolicyTypeEnum(item.(interface{}))
}
return items
}
// flattenInstanceGroupManagerUpdatePolicyTypeEnumSlice flattens the contents of InstanceGroupManagerUpdatePolicyTypeEnum from a JSON
// response object.
func flattenInstanceGroupManagerUpdatePolicyTypeEnumSlice(c *Client, i interface{}, res *InstanceGroupManager) []InstanceGroupManagerUpdatePolicyTypeEnum {
a, ok := i.([]interface{})
if !ok {
return []InstanceGroupManagerUpdatePolicyTypeEnum{}
}
if len(a) == 0 {
return []InstanceGroupManagerUpdatePolicyTypeEnum{}
}
items := make([]InstanceGroupManagerUpdatePolicyTypeEnum, 0, len(a))
for _, item := range a {
items = append(items, *flattenInstanceGroupManagerUpdatePolicyTypeEnum(item.(interface{})))
}
return items
}
// flattenInstanceGroupManagerUpdatePolicyTypeEnum asserts that an interface is a string, and returns a
// pointer to a *InstanceGroupManagerUpdatePolicyTypeEnum with the same value as that string.
func flattenInstanceGroupManagerUpdatePolicyTypeEnum(i interface{}) *InstanceGroupManagerUpdatePolicyTypeEnum {
s, ok := i.(string)
if !ok {
return nil
}
return InstanceGroupManagerUpdatePolicyTypeEnumRef(s)
}
// flattenInstanceGroupManagerUpdatePolicyInstanceRedistributionTypeEnumMap flattens the contents of InstanceGroupManagerUpdatePolicyInstanceRedistributionTypeEnum from a JSON
// response object.
func flattenInstanceGroupManagerUpdatePolicyInstanceRedistributionTypeEnumMap(c *Client, i interface{}, res *InstanceGroupManager) map[string]InstanceGroupManagerUpdatePolicyInstanceRedistributionTypeEnum {
a, ok := i.(map[string]interface{})
if !ok {
return map[string]InstanceGroupManagerUpdatePolicyInstanceRedistributionTypeEnum{}
}
if len(a) == 0 {
return map[string]InstanceGroupManagerUpdatePolicyInstanceRedistributionTypeEnum{}
}
items := make(map[string]InstanceGroupManagerUpdatePolicyInstanceRedistributionTypeEnum)
for k, item := range a {
items[k] = *flattenInstanceGroupManagerUpdatePolicyInstanceRedistributionTypeEnum(item.(interface{}))
}
return items
}
// flattenInstanceGroupManagerUpdatePolicyInstanceRedistributionTypeEnumSlice flattens the contents of InstanceGroupManagerUpdatePolicyInstanceRedistributionTypeEnum from a JSON
// response object.
func flattenInstanceGroupManagerUpdatePolicyInstanceRedistributionTypeEnumSlice(c *Client, i interface{}, res *InstanceGroupManager) []InstanceGroupManagerUpdatePolicyInstanceRedistributionTypeEnum {
a, ok := i.([]interface{})
if !ok {
return []InstanceGroupManagerUpdatePolicyInstanceRedistributionTypeEnum{}
}
if len(a) == 0 {
return []InstanceGroupManagerUpdatePolicyInstanceRedistributionTypeEnum{}
}
items := make([]InstanceGroupManagerUpdatePolicyInstanceRedistributionTypeEnum, 0, len(a))
for _, item := range a {
items = append(items, *flattenInstanceGroupManagerUpdatePolicyInstanceRedistributionTypeEnum(item.(interface{})))
}
return items
}
// flattenInstanceGroupManagerUpdatePolicyInstanceRedistributionTypeEnum asserts that an interface is a string, and returns a
// pointer to a *InstanceGroupManagerUpdatePolicyInstanceRedistributionTypeEnum with the same value as that string.
func flattenInstanceGroupManagerUpdatePolicyInstanceRedistributionTypeEnum(i interface{}) *InstanceGroupManagerUpdatePolicyInstanceRedistributionTypeEnum {
s, ok := i.(string)
if !ok {
return nil
}
return InstanceGroupManagerUpdatePolicyInstanceRedistributionTypeEnumRef(s)
}
// flattenInstanceGroupManagerUpdatePolicyMinimalActionEnumMap flattens the contents of InstanceGroupManagerUpdatePolicyMinimalActionEnum from a JSON
// response object.
func flattenInstanceGroupManagerUpdatePolicyMinimalActionEnumMap(c *Client, i interface{}, res *InstanceGroupManager) map[string]InstanceGroupManagerUpdatePolicyMinimalActionEnum {
a, ok := i.(map[string]interface{})
if !ok {
return map[string]InstanceGroupManagerUpdatePolicyMinimalActionEnum{}
}
if len(a) == 0 {
return map[string]InstanceGroupManagerUpdatePolicyMinimalActionEnum{}
}
items := make(map[string]InstanceGroupManagerUpdatePolicyMinimalActionEnum)
for k, item := range a {
items[k] = *flattenInstanceGroupManagerUpdatePolicyMinimalActionEnum(item.(interface{}))
}
return items
}
// flattenInstanceGroupManagerUpdatePolicyMinimalActionEnumSlice flattens the contents of InstanceGroupManagerUpdatePolicyMinimalActionEnum from a JSON
// response object.
func flattenInstanceGroupManagerUpdatePolicyMinimalActionEnumSlice(c *Client, i interface{}, res *InstanceGroupManager) []InstanceGroupManagerUpdatePolicyMinimalActionEnum {
a, ok := i.([]interface{})
if !ok {
return []InstanceGroupManagerUpdatePolicyMinimalActionEnum{}
}
if len(a) == 0 {
return []InstanceGroupManagerUpdatePolicyMinimalActionEnum{}
}
items := make([]InstanceGroupManagerUpdatePolicyMinimalActionEnum, 0, len(a))
for _, item := range a {
items = append(items, *flattenInstanceGroupManagerUpdatePolicyMinimalActionEnum(item.(interface{})))
}
return items
}
// flattenInstanceGroupManagerUpdatePolicyMinimalActionEnum asserts that an interface is a string, and returns a
// pointer to a *InstanceGroupManagerUpdatePolicyMinimalActionEnum with the same value as that string.
func flattenInstanceGroupManagerUpdatePolicyMinimalActionEnum(i interface{}) *InstanceGroupManagerUpdatePolicyMinimalActionEnum {
s, ok := i.(string)
if !ok {
return nil
}
return InstanceGroupManagerUpdatePolicyMinimalActionEnumRef(s)
}
// flattenInstanceGroupManagerUpdatePolicyReplacementMethodEnumMap flattens the contents of InstanceGroupManagerUpdatePolicyReplacementMethodEnum from a JSON
// response object.
func flattenInstanceGroupManagerUpdatePolicyReplacementMethodEnumMap(c *Client, i interface{}, res *InstanceGroupManager) map[string]InstanceGroupManagerUpdatePolicyReplacementMethodEnum {
a, ok := i.(map[string]interface{})
if !ok {
return map[string]InstanceGroupManagerUpdatePolicyReplacementMethodEnum{}
}
if len(a) == 0 {
return map[string]InstanceGroupManagerUpdatePolicyReplacementMethodEnum{}
}
items := make(map[string]InstanceGroupManagerUpdatePolicyReplacementMethodEnum)
for k, item := range a {
items[k] = *flattenInstanceGroupManagerUpdatePolicyReplacementMethodEnum(item.(interface{}))
}
return items
}
// flattenInstanceGroupManagerUpdatePolicyReplacementMethodEnumSlice flattens the contents of InstanceGroupManagerUpdatePolicyReplacementMethodEnum from a JSON
// response object.
func flattenInstanceGroupManagerUpdatePolicyReplacementMethodEnumSlice(c *Client, i interface{}, res *InstanceGroupManager) []InstanceGroupManagerUpdatePolicyReplacementMethodEnum {
a, ok := i.([]interface{})
if !ok {
return []InstanceGroupManagerUpdatePolicyReplacementMethodEnum{}
}
if len(a) == 0 {
return []InstanceGroupManagerUpdatePolicyReplacementMethodEnum{}
}
items := make([]InstanceGroupManagerUpdatePolicyReplacementMethodEnum, 0, len(a))
for _, item := range a {
items = append(items, *flattenInstanceGroupManagerUpdatePolicyReplacementMethodEnum(item.(interface{})))
}
return items
}
// flattenInstanceGroupManagerUpdatePolicyReplacementMethodEnum asserts that an interface is a string, and returns a
// pointer to a *InstanceGroupManagerUpdatePolicyReplacementMethodEnum with the same value as that string.
func flattenInstanceGroupManagerUpdatePolicyReplacementMethodEnum(i interface{}) *InstanceGroupManagerUpdatePolicyReplacementMethodEnum {
s, ok := i.(string)
if !ok {
return nil
}
return InstanceGroupManagerUpdatePolicyReplacementMethodEnumRef(s)
}
// flattenInstanceGroupManagerUpdatePolicyMostDisruptiveAllowedActionEnumMap flattens the contents of InstanceGroupManagerUpdatePolicyMostDisruptiveAllowedActionEnum from a JSON
// response object.
func flattenInstanceGroupManagerUpdatePolicyMostDisruptiveAllowedActionEnumMap(c *Client, i interface{}, res *InstanceGroupManager) map[string]InstanceGroupManagerUpdatePolicyMostDisruptiveAllowedActionEnum {
a, ok := i.(map[string]interface{})
if !ok {
return map[string]InstanceGroupManagerUpdatePolicyMostDisruptiveAllowedActionEnum{}
}
if len(a) == 0 {
return map[string]InstanceGroupManagerUpdatePolicyMostDisruptiveAllowedActionEnum{}
}
items := make(map[string]InstanceGroupManagerUpdatePolicyMostDisruptiveAllowedActionEnum)
for k, item := range a {
items[k] = *flattenInstanceGroupManagerUpdatePolicyMostDisruptiveAllowedActionEnum(item.(interface{}))
}
return items
}
// flattenInstanceGroupManagerUpdatePolicyMostDisruptiveAllowedActionEnumSlice flattens the contents of InstanceGroupManagerUpdatePolicyMostDisruptiveAllowedActionEnum from a JSON
// response object.
func flattenInstanceGroupManagerUpdatePolicyMostDisruptiveAllowedActionEnumSlice(c *Client, i interface{}, res *InstanceGroupManager) []InstanceGroupManagerUpdatePolicyMostDisruptiveAllowedActionEnum {
a, ok := i.([]interface{})
if !ok {
return []InstanceGroupManagerUpdatePolicyMostDisruptiveAllowedActionEnum{}
}
if len(a) == 0 {
return []InstanceGroupManagerUpdatePolicyMostDisruptiveAllowedActionEnum{}
}
items := make([]InstanceGroupManagerUpdatePolicyMostDisruptiveAllowedActionEnum, 0, len(a))
for _, item := range a {
items = append(items, *flattenInstanceGroupManagerUpdatePolicyMostDisruptiveAllowedActionEnum(item.(interface{})))
}
return items
}
// flattenInstanceGroupManagerUpdatePolicyMostDisruptiveAllowedActionEnum asserts that an interface is a string, and returns a
// pointer to a *InstanceGroupManagerUpdatePolicyMostDisruptiveAllowedActionEnum with the same value as that string.
func flattenInstanceGroupManagerUpdatePolicyMostDisruptiveAllowedActionEnum(i interface{}) *InstanceGroupManagerUpdatePolicyMostDisruptiveAllowedActionEnum {
s, ok := i.(string)
if !ok {
return nil
}
return InstanceGroupManagerUpdatePolicyMostDisruptiveAllowedActionEnumRef(s)
}
// flattenInstanceGroupManagerStatefulPolicyPreservedStateDisksAutoDeleteEnumMap flattens the contents of InstanceGroupManagerStatefulPolicyPreservedStateDisksAutoDeleteEnum from a JSON
// response object.
func flattenInstanceGroupManagerStatefulPolicyPreservedStateDisksAutoDeleteEnumMap(c *Client, i interface{}, res *InstanceGroupManager) map[string]InstanceGroupManagerStatefulPolicyPreservedStateDisksAutoDeleteEnum {
a, ok := i.(map[string]interface{})
if !ok {
return map[string]InstanceGroupManagerStatefulPolicyPreservedStateDisksAutoDeleteEnum{}
}
if len(a) == 0 {
return map[string]InstanceGroupManagerStatefulPolicyPreservedStateDisksAutoDeleteEnum{}
}
items := make(map[string]InstanceGroupManagerStatefulPolicyPreservedStateDisksAutoDeleteEnum)
for k, item := range a {
items[k] = *flattenInstanceGroupManagerStatefulPolicyPreservedStateDisksAutoDeleteEnum(item.(interface{}))
}
return items
}
// flattenInstanceGroupManagerStatefulPolicyPreservedStateDisksAutoDeleteEnumSlice flattens the contents of InstanceGroupManagerStatefulPolicyPreservedStateDisksAutoDeleteEnum from a JSON
// response object.
func flattenInstanceGroupManagerStatefulPolicyPreservedStateDisksAutoDeleteEnumSlice(c *Client, i interface{}, res *InstanceGroupManager) []InstanceGroupManagerStatefulPolicyPreservedStateDisksAutoDeleteEnum {
a, ok := i.([]interface{})
if !ok {
return []InstanceGroupManagerStatefulPolicyPreservedStateDisksAutoDeleteEnum{}
}
if len(a) == 0 {
return []InstanceGroupManagerStatefulPolicyPreservedStateDisksAutoDeleteEnum{}
}
items := make([]InstanceGroupManagerStatefulPolicyPreservedStateDisksAutoDeleteEnum, 0, len(a))
for _, item := range a {
items = append(items, *flattenInstanceGroupManagerStatefulPolicyPreservedStateDisksAutoDeleteEnum(item.(interface{})))
}
return items
}
// flattenInstanceGroupManagerStatefulPolicyPreservedStateDisksAutoDeleteEnum asserts that an interface is a string, and returns a
// pointer to a *InstanceGroupManagerStatefulPolicyPreservedStateDisksAutoDeleteEnum with the same value as that string.
func flattenInstanceGroupManagerStatefulPolicyPreservedStateDisksAutoDeleteEnum(i interface{}) *InstanceGroupManagerStatefulPolicyPreservedStateDisksAutoDeleteEnum {
s, ok := i.(string)
if !ok {
return nil
}
return InstanceGroupManagerStatefulPolicyPreservedStateDisksAutoDeleteEnumRef(s)
}
// flattenInstanceGroupManagerStatefulPolicyPreservedStateInternalIpsAutoDeleteEnumMap flattens the contents of InstanceGroupManagerStatefulPolicyPreservedStateInternalIpsAutoDeleteEnum from a JSON
// response object.
func flattenInstanceGroupManagerStatefulPolicyPreservedStateInternalIpsAutoDeleteEnumMap(c *Client, i interface{}, res *InstanceGroupManager) map[string]InstanceGroupManagerStatefulPolicyPreservedStateInternalIpsAutoDeleteEnum {
a, ok := i.(map[string]interface{})
if !ok {
return map[string]InstanceGroupManagerStatefulPolicyPreservedStateInternalIpsAutoDeleteEnum{}
}
if len(a) == 0 {
return map[string]InstanceGroupManagerStatefulPolicyPreservedStateInternalIpsAutoDeleteEnum{}
}
items := make(map[string]InstanceGroupManagerStatefulPolicyPreservedStateInternalIpsAutoDeleteEnum)
for k, item := range a {
items[k] = *flattenInstanceGroupManagerStatefulPolicyPreservedStateInternalIpsAutoDeleteEnum(item.(interface{}))
}
return items
}
// flattenInstanceGroupManagerStatefulPolicyPreservedStateInternalIpsAutoDeleteEnumSlice flattens the contents of InstanceGroupManagerStatefulPolicyPreservedStateInternalIpsAutoDeleteEnum from a JSON
// response object.
func flattenInstanceGroupManagerStatefulPolicyPreservedStateInternalIpsAutoDeleteEnumSlice(c *Client, i interface{}, res *InstanceGroupManager) []InstanceGroupManagerStatefulPolicyPreservedStateInternalIpsAutoDeleteEnum {
a, ok := i.([]interface{})
if !ok {
return []InstanceGroupManagerStatefulPolicyPreservedStateInternalIpsAutoDeleteEnum{}
}
if len(a) == 0 {
return []InstanceGroupManagerStatefulPolicyPreservedStateInternalIpsAutoDeleteEnum{}
}
items := make([]InstanceGroupManagerStatefulPolicyPreservedStateInternalIpsAutoDeleteEnum, 0, len(a))
for _, item := range a {
items = append(items, *flattenInstanceGroupManagerStatefulPolicyPreservedStateInternalIpsAutoDeleteEnum(item.(interface{})))
}
return items
}
// flattenInstanceGroupManagerStatefulPolicyPreservedStateInternalIpsAutoDeleteEnum asserts that an interface is a string, and returns a
// pointer to a *InstanceGroupManagerStatefulPolicyPreservedStateInternalIpsAutoDeleteEnum with the same value as that string.
func flattenInstanceGroupManagerStatefulPolicyPreservedStateInternalIpsAutoDeleteEnum(i interface{}) *InstanceGroupManagerStatefulPolicyPreservedStateInternalIpsAutoDeleteEnum {
s, ok := i.(string)
if !ok {
return nil
}
return InstanceGroupManagerStatefulPolicyPreservedStateInternalIpsAutoDeleteEnumRef(s)
}
// flattenInstanceGroupManagerStatefulPolicyPreservedStateExternalIpsAutoDeleteEnumMap flattens the contents of InstanceGroupManagerStatefulPolicyPreservedStateExternalIpsAutoDeleteEnum from a JSON
// response object.
func flattenInstanceGroupManagerStatefulPolicyPreservedStateExternalIpsAutoDeleteEnumMap(c *Client, i interface{}, res *InstanceGroupManager) map[string]InstanceGroupManagerStatefulPolicyPreservedStateExternalIpsAutoDeleteEnum {
a, ok := i.(map[string]interface{})
if !ok {
return map[string]InstanceGroupManagerStatefulPolicyPreservedStateExternalIpsAutoDeleteEnum{}
}
if len(a) == 0 {
return map[string]InstanceGroupManagerStatefulPolicyPreservedStateExternalIpsAutoDeleteEnum{}
}
items := make(map[string]InstanceGroupManagerStatefulPolicyPreservedStateExternalIpsAutoDeleteEnum)
for k, item := range a {
items[k] = *flattenInstanceGroupManagerStatefulPolicyPreservedStateExternalIpsAutoDeleteEnum(item.(interface{}))
}
return items
}
// flattenInstanceGroupManagerStatefulPolicyPreservedStateExternalIpsAutoDeleteEnumSlice flattens the contents of InstanceGroupManagerStatefulPolicyPreservedStateExternalIpsAutoDeleteEnum from a JSON
// response object.
func flattenInstanceGroupManagerStatefulPolicyPreservedStateExternalIpsAutoDeleteEnumSlice(c *Client, i interface{}, res *InstanceGroupManager) []InstanceGroupManagerStatefulPolicyPreservedStateExternalIpsAutoDeleteEnum {
a, ok := i.([]interface{})
if !ok {
return []InstanceGroupManagerStatefulPolicyPreservedStateExternalIpsAutoDeleteEnum{}
}
if len(a) == 0 {
return []InstanceGroupManagerStatefulPolicyPreservedStateExternalIpsAutoDeleteEnum{}
}
items := make([]InstanceGroupManagerStatefulPolicyPreservedStateExternalIpsAutoDeleteEnum, 0, len(a))
for _, item := range a {
items = append(items, *flattenInstanceGroupManagerStatefulPolicyPreservedStateExternalIpsAutoDeleteEnum(item.(interface{})))
}
return items
}
// flattenInstanceGroupManagerStatefulPolicyPreservedStateExternalIpsAutoDeleteEnum asserts that an interface is a string, and returns a
// pointer to a *InstanceGroupManagerStatefulPolicyPreservedStateExternalIpsAutoDeleteEnum with the same value as that string.
func flattenInstanceGroupManagerStatefulPolicyPreservedStateExternalIpsAutoDeleteEnum(i interface{}) *InstanceGroupManagerStatefulPolicyPreservedStateExternalIpsAutoDeleteEnum {
s, ok := i.(string)
if !ok {
return nil
}
return InstanceGroupManagerStatefulPolicyPreservedStateExternalIpsAutoDeleteEnumRef(s)
}
// flattenInstanceGroupManagerFailoverActionEnumMap flattens the contents of InstanceGroupManagerFailoverActionEnum from a JSON
// response object.
func flattenInstanceGroupManagerFailoverActionEnumMap(c *Client, i interface{}, res *InstanceGroupManager) map[string]InstanceGroupManagerFailoverActionEnum {
a, ok := i.(map[string]interface{})
if !ok {
return map[string]InstanceGroupManagerFailoverActionEnum{}
}
if len(a) == 0 {
return map[string]InstanceGroupManagerFailoverActionEnum{}
}
items := make(map[string]InstanceGroupManagerFailoverActionEnum)
for k, item := range a {
items[k] = *flattenInstanceGroupManagerFailoverActionEnum(item.(interface{}))
}
return items
}
// flattenInstanceGroupManagerFailoverActionEnumSlice flattens the contents of InstanceGroupManagerFailoverActionEnum from a JSON
// response object.
func flattenInstanceGroupManagerFailoverActionEnumSlice(c *Client, i interface{}, res *InstanceGroupManager) []InstanceGroupManagerFailoverActionEnum {
a, ok := i.([]interface{})
if !ok {
return []InstanceGroupManagerFailoverActionEnum{}
}
if len(a) == 0 {
return []InstanceGroupManagerFailoverActionEnum{}
}
items := make([]InstanceGroupManagerFailoverActionEnum, 0, len(a))
for _, item := range a {
items = append(items, *flattenInstanceGroupManagerFailoverActionEnum(item.(interface{})))
}
return items
}
// flattenInstanceGroupManagerFailoverActionEnum asserts that an interface is a string, and returns a
// pointer to a *InstanceGroupManagerFailoverActionEnum with the same value as that string.
func flattenInstanceGroupManagerFailoverActionEnum(i interface{}) *InstanceGroupManagerFailoverActionEnum {
s, ok := i.(string)
if !ok {
return nil
}
return InstanceGroupManagerFailoverActionEnumRef(s)
}
// This function returns a matcher that checks whether a serialized resource matches this resource
// in its parameters (as defined by the fields in a Get, which definitionally define resource
// identity). This is useful in extracting the element from a List call.
func (r *InstanceGroupManager) matcher(c *Client) func([]byte) bool {
return func(b []byte) bool {
cr, err := unmarshalInstanceGroupManager(b, c, r)
if err != nil {
c.Config.Logger.Warning("failed to unmarshal provided resource in matcher.")
return false
}
nr := r.urlNormalized()
ncr := cr.urlNormalized()
c.Config.Logger.Infof("looking for %v\nin %v", nr, ncr)
if nr.Project == nil && ncr.Project == nil {
c.Config.Logger.Info("Both Project fields null - considering equal.")
} else if nr.Project == nil || ncr.Project == nil {
c.Config.Logger.Info("Only one Project field is null - considering unequal.")
return false
} else if *nr.Project != *ncr.Project {
return false
}
if nr.Location == nil && ncr.Location == nil {
c.Config.Logger.Info("Both Location fields null - considering equal.")
} else if nr.Location == nil || ncr.Location == nil {
c.Config.Logger.Info("Only one Location field is null - considering unequal.")
return false
} else if *nr.Location != *ncr.Location {
return false
}
if nr.Name == nil && ncr.Name == nil {
c.Config.Logger.Info("Both Name fields null - considering equal.")
} else if nr.Name == nil || ncr.Name == nil {
c.Config.Logger.Info("Only one Name field is null - considering unequal.")
return false
} else if *nr.Name != *ncr.Name {
return false
}
return true
}
}
type instanceGroupManagerDiff struct {
// The diff should include one or the other of RequiresRecreate or UpdateOp.
RequiresRecreate bool
UpdateOp instanceGroupManagerApiOperation
FieldName string // used for error logging
}
func convertFieldDiffsToInstanceGroupManagerDiffs(config *dcl.Config, fds []*dcl.FieldDiff, opts []dcl.ApplyOption) ([]instanceGroupManagerDiff, error) {
opNamesToFieldDiffs := make(map[string][]*dcl.FieldDiff)
// Map each operation name to the field diffs associated with it.
for _, fd := range fds {
for _, ro := range fd.ResultingOperation {
if fieldDiffs, ok := opNamesToFieldDiffs[ro]; ok {
fieldDiffs = append(fieldDiffs, fd)
opNamesToFieldDiffs[ro] = fieldDiffs
} else {
config.Logger.Infof("%s required due to diff: %v", ro, fd)
opNamesToFieldDiffs[ro] = []*dcl.FieldDiff{fd}
}
}
}
var diffs []instanceGroupManagerDiff
// For each operation name, create a instanceGroupManagerDiff which contains the operation.
for opName, fieldDiffs := range opNamesToFieldDiffs {
// Use the first field diff's field name for logging required recreate error.
diff := instanceGroupManagerDiff{FieldName: fieldDiffs[0].FieldName}
if opName == "Recreate" {
diff.RequiresRecreate = true
} else {
apiOp, err := convertOpNameToInstanceGroupManagerApiOperation(opName, fieldDiffs, opts...)
if err != nil {
return diffs, err
}
diff.UpdateOp = apiOp
}
diffs = append(diffs, diff)
}
return diffs, nil
}
func convertOpNameToInstanceGroupManagerApiOperation(opName string, fieldDiffs []*dcl.FieldDiff, opts ...dcl.ApplyOption) (instanceGroupManagerApiOperation, error) {
switch opName {
case "updateInstanceGroupManagerPatchOperation":
return &updateInstanceGroupManagerPatchOperation{FieldDiffs: fieldDiffs}, nil
case "updateInstanceGroupManagerSetInstanceTemplateOperation":
return &updateInstanceGroupManagerSetInstanceTemplateOperation{FieldDiffs: fieldDiffs}, nil
case "updateInstanceGroupManagerSetTargetPoolsOperation":
return &updateInstanceGroupManagerSetTargetPoolsOperation{FieldDiffs: fieldDiffs}, nil
default:
return nil, fmt.Errorf("no such operation with name: %v", opName)
}
}
func extractInstanceGroupManagerFields(r *InstanceGroupManager) error {
vDistributionPolicy := r.DistributionPolicy
if vDistributionPolicy == nil {
// note: explicitly not the empty object.
vDistributionPolicy = &InstanceGroupManagerDistributionPolicy{}
}
if err := extractInstanceGroupManagerDistributionPolicyFields(r, vDistributionPolicy); err != nil {
return err
}
if !dcl.IsEmptyValueIndirect(vDistributionPolicy) {
r.DistributionPolicy = vDistributionPolicy
}
vCurrentActions := r.CurrentActions
if vCurrentActions == nil {
// note: explicitly not the empty object.
vCurrentActions = &InstanceGroupManagerCurrentActions{}
}
if err := extractInstanceGroupManagerCurrentActionsFields(r, vCurrentActions); err != nil {
return err
}
if !dcl.IsEmptyValueIndirect(vCurrentActions) {
r.CurrentActions = vCurrentActions
}
vStatus := r.Status
if vStatus == nil {
// note: explicitly not the empty object.
vStatus = &InstanceGroupManagerStatus{}
}
if err := extractInstanceGroupManagerStatusFields(r, vStatus); err != nil {
return err
}
if !dcl.IsEmptyValueIndirect(vStatus) {
r.Status = vStatus
}
vUpdatePolicy := r.UpdatePolicy
if vUpdatePolicy == nil {
// note: explicitly not the empty object.
vUpdatePolicy = &InstanceGroupManagerUpdatePolicy{}
}
if err := extractInstanceGroupManagerUpdatePolicyFields(r, vUpdatePolicy); err != nil {
return err
}
if !dcl.IsEmptyValueIndirect(vUpdatePolicy) {
r.UpdatePolicy = vUpdatePolicy
}
vStatefulPolicy := r.StatefulPolicy
if vStatefulPolicy == nil {
// note: explicitly not the empty object.
vStatefulPolicy = &InstanceGroupManagerStatefulPolicy{}
}
if err := extractInstanceGroupManagerStatefulPolicyFields(r, vStatefulPolicy); err != nil {
return err
}
if !dcl.IsEmptyValueIndirect(vStatefulPolicy) {
r.StatefulPolicy = vStatefulPolicy
}
return nil
}
func extractInstanceGroupManagerDistributionPolicyFields(r *InstanceGroupManager, o *InstanceGroupManagerDistributionPolicy) error {
return nil
}
func extractInstanceGroupManagerDistributionPolicyZonesFields(r *InstanceGroupManager, o *InstanceGroupManagerDistributionPolicyZones) error {
return nil
}
func extractInstanceGroupManagerVersionsFields(r *InstanceGroupManager, o *InstanceGroupManagerVersions) error {
vTargetSize := o.TargetSize
if vTargetSize == nil {
// note: explicitly not the empty object.
vTargetSize = &InstanceGroupManagerVersionsTargetSize{}
}
if err := extractInstanceGroupManagerVersionsTargetSizeFields(r, vTargetSize); err != nil {
return err
}
if !dcl.IsEmptyValueIndirect(vTargetSize) {
o.TargetSize = vTargetSize
}
return nil
}
func extractInstanceGroupManagerVersionsTargetSizeFields(r *InstanceGroupManager, o *InstanceGroupManagerVersionsTargetSize) error {
return nil
}
func extractInstanceGroupManagerCurrentActionsFields(r *InstanceGroupManager, o *InstanceGroupManagerCurrentActions) error {
return nil
}
func extractInstanceGroupManagerStatusFields(r *InstanceGroupManager, o *InstanceGroupManagerStatus) error {
vVersionTarget := o.VersionTarget
if vVersionTarget == nil {
// note: explicitly not the empty object.
vVersionTarget = &InstanceGroupManagerStatusVersionTarget{}
}
if err := extractInstanceGroupManagerStatusVersionTargetFields(r, vVersionTarget); err != nil {
return err
}
if !dcl.IsEmptyValueIndirect(vVersionTarget) {
o.VersionTarget = vVersionTarget
}
vStateful := o.Stateful
if vStateful == nil {
// note: explicitly not the empty object.
vStateful = &InstanceGroupManagerStatusStateful{}
}
if err := extractInstanceGroupManagerStatusStatefulFields(r, vStateful); err != nil {
return err
}
if !dcl.IsEmptyValueIndirect(vStateful) {
o.Stateful = vStateful
}
return nil
}
func extractInstanceGroupManagerStatusVersionTargetFields(r *InstanceGroupManager, o *InstanceGroupManagerStatusVersionTarget) error {
return nil
}
func extractInstanceGroupManagerStatusStatefulFields(r *InstanceGroupManager, o *InstanceGroupManagerStatusStateful) error {
vPerInstanceConfigs := o.PerInstanceConfigs
if vPerInstanceConfigs == nil {
// note: explicitly not the empty object.
vPerInstanceConfigs = &InstanceGroupManagerStatusStatefulPerInstanceConfigs{}
}
if err := extractInstanceGroupManagerStatusStatefulPerInstanceConfigsFields(r, vPerInstanceConfigs); err != nil {
return err
}
if !dcl.IsEmptyValueIndirect(vPerInstanceConfigs) {
o.PerInstanceConfigs = vPerInstanceConfigs
}
return nil
}
func extractInstanceGroupManagerStatusStatefulPerInstanceConfigsFields(r *InstanceGroupManager, o *InstanceGroupManagerStatusStatefulPerInstanceConfigs) error {
return nil
}
func extractInstanceGroupManagerAutoHealingPoliciesFields(r *InstanceGroupManager, o *InstanceGroupManagerAutoHealingPolicies) error {
return nil
}
func extractInstanceGroupManagerUpdatePolicyFields(r *InstanceGroupManager, o *InstanceGroupManagerUpdatePolicy) error {
vMaxSurge := o.MaxSurge
if vMaxSurge == nil {
// note: explicitly not the empty object.
vMaxSurge = &InstanceGroupManagerUpdatePolicyMaxSurge{}
}
if err := extractInstanceGroupManagerUpdatePolicyMaxSurgeFields(r, vMaxSurge); err != nil {
return err
}
if !dcl.IsEmptyValueIndirect(vMaxSurge) {
o.MaxSurge = vMaxSurge
}
vMaxUnavailable := o.MaxUnavailable
if vMaxUnavailable == nil {
// note: explicitly not the empty object.
vMaxUnavailable = &InstanceGroupManagerUpdatePolicyMaxUnavailable{}
}
if err := extractInstanceGroupManagerUpdatePolicyMaxUnavailableFields(r, vMaxUnavailable); err != nil {
return err
}
if !dcl.IsEmptyValueIndirect(vMaxUnavailable) {
o.MaxUnavailable = vMaxUnavailable
}
return nil
}
func extractInstanceGroupManagerUpdatePolicyMaxSurgeFields(r *InstanceGroupManager, o *InstanceGroupManagerUpdatePolicyMaxSurge) error {
return nil
}
func extractInstanceGroupManagerUpdatePolicyMaxUnavailableFields(r *InstanceGroupManager, o *InstanceGroupManagerUpdatePolicyMaxUnavailable) error {
return nil
}
func extractInstanceGroupManagerNamedPortsFields(r *InstanceGroupManager, o *InstanceGroupManagerNamedPorts) error {
return nil
}
func extractInstanceGroupManagerStatefulPolicyFields(r *InstanceGroupManager, o *InstanceGroupManagerStatefulPolicy) error {
vPreservedState := o.PreservedState
if vPreservedState == nil {
// note: explicitly not the empty object.
vPreservedState = &InstanceGroupManagerStatefulPolicyPreservedState{}
}
if err := extractInstanceGroupManagerStatefulPolicyPreservedStateFields(r, vPreservedState); err != nil {
return err
}
if !dcl.IsEmptyValueIndirect(vPreservedState) {
o.PreservedState = vPreservedState
}
return nil
}
func extractInstanceGroupManagerStatefulPolicyPreservedStateFields(r *InstanceGroupManager, o *InstanceGroupManagerStatefulPolicyPreservedState) error {
return nil
}
func extractInstanceGroupManagerStatefulPolicyPreservedStateDisksFields(r *InstanceGroupManager, o *InstanceGroupManagerStatefulPolicyPreservedStateDisks) error {
return nil
}
func extractInstanceGroupManagerStatefulPolicyPreservedStateInternalIpsFields(r *InstanceGroupManager, o *InstanceGroupManagerStatefulPolicyPreservedStateInternalIps) error {
return nil
}
func extractInstanceGroupManagerStatefulPolicyPreservedStateExternalIpsFields(r *InstanceGroupManager, o *InstanceGroupManagerStatefulPolicyPreservedStateExternalIps) error {
return nil
}
func postReadExtractInstanceGroupManagerFields(r *InstanceGroupManager) error {
vDistributionPolicy := r.DistributionPolicy
if vDistributionPolicy == nil {
// note: explicitly not the empty object.
vDistributionPolicy = &InstanceGroupManagerDistributionPolicy{}
}
if err := postReadExtractInstanceGroupManagerDistributionPolicyFields(r, vDistributionPolicy); err != nil {
return err
}
if !dcl.IsEmptyValueIndirect(vDistributionPolicy) {
r.DistributionPolicy = vDistributionPolicy
}
vCurrentActions := r.CurrentActions
if vCurrentActions == nil {
// note: explicitly not the empty object.
vCurrentActions = &InstanceGroupManagerCurrentActions{}
}
if err := postReadExtractInstanceGroupManagerCurrentActionsFields(r, vCurrentActions); err != nil {
return err
}
if !dcl.IsEmptyValueIndirect(vCurrentActions) {
r.CurrentActions = vCurrentActions
}
vStatus := r.Status
if vStatus == nil {
// note: explicitly not the empty object.
vStatus = &InstanceGroupManagerStatus{}
}
if err := postReadExtractInstanceGroupManagerStatusFields(r, vStatus); err != nil {
return err
}
if !dcl.IsEmptyValueIndirect(vStatus) {
r.Status = vStatus
}
vUpdatePolicy := r.UpdatePolicy
if vUpdatePolicy == nil {
// note: explicitly not the empty object.
vUpdatePolicy = &InstanceGroupManagerUpdatePolicy{}
}
if err := postReadExtractInstanceGroupManagerUpdatePolicyFields(r, vUpdatePolicy); err != nil {
return err
}
if !dcl.IsEmptyValueIndirect(vUpdatePolicy) {
r.UpdatePolicy = vUpdatePolicy
}
vStatefulPolicy := r.StatefulPolicy
if vStatefulPolicy == nil {
// note: explicitly not the empty object.
vStatefulPolicy = &InstanceGroupManagerStatefulPolicy{}
}
if err := postReadExtractInstanceGroupManagerStatefulPolicyFields(r, vStatefulPolicy); err != nil {
return err
}
if !dcl.IsEmptyValueIndirect(vStatefulPolicy) {
r.StatefulPolicy = vStatefulPolicy
}
return nil
}
func postReadExtractInstanceGroupManagerDistributionPolicyFields(r *InstanceGroupManager, o *InstanceGroupManagerDistributionPolicy) error {
return nil
}
func postReadExtractInstanceGroupManagerDistributionPolicyZonesFields(r *InstanceGroupManager, o *InstanceGroupManagerDistributionPolicyZones) error {
return nil
}
func postReadExtractInstanceGroupManagerVersionsFields(r *InstanceGroupManager, o *InstanceGroupManagerVersions) error {
vTargetSize := o.TargetSize
if vTargetSize == nil {
// note: explicitly not the empty object.
vTargetSize = &InstanceGroupManagerVersionsTargetSize{}
}
if err := extractInstanceGroupManagerVersionsTargetSizeFields(r, vTargetSize); err != nil {
return err
}
if !dcl.IsEmptyValueIndirect(vTargetSize) {
o.TargetSize = vTargetSize
}
return nil
}
func postReadExtractInstanceGroupManagerVersionsTargetSizeFields(r *InstanceGroupManager, o *InstanceGroupManagerVersionsTargetSize) error {
return nil
}
func postReadExtractInstanceGroupManagerCurrentActionsFields(r *InstanceGroupManager, o *InstanceGroupManagerCurrentActions) error {
return nil
}
func postReadExtractInstanceGroupManagerStatusFields(r *InstanceGroupManager, o *InstanceGroupManagerStatus) error {
vVersionTarget := o.VersionTarget
if vVersionTarget == nil {
// note: explicitly not the empty object.
vVersionTarget = &InstanceGroupManagerStatusVersionTarget{}
}
if err := extractInstanceGroupManagerStatusVersionTargetFields(r, vVersionTarget); err != nil {
return err
}
if !dcl.IsEmptyValueIndirect(vVersionTarget) {
o.VersionTarget = vVersionTarget
}
vStateful := o.Stateful
if vStateful == nil {
// note: explicitly not the empty object.
vStateful = &InstanceGroupManagerStatusStateful{}
}
if err := extractInstanceGroupManagerStatusStatefulFields(r, vStateful); err != nil {
return err
}
if !dcl.IsEmptyValueIndirect(vStateful) {
o.Stateful = vStateful
}
return nil
}
func postReadExtractInstanceGroupManagerStatusVersionTargetFields(r *InstanceGroupManager, o *InstanceGroupManagerStatusVersionTarget) error {
return nil
}
func postReadExtractInstanceGroupManagerStatusStatefulFields(r *InstanceGroupManager, o *InstanceGroupManagerStatusStateful) error {
vPerInstanceConfigs := o.PerInstanceConfigs
if vPerInstanceConfigs == nil {
// note: explicitly not the empty object.
vPerInstanceConfigs = &InstanceGroupManagerStatusStatefulPerInstanceConfigs{}
}
if err := extractInstanceGroupManagerStatusStatefulPerInstanceConfigsFields(r, vPerInstanceConfigs); err != nil {
return err
}
if !dcl.IsEmptyValueIndirect(vPerInstanceConfigs) {
o.PerInstanceConfigs = vPerInstanceConfigs
}
return nil
}
func postReadExtractInstanceGroupManagerStatusStatefulPerInstanceConfigsFields(r *InstanceGroupManager, o *InstanceGroupManagerStatusStatefulPerInstanceConfigs) error {
return nil
}
func postReadExtractInstanceGroupManagerAutoHealingPoliciesFields(r *InstanceGroupManager, o *InstanceGroupManagerAutoHealingPolicies) error {
return nil
}
func postReadExtractInstanceGroupManagerUpdatePolicyFields(r *InstanceGroupManager, o *InstanceGroupManagerUpdatePolicy) error {
vMaxSurge := o.MaxSurge
if vMaxSurge == nil {
// note: explicitly not the empty object.
vMaxSurge = &InstanceGroupManagerUpdatePolicyMaxSurge{}
}
if err := extractInstanceGroupManagerUpdatePolicyMaxSurgeFields(r, vMaxSurge); err != nil {
return err
}
if !dcl.IsEmptyValueIndirect(vMaxSurge) {
o.MaxSurge = vMaxSurge
}
vMaxUnavailable := o.MaxUnavailable
if vMaxUnavailable == nil {
// note: explicitly not the empty object.
vMaxUnavailable = &InstanceGroupManagerUpdatePolicyMaxUnavailable{}
}
if err := extractInstanceGroupManagerUpdatePolicyMaxUnavailableFields(r, vMaxUnavailable); err != nil {
return err
}
if !dcl.IsEmptyValueIndirect(vMaxUnavailable) {
o.MaxUnavailable = vMaxUnavailable
}
return nil
}
func postReadExtractInstanceGroupManagerUpdatePolicyMaxSurgeFields(r *InstanceGroupManager, o *InstanceGroupManagerUpdatePolicyMaxSurge) error {
return nil
}
func postReadExtractInstanceGroupManagerUpdatePolicyMaxUnavailableFields(r *InstanceGroupManager, o *InstanceGroupManagerUpdatePolicyMaxUnavailable) error {
return nil
}
func postReadExtractInstanceGroupManagerNamedPortsFields(r *InstanceGroupManager, o *InstanceGroupManagerNamedPorts) error {
return nil
}
func postReadExtractInstanceGroupManagerStatefulPolicyFields(r *InstanceGroupManager, o *InstanceGroupManagerStatefulPolicy) error {
vPreservedState := o.PreservedState
if vPreservedState == nil {
// note: explicitly not the empty object.
vPreservedState = &InstanceGroupManagerStatefulPolicyPreservedState{}
}
if err := extractInstanceGroupManagerStatefulPolicyPreservedStateFields(r, vPreservedState); err != nil {
return err
}
if !dcl.IsEmptyValueIndirect(vPreservedState) {
o.PreservedState = vPreservedState
}
return nil
}
func postReadExtractInstanceGroupManagerStatefulPolicyPreservedStateFields(r *InstanceGroupManager, o *InstanceGroupManagerStatefulPolicyPreservedState) error {
return nil
}
func postReadExtractInstanceGroupManagerStatefulPolicyPreservedStateDisksFields(r *InstanceGroupManager, o *InstanceGroupManagerStatefulPolicyPreservedStateDisks) error {
return nil
}
func postReadExtractInstanceGroupManagerStatefulPolicyPreservedStateInternalIpsFields(r *InstanceGroupManager, o *InstanceGroupManagerStatefulPolicyPreservedStateInternalIps) error {
return nil
}
func postReadExtractInstanceGroupManagerStatefulPolicyPreservedStateExternalIpsFields(r *InstanceGroupManager, o *InstanceGroupManagerStatefulPolicyPreservedStateExternalIps) error {
return nil
}