Skip to content

Commit 8d85b49

Browse files
author
Steve Salas
committed
refactor: add external db default answers
1 parent 9f6786a commit 8d85b49

File tree

3 files changed

+77
-5
lines changed

3 files changed

+77
-5
lines changed

setup/steps/database.ps1

Lines changed: 19 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ https://github.com/codedx/codedx-kubernetes/blob/master/setup/core/docs/db/use-e
3535
[IQuestion] MakeQuestion([string] $prompt) {
3636
return new-object YesNoQuestion($prompt,
3737
'Yes, I want to use a database that I will provide',
38-
'No, I want to use the database that Code Dx deploys on Kubernetes', -1)
38+
'No, I want to use the database that Code Dx deploys on Kubernetes', 1)
3939
}
4040

4141
[bool]HandleResponse([IQuestion] $question) {
@@ -126,10 +126,17 @@ database setup instructions.
126126
$config,
127127
'External Database Name',
128128
[ExternalDatabaseName]::description,
129-
'Enter the name of your Code Dx database') {}
129+
'Enter the name of your Code Dx database or press Enter to accept the default (codedxdb)') {}
130+
131+
[IQuestion] MakeQuestion([string] $prompt) {
132+
$question = new-object Question($prompt)
133+
$question.allowEmptyResponse = $true
134+
return $question
135+
}
130136

131137
[bool]HandleResponse([IQuestion] $question) {
132-
$this.config.externalDatabaseName = ([Question]$question).response
138+
$q = [Question]$question
139+
$this.config.externalDatabaseName = $q.isResponseEmpty ? 'codedxdb' : $q.response
133140
return $true
134141
}
135142

@@ -155,10 +162,17 @@ name during Step 1 of the Code Dx database setup instructions.
155162
$config,
156163
'External Database Username',
157164
[ExternalDatabaseUser]::description,
158-
'Enter the Code Dx database username') {}
165+
'Enter the Code Dx database username or press Enter to accept the default (codedx)') {}
166+
167+
[IQuestion] MakeQuestion([string] $prompt) {
168+
$question = new-object Question($prompt)
169+
$question.allowEmptyResponse = $true
170+
return $question
171+
}
159172

160173
[bool]HandleResponse([IQuestion] $question) {
161-
$this.config.externalDatabaseUser = ([Question]$question).response
174+
$q = [Question]$question
175+
$this.config.externalDatabaseUser = $q.isResponseEmpty ? 'codedx' : $q.response
162176
return $true
163177
}
164178

test/guided-setup.tests.ps1

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -492,4 +492,17 @@ Describe 'Generate Setup Commands' {
492492
$expectedParams = "-kubeContextName 'Other' -kubeApiTargetPort '8443' -namespaceCodeDx 'cdx-app' -releaseNameCodeDx 'codedx' -clusterCertificateAuthorityCertPath 'ca.crt' -storageClassName 'default' -backupType 'velero-restic' -namespaceVelero 'velero-ns' -backupScheduleCronExpression '0 5 * * *' -backupDatabaseTimeoutMinutes 33 -backupTimeToLiveHours 25 -codedxAdminPwd 'my-codedx-password' -codedxDatabaseUserPwd 'my-db-user-password' -skipIngressEnabled -skipIngressAssumesNginx -skipUseRootDatabaseUser -codeDxVolumeSizeGiB 64 -codeDxTlsServicePortNumber 9443 -dbVolumeSizeGiB 64 -dbSlaveReplicaCount 0 -mariadbRootPwd 'my-root-db-password' -mariadbReplicatorPwd 'my-replication-db-password' -skipToolOrchestration -skipNginxIngressControllerInstall -skipLetsEncryptCertManagerInstall"
493493
Test-SetupParameters $PSScriptRoot $runSetupFile $TestDrive $expectedParams | Should -BeTrue
494494
}
495+
496+
It '(35) Should generate minikube setup.ps1 command with external database and defaults' -Tag 'External Database' {
497+
498+
Set-ExternalDatabasePass 1
499+
500+
New-Mocks
501+
. ./guided-setup.ps1
502+
503+
$runSetupFile = join-path $TestDrive run-setup.ps1
504+
$runSetupFile | Should -Exist
505+
$expectedParams = "-kubeContextName 'minikube' -kubeApiTargetPort '8443' -namespaceCodeDx 'cdx-app' -releaseNameCodeDx 'codedx' -clusterCertificateAuthorityCertPath 'ca.crt' -storageClassName 'default' -caCertsFilePath 'cacerts' -codedxAdminPwd 'my-codedx-password' -caCertsFilePwd 'changeit' -skipIngressEnabled -skipIngressAssumesNginx -codeDxVolumeSizeGiB 64 -codeDxTlsServicePortNumber 9443 -externalDatabaseHost 'my-external-db-host' -externalDatabaseName 'codedxdb' -externalDatabaseUser 'codedx' -externalDatabasePwd 'codedx-db-password' -skipDatabase -externalDatabasePort 3306 -externalDatabaseServerCert 'db-ca.crt' -skipToolOrchestration -skipNginxIngressControllerInstall -skipLetsEncryptCertManagerInstall"
506+
Test-SetupParameters $PSScriptRoot $runSetupFile $TestDrive $expectedParams | Should -BeTrue
507+
}
495508
}

