Ejemplo n.º 1
0
    def __str__(self):
        return "EventHostRequest<src=%s, dpid=%s>" % (self.src, self.dpid)


class EventHostReply(event.EventReplyBase):
    def __init__(self, dst, dpid, hosts):
        super(EventHostReply, self).__init__(dst)
        self.dpid = dpid
        self.hosts = hosts

    def __str__(self):
        return "EventHostReply<dst=%s, dpid=%s, hosts=%s>" % (self.dst, self.dpid, len(self.hosts))


class EventHostBase(event.EventBase):
    def __init__(self, host):
        super(EventHostBase, self).__init__()
        self.host = host

    def __str__(self):
        return "%s<%s>" % (self.__class__.__name__, self.host)


class EventHostAdd(EventHostBase):
    def __init__(self, host):
        super(EventHostAdd, self).__init__(host)


handler.register_service("ryu.topology.switches")
Ejemplo n.º 2
0
                'DPSET: A port was modified.' +
                '(datapath id = %s, port number = %s)',
                dpid_to_str(datapath.id), port.port_no)
            self.port_state[datapath.id].modify(port.port_no, port)
            self.send_event_to_observers(EventPortModify(datapath, port))

    def get_port(self, dpid, port_no):
        """
        This method returns the ryu.controller.dpset.PortState
        instance for the given Datapath ID and the port number.
        Raises ryu_exc.PortNotFound if no such a datapath connected to
        this controller or no such a port exists.
        """
        try:
            return self.port_state[dpid][port_no]
        except KeyError:
            raise ryu_exc.PortNotFound(dpid=dpid,
                                       port=port_no,
                                       network_id=None)

    def get_ports(self, dpid):
        """
        This method returns a list of ryu.controller.dpset.PortState
        instances for the given Datapath ID.
        Raises KeyError if no such a datapath connected to this controller.
        """
        return list(self.port_state[dpid].values())


handler.register_service('ryu.controller.dpset')
Ejemplo n.º 3
0
from ryu.controller import handler
from ryu.controller import event


class EventRequestSpectrumRemain(event.EventRequestBase):
    def __init__(self, dst):
        super(EventRequestSpectrumRemain, self).__init__()
        self.dst = dst

    def __str__(self):
        return 'EventRequestSpectrumRemain<src=%s, dpid=%s>' % \
               (self.src, self.dpid)


class EventReplySpectrumRemain(event.EventReplyBase):
    def __init__(self, dst, rsc):
        super(EventReplySpectrumRemain, self).__init__(dst)
        self.rsc = rsc

    def __str__(self):
        return 'EventLinkReply<spectrum_resouce_remained{}>'.format(self.rsc)


handler.register_service('spec_resource')
Ejemplo n.º 4
0
        self.priority = priority
        self.advertisement_interval = advertisement_interval
        self.preempt_mode = preempt_mode
        self.preempt_delay = preempt_delay
        self.accept_mode = accept_mode


# Following classes are internally used by VRRP

class EventVRRPReceived(event.EventBase):
    """
    Event that port manager received valid VRRP packet.
    Usually handed by VRRP Router.
    """
    def __init__(self, interface, packet):
        super(EventVRRPReceived, self).__init__()
        self.interface = interface
        self.packet = packet


class EventVRRPTransmitRequest(event.EventRequestBase):
    """
    Request from VRRP router to port manager to transmit VRRP packet.
    """
    def __init__(self, data):
        super(EventVRRPTransmitRequest, self).__init__()
        self.data = data


handler.register_service('ryu.services.protocols.vrrp.manager')
Ejemplo n.º 5
0
            assert reason == ofproto.OFPPR_MODIFY
            LOG.debug('DPSET: A port was modified.' +
                      '(datapath id = %s, port number = %s)',
                      dpid_to_str(datapath.id), port.port_no)
            self.port_state[datapath.id].modify(port.port_no, port)
            self.send_event_to_observers(EventPortModify(datapath, port))

    def get_port(self, dpid, port_no):
        """
        This method returns the ryu.controller.dpset.PortState
        instance for the given Datapath ID and the port number.
        Raises ryu_exc.PortNotFound if no such a datapath connected to
        this controller or no such a port exists.
        """
        try:
            return self.port_state[dpid][port_no]
        except KeyError:
            raise ryu_exc.PortNotFound(dpid=dpid, port=port_no,
                                       network_id=None)

    def get_ports(self, dpid):
        """
        This method returns a list of ryu.controller.dpset.PortState
        instances for the given Datapath ID.
        Raises KeyError if no such a datapath connected to this controller.
        """
        return self.port_state[dpid].values()


handler.register_service('ryu.controller.dpset')
Ejemplo n.º 6
0
    def __init__(self, ev):
        super(EventRowUpdatedBase, self).__init__(ev.system_id, ev.table,
                                                  ev.old, ev.new)


class EventPortInserted(EventRowInsertedBase):
    pass


