[CONTROLLER-1231] Netconf Topology tree is not cleaned up after session goes down Created: 31/Mar/15  Updated: 19/Oct/17  Resolved: 19/May/15

Status: Resolved
Project: controller
Component/s: netconf
Affects Version/s: Post-Helium
Fix Version/s: None

Type: Bug
Reporter: Reinaldo Penno Assignee: Unassigned
Resolution: Cannot Reproduce Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified
Environment:

Operating System: All
Platform: All


External issue ID: 2921

 Description   

IF the netconf connection between ODL and a device is severed, the topology tree is not cleaned up.

Below the device still shows up as connecting even after 30 minutes or so. This the operational datastore.

{
"network-topology": {
"topology": [
{
"topology-id": "topology-netconf",
"node": [
{
"node-id": "sfc-netconf",
"netconf-node-topology:connection-status": "connecting",
"netconf-node-topology:available-capabilities": {},
"netconf-node-topology:port": 17830,
"netconf-node-topology:unavailable-capabilities": {},
"netconf-node-topology:host": "127.0.0.1"
},
{
"node-id": "controller-config",
"netconf-node-topology:connection-status": "connected",
"netconf-node-topology:available-capabilities":

{ "available-capability": [ "urn:ietf:params:netconf:base:1.1", "(urn:opendaylight:params:xml:ns:yang:controller:config:sfc-netconf:impl?revision=2014-10-20)sfc-netconf-impl", "(urn:cisco:params:xml:ns:yang:sfc-sl?revision=2014-07-01)service-locator", "(urn:opendaylight:params:xml:ns:yang:controller:config:sfc-provider:impl?revision=2014-06-30)sfc-provider-impl", "(urn:opendaylight:queue:statistics?revision=2013-12-16)opendaylight-queue-statistics", "(urn:ietf:params:xml:ns:netconf:notification:1.0?revision=2008-07-14)notifications", "(urn:opendaylight:l2switch:main-impl?revision=2014-05-28)main-impl", "(urn:opendaylight:params:xml:ns:yang:controller:config:sfc-l2renderer:impl?revision=2014-09-01)sfc-l2renderer-impl", "(urn:opendaylight:params:xml:ns:yang:controller:netconf:mdsal:mapper?revision=2015-01-14)netconf-mdsal-mapper", "(urn:TBD:params:xml:ns:yang:nt:l3-unicast-igp-topology?revision=2013-10-21)l3-unicast-igp-topology", "(urn:opendaylight:params:xml:ns:yang:controller:netty?revision=2013-11-19)netty", "(urn:ietf:params:xml:ns:yang:packet-fields?revision=2014-06-25)packet-fields", "(urn:opendaylight:address-tracker?revision=2014-06-17)address-tracker", "(urn:ietf:params:xml:ns:yang:ietf-netconf-notifications?revision=2012-02-06)ietf-netconf-notifications", "(urn:ietf:params:xml:ns:yang:ospf-topology?revision=2013-07-12)ospf-topology", "urn:ietf:params:netconf:base:1.0", "(urn:opendaylight:openflowjava:nx:action?revision=2014-04-21)nicira-action", "(urn:ietf:params:xml:ns:yang:ietf-netconf-monitoring-extension?revision=2013-12-10)ietf-netconf-monitoring-extension", "(urn:ietf:params:xml:ns:yang:ietf-restconf?revision=2013-10-19)ietf-restconf", "(urn:opendaylight:meter:statistics?revision=2013-11-11)opendaylight-meter-statistics", "(urn:opendaylight:host-tracker?revision=2014-06-24)host-tracker-service", "(http://netconfcentral.org/ns/XSQL?revision=2014-06-26)XSQL", "(urn:opendaylight:params:xml:ns:yang:controller:shutdown?revision=2013-12-18)shutdown", "(urn:opendaylight:module:config?revision=2014-10-15)node-config", "(urn:cisco:params:xml:ns:yang:sfc-sft?revision=2014-07-01)service-function-type", "(urn:cisco:params:xml:ns:yang:sfc-sfg-alg?revision=2016-02-02)service-function-group-algorithm", "(urn:ietf:params:xml:ns:netconf:base:1.0?revision=2011-06-01)ietf-netconf", "(urn:opendaylight:params:xml:ns:yang:controller:config:netconf:client:dispatcher?revision=2014-04-08)odl-netconfig-client-cfg", "(urn:TBD:params:xml:ns:yang:network-topology?revision=2013-10-21)network-topology", "(urn.intel.params:xml:ns:sf-desc-mon?revision=2014-12-01)service-function-description-monitor", "(urn:opendaylight:openflowplugin:extension:general?revision=2014-07-14)openflowplugin-extension-general", "(urn:opendaylight:openflowplugin:extension:nicira:action?revision=2014-07-14)openflowplugin-extension-nicira-action", "(urn:opendaylight:params:xml:ns:yang:controller:md:sal:dom:pingpong?revision=2014-11-07)opendaylight-pingpong-broker", "(urn:opendaylight:params:xml:ns:yang:controller:config:netconf:northbound:impl?revision=2015-01-12)netconf-northbound-impl", "(urn:cisco:params:xml:ns:yang:sfc-scf?revision=2014-07-01)service-function-classifier", "(urn:opendaylight:params:xml:ns:yang:openflowplugin:nx:config:impl?revision=2014-07-11)nicira-extension-impl", "(urn:opendaylight:params:xml:ns:yang:aaa:credential-store?revision=2015-02-26)credential-store", "(urn:opendaylight:echo:service?revision=2015-03-05)sal-echo", "(urn:opendaylight:params:xml:ns:yang:southbound:impl?revision=2014-12-10)southbound-impl", "(urn:opendaylight:group:service?revision=2013-09-18)sal-group", "(urn:opendaylight:flow:errors?revision=2013-11-16)flow-errors", "(urn:opendaylight:params:xml:ns:yang:openflow:applications:lldp-speaker?revision=2014-10-23)lldp-speaker", "(urn:TBD:params:xml:ns:yang:ospf-topology?revision=2013-10-21)ospf-topology", "(urn:opendaylight:params:xml:ns:yang:controller:md:sal:core:spi:config-dom-store?revision=2014-06-17)opendaylight-config-dom-datastore", "(urn:opendaylight:params:xml:ns:yang:openflow:applications:of-switch-config-pusher?revision=2014-10-15)of-switch-config-pusher", "(urn:opendaylight:packet:basepacket?revision=2014-05-28)base-packet", "(urn:opendaylight:packet:service?revision=2013-07-09)packet-processing", "(urn:opendaylight:flow:types:port?revision=2013-09-25)opendaylight-port-types", "(urn:opendaylight:flow:topology:discovery?revision=2013-08-19)flow-topology-discovery", "(urn:opendaylight:flow:table:statistics?revision=2013-12-15)opendaylight-flow-table-statistics", "(urn:cisco:params:xml:ns:yang:sfc-sff?revision=2014-07-01)service-function-forwarder", "(urn:opendaylight:params:xml:ns:yang:controller:md:sal:common?revision=2013-10-28)opendaylight-md-sal-common", "(urn:cisco:params:xml:ns:yang:sfc-sfp?revision=2014-07-01)service-function-path", "(urn:opendaylight:params:xml:ns:yang:controller:md:sal:dom:impl?revision=2013-10-28)opendaylight-sal-dom-broker-impl", "(urn:opendaylight:netconf-node-inventory?revision=2014-01-08)netconf-node-inventory", "(urn:ietf:params:xml:ns:yang:ietf-netconf-monitoring?revision=2010-10-04)ietf-netconf-monitoring", "(urn:opendaylight:flow:transaction?revision=2015-03-04)flow-capable-transaction", "(urn:ietf:params:xml:ns:yang:iana-if-type?revision=2014-05-08)iana-if-type", "(urn:opendaylight:params:xml:ns:yang:controller:config:sfc-test-consumer:impl?revision=2014-07-01)sfc-test-consumer-impl", "(urn:opendaylight:openflow:config?revision=2014-06-30)openflow-configuration", "(urn:opendaylight:packet:address-tracker-impl?revision=2014-05-28)address-tracker-impl", "(urn:ietf:params:xml:ns:yang:ietf-acl?revision=2014-05-20)ietf-acl", "(urn:opendaylight:packet:ipv4?revision=2014-05-28)ipv4-packet", "(urn:TBD:params:xml:ns:yang:nt:l3-unicast-igp-topology?revision=2013-07-12)l3-unicast-igp-topology", "(urn:opendaylight:model:topology:general?revision=2013-10-30)opendaylight-topology", "(urn:opendaylight:l2:types?revision=2013-08-27)opendaylight-l2-types", "(urn:opendaylight:port:statistics?revision=2013-12-14)opendaylight-port-statistics", "(urn:opendaylight:params:xml:ns:yang:controller:md:sal:binding:impl?revision=2013-10-28)opendaylight-sal-binding-broker-impl", "(urn:opendaylight:params:xml:ns:yang:openflow:switch:connection:provider:impl?revision=2014-03-28)openflow-switch-connection-provider-impl", "(urn:opendaylight:openflowplugin:extension:nicira:match?revision=2014-07-14)openflowplugin-extension-nicira-match", "(urn:opendaylight:params:xml:ns:yang:controller:config:netconf?revision=2014-04-08)odl-netconf-cfg", "(urn:cisco:params:xml:ns:yang:sfc-sfc?revision=2014-07-01)service-function-chain", "(urn:sal:restconf:event:subscription?revision=2014-07-08)sal-remote-augment", "(urn:opendaylight:queue:service?revision=2015-03-05)sal-queue", "(urn:cisco:params:xml:ns:yang:sfc-sf?revision=2014-07-01)service-function", "(urn:opendaylight:params:xml:ns:yang:openflow:common:config?revision=2014-03-26)openflow-provider", "(urn:opendaylight:packet:ipv6?revision=2014-05-28)ipv6-packet", "(urn:TBD:params:xml:ns:yang:network:isis-topology?revision=2013-07-12)isis-topology", "(urn:opendaylight:params:xml:ns:yang:controller:config:openflowplugin:nx:config?revision=2014-07-11)nicira-extension", "(urn:opendaylight:params:xml:ns:yang:openflow:switch:connection:provider?revision=2014-03-28)openflow-switch-connection-provider", "(urn:opendaylight:model:statistics:types?revision=2013-09-25)opendaylight-statistics-types", "(urn:opendaylight:model:match:types?revision=2013-10-26)opendaylight-match-types", "(urn:opendaylight:params:xml:ns:yang:controller:md:sal:core:spi:operational-dom-store?revision=2014-06-17)opendaylight-operational-dom-datastore", "(urn:opendaylight:node:error:service?revision=2014-04-10)node-error", "(urn:opendaylight:port:service?revision=2013-11-07)sal-port", "(urn:opendaylight:params:xml:ns:yang:controller:threadpool:impl:flexible?revision=2013-12-01)threadpool-impl-flexible", "(urn:opendaylight:flow:types?revision=2013-10-26)opendaylight-flow-types", "(urn:opendaylight:params:xml:ns:yang:controller:threadpool:impl?revision=2013-04-05)threadpool-impl", "(urn:opendaylight:params:xml:ns:yang:controller:netconf:north:mapper?revision=2015-01-14)netconf-northbound-mapper", "(urn:opendaylight:action:types?revision=2013-11-12)opendaylight-action-types", "(urn:opendaylight:params:xml:ns:yang:openflowplugin:api:types?revision=2015-03-27)openflow-plugin-types", "(urn:opendaylight:params:xml:ns:yang:controller:shutdown:impl?revision=2013-12-18)shutdown-impl", "(urn:opendaylight:params:xml:ns:yang:controller:config?revision=2013-04-05)config", "(urn:ietf:params:xml:ns:yang:rpc-context?revision=2013-06-17)rpc-context", "(urn:opendaylight:params:xml:ns:yang:overlay?revision=2015-01-05)overlay", "(urn:opendaylight:params:xml:ns:yang:controller:md:sal:rest:connector?revision=2014-07-24)opendaylight-rest-connector", "(urn:opendaylight:params:xml:ns:yang:ovsdb?revision=2015-01-05)ovsdb", "(urn:opendaylight:params:xml:ns:yang:controller:md:sal:dom?revision=2013-10-28)opendaylight-md-sal-dom", "(urn:opendaylight:params:xml:ns:yang:controller:netconf:mdsal:monitoring?revision=2015-02-18)netconf-mdsal-monitoring", "(urn:opendaylight:params:xml:ns:yang:openflowplugin:app:statistics-manager?revision=2014-09-25)statistics-manager", "(urn:opendaylight:table:types?revision=2013-10-26)opendaylight-table-types", "(urn:opendaylight:params:xml:ns:yang:controller:netconf:northbound:ssh?revision=2015-01-14)netconf-northbound-ssh", "(urn:opendaylight:packet:arp?revision=2014-05-28)arp-packet", "(urn:opendaylight:yang:extension:yang-ext?revision=2013-07-09)yang-ext", "(urn:opendaylight:openflow:system?revision=2013-09-27)system-notifications", "(urn:opendaylight:openflow:common:types?revision=2013-07-31)openflow-types", "(urn:TBD:params:xml:ns:yang:network:ted?revision=2013-10-21)ted", "(urn:opendaylight:openflow:common:action?revision=2015-02-03)openflow-action", "(urn:opendaylight:params:xml:ns:yang:openflowplugin:ofjava:nx:config?revision=2014-07-11)openflowjava-nx-config", "(urn:opendaylight:l2switch:host-tracker-impl?revision=2014-05-28)host-tracker-impl", "(urn:opendaylight:openflow:oxm?revision=2015-02-25)openflow-extensible-match", "(urn:opendaylight:packet:loop-remover-impl?revision=2014-05-28)loop-remover-impl", "(urn:ietf:params:xml:ns:yang:ietf-yang-types?revision=2010-09-24)ietf-yang-types", "(urn:opendaylight:params:xml:ns:yang:controller:md:sal:remote?revision=2014-01-14)sal-remote", "(urn:opendaylight:params:xml:ns:yang:controller:config:netconf:northbound?revision=2015-01-14)netconf-northbound", "(urn:TBD:params:xml:ns:yang:network-topology?revision=2013-07-12)network-topology", "urn:ietf:params:netconf:capability:candidate:1.0", "(urn:opendaylight:group:types?revision=2013-10-18)opendaylight-group-types", "(urn:opendaylight:params:xml:ns:yang:controller:threadpool:impl:fixed?revision=2013-12-01)threadpool-impl-fixed", "(urn:opendaylight:params:xml:ns:yang:controller:config:sfc-ovs:impl?revision=2014-10-20)sfc-ovs-impl", "(urn:opendaylight:params:xml:ns:yang:openflowplugin:ofjava:nx:api:config?revision=2014-07-11)openflowjava-nx-api-config", "(urn:opendaylight:params:xml:ns:yang:controller:threadpool?revision=2013-04-09)threadpool", "(urn:opendaylight:params:xml:ns:yang:controller:netty:threadgroup?revision=2013-11-07)threadgroup", "(urn:opendaylight:flow:service?revision=2013-08-19)sal-flow", "(urn:opendaylight:params:xml:ns:yang:controller:md:sal:binding?revision=2013-10-28)opendaylight-md-sal-binding", "(urn:opendaylight:openflowjava:nx:match?revision=2014-04-21)nicira-match", "(urn:opendaylight:params:xml:ns:yang:controller:netty:timer?revision=2013-11-19)netty-timer", "(urn:opendaylight:netconf-node-topology?revision=2015-01-14)netconf-node-topology", "(urn:TBD:params:xml:ns:yang:network:isis-topology?revision=2013-10-21)isis-topology", "(urn:cisco:params:xml:ns:yang:sfc-md?revision=2014-07-01)service-function-metadata", "urn:ietf:params:netconf:capability:exi:1.0", "(urn:opendaylight:meter:service?revision=2013-09-18)sal-meter", "(urn:cisco:params:xml:ns:yang:sfc-rsp?revision=2014-07-01)rendered-service-path", "(urn:opendaylight:params:xml:ns:yang:openflow:common:config:impl?revision=2014-03-26)openflow-provider-impl", "(urn:opendaylight:packet:ethernet?revision=2014-05-28)ethernet-packet", "urn:ietf:params:netconf:capability:notification:1.0", "(urn:opendaylight:group:statistics?revision=2013-11-11)opendaylight-group-statistics", "(urn:cisco:params:xml:ns:yang:sfc-ss?revision=2014-07-01)service-statistics", "(urn:ietf:params:xml:ns:netmod:notification?revision=2008-07-14)nc-notifications", "(urn:opendaylight:flow:statistics?revision=2013-08-19)opendaylight-flow-statistics", "(urn:opendaylight:model:topology:inventory?revision=2013-10-30)opendaylight-topology-inventory", "(urn:cisco:params:xml:ns:yang:sfc-sn?revision=2014-07-01)service-node", "(urn:cisco:params:xml:ns:yang:sfc-acl?revision=2014-07-01)service-function-acl", "(urn:cisco:params:xml:ns:yang:sfc-sff-ovs?revision=2014-07-01)service-function-forwarder-ovs", "(urn:opendaylight:flow:inventory?revision=2013-08-19)flow-node-inventory", "(urn:opendaylight:params:xml:ns:yang:controller:netty:eventexecutor?revision=2013-11-12)netty-event-executor", "(urn:opendaylight:params:xml:ns:yang:controller:md:sal:connector:netconf?revision=2013-10-28)odl-sal-netconf-connector-cfg", "(urn:opendaylight:openflow:augments?revision=2015-02-25)openflow-augments", "(urn:opendaylight:params:xml:ns:yang:controller:inmemory-datastore-provider?revision=2014-06-17)opendaylight-inmemory-datastore-provider", "(urn:ietf:params:xml:ns:yang:ietf-yang-types?revision=2013-07-15)ietf-yang-types", "(urn:ietf:params:xml:ns:yang:ietf-interfaces?revision=2014-05-08)ietf-interfaces", "(urn:opendaylight:l2switch:loopremover?revision=2014-07-14)stp-status-aware-node-connector", "(urn:opendaylight:params:xml:ns:yang:controller:protocol:framework?revision=2014-03-13)protocol-framework", "(urn.intel.params:xml:ns:sf-desc-mon-rpt?revision=2014-11-05)service-function-description-monitor-report", "(urn:opendaylight:inventory?revision=2013-08-19)opendaylight-inventory", "(urn:intel:params:xml:ns:yang:sfc-sfst?revision=2015-03-12)service-function-scheduler-type", "(urn:opendaylight:model:topology:view?revision=2013-10-30)opendaylight-topology-view", "(urn:opendaylight:packet:packet-handler-impl?revision=2014-05-28)packet-handler-impl", "(urn:opendaylight:flow:types:queue?revision=2013-09-25)opendaylight-queue-types", "(urn:opendaylight:packet:arp-handler-impl?revision=2014-05-28)arp-handler-impl", "(urn:ietf:params:xml:ns:yang:ietf-inet-types?revision=2010-09-24)ietf-inet-types", "(urn:opendaylight:openflow:protocol?revision=2013-07-31)openflow-protocol", "(urn:TBD:params:xml:ns:yang:network:ted?revision=2013-07-12)ted", "(urn:opendaylight:params:xml:ns:yang:controller:config:sfc-sb-rest-provider:impl?revision=2014-10-20)sfc-sb-rest-provider-impl", "(urn:cisco:params:xml:ns:yang:sfc-sfg?revision=2016-02-02)service-function-group", "(urn:opendaylight:params:xml:ns:yang:controller:threadpool:impl:scheduled?revision=2013-12-01)threadpool-impl-scheduled", "(urn:opendaylight:meter:types?revision=2013-09-18)opendaylight-meter-types", "(urn:opendaylight:table:service?revision=2013-10-26)sal-table", "(urn:opendaylight:openflow:common:instruction?revision=2013-07-31)openflow-instruction" ] }

,
"netconf-node-topology:port": 1830,
"netconf-node-topology:unavailable-capabilities": {},
"netconf-node-topology:host": "127.0.0.1"
}
]
},

{ "topology-id": "ovsdb:1" }

,

{ "topology-id": "flow:1" }

]
}
}

