def _shutdown_other_versions(self): LOGGER.debug('Shutting down running units for other image versions') units = [utils.parse_unit_name(u.name) for u in self._fleet.units()] destroy = set() for deployed_unit in self._deployed_units: parent, service, group, version = \ utils.parse_unit_name(deployed_unit) for _parent, _service, _group, _version in units: if _parent == parent and _service == service and \ _group == group and _version != version: destroy.add((_parent, _service, _group, _version)) for name, version in destroy: LOGGER.info('Destroying %s@%s.service', name, version) unit = self._fleet.unit(name, version) if not unit.destroy(): LOGGER.error('Error destroying %s@%s.service', name, version)
def remove_other_archive_versions(self): name, parent, group, version = utils.parse_unit_name(self._unit_name) if parent: name = '{0}.{1}'.format(name, parent) if group: name = '{0}:{1}'.format(name, group) keys = self._consul.kv.find('{0}/{1}@'.format(self._consul_prefix, name)) for key in keys: if key != self._archive_key: LOGGER.debug('Removing previous archive version: %s', key) self._consul.kv.delete(key)
def _apply_variables(self, value): value = value.replace('{service}', self._name) if self._group: value = value.replace('{group}', self._group) variables = self._config.get('variables', {}) if self._environment in variables: variables = variables[self._environment] for name in variables: key = '{{{0}}}'.format(name) if key in value: value = value.replace(key, variables[name]) for unit_name in self._deployed_units: _parent, service, _group, _ver = utils.parse_unit_name(unit_name) base_service = '{}.service'.format(service) if base_service in value: LOGGER.debug('Replacing %s with %s in value', base_service, unit_name) value = value.replace(base_service, unit_name) return value