From e7e47fdd6781386ec950d780aae2a1196ed4bd2d Mon Sep 17 00:00:00 2001 From: Leonardo Parente <23251360+leoparente@users.noreply.github.com> Date: Mon, 19 Aug 2024 15:32:17 -0300 Subject: [PATCH] chore: add generic type to base wrapper --- diode-server/netbox/ipam_wrappers.go | 222 +- diode-server/netbox/wrappers.go | 761 ++-- diode-server/netboxdiodeplugin/client_test.go | 90 +- .../reconciler/changeset/changeset_test.go | 3166 +++++++++-------- .../ingestion_processor_internal_test.go | 4 +- 5 files changed, 2226 insertions(+), 2017 deletions(-) diff --git a/diode-server/netbox/ipam_wrappers.go b/diode-server/netbox/ipam_wrappers.go index 0266cab7..784955c4 100644 --- a/diode-server/netbox/ipam_wrappers.go +++ b/diode-server/netbox/ipam_wrappers.go @@ -10,36 +10,28 @@ import ( // IpamIPAddressDataWrapper represents the IPAM IP address data wrapper type IpamIPAddressDataWrapper struct { - BaseDataWrapper - IPAddress *IpamIPAddress -} - -func (*IpamIPAddressDataWrapper) comparableData() {} - -// Data returns the IP address -func (dw *IpamIPAddressDataWrapper) Data() any { - return dw.IPAddress + BaseDataWrapper[IpamIPAddress] } // IsValid returns true if the IPAddress is not nil func (dw *IpamIPAddressDataWrapper) IsValid() bool { - if dw.IPAddress != nil && !dw.hasParent && dw.IPAddress.Address == "" { - dw.IPAddress = nil + if dw.Field != nil && !dw.hasParent && dw.Field.Address == "" { + dw.Field = nil } - if dw.IPAddress != nil { - if err := dw.IPAddress.Validate(); err != nil { + if dw.Field != nil { + if err := dw.Field.Validate(); err != nil { return false } } - return dw.IPAddress != nil + return dw.Field != nil } // Normalise normalises the data func (dw *IpamIPAddressDataWrapper) Normalise() { - if dw.IsValid() && dw.IPAddress.Tags != nil && len(dw.IPAddress.Tags) == 0 { - dw.IPAddress.Tags = nil + if dw.IsValid() && dw.Field.Tags != nil && len(dw.Field.Tags) == 0 { + dw.Field.Tags = nil } dw.intended = true } @@ -50,25 +42,25 @@ func (dw *IpamIPAddressDataWrapper) NestedObjects() ([]ComparableData, error) { return dw.nestedObjects, nil } - if dw.IPAddress != nil && dw.hasParent && dw.IPAddress.Address == "" { - dw.IPAddress = nil + if dw.Field != nil && dw.hasParent && dw.Field.Address == "" { + dw.Field = nil } objects := make([]ComparableData, 0) - if dw.IPAddress == nil && dw.intended { + if dw.Field == nil && dw.intended { return objects, nil } - if dw.IPAddress == nil && dw.hasParent { + if dw.Field == nil && dw.hasParent { dw.placeholder = true } var assignedObject ComparableData - if dw.IPAddress.AssignedObject != nil { - switch dw.IPAddress.AssignedObject.(type) { + if dw.Field.AssignedObject != nil { + switch dw.Field.AssignedObject.(type) { case *IPAddressInterface: - assignedObject = &DcimInterfaceDataWrapper{Interface: dw.IPAddress.AssignedObject.(*IPAddressInterface).Interface, BaseDataWrapper: BaseDataWrapper{placeholder: dw.placeholder, hasParent: true, intended: dw.intended}} + assignedObject = &DcimInterfaceDataWrapper{BaseDataWrapper: BaseDataWrapper[DcimInterface]{Field: dw.Field.AssignedObject.(*IPAddressInterface).Interface, placeholder: dw.placeholder, hasParent: true, intended: dw.intended}} } } @@ -80,14 +72,14 @@ func (dw *IpamIPAddressDataWrapper) NestedObjects() ([]ComparableData, error) { objects = append(objects, do...) - switch dw.IPAddress.AssignedObject.(type) { + switch dw.Field.AssignedObject.(type) { case *IPAddressInterface: - dw.IPAddress.AssignedObject.(*IPAddressInterface).Interface = assignedObject.Data().(*DcimInterface) + dw.Field.AssignedObject.(*IPAddressInterface).Interface = assignedObject.Data().(*DcimInterface) } } - if dw.IPAddress.Tags != nil { - for _, t := range dw.IPAddress.Tags { + if dw.Field.Tags != nil { + for _, t := range dw.Field.Tags { if t.Slug == "" { t.Slug = slug.Make(t.Name) } @@ -110,11 +102,11 @@ func (dw *IpamIPAddressDataWrapper) DataType() string { // ObjectStateQueryParams returns the query parameters needed to retrieve its object state func (dw *IpamIPAddressDataWrapper) ObjectStateQueryParams() map[string]string { params := map[string]string{ - "q": dw.IPAddress.Address, + "q": dw.Field.Address, } - switch dw.IPAddress.AssignedObject.(type) { + switch dw.Field.AssignedObject.(type) { case *IPAddressInterface: - ao := dw.IPAddress.AssignedObject.(*IPAddressInterface).Interface + ao := dw.Field.AssignedObject.(*IPAddressInterface).Interface if ao != nil { params["interface__name"] = ao.Name if ao.Device != nil { @@ -130,15 +122,15 @@ func (dw *IpamIPAddressDataWrapper) ObjectStateQueryParams() map[string]string { // ID returns the ID of the data func (dw *IpamIPAddressDataWrapper) ID() int { - return dw.IPAddress.ID + return dw.Field.ID } func (dw *IpamIPAddressDataWrapper) hash() string { var interfaceName, deviceName, siteName string - if dw.IPAddress.AssignedObject != nil { - switch dw.IPAddress.AssignedObject.(type) { + if dw.Field.AssignedObject != nil { + switch dw.Field.AssignedObject.(type) { case *IPAddressInterface: - ao := dw.IPAddress.AssignedObject.(*IPAddressInterface).Interface + ao := dw.Field.AssignedObject.(*IPAddressInterface).Interface if ao != nil { interfaceName = ao.Name if ao.Device != nil { @@ -150,7 +142,7 @@ func (dw *IpamIPAddressDataWrapper) hash() string { } } } - return slug.Make(fmt.Sprintf("%s-%s-%s-%s", dw.IPAddress.Address, interfaceName, deviceName, siteName)) + return slug.Make(fmt.Sprintf("%s-%s-%s-%s", dw.Field.Address, interfaceName, deviceName, siteName)) } // Patch creates patches between the actual, intended and current data @@ -168,10 +160,10 @@ func (dw *IpamIPAddressDataWrapper) Patch(cmp ComparableData, intendedNestedObje var actualAssignedObject ComparableData var intendedAssignedObject ComparableData - if dw.IPAddress.AssignedObject != nil { - switch dw.IPAddress.AssignedObject.(type) { + if dw.Field.AssignedObject != nil { + switch dw.Field.AssignedObject.(type) { case *IPAddressInterface: - assignedObject := &DcimInterfaceDataWrapper{Interface: dw.IPAddress.AssignedObject.(*IPAddressInterface).Interface, BaseDataWrapper: BaseDataWrapper{placeholder: dw.placeholder, hasParent: true, intended: dw.intended}} + assignedObject := &DcimInterfaceDataWrapper{BaseDataWrapper: BaseDataWrapper[DcimInterface]{Field: dw.Field.AssignedObject.(*IPAddressInterface).Interface, placeholder: dw.placeholder, hasParent: true, intended: dw.intended}} actualAssignedObject = extractFromObjectsMap(actualNestedObjectsMap, fmt.Sprintf("%p", assignedObject.Data())) intendedAssignedObject = extractFromObjectsMap(intendedNestedObjects, fmt.Sprintf("%p", assignedObject.Data())) } @@ -189,8 +181,8 @@ func (dw *IpamIPAddressDataWrapper) Patch(cmp ComparableData, intendedNestedObje currentNestedObjectsMap[fmt.Sprintf("%p", obj.Data())] = obj } - dw.IPAddress.ID = intended.IPAddress.ID - dw.IPAddress.Address = intended.IPAddress.Address + dw.Field.ID = intended.Field.ID + dw.Field.Address = intended.Field.Address if actualAssignedObject != nil { assignedObjectsToReconcile, aoErr := actualAssignedObject.Patch(intendedAssignedObject, intendedNestedObjects) @@ -198,7 +190,7 @@ func (dw *IpamIPAddressDataWrapper) Patch(cmp ComparableData, intendedNestedObje return nil, aoErr } - switch dw.IPAddress.AssignedObject.(type) { + switch dw.Field.AssignedObject.(type) { case *IPAddressInterface: assignedInterface, err := copyData(actualAssignedObject.Data().(*DcimInterface)) if err != nil { @@ -216,12 +208,12 @@ func (dw *IpamIPAddressDataWrapper) Patch(cmp ComparableData, intendedNestedObje intendedAssignedInterfaceID := intendedAssignedObject.ID() intendedAssignedInterfaceDeviceID := intendedAssignedObject.Data().(*DcimInterface).Device.ID - if intended.IPAddress.AssignedObject != nil { - intendedAssignedInterfaceID = intended.IPAddress.AssignedObject.(*IPAddressInterface).Interface.ID - intendedAssignedInterfaceDeviceID = intended.IPAddress.AssignedObject.(*IPAddressInterface).Interface.Device.ID + if intended.Field.AssignedObject != nil { + intendedAssignedInterfaceID = intended.Field.AssignedObject.(*IPAddressInterface).Interface.ID + intendedAssignedInterfaceDeviceID = intended.Field.AssignedObject.(*IPAddressInterface).Interface.Device.ID } - intended.IPAddress.AssignedObject = &IPAddressInterface{ + intended.Field.AssignedObject = &IPAddressInterface{ Interface: &DcimInterface{ ID: intendedAssignedInterfaceID, Device: &DcimDevice{ @@ -231,43 +223,43 @@ func (dw *IpamIPAddressDataWrapper) Patch(cmp ComparableData, intendedNestedObje } } - dw.IPAddress.AssignedObject.(*IPAddressInterface).Interface = assignedInterface + dw.Field.AssignedObject.(*IPAddressInterface).Interface = assignedInterface } dw.objectsToReconcile = append(dw.objectsToReconcile, assignedObjectsToReconcile...) } - if dw.IPAddress.AssignedObject == nil { - dw.IPAddress.AssignedObject = intended.IPAddress.AssignedObject + if dw.Field.AssignedObject == nil { + dw.Field.AssignedObject = intended.Field.AssignedObject } - if dw.IPAddress.Status == nil { - dw.IPAddress.Status = intended.IPAddress.Status + if dw.Field.Status == nil { + dw.Field.Status = intended.Field.Status } - if dw.IPAddress.Role == nil { - dw.IPAddress.Role = intended.IPAddress.Role + if dw.Field.Role == nil { + dw.Field.Role = intended.Field.Role } - if dw.IPAddress.DNSName == nil { - dw.IPAddress.DNSName = intended.IPAddress.DNSName + if dw.Field.DNSName == nil { + dw.Field.DNSName = intended.Field.DNSName } - if dw.IPAddress.Description == nil { - dw.IPAddress.Description = intended.IPAddress.Description + if dw.Field.Description == nil { + dw.Field.Description = intended.Field.Description } - if dw.IPAddress.Comments == nil { - dw.IPAddress.Comments = intended.IPAddress.Comments + if dw.Field.Comments == nil { + dw.Field.Comments = intended.Field.Comments } - tagsToMerge := mergeTags(dw.IPAddress.Tags, intended.IPAddress.Tags, intendedNestedObjects) + tagsToMerge := mergeTags(dw.Field.Tags, intended.Field.Tags, intendedNestedObjects) if len(tagsToMerge) > 0 { - dw.IPAddress.Tags = tagsToMerge + dw.Field.Tags = tagsToMerge } - for _, t := range dw.IPAddress.Tags { + for _, t := range dw.Field.Tags { if t.ID == 0 { dw.objectsToReconcile = append(dw.objectsToReconcile, &TagDataWrapper{Tag: t, hasParent: true}) } @@ -287,7 +279,7 @@ func (dw *IpamIPAddressDataWrapper) Patch(cmp ComparableData, intendedNestedObje return nil, aoErr } - switch dw.IPAddress.AssignedObject.(type) { + switch dw.Field.AssignedObject.(type) { case *IPAddressInterface: assignedInterface, err := copyData(actualAssignedObject.Data().(*DcimInterface)) if err != nil { @@ -304,19 +296,19 @@ func (dw *IpamIPAddressDataWrapper) Patch(cmp ComparableData, intendedNestedObje } } - dw.IPAddress.AssignedObject.(*IPAddressInterface).Interface = assignedInterface + dw.Field.AssignedObject.(*IPAddressInterface).Interface = assignedInterface } objectsToReconcile = append(objectsToReconcile, assignedObjectsToReconcile...) } - tagsToMerge := mergeTags(dw.IPAddress.Tags, nil, intendedNestedObjects) + tagsToMerge := mergeTags(dw.Field.Tags, nil, intendedNestedObjects) if len(tagsToMerge) > 0 { - dw.IPAddress.Tags = tagsToMerge + dw.Field.Tags = tagsToMerge } - for _, t := range dw.IPAddress.Tags { + for _, t := range dw.Field.Tags { if t.ID == 0 { dw.objectsToReconcile = append(dw.objectsToReconcile, &TagDataWrapper{Tag: t, hasParent: true}) } @@ -337,43 +329,35 @@ func (dw *IpamIPAddressDataWrapper) Patch(cmp ComparableData, intendedNestedObje // SetDefaults sets the default values for the IP address func (dw *IpamIPAddressDataWrapper) SetDefaults() { - if dw.IPAddress.Status == nil { - dw.IPAddress.Status = &DefaultIPAddressStatus + if dw.Field.Status == nil { + dw.Field.Status = &DefaultIPAddressStatus } } // IpamPrefixDataWrapper represents the IPAM Prefix data wrapper type IpamPrefixDataWrapper struct { - BaseDataWrapper - Prefix *IpamPrefix -} - -func (*IpamPrefixDataWrapper) comparableData() {} - -// Data returns the Prefix -func (dw *IpamPrefixDataWrapper) Data() any { - return dw.Prefix + BaseDataWrapper[IpamPrefix] } // IsValid returns true if the IpamPrefix is not nil func (dw *IpamPrefixDataWrapper) IsValid() bool { - if dw.Prefix != nil && !dw.hasParent && dw.Prefix.Prefix == "" { - dw.Prefix = nil + if dw.Field != nil && !dw.hasParent && dw.Field.Prefix == "" { + dw.Field = nil } - if dw.Prefix != nil { - if err := dw.Prefix.Validate(); err != nil { + if dw.Field != nil { + if err := dw.Field.Validate(); err != nil { return false } } - return dw.Prefix != nil + return dw.Field != nil } // Normalise normalises the data func (dw *IpamPrefixDataWrapper) Normalise() { - if dw.IsValid() && dw.Prefix.Tags != nil && len(dw.Prefix.Tags) == 0 { - dw.Prefix.Tags = nil + if dw.IsValid() && dw.Field.Tags != nil && len(dw.Field.Tags) == 0 { + dw.Field.Tags = nil } dw.intended = true } @@ -384,21 +368,21 @@ func (dw *IpamPrefixDataWrapper) NestedObjects() ([]ComparableData, error) { return dw.nestedObjects, nil } - if dw.Prefix != nil && dw.hasParent && dw.Prefix.Prefix == "" { - dw.Prefix = nil + if dw.Field != nil && dw.hasParent && dw.Field.Prefix == "" { + dw.Field = nil } objects := make([]ComparableData, 0) - if dw.Prefix == nil && dw.intended { + if dw.Field == nil && dw.intended { return objects, nil } - if dw.Prefix == nil && dw.hasParent { + if dw.Field == nil && dw.hasParent { dw.placeholder = true } - site := DcimSiteDataWrapper{Site: dw.Prefix.Site, BaseDataWrapper: BaseDataWrapper{placeholder: dw.placeholder, hasParent: true, intended: dw.intended}} + site := DcimSiteDataWrapper{BaseDataWrapper: BaseDataWrapper[DcimSite]{Field: dw.Field.Site, placeholder: dw.placeholder, hasParent: true, intended: dw.intended}} so, err := site.NestedObjects() if err != nil { @@ -407,10 +391,10 @@ func (dw *IpamPrefixDataWrapper) NestedObjects() ([]ComparableData, error) { objects = append(objects, so...) - dw.Prefix.Site = site.Site + dw.Field.Site = site.Field - if dw.Prefix.Tags != nil { - for _, t := range dw.Prefix.Tags { + if dw.Field.Tags != nil { + for _, t := range dw.Field.Tags { if t.Slug == "" { t.Slug = slug.Make(t.Name) } @@ -433,13 +417,13 @@ func (dw *IpamPrefixDataWrapper) DataType() string { // ObjectStateQueryParams returns the query parameters needed to retrieve its object state func (dw *IpamPrefixDataWrapper) ObjectStateQueryParams() map[string]string { return map[string]string{ - "q": dw.Prefix.Prefix, + "q": dw.Field.Prefix, } } // ID returns the ID of the data func (dw *IpamPrefixDataWrapper) ID() int { - return dw.Prefix.ID + return dw.Field.ID } // Patch creates patches between the actual, intended and current data @@ -454,8 +438,8 @@ func (dw *IpamPrefixDataWrapper) Patch(cmp ComparableData, intendedNestedObjects actualNestedObjectsMap[fmt.Sprintf("%p", obj.Data())] = obj } - actualSite := extractFromObjectsMap(actualNestedObjectsMap, fmt.Sprintf("%p", dw.Prefix.Site)) - intendedSite := extractFromObjectsMap(intendedNestedObjects, fmt.Sprintf("%p", dw.Prefix.Site)) + actualSite := extractFromObjectsMap(actualNestedObjectsMap, fmt.Sprintf("%p", dw.Field.Site)) + intendedSite := extractFromObjectsMap(intendedNestedObjects, fmt.Sprintf("%p", dw.Field.Site)) reconciliationRequired := true @@ -469,11 +453,11 @@ func (dw *IpamPrefixDataWrapper) Patch(cmp ComparableData, intendedNestedObjects currentNestedObjectsMap[fmt.Sprintf("%p", obj.Data())] = obj } - dw.Prefix.ID = intended.Prefix.ID - dw.Prefix.Prefix = intended.Prefix.Prefix + dw.Field.ID = intended.Field.ID + dw.Field.Prefix = intended.Field.Prefix - if actualSite.IsPlaceholder() && intended.Prefix.Site != nil { - intendedSite = extractFromObjectsMap(currentNestedObjectsMap, fmt.Sprintf("%p", intended.Prefix.Site)) + if actualSite.IsPlaceholder() && intended.Field.Site != nil { + intendedSite = extractFromObjectsMap(currentNestedObjectsMap, fmt.Sprintf("%p", intended.Field.Site)) } siteObjectsToReconcile, siteErr := actualSite.Patch(intendedSite, intendedNestedObjects) @@ -493,38 +477,38 @@ func (dw *IpamPrefixDataWrapper) Patch(cmp ComparableData, intendedNestedObjects } intendedSiteID := intendedSite.ID() - if intended.Prefix.Site != nil { - intendedSiteID = intended.Prefix.Site.ID + if intended.Field.Site != nil { + intendedSiteID = intended.Field.Site.ID } - intended.Prefix.Site = &DcimSite{ + intended.Field.Site = &DcimSite{ ID: intendedSiteID, } } - dw.Prefix.Site = site + dw.Field.Site = site dw.objectsToReconcile = append(dw.objectsToReconcile, siteObjectsToReconcile...) - if dw.Prefix.Status == nil { - dw.Prefix.Status = intended.Prefix.Status + if dw.Field.Status == nil { + dw.Field.Status = intended.Field.Status } - if dw.Prefix.Description == nil { - dw.Prefix.Description = intended.Prefix.Description + if dw.Field.Description == nil { + dw.Field.Description = intended.Field.Description } - if dw.Prefix.Comments == nil { - dw.Prefix.Comments = intended.Prefix.Comments + if dw.Field.Comments == nil { + dw.Field.Comments = intended.Field.Comments } - tagsToMerge := mergeTags(dw.Prefix.Tags, intended.Prefix.Tags, intendedNestedObjects) + tagsToMerge := mergeTags(dw.Field.Tags, intended.Field.Tags, intendedNestedObjects) if len(tagsToMerge) > 0 { - dw.Prefix.Tags = tagsToMerge + dw.Field.Tags = tagsToMerge } - for _, t := range dw.Prefix.Tags { + for _, t := range dw.Field.Tags { if t.ID == 0 { dw.objectsToReconcile = append(dw.objectsToReconcile, &TagDataWrapper{Tag: t, hasParent: true}) } @@ -553,17 +537,17 @@ func (dw *IpamPrefixDataWrapper) Patch(cmp ComparableData, intendedNestedObjects ID: actualSite.ID(), } } - dw.Prefix.Site = site + dw.Field.Site = site dw.objectsToReconcile = append(dw.objectsToReconcile, siteObjectsToReconcile...) - tagsToMerge := mergeTags(dw.Prefix.Tags, nil, intendedNestedObjects) + tagsToMerge := mergeTags(dw.Field.Tags, nil, intendedNestedObjects) if len(tagsToMerge) > 0 { - dw.Prefix.Tags = tagsToMerge + dw.Field.Tags = tagsToMerge } - for _, t := range dw.Prefix.Tags { + for _, t := range dw.Field.Tags { if t.ID == 0 { dw.objectsToReconcile = append(dw.objectsToReconcile, &TagDataWrapper{Tag: t, hasParent: true}) } @@ -580,7 +564,7 @@ func (dw *IpamPrefixDataWrapper) Patch(cmp ComparableData, intendedNestedObjects // SetDefaults sets the default values for the IPAM Prefix func (dw *IpamPrefixDataWrapper) SetDefaults() { - if dw.Prefix.Status == nil { - dw.Prefix.Status = &DefaultPrefixStatus + if dw.Field.Status == nil { + dw.Field.Status = &DefaultPrefixStatus } } diff --git a/diode-server/netbox/wrappers.go b/diode-server/netbox/wrappers.go index e71024d2..0d9a098e 100644 --- a/diode-server/netbox/wrappers.go +++ b/diode-server/netbox/wrappers.go @@ -49,22 +49,31 @@ type ComparableData interface { } // BaseDataWrapper is the base struct for all data wrappers -type BaseDataWrapper struct { +type BaseDataWrapper[T any] struct { placeholder bool hasParent bool intended bool hasChanged bool nestedObjects []ComparableData objectsToReconcile []ComparableData + Field *T +} + +// comparableData is a no-op method to satisfy the ComparableData interface +func (bw *BaseDataWrapper[T]) comparableData() {} + +// Data returns the Field +func (bw *BaseDataWrapper[T]) Data() any { + return bw.Field } // IsPlaceholder returns true if the data is a placeholder -func (bw *BaseDataWrapper) IsPlaceholder() bool { +func (bw *BaseDataWrapper[T]) IsPlaceholder() bool { return bw.placeholder } // HasChanged returns true if the data has changed -func (bw *BaseDataWrapper) HasChanged() bool { +func (bw *BaseDataWrapper[T]) HasChanged() bool { return bw.hasChanged } @@ -78,29 +87,21 @@ func copyData[T any](srcData *T) (*T, error) { // DcimDeviceDataWrapper represents a DCIM device data wrapper type DcimDeviceDataWrapper struct { - BaseDataWrapper - Device *DcimDevice -} - -func (*DcimDeviceDataWrapper) comparableData() {} - -// Data returns the Device -func (dw *DcimDeviceDataWrapper) Data() any { - return dw.Device + BaseDataWrapper[DcimDevice] } // IsValid returns true if the Device is not nil func (dw *DcimDeviceDataWrapper) IsValid() bool { - if dw.Device != nil && !dw.hasParent && dw.Device.Name == "" { - dw.Device = nil + if dw.Field != nil && !dw.hasParent && dw.Field.Name == "" { + dw.Field = nil } - return dw.Device != nil + return dw.Field != nil } // Normalise normalises the data func (dw *DcimDeviceDataWrapper) Normalise() { - if dw.IsValid() && dw.Device.Tags != nil && len(dw.Device.Tags) == 0 { - dw.Device.Tags = nil + if dw.IsValid() && dw.Field.Tags != nil && len(dw.Field.Tags) == 0 { + dw.Field.Tags = nil } dw.intended = true } @@ -111,26 +112,26 @@ func (dw *DcimDeviceDataWrapper) NestedObjects() ([]ComparableData, error) { return dw.nestedObjects, nil } - if dw.Device != nil && dw.hasParent && dw.Device.Name == "" { - dw.Device = nil + if dw.Field != nil && dw.hasParent && dw.Field.Name == "" { + dw.Field = nil } objects := make([]ComparableData, 0) - if dw.Device == nil && dw.intended { + if dw.Field == nil && dw.intended { return objects, nil } - if dw.Device == nil && dw.hasParent { - dw.Device = NewDcimDevice() + if dw.Field == nil && dw.hasParent { + dw.Field = NewDcimDevice() dw.placeholder = true } // Ignore primary IP addresses for time being - dw.Device.PrimaryIPv4 = nil - dw.Device.PrimaryIPv6 = nil + dw.Field.PrimaryIPv4 = nil + dw.Field.PrimaryIPv6 = nil - site := DcimSiteDataWrapper{Site: dw.Device.Site, BaseDataWrapper: BaseDataWrapper{placeholder: dw.placeholder, hasParent: true, intended: dw.intended}} + site := DcimSiteDataWrapper{BaseDataWrapper: BaseDataWrapper[DcimSite]{Field: dw.Field.Site, placeholder: dw.placeholder, hasParent: true, intended: dw.intended}} so, err := site.NestedObjects() if err != nil { @@ -139,10 +140,10 @@ func (dw *DcimDeviceDataWrapper) NestedObjects() ([]ComparableData, error) { objects = append(objects, so...) - dw.Device.Site = site.Site + dw.Field.Site = site.Field - if dw.Device.Platform != nil { - platform := DcimPlatformDataWrapper{Platform: dw.Device.Platform, BaseDataWrapper: BaseDataWrapper{placeholder: dw.placeholder, hasParent: true, intended: dw.intended}} + if dw.Field.Platform != nil { + platform := DcimPlatformDataWrapper{BaseDataWrapper: BaseDataWrapper[DcimPlatform]{Field: dw.Field.Platform, placeholder: dw.placeholder, hasParent: true, intended: dw.intended}} po, err := platform.NestedObjects() if err != nil { @@ -151,10 +152,10 @@ func (dw *DcimDeviceDataWrapper) NestedObjects() ([]ComparableData, error) { objects = append(objects, po...) - dw.Device.Platform = platform.Platform + dw.Field.Platform = platform.Field } - deviceType := DcimDeviceTypeDataWrapper{DeviceType: dw.Device.DeviceType, BaseDataWrapper: BaseDataWrapper{placeholder: dw.placeholder, hasParent: true, intended: dw.intended}} + deviceType := DcimDeviceTypeDataWrapper{BaseDataWrapper: BaseDataWrapper[DcimDeviceType]{Field: dw.Field.DeviceType, placeholder: dw.placeholder, hasParent: true, intended: dw.intended}} dto, err := deviceType.NestedObjects() if err != nil { @@ -163,9 +164,9 @@ func (dw *DcimDeviceDataWrapper) NestedObjects() ([]ComparableData, error) { objects = append(objects, dto...) - dw.Device.DeviceType = deviceType.DeviceType + dw.Field.DeviceType = deviceType.Field - deviceRole := DcimDeviceRoleDataWrapper{DeviceRole: dw.Device.Role, BaseDataWrapper: BaseDataWrapper{placeholder: dw.placeholder, hasParent: true, intended: dw.intended}} + deviceRole := DcimDeviceRoleDataWrapper{BaseDataWrapper: BaseDataWrapper[DcimDeviceRole]{Field: dw.Field.Role, placeholder: dw.placeholder, hasParent: true, intended: dw.intended}} dro, err := deviceRole.NestedObjects() if err != nil { @@ -174,10 +175,10 @@ func (dw *DcimDeviceDataWrapper) NestedObjects() ([]ComparableData, error) { objects = append(objects, dro...) - dw.Device.Role = deviceRole.DeviceRole + dw.Field.Role = deviceRole.Field - if dw.Device.Tags != nil { - for _, t := range dw.Device.Tags { + if dw.Field.Tags != nil { + for _, t := range dw.Field.Tags { if t.Slug == "" { t.Slug = slug.Make(t.Name) } @@ -200,17 +201,17 @@ func (dw *DcimDeviceDataWrapper) DataType() string { // ObjectStateQueryParams returns the query parameters needed to retrieve its object state func (dw *DcimDeviceDataWrapper) ObjectStateQueryParams() map[string]string { params := map[string]string{ - "q": dw.Device.Name, + "q": dw.Field.Name, } - if dw.Device.Site != nil { - params["site__name"] = dw.Device.Site.Name + if dw.Field.Site != nil { + params["site__name"] = dw.Field.Site.Name } return params } // ID returns the ID of the data func (dw *DcimDeviceDataWrapper) ID() int { - return dw.Device.ID + return dw.Field.ID } // Patch creates patches between the actual, intended and current data @@ -225,17 +226,17 @@ func (dw *DcimDeviceDataWrapper) Patch(cmp ComparableData, intendedNestedObjects actualNestedObjectsMap[fmt.Sprintf("%p", obj.Data())] = obj } - actualSite := extractFromObjectsMap(actualNestedObjectsMap, fmt.Sprintf("%p", dw.Device.Site)) - intendedSite := extractFromObjectsMap(intendedNestedObjects, fmt.Sprintf("%p", dw.Device.Site)) + actualSite := extractFromObjectsMap(actualNestedObjectsMap, fmt.Sprintf("%p", dw.Field.Site)) + intendedSite := extractFromObjectsMap(intendedNestedObjects, fmt.Sprintf("%p", dw.Field.Site)) - actualPlatform := extractFromObjectsMap(actualNestedObjectsMap, fmt.Sprintf("%p", dw.Device.Platform)) - intendedPlatform := extractFromObjectsMap(intendedNestedObjects, fmt.Sprintf("%p", dw.Device.Platform)) + actualPlatform := extractFromObjectsMap(actualNestedObjectsMap, fmt.Sprintf("%p", dw.Field.Platform)) + intendedPlatform := extractFromObjectsMap(intendedNestedObjects, fmt.Sprintf("%p", dw.Field.Platform)) - actualDeviceType := extractFromObjectsMap(actualNestedObjectsMap, fmt.Sprintf("%p", dw.Device.DeviceType)) - intendedDeviceType := extractFromObjectsMap(intendedNestedObjects, fmt.Sprintf("%p", dw.Device.DeviceType)) + actualDeviceType := extractFromObjectsMap(actualNestedObjectsMap, fmt.Sprintf("%p", dw.Field.DeviceType)) + intendedDeviceType := extractFromObjectsMap(intendedNestedObjects, fmt.Sprintf("%p", dw.Field.DeviceType)) - actualRole := extractFromObjectsMap(actualNestedObjectsMap, fmt.Sprintf("%p", dw.Device.Role)) - intendedRole := extractFromObjectsMap(intendedNestedObjects, fmt.Sprintf("%p", dw.Device.Role)) + actualRole := extractFromObjectsMap(actualNestedObjectsMap, fmt.Sprintf("%p", dw.Field.Role)) + intendedRole := extractFromObjectsMap(intendedNestedObjects, fmt.Sprintf("%p", dw.Field.Role)) reconciliationRequired := true @@ -249,31 +250,31 @@ func (dw *DcimDeviceDataWrapper) Patch(cmp ComparableData, intendedNestedObjects currentNestedObjectsMap[fmt.Sprintf("%p", obj.Data())] = obj } - dw.Device.ID = intended.Device.ID - dw.Device.Name = intended.Device.Name + dw.Field.ID = intended.Field.ID + dw.Field.Name = intended.Field.Name - if dw.Device.Status == nil { - dw.Device.Status = intended.Device.Status + if dw.Field.Status == nil { + dw.Field.Status = intended.Field.Status } - if dw.Device.Description == nil { - dw.Device.Description = intended.Device.Description + if dw.Field.Description == nil { + dw.Field.Description = intended.Field.Description } - if dw.Device.Comments == nil { - dw.Device.Comments = intended.Device.Comments + if dw.Field.Comments == nil { + dw.Field.Comments = intended.Field.Comments } - if dw.Device.AssetTag == nil { - dw.Device.AssetTag = intended.Device.AssetTag + if dw.Field.AssetTag == nil { + dw.Field.AssetTag = intended.Field.AssetTag } - if dw.Device.Serial == nil { - dw.Device.Serial = intended.Device.Serial + if dw.Field.Serial == nil { + dw.Field.Serial = intended.Field.Serial } - if actualSite.IsPlaceholder() && intended.Device.Site != nil { - intendedSite = extractFromObjectsMap(currentNestedObjectsMap, fmt.Sprintf("%p", intended.Device.Site)) + if actualSite.IsPlaceholder() && intended.Field.Site != nil { + intendedSite = extractFromObjectsMap(currentNestedObjectsMap, fmt.Sprintf("%p", intended.Field.Site)) } siteObjectsToReconcile, siteErr := actualSite.Patch(intendedSite, intendedNestedObjects) @@ -293,22 +294,22 @@ func (dw *DcimDeviceDataWrapper) Patch(cmp ComparableData, intendedNestedObjects } intendedSiteID := intendedSite.ID() - if intended.Device.Site != nil { - intendedSiteID = intended.Device.Site.ID + if intended.Field.Site != nil { + intendedSiteID = intended.Field.Site.ID } - intended.Device.Site = &DcimSite{ + intended.Field.Site = &DcimSite{ ID: intendedSiteID, } } - dw.Device.Site = site + dw.Field.Site = site dw.objectsToReconcile = append(dw.objectsToReconcile, siteObjectsToReconcile...) if actualPlatform != nil { - if actualPlatform.IsPlaceholder() && intended.Device.Platform != nil { - intendedPlatform = extractFromObjectsMap(currentNestedObjectsMap, fmt.Sprintf("%p", intended.Device.Platform)) + if actualPlatform.IsPlaceholder() && intended.Field.Platform != nil { + intendedPlatform = extractFromObjectsMap(currentNestedObjectsMap, fmt.Sprintf("%p", intended.Field.Platform)) } platformObjectsToReconcile, platformErr := actualPlatform.Patch(intendedPlatform, intendedNestedObjects) @@ -328,32 +329,32 @@ func (dw *DcimDeviceDataWrapper) Patch(cmp ComparableData, intendedNestedObjects } intendedPlatformID := intendedPlatform.ID() - if intended.Device.Platform != nil { - intendedPlatformID = intended.Device.Platform.ID + if intended.Field.Platform != nil { + intendedPlatformID = intended.Field.Platform.ID } - intended.Device.Platform = &DcimPlatform{ + intended.Field.Platform = &DcimPlatform{ ID: intendedPlatformID, } } - dw.Device.Platform = platform + dw.Field.Platform = platform dw.objectsToReconcile = append(dw.objectsToReconcile, platformObjectsToReconcile...) } else { - if intended.Device.Platform != nil { - platformID := intended.Device.Platform.ID - dw.Device.Platform = &DcimPlatform{ + if intended.Field.Platform != nil { + platformID := intended.Field.Platform.ID + dw.Field.Platform = &DcimPlatform{ ID: platformID, } - intended.Device.Platform = &DcimPlatform{ + intended.Field.Platform = &DcimPlatform{ ID: platformID, } } } - if actualDeviceType.IsPlaceholder() && intended.Device.DeviceType != nil { - intendedDeviceType = extractFromObjectsMap(currentNestedObjectsMap, fmt.Sprintf("%p", intended.Device.DeviceType)) + if actualDeviceType.IsPlaceholder() && intended.Field.DeviceType != nil { + intendedDeviceType = extractFromObjectsMap(currentNestedObjectsMap, fmt.Sprintf("%p", intended.Field.DeviceType)) } deviceTypeObjectsToReconcile, deviceTypeErr := actualDeviceType.Patch(intendedDeviceType, intendedNestedObjects) @@ -373,21 +374,21 @@ func (dw *DcimDeviceDataWrapper) Patch(cmp ComparableData, intendedNestedObjects } intendedDeviceTypeID := intendedDeviceType.ID() - if intended.Device.DeviceType != nil { - intendedDeviceTypeID = intended.Device.DeviceType.ID + if intended.Field.DeviceType != nil { + intendedDeviceTypeID = intended.Field.DeviceType.ID } - intended.Device.DeviceType = &DcimDeviceType{ + intended.Field.DeviceType = &DcimDeviceType{ ID: intendedDeviceTypeID, } } - dw.Device.DeviceType = deviceType + dw.Field.DeviceType = deviceType dw.objectsToReconcile = append(dw.objectsToReconcile, deviceTypeObjectsToReconcile...) - if actualRole.IsPlaceholder() && intended.Device.Role != nil { - intendedRole = extractFromObjectsMap(currentNestedObjectsMap, fmt.Sprintf("%p", intended.Device.Role)) + if actualRole.IsPlaceholder() && intended.Field.Role != nil { + intendedRole = extractFromObjectsMap(currentNestedObjectsMap, fmt.Sprintf("%p", intended.Field.Role)) } roleObjectsToReconcile, roleErr := actualRole.Patch(intendedRole, intendedNestedObjects) @@ -407,26 +408,26 @@ func (dw *DcimDeviceDataWrapper) Patch(cmp ComparableData, intendedNestedObjects } intendedRoleID := intendedRole.ID() - if intended.Device.Role != nil { - intendedRoleID = intended.Device.Role.ID + if intended.Field.Role != nil { + intendedRoleID = intended.Field.Role.ID } - intended.Device.Role = &DcimDeviceRole{ + intended.Field.Role = &DcimDeviceRole{ ID: intendedRoleID, } } - dw.Device.Role = role + dw.Field.Role = role dw.objectsToReconcile = append(dw.objectsToReconcile, roleObjectsToReconcile...) - tagsToMerge := mergeTags(dw.Device.Tags, intended.Device.Tags, intendedNestedObjects) + tagsToMerge := mergeTags(dw.Field.Tags, intended.Field.Tags, intendedNestedObjects) if len(tagsToMerge) > 0 { - dw.Device.Tags = tagsToMerge + dw.Field.Tags = tagsToMerge } - for _, t := range dw.Device.Tags { + for _, t := range dw.Field.Tags { if t.ID == 0 { dw.objectsToReconcile = append(dw.objectsToReconcile, &TagDataWrapper{Tag: t, hasParent: true}) } @@ -455,7 +456,7 @@ func (dw *DcimDeviceDataWrapper) Patch(cmp ComparableData, intendedNestedObjects ID: actualSite.ID(), } } - dw.Device.Site = site + dw.Field.Site = site dw.objectsToReconcile = append(dw.objectsToReconcile, siteObjectsToReconcile...) @@ -476,7 +477,7 @@ func (dw *DcimDeviceDataWrapper) Patch(cmp ComparableData, intendedNestedObjects ID: actualPlatform.ID(), } } - dw.Device.Platform = platform + dw.Field.Platform = platform dw.objectsToReconcile = append(dw.objectsToReconcile, platformObjectsToReconcile...) } @@ -497,7 +498,7 @@ func (dw *DcimDeviceDataWrapper) Patch(cmp ComparableData, intendedNestedObjects ID: actualDeviceType.ID(), } } - dw.Device.DeviceType = deviceType + dw.Field.DeviceType = deviceType dw.objectsToReconcile = append(dw.objectsToReconcile, deviceTypeObjectsToReconcile...) @@ -517,17 +518,17 @@ func (dw *DcimDeviceDataWrapper) Patch(cmp ComparableData, intendedNestedObjects ID: actualRole.ID(), } } - dw.Device.Role = role + dw.Field.Role = role dw.objectsToReconcile = append(dw.objectsToReconcile, roleObjectsToReconcile...) - tagsToMerge := mergeTags(dw.Device.Tags, nil, intendedNestedObjects) + tagsToMerge := mergeTags(dw.Field.Tags, nil, intendedNestedObjects) if len(tagsToMerge) > 0 { - dw.Device.Tags = tagsToMerge + dw.Field.Tags = tagsToMerge } - for _, t := range dw.Device.Tags { + for _, t := range dw.Field.Tags { if t.ID == 0 { dw.objectsToReconcile = append(dw.objectsToReconcile, &TagDataWrapper{Tag: t, hasParent: true}) } @@ -550,37 +551,29 @@ func (dw *DcimDeviceDataWrapper) Patch(cmp ComparableData, intendedNestedObjects // SetDefaults sets the default values for the device func (dw *DcimDeviceDataWrapper) SetDefaults() { - if dw.Device.Status == nil { + if dw.Field.Status == nil { status := DcimDeviceStatusActive - dw.Device.Status = &status + dw.Field.Status = &status } } // DcimDeviceRoleDataWrapper represents a DCIM device role data wrapper type DcimDeviceRoleDataWrapper struct { - BaseDataWrapper - DeviceRole *DcimDeviceRole -} - -func (*DcimDeviceRoleDataWrapper) comparableData() {} - -// Data returns the DeviceRole -func (dw *DcimDeviceRoleDataWrapper) Data() any { - return dw.DeviceRole + BaseDataWrapper[DcimDeviceRole] } // IsValid returns true if the DeviceRole is not nil func (dw *DcimDeviceRoleDataWrapper) IsValid() bool { - if dw.DeviceRole != nil && !dw.hasParent && dw.DeviceRole.Name == "" { - dw.DeviceRole = nil + if dw.Field != nil && !dw.hasParent && dw.Field.Name == "" { + dw.Field = nil } - return dw.DeviceRole != nil + return dw.Field != nil } // Normalise normalises the data func (dw *DcimDeviceRoleDataWrapper) Normalise() { - if dw.IsValid() && dw.DeviceRole.Tags != nil && len(dw.DeviceRole.Tags) == 0 { - dw.DeviceRole.Tags = nil + if dw.IsValid() && dw.Field.Tags != nil && len(dw.Field.Tags) == 0 { + dw.Field.Tags = nil } dw.intended = true } @@ -591,27 +584,27 @@ func (dw *DcimDeviceRoleDataWrapper) NestedObjects() ([]ComparableData, error) { return dw.nestedObjects, nil } - if dw.DeviceRole != nil && dw.hasParent && dw.DeviceRole.Name == "" { - dw.DeviceRole = nil + if dw.Field != nil && dw.hasParent && dw.Field.Name == "" { + dw.Field = nil } objects := make([]ComparableData, 0) - if dw.DeviceRole == nil && dw.intended { + if dw.Field == nil && dw.intended { return objects, nil } - if dw.DeviceRole == nil && dw.hasParent { - dw.DeviceRole = NewDcimDeviceRole() + if dw.Field == nil && dw.hasParent { + dw.Field = NewDcimDeviceRole() dw.placeholder = true } - if dw.DeviceRole.Slug == "" { - dw.DeviceRole.Slug = slug.Make(dw.DeviceRole.Name) + if dw.Field.Slug == "" { + dw.Field.Slug = slug.Make(dw.Field.Name) } - if dw.DeviceRole.Tags != nil { - for _, t := range dw.DeviceRole.Tags { + if dw.Field.Tags != nil { + for _, t := range dw.Field.Tags { if t.Slug == "" { t.Slug = slug.Make(t.Name) } @@ -634,13 +627,13 @@ func (dw *DcimDeviceRoleDataWrapper) DataType() string { // ObjectStateQueryParams returns the query parameters needed to retrieve its object state func (dw *DcimDeviceRoleDataWrapper) ObjectStateQueryParams() map[string]string { return map[string]string{ - "q": dw.DeviceRole.Name, + "q": dw.Field.Name, } } // ID returns the ID of the data func (dw *DcimDeviceRoleDataWrapper) ID() int { - return dw.DeviceRole.ID + return dw.Field.ID } // Patch creates patches between the actual, intended and current data @@ -658,25 +651,25 @@ func (dw *DcimDeviceRoleDataWrapper) Patch(cmp ComparableData, intendedNestedObj reconciliationRequired := true if intended != nil { - dw.DeviceRole.ID = intended.DeviceRole.ID - dw.DeviceRole.Name = intended.DeviceRole.Name - dw.DeviceRole.Slug = intended.DeviceRole.Slug + dw.Field.ID = intended.Field.ID + dw.Field.Name = intended.Field.Name + dw.Field.Slug = intended.Field.Slug - if dw.IsPlaceholder() || dw.DeviceRole.Color == nil { - dw.DeviceRole.Color = intended.DeviceRole.Color + if dw.IsPlaceholder() || dw.Field.Color == nil { + dw.Field.Color = intended.Field.Color } - if dw.DeviceRole.Description == nil { - dw.DeviceRole.Description = intended.DeviceRole.Description + if dw.Field.Description == nil { + dw.Field.Description = intended.Field.Description } - tagsToMerge := mergeTags(dw.DeviceRole.Tags, intended.DeviceRole.Tags, intendedNestedObjects) + tagsToMerge := mergeTags(dw.Field.Tags, intended.Field.Tags, intendedNestedObjects) if len(tagsToMerge) > 0 { - dw.DeviceRole.Tags = tagsToMerge + dw.Field.Tags = tagsToMerge } - for _, t := range dw.DeviceRole.Tags { + for _, t := range dw.Field.Tags { if t.ID == 0 { dw.objectsToReconcile = append(dw.objectsToReconcile, &TagDataWrapper{Tag: t, hasParent: true}) } @@ -689,13 +682,13 @@ func (dw *DcimDeviceRoleDataWrapper) Patch(cmp ComparableData, intendedNestedObj } else { dw.SetDefaults() - tagsToMerge := mergeTags(dw.DeviceRole.Tags, nil, intendedNestedObjects) + tagsToMerge := mergeTags(dw.Field.Tags, nil, intendedNestedObjects) if len(tagsToMerge) > 0 { - dw.DeviceRole.Tags = tagsToMerge + dw.Field.Tags = tagsToMerge } - for _, t := range dw.DeviceRole.Tags { + for _, t := range dw.Field.Tags { if t.ID == 0 { dw.objectsToReconcile = append(dw.objectsToReconcile, &TagDataWrapper{Tag: t, hasParent: true}) } @@ -712,37 +705,29 @@ func (dw *DcimDeviceRoleDataWrapper) Patch(cmp ComparableData, intendedNestedObj // SetDefaults sets the default values for the device role func (dw *DcimDeviceRoleDataWrapper) SetDefaults() { - if dw.DeviceRole.Color == nil { + if dw.Field.Color == nil { color := "000000" - dw.DeviceRole.Color = &color + dw.Field.Color = &color } } // DcimDeviceTypeDataWrapper represents a DCIM device type data wrapper type DcimDeviceTypeDataWrapper struct { - BaseDataWrapper - DeviceType *DcimDeviceType -} - -func (*DcimDeviceTypeDataWrapper) comparableData() {} - -// Data returns the DeviceType -func (dw *DcimDeviceTypeDataWrapper) Data() any { - return dw.DeviceType + BaseDataWrapper[DcimDeviceType] } // IsValid returns true if the DeviceType is not nil func (dw *DcimDeviceTypeDataWrapper) IsValid() bool { - if dw.DeviceType != nil && !dw.hasParent && dw.DeviceType.Model == "" { - dw.DeviceType = nil + if dw.Field != nil && !dw.hasParent && dw.Field.Model == "" { + dw.Field = nil } - return dw.DeviceType != nil + return dw.Field != nil } // Normalise normalises the data func (dw *DcimDeviceTypeDataWrapper) Normalise() { - if dw.IsValid() && dw.DeviceType.Tags != nil && len(dw.DeviceType.Tags) == 0 { - dw.DeviceType.Tags = nil + if dw.IsValid() && dw.Field.Tags != nil && len(dw.Field.Tags) == 0 { + dw.Field.Tags = nil } dw.intended = true } @@ -755,17 +740,17 @@ func (dw *DcimDeviceTypeDataWrapper) DataType() string { // ObjectStateQueryParams returns the query parameters needed to retrieve its object state func (dw *DcimDeviceTypeDataWrapper) ObjectStateQueryParams() map[string]string { params := map[string]string{ - "q": dw.DeviceType.Model, + "q": dw.Field.Model, } - if dw.DeviceType.Manufacturer != nil { - params["manufacturer__name"] = dw.DeviceType.Manufacturer.Name + if dw.Field.Manufacturer != nil { + params["manufacturer__name"] = dw.Field.Manufacturer.Name } return params } // ID returns the ID of the data func (dw *DcimDeviceTypeDataWrapper) ID() int { - return dw.DeviceType.ID + return dw.Field.ID } // NestedObjects returns all nested objects @@ -774,26 +759,26 @@ func (dw *DcimDeviceTypeDataWrapper) NestedObjects() ([]ComparableData, error) { return dw.nestedObjects, nil } - if dw.DeviceType != nil && dw.hasParent && dw.DeviceType.Model == "" { - dw.DeviceType = nil + if dw.Field != nil && dw.hasParent && dw.Field.Model == "" { + dw.Field = nil } objects := make([]ComparableData, 0) - if dw.DeviceType == nil && dw.intended { + if dw.Field == nil && dw.intended { return objects, nil } - if dw.DeviceType == nil && dw.hasParent { - dw.DeviceType = NewDcimDeviceType() + if dw.Field == nil && dw.hasParent { + dw.Field = NewDcimDeviceType() dw.placeholder = true } - if dw.DeviceType.Slug == "" { - dw.DeviceType.Slug = slug.Make(dw.DeviceType.Model) + if dw.Field.Slug == "" { + dw.Field.Slug = slug.Make(dw.Field.Model) } - manufacturer := DcimManufacturerDataWrapper{Manufacturer: dw.DeviceType.Manufacturer, BaseDataWrapper: BaseDataWrapper{placeholder: dw.placeholder, hasParent: true, intended: dw.intended}} + manufacturer := DcimManufacturerDataWrapper{BaseDataWrapper: BaseDataWrapper[DcimManufacturer]{Field: dw.Field.Manufacturer, placeholder: dw.placeholder, hasParent: true, intended: dw.intended}} mo, err := manufacturer.NestedObjects() if err != nil { @@ -802,14 +787,14 @@ func (dw *DcimDeviceTypeDataWrapper) NestedObjects() ([]ComparableData, error) { objects = append(objects, mo...) - dw.DeviceType.Manufacturer = manufacturer.Manufacturer + dw.Field.Manufacturer = manufacturer.Field - if dw.DeviceType.Tags != nil && len(dw.DeviceType.Tags) == 0 { - dw.DeviceType.Tags = nil + if dw.Field.Tags != nil && len(dw.Field.Tags) == 0 { + dw.Field.Tags = nil } - if dw.DeviceType.Tags != nil { - for _, t := range dw.DeviceType.Tags { + if dw.Field.Tags != nil { + for _, t := range dw.Field.Tags { if t.Slug == "" { t.Slug = slug.Make(t.Name) } @@ -836,7 +821,7 @@ func (dw *DcimDeviceTypeDataWrapper) Patch(cmp ComparableData, intendedNestedObj actualNestedObjectsMap[fmt.Sprintf("%p", obj.Data())] = obj } - actualManufacturerKey := fmt.Sprintf("%p", dw.DeviceType.Manufacturer) + actualManufacturerKey := fmt.Sprintf("%p", dw.Field.Manufacturer) actualManufacturer := extractFromObjectsMap(actualNestedObjectsMap, actualManufacturerKey) intendedManufacturer := extractFromObjectsMap(intendedNestedObjects, actualManufacturerKey) @@ -852,24 +837,24 @@ func (dw *DcimDeviceTypeDataWrapper) Patch(cmp ComparableData, intendedNestedObj currentNestedObjectsMap[fmt.Sprintf("%p", obj.Data())] = obj } - dw.DeviceType.ID = intended.DeviceType.ID - dw.DeviceType.Model = intended.DeviceType.Model - dw.DeviceType.Slug = intended.DeviceType.Slug + dw.Field.ID = intended.Field.ID + dw.Field.Model = intended.Field.Model + dw.Field.Slug = intended.Field.Slug - if dw.DeviceType.Description == nil { - dw.DeviceType.Description = intended.DeviceType.Description + if dw.Field.Description == nil { + dw.Field.Description = intended.Field.Description } - if dw.DeviceType.Comments == nil { - dw.DeviceType.Comments = intended.DeviceType.Comments + if dw.Field.Comments == nil { + dw.Field.Comments = intended.Field.Comments } - if dw.DeviceType.PartNumber == nil { - dw.DeviceType.PartNumber = intended.DeviceType.PartNumber + if dw.Field.PartNumber == nil { + dw.Field.PartNumber = intended.Field.PartNumber } - if actualManufacturer.IsPlaceholder() && intended.DeviceType.Manufacturer != nil { - intendedManufacturer = extractFromObjectsMap(currentNestedObjectsMap, fmt.Sprintf("%p", intended.DeviceType.Manufacturer)) + if actualManufacturer.IsPlaceholder() && intended.Field.Manufacturer != nil { + intendedManufacturer = extractFromObjectsMap(currentNestedObjectsMap, fmt.Sprintf("%p", intended.Field.Manufacturer)) } manufacturerObjectsToReconcile, manufacturerErr := actualManufacturer.Patch(intendedManufacturer, intendedNestedObjects) @@ -889,24 +874,24 @@ func (dw *DcimDeviceTypeDataWrapper) Patch(cmp ComparableData, intendedNestedObj } intendedManufacturerID := intendedManufacturer.ID() - if intended.DeviceType.Manufacturer != nil { - intendedManufacturerID = intended.DeviceType.Manufacturer.ID + if intended.Field.Manufacturer != nil { + intendedManufacturerID = intended.Field.Manufacturer.ID } - intended.DeviceType.Manufacturer = &DcimManufacturer{ + intended.Field.Manufacturer = &DcimManufacturer{ ID: intendedManufacturerID, } } - dw.DeviceType.Manufacturer = manufacturer + dw.Field.Manufacturer = manufacturer - tagsToMerge := mergeTags(dw.DeviceType.Tags, intended.DeviceType.Tags, intendedNestedObjects) + tagsToMerge := mergeTags(dw.Field.Tags, intended.Field.Tags, intendedNestedObjects) if len(tagsToMerge) > 0 { - dw.DeviceType.Tags = tagsToMerge + dw.Field.Tags = tagsToMerge } - for _, t := range dw.DeviceType.Tags { + for _, t := range dw.Field.Tags { if t.ID == 0 { dw.objectsToReconcile = append(dw.objectsToReconcile, &TagDataWrapper{Tag: t, hasParent: true}) } @@ -935,15 +920,15 @@ func (dw *DcimDeviceTypeDataWrapper) Patch(cmp ComparableData, intendedNestedObj ID: actualManufacturer.ID(), } } - dw.DeviceType.Manufacturer = manufacturer + dw.Field.Manufacturer = manufacturer - tagsToMerge := mergeTags(dw.DeviceType.Tags, nil, intendedNestedObjects) + tagsToMerge := mergeTags(dw.Field.Tags, nil, intendedNestedObjects) if len(tagsToMerge) > 0 { - dw.DeviceType.Tags = tagsToMerge + dw.Field.Tags = tagsToMerge } - for _, t := range dw.DeviceType.Tags { + for _, t := range dw.Field.Tags { if t.ID == 0 { dw.objectsToReconcile = append(dw.objectsToReconcile, &TagDataWrapper{Tag: t, hasParent: true}) } @@ -965,36 +950,28 @@ func (dw *DcimDeviceTypeDataWrapper) SetDefaults() {} // DcimInterfaceDataWrapper represents a DCIM interface data wrapper type DcimInterfaceDataWrapper struct { - BaseDataWrapper - Interface *DcimInterface -} - -func (*DcimInterfaceDataWrapper) comparableData() {} - -// Data returns the Interface -func (dw *DcimInterfaceDataWrapper) Data() any { - return dw.Interface + BaseDataWrapper[DcimInterface] } // IsValid returns true if the Interface is not nil func (dw *DcimInterfaceDataWrapper) IsValid() bool { - if dw.Interface != nil && !dw.hasParent && dw.Interface.Name == "" { - dw.Interface = nil + if dw.Field != nil && !dw.hasParent && dw.Field.Name == "" { + dw.Field = nil } - if dw.Interface != nil { - if err := dw.Interface.Validate(); err != nil { + if dw.Field != nil { + if err := dw.Field.Validate(); err != nil { return false } } - return dw.Interface != nil + return dw.Field != nil } // Normalise normalises the data func (dw *DcimInterfaceDataWrapper) Normalise() { - if dw.IsValid() && dw.Interface.Tags != nil && len(dw.Interface.Tags) == 0 { - dw.Interface.Tags = nil + if dw.IsValid() && dw.Field.Tags != nil && len(dw.Field.Tags) == 0 { + dw.Field.Tags = nil } dw.intended = true } @@ -1005,22 +982,22 @@ func (dw *DcimInterfaceDataWrapper) NestedObjects() ([]ComparableData, error) { return dw.nestedObjects, nil } - if dw.Interface != nil && dw.hasParent && dw.Interface.Name == "" { - dw.Interface = nil + if dw.Field != nil && dw.hasParent && dw.Field.Name == "" { + dw.Field = nil } objects := make([]ComparableData, 0) - if dw.Interface == nil && dw.intended { + if dw.Field == nil && dw.intended { return objects, nil } - if dw.Interface == nil && dw.hasParent { - dw.Interface = NewDcimInterface() + if dw.Field == nil && dw.hasParent { + dw.Field = NewDcimInterface() dw.placeholder = true } - device := DcimDeviceDataWrapper{Device: dw.Interface.Device, BaseDataWrapper: BaseDataWrapper{placeholder: dw.placeholder, hasParent: true, intended: dw.intended}} + device := DcimDeviceDataWrapper{BaseDataWrapper: BaseDataWrapper[DcimDevice]{Field: dw.Field.Device, placeholder: dw.placeholder, hasParent: true, intended: dw.intended}} do, err := device.NestedObjects() if err != nil { @@ -1029,10 +1006,10 @@ func (dw *DcimInterfaceDataWrapper) NestedObjects() ([]ComparableData, error) { objects = append(objects, do...) - dw.Interface.Device = device.Device + dw.Field.Device = device.Field - if dw.Interface.Tags != nil { - for _, t := range dw.Interface.Tags { + if dw.Field.Tags != nil { + for _, t := range dw.Field.Tags { if t.Slug == "" { t.Slug = slug.Make(t.Name) } @@ -1055,13 +1032,13 @@ func (dw *DcimInterfaceDataWrapper) DataType() string { // ObjectStateQueryParams returns the query parameters needed to retrieve its object state func (dw *DcimInterfaceDataWrapper) ObjectStateQueryParams() map[string]string { params := map[string]string{ - "q": dw.Interface.Name, + "q": dw.Field.Name, } - if dw.Interface.Device != nil { - params["device__name"] = dw.Interface.Device.Name + if dw.Field.Device != nil { + params["device__name"] = dw.Field.Device.Name - if dw.Interface.Device.Site != nil { - params["device__site__name"] = dw.Interface.Device.Site.Name + if dw.Field.Device.Site != nil { + params["device__site__name"] = dw.Field.Device.Site.Name } } return params @@ -1069,18 +1046,18 @@ func (dw *DcimInterfaceDataWrapper) ObjectStateQueryParams() map[string]string { // ID returns the ID of the data func (dw *DcimInterfaceDataWrapper) ID() int { - return dw.Interface.ID + return dw.Field.ID } func (dw *DcimInterfaceDataWrapper) hash() string { var deviceName, siteName string - if dw.Interface.Device != nil { - deviceName = dw.Interface.Device.Name - if dw.Interface.Device.Site != nil { - siteName = dw.Interface.Device.Site.Name + if dw.Field.Device != nil { + deviceName = dw.Field.Device.Name + if dw.Field.Device.Site != nil { + siteName = dw.Field.Device.Site.Name } } - return slug.Make(fmt.Sprintf("%s-%s-%s", dw.Interface.Name, deviceName, siteName)) + return slug.Make(fmt.Sprintf("%s-%s-%s", dw.Field.Name, deviceName, siteName)) } // Patch creates patches between the actual, intended and current data @@ -1095,8 +1072,8 @@ func (dw *DcimInterfaceDataWrapper) Patch(cmp ComparableData, intendedNestedObje actualNestedObjectsMap[fmt.Sprintf("%p", obj.Data())] = obj } - actualDevice := extractFromObjectsMap(actualNestedObjectsMap, fmt.Sprintf("%p", dw.Interface.Device)) - intendedDevice := extractFromObjectsMap(intendedNestedObjects, fmt.Sprintf("%p", dw.Interface.Device)) + actualDevice := extractFromObjectsMap(actualNestedObjectsMap, fmt.Sprintf("%p", dw.Field.Device)) + intendedDevice := extractFromObjectsMap(intendedNestedObjects, fmt.Sprintf("%p", dw.Field.Device)) reconciliationRequired := true @@ -1110,11 +1087,11 @@ func (dw *DcimInterfaceDataWrapper) Patch(cmp ComparableData, intendedNestedObje currentNestedObjectsMap[fmt.Sprintf("%p", obj.Data())] = obj } - dw.Interface.ID = intended.Interface.ID - dw.Interface.Name = intended.Interface.Name + dw.Field.ID = intended.Field.ID + dw.Field.Name = intended.Field.Name - if actualDevice.IsPlaceholder() && intended.Interface.Device != nil { - intendedDevice = extractFromObjectsMap(currentNestedObjectsMap, fmt.Sprintf("%p", intended.Interface.Device)) + if actualDevice.IsPlaceholder() && intended.Field.Device != nil { + intendedDevice = extractFromObjectsMap(currentNestedObjectsMap, fmt.Sprintf("%p", intended.Field.Device)) } deviceObjectsToReconcile, deviceErr := actualDevice.Patch(intendedDevice, intendedNestedObjects) @@ -1134,70 +1111,70 @@ func (dw *DcimInterfaceDataWrapper) Patch(cmp ComparableData, intendedNestedObje } intendedDeviceID := intendedDevice.ID() - if intended.Interface.Device != nil { - intendedDeviceID = intended.Interface.Device.ID + if intended.Field.Device != nil { + intendedDeviceID = intended.Field.Device.ID } - intended.Interface.Device = &DcimDevice{ + intended.Field.Device = &DcimDevice{ ID: intendedDeviceID, } } - dw.Interface.Device = device + dw.Field.Device = device dw.objectsToReconcile = append(dw.objectsToReconcile, deviceObjectsToReconcile...) - if dw.Interface.Label == nil { - dw.Interface.Label = intended.Interface.Label + if dw.Field.Label == nil { + dw.Field.Label = intended.Field.Label } - if dw.Interface.Type == nil { - dw.Interface.Type = intended.Interface.Type + if dw.Field.Type == nil { + dw.Field.Type = intended.Field.Type } - if dw.Interface.Enabled == nil { - dw.Interface.Enabled = intended.Interface.Enabled + if dw.Field.Enabled == nil { + dw.Field.Enabled = intended.Field.Enabled } - if dw.Interface.MTU == nil { - dw.Interface.MTU = intended.Interface.MTU + if dw.Field.MTU == nil { + dw.Field.MTU = intended.Field.MTU } - if dw.Interface.MACAddress == nil { - dw.Interface.MACAddress = intended.Interface.MACAddress + if dw.Field.MACAddress == nil { + dw.Field.MACAddress = intended.Field.MACAddress } - if dw.Interface.Speed == nil { - dw.Interface.Speed = intended.Interface.Speed + if dw.Field.Speed == nil { + dw.Field.Speed = intended.Field.Speed } - if dw.Interface.WWN == nil { - dw.Interface.WWN = intended.Interface.WWN + if dw.Field.WWN == nil { + dw.Field.WWN = intended.Field.WWN } - if dw.Interface.MgmtOnly == nil { - dw.Interface.MgmtOnly = intended.Interface.MgmtOnly + if dw.Field.MgmtOnly == nil { + dw.Field.MgmtOnly = intended.Field.MgmtOnly } - if dw.Interface.Description == nil { - dw.Interface.Description = intended.Interface.Description + if dw.Field.Description == nil { + dw.Field.Description = intended.Field.Description } - if dw.Interface.MarkConnected == nil { - dw.Interface.MarkConnected = intended.Interface.MarkConnected + if dw.Field.MarkConnected == nil { + dw.Field.MarkConnected = intended.Field.MarkConnected } - if dw.Interface.Mode == nil { - dw.Interface.Mode = intended.Interface.Mode + if dw.Field.Mode == nil { + dw.Field.Mode = intended.Field.Mode } - tagsToMerge := mergeTags(dw.Interface.Tags, intended.Interface.Tags, intendedNestedObjects) + tagsToMerge := mergeTags(dw.Field.Tags, intended.Field.Tags, intendedNestedObjects) if len(tagsToMerge) > 0 { - dw.Interface.Tags = tagsToMerge + dw.Field.Tags = tagsToMerge } - for _, t := range dw.Interface.Tags { + for _, t := range dw.Field.Tags { if t.ID == 0 { dw.objectsToReconcile = append(dw.objectsToReconcile, &TagDataWrapper{Tag: t, hasParent: true}) } @@ -1226,15 +1203,15 @@ func (dw *DcimInterfaceDataWrapper) Patch(cmp ComparableData, intendedNestedObje ID: actualDevice.ID(), } } - dw.Interface.Device = device + dw.Field.Device = device - tagsToMerge := mergeTags(dw.Interface.Tags, nil, intendedNestedObjects) + tagsToMerge := mergeTags(dw.Field.Tags, nil, intendedNestedObjects) if len(tagsToMerge) > 0 { - dw.Interface.Tags = tagsToMerge + dw.Field.Tags = tagsToMerge } - for _, t := range dw.Interface.Tags { + for _, t := range dw.Field.Tags { if t.ID == 0 { dw.objectsToReconcile = append(dw.objectsToReconcile, &TagDataWrapper{Tag: t, hasParent: true}) } @@ -1253,36 +1230,28 @@ func (dw *DcimInterfaceDataWrapper) Patch(cmp ComparableData, intendedNestedObje // SetDefaults sets the default values for the interface func (dw *DcimInterfaceDataWrapper) SetDefaults() { - if dw.Interface.Type == nil { - dw.Interface.Type = &DefaultInterfaceType + if dw.Field.Type == nil { + dw.Field.Type = &DefaultInterfaceType } } // DcimManufacturerDataWrapper represents a DCIM manufacturer data wrapper type DcimManufacturerDataWrapper struct { - BaseDataWrapper - Manufacturer *DcimManufacturer -} - -func (*DcimManufacturerDataWrapper) comparableData() {} - -// Data returns the Manufacturer -func (dw *DcimManufacturerDataWrapper) Data() any { - return dw.Manufacturer + BaseDataWrapper[DcimManufacturer] } // IsValid returns true if the Manufacturer is not nil func (dw *DcimManufacturerDataWrapper) IsValid() bool { - if dw.Manufacturer != nil && !dw.hasParent && dw.Manufacturer.Name == "" { - dw.Manufacturer = nil + if dw.Field != nil && !dw.hasParent && dw.Field.Name == "" { + dw.Field = nil } - return dw.Manufacturer != nil + return dw.Field != nil } // Normalise normalises the data func (dw *DcimManufacturerDataWrapper) Normalise() { - if dw.IsValid() && dw.Manufacturer.Tags != nil && len(dw.Manufacturer.Tags) == 0 { - dw.Manufacturer.Tags = nil + if dw.IsValid() && dw.Field.Tags != nil && len(dw.Field.Tags) == 0 { + dw.Field.Tags = nil } dw.intended = true } @@ -1293,27 +1262,27 @@ func (dw *DcimManufacturerDataWrapper) NestedObjects() ([]ComparableData, error) return dw.nestedObjects, nil } - if dw.Manufacturer != nil && dw.hasParent && dw.Manufacturer.Name == "" { - dw.Manufacturer = nil + if dw.Field != nil && dw.hasParent && dw.Field.Name == "" { + dw.Field = nil } objects := make([]ComparableData, 0) - if dw.Manufacturer == nil && dw.intended { + if dw.Field == nil && dw.intended { return objects, nil } - if dw.Manufacturer == nil && dw.hasParent { - dw.Manufacturer = NewDcimManufacturer() + if dw.Field == nil && dw.hasParent { + dw.Field = NewDcimManufacturer() dw.placeholder = true } - if dw.Manufacturer.Slug == "" { - dw.Manufacturer.Slug = slug.Make(dw.Manufacturer.Name) + if dw.Field.Slug == "" { + dw.Field.Slug = slug.Make(dw.Field.Name) } - if dw.Manufacturer.Tags != nil { - for _, t := range dw.Manufacturer.Tags { + if dw.Field.Tags != nil { + for _, t := range dw.Field.Tags { if t.Slug == "" { t.Slug = slug.Make(t.Name) } @@ -1336,13 +1305,13 @@ func (dw *DcimManufacturerDataWrapper) DataType() string { // ObjectStateQueryParams returns the query parameters needed to retrieve its object state func (dw *DcimManufacturerDataWrapper) ObjectStateQueryParams() map[string]string { return map[string]string{ - "q": dw.Manufacturer.Name, + "q": dw.Field.Name, } } // ID returns the ID of the data func (dw *DcimManufacturerDataWrapper) ID() int { - return dw.Manufacturer.ID + return dw.Field.ID } // Patch creates patches between the actual, intended and current data @@ -1356,18 +1325,18 @@ func (dw *DcimManufacturerDataWrapper) Patch(cmp ComparableData, intendedNestedO reconciliationRequired := true if intended != nil { - dw.Manufacturer.ID = intended.Manufacturer.ID - dw.Manufacturer.Name = intended.Manufacturer.Name - dw.Manufacturer.Slug = intended.Manufacturer.Slug + dw.Field.ID = intended.Field.ID + dw.Field.Name = intended.Field.Name + dw.Field.Slug = intended.Field.Slug - if dw.Manufacturer.Description == nil { - dw.Manufacturer.Description = intended.Manufacturer.Description + if dw.Field.Description == nil { + dw.Field.Description = intended.Field.Description } - tagsToMerge := mergeTags(dw.Manufacturer.Tags, intended.Manufacturer.Tags, intendedNestedObjects) + tagsToMerge := mergeTags(dw.Field.Tags, intended.Field.Tags, intendedNestedObjects) if len(tagsToMerge) > 0 { - dw.Manufacturer.Tags = tagsToMerge + dw.Field.Tags = tagsToMerge } actualHash, _ := hashstructure.Hash(dw.Data(), hashstructure.FormatV2, nil) @@ -1375,14 +1344,14 @@ func (dw *DcimManufacturerDataWrapper) Patch(cmp ComparableData, intendedNestedO reconciliationRequired = actualHash != intendedHash } else { - tagsToMerge := mergeTags(dw.Manufacturer.Tags, nil, intendedNestedObjects) + tagsToMerge := mergeTags(dw.Field.Tags, nil, intendedNestedObjects) if len(tagsToMerge) > 0 { - dw.Manufacturer.Tags = tagsToMerge + dw.Field.Tags = tagsToMerge } } - for _, t := range dw.Manufacturer.Tags { + for _, t := range dw.Field.Tags { if t.ID == 0 { dw.objectsToReconcile = append(dw.objectsToReconcile, &TagDataWrapper{Tag: t, hasParent: true}) } @@ -1436,29 +1405,21 @@ func (dw *DcimManufacturerDataWrapper) SetDefaults() {} // DcimPlatformDataWrapper represents a DCIM platform data wrapper type DcimPlatformDataWrapper struct { - BaseDataWrapper - Platform *DcimPlatform -} - -func (*DcimPlatformDataWrapper) comparableData() {} - -// Data returns the Platform -func (dw *DcimPlatformDataWrapper) Data() any { - return dw.Platform + BaseDataWrapper[DcimPlatform] } // IsValid returns true if the Platform is not nil func (dw *DcimPlatformDataWrapper) IsValid() bool { - if dw.Platform != nil && !dw.hasParent && dw.Platform.Name == "" { - dw.Platform = nil + if dw.Field != nil && !dw.hasParent && dw.Field.Name == "" { + dw.Field = nil } - return dw.Platform != nil + return dw.Field != nil } // Normalise normalises the data func (dw *DcimPlatformDataWrapper) Normalise() { - if dw.IsValid() && dw.Platform.Tags != nil && len(dw.Platform.Tags) == 0 { - dw.Platform.Tags = nil + if dw.IsValid() && dw.Field.Tags != nil && len(dw.Field.Tags) == 0 { + dw.Field.Tags = nil } dw.intended = true } @@ -1469,27 +1430,27 @@ func (dw *DcimPlatformDataWrapper) NestedObjects() ([]ComparableData, error) { return dw.nestedObjects, nil } - if dw.Platform != nil && dw.hasParent && dw.Platform.Name == "" { - dw.Platform = nil + if dw.Field != nil && dw.hasParent && dw.Field.Name == "" { + dw.Field = nil } objects := make([]ComparableData, 0) - if dw.Platform == nil && dw.intended { + if dw.Field == nil && dw.intended { return objects, nil } - if dw.Platform == nil && dw.hasParent { - dw.Platform = NewDcimPlatform() + if dw.Field == nil && dw.hasParent { + dw.Field = NewDcimPlatform() dw.placeholder = true } - if dw.Platform.Slug == "" { - dw.Platform.Slug = slug.Make(dw.Platform.Name) + if dw.Field.Slug == "" { + dw.Field.Slug = slug.Make(dw.Field.Name) } - if dw.Platform.Manufacturer != nil { - manufacturer := DcimManufacturerDataWrapper{Manufacturer: dw.Platform.Manufacturer, BaseDataWrapper: BaseDataWrapper{placeholder: dw.placeholder, hasParent: true, intended: dw.intended}} + if dw.Field.Manufacturer != nil { + manufacturer := DcimManufacturerDataWrapper{BaseDataWrapper: BaseDataWrapper[DcimManufacturer]{Field: dw.Field.Manufacturer, placeholder: dw.placeholder, hasParent: true, intended: dw.intended}} mo, err := manufacturer.NestedObjects() if err != nil { @@ -1498,11 +1459,11 @@ func (dw *DcimPlatformDataWrapper) NestedObjects() ([]ComparableData, error) { objects = append(objects, mo...) - dw.Platform.Manufacturer = manufacturer.Manufacturer + dw.Field.Manufacturer = manufacturer.Field } - if dw.Platform.Tags != nil { - for _, t := range dw.Platform.Tags { + if dw.Field.Tags != nil { + for _, t := range dw.Field.Tags { if t.Slug == "" { t.Slug = slug.Make(t.Name) } @@ -1525,17 +1486,17 @@ func (dw *DcimPlatformDataWrapper) DataType() string { // ObjectStateQueryParams returns the query parameters needed to retrieve its object state func (dw *DcimPlatformDataWrapper) ObjectStateQueryParams() map[string]string { params := map[string]string{ - "q": dw.Platform.Name, + "q": dw.Field.Name, } - if dw.Platform.Manufacturer != nil { - params["manufacturer__name"] = dw.Platform.Manufacturer.Name + if dw.Field.Manufacturer != nil { + params["manufacturer__name"] = dw.Field.Manufacturer.Name } return params } // ID returns the ID of the data func (dw *DcimPlatformDataWrapper) ID() int { - return dw.Platform.ID + return dw.Field.ID } // Patch creates patches between the actual, intended and current data @@ -1550,7 +1511,7 @@ func (dw *DcimPlatformDataWrapper) Patch(cmp ComparableData, intendedNestedObjec actualNestedObjectsMap[fmt.Sprintf("%p", obj.Data())] = obj } - actualManufacturerKey := fmt.Sprintf("%p", dw.Platform.Manufacturer) + actualManufacturerKey := fmt.Sprintf("%p", dw.Field.Manufacturer) actualManufacturer := extractFromObjectsMap(actualNestedObjectsMap, actualManufacturerKey) intendedManufacturer := extractFromObjectsMap(intendedNestedObjects, actualManufacturerKey) @@ -1566,13 +1527,13 @@ func (dw *DcimPlatformDataWrapper) Patch(cmp ComparableData, intendedNestedObjec currentNestedObjectsMap[fmt.Sprintf("%p", obj.Data())] = obj } - dw.Platform.ID = intended.Platform.ID - dw.Platform.Name = intended.Platform.Name - dw.Platform.Slug = intended.Platform.Slug + dw.Field.ID = intended.Field.ID + dw.Field.Name = intended.Field.Name + dw.Field.Slug = intended.Field.Slug if actualManufacturer != nil { - if actualManufacturer.IsPlaceholder() && intended.Platform.Manufacturer != nil { - intendedManufacturer = extractFromObjectsMap(currentNestedObjectsMap, fmt.Sprintf("%p", intended.Platform.Manufacturer)) + if actualManufacturer.IsPlaceholder() && intended.Field.Manufacturer != nil { + intendedManufacturer = extractFromObjectsMap(currentNestedObjectsMap, fmt.Sprintf("%p", intended.Field.Manufacturer)) } manufacturerObjectsToReconcile, manufacturerErr := actualManufacturer.Patch(intendedManufacturer, intendedNestedObjects) @@ -1592,42 +1553,42 @@ func (dw *DcimPlatformDataWrapper) Patch(cmp ComparableData, intendedNestedObjec } intendedManufacturerID := intendedManufacturer.ID() - if intended.Platform.Manufacturer != nil { - intendedManufacturerID = intended.Platform.Manufacturer.ID + if intended.Field.Manufacturer != nil { + intendedManufacturerID = intended.Field.Manufacturer.ID } - intended.Platform.Manufacturer = &DcimManufacturer{ + intended.Field.Manufacturer = &DcimManufacturer{ ID: intendedManufacturerID, } } - dw.Platform.Manufacturer = manufacturer + dw.Field.Manufacturer = manufacturer dw.objectsToReconcile = append(dw.objectsToReconcile, manufacturerObjectsToReconcile...) } else { - if intended.Platform.Manufacturer != nil { - manufacturerID := intended.Platform.Manufacturer.ID + if intended.Field.Manufacturer != nil { + manufacturerID := intended.Field.Manufacturer.ID - dw.Platform.Manufacturer = &DcimManufacturer{ + dw.Field.Manufacturer = &DcimManufacturer{ ID: manufacturerID, } - intended.Platform.Manufacturer = &DcimManufacturer{ + intended.Field.Manufacturer = &DcimManufacturer{ ID: manufacturerID, } } } - if dw.Platform.Description == nil { - dw.Platform.Description = intended.Platform.Description + if dw.Field.Description == nil { + dw.Field.Description = intended.Field.Description } - tagsToMerge := mergeTags(dw.Platform.Tags, intended.Platform.Tags, intendedNestedObjects) + tagsToMerge := mergeTags(dw.Field.Tags, intended.Field.Tags, intendedNestedObjects) if len(tagsToMerge) > 0 { - dw.Platform.Tags = tagsToMerge + dw.Field.Tags = tagsToMerge } - for _, t := range dw.Platform.Tags { + for _, t := range dw.Field.Tags { if t.ID == 0 { dw.objectsToReconcile = append(dw.objectsToReconcile, &TagDataWrapper{Tag: t, hasParent: true}) } @@ -1655,18 +1616,18 @@ func (dw *DcimPlatformDataWrapper) Patch(cmp ComparableData, intendedNestedObjec ID: actualManufacturer.ID(), } } - dw.Platform.Manufacturer = manufacturer + dw.Field.Manufacturer = manufacturer dw.objectsToReconcile = append(dw.objectsToReconcile, manufacturerObjectsToReconcile...) } - tagsToMerge := mergeTags(dw.Platform.Tags, nil, intendedNestedObjects) + tagsToMerge := mergeTags(dw.Field.Tags, nil, intendedNestedObjects) if len(tagsToMerge) > 0 { - dw.Platform.Tags = tagsToMerge + dw.Field.Tags = tagsToMerge } - for _, t := range dw.Platform.Tags { + for _, t := range dw.Field.Tags { if t.ID == 0 { dw.objectsToReconcile = append(dw.objectsToReconcile, &TagDataWrapper{Tag: t, hasParent: true}) } @@ -1686,29 +1647,21 @@ func (dw *DcimPlatformDataWrapper) SetDefaults() {} // DcimSiteDataWrapper represents a DCIM site data wrapper type DcimSiteDataWrapper struct { - BaseDataWrapper - Site *DcimSite -} - -func (*DcimSiteDataWrapper) comparableData() {} - -// Data returns the Site -func (dw *DcimSiteDataWrapper) Data() any { - return dw.Site + BaseDataWrapper[DcimSite] } // IsValid returns true if the Site is not nil func (dw *DcimSiteDataWrapper) IsValid() bool { - if dw.Site != nil && !dw.hasParent && dw.Site.Name == "" { - dw.Site = nil + if dw.Field != nil && !dw.hasParent && dw.Field.Name == "" { + dw.Field = nil } - return dw.Site != nil + return dw.Field != nil } // Normalise normalises the data func (dw *DcimSiteDataWrapper) Normalise() { - if dw.IsValid() && dw.Site.Tags != nil && len(dw.Site.Tags) == 0 { - dw.Site.Tags = nil + if dw.IsValid() && dw.Field.Tags != nil && len(dw.Field.Tags) == 0 { + dw.Field.Tags = nil } dw.intended = true } @@ -1719,27 +1672,27 @@ func (dw *DcimSiteDataWrapper) NestedObjects() ([]ComparableData, error) { return dw.nestedObjects, nil } - if dw.Site != nil && dw.hasParent && dw.Site.Name == "" { - dw.Site = nil + if dw.Field != nil && dw.hasParent && dw.Field.Name == "" { + dw.Field = nil } objects := make([]ComparableData, 0) - if dw.Site == nil && dw.intended { + if dw.Field == nil && dw.intended { return objects, nil } - if dw.Site == nil && dw.hasParent { - dw.Site = NewDcimSite() + if dw.Field == nil && dw.hasParent { + dw.Field = NewDcimSite() dw.placeholder = true } - if dw.Site.Slug == "" { - dw.Site.Slug = slug.Make(dw.Site.Name) + if dw.Field.Slug == "" { + dw.Field.Slug = slug.Make(dw.Field.Name) } - if dw.Site.Tags != nil { - for _, t := range dw.Site.Tags { + if dw.Field.Tags != nil { + for _, t := range dw.Field.Tags { if t.Slug == "" { t.Slug = slug.Make(t.Name) } @@ -1762,13 +1715,13 @@ func (dw *DcimSiteDataWrapper) DataType() string { // ObjectStateQueryParams returns the query parameters needed to retrieve its object state func (dw *DcimSiteDataWrapper) ObjectStateQueryParams() map[string]string { return map[string]string{ - "q": dw.Site.Name, + "q": dw.Field.Name, } } // ID returns the ID of the data func (dw *DcimSiteDataWrapper) ID() int { - return dw.Site.ID + return dw.Field.ID } // Patch creates patches between the actual, intended and current data @@ -1786,37 +1739,37 @@ func (dw *DcimSiteDataWrapper) Patch(cmp ComparableData, intendedNestedObjects m reconciliationRequired := true if intended != nil { - dw.Site.ID = intended.Site.ID - dw.Site.Name = intended.Site.Name - dw.Site.Slug = intended.Site.Slug + dw.Field.ID = intended.Field.ID + dw.Field.Name = intended.Field.Name + dw.Field.Slug = intended.Field.Slug - if dw.Site.Status == nil { - dw.Site.Status = intended.Site.Status + if dw.Field.Status == nil { + dw.Field.Status = intended.Field.Status } - if dw.Site.Facility == nil { - dw.Site.Facility = intended.Site.Facility + if dw.Field.Facility == nil { + dw.Field.Facility = intended.Field.Facility } - if dw.Site.TimeZone == nil { - dw.Site.TimeZone = intended.Site.TimeZone + if dw.Field.TimeZone == nil { + dw.Field.TimeZone = intended.Field.TimeZone } - if dw.Site.Description == nil { - dw.Site.Description = intended.Site.Description + if dw.Field.Description == nil { + dw.Field.Description = intended.Field.Description } - if dw.Site.Comments == nil { - dw.Site.Comments = intended.Site.Comments + if dw.Field.Comments == nil { + dw.Field.Comments = intended.Field.Comments } - tagsToMerge := mergeTags(dw.Site.Tags, intended.Site.Tags, intendedNestedObjects) + tagsToMerge := mergeTags(dw.Field.Tags, intended.Field.Tags, intendedNestedObjects) if len(tagsToMerge) > 0 { - dw.Site.Tags = tagsToMerge + dw.Field.Tags = tagsToMerge } - for _, t := range dw.Site.Tags { + for _, t := range dw.Field.Tags { if t.ID == 0 { dw.objectsToReconcile = append(dw.objectsToReconcile, &TagDataWrapper{Tag: t, hasParent: true}) } @@ -1829,13 +1782,13 @@ func (dw *DcimSiteDataWrapper) Patch(cmp ComparableData, intendedNestedObjects m } else { dw.SetDefaults() - tagsToMerge := mergeTags(dw.Site.Tags, nil, intendedNestedObjects) + tagsToMerge := mergeTags(dw.Field.Tags, nil, intendedNestedObjects) if len(tagsToMerge) > 0 { - dw.Site.Tags = tagsToMerge + dw.Field.Tags = tagsToMerge } - for _, t := range dw.Site.Tags { + for _, t := range dw.Field.Tags { if t.ID == 0 { dw.objectsToReconcile = append(dw.objectsToReconcile, &TagDataWrapper{Tag: t, hasParent: true}) } @@ -1852,9 +1805,9 @@ func (dw *DcimSiteDataWrapper) Patch(cmp ComparableData, intendedNestedObjects m // SetDefaults sets the default values for the site func (dw *DcimSiteDataWrapper) SetDefaults() { - if dw.Site.Status == nil { + if dw.Field.Status == nil { status := DcimSiteStatusActive - dw.Site.Status = &status + dw.Field.Status = &status } } diff --git a/diode-server/netboxdiodeplugin/client_test.go b/diode-server/netboxdiodeplugin/client_test.go index 97c645d3..2a1be55c 100644 --- a/diode-server/netboxdiodeplugin/client_test.go +++ b/diode-server/netboxdiodeplugin/client_test.go @@ -174,9 +174,11 @@ func TestRetrieveObjectState(t *testing.T) { ObjectType: netbox.DcimDeviceObjectType, ObjectChangeID: 1, Object: &netbox.DcimDeviceDataWrapper{ - Device: &netbox.DcimDevice{ - ID: 1, - Name: "test", + BaseDataWrapper: netbox.BaseDataWrapper[netbox.DcimDevice]{ + Field: &netbox.DcimDevice{ + ID: 1, + Name: "test", + }, }, }, }, @@ -192,10 +194,12 @@ func TestRetrieveObjectState(t *testing.T) { ObjectType: netbox.DcimSiteObjectType, ObjectChangeID: 1, Object: &netbox.DcimSiteDataWrapper{ - Site: &netbox.DcimSite{ - ID: 1, - Name: "site 01", - Slug: "site-01", + BaseDataWrapper: netbox.BaseDataWrapper[netbox.DcimSite]{ + Field: &netbox.DcimSite{ + ID: 1, + Name: "site 01", + Slug: "site-01", + }, }, }, }, @@ -211,9 +215,11 @@ func TestRetrieveObjectState(t *testing.T) { ObjectType: netbox.DcimDeviceRoleObjectType, ObjectChangeID: 1, Object: &netbox.DcimDeviceRoleDataWrapper{ - DeviceRole: &netbox.DcimDeviceRole{ - ID: 1, - Name: "test", + BaseDataWrapper: netbox.BaseDataWrapper[netbox.DcimDeviceRole]{ + Field: &netbox.DcimDeviceRole{ + ID: 1, + Name: "test", + }, }, }, }, @@ -229,9 +235,11 @@ func TestRetrieveObjectState(t *testing.T) { ObjectType: netbox.DcimDeviceTypeObjectType, ObjectChangeID: 1, Object: &netbox.DcimDeviceTypeDataWrapper{ - DeviceType: &netbox.DcimDeviceType{ - ID: 1, - Model: "test", + BaseDataWrapper: netbox.BaseDataWrapper[netbox.DcimDeviceType]{ + Field: &netbox.DcimDeviceType{ + ID: 1, + Model: "test", + }, }, }, }, @@ -247,9 +255,11 @@ func TestRetrieveObjectState(t *testing.T) { ObjectType: netbox.DcimInterfaceObjectType, ObjectChangeID: 1, Object: &netbox.DcimInterfaceDataWrapper{ - Interface: &netbox.DcimInterface{ - ID: 1, - Name: "test", + BaseDataWrapper: netbox.BaseDataWrapper[netbox.DcimInterface]{ + Field: &netbox.DcimInterface{ + ID: 1, + Name: "test", + }, }, }, }, @@ -265,9 +275,11 @@ func TestRetrieveObjectState(t *testing.T) { ObjectType: netbox.DcimManufacturerObjectType, ObjectChangeID: 1, Object: &netbox.DcimManufacturerDataWrapper{ - Manufacturer: &netbox.DcimManufacturer{ - ID: 1, - Name: "test", + BaseDataWrapper: netbox.BaseDataWrapper[netbox.DcimManufacturer]{ + Field: &netbox.DcimManufacturer{ + ID: 1, + Name: "test", + }, }, }, }, @@ -283,9 +295,11 @@ func TestRetrieveObjectState(t *testing.T) { ObjectType: netbox.DcimPlatformObjectType, ObjectChangeID: 1, Object: &netbox.DcimPlatformDataWrapper{ - Platform: &netbox.DcimPlatform{ - ID: 1, - Name: "test", + BaseDataWrapper: netbox.BaseDataWrapper[netbox.DcimPlatform]{ + Field: &netbox.DcimPlatform{ + ID: 1, + Name: "test", + }, }, }, }, @@ -319,9 +333,11 @@ func TestRetrieveObjectState(t *testing.T) { ObjectType: netbox.IpamIPAddressObjectType, ObjectChangeID: 1, Object: &netbox.IpamIPAddressDataWrapper{ - IPAddress: &netbox.IpamIPAddress{ - ID: 1, - Address: "192.168.0.1/22", + BaseDataWrapper: netbox.BaseDataWrapper[netbox.IpamIPAddress]{ + Field: &netbox.IpamIPAddress{ + ID: 1, + Address: "192.168.0.1/22", + }, }, }, }, @@ -337,9 +353,11 @@ func TestRetrieveObjectState(t *testing.T) { ObjectType: netbox.IpamPrefixObjectType, ObjectChangeID: 1, Object: &netbox.IpamPrefixDataWrapper{ - Prefix: &netbox.IpamPrefix{ - ID: 1, - Prefix: "192.168.0.0/22", + BaseDataWrapper: netbox.BaseDataWrapper[netbox.IpamPrefix]{ + Field: &netbox.IpamPrefix{ + ID: 1, + Prefix: "192.168.0.0/22", + }, }, }, }, @@ -358,11 +376,13 @@ func TestRetrieveObjectState(t *testing.T) { ObjectType: netbox.DcimDeviceObjectType, ObjectChangeID: 1, Object: &netbox.DcimDeviceDataWrapper{ - Device: &netbox.DcimDevice{ - ID: 1, - Name: "dev1", - Site: &netbox.DcimSite{ - ID: 2, + BaseDataWrapper: netbox.BaseDataWrapper[netbox.DcimDevice]{ + Field: &netbox.DcimDevice{ + ID: 1, + Name: "dev1", + Site: &netbox.DcimSite{ + ID: 2, + }, }, }, }, @@ -379,7 +399,9 @@ func TestRetrieveObjectState(t *testing.T) { ObjectType: netbox.DcimDeviceObjectType, ObjectChangeID: 1, Object: &netbox.DcimDeviceDataWrapper{ - Device: &netbox.DcimDevice{}, + BaseDataWrapper: netbox.BaseDataWrapper[netbox.DcimDevice]{ + Field: &netbox.DcimDevice{}, + }, }, }, tlsSkipVerify: true, diff --git a/diode-server/reconciler/changeset/changeset_test.go b/diode-server/reconciler/changeset/changeset_test.go index 9ef7d7d1..4a1e247e 100644 --- a/diode-server/reconciler/changeset/changeset_test.go +++ b/diode-server/reconciler/changeset/changeset_test.go @@ -48,7 +48,7 @@ func TestPrepare(t *testing.T) { queryParams: map[string]string{"q": "Site A"}, objectChangeID: 0, object: &netbox.DcimSiteDataWrapper{ - Site: nil, + BaseDataWrapper: netbox.BaseDataWrapper[netbox.DcimSite]{Field: nil}, }, }, }, @@ -90,11 +90,13 @@ func TestPrepare(t *testing.T) { queryParams: map[string]string{"q": "Site A"}, objectChangeID: 0, object: &netbox.DcimSiteDataWrapper{ - Site: &netbox.DcimSite{ - ID: 1, - Name: "Site A", - Slug: "site-a", - Status: (*netbox.DcimSiteStatus)(strPtr(string(netbox.DcimSiteStatusActive))), + BaseDataWrapper: netbox.BaseDataWrapper[netbox.DcimSite]{ + Field: &netbox.DcimSite{ + ID: 1, + Name: "Site A", + Slug: "site-a", + Status: (*netbox.DcimSiteStatus)(strPtr(string(netbox.DcimSiteStatusActive))), + }, }, }, }, @@ -132,21 +134,23 @@ func TestPrepare(t *testing.T) { queryParams: map[string]string{"q": "Site A"}, objectChangeID: 0, object: &netbox.DcimSiteDataWrapper{ - Site: &netbox.DcimSite{ - ID: 1, - Name: "Site A", - Slug: "site-a", - Status: (*netbox.DcimSiteStatus)(strPtr(string(netbox.DcimSiteStatusActive))), - Tags: []*netbox.Tag{ - { - ID: 1, - Name: "tag 1", - Slug: "tag-1", - }, - { - ID: 3, - Name: "tag 3", - Slug: "tag-3", + BaseDataWrapper: netbox.BaseDataWrapper[netbox.DcimSite]{ + Field: &netbox.DcimSite{ + ID: 1, + Name: "Site A", + Slug: "site-a", + Status: (*netbox.DcimSiteStatus)(strPtr(string(netbox.DcimSiteStatusActive))), + Tags: []*netbox.Tag{ + { + ID: 1, + Name: "tag 1", + Slug: "tag-1", + }, + { + ID: 3, + Name: "tag 3", + Slug: "tag-3", + }, }, }, }, @@ -258,7 +262,7 @@ func TestPrepare(t *testing.T) { queryParams: map[string]string{"q": "WAN Router"}, objectChangeID: 0, object: &netbox.DcimDeviceRoleDataWrapper{ - DeviceRole: nil, + BaseDataWrapper: netbox.BaseDataWrapper[netbox.DcimDeviceRole]{Field: nil}, }, }, }, @@ -300,11 +304,13 @@ func TestPrepare(t *testing.T) { queryParams: map[string]string{"q": "WAN Router"}, objectChangeID: 0, object: &netbox.DcimDeviceRoleDataWrapper{ - DeviceRole: &netbox.DcimDeviceRole{ - ID: 1, - Name: "WAN Router", - Slug: "wan-router", - Color: strPtr("000000"), + BaseDataWrapper: netbox.BaseDataWrapper[netbox.DcimDeviceRole]{ + Field: &netbox.DcimDeviceRole{ + ID: 1, + Name: "WAN Router", + Slug: "wan-router", + Color: strPtr("000000"), + }, }, }, }, @@ -335,12 +341,14 @@ func TestPrepare(t *testing.T) { queryParams: map[string]string{"q": "WAN Router"}, objectChangeID: 0, object: &netbox.DcimDeviceRoleDataWrapper{ - DeviceRole: &netbox.DcimDeviceRole{ - ID: 1, - Name: "WAN Router", - Slug: "wan-router", - Color: strPtr("111222"), - Description: strPtr("Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aenean sed molestie felis."), + BaseDataWrapper: netbox.BaseDataWrapper[netbox.DcimDeviceRole]{ + Field: &netbox.DcimDeviceRole{ + ID: 1, + Name: "WAN Router", + Slug: "wan-router", + Color: strPtr("111222"), + Description: strPtr("Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aenean sed molestie felis."), + }, }, }, }, @@ -387,12 +395,14 @@ func TestPrepare(t *testing.T) { queryParams: map[string]string{"q": "WAN Router"}, objectChangeID: 0, object: &netbox.DcimDeviceRoleDataWrapper{ - DeviceRole: &netbox.DcimDeviceRole{ - ID: 1, - Name: "WAN Router", - Slug: "wan-router", - Color: strPtr("111222"), - Description: strPtr("Lorem ipsum dolor sit amet, consectetur adipiscing elit."), + BaseDataWrapper: netbox.BaseDataWrapper[netbox.DcimDeviceRole]{ + Field: &netbox.DcimDeviceRole{ + ID: 1, + Name: "WAN Router", + Slug: "wan-router", + Color: strPtr("111222"), + Description: strPtr("Lorem ipsum dolor sit amet, consectetur adipiscing elit."), + }, }, }, }, @@ -439,7 +449,7 @@ func TestPrepare(t *testing.T) { queryParams: map[string]string{"q": "Cisco"}, objectChangeID: 0, object: &netbox.DcimManufacturerDataWrapper{ - Manufacturer: nil, + BaseDataWrapper: netbox.BaseDataWrapper[netbox.DcimManufacturer]{Field: nil}, }, }, }, @@ -480,10 +490,12 @@ func TestPrepare(t *testing.T) { queryParams: map[string]string{"q": "Cisco"}, objectChangeID: 0, object: &netbox.DcimManufacturerDataWrapper{ - Manufacturer: &netbox.DcimManufacturer{ - ID: 1, - Name: "Cisco", - Slug: "cisco", + BaseDataWrapper: netbox.BaseDataWrapper[netbox.DcimManufacturer]{ + Field: &netbox.DcimManufacturer{ + ID: 1, + Name: "Cisco", + Slug: "cisco", + }, }, }, }, @@ -530,7 +542,7 @@ func TestPrepare(t *testing.T) { queryParams: map[string]string{"q": "undefined"}, objectChangeID: 0, object: &netbox.DcimManufacturerDataWrapper{ - Manufacturer: nil, + BaseDataWrapper: netbox.BaseDataWrapper[netbox.DcimManufacturer]{Field: nil}, }, }, { @@ -539,7 +551,7 @@ func TestPrepare(t *testing.T) { queryParams: map[string]string{"q": "ISR4321", "manufacturer__name": "undefined"}, objectChangeID: 0, object: &netbox.DcimDeviceTypeDataWrapper{ - DeviceType: nil, + BaseDataWrapper: netbox.BaseDataWrapper[netbox.DcimDeviceType]{Field: nil}, }, }, }, @@ -595,10 +607,12 @@ func TestPrepare(t *testing.T) { queryParams: map[string]string{"q": "undefined"}, objectChangeID: 0, object: &netbox.DcimManufacturerDataWrapper{ - Manufacturer: &netbox.DcimManufacturer{ - ID: 1, - Name: "undefined", - Slug: "undefined", + BaseDataWrapper: netbox.BaseDataWrapper[netbox.DcimManufacturer]{ + Field: &netbox.DcimManufacturer{ + ID: 1, + Name: "undefined", + Slug: "undefined", + }, }, }, }, @@ -608,16 +622,18 @@ func TestPrepare(t *testing.T) { queryParams: map[string]string{"q": "ISR4321", "manufacturer__name": "undefined"}, objectChangeID: 0, object: &netbox.DcimDeviceTypeDataWrapper{ - DeviceType: &netbox.DcimDeviceType{ - ID: 1, - Model: "ISR4321", - Slug: "isr4321", - Manufacturer: &netbox.DcimManufacturer{ - ID: 1, - Name: "undefined", - Slug: "undefined", + BaseDataWrapper: netbox.BaseDataWrapper[netbox.DcimDeviceType]{ + Field: &netbox.DcimDeviceType{ + ID: 1, + Model: "ISR4321", + Slug: "isr4321", + Manufacturer: &netbox.DcimManufacturer{ + ID: 1, + Name: "undefined", + Slug: "undefined", + }, + Tags: []*netbox.Tag{}, }, - Tags: []*netbox.Tag{}, }, }, }, @@ -669,7 +685,7 @@ func TestPrepare(t *testing.T) { queryParams: map[string]string{"q": "Cisco"}, objectChangeID: 0, object: &netbox.DcimManufacturerDataWrapper{ - Manufacturer: nil, + BaseDataWrapper: netbox.BaseDataWrapper[netbox.DcimManufacturer]{Field: nil}, }, }, { @@ -678,7 +694,7 @@ func TestPrepare(t *testing.T) { queryParams: map[string]string{"q": "ISR4321", "manufacturer__name": "Cisco"}, objectChangeID: 0, object: &netbox.DcimDeviceTypeDataWrapper{ - DeviceType: nil, + BaseDataWrapper: netbox.BaseDataWrapper[netbox.DcimDeviceType]{Field: nil}, }, }, }, @@ -757,20 +773,22 @@ func TestPrepare(t *testing.T) { queryParams: map[string]string{"q": "Cisco"}, objectChangeID: 0, object: &netbox.DcimManufacturerDataWrapper{ - Manufacturer: &netbox.DcimManufacturer{ - ID: 2, - Name: "Cisco", - Slug: "cisco", - Tags: []*netbox.Tag{ - { - ID: 1, - Name: "tag 1", - Slug: "tag-1", - }, - { - ID: 5, - Name: "tag 5", - Slug: "tag-5", + BaseDataWrapper: netbox.BaseDataWrapper[netbox.DcimManufacturer]{ + Field: &netbox.DcimManufacturer{ + ID: 2, + Name: "Cisco", + Slug: "cisco", + Tags: []*netbox.Tag{ + { + ID: 1, + Name: "tag 1", + Slug: "tag-1", + }, + { + ID: 5, + Name: "tag 5", + Slug: "tag-5", + }, }, }, }, @@ -826,31 +844,33 @@ func TestPrepare(t *testing.T) { queryParams: map[string]string{"q": "ISR4321", "manufacturer__name": "Cisco"}, objectChangeID: 0, object: &netbox.DcimDeviceTypeDataWrapper{ - DeviceType: &netbox.DcimDeviceType{ - ID: 1, - Model: "ISR4321", - Slug: "isr4321", - Manufacturer: &netbox.DcimManufacturer{ - ID: 1, - Name: "undefined", - Slug: "undefined", + BaseDataWrapper: netbox.BaseDataWrapper[netbox.DcimDeviceType]{ + Field: &netbox.DcimDeviceType{ + ID: 1, + Model: "ISR4321", + Slug: "isr4321", + Manufacturer: &netbox.DcimManufacturer{ + ID: 1, + Name: "undefined", + Slug: "undefined", + Tags: []*netbox.Tag{ + { + ID: 4, + Name: "tag 4", + Slug: "tag-4", + }, + }, + }, + Description: strPtr("Lorem ipsum dolor sit amet, consectetur adipiscing elit."), + PartNumber: strPtr("xyz123"), Tags: []*netbox.Tag{ { - ID: 4, - Name: "tag 4", - Slug: "tag-4", + ID: 2, + Name: "tag 2", + Slug: "tag-2", }, }, }, - Description: strPtr("Lorem ipsum dolor sit amet, consectetur adipiscing elit."), - PartNumber: strPtr("xyz123"), - Tags: []*netbox.Tag{ - { - ID: 2, - Name: "tag 2", - Slug: "tag-2", - }, - }, }, }, }, @@ -973,15 +993,17 @@ func TestPrepare(t *testing.T) { queryParams: map[string]string{"q": "undefined"}, objectChangeID: 0, object: &netbox.DcimManufacturerDataWrapper{ - Manufacturer: &netbox.DcimManufacturer{ - ID: 1, - Name: "undefined", - Slug: "undefined", - Tags: []*netbox.Tag{ - { - ID: 4, - Name: "tag 4", - Slug: "tag-4", + BaseDataWrapper: netbox.BaseDataWrapper[netbox.DcimManufacturer]{ + Field: &netbox.DcimManufacturer{ + ID: 1, + Name: "undefined", + Slug: "undefined", + Tags: []*netbox.Tag{ + { + ID: 4, + Name: "tag 4", + Slug: "tag-4", + }, }, }, }, @@ -1002,31 +1024,33 @@ func TestPrepare(t *testing.T) { queryParams: map[string]string{"q": "ISR4321", "manufacturer__name": "undefined"}, objectChangeID: 0, object: &netbox.DcimDeviceTypeDataWrapper{ - DeviceType: &netbox.DcimDeviceType{ - ID: 1, - Model: "ISR4321", - Slug: "isr4321", - Manufacturer: &netbox.DcimManufacturer{ - ID: 1, - Name: "undefined", - Slug: "undefined", + BaseDataWrapper: netbox.BaseDataWrapper[netbox.DcimDeviceType]{ + Field: &netbox.DcimDeviceType{ + ID: 1, + Model: "ISR4321", + Slug: "isr4321", + Manufacturer: &netbox.DcimManufacturer{ + ID: 1, + Name: "undefined", + Slug: "undefined", + Tags: []*netbox.Tag{ + { + ID: 4, + Name: "tag 4", + Slug: "tag-4", + }, + }, + }, + Description: strPtr("Lorem ipsum dolor sit amet, consectetur adipiscing elit."), + PartNumber: strPtr("xyz123"), Tags: []*netbox.Tag{ { - ID: 4, - Name: "tag 4", - Slug: "tag-4", + ID: 2, + Name: "tag 2", + Slug: "tag-2", }, }, }, - Description: strPtr("Lorem ipsum dolor sit amet, consectetur adipiscing elit."), - PartNumber: strPtr("xyz123"), - Tags: []*netbox.Tag{ - { - ID: 2, - Name: "tag 2", - Slug: "tag-2", - }, - }, }, }, }, @@ -1106,15 +1130,17 @@ func TestPrepare(t *testing.T) { queryParams: map[string]string{"q": "Cisco"}, objectChangeID: 0, object: &netbox.DcimManufacturerDataWrapper{ - Manufacturer: &netbox.DcimManufacturer{ - ID: 1, - Name: "Cisco", - Slug: "cisco", - Tags: []*netbox.Tag{ - { - ID: 4, - Name: "tag 4", - Slug: "tag-4", + BaseDataWrapper: netbox.BaseDataWrapper[netbox.DcimManufacturer]{ + Field: &netbox.DcimManufacturer{ + ID: 1, + Name: "Cisco", + Slug: "cisco", + Tags: []*netbox.Tag{ + { + ID: 4, + Name: "tag 4", + Slug: "tag-4", + }, }, }, }, @@ -1135,31 +1161,33 @@ func TestPrepare(t *testing.T) { queryParams: map[string]string{"q": "ISR4321", "manufacturer__name": "Cisco"}, objectChangeID: 0, object: &netbox.DcimDeviceTypeDataWrapper{ - DeviceType: &netbox.DcimDeviceType{ - ID: 1, - Model: "ISR4321", - Slug: "isr4321", - Manufacturer: &netbox.DcimManufacturer{ - ID: 1, - Name: "undefined", - Slug: "undefined", + BaseDataWrapper: netbox.BaseDataWrapper[netbox.DcimDeviceType]{ + Field: &netbox.DcimDeviceType{ + ID: 1, + Model: "ISR4321", + Slug: "isr4321", + Manufacturer: &netbox.DcimManufacturer{ + ID: 1, + Name: "undefined", + Slug: "undefined", + Tags: []*netbox.Tag{ + { + ID: 4, + Name: "tag 4", + Slug: "tag-4", + }, + }, + }, + Description: strPtr("Lorem ipsum dolor sit amet, consectetur adipiscing elit."), + PartNumber: strPtr("xyz123"), Tags: []*netbox.Tag{ { - ID: 4, - Name: "tag 4", - Slug: "tag-4", + ID: 2, + Name: "tag 2", + Slug: "tag-2", }, }, }, - Description: strPtr("Lorem ipsum dolor sit amet, consectetur adipiscing elit."), - PartNumber: strPtr("xyz123"), - Tags: []*netbox.Tag{ - { - ID: 2, - Name: "tag 2", - Slug: "tag-2", - }, - }, }, }, }, @@ -1229,7 +1257,7 @@ func TestPrepare(t *testing.T) { queryParams: map[string]string{"q": "undefined"}, objectChangeID: 0, object: &netbox.DcimSiteDataWrapper{ - Site: nil, + BaseDataWrapper: netbox.BaseDataWrapper[netbox.DcimSite]{Field: nil}, }, }, { @@ -1238,7 +1266,7 @@ func TestPrepare(t *testing.T) { queryParams: map[string]string{"q": "undefined"}, objectChangeID: 0, object: &netbox.DcimManufacturerDataWrapper{ - Manufacturer: nil, + BaseDataWrapper: netbox.BaseDataWrapper[netbox.DcimManufacturer]{Field: nil}, }, }, { @@ -1247,7 +1275,7 @@ func TestPrepare(t *testing.T) { queryParams: map[string]string{"q": "undefined", "manufacturer__name": "undefined"}, objectChangeID: 0, object: &netbox.DcimDeviceTypeDataWrapper{ - DeviceType: nil, + BaseDataWrapper: netbox.BaseDataWrapper[netbox.DcimDeviceType]{Field: nil}, }, }, { @@ -1256,7 +1284,7 @@ func TestPrepare(t *testing.T) { queryParams: map[string]string{"q": "undefined"}, objectChangeID: 0, object: &netbox.DcimDeviceRoleDataWrapper{ - DeviceRole: nil, + BaseDataWrapper: netbox.BaseDataWrapper[netbox.DcimDeviceRole]{Field: nil}, }, }, { @@ -1265,7 +1293,7 @@ func TestPrepare(t *testing.T) { queryParams: map[string]string{"q": "router01", "site__name": "undefined"}, objectChangeID: 0, object: &netbox.DcimDeviceDataWrapper{ - Device: nil, + BaseDataWrapper: netbox.BaseDataWrapper[netbox.DcimDevice]{Field: nil}, }, }, }, @@ -1374,11 +1402,13 @@ func TestPrepare(t *testing.T) { queryParams: map[string]string{"q": "undefined"}, objectChangeID: 0, object: &netbox.DcimSiteDataWrapper{ - Site: &netbox.DcimSite{ - ID: 1, - Name: "undefined", - Slug: "undefined", - Status: (*netbox.DcimSiteStatus)(strPtr(string(netbox.DcimSiteStatusActive))), + BaseDataWrapper: netbox.BaseDataWrapper[netbox.DcimSite]{ + Field: &netbox.DcimSite{ + ID: 1, + Name: "undefined", + Slug: "undefined", + Status: (*netbox.DcimSiteStatus)(strPtr(string(netbox.DcimSiteStatusActive))), + }, }, }, }, @@ -1388,10 +1418,12 @@ func TestPrepare(t *testing.T) { queryParams: map[string]string{"q": "undefined"}, objectChangeID: 0, object: &netbox.DcimManufacturerDataWrapper{ - Manufacturer: &netbox.DcimManufacturer{ - ID: 1, - Name: "undefined", - Slug: "undefined", + BaseDataWrapper: netbox.BaseDataWrapper[netbox.DcimManufacturer]{ + Field: &netbox.DcimManufacturer{ + ID: 1, + Name: "undefined", + Slug: "undefined", + }, }, }, }, @@ -1401,14 +1433,16 @@ func TestPrepare(t *testing.T) { queryParams: map[string]string{"q": "undefined", "manufacturer__name": "undefined"}, objectChangeID: 0, object: &netbox.DcimDeviceTypeDataWrapper{ - DeviceType: &netbox.DcimDeviceType{ - ID: 1, - Model: "undefined", - Slug: "undefined", - Manufacturer: &netbox.DcimManufacturer{ - ID: 1, - Name: "undefined", - Slug: "undefined", + BaseDataWrapper: netbox.BaseDataWrapper[netbox.DcimDeviceType]{ + Field: &netbox.DcimDeviceType{ + ID: 1, + Model: "undefined", + Slug: "undefined", + Manufacturer: &netbox.DcimManufacturer{ + ID: 1, + Name: "undefined", + Slug: "undefined", + }, }, }, }, @@ -1419,12 +1453,14 @@ func TestPrepare(t *testing.T) { queryParams: map[string]string{"q": "undefined"}, objectChangeID: 0, object: &netbox.DcimDeviceRoleDataWrapper{ - DeviceRole: &netbox.DcimDeviceRole{ - ID: 1, - Name: "undefined", - Slug: "undefined", - Color: strPtr("000000"), - }, + BaseDataWrapper: netbox.BaseDataWrapper[netbox.DcimDeviceRole]{ + Field: &netbox.DcimDeviceRole{ + ID: 1, + Name: "undefined", + Slug: "undefined", + Color: strPtr("000000"), + }, + }, }, }, { @@ -1433,32 +1469,34 @@ func TestPrepare(t *testing.T) { queryParams: map[string]string{"q": "router01", "site__name": "undefined"}, objectChangeID: 0, object: &netbox.DcimDeviceDataWrapper{ - Device: &netbox.DcimDevice{ - ID: 1, - Name: "router01", - Site: &netbox.DcimSite{ - ID: 1, - Name: "undefined", - Slug: "undefined", - Status: (*netbox.DcimSiteStatus)(strPtr(string(netbox.DcimSiteStatusActive))), - }, - DeviceType: &netbox.DcimDeviceType{ - ID: 1, - Model: "undefined", - Slug: "undefined", - Manufacturer: &netbox.DcimManufacturer{ - ID: 1, - Name: "undefined", - Slug: "undefined", + BaseDataWrapper: netbox.BaseDataWrapper[netbox.DcimDevice]{ + Field: &netbox.DcimDevice{ + ID: 1, + Name: "router01", + Site: &netbox.DcimSite{ + ID: 1, + Name: "undefined", + Slug: "undefined", + Status: (*netbox.DcimSiteStatus)(strPtr(string(netbox.DcimSiteStatusActive))), }, + DeviceType: &netbox.DcimDeviceType{ + ID: 1, + Model: "undefined", + Slug: "undefined", + Manufacturer: &netbox.DcimManufacturer{ + ID: 1, + Name: "undefined", + Slug: "undefined", + }, + }, + Role: &netbox.DcimDeviceRole{ + ID: 1, + Name: "undefined", + Slug: "undefined", + Color: strPtr("000000"), + }, + Status: (*netbox.DcimDeviceStatus)(strPtr(string(netbox.DcimDeviceStatusActive))), }, - Role: &netbox.DcimDeviceRole{ - ID: 1, - Name: "undefined", - Slug: "undefined", - Color: strPtr("000000"), - }, - Status: (*netbox.DcimDeviceStatus)(strPtr(string(netbox.DcimDeviceStatusActive))), }, }, }, @@ -1489,11 +1527,13 @@ func TestPrepare(t *testing.T) { queryParams: map[string]string{"q": "undefined"}, objectChangeID: 0, object: &netbox.DcimSiteDataWrapper{ - Site: &netbox.DcimSite{ - ID: 1, - Name: "undefined", - Slug: "undefined", - Status: (*netbox.DcimSiteStatus)(strPtr(string(netbox.DcimSiteStatusActive))), + BaseDataWrapper: netbox.BaseDataWrapper[netbox.DcimSite]{ + Field: &netbox.DcimSite{ + ID: 1, + Name: "undefined", + Slug: "undefined", + Status: (*netbox.DcimSiteStatus)(strPtr(string(netbox.DcimSiteStatusActive))), + }, }, }, }, @@ -1503,10 +1543,12 @@ func TestPrepare(t *testing.T) { queryParams: map[string]string{"q": "undefined"}, objectChangeID: 0, object: &netbox.DcimManufacturerDataWrapper{ - Manufacturer: &netbox.DcimManufacturer{ - ID: 1, - Name: "undefined", - Slug: "undefined", + BaseDataWrapper: netbox.BaseDataWrapper[netbox.DcimManufacturer]{ + Field: &netbox.DcimManufacturer{ + ID: 1, + Name: "undefined", + Slug: "undefined", + }, }, }, }, @@ -1516,14 +1558,16 @@ func TestPrepare(t *testing.T) { queryParams: map[string]string{"q": "undefined", "manufacturer__name": "undefined"}, objectChangeID: 0, object: &netbox.DcimDeviceTypeDataWrapper{ - DeviceType: &netbox.DcimDeviceType{ - ID: 1, - Model: "undefined", - Slug: "undefined", - Manufacturer: &netbox.DcimManufacturer{ - ID: 1, - Name: "undefined", - Slug: "undefined", + BaseDataWrapper: netbox.BaseDataWrapper[netbox.DcimDeviceType]{ + Field: &netbox.DcimDeviceType{ + ID: 1, + Model: "undefined", + Slug: "undefined", + Manufacturer: &netbox.DcimManufacturer{ + ID: 1, + Name: "undefined", + Slug: "undefined", + }, }, }, }, @@ -1534,11 +1578,13 @@ func TestPrepare(t *testing.T) { queryParams: map[string]string{"q": "undefined"}, objectChangeID: 0, object: &netbox.DcimDeviceRoleDataWrapper{ - DeviceRole: &netbox.DcimDeviceRole{ - ID: 1, - Name: "undefined", - Slug: "undefined", - Color: strPtr("000000"), + BaseDataWrapper: netbox.BaseDataWrapper[netbox.DcimDeviceRole]{ + Field: &netbox.DcimDeviceRole{ + ID: 1, + Name: "undefined", + Slug: "undefined", + Color: strPtr("000000"), + }, }, }, }, @@ -1548,32 +1594,34 @@ func TestPrepare(t *testing.T) { queryParams: map[string]string{"q": "router01", "site__name": "undefined"}, objectChangeID: 0, object: &netbox.DcimDeviceDataWrapper{ - Device: &netbox.DcimDevice{ - ID: 1, - Name: "router01", - Site: &netbox.DcimSite{ - ID: 1, - Name: "undefined", - Slug: "undefined", - Status: (*netbox.DcimSiteStatus)(strPtr(string(netbox.DcimSiteStatusActive))), - }, - DeviceType: &netbox.DcimDeviceType{ - ID: 1, - Model: "undefined", - Slug: "undefined", - Manufacturer: &netbox.DcimManufacturer{ - ID: 1, - Name: "undefined", - Slug: "undefined", + BaseDataWrapper: netbox.BaseDataWrapper[netbox.DcimDevice]{ + Field: &netbox.DcimDevice{ + ID: 1, + Name: "router01", + Site: &netbox.DcimSite{ + ID: 1, + Name: "undefined", + Slug: "undefined", + Status: (*netbox.DcimSiteStatus)(strPtr(string(netbox.DcimSiteStatusActive))), }, + DeviceType: &netbox.DcimDeviceType{ + ID: 1, + Model: "undefined", + Slug: "undefined", + Manufacturer: &netbox.DcimManufacturer{ + ID: 1, + Name: "undefined", + Slug: "undefined", + }, + }, + Role: &netbox.DcimDeviceRole{ + ID: 1, + Name: "undefined", + Slug: "undefined", + Color: strPtr("000000"), + }, + Status: (*netbox.DcimDeviceStatus)(strPtr(string(netbox.DcimDeviceStatusActive))), }, - Role: &netbox.DcimDeviceRole{ - ID: 1, - Name: "undefined", - Slug: "undefined", - Color: strPtr("000000"), - }, - Status: (*netbox.DcimDeviceStatus)(strPtr(string(netbox.DcimDeviceStatusActive))), }, }, }, @@ -1620,7 +1668,7 @@ func TestPrepare(t *testing.T) { queryParams: map[string]string{"q": "Site A"}, objectChangeID: 0, object: &netbox.DcimSiteDataWrapper{ - Site: nil, + BaseDataWrapper: netbox.BaseDataWrapper[netbox.DcimSite]{Field: nil}, }, }, { @@ -1629,7 +1677,7 @@ func TestPrepare(t *testing.T) { queryParams: map[string]string{"q": "undefined"}, objectChangeID: 0, object: &netbox.DcimManufacturerDataWrapper{ - Manufacturer: nil, + BaseDataWrapper: netbox.BaseDataWrapper[netbox.DcimManufacturer]{Field: nil}, }, }, { @@ -1638,7 +1686,7 @@ func TestPrepare(t *testing.T) { queryParams: map[string]string{"q": "ISR4321", "manufacturer__name": "undefined"}, objectChangeID: 0, object: &netbox.DcimDeviceTypeDataWrapper{ - DeviceType: nil, + BaseDataWrapper: netbox.BaseDataWrapper[netbox.DcimDeviceType]{Field: nil}, }, }, { @@ -1647,7 +1695,7 @@ func TestPrepare(t *testing.T) { queryParams: map[string]string{"q": "WAN Router"}, objectChangeID: 0, object: &netbox.DcimDeviceRoleDataWrapper{ - DeviceRole: nil, + BaseDataWrapper: netbox.BaseDataWrapper[netbox.DcimDeviceRole]{Field: nil}, }, }, { @@ -1656,7 +1704,7 @@ func TestPrepare(t *testing.T) { queryParams: map[string]string{"q": "router01", "site__name": "Site A"}, objectChangeID: 0, object: &netbox.DcimDeviceDataWrapper{ - Device: nil, + BaseDataWrapper: netbox.BaseDataWrapper[netbox.DcimDevice]{Field: nil}, }, }, { @@ -1807,7 +1855,7 @@ func TestPrepare(t *testing.T) { queryParams: map[string]string{"q": "Site A"}, objectChangeID: 0, object: &netbox.DcimSiteDataWrapper{ - Site: nil, + BaseDataWrapper: netbox.BaseDataWrapper[netbox.DcimSite]{Field: nil}, }, }, { @@ -1816,7 +1864,7 @@ func TestPrepare(t *testing.T) { queryParams: map[string]string{"q": "Cisco"}, objectChangeID: 0, object: &netbox.DcimManufacturerDataWrapper{ - Manufacturer: nil, + BaseDataWrapper: netbox.BaseDataWrapper[netbox.DcimManufacturer]{Field: nil}, }, }, { @@ -1825,7 +1873,7 @@ func TestPrepare(t *testing.T) { queryParams: map[string]string{"q": "ISR4321", "manufacturer__name": "Cisco"}, objectChangeID: 0, object: &netbox.DcimDeviceTypeDataWrapper{ - DeviceType: nil, + BaseDataWrapper: netbox.BaseDataWrapper[netbox.DcimDeviceType]{Field: nil}, }, }, { @@ -1834,7 +1882,7 @@ func TestPrepare(t *testing.T) { queryParams: map[string]string{"q": "WAN Router"}, objectChangeID: 0, object: &netbox.DcimDeviceRoleDataWrapper{ - DeviceRole: nil, + BaseDataWrapper: netbox.BaseDataWrapper[netbox.DcimDeviceRole]{Field: nil}, }, }, { @@ -1843,7 +1891,7 @@ func TestPrepare(t *testing.T) { queryParams: map[string]string{"q": "router01", "site__name": "Site A"}, objectChangeID: 0, object: &netbox.DcimDeviceDataWrapper{ - Device: nil, + BaseDataWrapper: netbox.BaseDataWrapper[netbox.DcimDevice]{Field: nil}, }, }, { @@ -2008,7 +2056,7 @@ func TestPrepare(t *testing.T) { queryParams: map[string]string{"q": "Site A"}, objectChangeID: 0, object: &netbox.DcimSiteDataWrapper{ - Site: nil, + BaseDataWrapper: netbox.BaseDataWrapper[netbox.DcimSite]{Field: nil}, }, }, { @@ -2017,10 +2065,12 @@ func TestPrepare(t *testing.T) { queryParams: map[string]string{"q": "undefined"}, objectChangeID: 0, object: &netbox.DcimManufacturerDataWrapper{ - Manufacturer: &netbox.DcimManufacturer{ - ID: 1, - Name: "undefined", - Slug: "undefined", + BaseDataWrapper: netbox.BaseDataWrapper[netbox.DcimManufacturer]{ + Field: &netbox.DcimManufacturer{ + ID: 1, + Name: "undefined", + Slug: "undefined", + }, }, }, }, @@ -2030,7 +2080,7 @@ func TestPrepare(t *testing.T) { queryParams: map[string]string{"q": "ISR4321", "manufacturer__name": "undefined"}, objectChangeID: 0, object: &netbox.DcimDeviceTypeDataWrapper{ - DeviceType: nil, + BaseDataWrapper: netbox.BaseDataWrapper[netbox.DcimDeviceType]{Field: nil}, }, }, { @@ -2039,7 +2089,7 @@ func TestPrepare(t *testing.T) { queryParams: map[string]string{"q": "WAN Router"}, objectChangeID: 0, object: &netbox.DcimDeviceRoleDataWrapper{ - DeviceRole: nil, + BaseDataWrapper: netbox.BaseDataWrapper[netbox.DcimDeviceRole]{Field: nil}, }, }, { @@ -2061,44 +2111,46 @@ func TestPrepare(t *testing.T) { queryParams: map[string]string{"q": "router01", "site__name": "Site A"}, objectChangeID: 0, object: &netbox.DcimDeviceDataWrapper{ - Device: &netbox.DcimDevice{ - ID: 1, - Name: "router01", - Site: &netbox.DcimSite{ - ID: 1, - Name: "Site B", - Slug: "site-b", - Status: (*netbox.DcimSiteStatus)(strPtr(string(netbox.DcimSiteStatusActive))), - }, - DeviceType: &netbox.DcimDeviceType{ - ID: 1, - Model: "ISR4322", - Slug: "isr4322", - Manufacturer: &netbox.DcimManufacturer{ - ID: 1, - Name: "undefined", - Slug: "undefined", - }, - }, - Role: &netbox.DcimDeviceRole{ - ID: 1, - Name: "undefined", - Slug: "undefined", - Color: strPtr("000000"), - }, - Platform: &netbox.DcimPlatform{ + BaseDataWrapper: netbox.BaseDataWrapper[netbox.DcimDevice]{ + Field: &netbox.DcimDevice{ ID: 1, - Name: "undefined", - Slug: "undefined", - Manufacturer: &netbox.DcimManufacturer{ + Name: "router01", + Site: &netbox.DcimSite{ + ID: 1, + Name: "Site B", + Slug: "site-b", + Status: (*netbox.DcimSiteStatus)(strPtr(string(netbox.DcimSiteStatusActive))), + }, + DeviceType: &netbox.DcimDeviceType{ + ID: 1, + Model: "ISR4322", + Slug: "isr4322", + Manufacturer: &netbox.DcimManufacturer{ + ID: 1, + Name: "undefined", + Slug: "undefined", + }, + }, + Role: &netbox.DcimDeviceRole{ + ID: 1, + Name: "undefined", + Slug: "undefined", + Color: strPtr("000000"), + }, + Platform: &netbox.DcimPlatform{ ID: 1, Name: "undefined", Slug: "undefined", + Manufacturer: &netbox.DcimManufacturer{ + ID: 1, + Name: "undefined", + Slug: "undefined", + }, }, + Status: (*netbox.DcimDeviceStatus)(strPtr(string(netbox.DcimDeviceStatusActive))), + Description: strPtr("Lorem ipsum dolor sit amet, consectetur adipiscing elit."), + Serial: strPtr("123456"), }, - Status: (*netbox.DcimDeviceStatus)(strPtr(string(netbox.DcimDeviceStatusActive))), - Description: strPtr("Lorem ipsum dolor sit amet, consectetur adipiscing elit."), - Serial: strPtr("123456"), }, }, }, @@ -2223,7 +2275,7 @@ func TestPrepare(t *testing.T) { queryParams: map[string]string{"q": "Site A"}, objectChangeID: 0, object: &netbox.DcimSiteDataWrapper{ - Site: nil, + BaseDataWrapper: netbox.BaseDataWrapper[netbox.DcimSite]{Field: nil}, }, }, { @@ -2232,7 +2284,7 @@ func TestPrepare(t *testing.T) { queryParams: map[string]string{"q": "undefined"}, objectChangeID: 0, object: &netbox.DcimManufacturerDataWrapper{ - Manufacturer: nil, + BaseDataWrapper: netbox.BaseDataWrapper[netbox.DcimManufacturer]{Field: nil}, }, }, { @@ -2241,7 +2293,7 @@ func TestPrepare(t *testing.T) { queryParams: map[string]string{"q": "ISR4321", "manufacturer__name": "undefined"}, objectChangeID: 0, object: &netbox.DcimDeviceTypeDataWrapper{ - DeviceType: nil, + BaseDataWrapper: netbox.BaseDataWrapper[netbox.DcimDeviceType]{Field: nil}, }, }, { @@ -2250,7 +2302,7 @@ func TestPrepare(t *testing.T) { queryParams: map[string]string{"q": "WAN Router"}, objectChangeID: 0, object: &netbox.DcimDeviceRoleDataWrapper{ - DeviceRole: nil, + BaseDataWrapper: netbox.BaseDataWrapper[netbox.DcimDeviceRole]{Field: nil}, }, }, { @@ -2259,7 +2311,7 @@ func TestPrepare(t *testing.T) { queryParams: map[string]string{"q": "Cisco IOS 15.6"}, objectChangeID: 0, object: &netbox.DcimPlatformDataWrapper{ - Platform: nil, + BaseDataWrapper: netbox.BaseDataWrapper[netbox.DcimPlatform]{Field: nil}, }, }, { @@ -2268,7 +2320,7 @@ func TestPrepare(t *testing.T) { queryParams: map[string]string{"q": "router01", "site__name": "Site A"}, objectChangeID: 0, object: &netbox.DcimDeviceDataWrapper{ - Device: nil, + BaseDataWrapper: netbox.BaseDataWrapper[netbox.DcimDevice]{Field: nil}, }, }, }, @@ -2409,7 +2461,7 @@ func TestPrepare(t *testing.T) { queryParams: map[string]string{"q": "Site A"}, objectChangeID: 0, object: &netbox.DcimSiteDataWrapper{ - Site: nil, + BaseDataWrapper: netbox.BaseDataWrapper[netbox.DcimSite]{Field: nil}, }, }, { @@ -2418,10 +2470,12 @@ func TestPrepare(t *testing.T) { queryParams: map[string]string{"q": "undefined"}, objectChangeID: 0, object: &netbox.DcimManufacturerDataWrapper{ - Manufacturer: &netbox.DcimManufacturer{ - ID: 1, - Name: "undefined", - Slug: "undefined", + BaseDataWrapper: netbox.BaseDataWrapper[netbox.DcimManufacturer]{ + Field: &netbox.DcimManufacturer{ + ID: 1, + Name: "undefined", + Slug: "undefined", + }, }, }, }, @@ -2431,7 +2485,7 @@ func TestPrepare(t *testing.T) { queryParams: map[string]string{"q": "ISR4321", "manufacturer__name": "undefined"}, objectChangeID: 0, object: &netbox.DcimDeviceTypeDataWrapper{ - DeviceType: nil, + BaseDataWrapper: netbox.BaseDataWrapper[netbox.DcimDeviceType]{Field: nil}, }, }, { @@ -2440,7 +2494,7 @@ func TestPrepare(t *testing.T) { queryParams: map[string]string{"q": "WAN Router"}, objectChangeID: 0, object: &netbox.DcimDeviceRoleDataWrapper{ - DeviceRole: nil, + BaseDataWrapper: netbox.BaseDataWrapper[netbox.DcimDeviceRole]{Field: nil}, }, }, { @@ -2449,10 +2503,12 @@ func TestPrepare(t *testing.T) { queryParams: map[string]string{"q": "Cisco IOS 15.6"}, objectChangeID: 0, object: &netbox.DcimPlatformDataWrapper{ - Platform: &netbox.DcimPlatform{ - ID: 1, - Name: "Cisco IOS 15.6", - Slug: "cisco-ios-15-6", + BaseDataWrapper: netbox.BaseDataWrapper[netbox.DcimPlatform]{ + Field: &netbox.DcimPlatform{ + ID: 1, + Name: "Cisco IOS 15.6", + Slug: "cisco-ios-15-6", + }, }, }, }, @@ -2462,37 +2518,39 @@ func TestPrepare(t *testing.T) { queryParams: map[string]string{"q": "router01", "site__name": "Site A"}, objectChangeID: 0, object: &netbox.DcimDeviceDataWrapper{ - Device: &netbox.DcimDevice{ - ID: 1, - Name: "router01", - Site: &netbox.DcimSite{ - ID: 1, - Name: "Site B", - Slug: "site-b", - Status: (*netbox.DcimSiteStatus)(strPtr(string(netbox.DcimSiteStatusActive))), - }, - DeviceType: &netbox.DcimDeviceType{ - ID: 1, - Model: "ISR4322", - Slug: "isr4322", - Manufacturer: &netbox.DcimManufacturer{ - ID: 1, - Name: "undefined", - Slug: "undefined", + BaseDataWrapper: netbox.BaseDataWrapper[netbox.DcimDevice]{ + Field: &netbox.DcimDevice{ + ID: 1, + Name: "router01", + Site: &netbox.DcimSite{ + ID: 1, + Name: "Site B", + Slug: "site-b", + Status: (*netbox.DcimSiteStatus)(strPtr(string(netbox.DcimSiteStatusActive))), + }, + DeviceType: &netbox.DcimDeviceType{ + ID: 1, + Model: "ISR4322", + Slug: "isr4322", + Manufacturer: &netbox.DcimManufacturer{ + ID: 1, + Name: "undefined", + Slug: "undefined", + }, + }, + Role: &netbox.DcimDeviceRole{ + ID: 1, + Name: "undefined", + Slug: "undefined", + Color: strPtr("000000"), }, + Platform: &netbox.DcimPlatform{ + ID: 1, + }, + Status: (*netbox.DcimDeviceStatus)(strPtr(string(netbox.DcimDeviceStatusActive))), + Description: strPtr("Lorem ipsum dolor sit amet, consectetur adipiscing elit."), + Serial: strPtr("123456"), }, - Role: &netbox.DcimDeviceRole{ - ID: 1, - Name: "undefined", - Slug: "undefined", - Color: strPtr("000000"), - }, - Platform: &netbox.DcimPlatform{ - ID: 1, - }, - Status: (*netbox.DcimDeviceStatus)(strPtr(string(netbox.DcimDeviceStatusActive))), - Description: strPtr("Lorem ipsum dolor sit amet, consectetur adipiscing elit."), - Serial: strPtr("123456"), }, }, }, @@ -2610,11 +2668,13 @@ func TestPrepare(t *testing.T) { queryParams: map[string]string{"q": "Site A"}, objectChangeID: 0, object: &netbox.DcimSiteDataWrapper{ - Site: &netbox.DcimSite{ - ID: 1, - Name: "Site A", - Slug: "site-a", - Status: (*netbox.DcimSiteStatus)(strPtr(string(netbox.DcimSiteStatusActive))), + BaseDataWrapper: netbox.BaseDataWrapper[netbox.DcimSite]{ + Field: &netbox.DcimSite{ + ID: 1, + Name: "Site A", + Slug: "site-a", + Status: (*netbox.DcimSiteStatus)(strPtr(string(netbox.DcimSiteStatusActive))), + }, }, }, }, @@ -2624,10 +2684,12 @@ func TestPrepare(t *testing.T) { queryParams: map[string]string{"q": "undefined"}, objectChangeID: 0, object: &netbox.DcimManufacturerDataWrapper{ - Manufacturer: &netbox.DcimManufacturer{ - ID: 1, - Name: "undefined", - Slug: "undefined", + BaseDataWrapper: netbox.BaseDataWrapper[netbox.DcimManufacturer]{ + Field: &netbox.DcimManufacturer{ + ID: 1, + Name: "undefined", + Slug: "undefined", + }, }, }, }, @@ -2637,14 +2699,16 @@ func TestPrepare(t *testing.T) { queryParams: map[string]string{"q": "ISR4321", "manufacturer__name": "undefined"}, objectChangeID: 0, object: &netbox.DcimDeviceTypeDataWrapper{ - DeviceType: &netbox.DcimDeviceType{ - ID: 1, - Model: "ISR4321", - Slug: "isr4321", - Manufacturer: &netbox.DcimManufacturer{ - ID: 1, - Name: "undefined", - Slug: "undefined", + BaseDataWrapper: netbox.BaseDataWrapper[netbox.DcimDeviceType]{ + Field: &netbox.DcimDeviceType{ + ID: 1, + Model: "ISR4321", + Slug: "isr4321", + Manufacturer: &netbox.DcimManufacturer{ + ID: 1, + Name: "undefined", + Slug: "undefined", + }, }, }, }, @@ -2655,11 +2719,13 @@ func TestPrepare(t *testing.T) { queryParams: map[string]string{"q": "WAN Router"}, objectChangeID: 0, object: &netbox.DcimDeviceRoleDataWrapper{ - DeviceRole: &netbox.DcimDeviceRole{ - ID: 1, - Name: "WAN Router", - Slug: "wan-router", - Color: strPtr("111111"), + BaseDataWrapper: netbox.BaseDataWrapper[netbox.DcimDeviceRole]{ + Field: &netbox.DcimDeviceRole{ + ID: 1, + Name: "WAN Router", + Slug: "wan-router", + Color: strPtr("111111"), + }, }, }, }, @@ -2669,14 +2735,16 @@ func TestPrepare(t *testing.T) { queryParams: map[string]string{"q": "Cisco IOS 15.6"}, objectChangeID: 0, object: &netbox.DcimPlatformDataWrapper{ - Platform: &netbox.DcimPlatform{ - ID: 1, - Name: "Cisco IOS 15.6", - Slug: "cisco-ios-15-6", - Manufacturer: &netbox.DcimManufacturer{ + BaseDataWrapper: netbox.BaseDataWrapper[netbox.DcimPlatform]{ + Field: &netbox.DcimPlatform{ ID: 1, - Name: "undefined", - Slug: "undefined", + Name: "Cisco IOS 15.6", + Slug: "cisco-ios-15-6", + Manufacturer: &netbox.DcimManufacturer{ + ID: 1, + Name: "undefined", + Slug: "undefined", + }, }, }, }, @@ -2687,44 +2755,46 @@ func TestPrepare(t *testing.T) { queryParams: map[string]string{"q": "router01", "site__name": "Site A"}, objectChangeID: 0, object: &netbox.DcimDeviceDataWrapper{ - Device: &netbox.DcimDevice{ - ID: 1, - Name: "router01", - Site: &netbox.DcimSite{ - ID: 1, - Name: "Site B", - Slug: "site-b", - Status: (*netbox.DcimSiteStatus)(strPtr(string(netbox.DcimSiteStatusActive))), - }, - DeviceType: &netbox.DcimDeviceType{ - ID: 1, - Model: "ISR4322", - Slug: "isr4322", - Manufacturer: &netbox.DcimManufacturer{ - ID: 1, - Name: "undefined", - Slug: "undefined", - }, - }, - Role: &netbox.DcimDeviceRole{ - ID: 1, - Name: "undefined", - Slug: "undefined", - Color: strPtr("111111"), - }, - Platform: &netbox.DcimPlatform{ + BaseDataWrapper: netbox.BaseDataWrapper[netbox.DcimDevice]{ + Field: &netbox.DcimDevice{ ID: 1, - Name: "Cisco IOS 15.6", - Slug: "cisco-ios-15-6", - Manufacturer: &netbox.DcimManufacturer{ + Name: "router01", + Site: &netbox.DcimSite{ + ID: 1, + Name: "Site B", + Slug: "site-b", + Status: (*netbox.DcimSiteStatus)(strPtr(string(netbox.DcimSiteStatusActive))), + }, + DeviceType: &netbox.DcimDeviceType{ + ID: 1, + Model: "ISR4322", + Slug: "isr4322", + Manufacturer: &netbox.DcimManufacturer{ + ID: 1, + Name: "undefined", + Slug: "undefined", + }, + }, + Role: &netbox.DcimDeviceRole{ + ID: 1, + Name: "undefined", + Slug: "undefined", + Color: strPtr("111111"), + }, + Platform: &netbox.DcimPlatform{ ID: 1, - Name: "undefined", - Slug: "undefined", + Name: "Cisco IOS 15.6", + Slug: "cisco-ios-15-6", + Manufacturer: &netbox.DcimManufacturer{ + ID: 1, + Name: "undefined", + Slug: "undefined", + }, }, + Status: (*netbox.DcimDeviceStatus)(strPtr(string(netbox.DcimDeviceStatusActive))), + Description: strPtr("Lorem ipsum dolor sit amet, consectetur adipiscing elit."), + Serial: strPtr("123456"), }, - Status: (*netbox.DcimDeviceStatus)(strPtr(string(netbox.DcimDeviceStatusActive))), - Description: strPtr("Lorem ipsum dolor sit amet, consectetur adipiscing elit."), - Serial: strPtr("123456"), }, }, }, @@ -2793,11 +2863,13 @@ func TestPrepare(t *testing.T) { queryParams: map[string]string{"q": "undefined"}, objectChangeID: 0, object: &netbox.DcimSiteDataWrapper{ - Site: &netbox.DcimSite{ - ID: 1, - Name: "undefined", - Slug: "undefined", - Status: (*netbox.DcimSiteStatus)(strPtr(string(netbox.DcimSiteStatusActive))), + BaseDataWrapper: netbox.BaseDataWrapper[netbox.DcimSite]{ + Field: &netbox.DcimSite{ + ID: 1, + Name: "undefined", + Slug: "undefined", + Status: (*netbox.DcimSiteStatus)(strPtr(string(netbox.DcimSiteStatusActive))), + }, }, }, }, @@ -2807,10 +2879,12 @@ func TestPrepare(t *testing.T) { queryParams: map[string]string{"q": "undefined"}, objectChangeID: 0, object: &netbox.DcimManufacturerDataWrapper{ - Manufacturer: &netbox.DcimManufacturer{ - ID: 1, - Name: "undefined", - Slug: "undefined", + BaseDataWrapper: netbox.BaseDataWrapper[netbox.DcimManufacturer]{ + Field: &netbox.DcimManufacturer{ + ID: 1, + Name: "undefined", + Slug: "undefined", + }, }, }, }, @@ -2820,7 +2894,7 @@ func TestPrepare(t *testing.T) { queryParams: map[string]string{"q": "ISR4321", "manufacturer__name": "undefined"}, objectChangeID: 0, object: &netbox.DcimDeviceTypeDataWrapper{ - DeviceType: nil, + BaseDataWrapper: netbox.BaseDataWrapper[netbox.DcimDeviceType]{Field: nil}, }, }, { @@ -2829,7 +2903,7 @@ func TestPrepare(t *testing.T) { queryParams: map[string]string{"q": "WAN Router"}, objectChangeID: 0, object: &netbox.DcimDeviceRoleDataWrapper{ - DeviceRole: nil, + BaseDataWrapper: netbox.BaseDataWrapper[netbox.DcimDeviceRole]{Field: nil}, }, }, { @@ -2838,14 +2912,16 @@ func TestPrepare(t *testing.T) { queryParams: map[string]string{"q": "Cisco IOS 15.6"}, objectChangeID: 0, object: &netbox.DcimPlatformDataWrapper{ - Platform: &netbox.DcimPlatform{ - ID: 1, - Name: "Cisco IOS 15.6", - Slug: "cisco-ios-15-6", - Manufacturer: &netbox.DcimManufacturer{ + BaseDataWrapper: netbox.BaseDataWrapper[netbox.DcimPlatform]{ + Field: &netbox.DcimPlatform{ ID: 1, - Name: "undefined", - Slug: "undefined", + Name: "Cisco IOS 15.6", + Slug: "cisco-ios-15-6", + Manufacturer: &netbox.DcimManufacturer{ + ID: 1, + Name: "undefined", + Slug: "undefined", + }, }, }, }, @@ -2856,44 +2932,46 @@ func TestPrepare(t *testing.T) { queryParams: map[string]string{"q": "router01", "site__name": "undefined"}, objectChangeID: 0, object: &netbox.DcimDeviceDataWrapper{ - Device: &netbox.DcimDevice{ - ID: 1, - Name: "router01", - Site: &netbox.DcimSite{ - ID: 2, - Name: "Site B", - Slug: "site-b", - Status: (*netbox.DcimSiteStatus)(strPtr(string(netbox.DcimSiteStatusActive))), - }, - DeviceType: &netbox.DcimDeviceType{ - ID: 1, - Model: "ISR4322", - Slug: "isr4322", - Manufacturer: &netbox.DcimManufacturer{ - ID: 1, - Name: "undefined", - Slug: "undefined", - }, - }, - Role: &netbox.DcimDeviceRole{ - ID: 1, - Name: "undefined", - Slug: "undefined", - Color: strPtr("000000"), - }, - Platform: &netbox.DcimPlatform{ + BaseDataWrapper: netbox.BaseDataWrapper[netbox.DcimDevice]{ + Field: &netbox.DcimDevice{ ID: 1, - Name: "Cisco IOS 15.6", - Slug: "cisco-ios-15-6", - Manufacturer: &netbox.DcimManufacturer{ + Name: "router01", + Site: &netbox.DcimSite{ + ID: 2, + Name: "Site B", + Slug: "site-b", + Status: (*netbox.DcimSiteStatus)(strPtr(string(netbox.DcimSiteStatusActive))), + }, + DeviceType: &netbox.DcimDeviceType{ + ID: 1, + Model: "ISR4322", + Slug: "isr4322", + Manufacturer: &netbox.DcimManufacturer{ + ID: 1, + Name: "undefined", + Slug: "undefined", + }, + }, + Role: &netbox.DcimDeviceRole{ + ID: 1, + Name: "undefined", + Slug: "undefined", + Color: strPtr("000000"), + }, + Platform: &netbox.DcimPlatform{ ID: 1, - Name: "undefined", - Slug: "undefined", + Name: "Cisco IOS 15.6", + Slug: "cisco-ios-15-6", + Manufacturer: &netbox.DcimManufacturer{ + ID: 1, + Name: "undefined", + Slug: "undefined", + }, }, + Status: (*netbox.DcimDeviceStatus)(strPtr(string(netbox.DcimDeviceStatusActive))), + Description: strPtr("Lorem ipsum dolor sit amet, consectetur adipiscing elit."), + Serial: strPtr("123456"), }, - Status: (*netbox.DcimDeviceStatus)(strPtr(string(netbox.DcimDeviceStatusActive))), - Description: strPtr("Lorem ipsum dolor sit amet, consectetur adipiscing elit."), - Serial: strPtr("123456"), }, }, }, @@ -2997,11 +3075,13 @@ func TestPrepare(t *testing.T) { queryParams: map[string]string{"q": "Site B"}, objectChangeID: 0, object: &netbox.DcimSiteDataWrapper{ - Site: &netbox.DcimSite{ - ID: 1, - Name: "Site B", - Slug: "site-b", - Status: (*netbox.DcimSiteStatus)(strPtr(string(netbox.DcimSiteStatusActive))), + BaseDataWrapper: netbox.BaseDataWrapper[netbox.DcimSite]{ + Field: &netbox.DcimSite{ + ID: 1, + Name: "Site B", + Slug: "site-b", + Status: (*netbox.DcimSiteStatus)(strPtr(string(netbox.DcimSiteStatusActive))), + }, }, }, }, @@ -3011,10 +3091,12 @@ func TestPrepare(t *testing.T) { queryParams: map[string]string{"q": "undefined"}, objectChangeID: 0, object: &netbox.DcimManufacturerDataWrapper{ - Manufacturer: &netbox.DcimManufacturer{ - ID: 1, - Name: "undefined", - Slug: "undefined", + BaseDataWrapper: netbox.BaseDataWrapper[netbox.DcimManufacturer]{ + Field: &netbox.DcimManufacturer{ + ID: 1, + Name: "undefined", + Slug: "undefined", + }, }, }, }, @@ -3024,14 +3106,16 @@ func TestPrepare(t *testing.T) { queryParams: map[string]string{"q": "ISR4321", "manufacturer__name": "undefined"}, objectChangeID: 0, object: &netbox.DcimDeviceTypeDataWrapper{ - DeviceType: &netbox.DcimDeviceType{ - ID: 1, - Model: "ISR4321", - Slug: "isr4321", - Manufacturer: &netbox.DcimManufacturer{ - ID: 1, - Name: "undefined", - Slug: "undefined", + BaseDataWrapper: netbox.BaseDataWrapper[netbox.DcimDeviceType]{ + Field: &netbox.DcimDeviceType{ + ID: 1, + Model: "ISR4321", + Slug: "isr4321", + Manufacturer: &netbox.DcimManufacturer{ + ID: 1, + Name: "undefined", + Slug: "undefined", + }, }, }, }, @@ -3042,11 +3126,13 @@ func TestPrepare(t *testing.T) { queryParams: map[string]string{"q": "WAN Router"}, objectChangeID: 0, object: &netbox.DcimDeviceRoleDataWrapper{ - DeviceRole: &netbox.DcimDeviceRole{ - ID: 1, - Name: "WAN Router", - Slug: "wan-router", - Color: strPtr("111111"), + BaseDataWrapper: netbox.BaseDataWrapper[netbox.DcimDeviceRole]{ + Field: &netbox.DcimDeviceRole{ + ID: 1, + Name: "WAN Router", + Slug: "wan-router", + Color: strPtr("111111"), + }, }, }, }, @@ -3056,14 +3142,16 @@ func TestPrepare(t *testing.T) { queryParams: map[string]string{"q": "Cisco IOS 15.6"}, objectChangeID: 0, object: &netbox.DcimPlatformDataWrapper{ - Platform: &netbox.DcimPlatform{ - ID: 1, - Name: "Cisco IOS 15.6", - Slug: "cisco-ios-15-6", - Manufacturer: &netbox.DcimManufacturer{ + BaseDataWrapper: netbox.BaseDataWrapper[netbox.DcimPlatform]{ + Field: &netbox.DcimPlatform{ ID: 1, - Name: "undefined", - Slug: "undefined", + Name: "Cisco IOS 15.6", + Slug: "cisco-ios-15-6", + Manufacturer: &netbox.DcimManufacturer{ + ID: 1, + Name: "undefined", + Slug: "undefined", + }, }, }, }, @@ -3074,44 +3162,46 @@ func TestPrepare(t *testing.T) { queryParams: map[string]string{"q": "router01", "site__name": "Site B"}, objectChangeID: 0, object: &netbox.DcimDeviceDataWrapper{ - Device: &netbox.DcimDevice{ - ID: 1, - Name: "router01", - Site: &netbox.DcimSite{ - ID: 1, - Name: "Site B", - Slug: "site-b", - Status: (*netbox.DcimSiteStatus)(strPtr(string(netbox.DcimSiteStatusActive))), - }, - DeviceType: &netbox.DcimDeviceType{ - ID: 1, - Model: "ISR4321", - Slug: "isr4321", - Manufacturer: &netbox.DcimManufacturer{ - ID: 1, - Name: "undefined", - Slug: "undefined", - }, - }, - Role: &netbox.DcimDeviceRole{ - ID: 1, - Name: "WAN Router", - Slug: "wan-router", - Color: strPtr("111111"), - }, - Platform: &netbox.DcimPlatform{ + BaseDataWrapper: netbox.BaseDataWrapper[netbox.DcimDevice]{ + Field: &netbox.DcimDevice{ ID: 1, - Name: "Cisco IOS 15.6", - Slug: "cisco-ios-15-6", - Manufacturer: &netbox.DcimManufacturer{ + Name: "router01", + Site: &netbox.DcimSite{ + ID: 1, + Name: "Site B", + Slug: "site-b", + Status: (*netbox.DcimSiteStatus)(strPtr(string(netbox.DcimSiteStatusActive))), + }, + DeviceType: &netbox.DcimDeviceType{ + ID: 1, + Model: "ISR4321", + Slug: "isr4321", + Manufacturer: &netbox.DcimManufacturer{ + ID: 1, + Name: "undefined", + Slug: "undefined", + }, + }, + Role: &netbox.DcimDeviceRole{ + ID: 1, + Name: "WAN Router", + Slug: "wan-router", + Color: strPtr("111111"), + }, + Platform: &netbox.DcimPlatform{ ID: 1, - Name: "undefined", - Slug: "undefined", + Name: "Cisco IOS 15.6", + Slug: "cisco-ios-15-6", + Manufacturer: &netbox.DcimManufacturer{ + ID: 1, + Name: "undefined", + Slug: "undefined", + }, }, + Status: (*netbox.DcimDeviceStatus)(strPtr(string(netbox.DcimDeviceStatusActive))), + Description: strPtr("Lorem ipsum dolor sit amet, consectetur adipiscing elit."), + Serial: strPtr("123456"), }, - Status: (*netbox.DcimDeviceStatus)(strPtr(string(netbox.DcimDeviceStatusActive))), - Description: strPtr("Lorem ipsum dolor sit amet, consectetur adipiscing elit."), - Serial: strPtr("123456"), }, }, }, @@ -3143,7 +3233,7 @@ func TestPrepare(t *testing.T) { queryParams: map[string]string{"q": "Site A"}, objectChangeID: 0, object: &netbox.DcimSiteDataWrapper{ - Site: nil, + BaseDataWrapper: netbox.BaseDataWrapper[netbox.DcimSite]{Field: nil}, }, }, }, @@ -3188,12 +3278,14 @@ func TestPrepare(t *testing.T) { queryParams: map[string]string{"q": "Site A"}, objectChangeID: 0, object: &netbox.DcimSiteDataWrapper{ - Site: &netbox.DcimSite{ - ID: 1, - Name: "Site A", - Slug: "site-a", - Status: (*netbox.DcimSiteStatus)(strPtr(string(netbox.DcimSiteStatusActive))), - Description: strPtr("Lorem ipsum dolor sit amet, consectetur adipiscing elit."), + BaseDataWrapper: netbox.BaseDataWrapper[netbox.DcimSite]{ + Field: &netbox.DcimSite{ + ID: 1, + Name: "Site A", + Slug: "site-a", + Status: (*netbox.DcimSiteStatus)(strPtr(string(netbox.DcimSiteStatusActive))), + Description: strPtr("Lorem ipsum dolor sit amet, consectetur adipiscing elit."), + }, }, }, }, @@ -3239,7 +3331,7 @@ func TestPrepare(t *testing.T) { queryParams: map[string]string{"q": "Cisco"}, objectChangeID: 0, object: &netbox.DcimManufacturerDataWrapper{ - Manufacturer: nil, + BaseDataWrapper: netbox.BaseDataWrapper[netbox.DcimManufacturer]{Field: nil}, }, }, }, @@ -3282,11 +3374,13 @@ func TestPrepare(t *testing.T) { queryParams: map[string]string{"q": "Cisco"}, objectChangeID: 0, object: &netbox.DcimManufacturerDataWrapper{ - Manufacturer: &netbox.DcimManufacturer{ - ID: 1, - Name: "Cisco", - Slug: "cisco", - Description: strPtr("Lorem ipsum dolor sit amet, consectetur adipiscing elit."), + BaseDataWrapper: netbox.BaseDataWrapper[netbox.DcimManufacturer]{ + Field: &netbox.DcimManufacturer{ + ID: 1, + Name: "Cisco", + Slug: "cisco", + Description: strPtr("Lorem ipsum dolor sit amet, consectetur adipiscing elit."), + }, }, }, }, @@ -3332,7 +3426,7 @@ func TestPrepare(t *testing.T) { queryParams: map[string]string{"q": "WAN Router"}, objectChangeID: 0, object: &netbox.DcimDeviceRoleDataWrapper{ - DeviceRole: nil, + BaseDataWrapper: netbox.BaseDataWrapper[netbox.DcimDeviceRole]{Field: nil}, }, }, }, @@ -3377,12 +3471,14 @@ func TestPrepare(t *testing.T) { queryParams: map[string]string{"q": "WAN Router"}, objectChangeID: 0, object: &netbox.DcimDeviceRoleDataWrapper{ - DeviceRole: &netbox.DcimDeviceRole{ - ID: 1, - Name: "WAN Router", - Slug: "wan-router", - Color: strPtr("509415"), - Description: strPtr("Lorem ipsum dolor sit amet, consectetur adipiscing elit."), + BaseDataWrapper: netbox.BaseDataWrapper[netbox.DcimDeviceRole]{ + Field: &netbox.DcimDeviceRole{ + ID: 1, + Name: "WAN Router", + Slug: "wan-router", + Color: strPtr("509415"), + Description: strPtr("Lorem ipsum dolor sit amet, consectetur adipiscing elit."), + }, }, }, }, @@ -3444,7 +3540,7 @@ func TestPrepare(t *testing.T) { queryParams: map[string]string{"q": "GigabitEthernet0/0/0", "device__name": "undefined", "device__site__name": "undefined"}, objectChangeID: 0, object: &netbox.DcimInterfaceDataWrapper{ - Interface: nil, + BaseDataWrapper: netbox.BaseDataWrapper[netbox.DcimInterface]{Field: nil}, }, }, { @@ -3453,11 +3549,13 @@ func TestPrepare(t *testing.T) { queryParams: map[string]string{"q": "undefined"}, objectChangeID: 0, object: &netbox.DcimSiteDataWrapper{ - Site: &netbox.DcimSite{ - ID: 1, - Name: "undefined", - Slug: "undefined", - Status: (*netbox.DcimSiteStatus)(strPtr(string(netbox.DcimSiteStatusActive))), + BaseDataWrapper: netbox.BaseDataWrapper[netbox.DcimSite]{ + Field: &netbox.DcimSite{ + ID: 1, + Name: "undefined", + Slug: "undefined", + Status: (*netbox.DcimSiteStatus)(strPtr(string(netbox.DcimSiteStatusActive))), + }, }, }, }, @@ -3467,10 +3565,12 @@ func TestPrepare(t *testing.T) { queryParams: map[string]string{"q": "undefined"}, objectChangeID: 0, object: &netbox.DcimManufacturerDataWrapper{ - Manufacturer: &netbox.DcimManufacturer{ - ID: 1, - Name: "undefined", - Slug: "undefined", + BaseDataWrapper: netbox.BaseDataWrapper[netbox.DcimManufacturer]{ + Field: &netbox.DcimManufacturer{ + ID: 1, + Name: "undefined", + Slug: "undefined", + }, }, }, }, @@ -3480,14 +3580,16 @@ func TestPrepare(t *testing.T) { queryParams: map[string]string{"q": "undefined"}, objectChangeID: 0, object: &netbox.DcimPlatformDataWrapper{ - Platform: &netbox.DcimPlatform{ - ID: 1, - Name: "undefined", - Slug: "undefined", - Manufacturer: &netbox.DcimManufacturer{ + BaseDataWrapper: netbox.BaseDataWrapper[netbox.DcimPlatform]{ + Field: &netbox.DcimPlatform{ ID: 1, Name: "undefined", Slug: "undefined", + Manufacturer: &netbox.DcimManufacturer{ + ID: 1, + Name: "undefined", + Slug: "undefined", + }, }, }, }, @@ -3498,14 +3600,16 @@ func TestPrepare(t *testing.T) { queryParams: map[string]string{"q": "undefined", "manufacturer__name": "undefined"}, objectChangeID: 0, object: &netbox.DcimDeviceTypeDataWrapper{ - DeviceType: &netbox.DcimDeviceType{ - ID: 1, - Model: "undefined", - Slug: "undefined", - Manufacturer: &netbox.DcimManufacturer{ - ID: 1, - Name: "undefined", - Slug: "undefined", + BaseDataWrapper: netbox.BaseDataWrapper[netbox.DcimDeviceType]{ + Field: &netbox.DcimDeviceType{ + ID: 1, + Model: "undefined", + Slug: "undefined", + Manufacturer: &netbox.DcimManufacturer{ + ID: 1, + Name: "undefined", + Slug: "undefined", + }, }, }, }, @@ -3516,11 +3620,13 @@ func TestPrepare(t *testing.T) { queryParams: map[string]string{"q": "undefined"}, objectChangeID: 0, object: &netbox.DcimDeviceRoleDataWrapper{ - DeviceRole: &netbox.DcimDeviceRole{ - ID: 1, - Name: "undefined", - Slug: "undefined", - Color: strPtr("000000"), + BaseDataWrapper: netbox.BaseDataWrapper[netbox.DcimDeviceRole]{ + Field: &netbox.DcimDeviceRole{ + ID: 1, + Name: "undefined", + Slug: "undefined", + Color: strPtr("000000"), + }, }, }, }, @@ -3530,7 +3636,7 @@ func TestPrepare(t *testing.T) { queryParams: map[string]string{"q": "undefined", "site__name": "undefined"}, objectChangeID: 0, object: &netbox.DcimDeviceDataWrapper{ - Device: nil, + BaseDataWrapper: netbox.BaseDataWrapper[netbox.DcimDevice]{Field: nil}, }, }, }, @@ -3613,47 +3719,49 @@ func TestPrepare(t *testing.T) { queryParams: map[string]string{"q": "GigabitEthernet0/0/0", "device__name": "router01", "device__site__name": "undefined"}, objectChangeID: 0, object: &netbox.DcimInterfaceDataWrapper{ - Interface: &netbox.DcimInterface{ - ID: 1, - Name: "GigabitEthernet0/0/0", - Device: &netbox.DcimDevice{ + BaseDataWrapper: netbox.BaseDataWrapper[netbox.DcimInterface]{ + Field: &netbox.DcimInterface{ ID: 1, - Name: "router01", - Site: &netbox.DcimSite{ - ID: 1, - Name: "undefined", - Slug: "undefined", - Status: (*netbox.DcimSiteStatus)(strPtr(string(netbox.DcimSiteStatusActive))), - }, - DeviceType: &netbox.DcimDeviceType{ - ID: 1, - Model: "undefined", - Slug: "undefined", - Manufacturer: &netbox.DcimManufacturer{ - ID: 1, - Name: "undefined", - Slug: "undefined", - }, - }, - Role: &netbox.DcimDeviceRole{ - ID: 1, - Name: "undefined", - Slug: "undefined", - Color: strPtr("000000"), - }, - Platform: &netbox.DcimPlatform{ + Name: "GigabitEthernet0/0/0", + Device: &netbox.DcimDevice{ ID: 1, - Name: "undefined", - Slug: "undefined", - Manufacturer: &netbox.DcimManufacturer{ + Name: "router01", + Site: &netbox.DcimSite{ + ID: 1, + Name: "undefined", + Slug: "undefined", + Status: (*netbox.DcimSiteStatus)(strPtr(string(netbox.DcimSiteStatusActive))), + }, + DeviceType: &netbox.DcimDeviceType{ + ID: 1, + Model: "undefined", + Slug: "undefined", + Manufacturer: &netbox.DcimManufacturer{ + ID: 1, + Name: "undefined", + Slug: "undefined", + }, + }, + Role: &netbox.DcimDeviceRole{ + ID: 1, + Name: "undefined", + Slug: "undefined", + Color: strPtr("000000"), + }, + Platform: &netbox.DcimPlatform{ ID: 1, Name: "undefined", Slug: "undefined", + Manufacturer: &netbox.DcimManufacturer{ + ID: 1, + Name: "undefined", + Slug: "undefined", + }, }, + Status: (*netbox.DcimDeviceStatus)(strPtr(string(netbox.DcimDeviceStatusActive))), }, - Status: (*netbox.DcimDeviceStatus)(strPtr(string(netbox.DcimDeviceStatusActive))), + Type: strPtr(netbox.DefaultInterfaceType), }, - Type: strPtr(netbox.DefaultInterfaceType), }, }, }, @@ -3663,11 +3771,13 @@ func TestPrepare(t *testing.T) { queryParams: map[string]string{"q": "undefined"}, objectChangeID: 0, object: &netbox.DcimSiteDataWrapper{ - Site: &netbox.DcimSite{ - ID: 1, - Name: "undefined", - Slug: "undefined", - Status: (*netbox.DcimSiteStatus)(strPtr(string(netbox.DcimSiteStatusActive))), + BaseDataWrapper: netbox.BaseDataWrapper[netbox.DcimSite]{ + Field: &netbox.DcimSite{ + ID: 1, + Name: "undefined", + Slug: "undefined", + Status: (*netbox.DcimSiteStatus)(strPtr(string(netbox.DcimSiteStatusActive))), + }, }, }, }, @@ -3677,10 +3787,12 @@ func TestPrepare(t *testing.T) { queryParams: map[string]string{"q": "undefined"}, objectChangeID: 0, object: &netbox.DcimManufacturerDataWrapper{ - Manufacturer: &netbox.DcimManufacturer{ - ID: 1, - Name: "undefined", - Slug: "undefined", + BaseDataWrapper: netbox.BaseDataWrapper[netbox.DcimManufacturer]{ + Field: &netbox.DcimManufacturer{ + ID: 1, + Name: "undefined", + Slug: "undefined", + }, }, }, }, @@ -3690,14 +3802,16 @@ func TestPrepare(t *testing.T) { queryParams: map[string]string{"q": "undefined", "manufacturer__name": "undefined"}, objectChangeID: 0, object: &netbox.DcimDeviceTypeDataWrapper{ - DeviceType: &netbox.DcimDeviceType{ - ID: 1, - Model: "undefined", - Slug: "undefined", - Manufacturer: &netbox.DcimManufacturer{ - ID: 1, - Name: "undefined", - Slug: "undefined", + BaseDataWrapper: netbox.BaseDataWrapper[netbox.DcimDeviceType]{ + Field: &netbox.DcimDeviceType{ + ID: 1, + Model: "undefined", + Slug: "undefined", + Manufacturer: &netbox.DcimManufacturer{ + ID: 1, + Name: "undefined", + Slug: "undefined", + }, }, }, }, @@ -3708,11 +3822,13 @@ func TestPrepare(t *testing.T) { queryParams: map[string]string{"q": "undefined"}, objectChangeID: 0, object: &netbox.DcimDeviceRoleDataWrapper{ - DeviceRole: &netbox.DcimDeviceRole{ - ID: 1, - Name: "undefined", - Slug: "undefined", - Color: strPtr("000000"), + BaseDataWrapper: netbox.BaseDataWrapper[netbox.DcimDeviceRole]{ + Field: &netbox.DcimDeviceRole{ + ID: 1, + Name: "undefined", + Slug: "undefined", + Color: strPtr("000000"), + }, }, }, }, @@ -3722,42 +3838,44 @@ func TestPrepare(t *testing.T) { queryParams: map[string]string{"q": "router01", "site__name": "undefined"}, objectChangeID: 0, object: &netbox.DcimDeviceDataWrapper{ - Device: &netbox.DcimDevice{ - ID: 1, - Name: "router01", - Site: &netbox.DcimSite{ - ID: 1, - Name: "undefined", - Slug: "undefined", - Status: (*netbox.DcimSiteStatus)(strPtr(string(netbox.DcimSiteStatusActive))), - }, - DeviceType: &netbox.DcimDeviceType{ - ID: 1, - Model: "undefined", - Slug: "undefined", - Manufacturer: &netbox.DcimManufacturer{ - ID: 1, - Name: "undefined", - Slug: "undefined", - }, - }, - Role: &netbox.DcimDeviceRole{ - ID: 1, - Name: "undefined", - Slug: "undefined", - Color: strPtr("000000"), - }, - Platform: &netbox.DcimPlatform{ + BaseDataWrapper: netbox.BaseDataWrapper[netbox.DcimDevice]{ + Field: &netbox.DcimDevice{ ID: 1, - Name: "undefined", - Slug: "undefined", - Manufacturer: &netbox.DcimManufacturer{ + Name: "router01", + Site: &netbox.DcimSite{ + ID: 1, + Name: "undefined", + Slug: "undefined", + Status: (*netbox.DcimSiteStatus)(strPtr(string(netbox.DcimSiteStatusActive))), + }, + DeviceType: &netbox.DcimDeviceType{ + ID: 1, + Model: "undefined", + Slug: "undefined", + Manufacturer: &netbox.DcimManufacturer{ + ID: 1, + Name: "undefined", + Slug: "undefined", + }, + }, + Role: &netbox.DcimDeviceRole{ + ID: 1, + Name: "undefined", + Slug: "undefined", + Color: strPtr("000000"), + }, + Platform: &netbox.DcimPlatform{ ID: 1, Name: "undefined", Slug: "undefined", + Manufacturer: &netbox.DcimManufacturer{ + ID: 1, + Name: "undefined", + Slug: "undefined", + }, }, + Status: (*netbox.DcimDeviceStatus)(strPtr(string(netbox.DcimDeviceStatusActive))), }, - Status: (*netbox.DcimDeviceStatus)(strPtr(string(netbox.DcimDeviceStatusActive))), }, }, }, @@ -3791,47 +3909,49 @@ func TestPrepare(t *testing.T) { queryParams: map[string]string{"q": "GigabitEthernet0/0/0", "device__name": "router01", "device__site__name": "undefined"}, objectChangeID: 0, object: &netbox.DcimInterfaceDataWrapper{ - Interface: &netbox.DcimInterface{ - ID: 1, - Name: "GigabitEthernet0/0/0", - Device: &netbox.DcimDevice{ + BaseDataWrapper: netbox.BaseDataWrapper[netbox.DcimInterface]{ + Field: &netbox.DcimInterface{ ID: 1, - Name: "router01", - Site: &netbox.DcimSite{ - ID: 1, - Name: "undefined", - Slug: "undefined", - Status: (*netbox.DcimSiteStatus)(strPtr(string(netbox.DcimSiteStatusActive))), - }, - DeviceType: &netbox.DcimDeviceType{ - ID: 1, - Model: "undefined", - Slug: "undefined", - Manufacturer: &netbox.DcimManufacturer{ - ID: 1, - Name: "undefined", - Slug: "undefined", - }, - }, - Role: &netbox.DcimDeviceRole{ - ID: 1, - Name: "undefined", - Slug: "undefined", - Color: strPtr("000000"), - }, - Platform: &netbox.DcimPlatform{ + Name: "GigabitEthernet0/0/0", + Device: &netbox.DcimDevice{ ID: 1, - Name: "undefined", - Slug: "undefined", - Manufacturer: &netbox.DcimManufacturer{ + Name: "router01", + Site: &netbox.DcimSite{ + ID: 1, + Name: "undefined", + Slug: "undefined", + Status: (*netbox.DcimSiteStatus)(strPtr(string(netbox.DcimSiteStatusActive))), + }, + DeviceType: &netbox.DcimDeviceType{ + ID: 1, + Model: "undefined", + Slug: "undefined", + Manufacturer: &netbox.DcimManufacturer{ + ID: 1, + Name: "undefined", + Slug: "undefined", + }, + }, + Role: &netbox.DcimDeviceRole{ + ID: 1, + Name: "undefined", + Slug: "undefined", + Color: strPtr("000000"), + }, + Platform: &netbox.DcimPlatform{ ID: 1, Name: "undefined", Slug: "undefined", + Manufacturer: &netbox.DcimManufacturer{ + ID: 1, + Name: "undefined", + Slug: "undefined", + }, }, + Status: (*netbox.DcimDeviceStatus)(strPtr(string(netbox.DcimDeviceStatusActive))), }, - Status: (*netbox.DcimDeviceStatus)(strPtr(string(netbox.DcimDeviceStatusActive))), + Type: strPtr(netbox.DefaultInterfaceType), }, - Type: strPtr(netbox.DefaultInterfaceType), }, }, }, @@ -3841,11 +3961,13 @@ func TestPrepare(t *testing.T) { queryParams: map[string]string{"q": "undefined"}, objectChangeID: 0, object: &netbox.DcimSiteDataWrapper{ - Site: &netbox.DcimSite{ - ID: 1, - Name: "undefined", - Slug: "undefined", - Status: (*netbox.DcimSiteStatus)(strPtr(string(netbox.DcimSiteStatusActive))), + BaseDataWrapper: netbox.BaseDataWrapper[netbox.DcimSite]{ + Field: &netbox.DcimSite{ + ID: 1, + Name: "undefined", + Slug: "undefined", + Status: (*netbox.DcimSiteStatus)(strPtr(string(netbox.DcimSiteStatusActive))), + }, }, }, }, @@ -3855,10 +3977,12 @@ func TestPrepare(t *testing.T) { queryParams: map[string]string{"q": "undefined"}, objectChangeID: 0, object: &netbox.DcimManufacturerDataWrapper{ - Manufacturer: &netbox.DcimManufacturer{ - ID: 1, - Name: "undefined", - Slug: "undefined", + BaseDataWrapper: netbox.BaseDataWrapper[netbox.DcimManufacturer]{ + Field: &netbox.DcimManufacturer{ + ID: 1, + Name: "undefined", + Slug: "undefined", + }, }, }, }, @@ -3868,14 +3992,16 @@ func TestPrepare(t *testing.T) { queryParams: map[string]string{"q": "undefined", "manufacturer__name": "undefined"}, objectChangeID: 0, object: &netbox.DcimDeviceTypeDataWrapper{ - DeviceType: &netbox.DcimDeviceType{ - ID: 1, - Model: "undefined", - Slug: "undefined", - Manufacturer: &netbox.DcimManufacturer{ - ID: 1, - Name: "undefined", - Slug: "undefined", + BaseDataWrapper: netbox.BaseDataWrapper[netbox.DcimDeviceType]{ + Field: &netbox.DcimDeviceType{ + ID: 1, + Model: "undefined", + Slug: "undefined", + Manufacturer: &netbox.DcimManufacturer{ + ID: 1, + Name: "undefined", + Slug: "undefined", + }, }, }, }, @@ -3886,11 +4012,13 @@ func TestPrepare(t *testing.T) { queryParams: map[string]string{"q": "undefined"}, objectChangeID: 0, object: &netbox.DcimDeviceRoleDataWrapper{ - DeviceRole: &netbox.DcimDeviceRole{ - ID: 1, - Name: "undefined", - Slug: "undefined", - Color: strPtr("000000"), + BaseDataWrapper: netbox.BaseDataWrapper[netbox.DcimDeviceRole]{ + Field: &netbox.DcimDeviceRole{ + ID: 1, + Name: "undefined", + Slug: "undefined", + Color: strPtr("000000"), + }, }, }, }, @@ -3900,42 +4028,44 @@ func TestPrepare(t *testing.T) { queryParams: map[string]string{"q": "router01", "site__name": "undefined"}, objectChangeID: 0, object: &netbox.DcimDeviceDataWrapper{ - Device: &netbox.DcimDevice{ - ID: 1, - Name: "router01", - Site: &netbox.DcimSite{ - ID: 1, - Name: "undefined", - Slug: "undefined", - Status: (*netbox.DcimSiteStatus)(strPtr(string(netbox.DcimSiteStatusActive))), - }, - DeviceType: &netbox.DcimDeviceType{ - ID: 1, - Model: "undefined", - Slug: "undefined", - Manufacturer: &netbox.DcimManufacturer{ - ID: 1, - Name: "undefined", - Slug: "undefined", - }, - }, - Role: &netbox.DcimDeviceRole{ - ID: 1, - Name: "undefined", - Slug: "undefined", - Color: strPtr("000000"), - }, - Platform: &netbox.DcimPlatform{ + BaseDataWrapper: netbox.BaseDataWrapper[netbox.DcimDevice]{ + Field: &netbox.DcimDevice{ ID: 1, - Name: "undefined", - Slug: "undefined", - Manufacturer: &netbox.DcimManufacturer{ + Name: "router01", + Site: &netbox.DcimSite{ + ID: 1, + Name: "undefined", + Slug: "undefined", + Status: (*netbox.DcimSiteStatus)(strPtr(string(netbox.DcimSiteStatusActive))), + }, + DeviceType: &netbox.DcimDeviceType{ + ID: 1, + Model: "undefined", + Slug: "undefined", + Manufacturer: &netbox.DcimManufacturer{ + ID: 1, + Name: "undefined", + Slug: "undefined", + }, + }, + Role: &netbox.DcimDeviceRole{ + ID: 1, + Name: "undefined", + Slug: "undefined", + Color: strPtr("000000"), + }, + Platform: &netbox.DcimPlatform{ ID: 1, Name: "undefined", Slug: "undefined", + Manufacturer: &netbox.DcimManufacturer{ + ID: 1, + Name: "undefined", + Slug: "undefined", + }, }, + Status: (*netbox.DcimDeviceStatus)(strPtr(string(netbox.DcimDeviceStatusActive))), }, - Status: (*netbox.DcimDeviceStatus)(strPtr(string(netbox.DcimDeviceStatusActive))), }, }, }, @@ -3999,7 +4129,7 @@ func TestPrepare(t *testing.T) { queryParams: map[string]string{"q": "192.168.0.1/22"}, objectChangeID: 0, object: &netbox.IpamIPAddressDataWrapper{ - IPAddress: nil, + BaseDataWrapper: netbox.BaseDataWrapper[netbox.IpamIPAddress]{Field: nil}, }, }, }, @@ -4045,11 +4175,13 @@ func TestPrepare(t *testing.T) { queryParams: map[string]string{"q": "undefined"}, objectChangeID: 0, object: &netbox.DcimSiteDataWrapper{ - Site: &netbox.DcimSite{ - ID: 1, - Name: "undefined", - Slug: "undefined", - Status: (*netbox.DcimSiteStatus)(strPtr(string(netbox.DcimSiteStatusActive))), + BaseDataWrapper: netbox.BaseDataWrapper[netbox.DcimSite]{ + Field: &netbox.DcimSite{ + ID: 1, + Name: "undefined", + Slug: "undefined", + Status: (*netbox.DcimSiteStatus)(strPtr(string(netbox.DcimSiteStatusActive))), + }, }, }, }, @@ -4059,10 +4191,12 @@ func TestPrepare(t *testing.T) { queryParams: map[string]string{"q": "undefined"}, objectChangeID: 0, object: &netbox.DcimManufacturerDataWrapper{ - Manufacturer: &netbox.DcimManufacturer{ - ID: 1, - Name: "undefined", - Slug: "undefined", + BaseDataWrapper: netbox.BaseDataWrapper[netbox.DcimManufacturer]{ + Field: &netbox.DcimManufacturer{ + ID: 1, + Name: "undefined", + Slug: "undefined", + }, }, }, }, @@ -4072,14 +4206,16 @@ func TestPrepare(t *testing.T) { queryParams: map[string]string{"q": "undefined"}, objectChangeID: 0, object: &netbox.DcimPlatformDataWrapper{ - Platform: &netbox.DcimPlatform{ - ID: 1, - Name: "undefined", - Slug: "undefined", - Manufacturer: &netbox.DcimManufacturer{ + BaseDataWrapper: netbox.BaseDataWrapper[netbox.DcimPlatform]{ + Field: &netbox.DcimPlatform{ ID: 1, Name: "undefined", Slug: "undefined", + Manufacturer: &netbox.DcimManufacturer{ + ID: 1, + Name: "undefined", + Slug: "undefined", + }, }, }, }, @@ -4090,14 +4226,16 @@ func TestPrepare(t *testing.T) { queryParams: map[string]string{"q": "undefined", "manufacturer__name": "undefined"}, objectChangeID: 0, object: &netbox.DcimDeviceTypeDataWrapper{ - DeviceType: &netbox.DcimDeviceType{ - ID: 1, - Model: "undefined", - Slug: "undefined", - Manufacturer: &netbox.DcimManufacturer{ - ID: 1, - Name: "undefined", - Slug: "undefined", + BaseDataWrapper: netbox.BaseDataWrapper[netbox.DcimDeviceType]{ + Field: &netbox.DcimDeviceType{ + ID: 1, + Model: "undefined", + Slug: "undefined", + Manufacturer: &netbox.DcimManufacturer{ + ID: 1, + Name: "undefined", + Slug: "undefined", + }, }, }, }, @@ -4108,60 +4246,24 @@ func TestPrepare(t *testing.T) { queryParams: map[string]string{"q": "undefined"}, objectChangeID: 0, object: &netbox.DcimDeviceRoleDataWrapper{ - DeviceRole: &netbox.DcimDeviceRole{ - ID: 1, - Name: "undefined", - Slug: "undefined", - Color: strPtr("000000"), - }, - }, - }, - { - objectType: "dcim.device", - objectID: 0, - queryParams: map[string]string{"q": "undefined", "site__name": "undefined"}, - objectChangeID: 0, - object: &netbox.DcimDeviceDataWrapper{ - Device: &netbox.DcimDevice{ - ID: 1, - Name: "undefined", - Site: &netbox.DcimSite{ - ID: 1, - Name: "undefined", - Slug: "undefined", - Status: (*netbox.DcimSiteStatus)(strPtr(string(netbox.DcimSiteStatusActive))), - }, - DeviceType: &netbox.DcimDeviceType{ - ID: 1, - Model: "undefined", - Slug: "undefined", - Manufacturer: &netbox.DcimManufacturer{ - ID: 1, - Name: "undefined", - Slug: "undefined", - }, - }, - Role: &netbox.DcimDeviceRole{ + BaseDataWrapper: netbox.BaseDataWrapper[netbox.DcimDeviceRole]{ + Field: &netbox.DcimDeviceRole{ ID: 1, Name: "undefined", Slug: "undefined", Color: strPtr("000000"), }, - Status: (*netbox.DcimDeviceStatus)(strPtr(string(netbox.DcimDeviceStatusActive))), }, }, }, { - objectType: "dcim.interface", + objectType: "dcim.device", objectID: 0, - queryParams: map[string]string{"q": "GigabitEthernet0/0/0", "device__name": "undefined", "device__site__name": "undefined"}, + queryParams: map[string]string{"q": "undefined", "site__name": "undefined"}, objectChangeID: 0, - object: &netbox.DcimInterfaceDataWrapper{ - Interface: &netbox.DcimInterface{ - ID: 1, - Name: "GigabitEthernet0/0/0", - Type: strPtr(netbox.DefaultInterfaceType), - Device: &netbox.DcimDevice{ + object: &netbox.DcimDeviceDataWrapper{ + BaseDataWrapper: netbox.BaseDataWrapper[netbox.DcimDevice]{ + Field: &netbox.DcimDevice{ ID: 1, Name: "undefined", Site: &netbox.DcimSite{ @@ -4186,17 +4288,59 @@ func TestPrepare(t *testing.T) { Slug: "undefined", Color: strPtr("000000"), }, - Platform: &netbox.DcimPlatform{ + Status: (*netbox.DcimDeviceStatus)(strPtr(string(netbox.DcimDeviceStatusActive))), + }, + }, + }, + }, + { + objectType: "dcim.interface", + objectID: 0, + queryParams: map[string]string{"q": "GigabitEthernet0/0/0", "device__name": "undefined", "device__site__name": "undefined"}, + objectChangeID: 0, + object: &netbox.DcimInterfaceDataWrapper{ + BaseDataWrapper: netbox.BaseDataWrapper[netbox.DcimInterface]{ + Field: &netbox.DcimInterface{ + ID: 1, + Name: "GigabitEthernet0/0/0", + Type: strPtr(netbox.DefaultInterfaceType), + Device: &netbox.DcimDevice{ ID: 1, Name: "undefined", - Slug: "undefined", - Manufacturer: &netbox.DcimManufacturer{ + Site: &netbox.DcimSite{ + ID: 1, + Name: "undefined", + Slug: "undefined", + Status: (*netbox.DcimSiteStatus)(strPtr(string(netbox.DcimSiteStatusActive))), + }, + DeviceType: &netbox.DcimDeviceType{ + ID: 1, + Model: "undefined", + Slug: "undefined", + Manufacturer: &netbox.DcimManufacturer{ + ID: 1, + Name: "undefined", + Slug: "undefined", + }, + }, + Role: &netbox.DcimDeviceRole{ + ID: 1, + Name: "undefined", + Slug: "undefined", + Color: strPtr("000000"), + }, + Platform: &netbox.DcimPlatform{ ID: 1, Name: "undefined", Slug: "undefined", + Manufacturer: &netbox.DcimManufacturer{ + ID: 1, + Name: "undefined", + Slug: "undefined", + }, }, + Status: (*netbox.DcimDeviceStatus)(strPtr(string(netbox.DcimDeviceStatusActive))), }, - Status: (*netbox.DcimDeviceStatus)(strPtr(string(netbox.DcimDeviceStatusActive))), }, }, }, @@ -4207,7 +4351,7 @@ func TestPrepare(t *testing.T) { queryParams: map[string]string{"q": "192.168.0.1/22", "interface__name": "GigabitEthernet0/0/0", "interface__device__name": "undefined", "interface__device__site__name": "undefined"}, objectChangeID: 0, object: &netbox.IpamIPAddressDataWrapper{ - IPAddress: nil, + BaseDataWrapper: netbox.BaseDataWrapper[netbox.IpamIPAddress]{Field: nil}, }, }, }, @@ -4261,13 +4405,15 @@ func TestPrepare(t *testing.T) { queryParams: map[string]string{"q": "undefined"}, objectChangeID: 0, object: &netbox.DcimSiteDataWrapper{ - Site: &netbox.DcimSite{ - ID: 1, - Name: "undefined", - Slug: "undefined", - Status: (*netbox.DcimSiteStatus)(strPtr(string(netbox.DcimSiteStatusActive))), - }, - }, + BaseDataWrapper: netbox.BaseDataWrapper[netbox.DcimSite]{ + Field: &netbox.DcimSite{ + ID: 1, + Name: "undefined", + Slug: "undefined", + Status: (*netbox.DcimSiteStatus)(strPtr(string(netbox.DcimSiteStatusActive))), + }, + }, + }, }, { objectType: "dcim.manufacturer", @@ -4275,10 +4421,12 @@ func TestPrepare(t *testing.T) { queryParams: map[string]string{"q": "undefined"}, objectChangeID: 0, object: &netbox.DcimManufacturerDataWrapper{ - Manufacturer: &netbox.DcimManufacturer{ - ID: 1, - Name: "undefined", - Slug: "undefined", + BaseDataWrapper: netbox.BaseDataWrapper[netbox.DcimManufacturer]{ + Field: &netbox.DcimManufacturer{ + ID: 1, + Name: "undefined", + Slug: "undefined", + }, }, }, }, @@ -4288,14 +4436,16 @@ func TestPrepare(t *testing.T) { queryParams: map[string]string{"q": "undefined"}, objectChangeID: 0, object: &netbox.DcimPlatformDataWrapper{ - Platform: &netbox.DcimPlatform{ - ID: 1, - Name: "undefined", - Slug: "undefined", - Manufacturer: &netbox.DcimManufacturer{ + BaseDataWrapper: netbox.BaseDataWrapper[netbox.DcimPlatform]{ + Field: &netbox.DcimPlatform{ ID: 1, Name: "undefined", Slug: "undefined", + Manufacturer: &netbox.DcimManufacturer{ + ID: 1, + Name: "undefined", + Slug: "undefined", + }, }, }, }, @@ -4306,14 +4456,16 @@ func TestPrepare(t *testing.T) { queryParams: map[string]string{"q": "undefined", "manufacturer__name": "undefined"}, objectChangeID: 0, object: &netbox.DcimDeviceTypeDataWrapper{ - DeviceType: &netbox.DcimDeviceType{ - ID: 1, - Model: "undefined", - Slug: "undefined", - Manufacturer: &netbox.DcimManufacturer{ - ID: 1, - Name: "undefined", - Slug: "undefined", + BaseDataWrapper: netbox.BaseDataWrapper[netbox.DcimDeviceType]{ + Field: &netbox.DcimDeviceType{ + ID: 1, + Model: "undefined", + Slug: "undefined", + Manufacturer: &netbox.DcimManufacturer{ + ID: 1, + Name: "undefined", + Slug: "undefined", + }, }, }, }, @@ -4324,11 +4476,13 @@ func TestPrepare(t *testing.T) { queryParams: map[string]string{"q": "undefined"}, objectChangeID: 0, object: &netbox.DcimDeviceRoleDataWrapper{ - DeviceRole: &netbox.DcimDeviceRole{ - ID: 1, - Name: "undefined", - Slug: "undefined", - Color: strPtr("000000"), + BaseDataWrapper: netbox.BaseDataWrapper[netbox.DcimDeviceRole]{ + Field: &netbox.DcimDeviceRole{ + ID: 1, + Name: "undefined", + Slug: "undefined", + Color: strPtr("000000"), + }, }, }, }, @@ -4338,42 +4492,44 @@ func TestPrepare(t *testing.T) { queryParams: map[string]string{"q": "undefined", "site__name": "undefined"}, objectChangeID: 0, object: &netbox.DcimDeviceDataWrapper{ - Device: &netbox.DcimDevice{ - ID: 1, - Name: "undefined", - Site: &netbox.DcimSite{ - ID: 1, - Name: "undefined", - Slug: "undefined", - Status: (*netbox.DcimSiteStatus)(strPtr(string(netbox.DcimSiteStatusActive))), - }, - DeviceType: &netbox.DcimDeviceType{ - ID: 1, - Model: "undefined", - Slug: "undefined", - Manufacturer: &netbox.DcimManufacturer{ - ID: 1, - Name: "undefined", - Slug: "undefined", - }, - }, - Role: &netbox.DcimDeviceRole{ - ID: 1, - Name: "undefined", - Slug: "undefined", - Color: strPtr("000000"), - }, - Platform: &netbox.DcimPlatform{ + BaseDataWrapper: netbox.BaseDataWrapper[netbox.DcimDevice]{ + Field: &netbox.DcimDevice{ ID: 1, Name: "undefined", - Slug: "undefined", - Manufacturer: &netbox.DcimManufacturer{ + Site: &netbox.DcimSite{ + ID: 1, + Name: "undefined", + Slug: "undefined", + Status: (*netbox.DcimSiteStatus)(strPtr(string(netbox.DcimSiteStatusActive))), + }, + DeviceType: &netbox.DcimDeviceType{ + ID: 1, + Model: "undefined", + Slug: "undefined", + Manufacturer: &netbox.DcimManufacturer{ + ID: 1, + Name: "undefined", + Slug: "undefined", + }, + }, + Role: &netbox.DcimDeviceRole{ + ID: 1, + Name: "undefined", + Slug: "undefined", + Color: strPtr("000000"), + }, + Platform: &netbox.DcimPlatform{ ID: 1, Name: "undefined", Slug: "undefined", + Manufacturer: &netbox.DcimManufacturer{ + ID: 1, + Name: "undefined", + Slug: "undefined", + }, }, + Status: (*netbox.DcimDeviceStatus)(strPtr(string(netbox.DcimDeviceStatusActive))), }, - Status: (*netbox.DcimDeviceStatus)(strPtr(string(netbox.DcimDeviceStatusActive))), }, }, }, @@ -4383,7 +4539,7 @@ func TestPrepare(t *testing.T) { queryParams: map[string]string{"q": "GigabitEthernet0/0/0", "device__name": "undefined", "device__site__name": "undefined"}, objectChangeID: 0, object: &netbox.DcimInterfaceDataWrapper{ - Interface: nil, + BaseDataWrapper: netbox.BaseDataWrapper[netbox.DcimInterface]{Field: nil}, }, }, { @@ -4392,7 +4548,7 @@ func TestPrepare(t *testing.T) { queryParams: map[string]string{"q": "192.168.0.1/22", "interface__name": "GigabitEthernet0/0/0", "interface__device__name": "undefined", "interface__device__site__name": "undefined"}, objectChangeID: 0, object: &netbox.IpamIPAddressDataWrapper{ - IPAddress: nil, + BaseDataWrapper: netbox.BaseDataWrapper[netbox.IpamIPAddress]{Field: nil}, }, }, }, @@ -4461,11 +4617,13 @@ func TestPrepare(t *testing.T) { queryParams: map[string]string{"q": "undefined"}, objectChangeID: 0, object: &netbox.DcimSiteDataWrapper{ - Site: &netbox.DcimSite{ - ID: 1, - Name: "undefined", - Slug: "undefined", - Status: (*netbox.DcimSiteStatus)(strPtr(string(netbox.DcimSiteStatusActive))), + BaseDataWrapper: netbox.BaseDataWrapper[netbox.DcimSite]{ + Field: &netbox.DcimSite{ + ID: 1, + Name: "undefined", + Slug: "undefined", + Status: (*netbox.DcimSiteStatus)(strPtr(string(netbox.DcimSiteStatusActive))), + }, }, }, }, @@ -4475,10 +4633,12 @@ func TestPrepare(t *testing.T) { queryParams: map[string]string{"q": "undefined"}, objectChangeID: 0, object: &netbox.DcimManufacturerDataWrapper{ - Manufacturer: &netbox.DcimManufacturer{ - ID: 1, - Name: "undefined", - Slug: "undefined", + BaseDataWrapper: netbox.BaseDataWrapper[netbox.DcimManufacturer]{ + Field: &netbox.DcimManufacturer{ + ID: 1, + Name: "undefined", + Slug: "undefined", + }, }, }, }, @@ -4488,14 +4648,16 @@ func TestPrepare(t *testing.T) { queryParams: map[string]string{"q": "undefined"}, objectChangeID: 0, object: &netbox.DcimPlatformDataWrapper{ - Platform: &netbox.DcimPlatform{ - ID: 1, - Name: "undefined", - Slug: "undefined", - Manufacturer: &netbox.DcimManufacturer{ + BaseDataWrapper: netbox.BaseDataWrapper[netbox.DcimPlatform]{ + Field: &netbox.DcimPlatform{ ID: 1, Name: "undefined", Slug: "undefined", + Manufacturer: &netbox.DcimManufacturer{ + ID: 1, + Name: "undefined", + Slug: "undefined", + }, }, }, }, @@ -4506,14 +4668,16 @@ func TestPrepare(t *testing.T) { queryParams: map[string]string{"q": "undefined", "manufacturer__name": "undefined"}, objectChangeID: 0, object: &netbox.DcimDeviceTypeDataWrapper{ - DeviceType: &netbox.DcimDeviceType{ - ID: 1, - Model: "undefined", - Slug: "undefined", - Manufacturer: &netbox.DcimManufacturer{ - ID: 1, - Name: "undefined", - Slug: "undefined", + BaseDataWrapper: netbox.BaseDataWrapper[netbox.DcimDeviceType]{ + Field: &netbox.DcimDeviceType{ + ID: 1, + Model: "undefined", + Slug: "undefined", + Manufacturer: &netbox.DcimManufacturer{ + ID: 1, + Name: "undefined", + Slug: "undefined", + }, }, }, }, @@ -4524,11 +4688,13 @@ func TestPrepare(t *testing.T) { queryParams: map[string]string{"q": "undefined"}, objectChangeID: 0, object: &netbox.DcimDeviceRoleDataWrapper{ - DeviceRole: &netbox.DcimDeviceRole{ - ID: 1, - Name: "undefined", - Slug: "undefined", - Color: strPtr("000000"), + BaseDataWrapper: netbox.BaseDataWrapper[netbox.DcimDeviceRole]{ + Field: &netbox.DcimDeviceRole{ + ID: 1, + Name: "undefined", + Slug: "undefined", + Color: strPtr("000000"), + }, }, }, }, @@ -4538,42 +4704,44 @@ func TestPrepare(t *testing.T) { queryParams: map[string]string{"q": "undefined", "site__name": "undefined"}, objectChangeID: 0, object: &netbox.DcimDeviceDataWrapper{ - Device: &netbox.DcimDevice{ - ID: 1, - Name: "undefined", - Site: &netbox.DcimSite{ - ID: 1, - Name: "undefined", - Slug: "undefined", - Status: (*netbox.DcimSiteStatus)(strPtr(string(netbox.DcimSiteStatusActive))), - }, - DeviceType: &netbox.DcimDeviceType{ - ID: 1, - Model: "undefined", - Slug: "undefined", - Manufacturer: &netbox.DcimManufacturer{ - ID: 1, - Name: "undefined", - Slug: "undefined", - }, - }, - Role: &netbox.DcimDeviceRole{ - ID: 1, - Name: "undefined", - Slug: "undefined", - Color: strPtr("000000"), - }, - Platform: &netbox.DcimPlatform{ + BaseDataWrapper: netbox.BaseDataWrapper[netbox.DcimDevice]{ + Field: &netbox.DcimDevice{ ID: 1, Name: "undefined", - Slug: "undefined", - Manufacturer: &netbox.DcimManufacturer{ + Site: &netbox.DcimSite{ + ID: 1, + Name: "undefined", + Slug: "undefined", + Status: (*netbox.DcimSiteStatus)(strPtr(string(netbox.DcimSiteStatusActive))), + }, + DeviceType: &netbox.DcimDeviceType{ + ID: 1, + Model: "undefined", + Slug: "undefined", + Manufacturer: &netbox.DcimManufacturer{ + ID: 1, + Name: "undefined", + Slug: "undefined", + }, + }, + Role: &netbox.DcimDeviceRole{ + ID: 1, + Name: "undefined", + Slug: "undefined", + Color: strPtr("000000"), + }, + Platform: &netbox.DcimPlatform{ ID: 1, Name: "undefined", Slug: "undefined", + Manufacturer: &netbox.DcimManufacturer{ + ID: 1, + Name: "undefined", + Slug: "undefined", + }, }, + Status: (*netbox.DcimDeviceStatus)(strPtr(string(netbox.DcimDeviceStatusActive))), }, - Status: (*netbox.DcimDeviceStatus)(strPtr(string(netbox.DcimDeviceStatusActive))), }, }, }, @@ -4583,7 +4751,7 @@ func TestPrepare(t *testing.T) { queryParams: map[string]string{"q": "GigabitEthernet1/0/1", "device__name": "undefined", "device__site__name": "undefined"}, objectChangeID: 0, object: &netbox.DcimInterfaceDataWrapper{ - Interface: nil, + BaseDataWrapper: netbox.BaseDataWrapper[netbox.DcimInterface]{Field: nil}, }, }, { @@ -4592,51 +4760,53 @@ func TestPrepare(t *testing.T) { queryParams: map[string]string{"q": "192.168.0.1/22", "interface__name": "GigabitEthernet1/0/1", "interface__device__name": "undefined", "interface__device__site__name": "undefined"}, objectChangeID: 0, object: &netbox.IpamIPAddressDataWrapper{ - IPAddress: &netbox.IpamIPAddress{ - ID: 1, - Address: "192.168.0.1/22", - Status: &netbox.DefaultIPAddressStatus, - AssignedObject: &netbox.IPAddressInterface{ - Interface: &netbox.DcimInterface{ - ID: 1, - Name: "GigabitEthernet0/0/0", - Type: strPtr(netbox.DefaultInterfaceType), - Device: &netbox.DcimDevice{ + BaseDataWrapper: netbox.BaseDataWrapper[netbox.IpamIPAddress]{ + Field: &netbox.IpamIPAddress{ + ID: 1, + Address: "192.168.0.1/22", + Status: &netbox.DefaultIPAddressStatus, + AssignedObject: &netbox.IPAddressInterface{ + Interface: &netbox.DcimInterface{ ID: 1, - Name: "undefined", - Site: &netbox.DcimSite{ - ID: 1, - Name: "undefined", - Slug: "undefined", - Status: (*netbox.DcimSiteStatus)(strPtr(string(netbox.DcimSiteStatusActive))), - }, - DeviceType: &netbox.DcimDeviceType{ - ID: 1, - Model: "undefined", - Slug: "undefined", - Manufacturer: &netbox.DcimManufacturer{ - ID: 1, - Name: "undefined", - Slug: "undefined", - }, - }, - Role: &netbox.DcimDeviceRole{ - ID: 1, - Name: "undefined", - Slug: "undefined", - Color: strPtr("000000"), - }, - Platform: &netbox.DcimPlatform{ + Name: "GigabitEthernet0/0/0", + Type: strPtr(netbox.DefaultInterfaceType), + Device: &netbox.DcimDevice{ ID: 1, Name: "undefined", - Slug: "undefined", - Manufacturer: &netbox.DcimManufacturer{ + Site: &netbox.DcimSite{ + ID: 1, + Name: "undefined", + Slug: "undefined", + Status: (*netbox.DcimSiteStatus)(strPtr(string(netbox.DcimSiteStatusActive))), + }, + DeviceType: &netbox.DcimDeviceType{ + ID: 1, + Model: "undefined", + Slug: "undefined", + Manufacturer: &netbox.DcimManufacturer{ + ID: 1, + Name: "undefined", + Slug: "undefined", + }, + }, + Role: &netbox.DcimDeviceRole{ + ID: 1, + Name: "undefined", + Slug: "undefined", + Color: strPtr("000000"), + }, + Platform: &netbox.DcimPlatform{ ID: 1, Name: "undefined", Slug: "undefined", + Manufacturer: &netbox.DcimManufacturer{ + ID: 1, + Name: "undefined", + Slug: "undefined", + }, }, + Status: (*netbox.DcimDeviceStatus)(strPtr(string(netbox.DcimDeviceStatusActive))), }, - Status: (*netbox.DcimDeviceStatus)(strPtr(string(netbox.DcimDeviceStatusActive))), }, }, }, @@ -4709,11 +4879,13 @@ func TestPrepare(t *testing.T) { queryParams: map[string]string{"q": "undefined"}, objectChangeID: 0, object: &netbox.DcimSiteDataWrapper{ - Site: &netbox.DcimSite{ - ID: 1, - Name: "undefined", - Slug: "undefined", - Status: (*netbox.DcimSiteStatus)(strPtr(string(netbox.DcimSiteStatusActive))), + BaseDataWrapper: netbox.BaseDataWrapper[netbox.DcimSite]{ + Field: &netbox.DcimSite{ + ID: 1, + Name: "undefined", + Slug: "undefined", + Status: (*netbox.DcimSiteStatus)(strPtr(string(netbox.DcimSiteStatusActive))), + }, }, }, }, @@ -4723,10 +4895,12 @@ func TestPrepare(t *testing.T) { queryParams: map[string]string{"q": "undefined"}, objectChangeID: 0, object: &netbox.DcimManufacturerDataWrapper{ - Manufacturer: &netbox.DcimManufacturer{ - ID: 1, - Name: "undefined", - Slug: "undefined", + BaseDataWrapper: netbox.BaseDataWrapper[netbox.DcimManufacturer]{ + Field: &netbox.DcimManufacturer{ + ID: 1, + Name: "undefined", + Slug: "undefined", + }, }, }, }, @@ -4736,14 +4910,16 @@ func TestPrepare(t *testing.T) { queryParams: map[string]string{"q": "undefined"}, objectChangeID: 0, object: &netbox.DcimPlatformDataWrapper{ - Platform: &netbox.DcimPlatform{ - ID: 1, - Name: "undefined", - Slug: "undefined", - Manufacturer: &netbox.DcimManufacturer{ + BaseDataWrapper: netbox.BaseDataWrapper[netbox.DcimPlatform]{ + Field: &netbox.DcimPlatform{ ID: 1, Name: "undefined", Slug: "undefined", + Manufacturer: &netbox.DcimManufacturer{ + ID: 1, + Name: "undefined", + Slug: "undefined", + }, }, }, }, @@ -4754,14 +4930,16 @@ func TestPrepare(t *testing.T) { queryParams: map[string]string{"q": "undefined", "manufacturer__name": "undefined"}, objectChangeID: 0, object: &netbox.DcimDeviceTypeDataWrapper{ - DeviceType: &netbox.DcimDeviceType{ - ID: 1, - Model: "undefined", - Slug: "undefined", - Manufacturer: &netbox.DcimManufacturer{ - ID: 1, - Name: "undefined", - Slug: "undefined", + BaseDataWrapper: netbox.BaseDataWrapper[netbox.DcimDeviceType]{ + Field: &netbox.DcimDeviceType{ + ID: 1, + Model: "undefined", + Slug: "undefined", + Manufacturer: &netbox.DcimManufacturer{ + ID: 1, + Name: "undefined", + Slug: "undefined", + }, }, }, }, @@ -4772,70 +4950,24 @@ func TestPrepare(t *testing.T) { queryParams: map[string]string{"q": "undefined"}, objectChangeID: 0, object: &netbox.DcimDeviceRoleDataWrapper{ - DeviceRole: &netbox.DcimDeviceRole{ - ID: 1, - Name: "undefined", - Slug: "undefined", - Color: strPtr("000000"), - }, - }, - }, - { - objectType: "dcim.device", - objectID: 0, - queryParams: map[string]string{"q": "undefined", "site__name": "undefined"}, - objectChangeID: 0, - object: &netbox.DcimDeviceDataWrapper{ - Device: &netbox.DcimDevice{ - ID: 1, - Name: "undefined", - Site: &netbox.DcimSite{ - ID: 1, - Name: "undefined", - Slug: "undefined", - Status: (*netbox.DcimSiteStatus)(strPtr(string(netbox.DcimSiteStatusActive))), - }, - DeviceType: &netbox.DcimDeviceType{ - ID: 1, - Model: "undefined", - Slug: "undefined", - Manufacturer: &netbox.DcimManufacturer{ - ID: 1, - Name: "undefined", - Slug: "undefined", - }, - }, - Role: &netbox.DcimDeviceRole{ + BaseDataWrapper: netbox.BaseDataWrapper[netbox.DcimDeviceRole]{ + Field: &netbox.DcimDeviceRole{ ID: 1, Name: "undefined", Slug: "undefined", Color: strPtr("000000"), }, - Platform: &netbox.DcimPlatform{ - ID: 1, - Name: "undefined", - Slug: "undefined", - Manufacturer: &netbox.DcimManufacturer{ - ID: 1, - Name: "undefined", - Slug: "undefined", - }, - }, - Status: (*netbox.DcimDeviceStatus)(strPtr(string(netbox.DcimDeviceStatusActive))), }, }, }, { - objectType: "dcim.interface", + objectType: "dcim.device", objectID: 0, - queryParams: map[string]string{"q": "GigabitEthernet1/0/1", "device__name": "undefined", "device__site__name": "undefined"}, + queryParams: map[string]string{"q": "undefined", "site__name": "undefined"}, objectChangeID: 0, - object: &netbox.DcimInterfaceDataWrapper{ - Interface: &netbox.DcimInterface{ - ID: 2, - Name: "GigabitEthernet1/0/1", - Type: strPtr(netbox.DefaultInterfaceType), - Device: &netbox.DcimDevice{ + object: &netbox.DcimDeviceDataWrapper{ + BaseDataWrapper: netbox.BaseDataWrapper[netbox.DcimDevice]{ + Field: &netbox.DcimDevice{ ID: 1, Name: "undefined", Site: &netbox.DcimSite{ @@ -4876,56 +5008,110 @@ func TestPrepare(t *testing.T) { }, }, { - objectType: "ipam.ipaddress", + objectType: "dcim.interface", objectID: 0, - queryParams: map[string]string{"q": "192.168.0.1/22", "interface__name": "GigabitEthernet1/0/1", "interface__device__name": "undefined", "interface__device__site__name": "undefined"}, + queryParams: map[string]string{"q": "GigabitEthernet1/0/1", "device__name": "undefined", "device__site__name": "undefined"}, objectChangeID: 0, - object: &netbox.IpamIPAddressDataWrapper{ - IPAddress: &netbox.IpamIPAddress{ - ID: 1, - Address: "192.168.0.1/22", - Status: &netbox.DefaultIPAddressStatus, - AssignedObject: &netbox.IPAddressInterface{ - Interface: &netbox.DcimInterface{ + object: &netbox.DcimInterfaceDataWrapper{ + BaseDataWrapper: netbox.BaseDataWrapper[netbox.DcimInterface]{ + Field: &netbox.DcimInterface{ + ID: 2, + Name: "GigabitEthernet1/0/1", + Type: strPtr(netbox.DefaultInterfaceType), + Device: &netbox.DcimDevice{ ID: 1, - Name: "GigabitEthernet0/0/0", - Type: strPtr(netbox.DefaultInterfaceType), - Device: &netbox.DcimDevice{ + Name: "undefined", + Site: &netbox.DcimSite{ + ID: 1, + Name: "undefined", + Slug: "undefined", + Status: (*netbox.DcimSiteStatus)(strPtr(string(netbox.DcimSiteStatusActive))), + }, + DeviceType: &netbox.DcimDeviceType{ + ID: 1, + Model: "undefined", + Slug: "undefined", + Manufacturer: &netbox.DcimManufacturer{ + ID: 1, + Name: "undefined", + Slug: "undefined", + }, + }, + Role: &netbox.DcimDeviceRole{ + ID: 1, + Name: "undefined", + Slug: "undefined", + Color: strPtr("000000"), + }, + Platform: &netbox.DcimPlatform{ ID: 1, Name: "undefined", - Site: &netbox.DcimSite{ - ID: 1, - Name: "undefined", - Slug: "undefined", - Status: (*netbox.DcimSiteStatus)(strPtr(string(netbox.DcimSiteStatusActive))), - }, - DeviceType: &netbox.DcimDeviceType{ - ID: 1, - Model: "undefined", - Slug: "undefined", - Manufacturer: &netbox.DcimManufacturer{ - ID: 1, - Name: "undefined", - Slug: "undefined", - }, - }, - Role: &netbox.DcimDeviceRole{ - ID: 1, - Name: "undefined", - Slug: "undefined", - Color: strPtr("000000"), - }, - Platform: &netbox.DcimPlatform{ + Slug: "undefined", + Manufacturer: &netbox.DcimManufacturer{ ID: 1, Name: "undefined", Slug: "undefined", - Manufacturer: &netbox.DcimManufacturer{ + }, + }, + Status: (*netbox.DcimDeviceStatus)(strPtr(string(netbox.DcimDeviceStatusActive))), + }, + }, + }, + }, + }, + { + objectType: "ipam.ipaddress", + objectID: 0, + queryParams: map[string]string{"q": "192.168.0.1/22", "interface__name": "GigabitEthernet1/0/1", "interface__device__name": "undefined", "interface__device__site__name": "undefined"}, + objectChangeID: 0, + object: &netbox.IpamIPAddressDataWrapper{ + BaseDataWrapper: netbox.BaseDataWrapper[netbox.IpamIPAddress]{ + Field: &netbox.IpamIPAddress{ + ID: 1, + Address: "192.168.0.1/22", + Status: &netbox.DefaultIPAddressStatus, + AssignedObject: &netbox.IPAddressInterface{ + Interface: &netbox.DcimInterface{ + ID: 1, + Name: "GigabitEthernet0/0/0", + Type: strPtr(netbox.DefaultInterfaceType), + Device: &netbox.DcimDevice{ + ID: 1, + Name: "undefined", + Site: &netbox.DcimSite{ + ID: 1, + Name: "undefined", + Slug: "undefined", + Status: (*netbox.DcimSiteStatus)(strPtr(string(netbox.DcimSiteStatusActive))), + }, + DeviceType: &netbox.DcimDeviceType{ + ID: 1, + Model: "undefined", + Slug: "undefined", + Manufacturer: &netbox.DcimManufacturer{ + ID: 1, + Name: "undefined", + Slug: "undefined", + }, + }, + Role: &netbox.DcimDeviceRole{ + ID: 1, + Name: "undefined", + Slug: "undefined", + Color: strPtr("000000"), + }, + Platform: &netbox.DcimPlatform{ ID: 1, Name: "undefined", Slug: "undefined", + Manufacturer: &netbox.DcimManufacturer{ + ID: 1, + Name: "undefined", + Slug: "undefined", + }, }, + Status: (*netbox.DcimDeviceStatus)(strPtr(string(netbox.DcimDeviceStatusActive))), }, - Status: (*netbox.DcimDeviceStatus)(strPtr(string(netbox.DcimDeviceStatusActive))), }, }, }, @@ -4983,11 +5169,13 @@ func TestPrepare(t *testing.T) { queryParams: map[string]string{"q": "undefined"}, objectChangeID: 0, object: &netbox.DcimSiteDataWrapper{ - Site: &netbox.DcimSite{ - ID: 1, - Name: "undefined", - Slug: "undefined", - Status: (*netbox.DcimSiteStatus)(strPtr(string(netbox.DcimSiteStatusActive))), + BaseDataWrapper: netbox.BaseDataWrapper[netbox.DcimSite]{ + Field: &netbox.DcimSite{ + ID: 1, + Name: "undefined", + Slug: "undefined", + Status: (*netbox.DcimSiteStatus)(strPtr(string(netbox.DcimSiteStatusActive))), + }, }, }, }, @@ -4997,10 +5185,12 @@ func TestPrepare(t *testing.T) { queryParams: map[string]string{"q": "undefined"}, objectChangeID: 0, object: &netbox.DcimManufacturerDataWrapper{ - Manufacturer: &netbox.DcimManufacturer{ - ID: 1, - Name: "undefined", - Slug: "undefined", + BaseDataWrapper: netbox.BaseDataWrapper[netbox.DcimManufacturer]{ + Field: &netbox.DcimManufacturer{ + ID: 1, + Name: "undefined", + Slug: "undefined", + }, }, }, }, @@ -5010,14 +5200,16 @@ func TestPrepare(t *testing.T) { queryParams: map[string]string{"q": "undefined"}, objectChangeID: 0, object: &netbox.DcimPlatformDataWrapper{ - Platform: &netbox.DcimPlatform{ - ID: 1, - Name: "undefined", - Slug: "undefined", - Manufacturer: &netbox.DcimManufacturer{ + BaseDataWrapper: netbox.BaseDataWrapper[netbox.DcimPlatform]{ + Field: &netbox.DcimPlatform{ ID: 1, Name: "undefined", Slug: "undefined", + Manufacturer: &netbox.DcimManufacturer{ + ID: 1, + Name: "undefined", + Slug: "undefined", + }, }, }, }, @@ -5028,14 +5220,16 @@ func TestPrepare(t *testing.T) { queryParams: map[string]string{"q": "undefined", "manufacturer__name": "undefined"}, objectChangeID: 0, object: &netbox.DcimDeviceTypeDataWrapper{ - DeviceType: &netbox.DcimDeviceType{ - ID: 1, - Model: "undefined", - Slug: "undefined", - Manufacturer: &netbox.DcimManufacturer{ - ID: 1, - Name: "undefined", - Slug: "undefined", + BaseDataWrapper: netbox.BaseDataWrapper[netbox.DcimDeviceType]{ + Field: &netbox.DcimDeviceType{ + ID: 1, + Model: "undefined", + Slug: "undefined", + Manufacturer: &netbox.DcimManufacturer{ + ID: 1, + Name: "undefined", + Slug: "undefined", + }, }, }, }, @@ -5046,70 +5240,24 @@ func TestPrepare(t *testing.T) { queryParams: map[string]string{"q": "undefined"}, objectChangeID: 0, object: &netbox.DcimDeviceRoleDataWrapper{ - DeviceRole: &netbox.DcimDeviceRole{ - ID: 1, - Name: "undefined", - Slug: "undefined", - Color: strPtr("000000"), - }, - }, - }, - { - objectType: "dcim.device", - objectID: 0, - queryParams: map[string]string{"q": "undefined", "site__name": "undefined"}, - objectChangeID: 0, - object: &netbox.DcimDeviceDataWrapper{ - Device: &netbox.DcimDevice{ - ID: 1, - Name: "undefined", - Site: &netbox.DcimSite{ - ID: 1, - Name: "undefined", - Slug: "undefined", - Status: (*netbox.DcimSiteStatus)(strPtr(string(netbox.DcimSiteStatusActive))), - }, - DeviceType: &netbox.DcimDeviceType{ - ID: 1, - Model: "undefined", - Slug: "undefined", - Manufacturer: &netbox.DcimManufacturer{ - ID: 1, - Name: "undefined", - Slug: "undefined", - }, - }, - Role: &netbox.DcimDeviceRole{ + BaseDataWrapper: netbox.BaseDataWrapper[netbox.DcimDeviceRole]{ + Field: &netbox.DcimDeviceRole{ ID: 1, Name: "undefined", Slug: "undefined", Color: strPtr("000000"), }, - Platform: &netbox.DcimPlatform{ - ID: 1, - Name: "undefined", - Slug: "undefined", - Manufacturer: &netbox.DcimManufacturer{ - ID: 1, - Name: "undefined", - Slug: "undefined", - }, - }, - Status: (*netbox.DcimDeviceStatus)(strPtr(string(netbox.DcimDeviceStatusActive))), }, }, }, { - objectType: "dcim.interface", + objectType: "dcim.device", objectID: 0, - queryParams: map[string]string{"q": "GigabitEthernet0/0/0", "device__name": "undefined", "device__site__name": "undefined"}, + queryParams: map[string]string{"q": "undefined", "site__name": "undefined"}, objectChangeID: 0, - object: &netbox.DcimInterfaceDataWrapper{ - Interface: &netbox.DcimInterface{ - ID: 1, - Name: "GigabitEthernet0/0/0", - Type: strPtr(netbox.DefaultInterfaceType), - Device: &netbox.DcimDevice{ + object: &netbox.DcimDeviceDataWrapper{ + BaseDataWrapper: netbox.BaseDataWrapper[netbox.DcimDevice]{ + Field: &netbox.DcimDevice{ ID: 1, Name: "undefined", Site: &netbox.DcimSite{ @@ -5150,56 +5298,110 @@ func TestPrepare(t *testing.T) { }, }, { - objectType: "ipam.ipaddress", + objectType: "dcim.interface", objectID: 0, - queryParams: map[string]string{"q": "192.168.0.1/22", "interface__name": "GigabitEthernet0/0/0", "interface__device__name": "undefined", "interface__device__site__name": "undefined"}, + queryParams: map[string]string{"q": "GigabitEthernet0/0/0", "device__name": "undefined", "device__site__name": "undefined"}, objectChangeID: 0, - object: &netbox.IpamIPAddressDataWrapper{ - IPAddress: &netbox.IpamIPAddress{ - ID: 1, - Address: "192.168.0.1/22", - Status: &netbox.DefaultIPAddressStatus, - AssignedObject: &netbox.IPAddressInterface{ - Interface: &netbox.DcimInterface{ + object: &netbox.DcimInterfaceDataWrapper{ + BaseDataWrapper: netbox.BaseDataWrapper[netbox.DcimInterface]{ + Field: &netbox.DcimInterface{ + ID: 1, + Name: "GigabitEthernet0/0/0", + Type: strPtr(netbox.DefaultInterfaceType), + Device: &netbox.DcimDevice{ ID: 1, - Name: "GigabitEthernet0/0/0", - Type: strPtr(netbox.DefaultInterfaceType), - Device: &netbox.DcimDevice{ + Name: "undefined", + Site: &netbox.DcimSite{ + ID: 1, + Name: "undefined", + Slug: "undefined", + Status: (*netbox.DcimSiteStatus)(strPtr(string(netbox.DcimSiteStatusActive))), + }, + DeviceType: &netbox.DcimDeviceType{ + ID: 1, + Model: "undefined", + Slug: "undefined", + Manufacturer: &netbox.DcimManufacturer{ + ID: 1, + Name: "undefined", + Slug: "undefined", + }, + }, + Role: &netbox.DcimDeviceRole{ + ID: 1, + Name: "undefined", + Slug: "undefined", + Color: strPtr("000000"), + }, + Platform: &netbox.DcimPlatform{ ID: 1, Name: "undefined", - Site: &netbox.DcimSite{ - ID: 1, - Name: "undefined", - Slug: "undefined", - Status: (*netbox.DcimSiteStatus)(strPtr(string(netbox.DcimSiteStatusActive))), - }, - DeviceType: &netbox.DcimDeviceType{ - ID: 1, - Model: "undefined", - Slug: "undefined", - Manufacturer: &netbox.DcimManufacturer{ - ID: 1, - Name: "undefined", - Slug: "undefined", - }, - }, - Role: &netbox.DcimDeviceRole{ - ID: 1, - Name: "undefined", - Slug: "undefined", - Color: strPtr("000000"), - }, - Platform: &netbox.DcimPlatform{ + Slug: "undefined", + Manufacturer: &netbox.DcimManufacturer{ ID: 1, Name: "undefined", Slug: "undefined", - Manufacturer: &netbox.DcimManufacturer{ + }, + }, + Status: (*netbox.DcimDeviceStatus)(strPtr(string(netbox.DcimDeviceStatusActive))), + }, + }, + }, + }, + }, + { + objectType: "ipam.ipaddress", + objectID: 0, + queryParams: map[string]string{"q": "192.168.0.1/22", "interface__name": "GigabitEthernet0/0/0", "interface__device__name": "undefined", "interface__device__site__name": "undefined"}, + objectChangeID: 0, + object: &netbox.IpamIPAddressDataWrapper{ + BaseDataWrapper: netbox.BaseDataWrapper[netbox.IpamIPAddress]{ + Field: &netbox.IpamIPAddress{ + ID: 1, + Address: "192.168.0.1/22", + Status: &netbox.DefaultIPAddressStatus, + AssignedObject: &netbox.IPAddressInterface{ + Interface: &netbox.DcimInterface{ + ID: 1, + Name: "GigabitEthernet0/0/0", + Type: strPtr(netbox.DefaultInterfaceType), + Device: &netbox.DcimDevice{ + ID: 1, + Name: "undefined", + Site: &netbox.DcimSite{ + ID: 1, + Name: "undefined", + Slug: "undefined", + Status: (*netbox.DcimSiteStatus)(strPtr(string(netbox.DcimSiteStatusActive))), + }, + DeviceType: &netbox.DcimDeviceType{ + ID: 1, + Model: "undefined", + Slug: "undefined", + Manufacturer: &netbox.DcimManufacturer{ + ID: 1, + Name: "undefined", + Slug: "undefined", + }, + }, + Role: &netbox.DcimDeviceRole{ + ID: 1, + Name: "undefined", + Slug: "undefined", + Color: strPtr("000000"), + }, + Platform: &netbox.DcimPlatform{ ID: 1, Name: "undefined", Slug: "undefined", + Manufacturer: &netbox.DcimManufacturer{ + ID: 1, + Name: "undefined", + Slug: "undefined", + }, }, + Status: (*netbox.DcimDeviceStatus)(strPtr(string(netbox.DcimDeviceStatusActive))), }, - Status: (*netbox.DcimDeviceStatus)(strPtr(string(netbox.DcimDeviceStatusActive))), }, }, }, @@ -5232,10 +5434,12 @@ func TestPrepare(t *testing.T) { queryParams: map[string]string{"q": "192.168.0.1/22"}, objectChangeID: 0, object: &netbox.IpamIPAddressDataWrapper{ - IPAddress: &netbox.IpamIPAddress{ - ID: 1, - Address: "192.168.0.1/22", - Status: &netbox.DefaultIPAddressStatus, + BaseDataWrapper: netbox.BaseDataWrapper[netbox.IpamIPAddress]{ + Field: &netbox.IpamIPAddress{ + ID: 1, + Address: "192.168.0.1/22", + Status: &netbox.DefaultIPAddressStatus, + }, }, }, }, @@ -5271,11 +5475,13 @@ func TestPrepare(t *testing.T) { queryParams: map[string]string{"q": "undefined"}, objectChangeID: 0, object: &netbox.DcimSiteDataWrapper{ - Site: &netbox.DcimSite{ - ID: 1, - Name: "undefined", - Slug: "undefined", - Status: (*netbox.DcimSiteStatus)(strPtr(string(netbox.DcimSiteStatusActive))), + BaseDataWrapper: netbox.BaseDataWrapper[netbox.DcimSite]{ + Field: &netbox.DcimSite{ + ID: 1, + Name: "undefined", + Slug: "undefined", + Status: (*netbox.DcimSiteStatus)(strPtr(string(netbox.DcimSiteStatusActive))), + }, }, }, }, @@ -5285,10 +5491,12 @@ func TestPrepare(t *testing.T) { queryParams: map[string]string{"q": "undefined"}, objectChangeID: 0, object: &netbox.DcimManufacturerDataWrapper{ - Manufacturer: &netbox.DcimManufacturer{ - ID: 1, - Name: "undefined", - Slug: "undefined", + BaseDataWrapper: netbox.BaseDataWrapper[netbox.DcimManufacturer]{ + Field: &netbox.DcimManufacturer{ + ID: 1, + Name: "undefined", + Slug: "undefined", + }, }, }, }, @@ -5298,14 +5506,16 @@ func TestPrepare(t *testing.T) { queryParams: map[string]string{"q": "undefined"}, objectChangeID: 0, object: &netbox.DcimPlatformDataWrapper{ - Platform: &netbox.DcimPlatform{ - ID: 1, - Name: "undefined", - Slug: "undefined", - Manufacturer: &netbox.DcimManufacturer{ + BaseDataWrapper: netbox.BaseDataWrapper[netbox.DcimPlatform]{ + Field: &netbox.DcimPlatform{ ID: 1, Name: "undefined", Slug: "undefined", + Manufacturer: &netbox.DcimManufacturer{ + ID: 1, + Name: "undefined", + Slug: "undefined", + }, }, }, }, @@ -5316,14 +5526,16 @@ func TestPrepare(t *testing.T) { queryParams: map[string]string{"q": "undefined", "manufacturer__name": "undefined"}, objectChangeID: 0, object: &netbox.DcimDeviceTypeDataWrapper{ - DeviceType: &netbox.DcimDeviceType{ - ID: 1, - Model: "undefined", - Slug: "undefined", - Manufacturer: &netbox.DcimManufacturer{ - ID: 1, - Name: "undefined", - Slug: "undefined", + BaseDataWrapper: netbox.BaseDataWrapper[netbox.DcimDeviceType]{ + Field: &netbox.DcimDeviceType{ + ID: 1, + Model: "undefined", + Slug: "undefined", + Manufacturer: &netbox.DcimManufacturer{ + ID: 1, + Name: "undefined", + Slug: "undefined", + }, }, }, }, @@ -5334,70 +5546,24 @@ func TestPrepare(t *testing.T) { queryParams: map[string]string{"q": "undefined"}, objectChangeID: 0, object: &netbox.DcimDeviceRoleDataWrapper{ - DeviceRole: &netbox.DcimDeviceRole{ - ID: 1, - Name: "undefined", - Slug: "undefined", - Color: strPtr("000000"), - }, - }, - }, - { - objectType: "dcim.device", - objectID: 0, - queryParams: map[string]string{"q": "undefined", "site__name": "undefined"}, - objectChangeID: 0, - object: &netbox.DcimDeviceDataWrapper{ - Device: &netbox.DcimDevice{ - ID: 1, - Name: "undefined", - Site: &netbox.DcimSite{ - ID: 1, - Name: "undefined", - Slug: "undefined", - Status: (*netbox.DcimSiteStatus)(strPtr(string(netbox.DcimSiteStatusActive))), - }, - DeviceType: &netbox.DcimDeviceType{ - ID: 1, - Model: "undefined", - Slug: "undefined", - Manufacturer: &netbox.DcimManufacturer{ - ID: 1, - Name: "undefined", - Slug: "undefined", - }, - }, - Role: &netbox.DcimDeviceRole{ + BaseDataWrapper: netbox.BaseDataWrapper[netbox.DcimDeviceRole]{ + Field: &netbox.DcimDeviceRole{ ID: 1, Name: "undefined", Slug: "undefined", Color: strPtr("000000"), }, - Platform: &netbox.DcimPlatform{ - ID: 1, - Name: "undefined", - Slug: "undefined", - Manufacturer: &netbox.DcimManufacturer{ - ID: 1, - Name: "undefined", - Slug: "undefined", - }, - }, - Status: (*netbox.DcimDeviceStatus)(strPtr(string(netbox.DcimDeviceStatusActive))), }, }, }, { - objectType: "dcim.interface", + objectType: "dcim.device", objectID: 0, - queryParams: map[string]string{"q": "GigabitEthernet0/0/0", "device__name": "undefined", "device__site__name": "undefined"}, - objectChangeID: 0, - object: &netbox.DcimInterfaceDataWrapper{ - Interface: &netbox.DcimInterface{ - ID: 1, - Name: "GigabitEthernet0/0/0", - Type: strPtr(netbox.DefaultInterfaceType), - Device: &netbox.DcimDevice{ + queryParams: map[string]string{"q": "undefined", "site__name": "undefined"}, + objectChangeID: 0, + object: &netbox.DcimDeviceDataWrapper{ + BaseDataWrapper: netbox.BaseDataWrapper[netbox.DcimDevice]{ + Field: &netbox.DcimDevice{ ID: 1, Name: "undefined", Site: &netbox.DcimSite{ @@ -5438,56 +5604,110 @@ func TestPrepare(t *testing.T) { }, }, { - objectType: "ipam.ipaddress", + objectType: "dcim.interface", objectID: 0, - queryParams: map[string]string{"q": "192.168.0.1/22", "interface__name": "GigabitEthernet0/0/0", "interface__device__name": "undefined", "interface__device__site__name": "undefined"}, + queryParams: map[string]string{"q": "GigabitEthernet0/0/0", "device__name": "undefined", "device__site__name": "undefined"}, objectChangeID: 0, - object: &netbox.IpamIPAddressDataWrapper{ - IPAddress: &netbox.IpamIPAddress{ - ID: 1, - Address: "192.168.0.1/22", - Status: &netbox.DefaultIPAddressStatus, - AssignedObject: &netbox.IPAddressInterface{ - Interface: &netbox.DcimInterface{ + object: &netbox.DcimInterfaceDataWrapper{ + BaseDataWrapper: netbox.BaseDataWrapper[netbox.DcimInterface]{ + Field: &netbox.DcimInterface{ + ID: 1, + Name: "GigabitEthernet0/0/0", + Type: strPtr(netbox.DefaultInterfaceType), + Device: &netbox.DcimDevice{ ID: 1, - Name: "GigabitEthernet0/0/0", - Type: strPtr(netbox.DefaultInterfaceType), - Device: &netbox.DcimDevice{ + Name: "undefined", + Site: &netbox.DcimSite{ + ID: 1, + Name: "undefined", + Slug: "undefined", + Status: (*netbox.DcimSiteStatus)(strPtr(string(netbox.DcimSiteStatusActive))), + }, + DeviceType: &netbox.DcimDeviceType{ + ID: 1, + Model: "undefined", + Slug: "undefined", + Manufacturer: &netbox.DcimManufacturer{ + ID: 1, + Name: "undefined", + Slug: "undefined", + }, + }, + Role: &netbox.DcimDeviceRole{ + ID: 1, + Name: "undefined", + Slug: "undefined", + Color: strPtr("000000"), + }, + Platform: &netbox.DcimPlatform{ ID: 1, Name: "undefined", - Site: &netbox.DcimSite{ - ID: 1, - Name: "undefined", - Slug: "undefined", - Status: (*netbox.DcimSiteStatus)(strPtr(string(netbox.DcimSiteStatusActive))), - }, - DeviceType: &netbox.DcimDeviceType{ - ID: 1, - Model: "undefined", - Slug: "undefined", - Manufacturer: &netbox.DcimManufacturer{ - ID: 1, - Name: "undefined", - Slug: "undefined", - }, - }, - Role: &netbox.DcimDeviceRole{ - ID: 1, - Name: "undefined", - Slug: "undefined", - Color: strPtr("000000"), - }, - Platform: &netbox.DcimPlatform{ + Slug: "undefined", + Manufacturer: &netbox.DcimManufacturer{ ID: 1, Name: "undefined", Slug: "undefined", - Manufacturer: &netbox.DcimManufacturer{ + }, + }, + Status: (*netbox.DcimDeviceStatus)(strPtr(string(netbox.DcimDeviceStatusActive))), + }, + }, + }, + }, + }, + { + objectType: "ipam.ipaddress", + objectID: 0, + queryParams: map[string]string{"q": "192.168.0.1/22", "interface__name": "GigabitEthernet0/0/0", "interface__device__name": "undefined", "interface__device__site__name": "undefined"}, + objectChangeID: 0, + object: &netbox.IpamIPAddressDataWrapper{ + BaseDataWrapper: netbox.BaseDataWrapper[netbox.IpamIPAddress]{ + Field: &netbox.IpamIPAddress{ + ID: 1, + Address: "192.168.0.1/22", + Status: &netbox.DefaultIPAddressStatus, + AssignedObject: &netbox.IPAddressInterface{ + Interface: &netbox.DcimInterface{ + ID: 1, + Name: "GigabitEthernet0/0/0", + Type: strPtr(netbox.DefaultInterfaceType), + Device: &netbox.DcimDevice{ + ID: 1, + Name: "undefined", + Site: &netbox.DcimSite{ + ID: 1, + Name: "undefined", + Slug: "undefined", + Status: (*netbox.DcimSiteStatus)(strPtr(string(netbox.DcimSiteStatusActive))), + }, + DeviceType: &netbox.DcimDeviceType{ + ID: 1, + Model: "undefined", + Slug: "undefined", + Manufacturer: &netbox.DcimManufacturer{ + ID: 1, + Name: "undefined", + Slug: "undefined", + }, + }, + Role: &netbox.DcimDeviceRole{ + ID: 1, + Name: "undefined", + Slug: "undefined", + Color: strPtr("000000"), + }, + Platform: &netbox.DcimPlatform{ ID: 1, Name: "undefined", Slug: "undefined", + Manufacturer: &netbox.DcimManufacturer{ + ID: 1, + Name: "undefined", + Slug: "undefined", + }, }, + Status: (*netbox.DcimDeviceStatus)(strPtr(string(netbox.DcimDeviceStatusActive))), }, - Status: (*netbox.DcimDeviceStatus)(strPtr(string(netbox.DcimDeviceStatusActive))), }, }, }, @@ -5559,7 +5779,7 @@ func TestPrepare(t *testing.T) { queryParams: map[string]string{"q": "undefined"}, objectChangeID: 0, object: &netbox.DcimSiteDataWrapper{ - Site: nil, + BaseDataWrapper: netbox.BaseDataWrapper[netbox.DcimSite]{Field: nil}, }, }, { @@ -5568,7 +5788,7 @@ func TestPrepare(t *testing.T) { queryParams: map[string]string{"q": "192.168.0.0/32"}, objectChangeID: 0, object: &netbox.IpamPrefixDataWrapper{ - Prefix: nil, + BaseDataWrapper: netbox.BaseDataWrapper[netbox.IpamPrefix]{Field: nil}, }, }, }, @@ -5629,11 +5849,13 @@ func TestPrepare(t *testing.T) { queryParams: map[string]string{"q": "undefined"}, objectChangeID: 0, object: &netbox.DcimSiteDataWrapper{ - Site: &netbox.DcimSite{ - ID: 1, - Name: "undefined", - Slug: "undefined", - Status: (*netbox.DcimSiteStatus)(strPtr(string(netbox.DcimSiteStatusActive))), + BaseDataWrapper: netbox.BaseDataWrapper[netbox.DcimSite]{ + Field: &netbox.DcimSite{ + ID: 1, + Name: "undefined", + Slug: "undefined", + Status: (*netbox.DcimSiteStatus)(strPtr(string(netbox.DcimSiteStatusActive))), + }, }, }, }, @@ -5643,16 +5865,18 @@ func TestPrepare(t *testing.T) { queryParams: map[string]string{"q": "192.168.0.0/32"}, objectChangeID: 0, object: &netbox.IpamPrefixDataWrapper{ - Prefix: &netbox.IpamPrefix{ - ID: 1, - Prefix: "192.168.0.0/32", - Site: &netbox.DcimSite{ + BaseDataWrapper: netbox.BaseDataWrapper[netbox.IpamPrefix]{ + Field: &netbox.IpamPrefix{ ID: 1, - Name: "undefined", - Slug: "undefined", - Status: (*netbox.DcimSiteStatus)(strPtr(string(netbox.DcimSiteStatusActive))), + Prefix: "192.168.0.0/32", + Site: &netbox.DcimSite{ + ID: 1, + Name: "undefined", + Slug: "undefined", + Status: (*netbox.DcimSiteStatus)(strPtr(string(netbox.DcimSiteStatusActive))), + }, + Status: &netbox.DefaultPrefixStatus, }, - Status: &netbox.DefaultPrefixStatus, }, }, }, @@ -5683,11 +5907,13 @@ func TestPrepare(t *testing.T) { queryParams: map[string]string{"q": "undefined"}, objectChangeID: 0, object: &netbox.DcimSiteDataWrapper{ - Site: &netbox.DcimSite{ - ID: 1, - Name: "undefined", - Slug: "undefined", - Status: (*netbox.DcimSiteStatus)(strPtr(string(netbox.DcimSiteStatusActive))), + BaseDataWrapper: netbox.BaseDataWrapper[netbox.DcimSite]{ + Field: &netbox.DcimSite{ + ID: 1, + Name: "undefined", + Slug: "undefined", + Status: (*netbox.DcimSiteStatus)(strPtr(string(netbox.DcimSiteStatusActive))), + }, }, }, }, @@ -5697,16 +5923,18 @@ func TestPrepare(t *testing.T) { queryParams: map[string]string{"q": "192.168.0.0/32"}, objectChangeID: 0, object: &netbox.IpamPrefixDataWrapper{ - Prefix: &netbox.IpamPrefix{ - ID: 1, - Prefix: "192.168.0.0/32", - Site: &netbox.DcimSite{ + BaseDataWrapper: netbox.BaseDataWrapper[netbox.IpamPrefix]{ + Field: &netbox.IpamPrefix{ ID: 1, - Name: "undefined", - Slug: "undefined", - Status: (*netbox.DcimSiteStatus)(strPtr(string(netbox.DcimSiteStatusActive))), + Prefix: "192.168.0.0/32", + Site: &netbox.DcimSite{ + ID: 1, + Name: "undefined", + Slug: "undefined", + Status: (*netbox.DcimSiteStatus)(strPtr(string(netbox.DcimSiteStatusActive))), + }, + Status: &netbox.DefaultPrefixStatus, }, - Status: &netbox.DefaultPrefixStatus, }, }, }, @@ -5741,11 +5969,13 @@ func TestPrepare(t *testing.T) { queryParams: map[string]string{"q": "undefined"}, objectChangeID: 0, object: &netbox.DcimSiteDataWrapper{ - Site: &netbox.DcimSite{ - ID: 1, - Name: "undefined", - Slug: "undefined", - Status: (*netbox.DcimSiteStatus)(strPtr(string(netbox.DcimSiteStatusActive))), + BaseDataWrapper: netbox.BaseDataWrapper[netbox.DcimSite]{ + Field: &netbox.DcimSite{ + ID: 1, + Name: "undefined", + Slug: "undefined", + Status: (*netbox.DcimSiteStatus)(strPtr(string(netbox.DcimSiteStatusActive))), + }, }, }, }, @@ -5764,16 +5994,18 @@ func TestPrepare(t *testing.T) { queryParams: map[string]string{"q": "192.168.0.0/32"}, objectChangeID: 0, object: &netbox.IpamPrefixDataWrapper{ - Prefix: &netbox.IpamPrefix{ - ID: 1, - Prefix: "192.168.0.0/32", - Site: &netbox.DcimSite{ + BaseDataWrapper: netbox.BaseDataWrapper[netbox.IpamPrefix]{ + Field: &netbox.IpamPrefix{ ID: 1, - Name: "undefined", - Slug: "undefined", - Status: (*netbox.DcimSiteStatus)(strPtr(string(netbox.DcimSiteStatusActive))), + Prefix: "192.168.0.0/32", + Site: &netbox.DcimSite{ + ID: 1, + Name: "undefined", + Slug: "undefined", + Status: (*netbox.DcimSiteStatus)(strPtr(string(netbox.DcimSiteStatusActive))), + }, + Status: &netbox.DefaultPrefixStatus, }, - Status: &netbox.DefaultPrefixStatus, }, }, }, @@ -5855,11 +6087,13 @@ func TestPrepare(t *testing.T) { queryParams: map[string]string{"q": "Site ABC"}, objectChangeID: 0, object: &netbox.DcimSiteDataWrapper{ - Site: &netbox.DcimSite{ - ID: 1, - Name: "Site ABC", - Slug: "site-abc", - Status: (*netbox.DcimSiteStatus)(strPtr(string(netbox.DcimSiteStatusActive))), + BaseDataWrapper: netbox.BaseDataWrapper[netbox.DcimSite]{ + Field: &netbox.DcimSite{ + ID: 1, + Name: "Site ABC", + Slug: "site-abc", + Status: (*netbox.DcimSiteStatus)(strPtr(string(netbox.DcimSiteStatusActive))), + }, }, }, }, @@ -5869,10 +6103,12 @@ func TestPrepare(t *testing.T) { queryParams: map[string]string{"q": "Manufacturer A"}, objectChangeID: 0, object: &netbox.DcimManufacturerDataWrapper{ - Manufacturer: &netbox.DcimManufacturer{ - ID: 1, - Name: "Manufacturer A", - Slug: "manufacturer-a", + BaseDataWrapper: netbox.BaseDataWrapper[netbox.DcimManufacturer]{ + Field: &netbox.DcimManufacturer{ + ID: 1, + Name: "Manufacturer A", + Slug: "manufacturer-a", + }, }, }, }, @@ -5882,14 +6118,16 @@ func TestPrepare(t *testing.T) { queryParams: map[string]string{"q": "Platform A", "manufacturer__name": "Manufacturer A"}, objectChangeID: 0, object: &netbox.DcimPlatformDataWrapper{ - Platform: &netbox.DcimPlatform{ - ID: 1, - Name: "Platform A", - Slug: "platform-a", - Manufacturer: &netbox.DcimManufacturer{ + BaseDataWrapper: netbox.BaseDataWrapper[netbox.DcimPlatform]{ + Field: &netbox.DcimPlatform{ ID: 1, - Name: "Manufacturer A", - Slug: "manufacturer-a", + Name: "Platform A", + Slug: "platform-a", + Manufacturer: &netbox.DcimManufacturer{ + ID: 1, + Name: "Manufacturer A", + Slug: "manufacturer-a", + }, }, }, }, @@ -5900,14 +6138,16 @@ func TestPrepare(t *testing.T) { queryParams: map[string]string{"q": "Device Type A", "manufacturer__name": "Manufacturer A"}, objectChangeID: 0, object: &netbox.DcimDeviceTypeDataWrapper{ - DeviceType: &netbox.DcimDeviceType{ - ID: 1, - Model: "Device Type A", - Slug: "device-type-a", - Manufacturer: &netbox.DcimManufacturer{ - ID: 1, - Name: "Manufacturer A", - Slug: "manufacturer-a", + BaseDataWrapper: netbox.BaseDataWrapper[netbox.DcimDeviceType]{ + Field: &netbox.DcimDeviceType{ + ID: 1, + Model: "Device Type A", + Slug: "device-type-a", + Manufacturer: &netbox.DcimManufacturer{ + ID: 1, + Name: "Manufacturer A", + Slug: "manufacturer-a", + }, }, }, }, @@ -5918,11 +6158,13 @@ func TestPrepare(t *testing.T) { queryParams: map[string]string{"q": "Role ABC"}, objectChangeID: 0, object: &netbox.DcimDeviceRoleDataWrapper{ - DeviceRole: &netbox.DcimDeviceRole{ - ID: 1, - Name: "Role ABC", - Slug: "role-abc", - Color: strPtr("000000"), + BaseDataWrapper: netbox.BaseDataWrapper[netbox.DcimDeviceRole]{ + Field: &netbox.DcimDeviceRole{ + ID: 1, + Name: "Role ABC", + Slug: "role-abc", + Color: strPtr("000000"), + }, }, }, }, @@ -5932,43 +6174,45 @@ func TestPrepare(t *testing.T) { queryParams: map[string]string{"q": "Device A", "site__name": "Site ABC"}, objectChangeID: 0, object: &netbox.DcimDeviceDataWrapper{ - Device: &netbox.DcimDevice{ - ID: 1, - Name: "Device A", - Site: &netbox.DcimSite{ - ID: 1, - Name: "Site ABC", - Slug: "site-abc", - Status: (*netbox.DcimSiteStatus)(strPtr(string(netbox.DcimSiteStatusActive))), - }, - DeviceType: &netbox.DcimDeviceType{ - ID: 1, - Model: "Device Type A", - Slug: "device-type-a", - Manufacturer: &netbox.DcimManufacturer{ - ID: 1, - Name: "Manufacturer A", - Slug: "manufacturer-a", - }, - }, - Role: &netbox.DcimDeviceRole{ - ID: 1, - Name: "Role ABC", - Slug: "role-abc", - Color: strPtr("000000"), - }, - Platform: &netbox.DcimPlatform{ + BaseDataWrapper: netbox.BaseDataWrapper[netbox.DcimDevice]{ + Field: &netbox.DcimDevice{ ID: 1, - Name: "Platform A", - Slug: "platform-a", - Manufacturer: &netbox.DcimManufacturer{ + Name: "Device A", + Site: &netbox.DcimSite{ + ID: 1, + Name: "Site ABC", + Slug: "site-abc", + Status: (*netbox.DcimSiteStatus)(strPtr(string(netbox.DcimSiteStatusActive))), + }, + DeviceType: &netbox.DcimDeviceType{ + ID: 1, + Model: "Device Type A", + Slug: "device-type-a", + Manufacturer: &netbox.DcimManufacturer{ + ID: 1, + Name: "Manufacturer A", + Slug: "manufacturer-a", + }, + }, + Role: &netbox.DcimDeviceRole{ + ID: 1, + Name: "Role ABC", + Slug: "role-abc", + Color: strPtr("000000"), + }, + Platform: &netbox.DcimPlatform{ ID: 1, - Name: "Manufacturer A", - Slug: "manufacturer-a", + Name: "Platform A", + Slug: "platform-a", + Manufacturer: &netbox.DcimManufacturer{ + ID: 1, + Name: "Manufacturer A", + Slug: "manufacturer-a", + }, }, + Serial: strPtr("123456"), + Status: (*netbox.DcimDeviceStatus)(strPtr(string(netbox.DcimDeviceStatusActive))), }, - Serial: strPtr("123456"), - Status: (*netbox.DcimDeviceStatus)(strPtr(string(netbox.DcimDeviceStatusActive))), }, }, }, @@ -6005,7 +6249,7 @@ func TestPrepare(t *testing.T) { queryParams: map[string]string{"q": "Ethernet2", "device__name": "CEOS1", "device__site__name": "default_namespace"}, objectChangeID: 0, object: &netbox.DcimInterfaceDataWrapper{ - Interface: nil, + BaseDataWrapper: netbox.BaseDataWrapper[netbox.DcimInterface]{Field: nil}, }, }, { @@ -6014,7 +6258,7 @@ func TestPrepare(t *testing.T) { queryParams: map[string]string{"q": "undefined"}, objectChangeID: 0, object: &netbox.DcimManufacturerDataWrapper{ - Manufacturer: nil, + BaseDataWrapper: netbox.BaseDataWrapper[netbox.DcimManufacturer]{Field: nil}, }, }, { @@ -6023,7 +6267,7 @@ func TestPrepare(t *testing.T) { queryParams: map[string]string{"q": "undefined", "manufacturer__name": "undefined"}, objectChangeID: 0, object: &netbox.DcimDeviceTypeDataWrapper{ - DeviceType: nil, + BaseDataWrapper: netbox.BaseDataWrapper[netbox.DcimDeviceType]{Field: nil}, }, }, { @@ -6032,11 +6276,13 @@ func TestPrepare(t *testing.T) { queryParams: map[string]string{"q": "undefined"}, objectChangeID: 0, object: &netbox.DcimDeviceRoleDataWrapper{ - DeviceRole: &netbox.DcimDeviceRole{ - ID: 89, - Name: "undefined", - Slug: "undefined", - Color: strPtr("000000"), + BaseDataWrapper: netbox.BaseDataWrapper[netbox.DcimDeviceRole]{ + Field: &netbox.DcimDeviceRole{ + ID: 89, + Name: "undefined", + Slug: "undefined", + Color: strPtr("000000"), + }, }, }, }, @@ -6046,11 +6292,13 @@ func TestPrepare(t *testing.T) { queryParams: map[string]string{"q": "default_namespace"}, objectChangeID: 0, object: &netbox.DcimSiteDataWrapper{ - Site: &netbox.DcimSite{ - ID: 21, - Name: "default_namespace", - Slug: "default_namespace", - Status: (*netbox.DcimSiteStatus)(strPtr(string(netbox.DcimSiteStatusActive))), + BaseDataWrapper: netbox.BaseDataWrapper[netbox.DcimSite]{ + Field: &netbox.DcimSite{ + ID: 21, + Name: "default_namespace", + Slug: "default_namespace", + Status: (*netbox.DcimSiteStatus)(strPtr(string(netbox.DcimSiteStatusActive))), + }, }, }, }, @@ -6060,42 +6308,44 @@ func TestPrepare(t *testing.T) { queryParams: map[string]string{"q": "CEOS1", "site__name": "default_namespace"}, objectChangeID: 0, object: &netbox.DcimDeviceDataWrapper{ - Device: &netbox.DcimDevice{ - ID: 111, - Name: "CEOS1", - Site: &netbox.DcimSite{ - ID: 21, - Name: "default_namespace", - Slug: "default_namespace", - Status: (*netbox.DcimSiteStatus)(strPtr(string(netbox.DcimSiteStatusActive))), - }, - DeviceType: &netbox.DcimDeviceType{ - ID: 10, - Model: "cEOSLab", - Slug: "ceoslab", - Manufacturer: &netbox.DcimManufacturer{ - ID: 15, - Name: "Arista", - Slug: "arista", + BaseDataWrapper: netbox.BaseDataWrapper[netbox.DcimDevice]{ + Field: &netbox.DcimDevice{ + ID: 111, + Name: "CEOS1", + Site: &netbox.DcimSite{ + ID: 21, + Name: "default_namespace", + Slug: "default_namespace", + Status: (*netbox.DcimSiteStatus)(strPtr(string(netbox.DcimSiteStatusActive))), }, - }, - Role: &netbox.DcimDeviceRole{ - ID: 89, - Name: "undefined", - Slug: "undefined", - Color: strPtr("000000"), - }, - Platform: &netbox.DcimPlatform{ - ID: 68, - Name: "eos:4.29.0.2F-29226602.42902F (engineering build)", - Slug: "eos-4-29-0-2f-29226602-42902f-engineering-build", - Manufacturer: &netbox.DcimManufacturer{ - ID: 15, - Name: "Arista", - Slug: "arista", + DeviceType: &netbox.DcimDeviceType{ + ID: 10, + Model: "cEOSLab", + Slug: "ceoslab", + Manufacturer: &netbox.DcimManufacturer{ + ID: 15, + Name: "Arista", + Slug: "arista", + }, + }, + Role: &netbox.DcimDeviceRole{ + ID: 89, + Name: "undefined", + Slug: "undefined", + Color: strPtr("000000"), + }, + Platform: &netbox.DcimPlatform{ + ID: 68, + Name: "eos:4.29.0.2F-29226602.42902F (engineering build)", + Slug: "eos-4-29-0-2f-29226602-42902f-engineering-build", + Manufacturer: &netbox.DcimManufacturer{ + ID: 15, + Name: "Arista", + Slug: "arista", + }, }, + Status: (*netbox.DcimDeviceStatus)(strPtr(string(netbox.DcimDeviceStatusActive))), }, - Status: (*netbox.DcimDeviceStatus)(strPtr(string(netbox.DcimDeviceStatusActive))), }, }, }, diff --git a/diode-server/reconciler/ingestion_processor_internal_test.go b/diode-server/reconciler/ingestion_processor_internal_test.go index 9c524b2b..02305069 100644 --- a/diode-server/reconciler/ingestion_processor_internal_test.go +++ b/diode-server/reconciler/ingestion_processor_internal_test.go @@ -150,7 +150,7 @@ func TestReconcileEntity(t *testing.T) { ObjectID: 0, ObjectChangeID: 0, Object: &netbox.DcimSiteDataWrapper{ - Site: nil, + BaseDataWrapper: netbox.BaseDataWrapper[netbox.DcimSite]{Field: nil}, }}, nil) } // Setup mock for ApplyChangeSet @@ -315,7 +315,7 @@ func TestHandleStreamMessage(t *testing.T) { ObjectID: 0, ObjectChangeID: 0, Object: &netbox.DcimSiteDataWrapper{ - Site: nil, + BaseDataWrapper: netbox.BaseDataWrapper[netbox.DcimSite]{Field: nil}, }}, nil) } mockNbClient.On("ApplyChangeSet", ctx, mock.Anything).Return(&netboxdiodeplugin.ChangeSetResponse{}, nil)