// Code generated by applyconfiguration-gen. DO NOT EDIT.

package v1

// PowerVSPlatformStatusApplyConfiguration represents an declarative configuration of the PowerVSPlatformStatus type for use
// with apply.
type PowerVSPlatformStatusApplyConfiguration struct {
	Region           *string                                    `json:"region,omitempty"`
	Zone             *string                                    `json:"zone,omitempty"`
	ResourceGroup    *string                                    `json:"resourceGroup,omitempty"`
	ServiceEndpoints []PowerVSServiceEndpointApplyConfiguration `json:"serviceEndpoints,omitempty"`
	CISInstanceCRN   *string                                    `json:"cisInstanceCRN,omitempty"`
	DNSInstanceCRN   *string                                    `json:"dnsInstanceCRN,omitempty"`
}

// PowerVSPlatformStatusApplyConfiguration constructs an declarative configuration of the PowerVSPlatformStatus type for use with
// apply.
func PowerVSPlatformStatus() *PowerVSPlatformStatusApplyConfiguration {
	return &PowerVSPlatformStatusApplyConfiguration{}
}

// WithRegion sets the Region field in the declarative configuration to the given value
// and returns the receiver, so that objects can be built by chaining "With" function invocations.
// If called multiple times, the Region field is set to the value of the last call.
func (b *PowerVSPlatformStatusApplyConfiguration) WithRegion(value string) *PowerVSPlatformStatusApplyConfiguration {
	b.Region = &value
	return b
}

// WithZone sets the Zone field in the declarative configuration to the given value
// and returns the receiver, so that objects can be built by chaining "With" function invocations.
// If called multiple times, the Zone field is set to the value of the last call.
func (b *PowerVSPlatformStatusApplyConfiguration) WithZone(value string) *PowerVSPlatformStatusApplyConfiguration {
	b.Zone = &value
	return b
}

// WithResourceGroup sets the ResourceGroup field in the declarative configuration to the given value
// and returns the receiver, so that objects can be built by chaining "With" function invocations.
// If called multiple times, the ResourceGroup field is set to the value of the last call.
func (b *PowerVSPlatformStatusApplyConfiguration) WithResourceGroup(value string) *PowerVSPlatformStatusApplyConfiguration {
	b.ResourceGroup = &value
	return b
}

// WithServiceEndpoints adds the given value to the ServiceEndpoints field in the declarative configuration
// and returns the receiver, so that objects can be build by chaining "With" function invocations.
// If called multiple times, values provided by each call will be appended to the ServiceEndpoints field.
func (b *PowerVSPlatformStatusApplyConfiguration) WithServiceEndpoints(values ...*PowerVSServiceEndpointApplyConfiguration) *PowerVSPlatformStatusApplyConfiguration {
	for i := range values {
		if values[i] == nil {
			panic("nil value passed to WithServiceEndpoints")
		}
		b.ServiceEndpoints = append(b.ServiceEndpoints, *values[i])
	}
	return b
}

// WithCISInstanceCRN sets the CISInstanceCRN field in the declarative configuration to the given value
// and returns the receiver, so that objects can be built by chaining "With" function invocations.
// If called multiple times, the CISInstanceCRN field is set to the value of the last call.
func (b *PowerVSPlatformStatusApplyConfiguration) WithCISInstanceCRN(value string) *PowerVSPlatformStatusApplyConfiguration {
	b.CISInstanceCRN = &value
	return b
}

// WithDNSInstanceCRN sets the DNSInstanceCRN field in the declarative configuration to the given value
// and returns the receiver, so that objects can be built by chaining "With" function invocations.
// If called multiple times, the DNSInstanceCRN field is set to the value of the last call.
func (b *PowerVSPlatformStatusApplyConfiguration) WithDNSInstanceCRN(value string) *PowerVSPlatformStatusApplyConfiguration {
	b.DNSInstanceCRN = &value
	return b
}
