Beispiel #1
0
    def initialize_management_app(self):
        #Carga en la variable de topologia de la aplicacion de gestion toda la informacion extra de la
        # topologia
        nodes = {}
        n = DTNode(router_id='192.168.1.10', datapath_id='10', net_type=0, top_type=1)
        interfaces = {}
        interfaces['192.168.1.10']=DTInterface(ip_address='192.168.1.10', mac_address='mac', ovs_port=0, i_type=1)
        n.interfaces =  interfaces
        nodes['192.168.1.10'] = n
      

        n = DTNode(router_id='192.168.1.11', datapath_id='11', net_type=1, top_type=1)
        interfaces = {}
        interfaces['192.168.1.11']=DTInterface(ip_address='192.168.1.11', mac_address='mac', ovs_port=0, i_type=1)
        interfaces['10.10.1.1']=DTInterface(ip_address='10.10.1.1', mac_address='mac', ovs_port=1, i_type=0)
        interfaces['10.10.5.1']=DTInterface(ip_address='10.10.5.1', mac_address='mac', ovs_port=2, i_type=0)
        interfaces['10.10.4.1']=DTInterface(ip_address='10.10.4.1', mac_address='mac', ovs_port=3, i_type=0)
        n.interfaces =  interfaces
        nodes['192.168.1.11'] = n
        
        n = DTNode(router_id='192.168.1.12', datapath_id='12', net_type=1, top_type=1)
        interfaces = {}
        interfaces['192.168.1.12']=DTInterface(ip_address='192.168.1.12', mac_address='mac', ovs_port=0, i_type=1)
        interfaces['10.10.1.2']=DTInterface(ip_address='10.10.1.2', mac_address='mac', ovs_port=1, i_type=0)
        interfaces['10.10.6.2']=DTInterface(ip_address='10.10.6.2', mac_address='mac', ovs_port=2, i_type=0)
        interfaces['10.10.3.1']=DTInterface(ip_address='10.10.3.1', mac_address='mac', ovs_port=3, i_type=0)
        n.interfaces =  interfaces
        nodes['192.168.1.12'] = n
        
        n = DTNode(router_id='192.168.1.13', datapath_id='13', net_type=1, top_type=1)
        interfaces = {}
        interfaces['192.168.1.13']=DTInterface(ip_address='192.168.1.13', mac_address='mac', ovs_port=0, i_type=1)
        interfaces['10.10.4.2']=DTInterface(ip_address='10.10.4.2', mac_address='mac', ovs_port=3, i_type=0)
        interfaces['10.10.2.1']=DTInterface(ip_address='10.10.2.1', mac_address='mac', ovs_port=1, i_type=0)
        interfaces['10.10.6.1']=DTInterface(ip_address='10.10.6.1', mac_address='mac', ovs_port=2, i_type=0)
        n.interfaces =  interfaces
        nodes['192.168.1.13'] = n
                
        n = DTNode(router_id='192.168.1.14', datapath_id='14', net_type=1, top_type=1)
        interfaces = {}
        interfaces['192.168.1.14']=DTInterface(ip_address='192.168.1.14', mac_address='mac', ovs_port=0, i_type=1)
        interfaces['10.10.3.2']=DTInterface(ip_address='10.10.3.2', mac_address='mac', ovs_port=3, i_type=0)
        interfaces['10.10.2.2']=DTInterface(ip_address='10.10.2.2', mac_address='mac', ovs_port=1, i_type=0)
        interfaces['10.10.5.2']=DTInterface(ip_address='10.10.5.2', mac_address='mac', ovs_port=2, i_type=0)
        n.interfaces =  interfaces
        nodes['192.168.1.14'] = n

        self.management_app.topology = nodes
    def _get_stub_node_full_data(self, node):
        '''
		doc
		'''

        n = self.topology[node.router_id]
        result = DTNode(router_id=node.router_id,
                        datapath_id=n.datapath_id,
                        status=node.status,
                        net_type=n.net_type,
                        top_type=n.top_type)

        interfaces = {}
        for i in node.interfaces.itervalues():
            inter = self.topology[node.router_id].interfaces[i.ip_address]

            #Actually Links has not many information than lsdb information
            links = {}

            for l in i.links.itervalues():
                print l.to_node_int
                link = DTLink(status=l.status,
                              from_node_int=l.from_node_int,
                              to_node_int=l.to_node_int,
                              weight=l.weight)
                links[link.to_node_int.ip_address] = link

            res = DTInterface(ip_address=i.ip_address,
                              mac_address=inter.mac_address,
                              ovs_port=inter.ovs_port,
                              links=links,
                              i_type=inter.type)
            interfaces[i.ip_address] = res

        result.interfaces = interfaces

        return result
    def _get_ws_node_full_data(self, node):
        '''
		Connect via web service to SNMP agent app to get 
		specific node extra data
		'''

        url = URI_APP_SNMP + node.router_id
        result = None

        try:
            json_data = requests.get(url)
            data = json.loads(json_data.text)

            if data is not None:
                datapath_id = str(int(data["dpid"], 16))
                ports = data['puertos']
                port = None
                ip_address = None
                mac_address = None
                ovs_port = None
                result = DTNode(router_id=node.router_id,
                                datapath_id=datapath_id,
                                status=1,
                                net_type=0,
                                top_type=0)

                interfaces = {}
                for port in ports:

                    ip_address = port['ip']
                    mac_address = port['mac']
                    ovs_port = port['numeroOVS']
                    name = port['nombreInterfaz']

                    if (node.interfaces.has_key(ip_address)):
                        inter = node.interfaces[ip_address]

                        #Actually Links has not many information than lsdb information
                        links = {}

                        for l in inter.links.itervalues():

                            link = DTLink(status=l.status,
                                          from_node_int=l.from_node_int,
                                          to_node_int=l.to_node_int,
                                          weight=l.weight)
                            links[link.to_node_int.ip_address] = link

                        res = DTInterface(ip_address=ip_address,
                                          mac_address=mac_address,
                                          ovs_port=ovs_port,
                                          links=links,
                                          i_type=0,
                                          name=name,
                                          status=1)

                        interfaces[ip_address] = res

                    else:
                        # La interfaz no existe en la LSDB puede ser una interfaz externa asi que la agrega como interfaz down
                        # La crea solamente si tiene direccion IP, puerto ovs y direccion mac
                        if ip_address != None and mac_address != None and ovs_port != None:
                            links = {}

                            res = DTInterface(ip_address=ip_address,
                                              mac_address=mac_address,
                                              ovs_port=ovs_port,
                                              links=links,
                                              i_type=0,
                                              name=name,
                                              status=0)
                            interfaces[ip_address] = res

                result.interfaces = interfaces

        except ValueError:
            print "ERROR" + str(ValueError)

        except requests.exceptions.ConnectionError:
            print "Connection error: Could not connect to snmp agent"

        return result