cancel
Showing results for 
Search instead for 
Did you mean: 
cancel
623
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