Class: AdminModule::Rake::SnapshotTasks

Inherits:
Object
  • Object
show all
Includes:
Rake::DSL
Defined in:
lib/admin_module/rake/snapshot_tasks.rb

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(task_name = 'snapshots_task', desc = "modify snapshot definition(s)") {|_self| ... } ⇒ SnapshotTasks

Returns a new instance of SnapshotTasks.

Yields:

  • (_self)

Yield Parameters:



25
26
27
28
29
30
31
32
33
34
# File 'lib/admin_module/rake/snapshot_tasks.rb', line 25

def initialize(task_name = 'snapshots_task', desc = "modify snapshot definition(s)")
  @valid_actions = ['import', 'export', 'read', 'list', 'rename']
  @task_name, @desc = task_name, desc

  @stop_on_exception = true

  yield self if block_given?

  define_task
end

Instance Attribute Details

#actionObject

Returns the value of attribute action.



21
22
23
# File 'lib/admin_module/rake/snapshot_tasks.rb', line 21

def action
  @action
end

#envObject

Returns the value of attribute env.



17
18
19
# File 'lib/admin_module/rake/snapshot_tasks.rb', line 17

def env
  @env
end

#nameObject

Returns the value of attribute name.



18
19
20
# File 'lib/admin_module/rake/snapshot_tasks.rb', line 18

def name
  @name
end

#pathObject

Returns the value of attribute path.



20
21
22
# File 'lib/admin_module/rake/snapshot_tasks.rb', line 20

def path
  @path
end

#stop_on_exceptionObject

Returns the value of attribute stop_on_exception.



23
24
25
# File 'lib/admin_module/rake/snapshot_tasks.rb', line 23

def stop_on_exception
  @stop_on_exception
end

#toObject

Returns the value of attribute to.



19
20
21
# File 'lib/admin_module/rake/snapshot_tasks.rb', line 19

def to
  @to
end

#valid_actionsObject (readonly)

Returns the value of attribute valid_actions.



22
23
24
# File 'lib/admin_module/rake/snapshot_tasks.rb', line 22

def valid_actions
  @valid_actions
end

Class Method Details

.installObject



193
194
195
# File 'lib/admin_module/rake/snapshot_tasks.rb', line 193

def install
  new.install
end

Instance Method Details

#assert_env_is_configured(arg) ⇒ Object



150
151
152
153
154
155
156
# File 'lib/admin_module/rake/snapshot_tasks.rb', line 150

def assert_env_is_configured arg
  unless AdminModule.configuration.credentials.key? arg
    init_msg = "Have you initialized your config file?\n Try: admin_module config init <filedir>"
    env_msg = "Have you configured your environments?\n Try: admin_module config add env <envname> <url>"
    raise "Unknown environment: #{arg}\n#{init_msg}\n\n#{env_msg}"
  end
end

#assert_provided(value, msg) ⇒ Object



144
145
146
147
148
# File 'lib/admin_module/rake/snapshot_tasks.rb', line 144

def assert_provided value, msg
  if value.nil? || value.empty?
    raise msg
  end
end

#commitObject

Execute the task (action)



70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
# File 'lib/admin_module/rake/snapshot_tasks.rb', line 70

def commit
  validate_params

  client = AdminModule::Client.new
  client.env = env

  if self.respond_to? action
    self.send(action, client)
    return
  else
    raise "Unknown action - #{action}"
  end

rescue Exception => e
  raise e if stop_on_exception == true
ensure
  client.quit
end

#define_taskObject

:nodoc:



36
37
38
39
40
41
42
# File 'lib/admin_module/rake/snapshot_tasks.rb', line 36

def define_task #:nodoc:
  desc @desc
  task(@task_name, required_args_for_action) do |t,args|
    set_vars args
    commit  # Call method to perform when invoked.
  end
end

#export(client) ⇒ Object



108
109
110
# File 'lib/admin_module/rake/snapshot_tasks.rb', line 108

def export client
  $stdout << client.snapshots.export(path)
end

#import(client) ⇒ Object



104
105
106
# File 'lib/admin_module/rake/snapshot_tasks.rb', line 104

def import client
  $stdout << client.snapshots.import(path)
end

#installObject

Instance method to generate the tasks; For each environment where we have configured credentials, generate a task for each available action.



204
205
206
207
208
209
210
211
212
213
# File 'lib/admin_module/rake/snapshot_tasks.rb', line 204

def install
  AdminModule.configuration.credentials.keys.each do |e|
    valid_actions.each do |action|
      AdminModule::Rake::SnapshotTasks.new("am:#{e}:snapshot:#{action}", "#{action} #{e} snapshot defn(s)") do |t|
        t.env = e
        t.action = action
      end
    end
  end
end

#list(client) ⇒ Object

Actions



93
94
95
96
# File 'lib/admin_module/rake/snapshot_tasks.rb', line 93

def list client
  $stdout << client.snapshots.list.join("\n")
  $stdout << "\n"
end

#read(client) ⇒ Object



98
99
100
101
102
# File 'lib/admin_module/rake/snapshot_tasks.rb', line 98

def read client
  result = {}
  result[name] = client.snapshots.read(name)
  $stdout << result.to_yaml
end

#rename(client) ⇒ Object



112
113
114
# File 'lib/admin_module/rake/snapshot_tasks.rb', line 112

def rename client
  $stdout << client.snapshots.rename(name, to)
end

#required_args_for_actionObject

Define the task args, based on the action. Used when programatically generating the tasks.



163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
# File 'lib/admin_module/rake/snapshot_tasks.rb', line 163

def required_args_for_action
  args = []

  case action
  when 'read'
    args << :name

  when 'rename'
    args << :name
    args << :to

  when 'import'
    args << :path

  when 'export'
    args << :path

  else
    # Noop
  end

  args
end

#set_vars(args) ⇒ Object

Add each arg passed to the task, as an instance variable of the task



48
49
50
51
52
53
54
# File 'lib/admin_module/rake/snapshot_tasks.rb', line 48

def set_vars args
  args.each do |arg,val|
    instance_variable_set "@#{arg}", val
  end

  args
end

#validate_paramsObject

Verify we have the needed parameters (arguments) to perform the task action.



121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
# File 'lib/admin_module/rake/snapshot_tasks.rb', line 121

def validate_params
  assert_provided env, 'Missing "env"'
  assert_provided action, 'Missing "action"'

  case action
  when 'import'
    assert_provided path, 'Missing "path"'

  when 'export'
    assert_provided path, 'Missing "path"'

  when 'read'
    assert_provided name, 'Missing "name"'

  when 'rename'
    assert_provided name, 'Missing "name"'
    assert_provided to, 'Missing "to"'

  end

  assert_env_is_configured env
end