@@ -77,14 +77,14 @@ type cdi_t struct {
7777func readSpecFromFile (f string ) (* specs.Spec , error ) {
7878 file , err := os .Open (f )
7979 if err != nil {
80- return & specs.Spec {}, err
80+ return & specs.Spec {}, fmt . Errorf ( "open CDI spec file %s: %w" , f , err )
8181 }
8282 defer file .Close ()
8383
8484 var spec specs.Spec
8585 err = json .NewDecoder (file ).Decode (& spec )
8686 if err != nil {
87- return & specs.Spec {}, err
87+ return & specs.Spec {}, fmt . Errorf ( "decode CDI spec from %s: %w" , f , err )
8888 }
8989
9090 return & spec , nil
@@ -94,14 +94,14 @@ func (cdi *cdi_t) GenerateSpec() error {
9494 gpus , err := cdi .getGPUs ()
9595 if err != nil {
9696 logger .Log .Printf ("Failed to get GPUs, Err: %v" , err )
97- return err
97+ return fmt . Errorf ( "get GPUs for CDI spec: %w" , err )
9898 }
9999
100100 getCDIDevNode := func (gpu string ) (specs.DeviceNode , error ) {
101101 d , err := cdi .getGPU (gpu )
102102 if err != nil {
103103 logger .Log .Printf ("Failed to get details of %v GPU, Err: %v" , gpu , err )
104- return specs.DeviceNode {}, err
104+ return specs.DeviceNode {}, fmt . Errorf ( "get device node for %s: %w" , gpu , err )
105105 }
106106
107107 dn := specs.DeviceNode {
@@ -120,7 +120,7 @@ func (cdi *cdi_t) GenerateSpec() error {
120120
121121 kfdDeviceNode , err := getCDIDevNode ("/dev/kfd" )
122122 if err != nil {
123- return err
123+ return fmt . Errorf ( "get KFD device node: %w" , err )
124124 }
125125
126126 cdiDevs := []specs.Device {}
@@ -130,7 +130,7 @@ func (cdi *cdi_t) GenerateSpec() error {
130130 for _ , gpu := range gpuList .DrmDevices {
131131 dn , err := getCDIDevNode (gpu )
132132 if err != nil {
133- return err
133+ return fmt . Errorf ( "get device node for GPU %s: %w" , gpu , err )
134134 }
135135 dnl = append (dnl , & dn )
136136 }
@@ -171,15 +171,14 @@ func (cdi *cdi_t) WriteSpec() error {
171171 file , err := os .Create (cdi .specPath )
172172 if err != nil {
173173 logger .Log .Printf ("Error creating file, Error: %v" , err )
174- return err
174+ return fmt . Errorf ( "create CDI spec file %s: %w" , cdi . specPath , err )
175175 }
176176
177177 defer file .Close ()
178178
179179 encoder := json .NewEncoder (file )
180180 if err := encoder .Encode (cdi .spec ); err != nil {
181- fmt .Printf ("Error encoding JSON: %s\n " , err )
182- return err
181+ return fmt .Errorf ("encode CDI spec to %s: %w" , cdi .specPath , err )
183182 }
184183
185184 logger .Log .Printf ("Wrote spec to %v" , cdi .specPath )
@@ -191,7 +190,7 @@ func (cdi *cdi_t) PrintSpec() error {
191190 prettyJSON , err := json .MarshalIndent (cdi .spec , "" , " " )
192191 if err != nil {
193192 logger .Log .Printf ("Failed to marshal JSON, Error: %v" , err )
194- return err
193+ return fmt . Errorf ( "marshal CDI spec to JSON: %w" , err )
195194 }
196195
197196 fmt .Printf (string (prettyJSON ))
@@ -234,8 +233,8 @@ func New(sp string) (Interface, error) {
234233 if _ , err := os .Stat (dir ); os .IsNotExist (err ) {
235234 err := os .MkdirAll (dir , 0755 )
236235 if err != nil {
237- logger .Log .Printf ("Failed to create %v, Err: %v" , dir , err )
238- return nil , err
236+ logger .Log .Printf ("Failed to create %v, Err: %v" , sp , err )
237+ return nil , fmt . Errorf ( "create CDI spec directory %s: %w" , sp , err )
239238 }
240239 }
241240
0 commit comments