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.
Files changed (141) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +19 -0
  3. data/.rspec +3 -0
  4. data/Gemfile +14 -0
  5. data/Guardfile +24 -0
  6. data/LICENSE +22 -0
  7. data/README.md +281 -0
  8. data/Rakefile +98 -0
  9. data/admin_module.gemspec +34 -0
  10. data/bin/admin_module +13 -0
  11. data/lib/admin_module.rb +260 -0
  12. data/lib/admin_module/cli.rb +54 -0
  13. data/lib/admin_module/cli/cli_guideline.rb +80 -0
  14. data/lib/admin_module/cli/cli_lock.rb +149 -0
  15. data/lib/admin_module/cli/cli_parameter.rb +66 -0
  16. data/lib/admin_module/cli/cli_task.rb +149 -0
  17. data/lib/admin_module/cli_old.rb +92 -0
  18. data/lib/admin_module/client.rb +146 -0
  19. data/lib/admin_module/command.rb +25 -0
  20. data/lib/admin_module/command/client_access.rb +43 -0
  21. data/lib/admin_module/command/config.rb +310 -0
  22. data/lib/admin_module/command/dc.rb +110 -0
  23. data/lib/admin_module/command/gdl.rb +71 -0
  24. data/lib/admin_module/command/lock.rb +110 -0
  25. data/lib/admin_module/command/ppm.rb +142 -0
  26. data/lib/admin_module/command/rule.rb +77 -0
  27. data/lib/admin_module/command/ruleset.rb +56 -0
  28. data/lib/admin_module/command/snapshot.rb +110 -0
  29. data/lib/admin_module/command/stage.rb +131 -0
  30. data/lib/admin_module/command/task.rb +110 -0
  31. data/lib/admin_module/config_helper.rb +33 -0
  32. data/lib/admin_module/dc.rb +133 -0
  33. data/lib/admin_module/guideline.rb +86 -0
  34. data/lib/admin_module/locks.rb +142 -0
  35. data/lib/admin_module/page_factory.rb +55 -0
  36. data/lib/admin_module/pages.rb +120 -0
  37. data/lib/admin_module/pages/dc_definitions_page.rb +73 -0
  38. data/lib/admin_module/pages/dc_detail_page.rb +187 -0
  39. data/lib/admin_module/pages/guideline_page.rb +35 -0
  40. data/lib/admin_module/pages/guideline_version_page.rb +140 -0
  41. data/lib/admin_module/pages/guidelines_page.rb +59 -0
  42. data/lib/admin_module/pages/guidelines_version_all_page.rb +116 -0
  43. data/lib/admin_module/pages/lock_definition_page.rb +178 -0
  44. data/lib/admin_module/pages/lock_definitions_page.rb +69 -0
  45. data/lib/admin_module/pages/login_page.rb +75 -0
  46. data/lib/admin_module/pages/parameter_page.rb +62 -0
  47. data/lib/admin_module/pages/parameters_page.rb +46 -0
  48. data/lib/admin_module/pages/ppms_page.rb +110 -0
  49. data/lib/admin_module/pages/rule_page.rb +68 -0
  50. data/lib/admin_module/pages/rules_page.rb +74 -0
  51. data/lib/admin_module/pages/ruleset_page.rb +64 -0
  52. data/lib/admin_module/pages/rulesets_page.rb +60 -0
  53. data/lib/admin_module/pages/select_list_syncable.rb +64 -0
  54. data/lib/admin_module/pages/snapshot_definitions_page.rb +73 -0
  55. data/lib/admin_module/pages/snapshot_detail_page.rb +246 -0
  56. data/lib/admin_module/pages/workflow_detail_page.rb +451 -0
  57. data/lib/admin_module/pages/workflow_detail_task_addl_detail_page.rb +172 -0
  58. data/lib/admin_module/pages/workflow_detail_task_mappings_page.rb +163 -0
  59. data/lib/admin_module/pages/workflow_detail_task_screens_page.rb +75 -0
  60. data/lib/admin_module/pages/workflow_details_page.rb +67 -0
  61. data/lib/admin_module/pages/workflow_task_page.rb +107 -0
  62. data/lib/admin_module/pages/workflow_tasks_page.rb +111 -0
  63. data/lib/admin_module/ppms.rb +78 -0
  64. data/lib/admin_module/rake.rb +22 -0
  65. data/lib/admin_module/rake/dc_tasks.rb +185 -0
  66. data/lib/admin_module/rake/deploy_task.rb +59 -0
  67. data/lib/admin_module/rake/gdl_tasks.rb +189 -0
  68. data/lib/admin_module/rake/lock_tasks.rb +189 -0
  69. data/lib/admin_module/rake/parameter_task.rb +86 -0
  70. data/lib/admin_module/rake/ppm_tasks.rb +248 -0
  71. data/lib/admin_module/rake/rule_tasks.rb +157 -0
  72. data/lib/admin_module/rake/snapshot_tasks.rb +223 -0
  73. data/lib/admin_module/rake/stage_tasks.rb +197 -0
  74. data/lib/admin_module/rake/stages_task.rb +197 -0
  75. data/lib/admin_module/rake/task_tasks.rb +189 -0
  76. data/lib/admin_module/rules.rb +50 -0
  77. data/lib/admin_module/rulesets.rb +42 -0
  78. data/lib/admin_module/snapshots.rb +133 -0
  79. data/lib/admin_module/stages.rb +171 -0
  80. data/lib/admin_module/tasks.rb +147 -0
  81. data/lib/admin_module/version.rb +3 -0
  82. data/old_spec/lib/admin_module/cli_configuration_spec.rb +126 -0
  83. data/old_spec/lib/admin_module/cli_create_stage_spec.rb +89 -0
  84. data/old_spec/lib/admin_module/cli_delete_rule_spec.rb +57 -0
  85. data/old_spec/lib/admin_module/cli_deploy_spec.rb +57 -0
  86. data/old_spec/lib/admin_module/cli_export_locks_spec.rb +62 -0
  87. data/old_spec/lib/admin_module/cli_export_stages_spec.rb +62 -0
  88. data/old_spec/lib/admin_module/cli_guidelines_version_all_spec.rb +58 -0
  89. data/old_spec/lib/admin_module/cli_import_locks_spec.rb +153 -0
  90. data/old_spec/lib/admin_module/cli_import_stages_spec.rb +173 -0
  91. data/old_spec/lib/admin_module/cli_modify_locks_spec.rb +128 -0
  92. data/old_spec/lib/admin_module/cli_modify_stages_spec.rb +88 -0
  93. data/old_spec/lib/admin_module/cli_rename_rule_spec.rb +53 -0
  94. data/old_spec/lib/admin_module/cli_rename_ruleset_spec.rb +53 -0
  95. data/old_spec/lib/admin_module/cli_var_spec.rb +41 -0
  96. data/old_spec/lib/admin_module/rake/deploy_task_spec.rb +85 -0
  97. data/old_spec/lib/admin_module/rake/parameter_task_spec.rb +58 -0
  98. data/old_spec/lib/admin_module/rake/rules_task_spec.rb +75 -0
  99. data/spec/data/build/test1.xml +0 -0
  100. data/spec/data/build/test2.xml +1 -0
  101. data/spec/data/import_dcs.yml +31 -0
  102. data/spec/data/import_locks.yml +4 -0
  103. data/spec/data/import_snapshots.yml +35 -0
  104. data/spec/data/import_stages.yml +4 -0
  105. data/spec/data/import_tasks.yml +25 -0
  106. data/spec/data/patch-test.xml +1 -0
  107. data/spec/data/remove_test_del_rule.xml +1 -0
  108. data/spec/data/stages.yml +518 -0
  109. data/spec/data/test_del_rule.xml +1 -0
  110. data/spec/lib/admin_module/admin_module_spec.rb +175 -0
  111. data/spec/lib/admin_module/cli_spec.rb +36 -0
  112. data/spec/lib/admin_module/client_spec.rb +158 -0
  113. data/spec/lib/admin_module/command/config_spec.rb +477 -0
  114. data/spec/lib/admin_module/command/dc_spec.rb +202 -0
  115. data/spec/lib/admin_module/command/gdl_spec.rb +139 -0
  116. data/spec/lib/admin_module/command/lock_spec.rb +207 -0
  117. data/spec/lib/admin_module/command/rule_spec.rb +163 -0
  118. data/spec/lib/admin_module/command/ruleset_spec.rb +124 -0
  119. data/spec/lib/admin_module/command/snapshot_spec.rb +202 -0
  120. data/spec/lib/admin_module/command/stage_spec.rb +259 -0
  121. data/spec/lib/admin_module/command/task_spec.rb +207 -0
  122. data/spec/lib/admin_module/dc_spec.rb +192 -0
  123. data/spec/lib/admin_module/guideline_spec.rb +177 -0
  124. data/spec/lib/admin_module/locks_spec.rb +188 -0
  125. data/spec/lib/admin_module/rules_spec.rb +110 -0
  126. data/spec/lib/admin_module/rulesets_spec.rb +85 -0
  127. data/spec/lib/admin_module/snapshot_spec.rb +192 -0
  128. data/spec/lib/admin_module/stages_spec.rb +179 -0
  129. data/spec/lib/admin_module/tasks_spec.rb +196 -0
  130. data/spec/spec_helper.rb +54 -0
  131. data/spec/support/asserts.rb +13 -0
  132. data/spec/support/data_clearing.rb +28 -0
  133. data/spec/support/dirs.rb +54 -0
  134. data/spec/support/helpers.rb +83 -0
  135. data/spec/support/lock.rb +23 -0
  136. data/spec/support/mocks.rb +213 -0
  137. data/spec/support/snapshot.rb +28 -0
  138. data/spec/support/stage.rb +22 -0
  139. data/spec/support/stage_factory.rb +138 -0
  140. data/spec/support/task.rb +23 -0
  141. metadata +381 -0
