)]}'
{"lib/puppet/provider/nova_service/openstack.rb":[{"author":{"_account_id":8482,"name":"Colleen Murphy","email":"colleen@gazlene.net","username":"krinkle"},"change_message_id":"5a8cf1a5e1f3ca7d1e555c186184a5cab5a026d5","unresolved":false,"context_lines":[{"line_number":8,"context_line":"    Provider to manage nova host services"},{"line_number":9,"context_line":"  EOT"},{"line_number":10,"context_line":""},{"line_number":11,"context_line":"  @credentials \u003d Puppet::Provider::Openstack::CredentialsV2_0.new"},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"  mk_resource_methods"},{"line_number":14,"context_line":""}],"source_content_type":"text/x-ruby","patch_set":3,"id":"1a122d0e_0a9b8bca","line":11,"updated":"2016-04-22 17:28:08.000000000","message":"This should use CredentialsV3","commit_id":"c9b87a06afa314373c84d0f0f6b34e1a2a3b398e"},{"author":{"_account_id":7745,"name":"Denis Egorenko","email":"degorenko@mirantis.com","username":"degorenko"},"change_message_id":"534fc6f7346f56daf864211a47a27782bfa6b879","unresolved":false,"context_lines":[{"line_number":12,"context_line":""},{"line_number":13,"context_line":"  mk_resource_methods"},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"  def self.instances"},{"line_number":16,"context_line":"    hosts \u003d {}"},{"line_number":17,"context_line":"    request(\u0027compute service\u0027, \u0027list\u0027).collect do |s|"},{"line_number":18,"context_line":"      if ! hosts[s[:host]]"}],"source_content_type":"text/x-ruby","patch_set":3,"id":"1a122d0e_68ba14c2","line":15,"updated":"2016-04-22 13:33:04.000000000","message":"this method should only collect existing resources","commit_id":"c9b87a06afa314373c84d0f0f6b34e1a2a3b398e"},{"author":{"_account_id":8482,"name":"Colleen Murphy","email":"colleen@gazlene.net","username":"krinkle"},"change_message_id":"5a8cf1a5e1f3ca7d1e555c186184a5cab5a026d5","unresolved":false,"context_lines":[{"line_number":14,"context_line":""},{"line_number":15,"context_line":"  def self.instances"},{"line_number":16,"context_line":"    hosts \u003d {}"},{"line_number":17,"context_line":"    request(\u0027compute service\u0027, \u0027list\u0027).collect do |s|"},{"line_number":18,"context_line":"      if ! hosts[s[:host]]"},{"line_number":19,"context_line":"        hosts[s[:host]] \u003d {:ids \u003d\u003e [s[:id]]}"},{"line_number":20,"context_line":"      else"}],"source_content_type":"text/x-ruby","patch_set":3,"id":"1a122d0e_aab41735","line":17,"updated":"2016-04-22 17:28:08.000000000","message":"nit - would prefer a better variable name than \u0027s\u0027","commit_id":"c9b87a06afa314373c84d0f0f6b34e1a2a3b398e"},{"author":{"_account_id":8482,"name":"Colleen Murphy","email":"colleen@gazlene.net","username":"krinkle"},"change_message_id":"5a8cf1a5e1f3ca7d1e555c186184a5cab5a026d5","unresolved":false,"context_lines":[{"line_number":20,"context_line":"      else"},{"line_number":21,"context_line":"        hosts[s[:host]][:ids] \u003c\u003c s[:id]"},{"line_number":22,"context_line":"      end"},{"line_number":23,"context_line":"    end"},{"line_number":24,"context_line":"    hosts.each do |host|"},{"line_number":25,"context_line":"      new("},{"line_number":26,"context_line":"          :ensure \u003d\u003e :present,"}],"source_content_type":"text/x-ruby","patch_set":3,"id":"1a122d0e_f0c9de26","line":23,"updated":"2016-04-22 17:28:08.000000000","message":"I\u0027m not sure I agree with grouping services by host. The type is called nova_service so shouldn\u0027t each service, even if it is on the same host, be treated like a single entity?\n\nFor instance, on my controller I have three nova services running - nova-consoleauth, nova-scheduler, and nova-conductor. Treating all of these as the same service just because they\u0027re on the controller doesn\u0027t make sense to me.","commit_id":"c9b87a06afa314373c84d0f0f6b34e1a2a3b398e"},{"author":{"_account_id":8482,"name":"Colleen Murphy","email":"colleen@gazlene.net","username":"krinkle"},"change_message_id":"5a8cf1a5e1f3ca7d1e555c186184a5cab5a026d5","unresolved":false,"context_lines":[{"line_number":21,"context_line":"        hosts[s[:host]][:ids] \u003c\u003c s[:id]"},{"line_number":22,"context_line":"      end"},{"line_number":23,"context_line":"    end"},{"line_number":24,"context_line":"    hosts.each do |host|"},{"line_number":25,"context_line":"      new("},{"line_number":26,"context_line":"          :ensure \u003d\u003e :present,"},{"line_number":27,"context_line":"          :name \u003d\u003e :host,"}],"source_content_type":"text/x-ruby","patch_set":3,"id":"1a122d0e_ea1a8f7b","line":24,"updated":"2016-04-22 17:28:08.000000000","message":"This is a hash, not an array, so better to iterate over it like\n\n hosts.each do |hostname, service_data|\n\nAlso, it needs to be hosts.collect, not hosts.each, since collect is what will gather the list of resources and return it as an array. each will just iterate but return the original hosts value.","commit_id":"c9b87a06afa314373c84d0f0f6b34e1a2a3b398e"},{"author":{"_account_id":8482,"name":"Colleen Murphy","email":"colleen@gazlene.net","username":"krinkle"},"change_message_id":"5a8cf1a5e1f3ca7d1e555c186184a5cab5a026d5","unresolved":false,"context_lines":[{"line_number":24,"context_line":"    hosts.each do |host|"},{"line_number":25,"context_line":"      new("},{"line_number":26,"context_line":"          :ensure \u003d\u003e :present,"},{"line_number":27,"context_line":"          :name \u003d\u003e :host,"},{"line_number":28,"context_line":"          :ids \u003d\u003e host[:ids],"},{"line_number":29,"context_line":"          :service_name \u003d\u003e \u0027\u0027,"},{"line_number":30,"context_line":"      )"}],"source_content_type":"text/x-ruby","patch_set":3,"id":"1a122d0e_2aa2c74b","line":27,"updated":"2016-04-22 17:28:08.000000000","message":"This symbol is not defined","commit_id":"c9b87a06afa314373c84d0f0f6b34e1a2a3b398e"},{"author":{"_account_id":8482,"name":"Colleen Murphy","email":"colleen@gazlene.net","username":"krinkle"},"change_message_id":"5a8cf1a5e1f3ca7d1e555c186184a5cab5a026d5","unresolved":false,"context_lines":[{"line_number":25,"context_line":"      new("},{"line_number":26,"context_line":"          :ensure \u003d\u003e :present,"},{"line_number":27,"context_line":"          :name \u003d\u003e :host,"},{"line_number":28,"context_line":"          :ids \u003d\u003e host[:ids],"},{"line_number":29,"context_line":"          :service_name \u003d\u003e \u0027\u0027,"},{"line_number":30,"context_line":"      )"},{"line_number":31,"context_line":"    end"}],"source_content_type":"text/x-ruby","patch_set":3,"id":"1a122d0e_aae09797","line":28,"updated":"2016-04-22 17:28:08.000000000","message":"This is wrong:\n\n# puppet resource nova_service --trace\nError: Could not run: can\u0027t convert Symbol into Integer\n/etc/puppet/modules/nova/lib/puppet/provider/nova_service/openstack.rb:28:in `[]\u0027\n/etc/puppet/modules/nova/lib/puppet/provider/nova_service/openstack.rb:28:in `block in instances\u0027\n/etc/puppet/modules/nova/lib/puppet/provider/nova_service/openstack.rb:24:in `each\u0027\n/etc/puppet/modules/nova/lib/puppet/provider/nova_service/openstack.rb:24:in `instances\u0027","commit_id":"c9b87a06afa314373c84d0f0f6b34e1a2a3b398e"},{"author":{"_account_id":7745,"name":"Denis Egorenko","email":"degorenko@mirantis.com","username":"degorenko"},"change_message_id":"534fc6f7346f56daf864211a47a27782bfa6b879","unresolved":false,"context_lines":[{"line_number":26,"context_line":"          :ensure \u003d\u003e :present,"},{"line_number":27,"context_line":"          :name \u003d\u003e :host,"},{"line_number":28,"context_line":"          :ids \u003d\u003e host[:ids],"},{"line_number":29,"context_line":"          :service_name \u003d\u003e \u0027\u0027,"},{"line_number":30,"context_line":"      )"},{"line_number":31,"context_line":"    end"},{"line_number":32,"context_line":"  end"}],"source_content_type":"text/x-ruby","patch_set":3,"id":"1a122d0e_e8cd845e","line":29,"updated":"2016-04-22 13:33:04.000000000","message":"host[:binary] ?","commit_id":"c9b87a06afa314373c84d0f0f6b34e1a2a3b398e"},{"author":{"_account_id":8482,"name":"Colleen Murphy","email":"colleen@gazlene.net","username":"krinkle"},"change_message_id":"5a8cf1a5e1f3ca7d1e555c186184a5cab5a026d5","unresolved":false,"context_lines":[{"line_number":26,"context_line":"          :ensure \u003d\u003e :present,"},{"line_number":27,"context_line":"          :name \u003d\u003e :host,"},{"line_number":28,"context_line":"          :ids \u003d\u003e host[:ids],"},{"line_number":29,"context_line":"          :service_name \u003d\u003e \u0027\u0027,"},{"line_number":30,"context_line":"      )"},{"line_number":31,"context_line":"    end"},{"line_number":32,"context_line":"  end"}],"source_content_type":"text/x-ruby","patch_set":3,"id":"1a122d0e_159bacca","line":29,"in_reply_to":"1a122d0e_e8cd845e","updated":"2016-04-22 17:28:08.000000000","message":"Why empty service name?","commit_id":"c9b87a06afa314373c84d0f0f6b34e1a2a3b398e"},{"author":{"_account_id":7745,"name":"Denis Egorenko","email":"degorenko@mirantis.com","username":"degorenko"},"change_message_id":"534fc6f7346f56daf864211a47a27782bfa6b879","unresolved":false,"context_lines":[{"line_number":32,"context_line":"  end"},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"  def self.prefetch(resources)"},{"line_number":35,"context_line":"    instances_ \u003d instances"},{"line_number":36,"context_line":"  end"},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"  def exists?"}],"source_content_type":"text/x-ruby","patch_set":3,"id":"1a122d0e_a8138c0c","line":35,"updated":"2016-04-22 13:33:04.000000000","message":"we can update current provider here, if resource already exists, as examples see:\n\nhttps://github.com/openstack/puppet-nova/blob/master/lib/puppet/provider/nova_aggregate/openstack.rb#L37\n\nhttps://github.com/openstack/puppet-glance/blob/master/lib/puppet/provider/glance_image/openstack.rb#L118","commit_id":"c9b87a06afa314373c84d0f0f6b34e1a2a3b398e"},{"author":{"_account_id":7745,"name":"Denis Egorenko","email":"degorenko@mirantis.com","username":"degorenko"},"change_message_id":"534fc6f7346f56daf864211a47a27782bfa6b879","unresolved":false,"context_lines":[{"line_number":35,"context_line":"    instances_ \u003d instances"},{"line_number":36,"context_line":"  end"},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"  def exists?"},{"line_number":39,"context_line":"    self.class.request(\u0027compute service\u0027, \u0027list\u0027, \"--host\u003d#{@resource[:name]}\").collect do |s|"},{"line_number":40,"context_line":"      return s[:host] \u003d\u003d @resource[:name]"},{"line_number":41,"context_line":"    end"}],"source_content_type":"text/x-ruby","patch_set":3,"id":"1a122d0e_486c789c","line":38,"updated":"2016-04-22 13:33:04.000000000","message":"@property_hash[:ensure] \u003d\u003d :present \n\nand that\u0027s it","commit_id":"c9b87a06afa314373c84d0f0f6b34e1a2a3b398e"},{"author":{"_account_id":8482,"name":"Colleen Murphy","email":"colleen@gazlene.net","username":"krinkle"},"change_message_id":"5a8cf1a5e1f3ca7d1e555c186184a5cab5a026d5","unresolved":false,"context_lines":[{"line_number":44,"context_line":""},{"line_number":45,"context_line":"  def destroy"},{"line_number":46,"context_line":"    instances_ \u003d self.class.instances"},{"line_number":47,"context_line":"    instances_[@resource[:name]][:ids].each do |id|"},{"line_number":48,"context_line":"      if @property_hash[:service_name]"},{"line_number":49,"context_line":"        warning(\"Not implemented yet. Only can delete all services.\")"},{"line_number":50,"context_line":"      end"}],"source_content_type":"text/x-ruby","patch_set":3,"id":"1a122d0e_15bc4c6b","line":47,"updated":"2016-04-22 17:28:08.000000000","message":"# puppet resource nova_service compute ensure\u003dabsent --trace\nError: Could not set \u0027absent\u0027 on ensure: can\u0027t convert String into Integer\n/etc/puppet/modules/nova/lib/puppet/provider/nova_service/openstack.rb:47:in `[]\u0027\n/etc/puppet/modules/nova/lib/puppet/provider/nova_service/openstack.rb:47:in `destroy\u0027","commit_id":"c9b87a06afa314373c84d0f0f6b34e1a2a3b398e"},{"author":{"_account_id":8482,"name":"Colleen Murphy","email":"colleen@gazlene.net","username":"krinkle"},"change_message_id":"5a8cf1a5e1f3ca7d1e555c186184a5cab5a026d5","unresolved":false,"context_lines":[{"line_number":46,"context_line":"    instances_ \u003d self.class.instances"},{"line_number":47,"context_line":"    instances_[@resource[:name]][:ids].each do |id|"},{"line_number":48,"context_line":"      if @property_hash[:service_name]"},{"line_number":49,"context_line":"        warning(\"Not implemented yet. Only can delete all services.\")"},{"line_number":50,"context_line":"      end"},{"line_number":51,"context_line":"      self.class.request(\u0027compute service\u0027, \u0027delete\u0027, id)"},{"line_number":52,"context_line":"    end"}],"source_content_type":"text/x-ruby","patch_set":3,"id":"1a122d0e_d5aad418","line":49,"updated":"2016-04-22 17:28:08.000000000","message":"deleting all services sounds extreme.","commit_id":"c9b87a06afa314373c84d0f0f6b34e1a2a3b398e"},{"author":{"_account_id":7745,"name":"Denis Egorenko","email":"degorenko@mirantis.com","username":"degorenko"},"change_message_id":"534fc6f7346f56daf864211a47a27782bfa6b879","unresolved":false,"context_lines":[{"line_number":50,"context_line":"      end"},{"line_number":51,"context_line":"      self.class.request(\u0027compute service\u0027, \u0027delete\u0027, id)"},{"line_number":52,"context_line":"    end"},{"line_number":53,"context_line":"  end"},{"line_number":54,"context_line":""},{"line_number":55,"context_line":"  def create"},{"line_number":56,"context_line":"    warning(\"This is not implemented.\")"}],"source_content_type":"text/x-ruby","patch_set":3,"id":"1a122d0e_083f2026","line":53,"updated":"2016-04-22 13:33:04.000000000","message":"def destroy\n  self.class.request(\u0027compute service\u0027, \u0027delete\u0027, @property_hash[:id])\nend","commit_id":"c9b87a06afa314373c84d0f0f6b34e1a2a3b398e"},{"author":{"_account_id":7745,"name":"Denis Egorenko","email":"degorenko@mirantis.com","username":"degorenko"},"change_message_id":"534fc6f7346f56daf864211a47a27782bfa6b879","unresolved":false,"context_lines":[{"line_number":53,"context_line":"  end"},{"line_number":54,"context_line":""},{"line_number":55,"context_line":"  def create"},{"line_number":56,"context_line":"    warning(\"This is not implemented.\")"},{"line_number":57,"context_line":"  end"},{"line_number":58,"context_line":"end"},{"line_number":59,"context_line":""}],"source_content_type":"text/x-ruby","patch_set":3,"id":"1a122d0e_e8c0e47e","line":56,"range":{"start_line":56,"start_character":3,"end_line":56,"end_character":39},"updated":"2016-04-22 13:33:04.000000000","message":"can we use compute service set as create method?","commit_id":"c9b87a06afa314373c84d0f0f6b34e1a2a3b398e"},{"author":{"_account_id":8482,"name":"Colleen Murphy","email":"colleen@gazlene.net","username":"krinkle"},"change_message_id":"5a8cf1a5e1f3ca7d1e555c186184a5cab5a026d5","unresolved":false,"context_lines":[{"line_number":53,"context_line":"  end"},{"line_number":54,"context_line":""},{"line_number":55,"context_line":"  def create"},{"line_number":56,"context_line":"    warning(\"This is not implemented.\")"},{"line_number":57,"context_line":"  end"},{"line_number":58,"context_line":"end"},{"line_number":59,"context_line":""}],"source_content_type":"text/x-ruby","patch_set":3,"id":"1a122d0e_75bf80fc","line":56,"range":{"start_line":56,"start_character":3,"end_line":56,"end_character":39},"in_reply_to":"1a122d0e_e8c0e47e","updated":"2016-04-22 17:28:08.000000000","message":"I don\u0027t think there\u0027s ever a way a user can \u0027create\u0027 a compute service so I agree with leaving this unimplemented. \u0027set\u0027 could be used to update the service if we need (using the flush method)","commit_id":"c9b87a06afa314373c84d0f0f6b34e1a2a3b398e"},{"author":{"_account_id":7745,"name":"Denis Egorenko","email":"degorenko@mirantis.com","username":"degorenko"},"change_message_id":"b143dda0a1d115ec27228f2261174e13b0ee6ad3","unresolved":false,"context_lines":[{"line_number":16,"context_line":"    hosts \u003d {}"},{"line_number":17,"context_line":"    request(\u0027compute service\u0027, \u0027list\u0027).collect do |host_svc|"},{"line_number":18,"context_line":"      hname \u003d host_svc[:host]"},{"line_number":19,"context_line":"      if hosts[hname].nil?"},{"line_number":20,"context_line":"        hosts[hname] \u003d Hash.new {|h,k| h[k]\u003d[]}"},{"line_number":21,"context_line":"        hosts[hname][:ids] \u003d []"},{"line_number":22,"context_line":"        hosts[hname][:service_name] \u003d []"}],"source_content_type":"text/x-ruby","patch_set":5,"id":"dab17558_cd28f39c","line":19,"range":{"start_line":19,"start_character":6,"end_line":19,"end_character":26},"updated":"2016-05-11 12:11:41.000000000","message":"nit: method instances will be called only once on prefetch stage - so you can just initialize this var without checks for nil.","commit_id":"d083ff1c8f4963bf77613fc02a794373b29f67d3"},{"author":{"_account_id":7745,"name":"Denis Egorenko","email":"degorenko@mirantis.com","username":"degorenko"},"change_message_id":"7ec9c15d54c07b3ad598b8ce112c62e131bc761f","unresolved":false,"context_lines":[{"line_number":16,"context_line":"    hosts \u003d {}"},{"line_number":17,"context_line":"    request(\u0027compute service\u0027, \u0027list\u0027).collect do |host_svc|"},{"line_number":18,"context_line":"      hname \u003d host_svc[:host]"},{"line_number":19,"context_line":"      if hosts[hname].nil?"},{"line_number":20,"context_line":"        hosts[hname] \u003d Hash.new {|h,k| h[k]\u003d[]}"},{"line_number":21,"context_line":"        hosts[hname][:ids] \u003d []"},{"line_number":22,"context_line":"        hosts[hname][:service_name] \u003d []"}],"source_content_type":"text/x-ruby","patch_set":5,"id":"dab17558_fc576723","line":19,"range":{"start_line":19,"start_character":6,"end_line":19,"end_character":26},"in_reply_to":"dab17558_5063fc41","updated":"2016-05-11 13:23:49.000000000","message":"my bad here, you right","commit_id":"d083ff1c8f4963bf77613fc02a794373b29f67d3"},{"author":{"_account_id":7195,"name":"Matthew Mosesohn","email":"raytrac3r@gmail.com","username":"mmosesohn"},"change_message_id":"91dab989eac514bff042eb92df2f9cf5f88cd923","unresolved":false,"context_lines":[{"line_number":16,"context_line":"    hosts \u003d {}"},{"line_number":17,"context_line":"    request(\u0027compute service\u0027, \u0027list\u0027).collect do |host_svc|"},{"line_number":18,"context_line":"      hname \u003d host_svc[:host]"},{"line_number":19,"context_line":"      if hosts[hname].nil?"},{"line_number":20,"context_line":"        hosts[hname] \u003d Hash.new {|h,k| h[k]\u003d[]}"},{"line_number":21,"context_line":"        hosts[hname][:ids] \u003d []"},{"line_number":22,"context_line":"        hosts[hname][:service_name] \u003d []"}],"source_content_type":"text/x-ruby","patch_set":5,"id":"dab17558_5063fc41","line":19,"range":{"start_line":19,"start_character":6,"end_line":19,"end_character":26},"in_reply_to":"dab17558_cd28f39c","updated":"2016-05-11 12:20:48.000000000","message":"I need to initialize it somehow because you can\u0027t simply write hashvar[key][:ids] \u003c\u003c value. You can\u0027t append to nil, so initialization is required.","commit_id":"d083ff1c8f4963bf77613fc02a794373b29f67d3"},{"author":{"_account_id":7745,"name":"Denis Egorenko","email":"degorenko@mirantis.com","username":"degorenko"},"change_message_id":"b143dda0a1d115ec27228f2261174e13b0ee6ad3","unresolved":false,"context_lines":[{"line_number":52,"context_line":"    svcname_id_map.each do |service_name, id|"},{"line_number":53,"context_line":"      if (@resource[:service_name] \u003d\u003d \u0027\u0027 ||"},{"line_number":54,"context_line":"          (@resource[:service_name] \u003d\u003d service_name))"},{"line_number":55,"context_line":"        Puppet.debug \"Deleting nova service #{service_name} on #{@property_hash[:name]} with id #{id}\""},{"line_number":56,"context_line":"        self.class.request(\u0027compute service\u0027, \u0027delete\u0027, id)"},{"line_number":57,"context_line":"      end"},{"line_number":58,"context_line":"    end"}],"source_content_type":"text/x-ruby","patch_set":5,"id":"dab17558_b03868d4","line":55,"updated":"2016-05-11 12:11:41.000000000","message":"nit: we don\u0027t use actually such debug messages in our providers","commit_id":"d083ff1c8f4963bf77613fc02a794373b29f67d3"},{"author":{"_account_id":7195,"name":"Matthew Mosesohn","email":"raytrac3r@gmail.com","username":"mmosesohn"},"change_message_id":"91dab989eac514bff042eb92df2f9cf5f88cd923","unresolved":false,"context_lines":[{"line_number":52,"context_line":"    svcname_id_map.each do |service_name, id|"},{"line_number":53,"context_line":"      if (@resource[:service_name] \u003d\u003d \u0027\u0027 ||"},{"line_number":54,"context_line":"          (@resource[:service_name] \u003d\u003d service_name))"},{"line_number":55,"context_line":"        Puppet.debug \"Deleting nova service #{service_name} on #{@property_hash[:name]} with id #{id}\""},{"line_number":56,"context_line":"        self.class.request(\u0027compute service\u0027, \u0027delete\u0027, id)"},{"line_number":57,"context_line":"      end"},{"line_number":58,"context_line":"    end"}],"source_content_type":"text/x-ruby","patch_set":5,"id":"dab17558_705c407d","line":55,"in_reply_to":"dab17558_b03868d4","updated":"2016-05-11 12:20:48.000000000","message":"ok I can remove this","commit_id":"d083ff1c8f4963bf77613fc02a794373b29f67d3"},{"author":{"_account_id":7745,"name":"Denis Egorenko","email":"degorenko@mirantis.com","username":"degorenko"},"change_message_id":"b143dda0a1d115ec27228f2261174e13b0ee6ad3","unresolved":false,"context_lines":[{"line_number":61,"context_line":""},{"line_number":62,"context_line":"  def create"},{"line_number":63,"context_line":"    # openstackclient can only update and delete compute services"},{"line_number":64,"context_line":"    warning(\"This is not implemented.\")"},{"line_number":65,"context_line":"  end"},{"line_number":66,"context_line":"end"}],"source_content_type":"text/x-ruby","patch_set":5,"id":"dab17558_adf76fd1","line":64,"updated":"2016-05-11 12:11:41.000000000","message":"nit: may be we can raise more informative warning message here? Not a just not implemented, but also that OSC supports only updating and deleting?","commit_id":"d083ff1c8f4963bf77613fc02a794373b29f67d3"},{"author":{"_account_id":7195,"name":"Matthew Mosesohn","email":"raytrac3r@gmail.com","username":"mmosesohn"},"change_message_id":"91dab989eac514bff042eb92df2f9cf5f88cd923","unresolved":false,"context_lines":[{"line_number":61,"context_line":""},{"line_number":62,"context_line":"  def create"},{"line_number":63,"context_line":"    # openstackclient can only update and delete compute services"},{"line_number":64,"context_line":"    warning(\"This is not implemented.\")"},{"line_number":65,"context_line":"  end"},{"line_number":66,"context_line":"end"}],"source_content_type":"text/x-ruby","patch_set":5,"id":"dab17558_f0df90d3","line":64,"in_reply_to":"dab17558_adf76fd1","updated":"2016-05-11 12:20:48.000000000","message":"why write about updating if we\u0027re not implementing it yet? I would prefer to just say OSC cannot create service entries.","commit_id":"d083ff1c8f4963bf77613fc02a794373b29f67d3"},{"author":{"_account_id":7745,"name":"Denis Egorenko","email":"degorenko@mirantis.com","username":"degorenko"},"change_message_id":"7ec9c15d54c07b3ad598b8ce112c62e131bc761f","unresolved":false,"context_lines":[{"line_number":61,"context_line":""},{"line_number":62,"context_line":"  def create"},{"line_number":63,"context_line":"    # openstackclient can only update and delete compute services"},{"line_number":64,"context_line":"    warning(\"This is not implemented.\")"},{"line_number":65,"context_line":"  end"},{"line_number":66,"context_line":"end"}],"source_content_type":"text/x-ruby","patch_set":5,"id":"dab17558_7c3a57e8","line":64,"in_reply_to":"dab17558_f0df90d3","updated":"2016-05-11 13:23:49.000000000","message":"sounds good to me","commit_id":"d083ff1c8f4963bf77613fc02a794373b29f67d3"},{"author":{"_account_id":7745,"name":"Denis Egorenko","email":"degorenko@mirantis.com","username":"degorenko"},"change_message_id":"a675f5b8c639378d301e232b87d1f1442aa5c711","unresolved":false,"context_lines":[{"line_number":29,"context_line":"        :ensure \u003d\u003e :present,"},{"line_number":30,"context_line":"        :name \u003d\u003e hname,"},{"line_number":31,"context_line":"        :ids \u003d\u003e host[:ids],"},{"line_number":32,"context_line":"        :service_name \u003d\u003e host[:service_name]"},{"line_number":33,"context_line":"      )"},{"line_number":34,"context_line":"    end"},{"line_number":35,"context_line":"  end"}],"source_content_type":"text/x-ruby","patch_set":10,"id":"dab17558_52f68e8f","line":32,"updated":"2016-05-16 15:22:39.000000000","message":"in case of adding insync? method in type: host[:service_name].sort","commit_id":"261b9d98729e457abed487cdec44891a5c641dbd"}],"lib/puppet/type/nova_service.rb":[{"author":{"_account_id":3153,"name":"Emilien Macchi","email":"emilien@redhat.com","username":"emilienm"},"change_message_id":"69aa50580f5f669143d9eb53d1bbaa1005b2afc6","unresolved":false,"context_lines":[{"line_number":22,"context_line":"#    Required"},{"line_number":23,"context_line":"#"},{"line_number":24,"context_line":"#  [*ensure*]"},{"line_number":25,"context_line":"#    Marks status of service(s) on a given host. "},{"line_number":26,"context_line":"#    Possible values are enabled, disabled, purged "},{"line_number":27,"context_line":"#    Optional"},{"line_number":28,"context_line":"#"}],"source_content_type":"text/x-ruby","patch_set":3,"id":"1a122d0e_c324f0b0","line":25,"updated":"2016-04-22 12:03:46.000000000","message":"trailing space","commit_id":"c9b87a06afa314373c84d0f0f6b34e1a2a3b398e"},{"author":{"_account_id":3153,"name":"Emilien Macchi","email":"emilien@redhat.com","username":"emilienm"},"change_message_id":"69aa50580f5f669143d9eb53d1bbaa1005b2afc6","unresolved":false,"context_lines":[{"line_number":23,"context_line":"#"},{"line_number":24,"context_line":"#  [*ensure*]"},{"line_number":25,"context_line":"#    Marks status of service(s) on a given host. "},{"line_number":26,"context_line":"#    Possible values are enabled, disabled, purged "},{"line_number":27,"context_line":"#    Optional"},{"line_number":28,"context_line":"#"},{"line_number":29,"context_line":"#  [*service_name*]"}],"source_content_type":"text/x-ruby","patch_set":3,"id":"1a122d0e_033708e4","line":26,"updated":"2016-04-22 12:03:46.000000000","message":"trailing space","commit_id":"c9b87a06afa314373c84d0f0f6b34e1a2a3b398e"},{"author":{"_account_id":3153,"name":"Emilien Macchi","email":"emilien@redhat.com","username":"emilienm"},"change_message_id":"69aa50580f5f669143d9eb53d1bbaa1005b2afc6","unresolved":false,"context_lines":[{"line_number":61,"context_line":""},{"line_number":62,"context_line":"  newproperty(:service_name) do"},{"line_number":63,"context_line":"    desc \"Name of a given service\""},{"line_number":64,"context_line":"    defaultto \u0027\u0027"},{"line_number":65,"context_line":"  end"},{"line_number":66,"context_line":""},{"line_number":67,"context_line":"  validate do"}],"source_content_type":"text/x-ruby","patch_set":3,"id":"1a122d0e_634b5c5a","line":64,"updated":"2016-04-22 12:03:46.000000000","message":"shouldn\u0027t it be required?","commit_id":"c9b87a06afa314373c84d0f0f6b34e1a2a3b398e"},{"author":{"_account_id":7195,"name":"Matthew Mosesohn","email":"raytrac3r@gmail.com","username":"mmosesohn"},"change_message_id":"d7279ab9ce888e25e410069a219e4db808afe936","unresolved":false,"context_lines":[{"line_number":61,"context_line":""},{"line_number":62,"context_line":"  newproperty(:service_name) do"},{"line_number":63,"context_line":"    desc \"Name of a given service\""},{"line_number":64,"context_line":"    defaultto \u0027\u0027"},{"line_number":65,"context_line":"  end"},{"line_number":66,"context_line":""},{"line_number":67,"context_line":"  validate do"}],"source_content_type":"text/x-ruby","patch_set":3,"id":"1a122d0e_e30e4ce4","line":64,"in_reply_to":"1a122d0e_634b5c5a","updated":"2016-04-22 12:06:39.000000000","message":"By default we will purge all services for a given host. This is an optional field to purge one (or possibly multiple)","commit_id":"c9b87a06afa314373c84d0f0f6b34e1a2a3b398e"},{"author":{"_account_id":7745,"name":"Denis Egorenko","email":"degorenko@mirantis.com","username":"degorenko"},"change_message_id":"b143dda0a1d115ec27228f2261174e13b0ee6ad3","unresolved":false,"context_lines":[{"line_number":60,"context_line":"  end"},{"line_number":61,"context_line":""},{"line_number":62,"context_line":"  newproperty(:service_name) do"},{"line_number":63,"context_line":"    desc \"String or Array of services on a host to modify\""},{"line_number":64,"context_line":"    validate do |value|"},{"line_number":65,"context_line":"      if not value.is_a? String and not value.is_a? Array"},{"line_number":66,"context_line":"        raise ArgumentError, \"service_name parameter must be String or Array\""}],"source_content_type":"text/x-ruby","patch_set":5,"id":"dab17558_2d69bff9","line":63,"updated":"2016-05-11 12:11:41.000000000","message":"if this will be array, we can catch idempotency error, for instance:\n\nwe have - [\u0027service1\u0027, \u0027service2\u0027 ]\n\nwe want - [\u0027service2\u0027, \u0027service1\u0027 ]\n\nthere is should not be any calls for update, but in current scheme - we will have a new call.\n\nI think we can go with array_matching \u003d\u003e true and insync? method. Thoughts?","commit_id":"d083ff1c8f4963bf77613fc02a794373b29f67d3"},{"author":{"_account_id":7195,"name":"Matthew Mosesohn","email":"raytrac3r@gmail.com","username":"mmosesohn"},"change_message_id":"91dab989eac514bff042eb92df2f9cf5f88cd923","unresolved":false,"context_lines":[{"line_number":60,"context_line":"  end"},{"line_number":61,"context_line":""},{"line_number":62,"context_line":"  newproperty(:service_name) do"},{"line_number":63,"context_line":"    desc \"String or Array of services on a host to modify\""},{"line_number":64,"context_line":"    validate do |value|"},{"line_number":65,"context_line":"      if not value.is_a? String and not value.is_a? Array"},{"line_number":66,"context_line":"        raise ArgumentError, \"service_name parameter must be String or Array\""}],"source_content_type":"text/x-ruby","patch_set":5,"id":"dab17558_3050f831","line":63,"in_reply_to":"dab17558_2d69bff9","updated":"2016-05-11 12:20:48.000000000","message":"Ok","commit_id":"d083ff1c8f4963bf77613fc02a794373b29f67d3"},{"author":{"_account_id":7745,"name":"Denis Egorenko","email":"degorenko@mirantis.com","username":"degorenko"},"change_message_id":"b143dda0a1d115ec27228f2261174e13b0ee6ad3","unresolved":false,"context_lines":[{"line_number":69,"context_line":"    defaultto \u0027\u0027"},{"line_number":70,"context_line":"  end"},{"line_number":71,"context_line":""},{"line_number":72,"context_line":"  validate do"},{"line_number":73,"context_line":"    raise ArgumentError, \u0027Name type must be set\u0027 unless self[:name]"},{"line_number":74,"context_line":"  end"},{"line_number":75,"context_line":""},{"line_number":76,"context_line":"end"}],"source_content_type":"text/x-ruby","patch_set":5,"id":"dab17558_1055f4c4","line":74,"range":{"start_line":72,"start_character":0,"end_line":74,"end_character":5},"updated":"2016-05-11 12:11:41.000000000","message":"namevar \u003d\u003e true for name param should cover this, or i\u0027m wrong?","commit_id":"d083ff1c8f4963bf77613fc02a794373b29f67d3"},{"author":{"_account_id":7195,"name":"Matthew Mosesohn","email":"raytrac3r@gmail.com","username":"mmosesohn"},"change_message_id":"91dab989eac514bff042eb92df2f9cf5f88cd923","unresolved":false,"context_lines":[{"line_number":69,"context_line":"    defaultto \u0027\u0027"},{"line_number":70,"context_line":"  end"},{"line_number":71,"context_line":""},{"line_number":72,"context_line":"  validate do"},{"line_number":73,"context_line":"    raise ArgumentError, \u0027Name type must be set\u0027 unless self[:name]"},{"line_number":74,"context_line":"  end"},{"line_number":75,"context_line":""},{"line_number":76,"context_line":"end"}],"source_content_type":"text/x-ruby","patch_set":5,"id":"dab17558_504dbc98","line":74,"range":{"start_line":72,"start_character":0,"end_line":74,"end_character":5},"in_reply_to":"dab17558_1055f4c4","updated":"2016-05-11 12:20:48.000000000","message":"I don\u0027t understand your comment","commit_id":"d083ff1c8f4963bf77613fc02a794373b29f67d3"},{"author":{"_account_id":7745,"name":"Denis Egorenko","email":"degorenko@mirantis.com","username":"degorenko"},"change_message_id":"7ec9c15d54c07b3ad598b8ce112c62e131bc761f","unresolved":false,"context_lines":[{"line_number":69,"context_line":"    defaultto \u0027\u0027"},{"line_number":70,"context_line":"  end"},{"line_number":71,"context_line":""},{"line_number":72,"context_line":"  validate do"},{"line_number":73,"context_line":"    raise ArgumentError, \u0027Name type must be set\u0027 unless self[:name]"},{"line_number":74,"context_line":"  end"},{"line_number":75,"context_line":""},{"line_number":76,"context_line":"end"}],"source_content_type":"text/x-ruby","patch_set":5,"id":"dab17558_dc00a304","line":74,"range":{"start_line":72,"start_character":0,"end_line":74,"end_character":5},"in_reply_to":"dab17558_504dbc98","updated":"2016-05-11 13:23:49.000000000","message":"self[:name] \u003d\u003d newparam(name)\n\nand newparam(name) has namevar \u003d\u003e true property.\n\nI think, that this validate unneeded.","commit_id":"d083ff1c8f4963bf77613fc02a794373b29f67d3"},{"author":{"_account_id":16771,"name":"mpolenchuk","email":"mpolenchuk@mirantis.com","username":"mpolenchuk"},"change_message_id":"419e47bda5fdc04878122165769229c43a38a83a","unresolved":false,"context_lines":[{"line_number":62,"context_line":"  newproperty(:service_name, :array_matching \u003d\u003e :all) do"},{"line_number":63,"context_line":"    desc \"String or Array of services on a host to modify\""},{"line_number":64,"context_line":"    validate do |value|"},{"line_number":65,"context_line":"      if not value.is_a? String and not value.is_a? Array"},{"line_number":66,"context_line":"        raise ArgumentError, \"service_name parameter must be String or Array\""},{"line_number":67,"context_line":"      end"},{"line_number":68,"context_line":"    end"}],"source_content_type":"text/x-ruby","patch_set":10,"id":"dab17558_12741c66","line":65,"range":{"start_line":65,"start_character":6,"end_line":65,"end_character":57},"updated":"2016-05-16 09:37:24.000000000","message":"#minor: to use ruby style instead of python\n[String, Array].any? { |type| v.is_a? type }","commit_id":"261b9d98729e457abed487cdec44891a5c641dbd"},{"author":{"_account_id":7745,"name":"Denis Egorenko","email":"degorenko@mirantis.com","username":"degorenko"},"change_message_id":"a675f5b8c639378d301e232b87d1f1442aa5c711","unresolved":false,"context_lines":[{"line_number":62,"context_line":"  newproperty(:service_name, :array_matching \u003d\u003e :all) do"},{"line_number":63,"context_line":"    desc \"String or Array of services on a host to modify\""},{"line_number":64,"context_line":"    validate do |value|"},{"line_number":65,"context_line":"      if not value.is_a? String and not value.is_a? Array"},{"line_number":66,"context_line":"        raise ArgumentError, \"service_name parameter must be String or Array\""},{"line_number":67,"context_line":"      end"},{"line_number":68,"context_line":"    end"}],"source_content_type":"text/x-ruby","patch_set":10,"id":"dab17558_5224ce0b","line":65,"range":{"start_line":65,"start_character":6,"end_line":65,"end_character":57},"in_reply_to":"dab17558_12741c66","updated":"2016-05-16 15:22:39.000000000","message":"Well, i have here same doubts as for 5 patch set. Why you don\u0027t use insync? method for array?","commit_id":"261b9d98729e457abed487cdec44891a5c641dbd"}],"spec/type/nova_service_spec.rb":[{"author":{"_account_id":8482,"name":"Colleen Murphy","email":"colleen@gazlene.net","username":"krinkle"},"change_message_id":"5a8cf1a5e1f3ca7d1e555c186184a5cab5a026d5","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"1a122d0e_b0b92618","line":30,"updated":"2016-04-22 17:28:08.000000000","message":"I think the existence of spec/type/ is probably an error, it should all go in spec/unit/type or spec/unit/provider, see examples in other modules","commit_id":"c9b87a06afa314373c84d0f0f6b34e1a2a3b398e"}],"spec/unit/type/nova_service_spec.rb":[{"author":{"_account_id":7745,"name":"Denis Egorenko","email":"degorenko@mirantis.com","username":"degorenko"},"change_message_id":"b143dda0a1d115ec27228f2261174e13b0ee6ad3","unresolved":false,"context_lines":[{"line_number":21,"context_line":"    }"},{"line_number":22,"context_line":"    expect { Puppet::Type.type(:nova_service).new(incorrect_input) }.to raise_error(Puppet::ResourceError, /name parameter must be a String/)"},{"line_number":23,"context_line":"  end"},{"line_number":24,"context_line":"end"}],"source_content_type":"text/x-ruby","patch_set":5,"id":"dab17558_70b600fa","line":24,"updated":"2016-05-11 12:11:41.000000000","message":"can you also add tests for provider?","commit_id":"d083ff1c8f4963bf77613fc02a794373b29f67d3"}]}
