Skip to content

Commit 82b682b

Browse files
Merge branch 'main' into update-cira-name
2 parents bf0414a + 75d7f81 commit 82b682b

File tree

8 files changed

+177
-219
lines changed

8 files changed

+177
-219
lines changed

go.mod

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ require (
99
github.com/coreos/go-oidc/v3 v3.17.0
1010
github.com/device-management-toolkit/go-wsman-messages/v2 v2.38.0
1111
github.com/gin-contrib/cors v1.7.7
12-
github.com/gin-contrib/pprof v1.5.3
12+
github.com/gin-contrib/pprof v1.5.4
1313
github.com/gin-gonic/gin v1.12.0
1414
github.com/go-fuego/fuego v0.19.0
1515
github.com/go-xmlfmt/xmlfmt v1.1.3

go.sum

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -59,8 +59,8 @@ github.com/getkin/kin-openapi v0.133.0 h1:pJdmNohVIJ97r4AUFtEXRXwESr8b0bD721u/Tz
5959
github.com/getkin/kin-openapi v0.133.0/go.mod h1:boAciF6cXk5FhPqe/NQeBTeenbjqU4LhWBf09ILVvWE=
6060
github.com/gin-contrib/cors v1.7.7 h1:Oh9joP463x7Mw72vhvJ61YQm8ODh9b04YR7vsOErD0Q=
6161
github.com/gin-contrib/cors v1.7.7/go.mod h1:K5tW0RkzJtWSiOdikXloy8VEZlgdVNpHNw8FpjUPNrE=
62-
github.com/gin-contrib/pprof v1.5.3 h1:Bj5SxJ3kQDVez/s/+f9+meedJIqLS+xlkIVDe/lcvgM=
63-
github.com/gin-contrib/pprof v1.5.3/go.mod h1:0+LQSZ4SLO0B6+2n6JBzaEygpTBxe/nI+YEYpfQQ6xY=
62+
github.com/gin-contrib/pprof v1.5.4 h1:daxf2UNZw5IEx6WBdcpnEzgeDfkp083KdjUAFuMEkK4=
63+
github.com/gin-contrib/pprof v1.5.4/go.mod h1:AUxwt9kgpJGWiytj6RorBqRMyFuOQk7dPNfM9nHEY9I=
6464
github.com/gin-contrib/sse v1.1.0 h1:n0w2GMuUpWDVp7qSpvze6fAu9iRxJY4Hmj6AmBOU05w=
6565
github.com/gin-contrib/sse v1.1.0/go.mod h1:hxRZ5gVpWMT7Z0B0gSNYqqsSCNIJMjzvm6fqCz9vjwM=
6666
github.com/gin-gonic/gin v1.12.0 h1:b3YAbrZtnf8N//yjKeU2+MQsh2mY5htkZidOM7O0wG8=

internal/mocks/wsman_mocks.go

Lines changed: 5 additions & 5 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

internal/usecase/devices/info.go

Lines changed: 19 additions & 59 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ import (
99

1010
"github.com/device-management-toolkit/console/internal/entity/dto/v1"
1111
dtov2 "github.com/device-management-toolkit/console/internal/entity/dto/v2"
12+
wsmanAPI "github.com/device-management-toolkit/console/internal/usecase/devices/wsman"
1213
)
1314

1415
func (uc *UseCase) GetVersion(c context.Context, guid string) (v1 dto.Version, v2 dtov2.Version, err error) {
@@ -82,29 +83,23 @@ func (uc *UseCase) GetHardwareInfo(c context.Context, guid string) (dto.Hardware
8283
return dto.HardwareInfo{}, err
8384
}
8485

85-
result := uc.hardwareInfoToDTO(hwInfo)
86-
87-
return result, nil
86+
return uc.hardwareInfoToDTO(hwInfo), nil
8887
}
8988

90-
func (uc *UseCase) hardwareInfoToDTO(hw interface{}) dto.HardwareInfo {
91-
result := dto.HardwareInfo{}
92-
93-
hwInfo, ok := hw.(map[string]interface{})
94-
if !ok {
95-
return result
89+
func (uc *UseCase) hardwareInfoToDTO(hw wsmanAPI.HWResults) dto.HardwareInfo {
90+
memoryItems := make([]any, len(hw.PhysicalMemoryResult.Body.PullResponse.MemoryItems))
91+
for i := range hw.PhysicalMemoryResult.Body.PullResponse.MemoryItems {
92+
memoryItems[i] = hw.PhysicalMemoryResult.Body.PullResponse.MemoryItems[i]
9693
}
9794

98-
result.CIMComputerSystemPackage = uc.parseCIMResponse(hwInfo["CIM_ComputerSystemPackage"])
99-
result.CIMSystemPackaging = uc.parseCIMResponse(hwInfo["CIM_SystemPackaging"])
100-
result.CIMChassis = uc.parseCIMResponse(hwInfo["CIM_Chassis"])
101-
result.CIMChip = uc.parseCIMResponse(hwInfo["CIM_Chip"])
102-
result.CIMCard = uc.parseCIMResponse(hwInfo["CIM_Card"])
103-
result.CIMBIOSElement = uc.parseCIMResponse(hwInfo["CIM_BIOSElement"])
104-
result.CIMProcessor = uc.parseCIMResponse(hwInfo["CIM_Processor"])
105-
result.CIMPhysicalMemory = uc.parseCIMResponse(hwInfo["CIM_PhysicalMemory"])
106-
107-
return result
95+
return dto.HardwareInfo{
96+
CIMChassis: dto.CIMResponse{Response: hw.ChassisResult.Body.PackageResponse},
97+
CIMChip: dto.CIMResponse{Responses: []any{hw.ChipResult.Body.PackageResponse}},
98+
CIMCard: dto.CIMResponse{Response: hw.CardResult.Body.PackageResponse},
99+
CIMBIOSElement: dto.CIMResponse{Response: hw.BiosResult.Body.GetResponse},
100+
CIMProcessor: dto.CIMResponse{Responses: []any{hw.ProcessorResult.Body.PackageResponse}},
101+
CIMPhysicalMemory: dto.CIMResponse{Responses: memoryItems},
102+
}
108103
}
109104

110105
func (uc *UseCase) GetDiskInfo(c context.Context, guid string) (dto.DiskInfo, error) {
@@ -127,49 +122,14 @@ func (uc *UseCase) GetDiskInfo(c context.Context, guid string) (dto.DiskInfo, er
127122
return dto.DiskInfo{}, err
128123
}
129124

130-
result := uc.discInfoToDTO(diskInfo)
131-
132-
return result, nil
125+
return uc.diskInfoToDTO(diskInfo), nil
133126
}
134127

135-
func (uc *UseCase) discInfoToDTO(discInfo interface{}) dto.DiskInfo {
136-
result := dto.DiskInfo{}
137-
138-
info, ok := discInfo.(map[string]interface{})
139-
if !ok {
140-
return result
128+
func (uc *UseCase) diskInfoToDTO(diskInfo wsmanAPI.DiskResults) dto.DiskInfo {
129+
return dto.DiskInfo{
130+
CIMMediaAccessDevice: dto.CIMResponse{Responses: []any{diskInfo.MediaAccessPullResult.Body.PullResponse.MediaAccessDevices}},
131+
CIMPhysicalPackage: dto.CIMResponse{Responses: []any{diskInfo.PPPullResult.Body.PullResponse.PhysicalPackage}},
141132
}
142-
143-
result.CIMMediaAccessDevice = uc.parseCIMResponse(info["CIM_MediaAccessDevice"])
144-
result.CIMPhysicalPackage = uc.parseCIMResponse(info["CIM_PhysicalPackage"])
145-
146-
return result
147-
}
148-
149-
func (uc *UseCase) parseCIMResponse(hwInfo interface{}) dto.CIMResponse {
150-
result := dto.CIMResponse{}
151-
152-
info, ok := hwInfo.(map[string]interface{})
153-
if !ok {
154-
return result
155-
}
156-
157-
response, ok := info["response"]
158-
if ok {
159-
result.Response = response
160-
}
161-
162-
responses, ok := info["responses"].([]interface{})
163-
if ok {
164-
result.Responses = responses
165-
}
166-
167-
status, ok := info["status"].(int)
168-
if ok {
169-
result.Status = status
170-
}
171-
172-
return result
173133
}
174134

175135
func (uc *UseCase) GetAuditLog(c context.Context, startIndex int, guid string) (dto.AuditLog, error) {

internal/usecase/devices/info_test.go

Lines changed: 141 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -11,12 +11,20 @@ import (
1111
"github.com/device-management-toolkit/go-wsman-messages/v2/pkg/wsman/amt/auditlog"
1212
"github.com/device-management-toolkit/go-wsman-messages/v2/pkg/wsman/amt/messagelog"
1313
"github.com/device-management-toolkit/go-wsman-messages/v2/pkg/wsman/amt/setupandconfiguration"
14+
"github.com/device-management-toolkit/go-wsman-messages/v2/pkg/wsman/cim/bios"
15+
"github.com/device-management-toolkit/go-wsman-messages/v2/pkg/wsman/cim/card"
16+
"github.com/device-management-toolkit/go-wsman-messages/v2/pkg/wsman/cim/chassis"
17+
"github.com/device-management-toolkit/go-wsman-messages/v2/pkg/wsman/cim/chip"
18+
"github.com/device-management-toolkit/go-wsman-messages/v2/pkg/wsman/cim/mediaaccess"
19+
"github.com/device-management-toolkit/go-wsman-messages/v2/pkg/wsman/cim/physical"
20+
"github.com/device-management-toolkit/go-wsman-messages/v2/pkg/wsman/cim/processor"
1421
"github.com/device-management-toolkit/go-wsman-messages/v2/pkg/wsman/cim/software"
1522

1623
"github.com/device-management-toolkit/console/internal/entity"
1724
"github.com/device-management-toolkit/console/internal/entity/dto/v1"
1825
"github.com/device-management-toolkit/console/internal/mocks"
1926
devices "github.com/device-management-toolkit/console/internal/usecase/devices"
27+
wsmanAPI "github.com/device-management-toolkit/console/internal/usecase/devices/wsman"
2028
"github.com/device-management-toolkit/console/pkg/logger"
2129
)
2230

@@ -272,14 +280,71 @@ func TestGetHardwareInfo(t *testing.T) {
272280
Return(man2, nil)
273281
man2.EXPECT().
274282
GetHardwareInfo().
275-
Return(gomock.Any(), nil)
283+
Return(wsmanAPI.HWResults{}, nil)
276284
},
277285
repoMock: func(repo *mocks.MockDeviceManagementRepository) {
278286
repo.EXPECT().
279287
GetByID(context.Background(), device.GUID, "").
280288
Return(device, nil)
281289
},
282-
res: dto.HardwareInfo{},
290+
res: dto.HardwareInfo{
291+
CIMChassis: dto.CIMResponse{Response: chassis.PackageResponse{}},
292+
CIMChip: dto.CIMResponse{Responses: []any{chip.PackageResponse{}}},
293+
CIMCard: dto.CIMResponse{Response: card.PackageResponse{}},
294+
CIMBIOSElement: dto.CIMResponse{Response: bios.BiosElement{}},
295+
CIMProcessor: dto.CIMResponse{Responses: []any{processor.PackageResponse{}}},
296+
CIMPhysicalMemory: dto.CIMResponse{Responses: []any{}},
297+
},
298+
err: nil,
299+
},
300+
{
301+
name: "success with populated data",
302+
action: 0,
303+
manMock: func(man *mocks.MockWSMAN, man2 *mocks.MockManagement) {
304+
man.EXPECT().
305+
SetupWsmanClient(gomock.Any(), false, true).
306+
Return(man2, nil)
307+
man2.EXPECT().
308+
GetHardwareInfo().
309+
Return(wsmanAPI.HWResults{
310+
PhysicalMemoryResult: physical.Response{
311+
Body: physical.Body{
312+
PullResponse: physical.PullResponse{
313+
MemoryItems: []physical.PhysicalMemory{
314+
{
315+
ElementName: "Memory 0",
316+
Manufacturer: "Samsung",
317+
Capacity: 8388608,
318+
Speed: 3200,
319+
SerialNumber: "ABC123",
320+
BankLabel: "BANK0",
321+
},
322+
},
323+
},
324+
},
325+
},
326+
}, nil)
327+
},
328+
repoMock: func(repo *mocks.MockDeviceManagementRepository) {
329+
repo.EXPECT().
330+
GetByID(context.Background(), device.GUID, "").
331+
Return(device, nil)
332+
},
333+
res: dto.HardwareInfo{
334+
CIMChassis: dto.CIMResponse{Response: chassis.PackageResponse{}},
335+
CIMChip: dto.CIMResponse{Responses: []any{chip.PackageResponse{}}},
336+
CIMCard: dto.CIMResponse{Response: card.PackageResponse{}},
337+
CIMBIOSElement: dto.CIMResponse{Response: bios.BiosElement{}},
338+
CIMProcessor: dto.CIMResponse{Responses: []any{processor.PackageResponse{}}},
339+
CIMPhysicalMemory: dto.CIMResponse{Responses: []any{physical.PhysicalMemory{
340+
ElementName: "Memory 0",
341+
Manufacturer: "Samsung",
342+
Capacity: 8388608,
343+
Speed: 3200,
344+
SerialNumber: "ABC123",
345+
BankLabel: "BANK0",
346+
}}},
347+
},
283348
err: nil,
284349
},
285350
{
@@ -303,7 +368,7 @@ func TestGetHardwareInfo(t *testing.T) {
303368
Return(man2, nil)
304369
man2.EXPECT().
305370
GetHardwareInfo().
306-
Return(nil, ErrGeneral)
371+
Return(wsmanAPI.HWResults{}, ErrGeneral)
307372
},
308373
repoMock: func(repo *mocks.MockDeviceManagementRepository) {
309374
repo.EXPECT().
@@ -596,14 +661,84 @@ func TestGetDiskInfo(t *testing.T) {
596661
Return(man2, nil)
597662
man2.EXPECT().
598663
GetDiskInfo().
599-
Return(gomock.Any(), nil)
664+
Return(wsmanAPI.DiskResults{}, nil)
600665
},
601666
repoMock: func(repo *mocks.MockDeviceManagementRepository) {
602667
repo.EXPECT().
603668
GetByID(context.Background(), device.GUID, "").
604669
Return(device, nil)
605670
},
606-
res: dto.DiskInfo{},
671+
res: dto.DiskInfo{
672+
CIMMediaAccessDevice: dto.CIMResponse{Responses: []any{[]mediaaccess.MediaAccessDevice(nil)}},
673+
CIMPhysicalPackage: dto.CIMResponse{Responses: []any{[]physical.PhysicalPackage(nil)}},
674+
},
675+
err: nil,
676+
},
677+
{
678+
name: "success with populated data",
679+
action: 0,
680+
manMock: func(man *mocks.MockWSMAN, man2 *mocks.MockManagement) {
681+
man.EXPECT().
682+
SetupWsmanClient(gomock.Any(), false, true).
683+
Return(man2, nil)
684+
man2.EXPECT().
685+
GetDiskInfo().
686+
Return(wsmanAPI.DiskResults{
687+
MediaAccessPullResult: mediaaccess.Response{
688+
Body: mediaaccess.Body{
689+
PullResponse: mediaaccess.PullResponse{
690+
MediaAccessDevices: []mediaaccess.MediaAccessDevice{
691+
{
692+
CreationClassName: "CIM_MediaAccessDevice",
693+
DeviceID: "DISK0",
694+
ElementName: "SSD Drive",
695+
MaxMediaSize: 512000,
696+
},
697+
},
698+
},
699+
},
700+
},
701+
PPPullResult: physical.Response{
702+
Body: physical.Body{
703+
PullResponse: physical.PullResponse{
704+
PhysicalPackage: []physical.PhysicalPackage{
705+
{
706+
ElementName: "Physical Package 0",
707+
CreationClassName: "CIM_PhysicalPackage",
708+
Manufacturer: "Samsung",
709+
SerialNumber: "XYZ789",
710+
Model: "970 EVO",
711+
},
712+
},
713+
},
714+
},
715+
},
716+
}, nil)
717+
},
718+
repoMock: func(repo *mocks.MockDeviceManagementRepository) {
719+
repo.EXPECT().
720+
GetByID(context.Background(), device.GUID, "").
721+
Return(device, nil)
722+
},
723+
res: dto.DiskInfo{
724+
CIMMediaAccessDevice: dto.CIMResponse{Responses: []any{[]mediaaccess.MediaAccessDevice{
725+
{
726+
CreationClassName: "CIM_MediaAccessDevice",
727+
DeviceID: "DISK0",
728+
ElementName: "SSD Drive",
729+
MaxMediaSize: 512000,
730+
},
731+
}}},
732+
CIMPhysicalPackage: dto.CIMResponse{Responses: []any{[]physical.PhysicalPackage{
733+
{
734+
ElementName: "Physical Package 0",
735+
CreationClassName: "CIM_PhysicalPackage",
736+
Manufacturer: "Samsung",
737+
SerialNumber: "XYZ789",
738+
Model: "970 EVO",
739+
},
740+
}}},
741+
},
607742
err: nil,
608743
},
609744
{
@@ -627,7 +762,7 @@ func TestGetDiskInfo(t *testing.T) {
627762
Return(man2, nil)
628763
man2.EXPECT().
629764
GetDiskInfo().
630-
Return(nil, ErrGeneral)
765+
Return(wsmanAPI.DiskResults{}, ErrGeneral)
631766
},
632767
repoMock: func(repo *mocks.MockDeviceManagementRepository) {
633768
repo.EXPECT().

internal/usecase/devices/wsman/interfaces.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ type Management interface {
4040
GetAlarmOccurrences() ([]ipsAlarmClock.AlarmClockOccurrence, error)
4141
CreateAlarmOccurrences(name string, startTime time.Time, interval int, deleteOnCompletion bool) (alarmclock.AddAlarmOutput, error)
4242
DeleteAlarmOccurrences(instanceID string) error
43-
GetHardwareInfo() (interface{}, error)
43+
GetHardwareInfo() (HWResults, error)
4444
GetPowerState() ([]service.CIM_AssociatedPowerManagementService, error)
4545
GetOSPowerSavingState() (ipspower.OSPowerSavingState, error)
4646
GetIPSPowerManagementService() (ipspower.PowerManagementService, error)
@@ -63,7 +63,7 @@ type Management interface {
6363
GetTLSSettingData() ([]tls.SettingDataResponse, error)
6464
GetCredentialRelationships() (credential.Items, error)
6565
GetConcreteDependencies() ([]concrete.ConcreteDependency, error)
66-
GetDiskInfo() (interface{}, error)
66+
GetDiskInfo() (DiskResults, error)
6767
GetDeviceCertificate() (*gotls.Certificate, error)
6868
GetCIMBootSourceSetting() (cimBoot.Response, error)
6969
BootServiceStateChange(requestedState int) (cimBoot.BootService, error)

0 commit comments

Comments
 (0)