@@ -75,55 +75,102 @@ var _ = Describe("Executor", func() {
75
75
})
76
76
77
77
Describe ("PlanJumpbox" , func () {
78
- It ("writes bosh-deployment assets to the deployment dir" , func () {
79
- err := executor .PlanJumpbox (dirInput , deploymentDir , "aws" )
80
- Expect (err ).NotTo (HaveOccurred ())
78
+ Context ("on aws" , func () {
79
+ It ("writes bosh-deployment assets to the deployment dir" , func () {
80
+ err := executor .PlanJumpbox (dirInput , deploymentDir , "aws" )
81
+ Expect (err ).NotTo (HaveOccurred ())
81
82
82
- By ("writing bosh-deployment assets to the deployment dir" , func () {
83
- simplePath := filepath .Join (deploymentDir , "no-external-ip.yml" )
83
+ By ("writing bosh-deployment assets to the deployment dir" , func () {
84
+ simplePath := filepath .Join (deploymentDir , "no-external-ip.yml" )
84
85
85
- contents , err := fs .ReadFile (simplePath )
86
- Expect (err ).NotTo (HaveOccurred ())
87
- Expect (string (contents )).To (Equal ("no-ip" ))
86
+ contents , err := fs .ReadFile (simplePath )
87
+ Expect (err ).NotTo (HaveOccurred ())
88
+ Expect (string (contents )).To (Equal ("no-ip" ))
88
89
89
- nestedPath := filepath .Join (deploymentDir , "aws" , "cpi.yml" )
90
+ nestedPath := filepath .Join (deploymentDir , "aws" , "cpi.yml" )
90
91
91
- contents , err = fs .ReadFile (nestedPath )
92
- Expect (err ).NotTo (HaveOccurred ())
93
- Expect (string (contents )).To (Equal ("aws-cpi" ))
92
+ contents , err = fs .ReadFile (nestedPath )
93
+ Expect (err ).NotTo (HaveOccurred ())
94
+ Expect (string (contents )).To (Equal ("aws-cpi" ))
95
+ })
96
+
97
+ By ("writing create-env and delete-env scripts" , func () {
98
+ expectedArgs := []string {
99
+ fmt .Sprintf ("%s/jumpbox.yml" , relativeDeploymentDir ),
100
+ "--state" , fmt .Sprintf ("%s/jumpbox-state.json" , relativeVarsDir ),
101
+ "--vars-store" , fmt .Sprintf ("%s/jumpbox-vars-store.yml" , relativeVarsDir ),
102
+ "--vars-file" , fmt .Sprintf ("%s/jumpbox-vars-file.yml" , relativeVarsDir ),
103
+ "-o" , fmt .Sprintf ("%s/aws/cpi.yml" , relativeDeploymentDir ),
104
+ "-v" , `access_key_id="${BBL_AWS_ACCESS_KEY_ID}"` ,
105
+ "-v" , `secret_access_key="${BBL_AWS_SECRET_ACCESS_KEY}"` ,
106
+ }
107
+
108
+ expectedScript := formatScript ("create-env" , stateDir , expectedArgs )
109
+ scriptPath := fmt .Sprintf ("%s/create-jumpbox.sh" , stateDir )
110
+ shellScript , err := fs .ReadFile (scriptPath )
111
+ Expect (err ).NotTo (HaveOccurred ())
112
+
113
+ fileinfo , err := fs .Stat (scriptPath )
114
+ Expect (err ).NotTo (HaveOccurred ())
115
+ Expect (fileinfo .Mode ().String ()).To (Equal ("-rwxr-x---" ))
116
+ Expect (string (shellScript )).To (Equal (expectedScript ))
117
+
118
+ expectedScript = formatScript ("delete-env" , stateDir , expectedArgs )
119
+ scriptPath = fmt .Sprintf ("%s/delete-jumpbox.sh" , stateDir )
120
+ shellScript , err = fs .ReadFile (scriptPath )
121
+ Expect (err ).NotTo (HaveOccurred ())
122
+
123
+ fileinfo , err = fs .Stat (scriptPath )
124
+ Expect (err ).NotTo (HaveOccurred ())
125
+ Expect (fileinfo .Mode ().String ()).To (Equal ("-rwxr-x---" ))
126
+ Expect (err ).NotTo (HaveOccurred ())
127
+ Expect (string (shellScript )).To (Equal (expectedScript ))
128
+ })
94
129
})
95
130
96
- By ("writing create-env and delete-env scripts" , func () {
97
- expectedArgs := []string {
98
- fmt .Sprintf ("%s/jumpbox.yml" , relativeDeploymentDir ),
99
- "--state" , fmt .Sprintf ("%s/jumpbox-state.json" , relativeVarsDir ),
100
- "--vars-store" , fmt .Sprintf ("%s/jumpbox-vars-store.yml" , relativeVarsDir ),
101
- "--vars-file" , fmt .Sprintf ("%s/jumpbox-vars-file.yml" , relativeVarsDir ),
102
- "-o" , fmt .Sprintf ("%s/aws/cpi.yml" , relativeDeploymentDir ),
103
- "-v" , `access_key_id="${BBL_AWS_ACCESS_KEY_ID}"` ,
104
- "-v" , `secret_access_key="${BBL_AWS_SECRET_ACCESS_KEY}"` ,
105
- }
131
+ Context ("when assume role is set" , func () {
132
+ It ("writes create-env and delete-env scripts with the assume role ops files and variables" , func () {
133
+ state := storage.State {
134
+ AWS : storage.AWS {
135
+ AssumeRoleArn : "some-aws-assume-role" ,
136
+ },
137
+ }
138
+ err := executor .PlanJumpboxWithState (dirInput , deploymentDir , "aws" , state )
139
+ Expect (err ).NotTo (HaveOccurred ())
106
140
107
- expectedScript := formatScript ("create-env" , stateDir , expectedArgs )
108
- scriptPath := fmt .Sprintf ("%s/create-jumpbox.sh" , stateDir )
109
- shellScript , err := fs .ReadFile (scriptPath )
110
- Expect (err ).NotTo (HaveOccurred ())
141
+ expectedArgs := []string {
142
+ fmt .Sprintf ("%s/jumpbox.yml" , relativeDeploymentDir ),
143
+ "--state" , fmt .Sprintf ("%s/jumpbox-state.json" , relativeVarsDir ),
144
+ "--vars-store" , fmt .Sprintf ("%s/jumpbox-vars-store.yml" , relativeVarsDir ),
145
+ "--vars-file" , fmt .Sprintf ("%s/jumpbox-vars-file.yml" , relativeVarsDir ),
146
+ "-o" , fmt .Sprintf ("%s/aws/cpi.yml" , relativeDeploymentDir ),
147
+ "-o" , fmt .Sprintf ("%s/aws/cpi-assume-role-credentials.yml" , relativeDeploymentDir ),
148
+ "-v" , `access_key_id="${BBL_AWS_ACCESS_KEY_ID}"` ,
149
+ "-v" , `secret_access_key="${BBL_AWS_SECRET_ACCESS_KEY}"` ,
150
+ "-v" , `role_arn="${BBL_AWS_ASSUME_ROLE}"` ,
151
+ }
111
152
112
- fileinfo , err := fs . Stat ( scriptPath )
113
- Expect ( err ). NotTo ( HaveOccurred () )
114
- Expect ( fileinfo . Mode (). String ()). To ( Equal ( "-rwxr-x---" ) )
115
- Expect (string ( shellScript )). To ( Equal ( expectedScript ))
153
+ expectedScript := formatScript ( "create-env" , stateDir , expectedArgs )
154
+ scriptPath := fmt . Sprintf ( "%s/create-jumpbox.sh" , stateDir )
155
+ shellScript , err := fs . ReadFile ( scriptPath )
156
+ Expect (err ). NotTo ( HaveOccurred ( ))
116
157
117
- expectedScript = formatScript ( "delete-env" , stateDir , expectedArgs )
118
- scriptPath = fmt . Sprintf ( "%s/delete-jumpbox.sh" , stateDir )
119
- shellScript , err = fs . ReadFile ( scriptPath )
120
- Expect (err ). NotTo ( HaveOccurred ( ))
158
+ fileinfo , err := fs . Stat ( scriptPath )
159
+ Expect ( err ). NotTo ( HaveOccurred () )
160
+ Expect ( fileinfo . Mode (). String ()). To ( Equal ( "-rwxr-x---" ) )
161
+ Expect (string ( shellScript )). To ( Equal ( expectedScript ))
121
162
122
- fileinfo , err = fs .Stat (scriptPath )
123
- Expect (err ).NotTo (HaveOccurred ())
124
- Expect (fileinfo .Mode ().String ()).To (Equal ("-rwxr-x---" ))
125
- Expect (err ).NotTo (HaveOccurred ())
126
- Expect (string (shellScript )).To (Equal (expectedScript ))
163
+ expectedScript = formatScript ("delete-env" , stateDir , expectedArgs )
164
+ scriptPath = fmt .Sprintf ("%s/delete-jumpbox.sh" , stateDir )
165
+ shellScript , err = fs .ReadFile (scriptPath )
166
+ Expect (err ).NotTo (HaveOccurred ())
167
+
168
+ fileinfo , err = fs .Stat (scriptPath )
169
+ Expect (err ).NotTo (HaveOccurred ())
170
+ Expect (fileinfo .Mode ().String ()).To (Equal ("-rwxr-x---" ))
171
+ Expect (err ).NotTo (HaveOccurred ())
172
+ Expect (string (shellScript )).To (Equal (expectedScript ))
173
+ })
127
174
})
128
175
})
129
176
@@ -347,7 +394,7 @@ var _ = Describe("Executor", func() {
347
394
"-v" , `secret_access_key="${BBL_AWS_SECRET_ACCESS_KEY}"` ,
348
395
}
349
396
350
- behavesLikePlan (expectedArgs , cli , fs , executor , dirInput , deploymentDir , "aws" , stateDir )
397
+ behavesLikePlan (expectedArgs , cli , fs , executor , dirInput , deploymentDir , "aws" , stateDir , storage. State {} )
351
398
})
352
399
353
400
It ("writes aws-specific ops files" , func () {
@@ -364,6 +411,35 @@ var _ = Describe("Executor", func() {
364
411
value: true
365
412
` ))
366
413
})
414
+
415
+ Context ("when assume role is set" , func () {
416
+ It ("writes create-director.sh and delete-director.sh including the assume role ops files and variables" , func () {
417
+ expectedArgs := []string {
418
+ filepath .Join (relativeDeploymentDir , "bosh.yml" ),
419
+ "--state" , filepath .Join (relativeVarsDir , "bosh-state.json" ),
420
+ "--vars-store" , filepath .Join (relativeVarsDir , "director-vars-store.yml" ),
421
+ "--vars-file" , filepath .Join (relativeVarsDir , "director-vars-file.yml" ),
422
+ "-o" , filepath .Join (relativeDeploymentDir , "aws" , "cpi.yml" ),
423
+ "-o" , filepath .Join (relativeDeploymentDir , "jumpbox-user.yml" ),
424
+ "-o" , filepath .Join (relativeDeploymentDir , "uaa.yml" ),
425
+ "-o" , filepath .Join (relativeDeploymentDir , "credhub.yml" ),
426
+ "-o" , filepath .Join (relativeStateDir , "bbl-ops-files" , "aws" , "bosh-director-ephemeral-ip-ops.yml" ),
427
+ "-o" , filepath .Join (relativeDeploymentDir , "aws" , "iam-instance-profile.yml" ),
428
+ "-o" , filepath .Join (relativeDeploymentDir , "aws" , "encrypted-disk.yml" ),
429
+ "-o" , filepath .Join (relativeDeploymentDir , "aws" , "cpi-assume-role-credentials.yml" ),
430
+ "-v" , `access_key_id="${BBL_AWS_ACCESS_KEY_ID}"` ,
431
+ "-v" , `secret_access_key="${BBL_AWS_SECRET_ACCESS_KEY}"` ,
432
+ "-v" , `role_arn="${BBL_AWS_ASSUME_ROLE}"` ,
433
+ }
434
+
435
+ state := storage.State {
436
+ AWS : storage.AWS {
437
+ AssumeRoleArn : "some-aws-assume-role" ,
438
+ },
439
+ }
440
+ behavesLikePlan (expectedArgs , cli , fs , executor , dirInput , deploymentDir , "aws" , stateDir , state )
441
+ })
442
+ })
367
443
})
368
444
369
445
Context ("gcp" , func () {
@@ -383,7 +459,7 @@ var _ = Describe("Executor", func() {
383
459
"-v" , `zone="${BBL_GCP_ZONE}"` ,
384
460
}
385
461
386
- behavesLikePlan (expectedArgs , cli , fs , executor , dirInput , deploymentDir , "gcp" , stateDir )
462
+ behavesLikePlan (expectedArgs , cli , fs , executor , dirInput , deploymentDir , "gcp" , stateDir , storage. State {} )
387
463
})
388
464
389
465
It ("writes gcp-specific ops files" , func () {
@@ -419,7 +495,7 @@ var _ = Describe("Executor", func() {
419
495
"-v" , `tenant_id="${BBL_AZURE_TENANT_ID}"` ,
420
496
}
421
497
422
- behavesLikePlan (expectedArgs , cli , fs , executor , dirInput , deploymentDir , "azure" , stateDir )
498
+ behavesLikePlan (expectedArgs , cli , fs , executor , dirInput , deploymentDir , "azure" , stateDir , storage. State {} )
423
499
})
424
500
})
425
501
@@ -439,7 +515,7 @@ var _ = Describe("Executor", func() {
439
515
"-v" , `vcenter_password="${BBL_VSPHERE_VCENTER_PASSWORD}"` ,
440
516
}
441
517
442
- behavesLikePlan (expectedArgs , cli , fs , executor , dirInput , deploymentDir , "vsphere" , stateDir )
518
+ behavesLikePlan (expectedArgs , cli , fs , executor , dirInput , deploymentDir , "vsphere" , stateDir , storage. State {} )
443
519
})
444
520
})
445
521
@@ -458,7 +534,7 @@ var _ = Describe("Executor", func() {
458
534
"-v" , `openstack_password="${BBL_OPENSTACK_PASSWORD}"` ,
459
535
}
460
536
461
- behavesLikePlan (expectedArgs , cli , fs , executor , dirInput , deploymentDir , "openstack" , stateDir )
537
+ behavesLikePlan (expectedArgs , cli , fs , executor , dirInput , deploymentDir , "openstack" , stateDir , storage. State {} )
462
538
})
463
539
})
464
540
Context ("cloudstack" , func () {
@@ -1028,13 +1104,13 @@ type behavesLikePlanFs interface {
1028
1104
fileio.Stater
1029
1105
}
1030
1106
1031
- func behavesLikePlan (expectedArgs []string , cli * fakes.BOSHCLI , fs behavesLikePlanFs , executor bosh.Executor , input bosh.DirInput , deploymentDir , iaas , stateDir string ) {
1107
+ func behavesLikePlan (expectedArgs []string , cli * fakes.BOSHCLI , fs behavesLikePlanFs , executor bosh.Executor , input bosh.DirInput , deploymentDir , iaas , stateDir string , state storage. State ) {
1032
1108
cli .RunStub = func (stdout io.Writer , workingDirectory string , args []string ) error {
1033
1109
stdout .Write ([]byte ("some-manifest" )) //nolint:errcheck
1034
1110
return nil
1035
1111
}
1036
1112
1037
- err := executor .PlanDirector (input , deploymentDir , iaas )
1113
+ err := executor .PlanDirectorWithState (input , deploymentDir , iaas , state )
1038
1114
Expect (err ).NotTo (HaveOccurred ())
1039
1115
Expect (cli .RunCallCount ()).To (Equal (0 ))
1040
1116
0 commit comments