epc 1.0.3 → 1.0.4

Sign up to get free protection for your applications and to get access to all the features.
Files changed (196) hide show
  1. data/lib/epc.rb +25 -5
  2. data/lib/epc/client/json_client.rb +4 -4
  3. data/lib/epc/command/archive_command.rb +7 -6
  4. data/lib/epc/command/attachto_command.rb +13 -0
  5. data/lib/epc/command/base_command.rb +120 -29
  6. data/lib/epc/command/config/create_config_command.rb +7 -11
  7. data/lib/epc/command/config/delete_config_command.rb +5 -5
  8. data/lib/epc/command/config/list_configs_command.rb +5 -5
  9. data/lib/epc/command/config/update_config_command.rb +11 -10
  10. data/lib/epc/command/copy_command.rb +14 -0
  11. data/lib/epc/command/create_command.rb +9 -5
  12. data/lib/epc/command/delete_command.rb +9 -9
  13. data/lib/epc/command/{copy_deployment_command.rb → deployment/copy_deployment_command.rb} +6 -5
  14. data/lib/epc/command/deployment/create_deployment_command.rb +15 -15
  15. data/lib/epc/command/deployment/list_deployments_command.rb +2 -4
  16. data/lib/epc/command/deployment/show_deployment_command.rb +5 -7
  17. data/lib/epc/command/deployment/submit_deployment_command.rb +15 -0
  18. data/lib/epc/command/deployment/update_deployment_command.rb +5 -14
  19. data/lib/epc/command/deployment/vote_deployment_command.rb +23 -0
  20. data/lib/epc/command/deploymentstage/list_deploymentstages_command.rb +1 -1
  21. data/lib/epc/command/detachfrom_command.rb +13 -0
  22. data/lib/epc/command/group/create_group_command.rb +3 -3
  23. data/lib/epc/command/group/delete_group_command.rb +4 -5
  24. data/lib/epc/command/group/show_group_command.rb +2 -3
  25. data/lib/epc/command/group/update_group_command.rb +9 -7
  26. data/lib/epc/command/library/create_library_command.rb +1 -2
  27. data/lib/epc/command/library/delete_library_command.rb +4 -5
  28. data/lib/epc/command/library/list_libraries_command.rb +1 -1
  29. data/lib/epc/command/librarylanguage/create_librarylanguage_command.rb +1 -1
  30. data/lib/epc/command/librarylanguage/delete_librarylanguage_command.rb +3 -5
  31. data/lib/epc/command/librarylanguage/list_librarylanguages_command.rb +1 -1
  32. data/lib/epc/command/librarylanguage/update_librarylanguage_command.rb +4 -5
  33. data/lib/epc/command/libraryset/create_libraryset_command.rb +5 -4
  34. data/lib/epc/command/libraryset/delete_libraryset_command.rb +4 -6
  35. data/lib/epc/command/libraryset/list_librarysets_command.rb +2 -2
  36. data/lib/epc/command/libraryset/show_libraryset_command.rb +3 -3
  37. data/lib/epc/command/libraryset/update_libraryset_command.rb +4 -3
  38. data/lib/epc/command/list_command.rb +10 -14
  39. data/lib/epc/command/list_objecttypes_command.rb +1 -1
  40. data/lib/epc/command/objectrole/create_objectrole_command.rb +4 -5
  41. data/lib/epc/command/objectrole/list_objectroles_command.rb +3 -8
  42. data/lib/epc/command/objectrole/update_objectrole_command.rb +3 -1
  43. data/lib/epc/command/permission/list_permissions_command.rb +1 -1
  44. data/lib/epc/command/permissiongroup/list_permissiongroups_command.rb +1 -1
  45. data/lib/epc/command/plugin/create_plugin_command.rb +1 -2
  46. data/lib/epc/command/plugin/delete_plugin_command.rb +4 -6
  47. data/lib/epc/command/plugin/list_plugins_command.rb +1 -1
  48. data/lib/epc/command/plugin/show_plugin_command.rb +2 -5
  49. data/lib/epc/command/plugin/update_plugin_command.rb +2 -6
  50. data/lib/epc/command/project/archive_project_command.rb +3 -12
  51. data/lib/epc/command/project/attachto_project_command.rb +133 -0
  52. data/lib/epc/command/project/create_project_command.rb +6 -6
  53. data/lib/epc/command/project/delete_project_command.rb +3 -24
  54. data/lib/epc/command/project/detachfrom_project_command.rb +66 -0
  55. data/lib/epc/command/project/list_projects_command.rb +12 -7
  56. data/lib/epc/command/project/show_project_command.rb +26 -25
  57. data/lib/epc/command/project/show_project_snapshot_command.rb +41 -0
  58. data/lib/epc/command/project/unarchive_project_command.rb +3 -10
  59. data/lib/epc/command/project/update_project_command.rb +5 -18
  60. data/lib/epc/command/projecttype/create_projecttype_command.rb +37 -0
  61. data/lib/epc/command/projecttype/delete_projecttype_command.rb +24 -0
  62. data/lib/epc/command/projecttype/list_projecttypes_command.rb +1 -1
  63. data/lib/epc/command/projecttype/show_projecttype_command.rb +2 -4
  64. data/lib/epc/command/projecttype/update_projecttype_command.rb +61 -0
  65. data/lib/epc/command/push_command.rb +14 -8
  66. data/lib/epc/command/role/create_role_command.rb +26 -3
  67. data/lib/epc/command/role/delete_role_command.rb +3 -5
  68. data/lib/epc/command/role/list_roles_command.rb +7 -3
  69. data/lib/epc/command/role/show_role_command.rb +8 -5
  70. data/lib/epc/command/role/update_role_command.rb +14 -66
  71. data/lib/epc/command/runtime/create_runtime_command.rb +34 -0
  72. data/lib/epc/command/runtime/delete_runtime_command.rb +24 -0
  73. data/lib/epc/command/runtime/list_runtimes_command.rb +2 -2
  74. data/lib/epc/command/runtime/update_runtime_command.rb +49 -0
  75. data/lib/epc/command/runtimetype/list_runtimetypes_command.rb +17 -0
  76. data/lib/epc/command/servicedefinition/create_servicedefinition_command.rb +5 -6
  77. data/lib/epc/command/servicedefinition/delete_servicedefinition_command.rb +18 -0
  78. data/lib/epc/command/servicedefinition/list_servicedefinitions_command.rb +2 -2
  79. data/lib/epc/command/servicetype/list_servicetypes_command.rb +1 -1
  80. data/lib/epc/command/serviceversion/create_serviceversion_command.rb +8 -12
  81. data/lib/epc/command/serviceversion/delete_serviceversion_command.rb +3 -5
  82. data/lib/epc/command/serviceversion/list_serviceversions_command.rb +8 -1
  83. data/lib/epc/command/show_command.rb +8 -9
  84. data/lib/epc/command/show_metrics_command.rb +3 -3
  85. data/lib/epc/command/solution/archive_solution_command.rb +3 -10
  86. data/lib/epc/command/solution/create_solution_command.rb +2 -2
  87. data/lib/epc/command/solution/delete_solution_command.rb +3 -7
  88. data/lib/epc/command/solution/list_solutions_command.rb +11 -3
  89. data/lib/epc/command/solution/show_solution_command.rb +4 -6
  90. data/lib/epc/command/solution/unarchive_solution_command.rb +3 -8
  91. data/lib/epc/command/solution/update_solution_command.rb +4 -6
  92. data/lib/epc/command/submit_command.rb +16 -0
  93. data/lib/epc/command/unarchive_command.rb +7 -6
  94. data/lib/epc/command/update_command.rb +9 -8
  95. data/lib/epc/command/user/create_user_command.rb +2 -3
  96. data/lib/epc/command/user/delete_user_command.rb +3 -5
  97. data/lib/epc/command/user/list_users_command.rb +1 -1
  98. data/lib/epc/command/user/show_user_command.rb +2 -4
  99. data/lib/epc/command/user/update_user_command.rb +3 -14
  100. data/lib/epc/command/userproperty/list_user_properties_command.rb +23 -0
  101. data/lib/epc/command/vote_command.rb +16 -0
  102. data/lib/epc/config.rb +7 -1
  103. data/lib/epc/help.rb +51 -48
  104. data/lib/epc/modules/config.rb +39 -0
  105. data/lib/epc/modules/role.rb +133 -0
  106. data/lib/epc/runner.rb +23 -12
  107. data/lib/epc/version.rb +1 -1
  108. data/test/command/archive_project_command_test.rb +2 -13
  109. data/test/command/archive_solution_command_test.rb +4 -14
  110. data/test/command/copy_deployment_command_test.rb +4 -8
  111. data/test/command/create_config_command_test.rb +23 -23
  112. data/test/command/create_deployment_command_test.rb +33 -32
  113. data/test/command/create_group_command_test.rb +2 -2
  114. data/test/command/create_library_command_test.rb +6 -6
  115. data/test/command/create_librarylanguage_command_test.rb +3 -3
  116. data/test/command/create_libraryset_command_test.rb +6 -26
  117. data/test/command/create_objectrole_command_test.rb +4 -13
  118. data/test/command/create_project_command_test.rb +27 -13
  119. data/test/command/create_role_command_test.rb +3 -2
  120. data/test/command/create_runtime_command_test.rb +37 -0
  121. data/test/command/create_servicedefinition_command_test.rb +4 -17
  122. data/test/command/create_serviceversion_command_test.rb +8 -22
  123. data/test/command/create_solution_command_test.rb +5 -5
  124. data/test/command/create_user_command_test.rb +4 -4
  125. data/test/command/delete_config_command_test.rb +8 -15
  126. data/test/command/delete_library_command_test.rb +3 -4
  127. data/test/command/delete_librarylanguage_command_test.rb +3 -4
  128. data/test/command/delete_libraryset_command_test.rb +3 -4
  129. data/test/command/delete_plugin_command_test.rb +3 -4
  130. data/test/command/delete_project_command_test.rb +2 -10
  131. data/test/command/delete_projecttype_command_test.rb +31 -0
  132. data/test/command/delete_role_command_test.rb +5 -14
  133. data/test/command/delete_runtime_command_test.rb +31 -0
  134. data/test/command/delete_servicedefinition_command_test.rb +31 -0
  135. data/test/command/delete_serviceversion_command_test.rb +3 -2
  136. data/test/command/delete_solution_command_test.rb +3 -16
  137. data/test/command/delete_user_command_test.rb +3 -3
  138. data/test/command/list_config_command_test.rb +1 -0
  139. data/test/command/list_deployments_command_test.rb +11 -41
  140. data/test/command/list_objectroles_command_test.rb +4 -14
  141. data/test/command/list_projects_command_test.rb +0 -14
  142. data/test/command/list_roles_command_test.rb +3 -1
  143. data/test/command/list_runtimes_command_test.rb +2 -3
  144. data/test/command/list_runtimetypes_command_test.rb +29 -0
  145. data/test/command/list_userproperties_command_test.rb +33 -0
  146. data/test/command/push_command_test.rb +9 -1
  147. data/test/command/show_deployment_command_test.rb +36 -0
  148. data/test/command/show_group_command_test.rb +2 -1
  149. data/test/command/show_libraryset_command_test.rb +5 -3
  150. data/test/command/show_metrics_command_test.rb +4 -4
  151. data/test/command/show_plugin_command_test.rb +4 -4
  152. data/test/command/show_project_command_test.rb +5 -17
  153. data/test/command/show_project_snapshot_test.rb +33 -0
  154. data/test/command/show_projecttype_command_test.rb +5 -11
  155. data/test/command/show_role_command_test.rb +5 -12
  156. data/test/command/show_solution_command_test.rb +2 -15
  157. data/test/command/show_user_command_test.rb +4 -3
  158. data/test/command/submit_deployment_command_test.rb +4 -11
  159. data/test/command/unarchive_project_command_test.rb +2 -14
  160. data/test/command/unarchive_solution_command_test.rb +6 -16
  161. data/test/command/update_config_command_test.rb +14 -3
  162. data/test/command/update_deployment_command_test.rb +12 -26
  163. data/test/command/update_group_command_test.rb +2 -10
  164. data/test/command/update_librarylanguage_command_test.rb +5 -3
  165. data/test/command/update_libraryset_command_test.rb +4 -2
  166. data/test/command/update_plugin_command_test.rb +5 -4
  167. data/test/command/update_project_command_test.rb +6 -20
  168. data/test/command/update_role_command_test.rb +11 -8
  169. data/test/command/update_solution_command_test.rb +6 -12
  170. data/test/command/update_user_command_test.rb +3 -19
  171. data/test/command/vote_deployment_command_test.rb +2 -6
  172. metadata +66 -63
  173. data/lib/epc/command/attach_library_command.rb +0 -82
  174. data/lib/epc/command/attach_libraryset_command.rb +0 -31
  175. data/lib/epc/command/attach_runtime_command.rb +0 -26
  176. data/lib/epc/command/bind_service_command.rb +0 -35
  177. data/lib/epc/command/create_dependency_command.rb +0 -43
  178. data/lib/epc/command/dependency/delete_dependency_command.rb +0 -38
  179. data/lib/epc/command/detach_library_command.rb +0 -35
  180. data/lib/epc/command/detach_libraryset_command.rb +0 -8
  181. data/lib/epc/command/list_versions_command.rb +0 -38
  182. data/lib/epc/command/submit_deployment_command.rb +0 -19
  183. data/lib/epc/command/unbind_service_command.rb +0 -42
  184. data/lib/epc/command/undefine_service_command.rb +0 -33
  185. data/lib/epc/command/update_rolepermissions_command.rb +0 -83
  186. data/lib/epc/command/vote_deployment_command.rb +0 -29
  187. data/test/command/attach_library_command_test.rb +0 -124
  188. data/test/command/attach_libraryset_command_test.rb +0 -49
  189. data/test/command/attach_runtime_command_test.rb +0 -44
  190. data/test/command/bind_service_command_test.rb +0 -46
  191. data/test/command/create_dependency_command_test.rb +0 -55
  192. data/test/command/create_plugin_command_test.rb +0 -44
  193. data/test/command/delete_dependency_command_test.rb +0 -42
  194. data/test/command/detach_library_command_test.rb +0 -53
  195. data/test/command/unbind_service_command_test.rb +0 -48
  196. data/test/command/undefine_service_command_test.rb +0 -49
