def configuration_post(request): for setting in ("imsiUpdate", "smsUpdate", "silentSms", "welcomeMessage", "replyMessage"): obj = DBSession.query(Settings).filter_by(name=setting).one() obj.value = request.POST.get(setting) DBSession.add(obj) return configuration_get(request)
def configuration_post(request): for setting in ('imsiUpdate', 'smsUpdate', 'silentSms', 'welcomeMessage', 'replyMessage'): obj = DBSession.query(Settings).filter_by(name=setting).one() obj.value = request.POST.get(setting) DBSession.add(obj) return configuration_get(request)
def gen_save_idsession(session, path): value = session if 'id' in session: print('Registra no banco a requisição') else: print('ID da session gerado.') value['id'] = str(uuid4()) # DBSession.begin() DBSession.add(LogModel(idsession=value['id'], endpoint=path)) transaction.commit() return value
def save_measure_to_db(self, meas, extension): self.logger.debug("Save measure to DB!") distance = self.__calculate_distance(long(meas['meas_rep']['L1_TA'])) self.logger.debug("distance: {0}".format(distance)) with transaction.manager: obj = Measure(imsi=meas['imsi'], timestamp=datetime.datetime.fromtimestamp(meas['time']), timing_advance=meas['meas_rep']['L1_TA'], distance=distance, phone_number=extension, gps_lat=meas['lat'], gps_lon=meas['lon'], ) self.logger.info("Add measure: imsi={0}, ta={1}, lat={2}, lon={3}".format(meas['imsi'], meas['meas_rep']['L1_TA'], meas['lat'], meas['lon'])) DBSession.add(obj)
def save_measure_to_db(self, meas, extension): self.logger.debug("Save measure to DB!") distance = self.__calculate_distance(long(meas['meas_rep']['L1_TA'])) self.logger.debug("distance: {0}".format(distance)) with transaction.manager: obj = Measure( imsi=meas['imsi'], timestamp=datetime.datetime.fromtimestamp(meas['time']), timing_advance=meas['meas_rep']['L1_TA'], distance=distance, phone_number=extension, gps_lat=meas['lat'], gps_lon=meas['lon'], ) self.logger.info( "Add measure: imsi={0}, ta={1}, lat={2}, lon={3}".format( meas['imsi'], meas['meas_rep']['L1_TA'], meas['lat'], meas['lon'])) DBSession.add(obj)
class SysUserHandler(RequestHandler, CommonMiXin): executor = ThreadPoolExecutor(THREAD_POOL_MAX) def __init__(self, *args, **kwargs): super(SysUserHandler, self).__init__(*args, **kwargs) self.validate_data = Dict() self.session = DBSession() def _validate_json(self): try: data = json.loads(self.request.body) self.validate_data.data = data except ValueError as e: logger.error("dump input data error: %s" % e.message) raise WorkFlowError("input data must be json data structure!") def _validate_required(self): required_field = ['resource', 'username'] for required in required_field: if required not in self.validate_data.data: raise WorkFlowError("%s must be required!" % required) self.validate_data.resource = self.validate_data.data['resource'] self.validate_data.username = self.validate_data.data['username'] self.validate_data.key_pass = self.validate_data.data.get( "key_pass", None) def validate(self): try: self._validate_json() self._validate_required() except Exception as e: return False, e.message return True, None @gen.coroutine def post(self): self.add_my_header() status, message = self.validate() if status: response = yield self.add_system_user(self.validate_data.resource, self.validate_data.username, self.validate_data.key_pass) code = 200 else: code = 400 response = message self.my_response(code, response) @gen.coroutine def put(self): self.ImplementError() @gen.coroutine def get(self): self.ImplementError() @gen.coroutine def delete(self, *args, **kwargs): self.add_my_header() status, message = self.validate() if status: response = yield self.del_system_user(self.validate_data.resource, self.validate_data.username) code = 200 else: code = 400 response = message self.my_response(code, response) @run_on_executor def add_system_user(self, resource, username, key_password): """ use ansible shell module to execute command on inventory. Args: resource: inventory resource, see Resource Class username: which user you want to add key_password: the ssh private key password Returns: AnsibleReuslt: AnsibleResult instance, contain the all ansible return information. """ task = Task(resource) key_dir = os.path.join(SSH_KEY_DIR, uuid4().hex) private, public = gen_keys(key_password) pri_file, pub_file = save_key_to_file(private, public, key_password, key_dir) add_user = task.add_user(username) add_key = task.push_key(username, pub_file) try: ssh_key = SSHKey(username=username, private_key=private, public_key=public, key_password=key_password, cache_dir=key_dir) self.session.add(ssh_key) self.session.commit() except Exception as e: self.session.rollback() logger.error("save ssh key instance to database failed!, %s" % e.message) finally: self.session.close() result = { "add_user": add_user.result_deal, "add_key": add_key.result_deal } return result @run_on_executor def del_system_user(self, resource, username): """ use ansible shell module to execute command on inventory. Args: resource: inventory resource, see Resource Class username: which user you want to add Returns: AnsibleReuslt: AnsibleResult instance, contain the all ansible return information. """ task = Task(resource) del_user = task.del_user(username) return del_user.result_deal
class MyPlaybook(ResourceBase): """ this is my playbook object for execute playbook. Attributes: resource: resource dict ,see ResourceBase class playbook_path: relational playbook path, the default playbook directory is: <PLAYBOOK_DIR> req: required id model: sqlalchemy data model ws_function: web socket write message function """ def __init__(self, resource, playbook_path, req_id, model): super(MyPlaybook, self).__init__(resource) self.results_raw = None self.playbook_path = playbook_path self.req = req_id self.model = model self.count = 0 self.session = DBSession() def save(self, msg): if isinstance(msg, dict): msg = json.dumps(msg) states = 'SUCCESS' else: states = 'STARTED' try: msg = msg.decode('utf-8') except UnicodeEncodeError: msg = msg record = self.model(step=self.count, req=self.req, msg=msg, states=states) self.session.add(record) self.session.commit() self.session.close() def send_web(self, msg, color): pass def display(self, msg, color=None, stderr=False, screen_only=False, log_only=False, runner=None): self.count += 1 self.save(msg) self.send_web(msg, color) def run(self, extra_vars=None): """ run ansible playbook, only surport relational path. Args: extra_vars: playbook extra variables. """ task_results = [] stats = CustomAggregateStats(task_results) callbacks.display = self.display playbook_cb = CustomePlaybookCallbacks(verbose=utils.VERBOSITY, task_results=task_results) runner_cb = PlaybookRunnerCallbacks(stats=stats, verbose=utils.VERBOSITY) playbook_path = os.path.join(PLAYBOOK_DIR, self.playbook_path) pb = PlayBook(playbook=playbook_path, stats=stats, callbacks=playbook_cb, runner_callbacks=runner_cb, inventory=self.inventory, extra_vars=extra_vars, module_path=C.DEFAULT_MODULE_PATH, check=False) self.results_raw = pb.run() self.count += 1 self.save(self.results_raw) return self.results_raw