Ayaka Koshibe
Committed by Gerrit Code Review

Additions to southbound API interfaces

added API interfaces for topology

added rough API interfaces for flow

Change-Id: I84ee2b70dd33dcbca98c1863e7f1766cc02642c5
1 +package net.onrc.onos.api.flow;
2 +
3 +package net.onrc.onos.api.Description;
4 +
5 +/**
6 + * Information about a flow rule.
7 + */
8 +public interface FlowDescription extends Description {
9 +
10 + // Match and action, possibly reason for flow rule, unless reason is too OF-specific.
11 +
12 +}
1 +package net.onrc.onos.api.flow;
2 +
3 +import net.onrc.onos.api.Provider;
4 +
5 +/**
6 + * Abstraction of a flow rule provider.
7 + */
8 +public interface FlowRuleProvider extends Provider {
9 +}
...\ No newline at end of file ...\ No newline at end of file
1 +package net.onrc.onos.api.flow;
2 +
3 +import net.onrc.onos.api.ProviderBroker;
4 +
5 +/**
6 + * Abstraction for a flow rule provider brokerage.
7 + */
8 +public interface FlowRuleProviderBroker
9 + extends ProviderBroker<FlowRuleProvider, FlowRuleProviderService> {
10 +}
1 +package net.onrc.onos.api.flow;
2 +
3 +import net.onrc.onos.api.ProviderService;
4 +
5 +/**
6 + * Service through which flowrule providers can inject flowrule information into
7 + * the core.
8 + */
9 +public interface FlowRuleProviderService extends ProviderService {
10 +
11 + /**
12 + * Signals that a flow that was previously installed has been removed.
13 + *
14 + * @param flowDescription information about the removed flow
15 + */
16 + void flowRemoved(FlowDescription flowDescription);
17 +
18 + /**
19 + * Signals that a flowrule is missing for some network traffic.
20 + *
21 + * @param flowDescription information about traffic in need of flow rule(s)
22 + */
23 + void flowMissing(FlowDescription flowDescription);
24 +
25 + /**
26 + * Signals that a flowrule has been added.
27 + *
28 + * TODO think about if this really makes sense, e.g. if stats collection or
29 + * something can leverage it.
30 + *
31 + * @param flowDescription the rule that was added
32 + */
33 + void flowAdded(FlowDescription flowDescription);
34 +
35 +}
...\ No newline at end of file ...\ No newline at end of file
1 +package net.onrc.onos.api.topology;
2 +
3 +import net.onrc.onos.api.Description;
4 +
5 +import java.util.Collection;
6 +
7 +/**
8 + * Describes attribute(s) of a network topology.
9 + */
10 +public interface TopologyDescription extends Description {
11 +
12 + /**
13 + * A collection of Device, Link, and Host descriptors that describe
14 + * the changes tha have occurred in the network topology.
15 + *
16 + * @return network element descriptions describing topology change
17 + */
18 + Collection<Description> details();
19 +
20 +}
...\ No newline at end of file ...\ No newline at end of file
1 +package net.onrc.onos.api.topology;
2 +
3 +import net.onrc.onos.api.Provider;
4 +
5 +/**
6 + * Means for injecting topology information into the core.
7 + */
8 +public interface TopologyProvider extends Provider {
9 +
10 +}
1 +package net.onrc.onos.api.topology;
2 +
3 +import net.onrc.onos.api.ProviderBroker;
4 +
5 +/**
6 + * Abstraction of a network topology provider brokerage.
7 + */
8 +public interface TopologyProviderBroker extends
9 + ProviderBroker<TopologyProvider, TopologyProviderService> {
10 +}
1 +package net.onrc.onos.api.topology;
2 +
3 +import net.onrc.onos.api.ProviderService;
4 +
5 +/**
6 + * Means for injecting topology information into the core.
7 + */
8 +public interface TopologyProviderService extends ProviderService {
9 +
10 + // What can be conveyed in a topology that isn't by individual
11 + // providers?
12 +
13 + /**
14 + * Signals the core that some aspect of the topology has changed.
15 + *
16 + * @param topoDescription information about topology
17 + */
18 + void topologyChanged(TopologyDescription topoDescription);
19 +
20 +}