github.com/cloudfoundry-community/cloudfoundry-cli@v6.44.1-0.20240130060226-cda5ed8e89a5+incompatible/actor/v7action/space.go (about)

     1  package v7action
     2  
     3  import (
     4  	"code.cloudfoundry.org/cli/actor/actionerror"
     5  	"code.cloudfoundry.org/cli/api/cloudcontroller/ccv3"
     6  	"code.cloudfoundry.org/cli/resources"
     7  )
     8  
     9  type Space resources.Space
    10  
    11  // ResetSpaceIsolationSegment disassociates a space from an isolation segment.
    12  //
    13  // If the space's organization has a default isolation segment, return its
    14  // name. Otherwise return the empty string.
    15  func (actor Actor) ResetSpaceIsolationSegment(orgGUID string, spaceGUID string) (string, Warnings, error) {
    16  	var allWarnings Warnings
    17  
    18  	_, apiWarnings, err := actor.CloudControllerClient.UpdateSpaceIsolationSegmentRelationship(spaceGUID, "")
    19  	allWarnings = append(allWarnings, apiWarnings...)
    20  	if err != nil {
    21  		return "", allWarnings, err
    22  	}
    23  
    24  	isoSegRelationship, apiWarnings, err := actor.CloudControllerClient.GetOrganizationDefaultIsolationSegment(orgGUID)
    25  	allWarnings = append(allWarnings, apiWarnings...)
    26  	if err != nil {
    27  		return "", allWarnings, err
    28  	}
    29  
    30  	var isoSegName string
    31  	if isoSegRelationship.GUID != "" {
    32  		isolationSegment, apiWarnings, err := actor.CloudControllerClient.GetIsolationSegment(isoSegRelationship.GUID)
    33  		allWarnings = append(allWarnings, apiWarnings...)
    34  		if err != nil {
    35  			return "", allWarnings, err
    36  		}
    37  		isoSegName = isolationSegment.Name
    38  	}
    39  
    40  	return isoSegName, allWarnings, nil
    41  }
    42  
    43  func (actor Actor) GetSpaceByNameAndOrganization(spaceName string, orgGUID string) (Space, Warnings, error) {
    44  	spaces, warnings, err := actor.CloudControllerClient.GetSpaces(
    45  		ccv3.Query{Key: ccv3.NameFilter, Values: []string{spaceName}},
    46  		ccv3.Query{Key: ccv3.OrganizationGUIDFilter, Values: []string{orgGUID}},
    47  	)
    48  
    49  	if err != nil {
    50  		return Space{}, Warnings(warnings), err
    51  	}
    52  
    53  	if len(spaces) == 0 {
    54  		return Space{}, Warnings(warnings), actionerror.SpaceNotFoundError{Name: spaceName}
    55  	}
    56  
    57  	return Space(spaces[0]), Warnings(warnings), nil
    58  }
    59  
    60  // GetOrganizationSpaces returns a list of spaces in the specified org
    61  func (actor Actor) GetOrganizationSpaces(orgGUID string) ([]Space, Warnings, error) {
    62  	ccv2Spaces, warnings, err := actor.CloudControllerClient.GetSpaces(ccv3.Query{
    63  		Key:    ccv3.OrganizationGUIDFilter,
    64  		Values: []string{orgGUID},
    65  	})
    66  	if err != nil {
    67  		return []Space{}, Warnings(warnings), err
    68  	}
    69  
    70  	spaces := make([]Space, len(ccv2Spaces))
    71  	for i, ccv2Space := range ccv2Spaces {
    72  		spaces[i] = Space(ccv2Space)
    73  	}
    74  
    75  	return spaces, Warnings(warnings), nil
    76  }