/*
 * IONOS Cloud - Network File Storage API
 *
 * The RESTful API for managing Network File Storage.
 *
 * API version: 0.1.1
 * Contact: support@cloud.ionos.com
 */

// Code generated by OpenAPI Generator (https://openapi-generator.tech); DO NOT EDIT.

package ionoscloud

import (
	"encoding/json"
)

// ClusterConnections struct for ClusterConnections
type ClusterConnections struct {
	// The ID of the datacenter where the Network File Storage cluster is located.
	DatacenterId *string `json:"datacenterId"`
	// The LAN to which the Network File Storage cluster must be connected.
	Lan *string `json:"lan"`
	// The IP address and prefix of the Network File Storage cluster. The IP address can be either IPv4 or IPv6. The IP address has to be given with CIDR notation.
	IpAddress *string `json:"ipAddress"`
}

// NewClusterConnections instantiates a new ClusterConnections object
// This constructor will assign default values to properties that have it defined,
// and makes sure properties required by API are set, but the set of arguments
// will change when the set of required properties is changed
func NewClusterConnections(datacenterId string, lan string, ipAddress string) *ClusterConnections {
	this := ClusterConnections{}

	this.DatacenterId = &datacenterId
	this.Lan = &lan
	this.IpAddress = &ipAddress

	return &this
}

// NewClusterConnectionsWithDefaults instantiates a new ClusterConnections object
// This constructor will only assign default values to properties that have it defined,
// but it doesn't guarantee that properties required by API are set
func NewClusterConnectionsWithDefaults() *ClusterConnections {
	this := ClusterConnections{}
	return &this
}

// GetDatacenterId returns the DatacenterId field value
// If the value is explicit nil, the zero value for string will be returned
func (o *ClusterConnections) GetDatacenterId() *string {
	if o == nil {
		return nil
	}

	return o.DatacenterId

}

// GetDatacenterIdOk returns a tuple with the DatacenterId field value
// and a boolean to check if the value has been set.
// NOTE: If the value is an explicit nil, `nil, true` will be returned
func (o *ClusterConnections) GetDatacenterIdOk() (*string, bool) {
	if o == nil {
		return nil, false
	}

	return o.DatacenterId, true
}

// SetDatacenterId sets field value
func (o *ClusterConnections) SetDatacenterId(v string) {

	o.DatacenterId = &v

}

// HasDatacenterId returns a boolean if a field has been set.
func (o *ClusterConnections) HasDatacenterId() bool {
	if o != nil && o.DatacenterId != nil {
		return true
	}

	return false
}

// GetLan returns the Lan field value
// If the value is explicit nil, the zero value for string will be returned
func (o *ClusterConnections) GetLan() *string {
	if o == nil {
		return nil
	}

	return o.Lan

}

// GetLanOk returns a tuple with the Lan field value
// and a boolean to check if the value has been set.
// NOTE: If the value is an explicit nil, `nil, true` will be returned
func (o *ClusterConnections) GetLanOk() (*string, bool) {
	if o == nil {
		return nil, false
	}

	return o.Lan, true
}

// SetLan sets field value
func (o *ClusterConnections) SetLan(v string) {

	o.Lan = &v

}

// HasLan returns a boolean if a field has been set.
func (o *ClusterConnections) HasLan() bool {
	if o != nil && o.Lan != nil {
		return true
	}

	return false
}

// GetIpAddress returns the IpAddress field value
// If the value is explicit nil, the zero value for string will be returned
func (o *ClusterConnections) GetIpAddress() *string {
	if o == nil {
		return nil
	}

	return o.IpAddress

}

// GetIpAddressOk returns a tuple with the IpAddress field value
// and a boolean to check if the value has been set.
// NOTE: If the value is an explicit nil, `nil, true` will be returned
func (o *ClusterConnections) GetIpAddressOk() (*string, bool) {
	if o == nil {
		return nil, false
	}

	return o.IpAddress, true
}

// SetIpAddress sets field value
func (o *ClusterConnections) SetIpAddress(v string) {

	o.IpAddress = &v

}

// HasIpAddress returns a boolean if a field has been set.
func (o *ClusterConnections) HasIpAddress() bool {
	if o != nil && o.IpAddress != nil {
		return true
	}

	return false
}

func (o ClusterConnections) MarshalJSON() ([]byte, error) {
	toSerialize := map[string]interface{}{}
	if o.DatacenterId != nil {
		toSerialize["datacenterId"] = o.DatacenterId
	}

	if o.Lan != nil {
		toSerialize["lan"] = o.Lan
	}

	if o.IpAddress != nil {
		toSerialize["ipAddress"] = o.IpAddress
	}

	return json.Marshal(toSerialize)
}

type NullableClusterConnections struct {
	value *ClusterConnections
	isSet bool
}

func (v NullableClusterConnections) Get() *ClusterConnections {
	return v.value
}

func (v *NullableClusterConnections) Set(val *ClusterConnections) {
	v.value = val
	v.isSet = true
}

func (v NullableClusterConnections) IsSet() bool {
	return v.isSet
}

func (v *NullableClusterConnections) Unset() {
	v.value = nil
	v.isSet = false
}

func NewNullableClusterConnections(val *ClusterConnections) *NullableClusterConnections {
	return &NullableClusterConnections{value: val, isSet: true}
}

func (v NullableClusterConnections) MarshalJSON() ([]byte, error) {
	return json.Marshal(v.value)
}

func (v *NullableClusterConnections) UnmarshalJSON(src []byte) error {
	v.isSet = true
	return json.Unmarshal(src, &v.value)
}
