![]() | 1 | initial version |
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?
![]() | 2 | No.2 Revision |
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?
![]() | 3 | No.3 Revision |
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?
![]() | 4 | No.4 Revision |
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?
![]() | 5 | No.5 Revision |
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?
![]() | 6 | No.6 Revision |
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?
![]() | 7 | No.7 Revision |
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?
![]() | 8 | No.8 Revision |
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?
![]() | 9 | No.9 Revision |
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?
![]() | 10 | No.10 Revision |
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?
![]() | 11 | No.11 Revision |
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?
© 2014 OpenDaylight, A Linux Foundation Collaborative Project. All Rights Reserved.
OpenDaylight is a trademark of The OpenDaylight Project, Inc.
Linux Foundation is a registered trademark of The Linux Foundation.
Linux is a registered trademark of Linus Torvalds.
Please see our brand guidelines, trademark guidelines, terms of service and privacy policy.