// PlatformAdd add a new platform to tsuru func PlatformAdd(name string, args map[string]string, w io.Writer) error { var ( provisioner provision.ExtensibleProvisioner ok bool ) if provisioner, ok = Provisioner.(provision.ExtensibleProvisioner); !ok { return errors.New("Provisioner is not extensible") } if name == "" { return errors.New("Platform name is required.") } p := Platform{Name: name} conn, err := db.Conn() if err != nil { return err } defer conn.Close() err = conn.Platforms().Insert(p) if err != nil { if mgo.IsDup(err) { return DuplicatePlatformError{} } return err } err = provisioner.PlatformAdd(name, args, w) if err != nil { dbErr := conn.Platforms().RemoveId(p.Name) if dbErr != nil { return fmt.Errorf("Caused by: %s and %s", err.Error(), dbErr.Error()) } return err } return nil }
// PlatformAdd add a new platform to tsuru func PlatformAdd(opts provision.PlatformOptions) error { var ( provisioner provision.ExtensibleProvisioner ok bool ) if provisioner, ok = Provisioner.(provision.ExtensibleProvisioner); !ok { return ErrProvisionerIsNotExtensible } if opts.Name == "" { return ErrPlatformNameMissing } p := Platform{Name: opts.Name} conn, err := db.Conn() if err != nil { return err } defer conn.Close() err = conn.Platforms().Insert(p) if err != nil { if mgo.IsDup(err) { return DuplicatePlatformError } return err } err = provisioner.PlatformAdd(opts) if err != nil { dbErr := conn.Platforms().RemoveId(p.Name) if dbErr != nil { return fmt.Errorf("Caused by: %s and %s", err.Error(), dbErr.Error()) } return err } return nil }
func PlatformRemove(name string) error { var ( provisioner provision.ExtensibleProvisioner ok bool ) if provisioner, ok = Provisioner.(provision.ExtensibleProvisioner); !ok { return errors.New("Provisioner is not extensible") } if name == "" { return errors.New("Platform name is required!") } conn, err := db.Conn() if err != nil { return err } defer conn.Close() apps, _ := conn.Apps().Find(bson.M{"framework": name}).Count() if apps > 0 { return errors.New("Platform has apps. You should remove them before remove the platform.") } err = provisioner.PlatformRemove(name) if err != nil { log.Errorf("Failed to remove platform from provisioner: %s", err) } return conn.Platforms().Remove(bson.M{"_id": name}) }
func PlatformRemove(name string) error { var ( provisioner provision.ExtensibleProvisioner ok bool ) if provisioner, ok = Provisioner.(provision.ExtensibleProvisioner); !ok { return ErrProvisionerIsNotExtensible } if name == "" { return ErrPlatformNameMissing } conn, err := db.Conn() if err != nil { return err } defer conn.Close() apps, _ := conn.Apps().Find(bson.M{"framework": name}).Count() if apps > 0 { return ErrDeletePlatformWithApps } err = provisioner.PlatformRemove(name) if err != nil { log.Errorf("Failed to remove platform from provisioner: %s", err) } return conn.Platforms().Remove(bson.M{"_id": name}) }
func PlatformUpdate(opts provision.PlatformOptions) error { var ( provisioner provision.ExtensibleProvisioner platform Platform ok bool ) if provisioner, ok = Provisioner.(provision.ExtensibleProvisioner); !ok { return ErrProvisionerIsNotExtensible } if opts.Name == "" { return ErrPlatformNameMissing } conn, err := db.Conn() if err != nil { return err } defer conn.Close() err = conn.Platforms().Find(bson.M{"_id": opts.Name}).One(&platform) if err != nil { if err == mgo.ErrNotFound { return ErrPlatformNotFound } return err } if opts.Args["dockerfile"] != "" || opts.Input != nil { err = provisioner.PlatformUpdate(opts) if err != nil { return err } var apps []App err = conn.Apps().Find(bson.M{"framework": opts.Name}).All(&apps) if err != nil { return err } for _, app := range apps { app.SetUpdatePlatform(true) } } if opts.Args["disabled"] != "" { disableBool, err := strconv.ParseBool(opts.Args["disabled"]) if err != nil { return err } err = conn.Platforms().Update(bson.M{"_id": opts.Name}, bson.M{"$set": bson.M{"disabled": disableBool}}) if err != nil { return err } } return nil }
func PlatformUpdate(name string, args map[string]string, w io.Writer) error { var ( provisioner provision.ExtensibleProvisioner platform Platform ok bool ) if provisioner, ok = Provisioner.(provision.ExtensibleProvisioner); !ok { return errors.New("Provisioner is not extensible") } if name == "" { return errors.New("Platform name is required.") } conn, err := db.Conn() if err != nil { return err } defer conn.Close() err = conn.Platforms().Find(bson.M{"_id": name}).One(&platform) if err != nil { if err == mgo.ErrNotFound { return errors.New("Platform doesn't exist.") } return err } if args["dockerfile"] != "" { err = provisioner.PlatformUpdate(name, args, w) if err != nil { return err } var apps []App err = conn.Apps().Find(bson.M{"framework": name}).All(&apps) if err != nil { return err } for _, app := range apps { app.SetUpdatePlatform(true) } } if args["disabled"] != "" { disableBool, err := strconv.ParseBool(args["disabled"]) if err != nil { return err } err = conn.Platforms().Update(bson.M{"_id": name}, bson.M{"$set": bson.M{"disabled": disableBool}}) if err != nil { return err } } return nil }
func PlatformRemove(name string) error { var ( provisioner provision.ExtensibleProvisioner ok bool ) if provisioner, ok = Provisioner.(provision.ExtensibleProvisioner); !ok { return errors.New("Provisioner is not extensible") } if name == "" { return errors.New("Platform name is required!") } conn, err := db.Conn() if err != nil { return err } apps, _ := conn.Apps().Find(bson.M{"framework": name}).Count() if apps > 0 { return errors.New("Platform has apps. You should remove them before remove the platform.") } return provisioner.PlatformRemove(name) }
func PlatformUpdate(name string, args map[string]string, w io.Writer) error { var ( provisioner provision.ExtensibleProvisioner platform Platform ok bool ) if provisioner, ok = Provisioner.(provision.ExtensibleProvisioner); !ok { return errors.New("Provisioner is not extensible") } if name == "" { return errors.New("Platform name is required.") } conn, err := db.Conn() if err != nil { return err } err = conn.Platforms().Find(bson.M{"_id": name}).One(&platform) if err != nil { if err == mgo.ErrNotFound { return errors.New("Platform doesn't exist.") } return err } err = provisioner.PlatformUpdate(name, args, w) if err != nil { return err } var apps []App err = conn.Apps().Find(bson.M{"framework": name}).All(&apps) if err != nil { return err } for _, app := range apps { app.SetUpdatePlatform(true) } return nil }