Class: AdminModule::Rake::SnapshotTasks
- Inherits:
-
Object
- Object
- AdminModule::Rake::SnapshotTasks
- Includes:
- Rake::DSL
- Defined in:
- lib/admin_module/rake/snapshot_tasks.rb
Instance Attribute Summary collapse
-
#action ⇒ Object
Returns the value of attribute action.
-
#env ⇒ Object
Returns the value of attribute env.
-
#name ⇒ Object
Returns the value of attribute name.
-
#path ⇒ Object
Returns the value of attribute path.
-
#stop_on_exception ⇒ Object
Returns the value of attribute stop_on_exception.
-
#to ⇒ Object
Returns the value of attribute to.
-
#valid_actions ⇒ Object
readonly
Returns the value of attribute valid_actions.
Class Method Summary collapse
Instance Method Summary collapse
- #assert_env_is_configured(arg) ⇒ Object
- #assert_provided(value, msg) ⇒ Object
-
#commit ⇒ Object
Execute the task (action).
-
#define_task ⇒ Object
:nodoc:.
- #export(client) ⇒ Object
- #import(client) ⇒ Object
-
#initialize(task_name = 'snapshots_task', desc = "modify snapshot definition(s)") {|_self| ... } ⇒ SnapshotTasks
constructor
A new instance of SnapshotTasks.
-
#install ⇒ Object
Instance method to generate the tasks; For each environment where we have configured credentials, generate a task for each available action.
-
#list(client) ⇒ Object
Actions.
- #read(client) ⇒ Object
- #rename(client) ⇒ Object
-
#required_args_for_action ⇒ Object
Define the task args, based on the action.
-
#set_vars(args) ⇒ Object
Add each arg passed to the task, as an instance variable of the task.
-
#validate_params ⇒ Object
Verify we have the needed parameters (arguments) to perform the task action.
Constructor Details
#initialize(task_name = 'snapshots_task', desc = "modify snapshot definition(s)") {|_self| ... } ⇒ SnapshotTasks
Returns a new instance of SnapshotTasks.
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
#action ⇒ Object
Returns the value of attribute action.
21 22 23 |
# File 'lib/admin_module/rake/snapshot_tasks.rb', line 21 def action @action end |
#env ⇒ Object
Returns the value of attribute env.
17 18 19 |
# File 'lib/admin_module/rake/snapshot_tasks.rb', line 17 def env @env end |
#name ⇒ Object
Returns the value of attribute name.
18 19 20 |
# File 'lib/admin_module/rake/snapshot_tasks.rb', line 18 def name @name end |
#path ⇒ Object
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_exception ⇒ Object
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 |
#to ⇒ Object
Returns the value of attribute to.
19 20 21 |
# File 'lib/admin_module/rake/snapshot_tasks.rb', line 19 def to @to end |
#valid_actions ⇒ Object (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
.install ⇒ Object
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 |
#commit ⇒ Object
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_task ⇒ Object
: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 |
#install ⇒ Object
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_action ⇒ Object
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_params ⇒ Object
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 |