@@ -1,17 +1,10 @@
1
1
  module EPC::Command
2
2
  class UnarchiveProjectCommand < UnarchiveCommand
3
3
 
4
- def execute(project = nil)
5
- path = File.expand_path(":")
4
+ def execute(params = [])
5
+ require_object
6
6
 
7
- solution_name, project_name = project.split(".") rescue [nil, nil]
8
-
9
- solution_id, solution_name = infer_solution_context(solution_name, path, {:get_solution_name => true})
10
- project_id, project_name = infer_project_context(project_name, path, solution_id, {:get_solution_name => true})
11
-
12
- raise FatalError, "Project could not be inferred." if project_id.nil?
13
-
14
- status, response, message = client.put(EPC::Config::PROJECTS_PATH + "/#{project_id}", {:archived => false})
7
+ status, response, message = client.put(EPC::Config::PROJECTS_PATH + "/#{object_id}", {:archived => false})
15
8
  if status.successful?
16
9
  say("Project has been unarchived.")
17
10
  else
@@ -2,23 +2,9 @@ module EPC::Command
2
2
  class UpdateProjectCommand < BaseCommand
3
3
  UPDATABLE_ATTRIBUTES = ["project_name", "project_type"]
4
4
 
5
- def execute(project = nil, *args)
6
- path = "."
7
- path = File.expand_path(path)
8
-
9
- ids = project.split(":") rescue [nil, nil]
10
-
11
- if ids.size == 1
12
- project_name = ids[0]
13
- solution_name = nil
14
- elsif ids.size == 2
15
- solution_name, project_name = ids
16
- end
17
-
18
- solution_id, solution_name = infer_solution_context(solution_name, path, :get_solution_name => true)
19
- project_id, project_name = infer_project_context(project_name, path, solution_id, {:get_project_name => true})
20
-
21
- raise FatalError, "Project could not be inferred" if project_id.nil? || project_id == 0
5
+ def execute(args)
6
+ require_object
7
+ path = File.expand_path(".")
22
8
 
