示例#1
0
 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
示例#2
0
    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()
示例#3
0
 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
示例#4
0
 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
示例#5
0
 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)
示例#6
0
 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