The configuration tree also shows the device

{
"network-topology": {
"topology": [
{
"topology-id": "topology-netconf",
"node": [

{ "node-id": "sfc-netconf" }

,

{ "node-id": "controller-config" }

]
},

{ "topology-id": "ovsdb:1" }

]
}
}



 Comments   
Comment by Tony Tkacik [ 31/Mar/15 ]

What you are asking for is to be whole node removed? Or just to remove data as capabilities, etc?

Netconf is reconnecting, so providing
"netconf-node-topology:connection-status": "connecting"
is actually correct.

List of available-capabilities should not be there.

Comment by Reinaldo Penno [ 31/Mar/15 ]

Whole node removed. Netconf session is down, node is not reachable, for all purposes node can not be be used.

As far as "connecting" goes, I waited a long time and state did not change. At some point it needs to give up, change state one final time and remove node. It can not be "connecting" forever...At least that is how I see it.

Also, when node is removed, it needs to be remove from current_config.xml. Otherwise it will be re-added when karaf reboots.

Comment by Tomas Cere [ 31/Mar/15 ]

This is the correct behavior since by default there is an infinite reconnect strategy. If you want to eventually run out of reconnect attempts you need to set <max-connection-attempts></max-connection-attempts> in the device configuration when creating the device via restconf/initial configs.
It still won't remove the device from topology after it runs out of attempts, just show connection-status as unable to connect.

