)]}'
{"lib/puppet/provider/keystone_trust/openstack.rb":[{"author":{"_account_id":9983,"name":"Richard Megginson","email":"rmeggins@redhat.com","username":"rmeggins"},"change_message_id":"49abec50f94dd13bfd03498df3a046dc03eafc0c","unresolved":false,"context_lines":[{"line_number":22,"context_line":"        :ensure        \u003d\u003e :present,"},{"line_number":23,"context_line":"        :expiration    \u003d\u003e expires(trust[:expires_at]),"},{"line_number":24,"context_line":"        :impersonation \u003d\u003e trust[:impersonation],"},{"line_number":25,"context_line":"        :name          \u003d\u003e trust[:id],"},{"line_number":26,"context_line":"        :project       \u003d\u003e trust[:project_id],"},{"line_number":27,"context_line":"        :trustor_user  \u003d\u003e trust[:trustor_user_id],"},{"line_number":28,"context_line":"        :trustee_user  \u003d\u003e trust[:trustee_user_id]"}],"source_content_type":"text/x-ruby","patch_set":4,"id":"9a41bdd9_c7175743","line":25,"updated":"2015-07-16 00:29:50.000000000","message":"How will this match the name of the resource in a manifest?  For example, if I have::\n\n    keystone_trust { \u0027some name because names do not matter\u0027: ... }\n\nHow will the code in self.instances and self.prefetch know which existing trust that refers to?","commit_id":"616e07e6359710ecb2d0e02bd40cd90a3d423ddf"},{"author":{"_account_id":6525,"name":"Gilles Dubreuil","email":"gilles@redhat.com","username":"q-1illes-a"},"change_message_id":"b0150dd6b559c1858397cd48c066a4ad0a5c2360","unresolved":false,"context_lines":[{"line_number":22,"context_line":"        :ensure        \u003d\u003e :present,"},{"line_number":23,"context_line":"        :expiration    \u003d\u003e expires(trust[:expires_at]),"},{"line_number":24,"context_line":"        :impersonation \u003d\u003e trust[:impersonation],"},{"line_number":25,"context_line":"        :name          \u003d\u003e trust[:id],"},{"line_number":26,"context_line":"        :project       \u003d\u003e trust[:project_id],"},{"line_number":27,"context_line":"        :trustor_user  \u003d\u003e trust[:trustor_user_id],"},{"line_number":28,"context_line":"        :trustee_user  \u003d\u003e trust[:trustee_user_id]"}],"source_content_type":"text/x-ruby","patch_set":4,"id":"9a41bdd9_07c3ff89","line":25,"in_reply_to":"9a41bdd9_c7175743","updated":"2015-07-16 01:25:42.000000000","message":"The name gets replaced with the id, so once created the id is the name to use for manipulating existing resource.\n\n I initially tried using combos such as trustor_user/trustee_user/project but that\u0027s really bad, the thing here there is no legacy burden, so better just use the id, which guarantee uniqueness of the resource.\n\nObviously that\u0027s not idempotent","commit_id":"616e07e6359710ecb2d0e02bd40cd90a3d423ddf"},{"author":{"_account_id":9983,"name":"Richard Megginson","email":"rmeggins@redhat.com","username":"rmeggins"},"change_message_id":"821fb42c8028495d71fe350d8259d04c687cfc0b","unresolved":false,"context_lines":[{"line_number":22,"context_line":"        :ensure        \u003d\u003e :present,"},{"line_number":23,"context_line":"        :expiration    \u003d\u003e expires(trust[:expires_at]),"},{"line_number":24,"context_line":"        :impersonation \u003d\u003e trust[:impersonation],"},{"line_number":25,"context_line":"        :name          \u003d\u003e trust[:id],"},{"line_number":26,"context_line":"        :project       \u003d\u003e trust[:project_id],"},{"line_number":27,"context_line":"        :trustor_user  \u003d\u003e trust[:trustor_user_id],"},{"line_number":28,"context_line":"        :trustee_user  \u003d\u003e trust[:trustee_user_id]"}],"source_content_type":"text/x-ruby","patch_set":6,"id":"3a50d1a3_b0d43247","line":25,"updated":"2015-07-21 16:54:50.000000000","message":"I think :name and :id should be separate parameters, for now","commit_id":"4b9857b4b0bc04f18f5e5d65793eb81a47d1dddc"},{"author":{"_account_id":9983,"name":"Richard Megginson","email":"rmeggins@redhat.com","username":"rmeggins"},"change_message_id":"99f1b6c268c30101a571693d2f16312e67db4dcd","unresolved":false,"context_lines":[{"line_number":22,"context_line":"        :ensure        \u003d\u003e :present,"},{"line_number":23,"context_line":"        :expiration    \u003d\u003e expires(trust[:expires_at]),"},{"line_number":24,"context_line":"        :impersonation \u003d\u003e trust[:impersonation],"},{"line_number":25,"context_line":"        :name          \u003d\u003e trust[:id],"},{"line_number":26,"context_line":"        :project       \u003d\u003e trust[:project_id],"},{"line_number":27,"context_line":"        :trustor_user  \u003d\u003e trust[:trustor_user_id],"},{"line_number":28,"context_line":"        :trustee_user  \u003d\u003e trust[:trustee_user_id]"}],"source_content_type":"text/x-ruby","patch_set":6,"id":"3a50d1a3_30bf89ab","line":25,"in_reply_to":"3a50d1a3_3b479378","updated":"2015-07-22 14:38:45.000000000","message":"Best case, they will add an extra field for the \u0027M\u0027 release, so we will have to do something to support trusts in Kilo.","commit_id":"4b9857b4b0bc04f18f5e5d65793eb81a47d1dddc"},{"author":{"_account_id":6525,"name":"Gilles Dubreuil","email":"gilles@redhat.com","username":"q-1illes-a"},"change_message_id":"b8bcd58df85c77bcf7b95de9338c72393f88cace","unresolved":false,"context_lines":[{"line_number":22,"context_line":"        :ensure        \u003d\u003e :present,"},{"line_number":23,"context_line":"        :expiration    \u003d\u003e expires(trust[:expires_at]),"},{"line_number":24,"context_line":"        :impersonation \u003d\u003e trust[:impersonation],"},{"line_number":25,"context_line":"        :name          \u003d\u003e trust[:id],"},{"line_number":26,"context_line":"        :project       \u003d\u003e trust[:project_id],"},{"line_number":27,"context_line":"        :trustor_user  \u003d\u003e trust[:trustor_user_id],"},{"line_number":28,"context_line":"        :trustee_user  \u003d\u003e trust[:trustee_user_id]"}],"source_content_type":"text/x-ruby","patch_set":6,"id":"3a50d1a3_27576a59","line":25,"in_reply_to":"3a50d1a3_3b479378","updated":"2015-07-22 23:33:11.000000000","message":"Well since we\u0027re not going to get the extra field for now, I\u0027m using the ugly approach","commit_id":"4b9857b4b0bc04f18f5e5d65793eb81a47d1dddc"},{"author":{"_account_id":6525,"name":"Gilles Dubreuil","email":"gilles@redhat.com","username":"q-1illes-a"},"change_message_id":"35f5290ba9d166c8e2c25edbe70648eacff089e2","unresolved":false,"context_lines":[{"line_number":22,"context_line":"        :ensure        \u003d\u003e :present,"},{"line_number":23,"context_line":"        :expiration    \u003d\u003e expires(trust[:expires_at]),"},{"line_number":24,"context_line":"        :impersonation \u003d\u003e trust[:impersonation],"},{"line_number":25,"context_line":"        :name          \u003d\u003e trust[:id],"},{"line_number":26,"context_line":"        :project       \u003d\u003e trust[:project_id],"},{"line_number":27,"context_line":"        :trustor_user  \u003d\u003e trust[:trustor_user_id],"},{"line_number":28,"context_line":"        :trustee_user  \u003d\u003e trust[:trustee_user_id]"}],"source_content_type":"text/x-ruby","patch_set":6,"id":"3a50d1a3_3b479378","line":25,"in_reply_to":"3a50d1a3_b0d43247","updated":"2015-07-22 00:32:45.000000000","message":"I\u0027m waiting to get some visibility on the keystone team help with providing an extra field.","commit_id":"4b9857b4b0bc04f18f5e5d65793eb81a47d1dddc"},{"author":{"_account_id":9983,"name":"Richard Megginson","email":"rmeggins@redhat.com","username":"rmeggins"},"change_message_id":"821fb42c8028495d71fe350d8259d04c687cfc0b","unresolved":false,"context_lines":[{"line_number":26,"context_line":"        :project       \u003d\u003e trust[:project_id],"},{"line_number":27,"context_line":"        :trustor_user  \u003d\u003e trust[:trustor_user_id],"},{"line_number":28,"context_line":"        :trustee_user  \u003d\u003e trust[:trustee_user_id]"},{"line_number":29,"context_line":"      )"},{"line_number":30,"context_line":"    end"},{"line_number":31,"context_line":"  end"},{"line_number":32,"context_line":""}],"source_content_type":"text/x-ruby","patch_set":6,"id":"3a50d1a3_10c6469a","line":29,"updated":"2015-07-21 16:54:50.000000000","message":"What about the `:roles`?","commit_id":"4b9857b4b0bc04f18f5e5d65793eb81a47d1dddc"},{"author":{"_account_id":6525,"name":"Gilles Dubreuil","email":"gilles@redhat.com","username":"q-1illes-a"},"change_message_id":"35f5290ba9d166c8e2c25edbe70648eacff089e2","unresolved":false,"context_lines":[{"line_number":26,"context_line":"        :project       \u003d\u003e trust[:project_id],"},{"line_number":27,"context_line":"        :trustor_user  \u003d\u003e trust[:trustor_user_id],"},{"line_number":28,"context_line":"        :trustee_user  \u003d\u003e trust[:trustee_user_id]"},{"line_number":29,"context_line":"      )"},{"line_number":30,"context_line":"    end"},{"line_number":31,"context_line":"  end"},{"line_number":32,"context_line":""}],"source_content_type":"text/x-ruby","patch_set":6,"id":"3a50d1a3_fb6ccb36","line":29,"in_reply_to":"3a50d1a3_10c6469a","updated":"2015-07-22 00:32:45.000000000","message":"Yes, that\u0027s next step","commit_id":"4b9857b4b0bc04f18f5e5d65793eb81a47d1dddc"},{"author":{"_account_id":6525,"name":"Gilles Dubreuil","email":"gilles@redhat.com","username":"q-1illes-a"},"change_message_id":"b8bcd58df85c77bcf7b95de9338c72393f88cace","unresolved":false,"context_lines":[{"line_number":26,"context_line":"        :project       \u003d\u003e trust[:project_id],"},{"line_number":27,"context_line":"        :trustor_user  \u003d\u003e trust[:trustor_user_id],"},{"line_number":28,"context_line":"        :trustee_user  \u003d\u003e trust[:trustee_user_id]"},{"line_number":29,"context_line":"      )"},{"line_number":30,"context_line":"    end"},{"line_number":31,"context_line":"  end"},{"line_number":32,"context_line":""}],"source_content_type":"text/x-ruby","patch_set":6,"id":"3a50d1a3_4754f651","line":29,"in_reply_to":"3a50d1a3_fb6ccb36","updated":"2015-07-22 23:33:11.000000000","message":"Done","commit_id":"4b9857b4b0bc04f18f5e5d65793eb81a47d1dddc"},{"author":{"_account_id":9983,"name":"Richard Megginson","email":"rmeggins@redhat.com","username":"rmeggins"},"change_message_id":"99f1b6c268c30101a571693d2f16312e67db4dcd","unresolved":false,"context_lines":[{"line_number":76,"context_line":"      properties \u003c\u003c \u0027--expiration\u0027 \u003c\u003c resource[:expiration]"},{"line_number":77,"context_line":"    end"},{"line_number":78,"context_line":""},{"line_number":79,"context_line":"    if resource[:impersonation] \u0026\u0026 resource[:impersonation] \u003d\u003d true"},{"line_number":80,"context_line":"      properties \u003c\u003c \u0027--impersonate\u0027"},{"line_number":81,"context_line":"    end"},{"line_number":82,"context_line":""}],"source_content_type":"text/x-ruby","patch_set":6,"id":"3a50d1a3_f064c1b9","line":79,"updated":"2015-07-22 14:38:45.000000000","message":"resource[:impersonation] is already a boolean, so the \u0026\u0026 clause is unnecessary","commit_id":"4b9857b4b0bc04f18f5e5d65793eb81a47d1dddc"},{"author":{"_account_id":9983,"name":"Richard Megginson","email":"rmeggins@redhat.com","username":"rmeggins"},"change_message_id":"821fb42c8028495d71fe350d8259d04c687cfc0b","unresolved":false,"context_lines":[{"line_number":91,"context_line":"    if resource[:trustor_domain]"},{"line_number":92,"context_line":"      properties \u003c\u003c \u0027--trustor_domain\u0027 \u003c\u003c resource[:trustor_domain]"},{"line_number":93,"context_line":"    end"},{"line_number":94,"context_line":""},{"line_number":95,"context_line":"    self.class.request(\u0027trust\u0027, \u0027create\u0027, properties)"},{"line_number":96,"context_line":"    @property_hash[:ensure] \u003d :present"},{"line_number":97,"context_line":"  end"}],"source_content_type":"text/x-ruby","patch_set":6,"id":"3a50d1a3_506feec4","line":94,"updated":"2015-07-21 16:54:50.000000000","message":"All of the user and project parameters may be specified as \"name::domain_name\".  For example::\n\n    trustee_name, trustee_domain \u003d self.class.name_and_domain(resource[:trustee_user], resource[:trustee_domain])","commit_id":"4b9857b4b0bc04f18f5e5d65793eb81a47d1dddc"},{"author":{"_account_id":6525,"name":"Gilles Dubreuil","email":"gilles@redhat.com","username":"q-1illes-a"},"change_message_id":"35f5290ba9d166c8e2c25edbe70648eacff089e2","unresolved":false,"context_lines":[{"line_number":91,"context_line":"    if resource[:trustor_domain]"},{"line_number":92,"context_line":"      properties \u003c\u003c \u0027--trustor_domain\u0027 \u003c\u003c resource[:trustor_domain]"},{"line_number":93,"context_line":"    end"},{"line_number":94,"context_line":""},{"line_number":95,"context_line":"    self.class.request(\u0027trust\u0027, \u0027create\u0027, properties)"},{"line_number":96,"context_line":"    @property_hash[:ensure] \u003d :present"},{"line_number":97,"context_line":"  end"}],"source_content_type":"text/x-ruby","patch_set":6,"id":"3a50d1a3_9b04a718","line":94,"in_reply_to":"3a50d1a3_506feec4","updated":"2015-07-22 00:32:45.000000000","message":"I suppose you mean user and domain parameters?","commit_id":"4b9857b4b0bc04f18f5e5d65793eb81a47d1dddc"},{"author":{"_account_id":9983,"name":"Richard Megginson","email":"rmeggins@redhat.com","username":"rmeggins"},"change_message_id":"99f1b6c268c30101a571693d2f16312e67db4dcd","unresolved":false,"context_lines":[{"line_number":91,"context_line":"    if resource[:trustor_domain]"},{"line_number":92,"context_line":"      properties \u003c\u003c \u0027--trustor_domain\u0027 \u003c\u003c resource[:trustor_domain]"},{"line_number":93,"context_line":"    end"},{"line_number":94,"context_line":""},{"line_number":95,"context_line":"    self.class.request(\u0027trust\u0027, \u0027create\u0027, properties)"},{"line_number":96,"context_line":"    @property_hash[:ensure] \u003d :present"},{"line_number":97,"context_line":"  end"}],"source_content_type":"text/x-ruby","patch_set":6,"id":"3a50d1a3_cdbd7269","line":94,"in_reply_to":"3a50d1a3_9b04a718","updated":"2015-07-22 14:38:45.000000000","message":"I mean - trustee_user may be specified as \"trusteeusername::domainname\" - trustor_user as \"trustorusername::domainname\" - project as \"projectname::domainname\".  You will have to use `self.class.name_and_domain` to get the \u0027real\u0027 name and domain.","commit_id":"4b9857b4b0bc04f18f5e5d65793eb81a47d1dddc"},{"author":{"_account_id":6525,"name":"Gilles Dubreuil","email":"gilles@redhat.com","username":"q-1illes-a"},"change_message_id":"b8bcd58df85c77bcf7b95de9338c72393f88cace","unresolved":false,"context_lines":[{"line_number":91,"context_line":"    if resource[:trustor_domain]"},{"line_number":92,"context_line":"      properties \u003c\u003c \u0027--trustor_domain\u0027 \u003c\u003c resource[:trustor_domain]"},{"line_number":93,"context_line":"    end"},{"line_number":94,"context_line":""},{"line_number":95,"context_line":"    self.class.request(\u0027trust\u0027, \u0027create\u0027, properties)"},{"line_number":96,"context_line":"    @property_hash[:ensure] \u003d :present"},{"line_number":97,"context_line":"  end"}],"source_content_type":"text/x-ruby","patch_set":6,"id":"3a50d1a3_78df213a","line":94,"in_reply_to":"3a50d1a3_cdbd7269","updated":"2015-07-22 23:33:11.000000000","message":"That\u0027s what I figured out afterwards, on it.","commit_id":"4b9857b4b0bc04f18f5e5d65793eb81a47d1dddc"},{"author":{"_account_id":9983,"name":"Richard Megginson","email":"rmeggins@redhat.com","username":"rmeggins"},"change_message_id":"821fb42c8028495d71fe350d8259d04c687cfc0b","unresolved":false,"context_lines":[{"line_number":97,"context_line":"  end"},{"line_number":98,"context_line":""},{"line_number":99,"context_line":"  def destroy"},{"line_number":100,"context_line":"    self.class.request(\u0027trust\u0027, \u0027delete\u0027, @property_hash[:name])"},{"line_number":101,"context_line":"    @property_hash.clear"},{"line_number":102,"context_line":"  end"},{"line_number":103,"context_line":""}],"source_content_type":"text/x-ruby","patch_set":6,"id":"3a50d1a3_50a60e11","line":100,"updated":"2015-07-21 16:54:50.000000000","message":"should use the :id, and :name and :id should be separate parameters","commit_id":"4b9857b4b0bc04f18f5e5d65793eb81a47d1dddc"},{"author":{"_account_id":6525,"name":"Gilles Dubreuil","email":"gilles@redhat.com","username":"q-1illes-a"},"change_message_id":"b8bcd58df85c77bcf7b95de9338c72393f88cace","unresolved":false,"context_lines":[{"line_number":97,"context_line":"  end"},{"line_number":98,"context_line":""},{"line_number":99,"context_line":"  def destroy"},{"line_number":100,"context_line":"    self.class.request(\u0027trust\u0027, \u0027delete\u0027, @property_hash[:name])"},{"line_number":101,"context_line":"    @property_hash.clear"},{"line_number":102,"context_line":"  end"},{"line_number":103,"context_line":""}],"source_content_type":"text/x-ruby","patch_set":6,"id":"3a50d1a3_47db96ec","line":100,"in_reply_to":"3a50d1a3_3b3eb3da","updated":"2015-07-22 23:33:11.000000000","message":"Done","commit_id":"4b9857b4b0bc04f18f5e5d65793eb81a47d1dddc"},{"author":{"_account_id":6525,"name":"Gilles Dubreuil","email":"gilles@redhat.com","username":"q-1illes-a"},"change_message_id":"35f5290ba9d166c8e2c25edbe70648eacff089e2","unresolved":false,"context_lines":[{"line_number":97,"context_line":"  end"},{"line_number":98,"context_line":""},{"line_number":99,"context_line":"  def destroy"},{"line_number":100,"context_line":"    self.class.request(\u0027trust\u0027, \u0027delete\u0027, @property_hash[:name])"},{"line_number":101,"context_line":"    @property_hash.clear"},{"line_number":102,"context_line":"  end"},{"line_number":103,"context_line":""}],"source_content_type":"text/x-ruby","patch_set":6,"id":"3a50d1a3_3b3eb3da","line":100,"in_reply_to":"3a50d1a3_50a60e11","updated":"2015-07-22 00:32:45.000000000","message":"Yes, that comes from a older/wrong copy paste, thanks","commit_id":"4b9857b4b0bc04f18f5e5d65793eb81a47d1dddc"},{"author":{"_account_id":9983,"name":"Richard Megginson","email":"rmeggins@redhat.com","username":"rmeggins"},"change_message_id":"821fb42c8028495d71fe350d8259d04c687cfc0b","unresolved":false,"context_lines":[{"line_number":138,"context_line":"  end"},{"line_number":139,"context_line":""},{"line_number":140,"context_line":"  def roles"},{"line_number":141,"context_line":"    @property_hash[:role]"},{"line_number":142,"context_line":"  end"},{"line_number":143,"context_line":""},{"line_number":144,"context_line":"  def roles\u003d(value)"}],"source_content_type":"text/x-ruby","patch_set":6,"id":"3a50d1a3_d0e8de12","line":141,"updated":"2015-07-21 16:54:50.000000000","message":":roles","commit_id":"4b9857b4b0bc04f18f5e5d65793eb81a47d1dddc"},{"author":{"_account_id":6525,"name":"Gilles Dubreuil","email":"gilles@redhat.com","username":"q-1illes-a"},"change_message_id":"35f5290ba9d166c8e2c25edbe70648eacff089e2","unresolved":false,"context_lines":[{"line_number":138,"context_line":"  end"},{"line_number":139,"context_line":""},{"line_number":140,"context_line":"  def roles"},{"line_number":141,"context_line":"    @property_hash[:role]"},{"line_number":142,"context_line":"  end"},{"line_number":143,"context_line":""},{"line_number":144,"context_line":"  def roles\u003d(value)"}],"source_content_type":"text/x-ruby","patch_set":6,"id":"3a50d1a3_bb5de316","line":141,"in_reply_to":"3a50d1a3_d0e8de12","updated":"2015-07-22 00:32:45.000000000","message":"Thanks","commit_id":"4b9857b4b0bc04f18f5e5d65793eb81a47d1dddc"},{"author":{"_account_id":9983,"name":"Richard Megginson","email":"rmeggins@redhat.com","username":"rmeggins"},"change_message_id":"99c989d19ace246e079cbdbf3a55ebeb6618b119","unresolved":false,"context_lines":[{"line_number":49,"context_line":"    expiration \u003d expiration_set(trust[:expires_at])"},{"line_number":50,"context_line":"    expiration.gsub!(/\\.[\\d]*Z$/,\u0027\u0027)"},{"line_number":51,"context_line":"    impersonation \u003d trust[:impersonation]"},{"line_number":52,"context_line":"    return \"#{trustor_user}::#{trustor_domain},#{trustee_user}::#{trustee_domain},#{project}::#{project_domain},#{roles},#{expiration},#{impersonation}\""},{"line_number":53,"context_line":"  end"},{"line_number":54,"context_line":""},{"line_number":55,"context_line":"  def self.instances"}],"source_content_type":"text/x-ruby","patch_set":8,"id":"3a50d1a3_ff29349c","line":52,"updated":"2015-07-31 20:01:16.000000000","message":"We cannot always put \"::domain\" for the name, because that might not be the name used in the manifest.  For example, what if the manifest has::\n\n    keystone_user { \u0027trustor\u0027: ...}\n    keystone_user { \u0027trustee\u0027: ...}\n    keystone_tenant { \u0027project\u0027: ...}\n    keystone_trust { \u0027trustor,trustee,project,....\u0027: }\n\nIf this already exists, self.instances will name it \u0027trustor::default_domain,trustee::default_domain,project::default_domain,...\u0027 and self.prefetch will not match it.\n\nYou could fix this in self.prefetch by matching on trustor id, trustee id, etc. - all of the fields except name.  But then puppet resource will still return names with the domain in them.\n\nThe best way to do it would be to implement the logic in https://github.com/openstack/puppet-keystone/blob/master/lib/puppet/provider/keystone_user/openstack.rb#L212, or in the work you did in keystone_group, to create a unique short name for the resource, or a long name with the ::domain if not unique.  We may want to consider refactoring this code to make it reusable - create a function in the keystone.rb base class that can be reused by all of the subclasses.  Then you would use that function to create the trustor name, trustee name, and project name, in the exact same way that keystone_user and keystone_tenant construct names.","commit_id":"0f87d953dad50bb1d8e41754369f7ce087d269a1"},{"author":{"_account_id":6525,"name":"Gilles Dubreuil","email":"gilles@redhat.com","username":"q-1illes-a"},"change_message_id":"39d2c2f63151de908eb66b3a33be9d5048771cba","unresolved":false,"context_lines":[{"line_number":49,"context_line":"    expiration \u003d expiration_set(trust[:expires_at])"},{"line_number":50,"context_line":"    expiration.gsub!(/\\.[\\d]*Z$/,\u0027\u0027)"},{"line_number":51,"context_line":"    impersonation \u003d trust[:impersonation]"},{"line_number":52,"context_line":"    return \"#{trustor_user}::#{trustor_domain},#{trustee_user}::#{trustee_domain},#{project}::#{project_domain},#{roles},#{expiration},#{impersonation}\""},{"line_number":53,"context_line":"  end"},{"line_number":54,"context_line":""},{"line_number":55,"context_line":"  def self.instances"}],"source_content_type":"text/x-ruby","patch_set":8,"id":"1a4dcd0f_39ced65a","line":52,"in_reply_to":"1a4dcd0f_4da01bf5","updated":"2015-08-05 07:10:50.000000000","message":"I\u0027m taking this discussion in the main comment section","commit_id":"0f87d953dad50bb1d8e41754369f7ce087d269a1"},{"author":{"_account_id":9983,"name":"Richard Megginson","email":"rmeggins@redhat.com","username":"rmeggins"},"change_message_id":"43e895593e381bab86270c70f3ee7c1f2d2d3718","unresolved":false,"context_lines":[{"line_number":49,"context_line":"    expiration \u003d expiration_set(trust[:expires_at])"},{"line_number":50,"context_line":"    expiration.gsub!(/\\.[\\d]*Z$/,\u0027\u0027)"},{"line_number":51,"context_line":"    impersonation \u003d trust[:impersonation]"},{"line_number":52,"context_line":"    return \"#{trustor_user}::#{trustor_domain},#{trustee_user}::#{trustee_domain},#{project}::#{project_domain},#{roles},#{expiration},#{impersonation}\""},{"line_number":53,"context_line":"  end"},{"line_number":54,"context_line":""},{"line_number":55,"context_line":"  def self.instances"}],"source_content_type":"text/x-ruby","patch_set":8,"id":"1a4dcd0f_4da01bf5","line":52,"in_reply_to":"3a50d1a3_1d008433","updated":"2015-08-03 18:42:28.000000000","message":". . . and greatly complicates life for implementers.  This is the \"boil the ocean\" approach.  This means every piece of puppet/ruby code, everywhere, that wants to refer to a domain scoped Keystone resource, must include the \u0027::domain\u0027.  I doubt this approach will be generally accepted by the openstack puppet community.  However, I suggest you send an email to openstack-dev@lists.openstack.org with the subject \"[puppet] Puppet Keystone user, project, group, etc. resource names must include ::domain\" and explain why it must be this way.  A decision like this cannot be made without including the community.\n\nMy approach to this issue was and is that it is possible to use short names in an \"intuitive\" way - that is, that using short, unique names \"just works\" in the vast majority of cases.","commit_id":"0f87d953dad50bb1d8e41754369f7ce087d269a1"},{"author":{"_account_id":6525,"name":"Gilles Dubreuil","email":"gilles@redhat.com","username":"q-1illes-a"},"change_message_id":"e62e934d25b7f3f616ebe4394c346046e0c71e11","unresolved":false,"context_lines":[{"line_number":49,"context_line":"    expiration \u003d expiration_set(trust[:expires_at])"},{"line_number":50,"context_line":"    expiration.gsub!(/\\.[\\d]*Z$/,\u0027\u0027)"},{"line_number":51,"context_line":"    impersonation \u003d trust[:impersonation]"},{"line_number":52,"context_line":"    return \"#{trustor_user}::#{trustor_domain},#{trustee_user}::#{trustee_domain},#{project}::#{project_domain},#{roles},#{expiration},#{impersonation}\""},{"line_number":53,"context_line":"  end"},{"line_number":54,"context_line":""},{"line_number":55,"context_line":"  def self.instances"}],"source_content_type":"text/x-ruby","patch_set":8,"id":"3a50d1a3_1d008433","line":52,"in_reply_to":"3a50d1a3_56835103","updated":"2015-08-03 05:52:02.000000000","message":"If the domain is specified then there is no ambiguity about the name.\nMaking the domain mandatory solves the issue.","commit_id":"0f87d953dad50bb1d8e41754369f7ce087d269a1"},{"author":{"_account_id":6525,"name":"Gilles Dubreuil","email":"gilles@redhat.com","username":"q-1illes-a"},"change_message_id":"5f1663a8206413725e4fe8a869a5c27a2385e58f","unresolved":false,"context_lines":[{"line_number":49,"context_line":"    expiration \u003d expiration_set(trust[:expires_at])"},{"line_number":50,"context_line":"    expiration.gsub!(/\\.[\\d]*Z$/,\u0027\u0027)"},{"line_number":51,"context_line":"    impersonation \u003d trust[:impersonation]"},{"line_number":52,"context_line":"    return \"#{trustor_user}::#{trustor_domain},#{trustee_user}::#{trustee_domain},#{project}::#{project_domain},#{roles},#{expiration},#{impersonation}\""},{"line_number":53,"context_line":"  end"},{"line_number":54,"context_line":""},{"line_number":55,"context_line":"  def self.instances"}],"source_content_type":"text/x-ruby","patch_set":8,"id":"3a50d1a3_56835103","line":52,"in_reply_to":"3a50d1a3_ff29349c","updated":"2015-08-03 01:24:40.000000000","message":"I realized that too, I left it because I wanted to validate the new approach first anyway.\n\nBut also, because although the idea of having the domain name not specified when it\u0027s the default or if there is only one object in that name space sounded good in the first place. But now that I see it in practice I believe it could be more confusing for the user than anything else and could lead to mistakes.\n\nHaving the domain specified no matter what is more likely a more robust approach.\n\nThis will mean the manifests would have to be of this form:\n\n keystone_user { \u0027trustor::domain1\u0027: ...}\n keystone_user { \u0027trustee::domain2\u0027: ...}\n keystone_tenant { \u0027project::domain1\u0027: ...}\n keystone_trust { \u0027trustor::domain1,trustee::domain2,project::domain1,....\u0027: }","commit_id":"0f87d953dad50bb1d8e41754369f7ce087d269a1"},{"author":{"_account_id":8297,"name":"Sofer Athlan-Guyot","email":"sathlang@redhat.com","username":"chem"},"change_message_id":"40b8bd066518b7a07c2c01a254e8ae97ac3e7e3a","unresolved":false,"context_lines":[{"line_number":82,"context_line":"  end"},{"line_number":83,"context_line":""},{"line_number":84,"context_line":"  def initialize(value\u003d{})"},{"line_number":85,"context_line":"    super(value)"},{"line_number":86,"context_line":"    @property_flush \u003d {}"},{"line_number":87,"context_line":"  end"},{"line_number":88,"context_line":""}],"source_content_type":"text/x-ruby","patch_set":19,"id":"da20952f_77b6de8b","line":85,"updated":"2015-08-27 13:08:58.000000000","message":"This is not used if the flush method is not defined.  I think you can remove it.","commit_id":"4a79255d58efbde72aec0de42be89a4f04f20b30"},{"author":{"_account_id":6525,"name":"Gilles Dubreuil","email":"gilles@redhat.com","username":"q-1illes-a"},"change_message_id":"afee1af6980db89a2fede4b9baad3313746ad441","unresolved":false,"context_lines":[{"line_number":82,"context_line":"  end"},{"line_number":83,"context_line":""},{"line_number":84,"context_line":"  def initialize(value\u003d{})"},{"line_number":85,"context_line":"    super(value)"},{"line_number":86,"context_line":"    @property_flush \u003d {}"},{"line_number":87,"context_line":"  end"},{"line_number":88,"context_line":""}],"source_content_type":"text/x-ruby","patch_set":19,"id":"da20952f_31c11681","line":85,"in_reply_to":"da20952f_77b6de8b","updated":"2015-08-28 13:01:30.000000000","message":"Right, thanks","commit_id":"4a79255d58efbde72aec0de42be89a4f04f20b30"},{"author":{"_account_id":8297,"name":"Sofer Athlan-Guyot","email":"sathlang@redhat.com","username":"chem"},"change_message_id":"40b8bd066518b7a07c2c01a254e8ae97ac3e7e3a","unresolved":false,"context_lines":[{"line_number":108,"context_line":"    trustor_user, trustor_domain \u003d self.class.name_and_domain(trustor_user)"},{"line_number":109,"context_line":"    trustee_user, trustee_domain \u003d self.class.name_and_domain(trustee_user)"},{"line_number":110,"context_line":"    project, project_domain \u003d self.class.name_and_domain(project)"},{"line_number":111,"context_line":""},{"line_number":112,"context_line":"    unless trustee_user"},{"line_number":113,"context_line":"      raise(Puppet::Error, \u0027The trustee user id or name is mandatory for creating a keystone trust\u0027)"},{"line_number":114,"context_line":"    end"}],"source_content_type":"text/x-ruby","patch_set":19,"id":"da20952f_f7066e1f","line":111,"updated":"2015-08-27 13:08:58.000000000","message":"This is repeated twice.","commit_id":"4a79255d58efbde72aec0de42be89a4f04f20b30"},{"author":{"_account_id":9983,"name":"Richard Megginson","email":"rmeggins@redhat.com","username":"rmeggins"},"change_message_id":"68d2bc92266766a540fa0c42d473928737f62068","unresolved":false,"context_lines":[{"line_number":108,"context_line":"    trustor_user, trustor_domain \u003d self.class.name_and_domain(trustor_user)"},{"line_number":109,"context_line":"    trustee_user, trustee_domain \u003d self.class.name_and_domain(trustee_user)"},{"line_number":110,"context_line":"    project, project_domain \u003d self.class.name_and_domain(project)"},{"line_number":111,"context_line":""},{"line_number":112,"context_line":"    unless trustee_user"},{"line_number":113,"context_line":"      raise(Puppet::Error, \u0027The trustee user id or name is mandatory for creating a keystone trust\u0027)"},{"line_number":114,"context_line":"    end"}],"source_content_type":"text/x-ruby","patch_set":19,"id":"da20952f_fbae3497","line":111,"in_reply_to":"da20952f_f7066e1f","updated":"2015-08-28 01:57:33.000000000","message":"looks ok to me","commit_id":"4a79255d58efbde72aec0de42be89a4f04f20b30"},{"author":{"_account_id":8297,"name":"Sofer Athlan-Guyot","email":"sathlang@redhat.com","username":"chem"},"change_message_id":"1dce9760d585df02563f466520beba24d142f890","unresolved":false,"context_lines":[{"line_number":108,"context_line":"    trustor_user, trustor_domain \u003d self.class.name_and_domain(trustor_user)"},{"line_number":109,"context_line":"    trustee_user, trustee_domain \u003d self.class.name_and_domain(trustee_user)"},{"line_number":110,"context_line":"    project, project_domain \u003d self.class.name_and_domain(project)"},{"line_number":111,"context_line":""},{"line_number":112,"context_line":"    unless trustee_user"},{"line_number":113,"context_line":"      raise(Puppet::Error, \u0027The trustee user id or name is mandatory for creating a keystone trust\u0027)"},{"line_number":114,"context_line":"    end"}],"source_content_type":"text/x-ruby","patch_set":19,"id":"da20952f_466ad71b","line":111,"in_reply_to":"da20952f_fbae3497","updated":"2015-08-28 09:23:02.000000000","message":"sorry missed the trust{ee,or} difference. My bad.","commit_id":"4a79255d58efbde72aec0de42be89a4f04f20b30"},{"author":{"_account_id":8297,"name":"Sofer Athlan-Guyot","email":"sathlang@redhat.com","username":"chem"},"change_message_id":"40b8bd066518b7a07c2c01a254e8ae97ac3e7e3a","unresolved":false,"context_lines":[{"line_number":181,"context_line":"  def expiration\u003d(value)"},{"line_number":182,"context_line":"    raise(Puppet::Error, NO_UPDATE)"},{"line_number":183,"context_line":"  end"},{"line_number":184,"context_line":""},{"line_number":185,"context_line":"  def id"},{"line_number":186,"context_line":"    @property_hash[:id]"},{"line_number":187,"context_line":"  end"}],"source_content_type":"text/x-ruby","patch_set":19,"id":"da20952f_7226ec69","line":184,"updated":"2015-08-27 13:08:58.000000000","message":"You can remove all those function, but impersonation\u003d, roles\u003d, by using mk_resource_methods","commit_id":"4a79255d58efbde72aec0de42be89a4f04f20b30"},{"author":{"_account_id":6525,"name":"Gilles Dubreuil","email":"gilles@redhat.com","username":"q-1illes-a"},"change_message_id":"afee1af6980db89a2fede4b9baad3313746ad441","unresolved":false,"context_lines":[{"line_number":181,"context_line":"  def expiration\u003d(value)"},{"line_number":182,"context_line":"    raise(Puppet::Error, NO_UPDATE)"},{"line_number":183,"context_line":"  end"},{"line_number":184,"context_line":""},{"line_number":185,"context_line":"  def id"},{"line_number":186,"context_line":"    @property_hash[:id]"},{"line_number":187,"context_line":"  end"}],"source_content_type":"text/x-ruby","patch_set":19,"id":"da20952f_11fbb2c2","line":184,"in_reply_to":"da20952f_7226ec69","updated":"2015-08-28 13:01:30.000000000","message":"Will do, I\u0027ve starting to use mk_resource_methods lately :)\nWe have a backlog of provider to clear a bit.","commit_id":"4a79255d58efbde72aec0de42be89a4f04f20b30"},{"author":{"_account_id":8297,"name":"Sofer Athlan-Guyot","email":"sathlang@redhat.com","username":"chem"},"change_message_id":"91ecacfd44132152be085bca7549106f47e35271","unresolved":false,"context_lines":[{"line_number":9,"context_line":""},{"line_number":10,"context_line":"  @credentials \u003d Puppet::Provider::Openstack::CredentialsV3.new"},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"  NO_UPDATE \u003d \u0027A trust cannot be updated.\u0027"},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"  def self.expiration_set(datetime)"},{"line_number":15,"context_line":"    datetime \u003d\u003d \u0027\u0027 ? \u0027None\u0027 : datetime"}],"source_content_type":"text/x-ruby","patch_set":28,"id":"ba15a1d1_bc1c3414","line":12,"updated":"2015-09-15 14:42:49.000000000","message":"Any particular reason to introduce an global name in the class?  See my comment\nlater in the code for another idiom.","commit_id":"485b39056c5297a5aca4debd05e8f9ccdd717cee"},{"author":{"_account_id":6525,"name":"Gilles Dubreuil","email":"gilles@redhat.com","username":"q-1illes-a"},"change_message_id":"406255e13147d9ca953107e994f3d704cf93abc6","unresolved":false,"context_lines":[{"line_number":9,"context_line":""},{"line_number":10,"context_line":"  @credentials \u003d Puppet::Provider::Openstack::CredentialsV3.new"},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"  NO_UPDATE \u003d \u0027A trust cannot be updated.\u0027"},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"  def self.expiration_set(datetime)"},{"line_number":15,"context_line":"    datetime \u003d\u003d \u0027\u0027 ? \u0027None\u0027 : datetime"}],"source_content_type":"text/x-ruby","patch_set":28,"id":"ba15a1d1_d407661a","line":12,"in_reply_to":"ba15a1d1_bc1c3414","updated":"2015-09-16 02:00:08.000000000","message":"No reason besides being lazy at the time and not doing straight away a method.\nI know constants are *bad*.\nReplacing it.","commit_id":"485b39056c5297a5aca4debd05e8f9ccdd717cee"},{"author":{"_account_id":9983,"name":"Richard Megginson","email":"rmeggins@redhat.com","username":"rmeggins"},"change_message_id":"504dcd23fdf9e5c10eebbeb08cf188d9d22faefd","unresolved":false,"context_lines":[{"line_number":15,"context_line":"    datetime \u003d\u003d \u0027\u0027 ? \u0027None\u0027 : datetime"},{"line_number":16,"context_line":"  end"},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"  def self.expired_purge(list)"},{"line_number":19,"context_line":"    list.delete_if do |trust|"},{"line_number":20,"context_line":"      unless trust[:expires_at] \u003d\u003d \u0027\u0027"},{"line_number":21,"context_line":"        trust[:expires_at] \u003c\u003d Time.new.strftime(\"%Y-%m-%dT%H:%M:%S.%6NZ\")"}],"source_content_type":"text/x-ruby","patch_set":28,"id":"ba15a1d1_c664a74a","line":18,"updated":"2015-09-16 01:13:46.000000000","message":"create the purge time outside of the delete_if loop::\n\n    purgetime \u003d Time.new.strftime(\"%Y-%m-%dT%H:%M:%S.%6NZ\")\n    ...\n         trust[:expires_at] \u003c\u003d purgetime","commit_id":"485b39056c5297a5aca4debd05e8f9ccdd717cee"},{"author":{"_account_id":6525,"name":"Gilles Dubreuil","email":"gilles@redhat.com","username":"q-1illes-a"},"change_message_id":"aa8dff6870cc8fb3ee844e953c83362ee84411e1","unresolved":false,"context_lines":[{"line_number":15,"context_line":"    datetime \u003d\u003d \u0027\u0027 ? \u0027None\u0027 : datetime"},{"line_number":16,"context_line":"  end"},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"  def self.expired_purge(list)"},{"line_number":19,"context_line":"    list.delete_if do |trust|"},{"line_number":20,"context_line":"      unless trust[:expires_at] \u003d\u003d \u0027\u0027"},{"line_number":21,"context_line":"        trust[:expires_at] \u003c\u003d Time.new.strftime(\"%Y-%m-%dT%H:%M:%S.%6NZ\")"}],"source_content_type":"text/x-ruby","patch_set":28,"id":"ba15a1d1_e2a98c7c","line":18,"in_reply_to":"ba15a1d1_c664a74a","updated":"2015-09-16 02:36:47.000000000","message":"Better.\nDone","commit_id":"485b39056c5297a5aca4debd05e8f9ccdd717cee"},{"author":{"_account_id":8297,"name":"Sofer Athlan-Guyot","email":"sathlang@redhat.com","username":"chem"},"change_message_id":"91ecacfd44132152be085bca7549106f47e35271","unresolved":false,"context_lines":[{"line_number":18,"context_line":"  def self.expired_purge(list)"},{"line_number":19,"context_line":"    list.delete_if do |trust|"},{"line_number":20,"context_line":"      unless trust[:expires_at] \u003d\u003d \u0027\u0027"},{"line_number":21,"context_line":"        trust[:expires_at] \u003c\u003d Time.new.strftime(\"%Y-%m-%dT%H:%M:%S.%6NZ\")"},{"line_number":22,"context_line":"      end"},{"line_number":23,"context_line":"    end"},{"line_number":24,"context_line":"  end"}],"source_content_type":"text/x-ruby","patch_set":28,"id":"ba15a1d1_5c1b981b","line":21,"updated":"2015-09-15 14:42:49.000000000","message":"You should use the unless modifier here, see https://github.com/bbatsov/ruby-style-guide#if-as-a-modifier","commit_id":"485b39056c5297a5aca4debd05e8f9ccdd717cee"},{"author":{"_account_id":6525,"name":"Gilles Dubreuil","email":"gilles@redhat.com","username":"q-1illes-a"},"change_message_id":"aa8dff6870cc8fb3ee844e953c83362ee84411e1","unresolved":false,"context_lines":[{"line_number":18,"context_line":"  def self.expired_purge(list)"},{"line_number":19,"context_line":"    list.delete_if do |trust|"},{"line_number":20,"context_line":"      unless trust[:expires_at] \u003d\u003d \u0027\u0027"},{"line_number":21,"context_line":"        trust[:expires_at] \u003c\u003d Time.new.strftime(\"%Y-%m-%dT%H:%M:%S.%6NZ\")"},{"line_number":22,"context_line":"      end"},{"line_number":23,"context_line":"    end"},{"line_number":24,"context_line":"  end"}],"source_content_type":"text/x-ruby","patch_set":28,"id":"ba15a1d1_629d7c58","line":21,"in_reply_to":"ba15a1d1_5c1b981b","updated":"2015-09-16 02:36:47.000000000","message":"Done","commit_id":"485b39056c5297a5aca4debd05e8f9ccdd717cee"},{"author":{"_account_id":8297,"name":"Sofer Athlan-Guyot","email":"sathlang@redhat.com","username":"chem"},"change_message_id":"91ecacfd44132152be085bca7549106f47e35271","unresolved":false,"context_lines":[{"line_number":24,"context_line":"  end"},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"  def self.fetch_project(id)"},{"line_number":27,"context_line":"    request(\u0027project\u0027, \u0027show\u0027, id)"},{"line_number":28,"context_line":"  rescue Exception \u003d\u003e e"},{"line_number":29,"context_line":"    nil"},{"line_number":30,"context_line":"  end"}],"source_content_type":"text/x-ruby","patch_set":28,"id":"ba15a1d1_7c169cf2","line":27,"updated":"2015-09-15 14:42:49.000000000","message":"If you don\u0027t do anything with the exception you can do a one liner:\n  request(\u0027project\u0027, \u0027show\u0027, id) rescue nil","commit_id":"485b39056c5297a5aca4debd05e8f9ccdd717cee"},{"author":{"_account_id":9983,"name":"Richard Megginson","email":"rmeggins@redhat.com","username":"rmeggins"},"change_message_id":"504dcd23fdf9e5c10eebbeb08cf188d9d22faefd","unresolved":false,"context_lines":[{"line_number":24,"context_line":"  end"},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"  def self.fetch_project(id)"},{"line_number":27,"context_line":"    request(\u0027project\u0027, \u0027show\u0027, id)"},{"line_number":28,"context_line":"  rescue Exception \u003d\u003e e"},{"line_number":29,"context_line":"    nil"},{"line_number":30,"context_line":"  end"}],"source_content_type":"text/x-ruby","patch_set":28,"id":"ba15a1d1_468657ba","line":27,"in_reply_to":"ba15a1d1_7c169cf2","updated":"2015-09-16 01:13:46.000000000","message":"Either catch an exception if there is something that can be done at this point in the code, or just don\u0027t catch it at all.\n\nUnder what circumstances will request(\u0027project\u0027, \u0027show\u0027, id) raise an exception?  For example, is there ever a reason why `id` will not be found?  I think `id` should always be found, so any exception here should be handled by the caller.","commit_id":"485b39056c5297a5aca4debd05e8f9ccdd717cee"},{"author":{"_account_id":6525,"name":"Gilles Dubreuil","email":"gilles@redhat.com","username":"q-1illes-a"},"change_message_id":"406255e13147d9ca953107e994f3d704cf93abc6","unresolved":false,"context_lines":[{"line_number":24,"context_line":"  end"},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"  def self.fetch_project(id)"},{"line_number":27,"context_line":"    request(\u0027project\u0027, \u0027show\u0027, id)"},{"line_number":28,"context_line":"  rescue Exception \u003d\u003e e"},{"line_number":29,"context_line":"    nil"},{"line_number":30,"context_line":"  end"}],"source_content_type":"text/x-ruby","patch_set":28,"id":"ba15a1d1_974b3087","line":27,"in_reply_to":"ba15a1d1_7c169cf2","updated":"2015-09-16 02:00:08.000000000","message":"Looks better.","commit_id":"485b39056c5297a5aca4debd05e8f9ccdd717cee"},{"author":{"_account_id":6525,"name":"Gilles Dubreuil","email":"gilles@redhat.com","username":"q-1illes-a"},"change_message_id":"406255e13147d9ca953107e994f3d704cf93abc6","unresolved":false,"context_lines":[{"line_number":24,"context_line":"  end"},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"  def self.fetch_project(id)"},{"line_number":27,"context_line":"    request(\u0027project\u0027, \u0027show\u0027, id)"},{"line_number":28,"context_line":"  rescue Exception \u003d\u003e e"},{"line_number":29,"context_line":"    nil"},{"line_number":30,"context_line":"  end"}],"source_content_type":"text/x-ruby","patch_set":28,"id":"ba15a1d1_f4a62a52","line":27,"in_reply_to":"ba15a1d1_7c169cf2","updated":"2015-09-16 02:00:08.000000000","message":"The trusts contain only IDs, meanwhile the provider returns also the names by  fetching the matching users/projects names and their respective domains.\n\nBut if any of the users (trustor/trustee) or project related to any existing trust is deleted than the self.instances will fail miserably because the names cannot be provided. Therefore if an ID cannot be matched, then the field won\u0027t appear but the trust, which still exists will be listed.","commit_id":"485b39056c5297a5aca4debd05e8f9ccdd717cee"},{"author":{"_account_id":8297,"name":"Sofer Athlan-Guyot","email":"sathlang@redhat.com","username":"chem"},"change_message_id":"91ecacfd44132152be085bca7549106f47e35271","unresolved":false,"context_lines":[{"line_number":30,"context_line":"  end"},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"  def self.fetch_user(id)"},{"line_number":33,"context_line":"    request(\u0027user\u0027, \u0027show\u0027, id)"},{"line_number":34,"context_line":"  rescue Exception \u003d\u003e e"},{"line_number":35,"context_line":"    nil"},{"line_number":36,"context_line":"  end"}],"source_content_type":"text/x-ruby","patch_set":28,"id":"ba15a1d1_1cd4401e","line":33,"updated":"2015-09-15 14:42:49.000000000","message":"Idem","commit_id":"485b39056c5297a5aca4debd05e8f9ccdd717cee"},{"author":{"_account_id":9983,"name":"Richard Megginson","email":"rmeggins@redhat.com","username":"rmeggins"},"change_message_id":"504dcd23fdf9e5c10eebbeb08cf188d9d22faefd","unresolved":false,"context_lines":[{"line_number":30,"context_line":"  end"},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"  def self.fetch_user(id)"},{"line_number":33,"context_line":"    request(\u0027user\u0027, \u0027show\u0027, id)"},{"line_number":34,"context_line":"  rescue Exception \u003d\u003e e"},{"line_number":35,"context_line":"    nil"},{"line_number":36,"context_line":"  end"}],"source_content_type":"text/x-ruby","patch_set":28,"id":"ba15a1d1_c6c027e3","line":33,"in_reply_to":"ba15a1d1_1cd4401e","updated":"2015-09-16 01:13:46.000000000","message":"Idem too","commit_id":"485b39056c5297a5aca4debd05e8f9ccdd717cee"},{"author":{"_account_id":6525,"name":"Gilles Dubreuil","email":"gilles@redhat.com","username":"q-1illes-a"},"change_message_id":"406255e13147d9ca953107e994f3d704cf93abc6","unresolved":false,"context_lines":[{"line_number":30,"context_line":"  end"},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"  def self.fetch_user(id)"},{"line_number":33,"context_line":"    request(\u0027user\u0027, \u0027show\u0027, id)"},{"line_number":34,"context_line":"  rescue Exception \u003d\u003e e"},{"line_number":35,"context_line":"    nil"},{"line_number":36,"context_line":"  end"}],"source_content_type":"text/x-ruby","patch_set":28,"id":"ba15a1d1_94648e22","line":33,"in_reply_to":"ba15a1d1_1cd4401e","updated":"2015-09-16 02:00:08.000000000","message":"Idem/done too","commit_id":"485b39056c5297a5aca4debd05e8f9ccdd717cee"},{"author":{"_account_id":8297,"name":"Sofer Athlan-Guyot","email":"sathlang@redhat.com","username":"chem"},"change_message_id":"91ecacfd44132152be085bca7549106f47e35271","unresolved":false,"context_lines":[{"line_number":39,"context_line":"    users \u003d []"},{"line_number":40,"context_line":"    catalog.resources.find do |r|"},{"line_number":41,"context_line":"      if r.class.to_s \u003d\u003d \u0027Puppet::Type::Keystone_user\u0027"},{"line_number":42,"context_line":"        users \u003c\u003c {r[:name] \u003d\u003e r[:domain]}"},{"line_number":43,"context_line":"      end"},{"line_number":44,"context_line":"    end"},{"line_number":45,"context_line":"    users"}],"source_content_type":"text/x-ruby","patch_set":28,"id":"ba15a1d1_3cd7c424","line":42,"updated":"2015-09-15 14:42:49.000000000","message":"Nice :)","commit_id":"485b39056c5297a5aca4debd05e8f9ccdd717cee"},{"author":{"_account_id":6525,"name":"Gilles Dubreuil","email":"gilles@redhat.com","username":"q-1illes-a"},"change_message_id":"406255e13147d9ca953107e994f3d704cf93abc6","unresolved":false,"context_lines":[{"line_number":39,"context_line":"    users \u003d []"},{"line_number":40,"context_line":"    catalog.resources.find do |r|"},{"line_number":41,"context_line":"      if r.class.to_s \u003d\u003d \u0027Puppet::Type::Keystone_user\u0027"},{"line_number":42,"context_line":"        users \u003c\u003c {r[:name] \u003d\u003e r[:domain]}"},{"line_number":43,"context_line":"      end"},{"line_number":44,"context_line":"    end"},{"line_number":45,"context_line":"    users"}],"source_content_type":"text/x-ruby","patch_set":28,"id":"ba15a1d1_f47dcab1","line":42,"in_reply_to":"ba15a1d1_3cd7c424","updated":"2015-09-16 02:00:08.000000000","message":"Thanks for the tip!","commit_id":"485b39056c5297a5aca4debd05e8f9ccdd717cee"},{"author":{"_account_id":8297,"name":"Sofer Athlan-Guyot","email":"sathlang@redhat.com","username":"chem"},"change_message_id":"91ecacfd44132152be085bca7549106f47e35271","unresolved":false,"context_lines":[{"line_number":139,"context_line":""},{"line_number":140,"context_line":"    unless resource[:roles]"},{"line_number":141,"context_line":"      raise(Puppet::Error, \u0027At least one role should be provided\u0027)"},{"line_number":142,"context_line":"    end"},{"line_number":143,"context_line":""},{"line_number":144,"context_line":"    properties \u003d [resource[:trustor_user], resource[:trustee_user]]"},{"line_number":145,"context_line":"    properties \u003c\u003c \u0027--trustor-domain\u0027 \u003c\u003c resource[:trustor_domain]"}],"source_content_type":"text/x-ruby","patch_set":28,"id":"ba15a1d1_dcdd6843","line":142,"updated":"2015-09-15 14:42:49.000000000","message":"All this tests should be moved to the type definition.  See my comments there.","commit_id":"485b39056c5297a5aca4debd05e8f9ccdd717cee"},{"author":{"_account_id":6525,"name":"Gilles Dubreuil","email":"gilles@redhat.com","username":"q-1illes-a"},"change_message_id":"406255e13147d9ca953107e994f3d704cf93abc6","unresolved":false,"context_lines":[{"line_number":139,"context_line":""},{"line_number":140,"context_line":"    unless resource[:roles]"},{"line_number":141,"context_line":"      raise(Puppet::Error, \u0027At least one role should be provided\u0027)"},{"line_number":142,"context_line":"    end"},{"line_number":143,"context_line":""},{"line_number":144,"context_line":"    properties \u003d [resource[:trustor_user], resource[:trustee_user]]"},{"line_number":145,"context_line":"    properties \u003c\u003c \u0027--trustor-domain\u0027 \u003c\u003c resource[:trustor_domain]"}],"source_content_type":"text/x-ruby","patch_set":28,"id":"ba15a1d1_14607e00","line":142,"in_reply_to":"ba15a1d1_dcdd6843","updated":"2015-09-16 02:00:08.000000000","message":"As I commented there too, validating a value in type works only if there is a value :(","commit_id":"485b39056c5297a5aca4debd05e8f9ccdd717cee"},{"author":{"_account_id":8297,"name":"Sofer Athlan-Guyot","email":"sathlang@redhat.com","username":"chem"},"change_message_id":"91ecacfd44132152be085bca7549106f47e35271","unresolved":false,"context_lines":[{"line_number":206,"context_line":""},{"line_number":207,"context_line":"  def trustor_domain\u003d(value)"},{"line_number":208,"context_line":"    raise(Puppet::Error, NO_UPDATE)"},{"line_number":209,"context_line":"  end"},{"line_number":210,"context_line":"end"}],"source_content_type":"text/x-ruby","patch_set":28,"id":"ba15a1d1_fce06cfc","line":209,"updated":"2015-09-15 14:42:49.000000000","message":"All those functions could be refactor like this:\n\n  def no_update(value)\n    raise(Puppet::Error, \u0027A trust cannot be updated.\u0027)\n  end\n\n  [:expiration\u003d, :impersonation\u003d, :project\u003d,\n   :project_domain\u003d, :roles\u003d, :trustee_user\u003d, :trustee_domain\u003d].each do |m|\n    alias_method m, :no_update\n  end\n\nThis would remove the need for the constant NO_UPDATE","commit_id":"485b39056c5297a5aca4debd05e8f9ccdd717cee"},{"author":{"_account_id":6525,"name":"Gilles Dubreuil","email":"gilles@redhat.com","username":"q-1illes-a"},"change_message_id":"406255e13147d9ca953107e994f3d704cf93abc6","unresolved":false,"context_lines":[{"line_number":206,"context_line":""},{"line_number":207,"context_line":"  def trustor_domain\u003d(value)"},{"line_number":208,"context_line":"    raise(Puppet::Error, NO_UPDATE)"},{"line_number":209,"context_line":"  end"},{"line_number":210,"context_line":"end"}],"source_content_type":"text/x-ruby","patch_set":28,"id":"ba15a1d1_b703d40c","line":209,"in_reply_to":"ba15a1d1_fce06cfc","updated":"2015-09-16 02:00:08.000000000","message":"Absolutely.","commit_id":"485b39056c5297a5aca4debd05e8f9ccdd717cee"}],"lib/puppet/type/keystone_trust.rb":[{"author":{"_account_id":9983,"name":"Richard Megginson","email":"rmeggins@redhat.com","username":"rmeggins"},"change_message_id":"6ee269d3f0fdba0ebb92773740d5cbf4012e83bd","unresolved":false,"context_lines":[{"line_number":39,"context_line":"  end"},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"  newproperty(:role) do"},{"line_number":42,"context_line":"    desc \u0027List of roles (name or ID) to delegate, use comma for multiple values\u0027"},{"line_number":43,"context_line":"    newvalues(/\\S+/)"},{"line_number":44,"context_line":"    validate do |value|"},{"line_number":45,"context_line":"      fail(\u0027At least one role is required.\u0027) unless value"}],"source_content_type":"text/x-ruby","patch_set":4,"id":"9a41bdd9_95d9d424","line":42,"updated":"2015-07-14 14:30:19.000000000","message":"This should be `roles`, and use an Array of roles, as in `keystone_user_role`","commit_id":"616e07e6359710ecb2d0e02bd40cd90a3d423ddf"},{"author":{"_account_id":6525,"name":"Gilles Dubreuil","email":"gilles@redhat.com","username":"q-1illes-a"},"change_message_id":"73adcd29ae373a0c64ff56bfc5bf49c3a5f2ea95","unresolved":false,"context_lines":[{"line_number":39,"context_line":"  end"},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"  newproperty(:role) do"},{"line_number":42,"context_line":"    desc \u0027List of roles (name or ID) to delegate, use comma for multiple values\u0027"},{"line_number":43,"context_line":"    newvalues(/\\S+/)"},{"line_number":44,"context_line":"    validate do |value|"},{"line_number":45,"context_line":"      fail(\u0027At least one role is required.\u0027) unless value"}],"source_content_type":"text/x-ruby","patch_set":4,"id":"9a41bdd9_289166f1","line":42,"in_reply_to":"9a41bdd9_95d9d424","updated":"2015-07-15 07:49:46.000000000","message":"Done, I replaced role with roles to properly manage a list of roles, meanwhile this is a string as the :array_matching \u003d\u003e :all turns out really weird on the provider side.","commit_id":"616e07e6359710ecb2d0e02bd40cd90a3d423ddf"},{"author":{"_account_id":9983,"name":"Richard Megginson","email":"rmeggins@redhat.com","username":"rmeggins"},"change_message_id":"821fb42c8028495d71fe350d8259d04c687cfc0b","unresolved":false,"context_lines":[{"line_number":12,"context_line":"    desc \u0027The trustor user name.\u0027"},{"line_number":13,"context_line":"    newvalues(/\\S+/)"},{"line_number":14,"context_line":"  end"},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"  newproperty(:expiration) do"},{"line_number":17,"context_line":"    desc \u0027Optional expiration date for the trust\u0027"},{"line_number":18,"context_line":"    # format YYYY-mm-ddTHH:MM:SS"}],"source_content_type":"text/x-ruby","patch_set":6,"id":"3a50d1a3_d0569ed1","line":15,"updated":"2015-07-21 16:54:50.000000000","message":"There should be an :id parameter that is different from name, for now","commit_id":"4b9857b4b0bc04f18f5e5d65793eb81a47d1dddc"},{"author":{"_account_id":6525,"name":"Gilles Dubreuil","email":"gilles@redhat.com","username":"q-1illes-a"},"change_message_id":"b8bcd58df85c77bcf7b95de9338c72393f88cace","unresolved":false,"context_lines":[{"line_number":12,"context_line":"    desc \u0027The trustor user name.\u0027"},{"line_number":13,"context_line":"    newvalues(/\\S+/)"},{"line_number":14,"context_line":"  end"},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"  newproperty(:expiration) do"},{"line_number":17,"context_line":"    desc \u0027Optional expiration date for the trust\u0027"},{"line_number":18,"context_line":"    # format YYYY-mm-ddTHH:MM:SS"}],"source_content_type":"text/x-ruby","patch_set":6,"id":"3a50d1a3_b8c04951","line":15,"in_reply_to":"3a50d1a3_10f04d90","updated":"2015-07-22 23:33:11.000000000","message":"Seems this in not going to happen well at least until the keystone team realizes how ugly that it.","commit_id":"4b9857b4b0bc04f18f5e5d65793eb81a47d1dddc"},{"author":{"_account_id":6525,"name":"Gilles Dubreuil","email":"gilles@redhat.com","username":"q-1illes-a"},"change_message_id":"35f5290ba9d166c8e2c25edbe70648eacff089e2","unresolved":false,"context_lines":[{"line_number":12,"context_line":"    desc \u0027The trustor user name.\u0027"},{"line_number":13,"context_line":"    newvalues(/\\S+/)"},{"line_number":14,"context_line":"  end"},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"  newproperty(:expiration) do"},{"line_number":17,"context_line":"    desc \u0027Optional expiration date for the trust\u0027"},{"line_number":18,"context_line":"    # format YYYY-mm-ddTHH:MM:SS"}],"source_content_type":"text/x-ruby","patch_set":6,"id":"3a50d1a3_e6151240","line":15,"in_reply_to":"3a50d1a3_d0569ed1","updated":"2015-07-22 00:32:45.000000000","message":"Waiting for outcome from keystone team on the extra field.","commit_id":"4b9857b4b0bc04f18f5e5d65793eb81a47d1dddc"},{"author":{"_account_id":9983,"name":"Richard Megginson","email":"rmeggins@redhat.com","username":"rmeggins"},"change_message_id":"99f1b6c268c30101a571693d2f16312e67db4dcd","unresolved":false,"context_lines":[{"line_number":12,"context_line":"    desc \u0027The trustor user name.\u0027"},{"line_number":13,"context_line":"    newvalues(/\\S+/)"},{"line_number":14,"context_line":"  end"},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"  newproperty(:expiration) do"},{"line_number":17,"context_line":"    desc \u0027Optional expiration date for the trust\u0027"},{"line_number":18,"context_line":"    # format YYYY-mm-ddTHH:MM:SS"}],"source_content_type":"text/x-ruby","patch_set":6,"id":"3a50d1a3_10f04d90","line":15,"in_reply_to":"3a50d1a3_e6151240","updated":"2015-07-22 14:38:45.000000000","message":"Best case, they will add an extra field in the \u0027M\u0027 release, but we still have to support trusts in Kilo.","commit_id":"4b9857b4b0bc04f18f5e5d65793eb81a47d1dddc"},{"author":{"_account_id":9983,"name":"Richard Megginson","email":"rmeggins@redhat.com","username":"rmeggins"},"change_message_id":"821fb42c8028495d71fe350d8259d04c687cfc0b","unresolved":false,"context_lines":[{"line_number":70,"context_line":"  # need to come from another source."},{"line_number":71,"context_line":"  autorequire(:service) do"},{"line_number":72,"context_line":"    [\u0027keystone\u0027]"},{"line_number":73,"context_line":"  end"},{"line_number":74,"context_line":"end"}],"source_content_type":"text/x-ruby","patch_set":6,"id":"3a50d1a3_70af8a94","line":73,"updated":"2015-07-21 16:54:50.000000000","message":"There should be autorequires(:keystone_user) for all of the user parameters, autorequires(:keystone_tenant) for the project parameter, autorequire(:keystone_domain) for the domain parameters (including if the domain is specified in a user or project as `::domain`.\n\nAre the :roles values the names of `keystone_role` resources?  If so, there should be autorequires(:keystone_role) for all of those roles.","commit_id":"4b9857b4b0bc04f18f5e5d65793eb81a47d1dddc"},{"author":{"_account_id":6525,"name":"Gilles Dubreuil","email":"gilles@redhat.com","username":"q-1illes-a"},"change_message_id":"35f5290ba9d166c8e2c25edbe70648eacff089e2","unresolved":false,"context_lines":[{"line_number":70,"context_line":"  # need to come from another source."},{"line_number":71,"context_line":"  autorequire(:service) do"},{"line_number":72,"context_line":"    [\u0027keystone\u0027]"},{"line_number":73,"context_line":"  end"},{"line_number":74,"context_line":"end"}],"source_content_type":"text/x-ruby","patch_set":6,"id":"3a50d1a3_4623a6a7","line":73,"in_reply_to":"3a50d1a3_70af8a94","updated":"2015-07-22 00:32:45.000000000","message":"Will do","commit_id":"4b9857b4b0bc04f18f5e5d65793eb81a47d1dddc"},{"author":{"_account_id":3153,"name":"Emilien Macchi","email":"emilien@redhat.com","username":"emilienm"},"change_message_id":"66263fe4ec02af118d6a625f81737502e42073ad","unresolved":false,"context_lines":[{"line_number":69,"context_line":"  # If there is no keystone config, authentication credentials"},{"line_number":70,"context_line":"  # need to come from another source."},{"line_number":71,"context_line":"  autorequire(:service) do"},{"line_number":72,"context_line":"    [\u0027keystone\u0027]"},{"line_number":73,"context_line":"  end"},{"line_number":74,"context_line":"end"}],"source_content_type":"text/x-ruby","patch_set":7,"id":"3a50d1a3_3d7af288","line":72,"updated":"2015-07-28 19:40:34.000000000","message":"Please require the \u0027keystone_started\u0027 anchor and probably \u0027default_domain_created\u0027 anchor.","commit_id":"8ca838d0a8ed513d10ae97a33eb75a88a2bee5f9"},{"author":{"_account_id":6525,"name":"Gilles Dubreuil","email":"gilles@redhat.com","username":"q-1illes-a"},"change_message_id":"bda2e9c1d4f3413ade5af48274372faccbc09ed3","unresolved":false,"context_lines":[{"line_number":69,"context_line":"  # If there is no keystone config, authentication credentials"},{"line_number":70,"context_line":"  # need to come from another source."},{"line_number":71,"context_line":"  autorequire(:service) do"},{"line_number":72,"context_line":"    [\u0027keystone\u0027]"},{"line_number":73,"context_line":"  end"},{"line_number":74,"context_line":"end"}],"source_content_type":"text/x-ruby","patch_set":7,"id":"3a50d1a3_43ac3f35","line":72,"in_reply_to":"3a50d1a3_3d7af288","updated":"2015-07-31 04:28:39.000000000","message":"Done","commit_id":"8ca838d0a8ed513d10ae97a33eb75a88a2bee5f9"},{"author":{"_account_id":8297,"name":"Sofer Athlan-Guyot","email":"sathlang@redhat.com","username":"chem"},"change_message_id":"91ecacfd44132152be085bca7549106f47e35271","unresolved":false,"context_lines":[{"line_number":39,"context_line":"  end"},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"  newproperty(:project) do"},{"line_number":42,"context_line":"    desc \u0027Project name\u0027"},{"line_number":43,"context_line":"  end"},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"  newproperty(:project_domain) do"}],"source_content_type":"text/x-ruby","patch_set":28,"id":"ba15a1d1_9ce850e4","line":42,"updated":"2015-09-15 14:42:49.000000000","message":"For required property you can for instance use that, and remove the test in the self.create class method. (or I miss something ...)\n\n  validate do |value|\n    raise Puppet::Error, \"trust must not be an empty string\" if value.empty?\n  end\n\nThis will make sure that the user passed something.","commit_id":"485b39056c5297a5aca4debd05e8f9ccdd717cee"},{"author":{"_account_id":6525,"name":"Gilles Dubreuil","email":"gilles@redhat.com","username":"q-1illes-a"},"change_message_id":"406255e13147d9ca953107e994f3d704cf93abc6","unresolved":false,"context_lines":[{"line_number":39,"context_line":"  end"},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"  newproperty(:project) do"},{"line_number":42,"context_line":"    desc \u0027Project name\u0027"},{"line_number":43,"context_line":"  end"},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"  newproperty(:project_domain) do"}],"source_content_type":"text/x-ruby","patch_set":28,"id":"ba15a1d1_d44f66bb","line":42,"in_reply_to":"ba15a1d1_9ce850e4","updated":"2015-09-16 02:00:08.000000000","message":"I\u0027ve tried this before but unfortunately this doesn\u0027t work.\n\nBecause a value is need for this to kick-in.\n\nThis is why I\u0027ve been resorting to checks in the provider.","commit_id":"485b39056c5297a5aca4debd05e8f9ccdd717cee"},{"author":{"_account_id":8297,"name":"Sofer Athlan-Guyot","email":"sathlang@redhat.com","username":"chem"},"change_message_id":"91ecacfd44132152be085bca7549106f47e35271","unresolved":false,"context_lines":[{"line_number":79,"context_line":"  end"},{"line_number":80,"context_line":""},{"line_number":81,"context_line":"  autorequire(:keystone_user) do"},{"line_number":82,"context_line":"    users \u003d provider.class.find_users(catalog)"},{"line_number":83,"context_line":"  end"},{"line_number":84,"context_line":""},{"line_number":85,"context_line":"  autorequire(:anchor) do"}],"source_content_type":"text/x-ruby","patch_set":28,"id":"ba15a1d1_bce3d404","line":82,"updated":"2015-09-15 14:42:49.000000000","message":"Nice :)","commit_id":"485b39056c5297a5aca4debd05e8f9ccdd717cee"},{"author":{"_account_id":6525,"name":"Gilles Dubreuil","email":"gilles@redhat.com","username":"q-1illes-a"},"change_message_id":"406255e13147d9ca953107e994f3d704cf93abc6","unresolved":false,"context_lines":[{"line_number":79,"context_line":"  end"},{"line_number":80,"context_line":""},{"line_number":81,"context_line":"  autorequire(:keystone_user) do"},{"line_number":82,"context_line":"    users \u003d provider.class.find_users(catalog)"},{"line_number":83,"context_line":"  end"},{"line_number":84,"context_line":""},{"line_number":85,"context_line":"  autorequire(:anchor) do"}],"source_content_type":"text/x-ruby","patch_set":28,"id":"ba15a1d1_74d53ab7","line":82,"in_reply_to":"ba15a1d1_bce3d404","updated":"2015-09-16 02:00:08.000000000","message":"Thanks! I\u0027m still wondering if that really works :)","commit_id":"485b39056c5297a5aca4debd05e8f9ccdd717cee"}],"spec/acceptance/basic_keystone_spec.rb":[{"author":{"_account_id":9983,"name":"Richard Megginson","email":"rmeggins@redhat.com","username":"rmeggins"},"change_message_id":"99c989d19ace246e079cbdbf3a55ebeb6618b119","unresolved":false,"context_lines":[{"line_number":120,"context_line":"        password    \u003d\u003e \u0027a_big_secret\u0027,"},{"line_number":121,"context_line":"        domain      \u003d\u003e \u0027domain1\u0027,"},{"line_number":122,"context_line":"      }"},{"line_number":123,"context_line":"      keystone_trust { \u0027adminv3_user1\u0027:"},{"line_number":124,"context_line":"        ensure       \u003d\u003e present,"},{"line_number":125,"context_line":"        roles        \u003d\u003e [\u0027admin\u0027],"},{"line_number":126,"context_line":"        trustor_user \u003d\u003e \u0027adminv3\u0027,"}],"source_content_type":"text/x-ruby","patch_set":8,"id":"3a50d1a3_e21c3b6c","line":123,"updated":"2015-07-31 20:01:16.000000000","message":"This doesn\u0027t use the \"trustor,trustee,project,...\" naming convention.","commit_id":"0f87d953dad50bb1d8e41754369f7ce087d269a1"},{"author":{"_account_id":6525,"name":"Gilles Dubreuil","email":"gilles@redhat.com","username":"q-1illes-a"},"change_message_id":"5f1663a8206413725e4fe8a869a5c27a2385e58f","unresolved":false,"context_lines":[{"line_number":120,"context_line":"        password    \u003d\u003e \u0027a_big_secret\u0027,"},{"line_number":121,"context_line":"        domain      \u003d\u003e \u0027domain1\u0027,"},{"line_number":122,"context_line":"      }"},{"line_number":123,"context_line":"      keystone_trust { \u0027adminv3_user1\u0027:"},{"line_number":124,"context_line":"        ensure       \u003d\u003e present,"},{"line_number":125,"context_line":"        roles        \u003d\u003e [\u0027admin\u0027],"},{"line_number":126,"context_line":"        trustor_user \u003d\u003e \u0027adminv3\u0027,"}],"source_content_type":"text/x-ruby","patch_set":8,"id":"3a50d1a3_167aa924","line":123,"in_reply_to":"3a50d1a3_e21c3b6c","updated":"2015-08-03 01:24:40.000000000","message":"Done","commit_id":"0f87d953dad50bb1d8e41754369f7ce087d269a1"},{"author":{"_account_id":8297,"name":"Sofer Athlan-Guyot","email":"sathlang@redhat.com","username":"chem"},"change_message_id":"40b8bd066518b7a07c2c01a254e8ae97ac3e7e3a","unresolved":false,"context_lines":[{"line_number":231,"context_line":"          expect(r.stderr).to be_empty"},{"line_number":232,"context_line":"        end"},{"line_number":233,"context_line":"      end"},{"line_number":234,"context_line":"      it \u0027should create a trust between adminv3 and user1\u0027 do"},{"line_number":235,"context_line":"        ENV[\u0027OS_USERNAME\u0027] \u003d \u0027adminv3\u0027"},{"line_number":236,"context_line":"        ENV[\u0027OS_PASSWORD\u0027] \u003d \u0027a_big_secret\u0027"},{"line_number":237,"context_line":"        ENV[\u0027OS_PROJECT_NAME\u0027] \u003d \u0027openstackv3\u0027"}],"source_content_type":"text/x-ruby","patch_set":19,"id":"da20952f_72b6ec8b","line":234,"updated":"2015-08-27 13:08:58.000000000","message":"This is evaluated at rspec compile time, not runtime see https://bugs.launchpad.net/puppet-keystone/+bug/1482243.  You can find a more robust idiom there https://review.openstack.org/#/c/202689/35/spec/unit/provider/keystone_identity_provider/openstack_spec.rb in the let(:set_env) block, to be used with the \"before(:example) { set_env }\"","commit_id":"4a79255d58efbde72aec0de42be89a4f04f20b30"},{"author":{"_account_id":6525,"name":"Gilles Dubreuil","email":"gilles@redhat.com","username":"q-1illes-a"},"change_message_id":"afee1af6980db89a2fede4b9baad3313746ad441","unresolved":false,"context_lines":[{"line_number":231,"context_line":"          expect(r.stderr).to be_empty"},{"line_number":232,"context_line":"        end"},{"line_number":233,"context_line":"      end"},{"line_number":234,"context_line":"      it \u0027should create a trust between adminv3 and user1\u0027 do"},{"line_number":235,"context_line":"        ENV[\u0027OS_USERNAME\u0027] \u003d \u0027adminv3\u0027"},{"line_number":236,"context_line":"        ENV[\u0027OS_PASSWORD\u0027] \u003d \u0027a_big_secret\u0027"},{"line_number":237,"context_line":"        ENV[\u0027OS_PROJECT_NAME\u0027] \u003d \u0027openstackv3\u0027"}],"source_content_type":"text/x-ruby","patch_set":19,"id":"da20952f_b13526f8","line":234,"in_reply_to":"da20952f_72b6ec8b","updated":"2015-08-28 13:01:30.000000000","message":"Great, thanks!\n\nThat makes sense, I could see that the ENV creating side effects (screwing up the rest of the tests).","commit_id":"4a79255d58efbde72aec0de42be89a4f04f20b30"},{"author":{"_account_id":8297,"name":"Sofer Athlan-Guyot","email":"sathlang@redhat.com","username":"chem"},"change_message_id":"91ecacfd44132152be085bca7549106f47e35271","unresolved":false,"context_lines":[{"line_number":246,"context_line":"        ENV[\u0027OS_PROJECT_DOMAIN_NAME\u0027] \u003d \u0027admin_domain\u0027"},{"line_number":247,"context_line":"        ENV[\u0027OS_AUTH_URL\u0027] \u003d \u0027http://127.0.0.1:5000/v3\u0027"},{"line_number":248,"context_line":"        ENV[\u0027OS_IDENTITY_API_VERSION\u0027] \u003d \u00273\u0027"},{"line_number":249,"context_line":"    \tend"},{"line_number":250,"context_line":""},{"line_number":251,"context_line":"    \tbefore(:example) { set_env }"},{"line_number":252,"context_line":"      it \u0027should create a trust between adminv3 and user1\u0027 do"}],"source_content_type":"text/x-ruby","patch_set":28,"id":"ba15a1d1_5cf2b8d3","line":249,"updated":"2015-09-15 14:42:49.000000000","message":"Tab","commit_id":"485b39056c5297a5aca4debd05e8f9ccdd717cee"},{"author":{"_account_id":6525,"name":"Gilles Dubreuil","email":"gilles@redhat.com","username":"q-1illes-a"},"change_message_id":"406255e13147d9ca953107e994f3d704cf93abc6","unresolved":false,"context_lines":[{"line_number":246,"context_line":"        ENV[\u0027OS_PROJECT_DOMAIN_NAME\u0027] \u003d \u0027admin_domain\u0027"},{"line_number":247,"context_line":"        ENV[\u0027OS_AUTH_URL\u0027] \u003d \u0027http://127.0.0.1:5000/v3\u0027"},{"line_number":248,"context_line":"        ENV[\u0027OS_IDENTITY_API_VERSION\u0027] \u003d \u00273\u0027"},{"line_number":249,"context_line":"    \tend"},{"line_number":250,"context_line":""},{"line_number":251,"context_line":"    \tbefore(:example) { set_env }"},{"line_number":252,"context_line":"      it \u0027should create a trust between adminv3 and user1\u0027 do"}],"source_content_type":"text/x-ruby","patch_set":28,"id":"ba15a1d1_34d822ef","line":249,"in_reply_to":"ba15a1d1_5cf2b8d3","updated":"2015-09-16 02:00:08.000000000","message":"Done","commit_id":"485b39056c5297a5aca4debd05e8f9ccdd717cee"},{"author":{"_account_id":8297,"name":"Sofer Athlan-Guyot","email":"sathlang@redhat.com","username":"chem"},"change_message_id":"91ecacfd44132152be085bca7549106f47e35271","unresolved":false,"context_lines":[{"line_number":248,"context_line":"        ENV[\u0027OS_IDENTITY_API_VERSION\u0027] \u003d \u00273\u0027"},{"line_number":249,"context_line":"    \tend"},{"line_number":250,"context_line":""},{"line_number":251,"context_line":"    \tbefore(:example) { set_env }"},{"line_number":252,"context_line":"      it \u0027should create a trust between adminv3 and user1\u0027 do"},{"line_number":253,"context_line":"        shell(%q{puppet apply -e \"keystone_trust {\u0027test\u0027: trustor_user \u003d\u003e \u0027adminv3\u0027, trustor_domain \u003d\u003e \u0027admin_domain\u0027, trustee_user \u003d\u003e \u0027user1\u0027, trustee_domain \u003d\u003e \u0027admin_domain\u0027, project \u003d\u003e \u0027openstackv3\u0027, project_domain \u003d\u003e \u0027admin_domain\u0027, roles \u003d\u003e [\u0027admin\u0027], impersonate \u003d\u003e true, ensure \u003d\u003e present}\"}) do |r|"},{"line_number":254,"context_line":"          expect(r.stdout).to match(/ensure: created/)"}],"source_content_type":"text/x-ruby","patch_set":28,"id":"ba15a1d1_7ced3cee","line":251,"updated":"2015-09-15 14:42:49.000000000","message":"Tab","commit_id":"485b39056c5297a5aca4debd05e8f9ccdd717cee"},{"author":{"_account_id":6525,"name":"Gilles Dubreuil","email":"gilles@redhat.com","username":"q-1illes-a"},"change_message_id":"406255e13147d9ca953107e994f3d704cf93abc6","unresolved":false,"context_lines":[{"line_number":248,"context_line":"        ENV[\u0027OS_IDENTITY_API_VERSION\u0027] \u003d \u00273\u0027"},{"line_number":249,"context_line":"    \tend"},{"line_number":250,"context_line":""},{"line_number":251,"context_line":"    \tbefore(:example) { set_env }"},{"line_number":252,"context_line":"      it \u0027should create a trust between adminv3 and user1\u0027 do"},{"line_number":253,"context_line":"        shell(%q{puppet apply -e \"keystone_trust {\u0027test\u0027: trustor_user \u003d\u003e \u0027adminv3\u0027, trustor_domain \u003d\u003e \u0027admin_domain\u0027, trustee_user \u003d\u003e \u0027user1\u0027, trustee_domain \u003d\u003e \u0027admin_domain\u0027, project \u003d\u003e \u0027openstackv3\u0027, project_domain \u003d\u003e \u0027admin_domain\u0027, roles \u003d\u003e [\u0027admin\u0027], impersonate \u003d\u003e true, ensure \u003d\u003e present}\"}) do |r|"},{"line_number":254,"context_line":"          expect(r.stdout).to match(/ensure: created/)"}],"source_content_type":"text/x-ruby","patch_set":28,"id":"ba15a1d1_d4e686b3","line":251,"in_reply_to":"ba15a1d1_7ced3cee","updated":"2015-09-16 02:00:08.000000000","message":"Done","commit_id":"485b39056c5297a5aca4debd05e8f9ccdd717cee"}],"spec/acceptance/keystone_wsgi_apache_spec.rb":[{"author":{"_account_id":8297,"name":"Sofer Athlan-Guyot","email":"sathlang@redhat.com","username":"chem"},"change_message_id":"40b8bd066518b7a07c2c01a254e8ae97ac3e7e3a","unresolved":false,"context_lines":[{"line_number":237,"context_line":"          expect(r.stderr).to be_empty"},{"line_number":238,"context_line":"        end"},{"line_number":239,"context_line":"      end"},{"line_number":240,"context_line":"      it \u0027should create a trust between adminv3 and user1\u0027 do"},{"line_number":241,"context_line":"        ENV[\u0027OS_USERNAME\u0027] \u003d \u0027adminv3\u0027"},{"line_number":242,"context_line":"        ENV[\u0027OS_PASSWORD\u0027] \u003d \u0027a_big_secret\u0027"},{"line_number":243,"context_line":"        ENV[\u0027OS_PROJECT_NAME\u0027] \u003d \u0027openstackv3\u0027"}],"source_content_type":"text/x-ruby","patch_set":19,"id":"da20952f_327874c4","line":240,"updated":"2015-08-27 13:08:58.000000000","message":"The same as in basic_keystone_spec.","commit_id":"4a79255d58efbde72aec0de42be89a4f04f20b30"},{"author":{"_account_id":6525,"name":"Gilles Dubreuil","email":"gilles@redhat.com","username":"q-1illes-a"},"change_message_id":"afee1af6980db89a2fede4b9baad3313746ad441","unresolved":false,"context_lines":[{"line_number":237,"context_line":"          expect(r.stderr).to be_empty"},{"line_number":238,"context_line":"        end"},{"line_number":239,"context_line":"      end"},{"line_number":240,"context_line":"      it \u0027should create a trust between adminv3 and user1\u0027 do"},{"line_number":241,"context_line":"        ENV[\u0027OS_USERNAME\u0027] \u003d \u0027adminv3\u0027"},{"line_number":242,"context_line":"        ENV[\u0027OS_PASSWORD\u0027] \u003d \u0027a_big_secret\u0027"},{"line_number":243,"context_line":"        ENV[\u0027OS_PROJECT_NAME\u0027] \u003d \u0027openstackv3\u0027"}],"source_content_type":"text/x-ruby","patch_set":19,"id":"da20952f_312276ba","line":240,"in_reply_to":"da20952f_327874c4","updated":"2015-08-28 13:01:30.000000000","message":"Ack","commit_id":"4a79255d58efbde72aec0de42be89a4f04f20b30"},{"author":{"_account_id":8297,"name":"Sofer Athlan-Guyot","email":"sathlang@redhat.com","username":"chem"},"change_message_id":"91ecacfd44132152be085bca7549106f47e35271","unresolved":false,"context_lines":[{"line_number":245,"context_line":"        ENV[\u0027OS_PROJECT_DOMAIN_NAME\u0027] \u003d \u0027admin_domain\u0027"},{"line_number":246,"context_line":"        ENV[\u0027OS_AUTH_URL\u0027] \u003d \u0027http://127.0.0.1:5000/v3\u0027"},{"line_number":247,"context_line":"        ENV[\u0027OS_IDENTITY_API_VERSION\u0027] \u003d \u00273\u0027"},{"line_number":248,"context_line":"    \tend"},{"line_number":249,"context_line":""},{"line_number":250,"context_line":"    \tbefore(:example) { set_env }"},{"line_number":251,"context_line":""}],"source_content_type":"text/x-ruby","patch_set":28,"id":"ba15a1d1_fcb70cf3","line":248,"updated":"2015-09-15 14:42:49.000000000","message":"tab","commit_id":"485b39056c5297a5aca4debd05e8f9ccdd717cee"},{"author":{"_account_id":6525,"name":"Gilles Dubreuil","email":"gilles@redhat.com","username":"q-1illes-a"},"change_message_id":"406255e13147d9ca953107e994f3d704cf93abc6","unresolved":false,"context_lines":[{"line_number":245,"context_line":"        ENV[\u0027OS_PROJECT_DOMAIN_NAME\u0027] \u003d \u0027admin_domain\u0027"},{"line_number":246,"context_line":"        ENV[\u0027OS_AUTH_URL\u0027] \u003d \u0027http://127.0.0.1:5000/v3\u0027"},{"line_number":247,"context_line":"        ENV[\u0027OS_IDENTITY_API_VERSION\u0027] \u003d \u00273\u0027"},{"line_number":248,"context_line":"    \tend"},{"line_number":249,"context_line":""},{"line_number":250,"context_line":"    \tbefore(:example) { set_env }"},{"line_number":251,"context_line":""}],"source_content_type":"text/x-ruby","patch_set":28,"id":"ba15a1d1_74ec5a8f","line":248,"in_reply_to":"ba15a1d1_fcb70cf3","updated":"2015-09-16 02:00:08.000000000","message":"Done","commit_id":"485b39056c5297a5aca4debd05e8f9ccdd717cee"},{"author":{"_account_id":8297,"name":"Sofer Athlan-Guyot","email":"sathlang@redhat.com","username":"chem"},"change_message_id":"91ecacfd44132152be085bca7549106f47e35271","unresolved":false,"context_lines":[{"line_number":247,"context_line":"        ENV[\u0027OS_IDENTITY_API_VERSION\u0027] \u003d \u00273\u0027"},{"line_number":248,"context_line":"    \tend"},{"line_number":249,"context_line":""},{"line_number":250,"context_line":"    \tbefore(:example) { set_env }"},{"line_number":251,"context_line":""},{"line_number":252,"context_line":"      it \u0027should create a trust between adminv3 and user1\u0027 do"},{"line_number":253,"context_line":"        shell(%q{puppet apply -e \"keystone_trust {\u0027test\u0027: trustor_user \u003d\u003e \u0027adminv3\u0027, trustor_domain \u003d\u003e \u0027admin_domain\u0027, trustee_user \u003d\u003e \u0027user1\u0027, trustee_domain \u003d\u003e \u0027admin_domain\u0027, project \u003d\u003e \u0027openstackv3\u0027, project_domain \u003d\u003e \u0027admin_domain\u0027, roles \u003d\u003e [\u0027admin\u0027], impersonate \u003d\u003e true, ensure \u003d\u003e present}\"}) do |r|"}],"source_content_type":"text/x-ruby","patch_set":28,"id":"ba15a1d1_9ccff07e","line":250,"updated":"2015-09-15 14:42:49.000000000","message":"tab","commit_id":"485b39056c5297a5aca4debd05e8f9ccdd717cee"},{"author":{"_account_id":6525,"name":"Gilles Dubreuil","email":"gilles@redhat.com","username":"q-1illes-a"},"change_message_id":"406255e13147d9ca953107e994f3d704cf93abc6","unresolved":false,"context_lines":[{"line_number":247,"context_line":"        ENV[\u0027OS_IDENTITY_API_VERSION\u0027] \u003d \u00273\u0027"},{"line_number":248,"context_line":"    \tend"},{"line_number":249,"context_line":""},{"line_number":250,"context_line":"    \tbefore(:example) { set_env }"},{"line_number":251,"context_line":""},{"line_number":252,"context_line":"      it \u0027should create a trust between adminv3 and user1\u0027 do"},{"line_number":253,"context_line":"        shell(%q{puppet apply -e \"keystone_trust {\u0027test\u0027: trustor_user \u003d\u003e \u0027adminv3\u0027, trustor_domain \u003d\u003e \u0027admin_domain\u0027, trustee_user \u003d\u003e \u0027user1\u0027, trustee_domain \u003d\u003e \u0027admin_domain\u0027, project \u003d\u003e \u0027openstackv3\u0027, project_domain \u003d\u003e \u0027admin_domain\u0027, roles \u003d\u003e [\u0027admin\u0027], impersonate \u003d\u003e true, ensure \u003d\u003e present}\"}) do |r|"}],"source_content_type":"text/x-ruby","patch_set":28,"id":"ba15a1d1_34ffc235","line":250,"in_reply_to":"ba15a1d1_9ccff07e","updated":"2015-09-16 02:00:08.000000000","message":"Done","commit_id":"485b39056c5297a5aca4debd05e8f9ccdd717cee"}],"spec/unit/provider/keystone_trust/openstack_spec.rb":[{"author":{"_account_id":9983,"name":"Richard Megginson","email":"rmeggins@redhat.com","username":"rmeggins"},"change_message_id":"821fb42c8028495d71fe350d8259d04c687cfc0b","unresolved":false,"context_lines":[{"line_number":39,"context_line":"    it_behaves_like \u0027authenticated with environment variables\u0027 do"},{"line_number":40,"context_line":"      describe \u0027#create\u0027 do"},{"line_number":41,"context_line":"        it \u0027creates a trust\u0027 do"},{"line_number":42,"context_line":"          provider.class.stubs(:openstack)"},{"line_number":43,"context_line":"                        .with(\u0027endpoint\u0027, \u0027list\u0027, \u0027--quiet\u0027, \u0027--format\u0027, \u0027csv\u0027, [])"},{"line_number":44,"context_line":"                        .returns(\u0027\"ID\",\"Expires At\",\"Impersonation\",\"Project ID\",\"Trustee User ID\",\"Trustor User ID\""},{"line_number":45,"context_line":"\"3b98a91e56df4f4f879ae982083fdfd4\",\"2100-01-01T00:00:00.000000Z\",True,\"78e22bb71862481dbe8335b4ce4551e8\",\"ac994e5701d644b6a3ac78c9dd1ad04a\",\"24b047f52ff94029923f7f0ea982f03f\""}],"source_content_type":"text/x-ruby","patch_set":6,"id":"3a50d1a3_107e4619","line":42,"updated":"2015-07-21 16:54:50.000000000","message":"use `expects`, not `stubs`","commit_id":"4b9857b4b0bc04f18f5e5d65793eb81a47d1dddc"},{"author":{"_account_id":6525,"name":"Gilles Dubreuil","email":"gilles@redhat.com","username":"q-1illes-a"},"change_message_id":"35f5290ba9d166c8e2c25edbe70648eacff089e2","unresolved":false,"context_lines":[{"line_number":39,"context_line":"    it_behaves_like \u0027authenticated with environment variables\u0027 do"},{"line_number":40,"context_line":"      describe \u0027#create\u0027 do"},{"line_number":41,"context_line":"        it \u0027creates a trust\u0027 do"},{"line_number":42,"context_line":"          provider.class.stubs(:openstack)"},{"line_number":43,"context_line":"                        .with(\u0027endpoint\u0027, \u0027list\u0027, \u0027--quiet\u0027, \u0027--format\u0027, \u0027csv\u0027, [])"},{"line_number":44,"context_line":"                        .returns(\u0027\"ID\",\"Expires At\",\"Impersonation\",\"Project ID\",\"Trustee User ID\",\"Trustor User ID\""},{"line_number":45,"context_line":"\"3b98a91e56df4f4f879ae982083fdfd4\",\"2100-01-01T00:00:00.000000Z\",True,\"78e22bb71862481dbe8335b4ce4551e8\",\"ac994e5701d644b6a3ac78c9dd1ad04a\",\"24b047f52ff94029923f7f0ea982f03f\""}],"source_content_type":"text/x-ruby","patch_set":6,"id":"3a50d1a3_e643d240","line":42,"in_reply_to":"3a50d1a3_107e4619","updated":"2015-07-22 00:32:45.000000000","message":"Done","commit_id":"4b9857b4b0bc04f18f5e5d65793eb81a47d1dddc"},{"author":{"_account_id":9983,"name":"Richard Megginson","email":"rmeggins@redhat.com","username":"rmeggins"},"change_message_id":"821fb42c8028495d71fe350d8259d04c687cfc0b","unresolved":false,"context_lines":[{"line_number":44,"context_line":"                        .returns(\u0027\"ID\",\"Expires At\",\"Impersonation\",\"Project ID\",\"Trustee User ID\",\"Trustor User ID\""},{"line_number":45,"context_line":"\"3b98a91e56df4f4f879ae982083fdfd4\",\"2100-01-01T00:00:00.000000Z\",True,\"78e22bb71862481dbe8335b4ce4551e8\",\"ac994e5701d644b6a3ac78c9dd1ad04a\",\"24b047f52ff94029923f7f0ea982f03f\""},{"line_number":46,"context_line":"\u0027)"},{"line_number":47,"context_line":"          provider.class.stubs(:openstack)"},{"line_number":48,"context_line":"                        .with(\u0027trust\u0027, \u0027create\u0027, \u0027--format\u0027, \u0027shell\u0027, [\u0027--project\u0027, \u002778e22bb71862481dbe8335b4ce4551e8\u0027, \u0027--role\u0027, \u0027admin\u0027, \u0027ac994e5701d644b6a3ac78c9dd1ad04a\u0027, \u002724b047f52ff94029923f7f0ea982f03f\u0027, \u0027--expiration\u0027, \u00272100-01-01T00:00:00.0\u0027])"},{"line_number":49,"context_line":"                        .returns(\u0027deleted_at\u003d\"None\""},{"line_number":50,"context_line":"expires_at\u003d\"2100-01-01T00:00:00.000000Z\""}],"source_content_type":"text/x-ruby","patch_set":6,"id":"3a50d1a3_f072ba48","line":47,"updated":"2015-07-21 16:54:50.000000000","message":"use `expects`, not `stubs`","commit_id":"4b9857b4b0bc04f18f5e5d65793eb81a47d1dddc"},{"author":{"_account_id":6525,"name":"Gilles Dubreuil","email":"gilles@redhat.com","username":"q-1illes-a"},"change_message_id":"35f5290ba9d166c8e2c25edbe70648eacff089e2","unresolved":false,"context_lines":[{"line_number":44,"context_line":"                        .returns(\u0027\"ID\",\"Expires At\",\"Impersonation\",\"Project ID\",\"Trustee User ID\",\"Trustor User ID\""},{"line_number":45,"context_line":"\"3b98a91e56df4f4f879ae982083fdfd4\",\"2100-01-01T00:00:00.000000Z\",True,\"78e22bb71862481dbe8335b4ce4551e8\",\"ac994e5701d644b6a3ac78c9dd1ad04a\",\"24b047f52ff94029923f7f0ea982f03f\""},{"line_number":46,"context_line":"\u0027)"},{"line_number":47,"context_line":"          provider.class.stubs(:openstack)"},{"line_number":48,"context_line":"                        .with(\u0027trust\u0027, \u0027create\u0027, \u0027--format\u0027, \u0027shell\u0027, [\u0027--project\u0027, \u002778e22bb71862481dbe8335b4ce4551e8\u0027, \u0027--role\u0027, \u0027admin\u0027, \u0027ac994e5701d644b6a3ac78c9dd1ad04a\u0027, \u002724b047f52ff94029923f7f0ea982f03f\u0027, \u0027--expiration\u0027, \u00272100-01-01T00:00:00.0\u0027])"},{"line_number":49,"context_line":"                        .returns(\u0027deleted_at\u003d\"None\""},{"line_number":50,"context_line":"expires_at\u003d\"2100-01-01T00:00:00.000000Z\""}],"source_content_type":"text/x-ruby","patch_set":6,"id":"3a50d1a3_465ac62b","line":47,"in_reply_to":"3a50d1a3_f072ba48","updated":"2015-07-22 00:32:45.000000000","message":"Done","commit_id":"4b9857b4b0bc04f18f5e5d65793eb81a47d1dddc"},{"author":{"_account_id":9983,"name":"Richard Megginson","email":"rmeggins@redhat.com","username":"rmeggins"},"change_message_id":"821fb42c8028495d71fe350d8259d04c687cfc0b","unresolved":false,"context_lines":[{"line_number":64,"context_line":""},{"line_number":65,"context_line":"      describe \u0027#destroy\u0027 do"},{"line_number":66,"context_line":"        it \u0027destroys a trust\u0027 do"},{"line_number":67,"context_line":"          provider.class.stubs(:openstack)"},{"line_number":68,"context_line":"                        .with(\u0027trust\u0027, \u0027list\u0027, \u0027--quiet\u0027, \u0027--format\u0027, \u0027csv\u0027, [])"},{"line_number":69,"context_line":"                        .returns(\u0027\"ID\",\"Expires At\",\"Impersonation\",\"Project ID\",\"Trustee User ID\",\"Trustor User ID\""},{"line_number":70,"context_line":"\"3b98a91e56df4f4f879ae982083fdfd4\",\"2100-01-01T00:00:00.000000Z\",True,\"78e22bb71862481dbe8335b4ce4551e8\",\"ac994e5701d644b6a3ac78c9dd1ad04a\",\"24b047f52ff94029923f7f0ea982f03f\""}],"source_content_type":"text/x-ruby","patch_set":6,"id":"3a50d1a3_30a02290","line":67,"updated":"2015-07-21 16:54:50.000000000","message":"use `expects`, not `stubs`","commit_id":"4b9857b4b0bc04f18f5e5d65793eb81a47d1dddc"},{"author":{"_account_id":6525,"name":"Gilles Dubreuil","email":"gilles@redhat.com","username":"q-1illes-a"},"change_message_id":"35f5290ba9d166c8e2c25edbe70648eacff089e2","unresolved":false,"context_lines":[{"line_number":64,"context_line":""},{"line_number":65,"context_line":"      describe \u0027#destroy\u0027 do"},{"line_number":66,"context_line":"        it \u0027destroys a trust\u0027 do"},{"line_number":67,"context_line":"          provider.class.stubs(:openstack)"},{"line_number":68,"context_line":"                        .with(\u0027trust\u0027, \u0027list\u0027, \u0027--quiet\u0027, \u0027--format\u0027, \u0027csv\u0027, [])"},{"line_number":69,"context_line":"                        .returns(\u0027\"ID\",\"Expires At\",\"Impersonation\",\"Project ID\",\"Trustee User ID\",\"Trustor User ID\""},{"line_number":70,"context_line":"\"3b98a91e56df4f4f879ae982083fdfd4\",\"2100-01-01T00:00:00.000000Z\",True,\"78e22bb71862481dbe8335b4ce4551e8\",\"ac994e5701d644b6a3ac78c9dd1ad04a\",\"24b047f52ff94029923f7f0ea982f03f\""}],"source_content_type":"text/x-ruby","patch_set":6,"id":"3a50d1a3_26553af9","line":67,"in_reply_to":"3a50d1a3_30a02290","updated":"2015-07-22 00:32:45.000000000","message":"Done","commit_id":"4b9857b4b0bc04f18f5e5d65793eb81a47d1dddc"},{"author":{"_account_id":9983,"name":"Richard Megginson","email":"rmeggins@redhat.com","username":"rmeggins"},"change_message_id":"821fb42c8028495d71fe350d8259d04c687cfc0b","unresolved":false,"context_lines":[{"line_number":69,"context_line":"                        .returns(\u0027\"ID\",\"Expires At\",\"Impersonation\",\"Project ID\",\"Trustee User ID\",\"Trustor User ID\""},{"line_number":70,"context_line":"\"3b98a91e56df4f4f879ae982083fdfd4\",\"2100-01-01T00:00:00.000000Z\",True,\"78e22bb71862481dbe8335b4ce4551e8\",\"ac994e5701d644b6a3ac78c9dd1ad04a\",\"24b047f52ff94029923f7f0ea982f03f\""},{"line_number":71,"context_line":"\u0027)"},{"line_number":72,"context_line":"          provider.class.stubs(:openstack)"},{"line_number":73,"context_line":"                        .with(\u0027trust\u0027, \u0027delete\u0027, [])"},{"line_number":74,"context_line":"          provider.destroy"},{"line_number":75,"context_line":"          expect(provider.exists?).to be_falsey"}],"source_content_type":"text/x-ruby","patch_set":6,"id":"3a50d1a3_d0f3fe9c","line":72,"updated":"2015-07-21 16:54:50.000000000","message":"use `expects`","commit_id":"4b9857b4b0bc04f18f5e5d65793eb81a47d1dddc"},{"author":{"_account_id":6525,"name":"Gilles Dubreuil","email":"gilles@redhat.com","username":"q-1illes-a"},"change_message_id":"35f5290ba9d166c8e2c25edbe70648eacff089e2","unresolved":false,"context_lines":[{"line_number":69,"context_line":"                        .returns(\u0027\"ID\",\"Expires At\",\"Impersonation\",\"Project ID\",\"Trustee User ID\",\"Trustor User ID\""},{"line_number":70,"context_line":"\"3b98a91e56df4f4f879ae982083fdfd4\",\"2100-01-01T00:00:00.000000Z\",True,\"78e22bb71862481dbe8335b4ce4551e8\",\"ac994e5701d644b6a3ac78c9dd1ad04a\",\"24b047f52ff94029923f7f0ea982f03f\""},{"line_number":71,"context_line":"\u0027)"},{"line_number":72,"context_line":"          provider.class.stubs(:openstack)"},{"line_number":73,"context_line":"                        .with(\u0027trust\u0027, \u0027delete\u0027, [])"},{"line_number":74,"context_line":"          provider.destroy"},{"line_number":75,"context_line":"          expect(provider.exists?).to be_falsey"}],"source_content_type":"text/x-ruby","patch_set":6,"id":"3a50d1a3_86544eff","line":72,"in_reply_to":"3a50d1a3_d0f3fe9c","updated":"2015-07-22 00:32:45.000000000","message":"Done","commit_id":"4b9857b4b0bc04f18f5e5d65793eb81a47d1dddc"},{"author":{"_account_id":9983,"name":"Richard Megginson","email":"rmeggins@redhat.com","username":"rmeggins"},"change_message_id":"821fb42c8028495d71fe350d8259d04c687cfc0b","unresolved":false,"context_lines":[{"line_number":70,"context_line":"\"3b98a91e56df4f4f879ae982083fdfd4\",\"2100-01-01T00:00:00.000000Z\",True,\"78e22bb71862481dbe8335b4ce4551e8\",\"ac994e5701d644b6a3ac78c9dd1ad04a\",\"24b047f52ff94029923f7f0ea982f03f\""},{"line_number":71,"context_line":"\u0027)"},{"line_number":72,"context_line":"          provider.class.stubs(:openstack)"},{"line_number":73,"context_line":"                        .with(\u0027trust\u0027, \u0027delete\u0027, [])"},{"line_number":74,"context_line":"          provider.destroy"},{"line_number":75,"context_line":"          expect(provider.exists?).to be_falsey"},{"line_number":76,"context_line":"        end"}],"source_content_type":"text/x-ruby","patch_set":6,"id":"3a50d1a3_70022a71","line":73,"updated":"2015-07-21 16:54:50.000000000","message":"use::\n\n    provider.instance_variable_get(\u0027@property_hash\u0027)[:id] \u003d \u0027my-project-id\u0027\n\nto set the id of the trust to delete, rather than [].  See https://github.com/openstack/puppet-keystone/blob/master/spec/unit/provider/keystone_tenant/openstack_spec.rb#L91","commit_id":"4b9857b4b0bc04f18f5e5d65793eb81a47d1dddc"},{"author":{"_account_id":6525,"name":"Gilles Dubreuil","email":"gilles@redhat.com","username":"q-1illes-a"},"change_message_id":"35f5290ba9d166c8e2c25edbe70648eacff089e2","unresolved":false,"context_lines":[{"line_number":70,"context_line":"\"3b98a91e56df4f4f879ae982083fdfd4\",\"2100-01-01T00:00:00.000000Z\",True,\"78e22bb71862481dbe8335b4ce4551e8\",\"ac994e5701d644b6a3ac78c9dd1ad04a\",\"24b047f52ff94029923f7f0ea982f03f\""},{"line_number":71,"context_line":"\u0027)"},{"line_number":72,"context_line":"          provider.class.stubs(:openstack)"},{"line_number":73,"context_line":"                        .with(\u0027trust\u0027, \u0027delete\u0027, [])"},{"line_number":74,"context_line":"          provider.destroy"},{"line_number":75,"context_line":"          expect(provider.exists?).to be_falsey"},{"line_number":76,"context_line":"        end"}],"source_content_type":"text/x-ruby","patch_set":6,"id":"3a50d1a3_664fc26b","line":73,"in_reply_to":"3a50d1a3_70022a71","updated":"2015-07-22 00:32:45.000000000","message":"Done","commit_id":"4b9857b4b0bc04f18f5e5d65793eb81a47d1dddc"},{"author":{"_account_id":9983,"name":"Richard Megginson","email":"rmeggins@redhat.com","username":"rmeggins"},"change_message_id":"821fb42c8028495d71fe350d8259d04c687cfc0b","unresolved":false,"context_lines":[{"line_number":77,"context_line":""},{"line_number":78,"context_line":"        context \u0027when trust does not exist\u0027 do"},{"line_number":79,"context_line":"          subject(:response) do"},{"line_number":80,"context_line":"            provider.class.stubs(:openstack)"},{"line_number":81,"context_line":"                          .with(\u0027trust\u0027, \u0027list\u0027, \u0027--quiet\u0027, \u0027--format\u0027, \u0027csv\u0027, [])"},{"line_number":82,"context_line":"                          .returns(\u0027\"ID\",\"Expires At\",\"Impersonation\",\"Project ID\",\"Trustee User ID\",\"Trustor User ID\"\u0027)"},{"line_number":83,"context_line":"            response \u003d provider.exists?"}],"source_content_type":"text/x-ruby","patch_set":6,"id":"3a50d1a3_902c9603","line":80,"updated":"2015-07-21 16:54:50.000000000","message":"use `expects`","commit_id":"4b9857b4b0bc04f18f5e5d65793eb81a47d1dddc"},{"author":{"_account_id":6525,"name":"Gilles Dubreuil","email":"gilles@redhat.com","username":"q-1illes-a"},"change_message_id":"35f5290ba9d166c8e2c25edbe70648eacff089e2","unresolved":false,"context_lines":[{"line_number":77,"context_line":""},{"line_number":78,"context_line":"        context \u0027when trust does not exist\u0027 do"},{"line_number":79,"context_line":"          subject(:response) do"},{"line_number":80,"context_line":"            provider.class.stubs(:openstack)"},{"line_number":81,"context_line":"                          .with(\u0027trust\u0027, \u0027list\u0027, \u0027--quiet\u0027, \u0027--format\u0027, \u0027csv\u0027, [])"},{"line_number":82,"context_line":"                          .returns(\u0027\"ID\",\"Expires At\",\"Impersonation\",\"Project ID\",\"Trustee User ID\",\"Trustor User ID\"\u0027)"},{"line_number":83,"context_line":"            response \u003d provider.exists?"}],"source_content_type":"text/x-ruby","patch_set":6,"id":"3a50d1a3_06411e38","line":80,"in_reply_to":"3a50d1a3_902c9603","updated":"2015-07-22 00:32:45.000000000","message":"Done","commit_id":"4b9857b4b0bc04f18f5e5d65793eb81a47d1dddc"},{"author":{"_account_id":9983,"name":"Richard Megginson","email":"rmeggins@redhat.com","username":"rmeggins"},"change_message_id":"821fb42c8028495d71fe350d8259d04c687cfc0b","unresolved":false,"context_lines":[{"line_number":88,"context_line":""},{"line_number":89,"context_line":"      describe \u0027#instances\u0027 do"},{"line_number":90,"context_line":"        it \u0027finds every service\u0027 do"},{"line_number":91,"context_line":"          provider.class.stubs(:openstack)"},{"line_number":92,"context_line":"                        .with(\u0027trust\u0027, \u0027list\u0027, \u0027--quiet\u0027, \u0027--format\u0027, \u0027csv\u0027, [])"},{"line_number":93,"context_line":"                        .returns(\u0027\"ID\",\"Expires At\",\"Impersonation\",\"Project ID\",\"Trustee User ID\",\"Trustor User ID\""},{"line_number":94,"context_line":"\"3b98a91e56df4f4f879ae982083fdfd4\",\"2100-01-01T00:00:00.000000Z\",True,\"78e22bb71862481dbe8335b4ce4551e8\",\"ac994e5701d644b6a3ac78c9dd1ad04a\",\"24b047f52ff94029923f7f0ea982f03f\""}],"source_content_type":"text/x-ruby","patch_set":6,"id":"3a50d1a3_b02f52f5","line":91,"updated":"2015-07-21 16:54:50.000000000","message":"use `expects`","commit_id":"4b9857b4b0bc04f18f5e5d65793eb81a47d1dddc"},{"author":{"_account_id":6525,"name":"Gilles Dubreuil","email":"gilles@redhat.com","username":"q-1illes-a"},"change_message_id":"35f5290ba9d166c8e2c25edbe70648eacff089e2","unresolved":false,"context_lines":[{"line_number":88,"context_line":""},{"line_number":89,"context_line":"      describe \u0027#instances\u0027 do"},{"line_number":90,"context_line":"        it \u0027finds every service\u0027 do"},{"line_number":91,"context_line":"          provider.class.stubs(:openstack)"},{"line_number":92,"context_line":"                        .with(\u0027trust\u0027, \u0027list\u0027, \u0027--quiet\u0027, \u0027--format\u0027, \u0027csv\u0027, [])"},{"line_number":93,"context_line":"                        .returns(\u0027\"ID\",\"Expires At\",\"Impersonation\",\"Project ID\",\"Trustee User ID\",\"Trustor User ID\""},{"line_number":94,"context_line":"\"3b98a91e56df4f4f879ae982083fdfd4\",\"2100-01-01T00:00:00.000000Z\",True,\"78e22bb71862481dbe8335b4ce4551e8\",\"ac994e5701d644b6a3ac78c9dd1ad04a\",\"24b047f52ff94029923f7f0ea982f03f\""}],"source_content_type":"text/x-ruby","patch_set":6,"id":"3a50d1a3_a6494a62","line":91,"in_reply_to":"3a50d1a3_b02f52f5","updated":"2015-07-22 00:32:45.000000000","message":"Done","commit_id":"4b9857b4b0bc04f18f5e5d65793eb81a47d1dddc"},{"author":{"_account_id":8297,"name":"Sofer Athlan-Guyot","email":"sathlang@redhat.com","username":"chem"},"change_message_id":"40b8bd066518b7a07c2c01a254e8ae97ac3e7e3a","unresolved":false,"context_lines":[{"line_number":5,"context_line":"provider_class \u003d Puppet::Type.type(:keystone_trust).provider(:openstack)"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"describe provider_class do"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"  shared_examples \u0027authenticated with environment variables\u0027 do"},{"line_number":10,"context_line":"    ENV[\u0027OS_USERNAME\u0027]     \u003d \u0027test\u0027"},{"line_number":11,"context_line":"    ENV[\u0027OS_PASSWORD\u0027]     \u003d \u0027abc123\u0027"}],"source_content_type":"text/x-ruby","patch_set":19,"id":"da20952f_b2180486","line":8,"updated":"2015-08-27 13:08:58.000000000","message":"The same as in basic_keystone_spec.","commit_id":"4a79255d58efbde72aec0de42be89a4f04f20b30"},{"author":{"_account_id":6525,"name":"Gilles Dubreuil","email":"gilles@redhat.com","username":"q-1illes-a"},"change_message_id":"afee1af6980db89a2fede4b9baad3313746ad441","unresolved":false,"context_lines":[{"line_number":5,"context_line":"provider_class \u003d Puppet::Type.type(:keystone_trust).provider(:openstack)"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"describe provider_class do"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"  shared_examples \u0027authenticated with environment variables\u0027 do"},{"line_number":10,"context_line":"    ENV[\u0027OS_USERNAME\u0027]     \u003d \u0027test\u0027"},{"line_number":11,"context_line":"    ENV[\u0027OS_PASSWORD\u0027]     \u003d \u0027abc123\u0027"}],"source_content_type":"text/x-ruby","patch_set":19,"id":"da20952f_b11c4678","line":8,"in_reply_to":"da20952f_b2180486","updated":"2015-08-28 13:01:30.000000000","message":"Ack","commit_id":"4a79255d58efbde72aec0de42be89a4f04f20b30"},{"author":{"_account_id":8297,"name":"Sofer Athlan-Guyot","email":"sathlang@redhat.com","username":"chem"},"change_message_id":"91ecacfd44132152be085bca7549106f47e35271","unresolved":false,"context_lines":[{"line_number":11,"context_line":"    ENV[\u0027OS_PASSWORD\u0027]     \u003d \u0027abc123\u0027"},{"line_number":12,"context_line":"    ENV[\u0027OS_PROJECT_NAME\u0027] \u003d \u0027test\u0027"},{"line_number":13,"context_line":"    ENV[\u0027OS_AUTH_URL\u0027]     \u003d \u0027http://127.0.0.1:5000/v3\u0027"},{"line_number":14,"context_line":"\tend"},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"\tbefore(:example) { set_env }"},{"line_number":17,"context_line":""}],"source_content_type":"text/x-ruby","patch_set":28,"id":"ba15a1d1_1cbbe0e6","line":14,"updated":"2015-09-15 14:42:49.000000000","message":"tab","commit_id":"485b39056c5297a5aca4debd05e8f9ccdd717cee"},{"author":{"_account_id":6525,"name":"Gilles Dubreuil","email":"gilles@redhat.com","username":"q-1illes-a"},"change_message_id":"406255e13147d9ca953107e994f3d704cf93abc6","unresolved":false,"context_lines":[{"line_number":11,"context_line":"    ENV[\u0027OS_PASSWORD\u0027]     \u003d \u0027abc123\u0027"},{"line_number":12,"context_line":"    ENV[\u0027OS_PROJECT_NAME\u0027] \u003d \u0027test\u0027"},{"line_number":13,"context_line":"    ENV[\u0027OS_AUTH_URL\u0027]     \u003d \u0027http://127.0.0.1:5000/v3\u0027"},{"line_number":14,"context_line":"\tend"},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"\tbefore(:example) { set_env }"},{"line_number":17,"context_line":""}],"source_content_type":"text/x-ruby","patch_set":28,"id":"ba15a1d1_3486e2b9","line":14,"in_reply_to":"ba15a1d1_1cbbe0e6","updated":"2015-09-16 02:00:08.000000000","message":"Done","commit_id":"485b39056c5297a5aca4debd05e8f9ccdd717cee"},{"author":{"_account_id":8297,"name":"Sofer Athlan-Guyot","email":"sathlang@redhat.com","username":"chem"},"change_message_id":"91ecacfd44132152be085bca7549106f47e35271","unresolved":false,"context_lines":[{"line_number":13,"context_line":"    ENV[\u0027OS_AUTH_URL\u0027]     \u003d \u0027http://127.0.0.1:5000/v3\u0027"},{"line_number":14,"context_line":"\tend"},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"\tbefore(:example) { set_env }"},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"  describe \u0027when managing a trust\u0027 do"},{"line_number":19,"context_line":""}],"source_content_type":"text/x-ruby","patch_set":28,"id":"ba15a1d1_3cbee4d4","line":16,"updated":"2015-09-15 14:42:49.000000000","message":"tab","commit_id":"485b39056c5297a5aca4debd05e8f9ccdd717cee"},{"author":{"_account_id":6525,"name":"Gilles Dubreuil","email":"gilles@redhat.com","username":"q-1illes-a"},"change_message_id":"406255e13147d9ca953107e994f3d704cf93abc6","unresolved":false,"context_lines":[{"line_number":13,"context_line":"    ENV[\u0027OS_AUTH_URL\u0027]     \u003d \u0027http://127.0.0.1:5000/v3\u0027"},{"line_number":14,"context_line":"\tend"},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"\tbefore(:example) { set_env }"},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"  describe \u0027when managing a trust\u0027 do"},{"line_number":19,"context_line":""}],"source_content_type":"text/x-ruby","patch_set":28,"id":"ba15a1d1_d49446e3","line":16,"in_reply_to":"ba15a1d1_3cbee4d4","updated":"2015-09-16 02:00:08.000000000","message":"Done","commit_id":"485b39056c5297a5aca4debd05e8f9ccdd717cee"},{"author":{"_account_id":8297,"name":"Sofer Athlan-Guyot","email":"sathlang@redhat.com","username":"chem"},"change_message_id":"91ecacfd44132152be085bca7549106f47e35271","unresolved":false,"context_lines":[{"line_number":70,"context_line":""},{"line_number":71,"context_line":"      context \u0027when trust does not exist\u0027 do"},{"line_number":72,"context_line":"        subject(:response) do"},{"line_number":73,"context_line":"          response \u003d provider.exists?"},{"line_number":74,"context_line":"        end"},{"line_number":75,"context_line":"        it { is_expected.to be_falsey }"},{"line_number":76,"context_line":"      end"}],"source_content_type":"text/x-ruby","patch_set":28,"id":"ba15a1d1_dcb488f3","line":73,"updated":"2015-09-15 14:42:49.000000000","message":"responce is useless, you can remove the assignment.","commit_id":"485b39056c5297a5aca4debd05e8f9ccdd717cee"},{"author":{"_account_id":6525,"name":"Gilles Dubreuil","email":"gilles@redhat.com","username":"q-1illes-a"},"change_message_id":"406255e13147d9ca953107e994f3d704cf93abc6","unresolved":false,"context_lines":[{"line_number":70,"context_line":""},{"line_number":71,"context_line":"      context \u0027when trust does not exist\u0027 do"},{"line_number":72,"context_line":"        subject(:response) do"},{"line_number":73,"context_line":"          response \u003d provider.exists?"},{"line_number":74,"context_line":"        end"},{"line_number":75,"context_line":"        it { is_expected.to be_falsey }"},{"line_number":76,"context_line":"      end"}],"source_content_type":"text/x-ruby","patch_set":28,"id":"ba15a1d1_223784e4","line":73,"in_reply_to":"ba15a1d1_dcb488f3","updated":"2015-09-16 02:00:08.000000000","message":"I missed that one, will do it. Thanks","commit_id":"485b39056c5297a5aca4debd05e8f9ccdd717cee"}]}
