Skip to content

Commit

Permalink
Handle unsupported, deprecated and forbidden properties
Browse files Browse the repository at this point in the history
Signed-off-by: Aanand Prasad <aanand.prasad@gmail.com>
  • Loading branch information
aanand committed Oct 31, 2016
1 parent 7fe3b04 commit d7e2cbd
Showing 1 changed file with 27 additions and 0 deletions.
27 changes: 27 additions & 0 deletions cli/command/stack/deploy.go
Expand Up @@ -6,6 +6,7 @@ import (
"fmt"
"io/ioutil"
"os"
"sort"
"strings"

"github.com/spf13/cobra"
Expand Down Expand Up @@ -62,16 +63,42 @@ func runDeploy(dockerCli *command.DockerCli, opts deployOptions) error {

config, err := loader.Load(configDetails)
if err != nil {
if fpe, ok := err.(*loader.ForbiddenPropertiesError); ok {
return fmt.Errorf("Compose file contains unsupported options:\n\n%s\n",
propertyWarnings(fpe.Properties))
}

return err
}

unsupportedProperties := loader.GetUnsupportedProperties(configDetails)
if len(unsupportedProperties) > 0 {
fmt.Printf("Ignoring unsupported options: %s\n\n",
strings.Join(unsupportedProperties, ", "))
}

deprecatedProperties := loader.GetDeprecatedProperties(configDetails)
if len(deprecatedProperties) > 0 {
fmt.Printf("Ignoring deprecated options:\n\n%s\n\n",
propertyWarnings(deprecatedProperties))
}

ctx := context.Background()
if err := createNetworks(ctx, dockerCli, config.Networks, opts.namespace); err != nil {
return err
}
return deployServices(ctx, dockerCli, config, opts.namespace, opts.sendRegistryAuth)
}

func propertyWarnings(properties map[string]string) string {
var msgs []string
for name, description := range properties {
msgs = append(msgs, fmt.Sprintf("%s: %s", name, description))
}
sort.Strings(msgs)
return strings.Join(msgs, "\n\n")
}

func getConfigDetails(opts deployOptions) (composetypes.ConfigDetails, error) {
var details composetypes.ConfigDetails
var err error
Expand Down

0 comments on commit d7e2cbd

Please sign in to comment.