)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":10487,"name":"Kanagaraj Manickam","email":"mkr1481@gmail.com","username":"kanagarajm"},"change_message_id":"ab7bf282f434e09bef83cd8c8cad1f30a3ebb09d","unresolved":false,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Change-Id: If53081bc76a5436287b307538a1255c65fc71cb2"},{"line_number":10,"context_line":"Co-Authored-By: Bharath Thiruveedula\u003cbharath_ves@hotmail.com\u003e"},{"line_number":11,"context_line":"Partially-implements: blueprint nsd-support"},{"line_number":12,"context_line":"Depends-On: Iff51926ce9f3b96f83a51ef06b4b464e4696d777"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":16,"id":"ba5201f7_a457de00","line":11,"updated":"2017-01-11 01:07:55.000000000","message":"also, pls us implements tag instead.","commit_id":"ebbd50ba4ff83f69743debbc6a9231fdea19d17e"},{"author":{"_account_id":10487,"name":"Kanagaraj Manickam","email":"mkr1481@gmail.com","username":"kanagarajm"},"change_message_id":"ab7bf282f434e09bef83cd8c8cad1f30a3ebb09d","unresolved":false,"context_lines":[{"line_number":9,"context_line":"Change-Id: If53081bc76a5436287b307538a1255c65fc71cb2"},{"line_number":10,"context_line":"Co-Authored-By: Bharath Thiruveedula\u003cbharath_ves@hotmail.com\u003e"},{"line_number":11,"context_line":"Partially-implements: blueprint nsd-support"},{"line_number":12,"context_line":"Depends-On: Iff51926ce9f3b96f83a51ef06b4b464e4696d777"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":16,"id":"ba5201f7_644df671","line":12,"updated":"2017-01-11 01:07:55.000000000","message":"pls remove this line as its not required as log as it parent is same","commit_id":"ebbd50ba4ff83f69743debbc6a9231fdea19d17e"},{"author":{"_account_id":13380,"name":"Sridhar Ramaswamy","email":"srics.r@gmail.com","username":"srics-r"},"change_message_id":"44c1d36e77c9b8d1b35e9081eab786c6e9f8d654","unresolved":false,"context_lines":[{"line_number":5,"context_line":"CommitDate: 2017-01-16 23:06:41 +0530"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Implement NSD Support part 2"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Change-Id: If53081bc76a5436287b307538a1255c65fc71cb2"},{"line_number":10,"context_line":"Co-Authored-By: Bharath Thiruveedula\u003cbharath_ves@hotmail.com\u003e"},{"line_number":11,"context_line":"Partially-implements: blueprint nsd-support"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":21,"id":"7a3c09a3_8bcd2533","line":8,"updated":"2017-01-17 22:48:19.000000000","message":"Please add some details like, \n\nThis patchset adds mistral workflow, functional tests, sample templates and user guide for NSD","commit_id":"4fa6a94c0d64b2efc50b906396d739a0e9feac33"}],"doc/source/devref/nsd_usage_guide.rst":[{"author":{"_account_id":13380,"name":"Sridhar Ramaswamy","email":"srics.r@gmail.com","username":"srics-r"},"change_message_id":"cae6e9c52e1a9e0be6b212ba572b677181eff227","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":16,"id":"ba5201f7_4b2004b1","updated":"2017-01-11 00:40:25.000000000","message":"Add this new file to index.rst,\n\nhttps://github.com/openstack/tacker/blob/master/doc/source/index.rst","commit_id":"ebbd50ba4ff83f69743debbc6a9231fdea19d17e"},{"author":{"_account_id":18955,"name":"dharmendra","email":"dharmendra.kushwaha@gmail.com","username":"dharmendra"},"change_message_id":"b75e3949c75c3a46c056a6f78ab719bed87fcd0d","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":16,"id":"ba5201f7_450d0c3d","in_reply_to":"ba5201f7_4b2004b1","updated":"2017-01-16 11:00:47.000000000","message":"Done","commit_id":"ebbd50ba4ff83f69743debbc6a9231fdea19d17e"},{"author":{"_account_id":10487,"name":"Kanagaraj Manickam","email":"mkr1481@gmail.com","username":"kanagarajm"},"change_message_id":"ab7bf282f434e09bef83cd8c8cad1f30a3ebb09d","unresolved":false,"context_lines":[{"line_number":14,"context_line":".. _ref-nsd:"},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":17,"context_line":"NSD support in Tacker"},{"line_number":18,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"To enable dynamic composition of network services, NFV introduces Network"}],"source_content_type":"text/x-rst","patch_set":16,"id":"ba5201f7_e46806bd","line":17,"range":{"start_line":17,"start_character":11,"end_line":17,"end_character":21},"updated":"2017-01-11 01:07:55.000000000","message":"not required","commit_id":"ebbd50ba4ff83f69743debbc6a9231fdea19d17e"},{"author":{"_account_id":18955,"name":"dharmendra","email":"dharmendra.kushwaha@gmail.com","username":"dharmendra"},"change_message_id":"b75e3949c75c3a46c056a6f78ab719bed87fcd0d","unresolved":false,"context_lines":[{"line_number":14,"context_line":".. _ref-nsd:"},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":17,"context_line":"NSD support in Tacker"},{"line_number":18,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"To enable dynamic composition of network services, NFV introduces Network"}],"source_content_type":"text/x-rst","patch_set":16,"id":"ba5201f7_101d0062","line":17,"range":{"start_line":17,"start_character":11,"end_line":17,"end_character":21},"in_reply_to":"ba5201f7_e46806bd","updated":"2017-01-16 11:00:47.000000000","message":"Done","commit_id":"ebbd50ba4ff83f69743debbc6a9231fdea19d17e"},{"author":{"_account_id":13380,"name":"Sridhar Ramaswamy","email":"srics.r@gmail.com","username":"srics-r"},"change_message_id":"cae6e9c52e1a9e0be6b212ba572b677181eff227","unresolved":false,"context_lines":[{"line_number":27,"context_line":"Once OpenStack/Devstack along with Tacker has been successfully installed,"},{"line_number":28,"context_line":"deploy a sample VNFD templates such as the ones below."},{"line_number":29,"context_line":""},{"line_number":30,"context_line":".. code-block:: yaml"},{"line_number":31,"context_line":" tosca_definitions_version: tosca_simple_profile_for_nfv_1_0_0"},{"line_number":32,"context_line":" description: Demo example"},{"line_number":33,"context_line":" node_types:"},{"line_number":34,"context_line":"   tosca.nodes.nfv.VNF1:"},{"line_number":35,"context_line":"     requirements:"},{"line_number":36,"context_line":"       - virtualLink1:"},{"line_number":37,"context_line":"           type: tosca.nodes.nfv.VL"},{"line_number":38,"context_line":"           required: true"},{"line_number":39,"context_line":"       - virtualLink2:"},{"line_number":40,"context_line":"           type: tosca.nodes.nfv.VL"},{"line_number":41,"context_line":"           required: true"},{"line_number":42,"context_line":"     capabilities:"},{"line_number":43,"context_line":"       forwader1:"},{"line_number":44,"context_line":"         type: tosca.capabilities.nfv.Forwarder"},{"line_number":45,"context_line":"       forwader2:"},{"line_number":46,"context_line":"         type: tosca.capabilities.nfv.Forwarder"},{"line_number":47,"context_line":""},{"line_number":48,"context_line":" topology_template:"},{"line_number":49,"context_line":"   substitution_mappings:"},{"line_number":50,"context_line":"     node_type: tosca.nodes.nfv.VNF1"},{"line_number":51,"context_line":"     requirements:"},{"line_number":52,"context_line":"       virtualLink1: [CP11, virtualLink]"},{"line_number":53,"context_line":"       virtualLink2: [CP14, virtualLink]"},{"line_number":54,"context_line":"     capabilities:"},{"line_number":55,"context_line":"       forwarder1: [CP11, forwarder]"},{"line_number":56,"context_line":"       forwarder2: [CP14, forwarder]"},{"line_number":57,"context_line":"   node_templates:"},{"line_number":58,"context_line":"     VDU1:"},{"line_number":59,"context_line":"       type: tosca.nodes.nfv.VDU.Tacker"},{"line_number":60,"context_line":"       properties:"},{"line_number":61,"context_line":"         image: cirros-0.3.4-x86_64-uec"},{"line_number":62,"context_line":"         flavor: m1.tiny"},{"line_number":63,"context_line":"         availability_zone: nova"},{"line_number":64,"context_line":"         mgmt_driver: noop"},{"line_number":65,"context_line":"         config: |"},{"line_number":66,"context_line":"           param0: key1"},{"line_number":67,"context_line":"           param1: key2"},{"line_number":68,"context_line":"     CP11:"},{"line_number":69,"context_line":"       type: tosca.nodes.nfv.CP.Tacker"},{"line_number":70,"context_line":"       properties:"},{"line_number":71,"context_line":"         management: true"},{"line_number":72,"context_line":"         anti_spoofing_protection: false"},{"line_number":73,"context_line":"       requirements:"},{"line_number":74,"context_line":"         - virtualBinding:"},{"line_number":75,"context_line":"             node: VDU1"},{"line_number":76,"context_line":""},{"line_number":77,"context_line":"     VDU2:"},{"line_number":78,"context_line":"       type: tosca.nodes.nfv.VDU.Tacker"},{"line_number":79,"context_line":"       properties:"},{"line_number":80,"context_line":"         image: cirros-0.3.4-x86_64-uec"},{"line_number":81,"context_line":"         flavor: m1.medium"},{"line_number":82,"context_line":"         availability_zone: nova"},{"line_number":83,"context_line":"         mgmt_driver: noop"},{"line_number":84,"context_line":"         config: |"},{"line_number":85,"context_line":"           param0: key1"},{"line_number":86,"context_line":"           param1: key2"},{"line_number":87,"context_line":"     CP13:"},{"line_number":88,"context_line":"       type: tosca.nodes.nfv.CP.Tacker"},{"line_number":89,"context_line":"       properties:"},{"line_number":90,"context_line":"         management: true"},{"line_number":91,"context_line":"         anti_spoofing_protection: false"},{"line_number":92,"context_line":"       requirements:"},{"line_number":93,"context_line":"         - virtualLink:"},{"line_number":94,"context_line":"             node: VL1"},{"line_number":95,"context_line":"         - virtualBinding:"},{"line_number":96,"context_line":"             node: VDU2"},{"line_number":97,"context_line":"     CP14:"},{"line_number":98,"context_line":"       type: tosca.nodes.nfv.CP.Tacker"},{"line_number":99,"context_line":"       properties:"},{"line_number":100,"context_line":"         management: true"},{"line_number":101,"context_line":"         anti_spoofing_protection: false"},{"line_number":102,"context_line":"       requirements:"},{"line_number":103,"context_line":"         - virtualBinding:"},{"line_number":104,"context_line":"             node: VDU2"},{"line_number":105,"context_line":"     VL1:"},{"line_number":106,"context_line":"       type: tosca.nodes.nfv.VL"},{"line_number":107,"context_line":"       properties:"},{"line_number":108,"context_line":"         network_name: net_mgmt"},{"line_number":109,"context_line":"         vendor: Tacker"},{"line_number":110,"context_line":"     VL2:"},{"line_number":111,"context_line":"       type: tosca.nodes.nfv.VL"},{"line_number":112,"context_line":"       properties:"},{"line_number":113,"context_line":"         network_name: net0"},{"line_number":114,"context_line":"         vendor: Tacker "},{"line_number":115,"context_line":"::"},{"line_number":116,"context_line":"  tacker vnfd-create --vnfd-file vnfd1.yaml VNFD1 "},{"line_number":117,"context_line":""},{"line_number":118,"context_line":"Another VNFD named vnfd2.yaml as below:"},{"line_number":119,"context_line":".. code-block:: yaml"},{"line_number":120,"context_line":"  tosca_definitions_version: tosca_simple_profile_for_nfv_1_0_0"},{"line_number":121,"context_line":"  description: Demo example"},{"line_number":122,"context_line":""},{"line_number":123,"context_line":"  node_types:"},{"line_number":124,"context_line":"    tosca.nodes.nfv.VNF2:"},{"line_number":125,"context_line":"      capabilities:"},{"line_number":126,"context_line":"        forwarder1:"},{"line_number":127,"context_line":"          type: tosca.capabilities.nfv.Forwarder"},{"line_number":128,"context_line":"  topology_template:"},{"line_number":129,"context_line":"    substitution_mappings:"},{"line_number":130,"context_line":"      node_type: tosca.nodes.nfv.VNF2"},{"line_number":131,"context_line":"      capabilities:"},{"line_number":132,"context_line":"        forwarder1: [CP21, forwarder]"},{"line_number":133,"context_line":"    node_templates:"},{"line_number":134,"context_line":"      VDU1:"},{"line_number":135,"context_line":"        type: tosca.nodes.nfv.VDU.Tacker"},{"line_number":136,"context_line":"        properties:"},{"line_number":137,"context_line":"          image: cirros-0.3.4-x86_64-uec"},{"line_number":138,"context_line":"          flavor: m1.tiny"},{"line_number":139,"context_line":"          availability_zone: nova"},{"line_number":140,"context_line":"          mgmt_driver: noop"},{"line_number":141,"context_line":"          config: |"},{"line_number":142,"context_line":"            param0: key1"},{"line_number":143,"context_line":"            param1: key2"},{"line_number":144,"context_line":"      CP21:"},{"line_number":145,"context_line":"        type: tosca.nodes.nfv.CP.Tacker"},{"line_number":146,"context_line":"        properties:"},{"line_number":147,"context_line":"          management: true"},{"line_number":148,"context_line":"          anti_spoofing_protection: false"},{"line_number":149,"context_line":"        requirements:"},{"line_number":150,"context_line":"          - virtualLink:"},{"line_number":151,"context_line":"              node: VL1"},{"line_number":152,"context_line":"          - virtualBinding:"},{"line_number":153,"context_line":"              node: VDU1"},{"line_number":154,"context_line":"      VDU2:"},{"line_number":155,"context_line":"        type: tosca.nodes.nfv.VDU.Tacker"},{"line_number":156,"context_line":"        properties:"},{"line_number":157,"context_line":"          image: cirros-0.3.4-x86_64-uec"},{"line_number":158,"context_line":"          flavor: m1.medium"},{"line_number":159,"context_line":"          availability_zone: nova"},{"line_number":160,"context_line":"          mgmt_driver: noop"},{"line_number":161,"context_line":"      CP22:"},{"line_number":162,"context_line":"        type: tosca.nodes.nfv.CP.Tacker"},{"line_number":163,"context_line":"        properties:"},{"line_number":164,"context_line":"          management: true"},{"line_number":165,"context_line":"          anti_spoofing_protection: false"},{"line_number":166,"context_line":"        requirements:"},{"line_number":167,"context_line":"          - virtualLink:"},{"line_number":168,"context_line":"              node: VL2"},{"line_number":169,"context_line":"          - virtualBinding:"},{"line_number":170,"context_line":"              node: VDU2"},{"line_number":171,"context_line":"      VL1:"},{"line_number":172,"context_line":"        type: tosca.nodes.nfv.VL"},{"line_number":173,"context_line":"        properties:"},{"line_number":174,"context_line":"          network_name: net_mgmt"},{"line_number":175,"context_line":"          vendor: Tacker"},{"line_number":176,"context_line":"      VL2:"},{"line_number":177,"context_line":"        type: tosca.nodes.nfv.VL"},{"line_number":178,"context_line":"        properties:"},{"line_number":179,"context_line":"          network_name: net0"},{"line_number":180,"context_line":"          vendor: Tacker"},{"line_number":181,"context_line":"::"},{"line_number":182,"context_line":"  tacker vnfd-create --vnfd-file vnfd2.yaml VNFD2"},{"line_number":183,"context_line":""}],"source_content_type":"text/x-rst","patch_set":16,"id":"ba5201f7_060c313a","line":180,"range":{"start_line":30,"start_character":0,"end_line":180,"end_character":24},"updated":"2017-01-11 00:40:25.000000000","message":"IMO these two VNFD templates takes up a huge portion of the initial section of NS user guide. I\u0027d suggest you to move them to a Reference section below and bring up the NSD template, VNFD and NS CLI commands to the top of this doc.","commit_id":"ebbd50ba4ff83f69743debbc6a9231fdea19d17e"},{"author":{"_account_id":18955,"name":"dharmendra","email":"dharmendra.kushwaha@gmail.com","username":"dharmendra"},"change_message_id":"b75e3949c75c3a46c056a6f78ab719bed87fcd0d","unresolved":false,"context_lines":[{"line_number":27,"context_line":"Once OpenStack/Devstack along with Tacker has been successfully installed,"},{"line_number":28,"context_line":"deploy a sample VNFD templates such as the ones below."},{"line_number":29,"context_line":""},{"line_number":30,"context_line":".. code-block:: yaml"},{"line_number":31,"context_line":" tosca_definitions_version: tosca_simple_profile_for_nfv_1_0_0"},{"line_number":32,"context_line":" description: Demo example"},{"line_number":33,"context_line":" node_types:"},{"line_number":34,"context_line":"   tosca.nodes.nfv.VNF1:"},{"line_number":35,"context_line":"     requirements:"},{"line_number":36,"context_line":"       - virtualLink1:"},{"line_number":37,"context_line":"           type: tosca.nodes.nfv.VL"},{"line_number":38,"context_line":"           required: true"},{"line_number":39,"context_line":"       - virtualLink2:"},{"line_number":40,"context_line":"           type: tosca.nodes.nfv.VL"},{"line_number":41,"context_line":"           required: true"},{"line_number":42,"context_line":"     capabilities:"},{"line_number":43,"context_line":"       forwader1:"},{"line_number":44,"context_line":"         type: tosca.capabilities.nfv.Forwarder"},{"line_number":45,"context_line":"       forwader2:"},{"line_number":46,"context_line":"         type: tosca.capabilities.nfv.Forwarder"},{"line_number":47,"context_line":""},{"line_number":48,"context_line":" topology_template:"},{"line_number":49,"context_line":"   substitution_mappings:"},{"line_number":50,"context_line":"     node_type: tosca.nodes.nfv.VNF1"},{"line_number":51,"context_line":"     requirements:"},{"line_number":52,"context_line":"       virtualLink1: [CP11, virtualLink]"},{"line_number":53,"context_line":"       virtualLink2: [CP14, virtualLink]"},{"line_number":54,"context_line":"     capabilities:"},{"line_number":55,"context_line":"       forwarder1: [CP11, forwarder]"},{"line_number":56,"context_line":"       forwarder2: [CP14, forwarder]"},{"line_number":57,"context_line":"   node_templates:"},{"line_number":58,"context_line":"     VDU1:"},{"line_number":59,"context_line":"       type: tosca.nodes.nfv.VDU.Tacker"},{"line_number":60,"context_line":"       properties:"},{"line_number":61,"context_line":"         image: cirros-0.3.4-x86_64-uec"},{"line_number":62,"context_line":"         flavor: m1.tiny"},{"line_number":63,"context_line":"         availability_zone: nova"},{"line_number":64,"context_line":"         mgmt_driver: noop"},{"line_number":65,"context_line":"         config: |"},{"line_number":66,"context_line":"           param0: key1"},{"line_number":67,"context_line":"           param1: key2"},{"line_number":68,"context_line":"     CP11:"},{"line_number":69,"context_line":"       type: tosca.nodes.nfv.CP.Tacker"},{"line_number":70,"context_line":"       properties:"},{"line_number":71,"context_line":"         management: true"},{"line_number":72,"context_line":"         anti_spoofing_protection: false"},{"line_number":73,"context_line":"       requirements:"},{"line_number":74,"context_line":"         - virtualBinding:"},{"line_number":75,"context_line":"             node: VDU1"},{"line_number":76,"context_line":""},{"line_number":77,"context_line":"     VDU2:"},{"line_number":78,"context_line":"       type: tosca.nodes.nfv.VDU.Tacker"},{"line_number":79,"context_line":"       properties:"},{"line_number":80,"context_line":"         image: cirros-0.3.4-x86_64-uec"},{"line_number":81,"context_line":"         flavor: m1.medium"},{"line_number":82,"context_line":"         availability_zone: nova"},{"line_number":83,"context_line":"         mgmt_driver: noop"},{"line_number":84,"context_line":"         config: |"},{"line_number":85,"context_line":"           param0: key1"},{"line_number":86,"context_line":"           param1: key2"},{"line_number":87,"context_line":"     CP13:"},{"line_number":88,"context_line":"       type: tosca.nodes.nfv.CP.Tacker"},{"line_number":89,"context_line":"       properties:"},{"line_number":90,"context_line":"         management: true"},{"line_number":91,"context_line":"         anti_spoofing_protection: false"},{"line_number":92,"context_line":"       requirements:"},{"line_number":93,"context_line":"         - virtualLink:"},{"line_number":94,"context_line":"             node: VL1"},{"line_number":95,"context_line":"         - virtualBinding:"},{"line_number":96,"context_line":"             node: VDU2"},{"line_number":97,"context_line":"     CP14:"},{"line_number":98,"context_line":"       type: tosca.nodes.nfv.CP.Tacker"},{"line_number":99,"context_line":"       properties:"},{"line_number":100,"context_line":"         management: true"},{"line_number":101,"context_line":"         anti_spoofing_protection: false"},{"line_number":102,"context_line":"       requirements:"},{"line_number":103,"context_line":"         - virtualBinding:"},{"line_number":104,"context_line":"             node: VDU2"},{"line_number":105,"context_line":"     VL1:"},{"line_number":106,"context_line":"       type: tosca.nodes.nfv.VL"},{"line_number":107,"context_line":"       properties:"},{"line_number":108,"context_line":"         network_name: net_mgmt"},{"line_number":109,"context_line":"         vendor: Tacker"},{"line_number":110,"context_line":"     VL2:"},{"line_number":111,"context_line":"       type: tosca.nodes.nfv.VL"},{"line_number":112,"context_line":"       properties:"},{"line_number":113,"context_line":"         network_name: net0"},{"line_number":114,"context_line":"         vendor: Tacker "},{"line_number":115,"context_line":"::"},{"line_number":116,"context_line":"  tacker vnfd-create --vnfd-file vnfd1.yaml VNFD1 "},{"line_number":117,"context_line":""},{"line_number":118,"context_line":"Another VNFD named vnfd2.yaml as below:"},{"line_number":119,"context_line":".. code-block:: yaml"},{"line_number":120,"context_line":"  tosca_definitions_version: tosca_simple_profile_for_nfv_1_0_0"},{"line_number":121,"context_line":"  description: Demo example"},{"line_number":122,"context_line":""},{"line_number":123,"context_line":"  node_types:"},{"line_number":124,"context_line":"    tosca.nodes.nfv.VNF2:"},{"line_number":125,"context_line":"      capabilities:"},{"line_number":126,"context_line":"        forwarder1:"},{"line_number":127,"context_line":"          type: tosca.capabilities.nfv.Forwarder"},{"line_number":128,"context_line":"  topology_template:"},{"line_number":129,"context_line":"    substitution_mappings:"},{"line_number":130,"context_line":"      node_type: tosca.nodes.nfv.VNF2"},{"line_number":131,"context_line":"      capabilities:"},{"line_number":132,"context_line":"        forwarder1: [CP21, forwarder]"},{"line_number":133,"context_line":"    node_templates:"},{"line_number":134,"context_line":"      VDU1:"},{"line_number":135,"context_line":"        type: tosca.nodes.nfv.VDU.Tacker"},{"line_number":136,"context_line":"        properties:"},{"line_number":137,"context_line":"          image: cirros-0.3.4-x86_64-uec"},{"line_number":138,"context_line":"          flavor: m1.tiny"},{"line_number":139,"context_line":"          availability_zone: nova"},{"line_number":140,"context_line":"          mgmt_driver: noop"},{"line_number":141,"context_line":"          config: |"},{"line_number":142,"context_line":"            param0: key1"},{"line_number":143,"context_line":"            param1: key2"},{"line_number":144,"context_line":"      CP21:"},{"line_number":145,"context_line":"        type: tosca.nodes.nfv.CP.Tacker"},{"line_number":146,"context_line":"        properties:"},{"line_number":147,"context_line":"          management: true"},{"line_number":148,"context_line":"          anti_spoofing_protection: false"},{"line_number":149,"context_line":"        requirements:"},{"line_number":150,"context_line":"          - virtualLink:"},{"line_number":151,"context_line":"              node: VL1"},{"line_number":152,"context_line":"          - virtualBinding:"},{"line_number":153,"context_line":"              node: VDU1"},{"line_number":154,"context_line":"      VDU2:"},{"line_number":155,"context_line":"        type: tosca.nodes.nfv.VDU.Tacker"},{"line_number":156,"context_line":"        properties:"},{"line_number":157,"context_line":"          image: cirros-0.3.4-x86_64-uec"},{"line_number":158,"context_line":"          flavor: m1.medium"},{"line_number":159,"context_line":"          availability_zone: nova"},{"line_number":160,"context_line":"          mgmt_driver: noop"},{"line_number":161,"context_line":"      CP22:"},{"line_number":162,"context_line":"        type: tosca.nodes.nfv.CP.Tacker"},{"line_number":163,"context_line":"        properties:"},{"line_number":164,"context_line":"          management: true"},{"line_number":165,"context_line":"          anti_spoofing_protection: false"},{"line_number":166,"context_line":"        requirements:"},{"line_number":167,"context_line":"          - virtualLink:"},{"line_number":168,"context_line":"              node: VL2"},{"line_number":169,"context_line":"          - virtualBinding:"},{"line_number":170,"context_line":"              node: VDU2"},{"line_number":171,"context_line":"      VL1:"},{"line_number":172,"context_line":"        type: tosca.nodes.nfv.VL"},{"line_number":173,"context_line":"        properties:"},{"line_number":174,"context_line":"          network_name: net_mgmt"},{"line_number":175,"context_line":"          vendor: Tacker"},{"line_number":176,"context_line":"      VL2:"},{"line_number":177,"context_line":"        type: tosca.nodes.nfv.VL"},{"line_number":178,"context_line":"        properties:"},{"line_number":179,"context_line":"          network_name: net0"},{"line_number":180,"context_line":"          vendor: Tacker"},{"line_number":181,"context_line":"::"},{"line_number":182,"context_line":"  tacker vnfd-create --vnfd-file vnfd2.yaml VNFD2"},{"line_number":183,"context_line":""}],"source_content_type":"text/x-rst","patch_set":16,"id":"ba5201f7_90ee50eb","line":180,"range":{"start_line":30,"start_character":0,"end_line":180,"end_character":24},"in_reply_to":"ba5201f7_060c313a","updated":"2017-01-16 11:00:47.000000000","message":"Done","commit_id":"ebbd50ba4ff83f69743debbc6a9231fdea19d17e"},{"author":{"_account_id":10487,"name":"Kanagaraj Manickam","email":"mkr1481@gmail.com","username":"kanagarajm"},"change_message_id":"ab7bf282f434e09bef83cd8c8cad1f30a3ebb09d","unresolved":false,"context_lines":[{"line_number":27,"context_line":"Once OpenStack/Devstack along with Tacker has been successfully installed,"},{"line_number":28,"context_line":"deploy a sample VNFD templates such as the ones below."},{"line_number":29,"context_line":""},{"line_number":30,"context_line":".. code-block:: yaml"},{"line_number":31,"context_line":" tosca_definitions_version: tosca_simple_profile_for_nfv_1_0_0"},{"line_number":32,"context_line":" description: Demo example"},{"line_number":33,"context_line":" node_types:"},{"line_number":34,"context_line":"   tosca.nodes.nfv.VNF1:"},{"line_number":35,"context_line":"     requirements:"},{"line_number":36,"context_line":"       - virtualLink1:"},{"line_number":37,"context_line":"           type: tosca.nodes.nfv.VL"},{"line_number":38,"context_line":"           required: true"},{"line_number":39,"context_line":"       - virtualLink2:"},{"line_number":40,"context_line":"           type: tosca.nodes.nfv.VL"},{"line_number":41,"context_line":"           required: true"},{"line_number":42,"context_line":"     capabilities:"},{"line_number":43,"context_line":"       forwader1:"},{"line_number":44,"context_line":"         type: tosca.capabilities.nfv.Forwarder"},{"line_number":45,"context_line":"       forwader2:"},{"line_number":46,"context_line":"         type: tosca.capabilities.nfv.Forwarder"},{"line_number":47,"context_line":""},{"line_number":48,"context_line":" topology_template:"},{"line_number":49,"context_line":"   substitution_mappings:"},{"line_number":50,"context_line":"     node_type: tosca.nodes.nfv.VNF1"},{"line_number":51,"context_line":"     requirements:"},{"line_number":52,"context_line":"       virtualLink1: [CP11, virtualLink]"},{"line_number":53,"context_line":"       virtualLink2: [CP14, virtualLink]"},{"line_number":54,"context_line":"     capabilities:"},{"line_number":55,"context_line":"       forwarder1: [CP11, forwarder]"},{"line_number":56,"context_line":"       forwarder2: [CP14, forwarder]"},{"line_number":57,"context_line":"   node_templates:"},{"line_number":58,"context_line":"     VDU1:"},{"line_number":59,"context_line":"       type: tosca.nodes.nfv.VDU.Tacker"},{"line_number":60,"context_line":"       properties:"},{"line_number":61,"context_line":"         image: cirros-0.3.4-x86_64-uec"},{"line_number":62,"context_line":"         flavor: m1.tiny"},{"line_number":63,"context_line":"         availability_zone: nova"},{"line_number":64,"context_line":"         mgmt_driver: noop"},{"line_number":65,"context_line":"         config: |"},{"line_number":66,"context_line":"           param0: key1"},{"line_number":67,"context_line":"           param1: key2"},{"line_number":68,"context_line":"     CP11:"},{"line_number":69,"context_line":"       type: tosca.nodes.nfv.CP.Tacker"},{"line_number":70,"context_line":"       properties:"},{"line_number":71,"context_line":"         management: true"},{"line_number":72,"context_line":"         anti_spoofing_protection: false"},{"line_number":73,"context_line":"       requirements:"},{"line_number":74,"context_line":"         - virtualBinding:"},{"line_number":75,"context_line":"             node: VDU1"},{"line_number":76,"context_line":""},{"line_number":77,"context_line":"     VDU2:"},{"line_number":78,"context_line":"       type: tosca.nodes.nfv.VDU.Tacker"},{"line_number":79,"context_line":"       properties:"},{"line_number":80,"context_line":"         image: cirros-0.3.4-x86_64-uec"},{"line_number":81,"context_line":"         flavor: m1.medium"},{"line_number":82,"context_line":"         availability_zone: nova"},{"line_number":83,"context_line":"         mgmt_driver: noop"},{"line_number":84,"context_line":"         config: |"},{"line_number":85,"context_line":"           param0: key1"},{"line_number":86,"context_line":"           param1: key2"},{"line_number":87,"context_line":"     CP13:"},{"line_number":88,"context_line":"       type: tosca.nodes.nfv.CP.Tacker"},{"line_number":89,"context_line":"       properties:"},{"line_number":90,"context_line":"         management: true"},{"line_number":91,"context_line":"         anti_spoofing_protection: false"},{"line_number":92,"context_line":"       requirements:"},{"line_number":93,"context_line":"         - virtualLink:"},{"line_number":94,"context_line":"             node: VL1"},{"line_number":95,"context_line":"         - virtualBinding:"},{"line_number":96,"context_line":"             node: VDU2"},{"line_number":97,"context_line":"     CP14:"},{"line_number":98,"context_line":"       type: tosca.nodes.nfv.CP.Tacker"},{"line_number":99,"context_line":"       properties:"},{"line_number":100,"context_line":"         management: true"},{"line_number":101,"context_line":"         anti_spoofing_protection: false"},{"line_number":102,"context_line":"       requirements:"},{"line_number":103,"context_line":"         - virtualBinding:"},{"line_number":104,"context_line":"             node: VDU2"},{"line_number":105,"context_line":"     VL1:"},{"line_number":106,"context_line":"       type: tosca.nodes.nfv.VL"},{"line_number":107,"context_line":"       properties:"},{"line_number":108,"context_line":"         network_name: net_mgmt"},{"line_number":109,"context_line":"         vendor: Tacker"},{"line_number":110,"context_line":"     VL2:"},{"line_number":111,"context_line":"       type: tosca.nodes.nfv.VL"},{"line_number":112,"context_line":"       properties:"},{"line_number":113,"context_line":"         network_name: net0"},{"line_number":114,"context_line":"         vendor: Tacker "},{"line_number":115,"context_line":"::"},{"line_number":116,"context_line":"  tacker vnfd-create --vnfd-file vnfd1.yaml VNFD1 "},{"line_number":117,"context_line":""},{"line_number":118,"context_line":"Another VNFD named vnfd2.yaml as below:"},{"line_number":119,"context_line":".. code-block:: yaml"},{"line_number":120,"context_line":"  tosca_definitions_version: tosca_simple_profile_for_nfv_1_0_0"},{"line_number":121,"context_line":"  description: Demo example"},{"line_number":122,"context_line":""},{"line_number":123,"context_line":"  node_types:"},{"line_number":124,"context_line":"    tosca.nodes.nfv.VNF2:"},{"line_number":125,"context_line":"      capabilities:"},{"line_number":126,"context_line":"        forwarder1:"},{"line_number":127,"context_line":"          type: tosca.capabilities.nfv.Forwarder"},{"line_number":128,"context_line":"  topology_template:"},{"line_number":129,"context_line":"    substitution_mappings:"},{"line_number":130,"context_line":"      node_type: tosca.nodes.nfv.VNF2"},{"line_number":131,"context_line":"      capabilities:"},{"line_number":132,"context_line":"        forwarder1: [CP21, forwarder]"},{"line_number":133,"context_line":"    node_templates:"},{"line_number":134,"context_line":"      VDU1:"},{"line_number":135,"context_line":"        type: tosca.nodes.nfv.VDU.Tacker"},{"line_number":136,"context_line":"        properties:"},{"line_number":137,"context_line":"          image: cirros-0.3.4-x86_64-uec"},{"line_number":138,"context_line":"          flavor: m1.tiny"},{"line_number":139,"context_line":"          availability_zone: nova"},{"line_number":140,"context_line":"          mgmt_driver: noop"},{"line_number":141,"context_line":"          config: |"},{"line_number":142,"context_line":"            param0: key1"},{"line_number":143,"context_line":"            param1: key2"},{"line_number":144,"context_line":"      CP21:"},{"line_number":145,"context_line":"        type: tosca.nodes.nfv.CP.Tacker"},{"line_number":146,"context_line":"        properties:"},{"line_number":147,"context_line":"          management: true"},{"line_number":148,"context_line":"          anti_spoofing_protection: false"},{"line_number":149,"context_line":"        requirements:"},{"line_number":150,"context_line":"          - virtualLink:"},{"line_number":151,"context_line":"              node: VL1"},{"line_number":152,"context_line":"          - virtualBinding:"},{"line_number":153,"context_line":"              node: VDU1"},{"line_number":154,"context_line":"      VDU2:"},{"line_number":155,"context_line":"        type: tosca.nodes.nfv.VDU.Tacker"},{"line_number":156,"context_line":"        properties:"},{"line_number":157,"context_line":"          image: cirros-0.3.4-x86_64-uec"},{"line_number":158,"context_line":"          flavor: m1.medium"},{"line_number":159,"context_line":"          availability_zone: nova"},{"line_number":160,"context_line":"          mgmt_driver: noop"},{"line_number":161,"context_line":"      CP22:"},{"line_number":162,"context_line":"        type: tosca.nodes.nfv.CP.Tacker"},{"line_number":163,"context_line":"        properties:"},{"line_number":164,"context_line":"          management: true"},{"line_number":165,"context_line":"          anti_spoofing_protection: false"},{"line_number":166,"context_line":"        requirements:"},{"line_number":167,"context_line":"          - virtualLink:"},{"line_number":168,"context_line":"              node: VL2"},{"line_number":169,"context_line":"          - virtualBinding:"},{"line_number":170,"context_line":"              node: VDU2"},{"line_number":171,"context_line":"      VL1:"},{"line_number":172,"context_line":"        type: tosca.nodes.nfv.VL"},{"line_number":173,"context_line":"        properties:"},{"line_number":174,"context_line":"          network_name: net_mgmt"},{"line_number":175,"context_line":"          vendor: Tacker"},{"line_number":176,"context_line":"      VL2:"},{"line_number":177,"context_line":"        type: tosca.nodes.nfv.VL"},{"line_number":178,"context_line":"        properties:"},{"line_number":179,"context_line":"          network_name: net0"},{"line_number":180,"context_line":"          vendor: Tacker"},{"line_number":181,"context_line":"::"},{"line_number":182,"context_line":"  tacker vnfd-create --vnfd-file vnfd2.yaml VNFD2"},{"line_number":183,"context_line":""}],"source_content_type":"text/x-rst","patch_set":16,"id":"ba5201f7_04ab4ad7","line":180,"range":{"start_line":30,"start_character":0,"end_line":180,"end_character":24},"in_reply_to":"ba5201f7_060c313a","updated":"2017-01-11 01:07:55.000000000","message":"yes, also as part of impl, you would be adding the samples and pls provide a link to it","commit_id":"ebbd50ba4ff83f69743debbc6a9231fdea19d17e"},{"author":{"_account_id":13380,"name":"Sridhar Ramaswamy","email":"srics.r@gmail.com","username":"srics-r"},"change_message_id":"44c1d36e77c9b8d1b35e9081eab786c6e9f8d654","unresolved":false,"context_lines":[{"line_number":14,"context_line":".. _ref-nsd:"},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":17,"context_line":"NSD support"},{"line_number":18,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"To enable dynamic composition of network services, NFV introduces Network"}],"source_content_type":"text/x-rst","patch_set":21,"id":"7a3c09a3_ab9e6104","line":17,"range":{"start_line":17,"start_character":0,"end_line":17,"end_character":11},"updated":"2017-01-17 22:48:19.000000000","message":"Expand.\n\nOrchestrating VNFs using Network Services Descriptor (NSD)","commit_id":"4fa6a94c0d64b2efc50b906396d739a0e9feac33"},{"author":{"_account_id":13380,"name":"Sridhar Ramaswamy","email":"srics.r@gmail.com","username":"srics-r"},"change_message_id":"44c1d36e77c9b8d1b35e9081eab786c6e9f8d654","unresolved":false,"context_lines":[{"line_number":17,"context_line":"NSD support"},{"line_number":18,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"To enable dynamic composition of network services, NFV introduces Network"},{"line_number":21,"context_line":"Service Descriptors (NSDs) that specify the network service to be created."},{"line_number":22,"context_line":"This usage guide describes lifecycle of Network service descriptors and"},{"line_number":23,"context_line":"services."}],"source_content_type":"text/x-rst","patch_set":21,"id":"7a3c09a3_4b7c1db5","line":20,"range":{"start_line":20,"start_character":0,"end_line":20,"end_character":55},"updated":"2017-01-17 22:48:19.000000000","message":"Suggest something like ...\n\nTo enable dynamic network services composition using a collection VNFs, Tacker introduces...","commit_id":"4fa6a94c0d64b2efc50b906396d739a0e9feac33"},{"author":{"_account_id":13380,"name":"Sridhar Ramaswamy","email":"srics.r@gmail.com","username":"srics-r"},"change_message_id":"44c1d36e77c9b8d1b35e9081eab786c6e9f8d654","unresolved":false,"context_lines":[{"line_number":25,"context_line":"Creating the NSD"},{"line_number":26,"context_line":"~~~~~~~~~~~~~~~~"},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"Once OpenStack/Devstack along with Tacker has been successfully installed,"},{"line_number":29,"context_line":"deploy a sample VNFD templates using vnf1.yaml and vnf2.yaml as mentioned in"},{"line_number":30,"context_line":"reference section."},{"line_number":31,"context_line":""}],"source_content_type":"text/x-rst","patch_set":21,"id":"7a3c09a3_0b5db546","line":28,"range":{"start_line":28,"start_character":15,"end_line":28,"end_character":23},"updated":"2017-01-17 22:48:19.000000000","message":"remove reference to Devstack.","commit_id":"4fa6a94c0d64b2efc50b906396d739a0e9feac33"},{"author":{"_account_id":2874,"name":"yong sheng gong","email":"gong.yongsheng@99cloud.net","username":"gongysh"},"change_message_id":"de182782599c3456b2c3f432594cd2fd11e5829b","unresolved":false,"context_lines":[{"line_number":43,"context_line":"      - VNFD1"},{"line_number":44,"context_line":"      - VNFD2"},{"line_number":45,"context_line":"    topology_template:"},{"line_number":46,"context_line":"      inputs:"},{"line_number":47,"context_line":"        vl1_name:"},{"line_number":48,"context_line":"          type: string"},{"line_number":49,"context_line":"          description: name of VL1 virtualink"},{"line_number":50,"context_line":"          default: net_mgmt"},{"line_number":51,"context_line":"        vl2_name:"},{"line_number":52,"context_line":"          type: string"},{"line_number":53,"context_line":"          description: name of VL2 virtualink"},{"line_number":54,"context_line":"          default: net0"},{"line_number":55,"context_line":""},{"line_number":56,"context_line":"      node_templates:"},{"line_number":57,"context_line":"        VNF1:"}],"source_content_type":"text/x-rst","patch_set":22,"id":"5a3905b3_6220dcf8","line":54,"range":{"start_line":46,"start_character":0,"end_line":54,"end_character":23},"updated":"2017-01-19 07:02:45.000000000","message":"They are not used at all.","commit_id":"88beffe37ae90a266e7cda4e0102c7666ed13dbd"},{"author":{"_account_id":18955,"name":"dharmendra","email":"dharmendra.kushwaha@gmail.com","username":"dharmendra"},"change_message_id":"0db235ec8a4e388a580a571adafa3b5b3fdc104c","unresolved":false,"context_lines":[{"line_number":43,"context_line":"      - VNFD1"},{"line_number":44,"context_line":"      - VNFD2"},{"line_number":45,"context_line":"    topology_template:"},{"line_number":46,"context_line":"      inputs:"},{"line_number":47,"context_line":"        vl1_name:"},{"line_number":48,"context_line":"          type: string"},{"line_number":49,"context_line":"          description: name of VL1 virtualink"},{"line_number":50,"context_line":"          default: net_mgmt"},{"line_number":51,"context_line":"        vl2_name:"},{"line_number":52,"context_line":"          type: string"},{"line_number":53,"context_line":"          description: name of VL2 virtualink"},{"line_number":54,"context_line":"          default: net0"},{"line_number":55,"context_line":""},{"line_number":56,"context_line":"      node_templates:"},{"line_number":57,"context_line":"        VNF1:"}],"source_content_type":"text/x-rst","patch_set":22,"id":"5a3905b3_99e6e3b2","line":54,"range":{"start_line":46,"start_character":0,"end_line":54,"end_character":23},"in_reply_to":"5a3905b3_6220dcf8","updated":"2017-01-20 02:44:17.000000000","message":"Done","commit_id":"88beffe37ae90a266e7cda4e0102c7666ed13dbd"},{"author":{"_account_id":2874,"name":"yong sheng gong","email":"gong.yongsheng@99cloud.net","username":"gongysh"},"change_message_id":"de182782599c3456b2c3f432594cd2fd11e5829b","unresolved":false,"context_lines":[{"line_number":57,"context_line":"        VNF1:"},{"line_number":58,"context_line":"          type: tosca.nodes.nfv.VNF1"},{"line_number":59,"context_line":"          requirements:"},{"line_number":60,"context_line":"            - virtualLink1: VL1"},{"line_number":61,"context_line":"            - virtualLink2: VL2"},{"line_number":62,"context_line":"        VNF2:"},{"line_number":63,"context_line":"          type: tosca.nodes.nfv.VNF2"},{"line_number":64,"context_line":"        VL1:"}],"source_content_type":"text/x-rst","patch_set":22,"id":"5a3905b3_22f8947c","line":61,"range":{"start_line":60,"start_character":0,"end_line":61,"end_character":31},"updated":"2017-01-19 07:02:45.000000000","message":"to add some explanation below: these are substituting the virtuallinks of VNF1 .","commit_id":"88beffe37ae90a266e7cda4e0102c7666ed13dbd"},{"author":{"_account_id":18955,"name":"dharmendra","email":"dharmendra.kushwaha@gmail.com","username":"dharmendra"},"change_message_id":"0db235ec8a4e388a580a571adafa3b5b3fdc104c","unresolved":false,"context_lines":[{"line_number":57,"context_line":"        VNF1:"},{"line_number":58,"context_line":"          type: tosca.nodes.nfv.VNF1"},{"line_number":59,"context_line":"          requirements:"},{"line_number":60,"context_line":"            - virtualLink1: VL1"},{"line_number":61,"context_line":"            - virtualLink2: VL2"},{"line_number":62,"context_line":"        VNF2:"},{"line_number":63,"context_line":"          type: tosca.nodes.nfv.VNF2"},{"line_number":64,"context_line":"        VL1:"}],"source_content_type":"text/x-rst","patch_set":22,"id":"5a3905b3_b9e1df9c","line":61,"range":{"start_line":60,"start_character":0,"end_line":61,"end_character":31},"in_reply_to":"5a3905b3_22f8947c","updated":"2017-01-20 02:44:17.000000000","message":"Done","commit_id":"88beffe37ae90a266e7cda4e0102c7666ed13dbd"},{"author":{"_account_id":2874,"name":"yong sheng gong","email":"gong.yongsheng@99cloud.net","username":"gongysh"},"change_message_id":"de182782599c3456b2c3f432594cd2fd11e5829b","unresolved":false,"context_lines":[{"line_number":64,"context_line":"        VL1:"},{"line_number":65,"context_line":"          type: tosca.nodes.nfv.VL"},{"line_number":66,"context_line":"          properties:"},{"line_number":67,"context_line":"          network_name: net0"},{"line_number":68,"context_line":"          vendor: tacker"},{"line_number":69,"context_line":"        VL2:"},{"line_number":70,"context_line":"          type: tosca.nodes.nfv.VL"},{"line_number":71,"context_line":"          properties:"}],"source_content_type":"text/x-rst","patch_set":22,"id":"5a3905b3_e2e68ce7","line":68,"range":{"start_line":67,"start_character":0,"end_line":68,"end_character":24},"updated":"2017-01-19 07:02:45.000000000","message":"add more space for indention.","commit_id":"88beffe37ae90a266e7cda4e0102c7666ed13dbd"},{"author":{"_account_id":18955,"name":"dharmendra","email":"dharmendra.kushwaha@gmail.com","username":"dharmendra"},"change_message_id":"0db235ec8a4e388a580a571adafa3b5b3fdc104c","unresolved":false,"context_lines":[{"line_number":64,"context_line":"        VL1:"},{"line_number":65,"context_line":"          type: tosca.nodes.nfv.VL"},{"line_number":66,"context_line":"          properties:"},{"line_number":67,"context_line":"          network_name: net0"},{"line_number":68,"context_line":"          vendor: tacker"},{"line_number":69,"context_line":"        VL2:"},{"line_number":70,"context_line":"          type: tosca.nodes.nfv.VL"},{"line_number":71,"context_line":"          properties:"}],"source_content_type":"text/x-rst","patch_set":22,"id":"5a3905b3_f9f1a76b","line":68,"range":{"start_line":67,"start_character":0,"end_line":68,"end_character":24},"in_reply_to":"5a3905b3_e2e68ce7","updated":"2017-01-20 02:44:17.000000000","message":"Done","commit_id":"88beffe37ae90a266e7cda4e0102c7666ed13dbd"},{"author":{"_account_id":2874,"name":"yong sheng gong","email":"gong.yongsheng@99cloud.net","username":"gongysh"},"change_message_id":"de182782599c3456b2c3f432594cd2fd11e5829b","unresolved":false,"context_lines":[{"line_number":104,"context_line":"       - virtualLink2:"},{"line_number":105,"context_line":"           type: tosca.nodes.nfv.VL"},{"line_number":106,"context_line":"           required: true"},{"line_number":107,"context_line":"     capabilities:"},{"line_number":108,"context_line":"       forwader1:"},{"line_number":109,"context_line":"         type: tosca.capabilities.nfv.Forwarder"},{"line_number":110,"context_line":"       forwader2:"},{"line_number":111,"context_line":"         type: tosca.capabilities.nfv.Forwarder"},{"line_number":112,"context_line":""},{"line_number":113,"context_line":" topology_template:"},{"line_number":114,"context_line":"   substitution_mappings:"}],"source_content_type":"text/x-rst","patch_set":22,"id":"5a3905b3_62ad3c88","line":111,"range":{"start_line":107,"start_character":0,"end_line":111,"end_character":47},"updated":"2017-01-19 07:02:45.000000000","message":"cannot see what are useful for these","commit_id":"88beffe37ae90a266e7cda4e0102c7666ed13dbd"},{"author":{"_account_id":2874,"name":"yong sheng gong","email":"gong.yongsheng@99cloud.net","username":"gongysh"},"change_message_id":"de182782599c3456b2c3f432594cd2fd11e5829b","unresolved":false,"context_lines":[{"line_number":136,"context_line":"         management: true"},{"line_number":137,"context_line":"         anti_spoofing_protection: false"},{"line_number":138,"context_line":"       requirements:"},{"line_number":139,"context_line":"         - virtualBinding:"},{"line_number":140,"context_line":"             node: VDU1"},{"line_number":141,"context_line":""},{"line_number":142,"context_line":"     VDU2:"},{"line_number":143,"context_line":"       type: tosca.nodes.nfv.VDU.Tacker"}],"source_content_type":"text/x-rst","patch_set":22,"id":"5a3905b3_0211d8ac","line":140,"range":{"start_line":139,"start_character":0,"end_line":140,"end_character":23},"updated":"2017-01-19 07:02:45.000000000","message":"Yes, we have no requirement for virtual link here, the virtual link of this CP will be give in top NSD.","commit_id":"88beffe37ae90a266e7cda4e0102c7666ed13dbd"},{"author":{"_account_id":17280,"name":"Tim Rozet","email":"trozet@redhat.com","username":"trozet"},"change_message_id":"7e46f5ac4caa47438b036581ed8b3ea7035a0a5d","unresolved":false,"context_lines":[{"line_number":17,"context_line":"Orchestrating VNFs using Network Services Descriptor (NSD)"},{"line_number":18,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"To enable dynamic composition of network services, NFV introduces Network"},{"line_number":21,"context_line":"Service Descriptors (NSDs) that specify the network service to be created."},{"line_number":22,"context_line":"This usage guide describes lifecycle of Network service descriptors and"},{"line_number":23,"context_line":"services."},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"Creating the NSD"},{"line_number":26,"context_line":"~~~~~~~~~~~~~~~~"}],"source_content_type":"text/x-rst","patch_set":24,"id":"5a3905b3_75d75723","line":23,"range":{"start_line":20,"start_character":0,"end_line":23,"end_character":9},"updated":"2017-01-20 16:15:30.000000000","message":"I\u0027m a little confused to what this version of NSD is *functionally* doing.  What is the advantage of using NSD over VNF Manager?  For example, is this dynamically creating neturon networks for each VL?  Maybe list some of this kind of information in the usage guide.","commit_id":"cf806d7e97ae4b3c5e13dd7f315e8088fc1fec0a"},{"author":{"_account_id":18955,"name":"dharmendra","email":"dharmendra.kushwaha@gmail.com","username":"dharmendra"},"change_message_id":"c592f05543c3299fe9ce6d83cd82a13fcb1b7669","unresolved":false,"context_lines":[{"line_number":17,"context_line":"Orchestrating VNFs using Network Services Descriptor (NSD)"},{"line_number":18,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"To enable dynamic composition of network services, NFV introduces Network"},{"line_number":21,"context_line":"Service Descriptors (NSDs) that specify the network service to be created."},{"line_number":22,"context_line":"This usage guide describes lifecycle of Network service descriptors and"},{"line_number":23,"context_line":"services."},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"Creating the NSD"},{"line_number":26,"context_line":"~~~~~~~~~~~~~~~~"}],"source_content_type":"text/x-rst","patch_set":24,"id":"5a3905b3_65665352","line":23,"range":{"start_line":20,"start_character":0,"end_line":23,"end_character":9},"in_reply_to":"5a3905b3_01df55d9","updated":"2017-01-24 07:30:20.000000000","message":"Updated this point.","commit_id":"cf806d7e97ae4b3c5e13dd7f315e8088fc1fec0a"},{"author":{"_account_id":13380,"name":"Sridhar Ramaswamy","email":"srics.r@gmail.com","username":"srics-r"},"change_message_id":"687023ec4e7453ec0aa9f078db737f1351713a1e","unresolved":false,"context_lines":[{"line_number":17,"context_line":"Orchestrating VNFs using Network Services Descriptor (NSD)"},{"line_number":18,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"To enable dynamic composition of network services, NFV introduces Network"},{"line_number":21,"context_line":"Service Descriptors (NSDs) that specify the network service to be created."},{"line_number":22,"context_line":"This usage guide describes lifecycle of Network service descriptors and"},{"line_number":23,"context_line":"services."},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"Creating the NSD"},{"line_number":26,"context_line":"~~~~~~~~~~~~~~~~"}],"source_content_type":"text/x-rst","patch_set":24,"id":"5a3905b3_01df55d9","line":23,"range":{"start_line":20,"start_character":0,"end_line":23,"end_character":9},"in_reply_to":"5a3905b3_75d75723","updated":"2017-01-23 23:12:03.000000000","message":"@Tim - fair question. At this point, NSD in Ocata can be used for creating multiple (related) VNFs in one shot using a single TOSCA template. \n\nLike it was mentioned earlier, this is a first (big) step into NSD and few follow-on enhancements like,\n\n 1) Creating VLs / neutron networks using NSD (to support inter-VNF private VL) is one of the immediately follow-on RFEs that we need to do. Already tracking it for Pike [1].\n\n 2) VNFFGD support in NSD\n\nThe bigger picture (vision, if you may) is to provide a range of fom coarse grain -\u003e fine grain orchestration using TOSCA,\n\nNSD --\u003e VNF --\u003e VNFC [2]\n\n\n@Dharmendra / @tbh - perhaps you can mention this \"context\" in this guide for the user community to get a sense of where this functionality is heading.\n\n[1] https://etherpad.openstack.org/p/tacker-pike-grooming\n[2] http://specs.openstack.org/openstack/tacker-specs/specs/ocata/tacker-vnfc.html","commit_id":"cf806d7e97ae4b3c5e13dd7f315e8088fc1fec0a"},{"author":{"_account_id":17280,"name":"Tim Rozet","email":"trozet@redhat.com","username":"trozet"},"change_message_id":"29feb62b62223ad59019c83fcc624331192310a7","unresolved":false,"context_lines":[{"line_number":80,"context_line":"Reference"},{"line_number":81,"context_line":"~~~~~~~~~"},{"line_number":82,"context_line":""},{"line_number":83,"context_line":"VNF2 sample template for nsd named vnfd1.yaml:"},{"line_number":84,"context_line":""},{"line_number":85,"context_line":"::"},{"line_number":86,"context_line":""}],"source_content_type":"text/x-rst","patch_set":24,"id":"5a3905b3_156e1395","line":83,"range":{"start_line":83,"start_character":0,"end_line":83,"end_character":4},"updated":"2017-01-20 16:13:40.000000000","message":"VNF1?","commit_id":"cf806d7e97ae4b3c5e13dd7f315e8088fc1fec0a"},{"author":{"_account_id":18955,"name":"dharmendra","email":"dharmendra.kushwaha@gmail.com","username":"dharmendra"},"change_message_id":"c592f05543c3299fe9ce6d83cd82a13fcb1b7669","unresolved":false,"context_lines":[{"line_number":80,"context_line":"Reference"},{"line_number":81,"context_line":"~~~~~~~~~"},{"line_number":82,"context_line":""},{"line_number":83,"context_line":"VNF2 sample template for nsd named vnfd1.yaml:"},{"line_number":84,"context_line":""},{"line_number":85,"context_line":"::"},{"line_number":86,"context_line":""}],"source_content_type":"text/x-rst","patch_set":24,"id":"5a3905b3_e56b231c","line":83,"range":{"start_line":83,"start_character":0,"end_line":83,"end_character":4},"in_reply_to":"5a3905b3_156e1395","updated":"2017-01-24 07:30:20.000000000","message":"Done","commit_id":"cf806d7e97ae4b3c5e13dd7f315e8088fc1fec0a"},{"author":{"_account_id":13380,"name":"Sridhar Ramaswamy","email":"srics.r@gmail.com","username":"srics-r"},"change_message_id":"f8b2d1ab979ba0ebbef3a24d11bf524f52857c5f","unresolved":false,"context_lines":[{"line_number":22,"context_line":"This usage guide describes lifecycle of Network service descriptors and"},{"line_number":23,"context_line":"services."},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"NSD in Ocata can be used for creating multiple (related) VNFs in one shot"},{"line_number":26,"context_line":"using a single TOSCA template. This is a first (big) step into NSD, few"},{"line_number":27,"context_line":"follow-on enhancements like:"},{"line_number":28,"context_line":"1) Creating VLs / neutron networks using NSD (to support inter-VNF private VL)"}],"source_content_type":"text/x-rst","patch_set":28,"id":"5a3905b3_f6f1f102","line":25,"range":{"start_line":25,"start_character":0,"end_line":25,"end_character":24},"updated":"2017-01-24 20:04:45.000000000","message":"Instead of explicitly mentioning the release names, we can keep it a bit generic...\n\n\"NSD in its current form can be used ... \"","commit_id":"3582a1d69d8a93785669df41af96dc6b5e548e78"},{"author":{"_account_id":13380,"name":"Sridhar Ramaswamy","email":"srics.r@gmail.com","username":"srics-r"},"change_message_id":"f8b2d1ab979ba0ebbef3a24d11bf524f52857c5f","unresolved":false,"context_lines":[{"line_number":23,"context_line":"services."},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"NSD in Ocata can be used for creating multiple (related) VNFs in one shot"},{"line_number":26,"context_line":"using a single TOSCA template. This is a first (big) step into NSD, few"},{"line_number":27,"context_line":"follow-on enhancements like:"},{"line_number":28,"context_line":"1) Creating VLs / neutron networks using NSD (to support inter-VNF private VL)"},{"line_number":29,"context_line":"2) VNFFGD support in NSD."},{"line_number":30,"context_line":""}],"source_content_type":"text/x-rst","patch_set":28,"id":"5a3905b3_f6dbb14d","line":27,"range":{"start_line":26,"start_character":31,"end_line":27,"end_character":28},"updated":"2017-01-24 20:04:45.000000000","message":"Suggest something like,\n\nThis is a first step into NSD. In future releases of Tacker, following enhancements will be made to support,\n\n1) Virtual Link (VL) creation using NSD - to support inter-VNF private VL\n2) VNFFGD support within NSD","commit_id":"3582a1d69d8a93785669df41af96dc6b5e548e78"}],"requirements.txt":[{"author":{"_account_id":18238,"name":"Hardik Parekh","email":"hardik.parekh047@gmail.com","username":"hparekh"},"change_message_id":"82be799dec1f00c812e1fab461dfea546b52d14e","unresolved":false,"context_lines":[{"line_number":43,"context_line":"heat-translator\u003e\u003d0.4.0 # Apache-2.0"},{"line_number":44,"context_line":"cryptography!\u003d1.3.0,\u003e\u003d1.0 # BSD/Apache-2.0"},{"line_number":45,"context_line":"paramiko\u003e\u003d2.0 # LGPLv2.1+"},{"line_number":46,"context_line":"python-mistralclient"}],"source_content_type":"text/plain","patch_set":10,"id":"ba5201f7_4dbbb50e","line":46,"range":{"start_line":46,"start_character":0,"end_line":46,"end_character":20},"updated":"2017-01-04 05:09:49.000000000","message":"it should be as same as https://github.com/openstack/requirements/blob/master/global-requirements.txt#L221","commit_id":"fd73282b338f33023117fcf41ca5980ed4c0fc53"},{"author":{"_account_id":18955,"name":"dharmendra","email":"dharmendra.kushwaha@gmail.com","username":"dharmendra"},"change_message_id":"99c681aa9cd3c7794bd58bbf7df0f09d82c78845","unresolved":false,"context_lines":[{"line_number":43,"context_line":"heat-translator\u003e\u003d0.4.0 # Apache-2.0"},{"line_number":44,"context_line":"cryptography!\u003d1.3.0,\u003e\u003d1.0 # BSD/Apache-2.0"},{"line_number":45,"context_line":"paramiko\u003e\u003d2.0 # LGPLv2.1+"},{"line_number":46,"context_line":"python-mistralclient"}],"source_content_type":"text/plain","patch_set":10,"id":"ba5201f7_23b0078a","line":46,"range":{"start_line":46,"start_character":0,"end_line":46,"end_character":20},"in_reply_to":"ba5201f7_4dbbb50e","updated":"2017-01-05 12:29:11.000000000","message":"Done","commit_id":"fd73282b338f33023117fcf41ca5980ed4c0fc53"},{"author":{"_account_id":10487,"name":"Kanagaraj Manickam","email":"mkr1481@gmail.com","username":"kanagarajm"},"change_message_id":"88f0b14436069bb1db14d637717362eb95ddf0cb","unresolved":false,"context_lines":[{"line_number":40,"context_line":"python-neutronclient\u003e\u003d5.1.0 # Apache-2.0"},{"line_number":41,"context_line":"python-novaclient!\u003d2.33.0,\u003e\u003d2.29.0 # Apache-2.0"},{"line_number":42,"context_line":"tosca-parser\u003e\u003d0.5.0 # Apache-2.0"},{"line_number":43,"context_line":"heat-translator\u003e\u003d0.4.0 # Apache-2.0"},{"line_number":44,"context_line":"cryptography!\u003d1.3.0,\u003e\u003d1.0 # BSD/Apache-2.0"},{"line_number":45,"context_line":"paramiko\u003e\u003d2.0 # LGPLv2.1+"},{"line_number":46,"context_line":"python-mistralclient\u003e\u003d2.0.0 # Apache-2.0"}],"source_content_type":"text/plain","patch_set":16,"id":"ba5201f7_59f8d349","line":43,"updated":"2017-01-11 06:21:10.000000000","message":"pls set to 0.7.0","commit_id":"ebbd50ba4ff83f69743debbc6a9231fdea19d17e"}],"tacker/common/clients.py":[{"author":{"_account_id":13485,"name":"Sripriya Seetharam","email":"sseetha@brocade.com","username":"Sripriya"},"change_message_id":"4185d40c80920d4782ffccd264fe87d3130329fd","unresolved":false,"context_lines":[{"line_number":20,"context_line":"        super(OpenstackClients, self).__init__()"},{"line_number":21,"context_line":"        self.keystone_plugin \u003d keystone.Keystone()"},{"line_number":22,"context_line":"        self.heat_client \u003d None"},{"line_number":23,"context_line":"        self.mistral_client \u003d None"},{"line_number":24,"context_line":"        self.keystone_client \u003d None"},{"line_number":25,"context_line":"        self.region_name \u003d region_name"},{"line_number":26,"context_line":"        self.auth_attr \u003d auth_attr"}],"source_content_type":"text/x-python","patch_set":31,"id":"3a461143_68f59855","line":23,"range":{"start_line":23,"start_character":8,"end_line":23,"end_character":34},"updated":"2017-01-30 04:13:24.000000000","message":"is this being used?","commit_id":"15c4d7ec5d51cd159579f084f7b3773dac6725f1"},{"author":{"_account_id":18955,"name":"dharmendra","email":"dharmendra.kushwaha@gmail.com","username":"dharmendra"},"change_message_id":"db9d4021fbdc956ae57bc00b25449b2ef27f6457","unresolved":false,"context_lines":[{"line_number":20,"context_line":"        super(OpenstackClients, self).__init__()"},{"line_number":21,"context_line":"        self.keystone_plugin \u003d keystone.Keystone()"},{"line_number":22,"context_line":"        self.heat_client \u003d None"},{"line_number":23,"context_line":"        self.mistral_client \u003d None"},{"line_number":24,"context_line":"        self.keystone_client \u003d None"},{"line_number":25,"context_line":"        self.region_name \u003d region_name"},{"line_number":26,"context_line":"        self.auth_attr \u003d auth_attr"}],"source_content_type":"text/x-python","patch_set":31,"id":"3a461143_e3cdf466","line":23,"range":{"start_line":23,"start_character":8,"end_line":23,"end_character":34},"in_reply_to":"3a461143_68f59855","updated":"2017-01-31 06:23:09.000000000","message":"Not in use, will be cleaned.","commit_id":"15c4d7ec5d51cd159579f084f7b3773dac6725f1"}],"tacker/common/config.py":[{"author":{"_account_id":18238,"name":"Hardik Parekh","email":"hardik.parekh047@gmail.com","username":"hparekh"},"change_message_id":"82be799dec1f00c812e1fab461dfea546b52d14e","unresolved":false,"context_lines":[{"line_number":71,"context_line":"    cfg.StrOpt(\u0027endpoint_type\u0027, default\u003d\u0027publicURL\u0027,"},{"line_number":72,"context_line":"               help\u003d\u0027Mistral endpoint type.\u0027),"},{"line_number":73,"context_line":""},{"line_number":74,"context_line":"    cfg.StrOpt(\u0027url\u0027, help\u003d\u0027Mistral url\u0027),"},{"line_number":75,"context_line":""},{"line_number":76,"context_line":"    cfg.StrOpt(\u0027service_type\u0027, default\u003d\u0027workflowv2\u0027,"},{"line_number":77,"context_line":"               help\u003d\u0027Mistral service type.\u0027),"}],"source_content_type":"text/x-python","patch_set":10,"id":"ba5201f7_adac21a1","line":74,"range":{"start_line":74,"start_character":4,"end_line":74,"end_character":41},"updated":"2017-01-04 05:09:49.000000000","message":"Can\u0027t you get it from keystone ?","commit_id":"fd73282b338f33023117fcf41ca5980ed4c0fc53"},{"author":{"_account_id":18955,"name":"dharmendra","email":"dharmendra.kushwaha@gmail.com","username":"dharmendra"},"change_message_id":"99c681aa9cd3c7794bd58bbf7df0f09d82c78845","unresolved":false,"context_lines":[{"line_number":71,"context_line":"    cfg.StrOpt(\u0027endpoint_type\u0027, default\u003d\u0027publicURL\u0027,"},{"line_number":72,"context_line":"               help\u003d\u0027Mistral endpoint type.\u0027),"},{"line_number":73,"context_line":""},{"line_number":74,"context_line":"    cfg.StrOpt(\u0027url\u0027, help\u003d\u0027Mistral url\u0027),"},{"line_number":75,"context_line":""},{"line_number":76,"context_line":"    cfg.StrOpt(\u0027service_type\u0027, default\u003d\u0027workflowv2\u0027,"},{"line_number":77,"context_line":"               help\u003d\u0027Mistral service type.\u0027),"}],"source_content_type":"text/x-python","patch_set":10,"id":"ba5201f7_fec69498","line":74,"range":{"start_line":74,"start_character":4,"end_line":74,"end_character":41},"in_reply_to":"ba5201f7_adac21a1","updated":"2017-01-05 12:29:11.000000000","message":"Removing mistral_opts for now.","commit_id":"fd73282b338f33023117fcf41ca5980ed4c0fc53"},{"author":{"_account_id":2874,"name":"yong sheng gong","email":"gong.yongsheng@99cloud.net","username":"gongysh"},"change_message_id":"4359c38200b1bf364ed90b74ff144f9bc62b1bbe","unresolved":false,"context_lines":[{"line_number":67,"context_line":"                      \"This directory must be writable by the agent.\")),"},{"line_number":68,"context_line":"]"},{"line_number":69,"context_line":""},{"line_number":70,"context_line":""},{"line_number":71,"context_line":"logging.register_options(cfg.CONF)"},{"line_number":72,"context_line":"# Register the configuration options"},{"line_number":73,"context_line":"cfg.CONF.register_opts(core_opts)"}],"source_content_type":"text/x-python","patch_set":14,"id":"ba5201f7_c361b4d4","line":70,"range":{"start_line":70,"start_character":0,"end_line":70,"end_character":0},"updated":"2017-01-07 04:11:28.000000000","message":"no need to make this change","commit_id":"1fa746f9cde08e9a35b3b8f4663270c81cb37b65"},{"author":{"_account_id":18955,"name":"dharmendra","email":"dharmendra.kushwaha@gmail.com","username":"dharmendra"},"change_message_id":"08139beb7fcf51d1e8a7121cca8c1689982c4439","unresolved":false,"context_lines":[{"line_number":67,"context_line":"                      \"This directory must be writable by the agent.\")),"},{"line_number":68,"context_line":"]"},{"line_number":69,"context_line":""},{"line_number":70,"context_line":""},{"line_number":71,"context_line":"logging.register_options(cfg.CONF)"},{"line_number":72,"context_line":"# Register the configuration options"},{"line_number":73,"context_line":"cfg.CONF.register_opts(core_opts)"}],"source_content_type":"text/x-python","patch_set":14,"id":"ba5201f7_95dfd0d4","line":70,"range":{"start_line":70,"start_character":0,"end_line":70,"end_character":0},"in_reply_to":"ba5201f7_c361b4d4","updated":"2017-01-08 19:20:28.000000000","message":"Done","commit_id":"1fa746f9cde08e9a35b3b8f4663270c81cb37b65"}],"tacker/db/nfvo/ns_db.py":[{"author":{"_account_id":2874,"name":"yong sheng gong","email":"gong.yongsheng@99cloud.net","username":"gongysh"},"change_message_id":"673872431fd84b511faa737cd6606c77050bb36d","unresolved":false,"context_lines":[{"line_number":300,"context_line":""},{"line_number":301,"context_line":"    def delete_ns_post(self, context, ns_id, mistral_obj,"},{"line_number":302,"context_line":"                       error_reason, soft_delete\u003dTrue):"},{"line_number":303,"context_line":"        with context.session.begin(subtransactions\u003dTrue):"},{"line_number":304,"context_line":"            query \u003d ("},{"line_number":305,"context_line":"                self._model_query(context, NS)."},{"line_number":306,"context_line":"                filter(NS.id \u003d\u003d ns_id)."},{"line_number":307,"context_line":"                filter(NS.status \u003d\u003d constants.PENDING_DELETE))"},{"line_number":308,"context_line":"            if mistral_obj.state \u003d\u003d \u0027ERROR\u0027:"},{"line_number":309,"context_line":"                query.update({\u0027status\u0027: constants.ERROR})"},{"line_number":310,"context_line":"                self._cos_db_plg.create_event("},{"line_number":311,"context_line":"                    context, res_id\u003dns_id,"},{"line_number":312,"context_line":"                    res_type\u003dconstants.RES_TYPE_NS,"},{"line_number":313,"context_line":"                    res_state\u003dconstants.ERROR,"},{"line_number":314,"context_line":"                    evt_type\u003dconstants.RES_EVT_DELETE,"},{"line_number":315,"context_line":"                    tstamp\u003dtimeutils.utcnow(),"},{"line_number":316,"context_line":"                    details\u003d\"NS Delete ERROR\")"},{"line_number":317,"context_line":"            else:"},{"line_number":318,"context_line":"                if soft_delete:"},{"line_number":319,"context_line":"                    deleted_time_stamp \u003d timeutils.utcnow()"},{"line_number":320,"context_line":"                    query.update({\u0027deleted_at\u0027: deleted_time_stamp})"},{"line_number":321,"context_line":"                    self._cos_db_plg.create_event("},{"line_number":322,"context_line":"                        context, res_id\u003dns_id,"},{"line_number":323,"context_line":"                        res_type\u003dconstants.RES_TYPE_NS,"},{"line_number":324,"context_line":"                        res_state\u003dconstants.PENDING_DELETE,"},{"line_number":325,"context_line":"                        evt_type\u003dconstants.RES_EVT_DELETE,"},{"line_number":326,"context_line":"                        tstamp\u003ddeleted_time_stamp,"},{"line_number":327,"context_line":"                        details\u003d\"ns Delete Complete\")"},{"line_number":328,"context_line":"                else:"},{"line_number":329,"context_line":"                    query.delete()"},{"line_number":330,"context_line":""},{"line_number":331,"context_line":"    def get_ns(self, context, ns_id, fields\u003dNone):"},{"line_number":332,"context_line":"        ns_db \u003d self._get_resource(context, NS, ns_id)"}],"source_content_type":"text/x-python","patch_set":17,"id":"9a57fde8_0479da93","line":329,"range":{"start_line":303,"start_character":0,"end_line":329,"end_character":34},"updated":"2017-01-12 13:49:56.000000000","message":"put these codes in previous patch. make this patch just mistral related.","commit_id":"71b6aa16a7de3bb28a8877524ce051e9e72d3908"},{"author":{"_account_id":2874,"name":"yong sheng gong","email":"gong.yongsheng@99cloud.net","username":"gongysh"},"change_message_id":"a0f056dcbedcbb64fa03d0ca2278783b61dabb5f","unresolved":false,"context_lines":[{"line_number":278,"context_line":"            ns_db.update({\u0027error_reason\u0027: error_reason})"},{"line_number":279,"context_line":"            ns_db.update({\u0027updated_at\u0027: timeutils.utcnow()})"},{"line_number":280,"context_line":"            ns_dict \u003d self._make_ns_dict(ns_db)"},{"line_number":281,"context_line":"            self._cos_db_plg.create_event("},{"line_number":282,"context_line":"                context, res_id\u003dns_dict[\u0027id\u0027],"},{"line_number":283,"context_line":"                res_type\u003dconstants.RES_TYPE_NS,"},{"line_number":284,"context_line":"                res_state\u003dconstants.RES_EVT_NA_STATE,"},{"line_number":285,"context_line":"                evt_type\u003dconstants.RES_EVT_UPDATE,"},{"line_number":286,"context_line":"                tstamp\u003dns_dict[constants.RES_EVT_UPDATED_FLD])"},{"line_number":287,"context_line":"        return ns_dict"},{"line_number":288,"context_line":""},{"line_number":289,"context_line":"    # reference implementation. needs to be overrided by subclass"}],"source_content_type":"text/x-python","patch_set":23,"id":"5a3905b3_47af2d94","line":286,"range":{"start_line":281,"start_character":0,"end_line":286,"end_character":62},"updated":"2017-01-20 06:11:53.000000000","message":"to see if we need put event creation into top transaction scope.","commit_id":"2a5477e2056aeca0ad530e276762c9f7c3a17f32"},{"author":{"_account_id":2874,"name":"yong sheng gong","email":"gong.yongsheng@99cloud.net","username":"gongysh"},"change_message_id":"a2522fff8666705cd885680930034b33d72a4014","unresolved":false,"context_lines":[{"line_number":321,"context_line":"                if soft_delete:"},{"line_number":322,"context_line":"                    deleted_time_stamp \u003d timeutils.utcnow()"},{"line_number":323,"context_line":"                    query.update({\u0027deleted_at\u0027: deleted_time_stamp})"},{"line_number":324,"context_line":"                    self._cos_db_plg.create_event("},{"line_number":325,"context_line":"                        context, res_id\u003dns_id,"},{"line_number":326,"context_line":"                        res_type\u003dconstants.RES_TYPE_NS,"},{"line_number":327,"context_line":"                        res_state\u003dconstants.PENDING_DELETE,"},{"line_number":328,"context_line":"                        evt_type\u003dconstants.RES_EVT_DELETE,"},{"line_number":329,"context_line":"                        tstamp\u003ddeleted_time_stamp,"},{"line_number":330,"context_line":"                        details\u003d\"ns Delete Complete\")"},{"line_number":331,"context_line":"                else:"},{"line_number":332,"context_line":"                    query.delete()"},{"line_number":333,"context_line":""}],"source_content_type":"text/x-python","patch_set":24,"id":"5a3905b3_7dae4799","line":330,"range":{"start_line":324,"start_character":0,"end_line":330,"end_character":53},"updated":"2017-01-21 06:19:27.000000000","message":"should this be under top transaction? the one at line 342 is not.","commit_id":"cf806d7e97ae4b3c5e13dd7f315e8088fc1fec0a"},{"author":{"_account_id":12455,"name":"bharaththiruveedula","email":"bharath_ves@hotmail.com","username":"bharaththiruveedula"},"change_message_id":"929a753e85bcab4b576f6c9482b190f1ecf32787","unresolved":false,"context_lines":[{"line_number":321,"context_line":"                if soft_delete:"},{"line_number":322,"context_line":"                    deleted_time_stamp \u003d timeutils.utcnow()"},{"line_number":323,"context_line":"                    query.update({\u0027deleted_at\u0027: deleted_time_stamp})"},{"line_number":324,"context_line":"                    self._cos_db_plg.create_event("},{"line_number":325,"context_line":"                        context, res_id\u003dns_id,"},{"line_number":326,"context_line":"                        res_type\u003dconstants.RES_TYPE_NS,"},{"line_number":327,"context_line":"                        res_state\u003dconstants.PENDING_DELETE,"},{"line_number":328,"context_line":"                        evt_type\u003dconstants.RES_EVT_DELETE,"},{"line_number":329,"context_line":"                        tstamp\u003ddeleted_time_stamp,"},{"line_number":330,"context_line":"                        details\u003d\"ns Delete Complete\")"},{"line_number":331,"context_line":"                else:"},{"line_number":332,"context_line":"                    query.delete()"},{"line_number":333,"context_line":""}],"source_content_type":"text/x-python","patch_set":24,"id":"5a3905b3_212416c5","line":330,"range":{"start_line":324,"start_character":0,"end_line":330,"end_character":53},"in_reply_to":"5a3905b3_7dae4799","updated":"2017-01-24 18:52:44.000000000","message":"I didn\u0027t get you gongysh","commit_id":"cf806d7e97ae4b3c5e13dd7f315e8088fc1fec0a"}],"tacker/extensions/nfvo.py":[{"author":{"_account_id":2874,"name":"yong sheng gong","email":"gong.yongsheng@99cloud.net","username":"gongysh"},"change_message_id":"4359c38200b1bf364ed90b74ff144f9bc62b1bbe","unresolved":false,"context_lines":[{"line_number":682,"context_line":"            \u0027is_visible\u0027: True,"},{"line_number":683,"context_line":"            \u0027default\u0027: None,"},{"line_number":684,"context_line":"        },"},{"line_number":685,"context_line":""},{"line_number":686,"context_line":""},{"line_number":687,"context_line":"    },"},{"line_number":688,"context_line":""}],"source_content_type":"text/x-python","patch_set":14,"id":"ba5201f7_e3e1582b","line":685,"range":{"start_line":685,"start_character":0,"end_line":685,"end_character":0},"updated":"2017-01-07 04:11:28.000000000","message":"remove these lines","commit_id":"1fa746f9cde08e9a35b3b8f4663270c81cb37b65"},{"author":{"_account_id":18955,"name":"dharmendra","email":"dharmendra.kushwaha@gmail.com","username":"dharmendra"},"change_message_id":"08139beb7fcf51d1e8a7121cca8c1689982c4439","unresolved":false,"context_lines":[{"line_number":682,"context_line":"            \u0027is_visible\u0027: True,"},{"line_number":683,"context_line":"            \u0027default\u0027: None,"},{"line_number":684,"context_line":"        },"},{"line_number":685,"context_line":""},{"line_number":686,"context_line":""},{"line_number":687,"context_line":"    },"},{"line_number":688,"context_line":""}],"source_content_type":"text/x-python","patch_set":14,"id":"ba5201f7_15ea0074","line":685,"range":{"start_line":685,"start_character":0,"end_line":685,"end_character":0},"in_reply_to":"ba5201f7_e3e1582b","updated":"2017-01-08 19:20:28.000000000","message":"Done","commit_id":"1fa746f9cde08e9a35b3b8f4663270c81cb37b65"}],"tacker/extensions/nfvo_plugins/network_service.py":[{"author":{"_account_id":2874,"name":"yong sheng gong","email":"gong.yongsheng@99cloud.net","username":"gongysh"},"change_message_id":"13dd7cb787cb4bbcf54ba80329b3a4908d74e0f7","unresolved":false,"context_lines":[{"line_number":58,"context_line":""},{"line_number":59,"context_line":""},{"line_number":60,"context_line":"class NSNotFound(exceptions.NotFound):"},{"line_number":61,"context_line":"    message \u003d _(\u0027VNF %(ns_id)s could not be found\u0027)"}],"source_content_type":"text/x-python","patch_set":14,"id":"ba5201f7_1f76ccd6","line":61,"range":{"start_line":61,"start_character":17,"end_line":61,"end_character":20},"updated":"2017-01-06 11:10:28.000000000","message":"NS","commit_id":"1fa746f9cde08e9a35b3b8f4663270c81cb37b65"},{"author":{"_account_id":18955,"name":"dharmendra","email":"dharmendra.kushwaha@gmail.com","username":"dharmendra"},"change_message_id":"08139beb7fcf51d1e8a7121cca8c1689982c4439","unresolved":false,"context_lines":[{"line_number":58,"context_line":""},{"line_number":59,"context_line":""},{"line_number":60,"context_line":"class NSNotFound(exceptions.NotFound):"},{"line_number":61,"context_line":"    message \u003d _(\u0027VNF %(ns_id)s could not be found\u0027)"}],"source_content_type":"text/x-python","patch_set":14,"id":"ba5201f7_55000834","line":61,"range":{"start_line":61,"start_character":17,"end_line":61,"end_character":20},"in_reply_to":"ba5201f7_1f76ccd6","updated":"2017-01-08 19:20:28.000000000","message":"Done","commit_id":"1fa746f9cde08e9a35b3b8f4663270c81cb37b65"}],"tacker/nfvo/drivers/workflow/mistral.py":[{"author":{"_account_id":18238,"name":"Hardik Parekh","email":"hardik.parekh047@gmail.com","username":"hparekh"},"change_message_id":"82be799dec1f00c812e1fab461dfea546b52d14e","unresolved":false,"context_lines":[{"line_number":18,"context_line":"from tacker.nfvo.drivers.workflow import workflow_generator"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":21,"context_line":"OPTS \u003d ["},{"line_number":22,"context_line":"    cfg.StrOpt(\u0027host\u0027, default\u003d\u00270.0.0.0\u0027,"},{"line_number":23,"context_line":"               help\u003d_(\u0027Address which drivers use to trigger\u0027)),"},{"line_number":24,"context_line":"    cfg.PortOpt(\u0027port\u0027, default\u003d8989,"},{"line_number":25,"context_line":"               help\u003d_(\u0027port number which drivers use to trigger\u0027))"},{"line_number":26,"context_line":"]"},{"line_number":27,"context_line":"cfg.CONF.register_opts(OPTS, group\u003d\u0027mistral\u0027)"},{"line_number":28,"context_line":"FREQUENCY \u003d 10"},{"line_number":29,"context_line":"SLEEP \u003d 5"}],"source_content_type":"text/x-python","patch_set":10,"id":"ba5201f7_8dbafdbe","line":26,"range":{"start_line":21,"start_character":0,"end_line":26,"end_character":1},"updated":"2017-01-04 05:09:49.000000000","message":"Why it is needed ? Confused with https://review.openstack.org/#/c/414937/10/tacker/common/config.py options","commit_id":"fd73282b338f33023117fcf41ca5980ed4c0fc53"},{"author":{"_account_id":18955,"name":"dharmendra","email":"dharmendra.kushwaha@gmail.com","username":"dharmendra"},"change_message_id":"99c681aa9cd3c7794bd58bbf7df0f09d82c78845","unresolved":false,"context_lines":[{"line_number":18,"context_line":"from tacker.nfvo.drivers.workflow import workflow_generator"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":21,"context_line":"OPTS \u003d ["},{"line_number":22,"context_line":"    cfg.StrOpt(\u0027host\u0027, default\u003d\u00270.0.0.0\u0027,"},{"line_number":23,"context_line":"               help\u003d_(\u0027Address which drivers use to trigger\u0027)),"},{"line_number":24,"context_line":"    cfg.PortOpt(\u0027port\u0027, default\u003d8989,"},{"line_number":25,"context_line":"               help\u003d_(\u0027port number which drivers use to trigger\u0027))"},{"line_number":26,"context_line":"]"},{"line_number":27,"context_line":"cfg.CONF.register_opts(OPTS, group\u003d\u0027mistral\u0027)"},{"line_number":28,"context_line":"FREQUENCY \u003d 10"},{"line_number":29,"context_line":"SLEEP \u003d 5"}],"source_content_type":"text/x-python","patch_set":10,"id":"ba5201f7_fed3f401","line":26,"range":{"start_line":21,"start_character":0,"end_line":26,"end_character":1},"in_reply_to":"ba5201f7_8dbafdbe","updated":"2017-01-05 12:29:11.000000000","message":"Removing mistral opts in config.py for now.","commit_id":"fd73282b338f33023117fcf41ca5980ed4c0fc53"},{"author":{"_account_id":18238,"name":"Hardik Parekh","email":"hardik.parekh047@gmail.com","username":"hparekh"},"change_message_id":"82be799dec1f00c812e1fab461dfea546b52d14e","unresolved":false,"context_lines":[{"line_number":43,"context_line":"    def _get_client(self):"},{"line_number":44,"context_line":"        mistral_host \u003d cfg.CONF.mistral.host"},{"line_number":45,"context_line":"        mistral_port \u003d cfg.CONF.mistral.port"},{"line_number":46,"context_line":"        mistral_url \u003d \u0027http://\u0027 + mistral_host + \u0027:\u0027\\"},{"line_number":47,"context_line":"            + unicode(mistral_port) + \u0027/v2\u0027"},{"line_number":48,"context_line":"        client \u003d mistral_client.client(auth_token\u003dself.context.auth_token,"},{"line_number":49,"context_line":"                                   mistral_url\u003dmistral_url)"},{"line_number":50,"context_line":"        return client"}],"source_content_type":"text/x-python","patch_set":10,"id":"ba5201f7_0dc7ed45","line":47,"range":{"start_line":46,"start_character":22,"end_line":47,"end_character":43},"updated":"2017-01-04 05:09:49.000000000","message":"As per openstack guideline do not use break line instead use \u0027()\u0027","commit_id":"fd73282b338f33023117fcf41ca5980ed4c0fc53"},{"author":{"_account_id":18238,"name":"Hardik Parekh","email":"hardik.parekh047@gmail.com","username":"hparekh"},"change_message_id":"82be799dec1f00c812e1fab461dfea546b52d14e","unresolved":false,"context_lines":[{"line_number":45,"context_line":"        mistral_port \u003d cfg.CONF.mistral.port"},{"line_number":46,"context_line":"        mistral_url \u003d \u0027http://\u0027 + mistral_host + \u0027:\u0027\\"},{"line_number":47,"context_line":"            + unicode(mistral_port) + \u0027/v2\u0027"},{"line_number":48,"context_line":"        client \u003d mistral_client.client(auth_token\u003dself.context.auth_token,"},{"line_number":49,"context_line":"                                   mistral_url\u003dmistral_url)"},{"line_number":50,"context_line":"        return client"},{"line_number":51,"context_line":""},{"line_number":52,"context_line":"    def prepare_workflow(self, **kwargs):"},{"line_number":53,"context_line":"        self.wg.task(**kwargs)"}],"source_content_type":"text/x-python","patch_set":10,"id":"ba5201f7_8d083d93","line":50,"range":{"start_line":48,"start_character":8,"end_line":50,"end_character":21},"updated":"2017-01-04 05:09:49.000000000","message":"You have not used options mentioned in https://review.openstack.org/#/c/414937/10/tacker/common/config.py","commit_id":"fd73282b338f33023117fcf41ca5980ed4c0fc53"},{"author":{"_account_id":18238,"name":"Hardik Parekh","email":"hardik.parekh047@gmail.com","username":"hparekh"},"change_message_id":"82be799dec1f00c812e1fab461dfea546b52d14e","unresolved":false,"context_lines":[{"line_number":58,"context_line":""},{"line_number":59,"context_line":"    def execute_workflow(self):"},{"line_number":60,"context_line":"        wf_ex \u003d self.client.executions.create("},{"line_number":61,"context_line":"            workflow_identifier\u003dself.wg.wf_identifier,"},{"line_number":62,"context_line":"            workflow_input\u003dself.wg.input_dict,"},{"line_number":63,"context_line":"            wf_params\u003d{})"},{"line_number":64,"context_line":"        return wf_ex"}],"source_content_type":"text/x-python","patch_set":10,"id":"ba5201f7_ed6e292e","line":61,"range":{"start_line":61,"start_character":12,"end_line":61,"end_character":53},"updated":"2017-01-04 05:09:49.000000000","message":"I recommend to use wf_id as workflow identifier instead of workflow name. As mistral can share workflow across tenant and there may possibility that two workflow has same name.\nwf_id will be returned when you create workflow","commit_id":"fd73282b338f33023117fcf41ca5980ed4c0fc53"},{"author":{"_account_id":18955,"name":"dharmendra","email":"dharmendra.kushwaha@gmail.com","username":"dharmendra"},"change_message_id":"99c681aa9cd3c7794bd58bbf7df0f09d82c78845","unresolved":false,"context_lines":[{"line_number":58,"context_line":""},{"line_number":59,"context_line":"    def execute_workflow(self):"},{"line_number":60,"context_line":"        wf_ex \u003d self.client.executions.create("},{"line_number":61,"context_line":"            workflow_identifier\u003dself.wg.wf_identifier,"},{"line_number":62,"context_line":"            workflow_input\u003dself.wg.input_dict,"},{"line_number":63,"context_line":"            wf_params\u003d{})"},{"line_number":64,"context_line":"        return wf_ex"}],"source_content_type":"text/x-python","patch_set":10,"id":"ba5201f7_9e06681b","line":61,"range":{"start_line":61,"start_character":12,"end_line":61,"end_character":53},"in_reply_to":"ba5201f7_ed6e292e","updated":"2017-01-05 12:29:11.000000000","message":"Thanks for pointing this. Will fix it.","commit_id":"fd73282b338f33023117fcf41ca5980ed4c0fc53"},{"author":{"_account_id":13380,"name":"Sridhar Ramaswamy","email":"srics.r@gmail.com","username":"srics-r"},"change_message_id":"cae6e9c52e1a9e0be6b212ba572b677181eff227","unresolved":false,"context_lines":[{"line_number":42,"context_line":"        self.wf_id \u003d None"},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"    def _get_client(self):"},{"line_number":45,"context_line":"        mistral_host \u003d cfg.CONF.mistral.host"},{"line_number":46,"context_line":"        mistral_port \u003d cfg.CONF.mistral.port"},{"line_number":47,"context_line":"        mistral_url \u003d \u0027http://\u0027 + mistral_host + \u0027:\u0027\\"},{"line_number":48,"context_line":"            + unicode(mistral_port) + \u0027/v2\u0027"},{"line_number":49,"context_line":"        client \u003d mistral_client.client(auth_token\u003dself.context.auth_token,"},{"line_number":50,"context_line":"                                   mistral_url\u003dmistral_url)"},{"line_number":51,"context_line":"        return client"}],"source_content_type":"text/x-python","patch_set":16,"id":"ba5201f7_46bf19fc","line":48,"range":{"start_line":45,"start_character":0,"end_line":48,"end_character":43},"updated":"2017-01-11 00:40:25.000000000","message":"Instead of getting this from user, you should get the mistral endpoint from keystone similar to how NeutronClient is does, see [1]\n\n[1] https://github.com/openstack/tacker/blob/master/tacker/nfvo/drivers/vim/openstack_driver.py#L457","commit_id":"ebbd50ba4ff83f69743debbc6a9231fdea19d17e"},{"author":{"_account_id":13380,"name":"Sridhar Ramaswamy","email":"srics.r@gmail.com","username":"srics-r"},"change_message_id":"44c1d36e77c9b8d1b35e9081eab786c6e9f8d654","unresolved":false,"context_lines":[{"line_number":45,"context_line":"            workflow_input\u003dself.wg.input_dict,"},{"line_number":46,"context_line":"            wf_params\u003d{})"},{"line_number":47,"context_line":"        return wf_ex"},{"line_number":48,"context_line":"        # start_time \u003d int(time.time())"},{"line_number":49,"context_line":"        # CHECKED \u003d 0"},{"line_number":50,"context_line":"        # while CHECKED \u003c FREQUENCY:"},{"line_number":51,"context_line":"        #     ex_state \u003d self.client.executions.get(wf_ex.id).state"},{"line_number":52,"context_line":"        #     if ex_state in (\u0027ERROR\u0027, \u0027SUCCESS\u0027):"},{"line_number":53,"context_line":"        #         break"},{"line_number":54,"context_line":"        #    time.sleep(SLEEP)"},{"line_number":55,"context_line":"        #     CHECKED +\u003d 1"},{"line_number":56,"context_line":"        # output \u003d wf_ex.output"},{"line_number":57,"context_line":"        # if ex_state \u003d\u003d \u0027ERROR\u0027:"},{"line_number":58,"context_line":"        #      err_msg \u003d \"Mistral error: %s\" % output"},{"line_number":59,"context_line":""},{"line_number":60,"context_line":"    def delete_execution(self, ex_id):"},{"line_number":61,"context_line":"        self.client.executions.delete(ex_id)"}],"source_content_type":"text/x-python","patch_set":21,"id":"7a3c09a3_4b2a5d91","line":58,"range":{"start_line":48,"start_character":0,"end_line":58,"end_character":53},"updated":"2017-01-17 22:48:19.000000000","message":"remove dead / comment out code.","commit_id":"4fa6a94c0d64b2efc50b906396d739a0e9feac33"},{"author":{"_account_id":2874,"name":"yong sheng gong","email":"gong.yongsheng@99cloud.net","username":"gongysh"},"change_message_id":"de182782599c3456b2c3f432594cd2fd11e5829b","unresolved":false,"context_lines":[{"line_number":30,"context_line":"    def prepare_workflow(self, **kwargs):"},{"line_number":31,"context_line":"        self.wg.task(**kwargs)"},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"    def upload(self):"},{"line_number":34,"context_line":"        definition_yaml \u003d yaml.dump(self.wg.definition)"},{"line_number":35,"context_line":"        wf \u003d self.client.workflows.create(definition_yaml)"},{"line_number":36,"context_line":"        wf_id \u003d wf[0].id"}],"source_content_type":"text/x-python","patch_set":22,"id":"5a3905b3_190eae34","line":33,"range":{"start_line":33,"start_character":8,"end_line":33,"end_character":14},"updated":"2017-01-19 07:02:45.000000000","message":"name it into: create_workflow","commit_id":"88beffe37ae90a266e7cda4e0102c7666ed13dbd"},{"author":{"_account_id":18955,"name":"dharmendra","email":"dharmendra.kushwaha@gmail.com","username":"dharmendra"},"change_message_id":"0db235ec8a4e388a580a571adafa3b5b3fdc104c","unresolved":false,"context_lines":[{"line_number":30,"context_line":"    def prepare_workflow(self, **kwargs):"},{"line_number":31,"context_line":"        self.wg.task(**kwargs)"},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"    def upload(self):"},{"line_number":34,"context_line":"        definition_yaml \u003d yaml.dump(self.wg.definition)"},{"line_number":35,"context_line":"        wf \u003d self.client.workflows.create(definition_yaml)"},{"line_number":36,"context_line":"        wf_id \u003d wf[0].id"}],"source_content_type":"text/x-python","patch_set":22,"id":"5a3905b3_345c16ed","line":33,"range":{"start_line":33,"start_character":8,"end_line":33,"end_character":14},"in_reply_to":"5a3905b3_190eae34","updated":"2017-01-20 02:44:17.000000000","message":"Done","commit_id":"88beffe37ae90a266e7cda4e0102c7666ed13dbd"},{"author":{"_account_id":13380,"name":"Sridhar Ramaswamy","email":"srics.r@gmail.com","username":"srics-r"},"change_message_id":"687023ec4e7453ec0aa9f078db737f1351713a1e","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":24,"id":"5a3905b3_978e272c","updated":"2017-01-23 23:12:03.000000000","message":"We need to consolidate all openstack client code into openstack vim component (which itself need to refactored out of NFVO [1]). Please move this to [2]\n\n[1] https://etherpad.openstack.org/p/tacker-pike-grooming\n[2] https://github.com/openstack/tacker/blob/master/tacker/nfvo/drivers/vim/openstack_driver.py","commit_id":"cf806d7e97ae4b3c5e13dd7f315e8088fc1fec0a"}],"tacker/nfvo/drivers/workflow/workflow_generator.py":[{"author":{"_account_id":18238,"name":"Hardik Parekh","email":"hardik.parekh047@gmail.com","username":"hparekh"},"change_message_id":"82be799dec1f00c812e1fab461dfea546b52d14e","unresolved":false,"context_lines":[{"line_number":24,"context_line":"    def __init__(self, resource, action):"},{"line_number":25,"context_line":"        self.resource \u003d resource"},{"line_number":26,"context_line":"        self.action \u003d action"},{"line_number":27,"context_line":"        self.wf_name \u003d self.action + \u0027_\u0027 + self.resource"},{"line_number":28,"context_line":"        self.wf_identifier \u003d \u0027std.\u0027 + self.wf_name + str(uuid.uuid4())"},{"line_number":29,"context_line":"        self.task \u003d getattr(self, self.wf_name)"},{"line_number":30,"context_line":"        self._build_basic_workflow()"},{"line_number":31,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"ba5201f7_8df2fd6d","line":28,"range":{"start_line":27,"start_character":8,"end_line":28,"end_character":70},"updated":"2017-01-04 05:09:49.000000000","message":"In mistral terms, wf_identifier is either workflow name or workflow id. I guess here by identifier you mean id. This id will be returned by mistral when you create workflow.","commit_id":"fd73282b338f33023117fcf41ca5980ed4c0fc53"},{"author":{"_account_id":18955,"name":"dharmendra","email":"dharmendra.kushwaha@gmail.com","username":"dharmendra"},"change_message_id":"99c681aa9cd3c7794bd58bbf7df0f09d82c78845","unresolved":false,"context_lines":[{"line_number":24,"context_line":"    def __init__(self, resource, action):"},{"line_number":25,"context_line":"        self.resource \u003d resource"},{"line_number":26,"context_line":"        self.action \u003d action"},{"line_number":27,"context_line":"        self.wf_name \u003d self.action + \u0027_\u0027 + self.resource"},{"line_number":28,"context_line":"        self.wf_identifier \u003d \u0027std.\u0027 + self.wf_name + str(uuid.uuid4())"},{"line_number":29,"context_line":"        self.task \u003d getattr(self, self.wf_name)"},{"line_number":30,"context_line":"        self._build_basic_workflow()"},{"line_number":31,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"ba5201f7_082962e6","line":28,"range":{"start_line":27,"start_character":8,"end_line":28,"end_character":70},"in_reply_to":"ba5201f7_8df2fd6d","updated":"2017-01-05 12:29:11.000000000","message":"Here we are using this wf_identifier to prepare workflow template at tacker side only, and no actual mistral workflow will be created till now.","commit_id":"fd73282b338f33023117fcf41ca5980ed4c0fc53"},{"author":{"_account_id":13380,"name":"Sridhar Ramaswamy","email":"srics.r@gmail.com","username":"srics-r"},"change_message_id":"687023ec4e7453ec0aa9f078db737f1351713a1e","unresolved":false,"context_lines":[{"line_number":139,"context_line":"    def build_input(self, ns, params):"},{"line_number":140,"context_line":"        vnfds \u003d ns[\u0027vnfd_details\u0027]"},{"line_number":141,"context_line":"        id \u003d str(uuid.uuid4())"},{"line_number":142,"context_line":"        self.input_dict \u003d {\u0027vnf\u0027: {}}"},{"line_number":143,"context_line":"        for vnfd_name, vnfd_info in iteritems(vnfds):"},{"line_number":144,"context_line":"            nodes \u003d vnfd_info[\u0027instances\u0027]"},{"line_number":145,"context_line":"            for node in nodes:"}],"source_content_type":"text/x-python","patch_set":24,"id":"5a3905b3_0353d439","line":142,"range":{"start_line":142,"start_character":8,"end_line":142,"end_character":37},"updated":"2017-01-23 23:12:03.000000000","message":"Shouldn\u0027t this belong to the __init__ method? I\u0027m confused by the timeline of this input_dict usage between here and in L178 below.\n\nAlso, suggestion, please expose a getter method to expose it outside the class [1]\n\n[1] https://review.openstack.org/#/c/414937/24/tacker/nfvo/drivers/workflow/mistral.py,unified L45","commit_id":"cf806d7e97ae4b3c5e13dd7f315e8088fc1fec0a"},{"author":{"_account_id":18955,"name":"dharmendra","email":"dharmendra.kushwaha@gmail.com","username":"dharmendra"},"change_message_id":"c592f05543c3299fe9ce6d83cd82a13fcb1b7669","unresolved":false,"context_lines":[{"line_number":139,"context_line":"    def build_input(self, ns, params):"},{"line_number":140,"context_line":"        vnfds \u003d ns[\u0027vnfd_details\u0027]"},{"line_number":141,"context_line":"        id \u003d str(uuid.uuid4())"},{"line_number":142,"context_line":"        self.input_dict \u003d {\u0027vnf\u0027: {}}"},{"line_number":143,"context_line":"        for vnfd_name, vnfd_info in iteritems(vnfds):"},{"line_number":144,"context_line":"            nodes \u003d vnfd_info[\u0027instances\u0027]"},{"line_number":145,"context_line":"            for node in nodes:"}],"source_content_type":"text/x-python","patch_set":24,"id":"5a3905b3_20727911","line":142,"range":{"start_line":142,"start_character":8,"end_line":142,"end_character":37},"in_reply_to":"5a3905b3_0353d439","updated":"2017-01-24 07:30:20.000000000","message":"Done","commit_id":"cf806d7e97ae4b3c5e13dd7f315e8088fc1fec0a"},{"author":{"_account_id":13380,"name":"Sridhar Ramaswamy","email":"srics.r@gmail.com","username":"srics-r"},"change_message_id":"687023ec4e7453ec0aa9f078db737f1351713a1e","unresolved":false,"context_lines":[{"line_number":175,"context_line":"    def delete_vnf(self, ns):"},{"line_number":176,"context_line":"        ns_dict \u003d {\u0027vnfd_details\u0027: {}}"},{"line_number":177,"context_line":"        vnf_ids \u003d ast.literal_eval(ns[\u0027vnf_ids\u0027])"},{"line_number":178,"context_line":"        self.input_dict \u003d dict()"},{"line_number":179,"context_line":"        self.definition[self.wf_identifier][\u0027input\u0027] \u003d []"},{"line_number":180,"context_line":"        for vnf in vnf_ids.keys():"},{"line_number":181,"context_line":"            vnf_key \u003d \u0027vnf_id_\u0027 + vnf"}],"source_content_type":"text/x-python","patch_set":24,"id":"5a3905b3_a328409b","line":178,"range":{"start_line":178,"start_character":8,"end_line":178,"end_character":32},"updated":"2017-01-23 23:12:03.000000000","message":"this usage differs from L142 above, why?","commit_id":"cf806d7e97ae4b3c5e13dd7f315e8088fc1fec0a"},{"author":{"_account_id":13485,"name":"Sripriya Seetharam","email":"sseetha@brocade.com","username":"Sripriya"},"change_message_id":"f4acbaed7b04ffe814a7aeb16a9725383b94e1cf","unresolved":false,"context_lines":[{"line_number":149,"context_line":"            for node in nodes:"},{"line_number":150,"context_line":"                self.input_dict[\u0027vnf\u0027][node] \u003d dict()"},{"line_number":151,"context_line":"                self.input_dict[\u0027vnf\u0027][node][\u0027vnf\u0027] \u003d {"},{"line_number":152,"context_line":"                    \u0027attributes\u0027: {},"},{"line_number":153,"context_line":"                    \u0027vim_id\u0027: ns[\u0027ns\u0027].get(\u0027vim_id\u0027, \u0027\u0027),"},{"line_number":154,"context_line":"                    \u0027vnfd_id\u0027: vnfd_info[\u0027id\u0027],"},{"line_number":155,"context_line":"                    \u0027name\u0027: \u0027create_vnf_%s_%s\u0027 % (vnfd_info[\u0027id\u0027],"},{"line_number":156,"context_line":"                        id)"},{"line_number":157,"context_line":"                }"},{"line_number":158,"context_line":"                if params.get(vnfd_name):"},{"line_number":159,"context_line":"                    self.input_dict[\u0027vnf\u0027][node][\u0027vnf\u0027][\u0027attributes\u0027] \u003d {"}],"source_content_type":"text/x-python","patch_set":31,"id":"3a461143_cbe59cdc","line":156,"range":{"start_line":152,"start_character":20,"end_line":156,"end_character":27},"updated":"2017-01-30 04:18:43.000000000","message":"i do not see actions and triggers (scaling and monitoring policies) being handled here","commit_id":"15c4d7ec5d51cd159579f084f7b3773dac6725f1"}],"tacker/nfvo/nfvo_plugin.py":[{"author":{"_account_id":18238,"name":"Hardik Parekh","email":"hardik.parekh047@gmail.com","username":"hparekh"},"change_message_id":"82be799dec1f00c812e1fab461dfea546b52d14e","unresolved":false,"context_lines":[{"line_number":43,"context_line":"from tacker.extensions import common_services as cs"},{"line_number":44,"context_line":"from tacker.extensions import nfvo"},{"line_number":45,"context_line":"from tacker import manager"},{"line_number":46,"context_line":"from tacker.nfvo.drivers.workflow.mistral import MistralClient"},{"line_number":47,"context_line":"from tacker.plugins.common import constants"},{"line_number":48,"context_line":"from tacker.vnfm.tosca import utils as toscautils"},{"line_number":49,"context_line":"from toscaparser import tosca_template"}],"source_content_type":"text/x-python","patch_set":10,"id":"ba5201f7_4d9015ed","line":46,"range":{"start_line":46,"start_character":49,"end_line":46,"end_character":62},"updated":"2017-01-04 05:09:49.000000000","message":"As per Openstack guide line don\u0027t import classes. Please import module instead.","commit_id":"fd73282b338f33023117fcf41ca5980ed4c0fc53"},{"author":{"_account_id":18955,"name":"dharmendra","email":"dharmendra.kushwaha@gmail.com","username":"dharmendra"},"change_message_id":"99c681aa9cd3c7794bd58bbf7df0f09d82c78845","unresolved":false,"context_lines":[{"line_number":43,"context_line":"from tacker.extensions import common_services as cs"},{"line_number":44,"context_line":"from tacker.extensions import nfvo"},{"line_number":45,"context_line":"from tacker import manager"},{"line_number":46,"context_line":"from tacker.nfvo.drivers.workflow.mistral import MistralClient"},{"line_number":47,"context_line":"from tacker.plugins.common import constants"},{"line_number":48,"context_line":"from tacker.vnfm.tosca import utils as toscautils"},{"line_number":49,"context_line":"from toscaparser import tosca_template"}],"source_content_type":"text/x-python","patch_set":10,"id":"ba5201f7_a3c317ec","line":46,"range":{"start_line":46,"start_character":49,"end_line":46,"end_character":62},"in_reply_to":"ba5201f7_4d9015ed","updated":"2017-01-05 12:29:11.000000000","message":"Done","commit_id":"fd73282b338f33023117fcf41ca5980ed4c0fc53"},{"author":{"_account_id":2874,"name":"yong sheng gong","email":"gong.yongsheng@99cloud.net","username":"gongysh"},"change_message_id":"13dd7cb787cb4bbcf54ba80329b3a4908d74e0f7","unresolved":false,"context_lines":[{"line_number":512,"context_line":"        nsd_dict \u003d yaml.load(nsd[\u0027attributes\u0027][\u0027nsd\u0027])"},{"line_number":513,"context_line":"        vnfm_plugin \u003d manager.TackerManager.get_service_plugins()[\u0027VNFM\u0027]"},{"line_number":514,"context_line":"        onboarded_vnfds \u003d vnfm_plugin.get_vnfds(context, [])"},{"line_number":515,"context_line":"        if self._get_by_name(context, ns_db.NS, ns[\u0027ns\u0027][\u0027name\u0027]):"},{"line_number":516,"context_line":"            raise exceptions.DuplicateResourceName(resource\u003d\u0027NS\u0027,"},{"line_number":517,"context_line":"                name\u003dns[\u0027ns\u0027][\u0027name\u0027])"},{"line_number":518,"context_line":""},{"line_number":519,"context_line":"        # Step-1"},{"line_number":520,"context_line":"        param_values \u003d ns[\u0027ns\u0027][\u0027attributes\u0027].get(\u0027param_values\u0027, {})"}],"source_content_type":"text/x-python","patch_set":14,"id":"ba5201f7_e20b2f22","line":517,"range":{"start_line":515,"start_character":0,"end_line":517,"end_character":38},"updated":"2017-01-06 11:10:28.000000000","message":"please do it via mysql unique index.","commit_id":"1fa746f9cde08e9a35b3b8f4663270c81cb37b65"},{"author":{"_account_id":2874,"name":"yong sheng gong","email":"gong.yongsheng@99cloud.net","username":"gongysh"},"change_message_id":"13dd7cb787cb4bbcf54ba80329b3a4908d74e0f7","unresolved":false,"context_lines":[{"line_number":522,"context_line":"            self._process_parameterized_input(ns[\u0027ns\u0027][\u0027attributes\u0027],"},{"line_number":523,"context_line":"                    nsd_dict)"},{"line_number":524,"context_line":"        # Step-2"},{"line_number":525,"context_line":"        vnfs \u003d ast.literal_eval(nsd[\u0027vnfs\u0027])"},{"line_number":526,"context_line":"        # vnfd_dict is used while generating workflow"},{"line_number":527,"context_line":"        vnfd_dict \u003d dict()"},{"line_number":528,"context_line":"        for node_name, node_val in \\"}],"source_content_type":"text/x-python","patch_set":14,"id":"ba5201f7_22129757","line":525,"range":{"start_line":525,"start_character":15,"end_line":525,"end_character":44},"updated":"2017-01-06 11:10:28.000000000","message":"don\u0027t this way have security risk?","commit_id":"1fa746f9cde08e9a35b3b8f4663270c81cb37b65"},{"author":{"_account_id":18955,"name":"dharmendra","email":"dharmendra.kushwaha@gmail.com","username":"dharmendra"},"change_message_id":"08139beb7fcf51d1e8a7121cca8c1689982c4439","unresolved":false,"context_lines":[{"line_number":522,"context_line":"            self._process_parameterized_input(ns[\u0027ns\u0027][\u0027attributes\u0027],"},{"line_number":523,"context_line":"                    nsd_dict)"},{"line_number":524,"context_line":"        # Step-2"},{"line_number":525,"context_line":"        vnfs \u003d ast.literal_eval(nsd[\u0027vnfs\u0027])"},{"line_number":526,"context_line":"        # vnfd_dict is used while generating workflow"},{"line_number":527,"context_line":"        vnfd_dict \u003d dict()"},{"line_number":528,"context_line":"        for node_name, node_val in \\"}],"source_content_type":"text/x-python","patch_set":14,"id":"ba5201f7_b51a147b","line":525,"range":{"start_line":525,"start_character":15,"end_line":525,"end_character":44},"in_reply_to":"ba5201f7_22129757","updated":"2017-01-08 19:20:28.000000000","message":"IMO, no reason to have security risk. Its only parse string into Abstract Syntax Trees and return only if it is a literal.","commit_id":"1fa746f9cde08e9a35b3b8f4663270c81cb37b65"},{"author":{"_account_id":13380,"name":"Sridhar Ramaswamy","email":"srics.r@gmail.com","username":"srics-r"},"change_message_id":"cae6e9c52e1a9e0be6b212ba572b677181eff227","unresolved":false,"context_lines":[{"line_number":578,"context_line":"                    break"},{"line_number":579,"context_line":"                mistral_retries \u003d mistral_retries - 1"},{"line_number":580,"context_line":"            error_reason \u003d None"},{"line_number":581,"context_line":"            if mistral_retries \u003d\u003d 0 and exec_state \u003d\u003d \u0027RUNNING\u0027:"},{"line_number":582,"context_line":"                error_reason \u003d _(\"NS creation is not completed within\""},{"line_number":583,"context_line":"                               \" {wait} seconds as creation of mistral\""},{"line_number":584,"context_line":"                               \" exection {mistral} is not completed\").format("}],"source_content_type":"text/x-python","patch_set":16,"id":"ba5201f7_86710147","line":581,"range":{"start_line":581,"start_character":12,"end_line":581,"end_character":64},"updated":"2017-01-11 00:40:25.000000000","message":"In this condition, what does the operator expected to do ? Call ns-delete  on the errored NS ? Will that successfully delete all / partial VNFs / VL created and clean up the mistral workflow started in L565. \n\nI\u0027m worried mistral workflow instances will continuously leak after effort failure due to this condition.","commit_id":"ebbd50ba4ff83f69743debbc6a9231fdea19d17e"},{"author":{"_account_id":13380,"name":"Sridhar Ramaswamy","email":"srics.r@gmail.com","username":"srics-r"},"change_message_id":"08af11b620bcf9ba1ca3a18ab5571dc7b147e057","unresolved":false,"context_lines":[{"line_number":578,"context_line":"                    break"},{"line_number":579,"context_line":"                mistral_retries \u003d mistral_retries - 1"},{"line_number":580,"context_line":"            error_reason \u003d None"},{"line_number":581,"context_line":"            if mistral_retries \u003d\u003d 0 and exec_state \u003d\u003d \u0027RUNNING\u0027:"},{"line_number":582,"context_line":"                error_reason \u003d _(\"NS creation is not completed within\""},{"line_number":583,"context_line":"                               \" {wait} seconds as creation of mistral\""},{"line_number":584,"context_line":"                               \" exection {mistral} is not completed\").format("}],"source_content_type":"text/x-python","patch_set":16,"id":"7a3c09a3_7dec402a","line":581,"range":{"start_line":581,"start_character":12,"end_line":581,"end_character":64},"in_reply_to":"7a3c09a3_3f41883a","updated":"2017-01-17 22:46:33.000000000","message":"Sounds good.","commit_id":"ebbd50ba4ff83f69743debbc6a9231fdea19d17e"},{"author":{"_account_id":18955,"name":"dharmendra","email":"dharmendra.kushwaha@gmail.com","username":"dharmendra"},"change_message_id":"b75e3949c75c3a46c056a6f78ab719bed87fcd0d","unresolved":false,"context_lines":[{"line_number":578,"context_line":"                    break"},{"line_number":579,"context_line":"                mistral_retries \u003d mistral_retries - 1"},{"line_number":580,"context_line":"            error_reason \u003d None"},{"line_number":581,"context_line":"            if mistral_retries \u003d\u003d 0 and exec_state \u003d\u003d \u0027RUNNING\u0027:"},{"line_number":582,"context_line":"                error_reason \u003d _(\"NS creation is not completed within\""},{"line_number":583,"context_line":"                               \" {wait} seconds as creation of mistral\""},{"line_number":584,"context_line":"                               \" exection {mistral} is not completed\").format("}],"source_content_type":"text/x-python","patch_set":16,"id":"7a3c09a3_3f41883a","line":581,"range":{"start_line":581,"start_character":12,"end_line":581,"end_character":64},"in_reply_to":"ba5201f7_86710147","updated":"2017-01-16 11:00:47.000000000","message":"\u003e\u003eI\u0027m worried mistral workflow instances will continuously leak after effort failure due to this condition.\n\nThanks for pointing out this, We will make sure that after completion of workflow execution, mistral related entries will be cleaned up. Fixed in latest patch","commit_id":"ebbd50ba4ff83f69743debbc6a9231fdea19d17e"},{"author":{"_account_id":13380,"name":"Sridhar Ramaswamy","email":"srics.r@gmail.com","username":"srics-r"},"change_message_id":"cae6e9c52e1a9e0be6b212ba572b677181eff227","unresolved":false,"context_lines":[{"line_number":625,"context_line":"        mc.prepare_workflow(ns\u003dns)"},{"line_number":626,"context_line":"        mc.upload()"},{"line_number":627,"context_line":"        try:"},{"line_number":628,"context_line":"            mistral_execution \u003d mc.execute_workflow()"},{"line_number":629,"context_line":"        except Exception as ex:"},{"line_number":630,"context_line":"            raise ex"},{"line_number":631,"context_line":"        super(NfvoPlugin, self).delete_ns(context, ns_id)"}],"source_content_type":"text/x-python","patch_set":16,"id":"ba5201f7_069c315c","line":628,"range":{"start_line":628,"start_character":0,"end_line":628,"end_character":53},"updated":"2017-01-11 00:40:25.000000000","message":"Dumb question. Is this a new mistral workflow for \"delete\" ? What happens to the  \"create\" mistral workflow ? Who cleans that up - in both success and error case ?","commit_id":"ebbd50ba4ff83f69743debbc6a9231fdea19d17e"},{"author":{"_account_id":13380,"name":"Sridhar Ramaswamy","email":"srics.r@gmail.com","username":"srics-r"},"change_message_id":"08af11b620bcf9ba1ca3a18ab5571dc7b147e057","unresolved":false,"context_lines":[{"line_number":625,"context_line":"        mc.prepare_workflow(ns\u003dns)"},{"line_number":626,"context_line":"        mc.upload()"},{"line_number":627,"context_line":"        try:"},{"line_number":628,"context_line":"            mistral_execution \u003d mc.execute_workflow()"},{"line_number":629,"context_line":"        except Exception as ex:"},{"line_number":630,"context_line":"            raise ex"},{"line_number":631,"context_line":"        super(NfvoPlugin, self).delete_ns(context, ns_id)"}],"source_content_type":"text/x-python","patch_set":16,"id":"7a3c09a3_7d77e09f","line":628,"range":{"start_line":628,"start_character":0,"end_line":628,"end_character":53},"in_reply_to":"7a3c09a3_9fb6fc3b","updated":"2017-01-17 22:46:33.000000000","message":"Sounds good!","commit_id":"ebbd50ba4ff83f69743debbc6a9231fdea19d17e"},{"author":{"_account_id":18955,"name":"dharmendra","email":"dharmendra.kushwaha@gmail.com","username":"dharmendra"},"change_message_id":"b75e3949c75c3a46c056a6f78ab719bed87fcd0d","unresolved":false,"context_lines":[{"line_number":625,"context_line":"        mc.prepare_workflow(ns\u003dns)"},{"line_number":626,"context_line":"        mc.upload()"},{"line_number":627,"context_line":"        try:"},{"line_number":628,"context_line":"            mistral_execution \u003d mc.execute_workflow()"},{"line_number":629,"context_line":"        except Exception as ex:"},{"line_number":630,"context_line":"            raise ex"},{"line_number":631,"context_line":"        super(NfvoPlugin, self).delete_ns(context, ns_id)"}],"source_content_type":"text/x-python","patch_set":16,"id":"7a3c09a3_9fb6fc3b","line":628,"range":{"start_line":628,"start_character":0,"end_line":628,"end_character":53},"in_reply_to":"ba5201f7_069c315c","updated":"2017-01-16 11:00:47.000000000","message":"Right, If an user want to delete an already created network service, this workflow will be called inside delete_ns to  delete the ns(including all VNFs which are created within that particular NS).\n\nOnce a mistral resource(ex. workflow) completed its execution(independence of success/failure), it will be cleaned up. I will update patch for that.","commit_id":"ebbd50ba4ff83f69743debbc6a9231fdea19d17e"},{"author":{"_account_id":2874,"name":"yong sheng gong","email":"gong.yongsheng@99cloud.net","username":"gongysh"},"change_message_id":"de182782599c3456b2c3f432594cd2fd11e5829b","unresolved":false,"context_lines":[{"line_number":513,"context_line":"        nsd \u003d self.get_nsd(context, ns[\u0027ns\u0027][\u0027nsd_id\u0027])"},{"line_number":514,"context_line":"        nsd_dict \u003d yaml.load(nsd[\u0027attributes\u0027][\u0027nsd\u0027])"},{"line_number":515,"context_line":"        vnfm_plugin \u003d manager.TackerManager.get_service_plugins()[\u0027VNFM\u0027]"},{"line_number":516,"context_line":"        onboarded_vnfds \u003d vnfm_plugin.get_vnfds(context, [])"},{"line_number":517,"context_line":"        region_name \u003d ns.setdefault(\u0027placement_attr\u0027, {}).get("},{"line_number":518,"context_line":"            \u0027region_name\u0027, None)"},{"line_number":519,"context_line":"        vim_res \u003d self.vim_client.get_vim(context, ns[\u0027ns\u0027][\u0027vim_id\u0027],"}],"source_content_type":"text/x-python","patch_set":22,"id":"5a3905b3_02bb9873","line":516,"range":{"start_line":516,"start_character":8,"end_line":516,"end_character":60},"updated":"2017-01-19 07:02:45.000000000","message":"It is bad to get all vnfd.","commit_id":"88beffe37ae90a266e7cda4e0102c7666ed13dbd"},{"author":{"_account_id":2874,"name":"yong sheng gong","email":"gong.yongsheng@99cloud.net","username":"gongysh"},"change_message_id":"de182782599c3456b2c3f432594cd2fd11e5829b","unresolved":false,"context_lines":[{"line_number":583,"context_line":"            mistral_retries \u003d MISTRAL_RETRIES"},{"line_number":584,"context_line":"            while exec_state \u003d\u003d \"RUNNING\" and mistral_retries \u003e 0:"},{"line_number":585,"context_line":"                time.sleep(MISTRAL_RETRY_WAIT)"},{"line_number":586,"context_line":"                exec_state \u003d mc.client.executions.get(execution_id).state"},{"line_number":587,"context_line":"                LOG.debug(_(\u0027status: %s\u0027), exec_state)"},{"line_number":588,"context_line":"                if exec_state \u003d\u003d \u0027SUCCESS\u0027 or exec_state \u003d\u003d \u0027ERROR\u0027:"},{"line_number":589,"context_line":"                    break"}],"source_content_type":"text/x-python","patch_set":22,"id":"5a3905b3_f96d62cd","line":586,"range":{"start_line":586,"start_character":16,"end_line":586,"end_character":73},"updated":"2017-01-19 07:02:45.000000000","message":"encapsulate the executions into mc: mc.get_execution_state(execution_id)","commit_id":"88beffe37ae90a266e7cda4e0102c7666ed13dbd"},{"author":{"_account_id":18955,"name":"dharmendra","email":"dharmendra.kushwaha@gmail.com","username":"dharmendra"},"change_message_id":"0db235ec8a4e388a580a571adafa3b5b3fdc104c","unresolved":false,"context_lines":[{"line_number":583,"context_line":"            mistral_retries \u003d MISTRAL_RETRIES"},{"line_number":584,"context_line":"            while exec_state \u003d\u003d \"RUNNING\" and mistral_retries \u003e 0:"},{"line_number":585,"context_line":"                time.sleep(MISTRAL_RETRY_WAIT)"},{"line_number":586,"context_line":"                exec_state \u003d mc.client.executions.get(execution_id).state"},{"line_number":587,"context_line":"                LOG.debug(_(\u0027status: %s\u0027), exec_state)"},{"line_number":588,"context_line":"                if exec_state \u003d\u003d \u0027SUCCESS\u0027 or exec_state \u003d\u003d \u0027ERROR\u0027:"},{"line_number":589,"context_line":"                    break"}],"source_content_type":"text/x-python","patch_set":22,"id":"5a3905b3_547d221b","line":586,"range":{"start_line":586,"start_character":16,"end_line":586,"end_character":73},"in_reply_to":"5a3905b3_f96d62cd","updated":"2017-01-20 02:44:17.000000000","message":"Done","commit_id":"88beffe37ae90a266e7cda4e0102c7666ed13dbd"},{"author":{"_account_id":2874,"name":"yong sheng gong","email":"gong.yongsheng@99cloud.net","username":"gongysh"},"change_message_id":"de182782599c3456b2c3f432594cd2fd11e5829b","unresolved":false,"context_lines":[{"line_number":595,"context_line":"                               \" exection {mistral} is not completed\").format("},{"line_number":596,"context_line":"                                   wait\u003dMISTRAL_RETRIES * MISTRAL_RETRY_WAIT,"},{"line_number":597,"context_line":"                                   mistral\u003dexecution_id)"},{"line_number":598,"context_line":"            exec_obj \u003d mc.client.executions.get(execution_id)"},{"line_number":599,"context_line":"            mc.delete_execution(execution_id)"},{"line_number":600,"context_line":"            mc.delete_workflow(wf_id)"},{"line_number":601,"context_line":"            super(NfvoPlugin, self).create_ns_post(context, ns_id, exec_obj,"}],"source_content_type":"text/x-python","patch_set":22,"id":"5a3905b3_19aa2ed5","line":598,"range":{"start_line":598,"start_character":12,"end_line":598,"end_character":61},"updated":"2017-01-19 07:02:45.000000000","message":"don\u0027t scatter the mistral object everywhere.","commit_id":"88beffe37ae90a266e7cda4e0102c7666ed13dbd"},{"author":{"_account_id":18955,"name":"dharmendra","email":"dharmendra.kushwaha@gmail.com","username":"dharmendra"},"change_message_id":"0db235ec8a4e388a580a571adafa3b5b3fdc104c","unresolved":false,"context_lines":[{"line_number":595,"context_line":"                               \" exection {mistral} is not completed\").format("},{"line_number":596,"context_line":"                                   wait\u003dMISTRAL_RETRIES * MISTRAL_RETRY_WAIT,"},{"line_number":597,"context_line":"                                   mistral\u003dexecution_id)"},{"line_number":598,"context_line":"            exec_obj \u003d mc.client.executions.get(execution_id)"},{"line_number":599,"context_line":"            mc.delete_execution(execution_id)"},{"line_number":600,"context_line":"            mc.delete_workflow(wf_id)"},{"line_number":601,"context_line":"            super(NfvoPlugin, self).create_ns_post(context, ns_id, exec_obj,"}],"source_content_type":"text/x-python","patch_set":22,"id":"5a3905b3_b472c647","line":598,"range":{"start_line":598,"start_character":12,"end_line":598,"end_character":61},"in_reply_to":"5a3905b3_19aa2ed5","updated":"2017-01-20 02:44:17.000000000","message":"Done","commit_id":"88beffe37ae90a266e7cda4e0102c7666ed13dbd"},{"author":{"_account_id":2874,"name":"yong sheng gong","email":"gong.yongsheng@99cloud.net","username":"gongysh"},"change_message_id":"de182782599c3456b2c3f432594cd2fd11e5829b","unresolved":false,"context_lines":[{"line_number":598,"context_line":"            exec_obj \u003d mc.client.executions.get(execution_id)"},{"line_number":599,"context_line":"            mc.delete_execution(execution_id)"},{"line_number":600,"context_line":"            mc.delete_workflow(wf_id)"},{"line_number":601,"context_line":"            super(NfvoPlugin, self).create_ns_post(context, ns_id, exec_obj,"},{"line_number":602,"context_line":"                    vnfd_dict, error_reason)"},{"line_number":603,"context_line":""},{"line_number":604,"context_line":"        self.spawn_n(_create_ns_wait, self, ns_dict[\u0027id\u0027],"}],"source_content_type":"text/x-python","patch_set":22,"id":"5a3905b3_f97ba279","line":601,"range":{"start_line":601,"start_character":67,"end_line":601,"end_character":75},"updated":"2017-01-19 07:02:45.000000000","message":"we can just put the state, and output as parameter of this function","commit_id":"88beffe37ae90a266e7cda4e0102c7666ed13dbd"},{"author":{"_account_id":13380,"name":"Sridhar Ramaswamy","email":"srics.r@gmail.com","username":"srics-r"},"change_message_id":"687023ec4e7453ec0aa9f078db737f1351713a1e","unresolved":false,"context_lines":[{"line_number":656,"context_line":"                LOG.debug(_(\u0027status: %s\u0027), exec_state)"},{"line_number":657,"context_line":"                if exec_state \u003d\u003d \u0027SUCCESS\u0027 or exec_state \u003d\u003d \u0027ERROR\u0027:"},{"line_number":658,"context_line":"                    break"},{"line_number":659,"context_line":"                mistral_retries \u003d mistral_retries - 1"},{"line_number":660,"context_line":"            error_reason \u003d None"},{"line_number":661,"context_line":"            if mistral_retries \u003d\u003d 0 and exec_state \u003d\u003d \u0027RUNNING\u0027:"},{"line_number":662,"context_line":"                error_reason \u003d _(\"NS deletion is not completed within\""}],"source_content_type":"text/x-python","patch_set":24,"id":"5a3905b3_83e984b9","line":659,"range":{"start_line":659,"start_character":16,"end_line":659,"end_character":53},"updated":"2017-01-23 23:12:03.000000000","message":"nit: augmented assignment , \n\nmistral_retries -\u003d 1","commit_id":"cf806d7e97ae4b3c5e13dd7f315e8088fc1fec0a"},{"author":{"_account_id":18955,"name":"dharmendra","email":"dharmendra.kushwaha@gmail.com","username":"dharmendra"},"change_message_id":"c592f05543c3299fe9ce6d83cd82a13fcb1b7669","unresolved":false,"context_lines":[{"line_number":656,"context_line":"                LOG.debug(_(\u0027status: %s\u0027), exec_state)"},{"line_number":657,"context_line":"                if exec_state \u003d\u003d \u0027SUCCESS\u0027 or exec_state \u003d\u003d \u0027ERROR\u0027:"},{"line_number":658,"context_line":"                    break"},{"line_number":659,"context_line":"                mistral_retries \u003d mistral_retries - 1"},{"line_number":660,"context_line":"            error_reason \u003d None"},{"line_number":661,"context_line":"            if mistral_retries \u003d\u003d 0 and exec_state \u003d\u003d \u0027RUNNING\u0027:"},{"line_number":662,"context_line":"                error_reason \u003d _(\"NS deletion is not completed within\""}],"source_content_type":"text/x-python","patch_set":24,"id":"5a3905b3_c0de15dc","line":659,"range":{"start_line":659,"start_character":16,"end_line":659,"end_character":53},"in_reply_to":"5a3905b3_83e984b9","updated":"2017-01-24 07:30:20.000000000","message":"Done","commit_id":"cf806d7e97ae4b3c5e13dd7f315e8088fc1fec0a"},{"author":{"_account_id":13380,"name":"Sridhar Ramaswamy","email":"srics.r@gmail.com","username":"srics-r"},"change_message_id":"687023ec4e7453ec0aa9f078db737f1351713a1e","unresolved":false,"context_lines":[{"line_number":670,"context_line":"            super(NfvoPlugin, self).delete_ns_post(context, ns_id, exec_obj,"},{"line_number":671,"context_line":"                    error_reason)"},{"line_number":672,"context_line":""},{"line_number":673,"context_line":"        self.spawn_n(_delete_ns_wait, ns[\u0027id\u0027],"},{"line_number":674,"context_line":"                mistral_execution.id)"},{"line_number":675,"context_line":"        return ns[\u0027id\u0027]"}],"source_content_type":"text/x-python","patch_set":24,"id":"5a3905b3_63dc9846","line":674,"range":{"start_line":673,"start_character":0,"end_line":674,"end_character":37},"updated":"2017-01-23 23:12:03.000000000","message":"nit: a general suggestion to adhere to pep8 newline under-indented warning. Even though we are not enforcing it is worth take care of this in the new code.\n\nhttps://www.python.org/dev/peps/pep-0008/#indentation\nhttp://stackoverflow.com/questions/15435811/what-is-pep8s-e128-continuation-line-under-indented-for-visual-indent","commit_id":"cf806d7e97ae4b3c5e13dd7f315e8088fc1fec0a"},{"author":{"_account_id":18955,"name":"dharmendra","email":"dharmendra.kushwaha@gmail.com","username":"dharmendra"},"change_message_id":"c592f05543c3299fe9ce6d83cd82a13fcb1b7669","unresolved":false,"context_lines":[{"line_number":670,"context_line":"            super(NfvoPlugin, self).delete_ns_post(context, ns_id, exec_obj,"},{"line_number":671,"context_line":"                    error_reason)"},{"line_number":672,"context_line":""},{"line_number":673,"context_line":"        self.spawn_n(_delete_ns_wait, ns[\u0027id\u0027],"},{"line_number":674,"context_line":"                mistral_execution.id)"},{"line_number":675,"context_line":"        return ns[\u0027id\u0027]"}],"source_content_type":"text/x-python","patch_set":24,"id":"5a3905b3_c08c55dc","line":674,"range":{"start_line":673,"start_character":0,"end_line":674,"end_character":37},"in_reply_to":"5a3905b3_63dc9846","updated":"2017-01-24 07:30:20.000000000","message":"Done","commit_id":"cf806d7e97ae4b3c5e13dd7f315e8088fc1fec0a"},{"author":{"_account_id":13485,"name":"Sripriya Seetharam","email":"sseetha@brocade.com","username":"Sripriya"},"change_message_id":"4185d40c80920d4782ffccd264fe87d3130329fd","unresolved":false,"context_lines":[{"line_number":580,"context_line":"                workflow\u003dworkflow,"},{"line_number":581,"context_line":"                vim_auth\u003dvim_res[\u0027vim_auth\u0027],"},{"line_number":582,"context_line":"                auth_token\u003dcontext.auth_token)"},{"line_number":583,"context_line":"        except Exception as ex:"},{"line_number":584,"context_line":"            raise ex"},{"line_number":585,"context_line":"        ns_dict \u003d super(NfvoPlugin, self).create_ns(context, ns)"},{"line_number":586,"context_line":""},{"line_number":587,"context_line":"        def _create_ns_wait(self_obj, ns_id, execution_id):"}],"source_content_type":"text/x-python","patch_set":31,"id":"3a461143_cb0d9ce9","line":584,"range":{"start_line":583,"start_character":8,"end_line":584,"end_character":20},"updated":"2017-01-30 04:13:24.000000000","message":"for the exception case, we will have to delete workflow if execute workflow failed and also remove any errored VNFs","commit_id":"15c4d7ec5d51cd159579f084f7b3773dac6725f1"},{"author":{"_account_id":18955,"name":"dharmendra","email":"dharmendra.kushwaha@gmail.com","username":"dharmendra"},"change_message_id":"db9d4021fbdc956ae57bc00b25449b2ef27f6457","unresolved":false,"context_lines":[{"line_number":580,"context_line":"                workflow\u003dworkflow,"},{"line_number":581,"context_line":"                vim_auth\u003dvim_res[\u0027vim_auth\u0027],"},{"line_number":582,"context_line":"                auth_token\u003dcontext.auth_token)"},{"line_number":583,"context_line":"        except Exception as ex:"},{"line_number":584,"context_line":"            raise ex"},{"line_number":585,"context_line":"        ns_dict \u003d super(NfvoPlugin, self).create_ns(context, ns)"},{"line_number":586,"context_line":""},{"line_number":587,"context_line":"        def _create_ns_wait(self_obj, ns_id, execution_id):"}],"source_content_type":"text/x-python","patch_set":31,"id":"3a461143_23db7c1c","line":584,"range":{"start_line":583,"start_character":8,"end_line":584,"end_character":20},"in_reply_to":"3a461143_cb0d9ce9","updated":"2017-01-31 06:23:09.000000000","message":"Once execution finish, we already deleting the workflow and execution in line #614 #619. But yes it is a very good point to clean them in case of failure also, we missed that.\nI will raise bug for that and will fix it.","commit_id":"15c4d7ec5d51cd159579f084f7b3773dac6725f1"}],"tacker/tests/etc/samples/sample-tosca-nsd.yaml":[{"author":{"_account_id":13380,"name":"Sridhar Ramaswamy","email":"srics.r@gmail.com","username":"srics-r"},"change_message_id":"f7a87150d244d4e1d91ed88de84150e433fb1c1e","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":22,"id":"7a3c09a3_03ce3cb4","line":38,"updated":"2017-01-18 19:43:41.000000000","message":"Do we have support for new network (VL) creation like [1] in NSD ? I thought we did based on a previous discussion. New network creation will be very useful to create \"private\" virtual-links to interconnect VNFs instantiated by a NSD.\n\n[1] https://github.com/openstack/tacker/blob/master/samples/tosca-templates/vnfd/tosca-vnfd-network.yaml#L61","commit_id":"88beffe37ae90a266e7cda4e0102c7666ed13dbd"},{"author":{"_account_id":12455,"name":"bharaththiruveedula","email":"bharath_ves@hotmail.com","username":"bharaththiruveedula"},"change_message_id":"9d830c66fec59e05399ee02850749f7b986f60b9","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":22,"id":"5a3905b3_69ddfc41","line":38,"in_reply_to":"5a3905b3_53fc9c3e","updated":"2017-01-19 17:17:50.000000000","message":"And I tested this part, we can specify new VLs too.","commit_id":"88beffe37ae90a266e7cda4e0102c7666ed13dbd"},{"author":{"_account_id":12455,"name":"bharaththiruveedula","email":"bharath_ves@hotmail.com","username":"bharaththiruveedula"},"change_message_id":"0b9ea7bba10735f23aa8e91ea90d6341b9ec46d3","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":22,"id":"7a3c09a3_1845ca16","line":38,"in_reply_to":"7a3c09a3_03ce3cb4","updated":"2017-01-18 20:16:28.000000000","message":"As we discussed in the process of writing specs[1](Line# 222), we are  referencing existing networks only. But if we see the implementation, we are adding the resources from nsd to corresponding VNFD, so it creates new networks too. But this part wasn\u0027t tested yet.","commit_id":"88beffe37ae90a266e7cda4e0102c7666ed13dbd"},{"author":{"_account_id":13380,"name":"Sridhar Ramaswamy","email":"srics.r@gmail.com","username":"srics-r"},"change_message_id":"d17c73bcdb1a37c19a39decfc2d5ca06a9da88a4","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":22,"id":"7a3c09a3_dfbde4d8","line":38,"in_reply_to":"7a3c09a3_1845ca16","updated":"2017-01-18 21:54:59.000000000","message":"Thanks for the clarification, i remember asking this earlier :)\n\nCan you elaborate what you mean by \"adding the resources from nsd to vnfd\" ? Can you point to the code in the PS ?","commit_id":"88beffe37ae90a266e7cda4e0102c7666ed13dbd"},{"author":{"_account_id":12455,"name":"bharaththiruveedula","email":"bharath_ves@hotmail.com","username":"bharaththiruveedula"},"change_message_id":"a957b75ea2fc215b84d60b348cb00da8b08ee883","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":22,"id":"7a3c09a3_9868da89","line":38,"in_reply_to":"7a3c09a3_1845ca16","updated":"2017-01-18 20:17:42.000000000","message":"[1]https://review.openstack.org/#/c/304667/17/specs/ocata/nsd-support.rst","commit_id":"88beffe37ae90a266e7cda4e0102c7666ed13dbd"},{"author":{"_account_id":12455,"name":"bharaththiruveedula","email":"bharath_ves@hotmail.com","username":"bharaththiruveedula"},"change_message_id":"b1949b4977f39b32626ac82bb7817ddacf298119","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":22,"id":"5a3905b3_53fc9c3e","line":38,"in_reply_to":"7a3c09a3_dfbde4d8","updated":"2017-01-19 02:15:30.000000000","message":"In [1] from L#555 to L#563 we are building params_dict which contains substitutable resources. And in [2] we are substituting those resources from params to VNFD in the \"def check_for_substitution_mappings\"\n\n[1]https://review.openstack.org/#/c/414937/22/tacker/nfvo/nfvo_plugin.py\n[2]https://review.openstack.org/#/c/414937/22/tacker/vnfm/tosca/utils.py","commit_id":"88beffe37ae90a266e7cda4e0102c7666ed13dbd"}],"tacker/tests/functional/nfvo/test_nfvo.py":[{"author":{"_account_id":2874,"name":"yong sheng gong","email":"gong.yongsheng@99cloud.net","username":"gongysh"},"change_message_id":"de182782599c3456b2c3f432594cd2fd11e5829b","unresolved":false,"context_lines":[{"line_number":35,"context_line":"        vnfd_instance \u003d self.client.create_vnfd(body\u003dtosca_arg)"},{"line_number":36,"context_line":"        self.assertIsNotNone(vnfd_instance)"},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"        vnfds \u003d self.client.list_vnfds().get(\u0027vnfds\u0027)"},{"line_number":39,"context_line":"        self.assertIsNotNone(vnfds, \"List of vnfds are Empty after Creation\")"},{"line_number":40,"context_line":"        return vnfd_instance[\u0027vnfd\u0027][\u0027id\u0027]"},{"line_number":41,"context_line":""}],"source_content_type":"text/x-python","patch_set":22,"id":"5a3905b3_b904bac6","line":38,"range":{"start_line":38,"start_character":8,"end_line":38,"end_character":53},"updated":"2017-01-19 07:02:45.000000000","message":"add one assertion to make sure the named vnfd is there.","commit_id":"88beffe37ae90a266e7cda4e0102c7666ed13dbd"},{"author":{"_account_id":18955,"name":"dharmendra","email":"dharmendra.kushwaha@gmail.com","username":"dharmendra"},"change_message_id":"0db235ec8a4e388a580a571adafa3b5b3fdc104c","unresolved":false,"context_lines":[{"line_number":35,"context_line":"        vnfd_instance \u003d self.client.create_vnfd(body\u003dtosca_arg)"},{"line_number":36,"context_line":"        self.assertIsNotNone(vnfd_instance)"},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"        vnfds \u003d self.client.list_vnfds().get(\u0027vnfds\u0027)"},{"line_number":39,"context_line":"        self.assertIsNotNone(vnfds, \"List of vnfds are Empty after Creation\")"},{"line_number":40,"context_line":"        return vnfd_instance[\u0027vnfd\u0027][\u0027id\u0027]"},{"line_number":41,"context_line":""}],"source_content_type":"text/x-python","patch_set":22,"id":"5a3905b3_14d2bad2","line":38,"range":{"start_line":38,"start_character":8,"end_line":38,"end_character":53},"in_reply_to":"5a3905b3_b904bac6","updated":"2017-01-20 02:44:17.000000000","message":"Done","commit_id":"88beffe37ae90a266e7cda4e0102c7666ed13dbd"},{"author":{"_account_id":2874,"name":"yong sheng gong","email":"gong.yongsheng@99cloud.net","username":"gongysh"},"change_message_id":"0ca50f3ca0f4ce94cd85b0ccf2f89c4a5d071f40","unresolved":false,"context_lines":[{"line_number":101,"context_line":"                    int(time.time()) - start_time) \u003e timeout):"},{"line_number":102,"context_line":"                raise Exception(\"Failed with status: %s\" % status)"},{"line_number":103,"context_line":""},{"line_number":104,"context_line":"    def _test_create_delete_ns(self, nsd_file, ns_name):"},{"line_number":105,"context_line":"        vnfd1_id \u003d self._test_create_tosca_vnfd("},{"line_number":106,"context_line":"            \u0027test-ns-vnfd1.yaml\u0027,"},{"line_number":107,"context_line":"            \u0027test-ns-vnfd1\u0027)"}],"source_content_type":"text/x-python","patch_set":24,"id":"5a3905b3_43a28afe","line":104,"range":{"start_line":104,"start_character":37,"end_line":104,"end_character":45},"updated":"2017-01-21 06:26:37.000000000","message":"not used at all","commit_id":"cf806d7e97ae4b3c5e13dd7f315e8088fc1fec0a"},{"author":{"_account_id":18955,"name":"dharmendra","email":"dharmendra.kushwaha@gmail.com","username":"dharmendra"},"change_message_id":"c592f05543c3299fe9ce6d83cd82a13fcb1b7669","unresolved":false,"context_lines":[{"line_number":101,"context_line":"                    int(time.time()) - start_time) \u003e timeout):"},{"line_number":102,"context_line":"                raise Exception(\"Failed with status: %s\" % status)"},{"line_number":103,"context_line":""},{"line_number":104,"context_line":"    def _test_create_delete_ns(self, nsd_file, ns_name):"},{"line_number":105,"context_line":"        vnfd1_id \u003d self._test_create_tosca_vnfd("},{"line_number":106,"context_line":"            \u0027test-ns-vnfd1.yaml\u0027,"},{"line_number":107,"context_line":"            \u0027test-ns-vnfd1\u0027)"}],"source_content_type":"text/x-python","patch_set":24,"id":"5a3905b3_e00a3125","line":104,"range":{"start_line":104,"start_character":37,"end_line":104,"end_character":45},"in_reply_to":"5a3905b3_43a28afe","updated":"2017-01-24 07:30:20.000000000","message":"Done","commit_id":"cf806d7e97ae4b3c5e13dd7f315e8088fc1fec0a"}],"tacker/tests/unit/vm/nfvo/test_nfvo_plugin.py":[{"author":{"_account_id":13380,"name":"Sridhar Ramaswamy","email":"srics.r@gmail.com","username":"srics-r"},"change_message_id":"687023ec4e7453ec0aa9f078db737f1351713a1e","unresolved":false,"context_lines":[{"line_number":566,"context_line":"    @mock.patch.object(vim_client.VimClient, \u0027get_vim\u0027)"},{"line_number":567,"context_line":"    @mock.patch.object(nfvo_plugin.NfvoPlugin, \u0027_get_by_name\u0027)"},{"line_number":568,"context_line":"    @mock.patch.object(nfvo_plugin.NfvoPlugin, \u0027get_nsd\u0027)"},{"line_number":569,"context_line":"    def no_test_create_ns(self, mock_get_nsd, mock_get_by_name, mock_get_vim):"},{"line_number":570,"context_line":"        # self._insert_dummy_ns_template()"},{"line_number":571,"context_line":"        with patch.object(TackerManager, \u0027get_service_plugins\u0027) as \\"},{"line_number":572,"context_line":"                mock_plugins:"}],"source_content_type":"text/x-python","patch_set":24,"id":"5a3905b3_b7088329","line":569,"range":{"start_line":569,"start_character":8,"end_line":569,"end_character":25},"updated":"2017-01-23 23:12:03.000000000","message":"are you planning to enable this in this patchset or in a follow on?","commit_id":"cf806d7e97ae4b3c5e13dd7f315e8088fc1fec0a"},{"author":{"_account_id":18955,"name":"dharmendra","email":"dharmendra.kushwaha@gmail.com","username":"dharmendra"},"change_message_id":"c592f05543c3299fe9ce6d83cd82a13fcb1b7669","unresolved":false,"context_lines":[{"line_number":566,"context_line":"    @mock.patch.object(vim_client.VimClient, \u0027get_vim\u0027)"},{"line_number":567,"context_line":"    @mock.patch.object(nfvo_plugin.NfvoPlugin, \u0027_get_by_name\u0027)"},{"line_number":568,"context_line":"    @mock.patch.object(nfvo_plugin.NfvoPlugin, \u0027get_nsd\u0027)"},{"line_number":569,"context_line":"    def no_test_create_ns(self, mock_get_nsd, mock_get_by_name, mock_get_vim):"},{"line_number":570,"context_line":"        # self._insert_dummy_ns_template()"},{"line_number":571,"context_line":"        with patch.object(TackerManager, \u0027get_service_plugins\u0027) as \\"},{"line_number":572,"context_line":"                mock_plugins:"}],"source_content_type":"text/x-python","patch_set":24,"id":"5a3905b3_9b0ba023","line":569,"range":{"start_line":569,"start_character":8,"end_line":569,"end_character":25},"in_reply_to":"5a3905b3_b7088329","updated":"2017-01-24 07:30:20.000000000","message":"enabled now.","commit_id":"cf806d7e97ae4b3c5e13dd7f315e8088fc1fec0a"},{"author":{"_account_id":13380,"name":"Sridhar Ramaswamy","email":"srics.r@gmail.com","username":"srics-r"},"change_message_id":"687023ec4e7453ec0aa9f078db737f1351713a1e","unresolved":false,"context_lines":[{"line_number":588,"context_line":"            self.assertIn(\u0027instance_id\u0027, result)"},{"line_number":589,"context_line":"            self.assertIn(\u0027status\u0027, result)"},{"line_number":590,"context_line":""},{"line_number":591,"context_line":"    def no_test_delete_ns(self):"},{"line_number":592,"context_line":"        self._insert_dummy_ns_template()"},{"line_number":593,"context_line":"        ns_obj \u003d utils.get_dummy_ns_obj()"},{"line_number":594,"context_line":"        result \u003d self.nfvo_plugin.delete_ns(self.context, ns_obj)"}],"source_content_type":"text/x-python","patch_set":24,"id":"5a3905b3_d70b4f22","line":591,"range":{"start_line":591,"start_character":8,"end_line":591,"end_character":25},"updated":"2017-01-23 23:12:03.000000000","message":"are you planning to enable this in this patchset or in a follow on?","commit_id":"cf806d7e97ae4b3c5e13dd7f315e8088fc1fec0a"},{"author":{"_account_id":18955,"name":"dharmendra","email":"dharmendra.kushwaha@gmail.com","username":"dharmendra"},"change_message_id":"c592f05543c3299fe9ce6d83cd82a13fcb1b7669","unresolved":false,"context_lines":[{"line_number":588,"context_line":"            self.assertIn(\u0027instance_id\u0027, result)"},{"line_number":589,"context_line":"            self.assertIn(\u0027status\u0027, result)"},{"line_number":590,"context_line":""},{"line_number":591,"context_line":"    def no_test_delete_ns(self):"},{"line_number":592,"context_line":"        self._insert_dummy_ns_template()"},{"line_number":593,"context_line":"        ns_obj \u003d utils.get_dummy_ns_obj()"},{"line_number":594,"context_line":"        result \u003d self.nfvo_plugin.delete_ns(self.context, ns_obj)"}],"source_content_type":"text/x-python","patch_set":24,"id":"5a3905b3_db11a853","line":591,"range":{"start_line":591,"start_character":8,"end_line":591,"end_character":25},"in_reply_to":"5a3905b3_d70b4f22","updated":"2017-01-24 07:30:20.000000000","message":"enabled now.","commit_id":"cf806d7e97ae4b3c5e13dd7f315e8088fc1fec0a"}],"tacker/tests/unit/vm/test_toscautils.py":[{"author":{"_account_id":13380,"name":"Sridhar Ramaswamy","email":"srics.r@gmail.com","username":"srics-r"},"change_message_id":"687023ec4e7453ec0aa9f078db737f1351713a1e","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":24,"id":"5a3905b3_74b9b9cb","line":246,"updated":"2017-01-23 23:12:03.000000000","message":"I don\u0027t see any assert() here. Don\u0027t we need one, to check if the check function in L245 threw an error ?","commit_id":"cf806d7e97ae4b3c5e13dd7f315e8088fc1fec0a"},{"author":{"_account_id":18955,"name":"dharmendra","email":"dharmendra.kushwaha@gmail.com","username":"dharmendra"},"change_message_id":"c592f05543c3299fe9ce6d83cd82a13fcb1b7669","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":24,"id":"5a3905b3_7bb3540a","line":246,"in_reply_to":"5a3905b3_74b9b9cb","updated":"2017-01-24 07:30:20.000000000","message":"Done","commit_id":"cf806d7e97ae4b3c5e13dd7f315e8088fc1fec0a"}]}
