Skip to content

Commit cf99310

Browse files
authored
Merge branch 'main' into main_apps_cmd_process_instances
2 parents b931694 + 877df8e commit cf99310

34 files changed

Lines changed: 1803 additions & 117 deletions

.github/workflows/check-cves.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ jobs:
2626
if: always()
2727

2828
- name: Archive CVE scan results
29-
uses: actions/upload-artifact@v6
29+
uses: actions/upload-artifact@v7
3030
if: always()
3131
with:
3232
name: cve-scan-results-${{ github.sha }}-${{ github.run_id }}-${{ github.run_number }}

.github/workflows/release-build-sign-upload.yml

Lines changed: 15 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -169,7 +169,7 @@ jobs:
169169
make out/cf-cli_linux_arm64
170170
171171
- name: Store Linux Binaries
172-
uses: actions/upload-artifact@v6
172+
uses: actions/upload-artifact@v7
173173
with:
174174
if-no-files-found: error
175175
name: cf-cli-linux-binaries
@@ -274,7 +274,7 @@ jobs:
274274
working-directory: signed-redhat-installer
275275

276276
- name: Store Signed Linux RPM Packages
277-
uses: actions/upload-artifact@v6
277+
uses: actions/upload-artifact@v7
278278
with:
279279
if-no-files-found: error
280280
name: cf-cli-linux-rpm-packages
@@ -375,7 +375,7 @@ jobs:
375375
working-directory: packaged-deb
376376

377377
- name: Store Debian Packages
378-
uses: actions/upload-artifact@v6
378+
uses: actions/upload-artifact@v7
379379
with:
380380
if-no-files-found: error
381381
name: cf-cli-linux-deb-packages
@@ -465,7 +465,7 @@ jobs:
465465
make out/cf-cli_macosarm
466466
467467
- name: Store macOS Binaries
468-
uses: actions/upload-artifact@v6
468+
uses: actions/upload-artifact@v7
469469
with:
470470
if-no-files-found: error
471471
name: cf-cli-macos-binaries
@@ -605,7 +605,7 @@ jobs:
605605
"signed-macos-installer/cf${VERSION_MAJOR}-cli-installer_${VERSION_BUILD}_macosarm.pkg"
606606
607607
- name: Store macOS Signed Packages
608-
uses: actions/upload-artifact@v6
608+
uses: actions/upload-artifact@v7
609609
with:
610610
if-no-files-found: error
611611
name: cf-cli-macos-packages
@@ -691,7 +691,7 @@ jobs:
691691
New-Item -ItemType SymbolicLink -Target .\out\cf-cli_winx64.exe -Path .\out\cf-cli_winx64-link.exe
692692
693693
- name: Save signed binaries as a GitHub Action Artifact
694-
uses: actions/upload-artifact@v6
694+
uses: actions/upload-artifact@v7
695695
with:
696696
name: cf-cli-windows-binaries
697697
if-no-files-found: error
@@ -736,7 +736,7 @@ jobs:
736736
Get-ChildItem "${env:RUNNER_TEMP}"
737737
738738
- name: Save installer and dist files as a GitHub Action Artifact
739-
uses: actions/upload-artifact@v6
739+
uses: actions/upload-artifact@v7
740740
with:
741741
name: cf-cli-windows-packages
742742
if-no-files-found: error
@@ -771,7 +771,7 @@ jobs:
771771
uses: actions/checkout@v6
772772

773773
- name: Download signed artifacts
774-
uses: actions/download-artifact@v7
774+
uses: actions/download-artifact@v8
775775
with:
776776
path: signed # download all artifacts to 'signed/'
777777

