UNPKG

berlioz

Version:

Berlioz - cloud deployment and migration services

65 lines (56 loc) 1.71 kB
const _ = require('the-lodash'); module.exports.checkSkip = function({entity, scope, consumer, targetEntity}) { if (entity.hasInitScript) { return true; } return false; } module.exports.getNaming = function({entity, scope, ownerItem}) { return [ ownerItem.dn ]; } module.exports.getModelName = function({entity, scope}) { return 'gcp-sql-script' } module.exports.setupItem = function({processor, entity, item, ownerItem, scope}) { item.relation(ownerItem) var repoInfo = processor.getRepository(entity); var runtime = { src: _.clone(repoInfo) } var initDbEntity = getInitDb(entity); var bucketNameParts = [ scope.gcpProjectNumber, scope.deployment, initDbEntity.clusterName, scope.shortSourceRegion, initDbEntity.sectorName, initDbEntity.name]; bucketNameParts = bucketNameParts.map(x => x.toString().toLowerCase()); var bucketName = bucketNameParts.join('_'); runtime.dest = { bucket: bucketName } item.setRuntime(runtime); return Promise.resolve() .then(() => item.relation(ownerItem)) .then(() => { var storageDn = item.meta.root.constructDn('gcp-storage', bucketNameParts); return item.relation('gcp-policy', [storageDn]).then(rel => rel.markIgnoreDelta()) }) } function getInitDb(entity) { for(var consumed of entity.databasesConsumes) { var targetDb = consumed.localTarget; if (targetDb) { if ((targetDb.sectorName == 'init') && (targetDb.name == entity.name)) { return targetDb; } } } return null; }