class EacLauncher::Context::InstanceManager

Public Class Methods

new(context) click to toggle source
# File lib/eac_launcher/context/instance_manager.rb, line 10
def initialize(context)
  @context = context
end

Public Instance Methods

pending_instances() click to toggle source
# File lib/eac_launcher/context/instance_manager.rb, line 22
def pending_instances
  instances.select { |instance| pending_instance?(instance) }
end
publish_state_set(instance, stereotype_name, check_status) click to toggle source
# File lib/eac_launcher/context/instance_manager.rb, line 14
def publish_state_set(instance, stereotype_name, check_status)
  data = cached_instances_file_content_uncached
  data[instance.logical] ||= {}
  data[instance.logical][:publish_state] ||= {}
  data[instance.logical][:publish_state][stereotype_name] = check_status
  write_cache_file(data)
end

Private Instance Methods

cache_file_path() click to toggle source
# File lib/eac_launcher/context/instance_manager.rb, line 59
def cache_file_path
  ::File.join(@context.cache_root, 'instances.yml')
end
cache_instances(instances) click to toggle source
# File lib/eac_launcher/context/instance_manager.rb, line 50
def cache_instances(instances)
  write_cache_file(Hash[instances.map { |i| [i.logical, i.to_h] }])
  instances
end
cached_instances() click to toggle source
# File lib/eac_launcher/context/instance_manager.rb, line 36
def cached_instances
  return nil if @context.recache
  return nil unless cached_instances_file_content

  CachedInstances.new(cached_instances_file_content).instances
end
cached_instances_file_content_uncached() click to toggle source
# File lib/eac_launcher/context/instance_manager.rb, line 43
def cached_instances_file_content_uncached
  r = YAML.load_file(cache_file_path)
  r.is_a?(::Hash) ? r : nil
rescue Errno::ENOENT
  nil
end
instances_uncached() click to toggle source
# File lib/eac_launcher/context/instance_manager.rb, line 28
def instances_uncached
  (cached_instances || search_instances).select(&:included?)
end
pending_instance?(instance) click to toggle source
# File lib/eac_launcher/context/instance_manager.rb, line 63
def pending_instance?(instance)
  data = cached_instances_file_content
  return false unless data[instance.logical]
  return false unless data[instance.logical][:publish_state].is_a?(Hash)

  data[instance.logical][:publish_state].any? do |_k, v|
    ::EacLauncher::Publish::CheckResult.pending_status?(v)
  end
end
search_instances() click to toggle source
# File lib/eac_launcher/context/instance_manager.rb, line 32
def search_instances
  cache_instances(::EacLauncher::Context::InstanceDiscovery.new(@context).instances)
end
write_cache_file(data) click to toggle source
# File lib/eac_launcher/context/instance_manager.rb, line 55
def write_cache_file(data)
  ::File.write(cache_file_path, data.to_yaml)
end