Comment by Reinaldo Penno [ 31/Mar/15 ]

Then the topology tree will grow indefinitely. This does not sounds right. I think you have a very limited use-case in mind. In my use-case I can have 10000s of Netconf devices as virtual Service Functions in a data center coming and going.

Comment by Tomas Cere [ 31/Mar/15 ]

Actually it seems to cover broader use cases to me. You cannot know if all use cases want to throw away every node once it's unable-to-connect, it should be up to each individual case to decide whether to throw the node away or keep it.
As for your case - there are already mechanisms in place to detect a state change and deleting a node once it's in unable-to-connect state so topology doesn't grow infinitely(notifications, dataChangeListeners).

Comment by Reinaldo Penno [ 31/Mar/15 ]

I disagree with this approach but I will take the discussion internally.

Netconf plug-in should manage its own datastore. It is not up to SFC to manage netconf-topology tree. OVSDB manages its own nodes and so openflow.

Comment by Jan Medved [ 01/Apr/15 ]

If I understand it correctly, when you configure a Netconf device into config space, it immediately appears in the oper space with status down. Is that correct? In other words, the Netconf Connector creates an entry in the oper space for the device when the device is configured in the config space. The status changes to 'connected' when the NC Connector connects to the device.

Now, somebody had to put the device into the configuration space; in other words a NC device MUST be configured by an outside entity so that the Netconf Connector can do something about it. The configuration can be done either by the operator or, in SFC's case, by the SFC application. Is that correct? If yes, the NC Connector can no delete an entry in its configuration by itself - the entry MUST be deleted by somebody from outside. That somebody MAY be either operator or the SFC app. That somebody SHOULD be the same entity that created the configuration entry.

