Skip to content

Commit 8dbc9d2

Browse files
author
Steve Salas
committed
Accept defaults during custom reservation prompts
1 parent 330c19a commit 8dbc9d2

File tree

5 files changed

+173
-12
lines changed

5 files changed

+173
-12
lines changed

setup/steps/cpu.ps1

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -120,7 +120,12 @@ Note: You can skip making a reservation by accepting the default value.
120120
$question.response += 'm'
121121
}
122122

123-
return $this.HandleCpuResponse($question.response)
123+
$response = $question.response
124+
if ($question.isResponseEmpty) {
125+
$response = $this.GetDefault()
126+
}
127+
128+
return $this.HandleCpuResponse($response)
124129
}
125130

126131
[bool]HandleCpuResponse([string] $cpu) {

setup/steps/ephemeralstorage.ps1

Lines changed: 14 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -125,7 +125,12 @@ Note: You can skip making a reservation by accepting the default value.
125125
$question.response += 'Mi'
126126
}
127127

128-
return $this.HandleStorageResponse($question.response)
128+
$response = $question.response
129+
if ($question.isResponseEmpty) {
130+
$response = $this.GetDefault()
131+
}
132+
133+
return $this.HandleStorageResponse($response)
129134
}
130135

131136
[bool]HandleStorageResponse([string] $storage) {
@@ -145,7 +150,7 @@ class NginxEphemeralStorage : EphemeralStorageStep {
145150
$config) {}
146151

147152
[bool]HandleStorageResponse([string] $storage) {
148-
$this.config.nginxEphemeralStorageReservation = $this.storage
153+
$this.config.nginxEphemeralStorageReservation = $storage
149154
return $true
150155
}
151156

@@ -170,12 +175,12 @@ class CodeDxEphemeralStorage : EphemeralStorageStep {
170175
$config) {}
171176

172177
[bool]HandleStorageResponse([string] $storage) {
173-
$this.config.codeDxEphemeralStorageReservation = $this.storage
178+
$this.config.codeDxEphemeralStorageReservation = $storage
174179
return $true
175180
}
176181

177182
[void]Reset(){
178-
$this.config.codeDxEphemeralStorageReservation = '2048Mi'
183+
$this.config.codeDxEphemeralStorageReservation = $this.GetDefault()
179184
}
180185

181186
[void]ApplyDefault() {
@@ -195,7 +200,7 @@ class MasterDatabaseEphemeralStorage : EphemeralStorageStep {
195200
$config) {}
196201

197202
[bool]HandleStorageResponse([string] $storage) {
198-
$this.config.dbMasterEphemeralStorageReservation = $this.storage
203+
$this.config.dbMasterEphemeralStorageReservation = $storage
199204
return $true
200205
}
201206

@@ -220,7 +225,7 @@ class SubordinateDatabaseEphemeralStorage : EphemeralStorageStep {
220225
$config) {}
221226

222227
[bool]HandleStorageResponse([string] $storage) {
223-
$this.config.dbSlaveEphemeralStorageReservation = $this.storage
228+
$this.config.dbSlaveEphemeralStorageReservation = $storage
224229
return $true
225230
}
226231

@@ -245,7 +250,7 @@ class ToolServiceEphemeralStorage : EphemeralStorageStep {
245250
$config) {}
246251

247252
[bool]HandleStorageResponse([string] $storage) {
248-
$this.config.toolServiceEphemeralStorageReservation = $this.storage
253+
$this.config.toolServiceEphemeralStorageReservation = $storage
249254
return $true
250255
}
251256

@@ -270,7 +275,7 @@ class MinIOEphemeralStorage : EphemeralStorageStep {
270275
$config) {}
271276

272277
[bool]HandleStorageResponse([string] $storage) {
273-
$this.config.minioEphemeralStorageReservation = $this.storage
278+
$this.config.minioEphemeralStorageReservation = $storage
274279
return $true
275280
}
276281

@@ -295,7 +300,7 @@ class WorkflowEphemeralStorage : EphemeralStorageStep {
295300
$config) {}
296301

297302
[bool]HandleStorageResponse([string] $storage) {
298-
$this.config.workflowEphemeralStorageReservation = $this.storage
303+
$this.config.workflowEphemeralStorageReservation = $storage
299304
return $true
300305
}
301306

setup/steps/memory.ps1

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -117,7 +117,12 @@ Note: You can skip making a reservation by accepting the default value.
117117
$question.response += 'Mi'
118118
}
119119

120-
return $this.HandleMemoryResponse($question.response)
120+
$response = $question.response
121+
if ($question.isResponseEmpty) {
122+
$response = $this.GetDefault()
123+
}
124+
125+
return $this.HandleMemoryResponse($response)
121126
}
122127

