class Egi::Fedcloud::Cloudhound::Gocdb
Constants
- CLOUD_SERVICE_TYPES
- GOCDB_CERT_PROD_SITES_URL
- GOCDB_PROD_SITES_URL
- GOCDB_SERVICE_ENDPOINT
- GOCDB_SITES_URL
Public Class Methods
new(opts = {}, password = nil)
click to toggle source
Calls superclass method
Egi::Fedcloud::Cloudhound::Connector::new
# File lib/egi/fedcloud/cloudhound/gocdb.rb, line 20 def initialize(opts = {}, password = nil) super Egi::Fedcloud::Cloudhound::Log.debug "[#{self.class}] With GOCDB instance at #{opts[:gocdb_base_url].inspect}" self.class.base_uri opts[:gocdb_base_url] end
Public Instance Methods
certified_production_cloud_sites()
click to toggle source
# File lib/egi/fedcloud/cloudhound/gocdb.rb, line 52 def certified_production_cloud_sites certified_production_sites.select { |site| cloud_site_names.include?(site.name) } end
certified_production_sites()
click to toggle source
# File lib/egi/fedcloud/cloudhound/gocdb.rb, line 37 def certified_production_sites get_and_parse GOCDB_CERT_PROD_SITES_URL, 'cert_prod_sites' end
cloud_sites()
click to toggle source
# File lib/egi/fedcloud/cloudhound/gocdb.rb, line 42 def cloud_sites sites.select { |site| cloud_site_names.include?(site.name) } end
production_cloud_sites()
click to toggle source
# File lib/egi/fedcloud/cloudhound/gocdb.rb, line 47 def production_cloud_sites production_sites.select { |site| cloud_site_names.include?(site.name) } end
production_sites()
click to toggle source
# File lib/egi/fedcloud/cloudhound/gocdb.rb, line 32 def production_sites get_and_parse GOCDB_PROD_SITES_URL, 'prod_sites' end
sites()
click to toggle source
# File lib/egi/fedcloud/cloudhound/gocdb.rb, line 27 def sites get_and_parse GOCDB_SITES_URL, 'sites' end
Private Instance Methods
cloud_site_names()
click to toggle source
# File lib/egi/fedcloud/cloudhound/gocdb.rb, line 71 def cloud_site_names return @cached_cloud_site_names if instance_variable_defined?('@cached_cloud_site_names') site_names = Set.new Egi::Fedcloud::Cloudhound::Log.debug "[#{self.class}] Pulling service endpoints from #{GOCDB_SERVICE_ENDPOINT.inspect}" xmldoc_service_endpoints = Ox.parse retrieve(GOCDB_SERVICE_ENDPOINT) xmldoc_service_endpoints.locate("results/*").each do |service_endpoint| service_endpoint.locate("SERVICE_TYPE").each do |service_type| next unless service_type && CLOUD_SERVICE_TYPES.include?(service_type.text) service_endpoint.locate("SITENAME").each { |service_site_name| site_names << service_site_name.text } end end instance_variable_set('@cached_cloud_site_names', site_names.to_a) @cached_cloud_site_names end
get_and_parse(url, type)
click to toggle source
# File lib/egi/fedcloud/cloudhound/gocdb.rb, line 59 def get_and_parse(url, type) return instance_variable_get("@cached_#{type}") if instance_variable_defined?("@cached_#{type}") Egi::Fedcloud::Cloudhound::Log.debug "[#{self.class}] Pulling site data from #{url.inspect}" results = Ox.parse retrieve(url) results = results.locate('results/*').map { |site| Egi::Fedcloud::Cloudhound::GocdbSite.new(site) } instance_variable_set("@cached_#{type}", results) results end