Ask is moving to Stack Overflow and Serverfault.com! Please use the "opendaylight" tag on either of these sites. This site is now in Read-Only mode

Revision history [back]

click to hide/show revision 1
initial version

No implementation of RPC AbsoluteSchemaPath{path=[(PACKAGE)METHOD]} available)

I get this problem when sending a REST request to my costum-made RPC methods. To be sure, other people have had this form of problem in the past:

https://ask.opendaylight.org/question/13341/i-have-yangui-problemno-implementation-of-rpc-absoluteschemapathpathurnopendaylightparamsxmlnsyanghellorevision2015-01-05hello-world-available/
https://ask.opendaylight.org/question/14218/no-implementation-of-rpc-absoluteschemapath-in-boron-when-using-httpclient/
https://ask.opendaylight.org/question/5960/how-to-register-salflowservice-to-prevent-domrpcimplementationnotavailableexception-no-implementation-of-rpc/
https://ask.opendaylight.org/question/13364/application-development-tutorial-error-while-running-hello-world/
https://ask.opendaylight.org/question/13666/i-am-getting-this-error-while-implementing-hello-world-on-yang-ui-pleasehelp/

The apparent cause is that the class providing the implementation is NOT registered as providing the implementation for those RPC calls. I have seen two ways of solving the problem, which appear to ultimately do the same thing. I will call them the "old way" and the "current way". I have tried both, but I still get the same error. Here is my yang file:

module hash-load-balancer-manager {
...
rpc make-hashing-switch {
    input {...}
}

rpc remove-hashing-switch {
    input { ... }
}
}

The OLD WAY

Declare and distribute the rpc registration provider from the bluepring xml file:

<?xml version="1.0" encoding="UTF-8"?>

<blueprint odl:use-default-for-reference-types="true" xmlns:odl="http://opendaylight.org/xmlns/blueprint/v1.0.0" xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0">
...
<reference interface="org.opendaylight.controller.sal.binding.api.RpcProviderRegistry" id="rpcRegistry"/>
...
<bean id="hashLoadBalancerManagerImpl" destroy-method="close" init-method="init" class="edu.ulaval.sdn.hashloadbalancermanager.HashLoadBalancerManagerImpl">
    ...
    <argument ref="rpcRegistry"/>
 </bean>

Then handle the registration on initialization:

public class HashLoadBalancerManagerImpl implements HashLoadBalancerManagerService, ... {
    ...
    private RpcProviderRegistry rpcProviderRegistry;
    private RpcRegistration<HashLoadBalancerManagerService> serviceRegistration;
    ...
    public HashLoadBalancerManagerImpl(RpcProviderRegistry rpcProviderRegistry) {
        ...
        this.rpcProviderRegistry = rpcProviderRegistry;
    }
    ...
    public void init() {
        LOG.info("Initializing...");
        serviceRegistration = rpcProviderRegistry.addRpcImplementation(HashLoadBalancerManagerService.class, this);
        ...
    }

    /** Implemented from the AutoCloseable interface. */
    @Override
    public void close() {
        LOG.info("Closing...");
        serviceRegistration.close();
        ...
    }
    ...
    @Override
    public Future<RpcResult<Void>> removeHashingSwitch(RemoveHashingSwitchInput input) {
        LOG.info("removing hash load balancer at ip {}", input.getNodeId());
        ...
    }
    ... (and so on)
}

THE NEW WAY

Simply handle the registration automatically via the blueprint file, using ODL's special tags:

<?xml version="1.0" encoding="UTF-8"?>
<blueprint xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0"
           xmlns:odl="http://opendaylight.org/xmlns/blueprint/v1.0.0"
           odl:use-default-for-reference-types="true">
  ...
  <bean id="hashLoadBalancerManagerImpl" class="edu.ulaval.sdn.hashloadbalancermanager.HashLoadBalancerManagerImpl" init-method="init" destroy-method="close">
     ... NOTHING OF IMPORTANCE HERE ...
  </bean>

  <odl:rpc-implementation ref="hashLoadBalancerManagerImpl"/>
</blueprint>

Now what?

This question would answer itself if these methods were working for me. I wanted to get them out of the way quick, to make sure that I had in fact setup the project correctly according the standards.

Why is my rpc method not registered? I have attempted using the following command to search for the LOG output (capitalized and not capitalized):

log:display | grep Balancer

But nothing shows up in the log. This is strange, because at the very least the plugin should be "init". The only explaination I have for no message to show up is if all the other plugins I installed fill up the LOG before I get the time to look into it, effectively "hiding" all of the init messages. That seems a bit far-fetched though. Could there be a way for me to at least know that my plugin is running correctly? If the absence of LOG means that it is not running, then how come?

No implementation of RPC AbsoluteSchemaPath{path=[(PACKAGE)METHOD]} available)

I get this problem when sending a REST request to my costum-made RPC methods. Note that the methods I am trying to use show up in yangman, meaning they are at integrated up to some point in the process. To be sure, other people have had this form of problem in the past:

https://ask.opendaylight.org/question/13341/i-have-yangui-problemno-implementation-of-rpc-absoluteschemapathpathurnopendaylightparamsxmlnsyanghellorevision2015-01-05hello-world-available/
https://ask.opendaylight.org/question/14218/no-implementation-of-rpc-absoluteschemapath-in-boron-when-using-httpclient/
https://ask.opendaylight.org/question/5960/how-to-register-salflowservice-to-prevent-domrpcimplementationnotavailableexception-no-implementation-of-rpc/
https://ask.opendaylight.org/question/13364/application-development-tutorial-error-while-running-hello-world/
https://ask.opendaylight.org/question/13666/i-am-getting-this-error-while-implementing-hello-world-on-yang-ui-pleasehelp/

The apparent cause is that the class providing the implementation is NOT registered as providing the implementation for those RPC calls. I have seen two ways of solving the problem, which appear to ultimately do the same thing. I will call them the "old way" and the "current way". I have tried both, but I still get the same error. Here is my yang file:

module hash-load-balancer-manager {
...
rpc make-hashing-switch {
    input {...}
}

rpc remove-hashing-switch {
    input { ... }
}
}

The OLD WAY

