github.com/cloudwan/edgelq-sdk@v1.15.4/monitoring/resources/v3/metric_descriptor/metric_descriptor.pb.fieldmask.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 "encoding/json" 9 "strings" 10 11 "google.golang.org/grpc/codes" 12 "google.golang.org/grpc/status" 13 "google.golang.org/protobuf/proto" 14 preflect "google.golang.org/protobuf/reflect/protoreflect" 15 googlefieldmaskpb "google.golang.org/protobuf/types/known/fieldmaskpb" 16 17 gotenobject "github.com/cloudwan/goten-sdk/runtime/object" 18 ) 19 20 // proto imports 21 import ( 22 api "github.com/cloudwan/edgelq-sdk/common/api" 23 common "github.com/cloudwan/edgelq-sdk/monitoring/resources/v3/common" 24 monitored_resource_descriptor "github.com/cloudwan/edgelq-sdk/monitoring/resources/v3/monitored_resource_descriptor" 25 project "github.com/cloudwan/edgelq-sdk/monitoring/resources/v3/project" 26 meta "github.com/cloudwan/goten-sdk/types/meta" 27 ) 28 29 // ensure the imports are used 30 var ( 31 _ = new(json.Marshaler) 32 _ = strings.Builder{} 33 34 _ = codes.NotFound 35 _ = status.Status{} 36 _ = new(proto.Message) 37 _ = new(preflect.Message) 38 _ = googlefieldmaskpb.FieldMask{} 39 40 _ = new(gotenobject.FieldMask) 41 ) 42 43 // make sure we're using proto imports 44 var ( 45 _ = api.LaunchStage(0) 46 _ = &common.LabelDescriptor{} 47 _ = &monitored_resource_descriptor.MonitoredResourceDescriptor{} 48 _ = &project.Project{} 49 _ = &meta.Meta{} 50 ) 51 52 type MetricDescriptor_FieldMask struct { 53 Paths []MetricDescriptor_FieldPath 54 } 55 56 func FullMetricDescriptor_FieldMask() *MetricDescriptor_FieldMask { 57 res := &MetricDescriptor_FieldMask{} 58 res.Paths = append(res.Paths, &MetricDescriptor_FieldTerminalPath{selector: MetricDescriptor_FieldPathSelectorMetadata}) 59 res.Paths = append(res.Paths, &MetricDescriptor_FieldTerminalPath{selector: MetricDescriptor_FieldPathSelectorName}) 60 res.Paths = append(res.Paths, &MetricDescriptor_FieldTerminalPath{selector: MetricDescriptor_FieldPathSelectorType}) 61 res.Paths = append(res.Paths, &MetricDescriptor_FieldTerminalPath{selector: MetricDescriptor_FieldPathSelectorResourceTypes}) 62 res.Paths = append(res.Paths, &MetricDescriptor_FieldTerminalPath{selector: MetricDescriptor_FieldPathSelectorLabels}) 63 res.Paths = append(res.Paths, &MetricDescriptor_FieldTerminalPath{selector: MetricDescriptor_FieldPathSelectorMetricKind}) 64 res.Paths = append(res.Paths, &MetricDescriptor_FieldTerminalPath{selector: MetricDescriptor_FieldPathSelectorValueType}) 65 res.Paths = append(res.Paths, &MetricDescriptor_FieldTerminalPath{selector: MetricDescriptor_FieldPathSelectorUnit}) 66 res.Paths = append(res.Paths, &MetricDescriptor_FieldTerminalPath{selector: MetricDescriptor_FieldPathSelectorDescription}) 67 res.Paths = append(res.Paths, &MetricDescriptor_FieldTerminalPath{selector: MetricDescriptor_FieldPathSelectorDisplayName}) 68 res.Paths = append(res.Paths, &MetricDescriptor_FieldTerminalPath{selector: MetricDescriptor_FieldPathSelectorMetricDescriptorMetadata}) 69 res.Paths = append(res.Paths, &MetricDescriptor_FieldTerminalPath{selector: MetricDescriptor_FieldPathSelectorDistributionBucketOptions}) 70 res.Paths = append(res.Paths, &MetricDescriptor_FieldTerminalPath{selector: MetricDescriptor_FieldPathSelectorPromotedLabelKeySets}) 71 res.Paths = append(res.Paths, &MetricDescriptor_FieldTerminalPath{selector: MetricDescriptor_FieldPathSelectorIndexSpec}) 72 res.Paths = append(res.Paths, &MetricDescriptor_FieldTerminalPath{selector: MetricDescriptor_FieldPathSelectorStorageConfig}) 73 return res 74 } 75 76 func (fieldMask *MetricDescriptor_FieldMask) String() string { 77 if fieldMask == nil { 78 return "<nil>" 79 } 80 pathsStr := make([]string, 0, len(fieldMask.Paths)) 81 for _, path := range fieldMask.Paths { 82 pathsStr = append(pathsStr, path.String()) 83 } 84 return strings.Join(pathsStr, ", ") 85 } 86 87 func (fieldMask *MetricDescriptor_FieldMask) IsFull() bool { 88 if fieldMask == nil { 89 return false 90 } 91 presentSelectors := make([]bool, 15) 92 for _, path := range fieldMask.Paths { 93 if asFinal, ok := path.(*MetricDescriptor_FieldTerminalPath); ok { 94 presentSelectors[int(asFinal.selector)] = true 95 } 96 } 97 for _, flag := range presentSelectors { 98 if !flag { 99 return false 100 } 101 } 102 return true 103 } 104 105 func (fieldMask *MetricDescriptor_FieldMask) ProtoReflect() preflect.Message { 106 return gotenobject.MakeFieldMaskReflection(fieldMask, func(raw string) (gotenobject.FieldPath, error) { 107 return ParseMetricDescriptor_FieldPath(raw) 108 }) 109 } 110 111 func (fieldMask *MetricDescriptor_FieldMask) ProtoMessage() {} 112 113 func (fieldMask *MetricDescriptor_FieldMask) Reset() { 114 if fieldMask != nil { 115 fieldMask.Paths = nil 116 } 117 } 118 119 func (fieldMask *MetricDescriptor_FieldMask) Subtract(other *MetricDescriptor_FieldMask) *MetricDescriptor_FieldMask { 120 result := &MetricDescriptor_FieldMask{} 121 removedSelectors := make([]bool, 15) 122 otherSubMasks := map[MetricDescriptor_FieldPathSelector]gotenobject.FieldMask{ 123 MetricDescriptor_FieldPathSelectorMetadata: &meta.Meta_FieldMask{}, 124 MetricDescriptor_FieldPathSelectorLabels: &common.LabelDescriptor_FieldMask{}, 125 MetricDescriptor_FieldPathSelectorMetricDescriptorMetadata: &MetricDescriptor_MetricDescriptorMetadata_FieldMask{}, 126 MetricDescriptor_FieldPathSelectorDistributionBucketOptions: &common.Distribution_BucketOptions_FieldMask{}, 127 MetricDescriptor_FieldPathSelectorPromotedLabelKeySets: &common.LabelKeySet_FieldMask{}, 128 MetricDescriptor_FieldPathSelectorIndexSpec: &MetricDescriptor_IndexSpec_FieldMask{}, 129 MetricDescriptor_FieldPathSelectorStorageConfig: &MetricDescriptor_StorageConfig_FieldMask{}, 130 } 131 mySubMasks := map[MetricDescriptor_FieldPathSelector]gotenobject.FieldMask{ 132 MetricDescriptor_FieldPathSelectorMetadata: &meta.Meta_FieldMask{}, 133 MetricDescriptor_FieldPathSelectorLabels: &common.LabelDescriptor_FieldMask{}, 134 MetricDescriptor_FieldPathSelectorMetricDescriptorMetadata: &MetricDescriptor_MetricDescriptorMetadata_FieldMask{}, 135 MetricDescriptor_FieldPathSelectorDistributionBucketOptions: &common.Distribution_BucketOptions_FieldMask{}, 136 MetricDescriptor_FieldPathSelectorPromotedLabelKeySets: &common.LabelKeySet_FieldMask{}, 137 MetricDescriptor_FieldPathSelectorIndexSpec: &MetricDescriptor_IndexSpec_FieldMask{}, 138 MetricDescriptor_FieldPathSelectorStorageConfig: &MetricDescriptor_StorageConfig_FieldMask{}, 139 } 140 141 for _, path := range other.GetPaths() { 142 switch tp := path.(type) { 143 case *MetricDescriptor_FieldTerminalPath: 144 removedSelectors[int(tp.selector)] = true 145 case *MetricDescriptor_FieldSubPath: 146 otherSubMasks[tp.selector].AppendRawPath(tp.subPath) 147 } 148 } 149 for _, path := range fieldMask.GetPaths() { 150 if !removedSelectors[int(path.Selector())] { 151 if otherSubMask := otherSubMasks[path.Selector()]; otherSubMask != nil && otherSubMask.PathsCount() > 0 { 152 if tp, ok := path.(*MetricDescriptor_FieldTerminalPath); ok { 153 switch tp.selector { 154 case MetricDescriptor_FieldPathSelectorMetadata: 155 mySubMasks[MetricDescriptor_FieldPathSelectorMetadata] = meta.FullMeta_FieldMask() 156 case MetricDescriptor_FieldPathSelectorLabels: 157 mySubMasks[MetricDescriptor_FieldPathSelectorLabels] = common.FullLabelDescriptor_FieldMask() 158 case MetricDescriptor_FieldPathSelectorMetricDescriptorMetadata: 159 mySubMasks[MetricDescriptor_FieldPathSelectorMetricDescriptorMetadata] = FullMetricDescriptor_MetricDescriptorMetadata_FieldMask() 160 case MetricDescriptor_FieldPathSelectorDistributionBucketOptions: 161 mySubMasks[MetricDescriptor_FieldPathSelectorDistributionBucketOptions] = common.FullDistribution_BucketOptions_FieldMask() 162 case MetricDescriptor_FieldPathSelectorPromotedLabelKeySets: 163 mySubMasks[MetricDescriptor_FieldPathSelectorPromotedLabelKeySets] = common.FullLabelKeySet_FieldMask() 164 case MetricDescriptor_FieldPathSelectorIndexSpec: 165 mySubMasks[MetricDescriptor_FieldPathSelectorIndexSpec] = FullMetricDescriptor_IndexSpec_FieldMask() 166 case MetricDescriptor_FieldPathSelectorStorageConfig: 167 mySubMasks[MetricDescriptor_FieldPathSelectorStorageConfig] = FullMetricDescriptor_StorageConfig_FieldMask() 168 } 169 } else if tp, ok := path.(*MetricDescriptor_FieldSubPath); ok { 170 mySubMasks[tp.selector].AppendRawPath(tp.subPath) 171 } 172 } else { 173 result.Paths = append(result.Paths, path) 174 } 175 } 176 } 177 for selector, mySubMask := range mySubMasks { 178 if mySubMask.PathsCount() > 0 { 179 for _, allowedPath := range mySubMask.SubtractRaw(otherSubMasks[selector]).GetRawPaths() { 180 result.Paths = append(result.Paths, &MetricDescriptor_FieldSubPath{selector: selector, subPath: allowedPath}) 181 } 182 } 183 } 184 185 if len(result.Paths) == 0 { 186 return nil 187 } 188 return result 189 } 190 191 func (fieldMask *MetricDescriptor_FieldMask) SubtractRaw(other gotenobject.FieldMask) gotenobject.FieldMask { 192 return fieldMask.Subtract(other.(*MetricDescriptor_FieldMask)) 193 } 194 195 // FilterInputFields generates copy of field paths with output_only field paths removed 196 func (fieldMask *MetricDescriptor_FieldMask) FilterInputFields() *MetricDescriptor_FieldMask { 197 result := &MetricDescriptor_FieldMask{} 198 for _, path := range fieldMask.Paths { 199 switch path.Selector() { 200 case MetricDescriptor_FieldPathSelectorMetadata: 201 if _, ok := path.(*MetricDescriptor_FieldTerminalPath); ok { 202 for _, subpath := range meta.FullMeta_FieldMask().FilterInputFields().Paths { 203 result.Paths = append(result.Paths, &MetricDescriptor_FieldSubPath{selector: path.Selector(), subPath: subpath}) 204 } 205 } else if sub, ok := path.(*MetricDescriptor_FieldSubPath); ok { 206 selectedMask := &meta.Meta_FieldMask{ 207 Paths: []meta.Meta_FieldPath{sub.subPath.(meta.Meta_FieldPath)}, 208 } 209 for _, allowedPath := range selectedMask.FilterInputFields().Paths { 210 result.Paths = append(result.Paths, &MetricDescriptor_FieldSubPath{selector: MetricDescriptor_FieldPathSelectorMetadata, subPath: allowedPath}) 211 } 212 } 213 default: 214 result.Paths = append(result.Paths, path) 215 } 216 } 217 return result 218 } 219 220 // ToFieldMask is used for proto conversions 221 func (fieldMask *MetricDescriptor_FieldMask) ToProtoFieldMask() *googlefieldmaskpb.FieldMask { 222 protoFieldMask := &googlefieldmaskpb.FieldMask{} 223 for _, path := range fieldMask.Paths { 224 protoFieldMask.Paths = append(protoFieldMask.Paths, path.String()) 225 } 226 return protoFieldMask 227 } 228 229 func (fieldMask *MetricDescriptor_FieldMask) FromProtoFieldMask(protoFieldMask *googlefieldmaskpb.FieldMask) error { 230 if fieldMask == nil { 231 return status.Error(codes.Internal, "target field mask is nil") 232 } 233 fieldMask.Paths = make([]MetricDescriptor_FieldPath, 0, len(protoFieldMask.Paths)) 234 for _, strPath := range protoFieldMask.Paths { 235 path, err := ParseMetricDescriptor_FieldPath(strPath) 236 if err != nil { 237 return err 238 } 239 fieldMask.Paths = append(fieldMask.Paths, path) 240 } 241 return nil 242 } 243 244 // implement methods required by customType 245 func (fieldMask MetricDescriptor_FieldMask) Marshal() ([]byte, error) { 246 protoFieldMask := fieldMask.ToProtoFieldMask() 247 return proto.Marshal(protoFieldMask) 248 } 249 250 func (fieldMask *MetricDescriptor_FieldMask) Unmarshal(data []byte) error { 251 protoFieldMask := &googlefieldmaskpb.FieldMask{} 252 if err := proto.Unmarshal(data, protoFieldMask); err != nil { 253 return err 254 } 255 if err := fieldMask.FromProtoFieldMask(protoFieldMask); err != nil { 256 return err 257 } 258 return nil 259 } 260 261 func (fieldMask *MetricDescriptor_FieldMask) Size() int { 262 return proto.Size(fieldMask.ToProtoFieldMask()) 263 } 264 265 func (fieldMask MetricDescriptor_FieldMask) MarshalJSON() ([]byte, error) { 266 return json.Marshal(fieldMask.ToProtoFieldMask()) 267 } 268 269 func (fieldMask *MetricDescriptor_FieldMask) UnmarshalJSON(data []byte) error { 270 protoFieldMask := &googlefieldmaskpb.FieldMask{} 271 if err := json.Unmarshal(data, protoFieldMask); err != nil { 272 return err 273 } 274 if err := fieldMask.FromProtoFieldMask(protoFieldMask); err != nil { 275 return err 276 } 277 return nil 278 } 279 280 func (fieldMask *MetricDescriptor_FieldMask) AppendPath(path MetricDescriptor_FieldPath) { 281 fieldMask.Paths = append(fieldMask.Paths, path) 282 } 283 284 func (fieldMask *MetricDescriptor_FieldMask) AppendRawPath(path gotenobject.FieldPath) { 285 fieldMask.Paths = append(fieldMask.Paths, path.(MetricDescriptor_FieldPath)) 286 } 287 288 func (fieldMask *MetricDescriptor_FieldMask) GetPaths() []MetricDescriptor_FieldPath { 289 if fieldMask == nil { 290 return nil 291 } 292 return fieldMask.Paths 293 } 294 295 func (fieldMask *MetricDescriptor_FieldMask) GetRawPaths() []gotenobject.FieldPath { 296 if fieldMask == nil { 297 return nil 298 } 299 rawPaths := make([]gotenobject.FieldPath, 0, len(fieldMask.Paths)) 300 for _, path := range fieldMask.Paths { 301 rawPaths = append(rawPaths, path) 302 } 303 return rawPaths 304 } 305 306 func (fieldMask *MetricDescriptor_FieldMask) SetFromCliFlag(raw string) error { 307 path, err := ParseMetricDescriptor_FieldPath(raw) 308 if err != nil { 309 return err 310 } 311 fieldMask.Paths = append(fieldMask.Paths, path) 312 return nil 313 } 314 315 func (fieldMask *MetricDescriptor_FieldMask) Set(target, source *MetricDescriptor) { 316 for _, path := range fieldMask.Paths { 317 val, _ := path.GetSingle(source) 318 // if val is nil, then field does not exist in source, skip 319 // otherwise, process (can still reflect.ValueOf(val).IsNil!) 320 if val != nil { 321 path.WithIValue(val).SetTo(&target) 322 } 323 } 324 } 325 326 func (fieldMask *MetricDescriptor_FieldMask) SetRaw(target, source gotenobject.GotenObjectExt) { 327 fieldMask.Set(target.(*MetricDescriptor), source.(*MetricDescriptor)) 328 } 329 330 func (fieldMask *MetricDescriptor_FieldMask) Project(source *MetricDescriptor) *MetricDescriptor { 331 if source == nil { 332 return nil 333 } 334 if fieldMask == nil { 335 return source 336 } 337 result := &MetricDescriptor{} 338 metadataMask := &meta.Meta_FieldMask{} 339 wholeMetadataAccepted := false 340 labelsMask := &common.LabelDescriptor_FieldMask{} 341 wholeLabelsAccepted := false 342 metricDescriptorMetadataMask := &MetricDescriptor_MetricDescriptorMetadata_FieldMask{} 343 wholeMetricDescriptorMetadataAccepted := false 344 distributionBucketOptionsMask := &common.Distribution_BucketOptions_FieldMask{} 345 wholeDistributionBucketOptionsAccepted := false 346 promotedLabelKeySetsMask := &common.LabelKeySet_FieldMask{} 347 wholePromotedLabelKeySetsAccepted := false 348 indexSpecMask := &MetricDescriptor_IndexSpec_FieldMask{} 349 wholeIndexSpecAccepted := false 350 storageConfigMask := &MetricDescriptor_StorageConfig_FieldMask{} 351 wholeStorageConfigAccepted := false 352 353 for _, p := range fieldMask.Paths { 354 switch tp := p.(type) { 355 case *MetricDescriptor_FieldTerminalPath: 356 switch tp.selector { 357 case MetricDescriptor_FieldPathSelectorMetadata: 358 result.Metadata = source.Metadata 359 wholeMetadataAccepted = true 360 case MetricDescriptor_FieldPathSelectorName: 361 result.Name = source.Name 362 case MetricDescriptor_FieldPathSelectorType: 363 result.Type = source.Type 364 case MetricDescriptor_FieldPathSelectorResourceTypes: 365 result.ResourceTypes = source.ResourceTypes 366 case MetricDescriptor_FieldPathSelectorLabels: 367 result.Labels = source.Labels 368 wholeLabelsAccepted = true 369 case MetricDescriptor_FieldPathSelectorMetricKind: 370 result.MetricKind = source.MetricKind 371 case MetricDescriptor_FieldPathSelectorValueType: 372 result.ValueType = source.ValueType 373 case MetricDescriptor_FieldPathSelectorUnit: 374 result.Unit = source.Unit 375 case MetricDescriptor_FieldPathSelectorDescription: 376 result.Description = source.Description 377 case MetricDescriptor_FieldPathSelectorDisplayName: 378 result.DisplayName = source.DisplayName 379 case MetricDescriptor_FieldPathSelectorMetricDescriptorMetadata: 380 result.MetricDescriptorMetadata = source.MetricDescriptorMetadata 381 wholeMetricDescriptorMetadataAccepted = true 382 case MetricDescriptor_FieldPathSelectorDistributionBucketOptions: 383 result.DistributionBucketOptions = source.DistributionBucketOptions 384 wholeDistributionBucketOptionsAccepted = true 385 case MetricDescriptor_FieldPathSelectorPromotedLabelKeySets: 386 result.PromotedLabelKeySets = source.PromotedLabelKeySets 387 wholePromotedLabelKeySetsAccepted = true 388 case MetricDescriptor_FieldPathSelectorIndexSpec: 389 result.IndexSpec = source.IndexSpec 390 wholeIndexSpecAccepted = true 391 case MetricDescriptor_FieldPathSelectorStorageConfig: 392 result.StorageConfig = source.StorageConfig 393 wholeStorageConfigAccepted = true 394 } 395 case *MetricDescriptor_FieldSubPath: 396 switch tp.selector { 397 case MetricDescriptor_FieldPathSelectorMetadata: 398 metadataMask.AppendPath(tp.subPath.(meta.Meta_FieldPath)) 399 case MetricDescriptor_FieldPathSelectorLabels: 400 labelsMask.AppendPath(tp.subPath.(common.LabelDescriptor_FieldPath)) 401 case MetricDescriptor_FieldPathSelectorMetricDescriptorMetadata: 402 metricDescriptorMetadataMask.AppendPath(tp.subPath.(MetricDescriptorMetricDescriptorMetadata_FieldPath)) 403 case MetricDescriptor_FieldPathSelectorDistributionBucketOptions: 404 distributionBucketOptionsMask.AppendPath(tp.subPath.(common.DistributionBucketOptions_FieldPath)) 405 case MetricDescriptor_FieldPathSelectorPromotedLabelKeySets: 406 promotedLabelKeySetsMask.AppendPath(tp.subPath.(common.LabelKeySet_FieldPath)) 407 case MetricDescriptor_FieldPathSelectorIndexSpec: 408 indexSpecMask.AppendPath(tp.subPath.(MetricDescriptorIndexSpec_FieldPath)) 409 case MetricDescriptor_FieldPathSelectorStorageConfig: 410 storageConfigMask.AppendPath(tp.subPath.(MetricDescriptorStorageConfig_FieldPath)) 411 } 412 } 413 } 414 if wholeMetadataAccepted == false && len(metadataMask.Paths) > 0 { 415 result.Metadata = metadataMask.Project(source.GetMetadata()) 416 } 417 if wholeLabelsAccepted == false && len(labelsMask.Paths) > 0 { 418 for _, sourceItem := range source.GetLabels() { 419 result.Labels = append(result.Labels, labelsMask.Project(sourceItem)) 420 } 421 } 422 if wholeMetricDescriptorMetadataAccepted == false && len(metricDescriptorMetadataMask.Paths) > 0 { 423 result.MetricDescriptorMetadata = metricDescriptorMetadataMask.Project(source.GetMetricDescriptorMetadata()) 424 } 425 if wholeDistributionBucketOptionsAccepted == false && len(distributionBucketOptionsMask.Paths) > 0 { 426 result.DistributionBucketOptions = distributionBucketOptionsMask.Project(source.GetDistributionBucketOptions()) 427 } 428 if wholePromotedLabelKeySetsAccepted == false && len(promotedLabelKeySetsMask.Paths) > 0 { 429 for _, sourceItem := range source.GetPromotedLabelKeySets() { 430 result.PromotedLabelKeySets = append(result.PromotedLabelKeySets, promotedLabelKeySetsMask.Project(sourceItem)) 431 } 432 } 433 if wholeIndexSpecAccepted == false && len(indexSpecMask.Paths) > 0 { 434 result.IndexSpec = indexSpecMask.Project(source.GetIndexSpec()) 435 } 436 if wholeStorageConfigAccepted == false && len(storageConfigMask.Paths) > 0 { 437 result.StorageConfig = storageConfigMask.Project(source.GetStorageConfig()) 438 } 439 return result 440 } 441 442 func (fieldMask *MetricDescriptor_FieldMask) ProjectRaw(source gotenobject.GotenObjectExt) gotenobject.GotenObjectExt { 443 return fieldMask.Project(source.(*MetricDescriptor)) 444 } 445 446 func (fieldMask *MetricDescriptor_FieldMask) PathsCount() int { 447 if fieldMask == nil { 448 return 0 449 } 450 return len(fieldMask.Paths) 451 } 452 453 type MetricDescriptor_MetricDescriptorMetadata_FieldMask struct { 454 Paths []MetricDescriptorMetricDescriptorMetadata_FieldPath 455 } 456 457 func FullMetricDescriptor_MetricDescriptorMetadata_FieldMask() *MetricDescriptor_MetricDescriptorMetadata_FieldMask { 458 res := &MetricDescriptor_MetricDescriptorMetadata_FieldMask{} 459 res.Paths = append(res.Paths, &MetricDescriptorMetricDescriptorMetadata_FieldTerminalPath{selector: MetricDescriptorMetricDescriptorMetadata_FieldPathSelectorLaunchStage}) 460 return res 461 } 462 463 func (fieldMask *MetricDescriptor_MetricDescriptorMetadata_FieldMask) String() string { 464 if fieldMask == nil { 465 return "<nil>" 466 } 467 pathsStr := make([]string, 0, len(fieldMask.Paths)) 468 for _, path := range fieldMask.Paths { 469 pathsStr = append(pathsStr, path.String()) 470 } 471 return strings.Join(pathsStr, ", ") 472 } 473 474 func (fieldMask *MetricDescriptor_MetricDescriptorMetadata_FieldMask) IsFull() bool { 475 if fieldMask == nil { 476 return false 477 } 478 presentSelectors := make([]bool, 1) 479 for _, path := range fieldMask.Paths { 480 if asFinal, ok := path.(*MetricDescriptorMetricDescriptorMetadata_FieldTerminalPath); ok { 481 presentSelectors[int(asFinal.selector)] = true 482 } 483 } 484 for _, flag := range presentSelectors { 485 if !flag { 486 return false 487 } 488 } 489 return true 490 } 491 492 func (fieldMask *MetricDescriptor_MetricDescriptorMetadata_FieldMask) ProtoReflect() preflect.Message { 493 return gotenobject.MakeFieldMaskReflection(fieldMask, func(raw string) (gotenobject.FieldPath, error) { 494 return ParseMetricDescriptorMetricDescriptorMetadata_FieldPath(raw) 495 }) 496 } 497 498 func (fieldMask *MetricDescriptor_MetricDescriptorMetadata_FieldMask) ProtoMessage() {} 499 500 func (fieldMask *MetricDescriptor_MetricDescriptorMetadata_FieldMask) Reset() { 501 if fieldMask != nil { 502 fieldMask.Paths = nil 503 } 504 } 505 506 func (fieldMask *MetricDescriptor_MetricDescriptorMetadata_FieldMask) Subtract(other *MetricDescriptor_MetricDescriptorMetadata_FieldMask) *MetricDescriptor_MetricDescriptorMetadata_FieldMask { 507 result := &MetricDescriptor_MetricDescriptorMetadata_FieldMask{} 508 removedSelectors := make([]bool, 1) 509 510 for _, path := range other.GetPaths() { 511 switch tp := path.(type) { 512 case *MetricDescriptorMetricDescriptorMetadata_FieldTerminalPath: 513 removedSelectors[int(tp.selector)] = true 514 } 515 } 516 for _, path := range fieldMask.GetPaths() { 517 if !removedSelectors[int(path.Selector())] { 518 result.Paths = append(result.Paths, path) 519 } 520 } 521 522 if len(result.Paths) == 0 { 523 return nil 524 } 525 return result 526 } 527 528 func (fieldMask *MetricDescriptor_MetricDescriptorMetadata_FieldMask) SubtractRaw(other gotenobject.FieldMask) gotenobject.FieldMask { 529 return fieldMask.Subtract(other.(*MetricDescriptor_MetricDescriptorMetadata_FieldMask)) 530 } 531 532 // FilterInputFields generates copy of field paths with output_only field paths removed 533 func (fieldMask *MetricDescriptor_MetricDescriptorMetadata_FieldMask) FilterInputFields() *MetricDescriptor_MetricDescriptorMetadata_FieldMask { 534 result := &MetricDescriptor_MetricDescriptorMetadata_FieldMask{} 535 result.Paths = append(result.Paths, fieldMask.Paths...) 536 return result 537 } 538 539 // ToFieldMask is used for proto conversions 540 func (fieldMask *MetricDescriptor_MetricDescriptorMetadata_FieldMask) ToProtoFieldMask() *googlefieldmaskpb.FieldMask { 541 protoFieldMask := &googlefieldmaskpb.FieldMask{} 542 for _, path := range fieldMask.Paths { 543 protoFieldMask.Paths = append(protoFieldMask.Paths, path.String()) 544 } 545 return protoFieldMask 546 } 547 548 func (fieldMask *MetricDescriptor_MetricDescriptorMetadata_FieldMask) FromProtoFieldMask(protoFieldMask *googlefieldmaskpb.FieldMask) error { 549 if fieldMask == nil { 550 return status.Error(codes.Internal, "target field mask is nil") 551 } 552 fieldMask.Paths = make([]MetricDescriptorMetricDescriptorMetadata_FieldPath, 0, len(protoFieldMask.Paths)) 553 for _, strPath := range protoFieldMask.Paths { 554 path, err := ParseMetricDescriptorMetricDescriptorMetadata_FieldPath(strPath) 555 if err != nil { 556 return err 557 } 558 fieldMask.Paths = append(fieldMask.Paths, path) 559 } 560 return nil 561 } 562 563 // implement methods required by customType 564 func (fieldMask MetricDescriptor_MetricDescriptorMetadata_FieldMask) Marshal() ([]byte, error) { 565 protoFieldMask := fieldMask.ToProtoFieldMask() 566 return proto.Marshal(protoFieldMask) 567 } 568 569 func (fieldMask *MetricDescriptor_MetricDescriptorMetadata_FieldMask) Unmarshal(data []byte) error { 570 protoFieldMask := &googlefieldmaskpb.FieldMask{} 571 if err := proto.Unmarshal(data, protoFieldMask); err != nil { 572 return err 573 } 574 if err := fieldMask.FromProtoFieldMask(protoFieldMask); err != nil { 575 return err 576 } 577 return nil 578 } 579 580 func (fieldMask *MetricDescriptor_MetricDescriptorMetadata_FieldMask) Size() int { 581 return proto.Size(fieldMask.ToProtoFieldMask()) 582 } 583 584 func (fieldMask MetricDescriptor_MetricDescriptorMetadata_FieldMask) MarshalJSON() ([]byte, error) { 585 return json.Marshal(fieldMask.ToProtoFieldMask()) 586 } 587 588 func (fieldMask *MetricDescriptor_MetricDescriptorMetadata_FieldMask) UnmarshalJSON(data []byte) error { 589 protoFieldMask := &googlefieldmaskpb.FieldMask{} 590 if err := json.Unmarshal(data, protoFieldMask); err != nil { 591 return err 592 } 593 if err := fieldMask.FromProtoFieldMask(protoFieldMask); err != nil { 594 return err 595 } 596 return nil 597 } 598 599 func (fieldMask *MetricDescriptor_MetricDescriptorMetadata_FieldMask) AppendPath(path MetricDescriptorMetricDescriptorMetadata_FieldPath) { 600 fieldMask.Paths = append(fieldMask.Paths, path) 601 } 602 603 func (fieldMask *MetricDescriptor_MetricDescriptorMetadata_FieldMask) AppendRawPath(path gotenobject.FieldPath) { 604 fieldMask.Paths = append(fieldMask.Paths, path.(MetricDescriptorMetricDescriptorMetadata_FieldPath)) 605 } 606 607 func (fieldMask *MetricDescriptor_MetricDescriptorMetadata_FieldMask) GetPaths() []MetricDescriptorMetricDescriptorMetadata_FieldPath { 608 if fieldMask == nil { 609 return nil 610 } 611 return fieldMask.Paths 612 } 613 614 func (fieldMask *MetricDescriptor_MetricDescriptorMetadata_FieldMask) GetRawPaths() []gotenobject.FieldPath { 615 if fieldMask == nil { 616 return nil 617 } 618 rawPaths := make([]gotenobject.FieldPath, 0, len(fieldMask.Paths)) 619 for _, path := range fieldMask.Paths { 620 rawPaths = append(rawPaths, path) 621 } 622 return rawPaths 623 } 624 625 func (fieldMask *MetricDescriptor_MetricDescriptorMetadata_FieldMask) SetFromCliFlag(raw string) error { 626 path, err := ParseMetricDescriptorMetricDescriptorMetadata_FieldPath(raw) 627 if err != nil { 628 return err 629 } 630 fieldMask.Paths = append(fieldMask.Paths, path) 631 return nil 632 } 633 634 func (fieldMask *MetricDescriptor_MetricDescriptorMetadata_FieldMask) Set(target, source *MetricDescriptor_MetricDescriptorMetadata) { 635 for _, path := range fieldMask.Paths { 636 val, _ := path.GetSingle(source) 637 // if val is nil, then field does not exist in source, skip 638 // otherwise, process (can still reflect.ValueOf(val).IsNil!) 639 if val != nil { 640 path.WithIValue(val).SetTo(&target) 641 } 642 } 643 } 644 645 func (fieldMask *MetricDescriptor_MetricDescriptorMetadata_FieldMask) SetRaw(target, source gotenobject.GotenObjectExt) { 646 fieldMask.Set(target.(*MetricDescriptor_MetricDescriptorMetadata), source.(*MetricDescriptor_MetricDescriptorMetadata)) 647 } 648 649 func (fieldMask *MetricDescriptor_MetricDescriptorMetadata_FieldMask) Project(source *MetricDescriptor_MetricDescriptorMetadata) *MetricDescriptor_MetricDescriptorMetadata { 650 if source == nil { 651 return nil 652 } 653 if fieldMask == nil { 654 return source 655 } 656 result := &MetricDescriptor_MetricDescriptorMetadata{} 657 658 for _, p := range fieldMask.Paths { 659 switch tp := p.(type) { 660 case *MetricDescriptorMetricDescriptorMetadata_FieldTerminalPath: 661 switch tp.selector { 662 case MetricDescriptorMetricDescriptorMetadata_FieldPathSelectorLaunchStage: 663 result.LaunchStage = source.LaunchStage 664 } 665 } 666 } 667 return result 668 } 669 670 func (fieldMask *MetricDescriptor_MetricDescriptorMetadata_FieldMask) ProjectRaw(source gotenobject.GotenObjectExt) gotenobject.GotenObjectExt { 671 return fieldMask.Project(source.(*MetricDescriptor_MetricDescriptorMetadata)) 672 } 673 674 func (fieldMask *MetricDescriptor_MetricDescriptorMetadata_FieldMask) PathsCount() int { 675 if fieldMask == nil { 676 return 0 677 } 678 return len(fieldMask.Paths) 679 } 680 681 type MetricDescriptor_IndexSpec_FieldMask struct { 682 Paths []MetricDescriptorIndexSpec_FieldPath 683 } 684 685 func FullMetricDescriptor_IndexSpec_FieldMask() *MetricDescriptor_IndexSpec_FieldMask { 686 res := &MetricDescriptor_IndexSpec_FieldMask{} 687 res.Paths = append(res.Paths, &MetricDescriptorIndexSpec_FieldTerminalPath{selector: MetricDescriptorIndexSpec_FieldPathSelectorPerResource}) 688 return res 689 } 690 691 func (fieldMask *MetricDescriptor_IndexSpec_FieldMask) String() string { 692 if fieldMask == nil { 693 return "<nil>" 694 } 695 pathsStr := make([]string, 0, len(fieldMask.Paths)) 696 for _, path := range fieldMask.Paths { 697 pathsStr = append(pathsStr, path.String()) 698 } 699 return strings.Join(pathsStr, ", ") 700 } 701 702 func (fieldMask *MetricDescriptor_IndexSpec_FieldMask) IsFull() bool { 703 if fieldMask == nil { 704 return false 705 } 706 presentSelectors := make([]bool, 1) 707 for _, path := range fieldMask.Paths { 708 if asFinal, ok := path.(*MetricDescriptorIndexSpec_FieldTerminalPath); ok { 709 presentSelectors[int(asFinal.selector)] = true 710 } 711 } 712 for _, flag := range presentSelectors { 713 if !flag { 714 return false 715 } 716 } 717 return true 718 } 719 720 func (fieldMask *MetricDescriptor_IndexSpec_FieldMask) ProtoReflect() preflect.Message { 721 return gotenobject.MakeFieldMaskReflection(fieldMask, func(raw string) (gotenobject.FieldPath, error) { 722 return ParseMetricDescriptorIndexSpec_FieldPath(raw) 723 }) 724 } 725 726 func (fieldMask *MetricDescriptor_IndexSpec_FieldMask) ProtoMessage() {} 727 728 func (fieldMask *MetricDescriptor_IndexSpec_FieldMask) Reset() { 729 if fieldMask != nil { 730 fieldMask.Paths = nil 731 } 732 } 733 734 func (fieldMask *MetricDescriptor_IndexSpec_FieldMask) Subtract(other *MetricDescriptor_IndexSpec_FieldMask) *MetricDescriptor_IndexSpec_FieldMask { 735 result := &MetricDescriptor_IndexSpec_FieldMask{} 736 removedSelectors := make([]bool, 1) 737 otherSubMasks := map[MetricDescriptorIndexSpec_FieldPathSelector]gotenobject.FieldMask{ 738 MetricDescriptorIndexSpec_FieldPathSelectorPerResource: &MetricDescriptor_IndexSpec_PerMonitoredResource_FieldMask{}, 739 } 740 mySubMasks := map[MetricDescriptorIndexSpec_FieldPathSelector]gotenobject.FieldMask{ 741 MetricDescriptorIndexSpec_FieldPathSelectorPerResource: &MetricDescriptor_IndexSpec_PerMonitoredResource_FieldMask{}, 742 } 743 744 for _, path := range other.GetPaths() { 745 switch tp := path.(type) { 746 case *MetricDescriptorIndexSpec_FieldTerminalPath: 747 removedSelectors[int(tp.selector)] = true 748 case *MetricDescriptorIndexSpec_FieldSubPath: 749 otherSubMasks[tp.selector].AppendRawPath(tp.subPath) 750 } 751 } 752 for _, path := range fieldMask.GetPaths() { 753 if !removedSelectors[int(path.Selector())] { 754 if otherSubMask := otherSubMasks[path.Selector()]; otherSubMask != nil && otherSubMask.PathsCount() > 0 { 755 if tp, ok := path.(*MetricDescriptorIndexSpec_FieldTerminalPath); ok { 756 switch tp.selector { 757 case MetricDescriptorIndexSpec_FieldPathSelectorPerResource: 758 mySubMasks[MetricDescriptorIndexSpec_FieldPathSelectorPerResource] = FullMetricDescriptor_IndexSpec_PerMonitoredResource_FieldMask() 759 } 760 } else if tp, ok := path.(*MetricDescriptorIndexSpec_FieldSubPath); ok { 761 mySubMasks[tp.selector].AppendRawPath(tp.subPath) 762 } 763 } else { 764 result.Paths = append(result.Paths, path) 765 } 766 } 767 } 768 for selector, mySubMask := range mySubMasks { 769 if mySubMask.PathsCount() > 0 { 770 for _, allowedPath := range mySubMask.SubtractRaw(otherSubMasks[selector]).GetRawPaths() { 771 result.Paths = append(result.Paths, &MetricDescriptorIndexSpec_FieldSubPath{selector: selector, subPath: allowedPath}) 772 } 773 } 774 } 775 776 if len(result.Paths) == 0 { 777 return nil 778 } 779 return result 780 } 781 782 func (fieldMask *MetricDescriptor_IndexSpec_FieldMask) SubtractRaw(other gotenobject.FieldMask) gotenobject.FieldMask { 783 return fieldMask.Subtract(other.(*MetricDescriptor_IndexSpec_FieldMask)) 784 } 785 786 // FilterInputFields generates copy of field paths with output_only field paths removed 787 func (fieldMask *MetricDescriptor_IndexSpec_FieldMask) FilterInputFields() *MetricDescriptor_IndexSpec_FieldMask { 788 result := &MetricDescriptor_IndexSpec_FieldMask{} 789 result.Paths = append(result.Paths, fieldMask.Paths...) 790 return result 791 } 792 793 // ToFieldMask is used for proto conversions 794 func (fieldMask *MetricDescriptor_IndexSpec_FieldMask) ToProtoFieldMask() *googlefieldmaskpb.FieldMask { 795 protoFieldMask := &googlefieldmaskpb.FieldMask{} 796 for _, path := range fieldMask.Paths { 797 protoFieldMask.Paths = append(protoFieldMask.Paths, path.String()) 798 } 799 return protoFieldMask 800 } 801 802 func (fieldMask *MetricDescriptor_IndexSpec_FieldMask) FromProtoFieldMask(protoFieldMask *googlefieldmaskpb.FieldMask) error { 803 if fieldMask == nil { 804 return status.Error(codes.Internal, "target field mask is nil") 805 } 806 fieldMask.Paths = make([]MetricDescriptorIndexSpec_FieldPath, 0, len(protoFieldMask.Paths)) 807 for _, strPath := range protoFieldMask.Paths { 808 path, err := ParseMetricDescriptorIndexSpec_FieldPath(strPath) 809 if err != nil { 810 return err 811 } 812 fieldMask.Paths = append(fieldMask.Paths, path) 813 } 814 return nil 815 } 816 817 // implement methods required by customType 818 func (fieldMask MetricDescriptor_IndexSpec_FieldMask) Marshal() ([]byte, error) { 819 protoFieldMask := fieldMask.ToProtoFieldMask() 820 return proto.Marshal(protoFieldMask) 821 } 822 823 func (fieldMask *MetricDescriptor_IndexSpec_FieldMask) Unmarshal(data []byte) error { 824 protoFieldMask := &googlefieldmaskpb.FieldMask{} 825 if err := proto.Unmarshal(data, protoFieldMask); err != nil { 826 return err 827 } 828 if err := fieldMask.FromProtoFieldMask(protoFieldMask); err != nil { 829 return err 830 } 831 return nil 832 } 833 834 func (fieldMask *MetricDescriptor_IndexSpec_FieldMask) Size() int { 835 return proto.Size(fieldMask.ToProtoFieldMask()) 836 } 837 838 func (fieldMask MetricDescriptor_IndexSpec_FieldMask) MarshalJSON() ([]byte, error) { 839 return json.Marshal(fieldMask.ToProtoFieldMask()) 840 } 841 842 func (fieldMask *MetricDescriptor_IndexSpec_FieldMask) UnmarshalJSON(data []byte) error { 843 protoFieldMask := &googlefieldmaskpb.FieldMask{} 844 if err := json.Unmarshal(data, protoFieldMask); err != nil { 845 return err 846 } 847 if err := fieldMask.FromProtoFieldMask(protoFieldMask); err != nil { 848 return err 849 } 850 return nil 851 } 852 853 func (fieldMask *MetricDescriptor_IndexSpec_FieldMask) AppendPath(path MetricDescriptorIndexSpec_FieldPath) { 854 fieldMask.Paths = append(fieldMask.Paths, path) 855 } 856 857 func (fieldMask *MetricDescriptor_IndexSpec_FieldMask) AppendRawPath(path gotenobject.FieldPath) { 858 fieldMask.Paths = append(fieldMask.Paths, path.(MetricDescriptorIndexSpec_FieldPath)) 859 } 860 861 func (fieldMask *MetricDescriptor_IndexSpec_FieldMask) GetPaths() []MetricDescriptorIndexSpec_FieldPath { 862 if fieldMask == nil { 863 return nil 864 } 865 return fieldMask.Paths 866 } 867 868 func (fieldMask *MetricDescriptor_IndexSpec_FieldMask) GetRawPaths() []gotenobject.FieldPath { 869 if fieldMask == nil { 870 return nil 871 } 872 rawPaths := make([]gotenobject.FieldPath, 0, len(fieldMask.Paths)) 873 for _, path := range fieldMask.Paths { 874 rawPaths = append(rawPaths, path) 875 } 876 return rawPaths 877 } 878 879 func (fieldMask *MetricDescriptor_IndexSpec_FieldMask) SetFromCliFlag(raw string) error { 880 path, err := ParseMetricDescriptorIndexSpec_FieldPath(raw) 881 if err != nil { 882 return err 883 } 884 fieldMask.Paths = append(fieldMask.Paths, path) 885 return nil 886 } 887 888 func (fieldMask *MetricDescriptor_IndexSpec_FieldMask) Set(target, source *MetricDescriptor_IndexSpec) { 889 for _, path := range fieldMask.Paths { 890 val, _ := path.GetSingle(source) 891 // if val is nil, then field does not exist in source, skip 892 // otherwise, process (can still reflect.ValueOf(val).IsNil!) 893 if val != nil { 894 path.WithIValue(val).SetTo(&target) 895 } 896 } 897 } 898 899 func (fieldMask *MetricDescriptor_IndexSpec_FieldMask) SetRaw(target, source gotenobject.GotenObjectExt) { 900 fieldMask.Set(target.(*MetricDescriptor_IndexSpec), source.(*MetricDescriptor_IndexSpec)) 901 } 902 903 func (fieldMask *MetricDescriptor_IndexSpec_FieldMask) Project(source *MetricDescriptor_IndexSpec) *MetricDescriptor_IndexSpec { 904 if source == nil { 905 return nil 906 } 907 if fieldMask == nil { 908 return source 909 } 910 result := &MetricDescriptor_IndexSpec{} 911 perResourceMask := &MetricDescriptor_IndexSpec_PerMonitoredResource_FieldMask{} 912 wholePerResourceAccepted := false 913 914 for _, p := range fieldMask.Paths { 915 switch tp := p.(type) { 916 case *MetricDescriptorIndexSpec_FieldTerminalPath: 917 switch tp.selector { 918 case MetricDescriptorIndexSpec_FieldPathSelectorPerResource: 919 result.PerResource = source.PerResource 920 wholePerResourceAccepted = true 921 } 922 case *MetricDescriptorIndexSpec_FieldSubPath: 923 switch tp.selector { 924 case MetricDescriptorIndexSpec_FieldPathSelectorPerResource: 925 perResourceMask.AppendPath(tp.subPath.(MetricDescriptorIndexSpecPerMonitoredResource_FieldPath)) 926 } 927 } 928 } 929 if wholePerResourceAccepted == false && len(perResourceMask.Paths) > 0 { 930 for _, sourceItem := range source.GetPerResource() { 931 result.PerResource = append(result.PerResource, perResourceMask.Project(sourceItem)) 932 } 933 } 934 return result 935 } 936 937 func (fieldMask *MetricDescriptor_IndexSpec_FieldMask) ProjectRaw(source gotenobject.GotenObjectExt) gotenobject.GotenObjectExt { 938 return fieldMask.Project(source.(*MetricDescriptor_IndexSpec)) 939 } 940 941 func (fieldMask *MetricDescriptor_IndexSpec_FieldMask) PathsCount() int { 942 if fieldMask == nil { 943 return 0 944 } 945 return len(fieldMask.Paths) 946 } 947 948 type MetricDescriptor_StorageConfig_FieldMask struct { 949 Paths []MetricDescriptorStorageConfig_FieldPath 950 } 951 952 func FullMetricDescriptor_StorageConfig_FieldMask() *MetricDescriptor_StorageConfig_FieldMask { 953 res := &MetricDescriptor_StorageConfig_FieldMask{} 954 res.Paths = append(res.Paths, &MetricDescriptorStorageConfig_FieldTerminalPath{selector: MetricDescriptorStorageConfig_FieldPathSelectorStoreRawPoints}) 955 return res 956 } 957 958 func (fieldMask *MetricDescriptor_StorageConfig_FieldMask) String() string { 959 if fieldMask == nil { 960 return "<nil>" 961 } 962 pathsStr := make([]string, 0, len(fieldMask.Paths)) 963 for _, path := range fieldMask.Paths { 964 pathsStr = append(pathsStr, path.String()) 965 } 966 return strings.Join(pathsStr, ", ") 967 } 968 969 func (fieldMask *MetricDescriptor_StorageConfig_FieldMask) IsFull() bool { 970 if fieldMask == nil { 971 return false 972 } 973 presentSelectors := make([]bool, 1) 974 for _, path := range fieldMask.Paths { 975 if asFinal, ok := path.(*MetricDescriptorStorageConfig_FieldTerminalPath); ok { 976 presentSelectors[int(asFinal.selector)] = true 977 } 978 } 979 for _, flag := range presentSelectors { 980 if !flag { 981 return false 982 } 983 } 984 return true 985 } 986 987 func (fieldMask *MetricDescriptor_StorageConfig_FieldMask) ProtoReflect() preflect.Message { 988 return gotenobject.MakeFieldMaskReflection(fieldMask, func(raw string) (gotenobject.FieldPath, error) { 989 return ParseMetricDescriptorStorageConfig_FieldPath(raw) 990 }) 991 } 992 993 func (fieldMask *MetricDescriptor_StorageConfig_FieldMask) ProtoMessage() {} 994 995 func (fieldMask *MetricDescriptor_StorageConfig_FieldMask) Reset() { 996 if fieldMask != nil { 997 fieldMask.Paths = nil 998 } 999 } 1000 1001 func (fieldMask *MetricDescriptor_StorageConfig_FieldMask) Subtract(other *MetricDescriptor_StorageConfig_FieldMask) *MetricDescriptor_StorageConfig_FieldMask { 1002 result := &MetricDescriptor_StorageConfig_FieldMask{} 1003 removedSelectors := make([]bool, 1) 1004 1005 for _, path := range other.GetPaths() { 1006 switch tp := path.(type) { 1007 case *MetricDescriptorStorageConfig_FieldTerminalPath: 1008 removedSelectors[int(tp.selector)] = true 1009 } 1010 } 1011 for _, path := range fieldMask.GetPaths() { 1012 if !removedSelectors[int(path.Selector())] { 1013 result.Paths = append(result.Paths, path) 1014 } 1015 } 1016 1017 if len(result.Paths) == 0 { 1018 return nil 1019 } 1020 return result 1021 } 1022 1023 func (fieldMask *MetricDescriptor_StorageConfig_FieldMask) SubtractRaw(other gotenobject.FieldMask) gotenobject.FieldMask { 1024 return fieldMask.Subtract(other.(*MetricDescriptor_StorageConfig_FieldMask)) 1025 } 1026 1027 // FilterInputFields generates copy of field paths with output_only field paths removed 1028 func (fieldMask *MetricDescriptor_StorageConfig_FieldMask) FilterInputFields() *MetricDescriptor_StorageConfig_FieldMask { 1029 result := &MetricDescriptor_StorageConfig_FieldMask{} 1030 result.Paths = append(result.Paths, fieldMask.Paths...) 1031 return result 1032 } 1033 1034 // ToFieldMask is used for proto conversions 1035 func (fieldMask *MetricDescriptor_StorageConfig_FieldMask) ToProtoFieldMask() *googlefieldmaskpb.FieldMask { 1036 protoFieldMask := &googlefieldmaskpb.FieldMask{} 1037 for _, path := range fieldMask.Paths { 1038 protoFieldMask.Paths = append(protoFieldMask.Paths, path.String()) 1039 } 1040 return protoFieldMask 1041 } 1042 1043 func (fieldMask *MetricDescriptor_StorageConfig_FieldMask) FromProtoFieldMask(protoFieldMask *googlefieldmaskpb.FieldMask) error { 1044 if fieldMask == nil { 1045 return status.Error(codes.Internal, "target field mask is nil") 1046 } 1047 fieldMask.Paths = make([]MetricDescriptorStorageConfig_FieldPath, 0, len(protoFieldMask.Paths)) 1048 for _, strPath := range protoFieldMask.Paths { 1049 path, err := ParseMetricDescriptorStorageConfig_FieldPath(strPath) 1050 if err != nil { 1051 return err 1052 } 1053 fieldMask.Paths = append(fieldMask.Paths, path) 1054 } 1055 return nil 1056 } 1057 1058 // implement methods required by customType 1059 func (fieldMask MetricDescriptor_StorageConfig_FieldMask) Marshal() ([]byte, error) { 1060 protoFieldMask := fieldMask.ToProtoFieldMask() 1061 return proto.Marshal(protoFieldMask) 1062 } 1063 1064 func (fieldMask *MetricDescriptor_StorageConfig_FieldMask) Unmarshal(data []byte) error { 1065 protoFieldMask := &googlefieldmaskpb.FieldMask{} 1066 if err := proto.Unmarshal(data, protoFieldMask); err != nil { 1067 return err 1068 } 1069 if err := fieldMask.FromProtoFieldMask(protoFieldMask); err != nil { 1070 return err 1071 } 1072 return nil 1073 } 1074 1075 func (fieldMask *MetricDescriptor_StorageConfig_FieldMask) Size() int { 1076 return proto.Size(fieldMask.ToProtoFieldMask()) 1077 } 1078 1079 func (fieldMask MetricDescriptor_StorageConfig_FieldMask) MarshalJSON() ([]byte, error) { 1080 return json.Marshal(fieldMask.ToProtoFieldMask()) 1081 } 1082 1083 func (fieldMask *MetricDescriptor_StorageConfig_FieldMask) UnmarshalJSON(data []byte) error { 1084 protoFieldMask := &googlefieldmaskpb.FieldMask{} 1085 if err := json.Unmarshal(data, protoFieldMask); err != nil { 1086 return err 1087 } 1088 if err := fieldMask.FromProtoFieldMask(protoFieldMask); err != nil { 1089 return err 1090 } 1091 return nil 1092 } 1093 1094 func (fieldMask *MetricDescriptor_StorageConfig_FieldMask) AppendPath(path MetricDescriptorStorageConfig_FieldPath) { 1095 fieldMask.Paths = append(fieldMask.Paths, path) 1096 } 1097 1098 func (fieldMask *MetricDescriptor_StorageConfig_FieldMask) AppendRawPath(path gotenobject.FieldPath) { 1099 fieldMask.Paths = append(fieldMask.Paths, path.(MetricDescriptorStorageConfig_FieldPath)) 1100 } 1101 1102 func (fieldMask *MetricDescriptor_StorageConfig_FieldMask) GetPaths() []MetricDescriptorStorageConfig_FieldPath { 1103 if fieldMask == nil { 1104 return nil 1105 } 1106 return fieldMask.Paths 1107 } 1108 1109 func (fieldMask *MetricDescriptor_StorageConfig_FieldMask) GetRawPaths() []gotenobject.FieldPath { 1110 if fieldMask == nil { 1111 return nil 1112 } 1113 rawPaths := make([]gotenobject.FieldPath, 0, len(fieldMask.Paths)) 1114 for _, path := range fieldMask.Paths { 1115 rawPaths = append(rawPaths, path) 1116 } 1117 return rawPaths 1118 } 1119 1120 func (fieldMask *MetricDescriptor_StorageConfig_FieldMask) SetFromCliFlag(raw string) error { 1121 path, err := ParseMetricDescriptorStorageConfig_FieldPath(raw) 1122 if err != nil { 1123 return err 1124 } 1125 fieldMask.Paths = append(fieldMask.Paths, path) 1126 return nil 1127 } 1128 1129 func (fieldMask *MetricDescriptor_StorageConfig_FieldMask) Set(target, source *MetricDescriptor_StorageConfig) { 1130 for _, path := range fieldMask.Paths { 1131 val, _ := path.GetSingle(source) 1132 // if val is nil, then field does not exist in source, skip 1133 // otherwise, process (can still reflect.ValueOf(val).IsNil!) 1134 if val != nil { 1135 path.WithIValue(val).SetTo(&target) 1136 } 1137 } 1138 } 1139 1140 func (fieldMask *MetricDescriptor_StorageConfig_FieldMask) SetRaw(target, source gotenobject.GotenObjectExt) { 1141 fieldMask.Set(target.(*MetricDescriptor_StorageConfig), source.(*MetricDescriptor_StorageConfig)) 1142 } 1143 1144 func (fieldMask *MetricDescriptor_StorageConfig_FieldMask) Project(source *MetricDescriptor_StorageConfig) *MetricDescriptor_StorageConfig { 1145 if source == nil { 1146 return nil 1147 } 1148 if fieldMask == nil { 1149 return source 1150 } 1151 result := &MetricDescriptor_StorageConfig{} 1152 1153 for _, p := range fieldMask.Paths { 1154 switch tp := p.(type) { 1155 case *MetricDescriptorStorageConfig_FieldTerminalPath: 1156 switch tp.selector { 1157 case MetricDescriptorStorageConfig_FieldPathSelectorStoreRawPoints: 1158 result.StoreRawPoints = source.StoreRawPoints 1159 } 1160 } 1161 } 1162 return result 1163 } 1164 1165 func (fieldMask *MetricDescriptor_StorageConfig_FieldMask) ProjectRaw(source gotenobject.GotenObjectExt) gotenobject.GotenObjectExt { 1166 return fieldMask.Project(source.(*MetricDescriptor_StorageConfig)) 1167 } 1168 1169 func (fieldMask *MetricDescriptor_StorageConfig_FieldMask) PathsCount() int { 1170 if fieldMask == nil { 1171 return 0 1172 } 1173 return len(fieldMask.Paths) 1174 } 1175 1176 type MetricDescriptor_IndexSpec_Index_FieldMask struct { 1177 Paths []MetricDescriptorIndexSpecIndex_FieldPath 1178 } 1179 1180 func FullMetricDescriptor_IndexSpec_Index_FieldMask() *MetricDescriptor_IndexSpec_Index_FieldMask { 1181 res := &MetricDescriptor_IndexSpec_Index_FieldMask{} 1182 res.Paths = append(res.Paths, &MetricDescriptorIndexSpecIndex_FieldTerminalPath{selector: MetricDescriptorIndexSpecIndex_FieldPathSelectorPromotedLabels}) 1183 res.Paths = append(res.Paths, &MetricDescriptorIndexSpecIndex_FieldTerminalPath{selector: MetricDescriptorIndexSpecIndex_FieldPathSelectorWriteOnly}) 1184 return res 1185 } 1186 1187 func (fieldMask *MetricDescriptor_IndexSpec_Index_FieldMask) String() string { 1188 if fieldMask == nil { 1189 return "<nil>" 1190 } 1191 pathsStr := make([]string, 0, len(fieldMask.Paths)) 1192 for _, path := range fieldMask.Paths { 1193 pathsStr = append(pathsStr, path.String()) 1194 } 1195 return strings.Join(pathsStr, ", ") 1196 } 1197 1198 func (fieldMask *MetricDescriptor_IndexSpec_Index_FieldMask) IsFull() bool { 1199 if fieldMask == nil { 1200 return false 1201 } 1202 presentSelectors := make([]bool, 2) 1203 for _, path := range fieldMask.Paths { 1204 if asFinal, ok := path.(*MetricDescriptorIndexSpecIndex_FieldTerminalPath); ok { 1205 presentSelectors[int(asFinal.selector)] = true 1206 } 1207 } 1208 for _, flag := range presentSelectors { 1209 if !flag { 1210 return false 1211 } 1212 } 1213 return true 1214 } 1215 1216 func (fieldMask *MetricDescriptor_IndexSpec_Index_FieldMask) ProtoReflect() preflect.Message { 1217 return gotenobject.MakeFieldMaskReflection(fieldMask, func(raw string) (gotenobject.FieldPath, error) { 1218 return ParseMetricDescriptorIndexSpecIndex_FieldPath(raw) 1219 }) 1220 } 1221 1222 func (fieldMask *MetricDescriptor_IndexSpec_Index_FieldMask) ProtoMessage() {} 1223 1224 func (fieldMask *MetricDescriptor_IndexSpec_Index_FieldMask) Reset() { 1225 if fieldMask != nil { 1226 fieldMask.Paths = nil 1227 } 1228 } 1229 1230 func (fieldMask *MetricDescriptor_IndexSpec_Index_FieldMask) Subtract(other *MetricDescriptor_IndexSpec_Index_FieldMask) *MetricDescriptor_IndexSpec_Index_FieldMask { 1231 result := &MetricDescriptor_IndexSpec_Index_FieldMask{} 1232 removedSelectors := make([]bool, 2) 1233 1234 for _, path := range other.GetPaths() { 1235 switch tp := path.(type) { 1236 case *MetricDescriptorIndexSpecIndex_FieldTerminalPath: 1237 removedSelectors[int(tp.selector)] = true 1238 } 1239 } 1240 for _, path := range fieldMask.GetPaths() { 1241 if !removedSelectors[int(path.Selector())] { 1242 result.Paths = append(result.Paths, path) 1243 } 1244 } 1245 1246 if len(result.Paths) == 0 { 1247 return nil 1248 } 1249 return result 1250 } 1251 1252 func (fieldMask *MetricDescriptor_IndexSpec_Index_FieldMask) SubtractRaw(other gotenobject.FieldMask) gotenobject.FieldMask { 1253 return fieldMask.Subtract(other.(*MetricDescriptor_IndexSpec_Index_FieldMask)) 1254 } 1255 1256 // FilterInputFields generates copy of field paths with output_only field paths removed 1257 func (fieldMask *MetricDescriptor_IndexSpec_Index_FieldMask) FilterInputFields() *MetricDescriptor_IndexSpec_Index_FieldMask { 1258 result := &MetricDescriptor_IndexSpec_Index_FieldMask{} 1259 result.Paths = append(result.Paths, fieldMask.Paths...) 1260 return result 1261 } 1262 1263 // ToFieldMask is used for proto conversions 1264 func (fieldMask *MetricDescriptor_IndexSpec_Index_FieldMask) ToProtoFieldMask() *googlefieldmaskpb.FieldMask { 1265 protoFieldMask := &googlefieldmaskpb.FieldMask{} 1266 for _, path := range fieldMask.Paths { 1267 protoFieldMask.Paths = append(protoFieldMask.Paths, path.String()) 1268 } 1269 return protoFieldMask 1270 } 1271 1272 func (fieldMask *MetricDescriptor_IndexSpec_Index_FieldMask) FromProtoFieldMask(protoFieldMask *googlefieldmaskpb.FieldMask) error { 1273 if fieldMask == nil { 1274 return status.Error(codes.Internal, "target field mask is nil") 1275 } 1276 fieldMask.Paths = make([]MetricDescriptorIndexSpecIndex_FieldPath, 0, len(protoFieldMask.Paths)) 1277 for _, strPath := range protoFieldMask.Paths { 1278 path, err := ParseMetricDescriptorIndexSpecIndex_FieldPath(strPath) 1279 if err != nil { 1280 return err 1281 } 1282 fieldMask.Paths = append(fieldMask.Paths, path) 1283 } 1284 return nil 1285 } 1286 1287 // implement methods required by customType 1288 func (fieldMask MetricDescriptor_IndexSpec_Index_FieldMask) Marshal() ([]byte, error) { 1289 protoFieldMask := fieldMask.ToProtoFieldMask() 1290 return proto.Marshal(protoFieldMask) 1291 } 1292 1293 func (fieldMask *MetricDescriptor_IndexSpec_Index_FieldMask) Unmarshal(data []byte) error { 1294 protoFieldMask := &googlefieldmaskpb.FieldMask{} 1295 if err := proto.Unmarshal(data, protoFieldMask); err != nil { 1296 return err 1297 } 1298 if err := fieldMask.FromProtoFieldMask(protoFieldMask); err != nil { 1299 return err 1300 } 1301 return nil 1302 } 1303 1304 func (fieldMask *MetricDescriptor_IndexSpec_Index_FieldMask) Size() int { 1305 return proto.Size(fieldMask.ToProtoFieldMask()) 1306 } 1307 1308 func (fieldMask MetricDescriptor_IndexSpec_Index_FieldMask) MarshalJSON() ([]byte, error) { 1309 return json.Marshal(fieldMask.ToProtoFieldMask()) 1310 } 1311 1312 func (fieldMask *MetricDescriptor_IndexSpec_Index_FieldMask) UnmarshalJSON(data []byte) error { 1313 protoFieldMask := &googlefieldmaskpb.FieldMask{} 1314 if err := json.Unmarshal(data, protoFieldMask); err != nil { 1315 return err 1316 } 1317 if err := fieldMask.FromProtoFieldMask(protoFieldMask); err != nil { 1318 return err 1319 } 1320 return nil 1321 } 1322 1323 func (fieldMask *MetricDescriptor_IndexSpec_Index_FieldMask) AppendPath(path MetricDescriptorIndexSpecIndex_FieldPath) { 1324 fieldMask.Paths = append(fieldMask.Paths, path) 1325 } 1326 1327 func (fieldMask *MetricDescriptor_IndexSpec_Index_FieldMask) AppendRawPath(path gotenobject.FieldPath) { 1328 fieldMask.Paths = append(fieldMask.Paths, path.(MetricDescriptorIndexSpecIndex_FieldPath)) 1329 } 1330 1331 func (fieldMask *MetricDescriptor_IndexSpec_Index_FieldMask) GetPaths() []MetricDescriptorIndexSpecIndex_FieldPath { 1332 if fieldMask == nil { 1333 return nil 1334 } 1335 return fieldMask.Paths 1336 } 1337 1338 func (fieldMask *MetricDescriptor_IndexSpec_Index_FieldMask) GetRawPaths() []gotenobject.FieldPath { 1339 if fieldMask == nil { 1340 return nil 1341 } 1342 rawPaths := make([]gotenobject.FieldPath, 0, len(fieldMask.Paths)) 1343 for _, path := range fieldMask.Paths { 1344 rawPaths = append(rawPaths, path) 1345 } 1346 return rawPaths 1347 } 1348 1349 func (fieldMask *MetricDescriptor_IndexSpec_Index_FieldMask) SetFromCliFlag(raw string) error { 1350 path, err := ParseMetricDescriptorIndexSpecIndex_FieldPath(raw) 1351 if err != nil { 1352 return err 1353 } 1354 fieldMask.Paths = append(fieldMask.Paths, path) 1355 return nil 1356 } 1357 1358 func (fieldMask *MetricDescriptor_IndexSpec_Index_FieldMask) Set(target, source *MetricDescriptor_IndexSpec_Index) { 1359 for _, path := range fieldMask.Paths { 1360 val, _ := path.GetSingle(source) 1361 // if val is nil, then field does not exist in source, skip 1362 // otherwise, process (can still reflect.ValueOf(val).IsNil!) 1363 if val != nil { 1364 path.WithIValue(val).SetTo(&target) 1365 } 1366 } 1367 } 1368 1369 func (fieldMask *MetricDescriptor_IndexSpec_Index_FieldMask) SetRaw(target, source gotenobject.GotenObjectExt) { 1370 fieldMask.Set(target.(*MetricDescriptor_IndexSpec_Index), source.(*MetricDescriptor_IndexSpec_Index)) 1371 } 1372 1373 func (fieldMask *MetricDescriptor_IndexSpec_Index_FieldMask) Project(source *MetricDescriptor_IndexSpec_Index) *MetricDescriptor_IndexSpec_Index { 1374 if source == nil { 1375 return nil 1376 } 1377 if fieldMask == nil { 1378 return source 1379 } 1380 result := &MetricDescriptor_IndexSpec_Index{} 1381 1382 for _, p := range fieldMask.Paths { 1383 switch tp := p.(type) { 1384 case *MetricDescriptorIndexSpecIndex_FieldTerminalPath: 1385 switch tp.selector { 1386 case MetricDescriptorIndexSpecIndex_FieldPathSelectorPromotedLabels: 1387 result.PromotedLabels = source.PromotedLabels 1388 case MetricDescriptorIndexSpecIndex_FieldPathSelectorWriteOnly: 1389 result.WriteOnly = source.WriteOnly 1390 } 1391 } 1392 } 1393 return result 1394 } 1395 1396 func (fieldMask *MetricDescriptor_IndexSpec_Index_FieldMask) ProjectRaw(source gotenobject.GotenObjectExt) gotenobject.GotenObjectExt { 1397 return fieldMask.Project(source.(*MetricDescriptor_IndexSpec_Index)) 1398 } 1399 1400 func (fieldMask *MetricDescriptor_IndexSpec_Index_FieldMask) PathsCount() int { 1401 if fieldMask == nil { 1402 return 0 1403 } 1404 return len(fieldMask.Paths) 1405 } 1406 1407 type MetricDescriptor_IndexSpec_PerMonitoredResource_FieldMask struct { 1408 Paths []MetricDescriptorIndexSpecPerMonitoredResource_FieldPath 1409 } 1410 1411 func FullMetricDescriptor_IndexSpec_PerMonitoredResource_FieldMask() *MetricDescriptor_IndexSpec_PerMonitoredResource_FieldMask { 1412 res := &MetricDescriptor_IndexSpec_PerMonitoredResource_FieldMask{} 1413 res.Paths = append(res.Paths, &MetricDescriptorIndexSpecPerMonitoredResource_FieldTerminalPath{selector: MetricDescriptorIndexSpecPerMonitoredResource_FieldPathSelectorResource}) 1414 res.Paths = append(res.Paths, &MetricDescriptorIndexSpecPerMonitoredResource_FieldTerminalPath{selector: MetricDescriptorIndexSpecPerMonitoredResource_FieldPathSelectorIndices}) 1415 return res 1416 } 1417 1418 func (fieldMask *MetricDescriptor_IndexSpec_PerMonitoredResource_FieldMask) String() string { 1419 if fieldMask == nil { 1420 return "<nil>" 1421 } 1422 pathsStr := make([]string, 0, len(fieldMask.Paths)) 1423 for _, path := range fieldMask.Paths { 1424 pathsStr = append(pathsStr, path.String()) 1425 } 1426 return strings.Join(pathsStr, ", ") 1427 } 1428 1429 func (fieldMask *MetricDescriptor_IndexSpec_PerMonitoredResource_FieldMask) IsFull() bool { 1430 if fieldMask == nil { 1431 return false 1432 } 1433 presentSelectors := make([]bool, 2) 1434 for _, path := range fieldMask.Paths { 1435 if asFinal, ok := path.(*MetricDescriptorIndexSpecPerMonitoredResource_FieldTerminalPath); ok { 1436 presentSelectors[int(asFinal.selector)] = true 1437 } 1438 } 1439 for _, flag := range presentSelectors { 1440 if !flag { 1441 return false 1442 } 1443 } 1444 return true 1445 } 1446 1447 func (fieldMask *MetricDescriptor_IndexSpec_PerMonitoredResource_FieldMask) ProtoReflect() preflect.Message { 1448 return gotenobject.MakeFieldMaskReflection(fieldMask, func(raw string) (gotenobject.FieldPath, error) { 1449 return ParseMetricDescriptorIndexSpecPerMonitoredResource_FieldPath(raw) 1450 }) 1451 } 1452 1453 func (fieldMask *MetricDescriptor_IndexSpec_PerMonitoredResource_FieldMask) ProtoMessage() {} 1454 1455 func (fieldMask *MetricDescriptor_IndexSpec_PerMonitoredResource_FieldMask) Reset() { 1456 if fieldMask != nil { 1457 fieldMask.Paths = nil 1458 } 1459 } 1460 1461 func (fieldMask *MetricDescriptor_IndexSpec_PerMonitoredResource_FieldMask) Subtract(other *MetricDescriptor_IndexSpec_PerMonitoredResource_FieldMask) *MetricDescriptor_IndexSpec_PerMonitoredResource_FieldMask { 1462 result := &MetricDescriptor_IndexSpec_PerMonitoredResource_FieldMask{} 1463 removedSelectors := make([]bool, 2) 1464 otherSubMasks := map[MetricDescriptorIndexSpecPerMonitoredResource_FieldPathSelector]gotenobject.FieldMask{ 1465 MetricDescriptorIndexSpecPerMonitoredResource_FieldPathSelectorIndices: &MetricDescriptor_IndexSpec_Index_FieldMask{}, 1466 } 1467 mySubMasks := map[MetricDescriptorIndexSpecPerMonitoredResource_FieldPathSelector]gotenobject.FieldMask{ 1468 MetricDescriptorIndexSpecPerMonitoredResource_FieldPathSelectorIndices: &MetricDescriptor_IndexSpec_Index_FieldMask{}, 1469 } 1470 1471 for _, path := range other.GetPaths() { 1472 switch tp := path.(type) { 1473 case *MetricDescriptorIndexSpecPerMonitoredResource_FieldTerminalPath: 1474 removedSelectors[int(tp.selector)] = true 1475 case *MetricDescriptorIndexSpecPerMonitoredResource_FieldSubPath: 1476 otherSubMasks[tp.selector].AppendRawPath(tp.subPath) 1477 } 1478 } 1479 for _, path := range fieldMask.GetPaths() { 1480 if !removedSelectors[int(path.Selector())] { 1481 if otherSubMask := otherSubMasks[path.Selector()]; otherSubMask != nil && otherSubMask.PathsCount() > 0 { 1482 if tp, ok := path.(*MetricDescriptorIndexSpecPerMonitoredResource_FieldTerminalPath); ok { 1483 switch tp.selector { 1484 case MetricDescriptorIndexSpecPerMonitoredResource_FieldPathSelectorIndices: 1485 mySubMasks[MetricDescriptorIndexSpecPerMonitoredResource_FieldPathSelectorIndices] = FullMetricDescriptor_IndexSpec_Index_FieldMask() 1486 } 1487 } else if tp, ok := path.(*MetricDescriptorIndexSpecPerMonitoredResource_FieldSubPath); ok { 1488 mySubMasks[tp.selector].AppendRawPath(tp.subPath) 1489 } 1490 } else { 1491 result.Paths = append(result.Paths, path) 1492 } 1493 } 1494 } 1495 for selector, mySubMask := range mySubMasks { 1496 if mySubMask.PathsCount() > 0 { 1497 for _, allowedPath := range mySubMask.SubtractRaw(otherSubMasks[selector]).GetRawPaths() { 1498 result.Paths = append(result.Paths, &MetricDescriptorIndexSpecPerMonitoredResource_FieldSubPath{selector: selector, subPath: allowedPath}) 1499 } 1500 } 1501 } 1502 1503 if len(result.Paths) == 0 { 1504 return nil 1505 } 1506 return result 1507 } 1508 1509 func (fieldMask *MetricDescriptor_IndexSpec_PerMonitoredResource_FieldMask) SubtractRaw(other gotenobject.FieldMask) gotenobject.FieldMask { 1510 return fieldMask.Subtract(other.(*MetricDescriptor_IndexSpec_PerMonitoredResource_FieldMask)) 1511 } 1512 1513 // FilterInputFields generates copy of field paths with output_only field paths removed 1514 func (fieldMask *MetricDescriptor_IndexSpec_PerMonitoredResource_FieldMask) FilterInputFields() *MetricDescriptor_IndexSpec_PerMonitoredResource_FieldMask { 1515 result := &MetricDescriptor_IndexSpec_PerMonitoredResource_FieldMask{} 1516 result.Paths = append(result.Paths, fieldMask.Paths...) 1517 return result 1518 } 1519 1520 // ToFieldMask is used for proto conversions 1521 func (fieldMask *MetricDescriptor_IndexSpec_PerMonitoredResource_FieldMask) ToProtoFieldMask() *googlefieldmaskpb.FieldMask { 1522 protoFieldMask := &googlefieldmaskpb.FieldMask{} 1523 for _, path := range fieldMask.Paths { 1524 protoFieldMask.Paths = append(protoFieldMask.Paths, path.String()) 1525 } 1526 return protoFieldMask 1527 } 1528 1529 func (fieldMask *MetricDescriptor_IndexSpec_PerMonitoredResource_FieldMask) FromProtoFieldMask(protoFieldMask *googlefieldmaskpb.FieldMask) error { 1530 if fieldMask == nil { 1531 return status.Error(codes.Internal, "target field mask is nil") 1532 } 1533 fieldMask.Paths = make([]MetricDescriptorIndexSpecPerMonitoredResource_FieldPath, 0, len(protoFieldMask.Paths)) 1534 for _, strPath := range protoFieldMask.Paths { 1535 path, err := ParseMetricDescriptorIndexSpecPerMonitoredResource_FieldPath(strPath) 1536 if err != nil { 1537 return err 1538 } 1539 fieldMask.Paths = append(fieldMask.Paths, path) 1540 } 1541 return nil 1542 } 1543 1544 // implement methods required by customType 1545 func (fieldMask MetricDescriptor_IndexSpec_PerMonitoredResource_FieldMask) Marshal() ([]byte, error) { 1546 protoFieldMask := fieldMask.ToProtoFieldMask() 1547 return proto.Marshal(protoFieldMask) 1548 } 1549 1550 func (fieldMask *MetricDescriptor_IndexSpec_PerMonitoredResource_FieldMask) Unmarshal(data []byte) error { 1551 protoFieldMask := &googlefieldmaskpb.FieldMask{} 1552 if err := proto.Unmarshal(data, protoFieldMask); err != nil { 1553 return err 1554 } 1555 if err := fieldMask.FromProtoFieldMask(protoFieldMask); err != nil { 1556 return err 1557 } 1558 return nil 1559 } 1560 1561 func (fieldMask *MetricDescriptor_IndexSpec_PerMonitoredResource_FieldMask) Size() int { 1562 return proto.Size(fieldMask.ToProtoFieldMask()) 1563 } 1564 1565 func (fieldMask MetricDescriptor_IndexSpec_PerMonitoredResource_FieldMask) MarshalJSON() ([]byte, error) { 1566 return json.Marshal(fieldMask.ToProtoFieldMask()) 1567 } 1568 1569 func (fieldMask *MetricDescriptor_IndexSpec_PerMonitoredResource_FieldMask) UnmarshalJSON(data []byte) error { 1570 protoFieldMask := &googlefieldmaskpb.FieldMask{} 1571 if err := json.Unmarshal(data, protoFieldMask); err != nil { 1572 return err 1573 } 1574 if err := fieldMask.FromProtoFieldMask(protoFieldMask); err != nil { 1575 return err 1576 } 1577 return nil 1578 } 1579 1580 func (fieldMask *MetricDescriptor_IndexSpec_PerMonitoredResource_FieldMask) AppendPath(path MetricDescriptorIndexSpecPerMonitoredResource_FieldPath) { 1581 fieldMask.Paths = append(fieldMask.Paths, path) 1582 } 1583 1584 func (fieldMask *MetricDescriptor_IndexSpec_PerMonitoredResource_FieldMask) AppendRawPath(path gotenobject.FieldPath) { 1585 fieldMask.Paths = append(fieldMask.Paths, path.(MetricDescriptorIndexSpecPerMonitoredResource_FieldPath)) 1586 } 1587 1588 func (fieldMask *MetricDescriptor_IndexSpec_PerMonitoredResource_FieldMask) GetPaths() []MetricDescriptorIndexSpecPerMonitoredResource_FieldPath { 1589 if fieldMask == nil { 1590 return nil 1591 } 1592 return fieldMask.Paths 1593 } 1594 1595 func (fieldMask *MetricDescriptor_IndexSpec_PerMonitoredResource_FieldMask) GetRawPaths() []gotenobject.FieldPath { 1596 if fieldMask == nil { 1597 return nil 1598 } 1599 rawPaths := make([]gotenobject.FieldPath, 0, len(fieldMask.Paths)) 1600 for _, path := range fieldMask.Paths { 1601 rawPaths = append(rawPaths, path) 1602 } 1603 return rawPaths 1604 } 1605 1606 func (fieldMask *MetricDescriptor_IndexSpec_PerMonitoredResource_FieldMask) SetFromCliFlag(raw string) error { 1607 path, err := ParseMetricDescriptorIndexSpecPerMonitoredResource_FieldPath(raw) 1608 if err != nil { 1609 return err 1610 } 1611 fieldMask.Paths = append(fieldMask.Paths, path) 1612 return nil 1613 } 1614 1615 func (fieldMask *MetricDescriptor_IndexSpec_PerMonitoredResource_FieldMask) Set(target, source *MetricDescriptor_IndexSpec_PerMonitoredResource) { 1616 for _, path := range fieldMask.Paths { 1617 val, _ := path.GetSingle(source) 1618 // if val is nil, then field does not exist in source, skip 1619 // otherwise, process (can still reflect.ValueOf(val).IsNil!) 1620 if val != nil { 1621 path.WithIValue(val).SetTo(&target) 1622 } 1623 } 1624 } 1625 1626 func (fieldMask *MetricDescriptor_IndexSpec_PerMonitoredResource_FieldMask) SetRaw(target, source gotenobject.GotenObjectExt) { 1627 fieldMask.Set(target.(*MetricDescriptor_IndexSpec_PerMonitoredResource), source.(*MetricDescriptor_IndexSpec_PerMonitoredResource)) 1628 } 1629 1630 func (fieldMask *MetricDescriptor_IndexSpec_PerMonitoredResource_FieldMask) Project(source *MetricDescriptor_IndexSpec_PerMonitoredResource) *MetricDescriptor_IndexSpec_PerMonitoredResource { 1631 if source == nil { 1632 return nil 1633 } 1634 if fieldMask == nil { 1635 return source 1636 } 1637 result := &MetricDescriptor_IndexSpec_PerMonitoredResource{} 1638 indicesMask := &MetricDescriptor_IndexSpec_Index_FieldMask{} 1639 wholeIndicesAccepted := false 1640 1641 for _, p := range fieldMask.Paths { 1642 switch tp := p.(type) { 1643 case *MetricDescriptorIndexSpecPerMonitoredResource_FieldTerminalPath: 1644 switch tp.selector { 1645 case MetricDescriptorIndexSpecPerMonitoredResource_FieldPathSelectorResource: 1646 result.Resource = source.Resource 1647 case MetricDescriptorIndexSpecPerMonitoredResource_FieldPathSelectorIndices: 1648 result.Indices = source.Indices 1649 wholeIndicesAccepted = true 1650 } 1651 case *MetricDescriptorIndexSpecPerMonitoredResource_FieldSubPath: 1652 switch tp.selector { 1653 case MetricDescriptorIndexSpecPerMonitoredResource_FieldPathSelectorIndices: 1654 indicesMask.AppendPath(tp.subPath.(MetricDescriptorIndexSpecIndex_FieldPath)) 1655 } 1656 } 1657 } 1658 if wholeIndicesAccepted == false && len(indicesMask.Paths) > 0 { 1659 for _, sourceItem := range source.GetIndices() { 1660 result.Indices = append(result.Indices, indicesMask.Project(sourceItem)) 1661 } 1662 } 1663 return result 1664 } 1665 1666 func (fieldMask *MetricDescriptor_IndexSpec_PerMonitoredResource_FieldMask) ProjectRaw(source gotenobject.GotenObjectExt) gotenobject.GotenObjectExt { 1667 return fieldMask.Project(source.(*MetricDescriptor_IndexSpec_PerMonitoredResource)) 1668 } 1669 1670 func (fieldMask *MetricDescriptor_IndexSpec_PerMonitoredResource_FieldMask) PathsCount() int { 1671 if fieldMask == nil { 1672 return 0 1673 } 1674 return len(fieldMask.Paths) 1675 }