github.com/cloudwan/edgelq-sdk@v1.15.4/devices/resources/v1/provisioning_policy/provisioning_policy.pb.object_ext.go (about)

     1  // Code generated by protoc-gen-goten-object
     2  // File: edgelq/devices/proto/v1/provisioning_policy.proto
     3  // DO NOT EDIT!!!
     4  
     5  package provisioning_policy
     6  
     7  import (
     8  	"fmt"
     9  	"sort"
    10  
    11  	"google.golang.org/protobuf/proto"
    12  	googlefieldmaskpb "google.golang.org/protobuf/types/known/fieldmaskpb"
    13  
    14  	gotenobject "github.com/cloudwan/goten-sdk/runtime/object"
    15  )
    16  
    17  // proto imports
    18  import (
    19  	device "github.com/cloudwan/edgelq-sdk/devices/resources/v1/device"
    20  	project "github.com/cloudwan/edgelq-sdk/devices/resources/v1/project"
    21  	iam_condition "github.com/cloudwan/edgelq-sdk/iam/resources/v1/condition"
    22  	iam_role "github.com/cloudwan/edgelq-sdk/iam/resources/v1/role"
    23  	iam_service_account "github.com/cloudwan/edgelq-sdk/iam/resources/v1/service_account"
    24  	meta "github.com/cloudwan/goten-sdk/types/meta"
    25  	structpb "google.golang.org/protobuf/types/known/structpb"
    26  )
    27  
    28  // ensure the imports are used
    29  var (
    30  	_ = new(fmt.Stringer)
    31  	_ = new(sort.Interface)
    32  
    33  	_ = new(proto.Message)
    34  	_ = googlefieldmaskpb.FieldMask{}
    35  
    36  	_ = new(gotenobject.FieldPath)
    37  )
    38  
    39  // make sure we're using proto imports
    40  var (
    41  	_ = &device.Device{}
    42  	_ = &project.Project{}
    43  	_ = &iam_condition.Condition{}
    44  	_ = &iam_role.Role{}
    45  	_ = &iam_service_account.ServiceAccount{}
    46  	_ = &structpb.Struct{}
    47  	_ = &meta.Meta{}
    48  )
    49  
    50  func (o *ProvisioningPolicy) GotenObjectExt() {}
    51  
    52  func (o *ProvisioningPolicy) MakeFullFieldMask() *ProvisioningPolicy_FieldMask {
    53  	return FullProvisioningPolicy_FieldMask()
    54  }
    55  
    56  func (o *ProvisioningPolicy) MakeRawFullFieldMask() gotenobject.FieldMask {
    57  	return FullProvisioningPolicy_FieldMask()
    58  }
    59  
    60  func (o *ProvisioningPolicy) MakeDiffFieldMask(other *ProvisioningPolicy) *ProvisioningPolicy_FieldMask {
    61  	if o == nil && other == nil {
    62  		return &ProvisioningPolicy_FieldMask{}
    63  	}
    64  	if o == nil || other == nil {
    65  		return FullProvisioningPolicy_FieldMask()
    66  	}
    67  
    68  	res := &ProvisioningPolicy_FieldMask{}
    69  	if o.GetName().String() != other.GetName().String() {
    70  		res.Paths = append(res.Paths, &ProvisioningPolicy_FieldTerminalPath{selector: ProvisioningPolicy_FieldPathSelectorName})
    71  	}
    72  	{
    73  		subMask := o.GetMetadata().MakeDiffFieldMask(other.GetMetadata())
    74  		if subMask.IsFull() {
    75  			res.Paths = append(res.Paths, &ProvisioningPolicy_FieldTerminalPath{selector: ProvisioningPolicy_FieldPathSelectorMetadata})
    76  		} else {
    77  			for _, subpath := range subMask.Paths {
    78  				res.Paths = append(res.Paths, &ProvisioningPolicy_FieldSubPath{selector: ProvisioningPolicy_FieldPathSelectorMetadata, subPath: subpath})
    79  			}
    80  		}
    81  	}
    82  	if o.GetDisplayName() != other.GetDisplayName() {
    83  		res.Paths = append(res.Paths, &ProvisioningPolicy_FieldTerminalPath{selector: ProvisioningPolicy_FieldPathSelectorDisplayName})
    84  	}
    85  	if o.GetDescription() != other.GetDescription() {
    86  		res.Paths = append(res.Paths, &ProvisioningPolicy_FieldTerminalPath{selector: ProvisioningPolicy_FieldPathSelectorDescription})
    87  	}
    88  	{
    89  		subMask := o.GetSpec().MakeDiffFieldMask(other.GetSpec())
    90  		if subMask.IsFull() {
    91  			res.Paths = append(res.Paths, &ProvisioningPolicy_FieldTerminalPath{selector: ProvisioningPolicy_FieldPathSelectorSpec})
    92  		} else {
    93  			for _, subpath := range subMask.Paths {
    94  				res.Paths = append(res.Paths, &ProvisioningPolicy_FieldSubPath{selector: ProvisioningPolicy_FieldPathSelectorSpec, subPath: subpath})
    95  			}
    96  		}
    97  	}
    98  	{
    99  		subMask := o.GetStatus().MakeDiffFieldMask(other.GetStatus())
   100  		if subMask.IsFull() {
   101  			res.Paths = append(res.Paths, &ProvisioningPolicy_FieldTerminalPath{selector: ProvisioningPolicy_FieldPathSelectorStatus})
   102  		} else {
   103  			for _, subpath := range subMask.Paths {
   104  				res.Paths = append(res.Paths, &ProvisioningPolicy_FieldSubPath{selector: ProvisioningPolicy_FieldPathSelectorStatus, subPath: subpath})
   105  			}
   106  		}
   107  	}
   108  	return res
   109  }
   110  
   111  func (o *ProvisioningPolicy) MakeRawDiffFieldMask(other gotenobject.GotenObjectExt) gotenobject.FieldMask {
   112  	return o.MakeDiffFieldMask(other.(*ProvisioningPolicy))
   113  }
   114  
   115  func (o *ProvisioningPolicy) Clone() *ProvisioningPolicy {
   116  	if o == nil {
   117  		return nil
   118  	}
   119  	result := &ProvisioningPolicy{}
   120  	if o.Name == nil {
   121  		result.Name = nil
   122  	} else if data, err := o.Name.ProtoString(); err != nil {
   123  		panic(err)
   124  	} else {
   125  		result.Name = &Name{}
   126  		if err := result.Name.ParseProtoString(data); err != nil {
   127  			panic(err)
   128  		}
   129  	}
   130  	result.Metadata = o.Metadata.Clone()
   131  	result.DisplayName = o.DisplayName
   132  	result.Description = o.Description
   133  	result.Spec = o.Spec.Clone()
   134  	result.Status = o.Status.Clone()
   135  	return result
   136  }
   137  
   138  func (o *ProvisioningPolicy) CloneRaw() gotenobject.GotenObjectExt {
   139  	return o.Clone()
   140  }
   141  
   142  func (o *ProvisioningPolicy) Merge(source *ProvisioningPolicy) {
   143  	if source.GetName() != nil {
   144  		if data, err := source.GetName().ProtoString(); err != nil {
   145  			panic(err)
   146  		} else {
   147  			o.Name = &Name{}
   148  			if err := o.Name.ParseProtoString(data); err != nil {
   149  				panic(err)
   150  			}
   151  		}
   152  	} else {
   153  		o.Name = nil
   154  	}
   155  	if source.GetMetadata() != nil {
   156  		if o.Metadata == nil {
   157  			o.Metadata = new(meta.Meta)
   158  		}
   159  		o.Metadata.Merge(source.GetMetadata())
   160  	}
   161  	o.DisplayName = source.GetDisplayName()
   162  	o.Description = source.GetDescription()
   163  	if source.GetSpec() != nil {
   164  		if o.Spec == nil {
   165  			o.Spec = new(ProvisioningPolicy_Spec)
   166  		}
   167  		o.Spec.Merge(source.GetSpec())
   168  	}
   169  	if source.GetStatus() != nil {
   170  		if o.Status == nil {
   171  			o.Status = new(ProvisioningPolicy_Status)
   172  		}
   173  		o.Status.Merge(source.GetStatus())
   174  	}
   175  }
   176  
   177  func (o *ProvisioningPolicy) MergeRaw(source gotenobject.GotenObjectExt) {
   178  	o.Merge(source.(*ProvisioningPolicy))
   179  }
   180  
   181  func (o *ProvisioningPolicy_Spec) GotenObjectExt() {}
   182  
   183  func (o *ProvisioningPolicy_Spec) MakeFullFieldMask() *ProvisioningPolicy_Spec_FieldMask {
   184  	return FullProvisioningPolicy_Spec_FieldMask()
   185  }
   186  
   187  func (o *ProvisioningPolicy_Spec) MakeRawFullFieldMask() gotenobject.FieldMask {
   188  	return FullProvisioningPolicy_Spec_FieldMask()
   189  }
   190  
   191  func (o *ProvisioningPolicy_Spec) MakeDiffFieldMask(other *ProvisioningPolicy_Spec) *ProvisioningPolicy_Spec_FieldMask {
   192  	if o == nil && other == nil {
   193  		return &ProvisioningPolicy_Spec_FieldMask{}
   194  	}
   195  	if o == nil || other == nil {
   196  		return FullProvisioningPolicy_Spec_FieldMask()
   197  	}
   198  
   199  	res := &ProvisioningPolicy_Spec_FieldMask{}
   200  	if o.GetMode() != other.GetMode() {
   201  		res.Paths = append(res.Paths, &ProvisioningPolicySpec_FieldTerminalPath{selector: ProvisioningPolicySpec_FieldPathSelectorMode})
   202  	}
   203  	if o.GetServiceAccount().String() != other.GetServiceAccount().String() {
   204  		res.Paths = append(res.Paths, &ProvisioningPolicySpec_FieldTerminalPath{selector: ProvisioningPolicySpec_FieldPathSelectorServiceAccount})
   205  	}
   206  	if o.GetDeviceNameFormat() != other.GetDeviceNameFormat() {
   207  		res.Paths = append(res.Paths, &ProvisioningPolicySpec_FieldTerminalPath{selector: ProvisioningPolicySpec_FieldPathSelectorDeviceNameFormat})
   208  	}
   209  	if o.GetDeviceDisplayNameFormat() != other.GetDeviceDisplayNameFormat() {
   210  		res.Paths = append(res.Paths, &ProvisioningPolicySpec_FieldTerminalPath{selector: ProvisioningPolicySpec_FieldPathSelectorDeviceDisplayNameFormat})
   211  	}
   212  
   213  	if len(o.GetLabels()) == len(other.GetLabels()) {
   214  		for i, lValue := range o.GetLabels() {
   215  			rValue := other.GetLabels()[i]
   216  			if lValue != rValue {
   217  				res.Paths = append(res.Paths, &ProvisioningPolicySpec_FieldTerminalPath{selector: ProvisioningPolicySpec_FieldPathSelectorLabels})
   218  				break
   219  			}
   220  		}
   221  	} else {
   222  		res.Paths = append(res.Paths, &ProvisioningPolicySpec_FieldTerminalPath{selector: ProvisioningPolicySpec_FieldPathSelectorLabels})
   223  	}
   224  	{
   225  		subMask := o.GetTemplate().MakeDiffFieldMask(other.GetTemplate())
   226  		if subMask.IsFull() {
   227  			res.Paths = append(res.Paths, &ProvisioningPolicySpec_FieldTerminalPath{selector: ProvisioningPolicySpec_FieldPathSelectorTemplate})
   228  		} else {
   229  			for _, subpath := range subMask.Paths {
   230  				res.Paths = append(res.Paths, &ProvisioningPolicySpec_FieldSubPath{selector: ProvisioningPolicySpec_FieldPathSelectorTemplate, subPath: subpath})
   231  			}
   232  		}
   233  	}
   234  
   235  	if len(o.GetIdentityFieldPaths()) == len(other.GetIdentityFieldPaths()) {
   236  		for i, lValue := range o.GetIdentityFieldPaths() {
   237  			rValue := other.GetIdentityFieldPaths()[i]
   238  			if lValue != rValue {
   239  				res.Paths = append(res.Paths, &ProvisioningPolicySpec_FieldTerminalPath{selector: ProvisioningPolicySpec_FieldPathSelectorIdentityFieldPaths})
   240  				break
   241  			}
   242  		}
   243  	} else {
   244  		res.Paths = append(res.Paths, &ProvisioningPolicySpec_FieldTerminalPath{selector: ProvisioningPolicySpec_FieldPathSelectorIdentityFieldPaths})
   245  	}
   246  	if o.GetRole().String() != other.GetRole().String() {
   247  		res.Paths = append(res.Paths, &ProvisioningPolicySpec_FieldTerminalPath{selector: ProvisioningPolicySpec_FieldPathSelectorRole})
   248  	}
   249  
   250  	if len(o.GetScopeParams()) == len(other.GetScopeParams()) {
   251  		for i, lValue := range o.GetScopeParams() {
   252  			rValue := other.GetScopeParams()[i]
   253  			if len(lValue.MakeDiffFieldMask(rValue).Paths) > 0 {
   254  				res.Paths = append(res.Paths, &ProvisioningPolicySpec_FieldTerminalPath{selector: ProvisioningPolicySpec_FieldPathSelectorScopeParams})
   255  				break
   256  			}
   257  		}
   258  	} else {
   259  		res.Paths = append(res.Paths, &ProvisioningPolicySpec_FieldTerminalPath{selector: ProvisioningPolicySpec_FieldPathSelectorScopeParams})
   260  	}
   261  	if o.GetCondition().String() != other.GetCondition().String() {
   262  		res.Paths = append(res.Paths, &ProvisioningPolicySpec_FieldTerminalPath{selector: ProvisioningPolicySpec_FieldPathSelectorCondition})
   263  	}
   264  	if !proto.Equal(o.GetConditionParams(), other.GetConditionParams()) {
   265  		res.Paths = append(res.Paths, &ProvisioningPolicySpec_FieldTerminalPath{selector: ProvisioningPolicySpec_FieldPathSelectorConditionParams})
   266  	}
   267  
   268  	if len(o.GetExtraConditions()) == len(other.GetExtraConditions()) {
   269  		for i, lValue := range o.GetExtraConditions() {
   270  			rValue := other.GetExtraConditions()[i]
   271  			if len(lValue.MakeDiffFieldMask(rValue).Paths) > 0 {
   272  				res.Paths = append(res.Paths, &ProvisioningPolicySpec_FieldTerminalPath{selector: ProvisioningPolicySpec_FieldPathSelectorExtraConditions})
   273  				break
   274  			}
   275  		}
   276  	} else {
   277  		res.Paths = append(res.Paths, &ProvisioningPolicySpec_FieldTerminalPath{selector: ProvisioningPolicySpec_FieldPathSelectorExtraConditions})
   278  	}
   279  	return res
   280  }
   281  
   282  func (o *ProvisioningPolicy_Spec) MakeRawDiffFieldMask(other gotenobject.GotenObjectExt) gotenobject.FieldMask {
   283  	return o.MakeDiffFieldMask(other.(*ProvisioningPolicy_Spec))
   284  }
   285  
   286  func (o *ProvisioningPolicy_Spec) Clone() *ProvisioningPolicy_Spec {
   287  	if o == nil {
   288  		return nil
   289  	}
   290  	result := &ProvisioningPolicy_Spec{}
   291  	result.Mode = o.Mode
   292  	if o.ServiceAccount == nil {
   293  		result.ServiceAccount = nil
   294  	} else if data, err := o.ServiceAccount.ProtoString(); err != nil {
   295  		panic(err)
   296  	} else {
   297  		result.ServiceAccount = &iam_service_account.Reference{}
   298  		if err := result.ServiceAccount.ParseProtoString(data); err != nil {
   299  			panic(err)
   300  		}
   301  	}
   302  	result.DeviceNameFormat = o.DeviceNameFormat
   303  	result.DeviceDisplayNameFormat = o.DeviceDisplayNameFormat
   304  	result.Labels = map[string]string{}
   305  	for key, sourceValue := range o.Labels {
   306  		result.Labels[key] = sourceValue
   307  	}
   308  	result.Template = o.Template.Clone()
   309  	result.IdentityFieldPaths = make([]string, len(o.IdentityFieldPaths))
   310  	for i, sourceValue := range o.IdentityFieldPaths {
   311  		result.IdentityFieldPaths[i] = sourceValue
   312  	}
   313  	if o.Role == nil {
   314  		result.Role = nil
   315  	} else if data, err := o.Role.ProtoString(); err != nil {
   316  		panic(err)
   317  	} else {
   318  		result.Role = &iam_role.Reference{}
   319  		if err := result.Role.ParseProtoString(data); err != nil {
   320  			panic(err)
   321  		}
   322  	}
   323  	result.ScopeParams = make([]*iam_role.ScopeParam, len(o.ScopeParams))
   324  	for i, sourceValue := range o.ScopeParams {
   325  		result.ScopeParams[i] = sourceValue.Clone()
   326  	}
   327  	if o.Condition == nil {
   328  		result.Condition = nil
   329  	} else if data, err := o.Condition.ProtoString(); err != nil {
   330  		panic(err)
   331  	} else {
   332  		result.Condition = &iam_condition.Reference{}
   333  		if err := result.Condition.ParseProtoString(data); err != nil {
   334  			panic(err)
   335  		}
   336  	}
   337  	result.ConditionParams = proto.Clone(o.ConditionParams).(*structpb.Struct)
   338  	result.ExtraConditions = make([]*iam_condition.ExecutableCondition, len(o.ExtraConditions))
   339  	for i, sourceValue := range o.ExtraConditions {
   340  		result.ExtraConditions[i] = sourceValue.Clone()
   341  	}
   342  	return result
   343  }
   344  
   345  func (o *ProvisioningPolicy_Spec) CloneRaw() gotenobject.GotenObjectExt {
   346  	return o.Clone()
   347  }
   348  
   349  func (o *ProvisioningPolicy_Spec) Merge(source *ProvisioningPolicy_Spec) {
   350  	o.Mode = source.GetMode()
   351  	if source.GetServiceAccount() != nil {
   352  		if data, err := source.GetServiceAccount().ProtoString(); err != nil {
   353  			panic(err)
   354  		} else {
   355  			o.ServiceAccount = &iam_service_account.Reference{}
   356  			if err := o.ServiceAccount.ParseProtoString(data); err != nil {
   357  				panic(err)
   358  			}
   359  		}
   360  	} else {
   361  		o.ServiceAccount = nil
   362  	}
   363  	o.DeviceNameFormat = source.GetDeviceNameFormat()
   364  	o.DeviceDisplayNameFormat = source.GetDeviceDisplayNameFormat()
   365  	if source.GetLabels() != nil {
   366  		if o.Labels == nil {
   367  			o.Labels = make(map[string]string, len(source.GetLabels()))
   368  		}
   369  		for key, sourceValue := range source.GetLabels() {
   370  			o.Labels[key] = sourceValue
   371  		}
   372  	}
   373  	if source.GetTemplate() != nil {
   374  		if o.Template == nil {
   375  			o.Template = new(ProvisioningPolicy_Spec_Template)
   376  		}
   377  		o.Template.Merge(source.GetTemplate())
   378  	}
   379  	for _, sourceValue := range source.GetIdentityFieldPaths() {
   380  		exists := false
   381  		for _, currentValue := range o.IdentityFieldPaths {
   382  			if currentValue == sourceValue {
   383  				exists = true
   384  				break
   385  			}
   386  		}
   387  		if !exists {
   388  			var newDstElement string
   389  			newDstElement = sourceValue
   390  			o.IdentityFieldPaths = append(o.IdentityFieldPaths, newDstElement)
   391  		}
   392  	}
   393  
   394  	if source.GetRole() != nil {
   395  		if data, err := source.GetRole().ProtoString(); err != nil {
   396  			panic(err)
   397  		} else {
   398  			o.Role = &iam_role.Reference{}
   399  			if err := o.Role.ParseProtoString(data); err != nil {
   400  				panic(err)
   401  			}
   402  		}
   403  	} else {
   404  		o.Role = nil
   405  	}
   406  	for _, sourceValue := range source.GetScopeParams() {
   407  		exists := false
   408  		for _, currentValue := range o.ScopeParams {
   409  			if proto.Equal(sourceValue, currentValue) {
   410  				exists = true
   411  				break
   412  			}
   413  		}
   414  		if !exists {
   415  			var newDstElement *iam_role.ScopeParam
   416  			if sourceValue != nil {
   417  				newDstElement = new(iam_role.ScopeParam)
   418  				newDstElement.Merge(sourceValue)
   419  			}
   420  			o.ScopeParams = append(o.ScopeParams, newDstElement)
   421  		}
   422  	}
   423  
   424  	if source.GetCondition() != nil {
   425  		if data, err := source.GetCondition().ProtoString(); err != nil {
   426  			panic(err)
   427  		} else {
   428  			o.Condition = &iam_condition.Reference{}
   429  			if err := o.Condition.ParseProtoString(data); err != nil {
   430  				panic(err)
   431  			}
   432  		}
   433  	} else {
   434  		o.Condition = nil
   435  	}
   436  	if source.GetConditionParams() != nil {
   437  		if o.ConditionParams == nil {
   438  			o.ConditionParams = new(structpb.Struct)
   439  		}
   440  		proto.Merge(o.ConditionParams, source.GetConditionParams())
   441  	}
   442  	for _, sourceValue := range source.GetExtraConditions() {
   443  		exists := false
   444  		for _, currentValue := range o.ExtraConditions {
   445  			if proto.Equal(sourceValue, currentValue) {
   446  				exists = true
   447  				break
   448  			}
   449  		}
   450  		if !exists {
   451  			var newDstElement *iam_condition.ExecutableCondition
   452  			if sourceValue != nil {
   453  				newDstElement = new(iam_condition.ExecutableCondition)
   454  				newDstElement.Merge(sourceValue)
   455  			}
   456  			o.ExtraConditions = append(o.ExtraConditions, newDstElement)
   457  		}
   458  	}
   459  
   460  }
   461  
   462  func (o *ProvisioningPolicy_Spec) MergeRaw(source gotenobject.GotenObjectExt) {
   463  	o.Merge(source.(*ProvisioningPolicy_Spec))
   464  }
   465  
   466  func (o *ProvisioningPolicy_Status) GotenObjectExt() {}
   467  
   468  func (o *ProvisioningPolicy_Status) MakeFullFieldMask() *ProvisioningPolicy_Status_FieldMask {
   469  	return FullProvisioningPolicy_Status_FieldMask()
   470  }
   471  
   472  func (o *ProvisioningPolicy_Status) MakeRawFullFieldMask() gotenobject.FieldMask {
   473  	return FullProvisioningPolicy_Status_FieldMask()
   474  }
   475  
   476  func (o *ProvisioningPolicy_Status) MakeDiffFieldMask(other *ProvisioningPolicy_Status) *ProvisioningPolicy_Status_FieldMask {
   477  	if o == nil && other == nil {
   478  		return &ProvisioningPolicy_Status_FieldMask{}
   479  	}
   480  	if o == nil || other == nil {
   481  		return FullProvisioningPolicy_Status_FieldMask()
   482  	}
   483  
   484  	res := &ProvisioningPolicy_Status_FieldMask{}
   485  	return res
   486  }
   487  
   488  func (o *ProvisioningPolicy_Status) MakeRawDiffFieldMask(other gotenobject.GotenObjectExt) gotenobject.FieldMask {
   489  	return o.MakeDiffFieldMask(other.(*ProvisioningPolicy_Status))
   490  }
   491  
   492  func (o *ProvisioningPolicy_Status) Clone() *ProvisioningPolicy_Status {
   493  	if o == nil {
   494  		return nil
   495  	}
   496  	result := &ProvisioningPolicy_Status{}
   497  	return result
   498  }
   499  
   500  func (o *ProvisioningPolicy_Status) CloneRaw() gotenobject.GotenObjectExt {
   501  	return o.Clone()
   502  }
   503  
   504  func (o *ProvisioningPolicy_Status) Merge(source *ProvisioningPolicy_Status) {
   505  }
   506  
   507  func (o *ProvisioningPolicy_Status) MergeRaw(source gotenobject.GotenObjectExt) {
   508  	o.Merge(source.(*ProvisioningPolicy_Status))
   509  }
   510  
   511  func (o *ProvisioningPolicy_Spec_Template) GotenObjectExt() {}
   512  
   513  func (o *ProvisioningPolicy_Spec_Template) MakeFullFieldMask() *ProvisioningPolicy_Spec_Template_FieldMask {
   514  	return FullProvisioningPolicy_Spec_Template_FieldMask()
   515  }
   516  
   517  func (o *ProvisioningPolicy_Spec_Template) MakeRawFullFieldMask() gotenobject.FieldMask {
   518  	return FullProvisioningPolicy_Spec_Template_FieldMask()
   519  }
   520  
   521  func (o *ProvisioningPolicy_Spec_Template) MakeDiffFieldMask(other *ProvisioningPolicy_Spec_Template) *ProvisioningPolicy_Spec_Template_FieldMask {
   522  	if o == nil && other == nil {
   523  		return &ProvisioningPolicy_Spec_Template_FieldMask{}
   524  	}
   525  	if o == nil || other == nil {
   526  		return FullProvisioningPolicy_Spec_Template_FieldMask()
   527  	}
   528  
   529  	res := &ProvisioningPolicy_Spec_Template_FieldMask{}
   530  	{
   531  		subMask := o.GetMetadata().MakeDiffFieldMask(other.GetMetadata())
   532  		if subMask.IsFull() {
   533  			res.Paths = append(res.Paths, &ProvisioningPolicySpecTemplate_FieldTerminalPath{selector: ProvisioningPolicySpecTemplate_FieldPathSelectorMetadata})
   534  		} else {
   535  			for _, subpath := range subMask.Paths {
   536  				res.Paths = append(res.Paths, &ProvisioningPolicySpecTemplate_FieldSubPath{selector: ProvisioningPolicySpecTemplate_FieldPathSelectorMetadata, subPath: subpath})
   537  			}
   538  		}
   539  	}
   540  	{
   541  		subMask := o.GetSpec().MakeDiffFieldMask(other.GetSpec())
   542  		if subMask.IsFull() {
   543  			res.Paths = append(res.Paths, &ProvisioningPolicySpecTemplate_FieldTerminalPath{selector: ProvisioningPolicySpecTemplate_FieldPathSelectorSpec})
   544  		} else {
   545  			for _, subpath := range subMask.Paths {
   546  				res.Paths = append(res.Paths, &ProvisioningPolicySpecTemplate_FieldSubPath{selector: ProvisioningPolicySpecTemplate_FieldPathSelectorSpec, subPath: subpath})
   547  			}
   548  		}
   549  	}
   550  	{
   551  		subMask := o.GetPublicListingSpec().MakeDiffFieldMask(other.GetPublicListingSpec())
   552  		if subMask.IsFull() {
   553  			res.Paths = append(res.Paths, &ProvisioningPolicySpecTemplate_FieldTerminalPath{selector: ProvisioningPolicySpecTemplate_FieldPathSelectorPublicListingSpec})
   554  		} else {
   555  			for _, subpath := range subMask.Paths {
   556  				res.Paths = append(res.Paths, &ProvisioningPolicySpecTemplate_FieldSubPath{selector: ProvisioningPolicySpecTemplate_FieldPathSelectorPublicListingSpec, subPath: subpath})
   557  			}
   558  		}
   559  	}
   560  	return res
   561  }
   562  
   563  func (o *ProvisioningPolicy_Spec_Template) MakeRawDiffFieldMask(other gotenobject.GotenObjectExt) gotenobject.FieldMask {
   564  	return o.MakeDiffFieldMask(other.(*ProvisioningPolicy_Spec_Template))
   565  }
   566  
   567  func (o *ProvisioningPolicy_Spec_Template) Clone() *ProvisioningPolicy_Spec_Template {
   568  	if o == nil {
   569  		return nil
   570  	}
   571  	result := &ProvisioningPolicy_Spec_Template{}
   572  	result.Metadata = o.Metadata.Clone()
   573  	result.Spec = o.Spec.Clone()
   574  	result.PublicListingSpec = o.PublicListingSpec.Clone()
   575  	return result
   576  }
   577  
   578  func (o *ProvisioningPolicy_Spec_Template) CloneRaw() gotenobject.GotenObjectExt {
   579  	return o.Clone()
   580  }
   581  
   582  func (o *ProvisioningPolicy_Spec_Template) Merge(source *ProvisioningPolicy_Spec_Template) {
   583  	if source.GetMetadata() != nil {
   584  		if o.Metadata == nil {
   585  			o.Metadata = new(meta.Meta)
   586  		}
   587  		o.Metadata.Merge(source.GetMetadata())
   588  	}
   589  	if source.GetSpec() != nil {
   590  		if o.Spec == nil {
   591  			o.Spec = new(device.Device_Spec)
   592  		}
   593  		o.Spec.Merge(source.GetSpec())
   594  	}
   595  	if source.GetPublicListingSpec() != nil {
   596  		if o.PublicListingSpec == nil {
   597  			o.PublicListingSpec = new(device.Device_PublicListingSpec)
   598  		}
   599  		o.PublicListingSpec.Merge(source.GetPublicListingSpec())
   600  	}
   601  }
   602  
   603  func (o *ProvisioningPolicy_Spec_Template) MergeRaw(source gotenobject.GotenObjectExt) {
   604  	o.Merge(source.(*ProvisioningPolicy_Spec_Template))
   605  }