Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Now, a module referencing the ForwardingMapService may call getEndPoints() to get a list of directional endpoints for which intents were installed, and traffic can flow between.

Next, we will create a CLI command to use this new service. This command will list the contents of this map, and also provide the option to take a parameter (a host ID), to filter on that host as a source.

Creating a command 

The CLI commands are defined in the project directory onos_next/cli/. There are two types of commands, with their source files located in the following locations:

...

Since our command will display network-related  information, we will add our command to the second directory. 

1. Create command class

We create the following class skeleton for our new command, tentatively named ForwardingMapCommand. Our class is a child of AbstractShellCommand, and the @Command annotation is used to set its name, scope, and description.

Code Block
languagejava
titleForwardingMapCommand.java
collapsetrue
/*
 * Copyright 2014 Open Networking Laboratory
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
 
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.HostId;

/**
 * Lists the endpoints for which intents are installed
 */
@Command(scope = "onos", name = "fwdmap",
        description = "Lists the endpoints for which intents are installed")
public class ForwardingMapCommand extends AbstractShellCommand {

    @Override
    protected void execute() {
    }
}

...

Next, we need to tell Karaf about our new command by editing shell-config.xml, located in ONOS_ROOT/cli/src/main/resources/OSGI-INF/blueprint/. We add append the following to the contents between the <command-bundle></command-bundle> clause:

Code Block
languagexml
titleshell-config.xml
        <command>
            <!--Our command implementation's FQDN-->
            <action class="org.onlab.onos.cli.net.ForwardingMapCommand"/>
            <!--A command completer for Host IDs-->
            <completers>
                <ref component-id="deviceIdCompleterhostIdCompleter"/>
                <null/>
            </completers>
        </command>