def set_instance_host_keys(): """ Args: Collects host keys associated to instance in fabric host_list. """ instance_id, log_filter = utils.get_log_filter(env.host) host_name = '%s_%s'%(constants.get_group_name(), instance_id) log_client = logclient.Client(constants.get_account_key()) global _GROUP_HOST_LIST log_conf = get_instance_log_conf(instance_id) if log_conf is None: return conf_host = log_conf.get_host() logger.debug('Checking if host should be kept. host=%s', conf_host) if conf_host is not None: logger.info('Host found in ssh configuration. host=%s', conf_host.to_json()) _GROUP_HOST_LIST.append(conf_host.get_key())
def deprovision(): """ Deprovisions the instance by removing the logentries rsyslog config file from it, restarting rsyslog and removing the corresponding host from the logentries system. """ instance_id, log_filter = utils.get_log_filter(env.host) host_name = '%s_%s'%(constants.get_group_name(), instance_id) log_conf_file = get_instance_log_conf_file(instance_id) if log_conf_file is None: logger.debug('Cannot deprovision instance as it has not been provisioned. hostname=%s', host_name) return log_conf = load_conf_file(log_conf_file, instance_id) if log_conf is None: logger.info('No existing logentries rsyslog configuration file was found on instance %s',instance_id) return if remove_log_conf(instance_id): restart_rsyslog(instance_id) conf_host = log_conf.get_host() if conf_host is None: logger.error('Error. This instance configuration is missing the corresponding model!! instance_id=%s',instance_id) return if conf_host.get_key() is None: logger.error('Host has a logentries-rsyslog config file but no account key, host=%s!!',host.to_json()) else: log_client = logclient.Client(constants.get_account_key()) logentries_host = get_logentries_host(log_client,conf_host) # If there is no matching host, then it is assumed that it was deleted from Logentries and that no configuration should be associated to this instance. if logentries_host is not None: succeeded = log_client.remove_host(logentries_host) if succeeded: logger.warning('Host removed from Logentries. host=%s', logentries_host.to_json()) else: logger.error('Could not remove host from Logentries. host=%s', logentries_host.to_json()) else: logger.error('Could not remove host from Logentries. hostname=%s', host_name) return
def sync(): """ Syncs the logentries account with each instance and logs defined in the ssh config file. """ # Get current instance information instance_id, log_filter = utils.get_log_filter(env.host) host_name = '%s_%s'%(constants.get_group_name(), instance_id) log_paths = get_instance_log_paths(instance_id, log_filter) if not files.exists('/etc/rsyslog.d/', use_sudo=True): logger.info('Instance does not support rsyslog. hostname=%s', host_name) return log_conf = get_instance_log_conf(instance_id) log_conf = update_instance_conf(instance_id, log_paths, log_conf) if log_conf is None: logger.info('No new rsyslog configuration was detected. hostname=%s', host_name) return deploy_log_conf(instance_id, log_conf) # Restart RSyslog restart_rsyslog(instance_id) return