X-Git-Url: https://osm.etsi.org/gitweb/?a=blobdiff_plain;f=httpserver.py;h=edf1e8d9183e45ce8360a34ba43900bf091dd529;hb=refs%2Fchanges%2F17%2F1317%2F3;hp=b15f7a1b06238a4798d369dff22f3b1b098779fd;hpb=3782945e0a074cb28f82a512f7a9128797b298e3;p=osm%2Fopenvim.git diff --git a/httpserver.py b/httpserver.py index b15f7a1..edf1e8d 100644 --- a/httpserver.py +++ b/httpserver.py @@ -1619,14 +1619,14 @@ def http_post_server_id(tenant_id): r,c = config_dic['host_threads'][ server['host_id'] ].insert_task( 'restore-iface',*port ) if r < 0: print ' http_post_servers ERROR RESTORE IFACE!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!' + c - #updata nets - for net in nets: - r,c = config_dic['of_thread'].insert_task("update-net", net) - if r < 0: - print ':http_post_servers ERROR UPDATING NETS !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!' + c + # update nets + for net_id in nets: + try: + my.ovim.net_update_ofc_thread(net_id) + except ovim.ovimException as e: + my.logger.error("http_post_servers, Error updating network with id '{}', '{}'".format(net_id, str(e))) - - #look for dhcp ip address + # look for dhcp ip address r2, c2 = my.db.get_table(FROM="ports", SELECT=["mac", "ip_address", "net_id"], WHERE={"instance_id": new_instance}) if r2 >0: for iface in c2: @@ -1792,7 +1792,8 @@ def http_server_action(server_id, tenant_id, action): return http_get_image_id(tenant_id, image_uuid) #Update DB only for CREATING or DELETING status - data={'result' : 'in process'} + data={'result' : 'deleting in process'} + warn_text="" if new_status != None and new_status == 'DELETING': nets=[] ports_to_free=[] @@ -1804,14 +1805,16 @@ def http_server_action(server_id, tenant_id, action): for port in ports_to_free: r1,c1 = config_dic['host_threads'][ server['host_id'] ].insert_task( 'restore-iface',*port ) if r1 < 0: - print ' http_post_server_action error at server deletion ERROR resore-iface !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!' + c1 - data={'result' : 'deleting in process, but ifaces cannot be restored!!!!!'} - for net in nets: - r1,c1 = config_dic['of_thread'].insert_task("update-net", net) - if r1 < 0: - print ' http_post_server_action error at server deletion ERROR UPDATING NETS !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!' + c1 - data={'result' : 'deleting in process, but openflow rules cannot be deleted!!!!!'} - #look for dhcp ip address + my.logger.error("http_post_server_action server deletion ERROR at resore-iface!!!! " + c1) + warn_text += "; Error iface '{}' cannot be restored '{}'".format(str(port), str(e)) + for net_id in nets: + try: + my.ovim.net_update_ofc_thread(net_id) + except ovim.ovimException as e: + my.logger.error("http_server_action, Error updating network with id '{}', '{}'".format(net_id, str(e))) + warn_text += "; Error openflow rules of network '{}' cannot be restore '{}'".format(net_id, str (e)) + + # look for dhcp ip address if r2 >0 and config_dic.get("dhcp_server"): for iface in c2: if iface["net_id"] in config_dic["dhcp_nets"]: @@ -1828,7 +1831,7 @@ def http_server_action(server_id, tenant_id, action): delete_dhcp_ovs_bridge(vlan, net_id) delete_mac_dhcp(vm_ip, vlan, mac) config_dic['host_threads'][server['host_id']].insert_task('del-ovs-port', vlan, net_id) - return format_out(data) + return format_out(data + warn_text) @@ -1973,7 +1976,7 @@ def http_put_network_id(network_id): http_content = format_in(network_update_schema) change_keys_http2db(http_content['network'], http2db_network) network = http_content['network'] - return my.ovim.edit_network(network_id, network) + return format_out(my.ovim.edit_network(network_id, network)) except ovim.ovimException as e: my.logger.error(str(e), exc_info=True) @@ -2184,9 +2187,9 @@ def http_put_openflow_id(network_id): data = {'result': str(result) + " nets updates"} return format_out(data) - +@bottle.route(url_base + '/networks/clear/openflow/', method='DELETE') @bottle.route(url_base + '/networks/clear/openflow', method='DELETE') -def http_clear_openflow_rules(): +def http_clear_openflow_rules(ofc_id=None): """ To make actions over the net. The action is to delete ALL openflow rules :return: @@ -2196,7 +2199,7 @@ def http_clear_openflow_rules(): if not my.admin: bottle.abort(HTTP_Unauthorized, "Needed admin privileges") try: - my.ovim.delete_openflow_rules() + my.ovim.delete_openflow_rules(ofc_id) except ovim.ovimException as e: my.logger.error(str(e), exc_info=True) bottle.abort(e.http_code, str(e)) @@ -2207,16 +2210,25 @@ def http_clear_openflow_rules(): data = {'result': " Clearing openflow rules in process"} return format_out(data) - +@bottle.route(url_base + '/networks/openflow/ports/', method='GET') @bottle.route(url_base + '/networks/openflow/ports', method='GET') -def http_get_openflow_ports(): +def http_get_openflow_ports(ofc_id=None): """ Obtain switch ports names of openflow controller :return: """ my = config_dic['http_threads'][threading.current_thread().name] - ports = my.ovim.get_openflow_ports() - data = {'ports': ports} + + try: + ports = my.ovim.get_openflow_ports(ofc_id) + data = {'ports': ports} + except ovim.ovimException as e: + my.logger.error(str(e), exc_info=True) + bottle.abort(e.http_code, str(e)) + except Exception as e: + my.logger.error(str(e), exc_info=True) + bottle.abort(HTTP_Bad_Request, str(e)) + return format_out(data) # # PORTS @@ -2344,7 +2356,7 @@ def http_delete_port_id(port_id): @bottle.route(url_base + '/openflow/mapping', method='POST') def http_of_port_mapping(): """ - Insert a tenant into the database. + Create new compute port mapping entry :return: """ my = config_dic['http_threads'][threading.current_thread().name] @@ -2372,7 +2384,7 @@ def http_of_port_mapping(): @bottle.route(url_base + '/openflow/mapping', method='GET') def get_of_port_mapping(): """ - Insert a tenant into the database. + Get compute port mapping :return: """ my = config_dic['http_threads'][threading.current_thread().name]