23
9
  args_hash = {}
24
10
  args.each do |arg|
@@ -39,7 +25,7 @@ module EPC::Command
39
25
  end
40
26
  end
41
27
  unless args_hash.empty?
42
- status, response, message = client.put(EPC::Config::PROJECTS_PATH + "/#{project_id}", args_hash)
28
+ status, response, message = client.put(EPC::Config::PROJECTS_PATH + "/#{object_id}", args_hash)
43
29
  if status.failure?
44
30
  say("Update failed with: [#{response[:message]}]")
45
31
  else
@@ -47,6 +33,7 @@ module EPC::Command
47
33
  end
48
34
  return status
49
35
  else
36
+ say("You must specify an attribute to be updated: [#{UPDATABLE_ATTRIBUTES.join(",")}]")
50
37
  say(EPC::Help::COMMAND_USAGES[:update_project])
51
38
  return 1
52
39
  end
@@ -0,0 +1,37 @@
1
+ module EPC::Command
2
+ class CreateProjecttypeCommand < CreateCommand
3
+
4
+ def execute(args = [])
5
+ # raise FatalError, "You need to specify all mandatory parameters" if args.size < 5
6
+
7
+ params = {}
8
+ params[:name] = args[0]
9
+ params[:runtime] = args[1]
10
+ params[:framework] = args[2]
11
+ params[:build_type] = args[3]
12
+ params[:build_packaging] = args[4]
13
+ params[:deployable] = args[5]
14
+
15
+ begin
16
+ params[:runtime_env_types] = []
17
+ args[6].split(",").each do |rti|
18
+ params[:runtime_env_types] << {:id => retrieve_identifier_for("RuntimeEnvType", rti)}
19
+ end
20
+ rescue Exception => ex
21
+ say("Unable to parse runtime-env-types parameter")
22
+ return 1
23
+ end
24
+
25
+ status, response, headers = client.post(EPC::Config::PROJECT_TYPES_PATH, params)
26
+
27
+ if status.successful?
28
+ say("ProjectType [#{args[0]}] created")
29
+ else
30
+ say("Request failed: [#{response[:message]}]")
31
+ end
32
+
33
+ return status
34
+ end
35
+
36
+ end
37
+ end
@@ -0,0 +1,24 @@
1
+ module EPC::Command
2
+ class DeleteProjecttypeCommand < DeleteCommand
3
+
4
+ def execute(args = [])
5
+
6
+ proceed = ask_yn("Are you sure you want to delete the [#{object_id}] ProjectType? [Yn] ")
7
+ if proceed.upcase == 'N'
8
+ return 1
9
+ end
10
+
11
+ status, response, headers = client.delete(EPC::Config::PROJECT_TYPES_PATH + "/#{object_id}")
12
+
13
+ if status.successful?
14
+ say("Project type deleted")
15
+ else
16
+ say("Request failed: [#{response[:message]}]")
17
+ end
18
+
19
+ return status
20
+
21
+ end
22
+
23
+ end
24
+ end
@@ -1,7 +1,7 @@
1
1
  module EPC::Command
