Пример #1
0
    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()
Пример #2
0
    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)
                        )