Example #1
0
    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)
Example #2
0
 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)
Example #3
0
    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