admin_module 0.1.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/.gitignore +19 -0
- data/.rspec +3 -0
- data/Gemfile +14 -0
- data/Guardfile +24 -0
- data/LICENSE +22 -0
- data/README.md +281 -0
- data/Rakefile +98 -0
- data/admin_module.gemspec +34 -0
- data/bin/admin_module +13 -0
- data/lib/admin_module.rb +260 -0
- data/lib/admin_module/cli.rb +54 -0
- data/lib/admin_module/cli/cli_guideline.rb +80 -0
- data/lib/admin_module/cli/cli_lock.rb +149 -0
- data/lib/admin_module/cli/cli_parameter.rb +66 -0
- data/lib/admin_module/cli/cli_task.rb +149 -0
- data/lib/admin_module/cli_old.rb +92 -0
- data/lib/admin_module/client.rb +146 -0
- data/lib/admin_module/command.rb +25 -0
- data/lib/admin_module/command/client_access.rb +43 -0
- data/lib/admin_module/command/config.rb +310 -0
- data/lib/admin_module/command/dc.rb +110 -0
- data/lib/admin_module/command/gdl.rb +71 -0
- data/lib/admin_module/command/lock.rb +110 -0
- data/lib/admin_module/command/ppm.rb +142 -0
- data/lib/admin_module/command/rule.rb +77 -0
- data/lib/admin_module/command/ruleset.rb +56 -0
- data/lib/admin_module/command/snapshot.rb +110 -0
- data/lib/admin_module/command/stage.rb +131 -0
- data/lib/admin_module/command/task.rb +110 -0
- data/lib/admin_module/config_helper.rb +33 -0
- data/lib/admin_module/dc.rb +133 -0
- data/lib/admin_module/guideline.rb +86 -0
- data/lib/admin_module/locks.rb +142 -0
- data/lib/admin_module/page_factory.rb +55 -0
- data/lib/admin_module/pages.rb +120 -0
- data/lib/admin_module/pages/dc_definitions_page.rb +73 -0
- data/lib/admin_module/pages/dc_detail_page.rb +187 -0
- data/lib/admin_module/pages/guideline_page.rb +35 -0
- data/lib/admin_module/pages/guideline_version_page.rb +140 -0
- data/lib/admin_module/pages/guidelines_page.rb +59 -0
- data/lib/admin_module/pages/guidelines_version_all_page.rb +116 -0
- data/lib/admin_module/pages/lock_definition_page.rb +178 -0
- data/lib/admin_module/pages/lock_definitions_page.rb +69 -0
- data/lib/admin_module/pages/login_page.rb +75 -0
- data/lib/admin_module/pages/parameter_page.rb +62 -0
- data/lib/admin_module/pages/parameters_page.rb +46 -0
- data/lib/admin_module/pages/ppms_page.rb +110 -0
- data/lib/admin_module/pages/rule_page.rb +68 -0
- data/lib/admin_module/pages/rules_page.rb +74 -0
- data/lib/admin_module/pages/ruleset_page.rb +64 -0
- data/lib/admin_module/pages/rulesets_page.rb +60 -0
- data/lib/admin_module/pages/select_list_syncable.rb +64 -0
- data/lib/admin_module/pages/snapshot_definitions_page.rb +73 -0
- data/lib/admin_module/pages/snapshot_detail_page.rb +246 -0
- data/lib/admin_module/pages/workflow_detail_page.rb +451 -0
- data/lib/admin_module/pages/workflow_detail_task_addl_detail_page.rb +172 -0
- data/lib/admin_module/pages/workflow_detail_task_mappings_page.rb +163 -0
- data/lib/admin_module/pages/workflow_detail_task_screens_page.rb +75 -0
- data/lib/admin_module/pages/workflow_details_page.rb +67 -0
- data/lib/admin_module/pages/workflow_task_page.rb +107 -0
- data/lib/admin_module/pages/workflow_tasks_page.rb +111 -0
- data/lib/admin_module/ppms.rb +78 -0
- data/lib/admin_module/rake.rb +22 -0
- data/lib/admin_module/rake/dc_tasks.rb +185 -0
- data/lib/admin_module/rake/deploy_task.rb +59 -0
- data/lib/admin_module/rake/gdl_tasks.rb +189 -0
- data/lib/admin_module/rake/lock_tasks.rb +189 -0
- data/lib/admin_module/rake/parameter_task.rb +86 -0
- data/lib/admin_module/rake/ppm_tasks.rb +248 -0
- data/lib/admin_module/rake/rule_tasks.rb +157 -0
- data/lib/admin_module/rake/snapshot_tasks.rb +223 -0
- data/lib/admin_module/rake/stage_tasks.rb +197 -0
- data/lib/admin_module/rake/stages_task.rb +197 -0
- data/lib/admin_module/rake/task_tasks.rb +189 -0
- data/lib/admin_module/rules.rb +50 -0
- data/lib/admin_module/rulesets.rb +42 -0
- data/lib/admin_module/snapshots.rb +133 -0
- data/lib/admin_module/stages.rb +171 -0
- data/lib/admin_module/tasks.rb +147 -0
- data/lib/admin_module/version.rb +3 -0
- data/old_spec/lib/admin_module/cli_configuration_spec.rb +126 -0
- data/old_spec/lib/admin_module/cli_create_stage_spec.rb +89 -0
- data/old_spec/lib/admin_module/cli_delete_rule_spec.rb +57 -0
- data/old_spec/lib/admin_module/cli_deploy_spec.rb +57 -0
- data/old_spec/lib/admin_module/cli_export_locks_spec.rb +62 -0
- data/old_spec/lib/admin_module/cli_export_stages_spec.rb +62 -0
- data/old_spec/lib/admin_module/cli_guidelines_version_all_spec.rb +58 -0
- data/old_spec/lib/admin_module/cli_import_locks_spec.rb +153 -0
- data/old_spec/lib/admin_module/cli_import_stages_spec.rb +173 -0
- data/old_spec/lib/admin_module/cli_modify_locks_spec.rb +128 -0
- data/old_spec/lib/admin_module/cli_modify_stages_spec.rb +88 -0
- data/old_spec/lib/admin_module/cli_rename_rule_spec.rb +53 -0
- data/old_spec/lib/admin_module/cli_rename_ruleset_spec.rb +53 -0
- data/old_spec/lib/admin_module/cli_var_spec.rb +41 -0
- data/old_spec/lib/admin_module/rake/deploy_task_spec.rb +85 -0
- data/old_spec/lib/admin_module/rake/parameter_task_spec.rb +58 -0
- data/old_spec/lib/admin_module/rake/rules_task_spec.rb +75 -0
- data/spec/data/build/test1.xml +0 -0
- data/spec/data/build/test2.xml +1 -0
- data/spec/data/import_dcs.yml +31 -0
- data/spec/data/import_locks.yml +4 -0
- data/spec/data/import_snapshots.yml +35 -0
- data/spec/data/import_stages.yml +4 -0
- data/spec/data/import_tasks.yml +25 -0
- data/spec/data/patch-test.xml +1 -0
- data/spec/data/remove_test_del_rule.xml +1 -0
- data/spec/data/stages.yml +518 -0
- data/spec/data/test_del_rule.xml +1 -0
- data/spec/lib/admin_module/admin_module_spec.rb +175 -0
- data/spec/lib/admin_module/cli_spec.rb +36 -0
- data/spec/lib/admin_module/client_spec.rb +158 -0
- data/spec/lib/admin_module/command/config_spec.rb +477 -0
- data/spec/lib/admin_module/command/dc_spec.rb +202 -0
- data/spec/lib/admin_module/command/gdl_spec.rb +139 -0
- data/spec/lib/admin_module/command/lock_spec.rb +207 -0
- data/spec/lib/admin_module/command/rule_spec.rb +163 -0
- data/spec/lib/admin_module/command/ruleset_spec.rb +124 -0
- data/spec/lib/admin_module/command/snapshot_spec.rb +202 -0
- data/spec/lib/admin_module/command/stage_spec.rb +259 -0
- data/spec/lib/admin_module/command/task_spec.rb +207 -0
- data/spec/lib/admin_module/dc_spec.rb +192 -0
- data/spec/lib/admin_module/guideline_spec.rb +177 -0
- data/spec/lib/admin_module/locks_spec.rb +188 -0
- data/spec/lib/admin_module/rules_spec.rb +110 -0
- data/spec/lib/admin_module/rulesets_spec.rb +85 -0
- data/spec/lib/admin_module/snapshot_spec.rb +192 -0
- data/spec/lib/admin_module/stages_spec.rb +179 -0
- data/spec/lib/admin_module/tasks_spec.rb +196 -0
- data/spec/spec_helper.rb +54 -0
- data/spec/support/asserts.rb +13 -0
- data/spec/support/data_clearing.rb +28 -0
- data/spec/support/dirs.rb +54 -0
- data/spec/support/helpers.rb +83 -0
- data/spec/support/lock.rb +23 -0
- data/spec/support/mocks.rb +213 -0
- data/spec/support/snapshot.rb +28 -0
- data/spec/support/stage.rb +22 -0
- data/spec/support/stage_factory.rb +138 -0
- data/spec/support/task.rb +23 -0
- metadata +381 -0
|
@@ -0,0 +1,157 @@
|
|
|
1
|
+
##############################################################################
|
|
2
|
+
# File:: rule_tasks.rb
|
|
3
|
+
# Purpose:: RuleTasks definition
|
|
4
|
+
#
|
|
5
|
+
# Author:: Jeff McAffee 2014-04-24
|
|
6
|
+
#
|
|
7
|
+
##############################################################################
|
|
8
|
+
|
|
9
|
+
require 'admin_module'
|
|
10
|
+
require 'rake/dsl_definition'
|
|
11
|
+
require 'rake'
|
|
12
|
+
|
|
13
|
+
module AdminModule::Rake
|
|
14
|
+
|
|
15
|
+
class RuleTasks
|
|
16
|
+
include ::Rake::DSL if defined?(::Rake::DSL)
|
|
17
|
+
|
|
18
|
+
attr_accessor :env
|
|
19
|
+
attr_accessor :name
|
|
20
|
+
attr_accessor :to
|
|
21
|
+
attr_reader :action
|
|
22
|
+
attr_reader :valid_actions
|
|
23
|
+
attr_reader :stop_on_exception
|
|
24
|
+
|
|
25
|
+
def initialize(task_name = 'rule_task', desc = "Modify a guideline rule")
|
|
26
|
+
@valid_actions = ['rename', 'delete']
|
|
27
|
+
@task_name, @desc = task_name, desc
|
|
28
|
+
@stop_on_exception = true
|
|
29
|
+
|
|
30
|
+
yield self if block_given?
|
|
31
|
+
|
|
32
|
+
define_task
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
def define_task #:nodoc:
|
|
36
|
+
desc @desc
|
|
37
|
+
task @task_name, required_args_for_action do |t,args|
|
|
38
|
+
set_vars args
|
|
39
|
+
commit # Call method to perform when invoked.
|
|
40
|
+
end
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
def set_vars args
|
|
44
|
+
args.each do |arg,val|
|
|
45
|
+
instance_variable_set "@#{arg}", val
|
|
46
|
+
end
|
|
47
|
+
|
|
48
|
+
args
|
|
49
|
+
end
|
|
50
|
+
|
|
51
|
+
def action=(task_action)
|
|
52
|
+
raise "action must be one of #{valid_actions.join(', ')}" unless valid_actions.include?(task_action.downcase)
|
|
53
|
+
@action = task_action
|
|
54
|
+
end
|
|
55
|
+
|
|
56
|
+
def stop_on_exception=(do_stop)
|
|
57
|
+
raise ArgumentError, 'Expecting true or false' unless do_stop === true || do_stop === false
|
|
58
|
+
@stop_on_exception = do_stop
|
|
59
|
+
end
|
|
60
|
+
|
|
61
|
+
def commit
|
|
62
|
+
validate_params
|
|
63
|
+
|
|
64
|
+
client = AdminModule::Client.new
|
|
65
|
+
client.env = env
|
|
66
|
+
|
|
67
|
+
if self.respond_to? action
|
|
68
|
+
self.send(action, client)
|
|
69
|
+
return
|
|
70
|
+
else
|
|
71
|
+
raise "Unknown action - #{action}"
|
|
72
|
+
end
|
|
73
|
+
|
|
74
|
+
rescue Exception => e
|
|
75
|
+
raise e if stop_on_exception == true
|
|
76
|
+
ensure
|
|
77
|
+
client.quit unless client.nil?
|
|
78
|
+
end
|
|
79
|
+
|
|
80
|
+
def rename client
|
|
81
|
+
$stdout << client.rules.rename(name, to)
|
|
82
|
+
end
|
|
83
|
+
|
|
84
|
+
def delete client
|
|
85
|
+
$stdout << client.rules.delete(name)
|
|
86
|
+
end
|
|
87
|
+
|
|
88
|
+
def validate_params
|
|
89
|
+
assert_provided env, 'Missing "env"'
|
|
90
|
+
assert_provided action, 'Missing "action"'
|
|
91
|
+
|
|
92
|
+
case action
|
|
93
|
+
when 'rename'
|
|
94
|
+
assert_provided name, 'Missing "name"'
|
|
95
|
+
assert_provided to, 'Missing "to"'
|
|
96
|
+
|
|
97
|
+
when 'delete'
|
|
98
|
+
assert_provided name, 'Missing "name"'
|
|
99
|
+
|
|
100
|
+
end
|
|
101
|
+
|
|
102
|
+
assert_env_is_configured env
|
|
103
|
+
end
|
|
104
|
+
|
|
105
|
+
def assert_provided value, msg
|
|
106
|
+
if value.nil? || value.empty?
|
|
107
|
+
raise msg
|
|
108
|
+
end
|
|
109
|
+
end
|
|
110
|
+
|
|
111
|
+
def assert_env_is_configured arg
|
|
112
|
+
unless AdminModule.configuration.credentials.key? arg
|
|
113
|
+
init_msg = "Have you initialized your config file?\n Try: admin_module config init <filedir>"
|
|
114
|
+
env_msg = "Have you configured your environments?\n Try: admin_module config add env <envname> <url>"
|
|
115
|
+
raise "Unknown environment: #{arg}\n#{init_msg}\n\n#{env_msg}"
|
|
116
|
+
end
|
|
117
|
+
end
|
|
118
|
+
|
|
119
|
+
def required_args_for_action
|
|
120
|
+
args = []
|
|
121
|
+
|
|
122
|
+
case action
|
|
123
|
+
when 'delete'
|
|
124
|
+
args << :name
|
|
125
|
+
|
|
126
|
+
when 'rename'
|
|
127
|
+
args << :name
|
|
128
|
+
args << :to
|
|
129
|
+
|
|
130
|
+
else
|
|
131
|
+
# Noop
|
|
132
|
+
end
|
|
133
|
+
|
|
134
|
+
args
|
|
135
|
+
end
|
|
136
|
+
|
|
137
|
+
class << self
|
|
138
|
+
def install
|
|
139
|
+
new.install
|
|
140
|
+
end
|
|
141
|
+
end
|
|
142
|
+
|
|
143
|
+
def install
|
|
144
|
+
AdminModule.configuration.credentials.keys.each do |e|
|
|
145
|
+
valid_actions.each do |action|
|
|
146
|
+
AdminModule::Rake::RuleTasks.new("am:#{e}:rule:#{action}", "#{action} #{e} rule(s)") do |t|
|
|
147
|
+
t.env = e
|
|
148
|
+
t.action = action
|
|
149
|
+
end
|
|
150
|
+
end
|
|
151
|
+
end
|
|
152
|
+
end
|
|
153
|
+
end # class
|
|
154
|
+
end # module AdminModule::Task
|
|
155
|
+
|
|
156
|
+
AdminModule::Rake::RuleTasks.install
|
|
157
|
+
|
|
@@ -0,0 +1,223 @@
|
|
|
1
|
+
##############################################################################
|
|
2
|
+
# File:: snapshot_tasks.rb
|
|
3
|
+
# Purpose:: SnapshotTasks definition
|
|
4
|
+
#
|
|
5
|
+
# Author:: Jeff McAffee 2015-04-05
|
|
6
|
+
#
|
|
7
|
+
##############################################################################
|
|
8
|
+
|
|
9
|
+
require 'admin_module'
|
|
10
|
+
require 'rake/dsl_definition'
|
|
11
|
+
require 'rake'
|
|
12
|
+
|
|
13
|
+
module AdminModule::Rake
|
|
14
|
+
class SnapshotTasks
|
|
15
|
+
include ::Rake::DSL if defined?(::Rake::DSL)
|
|
16
|
+
|
|
17
|
+
attr_accessor :env
|
|
18
|
+
attr_accessor :name
|
|
19
|
+
attr_accessor :to
|
|
20
|
+
attr_accessor :path
|
|
21
|
+
attr_reader :action
|
|
22
|
+
attr_reader :valid_actions
|
|
23
|
+
attr_reader :stop_on_exception
|
|
24
|
+
|
|
25
|
+
def initialize(task_name = 'snapshots_task', desc = "modify snapshot definition(s)")
|
|
26
|
+
@valid_actions = ['import', 'export', 'read', 'list', 'rename']
|
|
27
|
+
@task_name, @desc = task_name, desc
|
|
28
|
+
|
|
29
|
+
@stop_on_exception = true
|
|
30
|
+
|
|
31
|
+
yield self if block_given?
|
|
32
|
+
|
|
33
|
+
define_task
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
def define_task #:nodoc:
|
|
37
|
+
desc @desc
|
|
38
|
+
task(@task_name, required_args_for_action) do |t,args|
|
|
39
|
+
set_vars args
|
|
40
|
+
commit # Call method to perform when invoked.
|
|
41
|
+
end
|
|
42
|
+
end
|
|
43
|
+
|
|
44
|
+
#
|
|
45
|
+
# Add each arg passed to the task, as an instance variable of the task
|
|
46
|
+
#
|
|
47
|
+
|
|
48
|
+
def set_vars args
|
|
49
|
+
args.each do |arg,val|
|
|
50
|
+
instance_variable_set "@#{arg}", val
|
|
51
|
+
end
|
|
52
|
+
|
|
53
|
+
args
|
|
54
|
+
end
|
|
55
|
+
|
|
56
|
+
def action=(task_action)
|
|
57
|
+
raise "action must be one of #{valid_types.join(', ')}" unless valid_actions.include?(task_action.downcase)
|
|
58
|
+
@action = task_action
|
|
59
|
+
end
|
|
60
|
+
|
|
61
|
+
def stop_on_exception=(do_stop)
|
|
62
|
+
raise ArgumentError, 'Expecting true or false' unless do_stop === true || do_stop === false
|
|
63
|
+
@stop_on_exception = do_stop
|
|
64
|
+
end
|
|
65
|
+
|
|
66
|
+
#
|
|
67
|
+
# Execute the task (action)
|
|
68
|
+
#
|
|
69
|
+
|
|
70
|
+
def commit
|
|
71
|
+
validate_params
|
|
72
|
+
|
|
73
|
+
client = AdminModule::Client.new
|
|
74
|
+
client.env = env
|
|
75
|
+
|
|
76
|
+
if self.respond_to? action
|
|
77
|
+
self.send(action, client)
|
|
78
|
+
return
|
|
79
|
+
else
|
|
80
|
+
raise "Unknown action - #{action}"
|
|
81
|
+
end
|
|
82
|
+
|
|
83
|
+
rescue Exception => e
|
|
84
|
+
raise e if stop_on_exception == true
|
|
85
|
+
ensure
|
|
86
|
+
client.quit
|
|
87
|
+
end
|
|
88
|
+
|
|
89
|
+
#
|
|
90
|
+
# Actions
|
|
91
|
+
#
|
|
92
|
+
|
|
93
|
+
def list client
|
|
94
|
+
$stdout << client.snapshots.list.join("\n")
|
|
95
|
+
$stdout << "\n"
|
|
96
|
+
end
|
|
97
|
+
|
|
98
|
+
def read client
|
|
99
|
+
result = {}
|
|
100
|
+
result[name] = client.snapshots.read(name)
|
|
101
|
+
$stdout << result.to_yaml
|
|
102
|
+
end
|
|
103
|
+
|
|
104
|
+
def import client
|
|
105
|
+
$stdout << client.snapshots.import(path)
|
|
106
|
+
end
|
|
107
|
+
|
|
108
|
+
def export client
|
|
109
|
+
$stdout << client.snapshots.export(path)
|
|
110
|
+
end
|
|
111
|
+
|
|
112
|
+
def rename client
|
|
113
|
+
$stdout << client.snapshots.rename(name, to)
|
|
114
|
+
end
|
|
115
|
+
|
|
116
|
+
#
|
|
117
|
+
# Verify we have the needed parameters (arguments) to perform
|
|
118
|
+
# the task action.
|
|
119
|
+
#
|
|
120
|
+
|
|
121
|
+
def validate_params
|
|
122
|
+
assert_provided env, 'Missing "env"'
|
|
123
|
+
assert_provided action, 'Missing "action"'
|
|
124
|
+
|
|
125
|
+
case action
|
|
126
|
+
when 'import'
|
|
127
|
+
assert_provided path, 'Missing "path"'
|
|
128
|
+
|
|
129
|
+
when 'export'
|
|
130
|
+
assert_provided path, 'Missing "path"'
|
|
131
|
+
|
|
132
|
+
when 'read'
|
|
133
|
+
assert_provided name, 'Missing "name"'
|
|
134
|
+
|
|
135
|
+
when 'rename'
|
|
136
|
+
assert_provided name, 'Missing "name"'
|
|
137
|
+
assert_provided to, 'Missing "to"'
|
|
138
|
+
|
|
139
|
+
end
|
|
140
|
+
|
|
141
|
+
assert_env_is_configured env
|
|
142
|
+
end
|
|
143
|
+
|
|
144
|
+
def assert_provided value, msg
|
|
145
|
+
if value.nil? || value.empty?
|
|
146
|
+
raise msg
|
|
147
|
+
end
|
|
148
|
+
end
|
|
149
|
+
|
|
150
|
+
def assert_env_is_configured arg
|
|
151
|
+
unless AdminModule.configuration.credentials.key? arg
|
|
152
|
+
init_msg = "Have you initialized your config file?\n Try: admin_module config init <filedir>"
|
|
153
|
+
env_msg = "Have you configured your environments?\n Try: admin_module config add env <envname> <url>"
|
|
154
|
+
raise "Unknown environment: #{arg}\n#{init_msg}\n\n#{env_msg}"
|
|
155
|
+
end
|
|
156
|
+
end
|
|
157
|
+
|
|
158
|
+
#
|
|
159
|
+
# Define the task args, based on the action.
|
|
160
|
+
# Used when programatically generating the tasks.
|
|
161
|
+
#
|
|
162
|
+
|
|
163
|
+
def required_args_for_action
|
|
164
|
+
args = []
|
|
165
|
+
|
|
166
|
+
case action
|
|
167
|
+
when 'read'
|
|
168
|
+
args << :name
|
|
169
|
+
|
|
170
|
+
when 'rename'
|
|
171
|
+
args << :name
|
|
172
|
+
args << :to
|
|
173
|
+
|
|
174
|
+
when 'import'
|
|
175
|
+
args << :path
|
|
176
|
+
|
|
177
|
+
when 'export'
|
|
178
|
+
args << :path
|
|
179
|
+
|
|
180
|
+
else
|
|
181
|
+
# Noop
|
|
182
|
+
end
|
|
183
|
+
|
|
184
|
+
args
|
|
185
|
+
end
|
|
186
|
+
|
|
187
|
+
#
|
|
188
|
+
# Class method to create an instance of the task generator,
|
|
189
|
+
# and call the instance's install method.
|
|
190
|
+
#
|
|
191
|
+
|
|
192
|
+
class << self
|
|
193
|
+
def install
|
|
194
|
+
new.install
|
|
195
|
+
end
|
|
196
|
+
end
|
|
197
|
+
|
|
198
|
+
#
|
|
199
|
+
# Instance method to generate the tasks;
|
|
200
|
+
# For each environment where we have configured credentials,
|
|
201
|
+
# generate a task for each available action.
|
|
202
|
+
#
|
|
203
|
+
|
|
204
|
+
def install
|
|
205
|
+
AdminModule.configuration.credentials.keys.each do |e|
|
|
206
|
+
valid_actions.each do |action|
|
|
207
|
+
AdminModule::Rake::SnapshotTasks.new("am:#{e}:snapshot:#{action}", "#{action} #{e} snapshot defn(s)") do |t|
|
|
208
|
+
t.env = e
|
|
209
|
+
t.action = action
|
|
210
|
+
end
|
|
211
|
+
end
|
|
212
|
+
end
|
|
213
|
+
end
|
|
214
|
+
end # class
|
|
215
|
+
end # module
|
|
216
|
+
|
|
217
|
+
|
|
218
|
+
#
|
|
219
|
+
# Install (generate) the tasks
|
|
220
|
+
#
|
|
221
|
+
|
|
222
|
+
AdminModule::Rake::SnapshotTasks.install
|
|
223
|
+
|
|
@@ -0,0 +1,197 @@
|
|
|
1
|
+
##############################################################################
|
|
2
|
+
# File:: stage_tasks.rb
|
|
3
|
+
# Purpose:: StageTasks definition
|
|
4
|
+
#
|
|
5
|
+
# Author:: Jeff McAffee 2015-03-10
|
|
6
|
+
# Copyright:: Copyright (c) 2015, kTech Systems LLC. All rights reserved.
|
|
7
|
+
# Website:: http://ktechsystems.com
|
|
8
|
+
##############################################################################
|
|
9
|
+
|
|
10
|
+
require 'admin_module'
|
|
11
|
+
require 'rake/dsl_definition'
|
|
12
|
+
require 'rake'
|
|
13
|
+
|
|
14
|
+
module AdminModule::Rake
|
|
15
|
+
|
|
16
|
+
class StageTasks
|
|
17
|
+
include ::Rake::DSL if defined?(::Rake::DSL)
|
|
18
|
+
|
|
19
|
+
attr_accessor :env
|
|
20
|
+
attr_accessor :name
|
|
21
|
+
attr_accessor :to
|
|
22
|
+
attr_accessor :path
|
|
23
|
+
attr_accessor :allow_create
|
|
24
|
+
attr_reader :action
|
|
25
|
+
attr_reader :valid_actions
|
|
26
|
+
attr_reader :stop_on_exception
|
|
27
|
+
|
|
28
|
+
def initialize(task_name = 'stages_task', desc = "Modify a stage or stages")
|
|
29
|
+
@valid_actions = ['import', 'export', 'read', 'list', 'rename', 'delete']
|
|
30
|
+
@task_name, @desc = task_name, desc
|
|
31
|
+
|
|
32
|
+
@stop_on_exception = true
|
|
33
|
+
@allow_create = false
|
|
34
|
+
|
|
35
|
+
yield self if block_given?
|
|
36
|
+
|
|
37
|
+
define_task
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
def define_task #:nodoc:
|
|
41
|
+
desc @desc
|
|
42
|
+
task(@task_name, required_args_for_action) do |t,args|
|
|
43
|
+
set_vars args
|
|
44
|
+
commit # Call method to perform when invoked.
|
|
45
|
+
end
|
|
46
|
+
end
|
|
47
|
+
|
|
48
|
+
def set_vars args
|
|
49
|
+
args.each do |arg,val|
|
|
50
|
+
instance_variable_set "@#{arg}", val
|
|
51
|
+
end
|
|
52
|
+
|
|
53
|
+
args
|
|
54
|
+
end
|
|
55
|
+
|
|
56
|
+
def action=(task_action)
|
|
57
|
+
raise "action must be one of #{valid_types.join(', ')}" unless valid_actions.include?(task_action.downcase)
|
|
58
|
+
@action = task_action
|
|
59
|
+
end
|
|
60
|
+
|
|
61
|
+
def stop_on_exception=(do_stop)
|
|
62
|
+
raise ArgumentError, 'Expecting true or false' unless do_stop === true || do_stop === false
|
|
63
|
+
@stop_on_exception = do_stop
|
|
64
|
+
end
|
|
65
|
+
|
|
66
|
+
def commit
|
|
67
|
+
validate_params
|
|
68
|
+
|
|
69
|
+
client = AdminModule::Client.new
|
|
70
|
+
client.env = env
|
|
71
|
+
|
|
72
|
+
if self.respond_to? action
|
|
73
|
+
self.send(action, client)
|
|
74
|
+
return
|
|
75
|
+
else
|
|
76
|
+
raise "Unknown action - #{action}"
|
|
77
|
+
end
|
|
78
|
+
|
|
79
|
+
rescue Exception => e
|
|
80
|
+
raise e if stop_on_exception == true
|
|
81
|
+
ensure
|
|
82
|
+
client.quit
|
|
83
|
+
end
|
|
84
|
+
|
|
85
|
+
def list client
|
|
86
|
+
$stdout << client.stages.list.join("\n")
|
|
87
|
+
$stdout << "\n"
|
|
88
|
+
end
|
|
89
|
+
|
|
90
|
+
def read client
|
|
91
|
+
result = {}
|
|
92
|
+
result[name] = client.stages.read(name)
|
|
93
|
+
$stdout << result.to_yaml
|
|
94
|
+
end
|
|
95
|
+
|
|
96
|
+
def import client
|
|
97
|
+
$stdout << client.stages.import(path, allow_create)
|
|
98
|
+
end
|
|
99
|
+
|
|
100
|
+
def export client
|
|
101
|
+
$stdout << client.stages.export(path)
|
|
102
|
+
end
|
|
103
|
+
|
|
104
|
+
def rename client
|
|
105
|
+
$stdout << client.stages.rename(name, to)
|
|
106
|
+
end
|
|
107
|
+
|
|
108
|
+
def delete client
|
|
109
|
+
$stdout << client.stages.delete(name)
|
|
110
|
+
end
|
|
111
|
+
|
|
112
|
+
def validate_params
|
|
113
|
+
assert_provided env, 'Missing "env"'
|
|
114
|
+
assert_provided action, 'Missing "action"'
|
|
115
|
+
|
|
116
|
+
case action
|
|
117
|
+
when 'import'
|
|
118
|
+
assert_provided path, 'Missing "path"'
|
|
119
|
+
|
|
120
|
+
when 'export'
|
|
121
|
+
assert_provided path, 'Missing "path"'
|
|
122
|
+
|
|
123
|
+
when 'read'
|
|
124
|
+
assert_provided name, 'Missing "name"'
|
|
125
|
+
|
|
126
|
+
when 'rename'
|
|
127
|
+
assert_provided name, 'Missing "name"'
|
|
128
|
+
assert_provided to, 'Missing "to"'
|
|
129
|
+
|
|
130
|
+
when 'delete'
|
|
131
|
+
assert_provided name, 'Missing "name"'
|
|
132
|
+
|
|
133
|
+
end
|
|
134
|
+
|
|
135
|
+
assert_env_is_configured env
|
|
136
|
+
end
|
|
137
|
+
|
|
138
|
+
def assert_provided value, msg
|
|
139
|
+
if value.nil? || value.empty?
|
|
140
|
+
raise msg
|
|
141
|
+
end
|
|
142
|
+
end
|
|
143
|
+
|
|
144
|
+
def assert_env_is_configured arg
|
|
145
|
+
unless AdminModule.configuration.credentials.key? arg
|
|
146
|
+
init_msg = "Have you initialized your config file?\n Try: admin_module config init <filedir>"
|
|
147
|
+
env_msg = "Have you configured your environments?\n Try: admin_module config add env <envname> <url>"
|
|
148
|
+
raise "Unknown environment: #{arg}\n#{init_msg}\n\n#{env_msg}"
|
|
149
|
+
end
|
|
150
|
+
end
|
|
151
|
+
|
|
152
|
+
def required_args_for_action
|
|
153
|
+
args = []
|
|
154
|
+
|
|
155
|
+
case action
|
|
156
|
+
when 'read','delete'
|
|
157
|
+
args << :name
|
|
158
|
+
|
|
159
|
+
when 'rename'
|
|
160
|
+
args << :name
|
|
161
|
+
args << :to
|
|
162
|
+
|
|
163
|
+
when 'import'
|
|
164
|
+
args << :path
|
|
165
|
+
args << :allow_create
|
|
166
|
+
|
|
167
|
+
when 'export'
|
|
168
|
+
args << :path
|
|
169
|
+
|
|
170
|
+
else
|
|
171
|
+
# Noop
|
|
172
|
+
end
|
|
173
|
+
|
|
174
|
+
args
|
|
175
|
+
end
|
|
176
|
+
|
|
177
|
+
class << self
|
|
178
|
+
def install
|
|
179
|
+
new.install
|
|
180
|
+
end
|
|
181
|
+
end
|
|
182
|
+
|
|
183
|
+
def install
|
|
184
|
+
AdminModule.configuration.credentials.keys.each do |e|
|
|
185
|
+
valid_actions.each do |action|
|
|
186
|
+
AdminModule::Rake::StageTasks.new("am:#{e}:stage:#{action}", "#{action} #{e} stage(s)") do |t|
|
|
187
|
+
t.env = e
|
|
188
|
+
t.action = action
|
|
189
|
+
end
|
|
190
|
+
end
|
|
191
|
+
end
|
|
192
|
+
end
|
|
193
|
+
end # class
|
|
194
|
+
end # module
|
|
195
|
+
|
|
196
|
+
AdminModule::Rake::StageTasks.install
|
|
197
|
+
|