Declare and distribute the rpc registration provider from the bluepring xml file:

<?xml version="1.0" encoding="UTF-8"?>

<blueprint odl:use-default-for-reference-types="true" xmlns:odl="http://opendaylight.org/xmlns/blueprint/v1.0.0" xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0">
...
<reference interface="org.opendaylight.controller.sal.binding.api.RpcProviderRegistry" id="rpcRegistry"/>
...
<bean id="hashLoadBalancerManagerImpl" destroy-method="close" init-method="init" class="edu.ulaval.sdn.hashloadbalancermanager.HashLoadBalancerManagerImpl">
    ...
    <argument ref="rpcRegistry"/>
 </bean>

Then handle the registration on initialization:

public class HashLoadBalancerManagerImpl implements HashLoadBalancerManagerService, ... {
    ...
    private RpcProviderRegistry rpcProviderRegistry;
    private RpcRegistration<HashLoadBalancerManagerService> serviceRegistration;
    ...
    public HashLoadBalancerManagerImpl(RpcProviderRegistry rpcProviderRegistry) {
        ...
        this.rpcProviderRegistry = rpcProviderRegistry;
    }
    ...
    public void init() {
        LOG.info("Initializing...");
        serviceRegistration = rpcProviderRegistry.addRpcImplementation(HashLoadBalancerManagerService.class, this);
        ...
    }

    /** Implemented from the AutoCloseable interface. */
    @Override
    public void close() {
        LOG.info("Closing...");
        serviceRegistration.close();
        ...
    }
    ...
    @Override
    public Future<RpcResult<Void>> removeHashingSwitch(RemoveHashingSwitchInput input) {
        LOG.info("removing hash load balancer at ip {}", input.getNodeId());
        ...
    }
    ... (and so on)
}

THE NEW WAY

Simply handle the registration automatically via the blueprint file, using ODL's special tags:

<?xml version="1.0" encoding="UTF-8"?>
<blueprint xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0"
           xmlns:odl="http://opendaylight.org/xmlns/blueprint/v1.0.0"
           odl:use-default-for-reference-types="true">
  ...
  <bean id="hashLoadBalancerManagerImpl" class="edu.ulaval.sdn.hashloadbalancermanager.HashLoadBalancerManagerImpl" init-method="init" destroy-method="close">
     ... NOTHING OF IMPORTANCE HERE ...
  </bean>

  <odl:rpc-implementation ref="hashLoadBalancerManagerImpl"/>
</blueprint>

Now what?

This question would answer itself if these methods were working for me. I wanted to get them out of the way quick, to make sure that I had in fact setup the project correctly according the standards.

Why is my rpc method not registered? I have attempted using the following command to search for the LOG output (capitalized and not capitalized):

log:display | grep Balancer

But nothing shows up in the log. This is strange, because at the very least the plugin should be "init". The only explaination I have for no message to show up is if all the other plugins I installed fill up the LOG before I get the time to look into it, effectively "hiding" all of the init messages. That seems a bit far-fetched though. Could there be a way for me to at least know that my plugin is running correctly? If the absence of LOG means that it is not running, then how come?

No implementation of RPC AbsoluteSchemaPath{path=[(PACKAGE)METHOD]} available)

I get this problem when sending a REST request to my costum-made RPC methods. Note that the methods I am trying to use show up in yangman, meaning they are at integrated up to some point in the process. To be sure, other people have had this form of problem in the past:

https://ask.opendaylight.org/question/13341/i-have-yangui-problemno-implementation-of-rpc-absoluteschemapathpathurnopendaylightparamsxmlnsyanghellorevision2015-01-05hello-world-available/
https://ask.opendaylight.org/question/14218/no-implementation-of-rpc-absoluteschemapath-in-boron-when-using-httpclient/
https://ask.opendaylight.org/question/5960/how-to-register-salflowservice-to-prevent-domrpcimplementationnotavailableexception-no-implementation-of-rpc/
https://ask.opendaylight.org/question/13364/application-development-tutorial-error-while-running-hello-world/
https://ask.opendaylight.org/question/13666/i-am-getting-this-error-while-implementing-hello-world-on-yang-ui-pleasehelp/

The apparent cause is that the class providing the implementation is NOT registered as providing the implementation for those RPC calls. I have seen two ways of solving the problem, which appear to ultimately do the same thing. I will call them the "old way" and the "current way". I have tried both, but I still get the same error. Here is my yang file:

module hash-load-balancer-manager {
...
rpc make-hashing-switch {
    input {...}
}

rpc remove-hashing-switch {
    input { ... }
}
}

The OLD WAY

Declare and distribute the rpc registration provider from the bluepring xml file:

<?xml version="1.0" encoding="UTF-8"?>

<blueprint odl:use-default-for-reference-types="true" xmlns:odl="http://opendaylight.org/xmlns/blueprint/v1.0.0" xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0">
...
<reference interface="org.opendaylight.controller.sal.binding.api.RpcProviderRegistry" id="rpcRegistry"/>
...
<bean id="hashLoadBalancerManagerImpl" destroy-method="close" init-method="init" class="edu.ulaval.sdn.hashloadbalancermanager.HashLoadBalancerManagerImpl">
    ...
    <argument ref="rpcRegistry"/>
 </bean>

Then handle the registration on initialization:

public class HashLoadBalancerManagerImpl implements HashLoadBalancerManagerService, ... {
    ...
    private RpcProviderRegistry rpcProviderRegistry;
    private RpcRegistration<HashLoadBalancerManagerService> serviceRegistration;
    ...
    public HashLoadBalancerManagerImpl(RpcProviderRegistry rpcProviderRegistry) {
        ...
        this.rpcProviderRegistry = rpcProviderRegistry;
    }
    ...
    public void init() {
        LOG.info("Initializing...");
        serviceRegistration = rpcProviderRegistry.addRpcImplementation(HashLoadBalancerManagerService.class, this);
        ...
    }

    /** Implemented from the AutoCloseable interface. */
    @Override
    public void close() {
        LOG.info("Closing...");
        serviceRegistration.close();
        ...
    }
    ...
    @Override
    public Future<RpcResult<Void>> removeHashingSwitch(RemoveHashingSwitchInput input) {
        LOG.info("removing hash load balancer at ip {}", input.getNodeId());
        ...
    }
    ... (and so on)
}