2
2
  class ListProjecttypesCommand < BaseCommand
3
3
 
4
- def execute(target = nil)
4
+ def execute(args = [])
5
5
  status, response, headers = client.get(EPC::Config::PROJECT_TYPES_PATH)
6
6
 
7
7
  if status.failure?
@@ -1,11 +1,9 @@
1
1
  module EPC::Command
2
2
  class ShowProjecttypeCommand < BaseCommand
3
3
 
4
- def execute(project_type = nil, *args)
4
+ def execute(args = [])
5
5
 
6
- project_type_id = retrieve_identifier_for("ProjectType", project_type)
7
-
8
- status, response, headers = client.get(EPC::Config::PROJECT_TYPES_PATH + "/#{project_type_id}")
6
+ status, response, headers = client.get(EPC::Config::PROJECT_TYPES_PATH + "/#{object_id}")
9
7
 
10
8
  if status.failure?
11
9
  say("Request failed: [#{response[:message]}]")
@@ -0,0 +1,61 @@
1
+ module EPC::Command
2
+ class UpdateProjecttypeCommand < UpdateCommand
3
+
4
+ UPDATABLE_ATTRIBUTES = ["name", "runtime", "framework", "build_type", "build_packaging", "deployable", "runtime_env_types"]
5
+
6
+ def execute(args)
7
+
8
+ raise FatalError, "You need to specify at least one attribute to update.\nUpdatable attributes are: [#{UPDATABLE_ATTRIBUTES.join(', ')}]" if args.size < 1
9
+ params = {}
10
+
11
+ args.each do |arg|
12
+ key, val = arg.split("=")
13
+ next if key.blank?
14
+ if key == :runtime_env_types
15
+ begin
16
+ params[:runtime_env_types] = []
17
+ args[6].split(",").each do |rti|
18
+ params[:runtime_env_types] << {:id => retrieve_identifier_for("RuntimeEnvType", rti)}
19
+ end
20
+ rescue Exception => ex
21
+ say("Unable to parse runtime-env-types parameter")
22
+ return 1
23
+ end
24
+ else
25
+ params[key] = val
26
+ end
27
+ end
28
+
29
+ params.each do |attr, val|
30
+ unless UPDATABLE_ATTRIBUTES.include?(attr)
31
+ params.delete(attr)
32
+ say("Cannot update #{attr}. Updatable attributes are: [#{UPDATABLE_ATTRIBUTES.join(', ')}]")
33
+ next
34
+ end
35
+ end
36
+
37
+ raise InputError, "You need to specify at least one attribute to update" if params.blank?
38
+
39
+ status, response, headers = client.get(EPC::Config::PROJECT_TYPES_PATH + "/#{object_id}")
40
+
41
+ unless status.successful?
42
+ say("Request failed: [#{response[:message]}]")
43
+ return 1
44
+ end
45
+
46
+ type_attrs = response.merge(params.inject({}){|memo,(k,v)| memo[k.to_sym] = v; memo})
47
+
48
+ status, response, headers = client.put(EPC::Config::PROJECT_TYPES_PATH + "/#{object_id}", type_attrs)
49
+
50
+ if status.successful?
51
+ say("Project type updated")
52
+ else
53
+ say("Request failed: [#{response[:message]}]")
54
+ end
55
+
56
+ return status
57
+
58
+ end
59
+
60
+ end
61
+ end
@@ -58,12 +58,12 @@ module EPC::Command
58
58
  project_id, project_name = infer_project_context(nil, path, solution_id, {:get_project_name => true})
