in pkg/cmd/run.go [248:302]
func (o *runCmdOptions) validate(cmd *cobra.Command) error {
if o.OperatorID == "" {
return fmt.Errorf("cannot use empty operator id")
}
for _, volume := range o.Volumes {
volumeConfig := strings.Split(volume, ":")
if len(volumeConfig) != 2 || len(strings.TrimSpace(volumeConfig[0])) == 0 || len(strings.TrimSpace(volumeConfig[1])) == 0 {
return fmt.Errorf("volume '%s' is invalid, it should be in the format: pvcname:/container/path", volume)
}
}
propertyFiles := filterBuildPropertyFiles(o.Properties)
propertyFiles = append(propertyFiles, filterBuildPropertyFiles(o.BuildProperties)...)
err := validatePropertyFiles(propertyFiles)
if err != nil {
return err
}
if o.OutputFormat != "" && o.Dev {
return fmt.Errorf("cannot use --dev with -o/--output option")
}
for _, label := range o.Labels {
parts := strings.Split(label, "=")
if len(parts) != 2 {
return fmt.Errorf(`invalid label specification %s. Expected "<labelkey>=<labelvalue>"`, label)
}
}
for _, annotation := range o.Annotations {
parts := strings.SplitN(annotation, "=", 2)
if len(parts) != 2 {
return fmt.Errorf(`invalid annotation specification %s. Expected "<annotationkey>=<annotationvalue>"`, annotation)
}
}
for _, openapi := range o.OpenAPIs {
// We support only cluster configmaps
if !(strings.HasPrefix(openapi, "configmap:")) {
return fmt.Errorf(`invalid openapi specification "%s". It supports only configmaps`, openapi)
}
}
var client client.Client
if !isOfflineCommand(cmd) {
client, err = o.GetCmdClient()
if err != nil {
return err
}
}
catalog := trait.NewCatalog(client)
return validateTraits(catalog, extractTraitNames(o.Traits))
}