Skip to content

Commit bf81c5a

Browse files
committed
Move SpaceSummary into v7action package
A small refactor to enforce a clearer separation between the `resources` package and the `v7action` package. Per our new architecture goals, structs defined in `resources` are 1:1 with API resources. Any structs that include additional information (summary-like structs) should be defined and populated in the actor layer (`v7action` package). Will write down these architecture goals in a future ADR. [#171119141] Authored-by: Reid Mitchell <[email protected]>
1 parent c43ad6f commit bf81c5a

File tree

6 files changed

+45
-44
lines changed

6 files changed

+45
-44
lines changed

actor/v7action/space.go

+24-12
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,18 @@ import (
1111
"code.cloudfoundry.org/cli/resources"
1212
)
1313

14+
type SpaceSummary struct {
15+
Space resources.Space
16+
Name string
17+
OrgName string
18+
AppNames []string
19+
ServiceInstanceNames []string
20+
IsolationSegmentName string
21+
QuotaName string
22+
RunningSecurityGroups []resources.SecurityGroup
23+
StagingSecurityGroups []resources.SecurityGroup
24+
}
25+
1426
func (actor Actor) CreateSpace(spaceName, orgGUID string) (resources.Space, Warnings, error) {
1527
allWarnings := Warnings{}
1628

@@ -82,25 +94,25 @@ func (actor Actor) GetSpaceByNameAndOrganization(spaceName string, orgGUID strin
8294
return resources.Space(ccv3Spaces[0]), Warnings(warnings), nil
8395
}
8496

85-
func (actor Actor) GetSpaceSummaryByNameAndOrganization(spaceName string, orgGUID string) (resources.SpaceSummary, Warnings, error) {
97+
func (actor Actor) GetSpaceSummaryByNameAndOrganization(spaceName string, orgGUID string) (SpaceSummary, Warnings, error) {
8698
var allWarnings Warnings
8799

88100
org, warnings, err := actor.GetOrganizationByGUID(orgGUID)
89101
allWarnings = append(allWarnings, warnings...)
90102
if err != nil {
91-
return resources.SpaceSummary{}, allWarnings, err
103+
return SpaceSummary{}, allWarnings, err
92104
}
93105

94106
space, warnings, err := actor.GetSpaceByNameAndOrganization(spaceName, org.GUID)
95107
allWarnings = append(allWarnings, warnings...)
96108
if err != nil {
97-
return resources.SpaceSummary{}, allWarnings, err
109+
return SpaceSummary{}, allWarnings, err
98110
}
99111

100112
apps, warnings, err := actor.GetApplicationsBySpace(space.GUID)
101113
allWarnings = append(allWarnings, warnings...)
102114
if err != nil {
103-
return resources.SpaceSummary{}, allWarnings, err
115+
return SpaceSummary{}, allWarnings, err
104116
}
105117

106118
appNames := make([]string, len(apps))
@@ -116,7 +128,7 @@ func (actor Actor) GetSpaceSummaryByNameAndOrganization(spaceName string, orgGUI
116128
})
117129
allWarnings = append(allWarnings, Warnings(ccv3Warnings)...)
118130
if err != nil {
119-
return resources.SpaceSummary{}, allWarnings, err
131+
return SpaceSummary{}, allWarnings, err
120132
}
121133

122134
serviceInstanceNames := make([]string, len(serviceInstances))
@@ -128,7 +140,7 @@ func (actor Actor) GetSpaceSummaryByNameAndOrganization(spaceName string, orgGUI
128140
isoSegRelationship, ccv3Warnings, err := actor.CloudControllerClient.GetSpaceIsolationSegment(space.GUID)
129141
allWarnings = append(allWarnings, Warnings(ccv3Warnings)...)
130142
if err != nil {
131-
return resources.SpaceSummary{}, allWarnings, err
143+
return SpaceSummary{}, allWarnings, err
132144
}
133145

134146
isoSegName := ""
@@ -139,7 +151,7 @@ func (actor Actor) GetSpaceSummaryByNameAndOrganization(spaceName string, orgGUI
139151
defaultIsoSeg, ccv3Warnings, err := actor.CloudControllerClient.GetOrganizationDefaultIsolationSegment(org.GUID)
140152
allWarnings = append(allWarnings, Warnings(ccv3Warnings)...)
141153
if err != nil {
142-
return resources.SpaceSummary{}, allWarnings, err
154+
return SpaceSummary{}, allWarnings, err
143155
}
144156
isoSegGUID = defaultIsoSeg.GUID
145157
if isoSegGUID != "" {
@@ -151,7 +163,7 @@ func (actor Actor) GetSpaceSummaryByNameAndOrganization(spaceName string, orgGUI
151163
isoSeg, ccv3warnings, err := actor.CloudControllerClient.GetIsolationSegment(isoSegGUID)
152164
allWarnings = append(allWarnings, Warnings(ccv3warnings)...)
153165
if err != nil {
154-
return resources.SpaceSummary{}, allWarnings, err
166+
return SpaceSummary{}, allWarnings, err
155167
}
156168
if isDefaultIsoSeg {
157169
isoSegName = fmt.Sprintf("%s (org default)", isoSeg.Name)
@@ -168,23 +180,23 @@ func (actor Actor) GetSpaceSummaryByNameAndOrganization(spaceName string, orgGUI
168180
allWarnings = append(allWarnings, Warnings(ccv3Warnings)...)
169181

170182
if err != nil {
171-
return resources.SpaceSummary{}, allWarnings, err
183+
return SpaceSummary{}, allWarnings, err
172184
}
173185
}
174186

175187
runningSecurityGroups, ccv3Warnings, err := actor.CloudControllerClient.GetRunningSecurityGroups(space.GUID)
176188
allWarnings = append(allWarnings, ccv3Warnings...)
177189
if err != nil {
178-
return resources.SpaceSummary{}, allWarnings, err
190+
return SpaceSummary{}, allWarnings, err
179191
}
180192

181193
stagingSecurityGroups, ccv3Warnings, err := actor.CloudControllerClient.GetStagingSecurityGroups(space.GUID)
182194
allWarnings = append(allWarnings, ccv3Warnings...)
183195
if err != nil {
184-
return resources.SpaceSummary{}, allWarnings, err
196+
return SpaceSummary{}, allWarnings, err
185197
}
186198

187-
spaceSummary := resources.SpaceSummary{
199+
spaceSummary := SpaceSummary{
188200
OrgName: org.Name,
189201
Name: space.Name,
190202
Space: space,

command/v7/actor.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -146,7 +146,7 @@ type Actor interface {
146146
GetSpaceLabels(spaceName string, orgGUID string) (map[string]types.NullString, v7action.Warnings, error)
147147
GetSpaceQuotaByName(spaceQuotaName string, orgGUID string) (resources.SpaceQuota, v7action.Warnings, error)
148148
GetSpaceQuotasByOrgGUID(orgGUID string) ([]resources.SpaceQuota, v7action.Warnings, error)
149-
GetSpaceSummaryByNameAndOrganization(spaceName string, orgGUID string) (resources.SpaceSummary, v7action.Warnings, error)
149+
GetSpaceSummaryByNameAndOrganization(spaceName string, orgGUID string) (v7action.SpaceSummary, v7action.Warnings, error)
150150
GetSpaceUsersByRoleType(spaceGuid string) (map[constant.RoleType][]resources.User, v7action.Warnings, error)
151151
GetStackByName(stackName string) (v7action.Stack, v7action.Warnings, error)
152152
GetStackLabels(stackName string) (map[string]types.NullString, v7action.Warnings, error)

command/v7/space_command.go

+3-2
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import (
44
"sort"
55
"strings"
66

7+
"code.cloudfoundry.org/cli/actor/v7action"
78
"code.cloudfoundry.org/cli/command/flag"
89
"code.cloudfoundry.org/cli/resources"
910
"code.cloudfoundry.org/cli/util/ui"
@@ -90,7 +91,7 @@ func formatSecurityGroupNames(groups []resources.SecurityGroup) string {
9091
return strings.Join(names, ", ")
9192
}
9293

93-
func (cmd SpaceCommand) displaySecurityGroupRulesTable(spaceSummary resources.SpaceSummary) {
94+
func (cmd SpaceCommand) displaySecurityGroupRulesTable(spaceSummary v7action.SpaceSummary) {
9495
tableHeaders := []string{"security group", "destination", "ports", "protocol", "lifecycle", "description"}
9596
table := [][]string{tableHeaders}
9697

@@ -113,7 +114,7 @@ func (cmd SpaceCommand) displaySecurityGroupRulesTable(spaceSummary resources.Sp
113114
cmd.UI.DisplayTableWithHeader("", table, ui.DefaultTableSpacePadding)
114115
}
115116

116-
func collectSecurityGroupRuleRows(spaceSummary resources.SpaceSummary) [][]string {
117+
func collectSecurityGroupRuleRows(spaceSummary v7action.SpaceSummary) [][]string {
117118
var rows [][]string
118119

119120
for _, securityGroup := range spaceSummary.RunningSecurityGroups {

command/v7/space_command_test.go

+7-7
Original file line numberDiff line numberDiff line change
@@ -167,7 +167,7 @@ var _ = Describe("space command", func() {
167167
cmd.SecurityGroupRules = true
168168

169169
fakeActor.GetSpaceSummaryByNameAndOrganizationReturns(
170-
resources.SpaceSummary{
170+
v7action.SpaceSummary{
171171
Name: "some-space",
172172
OrgName: "some-org",
173173
AppNames: []string{"app1", "app2", "app3"},
@@ -212,7 +212,7 @@ var _ = Describe("space command", func() {
212212
When("there are no security groups to show", func() {
213213
BeforeEach(func() {
214214
fakeActor.GetSpaceSummaryByNameAndOrganizationReturns(
215-
resources.SpaceSummary{},
215+
v7action.SpaceSummary{},
216216
v7action.Warnings{"some-warning"},
217217
nil,
218218
)
@@ -229,7 +229,7 @@ var _ = Describe("space command", func() {
229229
When("fetching the space summary succeeds with an isolation segment", func() {
230230
BeforeEach(func() {
231231
fakeActor.GetSpaceSummaryByNameAndOrganizationReturns(
232-
resources.SpaceSummary{
232+
v7action.SpaceSummary{
233233
Name: "some-space",
234234
OrgName: "some-org",
235235
AppNames: []string{"app1", "app2", "app3"},
@@ -265,7 +265,7 @@ var _ = Describe("space command", func() {
265265
When("fetching the space summary succeeds without an isolation segment", func() {
266266
BeforeEach(func() {
267267
fakeActor.GetSpaceSummaryByNameAndOrganizationReturns(
268-
resources.SpaceSummary{
268+
v7action.SpaceSummary{
269269
Name: "some-space",
270270
OrgName: "some-org",
271271
AppNames: []string{"app1", "app2", "app3"},
@@ -300,7 +300,7 @@ var _ = Describe("space command", func() {
300300
When("fetching a space with an applied quota", func() {
301301
BeforeEach(func() {
302302
fakeActor.GetSpaceSummaryByNameAndOrganizationReturns(
303-
resources.SpaceSummary{
303+
v7action.SpaceSummary{
304304
Name: "some-space",
305305
OrgName: "some-org",
306306
AppNames: []string{"app1", "app2", "app3"},
@@ -321,7 +321,7 @@ var _ = Describe("space command", func() {
321321
When("fetching a space that has no quota applied", func() {
322322
BeforeEach(func() {
323323
fakeActor.GetSpaceSummaryByNameAndOrganizationReturns(
324-
resources.SpaceSummary{
324+
v7action.SpaceSummary{
325325
Name: "some-space",
326326
OrgName: "some-org",
327327
AppNames: []string{"app1", "app2", "app3"},
@@ -340,7 +340,7 @@ var _ = Describe("space command", func() {
340340
When("fetching the space summary fails", func() {
341341
BeforeEach(func() {
342342
fakeActor.GetSpaceSummaryByNameAndOrganizationReturns(
343-
resources.SpaceSummary{},
343+
v7action.SpaceSummary{},
344344
v7action.Warnings{"some-warning"},
345345
errors.New("get-summary-error"),
346346
)

command/v7/v7fakes/fake_actor.go

+10-10
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

resources/space_resource.go

-12
Original file line numberDiff line numberDiff line change
@@ -11,15 +11,3 @@ type Space struct {
1111
// Metadata is used for custom tagging of API resources
1212
Metadata *Metadata `json:"metadata,omitempty"`
1313
}
14-
15-
type SpaceSummary struct {
16-
Space Space
17-
Name string
18-
OrgName string
19-
AppNames []string
20-
ServiceInstanceNames []string
21-
IsolationSegmentName string
22-
QuotaName string
23-
RunningSecurityGroups []SecurityGroup
24-
StagingSecurityGroups []SecurityGroup
25-
}

0 commit comments

Comments
 (0)