Skip to content
This repository was archived by the owner on Jul 28, 2020. It is now read-only.

Commit 6a4640a

Browse files
Anthony Emengojoaopapereira
authored andcommitted
Support comma separated list of services in 'isServiceSupported'
[#161730948] Signed-off-by: Joao Pereira <[email protected]>
1 parent 3acd264 commit 6a4640a

File tree

2 files changed

+75
-2
lines changed

2 files changed

+75
-2
lines changed

cmd/start/start.go

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -351,6 +351,16 @@ func (s *Start) isServiceSupported(service string, services []provision.Service)
351351
return true
352352
}
353353

354+
for _, s := range strings.Split(service, ",") {
355+
if !contains(services, s) {
356+
return false
357+
}
358+
}
359+
360+
return true
361+
}
362+
363+
func contains(services []provision.Service, service string) bool {
354364
for _, s := range services {
355365
if strings.ToLower(s.Flagname) == strings.ToLower(service) {
356366
return true

cmd/start/start_test.go

Lines changed: 65 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -859,7 +859,70 @@ var _ = Describe("Start", func() {
859859
})
860860
})
861861

862-
Context("arg is an unsupported service", func() {
862+
Context("arg is multiple services", func() {
863+
It("deploys all the specified services", func() {
864+
if runtime.GOOS == "darwin" {
865+
mockUI.EXPECT().Say("Installing cfdevd network helper...")
866+
mockCFDevD.EXPECT().Install()
867+
}
868+
869+
gomock.InOrder(
870+
mockToggle.EXPECT().SetProp("type", "cf"),
871+
mockSystemProfiler.EXPECT().GetAvailableMemory().Return(uint64(111), nil),
872+
mockSystemProfiler.EXPECT().GetTotalMemory().Return(uint64(222), nil),
873+
mockHost.EXPECT().CheckRequirements(),
874+
mockHypervisor.EXPECT().IsRunning("cfdev").Return(false, nil),
875+
mockStop.EXPECT().RunE(nil, nil),
876+
mockEnv.EXPECT().CreateDirs(),
877+
878+
mockHostNet.EXPECT().AddLoopbackAliases("some-bosh-director-ip", "some-cf-router-ip"),
879+
mockUI.EXPECT().Say("Downloading Resources..."),
880+
mockCache.EXPECT().Sync(resource.Catalog{
881+
Items: []resource.Item{
882+
{Name: "some-item"},
883+
{Name: "cfdev-deps.tgz"},
884+
},
885+
}),
886+
mockUI.EXPECT().Say("Setting State..."),
887+
mockEnv.EXPECT().SetupState(),
888+
mockMetadataReader.EXPECT().Read(filepath.Join(cacheDir, "metadata.yml")).Return(metadata, nil),
889+
890+
mockAnalyticsClient.EXPECT().PromptOptInIfNeeded(""),
891+
mockAnalyticsClient.EXPECT().Event(cfanalytics.START_BEGIN, map[string]interface{}{
892+
"total memory": uint64(222),
893+
"available memory": uint64(111),
894+
}),
895+
mockAnalyticsClient.EXPECT().Event(cfanalytics.SELECTED_SERVICE, map[string]interface{}{"services_requested": "some-service-flagname,some-other-service-flagname"}),
896+
mockSystemProfiler.EXPECT().GetAvailableMemory().Return(uint64(10000), nil),
897+
mockUI.EXPECT().Say("Creating the VM..."),
898+
mockHypervisor.EXPECT().CreateVM(hypervisor.VM{
899+
Name: "cfdev",
900+
CPUs: 7,
901+
MemoryMB: 8765,
902+
}),
903+
mockUI.EXPECT().Say("Starting VPNKit..."),
904+
mockVpnKit.EXPECT().Start(),
905+
mockVpnKit.EXPECT().Watch(localExitChan),
906+
mockUI.EXPECT().Say("Starting the VM..."),
907+
mockHypervisor.EXPECT().Start("cfdev"),
908+
mockUI.EXPECT().Say("Waiting for the VM..."),
909+
mockProvisioner.EXPECT().Ping(),
910+
mockProvision.EXPECT().Execute(start.Args{Cpus: 7, Mem: 0, DeploySingleService: "some-service-flagname,some-other-service-flagname"}),
911+
912+
mockToggle.EXPECT().Enabled().Return(true),
913+
mockAnalyticsD.EXPECT().Start(),
914+
mockAnalyticsClient.EXPECT().Event(cfanalytics.START_END),
915+
)
916+
917+
Expect(startCmd.Execute(start.Args{
918+
Cpus: 7,
919+
Mem: 0,
920+
DeploySingleService: "some-service-flagname,some-other-service-flagname",
921+
})).To(Succeed())
922+
})
923+
})
924+
925+
Context("one of the args is an unsupported service", func() {
863926
It("returns an error message and does not execute start command", func() {
864927
if runtime.GOOS == "darwin" {
865928
mockUI.EXPECT().Say("Installing cfdevd network helper...")
@@ -897,7 +960,7 @@ var _ = Describe("Start", func() {
897960
Expect(startCmd.Execute(start.Args{
898961
Cpus: 7,
899962
Mem: 6666,
900-
DeploySingleService: "non-existent-service",
963+
DeploySingleService: "some-service-flagname,non-existent-service",
901964
}).Error()).To(ContainSubstring("is not supported"))
902965
})
903966
})

0 commit comments

Comments
 (0)