@@ -0,0 +1,197 @@
1
+ ##############################################################################
2
+ # File:: stages_task.rb
3
+ # Purpose:: StagesTask 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 StagesTask
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_actions.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.logout unless client.nil?
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::StagesTask.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::StagesTask.install
197
+
@@ -0,0 +1,189 @@
1
+ ##############################################################################
2
+ # File:: task_tasks.rb
3
+ # Purpose:: TaskTasks definition
4
+ #
5
+ # Author:: Jeff McAffee 2015-04-20
6
+ #
7
+ ##############################################################################
8
+
9
+ require 'admin_module'
10
+ require 'rake/dsl_definition'
11
+ require 'rake'
12
+
13
+ module AdminModule::Rake
14
+
15
+ class TaskTasks
16
+ include ::Rake::DSL if defined?(::Rake::DSL)
17
+
18
+ attr_accessor :env
19
+ attr_accessor :name
20
+ attr_accessor :to
21
+ attr_accessor :path
22
+ attr_accessor :allow_create
23
+ attr_reader :action
24
+ attr_reader :valid_actions
25
+ attr_reader :stop_on_exception
26
+
27
+ def initialize(task_name = 'tasks_task', desc = "Modify a task or tasks")
28
+ @valid_actions = ['import', 'export', 'read', 'list', 'rename']
29
+ @task_name, @desc = task_name, desc
30
+
31
+ @stop_on_exception = true
32
+ @allow_create = true
33
+
34
+ yield self if block_given?
35
+
36
+ define_task
37
+ end
38
+
39
+ def define_task #:nodoc:
40
+ desc @desc
41
+ task(@task_name, required_args_for_action) do |t,args|
42
+ set_vars args
43
+ commit # Call method to perform when invoked.
44
+ end
45
+ end
46
+
47
+ def set_vars args
48
+ args.each do |arg,val|
49
+ instance_variable_set "@#{arg}", val
50
+ end
51
+
52
+ args
53
+ end
54
+
55
+ def action=(task_action)
56
+ raise "action must be one of #{valid_types.join(', ')}" unless valid_actions.include?(task_action.downcase)
57
+ @action = task_action
58
+ end
59
+
60
+ def stop_on_exception=(do_stop)
61
+ raise ArgumentError, 'Expecting true or false' unless do_stop === true || do_stop === false
62
+ @stop_on_exception = do_stop
63
+ end
64
+
65
+ def commit
66
+ validate_params
67
+
68
+ client = AdminModule::Client.new
69
+ client.env = env
70
+
71
+ if self.respond_to? action
72
+ self.send(action, client)
73
+ return
74
+ else
75
+ raise "Unknown action - #{action}"
76
+ end
77
+
78
+ rescue Exception => e
79
+ raise e if stop_on_exception == true
80
+ ensure
81
+ client.quit
82
+ end
83
+
84
+ def list client
85
+ $stdout << client.tasks.list.join("\n")
86
+ $stdout << "\n"
87
+ end
88
+
89
+ def read client
90
+ result = {}
91
+ result[name] = client.tasks.read(name)
92
+ $stdout << result.to_yaml
93
+ end
94
+
95
+ def import client
96
+ $stdout << client.tasks.import(path, allow_create)
97
+ end
98
+
99
+ def export client
100
+ $stdout << client.tasks.export(path)
101
+ end
102
+
103
+ def rename client
104
+ $stdout << client.tasks.rename(name, to)
105
+ end
106
+
107
+ def validate_params
108
+ assert_provided env, 'Missing "env"'
109
+ assert_provided action, 'Missing "action"'
110
+
111
+ case action
112
+ when 'import'
113
+ assert_provided path, 'Missing "path"'
114
+
115
+ when 'export'
116
+ assert_provided path, 'Missing "path"'
117
+
118
+ when 'read'
119
+ assert_provided name, 'Missing "name"'
120
+
121
+ when 'rename'
122
+ assert_provided name, 'Missing "name"'
123
+ assert_provided to, 'Missing "to"'
124
+
125
+ end
126
+
127
+ assert_env_is_configured env
128
+ end
129
+
130
+ def assert_provided value, msg
131
+ if value.nil? || value.empty?
132
+ raise msg
133
+ end
134
+ end
135
+
136
+ def assert_env_is_configured arg
137
+ unless AdminModule.configuration.credentials.key? arg
138
+ init_msg = "Have you initialized your config file?\n Try: admin_module config init <filedir>"
139
+ env_msg = "Have you configured your environments?\n Try: admin_module config add env <envname> <url>"
140
+ raise "Unknown environment: #{arg}\n#{init_msg}\n\n#{env_msg}"
141
+ end
142
+ end
143
+
144
+ def required_args_for_action
145
+ args = []
146
+
147
+ case action
148
+ when 'read'
149
+ args << :name
150
+
151
+ when 'rename'
152
+ args << :name
153
+ args << :to
154
+
155
+ when 'import'
156
+ args << :path
157
+ args << :allow_create
158
+
159
+ when 'export'
160
+ args << :path
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::TaskTasks.new("am:#{e}:task:#{action}", "#{action} #{e} task(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::TaskTasks.install
189
+
@@ -0,0 +1,50 @@
1
+ ##############################################################################
2
+ # File:: rules.rb
3
+ # Purpose:: Interface to rules functionality in admin module
4
+ #
5
+ # Author:: Jeff McAffee 2014-07-17
6
+ # Copyright:: Copyright (c) 2014, kTech Systems LLC. All rights reserved.
7
+ # Website:: http://ktechsystems.com
8
+ ##############################################################################
9
+
10
+ require 'admin_module/pages'
11
+
12
+ module AdminModule
13
+
14
+ class Rules
15
+ attr_reader :page_factory
16
+
17
+ def initialize(page_factory)
18
+ @page_factory = page_factory
19
+ end
20
+
21
+ def rename src, dest
22
+ current_rules = list
23
+ fail ArgumentError.new("A rule named '#{src}' does not exist") unless current_rules.include? src
24
+ fail ArgumentError.new("A rule named '#{dest}' already exists") if current_rules.include? dest
25
+
26
+ rules_page
27
+ .open_rule(src)
28
+ .set_name(dest)
29
+ .save
30
+ end
31
+
32
+ def list
33
+ rules_page.get_rules
34
+ end
35
+
36
+ def delete rule
37
+ current_rules = list
38
+ fail ArgumentError.new("A rule named '#{rule}' does not exist") unless current_rules.include? rule
39
+
40
+ rules_page
41
+ .delete_rule rule
42
+ end
43
+
44
+ private
45
+
46
+ def rules_page
47
+ page_factory.rules_page
48
+ end
49
+ end # class Rules
50
+ end # module
@@ -0,0 +1,42 @@
1
+ ##############################################################################
2
+ # File:: rulesets.rb
3
+ # Purpose:: Interface to rulesets functionality in admin module
4
+ #
5
+ # Author:: Jeff McAffee 2014-07-17
6
+ # Copyright:: Copyright (c) 2014, kTech Systems LLC. All rights reserved.
7
+ # Website:: http://ktechsystems.com
8
+ ##############################################################################
9
+
10
+ require 'admin_module/pages'
11
+
12
+ module AdminModule
13
+
14
+ class Rulesets
15
+ attr_reader :page_factory
16
+
17
+ def initialize(page_factory)
18
+ @page_factory = page_factory
19
+ end
20
+
21
+ def rename src, dest
22
+ current_rulesets = list
23
+ fail ArgumentError.new("A ruleset named '#{src}' does not exist") unless current_rulesets.include? src
24
+ fail ArgumentError.new("A ruleset named '#{dest}' already exists") if current_rulesets.include? dest
25
+
26
+ rulesets_page
27
+ .open_ruleset(src)
28
+ .set_name(dest)
29
+ .save
30
+ end
31
+
32
+ def list
33
+ rulesets_page.get_rulesets
34
+ end
35
+
36
+ private
37
+
38
+ def rulesets_page
39
+ page_factory.rulesets_page
40
+ end
41
+ end # class Rulesets
42
+ end # module