123128
[bool]HandleMemoryResponse([string] $cpu) {

test/guided-setup.tests.ps1

Lines changed: 27 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -216,7 +216,7 @@ Describe 'Generate Setup Commands' {
216216

217217
$runSetupFile = join-path $TestDrive run-setup.ps1
218218
$runSetupFile | Should -Exist
219-
$expectedParams = "-kubeContextName 'minikube' -kubeApiTargetPort '8443' -namespaceCodeDx 'cdx-app' -releaseNameCodeDx 'codedx' -clusterCertificateAuthorityCertPath 'ca.crt' -codeDxMemoryReservation '501Mi' -dbMasterMemoryReservation '502Mi' -dbSlaveMemoryReservation '503Mi' -toolServiceMemoryReservation '504Mi' -minioMemoryReservation '505Mi' -workflowMemoryReservation '506Mi' -codeDxCPUReservation '1001m' -dbMasterCPUReservation '1002m' -dbSlaveCPUReservation '1003m' -toolServiceCPUReservation '1004m' -minioCPUReservation '1005m' -workflowCPUReservation '1006m' -storageClassName 'default' -codedxAdminPwd 'my-codedx-password' -skipIngressEnabled -skipIngressAssumesNginx -codeDxVolumeSizeGiB 20 -codeDxTlsServicePortNumber 9443 -dbVolumeSizeGiB 25 -dbSlaveVolumeSizeGiB 30 -dbSlaveReplicaCount 1 -mariadbRootPwd 'my-root-db-password' -mariadbReplicatorPwd 'my-replication-db-password' -minioVolumeSizeGiB 35 -toolServiceReplicas 2 -namespaceToolOrchestration 'cdx-svc' -releaseNameToolOrchestration 'codedx-tool-orchestration' -toolServiceApiKey 'my-tool-service-password' -minioAdminPwd 'my-minio-password' -skipNginxIngressControllerInstall -skipLetsEncryptCertManagerInstall"
219+
$expectedParams = "-kubeContextName 'minikube' -kubeApiTargetPort '8443' -namespaceCodeDx 'cdx-app' -releaseNameCodeDx 'codedx' -clusterCertificateAuthorityCertPath 'ca.crt' -codeDxMemoryReservation '501Mi' -dbMasterMemoryReservation '502Mi' -dbSlaveMemoryReservation '503Mi' -toolServiceMemoryReservation '504Mi' -minioMemoryReservation '505Mi' -workflowMemoryReservation '506Mi' -codeDxCPUReservation '1001m' -dbMasterCPUReservation '1002m' -dbSlaveCPUReservation '1003m' -toolServiceCPUReservation '1004m' -minioCPUReservation '1005m' -workflowCPUReservation '1006m' -codeDxEphemeralStorageReservation '1025Mi' -dbMasterEphemeralStorageReservation '1026Mi' -dbSlaveEphemeralStorageReservation '1027Mi' -toolServiceEphemeralStorageReservation '1028Mi' -minioEphemeralStorageReservation '1029Mi' -workflowEphemeralStorageReservation '1030Mi' -storageClassName 'default' -codedxAdminPwd 'my-codedx-password' -skipIngressEnabled -skipIngressAssumesNginx -codeDxVolumeSizeGiB 20 -codeDxTlsServicePortNumber 9443 -dbVolumeSizeGiB 25 -dbSlaveVolumeSizeGiB 30 -dbSlaveReplicaCount 1 -mariadbRootPwd 'my-root-db-password' -mariadbReplicatorPwd 'my-replication-db-password' -minioVolumeSizeGiB 35 -toolServiceReplicas 2 -namespaceToolOrchestration 'cdx-svc' -releaseNameToolOrchestration 'codedx-tool-orchestration' -toolServiceApiKey 'my-tool-service-password' -minioAdminPwd 'my-minio-password' -skipNginxIngressControllerInstall -skipLetsEncryptCertManagerInstall"
220220
Test-SetupParameters $PSScriptRoot $runSetupFile $TestDrive $expectedParams | Should -BeTrue
221221
}
222222

@@ -245,4 +245,30 @@ Describe 'Generate Setup Commands' {
245245
$expectedParams = "-kubeContextName 'minikube' -kubeApiTargetPort '8443' -namespaceCodeDx 'cdx-app' -releaseNameCodeDx 'codedx' -clusterCertificateAuthorityCertPath 'ca.crt' -imageCodeDxTomcat 'codedx-tomcat' -imageCodeDxToolsMono 'codedx-toolsmono' -imageNewAnalysis 'codedx-newanalysis' -imageSendResults 'codedx-sendresults' -imageSendErrorResults 'codedx-senderrorresults' -imageToolService 'codedx-toolservice' -imagePreDelete 'codedx-cleanup' -storageClassName 'default' -codedxAdminPwd 'my-codedx-password' -skipIngressEnabled -skipIngressAssumesNginx -codeDxVolumeSizeGiB 64 -codeDxTlsServicePortNumber 9443 -dbVolumeSizeGiB 64 -dbSlaveVolumeSizeGiB 64 -dbSlaveReplicaCount 1 -mariadbRootPwd 'my-root-db-password' -mariadbReplicatorPwd 'my-replication-db-password' -minioVolumeSizeGiB 64 -toolServiceReplicas 2 -namespaceToolOrchestration 'cdx-svc' -releaseNameToolOrchestration 'codedx-tool-orchestration' -toolServiceApiKey 'my-tool-service-password' -minioAdminPwd 'my-minio-password' -skipNginxIngressControllerInstall -skipLetsEncryptCertManagerInstall"
246246
Test-SetupParameters $PSScriptRoot $runSetupFile $TestDrive $expectedParams | Should -BeTrue
247247
}
248+
249+
It '(16) Should generate minikube setup.ps1 command with default reservations' -Tag 'Resources' {
250+
251+
Set-PassWithDefaultResourceReservations 1 # save w/o prereqs command
252+
253+
New-Mocks
254+
. ./guided-setup.ps1
255+
256+
$runSetupFile = join-path $TestDrive run-setup.ps1
257+
$runSetupFile | Should -Exist
258+
$expectedParams = "-kubeContextName 'minikube' -kubeApiTargetPort '8443' -namespaceCodeDx 'cdx-app' -releaseNameCodeDx 'codedx' -clusterCertificateAuthorityCertPath 'ca.crt' -codeDxMemoryReservation '8192Mi' -dbMasterMemoryReservation '8192Mi' -dbSlaveMemoryReservation '8192Mi' -toolServiceMemoryReservation '500Mi' -minioMemoryReservation '5120Mi' -workflowMemoryReservation '500Mi' -codeDxCPUReservation '2000m' -dbMasterCPUReservation '2000m' -dbSlaveCPUReservation '1000m' -minioCPUReservation '2000m' -codeDxEphemeralStorageReservation '2048Mi' -storageClassName 'default' -codedxAdminPwd 'my-codedx-password' -skipIngressEnabled -skipIngressAssumesNginx -codeDxVolumeSizeGiB 64 -codeDxTlsServicePortNumber 9443 -dbVolumeSizeGiB 64 -dbSlaveVolumeSizeGiB 64 -dbSlaveReplicaCount 1 -mariadbRootPwd 'my-root-db-password' -mariadbReplicatorPwd 'my-replication-db-password' -minioVolumeSizeGiB 64 -toolServiceReplicas 2 -namespaceToolOrchestration 'cdx-svc' -releaseNameToolOrchestration 'codedx-tool-orchestration' -toolServiceApiKey 'my-tool-service-password' -minioAdminPwd 'my-minio-password' -skipNginxIngressControllerInstall -skipLetsEncryptCertManagerInstall"
259+
Test-SetupParameters $PSScriptRoot $runSetupFile $TestDrive $expectedParams | Should -BeTrue
260+
}
261+
262+
It '(17) Should generate minikube setup.ps1 command with custom, accepting default, reservations' -Tag 'Resources' {
263+
264+
Set-PassWithCustomAcceptingDefaultResourceReservations 1 # save w/o prereqs command
265+
266+
New-Mocks
267+
. ./guided-setup.ps1
268+
269+
$runSetupFile = join-path $TestDrive run-setup.ps1
270+
$runSetupFile | Should -Exist
271+
$expectedParams = "-kubeContextName 'minikube' -kubeApiTargetPort '8443' -namespaceCodeDx 'cdx-app' -releaseNameCodeDx 'codedx' -clusterCertificateAuthorityCertPath 'ca.crt' -codeDxMemoryReservation '8192Mi' -dbMasterMemoryReservation '8192Mi' -dbSlaveMemoryReservation '8192Mi' -toolServiceMemoryReservation '500Mi' -minioMemoryReservation '5120Mi' -workflowMemoryReservation '500Mi' -codeDxCPUReservation '2000m' -dbMasterCPUReservation '2000m' -dbSlaveCPUReservation '1000m' -minioCPUReservation '2000m' -codeDxEphemeralStorageReservation '2048Mi' -storageClassName 'default' -codedxAdminPwd 'my-codedx-password' -skipIngressEnabled -skipIngressAssumesNginx -codeDxVolumeSizeGiB 64 -codeDxTlsServicePortNumber 9443 -dbVolumeSizeGiB 64 -dbSlaveVolumeSizeGiB 64 -dbSlaveReplicaCount 1 -mariadbRootPwd 'my-root-db-password' -mariadbReplicatorPwd 'my-replication-db-password' -minioVolumeSizeGiB 64 -toolServiceReplicas 2 -namespaceToolOrchestration 'cdx-svc' -releaseNameToolOrchestration 'codedx-tool-orchestration' -toolServiceApiKey 'my-tool-service-password' -minioAdminPwd 'my-minio-password' -skipNginxIngressControllerInstall -skipLetsEncryptCertManagerInstall"
272+
Test-SetupParameters $PSScriptRoot $runSetupFile $TestDrive $expectedParams | Should -BeTrue
273+
}
248274
}

