Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merge Dev into Master #5609

Merged
merged 95 commits into from
Feb 18, 2025
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
95 commits
Select commit Hold shift + click to select a range
65aba39
EES-4735 Allow custom default filter item
mmyoungman Jan 10, 2025
7702e95
EES-4735 Migration endpoint to set Total for existing filters
mmyoungman Jan 16, 2025
6cd8ace
EES-4735 Rename consts to avoid name clashing/confusion
mmyoungman Jan 17, 2025
357df34
EES-4735 Rename DefaultFilterItem to AutoSelectFilterItem
mmyoungman Jan 17, 2025
60d1af2
EES-4735 Add backend tests
mmyoungman Jan 17, 2025
cec96b2
EES-4735 Rename view model field from TotalValue to AutoSelectFilterI…
mmyoungman Jan 17, 2025
edd10f6
EES-4735 Set Total item's case; fix migration endpoint
mmyoungman Jan 17, 2025
995ba29
EES-4735 Changes in response to PR comments
mmyoungman Jan 23, 2025
ac57e3b
EES-4735 Update Public API to support auto select filter items
mmyoungman Jan 24, 2025
bb1fde5
EES-5542 boundaryLevel retrieval in maps for dataSets with specific b…
bennettstuart Nov 28, 2024
b438710
EES-5542 added test for maps to fetch geoJson per data set
bennettstuart Dec 4, 2024
4939689
EES-5542 moved geoJson fetching on dataset selection into parent comp…
bennettstuart Dec 12, 2024
9a06f3b
EES-5542 map tests reflecting abstracting geoJson fetching outside ab…
bennettstuart Dec 18, 2024
6d011e0
EES-5542 fix maps rendering with right boundary data
bennettstuart Dec 19, 2024
813dc8a
EES-5542 removed feature flag hasDataSetBoundaryLevels
bennettstuart Dec 19, 2024
7bfbf7b
Chart type refactored/simplified, improved geo loading callback, orde…
bennettstuart Jan 17, 2025
662a1a3
cd '/home/stuart/projects/explore-education-statistics/src/explore-ed…
bennettstuart Jan 17, 2025
6895432
EES-5542 fixed bug in ReleaseDataBlockEditPage and test
bennettstuart Jan 17, 2025
d4524ab
EES-5542 implement useDataBlock
bennettstuart Jan 24, 2025
4b9212b
EES-5808 go to preview log after api token revoked
amyb-hiveit Jan 30, 2025
3be9dbb
EES-5807 make it clearer new api data set is processing
amyb-hiveit Jan 30, 2025
47946ed
chore(tests): update test snapshots
dfe-sdt Jan 31, 2025
e577908
EES-5659 Remove ReleaseName, Slug, and TimePeriodCoverage from Releas…
benoutram Jan 23, 2025
5740ea6
Merge pull request #5538 from dfe-analytical-services/EES-4735
mmyoungman Jan 31, 2025
ffcde49
Merge pull request #5554 from dfe-analytical-services/EES-5659
benoutram Jan 31, 2025
301093b
EES-5802 - added in Pre-Prod stage to Public API deploy. Temporarily …
duncan-at-hiveit Jan 27, 2025
179c741
EES-5802 - rolling out safe access operator improvements to alert Bic…
duncan-at-hiveit Jan 28, 2025
62a8772
EES-5802 - added support for non-standard storage account name on Pre…
duncan-at-hiveit Jan 28, 2025
b0f2a68
EES-5802 - added missing dependsOn for all alerts
duncan-at-hiveit Jan 28, 2025
d9ae1cf
EES-5802 - testing out environment approval steps
duncan-at-hiveit Jan 28, 2025
781b738
EES-5802 - various tweaks to pipelines. mended typo around indexing, …
duncan-at-hiveit Jan 28, 2025
9b6051a
EES-5802 - updated Content API URL for Pre-Prod to be the public-faci…
duncan-at-hiveit Jan 29, 2025
ad30197
EES-5802 - updated ARM template to enable the Public API in Pre-Prod
duncan-at-hiveit Jan 29, 2025
6701889
EES-5802 - responding to PR comments. Switching "true" / "false" opt…
duncan-at-hiveit Jan 31, 2025
38b78c2
Merge pull request #5576 from dfe-analytical-services/chore/update-te…
benoutram Jan 31, 2025
230a6ea
Merge pull request #5423 from dfe-analytical-services/EES-5542
bennettstuart Feb 3, 2025
9a7e4ba
Merge pull request #5582 from dfe-analytical-services/master
benoutram Feb 3, 2025
ebe6815
EES-5545 Cleanup and memoize callbacks in `ReleaseDataUploadsSection`
ntsim Jan 22, 2025
a1db539
EES-5545 Extract `DeleteDataFileModal` into separate component
ntsim Jan 22, 2025
d9f3b92
EES-5545 Cleanup `ReleaseDataUploadsSection` tests
ntsim Jan 27, 2025
11c226b
Merge pull request #5569 from dfe-analytical-services/ees-5545-cleanup
ntsim Feb 3, 2025
a33da2c
EES-5545 Add new table for data files being replaced
ntsim Jan 27, 2025
3a18cd9
EES-5545 Adjust data files table with static title column width
ntsim Jan 30, 2025
83a3ed0
EES-5545 Change 'View details' modal to use `DataFileSummaryList`
ntsim Jan 27, 2025
769e67d
Merge pull request #5571 from dfe-analytical-services/ees-5545
ntsim Feb 3, 2025
6cf93df
EES-5593 Public API wildcard data set versioning (#5577)
mmoalin Feb 4, 2025
c5e1b9c
EES-5841 Remove old `/api` prefix from URLs in public API docs
ntsim Feb 4, 2025
db82903
Merge pull request #5562 from dfe-analytical-services/EES-5802-add-pr…
duncan-at-hiveit Feb 4, 2025
338bb57
Merge pull request #5586 from dfe-analytical-services/master
N-moh Feb 4, 2025
4f31a57
EES-5842-check latest release link
N-moh Feb 4, 2025
0987bf1
EES-5554 Fix non-unique aria-labels for paramater tables
ntsim Feb 4, 2025
de25c70
EES-5554 Fix header styling at mobile when 200%+ zoom
ntsim Feb 4, 2025
b4cbabd
EES-5554 Prevent overflowing text breaking mobile layouts at 200%+ zoom
ntsim Feb 4, 2025
3c7e88a
EES-5554 Adjust TOC collapsible button styling for mobile at 200%+ zoom
ntsim Feb 4, 2025
72fd157
EES-5554 Fix 'Endpoints' and 'Schemas' children not displaying in mob…
ntsim Feb 4, 2025
7db5910
EES-5554 Fix parameter table styling at 200%+ zoom
ntsim Feb 4, 2025
e61267e
Merge pull request #5570 from dfe-analytical-services/EES-5808
amyb-hiveit Feb 6, 2025
b366b0b
Merge pull request #5572 from dfe-analytical-services/EES-5807
amyb-hiveit Feb 6, 2025
8b37fae
Merge pull request #5589 from dfe-analytical-services/ees-5554
ntsim Feb 6, 2025
4c0e6ff
chore(tests): update test snapshots
dfe-sdt Feb 6, 2025
cb1838d
Merge pull request #5593 from dfe-analytical-services/chore/update-te…
N-moh Feb 6, 2025
bda58ef
Merge pull request #5587 from dfe-analytical-services/EES-5842
N-moh Feb 6, 2025
d1cba79
EES-5846 Fix incorrect public API URLs on preview token page (#5590)
ntsim Feb 6, 2025
374e44a
EES-5838 - added ability to add WAF policies to particular listeners.…
duncan-at-hiveit Feb 4, 2025
26ab8c9
EES-5838 - updated Public API Bicep variables per environment to dire…
duncan-at-hiveit Feb 4, 2025
8ab5185
EES-5838 - updated main ARM template variables per environment to dir…
duncan-at-hiveit Feb 4, 2025
efd3824
EES-5838 - storing Public API Container App private URL in Key Vault …
duncan-at-hiveit Feb 4, 2025
bab6aeb
EES-5838 - updating Robot tests to use basic auth details in URLs rat…
duncan-at-hiveit Feb 6, 2025
7669f98
EES-5882 - made various changes to Robot tests to prevent basic auth …
duncan-at-hiveit Feb 7, 2025
e8e594e
EES-5838 - responding to PR comments. Corrected typo.
duncan-at-hiveit Feb 7, 2025
08eaf2a
Merge pull request #5588 from dfe-analytical-services/EES-5802-add-se…
duncan-at-hiveit Feb 7, 2025
6ec8469
EES-5864 - reintroduced redirect from non-rooted to rooted Public API…
duncan-at-hiveit Feb 10, 2025
9cf0568
Merge pull request #5598 from dfe-analytical-services/EES-5864-fix-br…
duncan-at-hiveit Feb 10, 2025
41454ae
EES-5820 - rewriting "Location" response headers to replace static we…
duncan-at-hiveit Feb 12, 2025
b5812a7
EES-5720 fix chart decimal places bug
amyb-hiveit Feb 13, 2025
b1fdbe9
EES-5759 handle empty charts
amyb-hiveit Feb 13, 2025
748d026
ees-5843 dynamic map footnote based on selected boundary
Feb 7, 2025
39e956c
ees-5843 add maps across time robot test
Feb 12, 2025
2d4a47d
Merge pull request #5600 from dfe-analytical-services/EES-5843
bennettstuart Feb 13, 2025
61d9f00
chore(tests): update test snapshots
dfe-sdt Feb 13, 2025
40fa286
Merge pull request #5601 from dfe-analytical-services/chore/update-te…
N-moh Feb 13, 2025
9477067
EES-5824 handle alt text length error when saving data blocks
amyb-hiveit Feb 13, 2025
a8cada7
Merge pull request #5603 from dfe-analytical-services/EES-5759
bennettstuart Feb 17, 2025
4bf6b58
Merge pull request #5602 from dfe-analytical-services/EES-5720
bennettstuart Feb 17, 2025
afae656
Merge pull request #5604 from dfe-analytical-services/EES-5824
bennettstuart Feb 17, 2025
3eb83d3
Merge pull request #5599 from dfe-analytical-services/EES-5820-fix-tr…
duncan-at-hiveit Feb 17, 2025
2e8738f
EES-5802 - allowing base url of Public API to be added to Swagger doc…
duncan-at-hiveit Feb 17, 2025
44977d4
EES-5860: Add handling for multiple filter items with the same label.
Feb 17, 2025
c342f8c
EES-5860: Add temporary validation to prevent "filter_default" submis…
Feb 17, 2025
bc29e5b
Merge pull request #5607 from dfe-analytical-services/EES-5860-2
tomjonesdev Feb 17, 2025
5fc705f
Merge pull request #5608 from dfe-analytical-services/EES-5802-add-su…
duncan-at-hiveit Feb 17, 2025
1515bef
EES-5802 - updated Swagger API server URL to allow API requests throu…
duncan-at-hiveit Feb 18, 2025
9f188b3
fix edit datablock 'duplication'
Feb 18, 2025
8705f3a
Merge pull request #5611 from dfe-analytical-services/ees-5887
bennettstuart Feb 18, 2025
14dd70e
Merge pull request #5610 from dfe-analytical-services/EES-5802-add-su…
duncan-at-hiveit Feb 18, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions infrastructure/parameters/dev.parameters.json
Original file line number Diff line number Diff line change
Expand Up @@ -57,10 +57,10 @@
"value": "data.dev.explore-education-statistics.service.gov.uk"
},
"publicApiUrl": {
"value": "dev.statistics.api.education.gov.uk"
"value": "pp-api.education.gov.uk/statistics-dev"
},
"publicApiDocsUrl": {
"value": "dev.statistics.api.education.gov.uk/docs"
"value": "pp-api.education.gov.uk/statistics-dev/docs"
},
"detailedErrors": {
"value": true
Expand Down
7 changes: 2 additions & 5 deletions infrastructure/parameters/pre-prod.parameters.json
Original file line number Diff line number Diff line change
Expand Up @@ -48,10 +48,10 @@
"value": "data.pre-production.explore-education-statistics.service.gov.uk"
},
"publicApiUrl": {
"value": "pre-production.statistics.api.education.gov.uk"
"value": "pp-api.education.gov.uk/statistics-preprod"
},
"publicApiDocsUrl": {
"value": "pre-production.statistics.api.education.gov.uk/docs"
"value": "pp-api.education.gov.uk/statistics-preprod/docs"
},
"publicAppGATrackingId": {
"value": "G-8FSLWXTV2W"
Expand Down Expand Up @@ -91,9 +91,6 @@
},
"immediatePublicationOfScheduledReleaseVersionsEnabled": {
"value": true
},
"publicDataDbExists": {
"value": false
}
}
}
4 changes: 2 additions & 2 deletions infrastructure/parameters/prod.parameters.json
Original file line number Diff line number Diff line change
Expand Up @@ -51,10 +51,10 @@
"value": "data.explore-education-statistics.service.gov.uk"
},
"publicApiUrl": {
"value": "statistics.api.education.gov.uk"
"value": "api.education.gov.uk/statistics"
},
"publicApiDocsUrl": {
"value": "statistics.api.education.gov.uk/docs"
"value": "api.education.gov.uk/statistics/docs"
},
"publicAppGATrackingId": {
"value": "G-9YG8ESXR5Y"
Expand Down
4 changes: 2 additions & 2 deletions infrastructure/parameters/test.parameters.json
Original file line number Diff line number Diff line change
Expand Up @@ -48,10 +48,10 @@
"value": "data.test.explore-education-statistics.service.gov.uk"
},
"publicApiUrl": {
"value": "test.statistics.api.education.gov.uk"
"value": "pp-api.education.gov.uk/statistics-test"
},
"publicApiDocsUrl": {
"value": "test.statistics.api.education.gov.uk/docs"
"value": "pp-api.education.gov.uk/statistics-test/docs"
},
"detailedErrors": {
"value": true
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -159,7 +159,7 @@ module apiContainerAppModule '../../components/containerApp.bicep' = {
memoryGis: resourceAndScalingConfig.memoryGis
minReplicas: resourceAndScalingConfig.minReplicas
maxReplicas: resourceAndScalingConfig.maxReplicas
scaleAtConcurrentHttpRequests: resourceAndScalingConfig.scaleAtConcurrentHttpRequests
scaleAtConcurrentHttpRequests: resourceAndScalingConfig.?scaleAtConcurrentHttpRequests
workloadProfileName: resourceAndScalingConfig.workloadProfileName
alerts: deployAlerts ? {
restarts: true
Expand All @@ -175,6 +175,15 @@ module apiContainerAppModule '../../components/containerApp.bicep' = {
}
}

module storePublicApiContainerAppPrivateUrl '../../components/keyVaultSecret.bicep' = {
name: 'storePublicApiContainerAppPrivateUrl'
params: {
keyVaultName: resourceNames.existingResources.keyVault
secretName: 'ees-publicapi-public-api-containerapp-private-url'
secretValue: 'https://${apiContainerAppModule.outputs.containerAppFqdn}'
}
}

output containerAppFqdn string = apiContainerAppModule.outputs.containerAppFqdn
output containerAppName string = apiContainerAppModule.outputs.containerAppName
output healthProbePath string = '/health'
Original file line number Diff line number Diff line change
@@ -0,0 +1,62 @@
import { ResourceNames } from '../../types.bicep'

@description('Specifies common resource naming variables.')
param resourceNames ResourceNames

@description('Specifies the location for all resources.')
param location string

@description('Secret header value from FUAPI.')
@secure()
param fuapiSecretValue string

@description('Specifies a set of tags with which to tag the resource in Azure.')
param tagValues object

var policyName = '${resourceNames.sharedResources.appGateway}-public-api-afwp'

module wafPolicyModule '../../components/appGatewayWafPolicy.bicep' = {
name: 'wafPolicy'
params: {
name: policyName
location: location
// Do not define any managed rulesets for this WAF policy. The global WAF policy
// will cover these cases.
managedRuleSets: []
// Add a custom rule to only allow traffic that contains a correct secret
// header value that is included from FUAPI.
customRules: [
{
name: 'fuapisecretnotpresent'
action: 'Block'
matchConditions: [
{
type: 'RequestHeaders'
selector: 'X-FUAPI-Secret'
operator: 'Any'
negateOperator: true
}
]
}
{
name: 'fuapisecretincorrect'
action: 'Block'
matchConditions: [
{
type: 'RequestHeaders'
selector: 'X-FUAPI-Secret'
operator: 'Equal'
negateOperator: true
matchValues: [
fuapiSecretValue
]
}
]
}
]
tagValues: tagValues
}
}

output id string = wafPolicyModule.outputs.id
output name string = policyName
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,15 @@ resource subnet 'Microsoft.Network/virtualNetworks/subnets@2023-11-01' existing
parent: vNet
}

module globalWafPolicyModule '../../components/appGatewayWafPolicy.bicep' = {
name: 'wafPolicy'
params: {
name: '${resourceNames.sharedResources.appGateway}-global-afwp'
location: location
tagValues: tagValues
}
}

module appGatewayModule '../../components/appGateway.bicep' = {
name: 'appGatewayDeploy'
params: {
Expand All @@ -51,6 +60,7 @@ module appGatewayModule '../../components/appGateway.bicep' = {
backends: backends
routes: routes
rewrites: rewrites
globalWafPolicyId: globalWafPolicyModule.outputs.id
alerts: deployAlerts ? {
health: true
responseTime: true
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,10 +18,8 @@ module storeCoreStorageConnectionString '../../components/keyVaultSecret.bicep'
name: 'storeCoreStorageConnectionString'
params: {
keyVaultName: resourceNames.existingResources.keyVault
isEnabled: true
secretName: coreStorageConnectionStringSecretKey
secretValue: coreStorageConnectionString
contentType: 'text/plain'
}
}

Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
import { ResourceNames, IpRange, PrincipalNameAndId, PostgreSqlFlexibleServerConfig } from '../../types.bicep'
import { replaceMultiple } from '../../functions.bicep'

@description('Specifies common resource naming variables.')
param resourceNames ResourceNames
Expand Down Expand Up @@ -36,6 +37,12 @@ var formattedFirewallRules = map(firewallRules, rule => {
cidr: rule.cidr
})

func createManagedIdentityConnectionString(templateString string, identityName string) string =>
replaceMultiple(templateString, {
'[database_name]': 'public_data'
'[managed_identity_name]': identityName
})

module postgreSqlServerModule '../../components/postgreSqlFlexibleServer.bicep' = {
name: 'postgreSQLDatabaseDeploy'
params: {
Expand Down Expand Up @@ -67,18 +74,19 @@ module postgreSqlServerModule '../../components/postgreSqlFlexibleServer.bicep'
}
}

var managedIdentityConnectionStringTemplate = postgreSqlServerModule.outputs.managedIdentityConnectionStringTemplate
var connectionStringTemplate = postgreSqlServerModule.outputs.managedIdentityConnectionStringTemplate

var dataProcessorPsqlConnectionStringSecretKey = 'ees-publicapi-data-processor-connectionstring-publicdatadb'

module storeDataProcessorPsqlConnectionString '../../components/keyVaultSecret.bicep' = {
name: 'storeDataProcessorPsqlConnectionString'
params: {
keyVaultName: resourceNames.existingResources.keyVault
isEnabled: true
secretName: dataProcessorPsqlConnectionStringSecretKey
secretValue: replace(replace(managedIdentityConnectionStringTemplate, '[database_name]', 'public_data'), '[managed_identity_name]', resourceNames.publicApi.dataProcessorIdentity)
contentType: 'text/plain'
secretValue: createManagedIdentityConnectionString(
connectionStringTemplate,
resourceNames.publicApi.dataProcessorIdentity
)
}
}

Expand All @@ -88,10 +96,11 @@ module storePublisherPsqlConnectionString '../../components/keyVaultSecret.bicep
name: 'storePublisherPsqlConnectionString'
params: {
keyVaultName: resourceNames.existingResources.keyVault
isEnabled: true
secretName: publisherPsqlConnectionStringSecretKey
secretValue: replace(replace(managedIdentityConnectionStringTemplate, '[database_name]', 'public_data'), '[managed_identity_name]', resourceNames.existingResources.publisherFunction)
contentType: 'text/plain'
secretValue: createManagedIdentityConnectionString(
connectionStringTemplate,
resourceNames.existingResources.publisherFunction
)
}
}

Expand All @@ -101,11 +110,12 @@ module storeAdminPsqlConnectionString '../../components/keyVaultSecret.bicep' =
name: 'storeAdminPsqlConnectionString'
params: {
keyVaultName: resourceNames.existingResources.keyVault
isEnabled: true
secretName: adminPsqlConnectionStringSecretKey
secretValue: replace(replace(managedIdentityConnectionStringTemplate, '[database_name]', 'public_data'), '[managed_identity_name]', resourceNames.existingResources.adminApp)
contentType: 'text/plain'
secretValue: createManagedIdentityConnectionString(
connectionStringTemplate,
resourceNames.existingResources.adminApp
)
}
}

output managedIdentityConnectionStringTemplate string = managedIdentityConnectionStringTemplate
output managedIdentityConnectionStringTemplate string = connectionStringTemplate
Loading
Loading