If the above is correct (and if we can agree on it), then it appears to me that the correct behavior would be for the SFC app to listen on status changes of NC devices on the oper space. If a device went down, the SFC app should then delete the entry from the config space.

Comment by Reinaldo Penno [ 01/Apr/15 ]

The configuration is not done by SFC. Each VM image performs a HTTP POST independently as it spins up. SFC app is not involved, this is similar to call-home.

If a VM is destroyed by orchestrator (say, Openstack) Netconf device will not be removed from topology.

Comment by Jan Medved [ 01/Apr/15 ]

> The configuration is not done by SFC. Each VM image performs a HTTP POST
> independently as it spins up. SFC app is not involved, this is similar to
> call-home.

> If a VM is destroyed by orchestrator (say, Openstack) Netconf device will
> not be removed from topology.

It's a neat trick But it inherently lacks the delete event for the VM. It would be better if the VM performs am HTTP POST to a proxy, which then injects the NC config into the NC connector. The VM should have a keepalive with the proxy, so that the proxy can detect that the VM has gone away.

Alternatively, you can have the proxy listen to NC node status changes in the NC topology. When the proxy detects a connection going down, it starts a timer. When the timer expires, the proxy deletes the device.

But, since the NC config was injected into the NC Connector from outside, the NC Connector should not clean it up itself. Also, it would be clean if the same entity that injects the config into the NC connector also cleans it up.

