module PulpHelper::Unit

Public Instance Methods

search_puppet(author, name, repo) click to toggle source
# File lib/pulphelper/unit.rb, line 46
def search_puppet(author, name, repo)
  if author.nil?
    criteria = {
      "fields" => ["author","name", "version"],
      "filters" => {
        "name" => {
          "$regex" => name
        }
      },
      "sort" => [["author", "descending"],["name", "descending"],["version", "descending"]]
    }
  else
    criteria = {
      "fields" => ["author","name", "version"],
      "filters" => {
        "$and" => [
          {
            "name" => {
              "$regex" => name
            }
          },
          {
            "author" => author
          }
        ]
      },
      "sort" => [["author", "descending"],["name", "descending"],["version", "descending"]]
    }
  end
  #puts "search criteria #{criteria}"
  response = client.resources.unit.search("puppet_module", criteria, {"include_repos" => true})
  code = response.code
  body = response.body
  #puts body
  results =[]
  case code
  when 200
    units = JSON.parse(body.to_json)
    units.each do |unit|
      result ={
        :name => unit["name"],
        :version => unit["version"],
        :author => unit["author"],
        :repos => unit["repository_memberships"]
      }
      results << result
    end
  else
    raise "Exception: search response code = #{code}"
  end
  #filter by repo
  if repo
    results =results.select {|r|
      r[:repos].include? repo
    }
  end
  #puts results
  results
end
search_rpm(name, repo) click to toggle source
# File lib/pulphelper/unit.rb, line 4
def search_rpm(name, repo)
  criteria = {
    "fields" => ["name", "version", "release", "epoch", "checksum"],
    "filters" => {
      "name" => {
        "$regex" => name
      }
    },
    "sort" => [["epoch", "descending"], ["version", "descending"],  ["release", "descending"]]
  }
  #puts "search criteria #{criteria} in repo : #{repo}"
  response = client.resources.unit.search("rpm", criteria, {"include_repos" => true})
  code = response.code
  body = response.body
  #puts body
  results =[]
  case code
  when 200
    units = JSON.parse(body.to_json)
    units.each do |unit|
      result = {
        :name => unit["name"],
        :epoch => unit["epoch"],
        :version => unit["version"],
        :release => unit["release"],
        :checksum =>  unit["checksum"],
        :repos => unit["repository_memberships"]
      }
      results << result
    end
  else
    raise "Excpetion:response code = #{code}"
  end
  #filter by repo
  if repo
    results =results.select {|r|
      r[:repos].include? repo
    }
  end
  #puts "result:#{results}"
  results
end