/*
TiDB Cloud Console API

TiDB Cloud Console API.

API version: v1beta1
*/

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

package client

import (
	"encoding/json"
	"fmt"
)

// checks if the Dedicatedv1beta1TidbNodeGroup type satisfies the MappedNullable interface at compile time
var _ MappedNullable = &Dedicatedv1beta1TidbNodeGroup{}

// Dedicatedv1beta1TidbNodeGroup struct for Dedicatedv1beta1TidbNodeGroup
type Dedicatedv1beta1TidbNodeGroup struct {
	// The ID of the cluster that the TiDB node group belongs to.  - This field is **optional** when creating a cluster with the default TiDB group.  - This field is **required** when creating a non-default TiDB group.
	ClusterId *string `json:"clusterId,omitempty"`
	// The display name of the TiDB group.
	DisplayName *string `json:"displayName,omitempty"`
	// The endpoints of the TiDB group.
	Endpoints []Dedicatedv1beta1TidbNodeGroupEndpoint `json:"endpoints,omitempty"`
	// Indicates whether this is the default TiDB node group.
	IsDefaultGroup *bool `json:"isDefaultGroup,omitempty"`
	// The resource name of the TiDB group, in the format of `tidbNodeGroups/{tidb_node_group_id}`.
	Name *string `json:"name,omitempty"`
	// The progress of node configuration changes.
	NodeChangingProgress *ClusterNodeChangingProgress `json:"nodeChangingProgress,omitempty"`
	// The number of TiDB nodes in the TiDB group. It must be greater than or equal to `1`.
	NodeCount int32 `json:"nodeCount"`
	// The display name of the node spec of the TiDB group. For example, `8 vCPU, 32 GiB`.
	NodeSpecDisplayName *string `json:"nodeSpecDisplayName,omitempty"`
	// The node spec key of the TiDB group. For example, `8C32G`.
	NodeSpecKey *string `json:"nodeSpecKey,omitempty"`
	// The version tag of the node spec resource. The performance and price of the component may vary based on the version tag.
	NodeSpecVersion *string `json:"nodeSpecVersion,omitempty"`
	// The current state of the TiDB group.
	State *Dedicatedv1beta1TidbNodeGroupState `json:"state,omitempty"`
	// The unique ID of the TiDB group.
	TidbNodeGroupId *string `json:"tidbNodeGroupId,omitempty"`
	// The progress of TiProxy node configuration changes.
	TiproxyNodeChangingProgress *ClusterNodeChangingProgress `json:"tiproxyNodeChangingProgress,omitempty"`
	// Configures TiProxy settings for this TiDB group. If not specified, the default TiProxy settings is used.
	TiproxySetting *Dedicatedv1beta1TidbNodeGroupTiProxySetting `json:"tiproxySetting,omitempty"`
	AdditionalProperties map[string]interface{}
}

type _Dedicatedv1beta1TidbNodeGroup Dedicatedv1beta1TidbNodeGroup

// NewDedicatedv1beta1TidbNodeGroup instantiates a new Dedicatedv1beta1TidbNodeGroup 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 NewDedicatedv1beta1TidbNodeGroup(nodeCount int32) *Dedicatedv1beta1TidbNodeGroup {
	this := Dedicatedv1beta1TidbNodeGroup{}
	this.NodeCount = nodeCount
	return &this
}

// NewDedicatedv1beta1TidbNodeGroupWithDefaults instantiates a new Dedicatedv1beta1TidbNodeGroup 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 NewDedicatedv1beta1TidbNodeGroupWithDefaults() *Dedicatedv1beta1TidbNodeGroup {
	this := Dedicatedv1beta1TidbNodeGroup{}
	return &this
}

// GetClusterId returns the ClusterId field value if set, zero value otherwise.
func (o *Dedicatedv1beta1TidbNodeGroup) GetClusterId() string {
	if o == nil || IsNil(o.ClusterId) {
		var ret string
		return ret
	}
	return *o.ClusterId
}

// GetClusterIdOk returns a tuple with the ClusterId field value if set, nil otherwise
// and a boolean to check if the value has been set.
func (o *Dedicatedv1beta1TidbNodeGroup) GetClusterIdOk() (*string, bool) {
	if o == nil || IsNil(o.ClusterId) {
		return nil, false
	}
	return o.ClusterId, true
}