Comment by Reinaldo Penno [ 01/Apr/15 ]

I understand but that is something we can not guarantee even when VM responsible for the HTTP DELETE.

Networks loose packets, machines crash, things happen. The protocol/database design should be self-healing, i.e, if the netconf session is down for a large amount of time data should be removed.

Comment by Tony Tkacik [ 02/Apr/15 ]

Hi Reinaldo,
from Netconf connector and controller perspective - configuration of controller, that it should try to connect to particular Netconf device was provisioned from external system - that is only information controller have.

The Netconf connector - does what it should do - put data in operational with node, which existence was provisioned by your system, along with status that
it is connecting or connected.

Since Netconf has reversed client-server relationship to openflow - controller
itself does not have any capability to detect that configuration (introduced by external system) of netconf session is invalid.

Also Controller has not enough information to make well-informed decision that
this configuration should be removed - since it was state introduced by external system and does not know intention of external system.

This connection could be unvailable due to several reasons -
1. VM was removed
2. connection issues

From ODL perspective both cases are similar - unable to reach hosts

From deployer perspective - in case n.1 ODL should stop reconnecting to particular VM, case n2. ODL should still try to connect.

Information that VM is removed - tear down is not available to ODL, but system
which was responsible for starting that VM, should have enough information
to remove configuration from ODL regarding that particular VM.

Comment by Tony Tkacik [ 19/May/15 ]

Closing as RESOLVED INVALID - since external system configured ODL to reconnect to remote device and did not cleaned-up ODL configuration once device was removed.

ODL was trying to reconnect since configuration was still applicable and ODL did what was configured trying to connect to remote device.

Generated at Wed Feb 07 19:55:00 UTC 2024 using Jira 8.20.10#820010-sha1:ace47f9899e9ee25d7157d59aa17ab06aee30d3d.