)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":3153,"name":"Emilien Macchi","email":"emilien@redhat.com","username":"emilienm"},"change_message_id":"caa26f94688d7a51fc5a137de4d0bdc766625dc0","unresolved":false,"context_lines":[{"line_number":9,"context_line":"Partially-Implements: blueprint opendaylight-integration"},{"line_number":10,"context_line":""},{"line_number":11,"context_line":"Note this patch only adds support for non-ha.  Will handle HA/pacemaker"},{"line_number":12,"context_line":"in a separate patch."},{"line_number":13,"context_line":""},{"line_number":14,"context_line":" - neutron/opendaylight.pp handles installing ODL to control nodes"},{"line_number":15,"context_line":" - ml2/opendaylight.pp handles configuring ML2 to work with ODL"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":8,"id":"9ad45d7e_b8e48e3b","line":12,"updated":"2016-08-08 16:21:08.000000000","message":"I don\u0027t think you need to handle Pacemaker with new HA architecture.","commit_id":"8677e62b920414193ea58a17e9531512aee96afd"},{"author":{"_account_id":17280,"name":"Tim Rozet","email":"trozet@redhat.com","username":"trozet"},"change_message_id":"e501b23cf259bef30d8d55dc6d8853c3890d3aae","unresolved":false,"context_lines":[{"line_number":9,"context_line":"Partially-Implements: blueprint opendaylight-integration"},{"line_number":10,"context_line":""},{"line_number":11,"context_line":"Note this patch only adds support for non-ha.  Will handle HA/pacemaker"},{"line_number":12,"context_line":"in a separate patch."},{"line_number":13,"context_line":""},{"line_number":14,"context_line":" - neutron/opendaylight.pp handles installing ODL to control nodes"},{"line_number":15,"context_line":" - ml2/opendaylight.pp handles configuring ML2 to work with ODL"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":8,"id":"9ad45d7e_f63bb79a","line":12,"in_reply_to":"9ad45d7e_b8e48e3b","updated":"2016-08-08 17:02:42.000000000","message":"I think the pacemaker version may slightly differ.  This because ODL is able to run in HA (an instance on each controller).  The configuration may be slightly different so would rather keep it separate and have this land first.","commit_id":"8677e62b920414193ea58a17e9531512aee96afd"}],"manifests/profile/base/neutron/opendaylight.pp":[{"author":{"_account_id":12398,"name":"Dan Sneddon","email":"dsneddon@redhat.com","username":"dsneddon"},"change_message_id":"4a3e05aa22d187f60d0bfe7c168c1caad9c8f55f","unresolved":false,"context_lines":[{"line_number":23,"context_line":"#   Defaults to hiera(\u0027enable_odl_on_controller\u0027)"},{"line_number":24,"context_line":"#"},{"line_number":25,"context_line":"# [*odl_ip*]"},{"line_number":26,"context_line":"#   (Optional) Specific Controller IP to bind to."},{"line_number":27,"context_line":"#   Note: This parameter will be used in future."},{"line_number":28,"context_line":"#   Defaults to hiera(\u0027opendaylight_controller_ip\u0027)"},{"line_number":29,"context_line":"#"}],"source_content_type":"text/x-puppet","patch_set":5,"id":"dada55a8_95e0a32a","line":26,"range":{"start_line":26,"start_character":48,"end_line":26,"end_character":49},"updated":"2016-07-21 19:55:59.000000000","message":"Some of these lines have periods and some don\u0027t. It would look cleaner if you were consistent. It appears that in the other files you used periods only when the description consisted of multiple sentences. Maybe do the same here?","commit_id":"9b6b1d48cf312520f3d596dd754c55fc9d3fb635"},{"author":{"_account_id":17280,"name":"Tim Rozet","email":"trozet@redhat.com","username":"trozet"},"change_message_id":"87d70128d6d9af46c04ee2f47ee61f256bc44655","unresolved":false,"context_lines":[{"line_number":23,"context_line":"#   Defaults to hiera(\u0027enable_odl_on_controller\u0027)"},{"line_number":24,"context_line":"#"},{"line_number":25,"context_line":"# [*odl_ip*]"},{"line_number":26,"context_line":"#   (Optional) Specific Controller IP to bind to."},{"line_number":27,"context_line":"#   Note: This parameter will be used in future."},{"line_number":28,"context_line":"#   Defaults to hiera(\u0027opendaylight_controller_ip\u0027)"},{"line_number":29,"context_line":"#"}],"source_content_type":"text/x-puppet","patch_set":5,"id":"dada55a8_6cd32a39","line":26,"range":{"start_line":26,"start_character":48,"end_line":26,"end_character":49},"in_reply_to":"dada55a8_95e0a32a","updated":"2016-07-25 16:56:40.000000000","message":"Done","commit_id":"9b6b1d48cf312520f3d596dd754c55fc9d3fb635"},{"author":{"_account_id":6681,"name":"Brent Eagles","email":"beagles@redhat.com","username":"beagles"},"change_message_id":"025739e2d03745d9c991ba567326fadba66a7e86","unresolved":false,"context_lines":[{"line_number":63,"context_line":"  $odl_ip            \u003d hiera(\u0027opendaylight_controller_ip\u0027, \u0027\u0027),"},{"line_number":64,"context_line":"  $odl_port          \u003d hiera(\u0027opendaylight_port\u0027),"},{"line_number":65,"context_line":"  $odl_username      \u003d hiera(\u0027neutron::plugins::ml2::opendaylight:odl_username\u0027),"},{"line_number":66,"context_line":"  $odl_password      \u003d hiera(\u0027neutron::plugins::ml2::opendaylight:odl_password\u0027),"},{"line_number":67,"context_line":"  $odl_features      \u003d hiera(\u0027opendaylight_features\u0027),"},{"line_number":68,"context_line":"  $enable_l3         \u003d hiera(\u0027opendaylight_enable_l3\u0027, \u0027no\u0027),"},{"line_number":69,"context_line":"  $step              \u003d hiera(\u0027step\u0027),"}],"source_content_type":"text/x-puppet","patch_set":5,"id":"dada55a8_2ac0f229","line":66,"updated":"2016-07-25 17:47:25.000000000","message":"Why do you need these parameters here? Won\u0027t the puppet-apply during deployment get them to the appropriate classes in the puppet-neutron module?","commit_id":"9b6b1d48cf312520f3d596dd754c55fc9d3fb635"},{"author":{"_account_id":17280,"name":"Tim Rozet","email":"trozet@redhat.com","username":"trozet"},"change_message_id":"1218ec322673cd25a7de715627781c165e9b5123","unresolved":false,"context_lines":[{"line_number":63,"context_line":"  $odl_ip            \u003d hiera(\u0027opendaylight_controller_ip\u0027, \u0027\u0027),"},{"line_number":64,"context_line":"  $odl_port          \u003d hiera(\u0027opendaylight_port\u0027),"},{"line_number":65,"context_line":"  $odl_username      \u003d hiera(\u0027neutron::plugins::ml2::opendaylight:odl_username\u0027),"},{"line_number":66,"context_line":"  $odl_password      \u003d hiera(\u0027neutron::plugins::ml2::opendaylight:odl_password\u0027),"},{"line_number":67,"context_line":"  $odl_features      \u003d hiera(\u0027opendaylight_features\u0027),"},{"line_number":68,"context_line":"  $enable_l3         \u003d hiera(\u0027opendaylight_enable_l3\u0027, \u0027no\u0027),"},{"line_number":69,"context_line":"  $step              \u003d hiera(\u0027step\u0027),"}],"source_content_type":"text/x-puppet","patch_set":5,"id":"dada55a8_05b1a18f","line":66,"in_reply_to":"dada55a8_2ac0f229","updated":"2016-07-25 17:59:36.000000000","message":"That\u0027s true.  I was trying to be explicit, so that when you look at only puppet-tripleO you can tell what is being passed.  Otherwise you have to look at 2 projects.  This does duplicate code though, so if the preferred method is to not be redundant, then I can remove this.","commit_id":"9b6b1d48cf312520f3d596dd754c55fc9d3fb635"},{"author":{"_account_id":3153,"name":"Emilien Macchi","email":"emilien@redhat.com","username":"emilienm"},"change_message_id":"caa26f94688d7a51fc5a137de4d0bdc766625dc0","unresolved":false,"context_lines":[{"line_number":35,"context_line":"  if $step \u003e\u003d 1 {"},{"line_number":36,"context_line":"    # Install ODL on controller"},{"line_number":37,"context_line":"    if hiera(\u0027odl_on_controller\u0027) {"},{"line_number":38,"context_line":"      include ::opendaylight"},{"line_number":39,"context_line":"    }"},{"line_number":40,"context_line":"  }"},{"line_number":41,"context_line":"}"}],"source_content_type":"text/x-puppet","patch_set":8,"id":"9ad45d7e_5841120b","line":38,"updated":"2016-08-08 16:21:08.000000000","message":"so you install all opendaylight services in one class? Isn\u0027t it split for all ODL services?","commit_id":"8677e62b920414193ea58a17e9531512aee96afd"},{"author":{"_account_id":17280,"name":"Tim Rozet","email":"trozet@redhat.com","username":"trozet"},"change_message_id":"e501b23cf259bef30d8d55dc6d8853c3890d3aae","unresolved":false,"context_lines":[{"line_number":35,"context_line":"  if $step \u003e\u003d 1 {"},{"line_number":36,"context_line":"    # Install ODL on controller"},{"line_number":37,"context_line":"    if hiera(\u0027odl_on_controller\u0027) {"},{"line_number":38,"context_line":"      include ::opendaylight"},{"line_number":39,"context_line":"    }"},{"line_number":40,"context_line":"  }"},{"line_number":41,"context_line":"}"}],"source_content_type":"text/x-puppet","patch_set":8,"id":"9ad45d7e_96dd1b73","line":38,"in_reply_to":"9ad45d7e_5841120b","updated":"2016-08-08 17:02:42.000000000","message":"ODL runs as a single java instance.  The extra_features param of puppet-opendaylight decides which features (aka ODL subprojects feature code) are loaded: https://github.com/dfarrell07/puppet-opendaylight/blob/master/manifests/params.pp#L12","commit_id":"8677e62b920414193ea58a17e9531512aee96afd"}],"manifests/profile/base/neutron/plugins/ml2/opendaylight.pp":[{"author":{"_account_id":6994,"name":"Michael Chapman","email":"woppin@gmail.com","username":"michaeltchapman"},"change_message_id":"dbf66fd85a1e7c2e38b65087c819ccddedb1b90a","unresolved":false,"context_lines":[{"line_number":63,"context_line":"      $controller_ips_array \u003d split($controller_ips, \u0027,\u0027)"},{"line_number":64,"context_line":"      $opendaylight_controller_ip \u003d $controller_ips_array[0]"},{"line_number":65,"context_line":"    } else {"},{"line_number":66,"context_line":"      if ! $opendaylight_controller_ip { fail(\u0027OpenDaylight Controller IP is Empty\u0027)}"},{"line_number":67,"context_line":"      $opendaylight_controller_ip \u003d $odl_ip"},{"line_number":68,"context_line":"    }"},{"line_number":69,"context_line":""}],"source_content_type":"text/x-puppet","patch_set":4,"id":"3aaa91ec_7dcd95b6","line":66,"updated":"2016-06-29 07:36:55.000000000","message":"if odl_on_controller is false, this will always fail since opendaylight_controller_ip won\u0027t be set.\nI think the fail check should go below this if block to make sure both methods don\u0027t set the ip to undef.","commit_id":"f7d7c6f2fc6459fb3c140a3df85a72ad31caafbd"},{"author":{"_account_id":17280,"name":"Tim Rozet","email":"trozet@redhat.com","username":"trozet"},"change_message_id":"a4305959281b06480645a176205ff2c7eefc37ec","unresolved":false,"context_lines":[{"line_number":63,"context_line":"      $controller_ips_array \u003d split($controller_ips, \u0027,\u0027)"},{"line_number":64,"context_line":"      $opendaylight_controller_ip \u003d $controller_ips_array[0]"},{"line_number":65,"context_line":"    } else {"},{"line_number":66,"context_line":"      if ! $opendaylight_controller_ip { fail(\u0027OpenDaylight Controller IP is Empty\u0027)}"},{"line_number":67,"context_line":"      $opendaylight_controller_ip \u003d $odl_ip"},{"line_number":68,"context_line":"    }"},{"line_number":69,"context_line":""}],"source_content_type":"text/x-puppet","patch_set":4,"id":"3aaa91ec_344946b8","line":66,"in_reply_to":"3aaa91ec_7dcd95b6","updated":"2016-06-29 16:47:38.000000000","message":"Yeah my bad.  Meant for this to be odl_ip, but will do what you suggested.","commit_id":"f7d7c6f2fc6459fb3c140a3df85a72ad31caafbd"},{"author":{"_account_id":6681,"name":"Brent Eagles","email":"beagles@redhat.com","username":"beagles"},"change_message_id":"025739e2d03745d9c991ba567326fadba66a7e86","unresolved":false,"context_lines":[{"line_number":68,"context_line":""},{"line_number":69,"context_line":"    if ! $opendaylight_controller_ip { fail(\u0027OpenDaylight Controller IP is Empty\u0027)}"},{"line_number":70,"context_line":""},{"line_number":71,"context_line":"    class { \u0027::neutron::plugins::ml2::opendaylight\u0027:"},{"line_number":72,"context_line":"      odl_username \u003d\u003e $odl_username,"},{"line_number":73,"context_line":"      odl_password \u003d\u003e $odl_password,"},{"line_number":74,"context_line":"      odl_url      \u003d\u003e \"http://${opendaylight_controller_ip}:${odl_port}/controller/nb/v2/neutron\";"}],"source_content_type":"text/x-puppet","patch_set":5,"id":"dada55a8_aa15024a","line":71,"updated":"2016-07-25 17:47:25.000000000","message":"See comment in next file about whether you need to need to do any of this here. It seems like some of this is unnecessary in the profile manifests. If you shifted the odl_url construction logic into puppet neutron (or created the URL in the relevant services template), you wouldn\u0027t need any of this.","commit_id":"9b6b1d48cf312520f3d596dd754c55fc9d3fb635"},{"author":{"_account_id":12398,"name":"Dan Sneddon","email":"dsneddon@redhat.com","username":"dsneddon"},"change_message_id":"4a3e05aa22d187f60d0bfe7c168c1caad9c8f55f","unresolved":false,"context_lines":[{"line_number":71,"context_line":"    class { \u0027::neutron::plugins::ml2::opendaylight\u0027:"},{"line_number":72,"context_line":"      odl_username \u003d\u003e $odl_username,"},{"line_number":73,"context_line":"      odl_password \u003d\u003e $odl_password,"},{"line_number":74,"context_line":"      odl_url      \u003d\u003e \"http://${opendaylight_controller_ip}:${odl_port}/controller/nb/v2/neutron\";"},{"line_number":75,"context_line":"    }"},{"line_number":76,"context_line":"  }"},{"line_number":77,"context_line":"}"}],"source_content_type":"text/x-puppet","patch_set":5,"id":"dada55a8_55dc6b45","line":74,"range":{"start_line":74,"start_character":23,"end_line":74,"end_character":27},"updated":"2016-07-21 19:55:59.000000000","message":"Hardcoded to HTTP? What about HTTPS? Shouldn\u0027t the protocol be a parameter, at least for future SSL support?","commit_id":"9b6b1d48cf312520f3d596dd754c55fc9d3fb635"},{"author":{"_account_id":17280,"name":"Tim Rozet","email":"trozet@redhat.com","username":"trozet"},"change_message_id":"87d70128d6d9af46c04ee2f47ee61f256bc44655","unresolved":false,"context_lines":[{"line_number":71,"context_line":"    class { \u0027::neutron::plugins::ml2::opendaylight\u0027:"},{"line_number":72,"context_line":"      odl_username \u003d\u003e $odl_username,"},{"line_number":73,"context_line":"      odl_password \u003d\u003e $odl_password,"},{"line_number":74,"context_line":"      odl_url      \u003d\u003e \"http://${opendaylight_controller_ip}:${odl_port}/controller/nb/v2/neutron\";"},{"line_number":75,"context_line":"    }"},{"line_number":76,"context_line":"  }"},{"line_number":77,"context_line":"}"}],"source_content_type":"text/x-puppet","patch_set":5,"id":"dada55a8_eccefa81","line":74,"range":{"start_line":74,"start_character":23,"end_line":74,"end_character":27},"in_reply_to":"dada55a8_55dc6b45","updated":"2016-07-25 16:56:40.000000000","message":"Will parameterize","commit_id":"9b6b1d48cf312520f3d596dd754c55fc9d3fb635"},{"author":{"_account_id":12398,"name":"Dan Sneddon","email":"dsneddon@redhat.com","username":"dsneddon"},"change_message_id":"93843a242fa94d4010336578cfdbdd67f082689d","unresolved":false,"context_lines":[{"line_number":37,"context_line":"#"},{"line_number":38,"context_line":"class tripleo::profile::base::neutron::plugins::ml2::opendaylight ("},{"line_number":39,"context_line":"  $odl_port          \u003d hiera(\u0027opendaylight::odl_rest_port\u0027),"},{"line_number":40,"context_line":"  $controller_ips    \u003d hiera(\u0027controller_node_ips\u0027),"},{"line_number":41,"context_line":"  $conn_proto        \u003d \u0027http\u0027,"},{"line_number":42,"context_line":"  $step              \u003d hiera(\u0027step\u0027),"},{"line_number":43,"context_line":") {"}],"source_content_type":"text/x-puppet","patch_set":7,"id":"dada55a8_c3dd8115","line":40,"range":{"start_line":40,"start_character":0,"end_line":40,"end_character":52},"updated":"2016-07-26 18:23:03.000000000","message":"The controller_ips array is in all_nodes config. Won\u0027t this always resolve to the IP on controller-0? How will this work with HA controllers?","commit_id":"10ce8ad59b8a37c61130e13b854745c788ace25f"},{"author":{"_account_id":17280,"name":"Tim Rozet","email":"trozet@redhat.com","username":"trozet"},"change_message_id":"1c5987876552cf24f66e1ef3bf1b3fe189bb7da5","unresolved":false,"context_lines":[{"line_number":37,"context_line":"#"},{"line_number":38,"context_line":"class tripleo::profile::base::neutron::plugins::ml2::opendaylight ("},{"line_number":39,"context_line":"  $odl_port          \u003d hiera(\u0027opendaylight::odl_rest_port\u0027),"},{"line_number":40,"context_line":"  $controller_ips    \u003d hiera(\u0027controller_node_ips\u0027),"},{"line_number":41,"context_line":"  $conn_proto        \u003d \u0027http\u0027,"},{"line_number":42,"context_line":"  $step              \u003d hiera(\u0027step\u0027),"},{"line_number":43,"context_line":") {"}],"source_content_type":"text/x-puppet","patch_set":7,"id":"dada55a8_c9147fea","line":40,"range":{"start_line":40,"start_character":0,"end_line":40,"end_character":52},"in_reply_to":"dada55a8_c3dd8115","updated":"2016-07-26 19:28:37.000000000","message":"In this case yeah, but in HA case it will resolve to all 3 controllers.  I just used the same code in HA and noHA.  Look at line 48,49.  We always pick the first controller to install ODL on (unless ODL HA is enabled, but that is not stable)","commit_id":"10ce8ad59b8a37c61130e13b854745c788ace25f"},{"author":{"_account_id":12398,"name":"Dan Sneddon","email":"dsneddon@redhat.com","username":"dsneddon"},"change_message_id":"93843a242fa94d4010336578cfdbdd67f082689d","unresolved":false,"context_lines":[{"line_number":38,"context_line":"class tripleo::profile::base::neutron::plugins::ml2::opendaylight ("},{"line_number":39,"context_line":"  $odl_port          \u003d hiera(\u0027opendaylight::odl_rest_port\u0027),"},{"line_number":40,"context_line":"  $controller_ips    \u003d hiera(\u0027controller_node_ips\u0027),"},{"line_number":41,"context_line":"  $conn_proto        \u003d \u0027http\u0027,"},{"line_number":42,"context_line":"  $step              \u003d hiera(\u0027step\u0027),"},{"line_number":43,"context_line":") {"},{"line_number":44,"context_line":""}],"source_content_type":"text/x-puppet","patch_set":7,"id":"dada55a8_a30a0dd0","line":41,"range":{"start_line":41,"start_character":0,"end_line":41,"end_character":29},"updated":"2016-07-26 18:23:03.000000000","message":"I assume at some point this will be a hiera param, right? Is there any reason to not plumb it up right away? Maybe at least add a #TODO comment here to illustrate that this will be changed in the future if not doing it now.","commit_id":"10ce8ad59b8a37c61130e13b854745c788ace25f"},{"author":{"_account_id":17280,"name":"Tim Rozet","email":"trozet@redhat.com","username":"trozet"},"change_message_id":"1c5987876552cf24f66e1ef3bf1b3fe189bb7da5","unresolved":false,"context_lines":[{"line_number":38,"context_line":"class tripleo::profile::base::neutron::plugins::ml2::opendaylight ("},{"line_number":39,"context_line":"  $odl_port          \u003d hiera(\u0027opendaylight::odl_rest_port\u0027),"},{"line_number":40,"context_line":"  $controller_ips    \u003d hiera(\u0027controller_node_ips\u0027),"},{"line_number":41,"context_line":"  $conn_proto        \u003d \u0027http\u0027,"},{"line_number":42,"context_line":"  $step              \u003d hiera(\u0027step\u0027),"},{"line_number":43,"context_line":") {"},{"line_number":44,"context_line":""}],"source_content_type":"text/x-puppet","patch_set":7,"id":"dada55a8_09d97757","line":41,"range":{"start_line":41,"start_character":0,"end_line":41,"end_character":29},"in_reply_to":"dada55a8_a30a0dd0","updated":"2016-07-26 19:28:37.000000000","message":"Sure I don\u0027t mind making it into a heat parameter.  Will fix.","commit_id":"10ce8ad59b8a37c61130e13b854745c788ace25f"},{"author":{"_account_id":12398,"name":"Dan Sneddon","email":"dsneddon@redhat.com","username":"dsneddon"},"change_message_id":"a21a33d3a87d2bd235b41565eba9dcea54d5a8a3","unresolved":false,"context_lines":[{"line_number":54,"context_line":"    if ! $opendaylight_controller_ip { fail(\u0027OpenDaylight Controller IP is Empty\u0027) }"},{"line_number":55,"context_line":""},{"line_number":56,"context_line":"    class { \u0027::neutron::plugins::ml2::opendaylight\u0027:"},{"line_number":57,"context_line":"      odl_url      \u003d\u003e \"${conn_proto}://${opendaylight_controller_ip}:${odl_port}/controller/nb/v2/neutron\";"},{"line_number":58,"context_line":"    }"},{"line_number":59,"context_line":"  }"},{"line_number":60,"context_line":"}"}],"source_content_type":"text/x-puppet","patch_set":7,"id":"dada55a8_23529d67","line":57,"range":{"start_line":57,"start_character":23,"end_line":57,"end_character":68},"updated":"2016-07-26 18:26:26.000000000","message":"It looks to me like you are building a connection URL that is based on the real IP of the first controller. Why isn\u0027t this a VIP?","commit_id":"10ce8ad59b8a37c61130e13b854745c788ace25f"},{"author":{"_account_id":17280,"name":"Tim Rozet","email":"trozet@redhat.com","username":"trozet"},"change_message_id":"1c5987876552cf24f66e1ef3bf1b3fe189bb7da5","unresolved":false,"context_lines":[{"line_number":54,"context_line":"    if ! $opendaylight_controller_ip { fail(\u0027OpenDaylight Controller IP is Empty\u0027) }"},{"line_number":55,"context_line":""},{"line_number":56,"context_line":"    class { \u0027::neutron::plugins::ml2::opendaylight\u0027:"},{"line_number":57,"context_line":"      odl_url      \u003d\u003e \"${conn_proto}://${opendaylight_controller_ip}:${odl_port}/controller/nb/v2/neutron\";"},{"line_number":58,"context_line":"    }"},{"line_number":59,"context_line":"  }"},{"line_number":60,"context_line":"}"}],"source_content_type":"text/x-puppet","patch_set":7,"id":"dada55a8_a9966b49","line":57,"range":{"start_line":57,"start_character":23,"end_line":57,"end_character":68},"in_reply_to":"dada55a8_23529d67","updated":"2016-07-26 19:28:37.000000000","message":"We could use a VIP.  In the HA case we do setup haproxy with the VIP.  However, in noha case we never really saw a point since it\u0027s only one controller.  Why does TripleO use VIPs anyway in the noha case?","commit_id":"10ce8ad59b8a37c61130e13b854745c788ace25f"},{"author":{"_account_id":17280,"name":"Tim Rozet","email":"trozet@redhat.com","username":"trozet"},"change_message_id":"5a1b204bdceb7dfef3596286e4c8adb3a984795a","unresolved":false,"context_lines":[{"line_number":54,"context_line":"    if ! $opendaylight_controller_ip { fail(\u0027OpenDaylight Controller IP is Empty\u0027) }"},{"line_number":55,"context_line":""},{"line_number":56,"context_line":"    class { \u0027::neutron::plugins::ml2::opendaylight\u0027:"},{"line_number":57,"context_line":"      odl_url      \u003d\u003e \"${conn_proto}://${opendaylight_controller_ip}:${odl_port}/controller/nb/v2/neutron\";"},{"line_number":58,"context_line":"    }"},{"line_number":59,"context_line":"  }"},{"line_number":60,"context_line":"}"}],"source_content_type":"text/x-puppet","patch_set":7,"id":"bacf61ea_c230860a","line":57,"range":{"start_line":57,"start_character":23,"end_line":57,"end_character":68},"in_reply_to":"dada55a8_6c3e418c","updated":"2016-07-27 15:38:00.000000000","message":"OK.  IMO we should probably try to remove the VIP from noha deployments, but it\u0027s outside of the scope of this patch.  For the sake of consistency, I will modify ODL noha to also use a VIP and have an haproxy entry.","commit_id":"10ce8ad59b8a37c61130e13b854745c788ace25f"},{"author":{"_account_id":12398,"name":"Dan Sneddon","email":"dsneddon@redhat.com","username":"dsneddon"},"change_message_id":"e18ca943b8492c412c381a7735a6917e9d469dd4","unresolved":false,"context_lines":[{"line_number":54,"context_line":"    if ! $opendaylight_controller_ip { fail(\u0027OpenDaylight Controller IP is Empty\u0027) }"},{"line_number":55,"context_line":""},{"line_number":56,"context_line":"    class { \u0027::neutron::plugins::ml2::opendaylight\u0027:"},{"line_number":57,"context_line":"      odl_url      \u003d\u003e \"${conn_proto}://${opendaylight_controller_ip}:${odl_port}/controller/nb/v2/neutron\";"},{"line_number":58,"context_line":"    }"},{"line_number":59,"context_line":"  }"},{"line_number":60,"context_line":"}"}],"source_content_type":"text/x-puppet","patch_set":7,"id":"dada55a8_6c3e418c","line":57,"range":{"start_line":57,"start_character":23,"end_line":57,"end_character":68},"in_reply_to":"dada55a8_a9966b49","updated":"2016-07-26 19:48:09.000000000","message":"I think the reason we set up VIPs even in the non-HA case is that it\u0027s easier to do that than it is to maintain two totally separate sets of Heat templates. Heat doesn\u0027t provide the flexibility to have stacks configured differently based on the number of nodes.","commit_id":"10ce8ad59b8a37c61130e13b854745c788ace25f"}],"manifests/profile/base/neutron/plugins/ovs/opendaylight.pp":[{"author":{"_account_id":6994,"name":"Michael Chapman","email":"woppin@gmail.com","username":"michaeltchapman"},"change_message_id":"dbf66fd85a1e7c2e38b65087c819ccddedb1b90a","unresolved":false,"context_lines":[{"line_number":72,"context_line":"    if $odl_on_controller {"},{"line_number":73,"context_line":"      $controller_ips_array \u003d split($controller_ips, \u0027,\u0027)"},{"line_number":74,"context_line":"      $opendaylight_controller_ip \u003d $controller_ips_array[0]"},{"line_number":75,"context_line":"    } else { if ! $opendaylight_controller_ip { fail(\u0027OpenDaylight Controller IP is Empty\u0027)}"},{"line_number":76,"context_line":"      $opendaylight_controller_ip \u003d $odl_ip"},{"line_number":77,"context_line":"    }"},{"line_number":78,"context_line":""}],"source_content_type":"text/x-puppet","patch_set":4,"id":"3aaa91ec_9d7cc173","line":75,"updated":"2016-06-29 07:36:55.000000000","message":"if odl_on_controller is false, this will always fail since opendaylight_controller_ip won\u0027t be set.\n\nI think the fail check should go below this if block to make sure both methods don\u0027t set the ip to undef.","commit_id":"f7d7c6f2fc6459fb3c140a3df85a72ad31caafbd"},{"author":{"_account_id":17280,"name":"Tim Rozet","email":"trozet@redhat.com","username":"trozet"},"change_message_id":"a4305959281b06480645a176205ff2c7eefc37ec","unresolved":false,"context_lines":[{"line_number":72,"context_line":"    if $odl_on_controller {"},{"line_number":73,"context_line":"      $controller_ips_array \u003d split($controller_ips, \u0027,\u0027)"},{"line_number":74,"context_line":"      $opendaylight_controller_ip \u003d $controller_ips_array[0]"},{"line_number":75,"context_line":"    } else { if ! $opendaylight_controller_ip { fail(\u0027OpenDaylight Controller IP is Empty\u0027)}"},{"line_number":76,"context_line":"      $opendaylight_controller_ip \u003d $odl_ip"},{"line_number":77,"context_line":"    }"},{"line_number":78,"context_line":""}],"source_content_type":"text/x-puppet","patch_set":4,"id":"3aaa91ec_74cd8e30","line":75,"in_reply_to":"3aaa91ec_9d7cc173","updated":"2016-06-29 16:47:38.000000000","message":"ditto","commit_id":"f7d7c6f2fc6459fb3c140a3df85a72ad31caafbd"},{"author":{"_account_id":12398,"name":"Dan Sneddon","email":"dsneddon@redhat.com","username":"dsneddon"},"change_message_id":"4a3e05aa22d187f60d0bfe7c168c1caad9c8f55f","unresolved":false,"context_lines":[{"line_number":76,"context_line":"      $opendaylight_controller_ip \u003d $odl_ip"},{"line_number":77,"context_line":"    }"},{"line_number":78,"context_line":""},{"line_number":79,"context_line":"    if ! $opendaylight_controller_ip { fail(\u0027OpenDaylight Controller IP is Empty\u0027)}"},{"line_number":80,"context_line":""},{"line_number":81,"context_line":"    # Build URL to check if ODL is up before connecting OVS"},{"line_number":82,"context_line":"    $opendaylight_url \u003d \"http://${opendaylight_controller_ip}:${odl_port}/${odl_check_url}\""}],"source_content_type":"text/x-puppet","patch_set":5,"id":"dada55a8_3511f704","line":79,"range":{"start_line":79,"start_character":81,"end_line":79,"end_character":83},"updated":"2016-07-21 19:55:59.000000000","message":"Add a space to even out the curly braces on either end, or break into 3 lines.","commit_id":"9b6b1d48cf312520f3d596dd754c55fc9d3fb635"},{"author":{"_account_id":17280,"name":"Tim Rozet","email":"trozet@redhat.com","username":"trozet"},"change_message_id":"87d70128d6d9af46c04ee2f47ee61f256bc44655","unresolved":false,"context_lines":[{"line_number":76,"context_line":"      $opendaylight_controller_ip \u003d $odl_ip"},{"line_number":77,"context_line":"    }"},{"line_number":78,"context_line":""},{"line_number":79,"context_line":"    if ! $opendaylight_controller_ip { fail(\u0027OpenDaylight Controller IP is Empty\u0027)}"},{"line_number":80,"context_line":""},{"line_number":81,"context_line":"    # Build URL to check if ODL is up before connecting OVS"},{"line_number":82,"context_line":"    $opendaylight_url \u003d \"http://${opendaylight_controller_ip}:${odl_port}/${odl_check_url}\""}],"source_content_type":"text/x-puppet","patch_set":5,"id":"dada55a8_4ca466b8","line":79,"range":{"start_line":79,"start_character":81,"end_line":79,"end_character":83},"in_reply_to":"dada55a8_3511f704","updated":"2016-07-25 16:56:40.000000000","message":"Done","commit_id":"9b6b1d48cf312520f3d596dd754c55fc9d3fb635"},{"author":{"_account_id":12398,"name":"Dan Sneddon","email":"dsneddon@redhat.com","username":"dsneddon"},"change_message_id":"4a3e05aa22d187f60d0bfe7c168c1caad9c8f55f","unresolved":false,"context_lines":[{"line_number":79,"context_line":"    if ! $opendaylight_controller_ip { fail(\u0027OpenDaylight Controller IP is Empty\u0027)}"},{"line_number":80,"context_line":""},{"line_number":81,"context_line":"    # Build URL to check if ODL is up before connecting OVS"},{"line_number":82,"context_line":"    $opendaylight_url \u003d \"http://${opendaylight_controller_ip}:${odl_port}/${odl_check_url}\""},{"line_number":83,"context_line":""},{"line_number":84,"context_line":"    class { \u0027::neutron::plugins::ovs::opendaylight\u0027:"},{"line_number":85,"context_line":"      tunnel_ip       \u003d\u003e $tunnel_ip,"}],"source_content_type":"text/x-puppet","patch_set":5,"id":"dada55a8_d5197b23","line":82,"range":{"start_line":82,"start_character":25,"end_line":82,"end_character":30},"updated":"2016-07-21 19:55:59.000000000","message":"Same issue with hardcoded HTTP.","commit_id":"9b6b1d48cf312520f3d596dd754c55fc9d3fb635"},{"author":{"_account_id":17280,"name":"Tim Rozet","email":"trozet@redhat.com","username":"trozet"},"change_message_id":"87d70128d6d9af46c04ee2f47ee61f256bc44655","unresolved":false,"context_lines":[{"line_number":79,"context_line":"    if ! $opendaylight_controller_ip { fail(\u0027OpenDaylight Controller IP is Empty\u0027)}"},{"line_number":80,"context_line":""},{"line_number":81,"context_line":"    # Build URL to check if ODL is up before connecting OVS"},{"line_number":82,"context_line":"    $opendaylight_url \u003d \"http://${opendaylight_controller_ip}:${odl_port}/${odl_check_url}\""},{"line_number":83,"context_line":""},{"line_number":84,"context_line":"    class { \u0027::neutron::plugins::ovs::opendaylight\u0027:"},{"line_number":85,"context_line":"      tunnel_ip       \u003d\u003e $tunnel_ip,"}],"source_content_type":"text/x-puppet","patch_set":5,"id":"dada55a8_acab6288","line":82,"range":{"start_line":82,"start_character":25,"end_line":82,"end_character":30},"in_reply_to":"dada55a8_d5197b23","updated":"2016-07-25 16:56:40.000000000","message":"Done","commit_id":"9b6b1d48cf312520f3d596dd754c55fc9d3fb635"},{"author":{"_account_id":6681,"name":"Brent Eagles","email":"beagles@redhat.com","username":"beagles"},"change_message_id":"025739e2d03745d9c991ba567326fadba66a7e86","unresolved":false,"context_lines":[{"line_number":87,"context_line":"      odl_password    \u003d\u003e $odl_password,"},{"line_number":88,"context_line":"      odl_check_url   \u003d\u003e $opendaylight_url,"},{"line_number":89,"context_line":"      odl_ovsdb_iface \u003d\u003e \"tcp:${opendaylight_controller_ip}:6640\","},{"line_number":90,"context_line":"    }"},{"line_number":91,"context_line":"  }"},{"line_number":92,"context_line":"}"}],"source_content_type":"text/x-puppet","patch_set":5,"id":"dada55a8_4aa0c69f","line":90,"range":{"start_line":90,"start_character":4,"end_line":90,"end_character":5},"updated":"2016-07-25 17:47:25.000000000","message":"I think some things got a bit confused somewhere along the way. For example, the puppet apply would take care of mapping tunnel_ip, odl_username, etc. to the classes in the puppet neutron module. If that\u0027s included properly, I\u0027m not sure why you would do that here.","commit_id":"9b6b1d48cf312520f3d596dd754c55fc9d3fb635"},{"author":{"_account_id":12398,"name":"Dan Sneddon","email":"dsneddon@redhat.com","username":"dsneddon"},"change_message_id":"93843a242fa94d4010336578cfdbdd67f082689d","unresolved":false,"context_lines":[{"line_number":43,"context_line":"  $odl_port          \u003d hiera(\u0027opendaylight::odl_rest_port\u0027),"},{"line_number":44,"context_line":"  $odl_check_url     \u003d hiera(\u0027opendaylight_check_url\u0027),"},{"line_number":45,"context_line":"  $controller_ips    \u003d hiera(\u0027controller_node_ips\u0027),"},{"line_number":46,"context_line":"  $conn_proto        \u003d \u0027http\u0027,"},{"line_number":47,"context_line":"  $step              \u003d hiera(\u0027step\u0027),"},{"line_number":48,"context_line":") {"},{"line_number":49,"context_line":""}],"source_content_type":"text/x-puppet","patch_set":7,"id":"dada55a8_831709ed","line":46,"range":{"start_line":46,"start_character":2,"end_line":46,"end_character":30},"updated":"2016-07-26 18:23:03.000000000","message":"ditto","commit_id":"10ce8ad59b8a37c61130e13b854745c788ace25f"},{"author":{"_account_id":17280,"name":"Tim Rozet","email":"trozet@redhat.com","username":"trozet"},"change_message_id":"1c5987876552cf24f66e1ef3bf1b3fe189bb7da5","unresolved":false,"context_lines":[{"line_number":43,"context_line":"  $odl_port          \u003d hiera(\u0027opendaylight::odl_rest_port\u0027),"},{"line_number":44,"context_line":"  $odl_check_url     \u003d hiera(\u0027opendaylight_check_url\u0027),"},{"line_number":45,"context_line":"  $controller_ips    \u003d hiera(\u0027controller_node_ips\u0027),"},{"line_number":46,"context_line":"  $conn_proto        \u003d \u0027http\u0027,"},{"line_number":47,"context_line":"  $step              \u003d hiera(\u0027step\u0027),"},{"line_number":48,"context_line":") {"},{"line_number":49,"context_line":""}],"source_content_type":"text/x-puppet","patch_set":7,"id":"dada55a8_e99ce36b","line":46,"range":{"start_line":46,"start_character":2,"end_line":46,"end_character":30},"in_reply_to":"dada55a8_831709ed","updated":"2016-07-26 19:28:37.000000000","message":"Done","commit_id":"10ce8ad59b8a37c61130e13b854745c788ace25f"}]}
