epc 1.0.2

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 (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 @@
1
+ v0.1.0. adding this to satisfy echoe
data/Gemfile ADDED
@@ -0,0 +1,22 @@
1
+ source "http://rubygems.org"
2
+
3
+ gemspec
4
+
5
+ # Only needed when in dev mode
6
+
7
+ group :development, :test do
8
+ gem "rake"
9
+ end
10
+
11
+ group :development, :test do
12
+ gem "echoe", "~> 4.6.3"
13
+ end
14
+
15
+ group :test do
16
+ gem "ci_reporter"
17
+ gem "test-unit", "~> 2.4.0"
18
+ gem "mocha", "~> 0.10.0"
19
+ gem "shoulda", "~> 2.11.3"
20
+ gem "cover_me", '>= 1.2.0'
21
+ end
22
+
@@ -0,0 +1,67 @@
1
+ require 'rake/testtask'
2
+ require 'test/unit'
3
+ require 'ci/reporter/rake/test_unit'
4
+ require 'echoe'
5
+ Echoe.new('epc')
6
+
7
+ Rake::TaskManager.class_eval do
8
+ def remove_task(task_name)
9
+ @tasks.delete(task_name.to_s)
10
+ end
11
+ end
12
+
13
+ namespace :cover_me do
14
+ desc "Generates and opens code coverage report."
15
+ task :report do
16
+ require 'cover_me'
17
+ CoverMe.complete!
18
+ end
19
+ end
20
+
21
+ # Remove the original test task as we need to control the tests to be run
22
+ Rake.application.remove_task 'test'
23
+
24
+ # The synthetic tests
25
+ Rake::TestTask.new do |t|
26
+ t.name = :test
27
+ t.libs << "lib" << "test"
28
+ t.test_files = FileList['test/command/*test.rb', 'test/*.rb']
29
+ t.verbose = true
30
+ end
31
+
32
+ # The real integration tests
33
+ Rake::TestTask.new do |t|
34
+ t.name = :integration
35
+ t.libs << "lib" << "test"
36
+ t.test_files = FileList['test/integration/*test.rb']
37
+ t.verbose = true
38
+ end
39
+
40
+ # Tasks for testing with Jenkins
41
+ namespace :jenkins do
42
+
43
+ desc "Prepare the system for the automated (synthetic) test"
44
+ task :prepare_for_ci do
45
+ # Put here anything needed to prepare a system for JEnkins
46
+ end
47
+
48
+ desc "Prepare the system for the automated integration test"
49
+ task :prepare_for_integ_test do
50
+ # Put here anything needed to prepare a system for JEnkins
51
+ end
52
+
53
+ task :cover_report do
54
+ require 'cover_me'
55
+ CoverMe.config.formatter = CoverMe::EmmaFormatter
56
+ CoverMe.config.at_exit = Proc.new {}
57
+ CoverMe.complete!
58
+ end
59
+
60
+ desc 'Run the synthetic tests in Jenkins compatible mode'
61
+ task :synthetic => ['jenkins:prepare_for_ci', 'ci:setup:testunit', '^test', 'jenkins:cover_report']
62
+
63
+ desc 'Run the integration tests in Jenkins compatible mode'
64
+ task :integration => ['jenkins:prepare_for_integ_test', 'ci:setup:testunit', '^integration']
65
+
66
+ end
67
+
@@ -0,0 +1 @@
1
+ require "bundler/gem_tasks"
data/bin/epc ADDED
@@ -0,0 +1,10 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require 'pathname'
4
+
5
+ $: << File.dirname(Pathname.new(__FILE__).realpath) + '/..'
6
+ require 'lib/epc'
7
+ require 'lib/object'
8
+ require 'lib/fixnum'
9
+
10
+ EPC::Runner.run(ARGV.dup)
@@ -0,0 +1,126 @@
1
+ require 'rubygems'
2
+ require 'highline/import'
3
+
4
+ ROOT = File.expand_path(File.dirname(__FILE__))
5
+
6
+ module EPC
7
+ autoload(:Config, "#{ROOT}/epc/config")
8
+ autoload(:Help, "#{ROOT}/epc/help")
9
+ autoload(:PersistentAttributes, "#{ROOT}/epc/persistent_attributes")
10
+ autoload(:Runner, "#{ROOT}/epc/runner")
11
+ autoload(:TabularOutputter, "#{ROOT}/epc/tabular_outputter")
12
+
13
+ module Error
14
+ autoload(:BasicError, "#{ROOT}/epc/error/basic_error")
15
+ autoload(:FatalError, "#{ROOT}/epc/error/fatal_error")
16
+ autoload(:InternalError, "#{ROOT}/epc/error/internal_error")
17
+ autoload(:InputError, "#{ROOT}/epc/error/input_error")
18
+ end
19
+
20
+ module Client
21
+ autoload(:BaseClient, "#{ROOT}/epc/client/base_client")
22
+ autoload(:HttpClient, "#{ROOT}/epc/client/http_client")
23
+ autoload(:JsonClient, "#{ROOT}/epc/client/json_client")
24
+ end
25
+
26
+ module Command
27
+ autoload(:BaseCommand, "#{ROOT}/epc/command/base_command")
28
+ autoload(:BuildCommand, "#{ROOT}/epc/command/build_command")
29
+ autoload(:ListConfigCommand, "#{ROOT}/epc/command/list_config_command")
30
+ autoload(:CreateConfigCommand, "#{ROOT}/epc/command/config/create_config_command")
31
+ autoload(:UpdateConfigCommand, "#{ROOT}/epc/command/update_config_command")
32
+ autoload(:DeleteConfigCommand, "#{ROOT}/epc/command/delete_config_command")
33
+ autoload(:ListRuntimesCommand, "#{ROOT}/epc/command/list_runtimes_command")
34
+ autoload(:ListProjectsCommand, "#{ROOT}/epc/command/list_projects_command")
35
+ autoload(:CreateProjectCommand, "#{ROOT}/epc/command/project/create_project_command")
36
+ autoload(:ShowProjectCommand, "#{ROOT}/epc/command/show_project_command")
37
+ autoload(:UpdateProjectCommand, "#{ROOT}/epc/command/update_project_command")
38
+ autoload(:DeleteProjectCommand, "#{ROOT}/epc/command/delete_project_command")
39
+ autoload(:AttachRuntimeCommand, "#{ROOT}/epc/command/attach_runtime_command")
40
+ autoload(:CreateSolutionCommand, "#{ROOT}/epc/command/solution/create_solution_command")
41
+ autoload(:ListSolutionsCommand, "#{ROOT}/epc/command/list_solutions_command")
42
+ autoload(:ShowSolutionCommand, "#{ROOT}/epc/command/show_solution_command")
43
+ autoload(:RefreshSolutionCommand, "#{ROOT}/epc/command/refresh_solution_command")
44
+ autoload(:DeleteSolutionCommand, "#{ROOT}/epc/command/delete_solution_command")
45
+ autoload(:UpdateSolutionCommand, "#{ROOT}/epc/command/update_solution_command")
46
+ autoload(:ArchiveSolutionCommand, "#{ROOT}/epc/command/archive_solution_command")
47
+ autoload(:UnarchiveSolutionCommand, "#{ROOT}/epc/command/unarchive_solution_command")
48
+ autoload(:ListServicetypesCommand, "#{ROOT}/epc/command/list_service_types_command")
49
+ autoload(:DefineServiceCommand, "#{ROOT}/epc/command/define_service_command")
50
+ autoload(:UndefineServiceCommand, "#{ROOT}/epc/command/undefine_service_command")
51
+ autoload(:ListServicedefinitionsCommand, "#{ROOT}/epc/command/list_servicedefinitions_command")
52
+ autoload(:CreateServiceversionCommand, "#{ROOT}/epc/command/serviceversion/create_serviceversion_command")
53
+ autoload(:ListServiceversionsCommand, "#{ROOT}/epc/command/list_serviceversions_command")
54
+ autoload(:DeleteServiceversionCommand, "#{ROOT}/epc/command/delete_serviceversion_command")
55
+ autoload(:BindServiceCommand, "#{ROOT}/epc/command/bind_service_command")
56
+ autoload(:UnbindServiceCommand, "#{ROOT}/epc/command/unbind_service_command")
57
+ autoload(:ListBoundservicesCommand, "#{ROOT}/epc/command/list_boundservices_command")
58
+ autoload(:CreateUserCommand, "#{ROOT}/epc/command/user/create_user_command")
59
+ autoload(:CreateDeploymentCommand, "#{ROOT}/epc/command/deployment/create_deployment_command")
60
+ autoload(:ShowDeploymentCommand, "#{ROOT}/epc/command/show_deployment_command")
61
+ autoload(:SubmitDeploymentCommand, "#{ROOT}/epc/command/submit_deployment_command")
62
+ autoload(:VoteDeploymentCommand, "#{ROOT}/epc/command/vote_deployment_command")
63
+ autoload(:ListDeploymentsCommand, "#{ROOT}/epc/command/list_deployments_command")
64
+ autoload(:ListStagesCommand, "#{ROOT}/epc/command/list_stages_command")
65
+ autoload(:DeployCommand, "#{ROOT}/epc/command/deploy_command")
66
+ autoload(:UndeployCommand, "#{ROOT}/epc/command/undeploy_command")
67
+ autoload(:CopyDeploymentCommand, "#{ROOT}/epc/command/copy_deployment_command")
68
+ autoload(:ListApprovalsCommand, "#{ROOT}/epc/command/list_approvals_command")
69
+ autoload(:CreateDependencyCommand, "#{ROOT}/epc/command/create_dependency_command")
70
+ autoload(:ListDependenciesCommand, "#{ROOT}/epc/command/list_dependencies_command")
71
+ autoload(:DeleteDependencyCommand, "#{ROOT}/epc/command/delete_dependency_command")
72
+ autoload(:CreateLibraryCommand, "#{ROOT}/epc/command/library/create_library_command")
73
+ autoload(:ListLibrariesCommand, "#{ROOT}/epc/command/list_libraries_command")
74
+ autoload(:DeleteLibraryCommand, "#{ROOT}/epc/command/delete_library_command")
75
+ autoload(:AttachLibraryCommand, "#{ROOT}/epc/command/attach_library_command")
76
+ autoload(:DetachLibraryCommand, "#{ROOT}/epc/command/detach_library_command")
77
+ autoload(:LoginCommand, "#{ROOT}/epc/command/login_command")
78
+ autoload(:LogoutCommand, "#{ROOT}/epc/command/logout_command")
79
+ autoload(:PullCommand, "#{ROOT}/epc/command/pull_command")
80
+ autoload(:PushCommand, "#{ROOT}/epc/command/push_command")
81
+ autoload(:RenewCommand, "#{ROOT}/epc/command/renew_command")
82
+ autoload(:TargetCommand, "#{ROOT}/epc/command/target_command")
83
+ autoload(:ListProjecttypesCommand, "#{ROOT}/epc/command/list_projecttypes_command")
84
+ autoload(:ShowProjecttypeCommand, "#{ROOT}/epc/command/show_projecttype_command")
85
+ autoload(:UpdateDeploymentprojectCommand, "#{ROOT}/epc/command/update_deploymentproject_command")
86
+ autoload(:InfoCommand, "#{ROOT}/epc/command/info_command")
87
+ autoload(:ListVersionsCommand, "#{ROOT}/epc/command/list_versions_command")
88
+ autoload(:ArchiveProjectCommand, "#{ROOT}/epc/command/archive_project_command")
89
+ autoload(:UnarchiveProjectCommand, "#{ROOT}/epc/command/unarchive_project_command")
90
+ autoload(:ListAttachedlibrariesCommand, "#{ROOT}/epc/command/list_attachedlibraries_command")
91
+ autoload(:CreateGroupCommand, "#{ROOT}/epc/command/group/create_group_command")
92
+ autoload(:DeleteGroupCommand, "#{ROOT}/epc/command/delete_group_command")
93
+ autoload(:ListGroupsCommand, "#{ROOT}/epc/command/list_groups_command")
94
+ autoload(:UpdateGroupCommand, "#{ROOT}/epc/command/update_group_command")
95
+ autoload(:ShowGroupCommand, "#{ROOT}/epc/command/show_group_command")
96
+ autoload(:ListRolesCommand, "#{ROOT}/epc/command/list_roles_command")
97
+ autoload(:DeleteRoleCommand, "#{ROOT}/epc/command/delete_role_command")
98
+ autoload(:UpdateRoleCommand, "#{ROOT}/epc/command/update_role_command")
99
+ autoload(:ShowRoleCommand, "#{ROOT}/epc/command/show_role_command")
100
+ autoload(:ListRolepermissionsCommand, "#{ROOT}/epc/command/list_rolepermissions_command")
101
+ autoload(:ListUsersCommand, "#{ROOT}/epc/command/list_users_command")
102
+ autoload(:DeleteUserCommand, "#{ROOT}/epc/command/delete_user_command")
103
+ autoload(:UpdateUserCommand, "#{ROOT}/epc/command/update_user_command")
104
+ autoload(:ShowUserCommand, "#{ROOT}/epc/command/show_user_command")
105
+ autoload(:CreateLibrarylanguageCommand, "#{ROOT}/epc/command/librarylanguage/create_librarylanguage_command")
106
+ autoload(:ListLibrarylanguagesCommand, "#{ROOT}/epc/command/list_librarylanguages_command")
107
+ autoload(:DeleteLibrarylanguageCommand, "#{ROOT}/epc/command/delete_librarylanguage_command")
108
+ autoload(:UpdateLibrarylanguageCommand, "#{ROOT}/epc/command/update_librarylanguage_command")
109
+ autoload(:CreateLibrarysetCommand, "#{ROOT}/epc/command/libraryset/create_libraryset_command")
110
+ autoload(:ShowLibrarysetCommand, "#{ROOT}/epc/command/show_libraryset_command")
111
+ autoload(:ListLibrarysetsCommand, "#{ROOT}/epc/command/list_librarysets_command")
112
+ autoload(:UpdateLibrarysetCommand, "#{ROOT}/epc/command/update_libraryset_command")
113
+ autoload(:DeleteLibrarysetCommand, "#{ROOT}/epc/command/delete_libraryset_command")
114
+ autoload(:AttachLibrarysetCommand, "#{ROOT}/epc/command/attach_libraryset_command")
115
+ autoload(:DetachLibrarysetCommand, "#{ROOT}/epc/command/detach_libraryset_command")
116
+ autoload(:RequestPasswordchangeCommand, "#{ROOT}/epc/command/request_passwordchange_command")
117
+ autoload(:ListObjectrolesCommand, "#{ROOT}/epc/command/list_objectroles_command")
118
+ autoload(:CreateRoleCommand, "#{ROOT}/epc/command/role/create_role_command")
119
+ autoload(:CreateObjectroleCommand, "#{ROOT}/epc/command/objectrole/create_objectrole_command")
120
+ autoload(:UpdateRolepermissionsCommand, "#{ROOT}/epc/command/update_rolepermissions_command")
121
+ autoload(:ListPermissiongroupsCommand, "#{ROOT}/epc/command/list_permissiongroups_command")
122
+ autoload(:ListObjecttypesCommand, "#{ROOT}/epc/command/list_objecttypes_command")
123
+ autoload(:CreateCommand, "#{ROOT}/epc/command/create_command")
124
+
125
+ end
126
+ end
@@ -0,0 +1,80 @@
1
+ require 'rubygems'
2
+ require 'base64'
3
+ require 'rest_client'
4
+
5
+ module EPC
6
+ module Client
7
+ class BaseClient
8
+ # Errors
9
+ class BadResponse < RuntimeError; end
10
+ class HTTPException < RuntimeError; end
11
+
12
+ def initialize(target_url=EPC::Config::DEFAULT_TARGET, caller_id = nil, auth_token = nil)
13
+ target_url = "http://#{target_url}" unless target_url =~ /^https?/
14
+ target_url = target_url.gsub(/\/+$/, '')
15
+ @target = target_url
16
+
17
+ @caller_id = caller_id || EPC::Config.caller_id
18
+ @auth_token = auth_token || EPC::Config.auth_token
19
+ @digest = OpenSSL::Digest::Digest.new('sha256')
20
+ end
21
+
22
+ # returns an array of status, body, response_headers
23
+ def request(method, path, content_type = nil, payload = nil, headers = {}, skip_signature = false)
24
+ salt = generate_salt
25
+ now = Time.now
26
+
27
+ headers = headers.dup
28
+ unless skip_signature
29
+ headers['X-AGILEMETHODS-SALT'] = salt
30
+ headers['X-AGILEMETHODS-TIMESTAMP'] = now.to_f
31
+ headers['X-AGILEMETHODS-CALLER-ID'] = @caller_id if @caller_id
32
+ headers['X-AGILEMETHODS-SIGNATURE'] = generate_signature(salt, now.to_f, path, payload)
33
+ end
34
+
35
+ if content_type
36
+ headers['Content-Type'] = content_type
37
+ headers['Accept'] = content_type
38
+ end
39
+
40
+ if path =~ /^https?/
41
+ url = path
42
+ else
43
+ url = "#{@target}#{path}"
44
+ end
45
+
46
+ req = {
47
+ :method => method,
48
+ :url => url,
49
+ :payload => payload,
50
+ :headers => headers
51
+ }
52
+
53
+ begin
54
+ result = nil
55
+ RestClient::Request.execute(req) { |response, request|
56
+ result = [response.code, response.body, response.headers]
57
+ }
58
+ result
59
+ rescue Net::HTTPBadResponse => e
60
+ raise BadTarget "Received bad HTTP response from target: #{e}"
61
+ rescue SystemCallError, RestClient::Exception => e
62
+ raise HTTPException, "HTTP exception: #{e}"
63
+ end
64
+ end
65
+
66
+ private
67
+
68
+ # request helpers
69
+ def generate_salt(size = 6)
70
+ @charset ||= ('a'..'z').to_a + ('A'..'Z').to_a + ('0'..'9').to_a
71
+ (0...size).map { @charset[rand(@charset.size)] }.join
72
+ end
73
+
74
+ def generate_signature(salt, timestamp, url, payload)
75
+ data = "#{salt}#{@caller_id}#{timestamp}#{payload}#{url}"
76
+ Base64.encode64(OpenSSL::HMAC.digest(@digest, @auth_token, data)).chomp
77
+ end
78
+ end
79
+ end
80
+ end
@@ -0,0 +1,19 @@
1
+ module EPC::Client
2
+ class HttpClient < BaseClient
3
+ def get(path, content_type = nil, skip_signature = false)
4
+ request(:get, path, content_type, nil, {}, skip_signature)
5
+ end
6
+
7
+ def post(path, body, content_type = nil, headers = {}, skip_signature = false)
8
+ request(:post, path, content_type, body, headers, skip_signature)
9
+ end
10
+
11
+ def put(path, body, content_type = nil)
12
+ request(:put, path, content_type, body)
13
+ end
14
+
15
+ def delete(path, body, content_type = nil)
16
+ request(:delete, path, content_type, body)
17
+ end
18
+ end
19
+ end
@@ -0,0 +1,48 @@
1
+ require 'rubygems'
2
+ require 'json'
3
+
4
+ module EPC::Client
5
+ class JsonClient < HttpClient
6
+ def get(url, skip_signature = false)
7
+ begin
8
+ status, body, headers = super(url, 'application/json', skip_signature)
9
+ [status, json_parse(body), headers]
10
+ rescue JSON::ParserError
11
+ raise BadResponse, "Can't parse response into JSON", body
12
+ end
13
+ end
14
+
15
+ def post(url, payload = {}, skip_signature = false)
16
+ begin
17
+ status, body, headers = super(url, payload.to_json, 'application/json', {}, skip_signature)
18
+ [status, json_parse(body), headers]
19
+ rescue JSON::ParserError
20
+ raise BadResponse, "Can't parse response into JSON", body
21
+ end
22
+ end
23
+
24
+ def put(url, payload = {})
25
+ begin
26
+ status, body, headers = super(url, payload.to_json, 'application/json')
27
+ [status, json_parse(body), headers]
28
+ rescue JSON::ParserError
29
+ raise BadResponse, "Can't parse response into JSON", body
30
+ end
31
+ end
32
+
33
+ def delete(url, payload = {})
34
+ begin
35
+ status, body, headers = super(url, payload.to_json, 'application/json')
36
+ [status, json_parse(body), headers]
37
+ rescue JSON::ParserError
38
+ raise BadResponse, "Can't parse response into JSON", body
39
+ end
40
+ end
41
+
42
+ private
43
+
44
+ def json_parse(body)
45
+ JSON.parse(body, :symbolize_names => true) if body
46
+ end
47
+ end
48
+ end
@@ -0,0 +1,24 @@
1
+ module EPC::Command
2
+ class ArchiveProjectCommand < BaseCommand
3
+ def execute(project_name = nil)
4
+ path = "."
5
+ path = File.expand_path(path)
6
+
7
+ solution_name = @options[:solution_name]
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_project_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 => true})
15
+ if status.successful?
16
+ say("Project has been archived.")
17
+ else
18
+ say("Project could not be archived. Request failed with: [#{response[:message]}]")
19
+ end
20
+ return status
21
+ end
22
+ end
23
+ end
24
+
@@ -0,0 +1,21 @@
1
+ module EPC::Command
2
+ class ArchiveSolutionCommand < BaseCommand
3
+ def execute(solution_name = nil)
4
+ path = "."
5
+ path = File.expand_path(path)
6
+
7
+ solution_id, solution_name = infer_solution_context(solution_name, path, {:get_solution_name => true})
8
+
9
+ raise FatalError, "Solution could not be inferred" if solution_id.nil?
10
+
11
+ status, response, message = client.put(EPC::Config::SOLUTIONS_PATH + "/#{solution_id}", {:archived => true, :name => solution_name})
12
+ if status.successful?
13
+ say("Solution has been archived.")
14
+ else
15
+ say("Solution could not be archived. Request failed with: [#{response[:message]}]")
16
+ end
17
+ return status
18
+ end
19
+ end
20
+ end
21
+
@@ -0,0 +1,82 @@
1
+ require 'rexml/document'
2
+
3
+ module EPC::Command
4
+ class AttachLibraryCommand < BaseCommand
5
+
6
+ def execute(name = nil, version = nil, group = nil)
7
+ path = File.expand_path(".")
8
+
9
+ library_ids = []
10
+
11
+ if @options[:file].present?
12
+ libs = EPC::Config.read_content_as_json(@options[:file])
13
+ library_ids = libs.map{|h| h.inject({}){|memo,(k,v)| memo[k.to_sym] = v; memo}}
14
+ library_ids = retrieve_libraries(library_ids.compact)
15
+ elsif !@options[:pom].nil?
16
+ library_ids = parse_pom(@options[:pom])
17
+ else
18
+ raise FatalError, "You must specify the library to be attached" if name.nil?
19
+ end
20
+
21
+ solution_id, solution_name = infer_solution_context(@options[:solution_name], path)
22
+ project_id, project_name = infer_project_context(@options[:project_name], path, solution_id)
23
+
24
+ raise FatalError, "Project could not be determined" if project_id.nil?
25
+
26
+ if library_ids.empty?
27
+ if numeric?(name)
28
+ library_ids << name.to_i
29
+ else
30
+ library_ids = retrieve_libraries([{:name => name, :library_version => version, :group => group}])
31
+ end
32
+ end
33
+
34
+ raise InputError, "Library incorrectly specified" if library_ids.nil?
35
+
36
+ status = nil
37
+
38
+ library_ids.each do |library_id|
39
+ status, response, headers = client.post(EPC::Config::PROJECTS_PATH + "/#{project_id}/attach_library/#{library_id}")
40
+
41
+ if status.successful?
42
+ say("Library [#{library_id}] attached to project.")
43
+ else
44
+ say("Failed to attach library [#{library_id}]: [#{response[:message]}]")
45
+ end
46
+ end
47
+
48
+ return status
49
+
50
+ end
51
+
52
+ def parse_pom(pom_file)
53
+ begin
54
+ pom_file = File.read(File.expand_path(pom_file))
55
+ xml = REXML::Document.new(pom_file)
56
+ rescue REXML::ParseException => ex
57
+ raise FatalError, "Invalid xml supplied. Line: #{ex.line.to_s}. Context: #{ex.context.to_s}"
58
+ rescue Exception => ex
59
+ raise FatalError, ex.to_s
60
+ end
61
+
62
+ libraries = []
63
+ xml.elements[1].elements.each('dependencies/dependency') do |element|
64
+ lib = {}
65
+ element.each_child do |child|
66
+ next if child.is_a? REXML::Text
67
+ lib[child.name] = child.text
68
+ end
69
+ libraries << lib
70
+ end
71
+ libraries
72
+
73
+ libraries.each do |lib|
74
+ lib[:name] = lib['artifactId']
75
+ lib[:library_version] = lib['version']
76
+ lib[:group] = lib['groupId']
77
+ end
78
+ retrieve_libraries(libraries)
79
+ end
80
+
81
+ end
82
+ end