// HasClusterId returns a boolean if a field has been set.
func (o *Dedicatedv1beta1TidbNodeGroup) HasClusterId() bool {
	if o != nil && !IsNil(o.ClusterId) {
		return true
	}

	return false
}

// SetClusterId gets a reference to the given string and assigns it to the ClusterId field.
func (o *Dedicatedv1beta1TidbNodeGroup) SetClusterId(v string) {
	o.ClusterId = &v
}

// GetDisplayName returns the DisplayName field value if set, zero value otherwise.
func (o *Dedicatedv1beta1TidbNodeGroup) GetDisplayName() string {
	if o == nil || IsNil(o.DisplayName) {
		var ret string
		return ret
	}
	return *o.DisplayName
}

// GetDisplayNameOk returns a tuple with the DisplayName field value if set, nil otherwise
// and a boolean to check if the value has been set.
func (o *Dedicatedv1beta1TidbNodeGroup) GetDisplayNameOk() (*string, bool) {
	if o == nil || IsNil(o.DisplayName) {
		return nil, false
	}
	return o.DisplayName, true
}

// HasDisplayName returns a boolean if a field has been set.
func (o *Dedicatedv1beta1TidbNodeGroup) HasDisplayName() bool {
	if o != nil && !IsNil(o.DisplayName) {
		return true
	}

	return false
}

// SetDisplayName gets a reference to the given string and assigns it to the DisplayName field.
func (o *Dedicatedv1beta1TidbNodeGroup) SetDisplayName(v string) {
	o.DisplayName = &v
}

// GetEndpoints returns the Endpoints field value if set, zero value otherwise.
func (o *Dedicatedv1beta1TidbNodeGroup) GetEndpoints() []Dedicatedv1beta1TidbNodeGroupEndpoint {
	if o == nil || IsNil(o.Endpoints) {
		var ret []Dedicatedv1beta1TidbNodeGroupEndpoint
		return ret
	}
	return o.Endpoints
}

// GetEndpointsOk returns a tuple with the Endpoints field value if set, nil otherwise
// and a boolean to check if the value has been set.
func (o *Dedicatedv1beta1TidbNodeGroup) GetEndpointsOk() ([]Dedicatedv1beta1TidbNodeGroupEndpoint, bool) {
	if o == nil || IsNil(o.Endpoints) {
		return nil, false
	}
	return o.Endpoints, true
}

// HasEndpoints returns a boolean if a field has been set.
func (o *Dedicatedv1beta1TidbNodeGroup) HasEndpoints() bool {
	if o != nil && !IsNil(o.Endpoints) {
		return true
	}

	return false
}

// SetEndpoints gets a reference to the given []Dedicatedv1beta1TidbNodeGroupEndpoint and assigns it to the Endpoints field.
func (o *Dedicatedv1beta1TidbNodeGroup) SetEndpoints(v []Dedicatedv1beta1TidbNodeGroupEndpoint) {
	o.Endpoints = v
}

// GetIsDefaultGroup returns the IsDefaultGroup field value if set, zero value otherwise.
func (o *Dedicatedv1beta1TidbNodeGroup) GetIsDefaultGroup() bool {
	if o == nil || IsNil(o.IsDefaultGroup) {
		var ret bool
		return ret
	}
	return *o.IsDefaultGroup
}

// GetIsDefaultGroupOk returns a tuple with the IsDefaultGroup field value if set, nil otherwise
// and a boolean to check if the value has been set.
func (o *Dedicatedv1beta1TidbNodeGroup) GetIsDefaultGroupOk() (*bool, bool) {
	if o == nil || IsNil(o.IsDefaultGroup) {
		return nil, false
	}
	return o.IsDefaultGroup, true
}

// HasIsDefaultGroup returns a boolean if a field has been set.
func (o *Dedicatedv1beta1TidbNodeGroup) HasIsDefaultGroup() bool {
	if o != nil && !IsNil(o.IsDefaultGroup) {
		return true
	}

	return false
}

// SetIsDefaultGroup gets a reference to the given bool and assigns it to the IsDefaultGroup field.
func (o *Dedicatedv1beta1TidbNodeGroup) SetIsDefaultGroup(v bool) {
	o.IsDefaultGroup = &v
}

// GetName returns the Name field value if set, zero value otherwise.
func (o *Dedicatedv1beta1TidbNodeGroup) GetName() string {
	if o == nil || IsNil(o.Name) {
		var ret string
		return ret
	}
	return *o.Name
}

