func deployCmd(c *cli.Context) error { sb := core.ServiceConfigurationBuilder{ ServiceId: c.String("service-id"), RegistryDomain: c.String("registry"), Namespace: c.String("namespace"), Tag: c.String("tag"), Cpu: c.Float64("cpu"), Memory: c.Float64("memory"), MinimumHealthCapacity: c.Float64("minimumHealthCapacity"), MaximumOverCapacity: c.Float64("maximumOverCapacity"), SyslogTag: c.String("syslog-tag"), Instances: c.Int("instances"), JobUrl: c.String("deploy-url"), ContactEmail: c.String("contact-email"), } envs, err := util.ParseMultiFileLinesToArray(c.StringSlice("env-file")) if err != nil { logger.Instance().Fatalln("Error parsing environment files", err) } sb.AddEnvironmentVars(envs) sb.AddEnvironmentVars(c.StringSlice("env")) sb.AddConstraints(c.StringSlice("constraint")) sb.AddPorts(c.StringSlice("port")) sb.AddLabels(c.StringSlice("label")) handleDeploySigTerm(clusterManager) if clusterManager.DeployWithRollbackOnError(sb, c.Bool("force")) { logger.Instance().Infoln("Deployment READY") var resume []callbackResume for clusterKey, cluster := range clusterManager.Clusters() { logger.Instance().Infof("Services in Cluster %s :", clusterKey) for _, service := range cluster.Services() { for _, instance := range service.Instances { for _, val := range instance.Ports { logger.Instance().Infof("Deployed %s at host %s and address %+v", instance.ID, instance.Host, val) instanceInfo := callbackResume{ Id: instance.ID, Address: instance.Host + ":" + strconv.FormatInt(val.Internal, 10), ClusterKey: clusterKey, } resume = append(resume, instanceInfo) } } } } //jsonResume, _ := json.Marshal(resume) //fmt.Println(string(jsonResume)) return nil } return fmt.Errorf("Deployment-Process terminated with errors") }