| package main | |
| import ( | |
| "context" | |
| "flag" | |
| log "github.com/golang/glog" | |
| "cloud.google.com/go/storage" | |
| "cos.googlesource.com/cos/tools.git/src/cmd/cos_gpu_driver_builder/internal/config" | |
| "cos.googlesource.com/cos/tools.git/src/pkg/gpuconfig" | |
| ) | |
| var ( | |
| configDir = flag.String("config-dir", "", "Directory containing config.textproto and metadata file that needs to be processed.") | |
| bucket = flag.String("watcher-gcs", "", "GCS bucket to watch for unprocessed configs.") | |
| lookBack = flag.Int("lookBackDays", 7, "read configs produced within the past <lookBack> days.") | |
| // default to only building image CI precompiled drivers | |
| mode = flag.String("mode", "image", "image, kernel, or both for processing image CI/kernel CI configs. Works only with watcher-gcs arg") | |
| dryRun = flag.Bool("dry-run", false, "invoking the driver builder with -dry-run will not upload any build precompiled outputs") | |
| ) | |
| func main() { | |
| flag.Parse() | |
| // always run driver builder with verbose logging. | |
| flag.Set("v", "2") | |
| if *bucket == "" && *configDir == "" { | |
| log.Fatal("empty watcher gcs dir and config file dir") | |
| } | |
| ctx := context.Background() | |
| client, err := storage.NewClient(ctx) | |
| if err != nil { | |
| log.Fatal("failed to setup client for GCS:", err) | |
| } | |
| var configs []gpuconfig.GPUPrecompilationConfig | |
| if *bucket != "" { // cos_gpu_driver_builder --watcher-gcs="cos-gpu-configs" | |
| configs, err = gpuconfig.ReadConfigs(ctx, client, *bucket, *lookBack, *mode) | |
| if err != nil { | |
| log.Fatal("could not read configs:", err) | |
| } | |
| } else { // cos_gpu_driver_builder --config="gs://cos-gpu-configs/2022-09-26T16:03:17-dc65ba40/" | |
| config, err := gpuconfig.ReadConfig(ctx, client, *configDir) | |
| if err != nil { | |
| log.Fatal("could not read config:", err) | |
| } | |
| configs = append(configs, config) | |
| } | |
| config.ProcessConfigs(ctx, client, configs, *dryRun) | |
| } |