THE NEW WAY

Simply handle the registration automatically via the blueprint file, using ODL's special tags:

<?xml version="1.0" encoding="UTF-8"?>
<blueprint xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0"
           xmlns:odl="http://opendaylight.org/xmlns/blueprint/v1.0.0"
           odl:use-default-for-reference-types="true">
  ...
  <bean id="hashLoadBalancerManagerImpl" class="edu.ulaval.sdn.hashloadbalancermanager.HashLoadBalancerManagerImpl" init-method="init" destroy-method="close">
     ... NOTHING OF IMPORTANCE HERE ...
  </bean>

  <odl:rpc-implementation ref="hashLoadBalancerManagerImpl"/>
</blueprint>

Now what?

This question would answer itself if these methods were working for me. I wanted to get them out of the way quick, to make sure that I had in fact setup the project correctly according the standards.

Why is my rpc method not registered? I have attempted using the following command to search for the LOG output (capitalized and not capitalized):

log:display | grep Balancer

But nothing Nothing shows up in the log. This is strange, because at up. At the very least the plugin should be "init". The only explaination I have for no message to show up is if all the other plugins I installed fill up the LOG before I get the time to look into it, effectively look, "hiding" all of the init messages. That seems a bit far-fetched though. That's far-fetched. Could there be a way for me to at least know that my plugin is running correctly? If the absence of LOG means that it is not running, then how come?

No implementation of RPC AbsoluteSchemaPath{path=[(PACKAGE)METHOD]} available)

I get this problem when sending a REST request to my costum-made RPC methods. Note that the methods I am trying to use show up in yangman, meaning they are at integrated up to some point in the process. To be sure, other people have had this form of problem in the past:

https://ask.opendaylight.org/question/13341/i-have-yangui-problemno-implementation-of-rpc-absoluteschemapathpathurnopendaylightparamsxmlnsyanghellorevision2015-01-05hello-world-available/
https://ask.opendaylight.org/question/14218/no-implementation-of-rpc-absoluteschemapath-in-boron-when-using-httpclient/
https://ask.opendaylight.org/question/5960/how-to-register-salflowservice-to-prevent-domrpcimplementationnotavailableexception-no-implementation-of-rpc/
https://ask.opendaylight.org/question/13364/application-development-tutorial-error-while-running-hello-world/
https://ask.opendaylight.org/question/13666/i-am-getting-this-error-while-implementing-hello-world-on-yang-ui-pleasehelp/

The apparent cause is that the class providing the implementation is NOT registered as providing the implementation for those RPC calls. I have seen two ways of solving the problem, which appear to ultimately do the same thing. I will call them the "old way" and the "current way". I have tried both, but I still get the same error. Here is my yang file:

module hash-load-balancer-manager {
...
rpc make-hashing-switch {
    input {...}
}

rpc remove-hashing-switch {
    input { ... }
}
}

The OLD WAY

Declare and distribute the rpc registration provider from the bluepring xml file:

<?xml version="1.0" encoding="UTF-8"?>

<blueprint odl:use-default-for-reference-types="true" xmlns:odl="http://opendaylight.org/xmlns/blueprint/v1.0.0" xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0">
...
<reference interface="org.opendaylight.controller.sal.binding.api.RpcProviderRegistry" id="rpcRegistry"/>
...
<bean id="hashLoadBalancerManagerImpl" destroy-method="close" init-method="init" class="edu.ulaval.sdn.hashloadbalancermanager.HashLoadBalancerManagerImpl">
    ...
    <argument ref="rpcRegistry"/>
 </bean>

Then handle the registration on initialization:

public class HashLoadBalancerManagerImpl implements HashLoadBalancerManagerService, ... {
    ...
    private RpcProviderRegistry rpcProviderRegistry;
    private RpcRegistration<HashLoadBalancerManagerService> serviceRegistration;
    ...
    public HashLoadBalancerManagerImpl(RpcProviderRegistry rpcProviderRegistry) {
        ...
        this.rpcProviderRegistry = rpcProviderRegistry;
    }
    ...
    public void init() {
        LOG.info("Initializing...");
        serviceRegistration = rpcProviderRegistry.addRpcImplementation(HashLoadBalancerManagerService.class, this);
        ...
    }

    /** Implemented from the AutoCloseable interface. */
    @Override
    public void close() {
        LOG.info("Closing...");
        serviceRegistration.close();
        ...
    }
    ...
    @Override
    public Future<RpcResult<Void>> removeHashingSwitch(RemoveHashingSwitchInput input) {
        LOG.info("removing hash load balancer at ip {}", input.getNodeId());
        ...
    }
    ... (and so on)
}

THE NEW WAY

Simply handle the registration automatically via the blueprint file, using ODL's special tags:

<?xml version="1.0" encoding="UTF-8"?>
<blueprint xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0"
           xmlns:odl="http://opendaylight.org/xmlns/blueprint/v1.0.0"
           odl:use-default-for-reference-types="true">
  ...
  <bean id="hashLoadBalancerManagerImpl" class="edu.ulaval.sdn.hashloadbalancermanager.HashLoadBalancerManagerImpl" init-method="init" destroy-method="close">
     ... NOTHING OF IMPORTANCE HERE ...
  </bean>

  <odl:rpc-implementation ref="hashLoadBalancerManagerImpl"/>
</blueprint>

Now what?

This question would answer itself if these methods were working for me. I wanted to get them out of the way quick, to make sure that I had in fact setup the project correctly according the standards.

Why is my rpc method not registered? I have attempted using tried the following command to search for the LOG output the LOGs (capitalized and not capitalized):

log:display | grep Balancer

Nothing shows up. At the very least the plugin should be "init". The only explaination I have for no message to show up is if all the other plugins I installed fill up the LOG before I get the time to look, "hiding" all of the init messages. That's far-fetched. Could there be a way for me to know that my plugin is running correctly? If the absence of LOG means that it is not running, then how come?

No implementation of RPC AbsoluteSchemaPath{path=[(PACKAGE)METHOD]} available)

