class Egi::Fedcloud::Cloudhound::Appdb

Constants

APPDB_SITES_URL

Public Class Methods

new(opts = {}, password = nil) click to toggle source
# File lib/egi/fedcloud/cloudhound/appdb.rb, line 9
def initialize(opts = {}, password = nil)
  super
  Egi::Fedcloud::Cloudhound::Log.debug "[#{self.class}] With AppDB instance at #{opts[:appdb_base_url].inspect}"
  @appdb_base_url = opts[:appdb_base_url].chomp '/'
end

Public Instance Methods

appliance(uri) click to toggle source
# File lib/egi/fedcloud/cloudhound/appdb.rb, line 50
def appliance(uri)
  uri = uri.chomp '/'
  Egi::Fedcloud::Cloudhound::Log.debug "[#{self.class}] Pulling appliance data from \"#{uri}/json\""
  raw_appliance = JSON.parse retrieve("#{uri}/json")
  Egi::Fedcloud::Cloudhound::AppdbAppliance.new raw_appliance
end
certified_production_cloud_sites() click to toggle source
# File lib/egi/fedcloud/cloudhound/appdb.rb, line 45
def certified_production_cloud_sites
  certified production_cloud_sites
end
certified_production_sites() click to toggle source
# File lib/egi/fedcloud/cloudhound/appdb.rb, line 30
def certified_production_sites
  certified production_sites
end
cloud_sites() click to toggle source
# File lib/egi/fedcloud/cloudhound/appdb.rb, line 35
def cloud_sites
  sites.select { |site| site.type == 'cloud' }
end
production_cloud_sites() click to toggle source
# File lib/egi/fedcloud/cloudhound/appdb.rb, line 40
def production_cloud_sites
  production cloud_sites
end
production_sites() click to toggle source
# File lib/egi/fedcloud/cloudhound/appdb.rb, line 25
def production_sites
  production sites
end
site_gocdb(site_name) click to toggle source
# File lib/egi/fedcloud/cloudhound/appdb.rb, line 58
def site_gocdb(site_name)
  found = sites.select { |site| site.name == site_name }
  found.first ? found.first.gocdb_link : nil
end
sites() click to toggle source
# File lib/egi/fedcloud/cloudhound/appdb.rb, line 16
def sites
  return @cached_sites if @cached_sites

  Egi::Fedcloud::Cloudhound::Log.debug "[#{self.class}] Pulling site data from \"#{@appdb_base_url}#{APPDB_SITES_URL}\""
  sites = Ox.parse retrieve("#{@appdb_base_url}#{APPDB_SITES_URL}")
  @cached_sites = sites.locate('appdb/*').map { |site| Egi::Fedcloud::Cloudhound::AppdbSite.new(site) }
end

Private Instance Methods

certified(sites) click to toggle source
# File lib/egi/fedcloud/cloudhound/appdb.rb, line 69
def certified(sites)
  sites.select { |site| site.status == 'Certified' }
end
production(sites) click to toggle source
# File lib/egi/fedcloud/cloudhound/appdb.rb, line 65
def production(sites)
  sites.select { |site| site.infrastructure == 'Production' }
end