Class: Coral::Cloud::Base

Inherits:
Memory
  • Object
show all
Defined in:
lib/coral_cloud/base.rb

Constant Summary collapse

@@instances =

Properties

{}

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(options = {}) ⇒ Base




39
40
41
42
43
44
45
# File 'lib/coral_cloud/base.rb', line 39

def initialize(options = {})
  super(options)
  
  @repositories = {}
  @shares       = {}
  @servers      = {}
end

Class Method Details

.[](name) ⇒ Object




30
31
32
33
34
35
# File 'lib/coral_cloud/base.rb', line 30

def self.[](name)
  if ! @@instances.has_key?(name) || ! @@instances[name]
    @@instances[name] = new({ :name => name })
  end  
  return @@instances[name]  
end

.create(name, options = {}) ⇒ Object


Constructor / Destructor



14
15
16
17
18
# File 'lib/coral_cloud/base.rb', line 14

def self.create(name, options = {})
  options[:name]    = name unless options.has_key?(:name)
  @@instances[name] = new(options) 
  return @@instances[name]  
end

.delete(name) ⇒ Object




22
23
24
25
26
# File 'lib/coral_cloud/base.rb', line 22

def self.delete(name) 
  if @@instances.has_key?(name) && @@instances[name]
    @@instances.delete(name) 
  end  
end

Instance Method Details

#delete_repository(local_repo) ⇒ Object




85
86
87
# File 'lib/coral_cloud/base.rb', line 85

def delete_repository(local_repo)
  return delete_group('repositories', local_repo, nil)
end

#delete_server(name, key = nil) ⇒ Object




203
204
205
# File 'lib/coral_cloud/base.rb', line 203

def delete_server(name, key = nil)
  return delete_group('servers', name, key)
end

#delete_setting(group, key) ⇒ Object




121
122
123
# File 'lib/coral_cloud/base.rb', line 121

def delete_setting(group, key)
  return delete_group('settings', group, key)
end

#delete_settings(group) ⇒ Object




103
104
105
# File 'lib/coral_cloud/base.rb', line 103

def delete_settings(group)
  return delete_group('settings', group, nil)
end

#delete_share(name, key = nil) ⇒ Object




162
163
164
# File 'lib/coral_cloud/base.rb', line 162

def delete_share(name, key = nil)
  return delete_group('shares', name, key)
end

#repositories(reset = false) ⇒ Object


Property accessors / modifiers



50
51
52
53
54
55
56
57
58
59
60
61
62
63
# File 'lib/coral_cloud/base.rb', line 50

def repositories(reset = false)
  if reset || @repositories.empty?
    @repositories = {}
    get('repositories', {}, :hash).each do |submodule, remote_dir|
      @repositories[submodule] = Coral::Repository.new({
        :name       => submodule,
        :directory  => @directory,
        :submodule  => submodule,
        :remote_dir => remote_dir,
      })
    end
  end
  return @repositories
end

#repository(local_repo, default = '', format = false) ⇒ Object




73
74
75
# File 'lib/coral_cloud/base.rb', line 73

def repository(local_repo, default = '', format = false)
  return get_group('repositories', local_repo, nil, default, format)
end

#search(server, key, default = '', format = false) ⇒ Object




209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
# File 'lib/coral_cloud/base.rb', line 209

def search(server, key, default = '', format = false)
  value       = default
  server_info = server(server)
  
  if server_info[key]
    value = server_info[key]
  else
    settings = {}
    if server_info.has_key?('settings')
      array(server_info['settings']).each do |group|
        settings = settings(group)
      
        if settings.has_key?(key)
          if value.is_a?(Array) && settings[key].is_a?(Array)
            value = value | settings[key]
          else
            value = settings[key]  
          end            
          break
        end
      end      
    end
  end
  return filter(value, format)
end

#server(name, key = nil, default = {}, format = false) ⇒ Object




191
192
193
# File 'lib/coral_cloud/base.rb', line 191

def server(name, key = nil, default = {}, format = false)
  return get_group('servers', name, key, default, format)
end

#servers(reset = false) ⇒ Object




168
169
170
171
172
173
174
175
176
177
178
179
180
181
# File 'lib/coral_cloud/base.rb', line 168

def servers(reset = false)
  if reset || @servers.empty?
    @servers = {}
    get('servers', {}, :hash).each do |name, server_info|
      server_info = Coral::Util::Data.merge([ {
        :cloud   => self,
        :machine => name,
      }, symbol_map(server_info) ])
      
      @servers[name] = Coral::Cloud::Server.new(server_info)
    end
  end
  return @servers
end

#set_repositories(values = {}) ⇒ Object




67
68
69
# File 'lib/coral_cloud/base.rb', line 67

def set_repositories(values = {})
  return set('repositories', values)
end

#set_repository(local_repo, remote_repo) ⇒ Object




79
80
81
# File 'lib/coral_cloud/base.rb', line 79

def set_repository(local_repo, remote_repo)
  return set_group('repositories', local_repo, nil, remote_repo)
end

#set_server(name, key = nil, value = {}) ⇒ Object




197
198
199
# File 'lib/coral_cloud/base.rb', line 197

def set_server(name, key = nil, value = {})
  return set_group('servers', name, key, value)
end

#set_servers(values = {}) ⇒ Object




185
186
187
# File 'lib/coral_cloud/base.rb', line 185

def set_servers(values = {})
  return set('servers', values)
end

#set_setting(group, key, value = '') ⇒ Object




115
116
117
# File 'lib/coral_cloud/base.rb', line 115

def set_setting(group, key, value = '')
  return set_group('settings', group, key, value)
end

#set_settings(group, values = {}) ⇒ Object




97
98
99
# File 'lib/coral_cloud/base.rb', line 97

def set_settings(group, values = {})
  return set_group('settings', group, nil, values)
end

#set_share(name, key = nil, value = {}) ⇒ Object




156
157
158
# File 'lib/coral_cloud/base.rb', line 156

def set_share(name, key = nil, value = {})
  return set_group('shares', name, key, value)
end

#set_shares(values = {}) ⇒ Object




144
145
146
# File 'lib/coral_cloud/base.rb', line 144

def set_shares(values = {})
  return set('shares', values)
end

#setting(group, key, default = '', format = false) ⇒ Object




109
110
111
# File 'lib/coral_cloud/base.rb', line 109

def setting(group, key, default = '', format = false)
  return get_group('settings', group, key, default, format)
end

#settings(group) ⇒ Object




91
92
93
# File 'lib/coral_cloud/base.rb', line 91

def settings(group)
  return get_group('settings', group, nil, {}, :hash)
end

#share(name, key = nil, default = {}, format = false) ⇒ Object




150
151
152
# File 'lib/coral_cloud/base.rb', line 150

def share(name, key = nil, default = {}, format = false)
  return get_group('shares', name, key, default, format)
end

#shares(reset = false) ⇒ Object




127
128
129
130
131
132
133
134
135
136
137
138
139
140
# File 'lib/coral_cloud/base.rb', line 127

def shares(reset = false)
  if reset || @shares.empty?
    @shares = {}
    get('shares', {}, :hash).each do |name, share_info|
      share_info = Coral::Util::Data.merge([ {
        :name      => name,
        :directory => File.join(@directory, share_info['local_dir']),
      }, symbol_map(share_info) ])
      
      @shares[name] = Coral::Cloud::Share.new(share_info)
    end
  end
  return @shares
end