I get this problem when sending a REST request to my costum-made RPC methods. Note that the methods I am trying to use show up in yangman, meaning they are at integrated up to some point in the process. To be sure, other people have had this form of problem in the past:

https://ask.opendaylight.org/question/13341/i-have-yangui-problemno-implementation-of-rpc-absoluteschemapathpathurnopendaylightparamsxmlnsyanghellorevision2015-01-05hello-world-available/
https://ask.opendaylight.org/question/14218/no-implementation-of-rpc-absoluteschemapath-in-boron-when-using-httpclient/
https://ask.opendaylight.org/question/5960/how-to-register-salflowservice-to-prevent-domrpcimplementationnotavailableexception-no-implementation-of-rpc/
https://ask.opendaylight.org/question/13364/application-development-tutorial-error-while-running-hello-world/
https://ask.opendaylight.org/question/13666/i-am-getting-this-error-while-implementing-hello-world-on-yang-ui-pleasehelp/

The apparent cause is that the class providing the implementation is NOT registered as providing the implementation for those RPC calls. I have seen two ways of solving the problem, which appear to ultimately do the same thing. I will call them the "old way" and the "current way". I have tried both, but I still get the same error. Here is my yang file:

module hash-load-balancer-manager {
...
rpc make-hashing-switch {
    input {...}
}

rpc remove-hashing-switch {
    input { ... }
}
}

The OLD WAY

Declare and distribute the rpc registration provider from the bluepring xml file:

<?xml version="1.0" encoding="UTF-8"?>

<blueprint odl:use-default-for-reference-types="true" xmlns:odl="http://opendaylight.org/xmlns/blueprint/v1.0.0" xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0">
...
<reference interface="org.opendaylight.controller.sal.binding.api.RpcProviderRegistry" id="rpcRegistry"/>
...
<bean id="hashLoadBalancerManagerImpl" destroy-method="close" init-method="init" class="edu.ulaval.sdn.hashloadbalancermanager.HashLoadBalancerManagerImpl">
    ...
    <argument ref="rpcRegistry"/>
 </bean>

Then handle the registration on initialization:

public class HashLoadBalancerManagerImpl implements HashLoadBalancerManagerService, ... {
    ...
    private RpcProviderRegistry rpcProviderRegistry;
    private RpcRegistration<HashLoadBalancerManagerService> serviceRegistration;
    ...
    public HashLoadBalancerManagerImpl(RpcProviderRegistry rpcProviderRegistry) {
        ...
        this.rpcProviderRegistry = rpcProviderRegistry;
    }
    ...
    public void init() {
        LOG.info("Initializing...");
        serviceRegistration = rpcProviderRegistry.addRpcImplementation(HashLoadBalancerManagerService.class, this);
        ...
    }

    /** Implemented from the AutoCloseable interface. */
    @Override
    public void close() {
        LOG.info("Closing...");
        serviceRegistration.close();
        ...
    }
    ...
    @Override
    public Future<RpcResult<Void>> removeHashingSwitch(RemoveHashingSwitchInput input) {
        LOG.info("removing hash load balancer at ip {}", input.getNodeId());
        ...
    }
    ... (and so on)
}

THE NEW WAY

Simply handle the registration automatically via the blueprint file, using ODL's special tags:

<?xml version="1.0" encoding="UTF-8"?>
<blueprint xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0"
           xmlns:odl="http://opendaylight.org/xmlns/blueprint/v1.0.0"
           odl:use-default-for-reference-types="true">
  ...
  <bean id="hashLoadBalancerManagerImpl" class="edu.ulaval.sdn.hashloadbalancermanager.HashLoadBalancerManagerImpl" init-method="init" destroy-method="close">
     ... NOTHING OF IMPORTANCE HERE ...
  </bean>

  <odl:rpc-implementation ref="hashLoadBalancerManagerImpl"/>
</blueprint>

Now what?

This question would answer itself if these methods were working for me. I wanted to get them out of the way quick, to make sure that I had in fact setup the project correctly according the standards.

Why is my rpc method not registered? I tried the following command to search the LOGs (capitalized and not capitalized):LOGs:

log:display | grep Balancer

Nothing shows up. At the very least the plugin should be "init". The only explaination I have for no message to show up is if all the other plugins I installed fill up the LOG before I get the time to look, "hiding" all of the init messages. That's far-fetched. Could there be a way for me to know that my plugin is running correctly? If the absence of LOG means that it is not running, then how come?

No implementation of RPC AbsoluteSchemaPath{path=[(PACKAGE)METHOD]} available)

I get this problem when sending a REST request to my costum-made RPC methods. Note that the methods I am trying to use show up in yangman, meaning they are at integrated up to some point in the process. To be sure, other people have had this form of problem in the past:

https://ask.opendaylight.org/question/13341/i-have-yangui-problemno-implementation-of-rpc-absoluteschemapathpathurnopendaylightparamsxmlnsyanghellorevision2015-01-05hello-world-available/
https://ask.opendaylight.org/question/14218/no-implementation-of-rpc-absoluteschemapath-in-boron-when-using-httpclient/
https://ask.opendaylight.org/question/5960/how-to-register-salflowservice-to-prevent-domrpcimplementationnotavailableexception-no-implementation-of-rpc/
https://ask.opendaylight.org/question/13364/application-development-tutorial-error-while-running-hello-world/
https://ask.opendaylight.org/question/13666/i-am-getting-this-error-while-implementing-hello-world-on-yang-ui-pleasehelp/

The apparent cause is that the class providing the implementation is NOT registered as providing the implementation for those RPC calls. I have seen two ways of solving the problem, which appear to ultimately do the same thing. I will call them the "old way" and the "current way". I have tried both, but I still get the same error. Here is my yang file:

module hash-load-balancer-manager {
...
rpc make-hashing-switch {
    input {...}
}

rpc remove-hashing-switch {
    input { ... }
}
}

The OLD WAY

Declare and distribute the rpc registration provider from the bluepring xml file:

<?xml version="1.0" encoding="UTF-8"?>

