Skip to content

Commit 6f55495

Browse files
Chore: [AEA-5851] - simplify IaC, sync current ODS codes (#2287)
## Summary - 🤖 Operational or Infrastructure Change ### Details - Replace `if prod` logic with parameters - Sync SSM param data to live (remove drift) --------- Co-authored-by: Jim Wild <james.wild6@nhs.net>
1 parent 4895e7c commit 6f55495

File tree

8 files changed

+156
-44
lines changed

8 files changed

+156
-44
lines changed

.github/scripts/release_code.sh

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -65,4 +65,9 @@ sam deploy \
6565
StateMachineLogLevel="$STATE_MACHINE_LOG_LEVEL" \
6666
EnableNotificationsInternal="$ENABLE_NOTIFICATIONS_INTERNAL" \
6767
EnableNotificationsExternal="$ENABLE_NOTIFICATIONS_EXTERNAL" \
68+
EnabledSiteODSCodesValue="$ENABLED_SITE_ODS_CODES" \
69+
EnabledSystemsValue="$ENABLED_SYSTEMS" \
70+
BlockedSiteODSCodesValue="$BLOCKED_SITE_ODS_CODES" \
71+
NotifyRoutingPlanIDValue="$NOTIFY_ROUTING_PLAN_ID" \
72+
NotifyAPIBaseURLValue="$NOTIFY_API_BASE_URL" \
6873
RequireApplicationName="$REQUIRE_APPLICATION_NAME"

.github/workflows/ci.yml

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -120,6 +120,11 @@ jobs:
120120
ENABLE_BACKUP: True
121121
ENABLE_NOTIFICATIONS_INTERNAL: true
122122
ENABLE_NOTIFICATIONS_EXTERNAL: false
123+
ENABLED_SITE_ODS_CODES: "FA565,A83008"
124+
ENABLED_SYSTEMS: "Internal Test System"
125+
BLOCKED_SITE_ODS_CODES: "B3J1Z"
126+
NOTIFY_ROUTING_PLAN_ID: "e57fe5cc-0567-4854-abe2-b7dd9014a50c"
127+
NOTIFY_API_BASE_URL: "https://int.api.service.nhs.uk"
123128
MTLS_KEY: psu-mtls-1
124129
IS_PULL_REQUEST: false
125130
secrets:
@@ -155,6 +160,11 @@ jobs:
155160
ENABLE_BACKUP: False
156161
ENABLE_NOTIFICATIONS_INTERNAL: false
157162
ENABLE_NOTIFICATIONS_EXTERNAL: false
163+
ENABLED_SITE_ODS_CODES: "FA565,A83008"
164+
ENABLED_SYSTEMS: "Internal Test System"
165+
BLOCKED_SITE_ODS_CODES: "B3J1Z"
166+
NOTIFY_ROUTING_PLAN_ID: "e57fe5cc-0567-4854-abe2-b7dd9014a50c"
167+
NOTIFY_API_BASE_URL: "https://int.api.service.nhs.uk"
158168
MTLS_KEY: psu-mtls-1
159169
IS_PULL_REQUEST: false
160170
secrets:
@@ -187,6 +197,11 @@ jobs:
187197
ENABLE_BACKUP: False
188198
ENABLE_NOTIFICATIONS_INTERNAL: false
189199
ENABLE_NOTIFICATIONS_EXTERNAL: false
200+
ENABLED_SITE_ODS_CODES: "FA565,A83008"
201+
ENABLED_SYSTEMS: "Internal Test System"
202+
BLOCKED_SITE_ODS_CODES: "B3J1Z"
203+
NOTIFY_ROUTING_PLAN_ID: "e57fe5cc-0567-4854-abe2-b7dd9014a50c"
204+
NOTIFY_API_BASE_URL: "https://int.api.service.nhs.uk"
190205
MTLS_KEY: psu-mtls-1
191206
IS_PULL_REQUEST: false
192207
secrets:

.github/workflows/ods-codes.txt

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
FRT44
2+
FVQ48
3+
FX237
4+
FM623

.github/workflows/pull_request.yml

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -83,6 +83,11 @@ jobs:
8383
ENABLE_BACKUP: False
8484
ENABLE_NOTIFICATIONS_INTERNAL: true
8585
ENABLE_NOTIFICATIONS_EXTERNAL: false
86+
ENABLED_SITE_ODS_CODES: "FA565,A83008"
87+
ENABLED_SYSTEMS: "Internal Test System"
88+
BLOCKED_SITE_ODS_CODES: "B3J1Z"
89+
NOTIFY_ROUTING_PLAN_ID: "e57fe5cc-0567-4854-abe2-b7dd9014a50c"
90+
NOTIFY_API_BASE_URL: "https://int.api.service.nhs.uk"
8691
MTLS_KEY: psu-mtls-1
8792
IS_PULL_REQUEST: true
8893
secrets:
@@ -113,6 +118,11 @@ jobs:
113118
ENABLE_BACKUP: False
114119
ENABLE_NOTIFICATIONS_INTERNAL: false
115120
ENABLE_NOTIFICATIONS_EXTERNAL: false
121+
ENABLED_SITE_ODS_CODES: "FA565,A83008"
122+
ENABLED_SYSTEMS: "Internal Test System"
123+
BLOCKED_SITE_ODS_CODES: "B3J1Z"
124+
NOTIFY_ROUTING_PLAN_ID: "e57fe5cc-0567-4854-abe2-b7dd9014a50c"
125+
NOTIFY_API_BASE_URL: "https://int.api.service.nhs.uk"
116126
MTLS_KEY: psu-mtls-1
117127
IS_PULL_REQUEST: true
118128
secrets:

.github/workflows/release.yml

Lines changed: 51 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -138,6 +138,11 @@ jobs:
138138
ENABLE_BACKUP: True
139139
ENABLE_NOTIFICATIONS_INTERNAL: false
140140
ENABLE_NOTIFICATIONS_EXTERNAL: false
141+
ENABLED_SITE_ODS_CODES: "FA565,A83008"
142+
ENABLED_SYSTEMS: "Internal Test System"
143+
BLOCKED_SITE_ODS_CODES: "B3J1Z"
144+
NOTIFY_ROUTING_PLAN_ID: "e57fe5cc-0567-4854-abe2-b7dd9014a50c"
145+
NOTIFY_API_BASE_URL: "https://int.api.service.nhs.uk"
141146
MTLS_KEY: psu-mtls-1
142147
IS_PULL_REQUEST: false
143148
secrets:
@@ -172,6 +177,11 @@ jobs:
172177
ENABLE_BACKUP: False
173178
ENABLE_NOTIFICATIONS_INTERNAL: false
174179
ENABLE_NOTIFICATIONS_EXTERNAL: false
180+
ENABLED_SITE_ODS_CODES: "FA565,A83008"
181+
ENABLED_SYSTEMS: "Internal Test System"
182+
BLOCKED_SITE_ODS_CODES: "B3J1Z"
183+
NOTIFY_ROUTING_PLAN_ID: "e57fe5cc-0567-4854-abe2-b7dd9014a50c"
184+
NOTIFY_API_BASE_URL: "https://int.api.service.nhs.uk"
175185
MTLS_KEY: psu-mtls-1
176186
IS_PULL_REQUEST: false
177187
secrets:
@@ -211,6 +221,11 @@ jobs:
211221
ENABLE_BACKUP: False
212222
ENABLE_NOTIFICATIONS_INTERNAL: false
213223
ENABLE_NOTIFICATIONS_EXTERNAL: false
224+
ENABLED_SITE_ODS_CODES: "FA565,A83008"
225+
ENABLED_SYSTEMS: "Internal Test System, Apotec Ltd - Apotec CRM - Production, CrxPatientApp, nhsPrescriptionApp, Titan PSU Prod"
226+
BLOCKED_SITE_ODS_CODES: "B3J1Z"
227+
NOTIFY_ROUTING_PLAN_ID: "e57fe5cc-0567-4854-abe2-b7dd9014a50c"
228+
NOTIFY_API_BASE_URL: "https://int.api.service.nhs.uk"
214229
MTLS_KEY: psu-mtls-1
215230
IS_PULL_REQUEST: false
216231
secrets:
@@ -250,6 +265,11 @@ jobs:
250265
ENABLE_BACKUP: False
251266
ENABLE_NOTIFICATIONS_INTERNAL: false
252267
ENABLE_NOTIFICATIONS_EXTERNAL: false
268+
ENABLED_SITE_ODS_CODES: "FA565,A83008"
269+
ENABLED_SYSTEMS: "Internal Test System, Apotec Ltd - Apotec CRM - Production, CrxPatientApp, nhsPrescriptionApp, Titan PSU Prod"
270+
BLOCKED_SITE_ODS_CODES: "B3J1Z"
271+
NOTIFY_ROUTING_PLAN_ID: "e57fe5cc-0567-4854-abe2-b7dd9014a50c"
272+
NOTIFY_API_BASE_URL: "https://int.api.service.nhs.uk"
253273
MTLS_KEY: psu-mtls-1
254274
IS_PULL_REQUEST: false
255275
secrets:
@@ -283,7 +303,12 @@ jobs:
283303
STATE_MACHINE_LOG_LEVEL: ALL
284304
ENABLE_BACKUP: True
285305
ENABLE_NOTIFICATIONS_INTERNAL: true
286-
ENABLE_NOTIFICATIONS_EXTERNAL: false
306+
ENABLE_NOTIFICATIONS_EXTERNAL: true
307+
ENABLED_SITE_ODS_CODES: "FA565,A83008"
308+
ENABLED_SYSTEMS: "Internal Test System, Apotec Ltd - Apotec CRM - Production, CrxPatientApp, nhsPrescriptionApp, Titan PSU Prod"
309+
BLOCKED_SITE_ODS_CODES: "B3J1Z"
310+
NOTIFY_ROUTING_PLAN_ID: "e57fe5cc-0567-4854-abe2-b7dd9014a50c"
311+
NOTIFY_API_BASE_URL: "https://int.api.service.nhs.uk"
287312
MTLS_KEY: psu-mtls-1
288313
IS_PULL_REQUEST: false
289314
secrets:
@@ -318,13 +343,31 @@ jobs:
318343
ENABLE_BACKUP: False
319344
ENABLE_NOTIFICATIONS_INTERNAL: false
320345
ENABLE_NOTIFICATIONS_EXTERNAL: false
346+
ENABLED_SITE_ODS_CODES: "FA565,A83008"
347+
ENABLED_SYSTEMS: "Internal Test System, Apotec Ltd - Apotec CRM - Production, CrxPatientApp, nhsPrescriptionApp, Titan PSU Prod"
348+
BLOCKED_SITE_ODS_CODES: "B3J1Z"
349+
NOTIFY_ROUTING_PLAN_ID: "e57fe5cc-0567-4854-abe2-b7dd9014a50c"
350+
NOTIFY_API_BASE_URL: "https://int.api.service.nhs.uk"
321351
MTLS_KEY: psu-mtls-1
322352
IS_PULL_REQUEST: false
323353
secrets:
324354
CLOUD_FORMATION_DEPLOY_ROLE: ${{ secrets.INT_CLOUD_FORMATION_DEPLOY_ROLE }}
325355
PROXYGEN_ROLE: ${{ secrets.PROXYGEN_PROD_ROLE }}
326356
REGRESSION_TESTS_PEM: ${{ secrets.REGRESSION_TESTS_PEM }}
327357

358+
read_ods_codes:
359+
needs: quality_checks
360+
runs-on: ubuntu-22.04
361+
outputs:
362+
ods_csv: ${{steps.read.outputs.ods_csv}}
363+
steps:
364+
- name: Read ODS codes and produce CSV
365+
id: read
366+
run: |
367+
INPUT_FILE="./ods-codes.txt"
368+
CSV=$(sed ':a;N;$!ba;s/\r\?\n/,/g;s/,$//' < "$INPUT_FILE")
369+
echo "ods_csv=$CSV" >> "$GITHUB_OUTPUT"
370+
328371
release_prod:
329372
needs:
330373
[
@@ -333,6 +376,7 @@ jobs:
333376
release_int_sandbox,
334377
package_code,
335378
get_commit_id,
379+
read_ods_codes,
336380
]
337381
uses: ./.github/workflows/run_release_code_and_api.yml
338382
with:
@@ -358,7 +402,12 @@ jobs:
358402
STATE_MACHINE_LOG_LEVEL: ERROR
359403
ENABLE_BACKUP: True
360404
ENABLE_NOTIFICATIONS_INTERNAL: true
361-
ENABLE_NOTIFICATIONS_EXTERNAL: false
405+
ENABLE_NOTIFICATIONS_EXTERNAL: true
406+
ENABLED_SITE_ODS_CODES: ${{ needs.read_ods_codes.outputs.ods_csv }}
407+
ENABLED_SYSTEMS: " "
408+
BLOCKED_SITE_ODS_CODES: " "
409+
NOTIFY_ROUTING_PLAN_ID: "e57fe5cc-0567-4854-abe2-b7dd9014a50c" # INT and PROD share a value
410+
NOTIFY_API_BASE_URL: "https://api.service.nhs.uk"
362411
MTLS_KEY: psu-mtls-1
363412
IS_PULL_REQUEST: false
364413
secrets:

.github/workflows/run_release_code_and_api.yml

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -84,6 +84,21 @@ on:
8484
required: false
8585
type: boolean
8686
default: false
87+
ENABLED_SITE_ODS_CODES:
88+
required: true
89+
type: string
90+
ENABLED_SYSTEMS:
91+
required: true
92+
type: string
93+
BLOCKED_SITE_ODS_CODES:
94+
required: true
95+
type: string
96+
NOTIFY_ROUTING_PLAN_ID:
97+
required: true
98+
type: string
99+
NOTIFY_API_BASE_URL:
100+
required: true
101+
type: string
87102
IS_PULL_REQUEST:
88103
type: boolean
89104
default: true
@@ -179,6 +194,11 @@ jobs:
179194
ENABLE_NOTIFICATIONS_INTERNAL: ${{ inputs.ENABLE_NOTIFICATIONS_INTERNAL }}
180195
ENABLE_NOTIFICATIONS_EXTERNAL: ${{ inputs.ENABLE_NOTIFICATIONS_EXTERNAL }}
181196
REQUIRE_APPLICATION_NAME: ${{ inputs.REQUIRE_APPLICATION_NAME }}
197+
ENABLED_SITE_ODS_CODES: ${{ inputs.ENABLED_SITE_ODS_CODES }}
198+
ENABLED_SYSTEMS: ${{ inputs.ENABLED_SYSTEMS }}
199+
BLOCKED_SITE_ODS_CODES: ${{ inputs.BLOCKED_SITE_ODS_CODES }}
200+
NOTIFY_ROUTING_PLAN_ID: ${{ inputs.NOTIFY_ROUTING_PLAN_ID }}
201+
NOTIFY_API_BASE_URL: ${{ inputs.NOTIFY_API_BASE_URL }}
182202
run: ./release_code.sh
183203

184204
- name: get mtls secrets

SAMtemplates/main_template.yaml

Lines changed: 26 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -95,6 +95,7 @@ Parameters:
9595
AllowedValues:
9696
- True
9797
- False
98+
9899
EnableNotificationsInternal:
99100
Type: String
100101
Default: false
@@ -109,6 +110,26 @@ Parameters:
109110
- true
110111
- false
111112

113+
EnabledSiteODSCodesValue:
114+
Type: String
115+
Default: " "
116+
117+
EnabledSystemsValue:
118+
Type: String
119+
Default: " "
120+
121+
BlockedSiteODSCodesValue:
122+
Type: String
123+
Default: " "
124+
125+
NotifyRoutingPlanIDValue:
126+
Type: String
127+
Default: " "
128+
129+
NotifyAPIBaseURLValue:
130+
Type: String
131+
Default: " "
132+
112133
RequireApplicationName:
113134
Type: String
114135
Default: false
@@ -130,9 +151,13 @@ Resources:
130151
Location: parameters/main.yaml
131152
Parameters:
132153
StackName: !Ref AWS::StackName
133-
Environment: !Ref Environment
134154
EnableNotificationsInternalValue: !Ref EnableNotificationsInternal
135155
EnableNotificationsExternalValue: !Ref EnableNotificationsExternal
156+
EnabledSiteODSCodesValue: !Ref EnabledSiteODSCodesValue
157+
EnabledSystemsValue: !Ref EnabledSystemsValue
158+
BlockedSiteODSCodesValue: !Ref BlockedSiteODSCodesValue
159+
NotifyRoutingPlanIDValue: !Ref NotifyRoutingPlanIDValue
160+
NotifyAPIBaseURLValue: !Ref NotifyAPIBaseURLValue
136161

137162
Tables:
138163
Type: AWS::Serverless::Application

SAMtemplates/parameters/main.yaml

Lines changed: 25 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -6,9 +6,6 @@ Parameters:
66
StackName:
77
Type: String
88

9-
Environment:
10-
Type: String
11-
129
EnableNotificationsInternalValue:
1310
Type: String
1411
Default: false
@@ -23,8 +20,25 @@ Parameters:
2320
- true
2421
- false
2522

26-
Conditions:
27-
IsProd: !Equals [ !Ref Environment, prod ]
23+
EnabledSiteODSCodesValue:
24+
Type: String
25+
Default: " "
26+
27+
EnabledSystemsValue:
28+
Type: String
29+
Default: " "
30+
31+
BlockedSiteODSCodesValue:
32+
Type: String
33+
Default: " "
34+
35+
NotifyRoutingPlanIDValue:
36+
Type: String
37+
Default: " "
38+
39+
NotifyAPIBaseURLValue:
40+
Type: String
41+
Default: " "
2842

2943
Resources:
3044
EnabledSiteODSCodesParameter:
@@ -33,69 +47,39 @@ Resources:
3347
Name: !Sub ${StackName}-PSUNotifyEnabledSiteODSCodes
3448
Description: "List of site ODS codes for which notifications are enabled"
3549
Type: String
36-
Value: !If
37-
- IsProd
38-
- > # Prod notification enabled
39-
FA565
40-
- > # Non-prod
41-
FA565
50+
Value: !Ref EnabledSiteODSCodesValue
4251

4352
EnabledSystemsParameter:
4453
Type: AWS::SSM::Parameter
4554
Properties:
4655
Name: !Sub ${StackName}-PSUNotifyEnabledSystems
4756
Description: "List of application names for which notifications are enabled"
4857
Type: String
49-
Value: !If
50-
- IsProd
51-
- > # Prod notification enabled
52-
Apotec Ltd - Apotec CRM - Production,
53-
CrxPatientApp,
54-
nhsPrescriptionApp,
55-
Titan PSU Prod
56-
- > # Non-prod
57-
Internal Test System,
58-
Apotec Ltd - Apotec CRM - Production,
59-
CrxPatientApp,
60-
nhsPrescriptionApp,
61-
Titan PSU Prod
58+
Value: !Ref EnabledSystemsValue
6259

6360
BlockedSiteODSCodesParameter:
6461
Type: AWS::SSM::Parameter
6562
Properties:
6663
Name: !Sub ${StackName}-PSUNotifyBlockedSiteODSCodes
6764
Description: "List of site ODS codes for which notifications are blocked"
6865
Type: String
69-
Value: !If
70-
- IsProd
71-
- > # Prod notification disabled
72-
B3J1Z
73-
- > # Non-prod
74-
B3J1Z
66+
Value: !Ref BlockedSiteODSCodesValue
7567

7668
NotifyRoutingPlanIDParameter:
7769
Type: AWS::SSM::Parameter
7870
Properties:
7971
Name: !Sub ${StackName}-PSUNotifyRoutingPlanID
8072
Description: "Notify Routing Plan ID"
8173
Type: String
82-
Value: !If
83-
- IsProd
84-
- changeme
85-
# Non-prod value (sandbox)
86-
- b838b13c-f98c-4def-93f0-515d4e4f4ee1
74+
Value: !Ref NotifyRoutingPlanIDValue
8775

8876
NotifyAPIBaseURLParameter:
8977
Type: AWS::SSM::Parameter
9078
Properties:
9179
Name: !Sub ${StackName}-PSUNotifyApiBaseUrl
9280
Description: "Notify API Base URL"
9381
Type: String
94-
Value: !If
95-
- IsProd
96-
- https://api.service.nhs.uk
97-
# Non-prod API URL (sandbox) (INT environment: https://int.api.service.nhs.uk/comms)
98-
- https://sandbox.api.service.nhs.uk
82+
Value: !Ref NotifyAPIBaseURLValue
9983

10084
EnableNotificationsExternal:
10185
Type: AWS::SSM::Parameter
@@ -104,7 +88,7 @@ Resources:
10488
Description: "Toggle on or off if we make real requests to the NHS notify service"
10589
Type: String
10690
Value: !Ref EnableNotificationsExternalValue
107-
91+
10892
EnableNotificationsInternal:
10993
Type: AWS::SSM::Parameter
11094
Properties:

0 commit comments

Comments
 (0)