Example - sonata-nfv/tng-sdk-sm GitHub Wiki

To create an FSM, run

tng-sm new -t fsm -n demo

This will create demo-fsm folder. Now, alter the demo-fsm/demo/demo.py file.

    def start_event(self, content):
        """
        This method handles a start event.
        """

        print(content['vnfd']['name'])
        print(content['vnfr']['name'])

        response = {'status': 'COMPLETED'}
        return response

Generate a VNFR based on your VNFD:

tng-sm generate -f demo_vnfd.yaml

Merge your VNFD and VNFR together in a single yaml file, in accordance with the input for an FSM start_event

---
vnfd: <vnfd dictionary>
vnfr: <vnfr dictionary>

Execute the start_event of your FSM

tng-sm execute -s demo-fsm -e start -p payload.yaml

Which should give you the following output, which you can now analyse to evaluate whether the test was successful or not

#######output from test event#######
INFO:son-sm-base:Starting specific manager with name: demo
INFO:son-sm-base:Starting specific manager with sfuuid: 
cnf1-no-sm
Traceback (most recent call last):
  File "/usr/local/lib/python3.5/dist-packages/tngsdksm-0.1-py3.5.egg/tngsdksm/execute.py", line 128, in _execute_sm
    met(payload)
  File "demo-fsm/demo/demo.py", line 139, in start_event
    print(content['vnfr']['name'])
KeyError: 'name'
####################################

In this case, the test is not successful, because the VNFR has no field name.