10-07-2019 09:41 AM
From the developer guide about data kickers
No distinction is made between configuration and operational data.
However when I attempt a nano service using ncs:monitor to monitor an operational leaf, I can't get the kicker to trigger when that operational leaf is updated.
nano-service.yang
module nano-service {
namespace "http://com/example/nanoservice";
prefix nano-service;
import ietf-inet-types {
prefix inet;
}
import tailf-ncs {
prefix ncs;
}
import tailf-common {
prefix tailf;
}
identity nano-component {
base ncs:plan-component-type;
}
identity nano-template {
base ncs:plan-state;
}
ncs:plan-outline nano-plan {
ncs:component-type "ncs:self" {
ncs:state "ncs:init";
ncs:state "ncs:ready";
}
ncs:component-type "nano-component" {
ncs:state "ncs:init" {
ncs:create {
ncs:pre-condition {
ncs:monitor "$SERVICE" {
ncs:trigger-expr "oper-status='OK'";
}
}
}
}
ncs:state "nano-template" {
ncs:create {
ncs:nano-callback;
}
}
ncs:state "ncs:ready";
}
}
ncs:service-behavior-tree nano-service {
ncs:plan-outline-ref nano-plan;
ncs:selector {
ncs:create-component "self" {
ncs:component-type-ref "ncs:self";
}
ncs:create-component "nano-component" {
ncs:component-type-ref "nano-service:nano-component";
}
}
}
list nano-service {
key name;
uses ncs:nano-plan-data;
uses ncs:service-data;
ncs:servicepoint "nano-service";
leaf name {
type string;
}
leaf-list device {
type leafref {
path "/ncs:devices/ncs:device/ncs:name";
}
}
leaf oper-status {
config false;
type enumeration {
enum "NOT OK";
enum "OK";
}
tailf:cdb-oper {
tailf:persistent true;
}
}
}
}In NCS CLI
admin@ncs% set nano-service test device iosxr0
[ok][2019-10-07 16:32:34]
[edit]
admin@ncs% commit | debug kicker
2019-10-07T16:32:39.307 kicker: internal at /kicker:kickers changed; invoking {kicker_server,
kicker_data_changed,[]}
Commit complete.
[ok][2019-10-07 16:32:39]
[edit]
admin@ncs% unhide debug
[ok][2019-10-07 16:32:47]
[edit]
admin@ncs% show kickers
data-kicker "pre-condition: /nano-service:nano-service{test}/plan/component{nano-service:nano-component \"\"}/state{ncs:init}" {
monitor $SERVICE;
trigger-expr oper-status='OK';
variable PLAN {
value /nano-service[name='test']/plan;
}
variable SERVICE {
value /nano-service[name='test'];
}
variable ZOMBIE {
value "/ncs:zombies/ncs:service[ncs:service-path=\"/nano-service[name='test']\"]";
}
kick-node /nano-service:nano-service[nano-service:name='test'];
action-name reactive-re-deploy;
}
[ok][2019-10-07 16:32:49]
[edit]
admin@ncs% run show nano-service
POST
BACK ACTION
TYPE NAME TRACK GOAL STATE STATUS WHEN ref STATUS
-------------------------------------------------------------------------------------------------
self false - init reached 2019-10-07T16:32:39 - -
ready reached 2019-10-07T16:32:39 - -
nano-component false - init not-reached - - -
nano-template not-reached - - -
ready not-reached - - -
[ok][2019-10-07 16:32:58]
[edit]
admin@ncs% run show nano-service oper-status
OPER
NAME STATUS
--------------
test -
[ok][2019-10-07 16:33:12]
[edit]
admin@ncs% run show nano-service oper-status
OPER
NAME STATUS
--------------
test OK
[ok][2019-10-07 16:33:16]
[edit]
admin@ncs% run show nano-service
POST
BACK ACTION
TYPE NAME TRACK GOAL STATE STATUS WHEN ref STATUS
-------------------------------------------------------------------------------------------------
self false - init reached 2019-10-07T16:32:39 - -
ready reached 2019-10-07T16:32:39 - -
nano-component false - init not-reached - - -
nano-template not-reached - - -
ready not-reached - - -
oper-status OK
[ok][2019-10-07 16:33:19]To set oper-status I'm using the following command
$ ncs_cmd -c "dbset operational; set /nano-service{test}/oper-status OK"I found https://community.cisco.com/t5/nso-developer-hub-discussions/understanding-kickers/td-p/3890298 that mention kickers may depend on how the operational data is set but doesn't go into any details.
I was expecting the kicker to pick up the change and reactive-re-deploy the service but instead it's stuck. Is there something I'm missing in the configuration or how kickers or nano-services work?
Thanks
/Diddi
Solved! Go to Solution.
10-07-2019 09:53 AM
10-07-2019 09:53 AM
Discover and save your favorite ideas. Come back to expert answers, step-by-step guides, recent topics, and more.
New here? Get started with these tips. How to use Community New member guide