# Revision history [back]

### 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/


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"/>
...
...
<argument ref="rpcRegistry"/>
</bean>


Then handle the registration on initialization:

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

/** 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">
...
... NOTHING OF IMPORTANCE HERE ...
</bean>

</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/


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"/>
...
...
<argument ref="rpcRegistry"/>
</bean>


Then handle the registration on initialization:

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

/** 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">
...
... NOTHING OF IMPORTANCE HERE ...
</bean>

</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/


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"/>
...
...
<argument ref="rpcRegistry"/>
</bean>


Then handle the registration on initialization:

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

/** 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">
...
... NOTHING OF IMPORTANCE HERE ...
</bean>

</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/


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"/>
...
...
<argument ref="rpcRegistry"/>
</bean>


Then handle the registration on initialization:

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

/** 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">
...
... NOTHING OF IMPORTANCE HERE ...
</bean>

</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/


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"/>
...
...
<argument ref="rpcRegistry"/>
</bean>


Then handle the registration on initialization:

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

/** 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">
...
... NOTHING OF IMPORTANCE HERE ...
</bean>

</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/


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"/>
...
...
<argument ref="rpcRegistry"/>
</bean>


Then handle the registration on initialization:

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

/** 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">
...
... NOTHING OF IMPORTANCE HERE ...
</bean>

</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/


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"/>
...
...
<argument ref="rpcRegistry"/>
</bean>


Then handle the registration on initialization:

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

/** 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">
...
... NOTHING OF IMPORTANCE HERE ...
</bean>

</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/


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"/>
...
...
<argument ref="rpcRegistry"/>
</bean>


Then handle the registration on initialization:

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

/** 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">
...
... NOTHING OF IMPORTANCE HERE ...
</bean>

</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/


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"/>
...
...
...
...
<argument ref="rpcRegistry"/>
</bean>
</blueprint>


Blockquote

Blockquote

Then handle the registration on initialization:

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

/** 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">
...
... NOTHING OF IMPORTANCE HERE ...
</bean>

</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/


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"/>
...
...
<argument ref="rpcRegistry"/>
</bean>
</blueprint>


Blockquote

Blockquote

Then handle the registration on initialization:

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

/** 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">
...
... NOTHING OF IMPORTANCE HERE ...
</bean>

</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/


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"/>
...
...
<argument ref="rpcRegistry"/>
</bean>
</blueprint>


Then handle the registration on initialization:

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

/** 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">
...
... NOTHING OF IMPORTANCE HERE ...
</bean>


log:display | grep Balancer