class EventPortDeleted(EventRowDeletedBase):
    pass


class EventPortUpdated(EventRowUpdatedBase):
    pass


class EventInterfaceInserted(EventRowInsertedBase):
    pass


class EventInterfaceDeleted(EventRowDeletedBase):
    pass


class EventInterfaceUpdated(EventRowUpdatedBase):
    pass


handler.register_service('ryu.services.protocols.ovsdb.manager')
Ejemplo n.º 7
0
    def __init__(self, dst, dpid, hosts):
        super(EventHostReply, self).__init__(dst)
        self.dpid = dpid
        self.hosts = hosts

    def __str__(self):
        return 'EventHostReply<dst=%s, dpid=%s, hosts=%s>' % \
            (self.dst, self.dpid, len(self.hosts))


class EventHostBase(event.EventBase):
    def __init__(self, host):
        super(EventHostBase, self).__init__()
        self.host = host

    def __str__(self):
        return '%s<%s>' % (self.__class__.__name__, self.host)


class EventHostAdd(EventHostBase):
    def __init__(self, host):
        super(EventHostAdd, self).__init__(host)


class EventHostDelete(EventHostBase):
    def __init__(self, host):
        super(EventHostDelete, self).__init__(host)


handler.register_service('ryu.topology.switches')
Ejemplo n.º 8
0
from ryu.controller import handler
from ryu.base import app_manager

LOG = logging.getLogger('MyEvTrigger')


class EventGetRules(event.EventBase):
    def __init__(self, rps):
        super(EventGetRules, self).__init__()
        self.rps = rps


class MyEvTrigger(app_manager.RyuApp):
    def __init__(self, *args, **kwargs):
        super(MyEvTrigger, self).__init__(*args, **kwargs)

    def build_event(self, reader):
        """

        :rtype : EventGetRules
        """
        ev = EventGetRules(reader.get_all_rules())
        return ev

    def send(self, name, reader):
        ev = self.build_event(reader)
        self.send_event(name, ev)


handler.register_service('MyEvTrigger')
Ejemplo n.º 9
0

LOG = logging.getLogger(__name__)



class EventSwitchTrustChange(event.EventBase):
    """ Define a change in the trust level of the switch """
    
    def __init__(self, dpid, sw_trust):
        
        super(EventSwitchTrustChange, self).__init__()
        self.dpid = dpid
        self.trust = sw_trust
        
class EventLinkTrustChange(event.EventBase):
    """ Define a change on the trust level of a link between switches"""
    
    def __init__(self, link, link_trust):
        
        super(EventLinkTrustChange, self).__init__()
        self.link = link
        self.link_trust = link_trust
        
    def __str__(self):
        return '%s<%s>' % (self.__class__.__name__, self.trust)
        

# register the app that raise the above events
handler.register_service('trust_evaluator')
Ejemplo n.º 10
0
from ryu.controller import handler
from ryu.base import app_manager

LOG = logging.getLogger('MyEvTrigger')


class EventGetRules(event.EventBase):
    def __init__(self, rps):
        super(EventGetRules, self).__init__()
        self.rps = rps


class MyEvTrigger(app_manager.RyuApp):
    def __init__(self, *args, **kwargs):
        super(MyEvTrigger, self).__init__(*args, **kwargs)

    def build_event(self,reader):
        """

        :rtype : EventGetRules
        """
        ev = EventGetRules(reader.get_all_rules())
        return ev

    def send(self,name,reader):
        ev = self.build_event(reader)
        self.send_event(name,ev)


handler.register_service('MyEvTrigger')
Ejemplo n.º 11
0
    def __str__(self):
        return 'EventHostRequest<src=%s, dpid=%s>' % \
            (self.src, self.dpid)


class EventHostReply(event.EventReplyBase):
    def __init__(self, dst, dpid, hosts):
        super(EventHostReply, self).__init__(dst)
        self.dpid = dpid
        self.hosts = hosts

    def __str__(self):
        return 'EventHostReply<dst=%s, dpid=%s, hosts=%s>' % \
            (self.dst, self.dpid, len(self.hosts))


class EventHostBase(event.EventBase):
    def __init__(self, host):
        super(EventHostBase, self).__init__()
        self.host = host

    def __str__(self):
        return '%s<%s>' % (self.__class__.__name__, self.host)


class EventHostAdd(EventHostBase):
    def __init__(self, host):
        super(EventHostAdd, self).__init__(host)

handler.register_service('ryu.topology.switches')
Ejemplo n.º 12
0
from ryu.controller import event
from ryu.controller import handler


class EventAlert(event.EventBase):
    def __init__(self, alertmsg, timestamp, event, flow):
        super(EventAlert, self).__init__()
        self.alertmsg = alertmsg
        self.tv_sec = timestamp.tv_sec
        self.tv_usec = timestamp.tv_usec
        self.gid, self.sid, self.rev, self.classification, self.priority, self.cid = event
        self.proto, self.srcIP, self.srcPort, self.dstIP, self.dstPort = flow