59
59
  say("\nPushing #{project_name}...")
60
60
  begin
61
- zip_path = zip_source(path)
62
- return 1 unless zip_path
61
+ zip_path = @options[:direct_deploy].present? ? @options[:direct_deploy] : zip_source(path)
62
+ raise FatalError, "File missing: #{zip_path}" unless zip_path && File.exists?(zip_path)
63
63
  sha1 = sha1(zip_path)
64
- status, url, signature, id = create_push(project_name, solution_name, sha1, @options[:note])
64
+ status, url, signature, id = create_push(project_name, solution_name, sha1, @options[:note], @options[:direct_deploy])
65
65
  if status.successful?
66
- pushed = push_zip(zip_path, url, signature)
66
+ pushed = push_zip(zip_path, url, signature, @options[:direct_deploy])
67
67
  resp = confirm_push(id)
68
68
  if resp[:build_id].present? && !@options[:skip_build]
69
69
  poll_for_build_status(resp[:build_id]) unless @options[:no_poll].present?
@@ -87,9 +87,10 @@ module EPC::Command
87
87
 
88
88
  private
89
89
 
90
- def create_push(project_name, solution_name, sha1, note = nil)
90
+ def create_push(project_name, solution_name, sha1, note = nil, direct_deploy=nil)
91
91
  status, response, headers = client.post("#{EPC::Config::PUSHES_PATH}",
92
- { :project_name => project_name, :solution_name => solution_name, :sha1 => sha1, :note => note})
92
+ { :project_name => project_name, :solution_name => solution_name,
93
+ :sha1 => sha1, :note => note, :direct_deploy => direct_deploy})
93
94
  if status.successful?
