def run(self, data, ip_address): self.data = data self.valid_json, self.json_object = verify_json_is_valid(self.data) self.ip = ip_address self.is_enabled = True self.node = None if self.valid_json: if 'node_id' in self.json_object: self.node = node_exists(self.session, node_id=self.json_object['node_id']) elif 'new_agent' in self.json_object['operation']: node_added = add_node(self.session, self.ip) tcp_results = self.send_node_id(str(node_added.id)) logger.info('Node %s Added, agent_id is %s' % (self.ip, str(node_added.id))) return else: logger.info('%s - Json is not valid %s' %\ (self.username, data) ) if self.node: self.is_enabled = self.session.query(NodeInfo.enabled).\ filter(NodeInfo.id == self.node.id).first() if self.is_enabled: if self.ip != self.node.ip_address: self.node.ip_address = self.ip self.session.commit() if self.node.last_agent_update == None: self.node.last_agent_update = datetime.now() self.node.last_node_update = datetime.now() self.session.commit() if self.json_object[OPERATION] == SYSTEM_INFO: add_system_info(self.session, self.json_object, self.node) if self.json_object[OPERATION] == UPDATES_PENDING or \ self.json_object[OPERATION] == UPDATES_INSTALLED: self.add_update(self.node) if self.json_object[OPERATION] == SOFTWARE_INSTALLED: self.software_update(self.node) if self.json_object[OPERATION] == UNIX_DEPENDENCIES: self.add_dependency() if self.json_object[OPERATION] == STATUS_UPDATE: self.node_update(self.node) if self.json_object[OPERATION] == INSTALL: self.update_results(self.node) if self.json_object[OPERATION] == UNINSTALL: self.update_results(self.node) if self.json_object[OPERATION] == REBOOT: update_reboot_status(self.session, exists) if self.json_object[OPERATION] == RESTART: self.update_results(self.node) if self.json_object[OPERATION] == START: self.update_results(self.node) if self.json_object[OPERATION] == STOP: self.update_results(self.node) else: logger.warn('%s is disabled in RV' % self.ip) self.session.close()
def __init__(self, ENGINE, ip_address, data): self.data = None self.csr_path = None self.csr_name = None self.csr_error = None self.csr_row = None self.signed_cert = None self.path_to_cert = None self.cert_name = None self.cert_error = None self.error = None self.client_ip = ip_address self.username = '******' self.valid_json, self.json_object = verify_json_is_valid(data) if self.valid_json: self.data = self.json_object self.session = create_session(ENGINE) self.session = validate_session(self.session) if "pem" in self.json_object: self.csr_exists = csr_exists(self.session, self.client_ip) if not self.csr_exists: verified, self.error = \ verify_valid_format(self.data['pem'], TYPE_CSR) if verified: self.csr, self.csr_path, self.csr_name, \ self.csr_row = store_csr(self.session, \ self.client_ip, self.data['pem']) self.signed_cert = sign_cert(self.session, self.csr) self.node, self.cert_path = store_cert(self.session, \ self.client_ip, self.signed_cert) self.results = self.send_cert(self.node, \ self.signed_cert) logger.debug('%s - ERROR: %s\tDATA: %s' % \ (self.username, self.results.error, self.results.read_data) ) if self.results.error: logger.error(self.results.error) logger.error('%s - Deleteing CSR and CERT for %s' %\ (self.username, self.results.error) ) self.csr_exists = \ csr_exists(self.session, self.client_ip) self.cert_exists = \ cert_exists(self.session, self.node.id) csr_file_deleted = os.remove(self.csr_path) cert_file_deleted = os.remove(self.cert_path) self.session.delete(self.cert_exists) self.session.delete(self.csr_exists) logger.error('%s - CSR and CERT for %s were deleted' %\ (self.username, self.node.ip_address) ) self.node = \ node_exists(self.session, node_ip=self.client_ip) if self.node: self.session.delete(self.node) logger.error('%s - Deleteing Node %s' %\ (self.username, self.node.ip_address) ) self.session.commit() else: logger.error('csr for %s %s' % \ (self.client_ip, self.error)) self.session.close() else: logger.debug('%s - JSON NOT VALID from node %s, msg=%s' % \ (self.username, ipaddress, data) )