cancel
Showing results for 
Search instead for 
Did you mean: 
cancel
833
Views
0
Helpful
1
Replies

Nano Services Basic question

Hi,

I am new into the nano services, I am trying to write a simple plan where I have an action associated inside the service call. My YANG looks something like follows (tenants and tenant will be replaced with groups/group it's just a draft version)

        container multitenancy {
            tailf:info "SD-WAN Multitenancy";
            presence multitenancy;

            container tenants {
                tailf:info "SD-WAN Tenants Group";

                list tenant {
                    tailf:info "List of customers groupped under the tenant";
                    key name;

                    leaf name {
                        type string;
                    }

                    leaf deployment-kind {
                        type enumeration {
                            enum standalone;
                            enum redundant;
                        }
                    }

                    leaf deployment {
                        type enumeration {
                            enum aws;
                            enum otc;
                        }
                    }

                    leaf-list customer {
                        type leafref {
                            path "/map:dispatch-map/map:customer";
                        }
                    }
                    uses ncs:service-data;
                    uses ncs:nano-plan-data;
                    ncs:servicepoint tenant-servicepoint;

                    //uses cfs-actions:multitenancy-grouping;
                    action tenant-profile {
                        tailf:hidden debug;
                        tailf:actionpoint create-tenancy-action;
                    }
                }
            }
        }

My nano looks as follow

ncs:plan-outline create-tenant-plan {
    description "Setup the Mutlitenant Cluster.";

    ncs:component-type "ncs:self" {
        ncs:state "ncs:init" {
            ncs:create {
                ncs:post-action-node "$SERVICE" {
                    ncs:action-name "tenant-profile";
                }
            }
        }

        ncs:state "cfs:tenant-created" {
            ncs:create {
                ncs:pre-condition {
                    ncs:monitor "$SERVICE/plan/component[type='ncs:self'][name='self']/state[name='ncs:init']" {
                        ncs:trigger-expr "post-action-status = 'create-reached'";
                    }
                }
            }
        }
        ncs:state "ncs:ready";
    }
}

ncs:service-behavior-tree tenant-servicepoint {
    ncs:plan-outline-ref create-tenant-plan;
    ncs:selector {
        ncs:create-component "'self'" {
            ncs:component-type-ref "ncs:self";
        }
    }
}

I just want to monitor if the action was performed, based on that tenant-created state should be reached. My action is performed without any issues however inside the plan I see the following

admin@ncs> show infrastructure multitenancy tenants tenant
infrastructure multitenancy tenants tenant foo
 plan-location /infrastructure/multitenancy/tenants/tenant[name='foo']
            BACK                                                                POST ACTION
TYPE  NAME  TRACK  GOAL  STATE           STATUS       WHEN                 ref  STATUS
------------------------------------------------------------------------------------------------
self  self  false  -     init            reached      2022-01-13T19:05:12  -    create-reached
                         tenant-created  not-reached  -                    -    -
                         ready           not-reached  -                    -    -

[ok][2022-01-13 19:05:38]

When I replace ncs:trigger-expr "post-action-status = 'create-reached'"; with 

ncs:trigger-expr "status = 'reached'"; it works fine
 
admin@ncs> show infrastructure multitenancy tenants tenant
infrastructure multitenancy tenants tenant foo
 plan-location /infrastructure/multitenancy/tenants/tenant[name='foo']
            BACK                                                            POST ACTION
TYPE  NAME  TRACK  GOAL  STATE           STATUS   WHEN                 ref  STATUS
--------------------------------------------------------------------------------------------
self  self  false  -     init            reached  2022-01-14T08:46:08  -    create-reached
                         tenant-created  reached  2022-01-14T08:46:08  -    -
                         ready           reached  2022-01-14T08:46:08  -    -

[ok][2022-01-14 08:46:17]
admin@ncs> show infrastructure multitenancy tenants tenant | display xpath
/infrastructure/multitenancy/tenants/tenant[name='foo']/plan-location /infrastructure/multitenancy/tenants/tenant[name='foo']
/infrastructure/multitenancy/tenants/tenant[name='foo']/plan/component[type='ncs:self'][name='self']/state[name='ncs:init']/status reached
/infrastructure/multitenancy/tenants/tenant[name='foo']/plan/component[type='ncs:self'][name='self']/state[name='ncs:init']/when 2022-01-14T08:46:08
/infrastructure/multitenancy/tenants/tenant[name='foo']/plan/component[type='ncs:self'][name='self']/state[name='ncs:init']/post-action-status create-reached
/infrastructure/multitenancy/tenants/tenant[name='foo']/plan/component[type='ncs:self'][name='self']/state[name='cfs:tenant-created']/status reached
Any idea what I am doing wrong? Thanks!

 

1 Reply 1

Alexander Stevenson
Cisco Employee
Cisco Employee

 

Hi @danielmorales7231,

There was a similardiscussion on here Nano services trigger not working as expected in 20 - Nano Services example. As you can see, they recommend adding 'ncs:post-action' post action to the trigger.

Hope this helps

Polls
AI-powered tools for network troubleshooting are likely to be part of everyone’s workflow sooner or later. What is the single biggest challenge or concern you see with adopting these tools in your organization?