@@ -857,7 +857,7 @@ jobs:
857857
signed/winx64/*zip
858858
859859
- name: Store Artifacts
860-
uses: actions/upload-artifact@v6
860+
uses: actions/upload-artifact@v7
861861
with:
862862
if-no-files-found: error
863863
name: final-artifacts
@@ -894,7 +894,7 @@ jobs:
894894
steps:
895895

896896
- name: Download Signed Linux Packages
897-
uses: actions/download-artifact@v7
897+
uses: actions/download-artifact@v8
898898
with:
899899
name: cf-cli-linux-rpm-packages
900900

@@ -921,7 +921,7 @@ jobs:
921921
steps:
922922

923923
- name: Download Signed Linux Packages
924-
uses: actions/download-artifact@v7
924+
uses: actions/download-artifact@v8
925925
with:
926926
name: cf-cli-linux-deb-packages
927927

@@ -949,7 +949,7 @@ jobs:
949949
steps:
950950

951951
- name: Download Signed macOS Packages
952-
uses: actions/download-artifact@v7
952+
uses: actions/download-artifact@v8
953953
with:
954954
name: cf-cli-macos-packages
955955

@@ -973,7 +973,7 @@ jobs:
973973
steps:
974974

975975
- name: Download Signed Windows Binaries
976-
uses: actions/download-artifact@v7
976+
uses: actions/download-artifact@v8
977977
with:
978978
name: cf-cli-windows-binaries
979979

@@ -983,7 +983,7 @@ jobs:
983983
Get-AuthenticodeSignature -Verbose -ErrorAction Stop .\cf-cli_winx64.exe
984984
985985
- name: Download Signed Windows Binaries
986-
uses: actions/download-artifact@v7
986+
uses: actions/download-artifact@v8
987987
with:
988988
name: cf-cli-windows-packages
989989

@@ -1013,7 +1013,7 @@ jobs:
10131013
- s3-upload
10141014
steps:
10151015
- name: Download signed artifacts
1016-
uses: actions/download-artifact@v7
1016+
uses: actions/download-artifact@v8
10171017
with:
10181018
name: final-artifacts
10191019
path: ${{ env.ARTIFACTS_DIR }}

.github/workflows/release-update-repos.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -385,7 +385,7 @@ jobs:
385385
# ls -R
386386
#
387387
# - name: Backup current Linux RPM repodata
388-
# uses: actions/upload-artifact@v6
388+
# uses: actions/upload-artifact@v7
389389
# with:
390390
# if-no-files-found: error
391391
# name: cf-cli-linux-rpm-repodata-backup
@@ -432,7 +432,7 @@ jobs:
432432
run: ls -R
433433

434434
- name: Store Linux RPM repodata
435-
uses: actions/upload-artifact@v6
435+
uses: actions/upload-artifact@v7
436436
with:
437437
if-no-files-found: error
438438
name: cf-cli-linux-rpm-repodata

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -70,3 +70,4 @@ integration/assets/test_plugin/test_plugin
7070
.vscode
7171
.secrets
7272
.vars
73+
.patch

actor/v7action/cloud_controller_client.go

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -116,6 +116,7 @@ type CloudControllerClient interface {
116116
GetServiceBrokers(query ...ccv3.Query) ([]resources.ServiceBroker, ccv3.Warnings, error)
117117
GetServiceCredentialBindings(query ...ccv3.Query) ([]resources.ServiceCredentialBinding, ccv3.Warnings, error)
118118
GetServiceCredentialBindingDetails(guid string) (resources.ServiceCredentialBindingDetails, ccv3.Warnings, error)
119+
GetServiceInstanceByGUID(serviceInstanceGUID string) (resources.ServiceInstance, ccv3.Warnings, error)
119120
GetServiceInstanceByNameAndSpace(name, spaceGUID string, query ...ccv3.Query) (resources.ServiceInstance, ccv3.IncludedResources, ccv3.Warnings, error)
120121
GetServiceInstanceParameters(serviceInstanceGUID string) (types.JSONObject, ccv3.Warnings, error)
121122
GetServiceInstanceSharedSpaces(serviceInstanceGUID string) ([]ccv3.SpaceWithOrganization, ccv3.Warnings, error)
@@ -143,7 +144,7 @@ type CloudControllerClient interface {
143144
GetUser(userGUID string) (resources.User, ccv3.Warnings, error)
144145
GetUsers(query ...ccv3.Query) ([]resources.User, ccv3.Warnings, error)
145146
MakeRequestSendReceiveRaw(Method string, URL string, headers http.Header, requestBody []byte) ([]byte, *http.Response, error)
146-
MapRoute(routeGUID string, appGUID string, destinationProtocol string) (ccv3.Warnings, error)
147+
MapRoute(routeGUID string, appGUID string, destinationProtocol string, destinationPort int) (ccv3.Warnings, error)
147148
MoveRoute(routeGUID string, spaceGUID string) (ccv3.Warnings, error)
148149
PollJob(jobURL ccv3.JobURL) (ccv3.Warnings, error)
149150
PollJobForState(jobURL ccv3.JobURL, state constant.JobState) (ccv3.Warnings, error)

actor/v7action/route.go

Lines changed: 17 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ type RouteSummary struct {
2121
resources.Route
2222
AppNames []string
2323
AppProtocols []string
24+
AppPorts []string
2425
DomainName string
2526
SpaceName string
2627
ServiceInstanceName string
@@ -279,9 +280,13 @@ func (actor Actor) GetRouteSummaries(routes []resources.Route) ([]RouteSummary,
279280
var appNames []string
280281

281282
protocolSet := map[string]bool{}
283+
portSet := map[int]bool{}
282284
for _, destination := range route.Destinations {
283285
appNames = append(appNames, appNamesByGUID[destination.App.GUID])
284286
protocolSet[destination.Protocol] = true
287+
if destination.Port > 0 {
288+
portSet[destination.Port] = true
289+
}
285290
}
286291

287292
var appProtocols []string
@@ -293,10 +298,20 @@ func (actor Actor) GetRouteSummaries(routes []resources.Route) ([]RouteSummary,
293298
sort.Strings(appProtocols)
294299
}
295300

301+
var appPorts []string
302+
if len(portSet) > 0 {
303+
appPorts = make([]string, 0, len(portSet))
304+
for key := range portSet {
305+
appPorts = append(appPorts, strconv.Itoa(key))
306+
}
307+
sort.Strings(appPorts)
308+
}
309+
296310
routeSummaries = append(routeSummaries, RouteSummary{
297311
Route: route,
298312
AppNames: appNames,
299313
AppProtocols: appProtocols,
314+
AppPorts: appPorts,
300315
SpaceName: spaceNamesByGUID[route.SpaceGUID],
301316
DomainName: getDomainName(route.URL, route.Host, route.Path, route.Port),
302317
ServiceInstanceName: serviceInstanceNameByRouteGUID[route.GUID],
@@ -397,8 +412,8 @@ func (actor Actor) GetRouteByAttributes(domain resources.Domain, hostname string
397412
return routes[0], Warnings(ccWarnings), nil
398413
}
399414

400-
func (actor Actor) MapRoute(routeGUID string, appGUID string, destinationProtocol string) (Warnings, error) {
401-
warnings, err := actor.CloudControllerClient.MapRoute(routeGUID, appGUID, destinationProtocol)
415+
func (actor Actor) MapRoute(routeGUID string, appGUID string, destinationProtocol string, destinationPort int) (Warnings, error) {
416+
warnings, err := actor.CloudControllerClient.MapRoute(routeGUID, appGUID, destinationProtocol, destinationPort)
402417
return Warnings(warnings), err
403418
}
404419

actor/v7action/route_test.go

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1581,19 +1581,21 @@ var _ = Describe("Route Actions", func() {
15811581
routeGUID string
15821582
appGUID string
15831583
destinationProtocol string
1584+
destinationPort int
15841585

15851586
executeErr error
15861587
warnings Warnings
15871588
)
15881589

15891590
JustBeforeEach(func() {
1590-
warnings, executeErr = actor.MapRoute(routeGUID, appGUID, destinationProtocol)
1591+
warnings, executeErr = actor.MapRoute(routeGUID, appGUID, destinationProtocol, destinationPort)
15911592
})
15921593

15931594
BeforeEach(func() {
15941595
routeGUID = "route-guid"
15951596
appGUID = "app-guid"
15961597
destinationProtocol = "http2"
1598+
destinationPort = 8080
15971599
})
15981600

15991601
When("the cloud controller client errors", func() {
@@ -1613,10 +1615,11 @@ var _ = Describe("Route Actions", func() {
16131615
})
16141616

16151617
It("calls the cloud controller client with the right arguments", func() {
1616-
actualRouteGUID, actualAppGUID, actualDestinationProtocol := fakeCloudControllerClient.MapRouteArgsForCall(0)
1618+
actualRouteGUID, actualAppGUID, actualDestinationProtocol, actualDestinationPort := fakeCloudControllerClient.MapRouteArgsForCall(0)
16171619
Expect(actualRouteGUID).To(Equal("route-guid"))
16181620
Expect(actualAppGUID).To(Equal("app-guid"))
16191621
Expect(actualDestinationProtocol).To(Equal("http2"))
1622+
Expect(actualDestinationPort).To(Equal(8080))
16201623
})
16211624

16221625
It("returns the error and warnings", func() {

actor/v7action/service_app_binding.go

Lines changed: 45 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,11 @@ type CreateServiceAppBindingParams struct {
1818
Strategy resources.BindingStrategyType
1919
}
2020

21+
type ListAppBindingParams struct {
22+
SpaceGUID string
23+
AppName string
24+
}
25+
2126
type ListServiceAppBindingParams struct {
2227
SpaceGUID string
2328
ServiceInstanceName string
@@ -65,6 +70,33 @@ func (actor Actor) CreateServiceAppBinding(params CreateServiceAppBindingParams)
6570
}
6671
}
6772

73+
func (actor Actor) ListAppBindings(params ListAppBindingParams) ([]resources.ServiceCredentialBinding, Warnings, error) {
74+
var (
75+
app resources.Application
76+
bindings []resources.ServiceCredentialBinding
77+
)
78+
79+
warnings, err := railway.Sequentially(
80+
func() (warnings ccv3.Warnings, err error) {
81+
app, warnings, err = actor.CloudControllerClient.GetApplicationByNameAndSpace(params.AppName, params.SpaceGUID)
82+
return
83+
},
84+
func() (warnings ccv3.Warnings, err error) {
85+
bindings, warnings, err = actor.getServiceAppBindings("", app.GUID)
86+
return
87+
},
88+
)
89+
90+
switch err.(type) {
91+
case nil:
92+
return bindings, Warnings(warnings), nil
93+
case ccerror.ApplicationNotFoundError:
94+
return nil, Warnings(warnings), actionerror.ApplicationNotFoundError{Name: params.AppName}
95+
default:
96+
return nil, Warnings(warnings), err
97+
}
98+
}
99+
68100
func (actor Actor) ListServiceAppBindings(params ListServiceAppBindingParams) ([]resources.ServiceCredentialBinding, Warnings, error) {
69101
var (
70102
serviceInstance resources.ServiceInstance
@@ -144,16 +176,24 @@ func (actor Actor) createServiceAppBinding(serviceInstanceGUID, appGUID, binding
144176
}
145177

146178
func (actor Actor) getServiceAppBindings(serviceInstanceGUID, appGUID string) ([]resources.ServiceCredentialBinding, ccv3.Warnings, error) {
147-
bindings, warnings, err := actor.CloudControllerClient.GetServiceCredentialBindings(
148-
ccv3.Query{Key: ccv3.TypeFilter, Values: []string{"app"}},
149-
ccv3.Query{Key: ccv3.ServiceInstanceGUIDFilter, Values: []string{serviceInstanceGUID}},
150-
ccv3.Query{Key: ccv3.AppGUIDFilter, Values: []string{appGUID}},
151-
)
179+
queries := []ccv3.Query{
180+
{Key: ccv3.TypeFilter, Values: []string{"app"}},
181+
{Key: ccv3.AppGUIDFilter, Values: []string{appGUID}},
182+
}
183+
if serviceInstanceGUID != "" {
184+
queries = append(queries, ccv3.Query{Key: ccv3.ServiceInstanceGUIDFilter, Values: []string{serviceInstanceGUID}})
185+
}
186+
187+
bindings, warnings, err := actor.CloudControllerClient.GetServiceCredentialBindings(queries...)
152188

153189
switch {
154190
case err != nil:
155191
return []resources.ServiceCredentialBinding{}, warnings, err
156192
case len(bindings) == 0:
193+
// If no specific service instance is requested, return empty set without error.
194+
if serviceInstanceGUID == "" {
195+
return []resources.ServiceCredentialBinding{}, warnings, nil
196+
}
157197
return []resources.ServiceCredentialBinding{}, warnings, actionerror.ServiceBindingNotFoundError{
158198
AppGUID: appGUID,
159199
ServiceInstanceGUID: serviceInstanceGUID,

0 commit comments

Comments
 (0)