Toggle navigation
Toggle navigation
This project
Loading...
Sign in
홍길동
/
onos
Go to a project
Toggle navigation
Toggle navigation pinning
Projects
Groups
Snippets
Help
Project
Activity
Repository
Pipelines
Graphs
Issues
0
Merge Requests
0
Wiki
Snippets
Network
Create a new issue
Builds
Commits
Issue Boards
Authored by
Madan Jampani
2014-10-06 21:04:29 -0700
Browse Files
Options
Browse Files
Download
Plain Diff
Commit
af797185a56e3225b226e32b1a384866afba1362
af797185
2 parents
2206e01e
a2ad1186
Merge branch 'master' of
ssh://gerrit.onlab.us:29418/onos-next
Hide whitespace changes
Inline
Side-by-side
Showing
11 changed files
with
104 additions
and
54 deletions
cli/src/main/java/org/onlab/onos/cli/SummaryCommand.java
cli/src/main/resources/OSGI-INF/blueprint/shell-config.xml
core/api/src/main/java/org/onlab/onos/net/flow/FlowRuleService.java
core/api/src/main/java/org/onlab/onos/net/flow/FlowRuleStore.java
core/net/src/main/java/org/onlab/onos/net/flow/impl/FlowRuleManager.java
core/net/src/main/java/org/onlab/onos/net/intent/impl/FlowTracker.java
core/net/src/main/java/org/onlab/onos/net/intent/impl/IntentManager.java
core/net/src/main/java/org/onlab/onos/net/intent/impl/TopologyChangeDelegate.java
core/store/dist/src/main/java/org/onlab/onos/store/flow/impl/DistributedFlowRuleStore.java
core/store/hz/net/src/main/java/org/onlab/onos/store/flow/impl/DistributedFlowRuleStore.java
core/store/trivial/src/main/java/org/onlab/onos/store/trivial/impl/SimpleFlowRuleStore.java
cli/src/main/java/org/onlab/onos/cli/SummaryCommand.java
0 → 100644
View file @
af79718
package
org
.
onlab
.
onos
.
cli
;
import
org.apache.karaf.shell.commands.Command
;
import
org.onlab.onos.cluster.ClusterService
;
import
org.onlab.onos.net.device.DeviceService
;
import
org.onlab.onos.net.flow.FlowRuleService
;
import
org.onlab.onos.net.host.HostService
;
import
org.onlab.onos.net.intent.IntentService
;
import
org.onlab.onos.net.link.LinkService
;
import
org.onlab.onos.net.topology.Topology
;
import
org.onlab.onos.net.topology.TopologyService
;
/**
* Provides summary of ONOS model.
*/
@Command
(
scope
=
"onos"
,
name
=
"summary"
,
description
=
"Provides summary of ONOS model"
)
public
class
SummaryCommand
extends
AbstractShellCommand
{
@Override
protected
void
execute
()
{
TopologyService
topologyService
=
get
(
TopologyService
.
class
);
Topology
topology
=
topologyService
.
currentTopology
();
print
(
"nodes=%d, devices=%d, links=%d, hosts=%d, clusters=%s, paths=%d, flows=%d, intents=%d"
,
get
(
ClusterService
.
class
).
getNodes
().
size
(),
get
(
DeviceService
.
class
).
getDeviceCount
(),
get
(
LinkService
.
class
).
getLinkCount
(),
get
(
HostService
.
class
).
getHostCount
(),
topologyService
.
getClusters
(
topology
).
size
(),
topology
.
pathCount
(),
get
(
FlowRuleService
.
class
).
getFlowRuleCount
(),
get
(
IntentService
.
class
).
getIntentCount
());
}
}
cli/src/main/resources/OSGI-INF/blueprint/shell-config.xml
View file @
af79718
...
...
@@ -2,6 +2,9 @@
<command-bundle
xmlns=
"http://karaf.apache.org/xmlns/shell/v1.1.0"
>
<command>
<action
class=
"org.onlab.onos.cli.SummaryCommand"
/>
</command>
<command>
<action
class=
"org.onlab.onos.cli.NodesListCommand"
/>
</command>
<command>
...
...
core/api/src/main/java/org/onlab/onos/net/flow/FlowRuleService.java
View file @
af79718
...
...
@@ -13,6 +13,13 @@ import org.onlab.onos.net.DeviceId;
public
interface
FlowRuleService
{
/**
* Returns the number of flow rules in the system.
*
* @return flow rule count
*/
int
getFlowRuleCount
();
/**
* Returns the collection of flow entries applied on the specified device.
* This will include flow rules which may not yet have been applied to
* the device.
...
...
@@ -72,7 +79,4 @@ public interface FlowRuleService {
* @param listener flow rule listener
*/
void
removeListener
(
FlowRuleListener
listener
);
}
...
...
core/api/src/main/java/org/onlab/onos/net/flow/FlowRuleStore.java
View file @
af79718
...
...
@@ -10,7 +10,15 @@ import org.onlab.onos.store.Store;
public
interface
FlowRuleStore
extends
Store
<
FlowRuleEvent
,
FlowRuleStoreDelegate
>
{
/**
* Returns the number of flow rule in the store.
*
* @return number of flow rules
*/
int
getFlowRuleCount
();
/**
* Returns the stored flow.
*
* @param rule the rule to look for
* @return a flow rule
*/
...
...
@@ -60,5 +68,4 @@ public interface FlowRuleStore extends Store<FlowRuleEvent, FlowRuleStoreDelegat
* @return flow_removed event, or null if nothing removed
*/
FlowRuleEvent
removeFlowRule
(
FlowEntry
rule
);
}
...
...
core/net/src/main/java/org/onlab/onos/net/flow/impl/FlowRuleManager.java
View file @
af79718
...
...
@@ -40,14 +40,14 @@ import com.google.common.collect.Lists;
@Component
(
immediate
=
true
)
@Service
public
class
FlowRuleManager
extends
AbstractProviderRegistry
<
FlowRuleProvider
,
FlowRuleProviderService
>
implements
FlowRuleService
,
FlowRuleProviderRegistry
{
extends
AbstractProviderRegistry
<
FlowRuleProvider
,
FlowRuleProviderService
>
implements
FlowRuleService
,
FlowRuleProviderRegistry
{
public
static
final
String
FLOW_RULE_NULL
=
"FlowRule cannot be null"
;
private
final
Logger
log
=
getLogger
(
getClass
());
private
final
AbstractListenerRegistry
<
FlowRuleEvent
,
FlowRuleListener
>
listenerRegistry
=
new
AbstractListenerRegistry
<>();
listenerRegistry
=
new
AbstractListenerRegistry
<>();
private
final
FlowRuleStoreDelegate
delegate
=
new
InternalStoreDelegate
();
...
...
@@ -75,6 +75,11 @@ implements FlowRuleService, FlowRuleProviderRegistry {
}
@Override
public
int
getFlowRuleCount
()
{
return
store
.
getFlowRuleCount
();
}
@Override
public
Iterable
<
FlowEntry
>
getFlowEntries
(
DeviceId
deviceId
)
{
return
store
.
getFlowEntries
(
deviceId
);
}
...
...
@@ -98,15 +103,17 @@ implements FlowRuleService, FlowRuleProviderRegistry {
for
(
int
i
=
0
;
i
<
flowRules
.
length
;
i
++)
{
f
=
flowRules
[
i
];
device
=
deviceService
.
getDevice
(
f
.
deviceId
());
frp
=
getProvider
(
device
.
providerId
());
store
.
deleteFlowRule
(
f
);
frp
.
removeFlowRule
(
f
);
if
(
device
!=
null
)
{
frp
=
getProvider
(
device
.
providerId
());
frp
.
removeFlowRule
(
f
);
}
}
}
@Override
public
void
removeFlowRulesById
(
ApplicationId
id
)
{
Iterable
<
FlowRule
>
rules
=
getFlowRulesById
(
id
);
Iterable
<
FlowRule
>
rules
=
getFlowRulesById
(
id
);
FlowRuleProvider
frp
;
Device
device
;
...
...
@@ -140,8 +147,8 @@ implements FlowRuleService, FlowRuleProviderRegistry {
}
private
class
InternalFlowRuleProviderService
extends
AbstractProviderService
<
FlowRuleProvider
>
implements
FlowRuleProviderService
{
extends
AbstractProviderService
<
FlowRuleProvider
>
implements
FlowRuleProviderService
{
protected
InternalFlowRuleProviderService
(
FlowRuleProvider
provider
)
{
super
(
provider
);
...
...
@@ -160,16 +167,16 @@ implements FlowRuleService, FlowRuleProviderRegistry {
FlowRuleProvider
frp
=
getProvider
(
device
.
providerId
());
FlowRuleEvent
event
=
null
;
switch
(
stored
.
state
())
{
case
ADDED:
case
PENDING_ADD:
case
ADDED:
case
PENDING_ADD:
frp
.
applyFlowRule
(
stored
);
break
;
case
PENDING_REMOVE:
case
REMOVED:
event
=
store
.
removeFlowRule
(
stored
);
break
;
default
:
break
;
break
;
case
PENDING_REMOVE:
case
REMOVED:
event
=
store
.
removeFlowRule
(
stored
);
break
;
default
:
break
;
}
if
(
event
!=
null
)
{
...
...
@@ -186,17 +193,17 @@ implements FlowRuleService, FlowRuleProviderRegistry {
FlowRuleProvider
frp
=
getProvider
(
device
.
providerId
());
FlowRuleEvent
event
=
null
;
switch
(
flowRule
.
state
())
{
case
PENDING_REMOVE:
case
REMOVED:
event
=
store
.
removeFlowRule
(
flowRule
);
frp
.
removeFlowRule
(
flowRule
);
break
;
case
ADDED:
case
PENDING_ADD:
frp
.
applyFlowRule
(
flowRule
);
break
;
default
:
log
.
debug
(
"Flow {} has not been installed."
,
flowRule
);
case
PENDING_REMOVE:
case
REMOVED:
event
=
store
.
removeFlowRule
(
flowRule
);
frp
.
removeFlowRule
(
flowRule
);
break
;
case
ADDED:
case
PENDING_ADD:
frp
.
applyFlowRule
(
flowRule
);
break
;
default
:
log
.
debug
(
"Flow {} has not been installed."
,
flowRule
);
}
if
(
event
!=
null
)
{
...
...
core/net/src/main/java/org/onlab/onos/net/intent/impl/FlowTracker.java
View file @
af79718
...
...
@@ -115,12 +115,7 @@ public class FlowTracker implements FlowTrackerService {
for
(
Event
reason
:
event
.
reasons
())
{
if
(
reason
instanceof
LinkEvent
)
{
LinkEvent
linkEvent
=
(
LinkEvent
)
reason
;
if
(
linkEvent
.
type
()
==
LinkEvent
.
Type
.
LINK_ADDED
||
linkEvent
.
type
()
==
LinkEvent
.
Type
.
LINK_UPDATED
)
{
delegate
.
bumpIntents
(
intentsByLink
.
get
(
new
LinkKey
(
linkEvent
.
subject
())));
}
else
if
(
linkEvent
.
type
()
==
LinkEvent
.
Type
.
LINK_REMOVED
)
{
delegate
.
failIntents
(
intentsByLink
.
get
(
new
LinkKey
(
linkEvent
.
subject
())));
}
delegate
.
bumpIntents
(
intentsByLink
.
get
(
new
LinkKey
(
linkEvent
.
subject
())));
}
}
}
...
...
core/net/src/main/java/org/onlab/onos/net/intent/impl/IntentManager.java
View file @
af79718
...
...
@@ -359,13 +359,5 @@ public class IntentManager
}
}
@Override
public
void
failIntents
(
Iterable
<
IntentId
>
intentIds
)
{
for
(
IntentId
intentId
:
intentIds
)
{
Intent
intent
=
getIntent
(
intentId
);
uninstallIntent
(
intent
);
compileIntent
(
intent
);
}
}
}
}
...
...
core/net/src/main/java/org/onlab/onos/net/intent/impl/TopologyChangeDelegate.java
View file @
af79718
...
...
@@ -15,12 +15,4 @@ public interface TopologyChangeDelegate {
*/
void
bumpIntents
(
Iterable
<
IntentId
>
intentIds
);
/**
* Notifies that topology has changed in such a way that the specified
* intents should be marked failed and then recompiled.
*
* @param intentIds intents that should be failed and recompiled
*/
void
failIntents
(
Iterable
<
IntentId
>
intentIds
);
}
...
...
core/store/dist/src/main/java/org/onlab/onos/store/flow/impl/DistributedFlowRuleStore.java
View file @
af79718
...
...
@@ -58,6 +58,11 @@ public class DistributedFlowRuleStore
@Override
public
int
getFlowRuleCount
()
{
return
flowEntries
.
size
();
}
@Override
public
synchronized
FlowEntry
getFlowEntry
(
FlowRule
rule
)
{
for
(
FlowEntry
f
:
flowEntries
.
get
(
rule
.
deviceId
()))
{
if
(
f
.
equals
(
rule
))
{
...
...
core/store/hz/net/src/main/java/org/onlab/onos/store/flow/impl/DistributedFlowRuleStore.java
View file @
af79718
...
...
@@ -58,6 +58,11 @@ public class DistributedFlowRuleStore
@Override
public
int
getFlowRuleCount
()
{
return
flowEntries
.
size
();
}
@Override
public
synchronized
FlowEntry
getFlowEntry
(
FlowRule
rule
)
{
for
(
FlowEntry
f
:
flowEntries
.
get
(
rule
.
deviceId
()))
{
if
(
f
.
equals
(
rule
))
{
...
...
core/store/trivial/src/main/java/org/onlab/onos/store/trivial/impl/SimpleFlowRuleStore.java
View file @
af79718
...
...
@@ -57,6 +57,11 @@ public class SimpleFlowRuleStore
@Override
public
int
getFlowRuleCount
()
{
return
flowEntries
.
size
();
}
@Override
public
synchronized
FlowEntry
getFlowEntry
(
FlowRule
rule
)
{
for
(
FlowEntry
f
:
flowEntries
.
get
(
rule
.
deviceId
()))
{
if
(
f
.
equals
(
rule
))
{
...
...
Please
register
or
login
to post a comment