polytrix 0.0.1 → 0.1.0.pre

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 (238) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +2 -2
  3. data/.rspec +1 -6
  4. data/.rubocop-todo.yml +19 -0
  5. data/.rubocop.yml +10 -0
  6. data/.travis.yml +11 -0
  7. data/Gemfile +0 -16
  8. data/README.md +119 -28
  9. data/Rakefile +18 -123
  10. data/bin/polytrix +5 -0
  11. data/doc-src/_markdown.md +5 -0
  12. data/doc-src/default_bootstrap.md +13 -0
  13. data/docs/influences.md +28 -0
  14. data/docs/samples/code2doc/java/HelloWorld.md +13 -0
  15. data/docs/samples/code2doc/java/Quine.md +33 -0
  16. data/docs/samples/code2doc/python/hello_world.md +3 -0
  17. data/docs/samples/code2doc/python/quine.md +4 -0
  18. data/docs/samples/code2doc/ruby/hello_world.md +7 -0
  19. data/features/execution.feature +67 -0
  20. data/features/fixtures/configs/empty.yml +12 -0
  21. data/features/fixtures/configs/hello_world.yml +10 -0
  22. data/features/fixtures/spec/polytrix_merge.rb +5 -0
  23. data/features/fixtures/spec/polytrix_spec.rb +10 -0
  24. data/features/reporting.feature +140 -0
  25. data/features/step_definitions/sdk_steps.rb +12 -0
  26. data/features/support/env.rb +8 -0
  27. data/lib/polytrix/challenge.rb +20 -7
  28. data/lib/polytrix/challenge_runner.rb +9 -44
  29. data/lib/polytrix/cli/add.rb +67 -0
  30. data/lib/polytrix/cli/report.rb +88 -0
  31. data/lib/polytrix/cli/reports/hash_reporter.rb +30 -0
  32. data/lib/polytrix/cli/reports/json_reporter.rb +14 -0
  33. data/lib/polytrix/cli/reports/markdown_reporter.rb +23 -0
  34. data/lib/polytrix/cli/reports/yaml_reporter.rb +14 -0
  35. data/lib/polytrix/cli.rb +158 -0
  36. data/lib/polytrix/configuration.rb +65 -4
  37. data/lib/polytrix/core/file_system_helper.rb +75 -0
  38. data/lib/polytrix/core/implementor.rb +31 -3
  39. data/lib/polytrix/documentation/code_segmenter.rb +168 -0
  40. data/lib/polytrix/documentation/comment_styles.rb +87 -0
  41. data/lib/polytrix/documentation/helpers/code_helper.rb +85 -0
  42. data/lib/polytrix/documentation/view_helper.rb +21 -0
  43. data/lib/polytrix/documentation_generator.rb +59 -10
  44. data/lib/polytrix/executor.rb +89 -0
  45. data/lib/polytrix/logger.rb +17 -0
  46. data/lib/polytrix/manifest.rb +64 -7
  47. data/lib/polytrix/result.rb +16 -2
  48. data/lib/polytrix/rspec/documentation_formatter.rb +41 -16
  49. data/lib/polytrix/rspec/yaml_report.rb +51 -0
  50. data/lib/polytrix/rspec.rb +32 -53
  51. data/lib/polytrix/runners/middleware/feature_executor.rb +4 -3
  52. data/lib/polytrix/runners/middleware/setup_env_vars.rb +6 -4
  53. data/lib/polytrix/validation.rb +20 -0
  54. data/lib/polytrix/validations.rb +23 -0
  55. data/lib/polytrix/validator.rb +20 -0
  56. data/lib/polytrix/validator_registry.rb +34 -0
  57. data/lib/polytrix/version.rb +1 -1
  58. data/lib/polytrix.rb +125 -22
  59. data/polytrix.gemspec +7 -2
  60. data/polytrix.rb +6 -0
  61. data/polytrix_tests.yml +20 -0
  62. data/resources/code_sample.tt +2 -0
  63. data/samples/.gitignore +2 -0
  64. data/samples/_markdown.md +5 -0
  65. data/samples/default_bootstrap.rb +14 -0
  66. data/samples/polytrix.rb +28 -0
  67. data/samples/polytrix_cli.sh +7 -0
  68. data/samples/polytrix_tests.yml +10 -0
  69. data/{sdks/fog → samples}/scripts/bootstrap +0 -2
  70. data/samples/scripts/wrapper +7 -0
  71. data/samples/sdks/custom/polytrix.yml +2 -0
  72. data/samples/sdks/java/.gitignore +2 -0
  73. data/samples/sdks/java/build.gradle +14 -0
  74. data/samples/sdks/java/challenges/HelloWorld.java +10 -0
  75. data/samples/sdks/java/challenges/Quine.java +31 -0
  76. data/samples/sdks/java/code_sample.tt +11 -0
  77. data/samples/sdks/java/scripts/bootstrap +2 -0
  78. data/samples/sdks/java/scripts/wrapper +8 -0
  79. data/samples/sdks/python/challenges/hello_world.py +2 -0
  80. data/samples/sdks/python/challenges/quine.py +2 -0
  81. data/{sdks/pkgcloud → samples/sdks/python}/scripts/wrapper +1 -1
  82. data/samples/sdks/ruby/challenges/hello_world.rb +4 -0
  83. data/scripts/bootstrap +1 -9
  84. data/scripts/wrapper +7 -0
  85. data/spec/fabricators/challenge_fabricator.rb +17 -0
  86. data/spec/fabricators/manifest_fabricator.rb +50 -0
  87. data/spec/fabricators/validator_fabricator.rb +12 -0
  88. data/spec/fixtures/{polytrix.yml → polytrix_tests.yml} +0 -0
  89. data/spec/fixtures/src-doc/_scenario.md.erb +1 -0
  90. data/spec/polytrix/challenge_runner_spec.rb +3 -3
  91. data/spec/polytrix/challenge_spec.rb +3 -4
  92. data/spec/polytrix/cli_spec.rb +39 -0
  93. data/spec/polytrix/configuration_spec.rb +45 -1
  94. data/spec/polytrix/documentation/helpers/code_helper_spec.rb +120 -0
  95. data/spec/polytrix/documentation_generator_spec.rb +41 -20
  96. data/spec/polytrix/file_finder_spec.rb +4 -3
  97. data/spec/polytrix/implementor_spec.rb +33 -0
  98. data/spec/polytrix/manifest_spec.rb +32 -14
  99. data/spec/polytrix/middleware/feature_executor_spec.rb +1 -1
  100. data/spec/polytrix/result_spec.rb +49 -0
  101. data/spec/polytrix/validations_spec.rb +16 -0
  102. data/spec/polytrix/validator_registry_spec.rb +39 -0
  103. data/spec/polytrix/validator_spec.rb +63 -0
  104. data/spec/polytrix_spec.rb +33 -7
  105. data/spec/spec_helper.rb +14 -1
  106. data/spec/thor_spy.rb +64 -0
  107. metadata +177 -160
  108. data/.rspec_parallel +0 -10
  109. data/Vagrantfile +0 -41
  110. data/features/0_identity_spec.rb +0 -40
  111. data/features/1_cloud_files_spec.rb +0 -48
  112. data/features/2_servers_spec.rb +0 -19
  113. data/features/features_helper.rb +0 -46
  114. data/features/helpers/cloudfiles_helper.rb +0 -31
  115. data/features/helpers/pacto_helper.rb +0 -33
  116. data/features/helpers/teardown_helper.rb +0 -49
  117. data/features/pacto/extensions/loaders/api_blueprint_loader.rb +0 -63
  118. data/features/pacto/extensions/loaders/simple_loader.rb +0 -55
  119. data/features/pacto/extensions/loaders/yaml_or_json_loader.rb +0 -17
  120. data/features/pacto/extensions/matchers.rb +0 -38
  121. data/features/phase2/feature_coverage_report.rb +0 -109
  122. data/features/phase2/run_all_features.rb +0 -14
  123. data/features/static_site/fixtures/index.html +0 -6
  124. data/lib/polytrix/challenge_builder.rb +0 -16
  125. data/lib/polytrix/core/file_finder.rb +0 -43
  126. data/lib/polytrix/core/result_tracker.rb +0 -25
  127. data/lib/polytrix/runners/middleware/pacto.rb +0 -59
  128. data/packer/.gitignore +0 -3
  129. data/packer/Berksfile +0 -15
  130. data/packer/Gemfile +0 -5
  131. data/packer/Vagrantfile +0 -128
  132. data/packer/cookbooks/drg/metadata.rb +0 -27
  133. data/packer/cookbooks/drg/recipes/admins.rb +0 -22
  134. data/packer/cookbooks/drg/recipes/default.rb +0 -9
  135. data/packer/cookbooks/drg/recipes/dotnet.rb +0 -4
  136. data/packer/cookbooks/drg/recipes/golang.rb +0 -4
  137. data/packer/cookbooks/drg/recipes/java.rb +0 -5
  138. data/packer/cookbooks/drg/recipes/php.rb +0 -10
  139. data/packer/cookbooks/drg/recipes/ruby.rb +0 -29
  140. data/packer/cookbooks/drg/recipes/system.rb +0 -13
  141. data/packer/create_box.sh +0 -10
  142. data/packer/http/preseed.cfg +0 -87
  143. data/packer/packer.json +0 -91
  144. data/packer/scripts/root_setup.sh +0 -37
  145. data/packer/scripts/setup.sh +0 -32
  146. data/pacto/config/pacto_server.rb +0 -40
  147. data/pacto/contracts/dfw.servers.api.rackspacecloud.com/v2/account_id/extensions.json +0 -64
  148. data/pacto/contracts/dfw.servers.api.rackspacecloud.com/v2/account_id/flavors/id.json +0 -100
  149. data/pacto/contracts/dfw.servers.api.rackspacecloud.com/v2/account_id/images/id.json +0 -176
  150. data/pacto/contracts/dfw.servers.api.rackspacecloud.com/v2/account_id/servers/id.json +0 -189
  151. data/pacto/contracts/dfw.servers.api.rackspacecloud.com/v2/account_id/servers.json +0 -63
  152. data/pacto/contracts/dns.api.rackspacecloud.com/v1.0/_tenant_id/domains.json +0 -62
  153. data/pacto/contracts/identity.api.rackspacecloud.com/v2.0/tokens.json +0 -192
  154. data/pacto/contracts/monitoring.api.rackspacecloud.com/v1.0/_tenant_id/account.json +0 -39
  155. data/pacto/contracts/ord.autoscale.api.rackspacecloud.com/v1.0/_tenant_id/groups.json +0 -38
  156. data/pacto/contracts/ord.blockstorage.api.rackspacecloud.com/v1/_tenant_id/volumes.json +0 -30
  157. data/pacto/contracts/ord.databases.api.rackspacecloud.com/v1.0/_tenant_id/instances.json +0 -30
  158. data/pacto/contracts/ord.loadbalancers.api.rackspacecloud.com/v1.0/_tenant_id/loadbalancers.json +0 -114
  159. data/pacto/contracts/ord.queues.api.rackspacecloud.com/v1/_tenant_id/queues.json +0 -13
  160. data/pacto/contracts/ord.servers.api.rackspacecloud.com/v2/_tenant_id/os-networksv2.json +0 -46
  161. data/pacto/contracts/ord.servers.api.rackspacecloud.com/v2/_tenant_id/servers/detail.json +0 -230
  162. data/pacto/contracts/storage101.dfw1.clouddrive.com/v1/mosso_account/container/object.json +0 -15
  163. data/pacto/contracts/storage101.dfw1.clouddrive.com/v1/mosso_account.json +0 -43
  164. data/pacto/contracts/storage101.ord1.clouddrive.com/v1/_mosso_id.json +0 -44
  165. data/pacto/pacto_server.rb +0 -100
  166. data/pacto/rackspace_uri_map.yaml +0 -229
  167. data/scripts/cibuild +0 -4
  168. data/sdks/fog/.gitignore +0 -1
  169. data/sdks/fog/Gemfile +0 -5
  170. data/sdks/fog/challenges/all_connections.rb +0 -45
  171. data/sdks/fog/challenges/authenticate_token.rb +0 -15
  172. data/sdks/fog/challenges/cdn_enable_container.rb +0 -20
  173. data/sdks/fog/challenges/create_a_container.rb +0 -17
  174. data/sdks/fog/challenges/create_server.rb +0 -36
  175. data/sdks/fog/challenges/get_object_metadata.rb +0 -13
  176. data/sdks/fog/challenges/list_containers.rb +0 -10
  177. data/sdks/fog/challenges/provision_scalable_webapp.rb +0 -30
  178. data/sdks/fog/challenges/upload_folder.rb +0 -25
  179. data/sdks/fog/scripts/bootstrap.ps1 +0 -1
  180. data/sdks/fog/scripts/wrapper +0 -2
  181. data/sdks/fog/scripts/wrapper.ps1 +0 -1
  182. data/sdks/gophercloud/.gitignore +0 -2
  183. data/sdks/gophercloud/challenges/authenticate_token.go +0 -23
  184. data/sdks/gophercloud/scripts/bootstrap +0 -6
  185. data/sdks/gophercloud/scripts/wrapper +0 -10
  186. data/sdks/jclouds/.gitignore +0 -1
  187. data/sdks/jclouds/challenges/AuthenticateToken.java +0 -115
  188. data/sdks/jclouds/pom.xml +0 -34
  189. data/sdks/jclouds/scripts/bootstrap +0 -3
  190. data/sdks/jclouds/scripts/wrapper +0 -7
  191. data/sdks/openstack.net/.gitignore +0 -4
  192. data/sdks/openstack.net/.nuget/Microsoft.Build.dll +0 -0
  193. data/sdks/openstack.net/.nuget/NuGet.Config +0 -6
  194. data/sdks/openstack.net/.nuget/NuGet.exe +0 -0
  195. data/sdks/openstack.net/.nuget/NuGet.targets +0 -136
  196. data/sdks/openstack.net/Challenge.cs +0 -10
  197. data/sdks/openstack.net/RunChallenge.cs +0 -19
  198. data/sdks/openstack.net/challenges/AuthenticateToken.cs +0 -24
  199. data/sdks/openstack.net/challenges/Weird.cs +0 -133
  200. data/sdks/openstack.net/openstack.net.csproj +0 -58
  201. data/sdks/openstack.net/openstack.net.sln +0 -27
  202. data/sdks/openstack.net/openstack.net.userprefs +0 -8
  203. data/sdks/openstack.net/packages.config +0 -6
  204. data/sdks/openstack.net/scripts/bootstrap +0 -2
  205. data/sdks/openstack.net/scripts/bootstrap.ps1 +0 -2
  206. data/sdks/openstack.net/scripts/wrapper +0 -7
  207. data/sdks/openstack.net/scripts/wrapper.ps1 +0 -1
  208. data/sdks/php-opencloud/.gitignore +0 -4
  209. data/sdks/php-opencloud/challenges/all_connections.php +0 -64
  210. data/sdks/php-opencloud/challenges/authenticate_token.php +0 -14
  211. data/sdks/php-opencloud/challenges/create_server.php +0 -39
  212. data/sdks/php-opencloud/challenges/get_object_metadata.php +0 -19
  213. data/sdks/php-opencloud/composer.json +0 -5
  214. data/sdks/php-opencloud/scripts/bootstrap +0 -4
  215. data/sdks/php-opencloud/scripts/bootstrap.ps1 +0 -2
  216. data/sdks/php-opencloud/scripts/wrapper +0 -2
  217. data/sdks/php-opencloud/scripts/wrapper.ps1 +0 -1
  218. data/sdks/pkgcloud/.gitignore +0 -1
  219. data/sdks/pkgcloud/challenges/authenticate_token.js +0 -17
  220. data/sdks/pkgcloud/challenges/get_object_metadata.js +0 -18
  221. data/sdks/pkgcloud/scripts/bootstrap +0 -2
  222. data/sdks/pkgcloud/scripts/bootstrap.ps1 +0 -1
  223. data/sdks/pkgcloud/scripts/wrapper.ps1 +0 -1
  224. data/sdks/pyrax/.gitignore +0 -2
  225. data/sdks/pyrax/challenges/all_connections.py +0 -61
  226. data/sdks/pyrax/challenges/authenticate_token.py +0 -17
  227. data/sdks/pyrax/challenges/cdn_enable_container.py +0 -22
  228. data/sdks/pyrax/challenges/create_a_container.py +0 -21
  229. data/sdks/pyrax/challenges/create_server.py +0 -35
  230. data/sdks/pyrax/challenges/get_object_metadata.py +0 -17
  231. data/sdks/pyrax/challenges/upload_folder.py +0 -32
  232. data/sdks/pyrax/requirements.txt +0 -21
  233. data/sdks/pyrax/scripts/bootstrap +0 -9
  234. data/sdks/pyrax/scripts/bootstrap.ps1 +0 -7
  235. data/sdks/pyrax/scripts/wrapper +0 -3
  236. data/sdks/pyrax/scripts/wrapper.ps1 +0 -2
  237. data/spec/polytrix/challenge_builder_spec.rb +0 -16
  238. data/spec/rspec_spec.rb +0 -17
