)]}'
{"CHANGELOG.md":[{"author":{"_account_id":7128,"name":"Mark Vanderwiel","email":"vanderwl@us.ibm.com","username":"kramvan"},"change_message_id":"28fb9a661360dec08874a3acc4f8d897b37acee8","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# CHANGELOG for cookbook-openstack-network"},{"line_number":2,"context_line":"This file is used to list changes made in each version of cookbook-openstack-network."},{"line_number":3,"context_line":""},{"line_number":4,"context_line":"## 10.1.1"}],"source_content_type":"text/x-markdown","patch_set":16,"id":"ba7be1f8_08b4aecf","line":1,"updated":"2015-03-02 17:23:58.000000000","message":"This file is being deleted for kilo, remove from patch","commit_id":"310eaaadc2f19460331ea63c7e89472adefb9bc7"},{"author":{"_account_id":7128,"name":"Mark Vanderwiel","email":"vanderwl@us.ibm.com","username":"kramvan"},"change_message_id":"88e2f4e871774db6f9871edff8870e0bfd953f76","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# CHANGELOG for cookbook-openstack-network"},{"line_number":2,"context_line":"This file is used to list changes made in each version of cookbook-openstack-network."},{"line_number":3,"context_line":""},{"line_number":4,"context_line":"## 10.1.1"}],"source_content_type":"text/x-markdown","patch_set":21,"id":"9a80dd14_64959a3f","side":"PARENT","line":1,"updated":"2015-03-05 04:44:19.000000000","message":"This file is gone, now, please rebase.","commit_id":"6ec0caf1815f5de0383a43e24f3e76d800d646df"},{"author":{"_account_id":13667,"name":"ZongKai LI","email":"onionpiece@163.com","username":"lzklibj"},"change_message_id":"c0c57e065b53d98cc72d9665999386001e7fa6d3","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# CHANGELOG for cookbook-openstack-network"},{"line_number":2,"context_line":"This file is used to list changes made in each version of cookbook-openstack-network."},{"line_number":3,"context_line":""},{"line_number":4,"context_line":"## 10.1.1"}],"source_content_type":"text/x-markdown","patch_set":21,"id":"9a80dd14_953c6ce4","side":"PARENT","line":1,"in_reply_to":"9a80dd14_64959a3f","updated":"2015-03-05 10:41:36.000000000","message":"Done","commit_id":"6ec0caf1815f5de0383a43e24f3e76d800d646df"}],"README.md":[{"author":{"_account_id":13667,"name":"ZongKai LI","email":"onionpiece@163.com","username":"lzklibj"},"change_message_id":"487d6a6320c4389215afd0bb21a82475ead0669b","unresolved":false,"context_lines":[{"line_number":137,"context_line":""},{"line_number":138,"context_line":"L3 Agent Configuration"},{"line_number":139,"context_line":"----------------------"},{"line_number":140,"context_line":"* `openstack[\u0027openstack\u0027][\u0027network\u0027][\u0027l3\u0027][\u0027router_distributed\u0027] - Both true(bool) and \u0027true\u0027(str) will set DVR(Distributed Virtual Router) configure enabled. Setting \u0027auto\u0027 will do a simple check then decide whether or not to enable DVR, default is enabled."},{"line_number":141,"context_line":"* `openstack[\u0027openstack\u0027][\u0027network\u0027][\u0027l3\u0027][\u0027router_delete_namespaces\u0027] - (StrOpt) If True, namespaces will be deleted when a router is destroyed."},{"line_number":142,"context_line":""},{"line_number":143,"context_line":"VPN Agent Configuration"}],"source_content_type":"text/x-gfm","patch_set":11,"id":"da86d52c_9bc17b82","line":140,"updated":"2015-02-12 07:18:23.000000000","message":"Previously, I found this attribute, router_distributed in neutron.conf, and its comment describe it as a global config to distributed L3 router, so I didn\u0027t set it under \u0027l3\u0027 section.\nBut now, as considered, put it under \u0027l3\u0027 make things more sensible.","commit_id":"91a81701916ddfc969f39c9c709149a30c997dfa"},{"author":{"_account_id":7128,"name":"Mark Vanderwiel","email":"vanderwl@us.ibm.com","username":"kramvan"},"change_message_id":"8ce8cebe2963e237527bfab136c90b25356e6594","unresolved":false,"context_lines":[{"line_number":137,"context_line":""},{"line_number":138,"context_line":"L3 Agent Configuration"},{"line_number":139,"context_line":"----------------------"},{"line_number":140,"context_line":"* `openstack[\u0027openstack\u0027][\u0027network\u0027][\u0027l3\u0027][\u0027router_distributed\u0027] - Both true(bool) and \u0027true\u0027(str) will set DVR(Distributed Virtual Router) configure enabled. Setting \u0027auto\u0027 will do a simple check then decide whether or not to enable DVR, default is enabled."},{"line_number":141,"context_line":"* `openstack[\u0027openstack\u0027][\u0027network\u0027][\u0027l3\u0027][\u0027router_delete_namespaces\u0027] - (StrOpt) If True, namespaces will be deleted when a router is destroyed."},{"line_number":142,"context_line":""},{"line_number":143,"context_line":"VPN Agent Configuration"}],"source_content_type":"text/x-gfm","patch_set":12,"id":"da86d52c_1b1f385c","line":140,"updated":"2015-02-12 15:04:10.000000000","message":"wording\n\n...simple check to decide when to enable DVR, default is enabled with OVS.","commit_id":"71f0795fcfb4c9b9b387a85c16df18d3b08fa519"},{"author":{"_account_id":13667,"name":"ZongKai LI","email":"onionpiece@163.com","username":"lzklibj"},"change_message_id":"b12c1e250f6703a2c0079fbffdb4b5a58e0fa4ce","unresolved":false,"context_lines":[{"line_number":137,"context_line":""},{"line_number":138,"context_line":"L3 Agent Configuration"},{"line_number":139,"context_line":"----------------------"},{"line_number":140,"context_line":"* `openstack[\u0027openstack\u0027][\u0027network\u0027][\u0027l3\u0027][\u0027router_distributed\u0027] - Both true(bool) and \u0027true\u0027(str) will set DVR(Distributed Virtual Router) configure enabled. Setting \u0027auto\u0027 will do a simple check then decide whether or not to enable DVR, default is enabled."},{"line_number":141,"context_line":"* `openstack[\u0027openstack\u0027][\u0027network\u0027][\u0027l3\u0027][\u0027router_delete_namespaces\u0027] - (StrOpt) If True, namespaces will be deleted when a router is destroyed."},{"line_number":142,"context_line":""},{"line_number":143,"context_line":"VPN Agent Configuration"}],"source_content_type":"text/x-gfm","patch_set":12,"id":"da86d52c_8efa0441","line":140,"in_reply_to":"da86d52c_1b1f385c","updated":"2015-02-12 15:30:06.000000000","message":"Done","commit_id":"71f0795fcfb4c9b9b387a85c16df18d3b08fa519"}],"attributes/default.rb":[{"author":{"_account_id":7128,"name":"Mark Vanderwiel","email":"vanderwl@us.ibm.com","username":"kramvan"},"change_message_id":"d57971722de81462c52d701ac234f233589fde45","unresolved":false,"context_lines":[{"line_number":1097,"context_line":"    \u0027neutron_server_service\u0027 \u003d\u003e \u0027openstack-neutron\u0027,"},{"line_number":1098,"context_line":"    \u0027package_overrides\u0027 \u003d\u003e \u0027\u0027"},{"line_number":1099,"context_line":"  }"},{"line_number":1100,"context_line":"when \u0027debian\u0027, \u0027ubuntu\u0027"},{"line_number":1101,"context_line":"  default[\u0027openstack\u0027][\u0027network\u0027][\u0027platform\u0027] \u003d {"},{"line_number":1102,"context_line":"    \u0027user\u0027 \u003d\u003e \u0027neutron\u0027,"},{"line_number":1103,"context_line":"    \u0027group\u0027 \u003d\u003e \u0027neutron\u0027,"}],"source_content_type":"text/x-ruby","patch_set":5,"id":"da86d52c_fa1bd519","line":1100,"updated":"2015-02-02 18:37:04.000000000","message":"humm, ubuntu is part of the debian family, so this is not needed.\n\nsee https://www.chef.io/blog/2012/03/22/ohai-0-6-12-released/","commit_id":"3aec8bc818db7426a4144bdd1679db6e3b0b8bbb"},{"author":{"_account_id":13667,"name":"ZongKai LI","email":"onionpiece@163.com","username":"lzklibj"},"change_message_id":"98ef369fdbfc7631bccfec765c5177bae8f6e75e","unresolved":false,"context_lines":[{"line_number":1097,"context_line":"    \u0027neutron_server_service\u0027 \u003d\u003e \u0027openstack-neutron\u0027,"},{"line_number":1098,"context_line":"    \u0027package_overrides\u0027 \u003d\u003e \u0027\u0027"},{"line_number":1099,"context_line":"  }"},{"line_number":1100,"context_line":"when \u0027debian\u0027, \u0027ubuntu\u0027"},{"line_number":1101,"context_line":"  default[\u0027openstack\u0027][\u0027network\u0027][\u0027platform\u0027] \u003d {"},{"line_number":1102,"context_line":"    \u0027user\u0027 \u003d\u003e \u0027neutron\u0027,"},{"line_number":1103,"context_line":"    \u0027group\u0027 \u003d\u003e \u0027neutron\u0027,"}],"source_content_type":"text/x-ruby","patch_set":5,"id":"da86d52c_a57770d3","line":1100,"in_reply_to":"da86d52c_fa1bd519","updated":"2015-02-03 06:08:55.000000000","message":"Oh, I see, thanks. Fixed this.","commit_id":"3aec8bc818db7426a4144bdd1679db6e3b0b8bbb"},{"author":{"_account_id":8112,"name":"Ma Wen Cheng","email":"wenchma@cn.ibm.com","username":"wenchma"},"change_message_id":"ae27cc04d62a6307204b555db77235382db70630","unresolved":false,"context_lines":[{"line_number":343,"context_line":""},{"line_number":344,"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 L3 Agent Configuration \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":345,"context_line":""},{"line_number":346,"context_line":"default[\u0027openstack\u0027][\u0027network\u0027][\u0027router_distributed\u0027] \u003d \u0027False\u0027"},{"line_number":347,"context_line":""},{"line_number":348,"context_line":"# The scheduler class to use for scheduling routers to L3 agents"},{"line_number":349,"context_line":"default[\u0027openstack\u0027][\u0027network\u0027][\u0027l3\u0027][\u0027scheduler\u0027] \u003d \u0027neutron.scheduler.l3_agent_scheduler.ChanceScheduler\u0027"}],"source_content_type":"text/x-ruby","patch_set":10,"id":"da86d52c_f5d2885a","line":346,"updated":"2015-02-12 05:38:41.000000000","message":"if this attribute is related with l3 agent, better to change to [\u0027openstack\u0027][\u0027network\u0027][\u0027l3\u0027][\u0027router_distributed\u0027]\n\nand adding a comment to detail the attribute will look better.","commit_id":"af9c7895902ce79fc7823a6a988f3c68f7812cc1"},{"author":{"_account_id":13667,"name":"ZongKai LI","email":"onionpiece@163.com","username":"lzklibj"},"change_message_id":"eb4f56ddbda4629a3d469836058f4bf5be69ac87","unresolved":false,"context_lines":[{"line_number":343,"context_line":""},{"line_number":344,"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 L3 Agent Configuration \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":345,"context_line":""},{"line_number":346,"context_line":"default[\u0027openstack\u0027][\u0027network\u0027][\u0027router_distributed\u0027] \u003d \u0027False\u0027"},{"line_number":347,"context_line":""},{"line_number":348,"context_line":"# The scheduler class to use for scheduling routers to L3 agents"},{"line_number":349,"context_line":"default[\u0027openstack\u0027][\u0027network\u0027][\u0027l3\u0027][\u0027scheduler\u0027] \u003d \u0027neutron.scheduler.l3_agent_scheduler.ChanceScheduler\u0027"}],"source_content_type":"text/x-ruby","patch_set":10,"id":"da86d52c_db44d348","line":346,"in_reply_to":"da86d52c_f5d2885a","updated":"2015-02-12 07:11:53.000000000","message":"Done","commit_id":"af9c7895902ce79fc7823a6a988f3c68f7812cc1"},{"author":{"_account_id":7128,"name":"Mark Vanderwiel","email":"vanderwl@us.ibm.com","username":"kramvan"},"change_message_id":"8ce8cebe2963e237527bfab136c90b25356e6594","unresolved":false,"context_lines":[{"line_number":343,"context_line":""},{"line_number":344,"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 L3 Agent Configuration \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":345,"context_line":""},{"line_number":346,"context_line":"default[\u0027openstack\u0027][\u0027network\u0027][\u0027l3\u0027][\u0027router_distributed\u0027] \u003d \u0027False\u0027"},{"line_number":347,"context_line":""},{"line_number":348,"context_line":"# The scheduler class to use for scheduling routers to L3 agents"},{"line_number":349,"context_line":"default[\u0027openstack\u0027][\u0027network\u0027][\u0027l3\u0027][\u0027scheduler\u0027] \u003d \u0027neutron.scheduler.l3_agent_scheduler.ChanceScheduler\u0027"}],"source_content_type":"text/x-ruby","patch_set":12,"id":"da86d52c_5b437041","line":346,"updated":"2015-02-12 15:04:10.000000000","message":"Need to add a short comment for this new attribute","commit_id":"71f0795fcfb4c9b9b387a85c16df18d3b08fa519"},{"author":{"_account_id":13667,"name":"ZongKai LI","email":"onionpiece@163.com","username":"lzklibj"},"change_message_id":"b12c1e250f6703a2c0079fbffdb4b5a58e0fa4ce","unresolved":false,"context_lines":[{"line_number":343,"context_line":""},{"line_number":344,"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 L3 Agent Configuration \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":345,"context_line":""},{"line_number":346,"context_line":"default[\u0027openstack\u0027][\u0027network\u0027][\u0027l3\u0027][\u0027router_distributed\u0027] \u003d \u0027False\u0027"},{"line_number":347,"context_line":""},{"line_number":348,"context_line":"# The scheduler class to use for scheduling routers to L3 agents"},{"line_number":349,"context_line":"default[\u0027openstack\u0027][\u0027network\u0027][\u0027l3\u0027][\u0027scheduler\u0027] \u003d \u0027neutron.scheduler.l3_agent_scheduler.ChanceScheduler\u0027"}],"source_content_type":"text/x-ruby","patch_set":12,"id":"da86d52c_8e4cc4c9","line":346,"in_reply_to":"da86d52c_5b437041","updated":"2015-02-12 15:30:06.000000000","message":"Done\nI added a comment, not short, but I consider it also good.","commit_id":"71f0795fcfb4c9b9b387a85c16df18d3b08fa519"}],"libraries/matchers.rb":[{"author":{"_account_id":7128,"name":"Mark Vanderwiel","email":"vanderwl@us.ibm.com","username":"kramvan"},"change_message_id":"8ce8cebe2963e237527bfab136c90b25356e6594","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# encoding: UTF-8"},{"line_number":2,"context_line":""},{"line_number":3,"context_line":"if defined?(ChefSpec)"},{"line_number":4,"context_line":""}],"source_content_type":"text/x-ruby","patch_set":12,"id":"da86d52c_7b6594df","line":1,"updated":"2015-02-12 15:04:10.000000000","message":"Why is this here, just use the common one?","commit_id":"71f0795fcfb4c9b9b387a85c16df18d3b08fa519"},{"author":{"_account_id":13667,"name":"ZongKai LI","email":"onionpiece@163.com","username":"lzklibj"},"change_message_id":"b12c1e250f6703a2c0079fbffdb4b5a58e0fa4ce","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# encoding: UTF-8"},{"line_number":2,"context_line":""},{"line_number":3,"context_line":"if defined?(ChefSpec)"},{"line_number":4,"context_line":""}],"source_content_type":"text/x-ruby","patch_set":12,"id":"da86d52c_ae1988d2","line":1,"in_reply_to":"da86d52c_7b6594df","updated":"2015-02-12 15:30:06.000000000","message":"Done","commit_id":"71f0795fcfb4c9b9b387a85c16df18d3b08fa519"},{"author":{"_account_id":8112,"name":"Ma Wen Cheng","email":"wenchma@cn.ibm.com","username":"wenchma"},"change_message_id":"2cb4d0ae69cdf1da945de6490f0fde9555e005dc","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# encoding: UTF-8"},{"line_number":2,"context_line":""},{"line_number":3,"context_line":"if defined?(ChefSpec)"},{"line_number":4,"context_line":""},{"line_number":5,"context_line":"  # Copy from cookbook-openstack-common/libraries/matchers.rb"}],"source_content_type":"text/x-ruby","patch_set":12,"id":"da86d52c_fba0a4f5","line":2,"updated":"2015-02-12 15:04:42.000000000","message":"cannot understand why to add this file, refer to  https://github.com/stackforge/cookbook-openstack-common/blob/master/libraries/matchers.rb","commit_id":"71f0795fcfb4c9b9b387a85c16df18d3b08fa519"},{"author":{"_account_id":13667,"name":"ZongKai LI","email":"onionpiece@163.com","username":"lzklibj"},"change_message_id":"b12c1e250f6703a2c0079fbffdb4b5a58e0fa4ce","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# encoding: UTF-8"},{"line_number":2,"context_line":""},{"line_number":3,"context_line":"if defined?(ChefSpec)"},{"line_number":4,"context_line":""},{"line_number":5,"context_line":"  # Copy from cookbook-openstack-common/libraries/matchers.rb"}],"source_content_type":"text/x-ruby","patch_set":12,"id":"da86d52c_8e1e84b9","line":2,"in_reply_to":"da86d52c_fba0a4f5","updated":"2015-02-12 15:30:06.000000000","message":"Done\nI added some explanation in patch set 13.","commit_id":"71f0795fcfb4c9b9b387a85c16df18d3b08fa519"},{"author":{"_account_id":13667,"name":"ZongKai LI","email":"onionpiece@163.com","username":"lzklibj"},"change_message_id":"f27370a5020bd23fdba508ae8bf6b13c30a61f61","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# encoding: UTF-8"},{"line_number":2,"context_line":""},{"line_number":3,"context_line":"# Copy from cookbook-openstack-common/libraries/matchers.rb"},{"line_number":4,"context_line":"# We need this file in spec/default_spec.rb where we will"}],"source_content_type":"text/x-ruby","patch_set":14,"id":"da86d52c_62f6c1d8","line":1,"updated":"2015-02-12 16:17:36.000000000","message":"Seems rake style check need this utf-8 encoding comment.","commit_id":"24175168736946f5f18691495f2437d3dcc2d025"}],"libraries/utils.rb":[{"author":{"_account_id":7128,"name":"Mark Vanderwiel","email":"vanderwl@us.ibm.com","username":"kramvan"},"change_message_id":"234cf7a02d930f8b26fa73639272e3b718f19224","unresolved":false,"context_lines":[{"line_number":34,"context_line":"  end"},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"  def search_rhel_openvswitch_pkg"},{"line_number":37,"context_line":"    [\u0027neutron_openvswitch_packages\u0027, \u0027neutron_openvswitch_agent_packages\u0027].each do |option|"},{"line_number":38,"context_line":"      node[\u0027openstack\u0027][\u0027network\u0027][\u0027platform\u0027][option].each do |pkg|"},{"line_number":39,"context_line":"        fail \"Cannot find package #{pkg}\" unless shell_out(\"yum list #{pkg}\")"},{"line_number":40,"context_line":"      end"}],"source_content_type":"text/x-ruby","patch_set":3,"id":"fa81d914_bdeca5f4","line":37,"updated":"2015-01-30 15:12:54.000000000","message":"not sure i understand what this doing.  this is the cookbook for Juno base OpenStack release, so we should know what packages are available from ubuntu and redhat.   Why the need for search here?","commit_id":"ce3922d1665cc02572d148176da257bcb7afc103"},{"author":{"_account_id":13667,"name":"ZongKai LI","email":"onionpiece@163.com","username":"lzklibj"},"change_message_id":"e3a6ed38a34714543abfe74abb6f5e1a4be9ec49","unresolved":false,"context_lines":[{"line_number":34,"context_line":"  end"},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"  def search_rhel_openvswitch_pkg"},{"line_number":37,"context_line":"    [\u0027neutron_openvswitch_packages\u0027, \u0027neutron_openvswitch_agent_packages\u0027].each do |option|"},{"line_number":38,"context_line":"      node[\u0027openstack\u0027][\u0027network\u0027][\u0027platform\u0027][option].each do |pkg|"},{"line_number":39,"context_line":"        fail \"Cannot find package #{pkg}\" unless shell_out(\"yum list #{pkg}\")"},{"line_number":40,"context_line":"      end"}],"source_content_type":"text/x-ruby","patch_set":3,"id":"da86d52c_d4589458","line":37,"in_reply_to":"da86d52c_1a6349dd","updated":"2015-02-03 06:13:44.000000000","message":"I think we can include recipe \u0027build_openvswitch_source\u0027 to deal with this. If user set router_distributed, it\u0027s should acceptable to user to install OVS packages, and if any packages cannot be installed, DVR will fail to enable and we will give warning for that.","commit_id":"ce3922d1665cc02572d148176da257bcb7afc103"},{"author":{"_account_id":7128,"name":"Mark Vanderwiel","email":"vanderwl@us.ibm.com","username":"kramvan"},"change_message_id":"d85feea703ef0d05181a43cfb892d4201c89d3b9","unresolved":false,"context_lines":[{"line_number":34,"context_line":"  end"},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"  def search_rhel_openvswitch_pkg"},{"line_number":37,"context_line":"    [\u0027neutron_openvswitch_packages\u0027, \u0027neutron_openvswitch_agent_packages\u0027].each do |option|"},{"line_number":38,"context_line":"      node[\u0027openstack\u0027][\u0027network\u0027][\u0027platform\u0027][option].each do |pkg|"},{"line_number":39,"context_line":"        fail \"Cannot find package #{pkg}\" unless shell_out(\"yum list #{pkg}\")"},{"line_number":40,"context_line":"      end"}],"source_content_type":"text/x-ruby","patch_set":3,"id":"da86d52c_1a6349dd","line":37,"in_reply_to":"da86d52c_65c76b13","updated":"2015-02-02 18:29:54.000000000","message":"ok, I think I\u0027m seeing some light here.  If your wanting to check is packages are installed or not, why not just use the existing chef package resources that just installed them?\n\nAlso, I think this is way overkill here.  If the attributes specify that ovs is to be used, then we\u0027re good, no need for additional checking.","commit_id":"ce3922d1665cc02572d148176da257bcb7afc103"},{"author":{"_account_id":13667,"name":"ZongKai LI","email":"onionpiece@163.com","username":"lzklibj"},"change_message_id":"cccc066bab13f52f356470a4c34f9ed41158d663","unresolved":false,"context_lines":[{"line_number":34,"context_line":"  end"},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"  def search_rhel_openvswitch_pkg"},{"line_number":37,"context_line":"    [\u0027neutron_openvswitch_packages\u0027, \u0027neutron_openvswitch_agent_packages\u0027].each do |option|"},{"line_number":38,"context_line":"      node[\u0027openstack\u0027][\u0027network\u0027][\u0027platform\u0027][option].each do |pkg|"},{"line_number":39,"context_line":"        fail \"Cannot find package #{pkg}\" unless shell_out(\"yum list #{pkg}\")"},{"line_number":40,"context_line":"      end"}],"source_content_type":"text/x-ruby","patch_set":3,"id":"da86d52c_65c76b13","line":37,"in_reply_to":"fa81d914_bdeca5f4","updated":"2015-02-02 14:26:50.000000000","message":"It\u0027s a simple pre-check for OVS, DVR needs OVS as support, if user doesn\u0027t use OVS or nothing packages can found from his environment, the \"auto\" option of DVR enablement should fail.\n\nI\u0027ve tested packages contained in above list in file attribute/default.rb.","commit_id":"ce3922d1665cc02572d148176da257bcb7afc103"},{"author":{"_account_id":7128,"name":"Mark Vanderwiel","email":"vanderwl@us.ibm.com","username":"kramvan"},"change_message_id":"234cf7a02d930f8b26fa73639272e3b718f19224","unresolved":false,"context_lines":[{"line_number":42,"context_line":"  end"},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"  def search_ubuntu_openvswitch_pkg"},{"line_number":45,"context_line":"    [\u0027neutron_openvswitch_packages\u0027, \u0027neutron_openvswitch_agent_packages\u0027, \u0027neutron_openvswitch_agent_packages\u0027].each do |option|"},{"line_number":46,"context_line":"      node[\u0027openstack\u0027][\u0027network\u0027][\u0027platform\u0027][option].each do |pkg|"},{"line_number":47,"context_line":"        fail \"Cannot find package #{pkg}\" unless shell_out(\"apt-cache search #{pkg}\")"},{"line_number":48,"context_line":"      end"}],"source_content_type":"text/x-ruby","patch_set":3,"id":"fa81d914_ddbcf9de","line":45,"updated":"2015-01-30 15:12:54.000000000","message":"same list as rhel?  neutron_openvswitch_agent_packages is dup\u0027d here?","commit_id":"ce3922d1665cc02572d148176da257bcb7afc103"},{"author":{"_account_id":13667,"name":"ZongKai LI","email":"onionpiece@163.com","username":"lzklibj"},"change_message_id":"cccc066bab13f52f356470a4c34f9ed41158d663","unresolved":false,"context_lines":[{"line_number":42,"context_line":"  end"},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"  def search_ubuntu_openvswitch_pkg"},{"line_number":45,"context_line":"    [\u0027neutron_openvswitch_packages\u0027, \u0027neutron_openvswitch_agent_packages\u0027, \u0027neutron_openvswitch_agent_packages\u0027].each do |option|"},{"line_number":46,"context_line":"      node[\u0027openstack\u0027][\u0027network\u0027][\u0027platform\u0027][option].each do |pkg|"},{"line_number":47,"context_line":"        fail \"Cannot find package #{pkg}\" unless shell_out(\"apt-cache search #{pkg}\")"},{"line_number":48,"context_line":"      end"}],"source_content_type":"text/x-ruby","patch_set":3,"id":"da86d52c_0586afb9","line":45,"in_reply_to":"fa81d914_ddbcf9de","updated":"2015-02-02 14:26:50.000000000","message":"It\u0027s dup. Not same list, it\u0027s same attr list, but not same values.","commit_id":"ce3922d1665cc02572d148176da257bcb7afc103"},{"author":{"_account_id":7128,"name":"Mark Vanderwiel","email":"vanderwl@us.ibm.com","username":"kramvan"},"change_message_id":"d57971722de81462c52d701ac234f233589fde45","unresolved":false,"context_lines":[{"line_number":23,"context_line":"  # Search the openvswitch packages for the given platform."},{"line_number":24,"context_line":"  #"},{"line_number":25,"context_line":"  # @param [String] The platform to be searched."},{"line_number":26,"context_line":"  def search_openvswitch_pkg(platform)"},{"line_number":27,"context_line":"    if platform \u003d\u003d \u0027rhel\u0027"},{"line_number":28,"context_line":"      search_rhel_openvswitch_pkg"},{"line_number":29,"context_line":"    elsif platform \u003d\u003d \u0027ubuntu\u0027"}],"source_content_type":"text/x-ruby","patch_set":5,"id":"da86d52c_7aa525b4","line":26,"updated":"2015-02-02 18:37:04.000000000","message":"again I think this should be pulled and just go by existing ovs attribute or package resources.","commit_id":"3aec8bc818db7426a4144bdd1679db6e3b0b8bbb"},{"author":{"_account_id":13667,"name":"ZongKai LI","email":"onionpiece@163.com","username":"lzklibj"},"change_message_id":"98ef369fdbfc7631bccfec765c5177bae8f6e75e","unresolved":false,"context_lines":[{"line_number":23,"context_line":"  # Search the openvswitch packages for the given platform."},{"line_number":24,"context_line":"  #"},{"line_number":25,"context_line":"  # @param [String] The platform to be searched."},{"line_number":26,"context_line":"  def search_openvswitch_pkg(platform)"},{"line_number":27,"context_line":"    if platform \u003d\u003d \u0027rhel\u0027"},{"line_number":28,"context_line":"      search_rhel_openvswitch_pkg"},{"line_number":29,"context_line":"    elsif platform \u003d\u003d \u0027ubuntu\u0027"}],"source_content_type":"text/x-ruby","patch_set":5,"id":"da86d52c_3499f01f","line":26,"in_reply_to":"da86d52c_7aa525b4","updated":"2015-02-03 06:08:55.000000000","message":"Done","commit_id":"3aec8bc818db7426a4144bdd1679db6e3b0b8bbb"},{"author":{"_account_id":8112,"name":"Ma Wen Cheng","email":"wenchma@cn.ibm.com","username":"wenchma"},"change_message_id":"4705c37d5cf911e6203335a0f27820601822c908","unresolved":false,"context_lines":[{"line_number":6,"context_line":"    if node[\u0027recipes\u0027].include?(recipe)"},{"line_number":7,"context_line":"      return true"},{"line_number":8,"context_line":"    else"},{"line_number":9,"context_line":"      return false"},{"line_number":10,"context_line":"  end"},{"line_number":11,"context_line":"end"}],"source_content_type":"text/x-ruby","patch_set":23,"id":"9a80dd14_5a9d8165","line":9,"updated":"2015-03-06 10:07:57.000000000","message":"miss an end.","commit_id":"87b98446b1b0df27d20cec3e5ff7ae7cfd029a23"},{"author":{"_account_id":13667,"name":"ZongKai LI","email":"onionpiece@163.com","username":"lzklibj"},"change_message_id":"42a043d99a419bb5ad0331cbb11b954297c16410","unresolved":false,"context_lines":[{"line_number":6,"context_line":"    if node[\u0027recipes\u0027].include?(recipe)"},{"line_number":7,"context_line":"      return true"},{"line_number":8,"context_line":"    else"},{"line_number":9,"context_line":"      return false"},{"line_number":10,"context_line":"  end"},{"line_number":11,"context_line":"end"}],"source_content_type":"text/x-ruby","patch_set":23,"id":"9a80dd14_3a6c4d35","line":9,"in_reply_to":"9a80dd14_5a9d8165","updated":"2015-03-06 10:14:22.000000000","message":"Done","commit_id":"87b98446b1b0df27d20cec3e5ff7ae7cfd029a23"}],"recipes/default.rb":[{"author":{"_account_id":7128,"name":"Mark Vanderwiel","email":"vanderwl@us.ibm.com","username":"kramvan"},"change_message_id":"092d9f32da14732b7a75d4475bcd75c33dd718ca","unresolved":false,"context_lines":[{"line_number":197,"context_line":"  end"},{"line_number":198,"context_line":"  action :run"},{"line_number":199,"context_line":"  only_if do"},{"line_number":200,"context_line":"    node[\u0027openstack\u0027][\u0027network\u0027][\u0027router_distributed\u0027] \u003d\u003d \u0027auto\u0027"},{"line_number":201,"context_line":"  end"},{"line_number":202,"context_line":"end"},{"line_number":203,"context_line":""}],"source_content_type":"text/x-ruby","patch_set":6,"id":"da86d52c_801cff14","line":200,"updated":"2015-02-03 15:40:29.000000000","message":"I guess, I still don\u0027t understand this logic.   For AUTO, I just expected a simple check to see if the type was VLAN, log a message and switch to false. \n\nFor the ovs check, simply look at the [\u0027openstack\u0027][\u0027network\u0027][\u0027interface_driver\u0027]  to see if it contains \u0027OVSInterfaceDriver\u0027.","commit_id":"8cc72215837d774300c5aa4a5b7ecec645792349"},{"author":{"_account_id":13667,"name":"ZongKai LI","email":"onionpiece@163.com","username":"lzklibj"},"change_message_id":"125959203448564748503af968095d13f943f55a","unresolved":false,"context_lines":[{"line_number":197,"context_line":"  end"},{"line_number":198,"context_line":"  action :run"},{"line_number":199,"context_line":"  only_if do"},{"line_number":200,"context_line":"    node[\u0027openstack\u0027][\u0027network\u0027][\u0027router_distributed\u0027] \u003d\u003d \u0027auto\u0027"},{"line_number":201,"context_line":"  end"},{"line_number":202,"context_line":"end"},{"line_number":203,"context_line":""}],"source_content_type":"text/x-ruby","patch_set":6,"id":"da86d52c_3042bc3e","line":200,"in_reply_to":"da86d52c_6a78c1f2","updated":"2015-02-03 17:41:59.000000000","message":"Your suggestion about OVS checking is acceptable to me.\n\nTo AUTO, tunnel_types is still can be set gre or vxlan, this will set tenant_network_types use tunnel network type, so since VLAN can support DVR, after deployed, if prefer, user can set VLAN as tenant_network_type.","commit_id":"8cc72215837d774300c5aa4a5b7ecec645792349"},{"author":{"_account_id":13667,"name":"ZongKai LI","email":"onionpiece@163.com","username":"lzklibj"},"change_message_id":"6f0e3a5fe29d6451644c46ce5db517b713f095b1","unresolved":false,"context_lines":[{"line_number":197,"context_line":"  end"},{"line_number":198,"context_line":"  action :run"},{"line_number":199,"context_line":"  only_if do"},{"line_number":200,"context_line":"    node[\u0027openstack\u0027][\u0027network\u0027][\u0027router_distributed\u0027] \u003d\u003d \u0027auto\u0027"},{"line_number":201,"context_line":"  end"},{"line_number":202,"context_line":"end"},{"line_number":203,"context_line":""}],"source_content_type":"text/x-ruby","patch_set":6,"id":"da86d52c_beef6386","line":200,"in_reply_to":"da86d52c_801cff14","updated":"2015-02-03 16:53:06.000000000","message":"VLAN support for DVR is merged, https://review.openstack.org/#/c/129884/ .\nSo we may only need check OVS now.\nThe logic I did here is like: if ovs resources can installed successfully, DVR should be enabled; otherwise, DVR couldn\u0027t be enabled for no supporting from OVS.\n\nYep, you\u0027re right, interface_driver should also be checked.","commit_id":"8cc72215837d774300c5aa4a5b7ecec645792349"},{"author":{"_account_id":7128,"name":"Mark Vanderwiel","email":"vanderwl@us.ibm.com","username":"kramvan"},"change_message_id":"f7c52c92e7daf47ba30b0bce8d06ca0386f2d949","unresolved":false,"context_lines":[{"line_number":197,"context_line":"  end"},{"line_number":198,"context_line":"  action :run"},{"line_number":199,"context_line":"  only_if do"},{"line_number":200,"context_line":"    node[\u0027openstack\u0027][\u0027network\u0027][\u0027router_distributed\u0027] \u003d\u003d \u0027auto\u0027"},{"line_number":201,"context_line":"  end"},{"line_number":202,"context_line":"end"},{"line_number":203,"context_line":""}],"source_content_type":"text/x-ruby","patch_set":6,"id":"da86d52c_6a78c1f2","line":200,"in_reply_to":"da86d52c_beef6386","updated":"2015-02-03 17:19:44.000000000","message":"ok, that VLAN support is for kilo only right, so either this patch would need to wait for kilo branch, or need still have a check against VLAN.\n\nAs for the ovs resources can be installed, I don\u0027t think forcing the use of the build_openvswitch_source recipe is the way to go.  For the ubuntu 14.04 openstack repo, it contains the openvswitch packages, so you can assume there available, you just need to check if there are configured for use using the [\u0027openstack\u0027][\u0027network\u0027][\u0027interface_driver\u0027] I think.","commit_id":"8cc72215837d774300c5aa4a5b7ecec645792349"},{"author":{"_account_id":7128,"name":"Mark Vanderwiel","email":"vanderwl@us.ibm.com","username":"kramvan"},"change_message_id":"e43f15af56651278977b3e9b6416fc4012c20745","unresolved":false,"context_lines":[{"line_number":186,"context_line":"  end"},{"line_number":187,"context_line":"end"},{"line_number":188,"context_line":""},{"line_number":189,"context_line":"ruby_block \u0027support distributed virtual router\u0027 do"},{"line_number":190,"context_line":"  block do"},{"line_number":191,"context_line":"    begin"},{"line_number":192,"context_line":"      if node[\u0027openstack\u0027][\u0027network\u0027][\u0027interface_driver\u0027].split(\u0027.\u0027).last !\u003d \u0027OVSInterfaceDriver\u0027"}],"source_content_type":"text/x-ruby","patch_set":8,"id":"da86d52c_1b15afe4","line":189,"updated":"2015-02-04 16:11:26.000000000","message":"Humm, this seems like an unneeded ruby_block.  Maybe something like this:\n\nif node[\u0027openstack\u0027][\u0027network\u0027][\u0027router_distributed\u0027] \u003d\u003d \u0027auto\u0027\n\n  if node[\u0027openstack\u0027][\u0027network\u0027][\u0027interface_driver\u0027].split(\u0027.\u0027).last !\u003d \u0027OVSInterfaceDriver\u0027\n\n    fail \u0027OVSInterfaceDirver is not used as interface_driver, DVR cound not be support without OVS\u0027\n\n  end\n\nend","commit_id":"84e20b0c2146c5264c31667caec1ba35f7075e69"},{"author":{"_account_id":13667,"name":"ZongKai LI","email":"onionpiece@163.com","username":"lzklibj"},"change_message_id":"05a1a617fb5ac626e193045716f8386fdd909d69","unresolved":false,"context_lines":[{"line_number":186,"context_line":"  end"},{"line_number":187,"context_line":"end"},{"line_number":188,"context_line":""},{"line_number":189,"context_line":"ruby_block \u0027support distributed virtual router\u0027 do"},{"line_number":190,"context_line":"  block do"},{"line_number":191,"context_line":"    begin"},{"line_number":192,"context_line":"      if node[\u0027openstack\u0027][\u0027network\u0027][\u0027interface_driver\u0027].split(\u0027.\u0027).last !\u003d \u0027OVSInterfaceDriver\u0027"}],"source_content_type":"text/x-ruby","patch_set":8,"id":"da86d52c_7b3cc7c8","line":189,"in_reply_to":"da86d52c_1b15afe4","updated":"2015-02-12 07:11:40.000000000","message":"Done.","commit_id":"84e20b0c2146c5264c31667caec1ba35f7075e69"},{"author":{"_account_id":15068,"name":"Christopher M Luciano","email":"cmluciano@us.ibm.com","username":"cmluciano"},"change_message_id":"97d6ce96c965f3056c7580f2b44505815061fa8e","unresolved":false,"context_lines":[{"line_number":188,"context_line":""},{"line_number":189,"context_line":"if node[\u0027openstack\u0027][\u0027network\u0027][\u0027router_distributed\u0027] \u003d\u003d \u0027auto\u0027"},{"line_number":190,"context_line":"  if node[\u0027openstack\u0027][\u0027network\u0027][\u0027interface_driver\u0027].split(\u0027.\u0027).last !\u003d \u0027OVSInterfaceDriver\u0027"},{"line_number":191,"context_line":"    fail \u0027OVSInterfaceDirver is not used as interface_driver, DVR cound not be support without OVS\u0027"},{"line_number":192,"context_line":"  end"},{"line_number":193,"context_line":"end"},{"line_number":194,"context_line":""}],"source_content_type":"text/x-ruby","patch_set":9,"id":"da86d52c_84496ed2","line":191,"range":{"start_line":191,"start_character":79,"end_line":191,"end_character":86},"updated":"2015-02-10 15:42:09.000000000","message":"I think this is a typo. Should this be \"supported\" instead of \"support\"?","commit_id":"0b20d8ecfb29cf6af514ed4d4964762bcdd73122"},{"author":{"_account_id":7128,"name":"Mark Vanderwiel","email":"vanderwl@us.ibm.com","username":"kramvan"},"change_message_id":"46bab5db364afe4f00e6f8cc8792177ef8c4ec59","unresolved":false,"context_lines":[{"line_number":188,"context_line":""},{"line_number":189,"context_line":"if node[\u0027openstack\u0027][\u0027network\u0027][\u0027router_distributed\u0027] \u003d\u003d \u0027auto\u0027"},{"line_number":190,"context_line":"  if node[\u0027openstack\u0027][\u0027network\u0027][\u0027interface_driver\u0027].split(\u0027.\u0027).last !\u003d \u0027OVSInterfaceDriver\u0027"},{"line_number":191,"context_line":"    fail \u0027OVSInterfaceDirver is not used as interface_driver, DVR cound not be support without OVS\u0027"},{"line_number":192,"context_line":"  end"},{"line_number":193,"context_line":"end"},{"line_number":194,"context_line":""}],"source_content_type":"text/x-ruby","patch_set":9,"id":"da86d52c_3ec8a121","line":191,"in_reply_to":"da86d52c_84496ed2","updated":"2015-02-11 15:14:15.000000000","message":"agree","commit_id":"0b20d8ecfb29cf6af514ed4d4964762bcdd73122"},{"author":{"_account_id":13667,"name":"ZongKai LI","email":"onionpiece@163.com","username":"lzklibj"},"change_message_id":"487d6a6320c4389215afd0bb21a82475ead0669b","unresolved":false,"context_lines":[{"line_number":189,"context_line":"if node[\u0027openstack\u0027][\u0027network\u0027][\u0027l3\u0027][\u0027router_distributed\u0027] \u003d\u003d \u0027auto\u0027"},{"line_number":190,"context_line":"  if node[\u0027openstack\u0027][\u0027network\u0027][\u0027interface_driver\u0027].split(\u0027.\u0027).last !\u003d \u0027OVSInterfaceDriver\u0027"},{"line_number":191,"context_line":"    fail \u0027OVSInterfaceDirver is not used as interface_driver, DVR cound not be supported without OVS\u0027"},{"line_number":192,"context_line":"    node.set[\u0027openstack\u0027][\u0027network\u0027][\u0027l3\u0027][\u0027router_distributed\u0027] \u003d \u0027false\u0027"},{"line_number":193,"context_line":"  end"},{"line_number":194,"context_line":"end"},{"line_number":195,"context_line":""}],"source_content_type":"text/x-ruby","patch_set":11,"id":"da86d52c_7b4da73d","line":192,"updated":"2015-02-12 07:18:23.000000000","message":"If OVS check failed, \u0027auto\u0027 need turn to false. I missed this in previous two patches.","commit_id":"91a81701916ddfc969f39c9c709149a30c997dfa"},{"author":{"_account_id":7128,"name":"Mark Vanderwiel","email":"vanderwl@us.ibm.com","username":"kramvan"},"change_message_id":"8ce8cebe2963e237527bfab136c90b25356e6594","unresolved":false,"context_lines":[{"line_number":189,"context_line":"if node[\u0027openstack\u0027][\u0027network\u0027][\u0027l3\u0027][\u0027router_distributed\u0027] \u003d\u003d \u0027auto\u0027"},{"line_number":190,"context_line":"  if node[\u0027openstack\u0027][\u0027network\u0027][\u0027interface_driver\u0027].split(\u0027.\u0027).last !\u003d \u0027OVSInterfaceDriver\u0027"},{"line_number":191,"context_line":"    node.set[\u0027openstack\u0027][\u0027network\u0027][\u0027l3\u0027][\u0027router_distributed\u0027] \u003d \u0027false\u0027"},{"line_number":192,"context_line":"    fail \u0027OVSInterfaceDirver is not used as interface_driver, DVR cound not be supported without OVS\u0027"},{"line_number":193,"context_line":"  end"},{"line_number":194,"context_line":"end"},{"line_number":195,"context_line":""}],"source_content_type":"text/x-ruby","patch_set":12,"id":"da86d52c_db84c05f","line":192,"updated":"2015-02-12 15:04:10.000000000","message":"wording\n\n... , DVR is not supported with OVS\u0027","commit_id":"71f0795fcfb4c9b9b387a85c16df18d3b08fa519"},{"author":{"_account_id":13667,"name":"ZongKai LI","email":"onionpiece@163.com","username":"lzklibj"},"change_message_id":"b12c1e250f6703a2c0079fbffdb4b5a58e0fa4ce","unresolved":false,"context_lines":[{"line_number":189,"context_line":"if node[\u0027openstack\u0027][\u0027network\u0027][\u0027l3\u0027][\u0027router_distributed\u0027] \u003d\u003d \u0027auto\u0027"},{"line_number":190,"context_line":"  if node[\u0027openstack\u0027][\u0027network\u0027][\u0027interface_driver\u0027].split(\u0027.\u0027).last !\u003d \u0027OVSInterfaceDriver\u0027"},{"line_number":191,"context_line":"    node.set[\u0027openstack\u0027][\u0027network\u0027][\u0027l3\u0027][\u0027router_distributed\u0027] \u003d \u0027false\u0027"},{"line_number":192,"context_line":"    fail \u0027OVSInterfaceDirver is not used as interface_driver, DVR cound not be supported without OVS\u0027"},{"line_number":193,"context_line":"  end"},{"line_number":194,"context_line":"end"},{"line_number":195,"context_line":""}],"source_content_type":"text/x-ruby","patch_set":12,"id":"da86d52c_ae4268a8","line":192,"in_reply_to":"da86d52c_db84c05f","updated":"2015-02-12 15:30:06.000000000","message":"Done","commit_id":"71f0795fcfb4c9b9b387a85c16df18d3b08fa519"},{"author":{"_account_id":7128,"name":"Mark Vanderwiel","email":"vanderwl@us.ibm.com","username":"kramvan"},"change_message_id":"ca963006c07fd2f4a1c96f8fad054060a8066158","unresolved":false,"context_lines":[{"line_number":189,"context_line":"if node[\u0027openstack\u0027][\u0027network\u0027][\u0027l3\u0027][\u0027router_distributed\u0027] \u003d\u003d \u0027auto\u0027"},{"line_number":190,"context_line":"  if node[\u0027openstack\u0027][\u0027network\u0027][\u0027interface_driver\u0027].split(\u0027.\u0027).last !\u003d \u0027OVSInterfaceDriver\u0027"},{"line_number":191,"context_line":"    node.set[\u0027openstack\u0027][\u0027network\u0027][\u0027l3\u0027][\u0027router_distributed\u0027] \u003d \u0027false\u0027"},{"line_number":192,"context_line":"    fail \u0027OVSInterfaceDirver is not used as interface_driver, DVR is not supported without OVS\u0027"},{"line_number":193,"context_line":"  end"},{"line_number":194,"context_line":"end"},{"line_number":195,"context_line":""}],"source_content_type":"text/x-ruby","patch_set":16,"id":"ba7be1f8_686c4a9d","line":192,"updated":"2015-03-02 17:23:14.000000000","message":"Does this need to be a fail?   this is \"auto\" mode, if no OVS, then just a warning should be good enough.","commit_id":"310eaaadc2f19460331ea63c7e89472adefb9bc7"},{"author":{"_account_id":13667,"name":"ZongKai LI","email":"onionpiece@163.com","username":"lzklibj"},"change_message_id":"0bc5fd71338962ec541a9735de328eaccb4add0a","unresolved":false,"context_lines":[{"line_number":189,"context_line":"if node[\u0027openstack\u0027][\u0027network\u0027][\u0027l3\u0027][\u0027router_distributed\u0027] \u003d\u003d \u0027auto\u0027"},{"line_number":190,"context_line":"  if node[\u0027openstack\u0027][\u0027network\u0027][\u0027interface_driver\u0027].split(\u0027.\u0027).last !\u003d \u0027OVSInterfaceDriver\u0027"},{"line_number":191,"context_line":"    node.set[\u0027openstack\u0027][\u0027network\u0027][\u0027l3\u0027][\u0027router_distributed\u0027] \u003d \u0027false\u0027"},{"line_number":192,"context_line":"    fail \u0027OVSInterfaceDirver is not used as interface_driver, DVR is not supported without OVS\u0027"},{"line_number":193,"context_line":"  end"},{"line_number":194,"context_line":"end"},{"line_number":195,"context_line":""}],"source_content_type":"text/x-ruby","patch_set":16,"id":"9a80dd14_78036d0d","line":192,"in_reply_to":"ba7be1f8_686c4a9d","updated":"2015-03-05 10:41:10.000000000","message":"Done","commit_id":"310eaaadc2f19460331ea63c7e89472adefb9bc7"},{"author":{"_account_id":7128,"name":"Mark Vanderwiel","email":"vanderwl@us.ibm.com","username":"kramvan"},"change_message_id":"c40de03b47c21872709b4deb1cba6d8a23b948da","unresolved":false,"context_lines":[{"line_number":194,"context_line":"end"},{"line_number":195,"context_line":""},{"line_number":196,"context_line":"router_distributed \u003d \u0027False\u0027"},{"line_number":197,"context_line":"if [\u0027auto\u0027, \u0027true\u0027, true].include?(node[\u0027openstack\u0027][\u0027network\u0027][\u0027l3\u0027][\u0027router_distributed\u0027]) \u0026\u0026 node[\u0027recipes\u0027].include?(\u0027openstack-network::server\u0027)"},{"line_number":198,"context_line":"  router_distributed \u003d \u0027True\u0027"},{"line_number":199,"context_line":"end"},{"line_number":200,"context_line":"template \u0027/etc/neutron/neutron.conf\u0027 do"}],"source_content_type":"text/x-ruby","patch_set":22,"id":"9a80dd14_40005d01","line":197,"updated":"2015-03-05 17:12:07.000000000","message":"I think a better way of doing this is: \n\nif node.run_list.expand(node.chef_environment).recipes.include?(\u0027openstack-network::server\u0027)\n\nbut this is from older code, so not sure if that\u0027s really better or not.\n\nI think the test for this would look like: \n\n    allow_any_instance_of(Chef::Recipe).to receive(:node)\n      .with( \u003cnot sure what goes here yet\u003e).and_return [\u0027openstack-network::server\u0027]","commit_id":"29aa60a08b96824b4fa9562064336b316678cbec"},{"author":{"_account_id":8112,"name":"Ma Wen Cheng","email":"wenchma@cn.ibm.com","username":"wenchma"},"change_message_id":"4705c37d5cf911e6203335a0f27820601822c908","unresolved":false,"context_lines":[{"line_number":196,"context_line":""},{"line_number":197,"context_line":"router_distributed \u003d \u0027False\u0027"},{"line_number":198,"context_line":"if [\u0027auto\u0027, \u0027true\u0027, true].include?(node[\u0027openstack\u0027][\u0027network\u0027][\u0027l3\u0027][\u0027router_distributed\u0027])"},{"line_number":199,"context_line":"  if recipe_included? \u0027openstack-network::server\u0027"},{"line_number":200,"context_line":"    router_distributed \u003d \u0027True\u0027"},{"line_number":201,"context_line":"  end"},{"line_number":202,"context_line":"end"}],"source_content_type":"text/x-ruby","patch_set":23,"id":"9a80dd14_fab395e6","line":199,"updated":"2015-03-06 10:07:57.000000000","message":"chef style prefer the single line.","commit_id":"87b98446b1b0df27d20cec3e5ff7ae7cfd029a23"},{"author":{"_account_id":13667,"name":"ZongKai LI","email":"onionpiece@163.com","username":"lzklibj"},"change_message_id":"42a043d99a419bb5ad0331cbb11b954297c16410","unresolved":false,"context_lines":[{"line_number":196,"context_line":""},{"line_number":197,"context_line":"router_distributed \u003d \u0027False\u0027"},{"line_number":198,"context_line":"if [\u0027auto\u0027, \u0027true\u0027, true].include?(node[\u0027openstack\u0027][\u0027network\u0027][\u0027l3\u0027][\u0027router_distributed\u0027])"},{"line_number":199,"context_line":"  if recipe_included? \u0027openstack-network::server\u0027"},{"line_number":200,"context_line":"    router_distributed \u003d \u0027True\u0027"},{"line_number":201,"context_line":"  end"},{"line_number":202,"context_line":"end"}],"source_content_type":"text/x-ruby","patch_set":23,"id":"9a80dd14_5a7581f8","line":199,"in_reply_to":"9a80dd14_fab395e6","updated":"2015-03-06 10:14:22.000000000","message":"Done :)","commit_id":"87b98446b1b0df27d20cec3e5ff7ae7cfd029a23"}],"recipes/openvswitch.rb":[{"author":{"_account_id":7128,"name":"Mark Vanderwiel","email":"vanderwl@us.ibm.com","username":"kramvan"},"change_message_id":"234cf7a02d930f8b26fa73639272e3b718f19224","unresolved":false,"context_lines":[{"line_number":162,"context_line":"    end"},{"line_number":163,"context_line":"  end"},{"line_number":164,"context_line":"end"},{"line_number":165,"context_line":""},{"line_number":166,"context_line":"unless node[\u0027openstack\u0027][\u0027network\u0027][\u0027l3_recipe_included\u0027]"},{"line_number":167,"context_line":"  if [true, \u0027true\u0027, \u0027auto\u0027].include?(node[\u0027openstack\u0027][\u0027network\u0027][\u0027router_distributed\u0027])"},{"line_number":168,"context_line":"    if !node[\u0027recipes\u0027].include?(\u0027openstack-network::server\u0027) \u0026\u0026 node[\u0027recipes\u0027].include?(\u0027openstack-compute::compute\u0027)"}],"source_content_type":"text/x-ruby","patch_set":3,"id":"fa81d914_dd14f9a1","line":165,"updated":"2015-01-30 15:12:54.000000000","message":"Why the need for the attribute check here?  the include won\u0027t hurt anything if it\u0027s already been done, right?","commit_id":"ce3922d1665cc02572d148176da257bcb7afc103"},{"author":{"_account_id":13667,"name":"ZongKai LI","email":"onionpiece@163.com","username":"lzklibj"},"change_message_id":"cccc066bab13f52f356470a4c34f9ed41158d663","unresolved":false,"context_lines":[{"line_number":162,"context_line":"    end"},{"line_number":163,"context_line":"  end"},{"line_number":164,"context_line":"end"},{"line_number":165,"context_line":""},{"line_number":166,"context_line":"unless node[\u0027openstack\u0027][\u0027network\u0027][\u0027l3_recipe_included\u0027]"},{"line_number":167,"context_line":"  if [true, \u0027true\u0027, \u0027auto\u0027].include?(node[\u0027openstack\u0027][\u0027network\u0027][\u0027router_distributed\u0027])"},{"line_number":168,"context_line":"    if !node[\u0027recipes\u0027].include?(\u0027openstack-network::server\u0027) \u0026\u0026 node[\u0027recipes\u0027].include?(\u0027openstack-compute::compute\u0027)"}],"source_content_type":"text/x-ruby","patch_set":3,"id":"da86d52c_a5440375","line":165,"in_reply_to":"fa81d914_dd14f9a1","updated":"2015-02-02 14:26:50.000000000","message":"I removed attribute checking of \u0027l3_recipe_included\u0027, the left ones are still need. if user doesn\u0027t want DVR, l3_agent recipe shouldn\u0027t run.","commit_id":"ce3922d1665cc02572d148176da257bcb7afc103"}],"spec/default_spec.rb":[{"author":{"_account_id":7128,"name":"Mark Vanderwiel","email":"vanderwl@us.ibm.com","username":"kramvan"},"change_message_id":"d57971722de81462c52d701ac234f233589fde45","unresolved":false,"context_lines":[{"line_number":332,"context_line":""},{"line_number":333,"context_line":"        it \u0027sets related attributes for distributed routers\u0027 do"},{"line_number":334,"context_line":"          node.set[\u0027openstack\u0027][\u0027network\u0027][\u0027router_distributed\u0027] \u003d true"},{"line_number":335,"context_line":"          expect(chef_run).to render_file(file.name).with_content(/^enable_distributed_routing \u003d True$/)"},{"line_number":336,"context_line":"          expect(chef_run).to render_file(file.name).with_content(/^l2_population \u003d True$/)"},{"line_number":337,"context_line":"          expect(chef_run).to render_file(file.name).with_content(/^tunnel_types \u003d gre, vxlan$/)"},{"line_number":338,"context_line":"        end"}],"source_content_type":"text/x-ruby","patch_set":5,"id":"da86d52c_7a08c591","line":335,"updated":"2015-02-02 18:37:04.000000000","message":"Would like to see any new spec content checking to use the new  with_section_content matcher from Common.","commit_id":"3aec8bc818db7426a4144bdd1679db6e3b0b8bbb"},{"author":{"_account_id":13667,"name":"ZongKai LI","email":"onionpiece@163.com","username":"lzklibj"},"change_message_id":"98ef369fdbfc7631bccfec765c5177bae8f6e75e","unresolved":false,"context_lines":[{"line_number":332,"context_line":""},{"line_number":333,"context_line":"        it \u0027sets related attributes for distributed routers\u0027 do"},{"line_number":334,"context_line":"          node.set[\u0027openstack\u0027][\u0027network\u0027][\u0027router_distributed\u0027] \u003d true"},{"line_number":335,"context_line":"          expect(chef_run).to render_file(file.name).with_content(/^enable_distributed_routing \u003d True$/)"},{"line_number":336,"context_line":"          expect(chef_run).to render_file(file.name).with_content(/^l2_population \u003d True$/)"},{"line_number":337,"context_line":"          expect(chef_run).to render_file(file.name).with_content(/^tunnel_types \u003d gre, vxlan$/)"},{"line_number":338,"context_line":"        end"}],"source_content_type":"text/x-ruby","patch_set":5,"id":"da86d52c_0eb779d9","line":335,"in_reply_to":"da86d52c_7a08c591","updated":"2015-02-03 06:08:55.000000000","message":"Done","commit_id":"3aec8bc818db7426a4144bdd1679db6e3b0b8bbb"}],"templates/default/l3_agent.ini.erb":[{"author":{"_account_id":7128,"name":"Mark Vanderwiel","email":"vanderwl@us.ibm.com","username":"kramvan"},"change_message_id":"ca963006c07fd2f4a1c96f8fad054060a8066158","unresolved":false,"context_lines":[{"line_number":90,"context_line":"# - dvr_snat: this enables centralized SNAT support in conjunction with"},{"line_number":91,"context_line":"#   DVR. This mode must be used for an L3 agent running on a centralized"},{"line_number":92,"context_line":"#   node (or in single-host deployments, e.g. devstack)."},{"line_number":93,"context_line":"agent_mode \u003d \u003c%\u003d @agent_mode %\u003e"},{"line_number":94,"context_line":""},{"line_number":95,"context_line":"# Location to store keepalived and all HA configurations"},{"line_number":96,"context_line":"# ha_confs_path \u003d $state_path/ha_confs"}],"source_content_type":"application/x-erb","patch_set":16,"id":"ba7be1f8_2895f23f","line":93,"updated":"2015-03-02 17:23:14.000000000","message":"Where is this tested in specs?","commit_id":"310eaaadc2f19460331ea63c7e89472adefb9bc7"},{"author":{"_account_id":13667,"name":"ZongKai LI","email":"onionpiece@163.com","username":"lzklibj"},"change_message_id":"0bc5fd71338962ec541a9735de328eaccb4add0a","unresolved":false,"context_lines":[{"line_number":90,"context_line":"# - dvr_snat: this enables centralized SNAT support in conjunction with"},{"line_number":91,"context_line":"#   DVR. This mode must be used for an L3 agent running on a centralized"},{"line_number":92,"context_line":"#   node (or in single-host deployments, e.g. devstack)."},{"line_number":93,"context_line":"agent_mode \u003d \u003c%\u003d @agent_mode %\u003e"},{"line_number":94,"context_line":""},{"line_number":95,"context_line":"# Location to store keepalived and all HA configurations"},{"line_number":96,"context_line":"# ha_confs_path \u003d $state_path/ha_confs"}],"source_content_type":"application/x-erb","patch_set":16,"id":"9a80dd14_7851ad0d","line":93,"in_reply_to":"ba7be1f8_2895f23f","updated":"2015-03-05 10:41:10.000000000","message":"Hi Mark, to test this in specs, we need modify node[\u0027recipes\u0027] to make agent_mode will be set for \u0027dvr\u0027 and \u0027dvr_snat\u0027 case.\nBut my attempts to modify node[\u0027recipes\u0027] failed, I doubt maybe this is read-only attribute? If that, \u0027agent_mode\u0027 maybe cannot test yet.","commit_id":"310eaaadc2f19460331ea63c7e89472adefb9bc7"}],"templates/default/neutron.conf.erb":[{"author":{"_account_id":7128,"name":"Mark Vanderwiel","email":"vanderwl@us.ibm.com","username":"kramvan"},"change_message_id":"234cf7a02d930f8b26fa73639272e3b718f19224","unresolved":false,"context_lines":[{"line_number":9,"context_line":"# the type of the router on the create request (admin-only attribute). Default"},{"line_number":10,"context_line":"# value is \"False\" to support legacy mode (centralized) routers."},{"line_number":11,"context_line":"#"},{"line_number":12,"context_line":"\u003c% if [\u0027auto\u0027,\u0027true\u0027,true].include?(node[\"openstack\"][\"network\"][\"router_distributed\"]) \u0026\u0026 node[\"recipes\"].include?(\"openstack-network::server\") -%\u003e"},{"line_number":13,"context_line":"router_distributed \u003d True"},{"line_number":14,"context_line":"\u003c% else -%\u003e"},{"line_number":15,"context_line":"router_distributed \u003d False"}],"source_content_type":"application/x-erb","patch_set":3,"id":"fa81d914_5d2809e2","line":12,"updated":"2015-01-30 15:12:54.000000000","message":"This is messy to have in the template, why not just pass this router_distributed as a variable and do all the ugly logic in the recipe?","commit_id":"ce3922d1665cc02572d148176da257bcb7afc103"},{"author":{"_account_id":13667,"name":"ZongKai LI","email":"onionpiece@163.com","username":"lzklibj"},"change_message_id":"cccc066bab13f52f356470a4c34f9ed41158d663","unresolved":false,"context_lines":[{"line_number":9,"context_line":"# the type of the router on the create request (admin-only attribute). Default"},{"line_number":10,"context_line":"# value is \"False\" to support legacy mode (centralized) routers."},{"line_number":11,"context_line":"#"},{"line_number":12,"context_line":"\u003c% if [\u0027auto\u0027,\u0027true\u0027,true].include?(node[\"openstack\"][\"network\"][\"router_distributed\"]) \u0026\u0026 node[\"recipes\"].include?(\"openstack-network::server\") -%\u003e"},{"line_number":13,"context_line":"router_distributed \u003d True"},{"line_number":14,"context_line":"\u003c% else -%\u003e"},{"line_number":15,"context_line":"router_distributed \u003d False"}],"source_content_type":"application/x-erb","patch_set":3,"id":"da86d52c_e59fda01","line":12,"in_reply_to":"fa81d914_5d2809e2","updated":"2015-02-02 14:26:50.000000000","message":"Done","commit_id":"ce3922d1665cc02572d148176da257bcb7afc103"}],"templates/default/plugins/ml2/ml2_conf.ini.erb":[{"author":{"_account_id":7128,"name":"Mark Vanderwiel","email":"vanderwl@us.ibm.com","username":"kramvan"},"change_message_id":"234cf7a02d930f8b26fa73639272e3b718f19224","unresolved":false,"context_lines":[{"line_number":24,"context_line":"# Example: mechanism_drivers \u003d openvswitch,brocade"},{"line_number":25,"context_line":"# Example: mechanism_drivers \u003d linuxbridge,brocade"},{"line_number":26,"context_line":"\u003c% if node[\u0027openstack\u0027][\u0027network\u0027][\u0027router_distributed\u0027] \u003d\u003d \u0027auto\u0027 -%\u003e"},{"line_number":27,"context_line":"mechanism_drivers \u003d openvswitch,l2population"},{"line_number":28,"context_line":"\u003c% else -%\u003e"},{"line_number":29,"context_line":"mechanism_drivers \u003d \u003c%\u003d node[\u0027openstack\u0027][\u0027network\u0027][\u0027ml2\u0027][\u0027mechanism_drivers\u0027] %\u003e"},{"line_number":30,"context_line":"\u003c% end -%\u003e"}],"source_content_type":"application/x-erb","patch_set":3,"id":"fa81d914_1d8211c8","line":27,"updated":"2015-01-30 15:12:54.000000000","message":"Humm, why not just change the \u0027mechanism_drivers\u0027 attribute in the recipe and then no need for a change here.","commit_id":"ce3922d1665cc02572d148176da257bcb7afc103"},{"author":{"_account_id":13667,"name":"ZongKai LI","email":"onionpiece@163.com","username":"lzklibj"},"change_message_id":"cccc066bab13f52f356470a4c34f9ed41158d663","unresolved":false,"context_lines":[{"line_number":24,"context_line":"# Example: mechanism_drivers \u003d openvswitch,brocade"},{"line_number":25,"context_line":"# Example: mechanism_drivers \u003d linuxbridge,brocade"},{"line_number":26,"context_line":"\u003c% if node[\u0027openstack\u0027][\u0027network\u0027][\u0027router_distributed\u0027] \u003d\u003d \u0027auto\u0027 -%\u003e"},{"line_number":27,"context_line":"mechanism_drivers \u003d openvswitch,l2population"},{"line_number":28,"context_line":"\u003c% else -%\u003e"},{"line_number":29,"context_line":"mechanism_drivers \u003d \u003c%\u003d node[\u0027openstack\u0027][\u0027network\u0027][\u0027ml2\u0027][\u0027mechanism_drivers\u0027] %\u003e"},{"line_number":30,"context_line":"\u003c% end -%\u003e"}],"source_content_type":"application/x-erb","patch_set":3,"id":"da86d52c_c59ad613","line":27,"in_reply_to":"fa81d914_1d8211c8","updated":"2015-02-02 14:26:50.000000000","message":"Done","commit_id":"ce3922d1665cc02572d148176da257bcb7afc103"}],"templates/default/plugins/openvswitch/ovs_neutron_plugin.ini.erb":[{"author":{"_account_id":7128,"name":"Mark Vanderwiel","email":"vanderwl@us.ibm.com","username":"kramvan"},"change_message_id":"234cf7a02d930f8b26fa73639272e3b718f19224","unresolved":false,"context_lines":[{"line_number":131,"context_line":"# Example: tunnel_types \u003d gre"},{"line_number":132,"context_line":"# Example: tunnel_types \u003d vxlan"},{"line_number":133,"context_line":"# Example: tunnel_types \u003d vxlan, gre"},{"line_number":134,"context_line":"\u003c% if [\"auto\",\"true\",true].include?(node[\"openstack\"][\"network\"][\"router_distributed\"]) -%\u003e"},{"line_number":135,"context_line":"tunnel_types \u003d gre, vxlan"},{"line_number":136,"context_line":"\u003c% else -%\u003e"},{"line_number":137,"context_line":"tunnel_types \u003d \u003c%\u003d node[\"openstack\"][\"network\"][\"openvswitch\"][\"tunnel_types\"] %\u003e"}],"source_content_type":"application/x-erb","patch_set":3,"id":"fa81d914_9d7521fc","line":134,"updated":"2015-01-30 15:12:54.000000000","message":"Again move logic to recipe and pass tunnel_types variable.","commit_id":"ce3922d1665cc02572d148176da257bcb7afc103"},{"author":{"_account_id":13667,"name":"ZongKai LI","email":"onionpiece@163.com","username":"lzklibj"},"change_message_id":"cccc066bab13f52f356470a4c34f9ed41158d663","unresolved":false,"context_lines":[{"line_number":131,"context_line":"# Example: tunnel_types \u003d gre"},{"line_number":132,"context_line":"# Example: tunnel_types \u003d vxlan"},{"line_number":133,"context_line":"# Example: tunnel_types \u003d vxlan, gre"},{"line_number":134,"context_line":"\u003c% if [\"auto\",\"true\",true].include?(node[\"openstack\"][\"network\"][\"router_distributed\"]) -%\u003e"},{"line_number":135,"context_line":"tunnel_types \u003d gre, vxlan"},{"line_number":136,"context_line":"\u003c% else -%\u003e"},{"line_number":137,"context_line":"tunnel_types \u003d \u003c%\u003d node[\"openstack\"][\"network\"][\"openvswitch\"][\"tunnel_types\"] %\u003e"}],"source_content_type":"application/x-erb","patch_set":3,"id":"da86d52c_65068a22","line":134,"in_reply_to":"fa81d914_9d7521fc","updated":"2015-02-02 14:26:50.000000000","message":"Done","commit_id":"ce3922d1665cc02572d148176da257bcb7afc103"},{"author":{"_account_id":7128,"name":"Mark Vanderwiel","email":"vanderwl@us.ibm.com","username":"kramvan"},"change_message_id":"d57971722de81462c52d701ac234f233589fde45","unresolved":false,"context_lines":[{"line_number":9,"context_line":"# to disable creation of tenant networks."},{"line_number":10,"context_line":"#"},{"line_number":11,"context_line":"# Default: tenant_network_type \u003d local"},{"line_number":12,"context_line":"# Example: tenant_network_type \u003d gre "},{"line_number":13,"context_line":"tenant_network_type \u003d \u003c%\u003d node[\"openstack\"][\"network\"][\"openvswitch\"][\"tenant_network_type\"] %\u003e"},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"# (ListOpt) Comma-separated list of"}],"source_content_type":"application/x-erb","patch_set":5,"id":"da86d52c_da3ff123","line":12,"updated":"2015-02-02 18:37:04.000000000","message":"sp?","commit_id":"3aec8bc818db7426a4144bdd1679db6e3b0b8bbb"},{"author":{"_account_id":13667,"name":"ZongKai LI","email":"onionpiece@163.com","username":"lzklibj"},"change_message_id":"98ef369fdbfc7631bccfec765c5177bae8f6e75e","unresolved":false,"context_lines":[{"line_number":9,"context_line":"# to disable creation of tenant networks."},{"line_number":10,"context_line":"#"},{"line_number":11,"context_line":"# Default: tenant_network_type \u003d local"},{"line_number":12,"context_line":"# Example: tenant_network_type \u003d gre "},{"line_number":13,"context_line":"tenant_network_type \u003d \u003c%\u003d node[\"openstack\"][\"network\"][\"openvswitch\"][\"tenant_network_type\"] %\u003e"},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"# (ListOpt) Comma-separated list of"}],"source_content_type":"application/x-erb","patch_set":5,"id":"da86d52c_68270d65","line":12,"in_reply_to":"da86d52c_da3ff123","updated":"2015-02-03 06:08:55.000000000","message":"Done","commit_id":"3aec8bc818db7426a4144bdd1679db6e3b0b8bbb"}]}