<blueprint odl:use-default-for-reference-types="true" xmlns:odl="http://opendaylight.org/xmlns/blueprint/v1.0.0" xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0">
...
<reference interface="org.opendaylight.controller.sal.binding.api.RpcProviderRegistry" id="rpcRegistry"/>
...
<bean id="hashLoadBalancerManagerImpl" destroy-method="close" init-method="init" class="edu.ulaval.sdn.hashloadbalancermanager.HashLoadBalancerManagerImpl">
    ...
    <argument ref="rpcRegistry"/>
 </bean>

Then handle the registration on initialization:

public class HashLoadBalancerManagerImpl implements HashLoadBalancerManagerService, ... {
    ...
    private RpcProviderRegistry rpcProviderRegistry;
    private RpcRegistration<HashLoadBalancerManagerService> serviceRegistration;
    ...
    public HashLoadBalancerManagerImpl(RpcProviderRegistry rpcProviderRegistry) {
        ...
        this.rpcProviderRegistry = rpcProviderRegistry;
    }
    ...
    public void init() {
        LOG.info("Initializing...");
        serviceRegistration = rpcProviderRegistry.addRpcImplementation(HashLoadBalancerManagerService.class, this);
        ...
    }

    /** Implemented from the AutoCloseable interface. */
    @Override
    public void close() {
        LOG.info("Closing...");
        serviceRegistration.close();
        ...
    }
    ...
    @Override
    public Future<RpcResult<Void>> removeHashingSwitch(RemoveHashingSwitchInput input) {
        LOG.info("removing hash load balancer at ip {}", input.getNodeId());
        ...
    }
    ... (and so on)
}

THE NEW WAY

Simply handle the registration automatically via the blueprint file, using ODL's special tags:

<?xml version="1.0" encoding="UTF-8"?>
<blueprint xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0"
           xmlns:odl="http://opendaylight.org/xmlns/blueprint/v1.0.0"
           odl:use-default-for-reference-types="true">
  ...
  <bean id="hashLoadBalancerManagerImpl" class="edu.ulaval.sdn.hashloadbalancermanager.HashLoadBalancerManagerImpl" init-method="init" destroy-method="close">
     ... NOTHING OF IMPORTANCE HERE ...
  </bean>

  <odl:rpc-implementation ref="hashLoadBalancerManagerImpl"/>
</blueprint>

Now what?

This question would answer itself if these methods were working for me. I wanted to get them out of the way quick, to make sure that I had in fact setup the project correctly according the standards.

Why is my rpc method still not registered? I tried the following command to search the LOGs:

log:display | grep Balancer

Nothing shows up. At the very least the plugin should be "init". The only explaination I have for no message to show up is if all the other plugins I installed fill up the LOG before I get the time to look, "hiding" all of the init messages. That's far-fetched. Could there be a way for me to know that my plugin is running correctly? If the absence of LOG means that it is not running, then how come?

No implementation of RPC AbsoluteSchemaPath{path=[(PACKAGE)METHOD]} available)

I get this problem when sending a REST request to my costum-made RPC methods. Note that the methods I am trying to use show up in yangman, meaning they are at integrated up to some point in the process. To be sure, other people have had this form of problem in the past:

https://ask.opendaylight.org/question/13341/i-have-yangui-problemno-implementation-of-rpc-absoluteschemapathpathurnopendaylightparamsxmlnsyanghellorevision2015-01-05hello-world-available/
https://ask.opendaylight.org/question/14218/no-implementation-of-rpc-absoluteschemapath-in-boron-when-using-httpclient/
https://ask.opendaylight.org/question/5960/how-to-register-salflowservice-to-prevent-domrpcimplementationnotavailableexception-no-implementation-of-rpc/
https://ask.opendaylight.org/question/13364/application-development-tutorial-error-while-running-hello-world/
https://ask.opendaylight.org/question/13666/i-am-getting-this-error-while-implementing-hello-world-on-yang-ui-pleasehelp/

The apparent cause is that the class providing the implementation is NOT registered as providing the implementation for those RPC calls. I have seen two ways of solving the problem, which appear to ultimately do the same thing. I will call them the "old way" and the "current way". I have tried both, but I still get the same error. Here is my yang file:

module hash-load-balancer-manager {
...
rpc make-hashing-switch {
    input {...}
}

rpc remove-hashing-switch {
    input { ... }
}
}

The OLD WAY

Declare and distribute the rpc registration provider from the bluepring xml file:

<?xml version="1.0" encoding="UTF-8"?>

<blueprint odl:use-default-for-reference-types="true" xmlns:odl="http://opendaylight.org/xmlns/blueprint/v1.0.0" xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0">
...
<reference interface="org.opendaylight.controller.sal.binding.api.RpcProviderRegistry" id="rpcRegistry"/>
...
<bean id="hashLoadBalancerManagerImpl" destroy-method="close" init-method="init" class="edu.ulaval.sdn.hashloadbalancermanager.HashLoadBalancerManagerImpl">
    ...
    <argument ref="rpcRegistry"/>
 </bean>

Then handle the registration on initialization:

public class HashLoadBalancerManagerImpl implements HashLoadBalancerManagerService, ... {
    ...
    private RpcProviderRegistry rpcProviderRegistry;
    private RpcRegistration<HashLoadBalancerManagerService> serviceRegistration;
    ...
    public HashLoadBalancerManagerImpl(RpcProviderRegistry rpcProviderRegistry) {
        ...
        this.rpcProviderRegistry = rpcProviderRegistry;
    }
    ...
    public void init() {
        LOG.info("Initializing...");
        serviceRegistration = rpcProviderRegistry.addRpcImplementation(HashLoadBalancerManagerService.class, this);
        ...
    }

    /** Implemented from the AutoCloseable interface. */
    @Override
    public void close() {
        LOG.info("Closing...");
        serviceRegistration.close();
        ...
    }
    ...
    @Override
    public Future<RpcResult<Void>> removeHashingSwitch(RemoveHashingSwitchInput input) {
        LOG.info("removing hash load balancer at ip {}", input.getNodeId());
        ...
    }
    ... (and so on)
}

THE NEW CURRENT WAY

Simply handle the registration automatically via the blueprint file, using ODL's special tags:

