// 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 }