X-Git-Url: https://osm.etsi.org/gitweb/?a=blobdiff_plain;f=osm_ro%2Fnfvo_db.py;h=87e3f1e15da3c1162cf2959b84fbb272ee9d611c;hb=refs%2Fchanges%2F80%2F5880%2F2;hp=79ba7d7f3f63901e01904dd72003e0be6396f06f;hpb=e580c7d9d4c0f8a093597d83808f96cdab261b0c;p=osm%2FRO.git diff --git a/osm_ro/nfvo_db.py b/osm_ro/nfvo_db.py index 79ba7d7f..87e3f1e1 100644 --- a/osm_ro/nfvo_db.py +++ b/osm_ro/nfvo_db.py @@ -37,7 +37,9 @@ import time tables_with_createdat_field=["datacenters","instance_nets","instance_scenarios","instance_vms","instance_vnfs", "interfaces","nets","nfvo_tenants","scenarios","sce_interfaces","sce_nets", "sce_vnfs","tenants_datacenters","datacenter_tenants","vms","vnfs", "datacenter_nets", - "instance_actions", "vim_actions"] + "instance_actions", "vim_actions", "sce_vnffgs", "sce_rsps", "sce_rsp_hops", + "sce_classifiers", "sce_classifier_matches", "instance_sfis", "instance_sfs", + "instance_classifications", "instance_sfps"] class nfvo_db(db_base.db_base): @@ -695,6 +697,36 @@ class nfvo_db(db_base.db_base): db_base._convert_datetime2str(scenario_dict) db_base._convert_str2boolean(scenario_dict, ('public','shared','external','port-security','floating-ip') ) + + #forwarding graphs + cmd = "SELECT uuid,name,description,vendor FROM sce_vnffgs WHERE scenario_id='{}' "\ + "ORDER BY created_at".format(scenario_dict['uuid']) + self.logger.debug(cmd) + self.cur.execute(cmd) + scenario_dict['vnffgs'] = self.cur.fetchall() + for vnffg in scenario_dict['vnffgs']: + cmd = "SELECT uuid,name FROM sce_rsps WHERE sce_vnffg_id='{}' "\ + "ORDER BY created_at".format(vnffg['uuid']) + self.logger.debug(cmd) + self.cur.execute(cmd) + vnffg['rsps'] = self.cur.fetchall() + for rsp in vnffg['rsps']: + cmd = "SELECT uuid,if_order,interface_id,sce_vnf_id FROM sce_rsp_hops WHERE sce_rsp_id='{}' "\ + "ORDER BY created_at".format(rsp['uuid']) + self.logger.debug(cmd) + self.cur.execute(cmd) + rsp['connection_points'] = self.cur.fetchall(); + cmd = "SELECT uuid,name,sce_vnf_id,interface_id FROM sce_classifiers WHERE sce_vnffg_id='{}' "\ + "AND sce_rsp_id='{}' ORDER BY created_at".format(vnffg['uuid'], rsp['uuid']) + self.logger.debug(cmd) + self.cur.execute(cmd) + rsp['classifier'] = self.cur.fetchone(); + cmd = "SELECT uuid,ip_proto,source_ip,destination_ip,source_port,destination_port FROM sce_classifier_matches "\ + "WHERE sce_classifier_id='{}' ORDER BY created_at".format(rsp['classifier']['uuid']) + self.logger.debug(cmd) + self.cur.execute(cmd) + rsp['classifier']['matches'] = self.cur.fetchall() + return scenario_dict except (mdb.Error, AttributeError) as e: self._format_error(e, tries) @@ -906,35 +938,39 @@ class nfvo_db(db_base.db_base): with self.con: self.cur = self.con.cursor(mdb.cursors.DictCursor) # instance table - where_list=[] - if tenant_id is not None: where_list.append( "inst.tenant_id='" + tenant_id +"'" ) + where_list = [] + if tenant_id: + where_list.append("inst.tenant_id='{}'".format(tenant_id)) if db_base._check_valid_uuid(instance_id): - where_list.append( "inst.uuid='" + instance_id +"'" ) + where_list.append("inst.uuid='{}'".format(instance_id)) else: - where_list.append( "inst.name='" + instance_id +"'" ) + where_list.append("inst.name='{}'".format(instance_id)) where_text = " AND ".join(where_list) - cmd = "SELECT inst.uuid as uuid,inst.name as name,inst.scenario_id as scenario_id, datacenter_id" +\ - " ,datacenter_tenant_id, s.name as scenario_name,inst.tenant_id as tenant_id" + \ - " ,inst.description as description,inst.created_at as created_at" +\ - " ,inst.cloud_config as 'cloud_config'" +\ - " FROM instance_scenarios as inst join scenarios as s on inst.scenario_id=s.uuid"+\ + cmd = "SELECT inst.uuid as uuid, inst.name as name, inst.scenario_id as scenario_id, datacenter_id"\ + " ,datacenter_tenant_id, s.name as scenario_name,inst.tenant_id as tenant_id" \ + " ,inst.description as description, inst.created_at as created_at" \ + " ,inst.cloud_config as cloud_config" \ + " FROM instance_scenarios as inst left join scenarios as s on inst.scenario_id=s.uuid" \ " WHERE " + where_text self.logger.debug(cmd) self.cur.execute(cmd) rows = self.cur.fetchall() - if self.cur.rowcount==0: + if self.cur.rowcount == 0: raise db_base.db_base_Exception("No instance found where " + where_text, db_base.HTTP_Not_Found) - elif self.cur.rowcount>1: - raise db_base.db_base_Exception("More than one instance found where " + where_text, db_base.HTTP_Bad_Request) + elif self.cur.rowcount > 1: + raise db_base.db_base_Exception("More than one instance found where " + where_text, + db_base.HTTP_Bad_Request) instance_dict = rows[0] if instance_dict["cloud_config"]: instance_dict["cloud-config"] = yaml.load(instance_dict["cloud_config"]) del instance_dict["cloud_config"] - #instance_vnfs - cmd = "SELECT iv.uuid as uuid,sv.vnf_id as vnf_id,sv.name as vnf_name, sce_vnf_id, datacenter_id, datacenter_tenant_id, v.mgmt_access"\ - " FROM instance_vnfs as iv join sce_vnfs as sv on iv.sce_vnf_id=sv.uuid join vnfs as v on iv.vnf_id=v.uuid" \ + # instance_vnfs + cmd = "SELECT iv.uuid as uuid, iv.vnf_id as vnf_id, sv.name as vnf_name, sce_vnf_id, datacenter_id"\ + " ,datacenter_tenant_id, v.mgmt_access, sv.member_vnf_index "\ + " FROM instance_vnfs as iv left join sce_vnfs as sv "\ + "on iv.sce_vnf_id=sv.uuid join vnfs as v on iv.vnf_id=v.uuid" \ " WHERE iv.instance_scenario_id='{}'" \ " ORDER BY iv.created_at ".format(instance_dict['uuid']) self.logger.debug(cmd) @@ -951,7 +987,7 @@ class nfvo_db(db_base.db_base): vnf['vms'] = self.cur.fetchall() for vm in vnf['vms']: vm_manage_iface_list=[] - #instance_interfaces + # instance_interfaces cmd = "SELECT vim_interface_id, instance_net_id, internal_name,external_name, mac_address,"\ " ii.ip_address as ip_address, vim_info, i.type as type, sdn_port_id"\ " FROM instance_interfaces as ii join interfaces as i on ii.interface_id=i.uuid"\ @@ -979,7 +1015,47 @@ class nfvo_db(db_base.db_base): self.logger.debug(cmd) self.cur.execute(cmd) instance_dict['nets'] = self.cur.fetchall() - + + #instance_sfps + cmd = "SELECT uuid,vim_sfp_id,sce_rsp_id,datacenter_id,"\ + "datacenter_tenant_id,status,error_msg,vim_info"\ + " FROM instance_sfps" \ + " WHERE instance_scenario_id='{}' ORDER BY created_at".format(instance_dict['uuid']) + self.logger.debug(cmd) + self.cur.execute(cmd) + instance_dict['sfps'] = self.cur.fetchall() + + # for sfp in instance_dict['sfps']: + #instance_sfs + cmd = "SELECT uuid,vim_sf_id,sce_rsp_hop_id,datacenter_id,"\ + "datacenter_tenant_id,status,error_msg,vim_info"\ + " FROM instance_sfs" \ + " WHERE instance_scenario_id='{}' ORDER BY created_at".format(instance_dict['uuid']) # TODO: replace instance_scenario_id with instance_sfp_id + self.logger.debug(cmd) + self.cur.execute(cmd) + instance_dict['sfs'] = self.cur.fetchall() + + #for sf in instance_dict['sfs']: + #instance_sfis + cmd = "SELECT uuid,vim_sfi_id,sce_rsp_hop_id,datacenter_id,"\ + "datacenter_tenant_id,status,error_msg,vim_info"\ + " FROM instance_sfis" \ + " WHERE instance_scenario_id='{}' ORDER BY created_at".format(instance_dict['uuid']) # TODO: replace instance_scenario_id with instance_sf_id + self.logger.debug(cmd) + self.cur.execute(cmd) + instance_dict['sfis'] = self.cur.fetchall() +# for sfi in instance_dict['sfi']: + + #instance_classifications + cmd = "SELECT uuid,vim_classification_id,sce_classifier_match_id,datacenter_id,"\ + "datacenter_tenant_id,status,error_msg,vim_info"\ + " FROM instance_classifications" \ + " WHERE instance_scenario_id='{}' ORDER BY created_at".format(instance_dict['uuid']) + self.logger.debug(cmd) + self.cur.execute(cmd) + instance_dict['classifications'] = self.cur.fetchall() +# for classification in instance_dict['classifications'] + db_base._convert_datetime2str(instance_dict) db_base._convert_str2boolean(instance_dict, ('public','shared','created') ) return instance_dict