@@ -1,45 +0,0 @@
1
- #!/usr/bin/env ruby
2
-
3
- require 'fog'
4
-
5
- connection_opts = {
6
- :rackspace_username => ENV['RAX_USERNAME'],
7
- :rackspace_api_key => ENV['RAX_API_KEY'],
8
- :rackspace_region => ENV['RAX_REGION'].downcase.to_sym,
9
- :rackspace_auth_url => "#{ENV['RAX_AUTH_URL']}/v2.0"
10
- }
11
-
12
- # Compute services:
13
- compute = Fog::Compute.new(connection_opts.merge({:provider => 'rackspace'}))
14
- puts "Servers: #{compute.servers.all}"
15
- puts "Networks: #{compute.networks.all}"
16
-
17
- load_balancers = Fog::Rackspace::LoadBalancers.new(connection_opts)
18
- puts "Cloud Load Balancers: #{load_balancers.load_balancers.all}"
19
-
20
- storage = Fog::Storage.new(connection_opts.merge({:provider => 'rackspace'}))
21
- puts "Cloud Files Containers: #{storage.directories.all}"
22
-
23
- databases = Fog::Rackspace::Databases.new(connection_opts)
24
- puts "Cloud Databases: #{databases.instances.all}"
25
-
26
- dns = Fog::DNS::Rackspace.new(connection_opts)
27
- puts "Cloud DNS: #{dns.zones.all}"
28
-
29
- identity = Fog::Rackspace::Identity.new(connection_opts)
30
- puts "Cloud Identity Users: #{identity.users.all}"
31
-
32
- monitoring = Fog::Rackspace::Monitoring.new(connection_opts)
33
- puts "Cloud Monitoring Account: #{monitoring.list_entities}"
34
-
35
- block_storage = Fog::Rackspace::BlockStorage.new(connection_opts)
36
- puts "Cloud Block Storage Volumes: #{block_storage.volumes.all}"
37
-
38
- # Cloud Backup?
39
-
40
- autoscale = Fog::Rackspace::AutoScale.new(connection_opts)
41
- puts "Autoscale Scaling Groups: #{autoscale.groups.all}"
42
-
43
- # Cloud Queues
44
- queues = Fog::Rackspace::Queues.new(connection_opts)
45
- puts "Cloud Queues: #{queues.queues.all}"
@@ -1,15 +0,0 @@
1
- #!/usr/bin/env ruby
2
-
3
- # This example demonstrates creating a server with the Rackpace Open Cloud
4
-
5
- require 'fog'
6
-
7
- service = Fog::Compute.new({
8
- :provider => 'rackspace',
9
- :rackspace_username => ENV['RAX_USERNAME'],
10
- :rackspace_api_key => ENV['RAX_API_KEY'],
11
- :rackspace_region => ENV['RAX_REGION'].downcase.to_sym,
12
- :rackspace_auth_url => "#{ENV['RAX_AUTH_URL']}/v2.0"
13
- })
14
-
15
- puts "Authenticated"
@@ -1,20 +0,0 @@
1
- #!/usr/bin/env ruby
2
-
3
- require 'fog'
4
- connection_opts = {
5
- :rackspace_username => ENV['RAX_USERNAME'],
6
- :rackspace_api_key => ENV['RAX_API_KEY'],
7
- :rackspace_region => ENV['RAX_REGION'].downcase.to_sym,
8
- :rackspace_auth_url => "#{ENV['RAX_AUTH_URL']}/v2.0"
9
- }
10
- storage = Fog::Storage.new(connection_opts.merge({:provider => 'rackspace'}))
11
-
12
- container_name = 'my-site'
13
- folder_to_upload = ENV['TEST_DIRECTORY']
14
- username = ENV['RAX_USERNAME']
15
- api_key = ENV['RAX_API_KEY']
16
- auth_endpoint = ENV['RAX_AUTH_URL']
17
-
18
- directory = storage.directories.get container_name
19
- directory.public = true
20
- directory.save
@@ -1,17 +0,0 @@
1
- #!/usr/bin/env ruby
2
-
3
- require 'fog'
4
- connection_opts = {
5
- :rackspace_username => ENV['RAX_USERNAME'],
6
- :rackspace_api_key => ENV['RAX_API_KEY'],
7
- :rackspace_region => ENV['RAX_REGION'].downcase.to_sym,
8
- :rackspace_auth_url => "#{ENV['RAX_AUTH_URL']}/v2.0"
9
- }
10
- storage = Fog::Storage.new(connection_opts.merge({:provider => 'rackspace'}))
11
-
12
- container_name = ENV['CONTAINER_NAME']
13
- username = ENV['RAX_USERNAME']
14
- api_key = ENV['RAX_API_KEY']
15
- auth_endpoint = ENV['RAX_AUTH_URL']
16
-
17
- storage.directories.create :key => 'my-site'
@@ -1,36 +0,0 @@
1
- #!/usr/bin/env ruby
2
-
3
- require 'fog'
4
- Excon.defaults[:ssl_verify_peer] = false
5
-
6
- service = Fog::Compute.new({
7
- :provider => 'rackspace',
8
- :rackspace_username => ENV['RAX_USERNAME'],
9
- :rackspace_api_key => ENV['RAX_API_KEY'],
10
- :rackspace_region => ENV['RAX_REGION'].downcase.to_sym,
11
- :rackspace_auth_url => "#{ENV['RAX_AUTH_URL']}/v2.0"
12
- })
13
-
14
- server = service.servers.create :name => 'Fog Server',
15
- :flavor_id => ENV['SERVER1_FLAVOR'],
16
- :image_id => ENV['SERVER1_IMAGE']
17
-
18
- puts "\n"
19
-
20
- begin
21
- # Check every 5 seconds to see if server is in the active state (ready?).
22
- # If the server has not been built in 5 minutes (600 seconds) an exception will be raised.
23
- server.wait_for(600, 5) do
24
- print "."
25
- STDOUT.flush
26
- ready?
27
- end
28
-
29
- puts "[DONE]\n\n"
30
-
31
- rescue Fog::Errors::TimeoutError
32
- puts "[TIMEOUT]\n\n"
33
-
34
- puts "This server is currently #{server.progress}% into the build process and is taking longer to complete than expected."
35
- puts "You can continute to monitor the build process through the web console at https://mycloud.rackspace.com/\n\n"
36
- end
@@ -1,13 +0,0 @@
1
- #!/usr/bin/env ruby
2
- require 'fog'
3
-
4
- service = Fog::Storage.new({
5
- :provider => 'rackspace',
6
- :rackspace_username => ENV['RAX_USERNAME'],
7
- :rackspace_api_key => ENV['RAX_API_KEY'],
8
- :rackspace_region => ENV['RAX_REGION'],
9
- :rackspace_auth_url => "#{ENV['RAX_AUTH_URL']}/v2.0"
10
- })
11
- # directory = service.directories.get ENV['TEST_DIRECTORY']
12
- # directory.files.head_object ENV['TEST_FILE']
13
- service.head_object ENV['TEST_DIRECTORY'], ENV['TEST_FILE']
@@ -1,10 +0,0 @@
1
- #!/usr/bin/env ruby
2
- require 'fog'
3
-
4
- service = Fog::Storage.new({
5
- :provider => 'rackspace',
6
- :rackspace_username => ENV['RAX_USERNAME'],
7
- :rackspace_api_key => ENV['RAX_API_KEY'],
8
- :rackspace_auth_url => "#{ENV['RAX_AUTH_URL']}/v2.0"
9
- })
10
- containers = service.get_containers
@@ -1,30 +0,0 @@
1
- require 'fog'
2
-
3
- volume_name = 'my_volume'
4
- connection_opts = {
5
- :rackspace_username => ENV['RAX_USERNAME'],
6
- :rackspace_api_key => ENV['RAX_API_KEY'],
7
- :rackspace_region => ENV['RAX_REGION'].downcase.to_sym,
8
- :rackspace_auth_url => "#{ENV['RAX_AUTH_URL']}/v2.0"
9
- }
10
-
11
- compute = Fog::Compute.new(connection_opts.merge(:provider => 'rackspace'))
12
-
13
- server = compute.servers.create :name => 'Fog Server',
14
- :flavor_id => ENV['SERVER1_FLAVOR'],
15
- :image_id => ENV['SERVER1_IMAGE']
16
-
17
- server.wait_for(600, 5) do
18
- print "."
19
- STDOUT.flush
20
- ready?
21
- end
22
-
23
- server = server.reload
24
-
25
- cbs_service = Fog::Rackspace::BlockStorage.new(connection_opts)
26
-
27
- puts "\nCreating Volume\n"
28
- volume = cbs_service.volumes.create(:size => 100, :display_name => volume_name)
29
- puts "\nAttaching volume\n"
30
- attachment = server.attach_volume volume
@@ -1,25 +0,0 @@
1
- #!/usr/bin/env ruby
2
-
3
- require 'fog'
4
- connection_opts = {
5
- :rackspace_username => ENV['RAX_USERNAME'],
6
- :rackspace_api_key => ENV['RAX_API_KEY'],
7
- :rackspace_region => ENV['RAX_REGION'].downcase.to_sym,
8
- :rackspace_auth_url => "#{ENV['RAX_AUTH_URL']}/v2.0"
9
- }
10
- storage = Fog::Storage.new(connection_opts.merge({:provider => 'rackspace'}))
11
-
12
- container_name = 'my-site'
13
- folder_to_upload = ENV['TEST_DIRECTORY']
14
- username = ENV['RAX_USERNAME']
15
- api_key = ENV['RAX_API_KEY']
16
- auth_endpoint = ENV['RAX_AUTH_URL']
17
-
18
- puts 'Uploading folder'
19
- local_directory = Pathname.new folder_to_upload
20
- remote_directory = storage.directories.create :key => container_name
21
- Dir["#{folder_to_upload}/**.*"].each do |file|
22
- file_key = Pathname.new(file).relative_path_from local_directory
23
- remote_directory.files.create :key => file_key.to_s, :body => File.open(file)
24
- end
25
- puts 'Done uploading'
@@ -1 +0,0 @@
1
- bundle install
@@ -1,2 +0,0 @@
1
- #!/bin/bash
2
- bundle exec ruby "$@"
@@ -1 +0,0 @@
1
- bundle exec ruby "$args"
@@ -1,2 +0,0 @@
1
- go/
2
-
@@ -1,23 +0,0 @@
1
- package main
2
-
3
- import (
4
- "github.com/rackspace/gophercloud"
5
- "os"
6
- )
7
-
8
- func main() {
9
- var provider = os.Getenv("RAX_AUTH_URL") + "/v2.0/tokens"
10
- var username = os.Getenv("RAX_USERNAME")
11
- var api_key = os.Getenv("RAX_API_KEY")
12
- _, err := gophercloud.Authenticate(
13
- provider,
14
- gophercloud.AuthOptions{
15
- Username: username,
16
- ApiKey: api_key,
17
- },
18
- )
19
- if err != nil {
20
- panic(err)
21
- }
22
- println("Authenticated")
23
- }
@@ -1,6 +0,0 @@
1
- #!/bin/bash
2
- export GOPATH=`pwd`/go
3
- mkdir -p $GOPATH
4
-
5
- go get -u github.com/rackspace/gophercloud
6
- export GOPHERCLOUD=$GOPATH/src/github.com/rackspace/gophercloud
@@ -1,10 +0,0 @@
1
- #!/bin/bash
2
- export GOPATH=`pwd`/go
3
- CHALLENGES_DIR=$(dirname $1)
4
- export SDK_PROVIDER=${RAX_AUTH_URL}/v2.0/tokens
5
- # export SDK_PROVIDER=rackspace-us
6
- export SDK_USERNAME=$RAX_USERNAME
7
- export SDK_API_KEY=$RAX_API_KEY
8
- export SDK_PASSWORD=none
9
- # go run $1 $CHALLENGES_DIR/libargs.go
10
- go run $1
@@ -1 +0,0 @@
1
- target/
@@ -1,115 +0,0 @@
1
- /*
2
- * Licensed to the Apache Software Foundation (ASF) under one
3
- * or more contributor license agreements. See the NOTICE file
4
- * distributed with this work for additional information
5
- * regarding copyright ownership. The ASF licenses this file
6
- * to you under the Apache License, Version 2.0 (the
7
- * "License"); you may not use this file except in compliance
8
- * with the License. You may obtain a copy of the License at
9
- *
10
- * http://www.apache.org/licenses/LICENSE-2.0
11
- *
12
- * Unless required by applicable law or agreed to in writing,
13
- * software distributed under the License is distributed on an
14
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
15
- * KIND, either express or implied. See the License for the
16
- * specific language governing permissions and limitations
17
- * under the License.
18
- */
19
- package org.jclouds.examples.rackspace;
20
-
21
- import java.io.Closeable;
22
- import java.util.Properties;
23
-
24
- import org.jclouds.ContextBuilder;
25
- import org.jclouds.compute.ComputeService;
26
- import org.jclouds.compute.ComputeServiceContext;
27
- import org.jclouds.openstack.keystone.v2_0.config.CredentialTypes;
28
- import org.jclouds.openstack.keystone.v2_0.config.KeystoneProperties;
29
- import org.jclouds.openstack.nova.v2_0.NovaApi;
30
- import org.jclouds.openstack.nova.v2_0.NovaAsyncApi;
31
- import org.jclouds.rest.RestContext;
32
-
33
- /**
34
- * To authenticate using jclouds you need to provide your credentials to a Context as in the init() method below.
35
- * Authentication occurs on your first actual interaction with the Rackspace Cloud (i.e. the very first time
36
- * you call a method that needs to talk to the cloud). Once you are authenticated you receive a token that is
37
- * cached and you won't reauthenticate for subsequent calls. If your token expires before the JVM quits, jclouds
38
- * will automatically handle reauthentication and get a new token for you.
39
- *
40
- * If authentication doesn't work, the call will result in an org.jclouds.rest.AuthorizationException
41
- *
42
- * This example demostrates how you would authenticate via username and password or API key. The default is
43
- * authentication via API key, which is used in the rest of the examples in this package.
44
- *
45
- * @author Everett Toews
46
- */
47
- public class AuthenticateToken implements Closeable {
48
- private ComputeService compute;
49
- private RestContext<NovaApi, NovaAsyncApi> nova;
50
-
51
- /**
52
- * To get a username and API key see http://www.jclouds.org/documentation/quickstart/rackspace/
53
- *
54
- * The first argument (args[0]) must be your username
55
- * The second argument (args[1]) must be your API key or password
56
- * [Optional] The third argument (args[2]) must be "password" if password authentication is used,
57
- * otherwise default to using API key.
58
- */
59
- public static void main(String[] args) {
60
- AuthenticateToken authenticate = new AuthenticateToken();
61
-
62
- try {
63
- authenticate.init(args);
64
- authenticate.authenticateOnCall();
65
- }
66
- catch (Exception e) {
67
- e.printStackTrace();
68
- }
69
- finally {
70
- authenticate.close();
71
- }
72
- }
73
-
74
- private void init(String[] args) {
75
- // The provider configures jclouds To use the Rackspace Cloud (US)
76
- // To use the Rackspace Cloud (UK) set the provider to "rackspace-cloudservers-uk"
77
- String provider = "rackspace-cloudservers-us";
78
-
79
- String username = System.getenv("RAX_USERNAME");
80
- String credential = System.getenv("RAX_API_KEY");
81
-
82
- Properties overrides = new Properties();
83
-
84
- if (args.length == 3 && "password".equals(args[2])) {
85
- overrides.put(KeystoneProperties.CREDENTIAL_TYPE, CredentialTypes.PASSWORD_CREDENTIALS);
86
- }
87
-
88
- String endpoint = System.getenv("RAX_AUTH_URL") + "/v2.0/";
89
- ComputeServiceContext context = ContextBuilder.newBuilder(provider)
90
- .credentials(username, credential)
91
- .overrides(overrides)
92
- .endpoint(endpoint)
93
- .buildView(ComputeServiceContext.class);
94
- compute = context.getComputeService();
95
- nova = context.unwrap();
96
- }
97
-
98
- /**
99
- * Calling getConfiguredZones() causes jclouds to authenticate. If authentication doesn't work, the call to
100
- * getConfiguredZones() will result in an org.jclouds.rest.AuthorizationException
101
- */
102
- private void authenticateOnCall() {
103
- nova.getApi().getConfiguredZones();
104
- System.out.println("Authenticated");
105
- }
106
-
107
- /**
108
- * Always close your service when you're done with it.
109
- */
110
- public void close() {
111
- if (compute != null) {
112
- compute.getContext();
113
- }
114
- }
115
- }
data/sdks/jclouds/pom.xml DELETED
@@ -1,34 +0,0 @@
1
- <project xmlns="http://maven.apache.org/POM/4.0.0"
2
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
3
- xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
4
- http://maven.apache.org/xsd/maven-4.0.0.xsd">
5
- <modelVersion>4.0.0</modelVersion>
6
- <groupId>com.mycompany.app</groupId>
7
- <artifactId>my-app</artifactId>
8
- <packaging>jar</packaging>
9
- <version>1.0-SNAPSHOT</version>
10
- <name>Maven Quick Start Archetype</name>
11
- <url>http://maven.apache.org</url>
12
- <build>
13
- <sourceDirectory>challenges</sourceDirectory>
14
- <plugins>
15
- <plugin>
16
- <groupId>org.codehaus.mojo</groupId>
17
- <artifactId>versions-maven-plugin</artifactId>
18
- <version>2.1</version>
19
- </plugin>
20
- <plugin>
21
- <groupId>org.codehaus.mojo</groupId>
22
- <artifactId>exec-maven-plugin</artifactId>
23
- <version>1.2.1</version>
24
- </plugin>
25
- </plugins>
26
- </build>
27
- <dependencies>
28
- <dependency>
29
- <groupId>org.apache.jclouds</groupId>
30
- <artifactId>jclouds-all</artifactId>
31
- <version>1.7.2</version>
32
- </dependency>
33
- </dependencies>
34
- </project>
@@ -1,3 +0,0 @@
1
- #!/bin/bash
2
- mvn versions:use-latest-releases -DgenerateBackupPoms=false
3
- mvn clean install
@@ -1,7 +0,0 @@
1
- #!/bin/bash
2
- CHALLENGE_FILE=$1
3
- CHALLENGE=`basename $CHALLENGE_FILE .java`
4
- CLASS="org.jclouds.examples.rackspace.${CHALLENGE}"
5
-
6
- mvn -q compile
7
- mvn -q exec:java -Dexec.mainClass=$CLASS -e
@@ -1,4 +0,0 @@
1
- bin/
2
- obj/
3
- packages/
4
-
@@ -1,6 +0,0 @@
1
- <?xml version="1.0" encoding="utf-8"?>
2
- <configuration>
3
- <solution>
4
- <add key="disableSourceControlIntegration" value="true" />
5
- </solution>
6
- </configuration>
Binary file
@@ -1,136 +0,0 @@
1
- <?xml version="1.0" encoding="utf-8"?>
2
- <Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
3
- <PropertyGroup>
4
- <SolutionDir Condition="$(SolutionDir) == '' Or $(SolutionDir) == '*Undefined*'">$(MSBuildProjectDirectory)\..\</SolutionDir>
5
-
6
- <!-- Enable the restore command to run before builds -->
7
- <RestorePackages Condition=" '$(RestorePackages)' == '' ">true</RestorePackages>
8
-
9
- <!-- Property that enables building a package from a project -->
10
- <BuildPackage Condition=" '$(BuildPackage)' == '' ">false</BuildPackage>
11
-
12
- <!-- Determines if package restore consent is required to restore packages -->
13
- <RequireRestoreConsent Condition=" '$(RequireRestoreConsent)' != 'false' ">true</RequireRestoreConsent>
14
-
15
- <!-- Download NuGet.exe if it does not already exist -->
16
- <DownloadNuGetExe Condition=" '$(DownloadNuGetExe)' == '' ">false</DownloadNuGetExe>
17
- </PropertyGroup>
18
-
19
- <ItemGroup Condition=" '$(PackageSources)' == '' ">
20
- <!-- Package sources used to restore packages. By default, registered sources under %APPDATA%\NuGet\NuGet.Config will be used -->
21
- <!-- The official NuGet package source (https://www.nuget.org/api/v2/) will be excluded if package sources are specified and it does not appear in the list -->
22
- <!--
23
- <PackageSource Include="https://www.nuget.org/api/v2/" />
24
- <PackageSource Include="https://my-nuget-source/nuget/" />
25
- -->
26
- </ItemGroup>
27
-
28
- <PropertyGroup Condition=" '$(OS)' == 'Windows_NT'">
29
- <!-- Windows specific commands -->
30
- <NuGetToolsPath>$([System.IO.Path]::Combine($(SolutionDir), ".nuget"))</NuGetToolsPath>
31
- <PackagesConfig>$([System.IO.Path]::Combine($(ProjectDir), "packages.config"))</PackagesConfig>
32
- </PropertyGroup>
33
-
34
- <PropertyGroup Condition=" '$(OS)' != 'Windows_NT'">
35
- <!-- We need to launch nuget.exe with the mono command if we're not on windows -->
36
- <NuGetToolsPath>$(SolutionDir).nuget</NuGetToolsPath>
37
- <PackagesConfig>packages.config</PackagesConfig>
38
- </PropertyGroup>
39
-
40
- <PropertyGroup>
41
- <!-- NuGet command -->
42
- <NuGetExePath Condition=" '$(NuGetExePath)' == '' ">$(NuGetToolsPath)\NuGet.exe</NuGetExePath>
43
- <PackageSources Condition=" $(PackageSources) == '' ">@(PackageSource)</PackageSources>
44
-
45
- <NuGetCommand Condition=" '$(OS)' == 'Windows_NT'">"$(NuGetExePath)"</NuGetCommand>
46
- <NuGetCommand Condition=" '$(OS)' != 'Windows_NT' ">mono --runtime=v4.0.30319 $(NuGetExePath)</NuGetCommand>
47
-
48
- <PackageOutputDir Condition="$(PackageOutputDir) == ''">$(TargetDir.Trim('\\'))</PackageOutputDir>
49
-
50
- <RequireConsentSwitch Condition=" $(RequireRestoreConsent) == 'true' ">-RequireConsent</RequireConsentSwitch>
51
- <NonInteractiveSwitch Condition=" '$(VisualStudioVersion)' != '' AND '$(OS)' == 'Windows_NT' ">-NonInteractive</NonInteractiveSwitch>
52
-
53
- <PaddedSolutionDir Condition=" '$(OS)' == 'Windows_NT'">"$(SolutionDir) "</PaddedSolutionDir>
54
- <PaddedSolutionDir Condition=" '$(OS)' != 'Windows_NT' ">"$(SolutionDir)"</PaddedSolutionDir>
55
-
56
- <!-- Commands -->
57
- <RestoreCommand>$(NuGetCommand) install "$(PackagesConfig)" -source "$(PackageSources)" $(NonInteractiveSwitch) $(RequireConsentSwitch) -solutionDir $(PaddedSolutionDir)</RestoreCommand>
58
- <BuildCommand>$(NuGetCommand) pack "$(ProjectPath)" -Properties "Configuration=$(Configuration);Platform=$(Platform)" $(NonInteractiveSwitch) -OutputDirectory "$(PackageOutputDir)" -symbols</BuildCommand>
59
-
60
- <!-- We need to ensure packages are restored prior to assembly resolve -->
61
- <BuildDependsOn Condition="$(RestorePackages) == 'true'">
62
- RestorePackages;
63
- $(BuildDependsOn);
64
- </BuildDependsOn>
65
-
66
- <!-- Make the build depend on restore packages -->
67
- <BuildDependsOn Condition="$(BuildPackage) == 'true'">
68
- $(BuildDependsOn);
69
- BuildPackage;
70
- </BuildDependsOn>
71
- </PropertyGroup>
72
-
73
- <Target Name="CheckPrerequisites">
74
- <!-- Raise an error if we're unable to locate nuget.exe -->
75
- <Error Condition="'$(DownloadNuGetExe)' != 'true' AND !Exists('$(NuGetExePath)')" Text="Unable to locate '$(NuGetExePath)'" />
76
- <!--
77
- Take advantage of MsBuild's build dependency tracking to make sure that we only ever download nuget.exe once.
78
- This effectively acts as a lock that makes sure that the download operation will only happen once and all
79
- parallel builds will have to wait for it to complete.
80
- -->
81
- <MsBuild Targets="_DownloadNuGet" Projects="$(MSBuildThisFileFullPath)" Properties="Configuration=NOT_IMPORTANT;DownloadNuGetExe=$(DownloadNuGetExe)" />
82
- </Target>
83
-
84
- <Target Name="_DownloadNuGet">
85
- <DownloadNuGet OutputFilename="$(NuGetExePath)" Condition=" '$(DownloadNuGetExe)' == 'true' AND !Exists('$(NuGetExePath)')" />
86
- </Target>
87
-
88
- <Target Name="RestorePackages" DependsOnTargets="CheckPrerequisites">
89
- <Exec Command="$(RestoreCommand)"
90
- Condition="'$(OS)' != 'Windows_NT' And Exists('$(PackagesConfig)')" />
91
-
92
- <Exec Command="$(RestoreCommand)"
93
- LogStandardErrorAsError="true"
94
- Condition="'$(OS)' == 'Windows_NT' And Exists('$(PackagesConfig)')" />
95
- </Target>
96
-
97
- <Target Name="BuildPackage" DependsOnTargets="CheckPrerequisites">
98
- <Exec Command="$(BuildCommand)"
99
- Condition=" '$(OS)' != 'Windows_NT' " />
100
-
101
- <Exec Command="$(BuildCommand)"
102
- LogStandardErrorAsError="true"
103
- Condition=" '$(OS)' == 'Windows_NT' " />
104
- </Target>
105
-
106
- <UsingTask TaskName="DownloadNuGet" TaskFactory="CodeTaskFactory" AssemblyFile="$(MSBuildToolsPath)\Microsoft.Build.Tasks.v4.0.dll">
107
- <ParameterGroup>
108
- <OutputFilename ParameterType="System.String" Required="true" />
109
- </ParameterGroup>
110
- <Task>
111
- <Reference Include="System.Core" />
112
- <Using Namespace="System" />
113
- <Using Namespace="System.IO" />
114
- <Using Namespace="System.Net" />
115
- <Using Namespace="Microsoft.Build.Framework" />
116
- <Using Namespace="Microsoft.Build.Utilities" />
117
- <Code Type="Fragment" Language="cs">
118
- <![CDATA[
119
- try {
120
- OutputFilename = Path.GetFullPath(OutputFilename);
121
-
122
- Log.LogMessage("Downloading latest version of NuGet.exe...");
123
- WebClient webClient = new WebClient();
124
- webClient.DownloadFile("https://www.nuget.org/nuget.exe", OutputFilename);
125
-
126
- return true;
127
- }
128
- catch (Exception ex) {
129
- Log.LogErrorFromException(ex);
130
- return false;
131
- }
132
- ]]>
133
- </Code>
134
- </Task>
135
- </UsingTask>
136
- </Project>
@@ -1,10 +0,0 @@
1
- using System;
2
-
3
- namespace openstack.net
4
- {
5
- public interface Challenge
6
- {
7
- int Run (string[] args);
8
- }
9
- }
10
-
@@ -1,19 +0,0 @@
1
- using System;
2
- using System.IO;
3
-
4
- namespace openstack.net
5
- {
6
- public class RunChallenge
7
- {
8
- public static void Main (string[] args)
9
- {
10
- // Pacto cannot currently validate 100-Continue responses. See https://github.com/thoughtworks/pacto/issues/87
11
- System.Net.ServicePointManager.Expect100Continue = false;
12
- var challenge = Path.GetFileNameWithoutExtension(args[0]);
13
- var challenge_class = Type.GetType("openstack.net." + challenge);
14
- var challenge_object = Activator.CreateInstance(challenge_class) as Challenge;
15
- challenge_object.Run(args);
16
- }
17
- }
18
- }
19
-
@@ -1,24 +0,0 @@
1
- using System;
2
- using net.openstack.Providers.Rackspace;
3
- using net.openstack.Core.Providers;
4
- using net.openstack.Core.Exceptions.Response;
5
- using net.openstack.Providers.Rackspace.Objects;
6
-
7
- namespace openstack.net
8
- {
9
- class AuthenticateToken : Challenge
10
- {
11
- public int Run (string[] args)
12
- {
13
- var auth_url = new Uri(Environment.GetEnvironmentVariable ("RAX_AUTH_URL"));
14
- Console.WriteLine ("Connecting to " + auth_url);
15
- IIdentityProvider identityProvider = new CloudIdentityProvider (null, null, null, auth_url);
16
- identityProvider.Authenticate (new RackspaceCloudIdentity {
17
- Username = Environment.GetEnvironmentVariable("RAX_USERNAME"),
18
- APIKey = Environment.GetEnvironmentVariable("RAX_API_KEY")
19
- });
20
- Console.WriteLine ("Authenticated!");
21
- return 0;
22
- }
23
- }
24
- }