polytrix 0.0.1 → 0.1.0.pre

Sign up to get free protection for your applications and to get access to all the features.
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,133 +0,0 @@
1
- using System;
2
- using System.IO;
3
- using System.Text;
4
- using System.Net;
5
- using System.Collections;
6
- using System.Collections.Generic;
7
- using System.Reflection;
8
- using net.openstack.Core.Domain;
9
- using net.openstack.Core.Providers;
10
- using net.openstack.Providers.Rackspace;
11
- using net.openstack.Providers.Rackspace.Objects;
12
- using HttpMethod = JSIStudios.SimpleRESTServices.Client.HttpMethod;
13
-
14
- namespace openstack.net
15
- {
16
- class Weird : Challenge
17
- {
18
- public int Run (string[] args)
19
- {
20
- var auth_url = new Uri(Environment.GetEnvironmentVariable ("RAX_AUTH_URL"));
21
- Console.WriteLine ("Connecting to " + auth_url);
22
- CloudIdentity identity = new RackspaceCloudIdentity {
23
- Username = Environment.GetEnvironmentVariable("RAX_USERNAME"),
24
- APIKey = Environment.GetEnvironmentVariable("RAX_API_KEY")
25
- };
26
- // IIdentityProvider identityProvider = new CloudIdentityProvider (identity, auth_url);
27
- IIdentityProvider identityProvider = new CloudIdentityProvider (identity);
28
- // IObjectStorageProvider provider = new CloudBlockStorageProvider(testIdentity, "dfw", identityProvider, null);
29
- IObjectStorageProvider provider = new CloudFilesProvider(identityProvider);
30
- TestProtocolViolation(provider);
31
- Console.WriteLine ("Testing!");
32
- return 0;
33
- }
34
-
35
- public void TestProtocolViolation(IObjectStorageProvider provider)
36
- {
37
- try
38
- {
39
- TestTempUrlWithSpecialCharactersInObjectName(provider);
40
- }
41
- catch (WebException ex)
42
- {
43
- /* ServicePoint servicePoint = ServicePointManager.FindServicePoint(ex.Response.ResponseUri);
44
- FieldInfo table = typeof(ServicePointManager).GetField("s_ServicePointTable", BindingFlags.Static | BindingFlags.NonPublic);
45
- WeakReference weakReference = (WeakReference)((Hashtable)table.GetValue(null))[servicePoint.Address.GetLeftPart(UriPartial.Authority)];
46
- if (weakReference != null)
47
- weakReference.Target = null; */
48
- }
49
-
50
- TestTempUrlExpired(provider);
51
- }
52
-
53
- public void TestTempUrlExpired(IObjectStorageProvider provider)
54
- {
55
- string TestContainerPrefix = "sambug";
56
-
57
- string containerName = TestContainerPrefix + Path.GetRandomFileName();
58
- string objectName = Path.GetRandomFileName();
59
- string fileContents = "File contents!";
60
-
61
- Dictionary<string, string> accountMetadata = provider.GetAccountMetaData();
62
- string tempUrlKey;
63
- if (!accountMetadata.TryGetValue("Temp-Url-Key", out tempUrlKey))
64
- {
65
- tempUrlKey = Guid.NewGuid().ToString("N");
66
- accountMetadata = new Dictionary<string, string>(StringComparer.OrdinalIgnoreCase);
67
- accountMetadata["Temp-Url-Key"] = tempUrlKey;
68
- provider.UpdateAccountMetadata(accountMetadata);
69
- }
70
-
71
- ObjectStore result = provider.CreateContainer(containerName);
72
-
73
- Stream stream = new MemoryStream(Encoding.UTF8.GetBytes(fileContents));
74
- provider.CreateObject(containerName, stream, objectName);
75
-
76
- // verify a past time does not work
77
- try
78
- {
79
- DateTimeOffset expirationTime = DateTimeOffset.Now - TimeSpan.FromSeconds(3);
80
- Uri uri = ((CloudFilesProvider)provider).CreateTemporaryPublicUri(HttpMethod.GET, containerName, objectName, tempUrlKey, expirationTime);
81
- WebRequest request = HttpWebRequest.Create(uri);
82
- using (WebResponse response = request.GetResponse())
83
- {
84
- Stream cdnStream = response.GetResponseStream();
85
- StreamReader reader = new StreamReader(cdnStream, Encoding.UTF8);
86
- string text = reader.ReadToEnd();
87
- }
88
- }
89
- catch (WebException ex)
90
- {
91
- // Assert.AreEqual(HttpStatusCode.Unauthorized, ((HttpWebResponse)ex.Response).StatusCode);
92
- }
93
-
94
- provider.DeleteContainer(containerName, deleteObjects: true);
95
- }
96
-
97
- public void TestTempUrlWithSpecialCharactersInObjectName(IObjectStorageProvider provider)
98
- {
99
- string TestContainerPrefix = "sambug";
100
- string containerName = TestContainerPrefix + Path.GetRandomFileName();
101
- string objectName = "§ /\n\r 你好";
102
- string fileContents = "File contents!";
103
-
104
- Dictionary<string, string> accountMetadata = provider.GetAccountMetaData();
105
- string tempUrlKey;
106
- if (!accountMetadata.TryGetValue("Temp-Url-Key", out tempUrlKey))
107
- {
108
- tempUrlKey = Guid.NewGuid().ToString("N");
109
- accountMetadata = new Dictionary<string, string>(StringComparer.OrdinalIgnoreCase);
110
- accountMetadata["Temp-Url-Key"] = tempUrlKey;
111
- provider.UpdateAccountMetadata(accountMetadata);
112
- }
113
-
114
- ObjectStore result = provider.CreateContainer(containerName);
115
-
116
- Stream stream = new MemoryStream(Encoding.UTF8.GetBytes(fileContents));
117
- provider.CreateObject(containerName, stream, objectName);
118
-
119
- // verify a future time works
120
- DateTimeOffset expirationTime = DateTimeOffset.Now + TimeSpan.FromSeconds(10);
121
- Uri uri = ((CloudFilesProvider)provider).CreateTemporaryPublicUri(HttpMethod.GET, containerName, objectName, tempUrlKey, expirationTime);
122
- WebRequest request = HttpWebRequest.Create(uri);
123
- using (WebResponse response = request.GetResponse())
124
- {
125
- Stream cdnStream = response.GetResponseStream();
126
- StreamReader reader = new StreamReader(cdnStream, Encoding.UTF8);
127
- string text = reader.ReadToEnd();
128
- }
129
-
130
- provider.DeleteContainer(containerName, deleteObjects: true);
131
- }
132
- }
133
- }
@@ -1,58 +0,0 @@
1
- <?xml version="1.0" encoding="utf-8"?>
2
- <Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
3
- <PropertyGroup>
4
- <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
5
- <Platform Condition=" '$(Platform)' == '' ">x86</Platform>
6
- <ProductVersion>10.0.0</ProductVersion>
7
- <SchemaVersion>2.0</SchemaVersion>
8
- <ProjectGuid>{391B73DA-3906-4A09-9F92-A4196BB00ECF}</ProjectGuid>
9
- <OutputType>Exe</OutputType>
10
- <RootNamespace>openstack.net</RootNamespace>
11
- <AssemblyName>openstack.net</AssemblyName>
12
- </PropertyGroup>
13
- <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x86' ">
14
- <DebugSymbols>true</DebugSymbols>
15
- <DebugType>full</DebugType>
16
- <Optimize>false</Optimize>
17
- <OutputPath>bin\Debug</OutputPath>
18
- <DefineConstants>DEBUG;</DefineConstants>
19
- <ErrorReport>prompt</ErrorReport>
20
- <WarningLevel>4</WarningLevel>
21
- <Externalconsole>true</Externalconsole>
22
- <PlatformTarget>x86</PlatformTarget>
23
- </PropertyGroup>
24
- <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x86' ">
25
- <DebugType>full</DebugType>
26
- <Optimize>true</Optimize>
27
- <OutputPath>bin\Release</OutputPath>
28
- <ErrorReport>prompt</ErrorReport>
29
- <WarningLevel>4</WarningLevel>
30
- <Externalconsole>true</Externalconsole>
31
- <PlatformTarget>x86</PlatformTarget>
32
- </PropertyGroup>
33
- <ItemGroup>
34
- <Reference Include="System" />
35
- <Reference Include="Newtonsoft.Json">
36
- <HintPath>packages\Newtonsoft.Json.5.0.8\lib\net40\Newtonsoft.Json.dll</HintPath>
37
- </Reference>
38
- <Reference Include="SimpleRESTServices">
39
- <HintPath>packages\SimpleRESTServices.1.3.0.1\lib\net40\SimpleRESTServices.dll</HintPath>
40
- </Reference>
41
- <Reference Include="openstacknet">
42
- <HintPath>packages\openstack.net.1.3.2.1\lib\net40\openstacknet.dll</HintPath>
43
- </Reference>
44
- </ItemGroup>
45
- <ItemGroup>
46
- <Compile Include="challenges\*.cs" />
47
- <Compile Include="Challenge.cs" />
48
- <Compile Include="RunChallenge.cs" />
49
- </ItemGroup>
50
- <Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
51
- <Import Project="$(SolutionDir)\.nuget\NuGet.targets" Condition="Exists('$(SolutionDir)\.nuget\NuGet.targets')" />
52
- <ItemGroup>
53
- <None Include="packages.config" />
54
- </ItemGroup>
55
- <ItemGroup>
56
- <Folder Include="challenges\" />
57
- </ItemGroup>
58
- </Project>
@@ -1,27 +0,0 @@
1
- 
2
- Microsoft Visual Studio Solution File, Format Version 11.00
3
- # Visual Studio 2010
4
- Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "openstack.net", "openstack.net.csproj", "{391B73DA-3906-4A09-9F92-A4196BB00ECF}"
5
- EndProject
6
- Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = ".nuget", ".nuget", "{E9E4006E-EA17-47D4-AC7F-B092E8994661}"
7
- ProjectSection(SolutionItems) = preProject
8
- .nuget\NuGet.Config = .nuget\NuGet.Config
9
- .nuget\NuGet.exe = .nuget\NuGet.exe
10
- .nuget\NuGet.targets = .nuget\NuGet.targets
11
- EndProjectSection
12
- EndProject
13
- Global
14
- GlobalSection(SolutionConfigurationPlatforms) = preSolution
15
- Debug|x86 = Debug|x86
16
- Release|x86 = Release|x86
17
- EndGlobalSection
18
- GlobalSection(ProjectConfigurationPlatforms) = postSolution
19
- {391B73DA-3906-4A09-9F92-A4196BB00ECF}.Debug|x86.ActiveCfg = Debug|x86
20
- {391B73DA-3906-4A09-9F92-A4196BB00ECF}.Debug|x86.Build.0 = Debug|x86
21
- {391B73DA-3906-4A09-9F92-A4196BB00ECF}.Release|x86.ActiveCfg = Release|x86
22
- {391B73DA-3906-4A09-9F92-A4196BB00ECF}.Release|x86.Build.0 = Release|x86
23
- EndGlobalSection
24
- GlobalSection(MonoDevelopProperties) = preSolution
25
- StartupItem = openstack.net.csproj
26
- EndGlobalSection
27
- EndGlobal
@@ -1,8 +0,0 @@
1
- <Properties>
2
- <MonoDevelop.Ide.Workspace ActiveConfiguration="Debug|x86" />
3
- <MonoDevelop.Ide.Workbench />
4
- <MonoDevelop.Ide.DebuggingService.Breakpoints>
5
- <BreakpointStore />
6
- </MonoDevelop.Ide.DebuggingService.Breakpoints>
7
- <MonoDevelop.Ide.DebuggingService.PinnedWatches />
8
- </Properties>
@@ -1,6 +0,0 @@
1
- <?xml version="1.0" encoding="utf-8"?>
2
- <packages>
3
- <package id="Newtonsoft.Json" version="5.0.8" targetFramework="net40" />
4
- <package id="openstack.net" version="1.3.2.1" targetFramework="net40" />
5
- <package id="SimpleRESTServices" version="1.3.0.1" targetFramework="net40" />
6
- </packages>
@@ -1,2 +0,0 @@
1
- #!/bin/bash
2
- xbuild
@@ -1,2 +0,0 @@
1
- # Need a better way to install so it's on the path
2
- C:\Windows\Microsoft.NET\Framework64\v4.0.30319\MSBuild.exe openstack.net.sln
@@ -1,7 +0,0 @@
1
- #!/bin/bash
2
-
3
- # Might need to build again...
4
- # xbuild
5
- #
6
-
7
- mono --debug bin/Debug/openstack.net.exe "$@"
@@ -1 +0,0 @@
1
- .\bin\Debug\openstack.net.exe "$args"
@@ -1,4 +0,0 @@
1
- composer.phar
2
- composer.lock
3
- vendor/
4
- installer
@@ -1,64 +0,0 @@
1
- <?php
2
- require 'vendor/autoload.php';
3
- use OpenCloud\Rackspace;
4
-
5
- $region = getenv('RAX_REGION');
6
- $endpoint = getenv('RAX_AUTH_URL') . '/v2.0/';
7
- $credentials = array(
8
- 'username' => getenv('RAX_USERNAME'),
9
- 'apiKey' => getenv('RAX_API_KEY')
10
- );
11
-
12
- $rackspace = new Rackspace($endpoint, $credentials);
13
- $rackspace->Authenticate();
14
-
15
- $compute = $rackspace->computeService('cloudServersOpenStack', $region);
16
- $servers = $compute->serverList();
17
- $networks = $compute->networkList();
18
- // echo("Servers: ".var_export($servers));
19
- // echo("Networks: ".var_export($networks));
20
-
21
- $loadBalancerService = $rackspace->loadBalancerService('cloudLoadBalancers', $region);
22
- $load_balancers = $loadBalancerService->loadBalancerList();
23
- // echo("Cloud Load Balancers: ".var_export($load_balancers));
24
-
25
- $cloudFilesService = $rackspace->objectStoreService('cloudFiles', $region);
26
- $containers = $cloudFilesService->listContainers();
27
- // echo("Cloud Files Containers: ".var_export($containers));
28
-
29
- $databaseService = $rackspace->databaseService('cloudDatabases', $region);
30
- $databases = $databaseService->instanceList();
31
- // echo("Cloud Databases: ".var_export($databases));
32
-
33
- $dnsService = $rackspace->dnsService('cloudDNS', $region);
34
- $domains = $dnsService->domainList();
35
- // Can I get zones?
36
- // echo("Cloud DNS: $zones")
37
- // echo('Cloud DNS: $domains');
38
-
39
- $identityService = $rackspace->identityService();
40
- $users = $identityService->getUsers();
41
- // echo("Cloud Identity Users: ".var_export($users));
42
-
43
- $monitoringService = $rackspace->cloudMonitoringService('cloudMonitoring', 'ORD', 'publicURL');
44
- $checkTypes = $monitoringService->getCheckTypes();
45
- // Can I get the account info?
46
- // echo("Cloud Monitoring Account: $account")
47
- // echo("Cloud Monitoring Check Types: ".var_export($checkTypes));
48
-
49
- $blockStorageService = $rackspace->volumeService('cloudBlockStorage', 'DFW');
50
- $volumes = $blockStorageService->volumeList(false);
51
- // echo("Cloud Block Storage Volumes: ".var_export($volumes));
52
-
53
- # Cloud Backup?
54
-
55
- $autoscaleService = $rackspace->autoscaleService();
56
- $groups = $autoscaleService->groupList();
57
- // echo("Autoscale Scaling Groups: ".var_export($groups));
58
-
59
- # Cloud Queues
60
- $queuesService = $rackspace->queuesService('cloudQueues', $region);
61
- $queues = $queuesService->listQueues();
62
- // echo("Cloud Queues: ".var_export($queues));
63
-
64
- ?>
@@ -1,14 +0,0 @@
1
- <?php
2
- require 'vendor/autoload.php';
3
- use OpenCloud\Rackspace;
4
-
5
- $endpoint = getenv('RAX_AUTH_URL') . '/v2.0/';
6
- $credentials = array(
7
- 'username' => getenv('RAX_USERNAME'),
8
- 'apiKey' => getenv('RAX_API_KEY')
9
- );
10
-
11
- $rackspace = new Rackspace($endpoint, $credentials);
12
- $rackspace->Authenticate();
13
- echo('Authenticated')
14
- ?>
@@ -1,39 +0,0 @@
1
- <?php
2
- require('vendor/autoload.php');
3
- use OpenCloud\Rackspace;
4
-
5
- $endpoint = getenv('RAX_AUTH_URL') . '/v2.0/';
6
- $credentials = array(
7
- 'username' => getenv('RAX_USERNAME'),
8
- 'apiKey' => getenv('RAX_API_KEY')
9
- );
10
-
11
- $rackspace = new Rackspace($endpoint, $credentials);
12
- $compute = $rackspace->computeService('cloudServersOpenStack', getenv('RAX_REGION'));
13
-
14
- $image_id = getenv('SERVER1_IMAGE');
15
- $flavor_id = getenv('SERVER1_FLAVOR');
16
-
17
- // Create a server in DFW
18
- $server = $compute->Server();
19
- // create it
20
- print("Creating server...");
21
- $server->create(array(
22
- 'name' => 'php-opencloud server',
23
- // Using the image ID from ORD
24
- 'image' => $compute->image($image_id),
25
- // And a flavor that's too small
26
- 'flavor' => $compute->flavor($flavor_id)
27
- ));
28
- print("requested, now waiting...\n");
29
- print("ID=" . $server->id . "...\n");
30
- $server->WaitFor("ACTIVE", 600, 'dot');
31
- print("done\n");
32
- exit(0);
33
-
34
- function dot($server)
35
- {
36
- printf("%s %3d%%\n", $server->status, $server->progress);
37
- }
38
-
39
- ?>
@@ -1,19 +0,0 @@
1
- <?php
2
- require 'vendor/autoload.php';
3
- use OpenCloud\Rackspace;
4
-
5
- $region = getenv('RAX_REGION');
6
- $endpoint = getenv('RAX_AUTH_URL') . '/v2.0/';
7
- $credentials = array(
8
- 'username' => getenv('RAX_USERNAME'),
9
- 'apiKey' => getenv('RAX_API_KEY')
10
- );
11
- $directory = getenv('TEST_DIRECTORY');
12
- $file = getenv('TEST_FILE');
13
-
14
- $rackspace = new Rackspace($endpoint, $credentials);
15
- $cloudFilesService = $rackspace->objectStoreService('cloudFiles', $region);
16
- $container = $cloudFilesService->getContainer($directory);
17
- $object = $container->getPartialObject($file);
18
-
19
- ?>
@@ -1,5 +0,0 @@
1
- {
2
- "require": {
3
- "rackspace/php-opencloud": "*"
4
- }
5
- }
@@ -1,4 +0,0 @@
1
- #!/bin/bash
2
- wget --timestamping https://getcomposer.org/installer
3
- php installer
4
- php composer.phar update
@@ -1,2 +0,0 @@
1
- php -r "eval('?>'.file_get_contents('https://getcomposer.org/installer'));"
2
- php composer.phar install
@@ -1,2 +0,0 @@
1
- #!/bin/bash
2
- php $1
@@ -1 +0,0 @@
1
- php "$args"
@@ -1 +0,0 @@
1
- node_modules/
@@ -1,17 +0,0 @@
1
- var pkgcloud = require('pkgcloud');
2
-
3
- // create our client with your rackspace credentials
4
- var client = pkgcloud.providers.rackspace.compute.createClient({
5
- username: process.env.RAX_USERNAME,
6
- apiKey: process.env.RAX_API_KEY,
7
- authUrl: process.env.RAX_AUTH_URL,
8
- region: process.env.RAX_REGION
9
- });
10
- client.auth(function(err) {
11
- if (err) {
12
- console.log(err.message);
13
- process.exit(1);
14
- } else {
15
- console.log('Authenticated');
16
- }
17
- });
@@ -1,18 +0,0 @@
1
- var pkgcloud = require('pkgcloud');
2
-
3
- // create our client with your rackspace credentials
4
- var storageClient = pkgcloud.providers.rackspace.storage.createClient({
5
- username: process.env.RAX_USERNAME,
6
- apiKey: process.env.RAX_API_KEY,
7
- authUrl: process.env.RAX_AUTH_URL,
8
- region: process.env.RAX_REGION
9
- });
10
-
11
- storageClient.getFile(process.env.TEST_DIRECTORY, process.env.TEST_FILE, function (err, server) {
12
- if (err) {
13
- console.dir(err);
14
- return;
15
- }
16
-
17
- console.dir(server);
18
- });
@@ -1,2 +0,0 @@
1
- #!/bin/bash
2
- npm install pkgcloud
@@ -1 +0,0 @@
1
- npm install pkgcloud
@@ -1 +0,0 @@
1
- node "$args"
@@ -1,2 +0,0 @@
1
- pyrax_env/
2
-
@@ -1,61 +0,0 @@
1
- #!/usr/bin/env python
2
-
3
- import os
4
- import pyrax
5
-
6
- pyrax.set_setting("identity_type", "rackspace")
7
- # Create the identity object
8
- pyrax._create_identity()
9
- # Change its endpoint
10
- pyrax.identity.auth_endpoint = os.getenv('RAX_AUTH_URL') + '/v2.0/'
11
-
12
- # Authenticate
13
- pyrax.set_credentials(os.getenv('RAX_USERNAME'), os.getenv('RAX_API_KEY'))
14
-
15
- print "Authenticated"
16
-
17
- # Cloud Servers API - List Servers
18
- cs = pyrax.cloudservers
19
- print "Servers:", cs.servers.list()
20
-
21
- # Networks API - List Networks
22
- cnw = pyrax.cloud_networks
23
- print "Networks:", cnw.list()
24
-
25
- # Cloud Files API - List Files
26
- cf = pyrax.cloudfiles
27
- cf.http_log_debug = True
28
- print "Cloud Files Containers:", cf.list_containers()
29
-
30
- # Cloud Load Balancers
31
- clb = pyrax.cloud_loadbalancers
32
- print "Cloud Load Balancers:", clb.list()
33
-
34
- # Cloud Database
35
- cdb = pyrax.cloud_databases
36
- print "Cloud Databases:", cdb.list()
37
-
38
- # Cloud DNS
39
- cdns = pyrax.cloud_dns
40
- print "Cloud DNS:", cdns.list()
41
-
42
- # Cloud Identity
43
- # print "Cloud Identity Users:", pyrax.identity.list_users()
44
-
45
- # Cloud Monitoring
46
- cm = pyrax.cloud_monitoring
47
- print "Cloud Monitoring Account:", cm.get_account()
48
-
49
- # Cloud Block Storage
50
- cbs = pyrax.cloud_blockstorage
51
- print "Cloud Block Storage Volumes:", cbs.list()
52
-
53
- # Cloud Backup?
54
-
55
- # Autoscale
56
- ax = pyrax.autoscale
57
- print "Autoscale Scaling Groups:", ax.list()
58
-
59
- # Cloud Queues
60
- pq = pyrax.queues
61
- print "Cloud Queues:", pq.list()
@@ -1,17 +0,0 @@
1
- #!/usr/bin/env python
2
-
3
- import os
4
- import pyrax
5
-
6
- pyrax.set_setting("identity_type", "rackspace")
7
- # Create the identity object
8
- pyrax._create_identity()
9
- # Change its endpoint
10
- endpoint = os.getenv('RAX_AUTH_URL')
11
- if endpoint is not None:
12
- pyrax.identity.auth_endpoint = os.getenv('RAX_AUTH_URL') + '/v2.0/'
13
-
14
- # Authenticate
15
- pyrax.set_credentials(os.getenv('RAX_USERNAME'), os.getenv('RAX_API_KEY'))
16
-
17
- print "Authenticated"
@@ -1,22 +0,0 @@
1
- #!/usr/bin/env python
2
-
3
- import os
4
- import pyrax
5
-
6
- container_name = 'my-site'
7
- folder_to_upload = os.getenv('TEST_DIRECTORY')
8
- username = os.getenv('RAX_USERNAME')
9
- api_key = os.getenv('RAX_API_KEY')
10
- auth_endpoint = os.getenv('RAX_AUTH_URL')
11
-
12
- pyrax.set_setting("identity_type", "rackspace")
13
- # Create the identity object
14
- pyrax._create_identity()
15
- # Change its endpoint
16
- pyrax.identity.auth_endpoint = auth_endpoint + '/v2.0/'
17
-
18
- # Identity Connection - Authenticate
19
- pyrax.set_credentials(username, api_key)
20
-
21
- cf = pyrax.cloudfiles
22
- cf.make_container_public(container_name, ttl=900)
@@ -1,21 +0,0 @@
1
- #!/usr/bin/env python
2
-
3
- import os
4
- import pyrax
5
-
6
- container_name = os.getenv('CONTAINER_NAME')
7
- username = os.getenv('RAX_USERNAME')
8
- api_key = os.getenv('RAX_API_KEY')
9
- auth_endpoint = os.getenv('RAX_AUTH_URL')
10
-
11
- pyrax.set_setting("identity_type", "rackspace")
12
- # Create the identity object
13
- pyrax._create_identity()
14
- # Change its endpoint
15
- pyrax.identity.auth_endpoint = auth_endpoint + '/v2.0/'
16
-
17
- # Identity Connection - Authenticate
18
- pyrax.set_credentials(username, api_key)
19
-
20
- cf = pyrax.cloudfiles
21
- cont = cf.create_container("my-site")
@@ -1,35 +0,0 @@
1
- #!/usr/bin/env python
2
-
3
- import os
4
- import pyrax
5
- # [Configure Pyrax](https://github.com/rackspace/pyrax/blob/master/docs/getting_started.md#pyrax-configuration)
6
- # to use the Rackspace identity service.
7
-
8
- pyrax.set_setting("identity_type", "rackspace")
9
-
10
-
11
- # Change the authentication endpoint if requested, otherwise use the default
12
- custom_endpoint = os.getenv('RAX_AUTH_URL')
13
- if custom_endpoint is not None:
14
- pyrax._create_identity()
15
- # Pyrax requires the endpoint to contain the version
16
- pyrax.identity.auth_endpoint = custom_endpoint + '/v2.0/'
17
-
18
- # Set the region, needs to be done before authenticating.
19
- pyrax.set_setting('region', os.getenv('RAX_REGION'))
20
-
21
- # [Authenticate](https://github.com/rackspace/pyrax/blob/master/docs/getting_started.md#authenticating)
22
- # using an API key.
23
- pyrax.set_credentials(os.getenv('RAX_USERNAME'), os.getenv('RAX_API_KEY'))
24
-
25
- # Get the flavor and image for the test scenario.
26
- flavor = os.getenv('SERVER1_FLAVOR')
27
- image = os.getenv('SERVER1_IMAGE')
28
-
29
- # Create a [Cloud Servers](https://github.com/rackspace/pyrax/blob/master/docs/cloud_servers.md) connection.
30
- cs = pyrax.cloudservers
31
-
32
- # [Create a server](https://github.com/rackspace/pyrax/blob/master/docs/cloud_servers.md#creating-a-server)
33
- server = cs.servers.create("Pyrax Server", image, flavor)
34
- # and [wait for it to build](https://github.com/rackspace/pyrax/blob/master/docs/cloud_servers.md#waiting-for-server-completion).
35
- pyrax.utils.wait_for_build(server, verbose=True)