<!--
  ~ Copyright 2015-present Open Networking Foundation
  ~
  ~ 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.
  -->
<blueprint xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0">

    <command-bundle xmlns="http://karaf.apache.org/xmlns/shell/v1.1.0">
        <!-- XXX revisit when we formally add policies
        <command>
            <action class="org.onosproject.segmentrouting.cli.TunnelListCommand"/>
        </command>
        <command>
            <action class="org.onosproject.segmentrouting.cli.PolicyListCommand"/>
        </command>
        <command>
            <action class="org.onosproject.segmentrouting.cli.PolicyAddCommand"/>
        </command>
        <command>
            <action class="org.onosproject.segmentrouting.cli.PolicyRemoveCommand"/>
        </command>
        <command>
            <action class="org.onosproject.segmentrouting.cli.TunnelAddCommand"/>
        </command>
        <command>
            <action class="org.onosproject.segmentrouting.cli.TunnelRemoveCommand"/>
        </command>
        <command>
            <action class="org.onosproject.segmentrouting.cli.RerouteNetworkCommand"/>
        </command>
        -->
        <command>
            <action class="org.onosproject.segmentrouting.cli.DeviceSubnetListCommand"/>
        </command>
        <command>
            <action class="org.onosproject.segmentrouting.cli.EcmpGraphCommand"/>
        </command>
        <command>
            <action class="org.onosproject.segmentrouting.cli.NextHopCommand"/>
        </command>
        <command>
            <action class="org.onosproject.segmentrouting.cli.ShouldProgramCommand"/>
        </command>
        <command>
            <action class="org.onosproject.segmentrouting.cli.VerifyGroupsCommand"/>
            <completers>
                <ref component-id="deviceIdCompleter"/>
            </completers>
        </command>
        <command>
            <action class="org.onosproject.segmentrouting.cli.PseudowireListCommand"/>
        </command>
        <command>
            <action class="org.onosproject.segmentrouting.cli.PseudowireRemoveCommand"/>
            <completers>
                <ref component-id="pseudowireIdCompleter"/>
            </completers>
        </command>
        <command>
            <action class="org.onosproject.segmentrouting.cli.PseudowireAddCommand"/>
        </command>
        <command>
            <action class="org.onosproject.segmentrouting.cli.LinkStateCommand"/>
        </command>
        <command>
            <action class="org.onosproject.segmentrouting.cli.McastNextListCommand"/>
            <optional-completers>
                <entry key="-gAddr" value-ref="mcastGroupCompleter"/>
            </optional-completers>
        </command>
        <command>
            <action class="org.onosproject.segmentrouting.cli.McastTreeListCommand"/>
            <optional-completers>
                <entry key="-gAddr" value-ref="mcastGroupCompleter"/>
                <entry key="-src" value-ref="connectpointCompleter"/>
            </optional-completers>
        </command>
        <command>
            <action class="org.onosproject.segmentrouting.cli.McastLeaderListCommand"/>
            <optional-completers>
                <entry key="-gAddr" value-ref="mcastGroupCompleter"/>
            </optional-completers>
        </command>
    </command-bundle>

    <bean id="nullCompleter" class="org.apache.karaf.shell.console.completer.NullCompleter"/>
    <bean id="deviceIdCompleter" class="org.onosproject.cli.net.DeviceIdCompleter"/>
    <bean id="pseudowireIdCompleter" class="org.onosproject.segmentrouting.cli.PseudowireIdCompleter"/>
    <bean id="mcastGroupCompleter" class="org.onosproject.mcast.cli.McastGroupCompleter"/>
    <bean id="connectpointCompleter" class="org.onosproject.cli.net.ConnectPointCompleter"/>

</blueprint>