// GetNameOk returns a tuple with the Name field value if set, nil otherwise
// and a boolean to check if the value has been set.
func (o *Dedicatedv1beta1TidbNodeGroup) GetNameOk() (*string, bool) {
	if o == nil || IsNil(o.Name) {
		return nil, false
	}
	return o.Name, true
}

// HasName returns a boolean if a field has been set.
func (o *Dedicatedv1beta1TidbNodeGroup) HasName() bool {
	if o != nil && !IsNil(o.Name) {
		return true
	}

	return false
}

// SetName gets a reference to the given string and assigns it to the Name field.
func (o *Dedicatedv1beta1TidbNodeGroup) SetName(v string) {
	o.Name = &v
}

// GetNodeChangingProgress returns the NodeChangingProgress field value if set, zero value otherwise.
func (o *Dedicatedv1beta1TidbNodeGroup) GetNodeChangingProgress() ClusterNodeChangingProgress {
	if o == nil || IsNil(o.NodeChangingProgress) {
		var ret ClusterNodeChangingProgress
		return ret
	}
	return *o.NodeChangingProgress
}

// GetNodeChangingProgressOk returns a tuple with the NodeChangingProgress field value if set, nil otherwise
// and a boolean to check if the value has been set.
func (o *Dedicatedv1beta1TidbNodeGroup) GetNodeChangingProgressOk() (*ClusterNodeChangingProgress, bool) {
	if o == nil || IsNil(o.NodeChangingProgress) {
		return nil, false
	}
	return o.NodeChangingProgress, true
}

// HasNodeChangingProgress returns a boolean if a field has been set.
func (o *Dedicatedv1beta1TidbNodeGroup) HasNodeChangingProgress() bool {
	if o != nil && !IsNil(o.NodeChangingProgress) {
		return true
	}

	return false
}

// SetNodeChangingProgress gets a reference to the given ClusterNodeChangingProgress and assigns it to the NodeChangingProgress field.
func (o *Dedicatedv1beta1TidbNodeGroup) SetNodeChangingProgress(v ClusterNodeChangingProgress) {
	o.NodeChangingProgress = &v
}

// GetNodeCount returns the NodeCount field value
func (o *Dedicatedv1beta1TidbNodeGroup) GetNodeCount() int32 {
	if o == nil {
		var ret int32
		return ret
	}

	return o.NodeCount
}

// GetNodeCountOk returns a tuple with the NodeCount field value
// and a boolean to check if the value has been set.
func (o *Dedicatedv1beta1TidbNodeGroup) GetNodeCountOk() (*int32, bool) {
	if o == nil {
		return nil, false
	}
	return &o.NodeCount, true
}

// SetNodeCount sets field value
func (o *Dedicatedv1beta1TidbNodeGroup) SetNodeCount(v int32) {
	o.NodeCount = v
}

// GetNodeSpecDisplayName returns the NodeSpecDisplayName field value if set, zero value otherwise.
func (o *Dedicatedv1beta1TidbNodeGroup) GetNodeSpecDisplayName() string {
	if o == nil || IsNil(o.NodeSpecDisplayName) {
		var ret string
		return ret
	}
	return *o.NodeSpecDisplayName
}

// GetNodeSpecDisplayNameOk returns a tuple with the NodeSpecDisplayName field value if set, nil otherwise
// and a boolean to check if the value has been set.
func (o *Dedicatedv1beta1TidbNodeGroup) GetNodeSpecDisplayNameOk() (*string, bool) {
	if o == nil || IsNil(o.NodeSpecDisplayName) {
		return nil, false
	}
	return o.NodeSpecDisplayName, true
}

// HasNodeSpecDisplayName returns a boolean if a field has been set.
func (o *Dedicatedv1beta1TidbNodeGroup) HasNodeSpecDisplayName() bool {
	if o != nil && !IsNil(o.NodeSpecDisplayName) {
		return true
	}

	return false
}

// SetNodeSpecDisplayName gets a reference to the given string and assigns it to the NodeSpecDisplayName field.
func (o *Dedicatedv1beta1TidbNodeGroup) SetNodeSpecDisplayName(v string) {
	o.NodeSpecDisplayName = &v
}

