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

     1  // Code generated by protoc-gen-goten-object
     2  // File: edgelq/devices/proto/v1/device_hardware.proto
     3  // DO NOT EDIT!!!
     4  
     5  package device_hardware
     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  	cellular_api_sim_card "github.com/cloudwan/edgelq-sdk/cellular-api/resources/v1/sim_card"
    23  	device "github.com/cloudwan/edgelq-sdk/devices/resources/v1/device"
    24  	project "github.com/cloudwan/edgelq-sdk/devices/resources/v1/project"
    25  	provisioning_policy "github.com/cloudwan/edgelq-sdk/devices/resources/v1/provisioning_policy"
    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  	_ = &cellular_api_sim_card.SimCard{}
    46  	_ = &device.Device{}
    47  	_ = &project.Project{}
    48  	_ = &provisioning_policy.ProvisioningPolicy{}
    49  	_ = &meta.Meta{}
    50  )
    51  
    52  type DeviceHardware_FieldMask struct {
    53  	Paths []DeviceHardware_FieldPath
    54  }
    55  
    56  func FullDeviceHardware_FieldMask() *DeviceHardware_FieldMask {
    57  	res := &DeviceHardware_FieldMask{}
    58  	res.Paths = append(res.Paths, &DeviceHardware_FieldTerminalPath{selector: DeviceHardware_FieldPathSelectorName})
    59  	res.Paths = append(res.Paths, &DeviceHardware_FieldTerminalPath{selector: DeviceHardware_FieldPathSelectorMetadata})
    60  	res.Paths = append(res.Paths, &DeviceHardware_FieldTerminalPath{selector: DeviceHardware_FieldPathSelectorDisplayName})
    61  	res.Paths = append(res.Paths, &DeviceHardware_FieldTerminalPath{selector: DeviceHardware_FieldPathSelectorSerialNumber})
    62  	res.Paths = append(res.Paths, &DeviceHardware_FieldTerminalPath{selector: DeviceHardware_FieldPathSelectorManufacturer})
    63  	res.Paths = append(res.Paths, &DeviceHardware_FieldTerminalPath{selector: DeviceHardware_FieldPathSelectorProductName})
    64  	res.Paths = append(res.Paths, &DeviceHardware_FieldTerminalPath{selector: DeviceHardware_FieldPathSelectorMacAddress})
    65  	res.Paths = append(res.Paths, &DeviceHardware_FieldTerminalPath{selector: DeviceHardware_FieldPathSelectorSimIccid})
    66  	res.Paths = append(res.Paths, &DeviceHardware_FieldTerminalPath{selector: DeviceHardware_FieldPathSelectorImei})
    67  	res.Paths = append(res.Paths, &DeviceHardware_FieldTerminalPath{selector: DeviceHardware_FieldPathSelectorAssociatedProvisioningPolicyName})
    68  	res.Paths = append(res.Paths, &DeviceHardware_FieldTerminalPath{selector: DeviceHardware_FieldPathSelectorAssociatedDevice})
    69  	res.Paths = append(res.Paths, &DeviceHardware_FieldTerminalPath{selector: DeviceHardware_FieldPathSelectorAssociatedSimCard})
    70  	res.Paths = append(res.Paths, &DeviceHardware_FieldTerminalPath{selector: DeviceHardware_FieldPathSelectorStatus})
    71  	return res
    72  }
    73  
    74  func (fieldMask *DeviceHardware_FieldMask) String() string {
    75  	if fieldMask == nil {
    76  		return "<nil>"
    77  	}
    78  	pathsStr := make([]string, 0, len(fieldMask.Paths))
    79  	for _, path := range fieldMask.Paths {
    80  		pathsStr = append(pathsStr, path.String())
    81  	}
    82  	return strings.Join(pathsStr, ", ")
    83  }
    84  
    85  func (fieldMask *DeviceHardware_FieldMask) IsFull() bool {
    86  	if fieldMask == nil {
    87  		return false
    88  	}
    89  	presentSelectors := make([]bool, 13)
    90  	for _, path := range fieldMask.Paths {
    91  		if asFinal, ok := path.(*DeviceHardware_FieldTerminalPath); ok {
    92  			presentSelectors[int(asFinal.selector)] = true
    93  		}
    94  	}
    95  	for _, flag := range presentSelectors {
    96  		if !flag {
    97  			return false
    98  		}
    99  	}
   100  	return true
   101  }
   102  
   103  func (fieldMask *DeviceHardware_FieldMask) ProtoReflect() preflect.Message {
   104  	return gotenobject.MakeFieldMaskReflection(fieldMask, func(raw string) (gotenobject.FieldPath, error) {
   105  		return ParseDeviceHardware_FieldPath(raw)
   106  	})
   107  }
   108  
   109  func (fieldMask *DeviceHardware_FieldMask) ProtoMessage() {}
   110  
   111  func (fieldMask *DeviceHardware_FieldMask) Reset() {
   112  	if fieldMask != nil {
   113  		fieldMask.Paths = nil
   114  	}
   115  }
   116  
   117  func (fieldMask *DeviceHardware_FieldMask) Subtract(other *DeviceHardware_FieldMask) *DeviceHardware_FieldMask {
   118  	result := &DeviceHardware_FieldMask{}
   119  	removedSelectors := make([]bool, 13)
   120  	otherSubMasks := map[DeviceHardware_FieldPathSelector]gotenobject.FieldMask{
   121  		DeviceHardware_FieldPathSelectorMetadata: &meta.Meta_FieldMask{},
   122  		DeviceHardware_FieldPathSelectorStatus:   &DeviceHardware_Status_FieldMask{},
   123  	}
   124  	mySubMasks := map[DeviceHardware_FieldPathSelector]gotenobject.FieldMask{
   125  		DeviceHardware_FieldPathSelectorMetadata: &meta.Meta_FieldMask{},
   126  		DeviceHardware_FieldPathSelectorStatus:   &DeviceHardware_Status_FieldMask{},
   127  	}
   128  
   129  	for _, path := range other.GetPaths() {
   130  		switch tp := path.(type) {
   131  		case *DeviceHardware_FieldTerminalPath:
   132  			removedSelectors[int(tp.selector)] = true
   133  		case *DeviceHardware_FieldSubPath:
   134  			otherSubMasks[tp.selector].AppendRawPath(tp.subPath)
   135  		}
   136  	}
   137  	for _, path := range fieldMask.GetPaths() {
   138  		if !removedSelectors[int(path.Selector())] {
   139  			if otherSubMask := otherSubMasks[path.Selector()]; otherSubMask != nil && otherSubMask.PathsCount() > 0 {
   140  				if tp, ok := path.(*DeviceHardware_FieldTerminalPath); ok {
   141  					switch tp.selector {
   142  					case DeviceHardware_FieldPathSelectorMetadata:
   143  						mySubMasks[DeviceHardware_FieldPathSelectorMetadata] = meta.FullMeta_FieldMask()
   144  					case DeviceHardware_FieldPathSelectorStatus:
   145  						mySubMasks[DeviceHardware_FieldPathSelectorStatus] = FullDeviceHardware_Status_FieldMask()
   146  					}
   147  				} else if tp, ok := path.(*DeviceHardware_FieldSubPath); ok {
   148  					mySubMasks[tp.selector].AppendRawPath(tp.subPath)
   149  				}
   150  			} else {
   151  				result.Paths = append(result.Paths, path)
   152  			}
   153  		}
   154  	}
   155  	for selector, mySubMask := range mySubMasks {
   156  		if mySubMask.PathsCount() > 0 {
   157  			for _, allowedPath := range mySubMask.SubtractRaw(otherSubMasks[selector]).GetRawPaths() {
   158  				result.Paths = append(result.Paths, &DeviceHardware_FieldSubPath{selector: selector, subPath: allowedPath})
   159  			}
   160  		}
   161  	}
   162  
   163  	if len(result.Paths) == 0 {
   164  		return nil
   165  	}
   166  	return result
   167  }
   168  
   169  func (fieldMask *DeviceHardware_FieldMask) SubtractRaw(other gotenobject.FieldMask) gotenobject.FieldMask {
   170  	return fieldMask.Subtract(other.(*DeviceHardware_FieldMask))
   171  }
   172  
   173  // FilterInputFields generates copy of field paths with output_only field paths removed
   174  func (fieldMask *DeviceHardware_FieldMask) FilterInputFields() *DeviceHardware_FieldMask {
   175  	result := &DeviceHardware_FieldMask{}
   176  	for _, path := range fieldMask.Paths {
   177  		switch path.Selector() {
   178  		case DeviceHardware_FieldPathSelectorMetadata:
   179  			if _, ok := path.(*DeviceHardware_FieldTerminalPath); ok {
   180  				for _, subpath := range meta.FullMeta_FieldMask().FilterInputFields().Paths {
   181  					result.Paths = append(result.Paths, &DeviceHardware_FieldSubPath{selector: path.Selector(), subPath: subpath})
   182  				}
   183  			} else if sub, ok := path.(*DeviceHardware_FieldSubPath); ok {
   184  				selectedMask := &meta.Meta_FieldMask{
   185  					Paths: []meta.Meta_FieldPath{sub.subPath.(meta.Meta_FieldPath)},
   186  				}
   187  				for _, allowedPath := range selectedMask.FilterInputFields().Paths {
   188  					result.Paths = append(result.Paths, &DeviceHardware_FieldSubPath{selector: DeviceHardware_FieldPathSelectorMetadata, subPath: allowedPath})
   189  				}
   190  			}
   191  		default:
   192  			result.Paths = append(result.Paths, path)
   193  		}
   194  	}
   195  	return result
   196  }
   197  
   198  // ToFieldMask is used for proto conversions
   199  func (fieldMask *DeviceHardware_FieldMask) ToProtoFieldMask() *googlefieldmaskpb.FieldMask {
   200  	protoFieldMask := &googlefieldmaskpb.FieldMask{}
   201  	for _, path := range fieldMask.Paths {
   202  		protoFieldMask.Paths = append(protoFieldMask.Paths, path.String())
   203  	}
   204  	return protoFieldMask
   205  }
   206  
   207  func (fieldMask *DeviceHardware_FieldMask) FromProtoFieldMask(protoFieldMask *googlefieldmaskpb.FieldMask) error {
   208  	if fieldMask == nil {
   209  		return status.Error(codes.Internal, "target field mask is nil")
   210  	}
   211  	fieldMask.Paths = make([]DeviceHardware_FieldPath, 0, len(protoFieldMask.Paths))
   212  	for _, strPath := range protoFieldMask.Paths {
   213  		path, err := ParseDeviceHardware_FieldPath(strPath)
   214  		if err != nil {
   215  			return err
   216  		}
   217  		fieldMask.Paths = append(fieldMask.Paths, path)
   218  	}
   219  	return nil
   220  }
   221  
   222  // implement methods required by customType
   223  func (fieldMask DeviceHardware_FieldMask) Marshal() ([]byte, error) {
   224  	protoFieldMask := fieldMask.ToProtoFieldMask()
   225  	return proto.Marshal(protoFieldMask)
   226  }
   227  
   228  func (fieldMask *DeviceHardware_FieldMask) Unmarshal(data []byte) error {
   229  	protoFieldMask := &googlefieldmaskpb.FieldMask{}
   230  	if err := proto.Unmarshal(data, protoFieldMask); err != nil {
   231  		return err
   232  	}
   233  	if err := fieldMask.FromProtoFieldMask(protoFieldMask); err != nil {
   234  		return err
   235  	}
   236  	return nil
   237  }
   238  
   239  func (fieldMask *DeviceHardware_FieldMask) Size() int {
   240  	return proto.Size(fieldMask.ToProtoFieldMask())
   241  }
   242  
   243  func (fieldMask DeviceHardware_FieldMask) MarshalJSON() ([]byte, error) {
   244  	return json.Marshal(fieldMask.ToProtoFieldMask())
   245  }
   246  
   247  func (fieldMask *DeviceHardware_FieldMask) UnmarshalJSON(data []byte) error {
   248  	protoFieldMask := &googlefieldmaskpb.FieldMask{}
   249  	if err := json.Unmarshal(data, protoFieldMask); err != nil {
   250  		return err
   251  	}
   252  	if err := fieldMask.FromProtoFieldMask(protoFieldMask); err != nil {
   253  		return err
   254  	}
   255  	return nil
   256  }
   257  
   258  func (fieldMask *DeviceHardware_FieldMask) AppendPath(path DeviceHardware_FieldPath) {
   259  	fieldMask.Paths = append(fieldMask.Paths, path)
   260  }
   261  
   262  func (fieldMask *DeviceHardware_FieldMask) AppendRawPath(path gotenobject.FieldPath) {
   263  	fieldMask.Paths = append(fieldMask.Paths, path.(DeviceHardware_FieldPath))
   264  }
   265  
   266  func (fieldMask *DeviceHardware_FieldMask) GetPaths() []DeviceHardware_FieldPath {
   267  	if fieldMask == nil {
   268  		return nil
   269  	}
   270  	return fieldMask.Paths
   271  }
   272  
   273  func (fieldMask *DeviceHardware_FieldMask) GetRawPaths() []gotenobject.FieldPath {
   274  	if fieldMask == nil {
   275  		return nil
   276  	}
   277  	rawPaths := make([]gotenobject.FieldPath, 0, len(fieldMask.Paths))
   278  	for _, path := range fieldMask.Paths {
   279  		rawPaths = append(rawPaths, path)
   280  	}
   281  	return rawPaths
   282  }
   283  
   284  func (fieldMask *DeviceHardware_FieldMask) SetFromCliFlag(raw string) error {
   285  	path, err := ParseDeviceHardware_FieldPath(raw)
   286  	if err != nil {
   287  		return err
   288  	}
   289  	fieldMask.Paths = append(fieldMask.Paths, path)
   290  	return nil
   291  }
   292  
   293  func (fieldMask *DeviceHardware_FieldMask) Set(target, source *DeviceHardware) {
   294  	for _, path := range fieldMask.Paths {
   295  		val, _ := path.GetSingle(source)
   296  		// if val is nil, then field does not exist in source, skip
   297  		// otherwise, process (can still reflect.ValueOf(val).IsNil!)
   298  		if val != nil {
   299  			path.WithIValue(val).SetTo(&target)
   300  		}
   301  	}
   302  }
   303  
   304  func (fieldMask *DeviceHardware_FieldMask) SetRaw(target, source gotenobject.GotenObjectExt) {
   305  	fieldMask.Set(target.(*DeviceHardware), source.(*DeviceHardware))
   306  }
   307  
   308  func (fieldMask *DeviceHardware_FieldMask) Project(source *DeviceHardware) *DeviceHardware {
   309  	if source == nil {
   310  		return nil
   311  	}
   312  	if fieldMask == nil {
   313  		return source
   314  	}
   315  	result := &DeviceHardware{}
   316  	metadataMask := &meta.Meta_FieldMask{}
   317  	wholeMetadataAccepted := false
   318  	statusMask := &DeviceHardware_Status_FieldMask{}
   319  	wholeStatusAccepted := false
   320  
   321  	for _, p := range fieldMask.Paths {
   322  		switch tp := p.(type) {
   323  		case *DeviceHardware_FieldTerminalPath:
   324  			switch tp.selector {
   325  			case DeviceHardware_FieldPathSelectorName:
   326  				result.Name = source.Name
   327  			case DeviceHardware_FieldPathSelectorMetadata:
   328  				result.Metadata = source.Metadata
   329  				wholeMetadataAccepted = true
   330  			case DeviceHardware_FieldPathSelectorDisplayName:
   331  				result.DisplayName = source.DisplayName
   332  			case DeviceHardware_FieldPathSelectorSerialNumber:
   333  				result.SerialNumber = source.SerialNumber
   334  			case DeviceHardware_FieldPathSelectorManufacturer:
   335  				result.Manufacturer = source.Manufacturer
   336  			case DeviceHardware_FieldPathSelectorProductName:
   337  				result.ProductName = source.ProductName
   338  			case DeviceHardware_FieldPathSelectorMacAddress:
   339  				result.MacAddress = source.MacAddress
   340  			case DeviceHardware_FieldPathSelectorSimIccid:
   341  				result.SimIccid = source.SimIccid
   342  			case DeviceHardware_FieldPathSelectorImei:
   343  				result.Imei = source.Imei
   344  			case DeviceHardware_FieldPathSelectorAssociatedProvisioningPolicyName:
   345  				result.AssociatedProvisioningPolicyName = source.AssociatedProvisioningPolicyName
   346  			case DeviceHardware_FieldPathSelectorAssociatedDevice:
   347  				result.AssociatedDevice = source.AssociatedDevice
   348  			case DeviceHardware_FieldPathSelectorAssociatedSimCard:
   349  				result.AssociatedSimCard = source.AssociatedSimCard
   350  			case DeviceHardware_FieldPathSelectorStatus:
   351  				result.Status = source.Status
   352  				wholeStatusAccepted = true
   353  			}
   354  		case *DeviceHardware_FieldSubPath:
   355  			switch tp.selector {
   356  			case DeviceHardware_FieldPathSelectorMetadata:
   357  				metadataMask.AppendPath(tp.subPath.(meta.Meta_FieldPath))
   358  			case DeviceHardware_FieldPathSelectorStatus:
   359  				statusMask.AppendPath(tp.subPath.(DeviceHardwareStatus_FieldPath))
   360  			}
   361  		}
   362  	}
   363  	if wholeMetadataAccepted == false && len(metadataMask.Paths) > 0 {
   364  		result.Metadata = metadataMask.Project(source.GetMetadata())
   365  	}
   366  	if wholeStatusAccepted == false && len(statusMask.Paths) > 0 {
   367  		result.Status = statusMask.Project(source.GetStatus())
   368  	}
   369  	return result
   370  }
   371  
   372  func (fieldMask *DeviceHardware_FieldMask) ProjectRaw(source gotenobject.GotenObjectExt) gotenobject.GotenObjectExt {
   373  	return fieldMask.Project(source.(*DeviceHardware))
   374  }
   375  
   376  func (fieldMask *DeviceHardware_FieldMask) PathsCount() int {
   377  	if fieldMask == nil {
   378  		return 0
   379  	}
   380  	return len(fieldMask.Paths)
   381  }
   382  
   383  type DeviceHardware_Status_FieldMask struct {
   384  	Paths []DeviceHardwareStatus_FieldPath
   385  }
   386  
   387  func FullDeviceHardware_Status_FieldMask() *DeviceHardware_Status_FieldMask {
   388  	res := &DeviceHardware_Status_FieldMask{}
   389  	res.Paths = append(res.Paths, &DeviceHardwareStatus_FieldTerminalPath{selector: DeviceHardwareStatus_FieldPathSelectorProvisioningState})
   390  	return res
   391  }
   392  
   393  func (fieldMask *DeviceHardware_Status_FieldMask) String() string {
   394  	if fieldMask == nil {
   395  		return "<nil>"
   396  	}
   397  	pathsStr := make([]string, 0, len(fieldMask.Paths))
   398  	for _, path := range fieldMask.Paths {
   399  		pathsStr = append(pathsStr, path.String())
   400  	}
   401  	return strings.Join(pathsStr, ", ")
   402  }
   403  
   404  func (fieldMask *DeviceHardware_Status_FieldMask) IsFull() bool {
   405  	if fieldMask == nil {
   406  		return false
   407  	}
   408  	presentSelectors := make([]bool, 1)
   409  	for _, path := range fieldMask.Paths {
   410  		if asFinal, ok := path.(*DeviceHardwareStatus_FieldTerminalPath); ok {
   411  			presentSelectors[int(asFinal.selector)] = true
   412  		}
   413  	}
   414  	for _, flag := range presentSelectors {
   415  		if !flag {
   416  			return false
   417  		}
   418  	}
   419  	return true
   420  }
   421  
   422  func (fieldMask *DeviceHardware_Status_FieldMask) ProtoReflect() preflect.Message {
   423  	return gotenobject.MakeFieldMaskReflection(fieldMask, func(raw string) (gotenobject.FieldPath, error) {
   424  		return ParseDeviceHardwareStatus_FieldPath(raw)
   425  	})
   426  }
   427  
   428  func (fieldMask *DeviceHardware_Status_FieldMask) ProtoMessage() {}
   429  
   430  func (fieldMask *DeviceHardware_Status_FieldMask) Reset() {
   431  	if fieldMask != nil {
   432  		fieldMask.Paths = nil
   433  	}
   434  }
   435  
   436  func (fieldMask *DeviceHardware_Status_FieldMask) Subtract(other *DeviceHardware_Status_FieldMask) *DeviceHardware_Status_FieldMask {
   437  	result := &DeviceHardware_Status_FieldMask{}
   438  	removedSelectors := make([]bool, 1)
   439  
   440  	for _, path := range other.GetPaths() {
   441  		switch tp := path.(type) {
   442  		case *DeviceHardwareStatus_FieldTerminalPath:
   443  			removedSelectors[int(tp.selector)] = true
   444  		}
   445  	}
   446  	for _, path := range fieldMask.GetPaths() {
   447  		if !removedSelectors[int(path.Selector())] {
   448  			result.Paths = append(result.Paths, path)
   449  		}
   450  	}
   451  
   452  	if len(result.Paths) == 0 {
   453  		return nil
   454  	}
   455  	return result
   456  }
   457  
   458  func (fieldMask *DeviceHardware_Status_FieldMask) SubtractRaw(other gotenobject.FieldMask) gotenobject.FieldMask {
   459  	return fieldMask.Subtract(other.(*DeviceHardware_Status_FieldMask))
   460  }
   461  
   462  // FilterInputFields generates copy of field paths with output_only field paths removed
   463  func (fieldMask *DeviceHardware_Status_FieldMask) FilterInputFields() *DeviceHardware_Status_FieldMask {
   464  	result := &DeviceHardware_Status_FieldMask{}
   465  	result.Paths = append(result.Paths, fieldMask.Paths...)
   466  	return result
   467  }
   468  
   469  // ToFieldMask is used for proto conversions
   470  func (fieldMask *DeviceHardware_Status_FieldMask) ToProtoFieldMask() *googlefieldmaskpb.FieldMask {
   471  	protoFieldMask := &googlefieldmaskpb.FieldMask{}
   472  	for _, path := range fieldMask.Paths {
   473  		protoFieldMask.Paths = append(protoFieldMask.Paths, path.String())
   474  	}
   475  	return protoFieldMask
   476  }
   477  
   478  func (fieldMask *DeviceHardware_Status_FieldMask) FromProtoFieldMask(protoFieldMask *googlefieldmaskpb.FieldMask) error {
   479  	if fieldMask == nil {
   480  		return status.Error(codes.Internal, "target field mask is nil")
   481  	}
   482  	fieldMask.Paths = make([]DeviceHardwareStatus_FieldPath, 0, len(protoFieldMask.Paths))
   483  	for _, strPath := range protoFieldMask.Paths {
   484  		path, err := ParseDeviceHardwareStatus_FieldPath(strPath)
   485  		if err != nil {
   486  			return err
   487  		}
   488  		fieldMask.Paths = append(fieldMask.Paths, path)
   489  	}
   490  	return nil
   491  }
   492  
   493  // implement methods required by customType
   494  func (fieldMask DeviceHardware_Status_FieldMask) Marshal() ([]byte, error) {
   495  	protoFieldMask := fieldMask.ToProtoFieldMask()
   496  	return proto.Marshal(protoFieldMask)
   497  }
   498  
   499  func (fieldMask *DeviceHardware_Status_FieldMask) Unmarshal(data []byte) error {
   500  	protoFieldMask := &googlefieldmaskpb.FieldMask{}
   501  	if err := proto.Unmarshal(data, protoFieldMask); err != nil {
   502  		return err
   503  	}
   504  	if err := fieldMask.FromProtoFieldMask(protoFieldMask); err != nil {
   505  		return err
   506  	}
   507  	return nil
   508  }
   509  
   510  func (fieldMask *DeviceHardware_Status_FieldMask) Size() int {
   511  	return proto.Size(fieldMask.ToProtoFieldMask())
   512  }
   513  
   514  func (fieldMask DeviceHardware_Status_FieldMask) MarshalJSON() ([]byte, error) {
   515  	return json.Marshal(fieldMask.ToProtoFieldMask())
   516  }
   517  
   518  func (fieldMask *DeviceHardware_Status_FieldMask) UnmarshalJSON(data []byte) error {
   519  	protoFieldMask := &googlefieldmaskpb.FieldMask{}
   520  	if err := json.Unmarshal(data, protoFieldMask); err != nil {
   521  		return err
   522  	}
   523  	if err := fieldMask.FromProtoFieldMask(protoFieldMask); err != nil {
   524  		return err
   525  	}
   526  	return nil
   527  }
   528  
   529  func (fieldMask *DeviceHardware_Status_FieldMask) AppendPath(path DeviceHardwareStatus_FieldPath) {
   530  	fieldMask.Paths = append(fieldMask.Paths, path)
   531  }
   532  
   533  func (fieldMask *DeviceHardware_Status_FieldMask) AppendRawPath(path gotenobject.FieldPath) {
   534  	fieldMask.Paths = append(fieldMask.Paths, path.(DeviceHardwareStatus_FieldPath))
   535  }
   536  
   537  func (fieldMask *DeviceHardware_Status_FieldMask) GetPaths() []DeviceHardwareStatus_FieldPath {
   538  	if fieldMask == nil {
   539  		return nil
   540  	}
   541  	return fieldMask.Paths
   542  }
   543  
   544  func (fieldMask *DeviceHardware_Status_FieldMask) GetRawPaths() []gotenobject.FieldPath {
   545  	if fieldMask == nil {
   546  		return nil
   547  	}
   548  	rawPaths := make([]gotenobject.FieldPath, 0, len(fieldMask.Paths))
   549  	for _, path := range fieldMask.Paths {
   550  		rawPaths = append(rawPaths, path)
   551  	}
   552  	return rawPaths
   553  }
   554  
   555  func (fieldMask *DeviceHardware_Status_FieldMask) SetFromCliFlag(raw string) error {
   556  	path, err := ParseDeviceHardwareStatus_FieldPath(raw)
   557  	if err != nil {
   558  		return err
   559  	}
   560  	fieldMask.Paths = append(fieldMask.Paths, path)
   561  	return nil
   562  }
   563  
   564  func (fieldMask *DeviceHardware_Status_FieldMask) Set(target, source *DeviceHardware_Status) {
   565  	for _, path := range fieldMask.Paths {
   566  		val, _ := path.GetSingle(source)
   567  		// if val is nil, then field does not exist in source, skip
   568  		// otherwise, process (can still reflect.ValueOf(val).IsNil!)
   569  		if val != nil {
   570  			path.WithIValue(val).SetTo(&target)
   571  		}
   572  	}
   573  }
   574  
   575  func (fieldMask *DeviceHardware_Status_FieldMask) SetRaw(target, source gotenobject.GotenObjectExt) {
   576  	fieldMask.Set(target.(*DeviceHardware_Status), source.(*DeviceHardware_Status))
   577  }
   578  
   579  func (fieldMask *DeviceHardware_Status_FieldMask) Project(source *DeviceHardware_Status) *DeviceHardware_Status {
   580  	if source == nil {
   581  		return nil
   582  	}
   583  	if fieldMask == nil {
   584  		return source
   585  	}
   586  	result := &DeviceHardware_Status{}
   587  
   588  	for _, p := range fieldMask.Paths {
   589  		switch tp := p.(type) {
   590  		case *DeviceHardwareStatus_FieldTerminalPath:
   591  			switch tp.selector {
   592  			case DeviceHardwareStatus_FieldPathSelectorProvisioningState:
   593  				result.ProvisioningState = source.ProvisioningState
   594  			}
   595  		}
   596  	}
   597  	return result
   598  }
   599  
   600  func (fieldMask *DeviceHardware_Status_FieldMask) ProjectRaw(source gotenobject.GotenObjectExt) gotenobject.GotenObjectExt {
   601  	return fieldMask.Project(source.(*DeviceHardware_Status))
   602  }
   603  
   604  func (fieldMask *DeviceHardware_Status_FieldMask) PathsCount() int {
   605  	if fieldMask == nil {
   606  		return 0
   607  	}
   608  	return len(fieldMask.Paths)
   609  }