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,78 @@
|
|
|
1
|
+
##############################################################################
|
|
2
|
+
# File:: ppms.rb
|
|
3
|
+
# Purpose:: Interface to ppms functionality in admin module
|
|
4
|
+
#
|
|
5
|
+
# Author:: Jeff McAffee 2015-06-23
|
|
6
|
+
#
|
|
7
|
+
##############################################################################
|
|
8
|
+
|
|
9
|
+
require 'admin_module/pages'
|
|
10
|
+
|
|
11
|
+
module AdminModule
|
|
12
|
+
|
|
13
|
+
class Ppms
|
|
14
|
+
attr_reader :page_factory
|
|
15
|
+
|
|
16
|
+
def initialize(page_factory)
|
|
17
|
+
@page_factory = page_factory
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
def list
|
|
21
|
+
ppms_page.get_ppms_data
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
def dups
|
|
25
|
+
all_ppms = ppms_page.get_ppms_with_ids
|
|
26
|
+
|
|
27
|
+
seen = Hash.new
|
|
28
|
+
duplicates = Array.new
|
|
29
|
+
|
|
30
|
+
all_ppms.each do |pdata|
|
|
31
|
+
if seen.has_key?(pdata[:name])
|
|
32
|
+
duplicates << pdata
|
|
33
|
+
duplicates << seen[pdata[:name]]
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
seen[pdata[:name]] = pdata
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
duplicates.sort! { |a,b| a[:name] <=> b[:name] }
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
def export file_path
|
|
43
|
+
File.open(file_path, 'w') do |f|
|
|
44
|
+
f.write list.to_yaml
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
rescue Exception => e
|
|
48
|
+
if e.message.include? 'No such file or directory'
|
|
49
|
+
raise IOError, "No such directory - #{file_path}"
|
|
50
|
+
else
|
|
51
|
+
raise e
|
|
52
|
+
end
|
|
53
|
+
end
|
|
54
|
+
|
|
55
|
+
##
|
|
56
|
+
# Import lock configurations into the current environment from a file.
|
|
57
|
+
|
|
58
|
+
def import file_path
|
|
59
|
+
raise IOError, "File not found: #{file_path}" unless File.exists?(file_path)
|
|
60
|
+
|
|
61
|
+
ppms = Array.new
|
|
62
|
+
File.open(file_path, 'r') do |f|
|
|
63
|
+
# Read array of PPM names
|
|
64
|
+
ppms = YAML.load(f)
|
|
65
|
+
end
|
|
66
|
+
|
|
67
|
+
ppms_page
|
|
68
|
+
.set_ppms_data(ppms)
|
|
69
|
+
.save
|
|
70
|
+
end
|
|
71
|
+
|
|
72
|
+
private
|
|
73
|
+
|
|
74
|
+
def ppms_page
|
|
75
|
+
page_factory.ppms_page
|
|
76
|
+
end
|
|
77
|
+
end # class Ppms
|
|
78
|
+
end # module
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
##############################################################################
|
|
2
|
+
# File:: rake.rb
|
|
3
|
+
# Purpose:: Pull in all rake task classes
|
|
4
|
+
#
|
|
5
|
+
# Author:: Jeff McAffee 03/19/2014
|
|
6
|
+
#
|
|
7
|
+
##############################################################################
|
|
8
|
+
|
|
9
|
+
require 'admin_module'
|
|
10
|
+
|
|
11
|
+
module AdminModule::Rake
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
require_relative 'rake/gdl_tasks'
|
|
15
|
+
require_relative 'rake/stage_tasks'
|
|
16
|
+
require_relative 'rake/lock_tasks'
|
|
17
|
+
require_relative 'rake/dc_tasks'
|
|
18
|
+
require_relative 'rake/snapshot_tasks'
|
|
19
|
+
require_relative 'rake/task_tasks'
|
|
20
|
+
require_relative 'rake/rule_tasks'
|
|
21
|
+
require_relative 'rake/ppm_tasks'
|
|
22
|
+
|
|
@@ -0,0 +1,185 @@
|
|
|
1
|
+
##############################################################################
|
|
2
|
+
# File:: dc_tasks.rb
|
|
3
|
+
# Purpose:: DcTasks definition
|
|
4
|
+
#
|
|
5
|
+
# Author:: Jeff McAffee 04/02/2015
|
|
6
|
+
#
|
|
7
|
+
##############################################################################
|
|
8
|
+
|
|
9
|
+
require 'admin_module'
|
|
10
|
+
require 'rake/dsl_definition'
|
|
11
|
+
require 'rake'
|
|
12
|
+
|
|
13
|
+
module AdminModule::Rake
|
|
14
|
+
class DcTasks
|
|
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 = 'dcs_task', desc = "Modify DC 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
|
+
def set_vars args
|
|
45
|
+
args.each do |arg,val|
|
|
46
|
+
instance_variable_set "@#{arg}", val
|
|
47
|
+
end
|
|
48
|
+
|
|
49
|
+
args
|
|
50
|
+
end
|
|
51
|
+
|
|
52
|
+
def action=(task_action)
|
|
53
|
+
raise "action must be one of #{valid_types.join(', ')}" unless valid_actions.include?(task_action.downcase)
|
|
54
|
+
@action = task_action
|
|
55
|
+
end
|
|
56
|
+
|
|
57
|
+
def stop_on_exception=(do_stop)
|
|
58
|
+
raise ArgumentError, 'Expecting true or false' unless do_stop === true || do_stop === false
|
|
59
|
+
@stop_on_exception = do_stop
|
|
60
|
+
end
|
|
61
|
+
|
|
62
|
+
def commit
|
|
63
|
+
validate_params
|
|
64
|
+
|
|
65
|
+
client = AdminModule::Client.new
|
|
66
|
+
client.env = env
|
|
67
|
+
|
|
68
|
+
if self.respond_to? action
|
|
69
|
+
self.send(action, client)
|
|
70
|
+
return
|
|
71
|
+
else
|
|
72
|
+
raise "Unknown action - #{action}"
|
|
73
|
+
end
|
|
74
|
+
|
|
75
|
+
rescue Exception => e
|
|
76
|
+
raise e if stop_on_exception == true
|
|
77
|
+
ensure
|
|
78
|
+
client.quit
|
|
79
|
+
end
|
|
80
|
+
|
|
81
|
+
def list client
|
|
82
|
+
$stdout << client.dcs.list.join("\n")
|
|
83
|
+
$stdout << "\n"
|
|
84
|
+
end
|
|
85
|
+
|
|
86
|
+
def read client
|
|
87
|
+
result = {}
|
|
88
|
+
result[name] = client.dcs.read(name)
|
|
89
|
+
$stdout << result.to_yaml
|
|
90
|
+
end
|
|
91
|
+
|
|
92
|
+
def import client
|
|
93
|
+
$stdout << client.dcs.import(path)
|
|
94
|
+
end
|
|
95
|
+
|
|
96
|
+
def export client
|
|
97
|
+
$stdout << client.dcs.export(path)
|
|
98
|
+
end
|
|
99
|
+
|
|
100
|
+
def rename client
|
|
101
|
+
$stdout << client.dcs.rename(name, to)
|
|
102
|
+
end
|
|
103
|
+
|
|
104
|
+
def validate_params
|
|
105
|
+
assert_provided env, 'Missing "env"'
|
|
106
|
+
assert_provided action, 'Missing "action"'
|
|
107
|
+
|
|
108
|
+
case action
|
|
109
|
+
when 'import'
|
|
110
|
+
assert_provided path, 'Missing "path"'
|
|
111
|
+
|
|
112
|
+
when 'export'
|
|
113
|
+
assert_provided path, 'Missing "path"'
|
|
114
|
+
|
|
115
|
+
when 'read'
|
|
116
|
+
assert_provided name, 'Missing "name"'
|
|
117
|
+
|
|
118
|
+
when 'rename'
|
|
119
|
+
assert_provided name, 'Missing "name"'
|
|
120
|
+
assert_provided to, 'Missing "to"'
|
|
121
|
+
|
|
122
|
+
end
|
|
123
|
+
|
|
124
|
+
assert_env_is_configured env
|
|
125
|
+
end
|
|
126
|
+
|
|
127
|
+
def assert_provided value, msg
|
|
128
|
+
if value.nil? || value.empty?
|
|
129
|
+
raise msg
|
|
130
|
+
end
|
|
131
|
+
end
|
|
132
|
+
|
|
133
|
+
def assert_env_is_configured arg
|
|
134
|
+
unless AdminModule.configuration.credentials.key? arg
|
|
135
|
+
init_msg = "Have you initialized your config file?\n Try: admin_module config init <filedir>"
|
|
136
|
+
env_msg = "Have you configured your environments?\n Try: admin_module config add env <envname> <url>"
|
|
137
|
+
raise "Unknown environment: #{arg}\n#{init_msg}\n\n#{env_msg}"
|
|
138
|
+
end
|
|
139
|
+
end
|
|
140
|
+
|
|
141
|
+
def required_args_for_action
|
|
142
|
+
args = []
|
|
143
|
+
|
|
144
|
+
case action
|
|
145
|
+
when 'read'
|
|
146
|
+
args << :name
|
|
147
|
+
|
|
148
|
+
when 'rename'
|
|
149
|
+
args << :name
|
|
150
|
+
args << :to
|
|
151
|
+
|
|
152
|
+
when 'import'
|
|
153
|
+
args << :path
|
|
154
|
+
|
|
155
|
+
when 'export'
|
|
156
|
+
args << :path
|
|
157
|
+
|
|
158
|
+
else
|
|
159
|
+
# Noop
|
|
160
|
+
end
|
|
161
|
+
|
|
162
|
+
args
|
|
163
|
+
end
|
|
164
|
+
|
|
165
|
+
class << self
|
|
166
|
+
def install
|
|
167
|
+
new.install
|
|
168
|
+
end
|
|
169
|
+
end
|
|
170
|
+
|
|
171
|
+
def install
|
|
172
|
+
AdminModule.configuration.credentials.keys.each do |e|
|
|
173
|
+
valid_actions.each do |action|
|
|
174
|
+
AdminModule::Rake::DcTasks.new("am:#{e}:dc:#{action}", "#{action} #{e} DC defn(s)") do |t|
|
|
175
|
+
t.env = e
|
|
176
|
+
t.action = action
|
|
177
|
+
end
|
|
178
|
+
end
|
|
179
|
+
end
|
|
180
|
+
end
|
|
181
|
+
end # class
|
|
182
|
+
end # module
|
|
183
|
+
|
|
184
|
+
AdminModule::Rake::DcTasks.install
|
|
185
|
+
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
##############################################################################
|
|
2
|
+
# File:: deploy_task.rb
|
|
3
|
+
# Purpose:: DeployTask definition
|
|
4
|
+
#
|
|
5
|
+
# Author:: Jeff McAffee 03/19/2014
|
|
6
|
+
# Copyright:: Copyright (c) 2014, 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 DeployTask
|
|
17
|
+
include ::Rake::DSL if defined?(::Rake::DSL)
|
|
18
|
+
|
|
19
|
+
attr_accessor :env
|
|
20
|
+
attr_accessor :commit_msg
|
|
21
|
+
attr_accessor :target
|
|
22
|
+
|
|
23
|
+
def initialize(task_name = 'deploy', desc = 'Deploy guideline xml files')
|
|
24
|
+
@task_name, @desc = task_name, desc
|
|
25
|
+
|
|
26
|
+
yield self if block_given?
|
|
27
|
+
|
|
28
|
+
define_task
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
def define_task #:nodoc:
|
|
32
|
+
desc @desc
|
|
33
|
+
task @task_name do
|
|
34
|
+
deploy
|
|
35
|
+
end
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
def files
|
|
39
|
+
@files ||= []
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
def files=(file_list)
|
|
43
|
+
@files ||= []
|
|
44
|
+
@files += Array(file_list)
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
def deploy
|
|
48
|
+
cli = AdminModule::CLI.new
|
|
49
|
+
cli.environment = env
|
|
50
|
+
if files.size == 1
|
|
51
|
+
cli.deploy(files, target, commit_msg)
|
|
52
|
+
else
|
|
53
|
+
cli.deploy_files(files, commit_msg)
|
|
54
|
+
end
|
|
55
|
+
ensure
|
|
56
|
+
cli.quit
|
|
57
|
+
end
|
|
58
|
+
end # class DeployTask
|
|
59
|
+
end # module AdminModule::Task
|
|
@@ -0,0 +1,189 @@
|
|
|
1
|
+
##############################################################################
|
|
2
|
+
# File:: gdl_tasks.rb
|
|
3
|
+
# Purpose:: GdlTasks definition
|
|
4
|
+
#
|
|
5
|
+
# Author:: Jeff McAffee 2015-03-11
|
|
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 GdlTasks
|
|
17
|
+
include ::Rake::DSL if defined?(::Rake::DSL)
|
|
18
|
+
|
|
19
|
+
attr_accessor :env
|
|
20
|
+
attr_accessor :name
|
|
21
|
+
attr_accessor :comments
|
|
22
|
+
attr_accessor :path
|
|
23
|
+
attr_reader :action
|
|
24
|
+
attr_reader :valid_actions
|
|
25
|
+
attr_reader :stop_on_exception
|
|
26
|
+
|
|
27
|
+
def initialize(task_name = 'gdls_task', desc = "Modify a gdl or gdls")
|
|
28
|
+
@valid_actions = ['deploy', 'version']
|
|
29
|
+
@task_name, @desc = task_name, desc
|
|
30
|
+
|
|
31
|
+
@stop_on_exception = true
|
|
32
|
+
|
|
33
|
+
yield self if block_given?
|
|
34
|
+
|
|
35
|
+
define_task
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
def define_task #:nodoc:
|
|
39
|
+
desc @desc
|
|
40
|
+
task(@task_name, required_args_for_action) do |t,args|
|
|
41
|
+
set_vars args
|
|
42
|
+
commit # Call method to perform when invoked.
|
|
43
|
+
end
|
|
44
|
+
end
|
|
45
|
+
|
|
46
|
+
def set_vars args
|
|
47
|
+
args.each do |arg,val|
|
|
48
|
+
instance_variable_set "@#{arg}", val
|
|
49
|
+
end
|
|
50
|
+
|
|
51
|
+
args
|
|
52
|
+
end
|
|
53
|
+
|
|
54
|
+
def action=(task_action)
|
|
55
|
+
raise "action must be one of #{valid_types.join(', ')}" unless valid_actions.include?(task_action.downcase)
|
|
56
|
+
@action = task_action
|
|
57
|
+
end
|
|
58
|
+
|
|
59
|
+
def stop_on_exception=(do_stop)
|
|
60
|
+
raise ArgumentError, 'Expecting true or false' unless do_stop === true || do_stop === false
|
|
61
|
+
@stop_on_exception = do_stop
|
|
62
|
+
end
|
|
63
|
+
|
|
64
|
+
def commit
|
|
65
|
+
validate_params
|
|
66
|
+
|
|
67
|
+
client = AdminModule::Client.new
|
|
68
|
+
client.env = env
|
|
69
|
+
|
|
70
|
+
if self.respond_to? action
|
|
71
|
+
self.send(action, client)
|
|
72
|
+
return
|
|
73
|
+
else
|
|
74
|
+
raise "Unknown action - #{action}"
|
|
75
|
+
end
|
|
76
|
+
|
|
77
|
+
rescue Exception => e
|
|
78
|
+
raise e if stop_on_exception == true
|
|
79
|
+
ensure
|
|
80
|
+
client.quit unless client.nil?
|
|
81
|
+
end
|
|
82
|
+
|
|
83
|
+
def deploy client
|
|
84
|
+
real_path = Pathname(path)
|
|
85
|
+
if real_path.directory?
|
|
86
|
+
client.guideline.deploy(path, comments)
|
|
87
|
+
else
|
|
88
|
+
client.guideline.deploy_file(path, comments)
|
|
89
|
+
end
|
|
90
|
+
end
|
|
91
|
+
|
|
92
|
+
def version client
|
|
93
|
+
client.guideline.version(name, comments)
|
|
94
|
+
end
|
|
95
|
+
|
|
96
|
+
def default_params
|
|
97
|
+
if comments.nil? || comments.empty?
|
|
98
|
+
self.comments = AdminModule.configuration.default_comment
|
|
99
|
+
unless comments.nil? || comments.empty?
|
|
100
|
+
$stdout << "Using default comment - #{comments}\n"
|
|
101
|
+
end
|
|
102
|
+
end
|
|
103
|
+
|
|
104
|
+
if path.nil? || path.empty?
|
|
105
|
+
build_dir = Pathname('build')
|
|
106
|
+
if build_dir.exist? && build_dir.directory?
|
|
107
|
+
# Must be an absolute path:
|
|
108
|
+
self.path = build_dir.expand_path.to_s
|
|
109
|
+
$stdout << "Using default path - #{path}\n"
|
|
110
|
+
end
|
|
111
|
+
end
|
|
112
|
+
end
|
|
113
|
+
|
|
114
|
+
def validate_params
|
|
115
|
+
assert_provided env, 'Missing "env"'
|
|
116
|
+
assert_provided action, 'Missing "action"'
|
|
117
|
+
|
|
118
|
+
default_params
|
|
119
|
+
|
|
120
|
+
case action
|
|
121
|
+
when 'deploy'
|
|
122
|
+
assert_provided path, 'Missing "path"'
|
|
123
|
+
|
|
124
|
+
when 'version'
|
|
125
|
+
assert_provided name, 'Missing "name"'
|
|
126
|
+
|
|
127
|
+
end
|
|
128
|
+
|
|
129
|
+
assert_env_is_configured env
|
|
130
|
+
end
|
|
131
|
+
|
|
132
|
+
def assert_provided value, msg
|
|
133
|
+
if value.nil? || value.empty?
|
|
134
|
+
raise msg
|
|
135
|
+
end
|
|
136
|
+
end
|
|
137
|
+
|
|
138
|
+
def assert_env_is_configured arg
|
|
139
|
+
unless AdminModule.configuration.credentials.key? arg
|
|
140
|
+
init_msg = "Have you initialized your config file?\n Try: admin_module config init <filedir>"
|
|
141
|
+
env_msg = "Have you configured your environments?\n Try: admin_module config add env <envname> <url>"
|
|
142
|
+
raise "Unknown environment: #{arg}\n#{init_msg}\n\n#{env_msg}"
|
|
143
|
+
end
|
|
144
|
+
end
|
|
145
|
+
|
|
146
|
+
#
|
|
147
|
+
# Define the task arguments (and their order) required for a given action
|
|
148
|
+
#
|
|
149
|
+
|
|
150
|
+
def required_args_for_action
|
|
151
|
+
args = []
|
|
152
|
+
|
|
153
|
+
case action
|
|
154
|
+
when 'deploy'
|
|
155
|
+
args << :comments
|
|
156
|
+
args << :path
|
|
157
|
+
|
|
158
|
+
when 'version'
|
|
159
|
+
args << :name
|
|
160
|
+
args << :comments
|
|
161
|
+
|
|
162
|
+
else
|
|
163
|
+
# Noop
|
|
164
|
+
end
|
|
165
|
+
|
|
166
|
+
args
|
|
167
|
+
end
|
|
168
|
+
|
|
169
|
+
class << self
|
|
170
|
+
def install
|
|
171
|
+
new.install
|
|
172
|
+
end
|
|
173
|
+
end
|
|
174
|
+
|
|
175
|
+
def install
|
|
176
|
+
AdminModule.configuration.credentials.keys.each do |e|
|
|
177
|
+
valid_actions.each do |action|
|
|
178
|
+
AdminModule::Rake::GdlTasks.new("am:#{e}:gdl:#{action}", "#{action} #{e} gdl(s)") do |t|
|
|
179
|
+
t.env = e
|
|
180
|
+
t.action = action
|
|
181
|
+
end
|
|
182
|
+
end
|
|
183
|
+
end
|
|
184
|
+
end
|
|
185
|
+
end # class
|
|
186
|
+
end # module
|
|
187
|
+
|
|
188
|
+
AdminModule::Rake::GdlTasks.install
|
|
189
|
+
|