)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":3153,"name":"Emilien Macchi","email":"emilien@redhat.com","username":"emilienm"},"change_message_id":"513e29d8bd9bfd31349fada1257427557063cda7","unresolved":false,"context_lines":[{"line_number":5,"context_line":"CommitDate: 2016-04-07 20:49:16 +1200"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Allow a replication network to be specified"},{"line_number":8,"context_line":"Closes-Bug: #1491660"},{"line_number":9,"context_line":"Change-Id: I1d1d327b7d32f37550edcc036f5ab2bbb1b37ba1"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"9a061dce_d699a87a","line":8,"updated":"2016-04-07 14:36:44.000000000","message":"please write a valid commit message (not in one line).\n\nhttps://wiki.openstack.org/wiki/GitCommitMessages\n\nThanks!","commit_id":"9ecb9379b6be196ae80a338403ad12491a2a669a"},{"author":{"_account_id":3153,"name":"Emilien Macchi","email":"emilien@redhat.com","username":"emilienm"},"change_message_id":"36b70d48627e5afbb9bedaa078e3ada4a31e93e4","unresolved":false,"context_lines":[{"line_number":5,"context_line":"CommitDate: 2016-04-08 10:42:00 +1200"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Allow a replication network to be specified"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Closes-Bug: #1491660"},{"line_number":10,"context_line":""},{"line_number":11,"context_line":"Change-Id: I1d1d327b7d32f37550edcc036f5ab2bbb1b37ba1"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"5a18252c_688af0c0","line":8,"updated":"2016-04-13 13:06:23.000000000","message":"it would be great to have a commit message explaining that does the code, it really helps reviewers.","commit_id":"e0811d310ebaafe8e50d4eb96753751a0d96baa5"}],"lib/puppet/provider/swift_ring_builder.rb":[{"author":{"_account_id":11176,"name":"Adam Vinsh","email":"adam.vinsh@viasat.com","username":"vinsh"},"change_message_id":"335b07f8653dee73d8d35b8ad6e0f2e14482e008","unresolved":false,"context_lines":[{"line_number":84,"context_line":"                :meta        \u003d\u003e $13"},{"line_number":85,"context_line":"              }"},{"line_number":86,"context_line":"            end"},{"line_number":87,"context_line":""},{"line_number":88,"context_line":"          # Swift 1.8.0 output example:"},{"line_number":89,"context_line":"          elsif row \u003d~ /^\\s*(\\d+)\\s+(\\d+)\\s+(\\d+)\\s+(\\S+)\\s+(\\d+)\\s+(\\S+)\\s+(\\d+\\.\\d+)\\s+(\\d+)\\s*((-|\\s-?)?\\d+\\.\\d+)\\s*(\\S*)/"},{"line_number":90,"context_line":""}],"source_content_type":"text/x-ruby","patch_set":4,"id":"5a18252c_84d49447","line":87,"updated":"2016-04-13 14:04:32.000000000","message":"I agree this is all that\u0027s needed as support for dedicated replication network was added in swift 1.9.0. Just making note here.","commit_id":"e0811d310ebaafe8e50d4eb96753751a0d96baa5"}],"lib/puppet/type/ring_account_device.rb":[{"author":{"_account_id":7745,"name":"Denis Egorenko","email":"degorenko@mirantis.com","username":"degorenko"},"change_message_id":"b00f144e31cd8ad8813ed5afa11330ba643f6924","unresolved":false,"context_lines":[{"line_number":13,"context_line":""},{"line_number":14,"context_line":"        repluri \u003d URI(\"http://\" + value.split(\u0027R\u0027)[1])"},{"line_number":15,"context_line":"        if [\u0027\u0027,\u0027/\u0027].include?(repluri.path)"},{"line_number":16,"context_line":"          raise(Puppet::Error, \"namevar should contain a device\")"},{"line_number":17,"context_line":"        end"},{"line_number":18,"context_line":"        IPAddr.new(address)"},{"line_number":19,"context_line":"      else"}],"source_content_type":"text/x-ruby","patch_set":2,"id":"9a061dce_9102a708","line":16,"updated":"2016-04-07 11:42:07.000000000","message":"device always contains in replication ip, if specified?","commit_id":"9ecb9379b6be196ae80a338403ad12491a2a669a"},{"author":{"_account_id":7745,"name":"Denis Egorenko","email":"degorenko@mirantis.com","username":"degorenko"},"change_message_id":"9404dc68d303e6b8fb38797df6822955e62b28ef","unresolved":false,"context_lines":[{"line_number":13,"context_line":""},{"line_number":14,"context_line":"        repluri \u003d URI(\"http://\" + value.split(\u0027R\u0027)[1])"},{"line_number":15,"context_line":"        if [\u0027\u0027,\u0027/\u0027].include?(repluri.path)"},{"line_number":16,"context_line":"          raise(Puppet::Error, \"namevar should contain a device\")"},{"line_number":17,"context_line":"        end"},{"line_number":18,"context_line":"        IPAddr.new(address)"},{"line_number":19,"context_line":"      else"}],"source_content_type":"text/x-ruby","patch_set":2,"id":"5a18252c_ff20819d","line":16,"in_reply_to":"5a18252c_d5865db8","updated":"2016-04-13 10:38:50.000000000","message":"Ok, thanks.","commit_id":"9ecb9379b6be196ae80a338403ad12491a2a669a"},{"author":{"_account_id":12613,"name":"Mark Kirkwood","email":"mark.kirkwood@gmail.com","username":"markir9"},"change_message_id":"fc18dc19e8176d2ba6c5f5170b899de8220c8a3b","unresolved":false,"context_lines":[{"line_number":13,"context_line":""},{"line_number":14,"context_line":"        repluri \u003d URI(\"http://\" + value.split(\u0027R\u0027)[1])"},{"line_number":15,"context_line":"        if [\u0027\u0027,\u0027/\u0027].include?(repluri.path)"},{"line_number":16,"context_line":"          raise(Puppet::Error, \"namevar should contain a device\")"},{"line_number":17,"context_line":"        end"},{"line_number":18,"context_line":"        IPAddr.new(address)"},{"line_number":19,"context_line":"      else"}],"source_content_type":"text/x-ruby","patch_set":2,"id":"5a18252c_d5865db8","line":16,"in_reply_to":"9a061dce_9102a708","updated":"2016-04-13 00:39:04.000000000","message":"I\u0027m not 100% clear I understand the question, but if the psuedo url passed in has a replication ip, then it looks like:\n\nip:portRreplicationip:port/device\n\nSo splitting on \u0027R\u0027 will always put the device in the replication end. If no replication ip was added my the calling module then the url is:\n\nip:port/device","commit_id":"9ecb9379b6be196ae80a338403ad12491a2a669a"}],"tests/net.pp":[{"author":{"_account_id":18795,"name":"mkarpin","email":"mkarpin@mirantis.com","username":"nkarpin"},"change_message_id":"fac0e244b0315f047d6a19f193f5e6cad3c93955","unresolved":false,"context_lines":[{"line_number":1,"context_line":"#"},{"line_number":2,"context_line":"# Example file for building a storage server with "},{"line_number":3,"context_line":"# distinct storage and replication networks"},{"line_number":4,"context_line":"#"},{"line_number":5,"context_line":"# This example creates nodes of the following roles:"}],"source_content_type":"text/x-puppet","patch_set":1,"id":"9a061dce_4d252207","line":2,"range":{"start_line":2,"start_character":49,"end_line":2,"end_character":50},"updated":"2016-04-07 08:17:42.000000000","message":"please remove this space","commit_id":"13eca0746444d5f553aae578d6ffffe68e868e87"},{"author":{"_account_id":3153,"name":"Emilien Macchi","email":"emilien@redhat.com","username":"emilienm"},"change_message_id":"36b70d48627e5afbb9bedaa078e3ada4a31e93e4","unresolved":false,"context_lines":[{"line_number":1,"context_line":"#"},{"line_number":2,"context_line":"# Example file for building a storage server with"},{"line_number":3,"context_line":"# distinct storage and replication networks"},{"line_number":4,"context_line":"#"}],"source_content_type":"text/x-puppet","patch_set":4,"id":"5a18252c_c8ca241a","line":1,"updated":"2016-04-13 13:06:23.000000000","message":"maybe we can rename the file to something more explicit, like multiple_networks.pp or something like this?","commit_id":"e0811d310ebaafe8e50d4eb96753751a0d96baa5"},{"author":{"_account_id":12613,"name":"Mark Kirkwood","email":"mark.kirkwood@gmail.com","username":"markir9"},"change_message_id":"61e3dc861a536d9cdd21190a4e6498a2d985a47a","unresolved":false,"context_lines":[{"line_number":1,"context_line":"#"},{"line_number":2,"context_line":"# Example file for building a storage server with"},{"line_number":3,"context_line":"# distinct storage and replication networks"},{"line_number":4,"context_line":"#"}],"source_content_type":"text/x-puppet","patch_set":4,"id":"5a18252c_a7d9b785","line":1,"in_reply_to":"5a18252c_c8ca241a","updated":"2016-04-13 22:42:00.000000000","message":"Done","commit_id":"e0811d310ebaafe8e50d4eb96753751a0d96baa5"},{"author":{"_account_id":11176,"name":"Adam Vinsh","email":"adam.vinsh@viasat.com","username":"vinsh"},"change_message_id":"335b07f8653dee73d8d35b8ad6e0f2e14482e008","unresolved":false,"context_lines":[{"line_number":9,"context_line":"#   * the multi-node scenario requires a puppetmaster"},{"line_number":10,"context_line":"#   * it assumes that networking is correctly configured"},{"line_number":11,"context_line":"#"},{"line_number":12,"context_line":"# This exmaple builds on site.pp, so a complete deployment"},{"line_number":13,"context_line":"# requires the addition components described there. In this"},{"line_number":14,"context_line":"# file we cover deployment of:"},{"line_number":15,"context_line":"#"}],"source_content_type":"text/x-puppet","patch_set":4,"id":"5a18252c_013eb6b7","line":12,"range":{"start_line":12,"start_character":7,"end_line":12,"end_character":14},"updated":"2016-04-13 14:04:32.000000000","message":"example","commit_id":"e0811d310ebaafe8e50d4eb96753751a0d96baa5"},{"author":{"_account_id":12613,"name":"Mark Kirkwood","email":"mark.kirkwood@gmail.com","username":"markir9"},"change_message_id":"61e3dc861a536d9cdd21190a4e6498a2d985a47a","unresolved":false,"context_lines":[{"line_number":9,"context_line":"#   * the multi-node scenario requires a puppetmaster"},{"line_number":10,"context_line":"#   * it assumes that networking is correctly configured"},{"line_number":11,"context_line":"#"},{"line_number":12,"context_line":"# This exmaple builds on site.pp, so a complete deployment"},{"line_number":13,"context_line":"# requires the addition components described there. In this"},{"line_number":14,"context_line":"# file we cover deployment of:"},{"line_number":15,"context_line":"#"}],"source_content_type":"text/x-puppet","patch_set":4,"id":"5a18252c_87f47bf2","line":12,"in_reply_to":"5a18252c_013eb6b7","updated":"2016-04-13 22:42:00.000000000","message":"Done","commit_id":"e0811d310ebaafe8e50d4eb96753751a0d96baa5"},{"author":{"_account_id":11176,"name":"Adam Vinsh","email":"adam.vinsh@viasat.com","username":"vinsh"},"change_message_id":"335b07f8653dee73d8d35b8ad6e0f2e14482e008","unresolved":false,"context_lines":[{"line_number":10,"context_line":"#   * it assumes that networking is correctly configured"},{"line_number":11,"context_line":"#"},{"line_number":12,"context_line":"# This exmaple builds on site.pp, so a complete deployment"},{"line_number":13,"context_line":"# requires the addition components described there. In this"},{"line_number":14,"context_line":"# file we cover deployment of:"},{"line_number":15,"context_line":"#"},{"line_number":16,"context_line":"# 1. storage nodes"}],"source_content_type":"text/x-puppet","patch_set":4,"id":"5a18252c_016516e0","line":13,"range":{"start_line":13,"start_character":15,"end_line":13,"end_character":23},"updated":"2016-04-13 14:04:32.000000000","message":"additional","commit_id":"e0811d310ebaafe8e50d4eb96753751a0d96baa5"},{"author":{"_account_id":12613,"name":"Mark Kirkwood","email":"mark.kirkwood@gmail.com","username":"markir9"},"change_message_id":"61e3dc861a536d9cdd21190a4e6498a2d985a47a","unresolved":false,"context_lines":[{"line_number":10,"context_line":"#   * it assumes that networking is correctly configured"},{"line_number":11,"context_line":"#"},{"line_number":12,"context_line":"# This exmaple builds on site.pp, so a complete deployment"},{"line_number":13,"context_line":"# requires the addition components described there. In this"},{"line_number":14,"context_line":"# file we cover deployment of:"},{"line_number":15,"context_line":"#"},{"line_number":16,"context_line":"# 1. storage nodes"}],"source_content_type":"text/x-puppet","patch_set":4,"id":"5a18252c_67f79ff5","line":13,"in_reply_to":"5a18252c_016516e0","updated":"2016-04-13 22:42:00.000000000","message":"Done","commit_id":"e0811d310ebaafe8e50d4eb96753751a0d96baa5"},{"author":{"_account_id":11176,"name":"Adam Vinsh","email":"adam.vinsh@viasat.com","username":"vinsh"},"change_message_id":"335b07f8653dee73d8d35b8ad6e0f2e14482e008","unresolved":false,"context_lines":[{"line_number":56,"context_line":"node /swift-storage/ {"},{"line_number":57,"context_line":""},{"line_number":58,"context_line":"  class { \u0027::swift\u0027:"},{"line_number":59,"context_line":"    # not sure how I want to deal with this shared secret"},{"line_number":60,"context_line":"    swift_hash_suffix \u003d\u003e $swift_shared_secret,"},{"line_number":61,"context_line":"    package_ensure    \u003d\u003e latest,"},{"line_number":62,"context_line":"  }"}],"source_content_type":"text/x-puppet","patch_set":4,"id":"5a18252c_81d48647","line":59,"updated":"2016-04-13 14:04:32.000000000","message":"good to store this kind of thing in eyaml in hiera","commit_id":"e0811d310ebaafe8e50d4eb96753751a0d96baa5"},{"author":{"_account_id":12613,"name":"Mark Kirkwood","email":"mark.kirkwood@gmail.com","username":"markir9"},"change_message_id":"61e3dc861a536d9cdd21190a4e6498a2d985a47a","unresolved":false,"context_lines":[{"line_number":56,"context_line":"node /swift-storage/ {"},{"line_number":57,"context_line":""},{"line_number":58,"context_line":"  class { \u0027::swift\u0027:"},{"line_number":59,"context_line":"    # not sure how I want to deal with this shared secret"},{"line_number":60,"context_line":"    swift_hash_suffix \u003d\u003e $swift_shared_secret,"},{"line_number":61,"context_line":"    package_ensure    \u003d\u003e latest,"},{"line_number":62,"context_line":"  }"}],"source_content_type":"text/x-puppet","patch_set":4,"id":"5a18252c_47ea6310","line":59,"in_reply_to":"5a18252c_81d48647","updated":"2016-04-13 22:42:00.000000000","message":"Done","commit_id":"e0811d310ebaafe8e50d4eb96753751a0d96baa5"},{"author":{"_account_id":11176,"name":"Adam Vinsh","email":"adam.vinsh@viasat.com","username":"vinsh"},"change_message_id":"335b07f8653dee73d8d35b8ad6e0f2e14482e008","unresolved":false,"context_lines":[{"line_number":104,"context_line":"    zone   \u003d\u003e $swift_zone,"},{"line_number":105,"context_line":"    weight \u003d\u003e 1,"},{"line_number":106,"context_line":"  }"},{"line_number":107,"context_line":"  @@ring_account_device { \"${swift_storage_net_ip}:6002R${swift_replication_net_ip}:6012/1\":"},{"line_number":108,"context_line":"    region \u003d\u003e $swift_region,"},{"line_number":109,"context_line":"    zone   \u003d\u003e $swift_zone,"},{"line_number":110,"context_line":"    weight \u003d\u003e 1,"}],"source_content_type":"text/x-puppet","patch_set":4,"id":"5a18252c_41eeeeec","line":107,"updated":"2016-04-13 14:04:32.000000000","message":"newline spacing inconsistent","commit_id":"e0811d310ebaafe8e50d4eb96753751a0d96baa5"},{"author":{"_account_id":12613,"name":"Mark Kirkwood","email":"mark.kirkwood@gmail.com","username":"markir9"},"change_message_id":"61e3dc861a536d9cdd21190a4e6498a2d985a47a","unresolved":false,"context_lines":[{"line_number":104,"context_line":"    zone   \u003d\u003e $swift_zone,"},{"line_number":105,"context_line":"    weight \u003d\u003e 1,"},{"line_number":106,"context_line":"  }"},{"line_number":107,"context_line":"  @@ring_account_device { \"${swift_storage_net_ip}:6002R${swift_replication_net_ip}:6012/1\":"},{"line_number":108,"context_line":"    region \u003d\u003e $swift_region,"},{"line_number":109,"context_line":"    zone   \u003d\u003e $swift_zone,"},{"line_number":110,"context_line":"    weight \u003d\u003e 1,"}],"source_content_type":"text/x-puppet","patch_set":4,"id":"5a18252c_e7e3af31","line":107,"in_reply_to":"5a18252c_41eeeeec","updated":"2016-04-13 22:42:00.000000000","message":"Done","commit_id":"e0811d310ebaafe8e50d4eb96753751a0d96baa5"}],"tests/replication_network.pp":[{"author":{"_account_id":8318,"name":"Matthew J Black","email":"mjblack@gmail.com","username":"mjblack"},"change_message_id":"e2a5b20a1d15a23d4c0bc612ab879d72e8e4ceec","unresolved":false,"context_lines":[{"line_number":72,"context_line":"  swift::storage::filter::healthcheck { $rings: }"},{"line_number":73,"context_line":""},{"line_number":74,"context_line":"  # install all swift storage servers together"},{"line_number":75,"context_line":"  # (listen on all interfaces, otherwise multiple config files per "},{"line_number":76,"context_line":"  # server are required - and this module cannot do that yet)"},{"line_number":77,"context_line":"  class { \u0027::swift::storage::all\u0027:"},{"line_number":78,"context_line":"    storage_local_net_ip \u003d\u003e \u0027::0\u0027,"}],"source_content_type":"text/x-puppet","patch_set":7,"id":"1a122d0e_43831203","line":75,"updated":"2016-04-29 05:28:17.000000000","message":"trailing space","commit_id":"e7986f1047dadc9fe2c9472f2430b7c567c59292"}]}
