)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":7128,"name":"Mark Vanderwiel","email":"vanderwl@us.ibm.com","username":"kramvan"},"change_message_id":"3d53b35f82ad88f6d5fcc1e0e83d0e730e3cf248","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Wei Hu \u003chwhu@cn.ibm.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2015-05-27 13:46:09 +0800"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Add create_ovs_bridge resource"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Add create_ovs_bridge resource and provider. This resource can create"},{"line_number":10,"context_line":"ovs bridge, and move ip address from interface to the corresponding"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":6,"id":"7a016987_1c9aff6e","line":7,"updated":"2015-05-27 16:21:16.000000000","message":"time to change title to Add ovs_bridge resource","commit_id":"a9892c2298920fc912e44191272c347eae8faf8c"}],"attributes/default.rb":[{"author":{"_account_id":7769,"name":"Pentheus","display_name":"Alan Meadows","email":"alan.meadows@gmail.com","username":"alanmeadows"},"change_message_id":"4149d96b00eab6d5ce7867ce9625fd7ca96a0771","unresolved":false,"context_lines":[{"line_number":1079,"context_line":"# IP movement will ping the validate IP address in the end of its operation."},{"line_number":1080,"context_line":"# If can not ping it, IP movement will rollback, and exit. Default to nil, means"},{"line_number":1081,"context_line":"# the default gateway will be the vlidate IP address"},{"line_number":1082,"context_line":"default[\u0027openstack\u0027][\u0027network\u0027][\u0027ip_movement\u0027][\u0027validate_ip\u0027] \u003d nil"},{"line_number":1083,"context_line":""},{"line_number":1084,"context_line":"# platform-specific settings"},{"line_number":1085,"context_line":"case platform_family"}],"source_content_type":"text/x-ruby","patch_set":2,"id":"7a016987_b6fb6678","line":1082,"updated":"2015-05-24 18:33:33.000000000","message":"Since we\u0027re going through the trouble of adding rollback, what are we doing to ensure that we do not re-attempt the same failed move on the next chef run?","commit_id":"8def0a202053cb62bdc499e11740e34cbf9bd733"},{"author":{"_account_id":8172,"name":"Wei Hu","email":"huwei.xtu@gmail.com","username":"WeiHu"},"change_message_id":"0b18c688b91b56c7dfcb2d5f75b3c5b143557bd0","unresolved":false,"context_lines":[{"line_number":1079,"context_line":"# IP movement will ping the validate IP address in the end of its operation."},{"line_number":1080,"context_line":"# If can not ping it, IP movement will rollback, and exit. Default to nil, means"},{"line_number":1081,"context_line":"# the default gateway will be the vlidate IP address"},{"line_number":1082,"context_line":"default[\u0027openstack\u0027][\u0027network\u0027][\u0027ip_movement\u0027][\u0027validate_ip\u0027] \u003d nil"},{"line_number":1083,"context_line":""},{"line_number":1084,"context_line":"# platform-specific settings"},{"line_number":1085,"context_line":"case platform_family"}],"source_content_type":"text/x-ruby","patch_set":2,"id":"7a016987_648f7475","line":1082,"in_reply_to":"7a016987_b6fb6678","updated":"2015-05-25 01:55:24.000000000","message":"If ip movement failed, user should check the ip movement log first(not add now, will add in following patch set), and correct the interfaces\u0027 configurations, then re-deploy.","commit_id":"8def0a202053cb62bdc499e11740e34cbf9bd733"},{"author":{"_account_id":7128,"name":"Mark Vanderwiel","email":"vanderwl@us.ibm.com","username":"kramvan"},"change_message_id":"3d53b35f82ad88f6d5fcc1e0e83d0e730e3cf248","unresolved":false,"context_lines":[{"line_number":1073,"context_line":"# Flag of move IP address from interface to bridge when create ovs bridge"},{"line_number":1074,"context_line":"default[\u0027openstack\u0027][\u0027network\u0027][\u0027ip_movement\u0027][\u0027move_ip\u0027] \u003d false"},{"line_number":1075,"context_line":""},{"line_number":1076,"context_line":"# Time out of ip address movement, the unit is second"},{"line_number":1077,"context_line":"default[\u0027openstack\u0027][\u0027network\u0027][\u0027ip_movement\u0027][\u0027timeout\u0027] \u003d 180"},{"line_number":1078,"context_line":""},{"line_number":1079,"context_line":"# IP movement will ping the validate IP address in the end of its operation."}],"source_content_type":"text/x-ruby","patch_set":6,"id":"7a016987_dc2d87fe","line":1076,"updated":"2015-05-27 16:21:16.000000000","message":"Maybe a bit more detail about what this timeout actually covers?   The startup of the new bridge, the assign of the address, what actions are taking up this time.\n\nWhat if there are more timeouts need later, would it be better to call this a specific timeout   \"bridge_startup_timeout\"?","commit_id":"a9892c2298920fc912e44191272c347eae8faf8c"},{"author":{"_account_id":8172,"name":"Wei Hu","email":"huwei.xtu@gmail.com","username":"WeiHu"},"change_message_id":"6b2a7e0d1494a8d6fbc28284ede07745e98d2004","unresolved":false,"context_lines":[{"line_number":1073,"context_line":"# Flag of move IP address from interface to bridge when create ovs bridge"},{"line_number":1074,"context_line":"default[\u0027openstack\u0027][\u0027network\u0027][\u0027ip_movement\u0027][\u0027move_ip\u0027] \u003d false"},{"line_number":1075,"context_line":""},{"line_number":1076,"context_line":"# Time out of ip address movement, the unit is second"},{"line_number":1077,"context_line":"default[\u0027openstack\u0027][\u0027network\u0027][\u0027ip_movement\u0027][\u0027timeout\u0027] \u003d 180"},{"line_number":1078,"context_line":""},{"line_number":1079,"context_line":"# IP movement will ping the validate IP address in the end of its operation."}],"source_content_type":"text/x-ruby","patch_set":6,"id":"7a016987_34579527","line":1076,"in_reply_to":"7a016987_dc2d87fe","updated":"2015-06-01 05:57:04.000000000","message":"This value is not only include bridge_startup, but also service network restart, which will restart all the interfaces.","commit_id":"a9892c2298920fc912e44191272c347eae8faf8c"},{"author":{"_account_id":7128,"name":"Mark Vanderwiel","email":"vanderwl@us.ibm.com","username":"kramvan"},"change_message_id":"3d53b35f82ad88f6d5fcc1e0e83d0e730e3cf248","unresolved":false,"context_lines":[{"line_number":1078,"context_line":""},{"line_number":1079,"context_line":"# IP movement will ping the validate IP address in the end of its operation."},{"line_number":1080,"context_line":"# If can not ping it, IP movement will rollback, and exit. Default to nil, means"},{"line_number":1081,"context_line":"# the default gateway will be the vlidate IP address"},{"line_number":1082,"context_line":"default[\u0027openstack\u0027][\u0027network\u0027][\u0027ip_movement\u0027][\u0027validate_ip\u0027] \u003d nil"},{"line_number":1083,"context_line":""},{"line_number":1084,"context_line":"# platform-specific settings"}],"source_content_type":"text/x-ruby","patch_set":6,"id":"7a016987_9c9b8f66","line":1081,"updated":"2015-05-27 16:21:16.000000000","message":"typo","commit_id":"a9892c2298920fc912e44191272c347eae8faf8c"},{"author":{"_account_id":8172,"name":"Wei Hu","email":"huwei.xtu@gmail.com","username":"WeiHu"},"change_message_id":"6b2a7e0d1494a8d6fbc28284ede07745e98d2004","unresolved":false,"context_lines":[{"line_number":1078,"context_line":""},{"line_number":1079,"context_line":"# IP movement will ping the validate IP address in the end of its operation."},{"line_number":1080,"context_line":"# If can not ping it, IP movement will rollback, and exit. Default to nil, means"},{"line_number":1081,"context_line":"# the default gateway will be the vlidate IP address"},{"line_number":1082,"context_line":"default[\u0027openstack\u0027][\u0027network\u0027][\u0027ip_movement\u0027][\u0027validate_ip\u0027] \u003d nil"},{"line_number":1083,"context_line":""},{"line_number":1084,"context_line":"# platform-specific settings"}],"source_content_type":"text/x-ruby","patch_set":6,"id":"7a016987_540a1127","line":1081,"in_reply_to":"7a016987_9c9b8f66","updated":"2015-06-01 05:57:04.000000000","message":"Done","commit_id":"a9892c2298920fc912e44191272c347eae8faf8c"},{"author":{"_account_id":13667,"name":"ZongKai LI","email":"onionpiece@163.com","username":"lzklibj"},"change_message_id":"120bf6c34a890b3b1e67770ef6d743673b250e0c","unresolved":false,"context_lines":[{"line_number":1083,"context_line":"# Flag of move IP address from interface to bridge when create ovs bridge"},{"line_number":1084,"context_line":"default[\u0027openstack\u0027][\u0027network\u0027][\u0027ip_movement\u0027][\u0027move_ip\u0027] \u003d false"},{"line_number":1085,"context_line":""},{"line_number":1086,"context_line":"# Time out of ip address movement, the unit is second. This value should longer"},{"line_number":1087,"context_line":"# than the time of execute \u0027service network restart\u0027 and plus the time of after"},{"line_number":1088,"context_line":"# this exection, its network back to work. E.g. \u0027service network restart\u0027 need 10s,"},{"line_number":1089,"context_line":"# but need to wait 120s before network back to work. Then, this value should bigger"}],"source_content_type":"text/x-ruby","patch_set":8,"id":"7a016987_4f7a7778","line":1086,"updated":"2015-06-01 08:22:50.000000000","message":"Timeout(second) of ip address movement. This value should be longer than the time range from execute \"service network restart\" to network back to work. E.g. .....\n\nMaybe this would be simpler.","commit_id":"01c5b1eaebf7792c91ac0a4b5cfb1e2763c683af"}],"providers/create_ovs_bridge.rb":[{"author":{"_account_id":7769,"name":"Pentheus","display_name":"Alan Meadows","email":"alan.meadows@gmail.com","username":"alanmeadows"},"change_message_id":"4149d96b00eab6d5ce7867ce9625fd7ca96a0771","unresolved":false,"context_lines":[{"line_number":25,"context_line":"  iface \u003d new_resource.iface"},{"line_number":26,"context_line":"  move_ip \u003d new_resource.move_ip"},{"line_number":27,"context_line":"  timeout \u003d new_resource.timeout"},{"line_number":28,"context_line":"  validate_ip \u003d new_resource.validate_ip"},{"line_number":29,"context_line":"  ipmovement_dir \u003d Chef::Config[:file_cache_path] + \u0027/ip_movement\u0027"},{"line_number":30,"context_line":"  resolv_file \u003d \u0027/etc/resolv.conf\u0027"},{"line_number":31,"context_line":""}],"source_content_type":"text/x-ruby","patch_set":2,"id":"7a016987_362e56fb","line":28,"updated":"2015-05-24 18:33:33.000000000","message":"Unless I am missing something, I do not see where validate_ip is exercised","commit_id":"8def0a202053cb62bdc499e11740e34cbf9bd733"},{"author":{"_account_id":8172,"name":"Wei Hu","email":"huwei.xtu@gmail.com","username":"WeiHu"},"change_message_id":"0b18c688b91b56c7dfcb2d5f75b3c5b143557bd0","unresolved":false,"context_lines":[{"line_number":25,"context_line":"  iface \u003d new_resource.iface"},{"line_number":26,"context_line":"  move_ip \u003d new_resource.move_ip"},{"line_number":27,"context_line":"  timeout \u003d new_resource.timeout"},{"line_number":28,"context_line":"  validate_ip \u003d new_resource.validate_ip"},{"line_number":29,"context_line":"  ipmovement_dir \u003d Chef::Config[:file_cache_path] + \u0027/ip_movement\u0027"},{"line_number":30,"context_line":"  resolv_file \u003d \u0027/etc/resolv.conf\u0027"},{"line_number":31,"context_line":""}],"source_content_type":"text/x-ruby","patch_set":2,"id":"7a016987_e46c84d1","line":28,"in_reply_to":"7a016987_362e56fb","updated":"2015-05-25 01:55:24.000000000","message":"This provide is still in progress. Not includes all the logic. I\u0027ll add them in the next patch set.","commit_id":"8def0a202053cb62bdc499e11740e34cbf9bd733"},{"author":{"_account_id":7769,"name":"Pentheus","display_name":"Alan Meadows","email":"alan.meadows@gmail.com","username":"alanmeadows"},"change_message_id":"4149d96b00eab6d5ce7867ce9625fd7ca96a0771","unresolved":false,"context_lines":[{"line_number":103,"context_line":"      when \u0027rhel\u0027"},{"line_number":104,"context_line":"        config_fedora(br, iface)"},{"line_number":105,"context_line":"      when \u0027debian\u0027"},{"line_number":106,"context_line":"        config_debian(iface_file, br, iface)"},{"line_number":107,"context_line":"      end"},{"line_number":108,"context_line":"    end"},{"line_number":109,"context_line":"  end"}],"source_content_type":"text/x-ruby","patch_set":2,"id":"7a016987_56ec32ba","line":106,"updated":"2015-05-24 18:33:33.000000000","message":"What nulls the previous L3 configuration (if any) of #{iface}, i.e. sets it to 0.0.0.0 and potentially PROMISC?","commit_id":"8def0a202053cb62bdc499e11740e34cbf9bd733"},{"author":{"_account_id":8172,"name":"Wei Hu","email":"huwei.xtu@gmail.com","username":"WeiHu"},"change_message_id":"0b18c688b91b56c7dfcb2d5f75b3c5b143557bd0","unresolved":false,"context_lines":[{"line_number":103,"context_line":"      when \u0027rhel\u0027"},{"line_number":104,"context_line":"        config_fedora(br, iface)"},{"line_number":105,"context_line":"      when \u0027debian\u0027"},{"line_number":106,"context_line":"        config_debian(iface_file, br, iface)"},{"line_number":107,"context_line":"      end"},{"line_number":108,"context_line":"    end"},{"line_number":109,"context_line":"  end"}],"source_content_type":"text/x-ruby","patch_set":2,"id":"7a016987_a499ecc5","line":106,"in_reply_to":"7a016987_56ec32ba","updated":"2015-05-25 01:55:24.000000000","message":"Do  you mean the iface ip address is 0.0.0.0 and it is working in PROMISC mode or we should  make sure the iface is exist in the os ?\n\nThis ip address movement is based on the user\u0027s network configuration files. So if user configured 0.0.0.0 for one nic, the corresponding ip address in bridge will also be the same.\n\nFor PROMISC, once the nic plugged to bridge, it will be in PROMISC mode.\n\nMaybe we should check the iface existence here, but not only use only_if in this resource to make sure the iface is exist.","commit_id":"8def0a202053cb62bdc499e11740e34cbf9bd733"},{"author":{"_account_id":7128,"name":"Mark Vanderwiel","email":"vanderwl@us.ibm.com","username":"kramvan"},"change_message_id":"b9ed284ee1e2883df3f0b33b5ef37bb6b7a1c84d","unresolved":false,"context_lines":[{"line_number":17,"context_line":"# See the License for the specific language governing permissions and"},{"line_number":18,"context_line":"# limitations under the License."},{"line_number":19,"context_line":"#"},{"line_number":20,"context_line":"require \u0027pp\u0027"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"action :create do"},{"line_number":23,"context_line":""}],"source_content_type":"text/x-ruby","patch_set":4,"id":"7a016987_2aafdb95","line":20,"updated":"2015-05-26 15:37:15.000000000","message":"not used?","commit_id":"02931ba14c30f54324f1db9615dc7d30cb8f89df"},{"author":{"_account_id":8172,"name":"Wei Hu","email":"huwei.xtu@gmail.com","username":"WeiHu"},"change_message_id":"356fe03b2ffc32d000f7a0c978fc09bbe66b5d8e","unresolved":false,"context_lines":[{"line_number":17,"context_line":"# See the License for the specific language governing permissions and"},{"line_number":18,"context_line":"# limitations under the License."},{"line_number":19,"context_line":"#"},{"line_number":20,"context_line":"require \u0027pp\u0027"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"action :create do"},{"line_number":23,"context_line":""}],"source_content_type":"text/x-ruby","patch_set":4,"id":"7a016987_0ddb031d","line":20,"in_reply_to":"7a016987_2aafdb95","updated":"2015-05-27 05:19:06.000000000","message":"Will delete it.","commit_id":"02931ba14c30f54324f1db9615dc7d30cb8f89df"},{"author":{"_account_id":7128,"name":"Mark Vanderwiel","email":"vanderwl@us.ibm.com","username":"kramvan"},"change_message_id":"b9ed284ee1e2883df3f0b33b5ef37bb6b7a1c84d","unresolved":false,"context_lines":[{"line_number":19,"context_line":"#"},{"line_number":20,"context_line":"require \u0027pp\u0027"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"action :create do"},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"  br \u003d new_resource.br"},{"line_number":25,"context_line":"  iface \u003d new_resource.iface"}],"source_content_type":"text/x-ruby","patch_set":4,"id":"7a016987_2a80fb45","line":22,"updated":"2015-05-26 15:37:15.000000000","message":"Since this is the action, probably don\u0027t need that in the name of the resource, just use ovs_bridge  with actions (create, delete, reset, ...).","commit_id":"02931ba14c30f54324f1db9615dc7d30cb8f89df"},{"author":{"_account_id":8172,"name":"Wei Hu","email":"huwei.xtu@gmail.com","username":"WeiHu"},"change_message_id":"356fe03b2ffc32d000f7a0c978fc09bbe66b5d8e","unresolved":false,"context_lines":[{"line_number":19,"context_line":"#"},{"line_number":20,"context_line":"require \u0027pp\u0027"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"action :create do"},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"  br \u003d new_resource.br"},{"line_number":25,"context_line":"  iface \u003d new_resource.iface"}],"source_content_type":"text/x-ruby","patch_set":4,"id":"7a016987_8dfdb370","line":22,"in_reply_to":"7a016987_2a80fb45","updated":"2015-05-27 05:19:06.000000000","message":"Yeah. That\u0027s right.","commit_id":"02931ba14c30f54324f1db9615dc7d30cb8f89df"},{"author":{"_account_id":7128,"name":"Mark Vanderwiel","email":"vanderwl@us.ibm.com","username":"kramvan"},"change_message_id":"b9ed284ee1e2883df3f0b33b5ef37bb6b7a1c84d","unresolved":false,"context_lines":[{"line_number":27,"context_line":"  timeout \u003d new_resource.timeout"},{"line_number":28,"context_line":"  validate_ip \u003d new_resource.validate_ip"},{"line_number":29,"context_line":"  ipmovement_dir \u003d Chef::Config[:file_cache_path] + \u0027/ip_movement\u0027"},{"line_number":30,"context_line":"  resolv_file \u003d \u0027/etc/resolv.conf\u0027"},{"line_number":31,"context_line":"  status_file \u003d ipmovement_dir + \u0027/status\u0027"},{"line_number":32,"context_line":"  script_log \u003d ipmovement_dir + \u0027/log\u0027"},{"line_number":33,"context_line":""}],"source_content_type":"text/x-ruby","patch_set":4,"id":"7a016987_6aedd324","line":30,"updated":"2015-05-26 15:37:15.000000000","message":"This seems like it might be platform specific?","commit_id":"02931ba14c30f54324f1db9615dc7d30cb8f89df"},{"author":{"_account_id":8172,"name":"Wei Hu","email":"huwei.xtu@gmail.com","username":"WeiHu"},"change_message_id":"356fe03b2ffc32d000f7a0c978fc09bbe66b5d8e","unresolved":false,"context_lines":[{"line_number":27,"context_line":"  timeout \u003d new_resource.timeout"},{"line_number":28,"context_line":"  validate_ip \u003d new_resource.validate_ip"},{"line_number":29,"context_line":"  ipmovement_dir \u003d Chef::Config[:file_cache_path] + \u0027/ip_movement\u0027"},{"line_number":30,"context_line":"  resolv_file \u003d \u0027/etc/resolv.conf\u0027"},{"line_number":31,"context_line":"  status_file \u003d ipmovement_dir + \u0027/status\u0027"},{"line_number":32,"context_line":"  script_log \u003d ipmovement_dir + \u0027/log\u0027"},{"line_number":33,"context_line":""}],"source_content_type":"text/x-ruby","patch_set":4,"id":"7a016987_6d395741","line":30,"in_reply_to":"7a016987_6aedd324","updated":"2015-05-27 05:19:06.000000000","message":"Ubuntu, rhel and suse all use /etc/resolv.conf as its nameservers configurations. I think maybe we no need to worry about this platform specific for this configuration file.","commit_id":"02931ba14c30f54324f1db9615dc7d30cb8f89df"},{"author":{"_account_id":7128,"name":"Mark Vanderwiel","email":"vanderwl@us.ibm.com","username":"kramvan"},"change_message_id":"b9ed284ee1e2883df3f0b33b5ef37bb6b7a1c84d","unresolved":false,"context_lines":[{"line_number":34,"context_line":"  # Do not move ip address if move_ip is false or there is no ip address in the interface."},{"line_number":35,"context_line":"  if !move_ip || !node[\u0027network\u0027][\u0027interfaces\u0027][iface][\u0027addresses\u0027].select { |_address, data|data[\u0027family\u0027] \u003d\u003d \u0027inet\u0027 }.keys[0]"},{"line_number":36,"context_line":"    execute \u0027create ovs bridge\u0027 do"},{"line_number":37,"context_line":"      command \"ovs-vsctl add-br #{br} -- add-port #{br} #{iface}\""},{"line_number":38,"context_line":"      action :run"},{"line_number":39,"context_line":"      not_if \"ovs-vsctl br-exists #{br}\""},{"line_number":40,"context_line":"    end"}],"source_content_type":"text/x-ruby","patch_set":4,"id":"7a016987_cabde703","line":37,"updated":"2015-05-26 15:37:15.000000000","message":"Since this is using a cli cmd directly, how does it ensure that this command will be available?  Seems like this should be after the package step below?","commit_id":"02931ba14c30f54324f1db9615dc7d30cb8f89df"},{"author":{"_account_id":8172,"name":"Wei Hu","email":"huwei.xtu@gmail.com","username":"WeiHu"},"change_message_id":"356fe03b2ffc32d000f7a0c978fc09bbe66b5d8e","unresolved":false,"context_lines":[{"line_number":34,"context_line":"  # Do not move ip address if move_ip is false or there is no ip address in the interface."},{"line_number":35,"context_line":"  if !move_ip || !node[\u0027network\u0027][\u0027interfaces\u0027][iface][\u0027addresses\u0027].select { |_address, data|data[\u0027family\u0027] \u003d\u003d \u0027inet\u0027 }.keys[0]"},{"line_number":36,"context_line":"    execute \u0027create ovs bridge\u0027 do"},{"line_number":37,"context_line":"      command \"ovs-vsctl add-br #{br} -- add-port #{br} #{iface}\""},{"line_number":38,"context_line":"      action :run"},{"line_number":39,"context_line":"      not_if \"ovs-vsctl br-exists #{br}\""},{"line_number":40,"context_line":"    end"}],"source_content_type":"text/x-ruby","patch_set":4,"id":"7a016987_ad162fa5","line":37,"in_reply_to":"7a016987_cabde703","updated":"2015-05-27 05:19:06.000000000","message":"Openvswitch recipe install openvsiwtch pkg and start the service. I think this resource should be run after openvsiwtch recipe installed the pkg. But your comments make sence. Since this can be a single resource, the pkg should be installed in this resource.","commit_id":"02931ba14c30f54324f1db9615dc7d30cb8f89df"},{"author":{"_account_id":7128,"name":"Mark Vanderwiel","email":"vanderwl@us.ibm.com","username":"kramvan"},"change_message_id":"b9ed284ee1e2883df3f0b33b5ef37bb6b7a1c84d","unresolved":false,"context_lines":[{"line_number":66,"context_line":"  next if is_moved"},{"line_number":67,"context_line":""},{"line_number":68,"context_line":"  # NetworkManager service should be stopped before ip address movement operation."},{"line_number":69,"context_line":"  service \u0027NetworkManager\u0027 do"},{"line_number":70,"context_line":"    service_name NM_SERVICE"},{"line_number":71,"context_line":"    action [:stop, :disable]"},{"line_number":72,"context_line":"  end"}],"source_content_type":"text/x-ruby","patch_set":4,"id":"7a016987_6a30339f","line":69,"updated":"2015-05-26 15:37:15.000000000","message":"use NM_SERVICE here instead?\nthat can remove line 70?\nand it will be more correct for the platform.","commit_id":"02931ba14c30f54324f1db9615dc7d30cb8f89df"},{"author":{"_account_id":8172,"name":"Wei Hu","email":"huwei.xtu@gmail.com","username":"WeiHu"},"change_message_id":"356fe03b2ffc32d000f7a0c978fc09bbe66b5d8e","unresolved":false,"context_lines":[{"line_number":66,"context_line":"  next if is_moved"},{"line_number":67,"context_line":""},{"line_number":68,"context_line":"  # NetworkManager service should be stopped before ip address movement operation."},{"line_number":69,"context_line":"  service \u0027NetworkManager\u0027 do"},{"line_number":70,"context_line":"    service_name NM_SERVICE"},{"line_number":71,"context_line":"    action [:stop, :disable]"},{"line_number":72,"context_line":"  end"}],"source_content_type":"text/x-ruby","patch_set":4,"id":"7a016987_6d1037a9","line":69,"in_reply_to":"7a016987_6a30339f","updated":"2015-05-27 05:19:06.000000000","message":"Will do.","commit_id":"02931ba14c30f54324f1db9615dc7d30cb8f89df"}],"providers/ovs_bridge.rb":[{"author":{"_account_id":7128,"name":"Mark Vanderwiel","email":"vanderwl@us.ibm.com","username":"kramvan"},"change_message_id":"3d53b35f82ad88f6d5fcc1e0e83d0e730e3cf248","unresolved":false,"context_lines":[{"line_number":41,"context_line":"  end"},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"  if node[\u0027openstack\u0027][\u0027network\u0027][\u0027openvswitch\u0027][\u0027use_source_version\u0027]"},{"line_number":44,"context_line":"    if node[\u0027lsb\u0027] \u0026\u0026 node[\u0027lsb\u0027][\u0027codename\u0027] \u003d\u003d \u0027precise\u0027"},{"line_number":45,"context_line":"      include_recipe \u0027openstack-network::build_openvswitch_source\u0027"},{"line_number":46,"context_line":"    end"},{"line_number":47,"context_line":"  else"}],"source_content_type":"text/x-ruby","patch_set":6,"id":"7a016987_9c46ef79","line":44,"updated":"2015-05-27 16:21:16.000000000","message":"no need to support precise any more, just Trusty 14.0x and Centos 7.x","commit_id":"a9892c2298920fc912e44191272c347eae8faf8c"},{"author":{"_account_id":8172,"name":"Wei Hu","email":"huwei.xtu@gmail.com","username":"WeiHu"},"change_message_id":"d62c6a77d80a049f225302b8895de9fdae2351fd","unresolved":false,"context_lines":[{"line_number":41,"context_line":"  end"},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"  if node[\u0027openstack\u0027][\u0027network\u0027][\u0027openvswitch\u0027][\u0027use_source_version\u0027]"},{"line_number":44,"context_line":"    if node[\u0027lsb\u0027] \u0026\u0026 node[\u0027lsb\u0027][\u0027codename\u0027] \u003d\u003d \u0027precise\u0027"},{"line_number":45,"context_line":"      include_recipe \u0027openstack-network::build_openvswitch_source\u0027"},{"line_number":46,"context_line":"    end"},{"line_number":47,"context_line":"  else"}],"source_content_type":"text/x-ruby","patch_set":6,"id":"7a016987_63200e9c","line":44,"in_reply_to":"7a016987_9c46ef79","updated":"2015-05-28 10:17:44.000000000","message":"Done","commit_id":"a9892c2298920fc912e44191272c347eae8faf8c"},{"author":{"_account_id":7128,"name":"Mark Vanderwiel","email":"vanderwl@us.ibm.com","username":"kramvan"},"change_message_id":"3d53b35f82ad88f6d5fcc1e0e83d0e730e3cf248","unresolved":false,"context_lines":[{"line_number":60,"context_line":"    # that it does"},{"line_number":61,"context_line":""},{"line_number":62,"context_line":"    begin"},{"line_number":63,"context_line":"      if resources(\u0027package[openvswitch-datapath-dkms]\u0027)"},{"line_number":64,"context_line":"        execute \u0027/usr/share/openvswitch/scripts/ovs-ctl force-reload-kmod\u0027 do"},{"line_number":65,"context_line":"          action :nothing"},{"line_number":66,"context_line":"          subscribes :run, resources(\u0027package[openvswitch-datapath-dkms]\u0027), :immediately"}],"source_content_type":"text/x-ruby","patch_set":6,"id":"7a016987_7f72057e","line":63,"updated":"2015-05-27 16:21:16.000000000","message":"I\u0027m confused, why the if check if your also going to catch the resource exception?  only one or the other is needed, right?  I guess I would prefer not using the exception if possible.","commit_id":"a9892c2298920fc912e44191272c347eae8faf8c"},{"author":{"_account_id":8172,"name":"Wei Hu","email":"huwei.xtu@gmail.com","username":"WeiHu"},"change_message_id":"d62c6a77d80a049f225302b8895de9fdae2351fd","unresolved":false,"context_lines":[{"line_number":60,"context_line":"    # that it does"},{"line_number":61,"context_line":""},{"line_number":62,"context_line":"    begin"},{"line_number":63,"context_line":"      if resources(\u0027package[openvswitch-datapath-dkms]\u0027)"},{"line_number":64,"context_line":"        execute \u0027/usr/share/openvswitch/scripts/ovs-ctl force-reload-kmod\u0027 do"},{"line_number":65,"context_line":"          action :nothing"},{"line_number":66,"context_line":"          subscribes :run, resources(\u0027package[openvswitch-datapath-dkms]\u0027), :immediately"}],"source_content_type":"text/x-ruby","patch_set":6,"id":"7a016987_63a5ae02","line":63,"in_reply_to":"7a016987_7f72057e","updated":"2015-05-28 10:17:44.000000000","message":"I just copied those code from openvswitch recipe. Seems I need to check them first. :(\nI\u0027ll update it. Thanks","commit_id":"a9892c2298920fc912e44191272c347eae8faf8c"},{"author":{"_account_id":8172,"name":"Wei Hu","email":"huwei.xtu@gmail.com","username":"WeiHu"},"change_message_id":"6b2a7e0d1494a8d6fbc28284ede07745e98d2004","unresolved":false,"context_lines":[{"line_number":60,"context_line":"    # that it does"},{"line_number":61,"context_line":""},{"line_number":62,"context_line":"    begin"},{"line_number":63,"context_line":"      if resources(\u0027package[openvswitch-datapath-dkms]\u0027)"},{"line_number":64,"context_line":"        execute \u0027/usr/share/openvswitch/scripts/ovs-ctl force-reload-kmod\u0027 do"},{"line_number":65,"context_line":"          action :nothing"},{"line_number":66,"context_line":"          subscribes :run, resources(\u0027package[openvswitch-datapath-dkms]\u0027), :immediately"}],"source_content_type":"text/x-ruby","patch_set":6,"id":"7a016987_b4970539","line":63,"in_reply_to":"7a016987_7f72057e","updated":"2015-06-01 05:57:04.000000000","message":"I think this catch is needed. Remove the rescue logic. If there is no resources(\u0027package[openvswitch-datapath-dkms]\u0027), this recipe will failure here. Do not use if is ok here. Just try it first. And skip it if can not find this resource.","commit_id":"a9892c2298920fc912e44191272c347eae8faf8c"},{"author":{"_account_id":7128,"name":"Mark Vanderwiel","email":"vanderwl@us.ibm.com","username":"kramvan"},"change_message_id":"3d53b35f82ad88f6d5fcc1e0e83d0e730e3cf248","unresolved":false,"context_lines":[{"line_number":87,"context_line":"    next"},{"line_number":88,"context_line":"  end"},{"line_number":89,"context_line":""},{"line_number":90,"context_line":"  # Install initscriptes."},{"line_number":91,"context_line":"  node[\u0027openstack\u0027][\u0027network\u0027][\u0027platform\u0027][\u0027ip_movement_packages\u0027].each do |pkg|"},{"line_number":92,"context_line":"    package pkg do"},{"line_number":93,"context_line":"      action :upgrade"}],"source_content_type":"text/x-ruby","patch_set":6,"id":"7a016987_dfbc59dd","line":90,"updated":"2015-05-27 16:21:16.000000000","message":"initscripts?","commit_id":"a9892c2298920fc912e44191272c347eae8faf8c"},{"author":{"_account_id":8172,"name":"Wei Hu","email":"huwei.xtu@gmail.com","username":"WeiHu"},"change_message_id":"d62c6a77d80a049f225302b8895de9fdae2351fd","unresolved":false,"context_lines":[{"line_number":87,"context_line":"    next"},{"line_number":88,"context_line":"  end"},{"line_number":89,"context_line":""},{"line_number":90,"context_line":"  # Install initscriptes."},{"line_number":91,"context_line":"  node[\u0027openstack\u0027][\u0027network\u0027][\u0027platform\u0027][\u0027ip_movement_packages\u0027].each do |pkg|"},{"line_number":92,"context_line":"    package pkg do"},{"line_number":93,"context_line":"      action :upgrade"}],"source_content_type":"text/x-ruby","patch_set":6,"id":"7a016987_e3b99e2f","line":90,"in_reply_to":"7a016987_dfbc59dd","updated":"2015-05-28 10:17:44.000000000","message":"sorry for typo","commit_id":"a9892c2298920fc912e44191272c347eae8faf8c"},{"author":{"_account_id":7128,"name":"Mark Vanderwiel","email":"vanderwl@us.ibm.com","username":"kramvan"},"change_message_id":"3d53b35f82ad88f6d5fcc1e0e83d0e730e3cf248","unresolved":false,"context_lines":[{"line_number":91,"context_line":"  node[\u0027openstack\u0027][\u0027network\u0027][\u0027platform\u0027][\u0027ip_movement_packages\u0027].each do |pkg|"},{"line_number":92,"context_line":"    package pkg do"},{"line_number":93,"context_line":"      action :upgrade"},{"line_number":94,"context_line":"      retries 5"},{"line_number":95,"context_line":"      retry_delay 10"},{"line_number":96,"context_line":"    end"},{"line_number":97,"context_line":"  end"}],"source_content_type":"text/x-ruby","patch_set":6,"id":"7a016987_ffa035a7","line":94,"updated":"2015-05-27 16:21:16.000000000","message":"don\u0027t think retries and delay are needed here, this is just a package install like any other.","commit_id":"a9892c2298920fc912e44191272c347eae8faf8c"},{"author":{"_account_id":8172,"name":"Wei Hu","email":"huwei.xtu@gmail.com","username":"WeiHu"},"change_message_id":"d62c6a77d80a049f225302b8895de9fdae2351fd","unresolved":false,"context_lines":[{"line_number":91,"context_line":"  node[\u0027openstack\u0027][\u0027network\u0027][\u0027platform\u0027][\u0027ip_movement_packages\u0027].each do |pkg|"},{"line_number":92,"context_line":"    package pkg do"},{"line_number":93,"context_line":"      action :upgrade"},{"line_number":94,"context_line":"      retries 5"},{"line_number":95,"context_line":"      retry_delay 10"},{"line_number":96,"context_line":"    end"},{"line_number":97,"context_line":"  end"}],"source_content_type":"text/x-ruby","patch_set":6,"id":"7a016987_637c8e72","line":94,"in_reply_to":"7a016987_ffa035a7","updated":"2015-05-28 10:17:44.000000000","message":"will do","commit_id":"a9892c2298920fc912e44191272c347eae8faf8c"},{"author":{"_account_id":7128,"name":"Mark Vanderwiel","email":"vanderwl@us.ibm.com","username":"kramvan"},"change_message_id":"3d53b35f82ad88f6d5fcc1e0e83d0e730e3cf248","unresolved":false,"context_lines":[{"line_number":100,"context_line":"  case node[\u0027platform_family\u0027]"},{"line_number":101,"context_line":"  when \u0027rhel\u0027"},{"line_number":102,"context_line":"    NM_SERVICE \u003d \u0027NetworkManager\u0027"},{"line_number":103,"context_line":"    br_file \u003d \u0027/etc/sysconfig/network-scripts/ifcfg-\u0027 + br"},{"line_number":104,"context_line":"    iface_file \u003d \u0027/etc/sysconfig/network-scripts/ifcfg-\u0027 + iface"},{"line_number":105,"context_line":"    is_moved \u003d true if ::File.exist?(br_file)"},{"line_number":106,"context_line":"  when \u0027debian\u0027"}],"source_content_type":"text/x-ruby","patch_set":6,"id":"7a016987_3f492dd1","line":103,"updated":"2015-05-27 16:21:16.000000000","message":"could use a bit a DRY here for the path","commit_id":"a9892c2298920fc912e44191272c347eae8faf8c"},{"author":{"_account_id":8172,"name":"Wei Hu","email":"huwei.xtu@gmail.com","username":"WeiHu"},"change_message_id":"d62c6a77d80a049f225302b8895de9fdae2351fd","unresolved":false,"context_lines":[{"line_number":100,"context_line":"  case node[\u0027platform_family\u0027]"},{"line_number":101,"context_line":"  when \u0027rhel\u0027"},{"line_number":102,"context_line":"    NM_SERVICE \u003d \u0027NetworkManager\u0027"},{"line_number":103,"context_line":"    br_file \u003d \u0027/etc/sysconfig/network-scripts/ifcfg-\u0027 + br"},{"line_number":104,"context_line":"    iface_file \u003d \u0027/etc/sysconfig/network-scripts/ifcfg-\u0027 + iface"},{"line_number":105,"context_line":"    is_moved \u003d true if ::File.exist?(br_file)"},{"line_number":106,"context_line":"  when \u0027debian\u0027"}],"source_content_type":"text/x-ruby","patch_set":6,"id":"7a016987_e3907e97","line":103,"in_reply_to":"7a016987_3f492dd1","updated":"2015-05-28 10:17:44.000000000","message":"OK","commit_id":"a9892c2298920fc912e44191272c347eae8faf8c"},{"author":{"_account_id":7128,"name":"Mark Vanderwiel","email":"vanderwl@us.ibm.com","username":"kramvan"},"change_message_id":"3d53b35f82ad88f6d5fcc1e0e83d0e730e3cf248","unresolved":false,"context_lines":[{"line_number":116,"context_line":"    action [:stop, :disable]"},{"line_number":117,"context_line":"  end"},{"line_number":118,"context_line":""},{"line_number":119,"context_line":"  directory ipmovement_dir do"},{"line_number":120,"context_line":"    owner \u0027root\u0027"},{"line_number":121,"context_line":"    group \u0027root\u0027"},{"line_number":122,"context_line":"    mode \u00270750\u0027"}],"source_content_type":"text/x-ruby","patch_set":6,"id":"7a016987_df91f947","line":119,"updated":"2015-05-27 16:21:16.000000000","message":"This could be moved below to before 134 for more logical use ordering.","commit_id":"a9892c2298920fc912e44191272c347eae8faf8c"},{"author":{"_account_id":8172,"name":"Wei Hu","email":"huwei.xtu@gmail.com","username":"WeiHu"},"change_message_id":"d62c6a77d80a049f225302b8895de9fdae2351fd","unresolved":false,"context_lines":[{"line_number":116,"context_line":"    action [:stop, :disable]"},{"line_number":117,"context_line":"  end"},{"line_number":118,"context_line":""},{"line_number":119,"context_line":"  directory ipmovement_dir do"},{"line_number":120,"context_line":"    owner \u0027root\u0027"},{"line_number":121,"context_line":"    group \u0027root\u0027"},{"line_number":122,"context_line":"    mode \u00270750\u0027"}],"source_content_type":"text/x-ruby","patch_set":6,"id":"7a016987_63ca4ea3","line":119,"in_reply_to":"7a016987_df91f947","updated":"2015-05-28 10:17:44.000000000","message":"will do","commit_id":"a9892c2298920fc912e44191272c347eae8faf8c"},{"author":{"_account_id":7128,"name":"Mark Vanderwiel","email":"vanderwl@us.ibm.com","username":"kramvan"},"change_message_id":"3d53b35f82ad88f6d5fcc1e0e83d0e730e3cf248","unresolved":false,"context_lines":[{"line_number":188,"context_line":"        Chef::Log.info(\u0027Wait another 5s until ip movement script finish.\u0027)"},{"line_number":189,"context_line":"        e.run_action(:run)"},{"line_number":190,"context_line":"      end"},{"line_number":191,"context_line":"      fail \u0027Timeout to wait ip address movement, ip movement failed!\u0027 unless ::File.exist?(status_file)"},{"line_number":192,"context_line":"      exitval \u003d File.read(status_file)"},{"line_number":193,"context_line":"      fail \"The IP movement has failed. Please check the log file #{script_log} for more details.\" unless exitval.to_s.include?(\u00270\u0027)"},{"line_number":194,"context_line":"      FileUtils.rm(status_file, force: true)"}],"source_content_type":"text/x-ruby","patch_set":6,"id":"7a016987_9f6f01fc","line":191,"updated":"2015-05-27 16:21:16.000000000","message":"\u0027Timeout waiting for ip address movement to complete.\u0027","commit_id":"a9892c2298920fc912e44191272c347eae8faf8c"},{"author":{"_account_id":8172,"name":"Wei Hu","email":"huwei.xtu@gmail.com","username":"WeiHu"},"change_message_id":"d62c6a77d80a049f225302b8895de9fdae2351fd","unresolved":false,"context_lines":[{"line_number":188,"context_line":"        Chef::Log.info(\u0027Wait another 5s until ip movement script finish.\u0027)"},{"line_number":189,"context_line":"        e.run_action(:run)"},{"line_number":190,"context_line":"      end"},{"line_number":191,"context_line":"      fail \u0027Timeout to wait ip address movement, ip movement failed!\u0027 unless ::File.exist?(status_file)"},{"line_number":192,"context_line":"      exitval \u003d File.read(status_file)"},{"line_number":193,"context_line":"      fail \"The IP movement has failed. Please check the log file #{script_log} for more details.\" unless exitval.to_s.include?(\u00270\u0027)"},{"line_number":194,"context_line":"      FileUtils.rm(status_file, force: true)"}],"source_content_type":"text/x-ruby","patch_set":6,"id":"7a016987_a33726af","line":191,"in_reply_to":"7a016987_9f6f01fc","updated":"2015-05-28 10:17:44.000000000","message":"will do","commit_id":"a9892c2298920fc912e44191272c347eae8faf8c"},{"author":{"_account_id":7128,"name":"Mark Vanderwiel","email":"vanderwl@us.ibm.com","username":"kramvan"},"change_message_id":"3d53b35f82ad88f6d5fcc1e0e83d0e730e3cf248","unresolved":false,"context_lines":[{"line_number":191,"context_line":"      fail \u0027Timeout to wait ip address movement, ip movement failed!\u0027 unless ::File.exist?(status_file)"},{"line_number":192,"context_line":"      exitval \u003d File.read(status_file)"},{"line_number":193,"context_line":"      fail \"The IP movement has failed. Please check the log file #{script_log} for more details.\" unless exitval.to_s.include?(\u00270\u0027)"},{"line_number":194,"context_line":"      FileUtils.rm(status_file, force: true)"},{"line_number":195,"context_line":"    end"},{"line_number":196,"context_line":"    action :nothing"},{"line_number":197,"context_line":"  end"}],"source_content_type":"text/x-ruby","patch_set":6,"id":"7a016987_e27658a2","line":194,"updated":"2015-05-27 16:21:16.000000000","message":"This is after the fail will not get executed?  maybe better before?\n\nSince the status file is really \"owned\" by the ip_movement script, you should just add the delete step to that script as an init step and not bother with the remove in here.","commit_id":"a9892c2298920fc912e44191272c347eae8faf8c"},{"author":{"_account_id":8172,"name":"Wei Hu","email":"huwei.xtu@gmail.com","username":"WeiHu"},"change_message_id":"d62c6a77d80a049f225302b8895de9fdae2351fd","unresolved":false,"context_lines":[{"line_number":191,"context_line":"      fail \u0027Timeout to wait ip address movement, ip movement failed!\u0027 unless ::File.exist?(status_file)"},{"line_number":192,"context_line":"      exitval \u003d File.read(status_file)"},{"line_number":193,"context_line":"      fail \"The IP movement has failed. Please check the log file #{script_log} for more details.\" unless exitval.to_s.include?(\u00270\u0027)"},{"line_number":194,"context_line":"      FileUtils.rm(status_file, force: true)"},{"line_number":195,"context_line":"    end"},{"line_number":196,"context_line":"    action :nothing"},{"line_number":197,"context_line":"  end"}],"source_content_type":"text/x-ruby","patch_set":6,"id":"7a016987_03e39a06","line":194,"in_reply_to":"7a016987_e27658a2","updated":"2015-05-28 10:17:44.000000000","message":"correct.","commit_id":"a9892c2298920fc912e44191272c347eae8faf8c"},{"author":{"_account_id":7128,"name":"Mark Vanderwiel","email":"vanderwl@us.ibm.com","username":"kramvan"},"change_message_id":"3d53b35f82ad88f6d5fcc1e0e83d0e730e3cf248","unresolved":false,"context_lines":[{"line_number":196,"context_line":"    action :nothing"},{"line_number":197,"context_line":"  end"},{"line_number":198,"context_line":""},{"line_number":199,"context_line":"  # Status_file is created in in ip_using_service.sh script."},{"line_number":200,"context_line":"  FileUtils.rm(status_file, force: true)"},{"line_number":201,"context_line":"  execute \u0027ip movement\u0027 do"},{"line_number":202,"context_line":"    # Using nohup can make sure the script not being interrupt though disconnect with icm node."}],"source_content_type":"text/x-ruby","patch_set":6,"id":"7a016987_3f580d56","line":199,"updated":"2015-05-27 16:21:16.000000000","message":"typo","commit_id":"a9892c2298920fc912e44191272c347eae8faf8c"},{"author":{"_account_id":8172,"name":"Wei Hu","email":"huwei.xtu@gmail.com","username":"WeiHu"},"change_message_id":"6b2a7e0d1494a8d6fbc28284ede07745e98d2004","unresolved":false,"context_lines":[{"line_number":196,"context_line":"    action :nothing"},{"line_number":197,"context_line":"  end"},{"line_number":198,"context_line":""},{"line_number":199,"context_line":"  # Status_file is created in in ip_using_service.sh script."},{"line_number":200,"context_line":"  FileUtils.rm(status_file, force: true)"},{"line_number":201,"context_line":"  execute \u0027ip movement\u0027 do"},{"line_number":202,"context_line":"    # Using nohup can make sure the script not being interrupt though disconnect with icm node."}],"source_content_type":"text/x-ruby","patch_set":6,"id":"7a016987_948409d3","line":199,"in_reply_to":"7a016987_3f580d56","updated":"2015-06-01 05:57:04.000000000","message":"Done","commit_id":"a9892c2298920fc912e44191272c347eae8faf8c"},{"author":{"_account_id":7128,"name":"Mark Vanderwiel","email":"vanderwl@us.ibm.com","username":"kramvan"},"change_message_id":"3d53b35f82ad88f6d5fcc1e0e83d0e730e3cf248","unresolved":false,"context_lines":[{"line_number":197,"context_line":"  end"},{"line_number":198,"context_line":""},{"line_number":199,"context_line":"  # Status_file is created in in ip_using_service.sh script."},{"line_number":200,"context_line":"  FileUtils.rm(status_file, force: true)"},{"line_number":201,"context_line":"  execute \u0027ip movement\u0027 do"},{"line_number":202,"context_line":"    # Using nohup can make sure the script not being interrupt though disconnect with icm node."},{"line_number":203,"context_line":"    command \"nohup #{ipmovement_dir}/ip-movement.sh 2\u003e\u00261 \u003e#{script_log} \u0026\""}],"source_content_type":"text/x-ruby","patch_set":6,"id":"7a016987_02ff3402","line":200,"updated":"2015-05-27 16:21:16.000000000","message":"this happens at compile time, not execute time? really needed?, then needs an file resource.","commit_id":"a9892c2298920fc912e44191272c347eae8faf8c"},{"author":{"_account_id":8172,"name":"Wei Hu","email":"huwei.xtu@gmail.com","username":"WeiHu"},"change_message_id":"d62c6a77d80a049f225302b8895de9fdae2351fd","unresolved":false,"context_lines":[{"line_number":197,"context_line":"  end"},{"line_number":198,"context_line":""},{"line_number":199,"context_line":"  # Status_file is created in in ip_using_service.sh script."},{"line_number":200,"context_line":"  FileUtils.rm(status_file, force: true)"},{"line_number":201,"context_line":"  execute \u0027ip movement\u0027 do"},{"line_number":202,"context_line":"    # Using nohup can make sure the script not being interrupt though disconnect with icm node."},{"line_number":203,"context_line":"    command \"nohup #{ipmovement_dir}/ip-movement.sh 2\u003e\u00261 \u003e#{script_log} \u0026\""}],"source_content_type":"text/x-ruby","patch_set":6,"id":"7a016987_6326ce69","line":200,"in_reply_to":"7a016987_02ff3402","updated":"2015-05-28 10:17:44.000000000","message":"This is really needed if don\u0027t move line 194 in before fail. And to make sure this file not exist. We should delete it first. Will add a resource.","commit_id":"a9892c2298920fc912e44191272c347eae8faf8c"},{"author":{"_account_id":7128,"name":"Mark Vanderwiel","email":"vanderwl@us.ibm.com","username":"kramvan"},"change_message_id":"3d53b35f82ad88f6d5fcc1e0e83d0e730e3cf248","unresolved":false,"context_lines":[{"line_number":199,"context_line":"  # Status_file is created in in ip_using_service.sh script."},{"line_number":200,"context_line":"  FileUtils.rm(status_file, force: true)"},{"line_number":201,"context_line":"  execute \u0027ip movement\u0027 do"},{"line_number":202,"context_line":"    # Using nohup can make sure the script not being interrupt though disconnect with icm node."},{"line_number":203,"context_line":"    command \"nohup #{ipmovement_dir}/ip-movement.sh 2\u003e\u00261 \u003e#{script_log} \u0026\""},{"line_number":204,"context_line":"    notifies :run, \u0027ruby_block[check status]\u0027, :immediately"},{"line_number":205,"context_line":"  end"}],"source_content_type":"text/x-ruby","patch_set":6,"id":"7a016987_df62193d","line":202,"updated":"2015-05-27 16:21:16.000000000","message":"icm node?   product specific?  reword.","commit_id":"a9892c2298920fc912e44191272c347eae8faf8c"},{"author":{"_account_id":8172,"name":"Wei Hu","email":"huwei.xtu@gmail.com","username":"WeiHu"},"change_message_id":"d62c6a77d80a049f225302b8895de9fdae2351fd","unresolved":false,"context_lines":[{"line_number":199,"context_line":"  # Status_file is created in in ip_using_service.sh script."},{"line_number":200,"context_line":"  FileUtils.rm(status_file, force: true)"},{"line_number":201,"context_line":"  execute \u0027ip movement\u0027 do"},{"line_number":202,"context_line":"    # Using nohup can make sure the script not being interrupt though disconnect with icm node."},{"line_number":203,"context_line":"    command \"nohup #{ipmovement_dir}/ip-movement.sh 2\u003e\u00261 \u003e#{script_log} \u0026\""},{"line_number":204,"context_line":"    notifies :run, \u0027ruby_block[check status]\u0027, :immediately"},{"line_number":205,"context_line":"  end"}],"source_content_type":"text/x-ruby","patch_set":6,"id":"7a016987_83bd4ad9","line":202,"in_reply_to":"7a016987_df62193d","updated":"2015-05-28 10:17:44.000000000","message":"OH...\nWill delete it.","commit_id":"a9892c2298920fc912e44191272c347eae8faf8c"},{"author":{"_account_id":13667,"name":"ZongKai LI","email":"onionpiece@163.com","username":"lzklibj"},"change_message_id":"ee9e922c1baea7f7f2dd72eb902ce83cccb2c1c9","unresolved":false,"context_lines":[{"line_number":34,"context_line":""},{"line_number":35,"context_line":"  if node[\u0027platform_family\u0027].eql? \u0027debian\u0027"},{"line_number":36,"context_line":"    # obtain kernel version for kernel header"},{"line_number":37,"context_line":"    # installation on ubuntu and debian"},{"line_number":38,"context_line":"    kernel_ver \u003d node[\u0027kernel\u0027][\u0027release\u0027]"},{"line_number":39,"context_line":"    package \"linux-headers-#{kernel_ver}\" do"},{"line_number":40,"context_line":"      options platform_options[\u0027package_overrides\u0027]"}],"source_content_type":"text/x-ruby","patch_set":10,"id":"7a016987_52fc5e71","line":37,"updated":"2015-06-01 09:10:24.000000000","message":"I think comments here are not clear enough. The reason we need upgrade kernel is to get support for installing or upgrading openvswitch.","commit_id":"832cedfcb4179836d5fc15e0011fea2052ae3055"},{"author":{"_account_id":13667,"name":"ZongKai LI","email":"onionpiece@163.com","username":"lzklibj"},"change_message_id":"ee9e922c1baea7f7f2dd72eb902ce83cccb2c1c9","unresolved":false,"context_lines":[{"line_number":71,"context_line":"  end"},{"line_number":72,"context_line":""},{"line_number":73,"context_line":"  # Do not move ip address if move_ip is false or there is no ip address in the interface."},{"line_number":74,"context_line":"  if !move_ip || !node[\u0027network\u0027][\u0027interfaces\u0027][iface][\u0027addresses\u0027].select { |_address, data|data[\u0027family\u0027] \u003d\u003d \u0027inet\u0027 }.keys[0]"},{"line_number":75,"context_line":"    execute \u0027create ovs bridge\u0027 do"},{"line_number":76,"context_line":"      command \"ovs-vsctl add-br #{br} -- add-port #{br} #{iface}\""},{"line_number":77,"context_line":"      action :run"}],"source_content_type":"text/x-ruby","patch_set":10,"id":"7a016987_12b38699","line":74,"updated":"2015-06-01 09:10:24.000000000","message":"Should be \"if move_ip || ...\", right?","commit_id":"832cedfcb4179836d5fc15e0011fea2052ae3055"},{"author":{"_account_id":8172,"name":"Wei Hu","email":"huwei.xtu@gmail.com","username":"WeiHu"},"change_message_id":"c5ff5e37cf8c97944c6e246cbea0a21f02677b9a","unresolved":false,"context_lines":[{"line_number":71,"context_line":"  end"},{"line_number":72,"context_line":""},{"line_number":73,"context_line":"  # Do not move ip address if move_ip is false or there is no ip address in the interface."},{"line_number":74,"context_line":"  if !move_ip || !node[\u0027network\u0027][\u0027interfaces\u0027][iface][\u0027addresses\u0027].select { |_address, data|data[\u0027family\u0027] \u003d\u003d \u0027inet\u0027 }.keys[0]"},{"line_number":75,"context_line":"    execute \u0027create ovs bridge\u0027 do"},{"line_number":76,"context_line":"      command \"ovs-vsctl add-br #{br} -- add-port #{br} #{iface}\""},{"line_number":77,"context_line":"      action :run"}],"source_content_type":"text/x-ruby","patch_set":10,"id":"7a016987_95bc00dd","line":74,"in_reply_to":"7a016987_12b38699","updated":"2015-06-01 09:16:34.000000000","message":"NO!\nIf we do not need to move ip. Which user set move_ip to false, means we should just create the ovs bridge. And do not move the ip address from interface to bridge. Therefore, we should use next to exit this provider logic.","commit_id":"832cedfcb4179836d5fc15e0011fea2052ae3055"}],"resources/create_ovs_bridge.rb":[{"author":{"_account_id":7128,"name":"Mark Vanderwiel","email":"vanderwl@us.ibm.com","username":"kramvan"},"change_message_id":"b9ed284ee1e2883df3f0b33b5ef37bb6b7a1c84d","unresolved":false,"context_lines":[{"line_number":3,"context_line":""},{"line_number":4,"context_line":"def initialize(*args)"},{"line_number":5,"context_line":"  super"},{"line_number":6,"context_line":"  @action \u003d :create"},{"line_number":7,"context_line":"end"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"attribute :move_ip, equal_to: [true, false, \u0027true\u0027, \u0027false\u0027], default: false"}],"source_content_type":"text/x-ruby","patch_set":4,"id":"7a016987_6a083392","line":6,"updated":"2015-05-26 15:37:15.000000000","message":"someday would a delete action be needed?","commit_id":"02931ba14c30f54324f1db9615dc7d30cb8f89df"},{"author":{"_account_id":8172,"name":"Wei Hu","email":"huwei.xtu@gmail.com","username":"WeiHu"},"change_message_id":"356fe03b2ffc32d000f7a0c978fc09bbe66b5d8e","unresolved":false,"context_lines":[{"line_number":3,"context_line":""},{"line_number":4,"context_line":"def initialize(*args)"},{"line_number":5,"context_line":"  super"},{"line_number":6,"context_line":"  @action \u003d :create"},{"line_number":7,"context_line":"end"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"attribute :move_ip, equal_to: [true, false, \u0027true\u0027, \u0027false\u0027], default: false"}],"source_content_type":"text/x-ruby","patch_set":4,"id":"7a016987_ed7d47b2","line":6,"in_reply_to":"7a016987_6a083392","updated":"2015-05-27 05:19:06.000000000","message":"I think so.","commit_id":"02931ba14c30f54324f1db9615dc7d30cb8f89df"}],"resources/ovs_bridge.rb":[{"author":{"_account_id":7128,"name":"Mark Vanderwiel","email":"vanderwl@us.ibm.com","username":"kramvan"},"change_message_id":"3d53b35f82ad88f6d5fcc1e0e83d0e730e3cf248","unresolved":false,"context_lines":[{"line_number":7,"context_line":"end"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"attribute :move_ip, equal_to: [true, false, \u0027true\u0027, \u0027false\u0027], default: false"},{"line_number":10,"context_line":"attribute :br, kind_of: String, required: true"},{"line_number":11,"context_line":"attribute :iface, kind_of:  String, required: true"},{"line_number":12,"context_line":"attribute :timeout, kind_of: Integer, default: 180, required: false"},{"line_number":13,"context_line":"attribute :validate_ip, kind_of: String, default: nil, required: false"}],"source_content_type":"text/x-ruby","patch_set":6,"id":"7a016987_3c201bf7","line":10,"updated":"2015-05-27 16:21:16.000000000","message":"I would prefer is this were spelled out for easy of reading later \"bridge\"","commit_id":"a9892c2298920fc912e44191272c347eae8faf8c"},{"author":{"_account_id":8172,"name":"Wei Hu","email":"huwei.xtu@gmail.com","username":"WeiHu"},"change_message_id":"d62c6a77d80a049f225302b8895de9fdae2351fd","unresolved":false,"context_lines":[{"line_number":7,"context_line":"end"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"attribute :move_ip, equal_to: [true, false, \u0027true\u0027, \u0027false\u0027], default: false"},{"line_number":10,"context_line":"attribute :br, kind_of: String, required: true"},{"line_number":11,"context_line":"attribute :iface, kind_of:  String, required: true"},{"line_number":12,"context_line":"attribute :timeout, kind_of: Integer, default: 180, required: false"},{"line_number":13,"context_line":"attribute :validate_ip, kind_of: String, default: nil, required: false"}],"source_content_type":"text/x-ruby","patch_set":6,"id":"7a016987_e3c87e76","line":10,"in_reply_to":"7a016987_3c201bf7","updated":"2015-05-28 10:17:44.000000000","message":"OK, will do","commit_id":"a9892c2298920fc912e44191272c347eae8faf8c"},{"author":{"_account_id":7128,"name":"Mark Vanderwiel","email":"vanderwl@us.ibm.com","username":"kramvan"},"change_message_id":"3d53b35f82ad88f6d5fcc1e0e83d0e730e3cf248","unresolved":false,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"attribute :move_ip, equal_to: [true, false, \u0027true\u0027, \u0027false\u0027], default: false"},{"line_number":10,"context_line":"attribute :br, kind_of: String, required: true"},{"line_number":11,"context_line":"attribute :iface, kind_of:  String, required: true"},{"line_number":12,"context_line":"attribute :timeout, kind_of: Integer, default: 180, required: false"},{"line_number":13,"context_line":"attribute :validate_ip, kind_of: String, default: nil, required: false"}],"source_content_type":"text/x-ruby","patch_set":6,"id":"7a016987_bc59ab90","line":11,"updated":"2015-05-27 16:21:16.000000000","message":"again please spell out","commit_id":"a9892c2298920fc912e44191272c347eae8faf8c"},{"author":{"_account_id":8172,"name":"Wei Hu","email":"huwei.xtu@gmail.com","username":"WeiHu"},"change_message_id":"d62c6a77d80a049f225302b8895de9fdae2351fd","unresolved":false,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"attribute :move_ip, equal_to: [true, false, \u0027true\u0027, \u0027false\u0027], default: false"},{"line_number":10,"context_line":"attribute :br, kind_of: String, required: true"},{"line_number":11,"context_line":"attribute :iface, kind_of:  String, required: true"},{"line_number":12,"context_line":"attribute :timeout, kind_of: Integer, default: 180, required: false"},{"line_number":13,"context_line":"attribute :validate_ip, kind_of: String, default: nil, required: false"}],"source_content_type":"text/x-ruby","patch_set":6,"id":"7a016987_c3c34256","line":11,"in_reply_to":"7a016987_bc59ab90","updated":"2015-05-28 10:17:44.000000000","message":"will do","commit_id":"a9892c2298920fc912e44191272c347eae8faf8c"}],"templates/default/ip-movement.sh.erb":[{"author":{"_account_id":7128,"name":"Mark Vanderwiel","email":"vanderwl@us.ibm.com","username":"kramvan"},"change_message_id":"b9ed284ee1e2883df3f0b33b5ef37bb6b7a1c84d","unresolved":false,"context_lines":[{"line_number":73,"context_line":"# to restore the former network environment."},{"line_number":74,"context_line":"ip_move_failure()"},{"line_number":75,"context_line":"{"},{"line_number":76,"context_line":"  echo \"IP movement has failed. Try to restore the network environment......\""},{"line_number":77,"context_line":"  if [ \"$platform\" \u003d\u003d \u0027rhel\u0027 ];then"},{"line_number":78,"context_line":"    rhel_restore"},{"line_number":79,"context_line":"  elif [ \"$platform\" \u003d\u003d \u0027debian\u0027 ];then"}],"source_content_type":"application/x-erb","patch_set":4,"id":"7a016987_6a2f13f7","line":76,"updated":"2015-05-26 15:37:15.000000000","message":"3 (...) is enough, do we put out the reason for the failure somewhere?","commit_id":"02931ba14c30f54324f1db9615dc7d30cb8f89df"},{"author":{"_account_id":8172,"name":"Wei Hu","email":"huwei.xtu@gmail.com","username":"WeiHu"},"change_message_id":"356fe03b2ffc32d000f7a0c978fc09bbe66b5d8e","unresolved":false,"context_lines":[{"line_number":73,"context_line":"# to restore the former network environment."},{"line_number":74,"context_line":"ip_move_failure()"},{"line_number":75,"context_line":"{"},{"line_number":76,"context_line":"  echo \"IP movement has failed. Try to restore the network environment......\""},{"line_number":77,"context_line":"  if [ \"$platform\" \u003d\u003d \u0027rhel\u0027 ];then"},{"line_number":78,"context_line":"    rhel_restore"},{"line_number":79,"context_line":"  elif [ \"$platform\" \u003d\u003d \u0027debian\u0027 ];then"}],"source_content_type":"application/x-erb","patch_set":4,"id":"7a016987_4d5e9b46","line":76,"in_reply_to":"7a016987_6a2f13f7","updated":"2015-05-27 05:19:06.000000000","message":"Done","commit_id":"02931ba14c30f54324f1db9615dc7d30cb8f89df"},{"author":{"_account_id":7128,"name":"Mark Vanderwiel","email":"vanderwl@us.ibm.com","username":"kramvan"},"change_message_id":"b9ed284ee1e2883df3f0b33b5ef37bb6b7a1c84d","unresolved":false,"context_lines":[{"line_number":117,"context_line":"  # IP address from that interface. When the OVS bridge becomes active, two interfaces"},{"line_number":118,"context_line":"  # (the original and the OVS bridge) will both have the same IP address. Restarting"},{"line_number":119,"context_line":"  # the network a second time will clear this error."},{"line_number":120,"context_line":"  echo \"IP address has not been moved off from $iface, restart network service again.\""},{"line_number":121,"context_line":"  service network restart"},{"line_number":122,"context_line":"  sleep 30"},{"line_number":123,"context_line":"  # Recheck, if interface still own the IP address, return failure code."}],"source_content_type":"application/x-erb","patch_set":4,"id":"7a016987_ca760706","line":120,"updated":"2015-05-26 15:37:15.000000000","message":"maybe include more context in echo messages (ip address here)","commit_id":"02931ba14c30f54324f1db9615dc7d30cb8f89df"},{"author":{"_account_id":8172,"name":"Wei Hu","email":"huwei.xtu@gmail.com","username":"WeiHu"},"change_message_id":"356fe03b2ffc32d000f7a0c978fc09bbe66b5d8e","unresolved":false,"context_lines":[{"line_number":117,"context_line":"  # IP address from that interface. When the OVS bridge becomes active, two interfaces"},{"line_number":118,"context_line":"  # (the original and the OVS bridge) will both have the same IP address. Restarting"},{"line_number":119,"context_line":"  # the network a second time will clear this error."},{"line_number":120,"context_line":"  echo \"IP address has not been moved off from $iface, restart network service again.\""},{"line_number":121,"context_line":"  service network restart"},{"line_number":122,"context_line":"  sleep 30"},{"line_number":123,"context_line":"  # Recheck, if interface still own the IP address, return failure code."}],"source_content_type":"application/x-erb","patch_set":4,"id":"7a016987_2d5b5f56","line":120,"in_reply_to":"7a016987_ca760706","updated":"2015-05-27 05:19:06.000000000","message":"Done","commit_id":"02931ba14c30f54324f1db9615dc7d30cb8f89df"},{"author":{"_account_id":7128,"name":"Mark Vanderwiel","email":"vanderwl@us.ibm.com","username":"kramvan"},"change_message_id":"b9ed284ee1e2883df3f0b33b5ef37bb6b7a1c84d","unresolved":false,"context_lines":[{"line_number":123,"context_line":"  # Recheck, if interface still own the IP address, return failure code."},{"line_number":124,"context_line":"  iface_ip\u003d$(ip addr show dev $iface | awk \u0027sub(/inet /,\"\"){print $1}\u0027)"},{"line_number":125,"context_line":"  if [ \"$iface_ip\" !\u003d \u0027\u0027 ];then"},{"line_number":126,"context_line":"    echo \"Could not move IP address from $iface\""},{"line_number":127,"context_line":"    ip_move_failure"},{"line_number":128,"context_line":"  fi"},{"line_number":129,"context_line":"fi"}],"source_content_type":"application/x-erb","patch_set":4,"id":"7a016987_cafba746","line":126,"updated":"2015-05-26 15:37:15.000000000","message":"msg context, add ip address.","commit_id":"02931ba14c30f54324f1db9615dc7d30cb8f89df"},{"author":{"_account_id":8172,"name":"Wei Hu","email":"huwei.xtu@gmail.com","username":"WeiHu"},"change_message_id":"356fe03b2ffc32d000f7a0c978fc09bbe66b5d8e","unresolved":false,"context_lines":[{"line_number":123,"context_line":"  # Recheck, if interface still own the IP address, return failure code."},{"line_number":124,"context_line":"  iface_ip\u003d$(ip addr show dev $iface | awk \u0027sub(/inet /,\"\"){print $1}\u0027)"},{"line_number":125,"context_line":"  if [ \"$iface_ip\" !\u003d \u0027\u0027 ];then"},{"line_number":126,"context_line":"    echo \"Could not move IP address from $iface\""},{"line_number":127,"context_line":"    ip_move_failure"},{"line_number":128,"context_line":"  fi"},{"line_number":129,"context_line":"fi"}],"source_content_type":"application/x-erb","patch_set":4,"id":"7a016987_8d3a53e6","line":126,"in_reply_to":"7a016987_cafba746","updated":"2015-05-27 05:19:06.000000000","message":"Done","commit_id":"02931ba14c30f54324f1db9615dc7d30cb8f89df"},{"author":{"_account_id":7128,"name":"Mark Vanderwiel","email":"vanderwl@us.ibm.com","username":"kramvan"},"change_message_id":"b9ed284ee1e2883df3f0b33b5ef37bb6b7a1c84d","unresolved":false,"context_lines":[{"line_number":166,"context_line":"  # Retry until timeout."},{"line_number":167,"context_line":"  should_retry\u003d$(echo \"$now-$START\u003c$TIMEOUT\" | bc)"},{"line_number":168,"context_line":"  if [ \"$should_retry\" \u003d \"0\" ];then"},{"line_number":169,"context_line":"    echo \"Timeout to wait network ready\""},{"line_number":170,"context_line":"    ip_move_failure"},{"line_number":171,"context_line":"  fi"},{"line_number":172,"context_line":"  echo \"retry to ping validate ip address...\""}],"source_content_type":"application/x-erb","patch_set":4,"id":"7a016987_4ab5777c","line":169,"updated":"2015-05-26 15:37:15.000000000","message":"context, ip validate address?","commit_id":"02931ba14c30f54324f1db9615dc7d30cb8f89df"},{"author":{"_account_id":8172,"name":"Wei Hu","email":"huwei.xtu@gmail.com","username":"WeiHu"},"change_message_id":"356fe03b2ffc32d000f7a0c978fc09bbe66b5d8e","unresolved":false,"context_lines":[{"line_number":166,"context_line":"  # Retry until timeout."},{"line_number":167,"context_line":"  should_retry\u003d$(echo \"$now-$START\u003c$TIMEOUT\" | bc)"},{"line_number":168,"context_line":"  if [ \"$should_retry\" \u003d \"0\" ];then"},{"line_number":169,"context_line":"    echo \"Timeout to wait network ready\""},{"line_number":170,"context_line":"    ip_move_failure"},{"line_number":171,"context_line":"  fi"},{"line_number":172,"context_line":"  echo \"retry to ping validate ip address...\""}],"source_content_type":"application/x-erb","patch_set":4,"id":"7a016987_2d223fba","line":169,"in_reply_to":"7a016987_4ab5777c","updated":"2015-05-27 05:19:06.000000000","message":"Done","commit_id":"02931ba14c30f54324f1db9615dc7d30cb8f89df"},{"author":{"_account_id":7128,"name":"Mark Vanderwiel","email":"vanderwl@us.ibm.com","username":"kramvan"},"change_message_id":"b9ed284ee1e2883df3f0b33b5ef37bb6b7a1c84d","unresolved":false,"context_lines":[{"line_number":169,"context_line":"    echo \"Timeout to wait network ready\""},{"line_number":170,"context_line":"    ip_move_failure"},{"line_number":171,"context_line":"  fi"},{"line_number":172,"context_line":"  echo \"retry to ping validate ip address...\""},{"line_number":173,"context_line":"done"},{"line_number":174,"context_line":""},{"line_number":175,"context_line":"ip_move_success"}],"source_content_type":"application/x-erb","patch_set":4,"id":"7a016987_2aba3b6f","line":172,"updated":"2015-05-26 15:37:15.000000000","message":"context, ip validate address?","commit_id":"02931ba14c30f54324f1db9615dc7d30cb8f89df"},{"author":{"_account_id":8172,"name":"Wei Hu","email":"huwei.xtu@gmail.com","username":"WeiHu"},"change_message_id":"356fe03b2ffc32d000f7a0c978fc09bbe66b5d8e","unresolved":false,"context_lines":[{"line_number":169,"context_line":"    echo \"Timeout to wait network ready\""},{"line_number":170,"context_line":"    ip_move_failure"},{"line_number":171,"context_line":"  fi"},{"line_number":172,"context_line":"  echo \"retry to ping validate ip address...\""},{"line_number":173,"context_line":"done"},{"line_number":174,"context_line":""},{"line_number":175,"context_line":"ip_move_success"}],"source_content_type":"application/x-erb","patch_set":4,"id":"7a016987_4d257bc0","line":172,"in_reply_to":"7a016987_2aba3b6f","updated":"2015-05-27 05:19:06.000000000","message":"Done","commit_id":"02931ba14c30f54324f1db9615dc7d30cb8f89df"},{"author":{"_account_id":7128,"name":"Mark Vanderwiel","email":"vanderwl@us.ibm.com","username":"kramvan"},"change_message_id":"3d53b35f82ad88f6d5fcc1e0e83d0e730e3cf248","unresolved":false,"context_lines":[{"line_number":23,"context_line":"TIMEOUT\u003d\u003c%\u003dnode[\u0027openstack\u0027][\u0027network\u0027][\u0027ip_movement\u0027][\u0027timeout\u0027]%\u003e"},{"line_number":24,"context_line":"START\u003d$(date +%s)"},{"line_number":25,"context_line":"platform\u003d\u003c%\u003d node[\u0027platform_family\u0027] %\u003e"},{"line_number":26,"context_line":"br\u003d\u003c%\u003d @br %\u003e"},{"line_number":27,"context_line":"iface\u003d\u003c%\u003d @iface %\u003e"},{"line_number":28,"context_line":"validate_ip\u003d\u003c%\u003d @validate_ip %\u003e"},{"line_number":29,"context_line":""}],"source_content_type":"application/x-erb","patch_set":6,"id":"7a016987_228b506a","line":26,"updated":"2015-05-27 16:21:16.000000000","message":"easier to read if these are spelled out.","commit_id":"a9892c2298920fc912e44191272c347eae8faf8c"},{"author":{"_account_id":8172,"name":"Wei Hu","email":"huwei.xtu@gmail.com","username":"WeiHu"},"change_message_id":"d62c6a77d80a049f225302b8895de9fdae2351fd","unresolved":false,"context_lines":[{"line_number":23,"context_line":"TIMEOUT\u003d\u003c%\u003dnode[\u0027openstack\u0027][\u0027network\u0027][\u0027ip_movement\u0027][\u0027timeout\u0027]%\u003e"},{"line_number":24,"context_line":"START\u003d$(date +%s)"},{"line_number":25,"context_line":"platform\u003d\u003c%\u003d node[\u0027platform_family\u0027] %\u003e"},{"line_number":26,"context_line":"br\u003d\u003c%\u003d @br %\u003e"},{"line_number":27,"context_line":"iface\u003d\u003c%\u003d @iface %\u003e"},{"line_number":28,"context_line":"validate_ip\u003d\u003c%\u003d @validate_ip %\u003e"},{"line_number":29,"context_line":""}],"source_content_type":"application/x-erb","patch_set":6,"id":"7a016987_a3a166ab","line":26,"in_reply_to":"7a016987_228b506a","updated":"2015-05-28 10:17:44.000000000","message":"Done","commit_id":"a9892c2298920fc912e44191272c347eae8faf8c"},{"author":{"_account_id":7128,"name":"Mark Vanderwiel","email":"vanderwl@us.ibm.com","username":"kramvan"},"change_message_id":"3d53b35f82ad88f6d5fcc1e0e83d0e730e3cf248","unresolved":false,"context_lines":[{"line_number":95,"context_line":"  ip_move_failure"},{"line_number":96,"context_line":"fi"},{"line_number":97,"context_line":""},{"line_number":98,"context_line":"echo \"Start ip address movement......\""},{"line_number":99,"context_line":""},{"line_number":100,"context_line":"if [ \"$platform\" \u003d\u003d \u0027rhel\u0027 ];then"},{"line_number":101,"context_line":"  service network restart"}],"source_content_type":"application/x-erb","patch_set":6,"id":"7a016987_421acc18","line":98,"updated":"2015-05-27 16:21:16.000000000","message":"Maybe would be a good idea to include all of the important inputs to this script in this starting message?  will really help make reading the logs easier.","commit_id":"a9892c2298920fc912e44191272c347eae8faf8c"},{"author":{"_account_id":8172,"name":"Wei Hu","email":"huwei.xtu@gmail.com","username":"WeiHu"},"change_message_id":"d62c6a77d80a049f225302b8895de9fdae2351fd","unresolved":false,"context_lines":[{"line_number":95,"context_line":"  ip_move_failure"},{"line_number":96,"context_line":"fi"},{"line_number":97,"context_line":""},{"line_number":98,"context_line":"echo \"Start ip address movement......\""},{"line_number":99,"context_line":""},{"line_number":100,"context_line":"if [ \"$platform\" \u003d\u003d \u0027rhel\u0027 ];then"},{"line_number":101,"context_line":"  service network restart"}],"source_content_type":"application/x-erb","patch_set":6,"id":"7a016987_03915a52","line":98,"in_reply_to":"7a016987_421acc18","updated":"2015-05-28 10:17:44.000000000","message":"Yeah, a good idea. Will do. Or maybe we can put those information in chef log.","commit_id":"a9892c2298920fc912e44191272c347eae8faf8c"},{"author":{"_account_id":7128,"name":"Mark Vanderwiel","email":"vanderwl@us.ibm.com","username":"kramvan"},"change_message_id":"3d53b35f82ad88f6d5fcc1e0e83d0e730e3cf248","unresolved":false,"context_lines":[{"line_number":97,"context_line":""},{"line_number":98,"context_line":"echo \"Start ip address movement......\""},{"line_number":99,"context_line":""},{"line_number":100,"context_line":"if [ \"$platform\" \u003d\u003d \u0027rhel\u0027 ];then"},{"line_number":101,"context_line":"  service network restart"},{"line_number":102,"context_line":"elif [ \"$platform\" \u003d\u003d \u0027debian\u0027 ];then"},{"line_number":103,"context_line":"  ifdown $iface"}],"source_content_type":"application/x-erb","patch_set":6,"id":"7a016987_229a306f","line":100,"updated":"2015-05-27 16:21:16.000000000","message":"Just a side comment, this is the perfect example of what a new Chef os_network_service lwrp would look like... and then in recipe would just be a os_network_service  action :restart.","commit_id":"a9892c2298920fc912e44191272c347eae8faf8c"},{"author":{"_account_id":8172,"name":"Wei Hu","email":"huwei.xtu@gmail.com","username":"WeiHu"},"change_message_id":"d62c6a77d80a049f225302b8895de9fdae2351fd","unresolved":false,"context_lines":[{"line_number":97,"context_line":""},{"line_number":98,"context_line":"echo \"Start ip address movement......\""},{"line_number":99,"context_line":""},{"line_number":100,"context_line":"if [ \"$platform\" \u003d\u003d \u0027rhel\u0027 ];then"},{"line_number":101,"context_line":"  service network restart"},{"line_number":102,"context_line":"elif [ \"$platform\" \u003d\u003d \u0027debian\u0027 ];then"},{"line_number":103,"context_line":"  ifdown $iface"}],"source_content_type":"application/x-erb","patch_set":6,"id":"7a016987_039f1a51","line":100,"in_reply_to":"7a016987_229a306f","updated":"2015-05-28 10:17:44.000000000","message":"yeah. that\u0027s right.","commit_id":"a9892c2298920fc912e44191272c347eae8faf8c"},{"author":{"_account_id":7128,"name":"Mark Vanderwiel","email":"vanderwl@us.ibm.com","username":"kramvan"},"change_message_id":"3d53b35f82ad88f6d5fcc1e0e83d0e730e3cf248","unresolved":false,"context_lines":[{"line_number":106,"context_line":"fi"},{"line_number":107,"context_line":""},{"line_number":108,"context_line":"# Sleep a while to wait network back to work."},{"line_number":109,"context_line":"sleep 30"},{"line_number":110,"context_line":""},{"line_number":111,"context_line":"\u003c% if node[\u0027platform_family\u0027]\u003d\u003d \u0027rhel\u0027 %\u003e"},{"line_number":112,"context_line":"iface_ip\u003d$(ip addr show dev $iface | awk \u0027sub(/inet /,\"\"){print $1}\u0027)"}],"source_content_type":"application/x-erb","patch_set":6,"id":"7a016987_42ad2c87","line":109,"updated":"2015-05-27 16:21:16.000000000","message":"Example of this other timeout I was referring to...is there a better way to do this like the 5 second interval checking done in the recipe?","commit_id":"a9892c2298920fc912e44191272c347eae8faf8c"},{"author":{"_account_id":8172,"name":"Wei Hu","email":"huwei.xtu@gmail.com","username":"WeiHu"},"change_message_id":"d62c6a77d80a049f225302b8895de9fdae2351fd","unresolved":false,"context_lines":[{"line_number":106,"context_line":"fi"},{"line_number":107,"context_line":""},{"line_number":108,"context_line":"# Sleep a while to wait network back to work."},{"line_number":109,"context_line":"sleep 30"},{"line_number":110,"context_line":""},{"line_number":111,"context_line":"\u003c% if node[\u0027platform_family\u0027]\u003d\u003d \u0027rhel\u0027 %\u003e"},{"line_number":112,"context_line":"iface_ip\u003d$(ip addr show dev $iface | awk \u0027sub(/inet /,\"\"){print $1}\u0027)"}],"source_content_type":"application/x-erb","patch_set":6,"id":"7a016987_43019269","line":109,"in_reply_to":"7a016987_42ad2c87","updated":"2015-05-28 10:17:44.000000000","message":"yep. I\u0027m planing to change those can not changed sleep time.","commit_id":"a9892c2298920fc912e44191272c347eae8faf8c"},{"author":{"_account_id":7128,"name":"Mark Vanderwiel","email":"vanderwl@us.ibm.com","username":"kramvan"},"change_message_id":"3d53b35f82ad88f6d5fcc1e0e83d0e730e3cf248","unresolved":false,"context_lines":[{"line_number":117,"context_line":"  # IP address from that interface. When the OVS bridge becomes active, two interfaces"},{"line_number":118,"context_line":"  # (the original and the OVS bridge) will both have the same IP address. Restarting"},{"line_number":119,"context_line":"  # the network a second time will clear this error."},{"line_number":120,"context_line":"  echo \"IP address $iface_ip has not been moved off from $iface, restart network service again.\""},{"line_number":121,"context_line":"  service network restart"},{"line_number":122,"context_line":"  sleep 30"},{"line_number":123,"context_line":"  # Recheck, if interface still own the IP address, return failure code."}],"source_content_type":"application/x-erb","patch_set":6,"id":"7a016987_c2823cc8","line":120,"updated":"2015-05-27 16:21:16.000000000","message":"restarting","commit_id":"a9892c2298920fc912e44191272c347eae8faf8c"},{"author":{"_account_id":8172,"name":"Wei Hu","email":"huwei.xtu@gmail.com","username":"WeiHu"},"change_message_id":"d62c6a77d80a049f225302b8895de9fdae2351fd","unresolved":false,"context_lines":[{"line_number":117,"context_line":"  # IP address from that interface. When the OVS bridge becomes active, two interfaces"},{"line_number":118,"context_line":"  # (the original and the OVS bridge) will both have the same IP address. Restarting"},{"line_number":119,"context_line":"  # the network a second time will clear this error."},{"line_number":120,"context_line":"  echo \"IP address $iface_ip has not been moved off from $iface, restart network service again.\""},{"line_number":121,"context_line":"  service network restart"},{"line_number":122,"context_line":"  sleep 30"},{"line_number":123,"context_line":"  # Recheck, if interface still own the IP address, return failure code."}],"source_content_type":"application/x-erb","patch_set":6,"id":"7a016987_23f9f680","line":120,"in_reply_to":"7a016987_c2823cc8","updated":"2015-05-28 10:17:44.000000000","message":"Done","commit_id":"a9892c2298920fc912e44191272c347eae8faf8c"},{"author":{"_account_id":7128,"name":"Mark Vanderwiel","email":"vanderwl@us.ibm.com","username":"kramvan"},"change_message_id":"3d53b35f82ad88f6d5fcc1e0e83d0e730e3cf248","unresolved":false,"context_lines":[{"line_number":119,"context_line":"  # the network a second time will clear this error."},{"line_number":120,"context_line":"  echo \"IP address $iface_ip has not been moved off from $iface, restart network service again.\""},{"line_number":121,"context_line":"  service network restart"},{"line_number":122,"context_line":"  sleep 30"},{"line_number":123,"context_line":"  # Recheck, if interface still own the IP address, return failure code."},{"line_number":124,"context_line":"  iface_ip\u003d$(ip addr show dev $iface | awk \u0027sub(/inet /,\"\"){print $1}\u0027)"},{"line_number":125,"context_line":"  if [ \"$iface_ip\" !\u003d \u0027\u0027 ];then"}],"source_content_type":"application/x-erb","patch_set":6,"id":"7a016987_e2065884","line":122,"updated":"2015-05-27 16:21:16.000000000","message":"Again the hardcoded sleep, this will eventually fail for someone.","commit_id":"a9892c2298920fc912e44191272c347eae8faf8c"},{"author":{"_account_id":8172,"name":"Wei Hu","email":"huwei.xtu@gmail.com","username":"WeiHu"},"change_message_id":"d62c6a77d80a049f225302b8895de9fdae2351fd","unresolved":false,"context_lines":[{"line_number":119,"context_line":"  # the network a second time will clear this error."},{"line_number":120,"context_line":"  echo \"IP address $iface_ip has not been moved off from $iface, restart network service again.\""},{"line_number":121,"context_line":"  service network restart"},{"line_number":122,"context_line":"  sleep 30"},{"line_number":123,"context_line":"  # Recheck, if interface still own the IP address, return failure code."},{"line_number":124,"context_line":"  iface_ip\u003d$(ip addr show dev $iface | awk \u0027sub(/inet /,\"\"){print $1}\u0027)"},{"line_number":125,"context_line":"  if [ \"$iface_ip\" !\u003d \u0027\u0027 ];then"}],"source_content_type":"application/x-erb","patch_set":6,"id":"7a016987_e3f2be99","line":122,"in_reply_to":"7a016987_e2065884","updated":"2015-05-28 10:17:44.000000000","message":"Done","commit_id":"a9892c2298920fc912e44191272c347eae8faf8c"},{"author":{"_account_id":7128,"name":"Mark Vanderwiel","email":"vanderwl@us.ibm.com","username":"kramvan"},"change_message_id":"3d53b35f82ad88f6d5fcc1e0e83d0e730e3cf248","unresolved":false,"context_lines":[{"line_number":123,"context_line":"  # Recheck, if interface still own the IP address, return failure code."},{"line_number":124,"context_line":"  iface_ip\u003d$(ip addr show dev $iface | awk \u0027sub(/inet /,\"\"){print $1}\u0027)"},{"line_number":125,"context_line":"  if [ \"$iface_ip\" !\u003d \u0027\u0027 ];then"},{"line_number":126,"context_line":"    echo \"Could not move IP address $iface_ip from $iface\""},{"line_number":127,"context_line":"    ip_move_failure"},{"line_number":128,"context_line":"  fi"},{"line_number":129,"context_line":"fi"}],"source_content_type":"application/x-erb","patch_set":6,"id":"7a016987_22723012","line":126,"updated":"2015-05-27 16:21:16.000000000","message":"Any reason why it failed?","commit_id":"a9892c2298920fc912e44191272c347eae8faf8c"},{"author":{"_account_id":8172,"name":"Wei Hu","email":"huwei.xtu@gmail.com","username":"WeiHu"},"change_message_id":"d62c6a77d80a049f225302b8895de9fdae2351fd","unresolved":false,"context_lines":[{"line_number":123,"context_line":"  # Recheck, if interface still own the IP address, return failure code."},{"line_number":124,"context_line":"  iface_ip\u003d$(ip addr show dev $iface | awk \u0027sub(/inet /,\"\"){print $1}\u0027)"},{"line_number":125,"context_line":"  if [ \"$iface_ip\" !\u003d \u0027\u0027 ];then"},{"line_number":126,"context_line":"    echo \"Could not move IP address $iface_ip from $iface\""},{"line_number":127,"context_line":"    ip_move_failure"},{"line_number":128,"context_line":"  fi"},{"line_number":129,"context_line":"fi"}],"source_content_type":"application/x-erb","patch_set":6,"id":"7a016987_c34902b9","line":126,"in_reply_to":"7a016987_22723012","updated":"2015-05-28 10:17:44.000000000","message":"Comments 114. Should we echo it?","commit_id":"a9892c2298920fc912e44191272c347eae8faf8c"},{"author":{"_account_id":7128,"name":"Mark Vanderwiel","email":"vanderwl@us.ibm.com","username":"kramvan"},"change_message_id":"3d53b35f82ad88f6d5fcc1e0e83d0e730e3cf248","unresolved":false,"context_lines":[{"line_number":128,"context_line":"  fi"},{"line_number":129,"context_line":"fi"},{"line_number":130,"context_line":"is_dhcp\u003d\u003c%\u003d dhcp(@iface) %\u003e"},{"line_number":131,"context_line":"# Sometimes or in some environments, the ovs bridge can not get ip address by service network restart,"},{"line_number":132,"context_line":"# the following code can give them another chance to retrieve ip address."},{"line_number":133,"context_line":"if [ \"$is_dhcp\" \u003d\u003d \u0027true\u0027 ]; then"},{"line_number":134,"context_line":"  dhcp_ip\u003d$(ip addr show dev $bridge | awk \u0027sub(/inet /,\"\"){print $1}\u0027)"}],"source_content_type":"application/x-erb","patch_set":6,"id":"7a016987_224470b5","line":131,"updated":"2015-05-27 16:21:16.000000000","message":"Instead of sometimes, maybe an example of when this was seen?","commit_id":"a9892c2298920fc912e44191272c347eae8faf8c"},{"author":{"_account_id":8172,"name":"Wei Hu","email":"huwei.xtu@gmail.com","username":"WeiHu"},"change_message_id":"d62c6a77d80a049f225302b8895de9fdae2351fd","unresolved":false,"context_lines":[{"line_number":128,"context_line":"  fi"},{"line_number":129,"context_line":"fi"},{"line_number":130,"context_line":"is_dhcp\u003d\u003c%\u003d dhcp(@iface) %\u003e"},{"line_number":131,"context_line":"# Sometimes or in some environments, the ovs bridge can not get ip address by service network restart,"},{"line_number":132,"context_line":"# the following code can give them another chance to retrieve ip address."},{"line_number":133,"context_line":"if [ \"$is_dhcp\" \u003d\u003d \u0027true\u0027 ]; then"},{"line_number":134,"context_line":"  dhcp_ip\u003d$(ip addr show dev $bridge | awk \u0027sub(/inet /,\"\"){print $1}\u0027)"}],"source_content_type":"application/x-erb","patch_set":6,"id":"7a016987_a3c72611","line":131,"in_reply_to":"7a016987_224470b5","updated":"2015-05-28 10:17:44.000000000","message":"ok. will do","commit_id":"a9892c2298920fc912e44191272c347eae8faf8c"},{"author":{"_account_id":7128,"name":"Mark Vanderwiel","email":"vanderwl@us.ibm.com","username":"kramvan"},"change_message_id":"3d53b35f82ad88f6d5fcc1e0e83d0e730e3cf248","unresolved":false,"context_lines":[{"line_number":133,"context_line":"if [ \"$is_dhcp\" \u003d\u003d \u0027true\u0027 ]; then"},{"line_number":134,"context_line":"  dhcp_ip\u003d$(ip addr show dev $bridge | awk \u0027sub(/inet /,\"\"){print $1}\u0027)"},{"line_number":135,"context_line":"  if [ \"$dhcp_ip\" \u003d\u003d \u0027\u0027 ];then"},{"line_number":136,"context_line":"    dhclient -r $iface \u0026\u0026 dhclient -timeout 60 $br"},{"line_number":137,"context_line":"    dhcp_ip\u003d$(ip addr show dev $br | awk \u0027sub(/inet /,\"\"){print $1}\u0027)"},{"line_number":138,"context_line":"    if [ \"$dhcp_ip\" \u003d\u003d \u0027\u0027 ];then"},{"line_number":139,"context_line":"      echo \"Can not get ip address for $bridge by dhcpclient in 60s.\""}],"source_content_type":"application/x-erb","patch_set":6,"id":"7a016987_82544454","line":136,"updated":"2015-05-27 16:21:16.000000000","message":"again the hardcoded timeouts, this will eventually fail for someone.","commit_id":"a9892c2298920fc912e44191272c347eae8faf8c"},{"author":{"_account_id":8172,"name":"Wei Hu","email":"huwei.xtu@gmail.com","username":"WeiHu"},"change_message_id":"d62c6a77d80a049f225302b8895de9fdae2351fd","unresolved":false,"context_lines":[{"line_number":133,"context_line":"if [ \"$is_dhcp\" \u003d\u003d \u0027true\u0027 ]; then"},{"line_number":134,"context_line":"  dhcp_ip\u003d$(ip addr show dev $bridge | awk \u0027sub(/inet /,\"\"){print $1}\u0027)"},{"line_number":135,"context_line":"  if [ \"$dhcp_ip\" \u003d\u003d \u0027\u0027 ];then"},{"line_number":136,"context_line":"    dhclient -r $iface \u0026\u0026 dhclient -timeout 60 $br"},{"line_number":137,"context_line":"    dhcp_ip\u003d$(ip addr show dev $br | awk \u0027sub(/inet /,\"\"){print $1}\u0027)"},{"line_number":138,"context_line":"    if [ \"$dhcp_ip\" \u003d\u003d \u0027\u0027 ];then"},{"line_number":139,"context_line":"      echo \"Can not get ip address for $bridge by dhcpclient in 60s.\""}],"source_content_type":"application/x-erb","patch_set":6,"id":"7a016987_43d4f2bb","line":136,"in_reply_to":"7a016987_82544454","updated":"2015-05-28 10:17:44.000000000","message":"ok, will do","commit_id":"a9892c2298920fc912e44191272c347eae8faf8c"},{"author":{"_account_id":7128,"name":"Mark Vanderwiel","email":"vanderwl@us.ibm.com","username":"kramvan"},"change_message_id":"3d53b35f82ad88f6d5fcc1e0e83d0e730e3cf248","unresolved":false,"context_lines":[{"line_number":136,"context_line":"    dhclient -r $iface \u0026\u0026 dhclient -timeout 60 $br"},{"line_number":137,"context_line":"    dhcp_ip\u003d$(ip addr show dev $br | awk \u0027sub(/inet /,\"\"){print $1}\u0027)"},{"line_number":138,"context_line":"    if [ \"$dhcp_ip\" \u003d\u003d \u0027\u0027 ];then"},{"line_number":139,"context_line":"      echo \"Can not get ip address for $bridge by dhcpclient in 60s.\""},{"line_number":140,"context_line":"      ip_move_failure"},{"line_number":141,"context_line":"    fi"},{"line_number":142,"context_line":"  fi"}],"source_content_type":"application/x-erb","patch_set":6,"id":"7a016987_e262d83c","line":139,"updated":"2015-05-27 16:21:16.000000000","message":"...from dhcpclient","commit_id":"a9892c2298920fc912e44191272c347eae8faf8c"},{"author":{"_account_id":8172,"name":"Wei Hu","email":"huwei.xtu@gmail.com","username":"WeiHu"},"change_message_id":"d62c6a77d80a049f225302b8895de9fdae2351fd","unresolved":false,"context_lines":[{"line_number":136,"context_line":"    dhclient -r $iface \u0026\u0026 dhclient -timeout 60 $br"},{"line_number":137,"context_line":"    dhcp_ip\u003d$(ip addr show dev $br | awk \u0027sub(/inet /,\"\"){print $1}\u0027)"},{"line_number":138,"context_line":"    if [ \"$dhcp_ip\" \u003d\u003d \u0027\u0027 ];then"},{"line_number":139,"context_line":"      echo \"Can not get ip address for $bridge by dhcpclient in 60s.\""},{"line_number":140,"context_line":"      ip_move_failure"},{"line_number":141,"context_line":"    fi"},{"line_number":142,"context_line":"  fi"}],"source_content_type":"application/x-erb","patch_set":6,"id":"7a016987_e3e51ea8","line":139,"in_reply_to":"7a016987_e262d83c","updated":"2015-05-28 10:17:44.000000000","message":"Done","commit_id":"a9892c2298920fc912e44191272c347eae8faf8c"},{"author":{"_account_id":7128,"name":"Mark Vanderwiel","email":"vanderwl@us.ibm.com","username":"kramvan"},"change_message_id":"3d53b35f82ad88f6d5fcc1e0e83d0e730e3cf248","unresolved":false,"context_lines":[{"line_number":166,"context_line":"  # Retry until timeout."},{"line_number":167,"context_line":"  should_retry\u003d$(echo \"$now-$START\u003c$TIMEOUT\" | bc)"},{"line_number":168,"context_line":"  if [ \"$should_retry\" \u003d \"0\" ];then"},{"line_number":169,"context_line":"    echo \"Timeout to wait network ready, can not ping $validate_ip\""},{"line_number":170,"context_line":"    ip_move_failure"},{"line_number":171,"context_line":"  fi"},{"line_number":172,"context_line":"  echo \"retry to ping validate ip address $validate_ip ...\""}],"source_content_type":"application/x-erb","patch_set":6,"id":"7a016987_82db24ed","line":169,"updated":"2015-05-27 16:21:16.000000000","message":"Timeout waiting for network to be ready, could not ping $validate_ip","commit_id":"a9892c2298920fc912e44191272c347eae8faf8c"},{"author":{"_account_id":8172,"name":"Wei Hu","email":"huwei.xtu@gmail.com","username":"WeiHu"},"change_message_id":"d62c6a77d80a049f225302b8895de9fdae2351fd","unresolved":false,"context_lines":[{"line_number":166,"context_line":"  # Retry until timeout."},{"line_number":167,"context_line":"  should_retry\u003d$(echo \"$now-$START\u003c$TIMEOUT\" | bc)"},{"line_number":168,"context_line":"  if [ \"$should_retry\" \u003d \"0\" ];then"},{"line_number":169,"context_line":"    echo \"Timeout to wait network ready, can not ping $validate_ip\""},{"line_number":170,"context_line":"    ip_move_failure"},{"line_number":171,"context_line":"  fi"},{"line_number":172,"context_line":"  echo \"retry to ping validate ip address $validate_ip ...\""}],"source_content_type":"application/x-erb","patch_set":6,"id":"7a016987_c3e0e298","line":169,"in_reply_to":"7a016987_82db24ed","updated":"2015-05-28 10:17:44.000000000","message":"Done","commit_id":"a9892c2298920fc912e44191272c347eae8faf8c"},{"author":{"_account_id":7128,"name":"Mark Vanderwiel","email":"vanderwl@us.ibm.com","username":"kramvan"},"change_message_id":"3d53b35f82ad88f6d5fcc1e0e83d0e730e3cf248","unresolved":false,"context_lines":[{"line_number":169,"context_line":"    echo \"Timeout to wait network ready, can not ping $validate_ip\""},{"line_number":170,"context_line":"    ip_move_failure"},{"line_number":171,"context_line":"  fi"},{"line_number":172,"context_line":"  echo \"retry to ping validate ip address $validate_ip ...\""},{"line_number":173,"context_line":"done"},{"line_number":174,"context_line":""},{"line_number":175,"context_line":"ip_move_success"}],"source_content_type":"application/x-erb","patch_set":6,"id":"7a016987_82b0c48c","line":172,"updated":"2015-05-27 16:21:16.000000000","message":"Instead of post msg here, move this to just above 160,  \"Validating network with ping to $validate_ip...\"","commit_id":"a9892c2298920fc912e44191272c347eae8faf8c"},{"author":{"_account_id":8172,"name":"Wei Hu","email":"huwei.xtu@gmail.com","username":"WeiHu"},"change_message_id":"d62c6a77d80a049f225302b8895de9fdae2351fd","unresolved":false,"context_lines":[{"line_number":169,"context_line":"    echo \"Timeout to wait network ready, can not ping $validate_ip\""},{"line_number":170,"context_line":"    ip_move_failure"},{"line_number":171,"context_line":"  fi"},{"line_number":172,"context_line":"  echo \"retry to ping validate ip address $validate_ip ...\""},{"line_number":173,"context_line":"done"},{"line_number":174,"context_line":""},{"line_number":175,"context_line":"ip_move_success"}],"source_content_type":"application/x-erb","patch_set":6,"id":"7a016987_83f1ca6c","line":172,"in_reply_to":"7a016987_82b0c48c","updated":"2015-05-28 10:17:44.000000000","message":"Done","commit_id":"a9892c2298920fc912e44191272c347eae8faf8c"},{"author":{"_account_id":13667,"name":"ZongKai LI","email":"onionpiece@163.com","username":"lzklibj"},"change_message_id":"120bf6c34a890b3b1e67770ef6d743673b250e0c","unresolved":false,"context_lines":[{"line_number":55,"context_line":"  sed -i \"s/^GATEWAYDEV\\s*\u003d\\s*$br\\s*/GATEWAYDEV\u003d$iface/g\" /etc/sysconfig/network"},{"line_number":56,"context_line":"  rm -f $br_file"},{"line_number":57,"context_line":"  ovs-vsctl --if-exists del-br $br"},{"line_number":58,"context_line":"\u003c% end %\u003e"},{"line_number":59,"context_line":"  service network restart"},{"line_number":60,"context_line":"}"},{"line_number":61,"context_line":""}],"source_content_type":"application/x-erb","patch_set":8,"id":"7a016987_4fe6f7b0","line":58,"updated":"2015-06-01 08:22:50.000000000","message":"Why is a \u003c% end %\u003e here?","commit_id":"01c5b1eaebf7792c91ac0a4b5cfb1e2763c683af"},{"author":{"_account_id":13667,"name":"ZongKai LI","email":"onionpiece@163.com","username":"lzklibj"},"change_message_id":"8fdbcd83704ef76bf617081e917156edb3ef8c57","unresolved":false,"context_lines":[{"line_number":55,"context_line":"  sed -i \"s/^GATEWAYDEV\\s*\u003d\\s*$br\\s*/GATEWAYDEV\u003d$iface/g\" /etc/sysconfig/network"},{"line_number":56,"context_line":"  rm -f $br_file"},{"line_number":57,"context_line":"  ovs-vsctl --if-exists del-br $br"},{"line_number":58,"context_line":"\u003c% end %\u003e"},{"line_number":59,"context_line":"  service network restart"},{"line_number":60,"context_line":"}"},{"line_number":61,"context_line":""}],"source_content_type":"application/x-erb","patch_set":9,"id":"7a016987_6ff3f373","line":58,"updated":"2015-06-01 08:23:06.000000000","message":"Why is a \u003c% end %\u003e here?","commit_id":"56925a707bbeba8a3cbf281b7aeac5a7e8362d1b"},{"author":{"_account_id":13667,"name":"ZongKai LI","email":"onionpiece@163.com","username":"lzklibj"},"change_message_id":"02b007242dc7f78d0413699229c837213d373545","unresolved":false,"context_lines":[{"line_number":73,"context_line":"ip_move_failure()"},{"line_number":74,"context_line":"{"},{"line_number":75,"context_line":"  echo \"IP movement has failed. Try to restore the network environment...\""},{"line_number":76,"context_line":"  if [ \"$platform\" \u003d\u003d \u0027rhel\u0027 ];then"},{"line_number":77,"context_line":"    rhel_restore"},{"line_number":78,"context_line":"  elif [ \"$platform\" \u003d\u003d \u0027debian\u0027 ];then"},{"line_number":79,"context_line":"    ubuntu_restore"}],"source_content_type":"application/x-erb","patch_set":10,"id":"7a016987_92ebf612","line":76,"updated":"2015-06-01 08:42:28.000000000","message":"Shall we process here and function rhel_restore like L110~L149 ?","commit_id":"832cedfcb4179836d5fc15e0011fea2052ae3055"},{"author":{"_account_id":8172,"name":"Wei Hu","email":"huwei.xtu@gmail.com","username":"WeiHu"},"change_message_id":"1bf3cabf914011ddd2e12b4ccc24edabe80f7ad5","unresolved":false,"context_lines":[{"line_number":73,"context_line":"ip_move_failure()"},{"line_number":74,"context_line":"{"},{"line_number":75,"context_line":"  echo \"IP movement has failed. Try to restore the network environment...\""},{"line_number":76,"context_line":"  if [ \"$platform\" \u003d\u003d \u0027rhel\u0027 ];then"},{"line_number":77,"context_line":"    rhel_restore"},{"line_number":78,"context_line":"  elif [ \"$platform\" \u003d\u003d \u0027debian\u0027 ];then"},{"line_number":79,"context_line":"    ubuntu_restore"}],"source_content_type":"application/x-erb","patch_set":10,"id":"7a016987_72c19ae3","line":76,"in_reply_to":"7a016987_92ebf612","updated":"2015-06-01 09:00:05.000000000","message":"No, we can\u0027t. 110 to 149 is not common for rhel platform ip movement failure.","commit_id":"832cedfcb4179836d5fc15e0011fea2052ae3055"},{"author":{"_account_id":13667,"name":"ZongKai LI","email":"onionpiece@163.com","username":"lzklibj"},"change_message_id":"02b007242dc7f78d0413699229c837213d373545","unresolved":false,"context_lines":[{"line_number":136,"context_line":"# E.g. bridge failed to get acquire a IP address from dhcp server. The following code can give them"},{"line_number":137,"context_line":"# another chance to retrieve ip address."},{"line_number":138,"context_line":"if [ \"$is_dhcp\" \u003d\u003d \u0027true\u0027 ]; then"},{"line_number":139,"context_line":"  dhcp_ip\u003d$(ip addr show dev $bridge | awk \u0027sub(/inet /,\"\"){print $1}\u0027)"},{"line_number":140,"context_line":"  if [ \"$dhcp_ip\" \u003d\u003d \u0027\u0027 ];then"},{"line_number":141,"context_line":"    dhclient -r $iface \u0026\u0026 dhclient -timeout 120 $br"},{"line_number":142,"context_line":"    dhcp_ip\u003d$(ip addr show dev $br | awk \u0027sub(/inet /,\"\"){print $1}\u0027)"}],"source_content_type":"application/x-erb","patch_set":10,"id":"7a016987_526c5ecf","line":139,"updated":"2015-06-01 08:42:28.000000000","message":"$bridge, I only find \"bridge\u003d...\" in L52, and only ip_move_failure will invoke rhel_restore, which means only in ip_move_failure, variable bridge will get a value, so what if L128 doesn\u0027t executed, variable bridge here will be empty?","commit_id":"832cedfcb4179836d5fc15e0011fea2052ae3055"},{"author":{"_account_id":8172,"name":"Wei Hu","email":"huwei.xtu@gmail.com","username":"WeiHu"},"change_message_id":"1bf3cabf914011ddd2e12b4ccc24edabe80f7ad5","unresolved":false,"context_lines":[{"line_number":136,"context_line":"# E.g. bridge failed to get acquire a IP address from dhcp server. The following code can give them"},{"line_number":137,"context_line":"# another chance to retrieve ip address."},{"line_number":138,"context_line":"if [ \"$is_dhcp\" \u003d\u003d \u0027true\u0027 ]; then"},{"line_number":139,"context_line":"  dhcp_ip\u003d$(ip addr show dev $bridge | awk \u0027sub(/inet /,\"\"){print $1}\u0027)"},{"line_number":140,"context_line":"  if [ \"$dhcp_ip\" \u003d\u003d \u0027\u0027 ];then"},{"line_number":141,"context_line":"    dhclient -r $iface \u0026\u0026 dhclient -timeout 120 $br"},{"line_number":142,"context_line":"    dhcp_ip\u003d$(ip addr show dev $br | awk \u0027sub(/inet /,\"\"){print $1}\u0027)"}],"source_content_type":"application/x-erb","patch_set":10,"id":"7a016987_52b45e80","line":139,"in_reply_to":"7a016987_526c5ecf","updated":"2015-06-01 09:00:05.000000000","message":"typo, should be $br.","commit_id":"832cedfcb4179836d5fc15e0011fea2052ae3055"}]}
