Chromium Code Reviews| Index: dm/api/distributor/swarming/v1/normalize.go |
| diff --git a/dm/api/distributor/swarming/v1/normalize.go b/dm/api/distributor/swarming/v1/normalize.go |
| index f1bef718a92507775b4375a49fe69ff9d90bbf11..11dcb36beefa964fe4930e633f3fb0659d0eb065 100644 |
| --- a/dm/api/distributor/swarming/v1/normalize.go |
| +++ b/dm/api/distributor/swarming/v1/normalize.go |
| @@ -75,22 +75,45 @@ func (j *Parameters_Job) Normalize() (err error) { |
| } |
| // Normalize normalizes and checks for input violations. |
| +func (p *CipdPackage) Normalize() error { |
| + if p.Name == "" { |
| + return errors.New("missing name") |
| + } |
| + if p.Version == "" { |
| + return errors.New("missing version") |
| + } |
| + return nil |
| +} |
| + |
| +// Normalize normalizes and checks for input violations. |
| +func (c *CipdSpec) Normalize() error { |
| + if err := schemaHostURLValidate(c.Server); err != nil { |
| + return fmt.Errorf("job.inputs.cipd.server: %s", err) |
| + } |
| + if c.Client != nil { |
| + if err := c.Client.Normalize(); err != nil { |
| + return fmt.Errorf("job.inputs.cipd.client: %s", err) |
| + } |
| + } |
| + for path, pkgs := range c.ByPath { |
| + for i, p := range pkgs.Pkg { |
| + if err := p.Normalize(); err != nil { |
| + return fmt.Errorf("job.inputs.cipd.by_path[%s].pkg[%d]: %s", path, i, err) |
| + } |
| + } |
| + } |
| + return nil |
| +} |
| + |
| +// Normalize normalizes and checks for input violations. |
| func (i *Parameters_Job_Inputs) Normalize() (err error) { |
| - if len(i.Packages) == 0 && len(i.Isolated) == 0 { |
| + if i.Cipd == nil && len(i.Isolated) == 0 { |
| return errors.New( |
| "job.inputs: at least one of packages and isolated must be specified") |
|
Vadim Sh.
2016/09/26 23:16:06
theoretically a job can call something that is pre
iannucci
2016/09/27 01:23:56
Yeah, I thought of that, but the likelihood that y
|
| } |
| - if len(i.Packages) > 0 { |
| - if err = schemaHostURLValidate(i.CipdServer); err != nil { |
| - return fmt.Errorf("job.inputs.cipd_server: %s", err) |
| - } |
| - for i, p := range i.Packages { |
| - if p.Name == "" { |
| - return fmt.Errorf("job.inputs.packages[%d]: missing name", i) |
| - } |
| - if p.Version == "" { |
| - return fmt.Errorf("job.inputs.packages[%d]: missing version", i) |
| - } |
| + if i.Cipd != nil { |
| + if err = i.Cipd.Normalize(); err != nil { |
| + return |
| } |
| } |
| return |