UNPKG

berlioz

Version:

Berlioz - cloud deployment and migration services

75 lines (71 loc) 2.39 kB
module.exports = (section, logger, {Promise, _, helper, gcp, gcpAccountId, deployment, cluster, shortSourceRegion}) => { section .onQueryAll(() => { return gcp.PubSub.queryAllSubscriptions(getPrefix()) .catch(reason => { if (reason.isApiNotEnabled) { return []; } throw reason; }); }) .onExtractNaming(obj => getNaming(obj.name)) .onExtractId(obj => obj.name) .onQuery(id => gcp.PubSub.querySubscription(id)) .onExtractConfig(obj => { return { config: obj }; }) .onExtractRelations(item => { if (item.obj.topic != "_deleted-topic_") { item.relation('gcp-pubsub', getNaming(item.obj.topic)); } }) .markUseDefaultsForDelta() .onCreate(delta => { var name = delta.naming.join('_'); var topic = delta.findRelation('gcp-pubsub').targetItem.id; return gcp.PubSub.createSubscription(name, topic); }) .onUpdateRecreate(delta => { if (delta.delta.relations.length > 0) { for(var relDelta of delta.delta.relations) { if (relDelta.targetMeta == 'gcp-pubsub') { return true; } } } return false; }) .onDelete(delta => { return gcp.PubSub.deleteSubscription(delta.id); }) ; function getNamePrefixParts() { var namePrefixParts = [ deployment, cluster, shortSourceRegion ] namePrefixParts = namePrefixParts.filter(x => _.isNotNullOrUndefined(x)); return namePrefixParts; } function getPrefix() { var namePrefixParts = getNamePrefixParts(); namePrefixParts.push(''); var namePrefix = namePrefixParts.join('_'); var prefix = 'projects/' + gcpAccountId + '/subscriptions/' + namePrefix; logger.info("[PUBSUB-SUB] QUERY prefix: %s", prefix); return prefix; } function getNaming(id) { var parts = id.split('/'); var fullName = _.last(parts); var naming = fullName.split('_'); return naming; } }