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
tom
2014-09-08 18:38:19 -0700
Browse Files
Options
Browse Files
Download
Email Patches
Plain Diff
Commit
5f35f7c17e1417b70f0ddfedec48f936ba1439a9
5f35f7c1
1 parent
80c0e5e6
Added a command-line to set device mastership role.
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
72 additions
and
2 deletions
cli/src/main/java/org/onlab/onos/cli/net/DeviceRoleCommand.java
cli/src/main/java/org/onlab/onos/cli/net/RoleCompleter.java
cli/src/main/resources/OSGI-INF/blueprint/shell-config.xml
net/core/trivial/src/main/java/org/onlab/onos/net/trivial/impl/SimpleDeviceManager.java
net/core/trivial/src/test/java/org/onlab/onos/net/trivial/impl/SimpleDeviceManagerTest.java
cli/src/main/java/org/onlab/onos/cli/net/DeviceRoleCommand.java
0 → 100644
View file @
5f35f7c
package
org
.
onlab
.
onos
.
cli
.
net
;
import
org.apache.karaf.shell.commands.Argument
;
import
org.apache.karaf.shell.commands.Command
;
import
org.onlab.onos.cli.AbstractShellCommand
;
import
org.onlab.onos.net.DeviceId
;
import
org.onlab.onos.net.MastershipRole
;
import
org.onlab.onos.net.device.DeviceAdminService
;
/**
* Sets role of the controller node for the given infrastructure device.
*/
@Command
(
scope
=
"onos"
,
name
=
"device-role"
,
description
=
"Sets role of the controller node for the given infrastructure device"
)
public
class
DeviceRoleCommand
extends
AbstractShellCommand
{
@Argument
(
index
=
0
,
name
=
"uri"
,
description
=
"Device ID"
,
required
=
true
,
multiValued
=
false
)
String
uri
=
null
;
@Argument
(
index
=
1
,
name
=
"role"
,
description
=
"Mastership role"
,
required
=
true
,
multiValued
=
false
)
String
role
=
null
;
@Override
protected
Object
doExecute
()
throws
Exception
{
MastershipRole
mastershipRole
=
MastershipRole
.
valueOf
(
role
.
toUpperCase
());
getService
(
DeviceAdminService
.
class
).
setRole
(
DeviceId
.
deviceId
(
uri
),
mastershipRole
);
return
null
;
}
}
cli/src/main/java/org/onlab/onos/cli/net/RoleCompleter.java
0 → 100644
View file @
5f35f7c
package
org
.
onlab
.
onos
.
cli
.
net
;
import
org.apache.karaf.shell.console.Completer
;
import
org.apache.karaf.shell.console.completer.StringsCompleter
;
import
org.onlab.onos.net.MastershipRole
;
import
java.util.List
;
import
java.util.SortedSet
;
/**
* Device mastership role completer.
*/
public
class
RoleCompleter
implements
Completer
{
@Override
public
int
complete
(
String
buffer
,
int
cursor
,
List
<
String
>
candidates
)
{
// Delegate string completer
StringsCompleter
delegate
=
new
StringsCompleter
();
SortedSet
<
String
>
strings
=
delegate
.
getStrings
();
strings
.
add
(
MastershipRole
.
MASTER
.
toString
().
toLowerCase
());
strings
.
add
(
MastershipRole
.
STANDBY
.
toString
().
toLowerCase
());
strings
.
add
(
MastershipRole
.
NONE
.
toString
().
toLowerCase
());
// Now let the completer do the work for figuring out what to offer.
return
delegate
.
complete
(
buffer
,
cursor
,
candidates
);
}
}
cli/src/main/resources/OSGI-INF/blueprint/shell-config.xml
View file @
5f35f7c
...
...
@@ -16,6 +16,13 @@
<ref
component-id=
"deviceIdCompleter"
/>
</completers>
</command>
<command>
<action
class=
"org.onlab.onos.cli.net.DeviceRoleCommand"
/>
<completers>
<ref
component-id=
"deviceIdCompleter"
/>
<ref
component-id=
"roleCompleter"
/>
</completers>
</command>
<command>
<action
class=
"org.onlab.onos.cli.net.LinksListCommand"
/>
...
...
@@ -33,6 +40,7 @@
</command-bundle>
<bean
id=
"deviceIdCompleter"
class=
"org.onlab.onos.cli.net.DeviceIdCompleter"
/>
<bean
id=
"roleCompleter"
class=
"org.onlab.onos.cli.net.RoleCompleter"
/>
<bean
id=
"nameCompleter"
class=
"org.onlab.onos.cli.NameCompleter"
/>
...
...
net/core/trivial/src/main/java/org/onlab/onos/net/trivial/impl/SimpleDeviceManager.java
View file @
5f35f7c
...
...
@@ -139,7 +139,7 @@ public class SimpleDeviceManager
Device
device
=
event
.
subject
();
DeviceProvider
provider
=
getProvider
(
device
.
providerId
());
if
(
provider
!=
null
)
{
provider
.
roleChanged
(
device
,
newRole
);
triggerRoleSelection
(
device
,
provider
);
}
post
(
event
);
}
...
...
net/core/trivial/src/test/java/org/onlab/onos/net/trivial/impl/SimpleDeviceManagerTest.java
View file @
5f35f7c
...
...
@@ -143,11 +143,13 @@ public class SimpleDeviceManagerTest {
}
@Test
public
void
setRole
()
{
public
void
setRole
()
throws
InterruptedException
{
connectDevice
(
DID1
,
SW1
);
admin
.
setRole
(
DID1
,
MastershipRole
.
STANDBY
);
validateEvents
(
DEVICE_ADDED
,
DEVICE_MASTERSHIP_CHANGED
);
assertEquals
(
"incorrect role"
,
MastershipRole
.
STANDBY
,
service
.
getRole
(
DID1
));
Thread
.
sleep
(
200
);
// FIXME: replace this with more reliable and faster testing means!!!
assertEquals
(
"incorrect device"
,
DID1
,
provider
.
deviceReceived
.
id
());
assertEquals
(
"incorrect role"
,
MastershipRole
.
STANDBY
,
provider
.
roleReceived
);
}
...
...
Please
register
or
login
to post a comment