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") }
func deployCmd(c *cli.Context) { envs, err := util.ParseMultiFileLinesToArray(c.StringSlice("env-file")) if err != nil { util.Log.Fatalln("No se pudo procesar el archivo con variables de entorno", err) } for _, v := range c.StringSlice("env") { envs = append(envs, v) } serviceConfig := framework.ServiceConfig{ ServiceID: c.String("service-id"), CPUShares: c.Float64("cpu"), Envs: envs, ImageName: c.String("image"), Tag: c.String("tag"), MinimumHealthCapacity: c.Float64("minimumHealthCapacity"), MaximumOverCapacity: c.Float64("maximumOverCapacity"), HealthCheckConfig: &framework.HealthCheck{Path: c.String("health-check-path")}, } applyPorts(c.StringSlice("port"), &serviceConfig) if c.String("memory") != "" { n, _ := strconv.ParseInt(c.String("memory"), 10, 64) serviceConfig.Memory = int64(n) } err = applyKeyValSliceFlag(c.StringSlice("constraint"), func(configMap map[string]string) { if configMap != nil && len(configMap) != 0 { serviceConfig.Constraints = configMap } }) if err != nil { util.Log.Fatalln("Error reading constraints", err) } err = applyKeyValSliceFlag(c.StringSlice("label"), func(configMap map[string]string) { if configMap != nil && len(configMap) != 0 { serviceConfig.Labels = configMap } }) if err != nil { util.Log.Fatalln("Error reading labels", err) } if c.String("beta") != "" { if serviceConfig.Labels == nil { serviceConfig.Labels = make(map[string]string) } if serviceConfig.Constraints == nil { serviceConfig.Constraints = make(map[string]string) } serviceConfig.Labels["slave_name"] = c.String("beta") serviceConfig.Constraints["slave_name"] = c.String("beta") } handleDeploySigTerm(stackManager) if stackManager.Deploy(serviceConfig, c.Int("instances"), c.Float64("tolerance")) { services := stackManager.DeployedContainers() var resume []callbackResume for _, service := range services { for _, instance := range service.Instances { for _, val := range instance.Ports { util.Log.Infof("Se desplegó %s en host %s y dirección %+v", instance.ID, instance.Host, val) instanceInfo := callbackResume{ Id: instance.ID, Address: instance.Host + ":" + strconv.FormatInt(val.Internal, 10), } resume = append(resume, instanceInfo) } } } jsonResume, _ := json.Marshal(resume) fmt.Println(string(jsonResume)) } else { util.Log.Fatalln("Deployment-Process terminated with errors") } }