test/pass.ps1

Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -88,6 +88,51 @@ function Set-UseToolOrchestrationAndSubordinateDatabasePass([int] $saveOption) {
8888
}
8989

9090
function Set-ExternalDatabasePass([int] $saveOption) {
91+
$global:inputs = new-object collections.queue
92+
$global:inputs.enqueue($null) # welcome
93+
$global:inputs.enqueue(1) # skip GitOps
94+
$global:inputs.enqueue(0) # prereqs
95+
$global:inputs.enqueue($TestDrive) # workdir
96+
$global:inputs.enqueue(0) # choose minikube env
97+
$global:inputs.enqueue(0) # choose minikube context
98+
$global:inputs.enqueue(0) # select context
99+
$global:inputs.enqueue(0) # choose default port
100+
$global:inputs.enqueue(1) # skip tool orchestration
101+
$global:inputs.enqueue(0) # use external db
102+
$global:inputs.enqueue(0) # skip backup
103+
$global:inputs.enqueue(0) # choose default deployment options
104+
$global:inputs.enqueue('ca.crt') # specify cluster cert
105+
$global:inputs.enqueue('cdx-app') # specify namespace
106+
$global:inputs.enqueue('codedx') # specify release name
107+
$global:inputs.enqueue('my-external-db-host') # specify external db host
108+
$global:inputs.enqueue(3306) # specify external db port
109+
$global:inputs.enqueue('') # specify external db name default
110+
$global:inputs.enqueue(0) # confirm external db name default
111+
$global:inputs.enqueue('') # specify external db username default
112+
$global:inputs.enqueue(0) # confirm external db username default
113+
$global:inputs.enqueue((New-Password 'codedx-db-password')) # specify codedx db pwd
114+
$global:inputs.enqueue((New-Password 'codedx-db-password')) # specify codedx db pwd confirm
115+
$global:inputs.enqueue(0) # choose TLS db connection
116+
$global:inputs.enqueue('db-ca.crt') # specify external db cert
117+
$global:inputs.enqueue('cacerts') # specify cacerts file
118+
$global:inputs.enqueue((New-Password 'changeit')) # specify cacerts file password
119+
$global:inputs.enqueue(1) # skip changing cacerts password
120+
$global:inputs.enqueue(1) # skip extra certificates
121+
$global:inputs.enqueue((New-Password 'my-codedx-password')) # specify cdx pwd
122+
$global:inputs.enqueue((New-Password 'my-codedx-password')) # specify cdx pwd confirm
123+
$global:inputs.enqueue(1) # skip private reg
124+
$global:inputs.enqueue(0) # choose default Docker images
125+
$global:inputs.enqueue(0) # skip ingress
126+
$global:inputs.enqueue(0) # use local accounts
127+
$global:inputs.enqueue(1) # skip cpu reservation
128+
$global:inputs.enqueue(1) # skip memory reservation
129+
$global:inputs.enqueue(1) # skip storage reservation
130+
$global:inputs.enqueue(0) # use default volume sizes
131+
$global:inputs.enqueue('default') # storage class name
132+
$global:inputs.enqueue($saveOption) # next step save option
133+
}
134+
135+
function Set-ExternalDatabasePassWithDefaults([int] $saveOption) {
91136
$global:inputs = new-object collections.queue
92137
$global:inputs.enqueue($null) # welcome
93138
$global:inputs.enqueue(1) # skip GitOps

0 commit comments

Comments
 (0)