github.com/cloudwan/edgelq-sdk@v1.15.4/devices/resources/v1alpha2/os_image_profile/os_image_profile.pb.fieldmask.go (about) 1 // Code generated by protoc-gen-goten-object 2 // File: edgelq/devices/proto/v1alpha2/os_image_profile.proto 3 // DO NOT EDIT!!! 4 5 package os_image_profile 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 device_type "github.com/cloudwan/edgelq-sdk/devices/resources/v1alpha2/device_type" 23 project "github.com/cloudwan/edgelq-sdk/devices/resources/v1alpha2/project" 24 meta "github.com/cloudwan/goten-sdk/types/meta" 25 ) 26 27 // ensure the imports are used 28 var ( 29 _ = new(json.Marshaler) 30 _ = strings.Builder{} 31 32 _ = codes.NotFound 33 _ = status.Status{} 34 _ = new(proto.Message) 35 _ = new(preflect.Message) 36 _ = googlefieldmaskpb.FieldMask{} 37 38 _ = new(gotenobject.FieldMask) 39 ) 40 41 // make sure we're using proto imports 42 var ( 43 _ = &device_type.DeviceType{} 44 _ = &project.Project{} 45 _ = &meta.Meta{} 46 ) 47 48 type OsImageProfile_FieldMask struct { 49 Paths []OsImageProfile_FieldPath 50 } 51 52 func FullOsImageProfile_FieldMask() *OsImageProfile_FieldMask { 53 res := &OsImageProfile_FieldMask{} 54 res.Paths = append(res.Paths, &OsImageProfile_FieldTerminalPath{selector: OsImageProfile_FieldPathSelectorName}) 55 res.Paths = append(res.Paths, &OsImageProfile_FieldTerminalPath{selector: OsImageProfile_FieldPathSelectorMetadata}) 56 res.Paths = append(res.Paths, &OsImageProfile_FieldTerminalPath{selector: OsImageProfile_FieldPathSelectorDisplayName}) 57 res.Paths = append(res.Paths, &OsImageProfile_FieldTerminalPath{selector: OsImageProfile_FieldPathSelectorDeviceType}) 58 res.Paths = append(res.Paths, &OsImageProfile_FieldTerminalPath{selector: OsImageProfile_FieldPathSelectorInstallAiAccelerator}) 59 res.Paths = append(res.Paths, &OsImageProfile_FieldTerminalPath{selector: OsImageProfile_FieldPathSelectorEncryption}) 60 res.Paths = append(res.Paths, &OsImageProfile_FieldTerminalPath{selector: OsImageProfile_FieldPathSelectorDiskMapping}) 61 res.Paths = append(res.Paths, &OsImageProfile_FieldTerminalPath{selector: OsImageProfile_FieldPathSelectorNetworkAgent}) 62 res.Paths = append(res.Paths, &OsImageProfile_FieldTerminalPath{selector: OsImageProfile_FieldPathSelectorNtp}) 63 res.Paths = append(res.Paths, &OsImageProfile_FieldTerminalPath{selector: OsImageProfile_FieldPathSelectorHttpProxy}) 64 res.Paths = append(res.Paths, &OsImageProfile_FieldTerminalPath{selector: OsImageProfile_FieldPathSelectorHttpsProxy}) 65 res.Paths = append(res.Paths, &OsImageProfile_FieldTerminalPath{selector: OsImageProfile_FieldPathSelectorNoProxy}) 66 return res 67 } 68 69 func (fieldMask *OsImageProfile_FieldMask) String() string { 70 if fieldMask == nil { 71 return "<nil>" 72 } 73 pathsStr := make([]string, 0, len(fieldMask.Paths)) 74 for _, path := range fieldMask.Paths { 75 pathsStr = append(pathsStr, path.String()) 76 } 77 return strings.Join(pathsStr, ", ") 78 } 79 80 func (fieldMask *OsImageProfile_FieldMask) IsFull() bool { 81 if fieldMask == nil { 82 return false 83 } 84 presentSelectors := make([]bool, 12) 85 for _, path := range fieldMask.Paths { 86 if asFinal, ok := path.(*OsImageProfile_FieldTerminalPath); ok { 87 presentSelectors[int(asFinal.selector)] = true 88 } 89 } 90 for _, flag := range presentSelectors { 91 if !flag { 92 return false 93 } 94 } 95 return true 96 } 97 98 func (fieldMask *OsImageProfile_FieldMask) ProtoReflect() preflect.Message { 99 return gotenobject.MakeFieldMaskReflection(fieldMask, func(raw string) (gotenobject.FieldPath, error) { 100 return ParseOsImageProfile_FieldPath(raw) 101 }) 102 } 103 104 func (fieldMask *OsImageProfile_FieldMask) ProtoMessage() {} 105 106 func (fieldMask *OsImageProfile_FieldMask) Reset() { 107 if fieldMask != nil { 108 fieldMask.Paths = nil 109 } 110 } 111 112 func (fieldMask *OsImageProfile_FieldMask) Subtract(other *OsImageProfile_FieldMask) *OsImageProfile_FieldMask { 113 result := &OsImageProfile_FieldMask{} 114 removedSelectors := make([]bool, 12) 115 otherSubMasks := map[OsImageProfile_FieldPathSelector]gotenobject.FieldMask{ 116 OsImageProfile_FieldPathSelectorMetadata: &meta.Meta_FieldMask{}, 117 } 118 mySubMasks := map[OsImageProfile_FieldPathSelector]gotenobject.FieldMask{ 119 OsImageProfile_FieldPathSelectorMetadata: &meta.Meta_FieldMask{}, 120 } 121 122 for _, path := range other.GetPaths() { 123 switch tp := path.(type) { 124 case *OsImageProfile_FieldTerminalPath: 125 removedSelectors[int(tp.selector)] = true 126 case *OsImageProfile_FieldSubPath: 127 otherSubMasks[tp.selector].AppendRawPath(tp.subPath) 128 } 129 } 130 for _, path := range fieldMask.GetPaths() { 131 if !removedSelectors[int(path.Selector())] { 132 if otherSubMask := otherSubMasks[path.Selector()]; otherSubMask != nil && otherSubMask.PathsCount() > 0 { 133 if tp, ok := path.(*OsImageProfile_FieldTerminalPath); ok { 134 switch tp.selector { 135 case OsImageProfile_FieldPathSelectorMetadata: 136 mySubMasks[OsImageProfile_FieldPathSelectorMetadata] = meta.FullMeta_FieldMask() 137 } 138 } else if tp, ok := path.(*OsImageProfile_FieldSubPath); ok { 139 mySubMasks[tp.selector].AppendRawPath(tp.subPath) 140 } 141 } else { 142 result.Paths = append(result.Paths, path) 143 } 144 } 145 } 146 for selector, mySubMask := range mySubMasks { 147 if mySubMask.PathsCount() > 0 { 148 for _, allowedPath := range mySubMask.SubtractRaw(otherSubMasks[selector]).GetRawPaths() { 149 result.Paths = append(result.Paths, &OsImageProfile_FieldSubPath{selector: selector, subPath: allowedPath}) 150 } 151 } 152 } 153 154 if len(result.Paths) == 0 { 155 return nil 156 } 157 return result 158 } 159 160 func (fieldMask *OsImageProfile_FieldMask) SubtractRaw(other gotenobject.FieldMask) gotenobject.FieldMask { 161 return fieldMask.Subtract(other.(*OsImageProfile_FieldMask)) 162 } 163 164 // FilterInputFields generates copy of field paths with output_only field paths removed 165 func (fieldMask *OsImageProfile_FieldMask) FilterInputFields() *OsImageProfile_FieldMask { 166 result := &OsImageProfile_FieldMask{} 167 for _, path := range fieldMask.Paths { 168 switch path.Selector() { 169 case OsImageProfile_FieldPathSelectorMetadata: 170 if _, ok := path.(*OsImageProfile_FieldTerminalPath); ok { 171 for _, subpath := range meta.FullMeta_FieldMask().FilterInputFields().Paths { 172 result.Paths = append(result.Paths, &OsImageProfile_FieldSubPath{selector: path.Selector(), subPath: subpath}) 173 } 174 } else if sub, ok := path.(*OsImageProfile_FieldSubPath); ok { 175 selectedMask := &meta.Meta_FieldMask{ 176 Paths: []meta.Meta_FieldPath{sub.subPath.(meta.Meta_FieldPath)}, 177 } 178 for _, allowedPath := range selectedMask.FilterInputFields().Paths { 179 result.Paths = append(result.Paths, &OsImageProfile_FieldSubPath{selector: OsImageProfile_FieldPathSelectorMetadata, subPath: allowedPath}) 180 } 181 } 182 default: 183 result.Paths = append(result.Paths, path) 184 } 185 } 186 return result 187 } 188 189 // ToFieldMask is used for proto conversions 190 func (fieldMask *OsImageProfile_FieldMask) ToProtoFieldMask() *googlefieldmaskpb.FieldMask { 191 protoFieldMask := &googlefieldmaskpb.FieldMask{} 192 for _, path := range fieldMask.Paths { 193 protoFieldMask.Paths = append(protoFieldMask.Paths, path.String()) 194 } 195 return protoFieldMask 196 } 197 198 func (fieldMask *OsImageProfile_FieldMask) FromProtoFieldMask(protoFieldMask *googlefieldmaskpb.FieldMask) error { 199 if fieldMask == nil { 200 return status.Error(codes.Internal, "target field mask is nil") 201 } 202 fieldMask.Paths = make([]OsImageProfile_FieldPath, 0, len(protoFieldMask.Paths)) 203 for _, strPath := range protoFieldMask.Paths { 204 path, err := ParseOsImageProfile_FieldPath(strPath) 205 if err != nil { 206 return err 207 } 208 fieldMask.Paths = append(fieldMask.Paths, path) 209 } 210 return nil 211 } 212 213 // implement methods required by customType 214 func (fieldMask OsImageProfile_FieldMask) Marshal() ([]byte, error) { 215 protoFieldMask := fieldMask.ToProtoFieldMask() 216 return proto.Marshal(protoFieldMask) 217 } 218 219 func (fieldMask *OsImageProfile_FieldMask) Unmarshal(data []byte) error { 220 protoFieldMask := &googlefieldmaskpb.FieldMask{} 221 if err := proto.Unmarshal(data, protoFieldMask); err != nil { 222 return err 223 } 224 if err := fieldMask.FromProtoFieldMask(protoFieldMask); err != nil { 225 return err 226 } 227 return nil 228 } 229 230 func (fieldMask *OsImageProfile_FieldMask) Size() int { 231 return proto.Size(fieldMask.ToProtoFieldMask()) 232 } 233 234 func (fieldMask OsImageProfile_FieldMask) MarshalJSON() ([]byte, error) { 235 return json.Marshal(fieldMask.ToProtoFieldMask()) 236 } 237 238 func (fieldMask *OsImageProfile_FieldMask) UnmarshalJSON(data []byte) error { 239 protoFieldMask := &googlefieldmaskpb.FieldMask{} 240 if err := json.Unmarshal(data, protoFieldMask); err != nil { 241 return err 242 } 243 if err := fieldMask.FromProtoFieldMask(protoFieldMask); err != nil { 244 return err 245 } 246 return nil 247 } 248 249 func (fieldMask *OsImageProfile_FieldMask) AppendPath(path OsImageProfile_FieldPath) { 250 fieldMask.Paths = append(fieldMask.Paths, path) 251 } 252 253 func (fieldMask *OsImageProfile_FieldMask) AppendRawPath(path gotenobject.FieldPath) { 254 fieldMask.Paths = append(fieldMask.Paths, path.(OsImageProfile_FieldPath)) 255 } 256 257 func (fieldMask *OsImageProfile_FieldMask) GetPaths() []OsImageProfile_FieldPath { 258 if fieldMask == nil { 259 return nil 260 } 261 return fieldMask.Paths 262 } 263 264 func (fieldMask *OsImageProfile_FieldMask) GetRawPaths() []gotenobject.FieldPath { 265 if fieldMask == nil { 266 return nil 267 } 268 rawPaths := make([]gotenobject.FieldPath, 0, len(fieldMask.Paths)) 269 for _, path := range fieldMask.Paths { 270 rawPaths = append(rawPaths, path) 271 } 272 return rawPaths 273 } 274 275 func (fieldMask *OsImageProfile_FieldMask) SetFromCliFlag(raw string) error { 276 path, err := ParseOsImageProfile_FieldPath(raw) 277 if err != nil { 278 return err 279 } 280 fieldMask.Paths = append(fieldMask.Paths, path) 281 return nil 282 } 283 284 func (fieldMask *OsImageProfile_FieldMask) Set(target, source *OsImageProfile) { 285 for _, path := range fieldMask.Paths { 286 val, _ := path.GetSingle(source) 287 // if val is nil, then field does not exist in source, skip 288 // otherwise, process (can still reflect.ValueOf(val).IsNil!) 289 if val != nil { 290 path.WithIValue(val).SetTo(&target) 291 } 292 } 293 } 294 295 func (fieldMask *OsImageProfile_FieldMask) SetRaw(target, source gotenobject.GotenObjectExt) { 296 fieldMask.Set(target.(*OsImageProfile), source.(*OsImageProfile)) 297 } 298 299 func (fieldMask *OsImageProfile_FieldMask) Project(source *OsImageProfile) *OsImageProfile { 300 if source == nil { 301 return nil 302 } 303 if fieldMask == nil { 304 return source 305 } 306 result := &OsImageProfile{} 307 metadataMask := &meta.Meta_FieldMask{} 308 wholeMetadataAccepted := false 309 310 for _, p := range fieldMask.Paths { 311 switch tp := p.(type) { 312 case *OsImageProfile_FieldTerminalPath: 313 switch tp.selector { 314 case OsImageProfile_FieldPathSelectorName: 315 result.Name = source.Name 316 case OsImageProfile_FieldPathSelectorMetadata: 317 result.Metadata = source.Metadata 318 wholeMetadataAccepted = true 319 case OsImageProfile_FieldPathSelectorDisplayName: 320 result.DisplayName = source.DisplayName 321 case OsImageProfile_FieldPathSelectorDeviceType: 322 result.DeviceType = source.DeviceType 323 case OsImageProfile_FieldPathSelectorInstallAiAccelerator: 324 result.InstallAiAccelerator = source.InstallAiAccelerator 325 case OsImageProfile_FieldPathSelectorEncryption: 326 result.Encryption = source.Encryption 327 case OsImageProfile_FieldPathSelectorDiskMapping: 328 result.DiskMapping = source.DiskMapping 329 case OsImageProfile_FieldPathSelectorNetworkAgent: 330 result.NetworkAgent = source.NetworkAgent 331 case OsImageProfile_FieldPathSelectorNtp: 332 result.Ntp = source.Ntp 333 case OsImageProfile_FieldPathSelectorHttpProxy: 334 result.HttpProxy = source.HttpProxy 335 case OsImageProfile_FieldPathSelectorHttpsProxy: 336 result.HttpsProxy = source.HttpsProxy 337 case OsImageProfile_FieldPathSelectorNoProxy: 338 result.NoProxy = source.NoProxy 339 } 340 case *OsImageProfile_FieldSubPath: 341 switch tp.selector { 342 case OsImageProfile_FieldPathSelectorMetadata: 343 metadataMask.AppendPath(tp.subPath.(meta.Meta_FieldPath)) 344 } 345 } 346 } 347 if wholeMetadataAccepted == false && len(metadataMask.Paths) > 0 { 348 result.Metadata = metadataMask.Project(source.GetMetadata()) 349 } 350 return result 351 } 352 353 func (fieldMask *OsImageProfile_FieldMask) ProjectRaw(source gotenobject.GotenObjectExt) gotenobject.GotenObjectExt { 354 return fieldMask.Project(source.(*OsImageProfile)) 355 } 356 357 func (fieldMask *OsImageProfile_FieldMask) PathsCount() int { 358 if fieldMask == nil { 359 return 0 360 } 361 return len(fieldMask.Paths) 362 }