)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":6525,"name":"Gilles Dubreuil","email":"gilles@redhat.com","username":"q-1illes-a"},"change_message_id":"dc5125e127dfff467a9ee4fbbe90acfa0e911a15","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Sofer Athlan-Guyot \u003cchem@sathlan.org\u003e"},{"line_number":5,"context_line":"CommitDate: 2015-11-11 19:12:31 +0100"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"New provider for keystone domain configuration."},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Implements blueprint keystone-domain-configuration"},{"line_number":10,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":17,"id":"da85f559_e7e379d7","line":7,"updated":"2015-11-12 06:30:54.000000000","message":"Please add \"domain-specific configuration\" in either the title or body?\nBecause at first I got confused with a keystone_domain provider patch where this is adding the domain-specific configuration feature.","commit_id":"f1ffc46622715be806882f590453bdcceb41ee5b"},{"author":{"_account_id":8297,"name":"Sofer Athlan-Guyot","email":"sathlang@redhat.com","username":"chem"},"change_message_id":"01c9b61fcfb9271a0747fb474054750087b9f9f5","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Sofer Athlan-Guyot \u003cchem@sathlan.org\u003e"},{"line_number":5,"context_line":"CommitDate: 2015-11-11 19:12:31 +0100"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"New provider for keystone domain configuration."},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Implements blueprint keystone-domain-configuration"},{"line_number":10,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":17,"id":"da85f559_a94f7132","line":7,"in_reply_to":"da85f559_e7e379d7","updated":"2015-11-12 19:57:23.000000000","message":"Done","commit_id":"f1ffc46622715be806882f590453bdcceb41ee5b"},{"author":{"_account_id":6525,"name":"Gilles Dubreuil","email":"gilles@redhat.com","username":"q-1illes-a"},"change_message_id":"dc5125e127dfff467a9ee4fbbe90acfa0e911a15","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"New provider for keystone domain configuration."},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Implements blueprint keystone-domain-configuration"},{"line_number":10,"context_line":""},{"line_number":11,"context_line":"The keystone_config type has been refactored into a mixin to be shared"},{"line_number":12,"context_line":"by keystone_config and keystone_domain_config."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":17,"id":"da85f559_87fdcd6f","line":9,"updated":"2015-11-12 06:30:54.000000000","message":"I might have missed it but where is the blueprint (or its draft if it\u0027s under review)?","commit_id":"f1ffc46622715be806882f590453bdcceb41ee5b"},{"author":{"_account_id":8297,"name":"Sofer Athlan-Guyot","email":"sathlang@redhat.com","username":"chem"},"change_message_id":"01c9b61fcfb9271a0747fb474054750087b9f9f5","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"New provider for keystone domain configuration."},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Implements blueprint keystone-domain-configuration"},{"line_number":10,"context_line":""},{"line_number":11,"context_line":"The keystone_config type has been refactored into a mixin to be shared"},{"line_number":12,"context_line":"by keystone_config and keystone_domain_config."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":17,"id":"da85f559_a9b8d111","line":9,"in_reply_to":"da85f559_87fdcd6f","updated":"2015-11-12 19:57:23.000000000","message":"Here: https://review.openstack.org/#/c/218281/","commit_id":"f1ffc46622715be806882f590453bdcceb41ee5b"}],"examples/v3_domain_configuration.pp":[{"author":{"_account_id":6525,"name":"Gilles Dubreuil","email":"gilles@redhat.com","username":"q-1illes-a"},"change_message_id":"dc5125e127dfff467a9ee4fbbe90acfa0e911a15","unresolved":false,"context_lines":[{"line_number":23,"context_line":"  password \u003d\u003e \u0027a_big_secret\u0027,"},{"line_number":24,"context_line":"}"},{"line_number":25,"context_line":"class { \u0027::keystone::endpoint\u0027:"},{"line_number":26,"context_line":"  public_url \u003d\u003e \u0027http://127.0.0.1:5000/\u0027,"},{"line_number":27,"context_line":"  admin_url  \u003d\u003e \u0027http://127.0.0.1:35357/\u0027,"},{"line_number":28,"context_line":"}"},{"line_number":29,"context_line":""}],"source_content_type":"text/x-puppet","patch_set":17,"id":"da85f559_87b38d09","line":26,"updated":"2015-11-12 06:30:54.000000000","message":"Not a big deal but those are the default anyway. Maybe use 192.168.1.1 or something like that?","commit_id":"f1ffc46622715be806882f590453bdcceb41ee5b"},{"author":{"_account_id":8297,"name":"Sofer Athlan-Guyot","email":"sathlang@redhat.com","username":"chem"},"change_message_id":"01c9b61fcfb9271a0747fb474054750087b9f9f5","unresolved":false,"context_lines":[{"line_number":23,"context_line":"  password \u003d\u003e \u0027a_big_secret\u0027,"},{"line_number":24,"context_line":"}"},{"line_number":25,"context_line":"class { \u0027::keystone::endpoint\u0027:"},{"line_number":26,"context_line":"  public_url \u003d\u003e \u0027http://127.0.0.1:5000/\u0027,"},{"line_number":27,"context_line":"  admin_url  \u003d\u003e \u0027http://127.0.0.1:35357/\u0027,"},{"line_number":28,"context_line":"}"},{"line_number":29,"context_line":""}],"source_content_type":"text/x-puppet","patch_set":17,"id":"da85f559_78b8792a","line":26,"in_reply_to":"da85f559_87b38d09","updated":"2015-11-12 19:57:23.000000000","message":"Done","commit_id":"f1ffc46622715be806882f590453bdcceb41ee5b"}],"lib/puppet/provider/keystone_domain_config/openstack.rb":[{"author":{"_account_id":9983,"name":"Richard Megginson","email":"rmeggins@redhat.com","username":"rmeggins"},"change_message_id":"97aa835b4b6a164b009dd777899d7564681c484e","unresolved":false,"context_lines":[{"line_number":11,"context_line":"    base_dir \u003d Puppet::Resource.indirection"},{"line_number":12,"context_line":"      .find(\u0027Keystone_config/identity/domain_config_dir\u0027)[:value]"},{"line_number":13,"context_line":"    if base_dir \u003d\u003d :absent"},{"line_number":14,"context_line":"      \u0027/etc/keystone/domains\u0027"},{"line_number":15,"context_line":"    else"},{"line_number":16,"context_line":"      base_dir"},{"line_number":17,"context_line":"    end"}],"source_content_type":"text/x-ruby","patch_set":2,"id":"da20952f_8829c88b","line":14,"updated":"2015-09-03 17:00:03.000000000","message":"do you want to set @base_dir here?","commit_id":"25905cb0cfbe870af379e6c9a262949fbff23477"},{"author":{"_account_id":8297,"name":"Sofer Athlan-Guyot","email":"sathlang@redhat.com","username":"chem"},"change_message_id":"8e11d15260943bac8de2a907126cd34c642bd0f1","unresolved":false,"context_lines":[{"line_number":11,"context_line":"    base_dir \u003d Puppet::Resource.indirection"},{"line_number":12,"context_line":"      .find(\u0027Keystone_config/identity/domain_config_dir\u0027)[:value]"},{"line_number":13,"context_line":"    if base_dir \u003d\u003d :absent"},{"line_number":14,"context_line":"      \u0027/etc/keystone/domains\u0027"},{"line_number":15,"context_line":"    else"},{"line_number":16,"context_line":"      base_dir"},{"line_number":17,"context_line":"    end"}],"source_content_type":"text/x-ruby","patch_set":2,"id":"da20952f_acbe1bac","line":14,"in_reply_to":"da20952f_8829c88b","updated":"2015-09-03 18:48:36.000000000","message":"No, but It could be a caching mechanism.  For the moment I use @cache_dir only for knowing if it has been defined in the catalog.  I\u0027m afraid that using caching will open a can of worms.","commit_id":"25905cb0cfbe870af379e6c9a262949fbff23477"},{"author":{"_account_id":9983,"name":"Richard Megginson","email":"rmeggins@redhat.com","username":"rmeggins"},"change_message_id":"b9360b6ae7e42f4201be7b0dcfb95eebe2041c07","unresolved":false,"context_lines":[{"line_number":11,"context_line":"    base_dir \u003d Puppet::Resource.indirection"},{"line_number":12,"context_line":"      .find(\u0027Keystone_config/identity/domain_config_dir\u0027)[:value]"},{"line_number":13,"context_line":"    if base_dir \u003d\u003d :absent"},{"line_number":14,"context_line":"      \u0027/etc/keystone/domains\u0027"},{"line_number":15,"context_line":"    else"},{"line_number":16,"context_line":"      base_dir"},{"line_number":17,"context_line":"    end"}],"source_content_type":"text/x-ruby","patch_set":2,"id":"da20952f_4f3891a0","line":14,"in_reply_to":"da20952f_acbe1bac","updated":"2015-09-03 18:59:39.000000000","message":"Then I think we should create it as part of this patch.","commit_id":"25905cb0cfbe870af379e6c9a262949fbff23477"},{"author":{"_account_id":9983,"name":"Richard Megginson","email":"rmeggins@redhat.com","username":"rmeggins"},"change_message_id":"97aa835b4b6a164b009dd777899d7564681c484e","unresolved":false,"context_lines":[{"line_number":13,"context_line":"    if base_dir \u003d\u003d :absent"},{"line_number":14,"context_line":"      \u0027/etc/keystone/domains\u0027"},{"line_number":15,"context_line":"    else"},{"line_number":16,"context_line":"      base_dir"},{"line_number":17,"context_line":"    end"},{"line_number":18,"context_line":"  end"},{"line_number":19,"context_line":""}],"source_content_type":"text/x-ruby","patch_set":2,"id":"da20952f_edc41693","line":16,"updated":"2015-09-03 17:00:03.000000000","message":"do you want to set @base_dir here?","commit_id":"25905cb0cfbe870af379e6c9a262949fbff23477"},{"author":{"_account_id":8297,"name":"Sofer Athlan-Guyot","email":"sathlang@redhat.com","username":"chem"},"change_message_id":"8e11d15260943bac8de2a907126cd34c642bd0f1","unresolved":false,"context_lines":[{"line_number":13,"context_line":"    if base_dir \u003d\u003d :absent"},{"line_number":14,"context_line":"      \u0027/etc/keystone/domains\u0027"},{"line_number":15,"context_line":"    else"},{"line_number":16,"context_line":"      base_dir"},{"line_number":17,"context_line":"    end"},{"line_number":18,"context_line":"  end"},{"line_number":19,"context_line":""}],"source_content_type":"text/x-ruby","patch_set":2,"id":"da20952f_2ce9abb7","line":16,"in_reply_to":"da20952f_edc41693","updated":"2015-09-03 18:48:36.000000000","message":"The same.","commit_id":"25905cb0cfbe870af379e6c9a262949fbff23477"},{"author":{"_account_id":9983,"name":"Richard Megginson","email":"rmeggins@redhat.com","username":"rmeggins"},"change_message_id":"97aa835b4b6a164b009dd777899d7564681c484e","unresolved":false,"context_lines":[{"line_number":40,"context_line":"    unless self.class.base_dir_exists?"},{"line_number":41,"context_line":"      raise(Puppet::Error::OpenstackMissingDomainDir,"},{"line_number":42,"context_line":"            \"You must create the #{self.class.base_dir} directory \" \\"},{"line_number":43,"context_line":"              \u0027for keystone domain configuration.\u0027)"},{"line_number":44,"context_line":"    end"},{"line_number":45,"context_line":"    super"},{"line_number":46,"context_line":"  end"}],"source_content_type":"text/x-ruby","patch_set":2,"id":"da20952f_2d268e68","line":43,"updated":"2015-09-03 17:00:03.000000000","message":"so they need to run `mkdir -p /etc/keystone/domains` before running puppet?  Or is it that they need to have a file resource for the /etc/keystone/domains directory in their puppet manifest?","commit_id":"25905cb0cfbe870af379e6c9a262949fbff23477"},{"author":{"_account_id":9983,"name":"Richard Megginson","email":"rmeggins@redhat.com","username":"rmeggins"},"change_message_id":"b9360b6ae7e42f4201be7b0dcfb95eebe2041c07","unresolved":false,"context_lines":[{"line_number":40,"context_line":"    unless self.class.base_dir_exists?"},{"line_number":41,"context_line":"      raise(Puppet::Error::OpenstackMissingDomainDir,"},{"line_number":42,"context_line":"            \"You must create the #{self.class.base_dir} directory \" \\"},{"line_number":43,"context_line":"              \u0027for keystone domain configuration.\u0027)"},{"line_number":44,"context_line":"    end"},{"line_number":45,"context_line":"    super"},{"line_number":46,"context_line":"  end"}],"source_content_type":"text/x-ruby","patch_set":2,"id":"da20952f_8fe4693c","line":43,"in_reply_to":"da20952f_0cb14701","updated":"2015-09-03 18:59:39.000000000","message":"I think we should add this somewhere.  Preferably the first time you attempt to create an LDAP domain.\n\nAFAIK, this extra domain configuration is only needed for LDAP domains.  When you create a domain without specifying the identity source, it uses the default SQL backend.\n\nThis is what I sent you in email, and what my comment elsewhere alluded to.","commit_id":"25905cb0cfbe870af379e6c9a262949fbff23477"},{"author":{"_account_id":8297,"name":"Sofer Athlan-Guyot","email":"sathlang@redhat.com","username":"chem"},"change_message_id":"60021ae3a0a4bc1573bfe3d86ae13ae41f38d1a7","unresolved":false,"context_lines":[{"line_number":40,"context_line":"    unless self.class.base_dir_exists?"},{"line_number":41,"context_line":"      raise(Puppet::Error::OpenstackMissingDomainDir,"},{"line_number":42,"context_line":"            \"You must create the #{self.class.base_dir} directory \" \\"},{"line_number":43,"context_line":"              \u0027for keystone domain configuration.\u0027)"},{"line_number":44,"context_line":"    end"},{"line_number":45,"context_line":"    super"},{"line_number":46,"context_line":"  end"}],"source_content_type":"text/x-ruby","patch_set":2,"id":"da20952f_7d6646ee","line":43,"in_reply_to":"da20952f_1d1aaa6f","updated":"2015-09-04 17:39:40.000000000","message":"Oki rich I got it.  Been doing provider for too long.  Back to some manifest hacking.","commit_id":"25905cb0cfbe870af379e6c9a262949fbff23477"},{"author":{"_account_id":8297,"name":"Sofer Athlan-Guyot","email":"sathlang@redhat.com","username":"chem"},"change_message_id":"8e11d15260943bac8de2a907126cd34c642bd0f1","unresolved":false,"context_lines":[{"line_number":40,"context_line":"    unless self.class.base_dir_exists?"},{"line_number":41,"context_line":"      raise(Puppet::Error::OpenstackMissingDomainDir,"},{"line_number":42,"context_line":"            \"You must create the #{self.class.base_dir} directory \" \\"},{"line_number":43,"context_line":"              \u0027for keystone domain configuration.\u0027)"},{"line_number":44,"context_line":"    end"},{"line_number":45,"context_line":"    super"},{"line_number":46,"context_line":"  end"}],"source_content_type":"text/x-ruby","patch_set":2,"id":"da20952f_0cb14701","line":43,"in_reply_to":"da20952f_2d268e68","updated":"2015-09-03 18:48:36.000000000","message":"Their choice, but preferably using file {\u0027/etc/keystone/domains\u0027: ensure \u003d\u003e directory}\n\nI didn\u0027t forcibly automatically add it to the provider as I feel that this kind of \"globally unique\" resource doesn\u0027t belong here.","commit_id":"25905cb0cfbe870af379e6c9a262949fbff23477"},{"author":{"_account_id":8297,"name":"Sofer Athlan-Guyot","email":"sathlang@redhat.com","username":"chem"},"change_message_id":"8d5122d57b21612769447c7ac4ddf79b9b1c52bb","unresolved":false,"context_lines":[{"line_number":40,"context_line":"    unless self.class.base_dir_exists?"},{"line_number":41,"context_line":"      raise(Puppet::Error::OpenstackMissingDomainDir,"},{"line_number":42,"context_line":"            \"You must create the #{self.class.base_dir} directory \" \\"},{"line_number":43,"context_line":"              \u0027for keystone domain configuration.\u0027)"},{"line_number":44,"context_line":"    end"},{"line_number":45,"context_line":"    super"},{"line_number":46,"context_line":"  end"}],"source_content_type":"text/x-ruby","patch_set":2,"id":"da20952f_d1dd0315","line":43,"in_reply_to":"da20952f_8fe4693c","updated":"2015-09-04 16:58:46.000000000","message":"Sorry, maybe I misunderstand you.  Do you want me to create the directory directly from the provider ?","commit_id":"25905cb0cfbe870af379e6c9a262949fbff23477"},{"author":{"_account_id":9983,"name":"Richard Megginson","email":"rmeggins@redhat.com","username":"rmeggins"},"change_message_id":"4d1332986df8727ebfdaa1d105189ff6d6026298","unresolved":false,"context_lines":[{"line_number":40,"context_line":"    unless self.class.base_dir_exists?"},{"line_number":41,"context_line":"      raise(Puppet::Error::OpenstackMissingDomainDir,"},{"line_number":42,"context_line":"            \"You must create the #{self.class.base_dir} directory \" \\"},{"line_number":43,"context_line":"              \u0027for keystone domain configuration.\u0027)"},{"line_number":44,"context_line":"    end"},{"line_number":45,"context_line":"    super"},{"line_number":46,"context_line":"  end"}],"source_content_type":"text/x-ruby","patch_set":2,"id":"da20952f_1d1aaa6f","line":43,"in_reply_to":"da20952f_d1dd0315","updated":"2015-09-04 17:22:57.000000000","message":"No.  That should be done in a higher level, in a puppet class or resource.  When I was working on this several months ago, I had the idea to change class keystone::ldap to define keystone::ldap_backend, which would have file {\u0027/etc/keystone/domains\u0027} and set::\n\n     keystone_config {\n       \u0027identity/domain_specific_drivers_enabled\u0027: value \u003d\u003e true;\n       \u0027identity/domain_config_dir\u0027:               value \u003d\u003e \u0027/etc/keystone/domains\u0027;\n     }\n\nI\u0027m not sure what the right abstraction is, but we need some way for the user to say: ok, I\u0027m using domains, and I want to have a domain backed by ldap, so for that I need to enable domain specific drivers, I need to have directory to store my domain specific configs in, I need to say which domain is associated with this backend, and I need to pass in a bunch of ldap parameters.","commit_id":"25905cb0cfbe870af379e6c9a262949fbff23477"},{"author":{"_account_id":9983,"name":"Richard Megginson","email":"rmeggins@redhat.com","username":"rmeggins"},"change_message_id":"7ff34b2eae6f8c3301e45b72c22c2a375aed5b42","unresolved":false,"context_lines":[{"line_number":13,"context_line":"  def self.base_dir"},{"line_number":14,"context_line":"    return @base_dir if @base_dir"},{"line_number":15,"context_line":"    base_dir \u003d Puppet::Resource.indirection"},{"line_number":16,"context_line":"      .find(\u0027Keystone_config/identity/domain_config_dir\u0027)[:value]"},{"line_number":17,"context_line":"    if base_dir \u003d\u003d :absent"},{"line_number":18,"context_line":"      \u0027/etc/keystone/domains\u0027"},{"line_number":19,"context_line":"    else"}],"source_content_type":"text/x-ruby","patch_set":6,"id":"da20952f_4a6c5bd0","line":16,"updated":"2015-09-09 01:29:11.000000000","message":"I think this is an acceptable use of Puppet::Resource.indirection.find - there is really only 1 \"resource\" - the file with its hashes of sections/params/values.","commit_id":"4b2d3aa624f1719afcde4fc694f538b2dc431a42"},{"author":{"_account_id":8297,"name":"Sofer Athlan-Guyot","email":"sathlang@redhat.com","username":"chem"},"change_message_id":"56e054919670eb6d206b18dfb68875ef6ea63c3f","unresolved":false,"context_lines":[{"line_number":13,"context_line":"  def self.base_dir"},{"line_number":14,"context_line":"    return @base_dir if @base_dir"},{"line_number":15,"context_line":"    base_dir \u003d Puppet::Resource.indirection"},{"line_number":16,"context_line":"      .find(\u0027Keystone_config/identity/domain_config_dir\u0027)[:value]"},{"line_number":17,"context_line":"    if base_dir \u003d\u003d :absent"},{"line_number":18,"context_line":"      \u0027/etc/keystone/domains\u0027"},{"line_number":19,"context_line":"    else"}],"source_content_type":"text/x-ruby","patch_set":6,"id":"da20952f_03dac817","line":16,"in_reply_to":"da20952f_4a6c5bd0","updated":"2015-09-09 08:20:07.000000000","message":"Yes indeed.  It parses the file for me to check the current configuration.  Not billion of objects created :).","commit_id":"4b2d3aa624f1719afcde4fc694f538b2dc431a42"},{"author":{"_account_id":9983,"name":"Richard Megginson","email":"rmeggins@redhat.com","username":"rmeggins"},"change_message_id":"7ff34b2eae6f8c3301e45b72c22c2a375aed5b42","unresolved":false,"context_lines":[{"line_number":25,"context_line":"    catalog.resources.find do |r|"},{"line_number":26,"context_line":"      # better than is_a? here because symbol"},{"line_number":27,"context_line":"      # Puppet::Type::Keystone_config may not be defined."},{"line_number":28,"context_line":"      r.class.to_s \u003d\u003d \u0027Puppet::Type::Keystone_config\u0027 \u0026\u0026"},{"line_number":29,"context_line":"        r.name \u003d\u003d \u0027identity/domain_config_dir\u0027"},{"line_number":30,"context_line":"    end"},{"line_number":31,"context_line":"  end"}],"source_content_type":"text/x-ruby","patch_set":6,"id":"da20952f_cf2ddda9","line":28,"updated":"2015-09-09 01:29:11.000000000","message":"Why wouldn\u0027t Puppet::Type::Keystone_config be defined?  I think that\u0027s the safest way, because what if Puppet::Type::Keystone_config is subclassed and identity/domain_config_dir is defined in the subclass?\n\nWhat about using Puppet::Resource.indirection.find(\u0027Keystone_config/identity/domain_config_dir\u0027)?  Or does that not work because of the \u0027/\u0027 in the name?","commit_id":"4b2d3aa624f1719afcde4fc694f538b2dc431a42"},{"author":{"_account_id":9983,"name":"Richard Megginson","email":"rmeggins@redhat.com","username":"rmeggins"},"change_message_id":"36f37bb27f5fabe64f7a53edde6ecfd6c1b2116c","unresolved":false,"context_lines":[{"line_number":25,"context_line":"    catalog.resources.find do |r|"},{"line_number":26,"context_line":"      # better than is_a? here because symbol"},{"line_number":27,"context_line":"      # Puppet::Type::Keystone_config may not be defined."},{"line_number":28,"context_line":"      r.class.to_s \u003d\u003d \u0027Puppet::Type::Keystone_config\u0027 \u0026\u0026"},{"line_number":29,"context_line":"        r.name \u003d\u003d \u0027identity/domain_config_dir\u0027"},{"line_number":30,"context_line":"    end"},{"line_number":31,"context_line":"  end"}],"source_content_type":"text/x-ruby","patch_set":6,"id":"da20952f_7576c807","line":28,"in_reply_to":"da20952f_03e408aa","updated":"2015-09-09 15:37:05.000000000","message":"ack","commit_id":"4b2d3aa624f1719afcde4fc694f538b2dc431a42"},{"author":{"_account_id":8297,"name":"Sofer Athlan-Guyot","email":"sathlang@redhat.com","username":"chem"},"change_message_id":"56e054919670eb6d206b18dfb68875ef6ea63c3f","unresolved":false,"context_lines":[{"line_number":25,"context_line":"    catalog.resources.find do |r|"},{"line_number":26,"context_line":"      # better than is_a? here because symbol"},{"line_number":27,"context_line":"      # Puppet::Type::Keystone_config may not be defined."},{"line_number":28,"context_line":"      r.class.to_s \u003d\u003d \u0027Puppet::Type::Keystone_config\u0027 \u0026\u0026"},{"line_number":29,"context_line":"        r.name \u003d\u003d \u0027identity/domain_config_dir\u0027"},{"line_number":30,"context_line":"    end"},{"line_number":31,"context_line":"  end"}],"source_content_type":"text/x-ruby","patch_set":6,"id":"da20952f_03e408aa","line":28,"in_reply_to":"da20952f_cf2ddda9","updated":"2015-09-09 08:20:07.000000000","message":"\u003e Why wouldn\u0027t Puppet::Type::Keystone_config be defined?\n\nBecause it\u0027s also called from the type and there, this symbol is not yet defined.\n\n\u003e What about using Puppet::Resource.indirection.find\n\nBecause this check and indirection are two different beasts.  The indirection check the existing resource with a call to self.instances and create an empty object with the name set if not find.  Here I check the current catalog.  \n\nImagine that the catalog is defining something but it is not yet applied to the system. This will catch it, while indirection.find won\u0027t.","commit_id":"4b2d3aa624f1719afcde4fc694f538b2dc431a42"}],"manifests/init.pp":[{"author":{"_account_id":9060,"name":"Mike Dorman","email":"dorm@dorm.org","username":"gd-mdorman"},"change_message_id":"4cb70b2af66774eb3b17a2a15fce71da06e50504","unresolved":false,"context_lines":[{"line_number":1013,"context_line":"        mode   \u003d\u003e \u00270750\u0027,"},{"line_number":1014,"context_line":"        } -\u003e File[\u0027/etc/keystone/keystone.conf\u0027]"},{"line_number":1015,"context_line":"    }"},{"line_number":1016,"context_line":"    # Here we want the creation to fail if the user has passed thoses"},{"line_number":1017,"context_line":"    # parameter with different values.  That means that he wrongly"},{"line_number":1018,"context_line":"    # uses using_domain_config parameter."},{"line_number":1019,"context_line":"    ensure_resource("}],"source_content_type":"text/x-puppet","patch_set":9,"id":"ba15a1d1_2d2e17a5","line":1016,"updated":"2015-09-18 15:41:38.000000000","message":"Change \u0027thoses\u0027 to \u0027those\u0027","commit_id":"50b524a19915b16c660e7003f40eadd8d1f605f3"},{"author":{"_account_id":8297,"name":"Sofer Athlan-Guyot","email":"sathlang@redhat.com","username":"chem"},"change_message_id":"baf9343916ae410ba3a7fcacb2f0ac74d1461a5b","unresolved":false,"context_lines":[{"line_number":1013,"context_line":"        mode   \u003d\u003e \u00270750\u0027,"},{"line_number":1014,"context_line":"        } -\u003e File[\u0027/etc/keystone/keystone.conf\u0027]"},{"line_number":1015,"context_line":"    }"},{"line_number":1016,"context_line":"    # Here we want the creation to fail if the user has passed thoses"},{"line_number":1017,"context_line":"    # parameter with different values.  That means that he wrongly"},{"line_number":1018,"context_line":"    # uses using_domain_config parameter."},{"line_number":1019,"context_line":"    ensure_resource("}],"source_content_type":"text/x-puppet","patch_set":9,"id":"ba15a1d1_f4d99184","line":1016,"updated":"2015-09-21 14:12:18.000000000","message":"Done","commit_id":"50b524a19915b16c660e7003f40eadd8d1f605f3"},{"author":{"_account_id":8297,"name":"Sofer Athlan-Guyot","email":"sathlang@redhat.com","username":"chem"},"change_message_id":"baf9343916ae410ba3a7fcacb2f0ac74d1461a5b","unresolved":false,"context_lines":[{"line_number":1014,"context_line":"        } -\u003e File[\u0027/etc/keystone/keystone.conf\u0027]"},{"line_number":1015,"context_line":"    }"},{"line_number":1016,"context_line":"    # Here we want the creation to fail if the user has passed thoses"},{"line_number":1017,"context_line":"    # parameter with different values.  That means that he wrongly"},{"line_number":1018,"context_line":"    # uses using_domain_config parameter."},{"line_number":1019,"context_line":"    ensure_resource("},{"line_number":1020,"context_line":"      \u0027keystone_config\u0027,"}],"source_content_type":"text/x-puppet","patch_set":9,"id":"ba15a1d1_94e61543","line":1017,"updated":"2015-09-21 14:12:18.000000000","message":"\"he\" refers to \"the user\", no ?","commit_id":"50b524a19915b16c660e7003f40eadd8d1f605f3"},{"author":{"_account_id":9060,"name":"Mike Dorman","email":"dorm@dorm.org","username":"gd-mdorman"},"change_message_id":"4cb70b2af66774eb3b17a2a15fce71da06e50504","unresolved":false,"context_lines":[{"line_number":1014,"context_line":"        } -\u003e File[\u0027/etc/keystone/keystone.conf\u0027]"},{"line_number":1015,"context_line":"    }"},{"line_number":1016,"context_line":"    # Here we want the creation to fail if the user has passed thoses"},{"line_number":1017,"context_line":"    # parameter with different values.  That means that he wrongly"},{"line_number":1018,"context_line":"    # uses using_domain_config parameter."},{"line_number":1019,"context_line":"    ensure_resource("},{"line_number":1020,"context_line":"      \u0027keystone_config\u0027,"}],"source_content_type":"text/x-puppet","patch_set":9,"id":"ba15a1d1_ed1a5f7c","line":1017,"updated":"2015-09-18 15:41:38.000000000","message":"Change \u0027he\u0027 to \u0027they\u0027","commit_id":"50b524a19915b16c660e7003f40eadd8d1f605f3"},{"author":{"_account_id":3153,"name":"Emilien Macchi","email":"emilien@redhat.com","username":"emilienm"},"change_message_id":"c28e7d0256207c4ddc99ebebcbf3ee64ad4347ce","unresolved":false,"context_lines":[{"line_number":1058,"context_line":"        } -\u003e File[\u0027/etc/keystone/keystone.conf\u0027]"},{"line_number":1059,"context_line":"    }"},{"line_number":1060,"context_line":"    # Here we want the creation to fail if the user has created those"},{"line_number":1061,"context_line":"    # resources with different values. That means that he wrongly"},{"line_number":1062,"context_line":"    # uses using_domain_config parameter."},{"line_number":1063,"context_line":"    ensure_resource("},{"line_number":1064,"context_line":"      \u0027keystone_config\u0027,"}],"source_content_type":"text/x-puppet","patch_set":11,"id":"9a1a9d01_6345edb1","line":1061,"updated":"2015-10-01 14:48:44.000000000","message":"he or she? I suggest we use \"the user\".","commit_id":"d69a3419bf1b2b1b153b8b3a872099a5e00c6b8e"},{"author":{"_account_id":8297,"name":"Sofer Athlan-Guyot","email":"sathlang@redhat.com","username":"chem"},"change_message_id":"3a43ba57405f4e37f1d7b5a3da33623a556d1b01","unresolved":false,"context_lines":[{"line_number":1058,"context_line":"        } -\u003e File[\u0027/etc/keystone/keystone.conf\u0027]"},{"line_number":1059,"context_line":"    }"},{"line_number":1060,"context_line":"    # Here we want the creation to fail if the user has created those"},{"line_number":1061,"context_line":"    # resources with different values. That means that he wrongly"},{"line_number":1062,"context_line":"    # uses using_domain_config parameter."},{"line_number":1063,"context_line":"    ensure_resource("},{"line_number":1064,"context_line":"      \u0027keystone_config\u0027,"}],"source_content_type":"text/x-puppet","patch_set":11,"id":"9a1a9d01_65a96d7b","line":1061,"in_reply_to":"9a1a9d01_6345edb1","updated":"2015-10-01 16:39:50.000000000","message":"Done","commit_id":"d69a3419bf1b2b1b153b8b3a872099a5e00c6b8e"},{"author":{"_account_id":6525,"name":"Gilles Dubreuil","email":"gilles@redhat.com","username":"q-1illes-a"},"change_message_id":"dc5125e127dfff467a9ee4fbbe90acfa0e911a15","unresolved":false,"context_lines":[{"line_number":1014,"context_line":"    }"},{"line_number":1015,"context_line":"  }"},{"line_number":1016,"context_line":"  if $using_domain_config {"},{"line_number":1017,"context_line":"    $domain_dir \u003d \u0027/etc/keystone/domains\u0027"},{"line_number":1018,"context_line":"    # Better than ensure resource.  We don\u0027t want to conflict with any"},{"line_number":1019,"context_line":"    # user definition even if they don\u0027t match exactly our parameters."},{"line_number":1020,"context_line":"    # The error catching mechanism in the provider will remind them if"}],"source_content_type":"text/x-puppet","patch_set":17,"id":"da85f559_3040d806","line":1017,"updated":"2015-11-12 06:30:54.000000000","message":"Could we use a parameter instead of an hard-coded value?","commit_id":"f1ffc46622715be806882f590453bdcceb41ee5b"},{"author":{"_account_id":8297,"name":"Sofer Athlan-Guyot","email":"sathlang@redhat.com","username":"chem"},"change_message_id":"01c9b61fcfb9271a0747fb474054750087b9f9f5","unresolved":false,"context_lines":[{"line_number":1014,"context_line":"    }"},{"line_number":1015,"context_line":"  }"},{"line_number":1016,"context_line":"  if $using_domain_config {"},{"line_number":1017,"context_line":"    $domain_dir \u003d \u0027/etc/keystone/domains\u0027"},{"line_number":1018,"context_line":"    # Better than ensure resource.  We don\u0027t want to conflict with any"},{"line_number":1019,"context_line":"    # user definition even if they don\u0027t match exactly our parameters."},{"line_number":1020,"context_line":"    # The error catching mechanism in the provider will remind them if"}],"source_content_type":"text/x-puppet","patch_set":17,"id":"da85f559_18adad9a","line":1017,"in_reply_to":"da85f559_3040d806","updated":"2015-11-12 19:57:23.000000000","message":"I was a little lazy on this one.\n\nDone.","commit_id":"f1ffc46622715be806882f590453bdcceb41ee5b"},{"author":{"_account_id":6525,"name":"Gilles Dubreuil","email":"gilles@redhat.com","username":"q-1illes-a"},"change_message_id":"dc5125e127dfff467a9ee4fbbe90acfa0e911a15","unresolved":false,"context_lines":[{"line_number":1030,"context_line":"    }"},{"line_number":1031,"context_line":"    # Here we want the creation to fail if the user has created those"},{"line_number":1032,"context_line":"    # resources with different values. That means that the user"},{"line_number":1033,"context_line":"    # wrongly uses using_domain_config parameter."},{"line_number":1034,"context_line":"    ensure_resource("},{"line_number":1035,"context_line":"      \u0027keystone_config\u0027,"},{"line_number":1036,"context_line":"      \u0027identity/domain_specific_drivers_enabled\u0027,"}],"source_content_type":"text/x-puppet","patch_set":17,"id":"da85f559_50b6bcf9","line":1033,"updated":"2015-11-12 06:30:54.000000000","message":"What other values? That doesn\u0027t make sense to me, especially if the user provide the domain_dir param.","commit_id":"f1ffc46622715be806882f590453bdcceb41ee5b"},{"author":{"_account_id":8297,"name":"Sofer Athlan-Guyot","email":"sathlang@redhat.com","username":"chem"},"change_message_id":"01c9b61fcfb9271a0747fb474054750087b9f9f5","unresolved":false,"context_lines":[{"line_number":1030,"context_line":"    }"},{"line_number":1031,"context_line":"    # Here we want the creation to fail if the user has created those"},{"line_number":1032,"context_line":"    # resources with different values. That means that the user"},{"line_number":1033,"context_line":"    # wrongly uses using_domain_config parameter."},{"line_number":1034,"context_line":"    ensure_resource("},{"line_number":1035,"context_line":"      \u0027keystone_config\u0027,"},{"line_number":1036,"context_line":"      \u0027identity/domain_specific_drivers_enabled\u0027,"}],"source_content_type":"text/x-puppet","patch_set":17,"id":"da85f559_58a7b5bc","line":1033,"in_reply_to":"da85f559_50b6bcf9","updated":"2015-11-12 19:57:23.000000000","message":"In my mind, this is to prevent the user for adding some stupid like\nkeystone_config { \u0027identity/domain_specific_drivers_enabled\u0027: value \u003d\u003e \u0027blah\u0027 }\n\nor \n\nkeystone_config { \u0027identity/domain_config_dir\u0027: value \u003d\u003e \u0027somewhere/else\u0027 }\n\nIt\u0027s just a pedantic check, but may be useful.","commit_id":"f1ffc46622715be806882f590453bdcceb41ee5b"},{"author":{"_account_id":6525,"name":"Gilles Dubreuil","email":"gilles@redhat.com","username":"q-1illes-a"},"change_message_id":"8d76791a1ef7fada29c483b455f525e8fa481b8c","unresolved":false,"context_lines":[{"line_number":1030,"context_line":"    }"},{"line_number":1031,"context_line":"    # Here we want the creation to fail if the user has created those"},{"line_number":1032,"context_line":"    # resources with different values. That means that the user"},{"line_number":1033,"context_line":"    # wrongly uses using_domain_config parameter."},{"line_number":1034,"context_line":"    ensure_resource("},{"line_number":1035,"context_line":"      \u0027keystone_config\u0027,"},{"line_number":1036,"context_line":"      \u0027identity/domain_specific_drivers_enabled\u0027,"}],"source_content_type":"text/x-puppet","patch_set":17,"id":"ba8a016a_b3122cb3","line":1033,"in_reply_to":"da85f559_58a7b5bc","updated":"2015-11-17 05:49:17.000000000","message":"Fair enough!","commit_id":"f1ffc46622715be806882f590453bdcceb41ee5b"},{"author":{"_account_id":7423,"name":"Cody Herriges","email":"cody@herriges.org","username":"ody"},"change_message_id":"ac6aa7cdd654ad5b00792a41a50b221bdefd8778","unresolved":false,"context_lines":[{"line_number":442,"context_line":"#   Defaults to $::os_service_default."},{"line_number":443,"context_line":"#"},{"line_number":444,"context_line":"# [*using_domain_config*]"},{"line_number":445,"context_line":"#   (optional) Eases the use of the keystone_domain_config provider."},{"line_number":446,"context_line":"#   It ensures that a directory for holding the domain configuration is present"},{"line_number":447,"context_line":"#   and the associated configuration in keystone.conf is set up right."},{"line_number":448,"context_line":"#   Defaults to false"}],"source_content_type":"text/x-puppet","patch_set":24,"id":"7a740942_18f29f06","line":445,"updated":"2015-12-08 16:50:49.000000000","message":"A little nitpick but could you please use the words \"resource type\" instead of \"provider\".  People unfamiliar with the type/provider system would probably over look it but even after reviewing all the ruby code I read that and questioned what I had just reviewed.  My brain tried to momentarily convince me that this was actually a new provider for the keystone_config type.","commit_id":"6ea318d7f5ebcab8094b86f0351e2d6397345cab"},{"author":{"_account_id":8297,"name":"Sofer Athlan-Guyot","email":"sathlang@redhat.com","username":"chem"},"change_message_id":"04fc7f63cbb8439ed4458f76206426517a9d51f8","unresolved":false,"context_lines":[{"line_number":442,"context_line":"#   Defaults to $::os_service_default."},{"line_number":443,"context_line":"#"},{"line_number":444,"context_line":"# [*using_domain_config*]"},{"line_number":445,"context_line":"#   (optional) Eases the use of the keystone_domain_config provider."},{"line_number":446,"context_line":"#   It ensures that a directory for holding the domain configuration is present"},{"line_number":447,"context_line":"#   and the associated configuration in keystone.conf is set up right."},{"line_number":448,"context_line":"#   Defaults to false"}],"source_content_type":"text/x-puppet","patch_set":24,"id":"5a710552_564be5b0","line":445,"in_reply_to":"7a740942_18f29f06","updated":"2015-12-14 19:59:42.000000000","message":"Well fair enough, I think the clearer the better.  Thanks.\nDone.","commit_id":"6ea318d7f5ebcab8094b86f0351e2d6397345cab"}],"spec/acceptance/basic_keystone_spec.rb":[{"author":{"_account_id":8297,"name":"Sofer Athlan-Guyot","email":"sathlang@redhat.com","username":"chem"},"change_message_id":"0dad545c2c7955c5fdc5f160406f860b3b76bdf7","unresolved":false,"context_lines":[{"line_number":284,"context_line":"      apply_manifest(pp, :catch_changes \u003d\u003e true)"},{"line_number":285,"context_line":"    end"},{"line_number":286,"context_line":"  end"},{"line_number":287,"context_line":""},{"line_number":288,"context_line":"  context \u0027#keystone_domain_config\u0027 do"},{"line_number":289,"context_line":"    shared_examples \u0027puppet_apply_success\u0027 do"},{"line_number":290,"context_line":"      it \u0027should apply the manifest without error\u0027 do"}],"source_content_type":"text/x-ruby","patch_set":14,"id":"fa80f949_b60722c9","line":287,"updated":"2015-11-06 09:57:47.000000000","message":"See comment in wsgi acceptance test.","commit_id":"dbb8865396a5467b26969d87934659c41c118566"}],"spec/acceptance/keystone_wsgi_apache_spec.rb":[{"author":{"_account_id":8297,"name":"Sofer Athlan-Guyot","email":"sathlang@redhat.com","username":"chem"},"change_message_id":"0dad545c2c7955c5fdc5f160406f860b3b76bdf7","unresolved":false,"context_lines":[{"line_number":280,"context_line":"      apply_manifest(pp, :catch_changes \u003d\u003e true)"},{"line_number":281,"context_line":"    end"},{"line_number":282,"context_line":"  end"},{"line_number":283,"context_line":""},{"line_number":284,"context_line":"  context \u0027#keystone_domain_config\u0027 do"},{"line_number":285,"context_line":"    shared_examples \u0027puppet_apply_success\u0027 do"},{"line_number":286,"context_line":"      it \u0027should apply the manifest without error\u0027 do"}],"source_content_type":"text/x-ruby","patch_set":14,"id":"fa80f949_b6d2c25a","line":283,"updated":"2015-11-06 09:57:47.000000000","message":"Those are more \"unit\" tests that acceptance test.  There should be a dedicated acceptance test file with multiple domain backend (ldap).  I let them here now, to make sur that it works, but I think this should be removed in favor of a dedicated one.","commit_id":"dbb8865396a5467b26969d87934659c41c118566"}],"spec/unit/provider/keystone_domain_config/openstack_spec.rb":[{"author":{"_account_id":6525,"name":"Gilles Dubreuil","email":"gilles@redhat.com","username":"q-1illes-a"},"change_message_id":"dc5125e127dfff467a9ee4fbbe90acfa0e911a15","unresolved":false,"context_lines":[{"line_number":77,"context_line":"        expect { @domain_provider.create }.not_to raise_error"},{"line_number":78,"context_line":"        expect(File).to exist(\u0027/tmp/keystone.bar.conf\u0027)"},{"line_number":79,"context_line":"        expect(File.read(\u0027/tmp/keystone.bar.conf\u0027))"},{"line_number":80,"context_line":"          .to eq(\u003c\u003c-EOC"},{"line_number":81,"context_line":""},{"line_number":82,"context_line":"[dude]"},{"line_number":83,"context_line":"foo\u003dblahh"}],"source_content_type":"text/x-ruby","patch_set":17,"id":"da85f559_5000fc65","line":80,"updated":"2015-11-12 06:30:54.000000000","message":"Don\u0027t understand the advantage of changing the style here and below from what we\u0027ve been using so far. No need for here document.","commit_id":"f1ffc46622715be806882f590453bdcceb41ee5b"},{"author":{"_account_id":8297,"name":"Sofer Athlan-Guyot","email":"sathlang@redhat.com","username":"chem"},"change_message_id":"01c9b61fcfb9271a0747fb474054750087b9f9f5","unresolved":false,"context_lines":[{"line_number":77,"context_line":"        expect { @domain_provider.create }.not_to raise_error"},{"line_number":78,"context_line":"        expect(File).to exist(\u0027/tmp/keystone.bar.conf\u0027)"},{"line_number":79,"context_line":"        expect(File.read(\u0027/tmp/keystone.bar.conf\u0027))"},{"line_number":80,"context_line":"          .to eq(\u003c\u003c-EOC"},{"line_number":81,"context_line":""},{"line_number":82,"context_line":"[dude]"},{"line_number":83,"context_line":"foo\u003dblahh"}],"source_content_type":"text/x-ruby","patch_set":17,"id":"da85f559_9b2e778a","line":80,"in_reply_to":"da85f559_5000fc65","updated":"2015-11-12 19:57:23.000000000","message":"Done","commit_id":"f1ffc46622715be806882f590453bdcceb41ee5b"}]}
