def collect(request): req = request if req.POST: vendor = req.POST.get('vendor') product = req.POST.get('product') cpu_model = req.POST.get('cpu_model') cpu_num = req.POST.get('cpu_num') memory = req.POST.get('memory') sn = req.POST.get('sn') osver = req.POST.get('osver') hostname = req.POST.get('hostname') try: host = Host.objects.get(hostname=hostname) except: host = Host() host.hostname=hostname host.product=product host.cpu_num=int(cpu_num) host.cpu_model=cpu_model host.memory = int(memory) host.sn = sn host.osver = osver host.vendor = vendor host.ipaddr = req.POST.get('ip') host.save() return HttpResponse("ok") else: return HttpResponse("no post data")
def collect(request): req = request if req.POST: vendor = req.POST.get('Product_Name') sn = req.POST.get('Serial_Number') product = req.POST.get('Manufacturer') cpu_model = req.POST.get('Model_Name') cpu_num = req.POST.get('Cpu_Cores') cpu_vendor = req.POST.get('Vendor_Id') memory_part_number = req.POST.get('Part_Number') memory_manufacturer = req.POST.get('Manufacturer') memory_size = req.POST.get('Size') #uuid = req.POST.get('UUID') identity = req.POST.get('identity') device_model = req.POST.get('Device_Model') device_version = req.POST.get('Firmware_Version') device_sn = req.POST.get('Serial_Number') device_size = req.POST.get('User_Capacity') osver = req.POST.get('os_version') hostname = req.POST.get('os_name') os_release = req.POST.get('os_release') ipaddrs = req.POST.get('Ipaddr') mac = req.POST.get('Device') link = req.POST.get('Link') mask = req.POST.get('Mask') device = req.POST.get('Device') host = Host() host.hostname = hostname host.product = product host.cpu_num = cpu_num host.cpu_model = cpu_model host.cpu_vendor = cpu_vendor host.memory_part_number = memory_part_number host.memory_manufacturer = memory_manufacturer host.memory_size = memory_size host.device_model = device_model host.device_version = device_version host.device_sn = device_sn host.device_size = device_size host.osver = osver host.os_release = os_release host.vendor = vendor #host.uuid = uuid host.identity = identity host.sn = sn host.ipaddr = ipaddrs host.save() #for ip in ipaddrs.split(';'): # o_ip = IPaddr() # o_ip.ipaddr = ip # o_ip.host = host # o_ip.save() return HttpResponse('OK') else: return HttpResponse('no post data')
def collect(request): asset_info = json.loads(request.body) if request.method == 'POST': vendor = asset_info['vendor'] # group = asset_info['group'] disk = asset_info['disk'] cpu_model = asset_info['cpu_model'] cpu_num = asset_info['cpu_num'] memory = asset_info['memory'] sn = asset_info['sn'] osver = asset_info['osver'] hostname = asset_info['hostname'] ip = asset_info['ip'] mgm_ip = asset_info['mgm_ip'] terminal_user = asset_info['terminal_user'] # asset_type = "" # status = "" try: host = Host.objects.get(hostname=hostname) except Exception as msg: print(msg) host = Host() level = get_dir("log_level") ssh_pwd = get_dir("ssh_pwd") log_path = get_dir("log_path") log("cmdb.log", level, log_path) logging.info("==========sshkey deploy start==========") data = deploy_key(ip, ssh_pwd) logging.info(data) logging.info("==========sshkey deploy end==========") # if req.POST.get('identity'): # identity = req.POST.get('identity') # try: # host = Host.objects.get(identity=identity) # except: # host = Host() host.hostname = hostname # host.group = group host.cpu_num = int(cpu_num) host.cpu_model = cpu_model host.memory = int(memory) host.sn = sn host.disk = disk host.os = osver host.vendor = vendor host.ip = ip host.mgm_ip = mgm_ip host.terminal_user = terminal_user # host.asset_type = asset_type # host.status = status host.save() return HttpResponse("Post asset data to server successfully!") else: return HttpResponse("No any post data!")
def new_host(): """ Add a new album """ form = HostForm(request.form) if request.method == 'POST' and form.validate(): # save the album host = Host() save_host(host, form, new=True) flash('Host created successfully!') return redirect('/') return render_template('new_host.html', form=form)
def check_add(): host_type = request.form.get('type') cluster = request.form.get('cluster') hosts_temp = request.form.get('hostname') add_hosts = hosts_temp.split('|') for hostname in add_hosts: add_host = Host(type=host_type, cluster=cluster, hostname=hostname) db.session.add(add_host) try: db.session.commit() return "success" except: return "fail"
def collect(request): req = request if req.POST: vendor = req.POST.get('vendor') product = req.POST.get('product') cpu_model = req.POST.get('cpu_model') cpu_num = req.POST.get('cpu_num') memory = req.POST.get('memory') sn = req.POST.get('sn') osver = req.POST.get('osver') hostname = req.POST.get('hostname') try: host = Host.objects.get(hostname=hostname) except: host = Host() ipaddrs = req.POST.get('ipaddrs') identity = req.POST.get('identity') try: host = Host.objects.get(identity=identity) except: host = Host() host.hostname = hostname host.product = product host.cpu_num = int(cpu_num) host.cpu_model = cpu_model host.memory = int(memory) host.sn = sn host.osver = osver host.vendor = vendor host.save() for ip in ipaddrs.split(';'): o_ip = Ipaddr() o_ip.ipaddr = ip o_ip.host = host o_ip.save() return HttpResponse("post data successfully!") else: return HttpResponse("no any post data!")
def create_host(): if request.methods == 'POST': ip = (request.json['ip']) try: host = Host.query.filter(Host.ip == ip).first() if host is not None: return jsonify({'success': False, "error": "this host already exists with id " + host.id}) host = Host(ip=ip) db.session.add(host) db.session.commit() return jsonify({'success': True, "error": null}) except: error ='ip upload error' return jsonify({'success': False, "error": error})
def create_or_update_host(db_session, hostname, region_id, location, roles, software_profile_id, connection_type, host_or_ip, username, password, enable_password, port_number, jump_host_id, created_by, host=None): hostname = check_acceptable_string(hostname) """ Create a new host in the Database """ if host is None: host = Host(created_by=created_by) host.inventory_job.append(InventoryJob()) host.context.append(HostContext()) db_session.add(host) host.hostname = hostname host.region_id = region_id if region_id > 0 else None host.software_profile_id = software_profile_id if software_profile_id > 0 else None host.location = '' if location is None else remove_extra_spaces(location) host.roles = '' if roles is None else remove_extra_spaces(roles) host.connection_param = [ ConnectionParam( # could have multiple IPs, separated by comma host_or_ip='' if host_or_ip is None else remove_extra_spaces(host_or_ip), username='' if username is None else remove_extra_spaces(username), password='' if password is None else remove_extra_spaces(password), enable_password='' if enable_password is None else remove_extra_spaces(enable_password), jump_host_id=jump_host_id if jump_host_id > 0 else None, connection_type=connection_type, # could have multiple ports, separated by comma port_number='' if port_number is None else remove_extra_spaces(port_number)) ] db_session.commit() return host
def host_add(self, name, groups=[]): # does this host exist? try: host = self.session.query(Host).filter(Host.name == name).one() except: host = Host(name=name) # if we have to make a host, add it to [all] host.groups.append( self.session.query(Group).filter(Group.name == 'all').one()) if groups: for group in groups: # does the group exist? this throws an exception if the group wasnt found group = self.session.query(Group).filter( Group.name == group).one() if not group in host.groups: host.groups.append(group) self.session.add(host) self.session.commit()
def host_add(request): if request.method == 'POST': name = request.POST.get('name') ip = request.POST.get('ip') netmask = request.POST.get('netmask') gateway = request.POST.get('gateway') disk = request.POST.get('disk') ip_range = request.POST.get('ip_range') print name, ip, netmask, gateway, disk host = Host(name=name, ip=ip, netmask=netmask, gateway=gateway, disk_used=disk, ip_range=ip_range) host.save() return HttpResponse('添加成功') return render_to_response('host_add.html', locals())
def collect(request): asset_info = json.loads(request.body) if request.method == 'POST': vendor = asset_info['vendor'] # group = asset_info['group'] disk = asset_info['disk'] cpu_model = asset_info['cpu_model'] cpu_num = asset_info['cpu_num'] memory = asset_info['memory'] sn = asset_info['sn'] osver = asset_info['osver'] hostname = asset_info['hostname'] ip = asset_info['ip'] asset_type = "" status = "" try: host = Host.objects.get(hostname=hostname) except: host = Host() # if req.POST.get('identity'): # identity = req.POST.get('identity') # try: # host = Host.objects.get(identity=identity) # except: # host = Host() host.hostname = hostname # host.group = group host.cpu_num = int(cpu_num) host.cpu_model = cpu_model host.memory = int(memory) host.sn = sn host.disk = disk host.os = osver host.vendor = vendor host.ip = ip host.asset_type = asset_type host.status = status host.save() return HttpResponse("Post asset data to server successfully!") else: return HttpResponse("No any post data!")
def collect(request): req = request if req.POST: vendor = req.POST.get('vendor') group = req.POST.get('group') disk = req.POST.get('disk') cpu_model = req.POST.get('cpu_model') cpu_num = req.POST.get('cpu_num') memory = req.POST.get('memory') sn = req.POST.get('sn') osver = req.POST.get('osver') hostname = req.POST.get('hostname') ip = req.POST.get('ip') asset_type = "" status = "" try: host = Host.objects.get(hostname=hostname) except: host = Host() # if req.POST.get('identity'): # identity = req.POST.get('identity') # try: # host = Host.objects.get(identity=identity) # except: # host = Host() host.hostname = hostname #host.group = group host.cpu_num = int(cpu_num) host.cpu_model = cpu_model host.memory = int(memory) host.sn = sn host.disk = disk host.os = osver host.vendor = vendor host.ip = ip host.asset_type = asset_type host.status = status host.save() return HttpResponse("post data successfully!") else: return HttpResponse("no any post data!")
def add(): if request.method == "POST": try: if request.form['a_servername']: a_servername = request.form.get('a_servername').strip() if servername_check(a_servername) is not None: return jsonify("Failed, Server Name exists in database.") if request.form['a_ip']: a_ip = request.form.get('a_ip').strip() if request.form['a_port']: a_port = request.form.get('a_port').strip() if request.form['a_username']: a_username = request.form.get('a_username').strip() if request.form['a_password']: a_password = encrypt(request.form.get('a_password').strip()) if request.form['a_servername']: a_servername = request.form.get('a_servername').strip() if request.form['a_comment']: a_comment = request.form.get('a_comment').strip() if request.form['a_servergroup']: a_servergroup = request.form.get('a_servergroup').strip() server = Host(servername=a_servername, ip=a_ip, port=a_port, group=a_servergroup) session.add(server) session.commit() passwd = Passwd(username=a_username, password=a_password, host=server, comment=a_comment) session.add(passwd) session.commit() except Exception, e: print e return jsonify( "Added failed, make sure you include the right values.") return jsonify("Added successfully")
def post(self): form = HostForm(request.form) if form.validate_on_submit(): host, user = request.form['host'], request.form['user'] pwd, port = request.form['password'], request.form['port'] # 检查主机是否已存在 if Host.filter(host): flash('主机已存在!') else: # 测试密码是否正确,是否能连接成功 result = Host.test_connect(host, user, pwd, port) if result['code'] == 0: password = encrypt_oracle(pwd) host_obj = Host(addr=host, name=user, password=password, port=port) db.session.add(host_obj) db.session.commit() return redirect(url_for('index')) else: flash('添加失败,请检查参数是否正确!') return render_template('order.html', form=form)
def collectjson(request): req = request if req.method == "POST": jsonobj = json.loads(req.body) try: host = Host.objects.get(identity=jsonobj['identity']) except: host = Host() try: host.identity = jsonobj['identity'] host.hostname = jsonobj['hostname'] host.product = jsonobj['product'] host.cpu_num = jsonobj['cpu_num'] host.cpu_model = jsonobj['cpu_model'] host.memory = jsonobj['memory'] host.sn = jsonobj['sn'] host.osver = jsonobj['osver'] host.vendor = jsonobj['vendor'] host.ipaddr = jsonobj['ip'] host.save() return HttpResponse(json.dumps({'status': 0, 'message': "ok"})) except Exception, e: return HttpResponse(json.dumps({'status': -1, 'message': str(e)}))
def collect(request): asset_info = json.loads(request.body) print asset_info if request.method == 'POST': #vendor = asset_info['vendor'] # group = asset_info['group'] disk = asset_info['disk'] #cpu_model = asset_info['cpu_model'] cpu_num = asset_info['cpu_num'] memory = asset_info['memory'] sn = asset_info['sn'] osver = asset_info['osver'] hostname = asset_info['hostname'] ip = asset_info['privateIps'] # asset_type = "" # status = "" try: # 检查hostname是否已经存在 host = Host.objects.get(hostname=hostname) except Exception as msg: print(msg) host = Host() host.hostname = hostname # host.group = group host.cpu_num = int(cpu_num) #host.cpu_model = cpu_model host.memory = float(memory) host.sn = sn host.disk = disk host.os = osver #host.vendor = vendor host.ip = ip host.save() return HttpResponse("Post asset data to server successfully!") else: return HttpResponse("No any post data!")
import random import string from random import choice def generate_passwd(length): passwd_format = string.digits + string.ascii_letters passwd = [] while (len(passwd) < length): passwd.append(choice(passwd_format)) return ''.join(passwd) for i in range(20): server3 = Host(servername="srv-{0}-db10{1}".format(generate_passwd(5), i), ip="10.10.1.1", port="40022", group="lz") session.add(server3) session.commit() passwd3 = Passwd(username="******", password=encrypt(generate_passwd(12)), host=server3) session.add(passwd3) session.commit() passwd4 = Passwd(username="******", password=encrypt(generate_passwd(12)), comment="PrivateIP:10.0.0.1", host=server3) session.add(passwd4)
def load_data(): with open('data/AB_NYC_2019.csv', mode='r') as csv_data: csv_reader = csv.reader(csv_data, delimiter=',') line_count=0 skipped = [] hosts_seen = set() appartments_seen = set() for row in csv_reader: if line_count == 0: line_count += 1 continue if len(row) < 16: # skip rows that are too short because we don't know # which columns are missing skipped.append(row) continue line_count += 1 print(line_count) last_review_date = datetime.strptime(row[12],'%Y-%m-%d') if row[12] else None appartment_id=int(row[0]) name=row[1] neighbourhood_group=row[4] neighbourhood=row[5] try: latitude=float(row[6]) longitude=float(row[7]) except ValueError: skipped.append(row) continue room_type=row[8] price=float(row[9]) minimum_nights=int(row[10]) number_of_reviews=int(row[11]) reviews_per_month=float(row[13]) if row[13] else None calculated_host_listings_count=int(row[14]) availability_365=int(row[15]) host_id=int(row[2]) new_host = Host(host_id=host_id, name=row[3]) new_appartment = Appartment( appartment_id=int(row[0]), name=row[1], neighbourhood_group=row[4], neighbourhood=row[5], latitude=float(row[6]), longitude=float(row[7]), room_type=row[8], price=float(row[9]), minimum_nights=int(row[10]), number_of_reviews=int(row[11]), last_review=last_review_date, reviews_per_month=float(row[13]) if row[13] else None, calculated_host_listings_count=int(row[14]), availability_365=int(row[15]), host_id=int(row[2]), ) print(new_appartment) print(new_host) if new_host.host_id in hosts_seen: print("Host {} already added".format(new_host)) else: db.session.add(new_host) hosts_seen.add(new_host.host_id) if new_appartment.appartment_id in appartments_seen: print("Duplicate entry: {}".format(new_appartment)) else: db.session.add(new_appartment) appartments_seen.add(new_appartment.appartment_id) db.session.flush() print(f'Processed {line_count} lines.') print(f'Skipped {len(skipped)} lines')
def addHConfig(request): if request.method == 'POST': try: save_list = [] info = request.POST.get('info', '') group = request.POST.get('group', '') pc = PrometheusConfig.objects.filter() path = pc[0].rule_files_path if not path.endswith('/'): path += '/' value = eval(info) flag = True for item in value: target = item["targets"][0] try: name = item['labels']['name'] except Exception, e: print e name = target try: type = item['labels']['monitortype'] except Exception, e: print e type = '' # os.system('mkdir -p ' + path + group + '/' + name) flag = createHost(name, group) if flag is False: break labels = json.dumps(item['labels'], ensure_ascii=False) id = 'H' + datetime.datetime.now().strftime( '%Y%m%d%H%M%S') + ''.join( str(random.choice(range(10))) for _ in range(10)) ht = Host(hid=id, instance=target, name=name, groupid=group, monitortype=type, label=labels) save_list.append(ht) # flag = createHost(name, group) # if flag is False: # break if flag is True: Host.objects.bulk_create(save_list) jobfile = pc[0].job_path if not jobfile.endswith('/'): jobfile += '/' os.system('mkdir -p ' + jobfile) ht = Host.objects.filter(groupid=group) x = [] for index in range(0, len(ht)): host = {} target_host = [] target_host.append(ht[index].instance) host['targets'] = target_host host['labels'] = eval(ht[index].label) x.append(host) with open(jobfile + group + '.yml', 'w') as f: f.write(json.dumps(x, ensure_ascii=False)) return HttpResponse(json.dumps(u'添加成功'))
def main(): pidfile = PidFile(file_name=config['pidfile']) pidfile.create(pid=os.getpid()) atexit.register(pidfile.unlink) threads = [] signal.signal(signal.SIGTERM, Utils.signal_handle) signal.signal(signal.SIGINT, Utils.signal_handle) t_ = threading.Thread(target=Host().guest_creating_progress_report_engine, args=()) threads.append(t_) t_ = threading.Thread(target=Host().guest_state_report_engine, args=()) threads.append(t_) t_ = threading.Thread(target=Host().instruction_process_engine, args=()) threads.append(t_) t_ = threading.Thread(target=Host().host_state_report_engine, args=()) threads.append(t_) t_ = threading.Thread(target=Host().guest_performance_collection_engine, args=()) threads.append(t_) t_ = threading.Thread(target=Host().host_performance_collection_engine, args=()) threads.append(t_) vir_event_loop_poll_register() t_ = threading.Thread(target=vir_event_loop_poll_run, name="libvirtEventLoop") threads.append(t_) for t in threads: t.setDaemon(True) t.start() i = 0 while not eventLoop.runningPoll and i <= 10: """ 避免在 timer 还没启动的时候,就去注册事件。那样会抛出如下异常: libvirtError: internal error: could not initialize domain event timer """ i += 1 time.sleep(1) EventProcess.guest_event_register() while True: if Utils.exit_flag: # 主线程即将结束 EventProcess.guest_event_deregister() break if config['DEBUG']: print threads_status for k, v in threads_status.items(): # 如果某个引擎脱线 120 秒,则自动重启 JimV-N。 if (ji.Common.ts() - v['timestamp']) > 120: Host.restart() time.sleep(1) # 等待子线程结束 for t in threads: t.join() msg = 'Main say bye-bye!' print msg logger.info(msg=msg)
def on_okbutton1_clicked(self, widget, *args): group = self.cmbGroup.get_active_text().strip() name = self.txtName.get_text().strip() description = self.txtDescription.get_text().strip() host = self.txtHost.get_text().strip() ctype = self.cmbType.get_active_text().strip() user = self.txtUser.get_text().strip() password = self.txtPass.get_text().strip() private_key = self.txtPrivateKey.get_text().strip() port = self.txtPort.get_text().strip() buf = self.txtCommands.get_buffer() commands = buf.get_text(buf.get_start_iter(), buf.get_end_iter( )).strip() if self.chkCommands.get_active() else "" keepalive = self.txtKeepAlive.get_text().strip() if self.get_widget("chkDefaultColors").get_active(): fcolor = "" bcolor = "" else: fcolor = self.btnFColor.selected_color bcolor = self.btnBColor.selected_color x11 = self.chkX11.get_active() agent = self.chkAgent.get_active() compression = self.chkCompression.get_active() compressionLevel = self.txtCompressionLevel.get_text().strip() extra_params = self.txtExtraParams.get_text() log = self.chkLogging.get_active() backspace_key = self.cmbBackspace.get_active() delete_key = self.cmbDelete.get_active() if ctype == "": ctype = "ssh" tunnel = "" if ctype == "ssh": for x in self.treeModel: tunnel = '%s,%s' % (x[3], tunnel) tunnel = tunnel[:-1] # Validar datos if group == "" or name == "" or (host == "" and ctype != 'local'): msgbox(_("Fields group, name and host are required")) return if not (port and port.isdigit() and 1 <= int(port) <= 65535): msgbox(_("Invalid port")) return host = Host(group, name, description, host, user, password, private_key, port, tunnel, ctype, commands, keepalive, fcolor, bcolor, x11, agent, compression, compressionLevel, extra_params, log, backspace_key, delete_key) try: # Guardar if not group not in self.config.groups: self.config.groups[group] = [] if self.isNew: for h in self.config.groups[group]: if h.name == name: msgbox("%s [%s] %s [%s]" % (_("Host name"), name, _("already exists for group"), group)) return # agregar host a grupo self.config.groups[group].append(host) else: if self.oldGroup != group: # revisar que no este el nombre en el nuevo grupo if not group not in self.config.groups: self.config.groups[group] = [host] else: for h in self.config.groups[group]: if h.name == name: msgbox("%s [%s] %s [%s]" % (_("Host name"), name, _("already exists for group"), group)) return self.config.groups[group].append(host) for h in self.config.groups[self.oldGroup]: if h.name == self.oldName: self.config.groups[self.oldGroup].remove(h) break else: if self.oldName != name: for h in self.config.groups[self.oldGroup]: if h.name == name: msgbox("%s [%s] %s [%s]" % (_("Host name"), name, _("already exists for group"), group)) return for h in self.config.groups[self.oldGroup]: if h.name == self.oldName: index = self.config.groups[ self.oldGroup].index(h) self.config.groups[self.oldGroup][index] = host break else: for h in self.config.groups[self.oldGroup]: if h.name == self.oldName: index = self.config.groups[ self.oldGroup].index(h) self.config.groups[self.oldGroup][index] = host break except: traceback.print_exc() msgbox("%s [%s]" % (_("Error saving host. Description"), sys.exc_info()[1])) self.config.writeConfig() self.get_widget("wHost").destroy()
def api_import_hosts(): importable_header = [ HEADER_FIELD_HOSTNAME, HEADER_FIELD_REGION, HEADER_FIELD_ROLES, HEADER_FIELD_IP, HEADER_FIELD_USERNAME, HEADER_FIELD_PASSWORD, HEADER_FIELD_CONNECTION, HEADER_FIELD_PORT ] region_id = request.form['region'] data_list = request.form['data_list'] db_session = DBSession() selected_region = get_region_by_id(db_session, region_id) if selected_region is None: return jsonify( {'status': 'Region is no longer exists in the database.'}) # Check mandatory data fields error = [] reader = csv.reader(data_list.splitlines(), delimiter=',') header_row = next(reader) if HEADER_FIELD_HOSTNAME not in header_row: error.append('"hostname" is missing in the header.') if HEADER_FIELD_IP not in header_row: error.append('"ip" is missing in the header.') if HEADER_FIELD_CONNECTION not in header_row: error.append('"connection" is missing in the header.') for header_field in header_row: if header_field not in importable_header: error.append('"' + header_field + '" is not a correct header field.') if error: return jsonify({'status': ','.join(error)}) # Check if each row has the same number of data fields as the header error = [] data_list = list(reader) row = 2 COLUMN_CONNECTION = get_column_number(header_row, HEADER_FIELD_CONNECTION) COLUMN_REGION = get_column_number(header_row, HEADER_FIELD_REGION) for row_data in data_list: if len(row_data) > 0: if len(row_data) != len(header_row): error.append('line %d has wrong number of data fields.' % row) else: if COLUMN_CONNECTION >= 0: # Validate the connection type data_field = row_data[COLUMN_CONNECTION] if data_field != ConnectionType.TELNET and data_field != ConnectionType.SSH: error.append( 'line %d has a wrong connection type (should either be "telnet" or "ssh").' % row) if COLUMN_REGION >= 0: # Create a region if necessary data_field = get_acceptable_string(row_data[COLUMN_REGION]) region = get_region(db_session, data_field) if region is None and data_field: try: db_session.add( Region(name=data_field, created_by=current_user.username)) db_session.commit() except Exception: db_session.rollback() error.append('Unable to create region %s.' % data_field) row += 1 if error: return jsonify({'status': ','.join(error)}) # Import the data error = [] im_regions = {} for data in data_list: if len(data) == 0: continue db_host = None im_host = Host() im_host.region_id = selected_region.id im_host.created_by = current_user.username im_host.inventory_job.append(InventoryJob()) im_host.context.append(HostContext()) im_host.connection_param.append(ConnectionParam()) im_host.connection_param[0].username = '' im_host.connection_param[0].password = '' im_host.connection_param[0].port_number = '' for column in range(len(header_row)): header_field = header_row[column] data_field = data[column].strip() if header_field == HEADER_FIELD_HOSTNAME: hostname = get_acceptable_string(data_field) db_host = get_host(db_session, hostname) im_host.hostname = hostname elif header_field == HEADER_FIELD_REGION: region_name = get_acceptable_string(data_field) if region_name in im_regions: im_host.region_id = im_regions[region_name] else: region = get_region(db_session, region_name) if region is not None: im_host.region_id = region.id # Saved for later lookup im_regions[region_name] = region.id elif header_field == HEADER_FIELD_ROLES: im_host.roles = remove_extra_spaces(data_field) elif header_field == HEADER_FIELD_IP: im_host.connection_param[0].host_or_ip = remove_extra_spaces( data_field) elif header_field == HEADER_FIELD_USERNAME: username = get_acceptable_string(data_field) im_host.connection_param[0].username = username elif header_field == HEADER_FIELD_PASSWORD: im_host.connection_param[0].password = data_field elif header_field == HEADER_FIELD_CONNECTION: im_host.connection_param[0].connection_type = data_field elif header_field == HEADER_FIELD_PORT: im_host.connection_param[0].port_number = remove_extra_spaces( data_field) # Import host already exists in the database, just update it if db_host is not None: db_host.created_by = im_host.created_by db_host.region_id = im_host.region_id if HEADER_FIELD_ROLES in header_row: db_host.roles = im_host.roles if HEADER_FIELD_IP in header_row: db_host.connection_param[ 0].host_or_ip = im_host.connection_param[0].host_or_ip if HEADER_FIELD_USERNAME in header_row: db_host.connection_param[ 0].username = im_host.connection_param[0].username if HEADER_FIELD_PASSWORD in header_row: db_host.connection_param[ 0].password = im_host.connection_param[0].password if HEADER_FIELD_CONNECTION in header_row: db_host.connection_param[ 0].connection_type = im_host.connection_param[ 0].connection_type if HEADER_FIELD_PORT in header_row: db_host.connection_param[ 0].port_number = im_host.connection_param[0].port_number else: # Add the import host db_session.add(im_host) if error: return jsonify({'status': error}) else: db_session.commit() return jsonify({'status': 'OK'})
def main(): pidfile = PidFile(file_name=config['pidfile']) pidfile.create(pid=os.getpid()) atexit.register(pidfile.unlink) threads = [] signal.signal(signal.SIGTERM, Utils.signal_handle) signal.signal(signal.SIGINT, Utils.signal_handle) guest_creating_progress_report_engine_engine = Host() t_ = threading.Thread(target=guest_creating_progress_report_engine_engine. guest_creating_progress_report_engine, args=()) threads.append(t_) host_use_for_instruction_process_engine = Host() t_ = threading.Thread(target=host_use_for_instruction_process_engine. instruction_process_engine, args=()) threads.append(t_) host_use_for_host_state_report_engine = Host() t_ = threading.Thread( target=host_use_for_host_state_report_engine.host_state_report_engine, args=()) threads.append(t_) host_use_for_guest_performance_collection_engine = Host() t_ = threading.Thread( target=host_use_for_guest_performance_collection_engine. guest_performance_collection_engine, args=()) threads.append(t_) host_use_for_host_performance_collection_engine = Host() t_ = threading.Thread( target=host_use_for_host_performance_collection_engine. host_performance_collection_engine, args=()) threads.append(t_) vir_event_loop_poll_register() t_ = threading.Thread(target=vir_event_loop_poll_run, name="libvirtEventLoop") threads.append(t_) host_use_for_refresh_guest_state = Host() host_use_for_refresh_guest_state.refresh_guest_state() for t in threads: t.setDaemon(True) t.start() EventProcess.guest_event_register() while True: if Utils.exit_flag: # 主线程即将结束 EventProcess.guest_event_deregister() break if config['DEBUG']: print threads_status time.sleep(1) # 等待子线程结束 for t in threads: t.join() msg = 'Main say bye-bye!' print msg logger.info(msg=msg)
def consume(self, commandstr): """ Read and act upon a line of lobby protocol. Only the following commands are implemented: ADDUSER BATTLECLOSED BATTLEOPENED CLIENTSTATUS JOINEDBATTLE LEFTBATTLE REMOVEUSER UPDATEBATTLEINFO """ if commandstr.startswith("ADDUSER"): # http://springrts.com/dl/LobbyProtocol/ProtocolDescription.html#ADDUSER:server # ADDUSER userName country cpu [accountID] try: self.users[commandstr.split()[1]] = User( *commandstr.split()[1:]) except ValueError: logger.exception("Bad format, commandstr: '%s'", repr(commandstr)) return except Exception: logger.exception("Exception, commandstr: '%s'", repr(commandstr)) return elif commandstr.startswith("BATTLECLOSED"): # http://springrts.com/dl/LobbyProtocol/ProtocolDescription.html#BATTLECLOSED:server # BATTLECLOSED battleID try: battleID = commandstr.split()[1] except Exception: logger.exception("Commandstr: '%s'", repr(commandstr)) return # founder is founder no more try: self.hosts[battleID].user.host = None except: logger.exception( "error removing host-user-founder association") # remove battle from all host lists for hosts in [self.hosts, self.hosts_ingame, self.hosts_open]: try: del hosts[battleID] except: pass elif commandstr.startswith("BATTLEOPENED"): # http://springrts.com/dl/LobbyProtocol/ProtocolDescription.html#BATTLEOPENED:server # BATTLEOPENED battleID type natType founder ip port maxPlayers passworded rank mapHash {engineName} \ # {engineVersion} {map} {title} {gameName} try: cmd, engineVersion, _map, title, gameName = commandstr.split( "\t") _, battleID, _type, natType, founder, ip, port, maxPlayers, passworded, rank, mapHash, engineName = \ cmd.split() except ValueError: logger.exception("Bad format, commandstr: '%s'", repr(commandstr)) return except Exception: logger.exception("Commandstr: '%s'", repr(commandstr)) return loc = locals() del loc["_"] del loc["cmd"] del loc["commandstr"] del loc["self"] loc["map"] = _map del loc["_map"] loc["type"] = _type del loc["_type"] for k, v in loc.items(): loc[k] = unicode(v, errors='ignore') host = Host(loc) self.hosts[battleID] = host self.hosts_open[battleID] = host host.user = self.users[founder] host.user.host = host elif commandstr.startswith("CLIENTSTATUS"): # http://springrts.com/dl/LobbyProtocol/ProtocolDescription.html#CLIENTSTATUS:server # http://springrts.com/dl/LobbyProtocol/ProtocolDescription.html#MYSTATUS:client # CLIENTSTATUS userName status # status bits: is_bot|has_access|3*rank|is_away|is_ingame try: _, userName, status = commandstr.split() except ValueError: logger.exception("Bad format, commandstr: '%s'", repr(commandstr)) return except: logger.exception("Commandstr: '%s'", repr(commandstr)) return try: user = self.users[userName] except: logger.exception( "Exception in CLIENTSTATUS: userName '%s' in self.users?: %s, commandstr: '%s'", userName, userName in self.users, repr(commandstr)) return try: status_bin = bin(int(status))[2:].zfill(7) user.is_ingame = bool(int(status_bin[6])) user.is_away = bool(int(status_bin[5])) user.rank = int(status_bin[2:5], base=2) user.is_moderator = bool(int(status_bin[1])) user.is_bot = bool(int(status_bin[0])) except: logger.exception( "Exception in CLIENTSTATUS: status: '%s', status_bin: '%s', commandstr: '%s'", repr(commandstr), status, status_bin) return if user.host: user.host.is_ingame = user.is_ingame if user.is_ingame: # add host to hosts_ingame self.hosts_ingame[user.host.battleID] = user.host # remove host from hosts_open try: del self.hosts_open[user.host.battleID] except: # CLIENTSTATUS is sent twice in case of self-hosted battles pass else: # add host to hosts_open self.hosts_open[user.host.battleID] = user.host # remove host from hosts_ingame try: del self.hosts_ingame[user.host.battleID] except Exception: if self.login_info_consumed: logger.exception( "Exception in CLIENTSTATUS: trying to remove host from hosts_ingame, commandstr: '%s'", repr(commandstr)) else: # msg flood in in wrong order during initial setup pass elif commandstr.startswith("JOINEDBATTLE"): # http://springrts.com/dl/LobbyProtocol/ProtocolDescription.html#JOINEDBATTLE:server # JOINEDBATTLE battleID userName [scriptPassword] try: _, battleID, userName = commandstr.split() except ValueError: logger.exception("Bad format, commandstr: '%s'", repr(commandstr)) return self.hosts[battleID].user_list.append(self.users[userName]) self.hosts[battleID].set_player_count() elif commandstr.startswith("LEFTBATTLE"): # http://springrts.com/dl/LobbyProtocol/ProtocolDescription.html#LEFTBATTLE:server # LEFTBATTLE battleID userName try: _, battleID, userName = commandstr.split() except ValueError: logger.exception("Bad format, commandstr: '%s'", repr(commandstr)) return try: self.hosts[battleID].user_list.remove(self.users[userName]) self.hosts[battleID].set_player_count() except: logger.exception( "Exception in LEFTBATTLE: userName '%s' not in self.hosts[%s].user_list?", userName, battleID) return elif commandstr.startswith("REMOVEUSER"): # http://springrts.com/dl/LobbyProtocol/ProtocolDescription.html#REMOVEUSER:server # REMOVEUSER userName userName = commandstr.split()[1] user = self.users[userName] if user.host: try: del self.hosts[user.host.battleID] del self.hosts_open[user.host.battleID] except: pass try: del self.users[userName] except ValueError: logger.exception("Bad format, commandstr: '%s'", repr(commandstr)) return except KeyError: logger.exception( "Exception in REMOVEUSER: userName '%s' not in self.users?", userName) return elif commandstr.startswith("UPDATEBATTLEINFO"): # http://springrts.com/dl/LobbyProtocol/ProtocolDescription.html#UPDATEBATTLEINFO:server # UPDATEBATTLEINFO battleID spectatorCount locked mapHash {mapName} try: battleID, spectatorCount, locked, mapHash = commandstr.split( )[1:5] mapName = " ".join(commandstr.split()[5:]) except ValueError: logger.exception("Bad format, commandstr: '%s'", repr(commandstr)) return try: host = self.hosts[battleID] except KeyError: logger.exception( "Exception in UPDATEBATTLEINFO: battleID '%s' not in self.hosts?", battleID) return host.spec_count = int(spectatorCount) self.hosts[battleID].set_player_count() host.locked = bool(locked) host.mapHash = mapHash self.map = mapName else: # ignore all other commands pass