github.com/cloudwan/edgelq-sdk@v1.15.4/monitoring/resources/v3/metric_descriptor/metric_descriptor.pb.object_ext.go (about)

     1  // Code generated by protoc-gen-goten-object
     2  // File: edgelq/monitoring/proto/v3/metric_descriptor.proto
     3  // DO NOT EDIT!!!
     4  
     5  package metric_descriptor
     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  	api "github.com/cloudwan/edgelq-sdk/common/api"
    20  	common "github.com/cloudwan/edgelq-sdk/monitoring/resources/v3/common"
    21  	monitored_resource_descriptor "github.com/cloudwan/edgelq-sdk/monitoring/resources/v3/monitored_resource_descriptor"
    22  	project "github.com/cloudwan/edgelq-sdk/monitoring/resources/v3/project"
    23  	meta "github.com/cloudwan/goten-sdk/types/meta"
    24  )
    25  
    26  // ensure the imports are used
    27  var (
    28  	_ = new(fmt.Stringer)
    29  	_ = new(sort.Interface)
    30  
    31  	_ = new(proto.Message)
    32  	_ = googlefieldmaskpb.FieldMask{}
    33  
    34  	_ = new(gotenobject.FieldPath)
    35  )
    36  
    37  // make sure we're using proto imports
    38  var (
    39  	_ = api.LaunchStage(0)
    40  	_ = &common.LabelDescriptor{}
    41  	_ = &monitored_resource_descriptor.MonitoredResourceDescriptor{}
    42  	_ = &project.Project{}
    43  	_ = &meta.Meta{}
    44  )
    45  
    46  func (o *MetricDescriptor) GotenObjectExt() {}
    47  
    48  func (o *MetricDescriptor) MakeFullFieldMask() *MetricDescriptor_FieldMask {
    49  	return FullMetricDescriptor_FieldMask()
    50  }
    51  
    52  func (o *MetricDescriptor) MakeRawFullFieldMask() gotenobject.FieldMask {
    53  	return FullMetricDescriptor_FieldMask()
    54  }
    55  
    56  func (o *MetricDescriptor) MakeDiffFieldMask(other *MetricDescriptor) *MetricDescriptor_FieldMask {
    57  	if o == nil && other == nil {
    58  		return &MetricDescriptor_FieldMask{}
    59  	}
    60  	if o == nil || other == nil {
    61  		return FullMetricDescriptor_FieldMask()
    62  	}
    63  
    64  	res := &MetricDescriptor_FieldMask{}
    65  	{
    66  		subMask := o.GetMetadata().MakeDiffFieldMask(other.GetMetadata())
    67  		if subMask.IsFull() {
    68  			res.Paths = append(res.Paths, &MetricDescriptor_FieldTerminalPath{selector: MetricDescriptor_FieldPathSelectorMetadata})
    69  		} else {
    70  			for _, subpath := range subMask.Paths {
    71  				res.Paths = append(res.Paths, &MetricDescriptor_FieldSubPath{selector: MetricDescriptor_FieldPathSelectorMetadata, subPath: subpath})
    72  			}
    73  		}
    74  	}
    75  	if o.GetName().String() != other.GetName().String() {
    76  		res.Paths = append(res.Paths, &MetricDescriptor_FieldTerminalPath{selector: MetricDescriptor_FieldPathSelectorName})
    77  	}
    78  	if o.GetType() != other.GetType() {
    79  		res.Paths = append(res.Paths, &MetricDescriptor_FieldTerminalPath{selector: MetricDescriptor_FieldPathSelectorType})
    80  	}
    81  
    82  	if len(o.GetResourceTypes()) == len(other.GetResourceTypes()) {
    83  		for i, lValue := range o.GetResourceTypes() {
    84  			rValue := other.GetResourceTypes()[i]
    85  			if lValue != rValue {
    86  				res.Paths = append(res.Paths, &MetricDescriptor_FieldTerminalPath{selector: MetricDescriptor_FieldPathSelectorResourceTypes})
    87  				break
    88  			}
    89  		}
    90  	} else {
    91  		res.Paths = append(res.Paths, &MetricDescriptor_FieldTerminalPath{selector: MetricDescriptor_FieldPathSelectorResourceTypes})
    92  	}
    93  
    94  	if len(o.GetLabels()) == len(other.GetLabels()) {
    95  		for i, lValue := range o.GetLabels() {
    96  			rValue := other.GetLabels()[i]
    97  			if len(lValue.MakeDiffFieldMask(rValue).Paths) > 0 {
    98  				res.Paths = append(res.Paths, &MetricDescriptor_FieldTerminalPath{selector: MetricDescriptor_FieldPathSelectorLabels})
    99  				break
   100  			}
   101  		}
   102  	} else {
   103  		res.Paths = append(res.Paths, &MetricDescriptor_FieldTerminalPath{selector: MetricDescriptor_FieldPathSelectorLabels})
   104  	}
   105  	if o.GetMetricKind() != other.GetMetricKind() {
   106  		res.Paths = append(res.Paths, &MetricDescriptor_FieldTerminalPath{selector: MetricDescriptor_FieldPathSelectorMetricKind})
   107  	}
   108  	if o.GetValueType() != other.GetValueType() {
   109  		res.Paths = append(res.Paths, &MetricDescriptor_FieldTerminalPath{selector: MetricDescriptor_FieldPathSelectorValueType})
   110  	}
   111  	if o.GetUnit() != other.GetUnit() {
   112  		res.Paths = append(res.Paths, &MetricDescriptor_FieldTerminalPath{selector: MetricDescriptor_FieldPathSelectorUnit})
   113  	}
   114  	if o.GetDescription() != other.GetDescription() {
   115  		res.Paths = append(res.Paths, &MetricDescriptor_FieldTerminalPath{selector: MetricDescriptor_FieldPathSelectorDescription})
   116  	}
   117  	if o.GetDisplayName() != other.GetDisplayName() {
   118  		res.Paths = append(res.Paths, &MetricDescriptor_FieldTerminalPath{selector: MetricDescriptor_FieldPathSelectorDisplayName})
   119  	}
   120  	{
   121  		subMask := o.GetMetricDescriptorMetadata().MakeDiffFieldMask(other.GetMetricDescriptorMetadata())
   122  		if subMask.IsFull() {
   123  			res.Paths = append(res.Paths, &MetricDescriptor_FieldTerminalPath{selector: MetricDescriptor_FieldPathSelectorMetricDescriptorMetadata})
   124  		} else {
   125  			for _, subpath := range subMask.Paths {
   126  				res.Paths = append(res.Paths, &MetricDescriptor_FieldSubPath{selector: MetricDescriptor_FieldPathSelectorMetricDescriptorMetadata, subPath: subpath})
   127  			}
   128  		}
   129  	}
   130  	{
   131  		subMask := o.GetDistributionBucketOptions().MakeDiffFieldMask(other.GetDistributionBucketOptions())
   132  		if subMask.IsFull() {
   133  			res.Paths = append(res.Paths, &MetricDescriptor_FieldTerminalPath{selector: MetricDescriptor_FieldPathSelectorDistributionBucketOptions})
   134  		} else {
   135  			for _, subpath := range subMask.Paths {
   136  				res.Paths = append(res.Paths, &MetricDescriptor_FieldSubPath{selector: MetricDescriptor_FieldPathSelectorDistributionBucketOptions, subPath: subpath})
   137  			}
   138  		}
   139  	}
   140  
   141  	if len(o.GetPromotedLabelKeySets()) == len(other.GetPromotedLabelKeySets()) {
   142  		for i, lValue := range o.GetPromotedLabelKeySets() {
   143  			rValue := other.GetPromotedLabelKeySets()[i]
   144  			if len(lValue.MakeDiffFieldMask(rValue).Paths) > 0 {
   145  				res.Paths = append(res.Paths, &MetricDescriptor_FieldTerminalPath{selector: MetricDescriptor_FieldPathSelectorPromotedLabelKeySets})
   146  				break
   147  			}
   148  		}
   149  	} else {
   150  		res.Paths = append(res.Paths, &MetricDescriptor_FieldTerminalPath{selector: MetricDescriptor_FieldPathSelectorPromotedLabelKeySets})
   151  	}
   152  	{
   153  		subMask := o.GetIndexSpec().MakeDiffFieldMask(other.GetIndexSpec())
   154  		if subMask.IsFull() {
   155  			res.Paths = append(res.Paths, &MetricDescriptor_FieldTerminalPath{selector: MetricDescriptor_FieldPathSelectorIndexSpec})
   156  		} else {
   157  			for _, subpath := range subMask.Paths {
   158  				res.Paths = append(res.Paths, &MetricDescriptor_FieldSubPath{selector: MetricDescriptor_FieldPathSelectorIndexSpec, subPath: subpath})
   159  			}
   160  		}
   161  	}
   162  	{
   163  		subMask := o.GetStorageConfig().MakeDiffFieldMask(other.GetStorageConfig())
   164  		if subMask.IsFull() {
   165  			res.Paths = append(res.Paths, &MetricDescriptor_FieldTerminalPath{selector: MetricDescriptor_FieldPathSelectorStorageConfig})
   166  		} else {
   167  			for _, subpath := range subMask.Paths {
   168  				res.Paths = append(res.Paths, &MetricDescriptor_FieldSubPath{selector: MetricDescriptor_FieldPathSelectorStorageConfig, subPath: subpath})
   169  			}
   170  		}
   171  	}
   172  	return res
   173  }
   174  
   175  func (o *MetricDescriptor) MakeRawDiffFieldMask(other gotenobject.GotenObjectExt) gotenobject.FieldMask {
   176  	return o.MakeDiffFieldMask(other.(*MetricDescriptor))
   177  }
   178  
   179  func (o *MetricDescriptor) Clone() *MetricDescriptor {
   180  	if o == nil {
   181  		return nil
   182  	}
   183  	result := &MetricDescriptor{}
   184  	result.Metadata = o.Metadata.Clone()
   185  	if o.Name == nil {
   186  		result.Name = nil
   187  	} else if data, err := o.Name.ProtoString(); err != nil {
   188  		panic(err)
   189  	} else {
   190  		result.Name = &Name{}
   191  		if err := result.Name.ParseProtoString(data); err != nil {
   192  			panic(err)
   193  		}
   194  	}
   195  	result.Type = o.Type
   196  	result.ResourceTypes = make([]string, len(o.ResourceTypes))
   197  	for i, sourceValue := range o.ResourceTypes {
   198  		result.ResourceTypes[i] = sourceValue
   199  	}
   200  	result.Labels = make([]*common.LabelDescriptor, len(o.Labels))
   201  	for i, sourceValue := range o.Labels {
   202  		result.Labels[i] = sourceValue.Clone()
   203  	}
   204  	result.MetricKind = o.MetricKind
   205  	result.ValueType = o.ValueType
   206  	result.Unit = o.Unit
   207  	result.Description = o.Description
   208  	result.DisplayName = o.DisplayName
   209  	result.MetricDescriptorMetadata = o.MetricDescriptorMetadata.Clone()
   210  	result.DistributionBucketOptions = o.DistributionBucketOptions.Clone()
   211  	result.PromotedLabelKeySets = make([]*common.LabelKeySet, len(o.PromotedLabelKeySets))
   212  	for i, sourceValue := range o.PromotedLabelKeySets {
   213  		result.PromotedLabelKeySets[i] = sourceValue.Clone()
   214  	}
   215  	result.IndexSpec = o.IndexSpec.Clone()
   216  	result.StorageConfig = o.StorageConfig.Clone()
   217  	return result
   218  }
   219  
   220  func (o *MetricDescriptor) CloneRaw() gotenobject.GotenObjectExt {
   221  	return o.Clone()
   222  }
   223  
   224  func (o *MetricDescriptor) Merge(source *MetricDescriptor) {
   225  	if source.GetMetadata() != nil {
   226  		if o.Metadata == nil {
   227  			o.Metadata = new(meta.Meta)
   228  		}
   229  		o.Metadata.Merge(source.GetMetadata())
   230  	}
   231  	if source.GetName() != nil {
   232  		if data, err := source.GetName().ProtoString(); err != nil {
   233  			panic(err)
   234  		} else {
   235  			o.Name = &Name{}
   236  			if err := o.Name.ParseProtoString(data); err != nil {
   237  				panic(err)
   238  			}
   239  		}
   240  	} else {
   241  		o.Name = nil
   242  	}
   243  	o.Type = source.GetType()
   244  	for _, sourceValue := range source.GetResourceTypes() {
   245  		exists := false
   246  		for _, currentValue := range o.ResourceTypes {
   247  			if currentValue == sourceValue {
   248  				exists = true
   249  				break
   250  			}
   251  		}
   252  		if !exists {
   253  			var newDstElement string
   254  			newDstElement = sourceValue
   255  			o.ResourceTypes = append(o.ResourceTypes, newDstElement)
   256  		}
   257  	}
   258  
   259  	for _, sourceValue := range source.GetLabels() {
   260  		exists := false
   261  		for _, currentValue := range o.Labels {
   262  			if proto.Equal(sourceValue, currentValue) {
   263  				exists = true
   264  				break
   265  			}
   266  		}
   267  		if !exists {
   268  			var newDstElement *common.LabelDescriptor
   269  			if sourceValue != nil {
   270  				newDstElement = new(common.LabelDescriptor)
   271  				newDstElement.Merge(sourceValue)
   272  			}
   273  			o.Labels = append(o.Labels, newDstElement)
   274  		}
   275  	}
   276  
   277  	o.MetricKind = source.GetMetricKind()
   278  	o.ValueType = source.GetValueType()
   279  	o.Unit = source.GetUnit()
   280  	o.Description = source.GetDescription()
   281  	o.DisplayName = source.GetDisplayName()
   282  	if source.GetMetricDescriptorMetadata() != nil {
   283  		if o.MetricDescriptorMetadata == nil {
   284  			o.MetricDescriptorMetadata = new(MetricDescriptor_MetricDescriptorMetadata)
   285  		}
   286  		o.MetricDescriptorMetadata.Merge(source.GetMetricDescriptorMetadata())
   287  	}
   288  	if source.GetDistributionBucketOptions() != nil {
   289  		if o.DistributionBucketOptions == nil {
   290  			o.DistributionBucketOptions = new(common.Distribution_BucketOptions)
   291  		}
   292  		o.DistributionBucketOptions.Merge(source.GetDistributionBucketOptions())
   293  	}
   294  	for _, sourceValue := range source.GetPromotedLabelKeySets() {
   295  		exists := false
   296  		for _, currentValue := range o.PromotedLabelKeySets {
   297  			if proto.Equal(sourceValue, currentValue) {
   298  				exists = true
   299  				break
   300  			}
   301  		}
   302  		if !exists {
   303  			var newDstElement *common.LabelKeySet
   304  			if sourceValue != nil {
   305  				newDstElement = new(common.LabelKeySet)
   306  				newDstElement.Merge(sourceValue)
   307  			}
   308  			o.PromotedLabelKeySets = append(o.PromotedLabelKeySets, newDstElement)
   309  		}
   310  	}
   311  
   312  	if source.GetIndexSpec() != nil {
   313  		if o.IndexSpec == nil {
   314  			o.IndexSpec = new(MetricDescriptor_IndexSpec)
   315  		}
   316  		o.IndexSpec.Merge(source.GetIndexSpec())
   317  	}
   318  	if source.GetStorageConfig() != nil {
   319  		if o.StorageConfig == nil {
   320  			o.StorageConfig = new(MetricDescriptor_StorageConfig)
   321  		}
   322  		o.StorageConfig.Merge(source.GetStorageConfig())
   323  	}
   324  }
   325  
   326  func (o *MetricDescriptor) MergeRaw(source gotenobject.GotenObjectExt) {
   327  	o.Merge(source.(*MetricDescriptor))
   328  }
   329  
   330  func (o *MetricDescriptor_MetricDescriptorMetadata) GotenObjectExt() {}
   331  
   332  func (o *MetricDescriptor_MetricDescriptorMetadata) MakeFullFieldMask() *MetricDescriptor_MetricDescriptorMetadata_FieldMask {
   333  	return FullMetricDescriptor_MetricDescriptorMetadata_FieldMask()
   334  }
   335  
   336  func (o *MetricDescriptor_MetricDescriptorMetadata) MakeRawFullFieldMask() gotenobject.FieldMask {
   337  	return FullMetricDescriptor_MetricDescriptorMetadata_FieldMask()
   338  }
   339  
   340  func (o *MetricDescriptor_MetricDescriptorMetadata) MakeDiffFieldMask(other *MetricDescriptor_MetricDescriptorMetadata) *MetricDescriptor_MetricDescriptorMetadata_FieldMask {
   341  	if o == nil && other == nil {
   342  		return &MetricDescriptor_MetricDescriptorMetadata_FieldMask{}
   343  	}
   344  	if o == nil || other == nil {
   345  		return FullMetricDescriptor_MetricDescriptorMetadata_FieldMask()
   346  	}
   347  
   348  	res := &MetricDescriptor_MetricDescriptorMetadata_FieldMask{}
   349  	if o.GetLaunchStage() != other.GetLaunchStage() {
   350  		res.Paths = append(res.Paths, &MetricDescriptorMetricDescriptorMetadata_FieldTerminalPath{selector: MetricDescriptorMetricDescriptorMetadata_FieldPathSelectorLaunchStage})
   351  	}
   352  	return res
   353  }
   354  
   355  func (o *MetricDescriptor_MetricDescriptorMetadata) MakeRawDiffFieldMask(other gotenobject.GotenObjectExt) gotenobject.FieldMask {
   356  	return o.MakeDiffFieldMask(other.(*MetricDescriptor_MetricDescriptorMetadata))
   357  }
   358  
   359  func (o *MetricDescriptor_MetricDescriptorMetadata) Clone() *MetricDescriptor_MetricDescriptorMetadata {
   360  	if o == nil {
   361  		return nil
   362  	}
   363  	result := &MetricDescriptor_MetricDescriptorMetadata{}
   364  	result.LaunchStage = o.LaunchStage
   365  	return result
   366  }
   367  
   368  func (o *MetricDescriptor_MetricDescriptorMetadata) CloneRaw() gotenobject.GotenObjectExt {
   369  	return o.Clone()
   370  }
   371  
   372  func (o *MetricDescriptor_MetricDescriptorMetadata) Merge(source *MetricDescriptor_MetricDescriptorMetadata) {
   373  	o.LaunchStage = source.GetLaunchStage()
   374  }
   375  
   376  func (o *MetricDescriptor_MetricDescriptorMetadata) MergeRaw(source gotenobject.GotenObjectExt) {
   377  	o.Merge(source.(*MetricDescriptor_MetricDescriptorMetadata))
   378  }
   379  
   380  func (o *MetricDescriptor_IndexSpec) GotenObjectExt() {}
   381  
   382  func (o *MetricDescriptor_IndexSpec) MakeFullFieldMask() *MetricDescriptor_IndexSpec_FieldMask {
   383  	return FullMetricDescriptor_IndexSpec_FieldMask()
   384  }
   385  
   386  func (o *MetricDescriptor_IndexSpec) MakeRawFullFieldMask() gotenobject.FieldMask {
   387  	return FullMetricDescriptor_IndexSpec_FieldMask()
   388  }
   389  
   390  func (o *MetricDescriptor_IndexSpec) MakeDiffFieldMask(other *MetricDescriptor_IndexSpec) *MetricDescriptor_IndexSpec_FieldMask {
   391  	if o == nil && other == nil {
   392  		return &MetricDescriptor_IndexSpec_FieldMask{}
   393  	}
   394  	if o == nil || other == nil {
   395  		return FullMetricDescriptor_IndexSpec_FieldMask()
   396  	}
   397  
   398  	res := &MetricDescriptor_IndexSpec_FieldMask{}
   399  
   400  	if len(o.GetPerResource()) == len(other.GetPerResource()) {
   401  		for i, lValue := range o.GetPerResource() {
   402  			rValue := other.GetPerResource()[i]
   403  			if len(lValue.MakeDiffFieldMask(rValue).Paths) > 0 {
   404  				res.Paths = append(res.Paths, &MetricDescriptorIndexSpec_FieldTerminalPath{selector: MetricDescriptorIndexSpec_FieldPathSelectorPerResource})
   405  				break
   406  			}
   407  		}
   408  	} else {
   409  		res.Paths = append(res.Paths, &MetricDescriptorIndexSpec_FieldTerminalPath{selector: MetricDescriptorIndexSpec_FieldPathSelectorPerResource})
   410  	}
   411  	return res
   412  }
   413  
   414  func (o *MetricDescriptor_IndexSpec) MakeRawDiffFieldMask(other gotenobject.GotenObjectExt) gotenobject.FieldMask {
   415  	return o.MakeDiffFieldMask(other.(*MetricDescriptor_IndexSpec))
   416  }
   417  
   418  func (o *MetricDescriptor_IndexSpec) Clone() *MetricDescriptor_IndexSpec {
   419  	if o == nil {
   420  		return nil
   421  	}
   422  	result := &MetricDescriptor_IndexSpec{}
   423  	result.PerResource = make([]*MetricDescriptor_IndexSpec_PerMonitoredResource, len(o.PerResource))
   424  	for i, sourceValue := range o.PerResource {
   425  		result.PerResource[i] = sourceValue.Clone()
   426  	}
   427  	return result
   428  }
   429  
   430  func (o *MetricDescriptor_IndexSpec) CloneRaw() gotenobject.GotenObjectExt {
   431  	return o.Clone()
   432  }
   433  
   434  func (o *MetricDescriptor_IndexSpec) Merge(source *MetricDescriptor_IndexSpec) {
   435  	for _, sourceValue := range source.GetPerResource() {
   436  		exists := false
   437  		for _, currentValue := range o.PerResource {
   438  			if proto.Equal(sourceValue, currentValue) {
   439  				exists = true
   440  				break
   441  			}
   442  		}
   443  		if !exists {
   444  			var newDstElement *MetricDescriptor_IndexSpec_PerMonitoredResource
   445  			if sourceValue != nil {
   446  				newDstElement = new(MetricDescriptor_IndexSpec_PerMonitoredResource)
   447  				newDstElement.Merge(sourceValue)
   448  			}
   449  			o.PerResource = append(o.PerResource, newDstElement)
   450  		}
   451  	}
   452  
   453  }
   454  
   455  func (o *MetricDescriptor_IndexSpec) MergeRaw(source gotenobject.GotenObjectExt) {
   456  	o.Merge(source.(*MetricDescriptor_IndexSpec))
   457  }
   458  
   459  func (o *MetricDescriptor_StorageConfig) GotenObjectExt() {}
   460  
   461  func (o *MetricDescriptor_StorageConfig) MakeFullFieldMask() *MetricDescriptor_StorageConfig_FieldMask {
   462  	return FullMetricDescriptor_StorageConfig_FieldMask()
   463  }
   464  
   465  func (o *MetricDescriptor_StorageConfig) MakeRawFullFieldMask() gotenobject.FieldMask {
   466  	return FullMetricDescriptor_StorageConfig_FieldMask()
   467  }
   468  
   469  func (o *MetricDescriptor_StorageConfig) MakeDiffFieldMask(other *MetricDescriptor_StorageConfig) *MetricDescriptor_StorageConfig_FieldMask {
   470  	if o == nil && other == nil {
   471  		return &MetricDescriptor_StorageConfig_FieldMask{}
   472  	}
   473  	if o == nil || other == nil {
   474  		return FullMetricDescriptor_StorageConfig_FieldMask()
   475  	}
   476  
   477  	res := &MetricDescriptor_StorageConfig_FieldMask{}
   478  	if o.GetStoreRawPoints() != other.GetStoreRawPoints() {
   479  		res.Paths = append(res.Paths, &MetricDescriptorStorageConfig_FieldTerminalPath{selector: MetricDescriptorStorageConfig_FieldPathSelectorStoreRawPoints})
   480  	}
   481  	return res
   482  }
   483  
   484  func (o *MetricDescriptor_StorageConfig) MakeRawDiffFieldMask(other gotenobject.GotenObjectExt) gotenobject.FieldMask {
   485  	return o.MakeDiffFieldMask(other.(*MetricDescriptor_StorageConfig))
   486  }
   487  
   488  func (o *MetricDescriptor_StorageConfig) Clone() *MetricDescriptor_StorageConfig {
   489  	if o == nil {
   490  		return nil
   491  	}
   492  	result := &MetricDescriptor_StorageConfig{}
   493  	result.StoreRawPoints = o.StoreRawPoints
   494  	return result
   495  }
   496  
   497  func (o *MetricDescriptor_StorageConfig) CloneRaw() gotenobject.GotenObjectExt {
   498  	return o.Clone()
   499  }
   500  
   501  func (o *MetricDescriptor_StorageConfig) Merge(source *MetricDescriptor_StorageConfig) {
   502  	o.StoreRawPoints = source.GetStoreRawPoints()
   503  }
   504  
   505  func (o *MetricDescriptor_StorageConfig) MergeRaw(source gotenobject.GotenObjectExt) {
   506  	o.Merge(source.(*MetricDescriptor_StorageConfig))
   507  }
   508  
   509  func (o *MetricDescriptor_IndexSpec_Index) GotenObjectExt() {}
   510  
   511  func (o *MetricDescriptor_IndexSpec_Index) MakeFullFieldMask() *MetricDescriptor_IndexSpec_Index_FieldMask {
   512  	return FullMetricDescriptor_IndexSpec_Index_FieldMask()
   513  }
   514  
   515  func (o *MetricDescriptor_IndexSpec_Index) MakeRawFullFieldMask() gotenobject.FieldMask {
   516  	return FullMetricDescriptor_IndexSpec_Index_FieldMask()
   517  }
   518  
   519  func (o *MetricDescriptor_IndexSpec_Index) MakeDiffFieldMask(other *MetricDescriptor_IndexSpec_Index) *MetricDescriptor_IndexSpec_Index_FieldMask {
   520  	if o == nil && other == nil {
   521  		return &MetricDescriptor_IndexSpec_Index_FieldMask{}
   522  	}
   523  	if o == nil || other == nil {
   524  		return FullMetricDescriptor_IndexSpec_Index_FieldMask()
   525  	}
   526  
   527  	res := &MetricDescriptor_IndexSpec_Index_FieldMask{}
   528  
   529  	if len(o.GetPromotedLabels()) == len(other.GetPromotedLabels()) {
   530  		for i, lValue := range o.GetPromotedLabels() {
   531  			rValue := other.GetPromotedLabels()[i]
   532  			if lValue != rValue {
   533  				res.Paths = append(res.Paths, &MetricDescriptorIndexSpecIndex_FieldTerminalPath{selector: MetricDescriptorIndexSpecIndex_FieldPathSelectorPromotedLabels})
   534  				break
   535  			}
   536  		}
   537  	} else {
   538  		res.Paths = append(res.Paths, &MetricDescriptorIndexSpecIndex_FieldTerminalPath{selector: MetricDescriptorIndexSpecIndex_FieldPathSelectorPromotedLabels})
   539  	}
   540  	if o.GetWriteOnly() != other.GetWriteOnly() {
   541  		res.Paths = append(res.Paths, &MetricDescriptorIndexSpecIndex_FieldTerminalPath{selector: MetricDescriptorIndexSpecIndex_FieldPathSelectorWriteOnly})
   542  	}
   543  	return res
   544  }
   545  
   546  func (o *MetricDescriptor_IndexSpec_Index) MakeRawDiffFieldMask(other gotenobject.GotenObjectExt) gotenobject.FieldMask {
   547  	return o.MakeDiffFieldMask(other.(*MetricDescriptor_IndexSpec_Index))
   548  }
   549  
   550  func (o *MetricDescriptor_IndexSpec_Index) Clone() *MetricDescriptor_IndexSpec_Index {
   551  	if o == nil {
   552  		return nil
   553  	}
   554  	result := &MetricDescriptor_IndexSpec_Index{}
   555  	result.PromotedLabels = make([]string, len(o.PromotedLabels))
   556  	for i, sourceValue := range o.PromotedLabels {
   557  		result.PromotedLabels[i] = sourceValue
   558  	}
   559  	result.WriteOnly = o.WriteOnly
   560  	return result
   561  }
   562  
   563  func (o *MetricDescriptor_IndexSpec_Index) CloneRaw() gotenobject.GotenObjectExt {
   564  	return o.Clone()
   565  }
   566  
   567  func (o *MetricDescriptor_IndexSpec_Index) Merge(source *MetricDescriptor_IndexSpec_Index) {
   568  	for _, sourceValue := range source.GetPromotedLabels() {
   569  		exists := false
   570  		for _, currentValue := range o.PromotedLabels {
   571  			if currentValue == sourceValue {
   572  				exists = true
   573  				break
   574  			}
   575  		}
   576  		if !exists {
   577  			var newDstElement string
   578  			newDstElement = sourceValue
   579  			o.PromotedLabels = append(o.PromotedLabels, newDstElement)
   580  		}
   581  	}
   582  
   583  	o.WriteOnly = source.GetWriteOnly()
   584  }
   585  
   586  func (o *MetricDescriptor_IndexSpec_Index) MergeRaw(source gotenobject.GotenObjectExt) {
   587  	o.Merge(source.(*MetricDescriptor_IndexSpec_Index))
   588  }
   589  
   590  func (o *MetricDescriptor_IndexSpec_PerMonitoredResource) GotenObjectExt() {}
   591  
   592  func (o *MetricDescriptor_IndexSpec_PerMonitoredResource) MakeFullFieldMask() *MetricDescriptor_IndexSpec_PerMonitoredResource_FieldMask {
   593  	return FullMetricDescriptor_IndexSpec_PerMonitoredResource_FieldMask()
   594  }
   595  
   596  func (o *MetricDescriptor_IndexSpec_PerMonitoredResource) MakeRawFullFieldMask() gotenobject.FieldMask {
   597  	return FullMetricDescriptor_IndexSpec_PerMonitoredResource_FieldMask()
   598  }
   599  
   600  func (o *MetricDescriptor_IndexSpec_PerMonitoredResource) MakeDiffFieldMask(other *MetricDescriptor_IndexSpec_PerMonitoredResource) *MetricDescriptor_IndexSpec_PerMonitoredResource_FieldMask {
   601  	if o == nil && other == nil {
   602  		return &MetricDescriptor_IndexSpec_PerMonitoredResource_FieldMask{}
   603  	}
   604  	if o == nil || other == nil {
   605  		return FullMetricDescriptor_IndexSpec_PerMonitoredResource_FieldMask()
   606  	}
   607  
   608  	res := &MetricDescriptor_IndexSpec_PerMonitoredResource_FieldMask{}
   609  	if o.GetResource().String() != other.GetResource().String() {
   610  		res.Paths = append(res.Paths, &MetricDescriptorIndexSpecPerMonitoredResource_FieldTerminalPath{selector: MetricDescriptorIndexSpecPerMonitoredResource_FieldPathSelectorResource})
   611  	}
   612  
   613  	if len(o.GetIndices()) == len(other.GetIndices()) {
   614  		for i, lValue := range o.GetIndices() {
   615  			rValue := other.GetIndices()[i]
   616  			if len(lValue.MakeDiffFieldMask(rValue).Paths) > 0 {
   617  				res.Paths = append(res.Paths, &MetricDescriptorIndexSpecPerMonitoredResource_FieldTerminalPath{selector: MetricDescriptorIndexSpecPerMonitoredResource_FieldPathSelectorIndices})
   618  				break
   619  			}
   620  		}
   621  	} else {
   622  		res.Paths = append(res.Paths, &MetricDescriptorIndexSpecPerMonitoredResource_FieldTerminalPath{selector: MetricDescriptorIndexSpecPerMonitoredResource_FieldPathSelectorIndices})
   623  	}
   624  	return res
   625  }
   626  
   627  func (o *MetricDescriptor_IndexSpec_PerMonitoredResource) MakeRawDiffFieldMask(other gotenobject.GotenObjectExt) gotenobject.FieldMask {
   628  	return o.MakeDiffFieldMask(other.(*MetricDescriptor_IndexSpec_PerMonitoredResource))
   629  }
   630  
   631  func (o *MetricDescriptor_IndexSpec_PerMonitoredResource) Clone() *MetricDescriptor_IndexSpec_PerMonitoredResource {
   632  	if o == nil {
   633  		return nil
   634  	}
   635  	result := &MetricDescriptor_IndexSpec_PerMonitoredResource{}
   636  	if o.Resource == nil {
   637  		result.Resource = nil
   638  	} else if data, err := o.Resource.ProtoString(); err != nil {
   639  		panic(err)
   640  	} else {
   641  		result.Resource = &monitored_resource_descriptor.Reference{}
   642  		if err := result.Resource.ParseProtoString(data); err != nil {
   643  			panic(err)
   644  		}
   645  	}
   646  	result.Indices = make([]*MetricDescriptor_IndexSpec_Index, len(o.Indices))
   647  	for i, sourceValue := range o.Indices {
   648  		result.Indices[i] = sourceValue.Clone()
   649  	}
   650  	return result
   651  }
   652  
   653  func (o *MetricDescriptor_IndexSpec_PerMonitoredResource) CloneRaw() gotenobject.GotenObjectExt {
   654  	return o.Clone()
   655  }
   656  
   657  func (o *MetricDescriptor_IndexSpec_PerMonitoredResource) Merge(source *MetricDescriptor_IndexSpec_PerMonitoredResource) {
   658  	if source.GetResource() != nil {
   659  		if data, err := source.GetResource().ProtoString(); err != nil {
   660  			panic(err)
   661  		} else {
   662  			o.Resource = &monitored_resource_descriptor.Reference{}
   663  			if err := o.Resource.ParseProtoString(data); err != nil {
   664  				panic(err)
   665  			}
   666  		}
   667  	} else {
   668  		o.Resource = nil
   669  	}
   670  	for _, sourceValue := range source.GetIndices() {
   671  		exists := false
   672  		for _, currentValue := range o.Indices {
   673  			if proto.Equal(sourceValue, currentValue) {
   674  				exists = true
   675  				break
   676  			}
   677  		}
   678  		if !exists {
   679  			var newDstElement *MetricDescriptor_IndexSpec_Index
   680  			if sourceValue != nil {
   681  				newDstElement = new(MetricDescriptor_IndexSpec_Index)
   682  				newDstElement.Merge(sourceValue)
   683  			}
   684  			o.Indices = append(o.Indices, newDstElement)
   685  		}
   686  	}
   687  
   688  }
   689  
   690  func (o *MetricDescriptor_IndexSpec_PerMonitoredResource) MergeRaw(source gotenobject.GotenObjectExt) {
   691  	o.Merge(source.(*MetricDescriptor_IndexSpec_PerMonitoredResource))
   692  }