| package features | |
| import ( | |
| "encoding/json" | |
| "errors" | |
| "os" | |
| log "github.com/golang/glog" | |
| ) | |
| // GPUConfig represents the structure of the cos-gpu-config file. | |
| type GPUConfig struct { | |
| UseProto bool `json:"use-proto"` | |
| } | |
| // ReadCOSGPUConfig will read the cos-gpu-config.json file at the given path and parse the data to the GPUConfig instance. | |
| // If the cos-gpu-config.json file doesn't exist, it will return a default GPUConfig instance. | |
| func ReadCOSGPUConfig(path string) (*GPUConfig, error) { | |
| defaultGPUConfig := &GPUConfig{ | |
| UseProto: false, | |
| } | |
| configContent, err := os.ReadFile(path) | |
| if err != nil { | |
| // If the file does not exist, return the default config without error. | |
| if errors.Is(err, os.ErrNotExist) { | |
| log.Infof("COS GPU config file does not exist, default GPU config: %+v will be used.", defaultGPUConfig) | |
| return defaultGPUConfig, nil | |
| } | |
| return nil, err | |
| } | |
| var gpuConfig GPUConfig | |
| err = json.Unmarshal(configContent, &gpuConfig) | |
| if err != nil { | |
| return nil, err | |
| } | |
| return &gpuConfig, nil | |
| } |