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,133 @@
1
+ ##############################################################################
2
+ # File:: dc.rb
3
+ # Purpose:: Interface to DataClearing functionality in admin module1
4
+ #
5
+ # Author:: Jeff McAffee 04/01/2015
6
+ ##############################################################################
7
+
8
+ require 'admin_module/pages'
9
+
10
+ module AdminModule
11
+
12
+ class Snapshots
13
+ attr_reader :page_factory
14
+
15
+ def initialize page_factory
16
+ @page_factory = page_factory
17
+ end
18
+
19
+ def list
20
+ snapshot_page.get_definitions
21
+ end
22
+
23
+ def rename src, dest
24
+ src = assert_definition_exists src
25
+ dest = assert_definition_does_not_exist dest
26
+
27
+ snapshot_page
28
+ .modify(src)
29
+ .set_name(dest)
30
+ .save
31
+ end
32
+
33
+ def import file_path
34
+ assert_file_exists file_path
35
+
36
+ defns = {}
37
+ File.open(file_path, 'r') do |f|
38
+ # Read array of definition hashes
39
+ defns = YAML.load(f)
40
+ end
41
+
42
+ existing_defns = list
43
+
44
+ defns.each do |name, data|
45
+ if existing_defns.include?(name)
46
+ update(data)
47
+ else
48
+ create(data)
49
+ end
50
+ end
51
+ end
52
+
53
+ def export file_path
54
+ defns = list
55
+ export_data = {}
56
+
57
+ defns.each do |defn|
58
+ export_data[defn] = read defn
59
+ end
60
+
61
+ File.open(file_path, 'w') do |f|
62
+ f.write export_data.to_yaml
63
+ end
64
+
65
+ rescue Exception => e
66
+ if e.message.include? 'No such file or directory'
67
+ raise IOError, "No such directory - #{file_path}"
68
+ else
69
+ raise e
70
+ end
71
+ end
72
+
73
+ def read name
74
+ name = assert_definition_exists name
75
+
76
+ snapshot_page
77
+ .modify(name)
78
+ .get_definition_data
79
+ end
80
+
81
+ private
82
+
83
+ def snapshot_page
84
+ page_factory.snapshot_definitions_page
85
+ end
86
+
87
+ def assert_definition_exists name
88
+ unless list.include? name
89
+ fail ArgumentError.new("A data clearing definition named '#{name}' does not exist")
90
+ end
91
+
92
+ name
93
+ end
94
+
95
+ def assert_definition_does_not_exist name
96
+ if list.include? name
97
+ fail ArgumentError.new("A data clearing definition named '#{name}' already exists")
98
+ end
99
+
100
+ name
101
+ end
102
+
103
+ def assert_file_exists file_path
104
+ raise IOError, "File not found: #{file_path}" unless File.exists?(file_path)
105
+ end
106
+
107
+ def update data
108
+ name = assert_definition_exists( extract_defn_name(data) )
109
+
110
+ snapshot_page
111
+ .modify(name)
112
+ .set_definition_data(data)
113
+ .save
114
+ end
115
+
116
+ def create data
117
+ name = assert_definition_does_not_exist( extract_defn_name(data) )
118
+
119
+ snapshot_page
120
+ .add
121
+ .set_definition_data(data)
122
+ .save
123
+ end
124
+
125
+ def extract_defn_name data
126
+ name = if data.is_a? Hash
127
+ data[:name]
128
+ else
129
+ String(data)
130
+ end
131
+ end
132
+ end
133
+ end # module
@@ -0,0 +1,171 @@
1
+ ##############################################################################
2
+ # File:: stages.rb
3
+ # Purpose:: filedescription
4
+ #
5
+ # Author:: Jeff McAffee 2015-03-09
6
+ # Copyright:: Copyright (c) 2015, 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 Stages
15
+ attr_reader :page_factory
16
+
17
+ def initialize page_factory
18
+ @page_factory = page_factory
19
+ end
20
+
21
+ ##
22
+ # Return a list of stage names
23
+
24
+ def list
25
+ stages_page.get_stages
26
+ end
27
+
28
+ ##
29
+ # Retrieve stage configuration data for an existing stage
30
+
31
+ def read name
32
+ stages_page
33
+ .modify(name)
34
+ .get_stage_data
35
+ end
36
+
37
+ ##
38
+ # Update stage configuration data for an existing stage
39
+
40
+ def update name, data
41
+ stages_page
42
+ .modify(name)
43
+ .set_stage_data(data)
44
+ .save
45
+ end
46
+
47
+ ##
48
+ # Create stage configuration data for a new stage
49
+
50
+ def create data
51
+ # When creating a stage, we need to set its name and save it so
52
+ # an ID is created in the database to tie the tasks to.
53
+ #
54
+ # Foreign key errors will result otherwise.
55
+ name = data[:name]
56
+
57
+ stages_page
58
+ .add
59
+ .set_name(name)
60
+ .save
61
+
62
+ # Now, populate the rest of the data.
63
+ stages_page
64
+ .modify(name)
65
+ .set_stage_data(data)
66
+ .save
67
+ end
68
+
69
+ ##
70
+ # Delete a stage
71
+
72
+ def delete name
73
+ assert_stage_exists name
74
+
75
+ stages_page
76
+ .delete name
77
+ end
78
+
79
+ def rename src, dest
80
+ assert_stage_exists src
81
+ assert_stage_does_not_exist dest
82
+
83
+ stages_page
84
+ .modify(src)
85
+ .set_name(dest)
86
+ .save
87
+ end
88
+
89
+ ##
90
+ # Export data for all stages to a file
91
+
92
+ def export file_path
93
+ stages = list
94
+ export_data = {}
95
+
96
+ stages.each do |stage|
97
+ export_data[stage] = read stage
98
+ end
99
+
100
+ File.open(file_path, 'w') do |f|
101
+ f.write export_data.to_yaml
102
+ end
103
+
104
+ rescue Exception => e
105
+ if e.message.include? 'No such file or directory'
106
+ raise IOError, "No such directory - #{file_path}"
107
+ else
108
+ raise e
109
+ end
110
+ end
111
+
112
+ ##
113
+ # Import stage data from a file
114
+ #
115
+ # If the stage name doesn't currently exist, a new stage will be created.
116
+ # If the stage name exists, it will be updated.
117
+ # If allow_creation is false (default) a stage will NOT be created if it
118
+ # doesn't exist, existing stages will be updated.
119
+
120
+ def import file_path, allow_creation = false
121
+ raise IOError, "File not found: #{file_path}" unless File.exist? file_path
122
+
123
+ import_data = {}
124
+ File.open(file_path, 'r') do |f|
125
+ # Read array of stage hashes
126
+ # FIXME is this REALLY an array?
127
+ import_data = YAML.load(f)
128
+ end
129
+
130
+ existing_stages = list
131
+
132
+ import_data.each do |name, data|
133
+ if existing_stages.include? name
134
+ update name, data
135
+ else
136
+ if allow_creation
137
+ create data
138
+ else
139
+ puts "Stage '#{name}' does not exist. Skipping import."
140
+ end
141
+ end
142
+ end
143
+ end
144
+
145
+ private
146
+
147
+ def stages_page
148
+ page_factory.stages_page
149
+ end
150
+
151
+ def assert_stage_exists name
152
+ fail ArgumentError.new("A stage named '#{name}' does not exist") unless list.include? name
153
+ end
154
+
155
+ def assert_stage_does_not_exist name
156
+ fail ArgumentError.new("A stage named '#{name}' already exists") if list.include? name
157
+ end
158
+
159
+ ##
160
+ # Test stage data structure for validity
161
+ #
162
+ # Required: name
163
+
164
+ def valid_stage_data? data
165
+ if !data.key?(:name) || data[:name].nil? || data[:name].empty?
166
+ return false
167
+ end
168
+ true
169
+ end
170
+ end # class
171
+ end # module
@@ -0,0 +1,147 @@
1
+ ##############################################################################
2
+ # File:: tasks.rb
3
+ # Purpose:: Interface to tasks functionality in admin module
4
+ #
5
+ # Author:: Jeff McAffee 2015-04-19
6
+ #
7
+ ##############################################################################
8
+
9
+ require 'admin_module/pages'
10
+
11
+ module AdminModule
12
+
13
+ class Tasks
14
+ attr_reader :page_factory
15
+
16
+ def initialize(page_factory)
17
+ @page_factory = page_factory
18
+ end
19
+
20
+ def rename src, dest
21
+ src = assert_task_exists( extract_task_name(src) )
22
+ dest = assert_task_does_not_exist( extract_task_name(dest) )
23
+
24
+ tasks_page
25
+ .modify(src)
26
+ .set_name(dest)
27
+ .save
28
+ end
29
+
30
+ def list
31
+ tasks_page.get_tasks
32
+ end
33
+
34
+ def create task
35
+ task_name = assert_task_does_not_exist( extract_task_name(task) )
36
+
37
+ tasks_page
38
+ .add
39
+ .set_task_data(task)
40
+ .save
41
+ end
42
+
43
+ def read task
44
+ task_name = assert_task_exists( extract_task_name(task) )
45
+
46
+ tasks_page
47
+ .modify( task_name )
48
+ .get_task_data
49
+ end
50
+
51
+ def update task
52
+ task_name = assert_task_exists( extract_task_name(task) )
53
+
54
+ tasks_page
55
+ .modify( task_name )
56
+ .set_task_data(task)
57
+ .save
58
+ end
59
+
60
+ #
61
+ # No functionality exists to DELETE tasks.
62
+ #
63
+
64
+ def export file_path
65
+ tasks = list
66
+ export_data = {}
67
+
68
+ tasks.each do |task|
69
+ export_data[task] = read task
70
+ end
71
+
72
+ File.open(file_path, 'w') do |f|
73
+ f.write export_data.to_yaml
74
+ end
75
+
76
+ # Explicitly return (nothing) to avoid polluting stdout (in rake task).
77
+ return
78
+
79
+ rescue Exception => e
80
+ if e.message.include? 'No such file or directory'
81
+ raise IOError, "No such directory - #{file_path}"
82
+ else
83
+ raise e
84
+ end
85
+ end
86
+
87
+ ##
88
+ # Import task configurations into the current environment from a file.
89
+
90
+ def import file_path, allow_create = false
91
+ raise IOError, "File not found: #{file_path}" unless File.exists?(file_path)
92
+
93
+ tasks = {}
94
+ File.open(file_path, 'r') do |f|
95
+ # Read array of task hashes.
96
+ tasks = YAML.load(f)
97
+ end
98
+
99
+ existing_tasks = list
100
+
101
+ tasks.each do |name, data|
102
+ if existing_tasks.include?(name)
103
+ update(data)
104
+ else
105
+ if allow_create
106
+ create(data)
107
+ else
108
+ puts "Unable to create #{name}. allow_create = false"
109
+ end
110
+ end
111
+ end
112
+
113
+ # Explicitly return (nothing) to avoid polluting stdout (in rake task).
114
+ return
115
+ end
116
+
117
+ private
118
+
119
+ def tasks_page
120
+ page_factory.tasks_page
121
+ end
122
+
123
+ def extract_task_name task
124
+ task_name = if task.is_a? Hash
125
+ task[:name]
126
+ else
127
+ String(task)
128
+ end
129
+ end
130
+
131
+ def assert_task_exists task_name
132
+ unless list.include? task_name
133
+ fail ArgumentError.new("A task named '#{task_name}' does not exist")
134
+ end
135
+
136
+ task_name
137
+ end
138
+
139
+ def assert_task_does_not_exist task_name
140
+ if list.include? task_name
141
+ fail ArgumentError.new("A task named '#{task_name}' already exists")
142
+ end
143
+
144
+ task_name
145
+ end
146
+ end # class Tasks
147
+ end # module