// GetNodeSpecKey returns the NodeSpecKey field value if set, zero value otherwise.
func (o *Dedicatedv1beta1TidbNodeGroup) GetNodeSpecKey() string {
	if o == nil || IsNil(o.NodeSpecKey) {
		var ret string
		return ret
	}
	return *o.NodeSpecKey
}

// GetNodeSpecKeyOk returns a tuple with the NodeSpecKey field value if set, nil otherwise
// and a boolean to check if the value has been set.
func (o *Dedicatedv1beta1TidbNodeGroup) GetNodeSpecKeyOk() (*string, bool) {
	if o == nil || IsNil(o.NodeSpecKey) {
		return nil, false
	}
	return o.NodeSpecKey, true
}

// HasNodeSpecKey returns a boolean if a field has been set.
func (o *Dedicatedv1beta1TidbNodeGroup) HasNodeSpecKey() bool {
	if o != nil && !IsNil(o.NodeSpecKey) {
		return true
	}

	return false
}

// SetNodeSpecKey gets a reference to the given string and assigns it to the NodeSpecKey field.
func (o *Dedicatedv1beta1TidbNodeGroup) SetNodeSpecKey(v string) {
	o.NodeSpecKey = &v
}

// GetNodeSpecVersion returns the NodeSpecVersion field value if set, zero value otherwise.
func (o *Dedicatedv1beta1TidbNodeGroup) GetNodeSpecVersion() string {
	if o == nil || IsNil(o.NodeSpecVersion) {
		var ret string
		return ret
	}
	return *o.NodeSpecVersion
}

// GetNodeSpecVersionOk returns a tuple with the NodeSpecVersion field value if set, nil otherwise
// and a boolean to check if the value has been set.
func (o *Dedicatedv1beta1TidbNodeGroup) GetNodeSpecVersionOk() (*string, bool) {
	if o == nil || IsNil(o.NodeSpecVersion) {
		return nil, false
	}
	return o.NodeSpecVersion, true
}

// HasNodeSpecVersion returns a boolean if a field has been set.
func (o *Dedicatedv1beta1TidbNodeGroup) HasNodeSpecVersion() bool {
	if o != nil && !IsNil(o.NodeSpecVersion) {
		return true
	}

	return false
}

// SetNodeSpecVersion gets a reference to the given string and assigns it to the NodeSpecVersion field.
func (o *Dedicatedv1beta1TidbNodeGroup) SetNodeSpecVersion(v string) {
	o.NodeSpecVersion = &v
}

// GetState returns the State field value if set, zero value otherwise.
func (o *Dedicatedv1beta1TidbNodeGroup) GetState() Dedicatedv1beta1TidbNodeGroupState {
	if o == nil || IsNil(o.State) {
		var ret Dedicatedv1beta1TidbNodeGroupState
		return ret
	}
	return *o.State
}

// GetStateOk returns a tuple with the State field value if set, nil otherwise
// and a boolean to check if the value has been set.
func (o *Dedicatedv1beta1TidbNodeGroup) GetStateOk() (*Dedicatedv1beta1TidbNodeGroupState, bool) {
	if o == nil || IsNil(o.State) {
		return nil, false
	}
	return o.State, true
}

// HasState returns a boolean if a field has been set.
func (o *Dedicatedv1beta1TidbNodeGroup) HasState() bool {
	if o != nil && !IsNil(o.State) {
		return true
	}

	return false
}

// SetState gets a reference to the given Dedicatedv1beta1TidbNodeGroupState and assigns it to the State field.
func (o *Dedicatedv1beta1TidbNodeGroup) SetState(v Dedicatedv1beta1TidbNodeGroupState) {
	o.State = &v
}

// GetTidbNodeGroupId returns the TidbNodeGroupId field value if set, zero value otherwise.
func (o *Dedicatedv1beta1TidbNodeGroup) GetTidbNodeGroupId() string {
	if o == nil || IsNil(o.TidbNodeGroupId) {
		var ret string
		return ret
	}
	return *o.TidbNodeGroupId
}

// GetTidbNodeGroupIdOk returns a tuple with the TidbNodeGroupId field value if set, nil otherwise
// and a boolean to check if the value has been set.
func (o *Dedicatedv1beta1TidbNodeGroup) GetTidbNodeGroupIdOk() (*string, bool) {
	if o == nil || IsNil(o.TidbNodeGroupId) {
		return nil, false
	}
	return o.TidbNodeGroupId, true
}

