epc 1.0.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (215) hide show
  1. data/CHANGELOG +1 -0
  2. data/Gemfile +22 -0
  3. data/Rakefile +67 -0
  4. data/Rakefile.gem +1 -0
  5. data/bin/epc +10 -0
  6. data/lib/epc.rb +126 -0
  7. data/lib/epc/client/base_client.rb +80 -0
  8. data/lib/epc/client/http_client.rb +19 -0
  9. data/lib/epc/client/json_client.rb +48 -0
  10. data/lib/epc/command/archive_project_command.rb +24 -0
  11. data/lib/epc/command/archive_solution_command.rb +21 -0
  12. data/lib/epc/command/attach_library_command.rb +82 -0
  13. data/lib/epc/command/attach_libraryset_command.rb +32 -0
  14. data/lib/epc/command/attach_runtime_command.rb +27 -0
  15. data/lib/epc/command/base_command.rb +451 -0
  16. data/lib/epc/command/bind_service_command.rb +35 -0
  17. data/lib/epc/command/build_command.rb +83 -0
  18. data/lib/epc/command/config/create_config_command.rb +55 -0
  19. data/lib/epc/command/copy_deployment_command.rb +21 -0
  20. data/lib/epc/command/create_command.rb +13 -0
  21. data/lib/epc/command/create_dependency_command.rb +43 -0
  22. data/lib/epc/command/define_service_command.rb +37 -0
  23. data/lib/epc/command/delete_config_command.rb +63 -0
  24. data/lib/epc/command/delete_dependency_command.rb +40 -0
  25. data/lib/epc/command/delete_group_command.rb +40 -0
  26. data/lib/epc/command/delete_library_command.rb +30 -0
  27. data/lib/epc/command/delete_librarylanguage_command.rb +40 -0
  28. data/lib/epc/command/delete_libraryset_command.rb +40 -0
  29. data/lib/epc/command/delete_project_command.rb +54 -0
  30. data/lib/epc/command/delete_role_command.rb +25 -0
  31. data/lib/epc/command/delete_serviceversion_command.rb +52 -0
  32. data/lib/epc/command/delete_solution_command.rb +39 -0
  33. data/lib/epc/command/delete_user_command.rb +31 -0
  34. data/lib/epc/command/deploy_command.rb +142 -0
  35. data/lib/epc/command/deployment/create_deployment_command.rb +82 -0
  36. data/lib/epc/command/detach_library_command.rb +35 -0
  37. data/lib/epc/command/detach_libraryset_command.rb +8 -0
  38. data/lib/epc/command/group/create_group_command.rb +21 -0
  39. data/lib/epc/command/info_command.rb +11 -0
  40. data/lib/epc/command/library/create_library_command.rb +45 -0
  41. data/lib/epc/command/librarylanguage/create_librarylanguage_command.rb +24 -0
  42. data/lib/epc/command/libraryset/create_libraryset_command.rb +54 -0
  43. data/lib/epc/command/list_approvals_command.rb +27 -0
  44. data/lib/epc/command/list_attachedlibraries_command.rb +42 -0
  45. data/lib/epc/command/list_boundservices_command.rb +40 -0
  46. data/lib/epc/command/list_config_command.rb +60 -0
  47. data/lib/epc/command/list_dependencies_command.rb +43 -0
  48. data/lib/epc/command/list_deployments_command.rb +68 -0
  49. data/lib/epc/command/list_groups_command.rb +19 -0
  50. data/lib/epc/command/list_libraries_command.rb +19 -0
  51. data/lib/epc/command/list_librarylanguages_command.rb +19 -0
  52. data/lib/epc/command/list_librarysets_command.rb +26 -0
  53. data/lib/epc/command/list_objectroles_command.rb +25 -0
  54. data/lib/epc/command/list_objecttypes_command.rb +20 -0
  55. data/lib/epc/command/list_permissiongroups_command.rb +20 -0
  56. data/lib/epc/command/list_projects_command.rb +36 -0
  57. data/lib/epc/command/list_projecttypes_command.rb +20 -0
  58. data/lib/epc/command/list_rolepermissions_command.rb +21 -0
  59. data/lib/epc/command/list_roles_command.rb +26 -0
  60. data/lib/epc/command/list_runtimes_command.rb +16 -0
  61. data/lib/epc/command/list_service_types_command.rb +19 -0
  62. data/lib/epc/command/list_servicedefinitions_command.rb +19 -0
  63. data/lib/epc/command/list_serviceversions_command.rb +21 -0
  64. data/lib/epc/command/list_solutions_command.rb +25 -0
  65. data/lib/epc/command/list_stages_command.rb +21 -0
  66. data/lib/epc/command/list_users_command.rb +26 -0
  67. data/lib/epc/command/list_versions_command.rb +39 -0
  68. data/lib/epc/command/login_command.rb +32 -0
  69. data/lib/epc/command/logout_command.rb +20 -0
  70. data/lib/epc/command/objectrole/create_objectrole_command.rb +19 -0
  71. data/lib/epc/command/project/create_project_command.rb +78 -0
  72. data/lib/epc/command/pull_command.rb +209 -0
  73. data/lib/epc/command/push_command.rb +194 -0
  74. data/lib/epc/command/refresh_solution_command.rb +71 -0
  75. data/lib/epc/command/renew_command.rb +19 -0
  76. data/lib/epc/command/request_passwordchange_command.rb +23 -0
  77. data/lib/epc/command/role/create_role_command.rb +17 -0
  78. data/lib/epc/command/serviceversion/create_serviceversion_command.rb +33 -0
  79. data/lib/epc/command/show_deployment_command.rb +57 -0
  80. data/lib/epc/command/show_group_command.rb +35 -0
  81. data/lib/epc/command/show_libraryset_command.rb +54 -0
  82. data/lib/epc/command/show_project_command.rb +74 -0
  83. data/lib/epc/command/show_projecttype_command.rb +18 -0
  84. data/lib/epc/command/show_role_command.rb +46 -0
  85. data/lib/epc/command/show_solution_command.rb +54 -0
  86. data/lib/epc/command/show_user_command.rb +42 -0
  87. data/lib/epc/command/solution/create_solution_command.rb +34 -0
  88. data/lib/epc/command/solution/list_solutions_command.rb +25 -0
  89. data/lib/epc/command/solution/update_solution_command.rb +43 -0
  90. data/lib/epc/command/submit_deployment_command.rb +19 -0
  91. data/lib/epc/command/target_command.rb +26 -0
  92. data/lib/epc/command/unarchive_project_command.rb +23 -0
  93. data/lib/epc/command/unarchive_solution_command.rb +21 -0
  94. data/lib/epc/command/unbind_service_command.rb +42 -0
  95. data/lib/epc/command/undefine_service_command.rb +33 -0
  96. data/lib/epc/command/undeploy_command.rb +106 -0
  97. data/lib/epc/command/update_config_command.rb +62 -0
  98. data/lib/epc/command/update_deploymentproject_command.rb +54 -0
  99. data/lib/epc/command/update_group_command.rb +43 -0
  100. data/lib/epc/command/update_librarylanguage_command.rb +28 -0
  101. data/lib/epc/command/update_libraryset_command.rb +80 -0
  102. data/lib/epc/command/update_project_command.rb +49 -0
  103. data/lib/epc/command/update_role_command.rb +47 -0
  104. data/lib/epc/command/update_rolepermissions_command.rb +83 -0
  105. data/lib/epc/command/update_solution_command.rb +45 -0
  106. data/lib/epc/command/update_user_command.rb +57 -0
  107. data/lib/epc/command/user/create_user_command.rb +27 -0
  108. data/lib/epc/command/vote_deployment_command.rb +29 -0
  109. data/lib/epc/config.rb +245 -0
  110. data/lib/epc/error/basic_error.rb +6 -0
  111. data/lib/epc/error/fatal_error.rb +6 -0
  112. data/lib/epc/error/input_error.rb +6 -0
  113. data/lib/epc/error/internal_error.rb +6 -0
  114. data/lib/epc/help.rb +292 -0
  115. data/lib/epc/persistent_attributes.rb +18 -0
  116. data/lib/epc/runner.rb +177 -0
  117. data/lib/epc/tabular_outputter.rb +161 -0
  118. data/lib/epc/version.rb +3 -0
  119. data/lib/fixnum.rb +9 -0
  120. data/lib/object.rb +13 -0
  121. data/test/command/archive_project_command_test.rb +41 -0
  122. data/test/command/archive_solution_command_test.rb +40 -0
  123. data/test/command/attach_library_command_test.rb +124 -0
  124. data/test/command/attach_libraryset_command_test.rb +49 -0
  125. data/test/command/attach_runtime_command_test.rb +44 -0
  126. data/test/command/base_command_test.rb +276 -0
  127. data/test/command/bind_service_command_test.rb +46 -0
  128. data/test/command/build_command_test.rb +103 -0
  129. data/test/command/copy_deployment_command_test.rb +38 -0
  130. data/test/command/create_config_command_test.rb +124 -0
  131. data/test/command/create_dependency_command_test.rb +55 -0
  132. data/test/command/create_deployment_command_test.rb +136 -0
  133. data/test/command/create_group_command_test.rb +34 -0
  134. data/test/command/create_library_command_test.rb +61 -0
  135. data/test/command/create_librarylanguage_command_test.rb +51 -0
  136. data/test/command/create_libraryset_command_test.rb +81 -0
  137. data/test/command/create_objectrole_command_test.rb +37 -0
  138. data/test/command/create_project_command_test.rb +102 -0
  139. data/test/command/create_role_command_test.rb +31 -0
  140. data/test/command/create_serviceversion_command_test.rb +60 -0
  141. data/test/command/create_solution_command_test.rb +70 -0
  142. data/test/command/create_user_command_test.rb +54 -0
  143. data/test/command/define_service_command_test.rb +55 -0
  144. data/test/command/delete_config_command_test.rb +82 -0
  145. data/test/command/delete_dependency_command_test.rb +50 -0
  146. data/test/command/delete_group_command_test.rb +56 -0
  147. data/test/command/delete_library_command_test.rb +43 -0
  148. data/test/command/delete_librarylanguage_command_test.rb +55 -0
  149. data/test/command/delete_libraryset_command_test.rb +55 -0
  150. data/test/command/delete_project_command_test.rb +76 -0
  151. data/test/command/delete_role_command_test.rb +41 -0
  152. data/test/command/delete_serviceversion_command_test.rb +53 -0
  153. data/test/command/delete_solution_command_test.rb +79 -0
  154. data/test/command/delete_user_command_test.rb +56 -0
  155. data/test/command/deploy_command_test.rb +185 -0
  156. data/test/command/detach_library_command_test.rb +53 -0
  157. data/test/command/info_command_test.rb +17 -0
  158. data/test/command/list_approvals_command_test.rb +41 -0
  159. data/test/command/list_boundservices_command_test.rb +46 -0
  160. data/test/command/list_config_command_test.rb +72 -0
  161. data/test/command/list_dependencies_command_test.rb +46 -0
  162. data/test/command/list_deployments_command_test.rb +112 -0
  163. data/test/command/list_deploymentstages_command_test.rb +44 -0
  164. data/test/command/list_libraries_command_test.rb +42 -0
  165. data/test/command/list_librarylanguages_command_test.rb +34 -0
  166. data/test/command/list_librarysets_command_test.rb +33 -0
  167. data/test/command/list_objectroles_command_test.rb +41 -0
  168. data/test/command/list_objecttypes_command_test.rb +25 -0
  169. data/test/command/list_permissiongroups_command_test.rb +25 -0
  170. data/test/command/list_projects_command_test.rb +63 -0
  171. data/test/command/list_projecttypes_command_test.rb +39 -0
  172. data/test/command/list_rolepermissions_command_test.rb +39 -0
  173. data/test/command/list_roles_command_test.rb +46 -0
  174. data/test/command/list_runtimes_command_test.rb +30 -0
  175. data/test/command/list_service_types_command_test.rb +44 -0
  176. data/test/command/list_servicedefinitions_command_test.rb +44 -0
  177. data/test/command/list_serviceversions_command_test.rb +47 -0
  178. data/test/command/list_solutions_command_test.rb +48 -0
  179. data/test/command/list_users_command_test.rb +33 -0
  180. data/test/command/login_command_test.rb +83 -0
  181. data/test/command/logout_command_test.rb +30 -0
  182. data/test/command/pull_command_test.rb +229 -0
  183. data/test/command/push_command_test.rb +246 -0
  184. data/test/command/refresh_solution_command_test.rb +35 -0
  185. data/test/command/renew_command_test.rb +43 -0
  186. data/test/command/request_passwordchange_command_test.rb +31 -0
  187. data/test/command/show_group_command_test.rb +50 -0
  188. data/test/command/show_libraryset_command_test.rb +51 -0
  189. data/test/command/show_project_command_test.rb +57 -0
  190. data/test/command/show_projecttype_command_test.rb +46 -0
  191. data/test/command/show_role_command_test.rb +37 -0
  192. data/test/command/show_solution_command_test.rb +59 -0
  193. data/test/command/show_user_command_test.rb +50 -0
  194. data/test/command/submit_deployment_command_test.rb +37 -0
  195. data/test/command/target_command_test.rb +58 -0
  196. data/test/command/unarchive_project_command_test.rb +45 -0
  197. data/test/command/unarchive_solution_command_test.rb +43 -0
  198. data/test/command/unbind_service_command_test.rb +48 -0
  199. data/test/command/undefine_service_command_test.rb +49 -0
  200. data/test/command/update_config_command_test.rb +74 -0
  201. data/test/command/update_deploymentproject_command_test.rb +77 -0
  202. data/test/command/update_group_command_test.rb +69 -0
  203. data/test/command/update_librarylanguage_command_test.rb +43 -0
  204. data/test/command/update_libraryset_command_test.rb +113 -0
  205. data/test/command/update_project_command_test.rb +56 -0
  206. data/test/command/update_role_command_test.rb +42 -0
  207. data/test/command/update_rolepermissions_command_test.rb +54 -0
  208. data/test/command/update_solution_command_test.rb +58 -0
  209. data/test/command/update_user_command_test.rb +76 -0
  210. data/test/command/vote_deployment_command_test.rb +33 -0
  211. data/test/config_test.rb +70 -0
  212. data/test/successful_test.rb +21 -0
  213. data/test/test_files/pom.xml +273 -0
  214. data/test/test_helper.rb +25 -0
  215. metadata +470 -0
