Class: Egi::Fedcloud::Cloudhound::Appdb

Inherits:
Connector
  • Object
show all
Defined in:
lib/egi/fedcloud/cloudhound/appdb.rb

Constant Summary collapse

APPDB_SITES_URL =
'/rest/1.0/sites?flt=+=&site.supports:1'

Instance Method Summary collapse

Methods inherited from Connector

#retrieve

Constructor Details

#initialize(opts = {}, password = nil) ⇒ Appdb

Returns a new instance of Appdb.



9
10
11
12
13
# 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

Instance Method Details

#appliance(uri) ⇒ Object



50
51
52
53
54
55
# 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_sitesObject



45
46
47
# File 'lib/egi/fedcloud/cloudhound/appdb.rb', line 45

def certified_production_cloud_sites
  certified production_cloud_sites
end

#certified_production_sitesObject



30
31
32
# File 'lib/egi/fedcloud/cloudhound/appdb.rb', line 30

def certified_production_sites
  certified production_sites
end

#cloud_sitesObject



35
36
37
# File 'lib/egi/fedcloud/cloudhound/appdb.rb', line 35

def cloud_sites
  sites.select { |site| site.type == 'cloud' }
end

#production_cloud_sitesObject



40
41
42
# File 'lib/egi/fedcloud/cloudhound/appdb.rb', line 40

def production_cloud_sites
  production cloud_sites
end

#production_sitesObject



25
26
27
# File 'lib/egi/fedcloud/cloudhound/appdb.rb', line 25

def production_sites
  production sites
end

#site_gocdb(site_name) ⇒ Object



58
59
60
61
# 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

#sitesObject



16
17
18
19
20
21
22
# 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