<?xml version="1.0" encoding="UTF-8"?>
<blueprint xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0"
           xmlns:odl="http://opendaylight.org/xmlns/blueprint/v1.0.0"
           odl:use-default-for-reference-types="true">
  ...
  <bean id="hashLoadBalancerManagerImpl" class="edu.ulaval.sdn.hashloadbalancermanager.HashLoadBalancerManagerImpl" init-method="init" destroy-method="close">
     ... NOTHING OF IMPORTANCE HERE ...
  </bean>

  <odl:rpc-implementation ref="hashLoadBalancerManagerImpl"/>
</blueprint>

Now what?

Why is my rpc method still not registered? I tried the following command to search the LOGs:

log:display | grep Balancer

Nothing shows up. At the very least the plugin should be "init". The only explaination I have for no message to show up is if all the other plugins I installed fill up the LOG before I get the time to look, "hiding" all of the init messages. That's far-fetched. Could there be a way for me to know that my plugin is running correctly? If the absence of LOG means that it is not running, then how come?

No implementation of RPC AbsoluteSchemaPath{path=[(PACKAGE)METHOD]} available)

I get this problem when sending a REST request to my costum-made RPC methods. Note that the methods I am trying to use show up in yangman, meaning they are at integrated up to some point in the process. To be sure, other people have had this form of problem in the past:

https://ask.opendaylight.org/question/13341/i-have-yangui-problemno-implementation-of-rpc-absoluteschemapathpathurnopendaylightparamsxmlnsyanghellorevision2015-01-05hello-world-available/
https://ask.opendaylight.org/question/14218/no-implementation-of-rpc-absoluteschemapath-in-boron-when-using-httpclient/
https://ask.opendaylight.org/question/5960/how-to-register-salflowservice-to-prevent-domrpcimplementationnotavailableexception-no-implementation-of-rpc/
https://ask.opendaylight.org/question/13364/application-development-tutorial-error-while-running-hello-world/
https://ask.opendaylight.org/question/13666/i-am-getting-this-error-while-implementing-hello-world-on-yang-ui-pleasehelp/

The apparent cause is that the class providing the implementation is NOT registered as providing the implementation for those RPC calls. I have seen two ways of solving the problem, which appear to ultimately do the same thing. I will call them the "old way" and the "current way". I have tried both, but I still get the same error. Here is my yang file:

module hash-load-balancer-manager {
...
rpc make-hashing-switch {
    input {...}
}

rpc remove-hashing-switch {
    input { ... }
}
}

The OLD WAY

Declare and distribute the rpc registration provider from the bluepring xml file:

<?xml version="1.0" encoding="UTF-8"?>

<blueprint odl:use-default-for-reference-types="true" xmlns:odl="http://opendaylight.org/xmlns/blueprint/v1.0.0" xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0">
...
<reference interface="org.opendaylight.controller.sal.binding.api.RpcProviderRegistry" id="rpcRegistry"/>
...
<bean id="hashLoadBalancerManagerImpl" destroy-method="close" init-method="init" class="edu.ulaval.sdn.hashloadbalancermanager.HashLoadBalancerManagerImpl">
    ...
    <argument ref="rpcRegistry"/>
 </bean>

Then handle the registration on initialization:

public class HashLoadBalancerManagerImpl implements HashLoadBalancerManagerService, ... {
    ...
    private RpcProviderRegistry rpcProviderRegistry;
    private RpcRegistration<HashLoadBalancerManagerService> serviceRegistration;
    ...
    public HashLoadBalancerManagerImpl(RpcProviderRegistry rpcProviderRegistry) {
        ...
        this.rpcProviderRegistry = rpcProviderRegistry;
    }
    ...
    public void init() {
        LOG.info("Initializing...");
        serviceRegistration = rpcProviderRegistry.addRpcImplementation(HashLoadBalancerManagerService.class, this);
        ...
    }

    /** Implemented from the AutoCloseable interface. */
    @Override
    public void close() {
        LOG.info("Closing...");
        serviceRegistration.close();
        ...
    }
    ...
    @Override
    public Future<RpcResult<Void>> removeHashingSwitch(RemoveHashingSwitchInput input) {
        LOG.info("removing hash load balancer at ip {}", input.getNodeId());
        ...
    }
    ... (and so on)
}

THE CURRENT WAY

Simply handle the registration automatically via the blueprint file, using ODL's special tags:

<?xml version="1.0" encoding="UTF-8"?>
<blueprint xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0"
           xmlns:odl="http://opendaylight.org/xmlns/blueprint/v1.0.0"
           odl:use-default-for-reference-types="true">
  ...
  <bean id="hashLoadBalancerManagerImpl" class="edu.ulaval.sdn.hashloadbalancermanager.HashLoadBalancerManagerImpl" init-method="init" destroy-method="close">
     ... NOTHING OF IMPORTANCE HERE ...
  </bean>

  <odl:rpc-implementation ref="hashLoadBalancerManagerImpl"/>
</blueprint>

Now what?

Why is my rpc method still not registered? I tried the following command to search the LOGs:

log:display | grep Balancer

Nothing shows up. At the very least the plugin should be "init". The only explaination I have for no message to show up is if all the other plugins I installed fill up the LOG before I get the time to look, "hiding" all of the init messages. That's far-fetched. Could there be a way for me to know that my plugin is running correctly? If the absence of LOG means that it is not running, then how come?

No implementation of RPC AbsoluteSchemaPath{path=[(PACKAGE)METHOD]} available)

I get this problem when sending a REST request to my costum-made RPC methods. Note that the methods I am trying to use show up in yangman, meaning they are at integrated up to some point in the process. To be sure, other people have had this form of problem in the past:

https://ask.opendaylight.org/question/13341/i-have-yangui-problemno-implementation-of-rpc-absoluteschemapathpathurnopendaylightparamsxmlnsyanghellorevision2015-01-05hello-world-available/
https://ask.opendaylight.org/question/14218/no-implementation-of-rpc-absoluteschemapath-in-boron-when-using-httpclient/
https://ask.opendaylight.org/question/5960/how-to-register-salflowservice-to-prevent-domrpcimplementationnotavailableexception-no-implementation-of-rpc/
https://ask.opendaylight.org/question/13364/application-development-tutorial-error-while-running-hello-world/
https://ask.opendaylight.org/question/13666/i-am-getting-this-error-while-implementing-hello-world-on-yang-ui-pleasehelp/

