@@ -51,55 +51,3 @@ func (c *DeviceCount) DecodeMapstructure(value interface{}) error {
5151 }
5252 return nil
5353}
54-
55- func (d * DeviceRequest ) DecodeMapstructure (value interface {}) error {
56- v , ok := value .(map [string ]any )
57- if ! ok {
58- return fmt .Errorf ("invalid device request type %T" , value )
59- }
60- if _ , okCaps := v ["capabilities" ]; ! okCaps {
61- return fmt .Errorf (`"capabilities" attribute is mandatory for device request definition` )
62- }
63- if _ , okCount := v ["count" ]; okCount {
64- if _ , okDeviceIds := v ["device_ids" ]; okDeviceIds {
65- return fmt .Errorf (`invalid "count" and "device_ids" are attributes are exclusive` )
66- }
67- }
68- d .Count = DeviceCount (- 1 )
69-
70- capabilities := v ["capabilities" ]
71- caps := StringList {}
72- if err := caps .DecodeMapstructure (capabilities ); err != nil {
73- return err
74- }
75- d .Capabilities = caps
76- if driver , ok := v ["driver" ]; ok {
77- if val , ok := driver .(string ); ok {
78- d .Driver = val
79- } else {
80- return fmt .Errorf ("invalid type for driver value: %T" , driver )
81- }
82- }
83- if count , ok := v ["count" ]; ok {
84- if err := d .Count .DecodeMapstructure (count ); err != nil {
85- return err
86- }
87- }
88- if deviceIDs , ok := v ["device_ids" ]; ok {
89- ids := StringList {}
90- if err := ids .DecodeMapstructure (deviceIDs ); err != nil {
91- return err
92- }
93- d .IDs = ids
94- d .Count = DeviceCount (len (ids ))
95- }
96-
97- d .Options = Mapping {}
98- if options , ok := v ["options" ].(map [string ]any ); ok {
99- for k , v := range options {
100- d .Options [k ] = fmt .Sprint (v )
101- }
102- }
103- return nil
104-
105- }
0 commit comments