test/pass.ps1

Lines changed: 120 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -617,3 +617,123 @@ function Set-SomeDockerImageNames([int] $saveOption) {
617617
$global:inputs.enqueue('default') # storage class name
618618
$global:inputs.enqueue($saveOption) # next step save option
619619
}
620+
621+
function Set-PassWithDefaultResourceReservations([int] $saveOption) {
622+
$global:inputs = new-object collections.queue
623+
$global:inputs.enqueue($null) # welcome
624+
$global:inputs.enqueue($null) # prereqs
625+
$global:inputs.enqueue($TestDrive) # workdir
626+
$global:inputs.enqueue(0) # choose minikube env
627+
$global:inputs.enqueue(0) # choose minikube context
628+
$global:inputs.enqueue(0) # select context
629+
$global:inputs.enqueue(0) # choose default port
630+
$global:inputs.enqueue(0) # choose tool orchestration
631+
$global:inputs.enqueue(1) # skip external db
632+
$global:inputs.enqueue(0) # choose default deployment options
633+
$global:inputs.enqueue('ca.crt') # specify cluster cert
634+
$global:inputs.enqueue('cdx-app') # specify namespace
635+
$global:inputs.enqueue('codedx') # specify release name
636+
$global:inputs.enqueue('cdx-svc') # specify namespace
637+
$global:inputs.enqueue('codedx-tool-orchestration') # specify release name
638+
$global:inputs.enqueue((New-Password 'my-root-db-password')) # specify root db pwd
639+
$global:inputs.enqueue((New-Password 'my-root-db-password')) # specify root db pwd confirm
640+
$global:inputs.enqueue((New-Password 'my-replication-db-password')) # specify replication pwd
641+
$global:inputs.enqueue((New-Password 'my-replication-db-password')) # specify replication pwd confirm
642+
$global:inputs.enqueue(1) # specify db replicas
643+
$global:inputs.enqueue(0) # choose default cacerts
644+
$global:inputs.enqueue((New-Password 'my-codedx-password')) # specify cdx pwd
645+
$global:inputs.enqueue((New-Password 'my-codedx-password')) # specify cdx pwd confirm
646+
$global:inputs.enqueue((New-Password 'my-tool-service-password')) # specify tool service pwd
647+
$global:inputs.enqueue((New-Password 'my-tool-service-password')) # specify tool service pwd confirm
648+
$global:inputs.enqueue((New-Password 'my-minio-password')) # specify MinIO pwd
649+
$global:inputs.enqueue((New-Password 'my-minio-password')) # specify MinIO pwd confirm
650+
$global:inputs.enqueue(2) # specify tool service replicas
651+
$global:inputs.enqueue(1) # skip private reg
652+
$global:inputs.enqueue(0) # choose default Docker images
653+
$global:inputs.enqueue(0) # skip ingress
654+
$global:inputs.enqueue(0) # use local accounts
655+
$global:inputs.enqueue(0) # choose default cpu reservation
656+
$global:inputs.enqueue(0) # choose default memory reservation
657+
$global:inputs.enqueue(0) # choose default storage reservation
658+
$global:inputs.enqueue(0) # choose default sizes
659+
$global:inputs.enqueue('default') # storage class name
660+
$global:inputs.enqueue($saveOption) # next step save option
661+
}
662+
663+
function Set-PassWithCustomAcceptingDefaultResourceReservations([int] $saveOption) {
664+
$global:inputs = new-object collections.queue
665+
$global:inputs.enqueue($null) # welcome
666+
$global:inputs.enqueue($null) # prereqs
667+
$global:inputs.enqueue($TestDrive) # workdir
668+
$global:inputs.enqueue(0) # choose minikube env
669+
$global:inputs.enqueue(0) # choose minikube context
670+
$global:inputs.enqueue(0) # select context
671+
$global:inputs.enqueue(0) # choose default port
672+
$global:inputs.enqueue(0) # choose tool orchestration
673+
$global:inputs.enqueue(1) # skip external db
674+
$global:inputs.enqueue(0) # choose default deployment options
675+
$global:inputs.enqueue('ca.crt') # specify cluster cert
676+
$global:inputs.enqueue('cdx-app') # specify namespace
677+
$global:inputs.enqueue('codedx') # specify release name
678+
$global:inputs.enqueue('cdx-svc') # specify namespace
679+
$global:inputs.enqueue('codedx-tool-orchestration') # specify release name
680+
$global:inputs.enqueue((New-Password 'my-root-db-password')) # specify root db pwd
681+
$global:inputs.enqueue((New-Password 'my-root-db-password')) # specify root db pwd confirm
682+
$global:inputs.enqueue((New-Password 'my-replication-db-password')) # specify replication pwd
683+
$global:inputs.enqueue((New-Password 'my-replication-db-password')) # specify replication pwd confirm
684+
$global:inputs.enqueue(1) # specify db replicas
685+
$global:inputs.enqueue(0) # choose default cacerts
686+
$global:inputs.enqueue((New-Password 'my-codedx-password')) # specify cdx pwd
687+
$global:inputs.enqueue((New-Password 'my-codedx-password')) # specify cdx pwd confirm
688+
$global:inputs.enqueue((New-Password 'my-tool-service-password')) # specify tool service pwd
689+
$global:inputs.enqueue((New-Password 'my-tool-service-password')) # specify tool service pwd confirm
690+
$global:inputs.enqueue((New-Password 'my-minio-password')) # specify MinIO pwd
691+
$global:inputs.enqueue((New-Password 'my-minio-password')) # specify MinIO pwd confirm
692+
$global:inputs.enqueue(2) # specify tool service replicas
693+
$global:inputs.enqueue(1) # skip private reg
694+
$global:inputs.enqueue(0) # choose default Docker images
695+
$global:inputs.enqueue(0) # skip ingress
696+
$global:inputs.enqueue(0) # use local accounts
697+
$global:inputs.enqueue(2) # choose custom cpu reservation
698+
$global:inputs.enqueue('') # accept and confirm default
699+
$global:inputs.enqueue(0)
700+
$global:inputs.enqueue('') # accept and confirm default
701+
$global:inputs.enqueue(0)
702+
$global:inputs.enqueue('') # accept and confirm default
703+
$global:inputs.enqueue(0)
704+
$global:inputs.enqueue('') # accept and confirm default
705+
$global:inputs.enqueue(0)
706+
$global:inputs.enqueue('') # accept and confirm default
707+
$global:inputs.enqueue(0)
708+
$global:inputs.enqueue('') # accept and confirm default
709+
$global:inputs.enqueue(0)
710+
$global:inputs.enqueue(2) # choose custom memory reservation
711+
$global:inputs.enqueue('') # accept and confirm default
712+
$global:inputs.enqueue(0)
713+
$global:inputs.enqueue('') # accept and confirm default
714+
$global:inputs.enqueue(0)
715+
$global:inputs.enqueue('') # accept and confirm default
716+
$global:inputs.enqueue(0)
717+
$global:inputs.enqueue('') # accept and confirm default
718+
$global:inputs.enqueue(0)
719+
$global:inputs.enqueue('') # accept and confirm default
720+
$global:inputs.enqueue(0)
721+
$global:inputs.enqueue('') # accept and confirm default
722+
$global:inputs.enqueue(0)
723+
$global:inputs.enqueue(2) # choose custom storage reservation
724+
$global:inputs.enqueue('') # accept and confirm default
725+
$global:inputs.enqueue(0)
726+
$global:inputs.enqueue('') # accept and confirm default
727+
$global:inputs.enqueue(0)
728+
$global:inputs.enqueue('') # accept and confirm default
729+
$global:inputs.enqueue(0)
730+
$global:inputs.enqueue('') # accept and confirm default
731+
$global:inputs.enqueue(0)
732+
$global:inputs.enqueue('') # accept and confirm default
733+
$global:inputs.enqueue(0)
734+
$global:inputs.enqueue('') # accept and confirm default
735+
$global:inputs.enqueue(0)
736+
$global:inputs.enqueue(0) # choose default sizes
737+
$global:inputs.enqueue('default') # storage class name
738+
$global:inputs.enqueue($saveOption) # next step save option
739+
}

0 commit comments

Comments
 (0)