The apparent cause is that the class providing the implementation is NOT registered as providing the implementation for those RPC calls. I have seen two ways of solving the problem, which appear to ultimately do the same thing. I will call them the "old way" and the "current way". I have tried both, but I still get the same error. Here is my yang file:

module hash-load-balancer-manager {
...
    ...
    rpc make-hashing-switch {
     input {...}
}

    }

    rpc remove-hashing-switch {
     input { ... }
 }
}

The OLD WAY

Declare and distribute the rpc registration provider from the bluepring xml file:

<?xml version="1.0" encoding="UTF-8"?>
 <blueprint odl:use-default-for-reference-types="true" xmlns:odl="http://opendaylight.org/xmlns/blueprint/v1.0.0" xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0">
...
    ...
    <reference interface="org.opendaylight.controller.sal.binding.api.RpcProviderRegistry" id="rpcRegistry"/>
...
    ...
    <bean id="hashLoadBalancerManagerImpl" destroy-method="close" init-method="init" class="edu.ulaval.sdn.hashloadbalancermanager.HashLoadBalancerManagerImpl">
    ...
    ...
        <argument ref="rpcRegistry"/>
  </bean>
</blueprint>

Blockquote

Blockquote

Then handle the registration on initialization:

public class HashLoadBalancerManagerImpl implements HashLoadBalancerManagerService, ... {
    ...
    private RpcProviderRegistry rpcProviderRegistry;
    private RpcRegistration<HashLoadBalancerManagerService> serviceRegistration;
    ...
    public HashLoadBalancerManagerImpl(RpcProviderRegistry rpcProviderRegistry) {
        ...
        this.rpcProviderRegistry = rpcProviderRegistry;
    }
    ...
    public void init() {
        LOG.info("Initializing...");
        serviceRegistration = rpcProviderRegistry.addRpcImplementation(HashLoadBalancerManagerService.class, this);
        ...
    }

    /** Implemented from the AutoCloseable interface. */
    @Override
    public void close() {
        LOG.info("Closing...");
        serviceRegistration.close();
        ...
    }
    ...
    @Override
    public Future<RpcResult<Void>> removeHashingSwitch(RemoveHashingSwitchInput input) {
        LOG.info("removing hash load balancer {}", input.getNodeId());
        ...
    }
    ... (and so on)
}

THE CURRENT WAY

Simply handle the registration automatically via the blueprint file, using ODL's special tags:

<?xml version="1.0" encoding="UTF-8"?>
<blueprint xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0"
           xmlns:odl="http://opendaylight.org/xmlns/blueprint/v1.0.0"
           odl:use-default-for-reference-types="true">
  ...
  <bean id="hashLoadBalancerManagerImpl" class="edu.ulaval.sdn.hashloadbalancermanager.HashLoadBalancerManagerImpl" init-method="init" destroy-method="close">
     ... NOTHING OF IMPORTANCE HERE ...
  </bean>

  <odl:rpc-implementation ref="hashLoadBalancerManagerImpl"/>
</blueprint>

Now what?

Why is my rpc method still not registered? I tried the following command to search the LOGs:

log:display | grep Balancer

Nothing shows up. At the very least the plugin should be "init". The only explaination I have for no message to show up is if all the other plugins I installed fill up the LOG before I get the time to look, "hiding" all of the init messages. That's far-fetched. Could there be a way for me to know that my plugin is running correctly? If the absence of LOG means that it is not running, then how come?

No implementation of RPC AbsoluteSchemaPath{path=[(PACKAGE)METHOD]} available)

I get this problem when sending a REST request to my costum-made RPC methods. Note that the methods I am trying to use show up in yangman, meaning they are at integrated up to some point in the process. To be sure, other people have had this form of problem in the past:

https://ask.opendaylight.org/question/13341/i-have-yangui-problemno-implementation-of-rpc-absoluteschemapathpathurnopendaylightparamsxmlnsyanghellorevision2015-01-05hello-world-available/
https://ask.opendaylight.org/question/14218/no-implementation-of-rpc-absoluteschemapath-in-boron-when-using-httpclient/
https://ask.opendaylight.org/question/5960/how-to-register-salflowservice-to-prevent-domrpcimplementationnotavailableexception-no-implementation-of-rpc/
https://ask.opendaylight.org/question/13364/application-development-tutorial-error-while-running-hello-world/
https://ask.opendaylight.org/question/13666/i-am-getting-this-error-while-implementing-hello-world-on-yang-ui-pleasehelp/

The apparent cause is that the class providing the implementation is NOT registered as providing the implementation for those RPC calls. I have seen two ways of solving the problem, which appear to ultimately do the same thing. I will call them the "old way" and the "current way". I have tried both, but I still get the same error. Here is my yang file:

module hash-load-balancer-manager {
    ...
    rpc make-hashing-switch {
        input {...}
    }

    rpc remove-hashing-switch {
        input { ... }
    }
}

The OLD WAY

Declare and distribute the rpc registration provider from the bluepring xml file:

<?xml version="1.0" encoding="UTF-8"?>
<blueprint odl:use-default-for-reference-types="true" xmlns:odl="http://opendaylight.org/xmlns/blueprint/v1.0.0" xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0">
    ...
    <reference interface="org.opendaylight.controller.sal.binding.api.RpcProviderRegistry" id="rpcRegistry"/>
    ...
    <bean id="hashLoadBalancerManagerImpl" destroy-method="close" init-method="init" class="edu.ulaval.sdn.hashloadbalancermanager.HashLoadBalancerManagerImpl">
        ...
        <argument ref="rpcRegistry"/>
    </bean>
</blueprint>

Blockquote

Blockquote

Then handle the registration on initialization:

public class HashLoadBalancerManagerImpl implements HashLoadBalancerManagerService, ... {
    ...
    private RpcProviderRegistry rpcProviderRegistry;
    private RpcRegistration<HashLoadBalancerManagerService> serviceRegistration;
    ...
    public HashLoadBalancerManagerImpl(RpcProviderRegistry rpcProviderRegistry) {
        ...
        this.rpcProviderRegistry = rpcProviderRegistry;
    }
    ...
    public void init() {
        LOG.info("Initializing...");
        serviceRegistration = rpcProviderRegistry.addRpcImplementation(HashLoadBalancerManagerService.class, this);
        ...
    }

