Skip to content

Commit

Permalink
Merge pull request #335 from DEFRA/485829
Browse files Browse the repository at this point in the history
Use GitHub service lookup for bulkUpdateTfSvcInfra
  • Loading branch information
chotai authored Jan 3, 2025
2 parents 6513f3f + 18601c8 commit ca99fed
Show file tree
Hide file tree
Showing 3 changed files with 55 additions and 8 deletions.
45 changes: 44 additions & 1 deletion src/api/deploy/helpers/lookup-tenant-service.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,49 @@ import { config } from '~/src/config/index.js'
import { fetcher } from '~/src/helpers/fetcher.js'
import Boom from '@hapi/boom'

import Joi from 'joi'
import { getContent } from '~/src/helpers/github/get-content.js'

const org = config.get('github.org')
const repo = config.get('github.repos.cdpTfSvcInfra')

const schema = Joi.object({
zone: Joi.string().valid('public', 'protected').required(),
service_code: Joi.any(),
mongo: Joi.boolean(),
redis: Joi.boolean(),
test_suite: Joi.string()
}).unknown(true)

/**
* Get service from the multi-file version of tenants.json
* @param {string} service
* @param {string} environment
* @param {Logger} logger
* @param {string} ref
* @returns {Promise<undefined|*>}
*/
async function lookupTenantServiceFromGitHub(
service,
environment,
logger,
ref = 'main'
) {
const filePath = `environments/${environment}/tenants/${service}.json`
try {
const data = await getContent(org, repo, filePath, ref)
if (!data) {
logger.warn(`Tenant environment file ${filePath} from GitHub not found`)
return undefined
}
const service = JSON.parse(data)
Joi.assert(service, schema) // Check file in correct format
return { testSuite: service.test_suite }
} catch (error) {
logger.error(error, `Error attempting to retrieve ${filePath} from GitHub`)
}
}

/**
* Get service from portal-backend
* @param {string} service
Expand All @@ -24,4 +67,4 @@ async function lookupTenantService(service, environment, logger) {
throw Boom.boomify(new Error(json.message), { statusCode: response.status })
}

export { lookupTenantService }
export { lookupTenantService, lookupTenantServiceFromGitHub }
8 changes: 6 additions & 2 deletions src/listeners/github/helpers/bulk-update-tf-svc-infra.js
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ import {
import { updateOverallStatus } from '~/src/helpers/create/init-creation-status.js'
import { createPlaceholderArtifact } from '~/src/listeners/github/helpers/create-placeholder-artifact.js'
import { createLogger } from '~/src/helpers/logging/logger.js'
import { lookupTenantService } from '~/src/api/deploy/helpers/lookup-tenant-service.js'
import { lookupTenantServiceFromGitHub } from '~/src/api/deploy/helpers/lookup-tenant-service.js'

/**
* given a list of services, update the tf-svc-infra status for all of them to success
Expand All @@ -32,7 +32,11 @@ const bulkUpdateTfSvcInfra = async (db, trimmedWorkflow, status) => {
const name = service.repositoryName

// TODO: maybe use exact commit ref of workflow
const tenantConfig = await lookupTenantService(name, 'management', logger)
const tenantConfig = await lookupTenantServiceFromGitHub(
name,
'management',
logger
)
if (tenantConfig) {
servicesToUpdate.push({ name, tenantConfig })
}
Expand Down
10 changes: 5 additions & 5 deletions src/listeners/github/helpers/bulk-update-tf-svc-infra.test.js
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ import {
} from '~/src/listeners/github/status-repo.js'

import { createPlaceholderArtifact } from '~/src/listeners/github/helpers/create-placeholder-artifact.js'
import { lookupTenantService } from '~/src/api/deploy/helpers/lookup-tenant-service.js'
import { lookupTenantServiceFromGitHub } from '~/src/api/deploy/helpers/lookup-tenant-service.js'
import { updateOverallStatus } from '~/src/helpers/create/init-creation-status.js'
import { statuses } from '~/src/constants/statuses.js'

Expand All @@ -18,7 +18,7 @@ jest.mock('~/src/listeners/github/helpers/create-placeholder-artifact', () => ({
}))

jest.mock('~/src/api/deploy/helpers/lookup-tenant-service', () => ({
lookupTenantService: jest.fn()
lookupTenantServiceFromGitHub: jest.fn()
}))

jest.mock('~/src/listeners/github/status-repo', () => ({
Expand All @@ -33,7 +33,7 @@ describe('bulkUpdateTtfSvcInfra', () => {
repositoryName: 'test1'
}
])
lookupTenantService.mockResolvedValue({})
lookupTenantServiceFromGitHub.mockResolvedValue({})

const db = {}
const workflow = {
Expand Down Expand Up @@ -68,7 +68,7 @@ describe('bulkUpdateTtfSvcInfra', () => {
repositoryName: 'test1'
}
])
lookupTenantService.mockResolvedValue(null)
lookupTenantServiceFromGitHub.mockResolvedValue(null)

const db = {}
const workflow = {
Expand All @@ -92,7 +92,7 @@ describe('bulkUpdateTtfSvcInfra', () => {
repositoryName: 'test1'
}
])
lookupTenantService.mockResolvedValue({
lookupTenantServiceFromGitHub.mockResolvedValue({
testSuite: 'test1',
zone: 'public',
service_code: 'TST'
Expand Down

0 comments on commit ca99fed

Please sign in to comment.