X-Git-Url: https://osm.etsi.org/gitweb/?a=blobdiff_plain;f=osm_openvim%2Fvim_db.py;h=5fc7c917b5b7b1cd2ba5ac3a7c6abd752cfa54a4;hb=caeb224da9840534e46ae0e8f5e194575521c668;hp=b0343420c03742330224e93e83fc075053b31fe3;hpb=0c5d424eae19c10fa2bc822267ddc9e8a9dd762e;p=osm%2Fopenvim.git diff --git a/osm_openvim/vim_db.py b/osm_openvim/vim_db.py index b034342..5fc7c91 100644 --- a/osm_openvim/vim_db.py +++ b/osm_openvim/vim_db.py @@ -37,7 +37,7 @@ import uuid as myUuid import auxiliary_functions as af import json import logging -from netaddr import IPNetwork, IPSet, IPRange, all_matching_cidrs +from netaddr import IPNetwork, IPAddress HTTP_Bad_Request = 400 HTTP_Unauthorized = 401 @@ -472,16 +472,19 @@ class vim_db(): with self.con: self.cur = self.con.cursor(mdb.cursors.DictCursor) #get HOST - cmd = "SELECT uuid, user, name, ip_name, description, ranking, admin_state_up, DATE_FORMAT(created_at,'%Y-%m-%dT%H:%i:%s') as created_at \ - FROM hosts WHERE " + where_filter + cmd = "SELECT uuid, user, password, keyfile, name, ip_name, description, ranking, admin_state_up, "\ + "DATE_FORMAT(created_at,'%Y-%m-%dT%H:%i:%s') as created_at "\ + "FROM hosts WHERE " + where_filter self.logger.debug(cmd) self.cur.execute(cmd) - if self.cur.rowcount == 0 : + if self.cur.rowcount == 0: return 0, "host '" + str(host_id) +"'not found." elif self.cur.rowcount > 1 : return 0, "host '" + str(host_id) +"' matches more than one result." host = self.cur.fetchone() host_id = host['uuid'] + if host.get("password"): + host["password"] = "*****" #get numa cmd = "SELECT id, numa_socket, hugepages, memory, admin_state_up FROM numas WHERE host_id = '" + str(host_id) + "'" self.logger.debug(cmd) @@ -504,20 +507,20 @@ class vim_db(): used = self.cur.fetchone() used_= int(used['hugepages_consumed']) if used != None else 0 numa['hugepages_consumed'] = used_ - #get ports - #cmd = "CALL GetPortsFromNuma(%s)'" % str(numa['id']) - #self.cur.callproc('GetPortsFromNuma', (numa['id'],) ) - #every time a Procedure is launched you need to close and open the cursor - #under Error 2014: Commands out of sync; you can't run this command now - #self.cur.close() - #self.cur = self.con.cursor(mdb.cursors.DictCursor) - cmd="SELECT Mbps, pci, status, Mbps_used, instance_id, if(id=root_id,'PF','VF') as type_,\ - switch_port, switch_dpid, mac, source_name\ - FROM resources_port WHERE numa_id=%d ORDER BY root_id, type_ DESC" % (numa['id']) + # get ports + # cmd = "CALL GetPortsFromNuma(%s)'" % str(numa['id']) + # self.cur.callproc('GetPortsFromNuma', (numa['id'],) ) + # every time a Procedure is launched you need to close and open the cursor + # under Error 2014: Commands out of sync; you can't run this command now + # self.cur.close() + # self.cur = self.con.cursor(mdb.cursors.DictCursor) + cmd = "SELECT Mbps, pci, status, Mbps_used, instance_id, if(id=root_id,'PF','VF') as type_, "\ + "switch_port, switch_dpid, switch_mac, mac, source_name "\ + "FROM resources_port WHERE numa_id={} ORDER BY root_id, type_ DESC".format(numa['id']) self.logger.debug(cmd) self.cur.execute(cmd) ifaces = self.cur.fetchall() - #The SQL query will ensure to have SRIOV interfaces from a port first + # The SQL query will ensure to have SRIOV interfaces from a port first sriovs=[] Mpbs_consumed = 0 numa['interfaces'] = [] @@ -533,6 +536,8 @@ class vim_db(): del iface["switch_dpid"] if not iface["switch_port"]: del iface["switch_port"] + if not iface["switch_mac"]: + del iface["switch_mac"] if sriovs: iface["sriovs"] = sriovs if Mpbs_consumed: @@ -544,6 +549,7 @@ class vim_db(): else: #VF, SRIOV del iface["switch_port"] del iface["switch_dpid"] + del iface["switch_mac"] del iface["type_"] del iface["Mbps"] sriovs.append(iface) @@ -1064,7 +1070,7 @@ class vim_db(): #get extended extended = {} #get devices - cmd = "SELECT type, vpci, image_id, xml,dev FROM instance_devices WHERE instance_id = '%s' " % str(instance_id) + cmd = "SELECT type, vpci, image_id, xml, dev, image_size FROM instance_devices WHERE instance_id = '%s' " % str(instance_id) self.logger.debug(cmd) self.cur.execute(cmd) if self.cur.rowcount > 0 : @@ -1514,8 +1520,10 @@ class vim_db(): else: xml = 'Null' if 'dev' in device: dev = "'" + device['dev'] + "'" else: dev = 'Null' - cmd = "INSERT INTO instance_devices (type, instance_id, image_id, vpci, xml, dev) VALUES ('%s','%s', %s, %s, %s, %s)" % \ - (device['type'], uuid, image_id, vpci, xml, dev) + if 'image_size' in device: size = device['image_size'] + else: size = 0 + cmd = "INSERT INTO instance_devices (type, instance_id, image_id, vpci, xml, dev, image_size) VALUES ('%s','%s', %s, %s, %s, %s, %s)" % \ + (device['type'], uuid, image_id, vpci, xml, dev, str(size)) self.logger.debug(cmd) self.cur.execute(cmd) ##inserting new log @@ -1538,15 +1546,15 @@ class vim_db(): :param ip_used_list: contain all used ips to avoid ip collisions :return: """ - ip_tools = IPNetwork(cidr) cidr_len = ip_tools.prefixlen ips = IPNetwork(first_ip + '/' + str(cidr_len)) - ip_used_list.append(str(ips[0])) # first ip - ip_used_list.append(str(ips[1])) # gw ip - ip_used_list.append(str(ips[-1])) # broadcast ip + + ip_used_list.append(str(ips[1])) # gw ip + ip_used_list.append(str(ips[-1])) # broadcast ip + for vm_ip in ips: - if str(vm_ip) not in ip_used_list: + if str(vm_ip) not in ip_used_list and IPAddress(first_ip) <= IPAddress(vm_ip) <= IPAddress(last_ip): return vm_ip return None