Class: Capistrano::RightScale::Cache

Inherits:
Object
  • Object
show all
Includes:
Singleton
Defined in:
lib/cap-rightscale/configuration/rightscale/cache.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initializeCache

Returns a new instance of Cache.



11
12
13
# File 'lib/cap-rightscale/configuration/rightscale/cache.rb', line 11

def initialize
  @lifetime = Capistrano::RightScale::RS_DEFAULT_LIFETIME
end

Instance Attribute Details

#arrayObject (readonly)

Returns the value of attribute array.



9
10
11
# File 'lib/cap-rightscale/configuration/rightscale/cache.rb', line 9

def array
  @array
end

#array_instancesObject (readonly)

Returns the value of attribute array_instances.



9
10
11
# File 'lib/cap-rightscale/configuration/rightscale/cache.rb', line 9

def array_instances
  @array_instances
end

#deploymentObject (readonly)

Returns the value of attribute deployment.



9
10
11
# File 'lib/cap-rightscale/configuration/rightscale/cache.rb', line 9

def deployment
  @deployment
end

#lifetimeObject

Returns the value of attribute lifetime.



8
9
10
# File 'lib/cap-rightscale/configuration/rightscale/cache.rb', line 8

def lifetime
  @lifetime
end

#logger=(value) ⇒ Object

Sets the attribute logger

Parameters:

  • value

    the value to set the attribute logger to.



8
9
10
# File 'lib/cap-rightscale/configuration/rightscale/cache.rb', line 8

def logger=(value)
  @logger = value
end

Instance Method Details

#dump_server_cache(role, servers, prefix = nil) ⇒ Object



40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
# File 'lib/cap-rightscale/configuration/rightscale/cache.rb', line 40

def dump_server_cache(role, servers, prefix=nil)
  h = {role => {:servers => servers, :cache => Time.now}}
  obj_dump = Marshal.dump(h)

  # Get cache directory
  cache_dir = Dir.glob("#{Dir.tmpdir}/cap-rightscale-#{ENV['USER']}-*").first
  if cache_dir.nil?
    RSUtils.mk_rs_cache_dir
    cache_dir = Dir.glob("#{Dir.tmpdir}/cap-rightscale-#{ENV['USER']}-*").first
    exit if cache_dir.nil?
  end
  cache_file = File.join(cache_dir, "#{prefix}-#{role}.cache")

  begin
    open(cache_file, "w") {|f| f.write(obj_dump)}
  rescue => e
    @logger.important("#{e.class}: #{e.pretty_inspect}")
    @logger.trace("Backtrace:\n#{e.backtrace.pretty_inspect}")
  end
end

#load_server_cache(role, prefix = nil) ⇒ Object



15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
# File 'lib/cap-rightscale/configuration/rightscale/cache.rb', line 15

def load_server_cache(role, prefix=nil)
  server_cache = self.instance_variable_get("@#{role}_cache")

  begin
    cache_files = Dir.glob("#{Dir.tmpdir}/cap-rightscale-#{ENV['USER']}-*/#{prefix}*#{role}.cache")

    if cache_files.size > 0 && !server_cache
      c = Marshal.load(open(cache_files.first) {|f| f.read })
      self.instance_variable_set("@#{role}_cache", c)
    end
    server_cache = self.instance_variable_get("@#{role}_cache")
    return [] unless server_cache # No cache entry

    # get servers
    servers = server_cache[role][:servers].size > 0 ? server_cache[role][:servers] : []
    if lifetime > 0 && Time.now - server_cache[role][:cache] > lifetime
      servers = []
    end
  rescue => e
    return [] unless server_cache
  end

  servers
end