def get_node_file(self, node_id, service_name, filename): logging.debug("SessionReader(): get_node_file(): instantiated") #First check if file exists: logging.debug("SessionReader(): get_node_file(): checking if file exists") res = str(msg_ifx.send_command('-s'+self.session_number+' CONFIG NODE='+node_id +' OBJECT=services OPAQUE=service:'+service_name+' TYPE=1 -l --tcp')) file_exists = False for line in res.splitlines(): if filename in line: file_exists = True break if file_exists == False: return "" #Get file contents logging.debug("SessionReader(): get_node_file(): getting file contents") res_code = str(msg_ifx.send_command('-s'+self.session_number+' CONFIG NODE='+node_id +' OBJECT=services OPAQUE=service:'+service_name+':'+filename+' TYPE=1 -l --tcp')) file_code = "" code_section = False for code_line in res_code.splitlines(): if code_line.startswith(" DATA:"): code_section = True file_code += code_line.split("DATA: ")[1] + "\n" continue if code_section: file_code += code_line + "\n" return file_code
def __init__(self, session_number=None): logging.debug("SessionReader(): instantiated") if session_number == None: #just get one from /tmp/pycore*** logging.error("SessionReader(): init(): No session number was provided") return None self.session_number = session_number logging.debug("SessionReader(): init(): Retrieving imn filename") services_resp = str(msg_ifx.send_command('-s'+self.session_number+' SESSION flags=STRING --tcp -l')) self.imnfilename = "" for line in services_resp.splitlines(): if "FILE: " in line: #we know this line has the imn filename ###TODO### Need to make sure we get the correct filename associated with the session self.imnfilename = line.split("FILE: ")[1].split("|")[0] break if self.imnfilename == "": logging.error("SessionReader(): init(): No associated imn file found. Exiting") return None logging.debug("SessionReader(): init(): Found filename: " + str(self.imnfilename)) self.xmlfilename = os.path.join("/tmp","pycore."+str(session_number),"session-deployed.xml") state = self.get_session_state() logging.debug("SessionReader(): init(): Current session state: " + str(state)) if state == None: logging.error("SessionReader(): init(): Session state is not available: " + str(state)) return None self.conditional_conns = self.relevant_session_to_JSON()
def disable_single_node(self, session_number, cc_dec_number, cc_node): logging.debug("Swapper(): disable_single_node(): instantiated") #logging.debug("enable single node cmd: " + '-s'+session_number+' EXECUTE NODE='+cc_dec_number+' NUMBER=1000 COMMAND="ovs-vsctl del-port ovsbr0 '+cc_node["cc_dec_nic"]+' --tcp') logging.debug("disabling single node cmd: " + '-c /tmp/pycore.' + session_number + '/' + self.cc_dec_name + " -- ovs-vsctl del-port ovsbr0 " + cc_node["cc_dec_nic"]) #msg_ifx.send_command('-s'+session_number+' EXECUTE NODE='+cc_dec_number+' NUMBER=1000 COMMAND="ovs-vsctl del-port ovsbr0 '+cc_node["cc_dec_nic"]+'" --tcp') msg_ifx.run_command('-c /tmp/pycore.' + session_number + '/' + self.cc_dec_name + " -- ovs-vsctl del-port ovsbr0 " + cc_node["cc_dec_nic"]) ###TODO: The following does not work with CORE 6.2, there is however a fix in the latest verison of CORE### msg_ifx.send_command('-s' + session_number + ' LINK N1_NUMBER=' + cc_dec_number + ' N2_NUMBER=' + cc_node["number"] + ' GUI_ATTRIBUTES="color=yellow" ') cc_node["connected"] = False
def enable_single_node(self, session_number, cc_dec_number, cc_node): logging.debug("Swapper(): enable_single_node(): instantiated") #logging.debug("enable single node cmd: " + '-s'+session_number+' EXECUTE NODE='+cc_dec_number+' NUMBER=1000 COMMAND="ovs-vsctl add-port ovsbr0 '+cc_node["cc_dec_nic"]+' --tcp') logging.debug("enable single node cmd: " + '-c /tmp/pycore.' + session_number + '/' + self.cc_dec_name + " -- ovs-vsctl add-port ovsbr0 " + cc_node["cc_dec_nic"]) #msg_ifx.send_command('-s'+session_number+' EXECUTE NODE='+cc_dec_number+' NUMBER=1000 COMMAND="ovs-vsctl add-port ovsbr0 '+cc_node["cc_dec_nic"]+'" --tcp') msg_ifx.run_command('-c /tmp/pycore.' + session_number + '/' + self.cc_dec_name + " -- ovs-vsctl add-port ovsbr0 " + cc_node["cc_dec_nic"]) ###TODO: The following will trigger an non-fatal error on core-daemon because it claims the interface numbers need to be specified... still works though msg_ifx.send_command('-s' + session_number + ' LINK N1_NUMBER=' + cc_dec_number + ' N2_NUMBER=' + cc_node["number"] + ' GUI_ATTRIBUTES="color=blue" ') cc_node["connected"] = True
def set_decnode_conns(self, session_number, cc_dec_number, activate_nodes, deactivate_nodes): logging.debug("Swapper(): set_decnode_conns(): instantiated") activate_cmd_queue = [] deactivate_cmd_queue = [] send_cmd_queue = [] ###Queue up the commands; so that we can execute with little delay in-between for cc_node in deactivate_nodes: logging.debug("disabling conn to node cmd: " + '-c /tmp/pycore.' + session_number + '/' + self.cc_dec_name + " -- ovs-vsctl del-port ovsbr0 " + cc_node["cc_dec_nic"]) activate_cmd_queue.append('-c /tmp/pycore.' + session_number + '/' + self.cc_dec_name + " -- ovs-vsctl del-port ovsbr0 " + cc_node["cc_dec_nic"]) send_cmd_queue.append('-s' + session_number + ' LINK N1_NUMBER=' + cc_dec_number + ' N2_NUMBER=' + cc_node["number"] + ' GUI_ATTRIBUTES="color=yellow" ') cc_node["connected"] = False for cc_node in activate_nodes: logging.debug("activating conn to node cmd: " + '-c /tmp/pycore.' + session_number + '/' + self.cc_dec_name + " -- ovs-vsctl add-port ovsbr0 " + cc_node["cc_dec_nic"]) #msg_ifx.send_command('-s'+session_number+' EXECUTE NODE='+cc_dec_number+' NUMBER=1000 COMMAND="ovs-vsctl del-port ovsbr0 '+cc_node["cc_dec_nic"]+'" --tcp') deactivate_cmd_queue.append('-c /tmp/pycore.' + session_number + '/' + self.cc_dec_name + " -- ovs-vsctl add-port ovsbr0 " + cc_node["cc_dec_nic"]) ###TODO: The following does not work with CORE 6.2, there is however a fix in the latest verison of CORE### send_cmd_queue.append('-s' + session_number + ' LINK N1_NUMBER=' + cc_dec_number + ' N2_NUMBER=' + cc_node["number"] + ' GUI_ATTRIBUTES="color=blue" ') cc_node["connected"] = True ##execute deactivations first; since it's better to have lag than duplicates for cmd in deactivate_cmd_queue: msg_ifx.run_command(cmd) for cmd in activate_cmd_queue: msg_ifx.run_command(cmd) for cmd in send_cmd_queue: msg_ifx.send_command(cmd)
def get_node_services(self, node): logging.debug("SessionReader(): get_node_services(): instantiated") res_services = str(msg_ifx.send_command('-s'+self.session_number+' CONFIG NODE='+node.attrib["id"] +' OBJECT=services OPAQUE=service' +' TYPE=1 -l --tcp')) return res_services