github.com/cloudwan/edgelq-sdk@v1.15.4/devices/resources/v1alpha2/device/device.pb.name.go (about) 1 // Code generated by protoc-gen-goten-resource 2 // Resource: Device 3 // DO NOT EDIT!!! 4 5 package device 6 7 import ( 8 "fmt" 9 "net/url" 10 "reflect" 11 "regexp" 12 "strings" 13 14 "google.golang.org/grpc/codes" 15 "google.golang.org/grpc/status" 16 "google.golang.org/protobuf/proto" 17 18 "github.com/cloudwan/goten-sdk/runtime/goten" 19 gotenresource "github.com/cloudwan/goten-sdk/runtime/resource" 20 ) 21 22 // proto imports 23 import ( 24 project "github.com/cloudwan/edgelq-sdk/devices/resources/v1alpha2/project" 25 iam_attestation_domain "github.com/cloudwan/edgelq-sdk/iam/resources/v1alpha2/attestation_domain" 26 iam_iam_common "github.com/cloudwan/edgelq-sdk/iam/resources/v1alpha2/common" 27 iam_service_account "github.com/cloudwan/edgelq-sdk/iam/resources/v1alpha2/service_account" 28 meta "github.com/cloudwan/goten-sdk/types/meta" 29 latlng "google.golang.org/genproto/googleapis/type/latlng" 30 durationpb "google.golang.org/protobuf/types/known/durationpb" 31 fieldmaskpb "google.golang.org/protobuf/types/known/fieldmaskpb" 32 timestamppb "google.golang.org/protobuf/types/known/timestamppb" 33 ) 34 35 // ensure the imports are used 36 var ( 37 _ = codes.NotFound 38 _ = new(fmt.Stringer) 39 _ = new(proto.Message) 40 _ = status.Status{} 41 _ = url.URL{} 42 _ = strings.Builder{} 43 44 _ = new(goten.GotenMessage) 45 _ = new(gotenresource.ListQuery) 46 ) 47 48 // make sure we're using proto imports 49 var ( 50 _ = &project.Project{} 51 _ = &iam_attestation_domain.AttestationDomain{} 52 _ = &iam_iam_common.PCR{} 53 _ = &iam_service_account.ServiceAccount{} 54 _ = &durationpb.Duration{} 55 _ = &fieldmaskpb.FieldMask{} 56 _ = ×tamppb.Timestamp{} 57 _ = &latlng.LatLng{} 58 _ = &meta.Meta{} 59 ) 60 61 var device_RegexpId = regexp.MustCompile("^(?P<device_id>[\\w][\\w.-]{0,127})$") 62 var regexPath_Project_Region = regexp.MustCompile("^projects/(?P<project_id>-|[\\w][\\w.-]{0,127})/regions/(?P<region_id>-|[a-z][a-z0-9\\-]{0,28}[a-z0-9])/devices/(?P<device_id>-|[\\w][\\w.-]{0,127})$") 63 64 func (r *Device) MaybePopulateDefaults() error { 65 deviceInterface := interface{}(r) 66 if defaulter, ok := deviceInterface.(goten.Defaulter); ok { 67 return defaulter.PopulateDefaults() 68 } 69 return nil 70 } 71 72 type Name struct { 73 ParentName 74 DeviceId string `firestore:"deviceId"` 75 } 76 77 func ParseName(name string) (*Name, error) { 78 var matches []string 79 if matches = regexPath_Project_Region.FindStringSubmatch(name); matches != nil { 80 return NewNameBuilder(). 81 SetProjectId(matches[1]). 82 SetRegionId(matches[2]). 83 SetId(matches[3]). 84 Name(), nil 85 } 86 87 return nil, status.Errorf(codes.InvalidArgument, "unable to parse '%s' as Device name", name) 88 } 89 90 func MustParseName(name string) *Name { 91 result, err := ParseName(name) 92 if err != nil { 93 panic(err) 94 } 95 return result 96 } 97 98 func ParseNameOrId(nameOrId string) (*Name, error) { 99 name, err := ParseName(nameOrId) 100 if err == nil { 101 return name, err 102 } 103 if device_RegexpId.MatchString(nameOrId) { 104 return &Name{DeviceId: nameOrId}, nil 105 } else { 106 return nil, fmt.Errorf("unable to parse '%s' as Device name or id", nameOrId) 107 } 108 } 109 110 func (name *Name) SetFromSegments(segments gotenresource.NameSegments) error { 111 if len(segments) == 0 { 112 return status.Errorf(codes.InvalidArgument, "No segments given for Device name") 113 } 114 if err := name.ParentName.SetFromSegments(segments[:len(segments)-1]); err != nil { 115 return err 116 } 117 if segments[len(segments)-1].CollectionLowerJson != "devices" { 118 return status.Errorf(codes.InvalidArgument, "unable to use segments %s to form Device name", segments) 119 } 120 name.DeviceId = segments[len(segments)-1].Id 121 return nil 122 } 123 124 func (name *Name) GetProjectName() *project.Name { 125 if name == nil { 126 return nil 127 } 128 return name.ParentName.GetProjectName() 129 } 130 131 func (name *Name) IsSpecified() bool { 132 if name == nil || name.Pattern == "" || name.DeviceId == "" { 133 return false 134 } 135 return name.ParentName.IsSpecified() 136 } 137 138 func (name *Name) IsFullyQualified() bool { 139 if name == nil { 140 return false 141 } 142 if name.ParentName.IsFullyQualified() == false { 143 return false 144 } 145 if name.DeviceId == "" || name.DeviceId == gotenresource.WildcardId { 146 return false 147 } 148 return true 149 } 150 151 func (name *Name) FullyQualifiedName() (string, error) { 152 if !name.IsFullyQualified() { 153 return "", status.Errorf(codes.InvalidArgument, "Name for Device is not fully qualified") 154 } 155 return fmt.Sprintf("//devices.edgelq.com/%s", name.String()), nil 156 } 157 158 func (name *Name) String() string { 159 if name == nil { 160 return "<nil>" 161 } 162 if valueStr, err := name.ProtoString(); err != nil { 163 panic(err) 164 } else { 165 return valueStr 166 } 167 } 168 169 func (name *Name) AsReference() *Reference { 170 return &Reference{Name: *name} 171 } 172 173 func (name *Name) AsRawReference() gotenresource.Reference { 174 return name.AsReference() 175 } 176 177 func (name *Name) GetResourceDescriptor() gotenresource.Descriptor { 178 return descriptor 179 } 180 181 func (name *Name) GetPattern() gotenresource.NamePattern { 182 if name == nil { 183 return "" 184 } 185 return name.Pattern 186 } 187 188 func (name *Name) GetIdParts() map[string]string { 189 if name != nil { 190 return map[string]string{ 191 "projectId": name.ProjectId, 192 "regionId": name.RegionId, 193 "deviceId": name.DeviceId, 194 } 195 } 196 return map[string]string{ 197 "projectId": "", 198 "regionId": "", 199 "deviceId": "", 200 } 201 } 202 203 func (name *Name) GetSegments() gotenresource.NameSegments { 204 if name == nil || name.Pattern == "" { 205 return nil 206 } 207 segments := name.ParentName.GetSegments() 208 return append(segments, gotenresource.NameSegment{ 209 CollectionLowerJson: "devices", 210 Id: name.DeviceId, 211 }) 212 } 213 214 func (name *Name) GetIParentName() gotenresource.Name { 215 if name == nil { 216 return (*ParentName)(nil) 217 } 218 return &name.ParentName 219 } 220 221 func (name *Name) GetIUnderlyingParentName() gotenresource.Name { 222 if parentName := name.GetProjectName(); parentName != nil { 223 return parentName 224 } 225 return nil 226 } 227 228 // implement methods required by protobuf-go library for string-struct conversion 229 230 func (name *Name) ProtoString() (string, error) { 231 if name == nil { 232 return "", nil 233 } 234 result := "" 235 parentPrefix, err := name.ParentName.ProtoString() 236 if err != nil { 237 return "", err 238 } 239 if parentPrefix != "" { 240 result += parentPrefix + "/" 241 } 242 result += "devices/" + name.DeviceId 243 return result, nil 244 } 245 246 func (name *Name) ParseProtoString(data string) error { 247 parsed, err := ParseName(data) 248 if err != nil { 249 return err 250 } 251 *name = *parsed 252 return nil 253 } 254 255 // GotenEqual returns true if other is of same type and paths are equal (implements goten.Equaler interface) 256 func (name *Name) GotenEqual(other interface{}) bool { 257 if other == nil { 258 return name == nil 259 } 260 other1, ok := other.(*Name) 261 if !ok { 262 other2, ok := other.(Name) 263 if ok { 264 other1 = &other2 265 } else { 266 return false 267 } 268 } 269 if other1 == nil { 270 return name == nil 271 } else if name == nil { 272 return false 273 } 274 if name.ParentName.GotenEqual(other1.ParentName) == false { 275 return false 276 } 277 if name.DeviceId != other1.DeviceId { 278 return false 279 } 280 281 return true 282 } 283 284 // Matches is same as GotenEqual, but also will accept "other" if name is wildcard. 285 func (name *Name) Matches(other interface{}) bool { 286 if other == nil { 287 return name == nil 288 } 289 other1, ok := other.(*Name) 290 if !ok { 291 other2, ok := other.(Name) 292 if ok { 293 other1 = &other2 294 } else { 295 return false 296 } 297 } 298 if other1 == nil { 299 return name == nil 300 } else if name == nil { 301 return false 302 } 303 if name.ParentName.Matches(other1.ParentName) == false { 304 return false 305 } 306 if name.DeviceId != other1.DeviceId { 307 return name.DeviceId == gotenresource.WildcardId 308 } 309 310 return true 311 } 312 313 // implement CustomTypeCliValue method 314 func (name *Name) SetFromCliFlag(raw string) error { 315 parsedName, err := ParseName(raw) 316 if err != nil { 317 return err 318 } 319 *name = *parsedName 320 return nil 321 } 322 323 type Reference struct { 324 Name 325 device *Device 326 } 327 328 func MakeReference(name *Name, device *Device) (*Reference, error) { 329 return &Reference{ 330 Name: *name, 331 device: device, 332 }, nil 333 } 334 335 func ParseReference(name string) (*Reference, error) { 336 parsedName, err := ParseName(name) 337 if err != nil { 338 return nil, err 339 } 340 return MakeReference(parsedName, nil) 341 } 342 343 func MustParseReference(name string) *Reference { 344 result, err := ParseReference(name) 345 if err != nil { 346 panic(err) 347 } 348 return result 349 } 350 351 func (ref *Reference) Resolve(resolved *Device) { 352 ref.device = resolved 353 } 354 355 func (ref *Reference) ResolveRaw(res gotenresource.Resource) error { 356 if res == nil { 357 ref.Resolve(nil) 358 return nil 359 } 360 if typedRes, ok := res.(*Device); ok { 361 ref.Resolve(typedRes) 362 return nil 363 } 364 return status.Errorf(codes.Internal, "Invalid resource type for Device: %s", reflect.TypeOf(res).Elem().Name()) 365 } 366 367 func (ref *Reference) Resolved() bool { 368 return ref != nil && ref.device != nil 369 } 370 371 func (ref *Reference) ClearCached() { 372 ref.device = nil 373 } 374 375 func (ref *Reference) GetDevice() *Device { 376 if ref == nil { 377 return nil 378 } 379 return ref.device 380 } 381 382 func (ref *Reference) GetRawResource() gotenresource.Resource { 383 if ref == nil { 384 return (*Device)(nil) 385 } 386 return ref.device 387 } 388 389 func (ref *Reference) IsFullyQualified() bool { 390 if ref == nil { 391 return false 392 } 393 return ref.Name.IsFullyQualified() 394 } 395 396 func (ref *Reference) IsSpecified() bool { 397 if ref == nil { 398 return false 399 } 400 return ref.Name.IsSpecified() 401 } 402 403 func (ref *Reference) FullyQualifiedName() (string, error) { 404 if !ref.IsFullyQualified() { 405 return "", status.Errorf(codes.InvalidArgument, "Name for Device is not fully qualified") 406 } 407 return fmt.Sprintf("//devices.edgelq.com/%s", ref.String()), nil 408 } 409 410 func (ref *Reference) GetResourceDescriptor() gotenresource.Descriptor { 411 return descriptor 412 } 413 414 func (ref *Reference) GetPattern() gotenresource.NamePattern { 415 if ref == nil { 416 return "" 417 } 418 return ref.Pattern 419 } 420 421 func (ref *Reference) GetIdParts() map[string]string { 422 if ref != nil { 423 return ref.Name.GetIdParts() 424 } 425 return map[string]string{ 426 "projectId": "", 427 "regionId": "", 428 "deviceId": "", 429 } 430 } 431 432 func (ref *Reference) GetSegments() gotenresource.NameSegments { 433 if ref != nil { 434 return ref.Name.GetSegments() 435 } 436 return nil 437 } 438 439 func (ref *Reference) GetIParentName() gotenresource.Name { 440 if ref == nil { 441 return (*ParentName)(nil) 442 } 443 return ref.Name.GetIParentName() 444 } 445 446 func (ref *Reference) GetIUnderlyingParentName() gotenresource.Name { 447 if ref != nil { 448 return ref.Name.GetIUnderlyingParentName() 449 } 450 return nil 451 } 452 453 func (ref *Reference) String() string { 454 if ref == nil { 455 return "<nil>" 456 } 457 return ref.Name.String() 458 } 459 460 // implement methods required by protobuf-go library for string-struct conversion 461 462 func (ref *Reference) ProtoString() (string, error) { 463 if ref == nil { 464 return "", nil 465 } 466 return ref.Name.ProtoString() 467 } 468 469 func (ref *Reference) ParseProtoString(data string) error { 470 parsed, err := ParseReference(data) 471 if err != nil { 472 return err 473 } 474 *ref = *parsed 475 return nil 476 } 477 478 // GotenEqual returns true if other is of same type and paths are equal (implements goten.Equaler interface) 479 func (ref *Reference) GotenEqual(other interface{}) bool { 480 if other == nil { 481 return ref == nil 482 } 483 other1, ok := other.(*Reference) 484 if !ok { 485 other2, ok := other.(Reference) 486 if ok { 487 other1 = &other2 488 } else { 489 return false 490 } 491 } 492 if other1 == nil { 493 return ref == nil 494 } else if ref == nil { 495 return false 496 } 497 498 return ref.Name.GotenEqual(other1.Name) 499 } 500 501 // Matches is same as GotenEqual, but also will accept "other" if name is wildcard. 502 func (name *Reference) Matches(other interface{}) bool { 503 if other == nil { 504 return name == nil 505 } 506 other1, ok := other.(*Reference) 507 if !ok { 508 other2, ok := other.(Reference) 509 if ok { 510 other1 = &other2 511 } else { 512 return false 513 } 514 } 515 if other1 == nil { 516 return name == nil 517 } else if name == nil { 518 return false 519 } 520 return name.Name.Matches(&other1.Name) 521 } 522 523 // implement CustomTypeCliValue method 524 func (ref *Reference) SetFromCliFlag(raw string) error { 525 parsedRef, err := ParseReference(raw) 526 if err != nil { 527 return err 528 } 529 *ref = *parsedRef 530 return nil 531 }