94
95
  say("Successfully created a push with [#{target_url}]")
95
96
  return status, response[:url], response[:signature], response[:id]
@@ -156,7 +157,7 @@ module EPC::Command
156
157
  return full_paths, relative_paths
157
158
  end
158
159
 
159
- def push_zip(zip_path, url, signature)
160
+ def push_zip(zip_path, url, signature, direct_deploy=nil)
160
161
  # create API returns a URL that includes protocol://host/solution_name/project_name/version
161
162
 
162
163
  status, response, headers = http_client.post(url,
@@ -168,7 +169,7 @@ module EPC::Command
168
169
  raise BasicError, "Failed to push the zip file to the build area [status = #{status}]. Aborting push command."
169
170
  end
170
171
 
171
- ensure File.delete zip_path if File.exists? zip_path
172
+ ensure File.delete zip_path if direct_deploy.nil? && File.exists?(zip_path)
172
173
  end
173
174
 
174
175
  def check_push_directory(path)
@@ -186,8 +187,13 @@ module EPC::Command
186
187
  if project_type == "Java Web Archive" || project_type == "Java Library"
187
188
  src_path = File.join(path, "src")
188
189
  raise BasicError, "#{path} does not include a src directory" if !File.exists?(src_path) && !File.directory?(src_path)
190
+ source_path = src_path
191
+ else
192
+ source_path = path
189
193
  end
190
194
 
195
+ raise BasicError, "The directory you are pushing is empty" if Dir.glob(File.join(source_path,'*')).blank?
196
+
191
197
  return true
192
198
  end
193
199
  end
@@ -1,9 +1,18 @@
1
1
  module EPC::Command
2
2
  class CreateRoleCommand < BaseCommand
3
- def execute(*params)
4
- role = params[1]
5
- raise FatalError, "You must specify a role name" if role.blank?
6
3
 
4
+ def execute(args = [])
5
+ role = args[0]
6
+
7
+ if @options[:file].present?
8
+ return handle_file_role_creation
9
+ else
10
+ return create_role(role)[0]
11
+ end
12
+ end
13
+
14
+ def create_role(role)
15
+ raise FatalError, "You must specify a role name" if role.blank?
7
16
  status, response, headers = client.post(EPC::Config::ROLES_PATH, {:name => role})
8
17
 
9
18
  if status.successful?
@@ -11,7 +20,21 @@ module EPC::Command
11
20
  else
12
21
  say("Request failed: [#{response[:message]}]")
13
22
  end
23
+ return status, response[:id]
24
+ end
25
+
26
+ def handle_file_role_creation
27
+ contents = EPC::Config.read_content_as_json(@options[:file])
28
+ role = contents["name"]
29
+ status, role_id = create_role(role)
30
+
31
+ return 1 unless status.successful?
32
+
33
+ batch_add(role_id,contents)
34
+
35
+ return 0
14
36
 
15
37
  end
38
+
16
39
  end
17
40
  end
@@ -1,16 +1,14 @@
1
1
  module EPC::Command
2
2
  class DeleteRoleCommand < DeleteCommand
3
3
 
4
- def execute(role = nil, *args)
4
+ def execute(args = [])
5
5
 
6
- proceed = ask_yn("Are you sure you want to delete the [#{role}] role? [Yn] ")
6
+ proceed = ask_yn("Are you sure you want to delete the [#{object_id}] role? [Yn] ")
7
7
  if proceed.upcase == "N"
8
8
  return 1
9
9
  end
10
10
 
11
- role_id = retrieve_identifier_for("Role", role)
12
-
13
- status, response, headers = client.delete(EPC::Config::ROLES_PATH + "/#{role_id}/system/true")
11
+ status, response, headers = client.delete(EPC::Config::ROLES_PATH + "/#{object_id}/system/true")
14
12
 
15
13
  if status.successful?
16
14
  say("Role deleted")
@@ -1,9 +1,13 @@
1
1
  module EPC::Command
2
2
  class ListRolesCommand < BaseCommand
3
- def execute(target = nil)
3
+ def execute(args = [])
4
+
5
+ if has_target?
6
+ if target_type.downcase != "user"
7
+ say("Target type must be User")
8
+ return 1
9
+ end
4
10
 
5
- if target.present?
6
- target_type, target_id = target.split(":")
7
11
  status, response, headers = client.get(EPC::Config::USERS_PATH + "/#{target_id}?include=roles")
8
12
  response = response[:roles]
9
13
  else
@@ -1,22 +1,25 @@
1
1
  module EPC::Command
2
2
  class ShowRoleCommand < ShowCommand
3
3
 
4
- def execute(role = nil, *args)
4
+ def execute(args = [])
5
5
  @showable_translations = {
6
6
  :groups => :user_groups
7
7
  }
8
8
 
9
- role_id = retrieve_identifier_for("Role", role)
9
+ @showables = args.map(&:to_sym) rescue []
10
10
 
11
- status, response, headers = client.get(EPC::Config::ROLES_PATH + "/#{role_id}?include=users,user_groups,grants")
12
-
13
- @showables = args[1..-1].map(&:to_sym) rescue []
11
+ status, response, headers = client.get(EPC::Config::ROLES_PATH + "/#{object_id}?include=users,user_groups,grants")
14
12
 
15
13
  unless status.successful?
16
14
  say("Request failed: [#{response[:message]}]")
17
15
  return 1
18
16
  end
19
17
 
18
+ if @options[:json].present?
19
+ say response.to_json
20
+ return 0
21
+ end
22
+
20
23
  role_table = EPC::TabularOutputter.new([response], [:id, :name])
21
24
  users_table = EPC::TabularOutputter.new(response[:users], [:id, :name])
22
25
  user_groups_table = EPC::TabularOutputter.new(response[:user_groups], [:id, :name])
@@ -1,94 +1,42 @@
1
1
  module EPC::Command
2
2
  class UpdateRoleCommand < UpdateCommand
3
3
 
4
- required_options :add_user, :remove_user, :add_group, :remove_group, :add_grant, :remove_grant, :mode => :any?, :message => "You must specify a user/group/grant to added or removed"
4
+ required_options :add_user, :remove_user, :add_group, :remove_group, :add_grant, :remove_grant, :file, :mode => :any?, :message => "You must specify a user/group/grant to added or removed"
5
5
 
6
- def execute(role = nil, *args)
7
- role_id = retrieve_identifier_for("Role", role)
6
+ def execute(args = [])
7
+ role_id = object_id
8
8
 
9
- if @options[:add_user].present?
10
- user_id = retrieve_identifier_for("User", @options[:add_user])
11
- params = []
12
- params << {:member_id => user_id.to_i, :member_type => "User"}
13
-
14
- status, response, headers = client.put(EPC::Config::ROLES_PATH + "/#{role_id}/assign_members", {:role_memberships => params})
15
- say("User added to role") if status.successful?
9
+ if @options[:file].present?
10
+ data = EPC::Config.read_content_as_json(@options[:file])
11
+ batch_add(object_id, data)
16
12
  end
17
13
 
14
+ if @options[:add_user].present?
15
+ status = add_user(role_id, @options[:add_user])
16
+ end
18
17
 
19
18
  if @options[:remove_user].present?
20
- user_id = retrieve_identifier_for("User", @options[:add_user])
21
- status, response, headers = client.delete(EPC::Config::ROLES_PATH + "/#{role_id}/remove_member", {:member_id => @options[:remove_user], :member_type => "User"})
22
- say("User removed from role") if status.successful?
19
+ status = remove_user(role_id, @options[:remove_user])
23
20
  end
24
21
 
25
22
  if @options[:add_group].present?
26
- group_id = retrieve_identifier_for("UserGroup", @options[:add_group])
27
- params = []
28
- params << {:member_id => group_id.to_i, :member_type => "UserGroup"}
29
-
30
- status, response, headers = client.put(EPC::Config::ROLES_PATH + "/#{role_id}/assign_members", {:role_memberships => params})
31
- say("UserGroup added to role") if status.successful?
23
+ status = add_group(role_id, @options[:add_group])
32
24
  end
33
25
 
34
26
 
35
27
  if @options[:remove_group].present?
36
- group_id = retrieve_identifier_for("UserGroup", @options[:remove_group])
37
- status, response, headers = client.delete(EPC::Config::ROLES_PATH + "/#{role_id}/remove_member", {:member_id => group_id, :member_type => "UserGroup"})
38
- say("UserGroup removed from role") if status.successful?
28
+ status = remove_group(role_id, @options[:remove_group])
39
29
  end
40
30
 
41
-
42
-
43
31
  if @options[:add_grant].present?
44
- secured_type, action, secured_id = @options[:add_grant].split(":")
45
- raise FatalError, "Grant incorrectly specified" if secured_type.blank? || action.blank?
46
-
47
- params = {}
48
- params[:grant_action] = action
49
- params[:permitted_type] = "Role"
50
- params[:permitted_id] = role_id.to_i
51
- params[:secured_type] = secured_type
52
- params[:secured_id] = secured_id if secured_id.present?
53
-
54
-
55
- status, response, headers = client.post(EPC::Config::GRANTS_PATH, params)
56
-
57
- if status.successful?
58
- say("Role permission updated")
59
- end
32
+ status = add_grant(role_id, @options[:add_grant])
60
33
  end
61
34
 
62
35
 
63
36
  if @options[:remove_grant].present?
64
- secured_type, action, secured_id = @options[:remove_grant].split(":")
65
- status, response, headers = client.get(EPC::Config::ROLES_PATH + "/#{role_id}/grants")
66
-
67
- if status.successful?
68
- grant_id = response.detect do |g|
69
- found = (g[:action] == action)
70
- found = found && (g[:secured_type].to_s == secured_type)
71
- if secured_id.blank?
72
- found = found && g[:secured_id].blank?
73
- else
74
- found = found && (g[:secured_id].to_s == secured_id)
75
- end
76
- found
77
- end[:id] rescue nil
78
-
79
- raise FatalError, "Permission couldn't be determined" if grant_id.blank?
80
-
81
- status, response, headers = client.delete(EPC::Config::GRANTS_PATH + "/#{grant_id}")
82
-
83
- if status.successful?
84
- say("Role permission deleted")
85
- end
86
- end
37
+ status = remove_grant(role_id, @options[:remove_grant])
87
38
  end
88
39
 
89
-
90
-
91
- say("Request failed: [#{response[:message]}]") unless status.successful?
92
40
  return status
93
41
  end
94
42
  end