github.com/ablease/cli@v6.37.1-0.20180613014814-3adbb7d7fb19+incompatible/actor/v2action/space.go (about) 1 package v2action 2 3 import ( 4 "code.cloudfoundry.org/cli/actor/actionerror" 5 "code.cloudfoundry.org/cli/api/cloudcontroller/ccv2" 6 "code.cloudfoundry.org/cli/api/cloudcontroller/ccv2/constant" 7 ) 8 9 // Space represents a CLI Space 10 type Space ccv2.Space 11 12 func (actor Actor) DeleteSpaceByNameAndOrganizationName(spaceName string, orgName string) (Warnings, error) { 13 var allWarnings Warnings 14 15 org, warnings, err := actor.GetOrganizationByName(orgName) 16 allWarnings = append(allWarnings, warnings...) 17 if err != nil { 18 return allWarnings, err 19 } 20 21 space, warnings, err := actor.GetSpaceByOrganizationAndName(org.GUID, spaceName) 22 allWarnings = append(allWarnings, warnings...) 23 if err != nil { 24 return allWarnings, err 25 } 26 27 job, deleteWarnings, err := actor.CloudControllerClient.DeleteSpaceJob(space.GUID) 28 allWarnings = append(allWarnings, Warnings(deleteWarnings)...) 29 if err != nil { 30 return allWarnings, err 31 } 32 33 warnings, err = actor.PollJob(Job(job)) 34 allWarnings = append(allWarnings, Warnings(warnings)...) 35 36 return allWarnings, err 37 } 38 39 // GetOrganizationSpaces returns a list of spaces in the specified org 40 func (actor Actor) GetOrganizationSpaces(orgGUID string) ([]Space, Warnings, error) { 41 ccv2Spaces, warnings, err := actor.CloudControllerClient.GetSpaces(ccv2.Filter{ 42 Type: constant.OrganizationGUIDFilter, 43 Operator: constant.EqualOperator, 44 Values: []string{orgGUID}, 45 }) 46 if err != nil { 47 return []Space{}, Warnings(warnings), err 48 } 49 50 spaces := make([]Space, len(ccv2Spaces)) 51 for i, ccv2Space := range ccv2Spaces { 52 spaces[i] = Space(ccv2Space) 53 } 54 55 return spaces, Warnings(warnings), nil 56 } 57 58 // GetSpaceByOrganizationAndName returns an Space based on the org and name. 59 func (actor Actor) GetSpaceByOrganizationAndName(orgGUID string, spaceName string) (Space, Warnings, error) { 60 ccv2Spaces, warnings, err := actor.CloudControllerClient.GetSpaces( 61 ccv2.Filter{ 62 Type: constant.NameFilter, 63 Operator: constant.EqualOperator, 64 Values: []string{spaceName}, 65 }, 66 ccv2.Filter{ 67 Type: constant.OrganizationGUIDFilter, 68 Operator: constant.EqualOperator, 69 Values: []string{orgGUID}, 70 }, 71 ) 72 if err != nil { 73 return Space{}, Warnings(warnings), err 74 } 75 76 if len(ccv2Spaces) == 0 { 77 return Space{}, Warnings(warnings), actionerror.SpaceNotFoundError{Name: spaceName} 78 } 79 80 if len(ccv2Spaces) > 1 { 81 return Space{}, Warnings(warnings), actionerror.MultipleSpacesFoundError{OrgGUID: orgGUID, Name: spaceName} 82 } 83 84 return Space(ccv2Spaces[0]), Warnings(warnings), nil 85 }