@@ -0,0 +1,35 @@
1
+ module EPC::Command
2
+ class BindServiceCommand < BaseCommand
3
+
4
+ def execute(service = nil)
5
+ path = File.expand_path(".")
6
+
7
+ raise FatalError, "You must specify the service to be bound" if service.blank?
8
+
9
+ solution_name = @options[:solution_name]
10
+ project_name = @options[:project_name]
11
+
12
+ solution_id, solution_name = infer_solution_context(solution_name, path)
13
+ project_id, project_name = infer_project_context(project_name, path, solution_id)
14
+
15
+ if numeric?(service)
16
+ service_version_id = service.to_i
17
+ else
18
+ service_version_id = get_resource_id(EPC::Config::SERVICE_VERSIONS_PATH, :label, service)
19
+ end
20
+
21
+ raise FatalError, "Project or service incorrectly specified" if service.nil? || service == 0 || project_id.nil?
22
+
23
+ status, response, headers = client.post(EPC::Config::PROJECTS_PATH + "/#{project_id}/add_service_version", {:version_id => service_version_id})
24
+
25
+ if status.successful?
26
+ say("Service bound.")
27
+ else
28
+ say("Request failed: [#{response[:message]}]")
29
+ end
30
+
31
+ return status
32
+ end
33
+
34
+ end
35
+ end
@@ -0,0 +1,83 @@
1
+
2
+ module EPC::Command
3
+ class BuildCommand < BaseCommand
4
+
5
+
6
+ def execute(*args)
7
+ path = "."
8
+ path = File.expand_path(path)
9
+
10
+ projects_data = {}
11
+
12
+ if @options[:no_poll].present? && @options[:timeout].present?
13
+ raise InputError, "You cannot specify both --nopoll and --timeout options at the same time"
14
+ end
15
+
16
+ @timeout = GIVEUP_TICKS
17
+
18
+ solution_id, solution_name = infer_solution_context(nil, path)
19
+
20
+ if EPC::Config.is_solution_dir?(path)
21
+ if args.empty?
22
+ proceed = ask_yn("You are building the [#{solution_name}] solution. Correct: [Yn]? ")
23
+ Dir.glob(path +"/*/").select{|dir| EPC::Config.is_project_dir?(dir)}.map{|pth| projects_data[EPC::Config.get_project_value(pth, "id")] = nil}
24
+ else
25
+ names = []
26
+ args.map{|e| e.split("=")}.each do |project_name, version|
27
+ if numeric?(project_name)
28
+ project_id = project_name.to_i
29
+ else
30
+ project_id, p_name = infer_project_context(project_name, path, solution_id)
31
+ end
32
+ raise FatalError, "Project not found.Please run this command with the correct project name." if project_id.nil? || project_id == 0
33
+
34
+ names << project_name
35
+ projects_data[project_id] = version
36
+ end
37
+
38
+ proceed = ask_yn("You are building the [#{names.join(",")}] projects belonging to the [#{solution_name}] solution. Correct: [Yn]? ")
39
+ end
40
+
41
+ elsif EPC::Config.is_project_dir?(path)
42
+ project_id, project_name = infer_project_context(project_name, path, false)
43
+ raise FatalError, "Project could not be inferred" if project_id.nil?
44
+
45
+ proceed = ask_yn("You are building the [#{project_name}] project belonging to the [#{solution_name}] solution. Correct: [Yn]? ")
46
+ projects_data[project_id] = (args.first rescue nil)
47
+ end
48
+
49
+ return 1 if (proceed.upcase == "N" rescue true )
50
+
51
+
52
+ parse_timeout_value
53
+
54
+ if projects_data.keys
55
+ created, id = create_build(projects_data, @options[:note])
56
+ if created && @options[:no_poll].nil?
57
+ say("Building - ")
58
+ return poll_for_build_status(id)
59
+ end
60
+ else
61
+ say("Failed to find the project ID in the EPC configuration. Aborting")
62
+ end
63
+ return 1
64
+ end
65
+
66
+ private
67
+
68
+ def create_build(project_data, note = nil)
69
+ versions = (project_data.reject{|k,v| v.nil? || v.empty?}.map{|k,v| {:project_id => k, :version => v}} rescue [])
70
+ status, response, headers = client.post("#{EPC::Config::BUILDS_PATH}", { :project_ids => project_data.keys, :project_versions => versions, :note => note})
71
+ if status == 202
72
+ say("Build already in progress. Retrieving build status")
73
+ return true, response[:id]
74
+ elsif status.successful?
75
+ say("Successfully kicked off a build with [#{target_url}]")
76
+ return true, response[:id]
77
+ else
78
+ say("Build kickoff failed [#{response[:message]}]. Aborting.")
79
+ return false
80
+ end
81
+ end
82
+ end
83
+ end
@@ -0,0 +1,55 @@
1
+ module EPC::Command
2
+ class CreateConfigCommand < BaseCommand
3
+ CONFIG_LEVELS = {
4
+ :org => "Organization",
5
+ :runtime => "RuntimeEnvironment",
6
+ :stage => "DeploymentStage",
7
+ :solution => "Solution",
8
+ :project => "Project",
9
+ :user => "User"
10
+ }
11
+
12
+ def execute(target, *args)
13
+ raise FatalError, "You have to specify a key and its value." if args.empty? && @options[:file].nil?
14
+
15
+ path = File.expand_path(".")
16
+
17
+ @options[:value_type] = "text" if @options[:value_type].nil?
18
+ @options[:required] = false if @options[:required].nil?
19
+
20
+ config_type, config_id = extract_configuration_level(path, target)
21
+
22
+ raise FatalError, "You need to specify a config type" if config_type.blank?
23
+
24
+ params = []
25
+ if @options[:file].present?
26
+ params = EPC::Config.read_content_as_json(@options[:file])
27
+ params.each do |param|
28
+ if param[:configurable_type].nil? || param[:configurable_id].nil?
29
+ param[:configurable_type] = config_type
30
+ param[:configurable_id] = config_id
31
+ end
32
+ end
33
+ else
34
+ args.each do |arg|
35
+ name, value = arg.split("=")
36
+ params << {:name => name, :value => value, :value_type => @options[:value_type], :configurable_id => config_id, :configurable_type => config_type, :required => options[:required], :no_override => @options[:no_override]}
37
+ if ["solution", "project"].include?(config_type.downcase) && @options[:stage].present?
38
+ params.last[:stage_name] = @options[:stage]
39
+ end
40
+ end
41
+ end
42
+
43
+ raise FatalError, "You must specify at least one config value" if params.nil? || params.empty?
44
+
45
+ status, response, headers = client.post(EPC::Config::CONFIGURATIONS_PATH, {:config_values => params})
46
+
47
+ if status.successful?
48
+ say("Configuration values saved.")
49
+ else
50
+ say("Request failed with message [#{response[:message]}]")
51
+ end
52
+ return status
53
+ end
54
+ end
55
+ end
@@ -0,0 +1,21 @@
1
+ module EPC::Command
2
+ class CopyDeploymentCommand < BaseCommand
3
+
4
+ def execute(deployment_id = nil, stage = nil)
5
+ path = File.expand_path(".")
6
+
7
+ raise FatalError, "You must specify a deployment id and the stage name" if deployment_id.nil? || stage.nil?
8
+
9
+ status, response, headers = client.post(EPC::Config::DEPLOYMENTS_PATH + "/#{deployment_id}/copy", {:stage_name => stage})
10
+
11
+ if status.failure?
12
+ say("Request failed: [#{response[:message]}]")
13
+ else
14
+ say("Copied new deployment to the #{stage} stage. ID: #{response[:id]}")
15
+ end
16
+
17
+ return status
18
+ end
19
+
20
+ end
21
+ end
@@ -0,0 +1,13 @@
1
+ module EPC::Command
2
+ class CreateCommand < BaseCommand
3
+ required_arguments_count 1, :message => "You have to specify an object for the create command"
4
+
5
+ def execute(object_type = nil, *params)
6
+ klass = "EPC::Command::Create#{object_type.to_s.gsub("-","").capitalize}Command"
7
+ params = normalize_params(params)
8
+ command = eval(klass).new(client, @options)
9
+ command.go(*params)
10
+ end
11
+
12
+ end
13
+ end
@@ -0,0 +1,43 @@
1
+ module EPC::Command
2
+ class CreateDependencyCommand < BaseCommand
3
+
4
+ def execute(parent = nil)
5
+ path = File.expand_path(".")
6
+
7
+ solution_name = @options[:solution_name]
8
+ project_name = parent
9
+
10
+ solution_id, solution_name = infer_solution_context(solution_name, path)
11
+ project_id, project_name = infer_project_context(project_name, path, solution_id)
12
+
13
+ if project_id.nil? || project_id == 0 || solution_id.nil? || solution_id == 0
14
+ say("Project/solution could not be inferred")
15
+ say(EPC::Help::COMMAND_USAGES[:create_dependency])
16
+ return 1
17
+ end
18
+
19
+ if numeric?(@options[:dependency])
20
+ dependency_id = @options[:dependency].to_i
21
+ else
22
+ dependency_id = get_resource_id(EPC::Config::SOLUTIONS_PATH + "/#{solution_id}/projects", "name", @options[:dependency] )
23
+ end
24
+
25
+ if dependency_id.nil? || dependency_id == 0
26
+ say("Dependency could not be inferred")
27
+ say(EPC::Help::COMMAND_USAGES[:create_dependency])
28
+ return 1
29
+ end
30
+
31
+ dependency_type = @options[:dependency_type] || 1
32
+
33
+ status, response, headers = client.post(EPC::Config::PROJECTS_PATH + "/#{project_id}/add_dependency",
34
+ {:dependency_id => dependency_id, :dependency_kind => dependency_type})
35
+ if status.successful?
36
+ say("Dependency defined")
37
+ else
38
+ say("Request failed: [#{response[:message]}]")
39
+ end
40
+ return status
41
+ end
42
+ end
43
+ end
@@ -0,0 +1,37 @@
1
+ module EPC::Command
2
+ class DefineServiceCommand < BaseCommand
3
+
4
+ def execute(service_name = nil)
5
+ if service_name.nil?
6
+ say("You must specify a name for the service")
7
+ say(EPC::Help::COMMAND_USAGES[:define_service])
8
+ return 1
9
+ end
10
+
11
+ if @options[:service_type].nil?
12
+ say("You must specify a service type with -t option.")
13
+ return 1
14
+ end
15
+
16
+ if numeric?(@options[:service_type])
17
+ service_type_id = @options[:service_type].to_i
18
+ else
19
+ service_type_id = get_resource_id(EPC::Config::SERVICE_TYPES_PATH, :name, @options[:service_type])
20
+ end
21
+
22
+ if service_type_id.nil? || service_type_id == 0
23
+ say("#{@options[:service_type]} service type could not be found.")
24
+ return 1
25
+ end
26
+
27
+ status, response, headers = client.post(EPC::Config::SERVICE_DEFINITIONS_PATH, {:name => service_name, :type_id => service_type_id})
28
+ if status.failure?
29
+ say("Service definition failed with: [#{response['message']}]")
30
+ else
31
+ say("#{service_name} has been defined.")
32
+ end
33
+ return status
34
+ end
35
+ end
36
+
37
+ end
@@ -0,0 +1,63 @@
1
+ module EPC::Command
2
+ class DeleteConfigCommand < BaseCommand
3
+
4
+ def execute(*args)
5
+ if args.empty?
6
+ say("You must specify the key you wish to delete.")
7
+ return 1
8
+ end
9
+
10
+ path = "."
11
+ path = File.expand_path(path)
12
+
13
+ config_type, config_id = extract_configuration_level(path, @options)
14
+ request_path = EPC::Config::CONFIGURATIONS_PATH+"/#{config_type}/#{config_id}"
15
+
16
+ if ["solution", "project"].include?(config_type.downcase) && !@options[:stage_name].nil?
17
+ request_path += "/#{@options[:stage_name]}"
18
+ end
19
+
20
+ status, response, headers = client.get(request_path)
21
+
22
+ raise FatalError, "Configuration retrieval failed with [#{response[:message]}]" if status.failure?
23
+
24
+ existing_keys = response
25
+
26
+ if existing_keys.empty?
27
+ say("There are no configurations defined for this project.")
28
+ return 1
29
+ end
30
+
31
+ args.each do |key|
32
+ key_id = existing_keys.detect{|k| k[:name] == key }[:id] rescue nil
33
+ if key_id.nil?
34
+ say("#{key} is not defined.")
35
+ return 1
36
+ end
37
+
38
+ question = "Are you sure you want to delete the config value [#{key}] defined on [#{config_type}-#{config_id}"
39
+ if ["solution", "project"].include?(config_type.downcase) && !@options[:stage].nil?
40
+ question += "-#{@options[:stage]}"
41
+ end
42
+
43
+ question += "]. Correct? [Yn] "
44
+
45
+ proceed = ask_yn(question)
46
+ if proceed.upcase == 'N'
47
+ next
48
+ end
49
+
50
+ status, response, headers = client.delete(EPC::Config::CONFIGURATIONS_PATH + "/#{key_id}")
51
+ if status.failure?
52
+ say("Request failed: [#{response[:message]}]")
53
+ else
54
+ say("#{key} succesfully removed.")
55
+ end
56
+ return status
57
+ end
58
+
59
+
60
+ end
61
+
62
+ end
63
+ end
@@ -0,0 +1,40 @@
1
+ module EPC::Command
2
+ class DeleteDependencyCommand < BaseCommand
3
+
4
+ def execute(dependency_id = nil)
5
+ path = File.expand_path(".")
6
+
7
+ solution_name = @options[:solution_name]
8
+ project_name = @options[:project_name]
9
+
10
+ solution_id, solution_name = infer_solution_context(solution_name, path)
11
+ project_id, project_name = infer_project_context(project_name, path, solution_id)
12
+
13
+ if dependency_id.blank?
14
+ say("You must specify a dependency_id")
15
+ say(EPC::Help::COMMAND_USAGES[:delete_dependency])
16
+ return 1
17
+ end
18
+
19
+ if project_id.blank? || project_id == 0
20
+ say("Project could not be inferred")
21
+ say(EPC::Help::COMMAND_USAGES[:delete_dependency])
22
+ return 1
23
+ end
24
+
25
+ proceed = ask_yn("Are you sure you want to delete the dependency with id = [#{dependency_id}]. Correct? [Yn] ")
26
+ if proceed.upcase == 'N'
27
+ return 1
28
+ end
29
+
30
+ status, response, headers = client.delete(EPC::Config::PROJECTS_PATH + "/#{project_id}/remove_dependency/#{dependency_id}")
31
+ if status.successful?
32
+ say("Dependency deleted")
33
+ else
34
+ say("Request failed: [#{response[:message]}]")
35
+ end
36
+ return status
37
+ end
38
+
39
+ end
40
+ end
@@ -0,0 +1,40 @@
1
+ module EPC::Command
2
+ class DeleteGroupCommand < BaseCommand
3
+
4
+ def execute(group = nil)
5
+ if group.nil?
6
+ say("You need to specify a group id/name")
7
+ say(EPC::Help::COMMAND_USAGES[:delete_group])
8
+ return 1
9
+ end
10
+
11
+ proceed = ask_yn("Are you sure you want to delete the [#{group}] group? [Yn] ")
12
+ if proceed.upcase == "N"
13
+ return 1
14
+ end
15
+
16
+
17
+ if numeric?(group)
18
+ group_id = group.to_i
19
+ else
20
+ group_id = get_resource_id(EPC::Config::GROUPS_PATH, :name, group)
21
+ end
22
+
23
+ if group_id.nil?
24
+ say("Group could not be determined")
25
+ return 1
26
+ end
27
+
28
+ status, response, headers = client.delete(EPC::Config::GROUPS_PATH + "/#{group_id}")
29
+
30
+ if status.successful?
31
+ say("Group deleted")
32
+ else
33
+ say("Request failed: [#{response[:message]}]")
34
+ end
35
+
36
+ return status
37
+ end
38
+
39
+ end
40
+ end
@@ -0,0 +1,30 @@
1
+ module EPC::Command
2
+ class DeleteLibraryCommand < BaseCommand
3
+
4
+ def execute(library_name = nil, version = nil, group = nil)
5
+ raise FatalError, "You must specify a library name" if library_name.nil?
6
+
7
+ proceed = ask_yn("Are you sure you want to delete the [#{library_name}] library? [Yn] ")
8
+ if proceed.upcase == 'N'
9
+ return 1
10
+ end
11
+
12
+ if numeric?(library_name)
13
+ library_id = library_name.to_i
14
+ else
15
+ library_id = retrieve_libraries([{:name => library_name, :library_version => version, :group => group}]).first rescue nil
16
+ end
17
+
18
+ raise FatalError, "Library could not be determined" if library_id.nil? || library_id == 0
19
+
20
+ status, response, headers = client.delete(EPC::Config::LIBRARIES_PATH + "/#{library_id}")
21
+ if status.successful?
22
+ say("Library deleted")
23
+ else
24
+ say("Request failed: [#{response[:message]}]")
25
+ end
26
+ return status
27
+ end
28
+
29
+ end
30
+ end