Class Chef::Expander::Solrizer
In: lib/chef/expander/solrizer.rb
Parent: Object

Methods

Included Modules

Loggable

Constants

ADD = "add"
DELETE = "delete"
SKIP = "skip"
ITEM = "item"
ID = "id"
TYPE = "type"
DATABASE = "database"
ENQUEUED_AT = "enqueued_at"
DATA_BAG_ITEM = "data_bag_item"
DATA_BAG = "data_bag"
X_CHEF_id_CHEF_X = 'X_CHEF_id_CHEF_X'
X_CHEF_database_CHEF_X = 'X_CHEF_database_CHEF_X'
X_CHEF_type_CHEF_X = 'X_CHEF_type_CHEF_X'
CONTENT_TYPE_XML = {"Content-Type" => "text/xml"}
START_XML = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n"
ADD_DOC = "<add><doc>"
DELETE_DOC = "<delete>"
ID_OPEN = "<id>"
ID_CLOSE = "</id>"
END_ADD_DOC = "</doc></add>\n"
END_DELETE = "</delete>\n"
START_CONTENT = '<field name="content">'
CLOSE_FIELD = "</field>"
FLD_CHEF_ID_FMT = '<field name="X_CHEF_id_CHEF_X">%s</field>'
FLD_CHEF_DB_FMT = '<field name="X_CHEF_database_CHEF_X">%s</field>'
FLD_CHEF_TY_FMT = '<field name="X_CHEF_type_CHEF_X">%s</field>'
FLD_DATA_BAG = '<field name="data_bag">%s</field>'
KEYVAL_FMT = "%s__=__%s "

Attributes

action  [R] 
chef_object  [R] 
database  [R] 
enqueued_at  [R] 
indexer_payload  [R] 
obj_id  [R] 
obj_type  [R] 

Public Class methods

Public Instance methods

Takes a flattened hash where the values are arrays and converts it into a dignified XML document suitable for POST to Solr. The general structure of the output document is like this:

  <?xml version="1.0" encoding="UTF-8"?>
  <add>
    <doc>
      <field name="content">
          key__=__value
          key__=__another_value
          other_key__=__yet another value
      </field>
    </doc>
  </add>

The document as generated has minimal newlines and formatting, however.

Takes a succinct document id, like 2342, and turns it into something even more compact, like

  "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<delete><id>2342</id></delete>\n"

[Validate]