handler.register_service('snort_handler')
Ejemplo n.º 13
0
        self.domain = domain


class EventOXPVportStateChange(event.EventBase):
    def __init__(self, domain, vport_no, state):
        super(EventOXPVportStateChange, self).__init__()
        self.domain = domain
        self.vport_no = vport_no
        self.state = state


class EventOXPHostStateChange(event.EventBase):
    def __init__(self, domain, hosts):
        super(EventOXPHostStateChange, self).__init__()
        self.domain = domain
        self.hosts = hosts


class EventOXPLinkDiscovery(event.EventBase):
    def __init__(self, domain):
        super(EventOXPLinkDiscovery, self).__init__()
        self.domain = domain


if CONF.oxp_role == 'super':
    handler.register_service('ryu.openexchange.super.oxp_server_handler')
elif CONF.oxp_role == 'domain':
    handler.register_service('ryu.openexchange.domain.oxp_client_handler')
else:
    pass
Ejemplo n.º 14
0
    cls = type(
        name, (EventOFPMsgBase, ),
        dict(__init__=lambda self, msg: super(self.__class__, self).__init__(
            msg)))
    globals()[name] = cls
    _OFP_MSG_EVENTS[name] = cls


def _create_ofp_msg_ev_from_module(ofp_praser):
    # print mod
    for _k, cls in inspect.getmembers(ofp_parser, inspect.isclass):
        if not hasattr(cls, 'cls_msg_type'):
            continue
        _create_ofp_msg_ev_class(cls)


for ofp_mods in ofproto.get_ofp_modules().values():
    ofp_parser = ofp_mods[1]
    # print 'loading module %s' % ofp_parser
    _create_ofp_msg_ev_from_module(ofp_parser)


class EventOFPStateChange(event.EventBase):
    def __init__(self, dp):
        super(EventOFPStateChange, self).__init__()
        self.datapath = dp


handler.register_service('ryu.controller.ofp_handler')
Ejemplo n.º 15
0
        self.domain = domain


class EventOXPVportStateChange(event.EventBase):
    def __init__(self, domain, vport_no, state):
        super(EventOXPVportStateChange, self).__init__()
        self.domain = domain
        self.vport_no = vport_no
        self.state = state


class EventOXPHostStateChange(event.EventBase):
    def __init__(self, domain, hosts):
        super(EventOXPHostStateChange, self).__init__()
        self.domain = domain
        self.hosts = hosts


class EventOXPLinkDiscovery(event.EventBase):
    def __init__(self, domain):
        super(EventOXPLinkDiscovery, self).__init__()
        self.domain = domain


if CONF.oxp_role == 'super':
    handler.register_service('ryu.openexchange.super.oxp_server_handler')
elif CONF.oxp_role == 'domain':
    handler.register_service('ryu.openexchange.domain.oxp_client_handler')
else:
    pass
Ejemplo n.º 16
0
    def __init__(self, dp):
        super(EventOFPStateChange, self).__init__()
        self.datapath = dp


class EventOFPPortStateChange(event.EventBase):
    """
    An event class to notify the port state changes of Dtatapath instance.

    This event performs like EventOFPPortStatus, but Ryu will
    send this event after updating ``ports`` dict of Datapath instances.
    An instance has at least the following attributes.

    ========= =================================================================
    Attribute Description
    ========= =================================================================
    datapath  ryu.controller.controller.Datapath instance of the switch
    reason    one of OFPPR_*
    port_no   Port number which state was changed
    ========= =================================================================
    """

    def __init__(self, dp, reason, port_no):
        super(EventOFPPortStateChange, self).__init__()
        self.datapath = dp
        self.reason = reason
        self.port_no = port_no


handler.register_service('ryu.controller.ofp_handler')
Ejemplo n.º 17
0
    if name in _OXP_MSG_EVENTS:
        return

    cls = type(name, (EventOXPMsgBase,),
               dict(__init__=lambda self, msg:
                    super(self.__class__, self).__init__(msg)))
    globals()[name] = cls
    _OXP_MSG_EVENTS[name] = cls


def _create_oxp_msg_ev_from_module(oxp_parser):
    # print mod
    for _k, cls in inspect.getmembers(oxp_parser, inspect.isclass):
        if not hasattr(cls, 'cls_msg_type'):
            continue
        _create_oxp_msg_ev_class(cls)


for oxp_mods in openexchange.get_oxp_modules().values():
    oxp_parser = oxp_mods[1]
    print 'loading module %s' % oxp_parser
    _create_oxp_msg_ev_from_module(oxp_parser)


class EventOXPStateChange(event.EventBase):
    def __init__(self, domain):
        super(EventOXPStateChange, self).__init__()
        self.domain_network = domain

handler.register_service('ryu.openexchange.oxp_handler')