def poweron_vm_by_vlanid(VLANID): global vmid vm_list = get_vms(vcip) for vm in vm_list: if vm['name'] == 'CentOS_' + str(VLANID): vmid = vm['vm'] poweron_vm(vcip, vmid)
def get_vm_id(): vm_list = get_vms(vcip) vm_ids = [] for vm in vm_list: try: # 要防止没有虚拟机,或者名字里边没有kali_的情况 if 'CentOS_' in vm['name']: # 对vm_name分片,取后面的数字放进list vm_ids.append(int(vm['name'].replace('CentOS_', ''))) except Exception: pass return vm_ids
def recovery(vcip): # 删除所有name是CentOS_起始的虚拟机,先关机再删除 try: for vm in get_vms(vcip): vm_name = vm['name'] if 'CentOS_' in vm_name: poweroff_vm(vcip, vm['vm']) delete_vm(vcip, vm['vm']) # 依据虚拟机的名字删除所有的Port-Group for net in get_networks(vcip)['value']: net_name = net['name'] if 'VLAN' in net_name: remove_pg(net_name) # 每次执行都等待一秒 time.sleep(1) except Exception: pass
user="******", password="******", host="192.168.10.122", port="5432") # 建立游标,用来执行数据库操作 cursor = conn.cursor() # 执行SQL命令 cursor.execute("select vm_name from cloud_vm_data") # 获取SELECT返回的元组 results = cursor.fetchall() print(results) # 获取虚拟机当前的电源状态 vm_now_state = {x['name']: x['power_state'] for x in get_vms(vcip)} print(vm_now_state) # 以字典的格式获取所有虚拟机的状态 write_db_state = {vm[0]: vm_now_state.get(vm[0], 'UNKOWN') for vm in results} with open('crontab.log', 'a') as f: f.write(str(write_db_state)) print(write_db_state) # 以key, value形式遍历字典,返回一个列表。 # 把虚拟机当前的电源状态写入到数据库 for vm, state in write_db_state.items(): if state == 'POWERED_ON': cursor.execute( "update cloud_vm_data set vm_status = '电源已打开' WHERE vm_name = '%s'" % vm)
def get_vmhost_id(no): vm_list = get_vms(vcip) for x in vm_list: if x['name'] == 'CentOS_' + str(no): return x['vm']