// HasTidbNodeGroupId returns a boolean if a field has been set.
func (o *Dedicatedv1beta1TidbNodeGroup) HasTidbNodeGroupId() bool {
	if o != nil && !IsNil(o.TidbNodeGroupId) {
		return true
	}

	return false
}

// SetTidbNodeGroupId gets a reference to the given string and assigns it to the TidbNodeGroupId field.
func (o *Dedicatedv1beta1TidbNodeGroup) SetTidbNodeGroupId(v string) {
	o.TidbNodeGroupId = &v
}

// GetTiproxyNodeChangingProgress returns the TiproxyNodeChangingProgress field value if set, zero value otherwise.
func (o *Dedicatedv1beta1TidbNodeGroup) GetTiproxyNodeChangingProgress() ClusterNodeChangingProgress {
	if o == nil || IsNil(o.TiproxyNodeChangingProgress) {
		var ret ClusterNodeChangingProgress
		return ret
	}
	return *o.TiproxyNodeChangingProgress
}

// GetTiproxyNodeChangingProgressOk returns a tuple with the TiproxyNodeChangingProgress field value if set, nil otherwise
// and a boolean to check if the value has been set.
func (o *Dedicatedv1beta1TidbNodeGroup) GetTiproxyNodeChangingProgressOk() (*ClusterNodeChangingProgress, bool) {
	if o == nil || IsNil(o.TiproxyNodeChangingProgress) {
		return nil, false
	}
	return o.TiproxyNodeChangingProgress, true
}

// HasTiproxyNodeChangingProgress returns a boolean if a field has been set.
func (o *Dedicatedv1beta1TidbNodeGroup) HasTiproxyNodeChangingProgress() bool {
	if o != nil && !IsNil(o.TiproxyNodeChangingProgress) {
		return true
	}

	return false
}

// SetTiproxyNodeChangingProgress gets a reference to the given ClusterNodeChangingProgress and assigns it to the TiproxyNodeChangingProgress field.
func (o *Dedicatedv1beta1TidbNodeGroup) SetTiproxyNodeChangingProgress(v ClusterNodeChangingProgress) {
	o.TiproxyNodeChangingProgress = &v
}

// GetTiproxySetting returns the TiproxySetting field value if set, zero value otherwise.
func (o *Dedicatedv1beta1TidbNodeGroup) GetTiproxySetting() Dedicatedv1beta1TidbNodeGroupTiProxySetting {
	if o == nil || IsNil(o.TiproxySetting) {
		var ret Dedicatedv1beta1TidbNodeGroupTiProxySetting
		return ret
	}
	return *o.TiproxySetting
}

// GetTiproxySettingOk returns a tuple with the TiproxySetting field value if set, nil otherwise
// and a boolean to check if the value has been set.
func (o *Dedicatedv1beta1TidbNodeGroup) GetTiproxySettingOk() (*Dedicatedv1beta1TidbNodeGroupTiProxySetting, bool) {
	if o == nil || IsNil(o.TiproxySetting) {
		return nil, false
	}
	return o.TiproxySetting, true
}

// HasTiproxySetting returns a boolean if a field has been set.
func (o *Dedicatedv1beta1TidbNodeGroup) HasTiproxySetting() bool {
	if o != nil && !IsNil(o.TiproxySetting) {
		return true
	}

	return false
}

// SetTiproxySetting gets a reference to the given Dedicatedv1beta1TidbNodeGroupTiProxySetting and assigns it to the TiproxySetting field.
func (o *Dedicatedv1beta1TidbNodeGroup) SetTiproxySetting(v Dedicatedv1beta1TidbNodeGroupTiProxySetting) {
	o.TiproxySetting = &v
}

func (o Dedicatedv1beta1TidbNodeGroup) MarshalJSON() ([]byte, error) {
	toSerialize,err := o.ToMap()
	if err != nil {
		return []byte{}, err
	}
	return json.Marshal(toSerialize)
}