    /** Implemented from the AutoCloseable interface. */
    @Override
    public void close() {
        LOG.info("Closing...");
        serviceRegistration.close();
        ...
    }
    ...
    @Override
    public Future<RpcResult<Void>> removeHashingSwitch(RemoveHashingSwitchInput input) {
        LOG.info("removing hash load balancer {}", input.getNodeId());
        ...
    }
    ... (and so on)
}

THE CURRENT WAY

Simply handle the registration automatically via the blueprint file, using ODL's special tags:

<?xml version="1.0" encoding="UTF-8"?>
<blueprint xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0"
           xmlns:odl="http://opendaylight.org/xmlns/blueprint/v1.0.0"
           odl:use-default-for-reference-types="true">
  ...
  <bean id="hashLoadBalancerManagerImpl" class="edu.ulaval.sdn.hashloadbalancermanager.HashLoadBalancerManagerImpl" init-method="init" destroy-method="close">
     ... NOTHING OF IMPORTANCE HERE ...
  </bean>

  <odl:rpc-implementation ref="hashLoadBalancerManagerImpl"/>
</blueprint>

Now what?

Why is my rpc method still not registered? I tried the following command to search the LOGs:

log:display | grep Balancer

Nothing shows up. At the very least the plugin should be "init". The only explaination I have for no message to show up is if all the other plugins I installed fill up the LOG before I get the time to look, "hiding" all of the init messages. That's far-fetched. Could there be a way for me to know that my plugin is running correctly? If the absence of LOG means that it is not running, then how come?

No implementation of RPC AbsoluteSchemaPath{path=[(PACKAGE)METHOD]} available)

I get this problem when sending a REST request to my costum-made RPC methods. Note that the methods I am trying to use show up in yangman, meaning they are at integrated up to some point in the process. To be sure, other people have had this form of problem in the past:

https://ask.opendaylight.org/question/13341/i-have-yangui-problemno-implementation-of-rpc-absoluteschemapathpathurnopendaylightparamsxmlnsyanghellorevision2015-01-05hello-world-available/
https://ask.opendaylight.org/question/14218/no-implementation-of-rpc-absoluteschemapath-in-boron-when-using-httpclient/
https://ask.opendaylight.org/question/5960/how-to-register-salflowservice-to-prevent-domrpcimplementationnotavailableexception-no-implementation-of-rpc/
https://ask.opendaylight.org/question/13364/application-development-tutorial-error-while-running-hello-world/
https://ask.opendaylight.org/question/13666/i-am-getting-this-error-while-implementing-hello-world-on-yang-ui-pleasehelp/

The apparent cause is that the class providing the implementation is NOT registered as providing the implementation for those RPC calls. I have seen two ways of solving the problem, which appear to ultimately do the same thing. I will call them the "old way" and the "current way". I have tried both, but I still get the same error. Here is my yang file:

module hash-load-balancer-manager {
    ...
    rpc make-hashing-switch {
        input {...}
    }

    rpc remove-hashing-switch {
        input { ... }
    }
}

The OLD WAY

Declare and distribute the rpc registration provider from the bluepring xml file:

<?xml version="1.0" encoding="UTF-8"?>
<blueprint odl:use-default-for-reference-types="true" xmlns:odl="http://opendaylight.org/xmlns/blueprint/v1.0.0" xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0">
    ...
    <reference interface="org.opendaylight.controller.sal.binding.api.RpcProviderRegistry" id="rpcRegistry"/>
    ...
    <bean id="hashLoadBalancerManagerImpl" destroy-method="close" init-method="init" class="edu.ulaval.sdn.hashloadbalancermanager.HashLoadBalancerManagerImpl">
        ...
        <argument ref="rpcRegistry"/>
    </bean>
</blueprint>

Then handle the registration on initialization:

public class HashLoadBalancerManagerImpl implements HashLoadBalancerManagerService, ... {
    ...
    private RpcProviderRegistry rpcProviderRegistry;
    private RpcRegistration<HashLoadBalancerManagerService> serviceRegistration;
    ...
    public HashLoadBalancerManagerImpl(RpcProviderRegistry rpcProviderRegistry) {
        ...
        this.rpcProviderRegistry = rpcProviderRegistry;
    }
    ...
    public void init() {
        LOG.info("Initializing...");
        serviceRegistration = rpcProviderRegistry.addRpcImplementation(HashLoadBalancerManagerService.class, this);
        ...
    }

    /** Implemented from the AutoCloseable interface. */
    @Override
    public void close() {
        LOG.info("Closing...");
        serviceRegistration.close();
        ...
    }
    ...
    @Override
    public Future<RpcResult<Void>> removeHashingSwitch(RemoveHashingSwitchInput input) {
        LOG.info("removing hash load balancer {}", input.getNodeId());
        ...
    }
    ... (and so on)
}

THE CURRENT WAY

Simply handle the registration automatically via the blueprint file, using ODL's special tags:

<?xml version="1.0" encoding="UTF-8"?>
<blueprint xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0"
           xmlns:odl="http://opendaylight.org/xmlns/blueprint/v1.0.0"
           odl:use-default-for-reference-types="true">
  ...
  <bean id="hashLoadBalancerManagerImpl" class="edu.ulaval.sdn.hashloadbalancermanager.HashLoadBalancerManagerImpl" init-method="init" destroy-method="close">
     ... NOTHING OF IMPORTANCE HERE ...
  </bean>

  <odl:rpc-implementation ref="hashLoadBalancerManagerImpl"/>
</blueprint>

Now what?

Why is my rpc method still not registered? I tried the following command to search the LOGs:

log:display | grep Balancer

Nothing shows up. At the very least the plugin should be "init". The only explaination I have for no message to show up can confirm that OpenFlowPlugin's LLDPSpeaker is if all the other plugins I installed fill up the LOG before I get the time to look, "hiding" all of the init messages. That's far-fetched. Could there be a way for me to know that built using this method,so why is my plugin is running correctly? If the absence of LOG means that it is not running, then how come?logging anything?