func (o Dedicatedv1beta1TidbNodeGroup) ToMap() (map[string]interface{}, error) {
	toSerialize := map[string]interface{}{}
	if !IsNil(o.ClusterId) {
		toSerialize["clusterId"] = o.ClusterId
	}
	if !IsNil(o.DisplayName) {
		toSerialize["displayName"] = o.DisplayName
	}
	if !IsNil(o.Endpoints) {
		toSerialize["endpoints"] = o.Endpoints
	}
	if !IsNil(o.IsDefaultGroup) {
		toSerialize["isDefaultGroup"] = o.IsDefaultGroup
	}
	if !IsNil(o.Name) {
		toSerialize["name"] = o.Name
	}
	if !IsNil(o.NodeChangingProgress) {
		toSerialize["nodeChangingProgress"] = o.NodeChangingProgress
	}
	toSerialize["nodeCount"] = o.NodeCount
	if !IsNil(o.NodeSpecDisplayName) {
		toSerialize["nodeSpecDisplayName"] = o.NodeSpecDisplayName
	}
	if !IsNil(o.NodeSpecKey) {
		toSerialize["nodeSpecKey"] = o.NodeSpecKey
	}
	if !IsNil(o.NodeSpecVersion) {
		toSerialize["nodeSpecVersion"] = o.NodeSpecVersion
	}
	if !IsNil(o.State) {
		toSerialize["state"] = o.State
	}
	if !IsNil(o.TidbNodeGroupId) {
		toSerialize["tidbNodeGroupId"] = o.TidbNodeGroupId
	}
	if !IsNil(o.TiproxyNodeChangingProgress) {
		toSerialize["tiproxyNodeChangingProgress"] = o.TiproxyNodeChangingProgress
	}
	if !IsNil(o.TiproxySetting) {
		toSerialize["tiproxySetting"] = o.TiproxySetting
	}

	for key, value := range o.AdditionalProperties {
		toSerialize[key] = value
	}

	return toSerialize, nil
}

func (o *Dedicatedv1beta1TidbNodeGroup) UnmarshalJSON(data []byte) (err error) {
	// This validates that all required properties are included in the JSON object
	// by unmarshalling the object into a generic map with string keys and checking
	// that every required field exists as a key in the generic map.
	requiredProperties := []string{
		"nodeCount",
	}

	allProperties := make(map[string]interface{})

	err = json.Unmarshal(data, &allProperties)

	if err != nil {
		return err;
	}

	for _, requiredProperty := range(requiredProperties) {
		if _, exists := allProperties[requiredProperty]; !exists {
			return fmt.Errorf("no value given for required property %v", requiredProperty)
		}
	}

	varDedicatedv1beta1TidbNodeGroup := _Dedicatedv1beta1TidbNodeGroup{}

	err = json.Unmarshal(data, &varDedicatedv1beta1TidbNodeGroup)

	if err != nil {
		return err
	}

	*o = Dedicatedv1beta1TidbNodeGroup(varDedicatedv1beta1TidbNodeGroup)

	additionalProperties := make(map[string]interface{})

	if err = json.Unmarshal(data, &additionalProperties); err == nil {
		delete(additionalProperties, "clusterId")
		delete(additionalProperties, "displayName")
		delete(additionalProperties, "endpoints")
		delete(additionalProperties, "isDefaultGroup")
		delete(additionalProperties, "name")
		delete(additionalProperties, "nodeChangingProgress")
		delete(additionalProperties, "nodeCount")
		delete(additionalProperties, "nodeSpecDisplayName")
		delete(additionalProperties, "nodeSpecKey")
		delete(additionalProperties, "nodeSpecVersion")
		delete(additionalProperties, "state")
		delete(additionalProperties, "tidbNodeGroupId")
		delete(additionalProperties, "tiproxyNodeChangingProgress")
		delete(additionalProperties, "tiproxySetting")
		o.AdditionalProperties = additionalProperties
	}

	return err
}

type NullableDedicatedv1beta1TidbNodeGroup struct {
	value *Dedicatedv1beta1TidbNodeGroup
	isSet bool
}

func (v NullableDedicatedv1beta1TidbNodeGroup) Get() *Dedicatedv1beta1TidbNodeGroup {
	return v.value
}

func (v *NullableDedicatedv1beta1TidbNodeGroup) Set(val *Dedicatedv1beta1TidbNodeGroup) {
	v.value = val
	v.isSet = true
}

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

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

func NewNullableDedicatedv1beta1TidbNodeGroup(val *Dedicatedv1beta1TidbNodeGroup) *NullableDedicatedv1beta1TidbNodeGroup {
	return &NullableDedicatedv1beta1TidbNodeGroup{value: val, isSet: true}
}

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

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


