nucleus 0.1.0
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.
- checksums.yaml +7 -0
- data/.gitattributes +1 -0
- data/.gitignore +19 -0
- data/.rspec +3 -0
- data/.rubocop.yml +44 -0
- data/.travis.yml +21 -0
- data/CHANGELOG.md +19 -0
- data/CONTRIBUTING.md +13 -0
- data/Gemfile +16 -0
- data/Guardfile +22 -0
- data/LICENSE +21 -0
- data/README.md +675 -0
- data/Rakefile +137 -0
- data/bin/nucleus +91 -0
- data/bin/nucleus.bat +1 -0
- data/config.ru +18 -0
- data/config/adapters/cloud_control.yml +32 -0
- data/config/adapters/cloud_foundry_v2.yml +61 -0
- data/config/adapters/heroku.yml +13 -0
- data/config/adapters/openshift_v2.yml +20 -0
- data/config/nucleus_config.rb +47 -0
- data/lib/nucleus.rb +13 -0
- data/lib/nucleus/adapter_resolver.rb +115 -0
- data/lib/nucleus/adapters/base_adapter.rb +109 -0
- data/lib/nucleus/adapters/buildpack_translator.rb +79 -0
- data/lib/nucleus/adapters/v1/cloud_control/application.rb +108 -0
- data/lib/nucleus/adapters/v1/cloud_control/authentication.rb +27 -0
- data/lib/nucleus/adapters/v1/cloud_control/buildpacks.rb +23 -0
- data/lib/nucleus/adapters/v1/cloud_control/cloud_control.rb +153 -0
- data/lib/nucleus/adapters/v1/cloud_control/data.rb +76 -0
- data/lib/nucleus/adapters/v1/cloud_control/domains.rb +68 -0
- data/lib/nucleus/adapters/v1/cloud_control/lifecycle.rb +27 -0
- data/lib/nucleus/adapters/v1/cloud_control/log_poller.rb +71 -0
- data/lib/nucleus/adapters/v1/cloud_control/logs.rb +103 -0
- data/lib/nucleus/adapters/v1/cloud_control/regions.rb +32 -0
- data/lib/nucleus/adapters/v1/cloud_control/scaling.rb +17 -0
- data/lib/nucleus/adapters/v1/cloud_control/semantic_errors.rb +31 -0
- data/lib/nucleus/adapters/v1/cloud_control/services.rb +162 -0
- data/lib/nucleus/adapters/v1/cloud_control/token.rb +17 -0
- data/lib/nucleus/adapters/v1/cloud_control/vars.rb +88 -0
- data/lib/nucleus/adapters/v1/cloud_foundry_v2/app_states.rb +28 -0
- data/lib/nucleus/adapters/v1/cloud_foundry_v2/application.rb +111 -0
- data/lib/nucleus/adapters/v1/cloud_foundry_v2/authentication.rb +17 -0
- data/lib/nucleus/adapters/v1/cloud_foundry_v2/buildpacks.rb +23 -0
- data/lib/nucleus/adapters/v1/cloud_foundry_v2/cloud_foundry_v2.rb +141 -0
- data/lib/nucleus/adapters/v1/cloud_foundry_v2/data.rb +97 -0
- data/lib/nucleus/adapters/v1/cloud_foundry_v2/domains.rb +149 -0
- data/lib/nucleus/adapters/v1/cloud_foundry_v2/lifecycle.rb +41 -0
- data/lib/nucleus/adapters/v1/cloud_foundry_v2/logs.rb +303 -0
- data/lib/nucleus/adapters/v1/cloud_foundry_v2/regions.rb +33 -0
- data/lib/nucleus/adapters/v1/cloud_foundry_v2/scaling.rb +15 -0
- data/lib/nucleus/adapters/v1/cloud_foundry_v2/semantic_errors.rb +27 -0
- data/lib/nucleus/adapters/v1/cloud_foundry_v2/services.rb +286 -0
- data/lib/nucleus/adapters/v1/cloud_foundry_v2/vars.rb +80 -0
- data/lib/nucleus/adapters/v1/heroku/app_states.rb +57 -0
- data/lib/nucleus/adapters/v1/heroku/application.rb +93 -0
- data/lib/nucleus/adapters/v1/heroku/authentication.rb +27 -0
- data/lib/nucleus/adapters/v1/heroku/buildpacks.rb +27 -0
- data/lib/nucleus/adapters/v1/heroku/data.rb +78 -0
- data/lib/nucleus/adapters/v1/heroku/domains.rb +43 -0
- data/lib/nucleus/adapters/v1/heroku/heroku.rb +146 -0
- data/lib/nucleus/adapters/v1/heroku/lifecycle.rb +51 -0
- data/lib/nucleus/adapters/v1/heroku/logs.rb +108 -0
- data/lib/nucleus/adapters/v1/heroku/regions.rb +42 -0
- data/lib/nucleus/adapters/v1/heroku/scaling.rb +28 -0
- data/lib/nucleus/adapters/v1/heroku/semantic_errors.rb +23 -0
- data/lib/nucleus/adapters/v1/heroku/services.rb +168 -0
- data/lib/nucleus/adapters/v1/heroku/vars.rb +65 -0
- data/lib/nucleus/adapters/v1/openshift_v2/app_states.rb +68 -0
- data/lib/nucleus/adapters/v1/openshift_v2/application.rb +108 -0
- data/lib/nucleus/adapters/v1/openshift_v2/authentication.rb +21 -0
- data/lib/nucleus/adapters/v1/openshift_v2/data.rb +96 -0
- data/lib/nucleus/adapters/v1/openshift_v2/domains.rb +37 -0
- data/lib/nucleus/adapters/v1/openshift_v2/lifecycle.rb +60 -0
- data/lib/nucleus/adapters/v1/openshift_v2/logs.rb +106 -0
- data/lib/nucleus/adapters/v1/openshift_v2/openshift_v2.rb +125 -0
- data/lib/nucleus/adapters/v1/openshift_v2/regions.rb +58 -0
- data/lib/nucleus/adapters/v1/openshift_v2/scaling.rb +39 -0
- data/lib/nucleus/adapters/v1/openshift_v2/semantic_errors.rb +40 -0
- data/lib/nucleus/adapters/v1/openshift_v2/services.rb +173 -0
- data/lib/nucleus/adapters/v1/openshift_v2/vars.rb +49 -0
- data/lib/nucleus/adapters/v1/stub_adapter.rb +464 -0
- data/lib/nucleus/core/adapter_authentication_inductor.rb +62 -0
- data/lib/nucleus/core/adapter_extensions/auth/auth_client.rb +44 -0
- data/lib/nucleus/core/adapter_extensions/auth/authentication_retry_wrapper.rb +79 -0
- data/lib/nucleus/core/adapter_extensions/auth/expiring_token_auth_client.rb +53 -0
- data/lib/nucleus/core/adapter_extensions/auth/http_basic_auth_client.rb +37 -0
- data/lib/nucleus/core/adapter_extensions/auth/o_auth2_auth_client.rb +95 -0
- data/lib/nucleus/core/adapter_extensions/auth/token_auth_client.rb +36 -0
- data/lib/nucleus/core/adapter_extensions/http_client.rb +177 -0
- data/lib/nucleus/core/adapter_extensions/http_tail_client.rb +26 -0
- data/lib/nucleus/core/adapter_extensions/tail_stopper.rb +25 -0
- data/lib/nucleus/core/common/errors/ambiguous_adapter_error.rb +7 -0
- data/lib/nucleus/core/common/errors/file_existence_error.rb +7 -0
- data/lib/nucleus/core/common/errors/startup_error.rb +12 -0
- data/lib/nucleus/core/common/exit_codes.rb +25 -0
- data/lib/nucleus/core/common/files/application_repo_sanitizer.rb +52 -0
- data/lib/nucleus/core/common/files/archive_extractor.rb +112 -0
- data/lib/nucleus/core/common/files/archiver.rb +91 -0
- data/lib/nucleus/core/common/link_generator.rb +46 -0
- data/lib/nucleus/core/common/logging/logging.rb +52 -0
- data/lib/nucleus/core/common/logging/multi_logger.rb +59 -0
- data/lib/nucleus/core/common/logging/request_log_formatter.rb +48 -0
- data/lib/nucleus/core/common/ssh_handler.rb +108 -0
- data/lib/nucleus/core/common/stream_callback.rb +27 -0
- data/lib/nucleus/core/common/thread_config_accessor.rb +85 -0
- data/lib/nucleus/core/common/url_converter.rb +28 -0
- data/lib/nucleus/core/enums/application_states.rb +26 -0
- data/lib/nucleus/core/enums/logfile_types.rb +28 -0
- data/lib/nucleus/core/error_messages.rb +127 -0
- data/lib/nucleus/core/errors/adapter_error.rb +13 -0
- data/lib/nucleus/core/errors/adapter_missing_implementation_error.rb +12 -0
- data/lib/nucleus/core/errors/adapter_request_error.rb +10 -0
- data/lib/nucleus/core/errors/adapter_resource_not_found_error.rb +10 -0
- data/lib/nucleus/core/errors/endpoint_authentication_error.rb +10 -0
- data/lib/nucleus/core/errors/platform_specific_semantic_error.rb +12 -0
- data/lib/nucleus/core/errors/platform_timeout_error.rb +10 -0
- data/lib/nucleus/core/errors/platform_unavailable_error.rb +10 -0
- data/lib/nucleus/core/errors/semantic_adapter_request_error.rb +19 -0
- data/lib/nucleus/core/errors/unknown_adapter_call_error.rb +10 -0
- data/lib/nucleus/core/file_handling/archive_converter.rb +29 -0
- data/lib/nucleus/core/file_handling/file_manager.rb +64 -0
- data/lib/nucleus/core/file_handling/git_deployer.rb +133 -0
- data/lib/nucleus/core/file_handling/git_repo_analyzer.rb +23 -0
- data/lib/nucleus/core/import/adapter_configuration.rb +53 -0
- data/lib/nucleus/core/import/vendor_parser.rb +28 -0
- data/lib/nucleus/core/import/version_detector.rb +18 -0
- data/lib/nucleus/core/models/abstract_model.rb +29 -0
- data/lib/nucleus/core/models/endpoint.rb +30 -0
- data/lib/nucleus/core/models/provider.rb +26 -0
- data/lib/nucleus/core/models/vendor.rb +22 -0
- data/lib/nucleus/ext/kernel.rb +5 -0
- data/lib/nucleus/ext/regexp.rb +49 -0
- data/lib/nucleus/os.rb +15 -0
- data/lib/nucleus/root_dir.rb +13 -0
- data/lib/nucleus/scripts/finalize.rb +8 -0
- data/lib/nucleus/scripts/initialize.rb +9 -0
- data/lib/nucleus/scripts/initialize_config_defaults.rb +26 -0
- data/lib/nucleus/scripts/load.rb +17 -0
- data/lib/nucleus/scripts/load_dependencies.rb +43 -0
- data/lib/nucleus/scripts/setup_config.rb +28 -0
- data/lib/nucleus/scripts/shutdown.rb +11 -0
- data/lib/nucleus/version.rb +3 -0
- data/nucleus.gemspec +88 -0
- data/public/robots.txt +2 -0
- data/public/swagger-ui/css/reset.css +125 -0
- data/public/swagger-ui/css/screen.css +1224 -0
- data/public/swagger-ui/images/apple-touch-icon-114x114.png +0 -0
- data/public/swagger-ui/images/apple-touch-icon-120x120.png +0 -0
- data/public/swagger-ui/images/apple-touch-icon-144x144.png +0 -0
- data/public/swagger-ui/images/apple-touch-icon-152x152.png +0 -0
- data/public/swagger-ui/images/apple-touch-icon-57x57.png +0 -0
- data/public/swagger-ui/images/apple-touch-icon-60x60.png +0 -0
- data/public/swagger-ui/images/apple-touch-icon-72x72.png +0 -0
- data/public/swagger-ui/images/apple-touch-icon-76x76.png +0 -0
- data/public/swagger-ui/images/explorer_icons.png +0 -0
- data/public/swagger-ui/images/favicon-128.png +0 -0
- data/public/swagger-ui/images/favicon-16x16.png +0 -0
- data/public/swagger-ui/images/favicon-196x196.png +0 -0
- data/public/swagger-ui/images/favicon-32x32.png +0 -0
- data/public/swagger-ui/images/favicon-96x96.png +0 -0
- data/public/swagger-ui/images/favicon.ico +0 -0
- data/public/swagger-ui/images/logo_small.png +0 -0
- data/public/swagger-ui/images/mstile-144x144.png +0 -0
- data/public/swagger-ui/images/mstile-150x150.png +0 -0
- data/public/swagger-ui/images/mstile-310x150.png +0 -0
- data/public/swagger-ui/images/mstile-310x310.png +0 -0
- data/public/swagger-ui/images/mstile-70x70.png +0 -0
- data/public/swagger-ui/images/pet_store_api.png +0 -0
- data/public/swagger-ui/images/throbber.gif +0 -0
- data/public/swagger-ui/images/wordnik_api.png +0 -0
- data/public/swagger-ui/index.html +107 -0
- data/public/swagger-ui/lib/backbone-min.js +38 -0
- data/public/swagger-ui/lib/handlebars-1.0.0.js +2278 -0
- data/public/swagger-ui/lib/highlight.7.3.pack.js +1 -0
- data/public/swagger-ui/lib/jquery-1.8.0.min.js +2 -0
- data/public/swagger-ui/lib/jquery.ba-bbq.min.js +18 -0
- data/public/swagger-ui/lib/jquery.slideto.min.js +1 -0
- data/public/swagger-ui/lib/jquery.wiggle.min.js +8 -0
- data/public/swagger-ui/lib/shred.bundle.js +2765 -0
- data/public/swagger-ui/lib/shred/content.js +193 -0
- data/public/swagger-ui/lib/swagger-oauth.js +211 -0
- data/public/swagger-ui/lib/swagger.js +1653 -0
- data/public/swagger-ui/lib/underscore-min.js +32 -0
- data/public/swagger-ui/o2c.html +15 -0
- data/public/swagger-ui/redirect.html +14 -0
- data/public/swagger-ui/swagger-ui.js +2324 -0
- data/public/swagger-ui/swagger-ui.min.js +1 -0
- data/schemas/api.adapter.schema.yml +31 -0
- data/schemas/api.requirements.schema.yml +17 -0
- data/spec/factories/models.rb +61 -0
- data/spec/integration/api/auth_spec.rb +58 -0
- data/spec/integration/api/endpoints_spec.rb +167 -0
- data/spec/integration/api/errors_spec.rb +47 -0
- data/spec/integration/api/providers_spec.rb +157 -0
- data/spec/integration/api/swagger_schema_spec.rb +64 -0
- data/spec/integration/api/vendors_spec.rb +45 -0
- data/spec/integration/integration_spec_helper.rb +27 -0
- data/spec/integration/test_data_generator.rb +55 -0
- data/spec/nucleus_git_key.pem +51 -0
- data/spec/spec_helper.rb +98 -0
- data/spec/support/shared_example_request_types.rb +99 -0
- data/spec/test_suites.rake +31 -0
- data/spec/unit/adapters/archive_converter_spec.rb +25 -0
- data/spec/unit/adapters/file_manager_spec.rb +93 -0
- data/spec/unit/adapters/git_deployer_spec.rb +262 -0
- data/spec/unit/adapters/v1/stub_spec.rb +14 -0
- data/spec/unit/common/helpers/auth_helper_spec.rb +73 -0
- data/spec/unit/common/oauth2_auth_client_spec.rb +108 -0
- data/spec/unit/common/regexp_spec.rb +33 -0
- data/spec/unit/common/request_log_formatter_spec.rb +108 -0
- data/spec/unit/common/thread_config_accessor_spec.rb +97 -0
- data/spec/unit/models/endpoint_spec.rb +83 -0
- data/spec/unit/models/provider_spec.rb +102 -0
- data/spec/unit/models/vendor_spec.rb +100 -0
- data/spec/unit/schemas/adapter_schema_spec.rb +16 -0
- data/spec/unit/schemas/adapter_validation_spec.rb +56 -0
- data/spec/unit/schemas/requirements_schema_spec.rb +16 -0
- data/spec/unit/unit_spec_helper.rb +11 -0
- data/tasks/compatibility.rake +113 -0
- data/tasks/evaluation.rake +162 -0
- data/wiki/adapter_tests.md +99 -0
- data/wiki/implement_new_adapter.md +155 -0
- metadata +836 -0
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
# Adapter Tests
|
|
2
|
+
|
|
3
|
+
* [Recording](#recording)
|
|
4
|
+
* [Missing or invalid VCR recording](#missing-or-invalid-vcr-recording)
|
|
5
|
+
* [Sensitive data](#sensitive-data)
|
|
6
|
+
|
|
7
|
+
The adapter tests rely on previously recorded interactions with the provider's endpoints.
|
|
8
|
+
They do not invoke external HTTP requests.
|
|
9
|
+
When code changes result in different requests, the interactions have to be re-recorded.
|
|
10
|
+
|
|
11
|
+
```
|
|
12
|
+
bundle exec rake spec:suite:adapters
|
|
13
|
+
```
|
|
14
|
+
|
|
15
|
+
Each interaction of the adapter tests shall be made only once.
|
|
16
|
+
If there are further tests that all rely on the same request, the described spec shall be marked with `:as_cassette`.
|
|
17
|
+
All subsequent tests in this group now use the initial recording.
|
|
18
|
+
|
|
19
|
+
```ruby
|
|
20
|
+
describe 'application services list empty', :as_cassette, cassette_group: 'application-services;list' do
|
|
21
|
+
before { get "/endpoints/#{@endpoint}/applications/#{@app_all[:updated_name]}/services", request_headers }
|
|
22
|
+
include_examples 'a valid GET request'
|
|
23
|
+
include_examples 'installed service list schema'
|
|
24
|
+
it 'does not contain any services' do
|
|
25
|
+
expect(json_body[:services]).to eql([])
|
|
26
|
+
end
|
|
27
|
+
end
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
The `cassette_group: 'application-services;list'` marker in this example forces the `VCR` cassettes to be placed into a
|
|
31
|
+
directory structure of `application-services/list/{testname}.rec`.
|
|
32
|
+
With this structure we can automatically evaluate request differences for a specific operation.
|
|
33
|
+
|
|
34
|
+
## Recording
|
|
35
|
+
|
|
36
|
+
Recording new VCR cassettes requires a valid user account at the platform that shall be recorded.
|
|
37
|
+
The `endpoint-id` that will be used during the recording is hard-coded as `@endpoint` variable inside the main adapter test file, e.g. `spec/adapter/v1/heroku/heroku_spec.rb`.
|
|
38
|
+
The credentials must be specified in the `config/.credentials` file.
|
|
39
|
+
|
|
40
|
+
The file is ignored by git and must _never_ be committed. It must use the following syntax:
|
|
41
|
+
|
|
42
|
+
```
|
|
43
|
+
endpoint-id:
|
|
44
|
+
user: 'my_username'
|
|
45
|
+
password: 'my_usernames_password'
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
Additional attributes can be used to filter out personal data from the recordings that may be included in the HTTP interactions (see [Sensitive data](#sensitive-data)).
|
|
49
|
+
A complete .credentials file could then look like:
|
|
50
|
+
|
|
51
|
+
```yaml
|
|
52
|
+
heroku:
|
|
53
|
+
id: 'my_heroku_user_id'
|
|
54
|
+
user: 'my_heroku_username'
|
|
55
|
+
password: 'my_heroku_usernames_password'
|
|
56
|
+
|
|
57
|
+
bluemix-eu-gb:
|
|
58
|
+
user: 'my_bluemix_username'
|
|
59
|
+
password: 'my_bluemix_usernames_password'
|
|
60
|
+
username: 'my_bluemix_username_with_encoded_umlauts'
|
|
61
|
+
|
|
62
|
+
cloudcontrol:
|
|
63
|
+
user: 'my_cc_email'
|
|
64
|
+
password: 'my_cc_usernames_password'
|
|
65
|
+
username: 'my_cc_username'
|
|
66
|
+
|
|
67
|
+
openshift-online:
|
|
68
|
+
user: 'my_os_email'
|
|
69
|
+
password: 'my_os_usernames_password'
|
|
70
|
+
id: 'my_os_user_id'
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
To record the interactions, you only have to call the Rake `record` task:
|
|
74
|
+
|
|
75
|
+
```
|
|
76
|
+
bundle exec rake record
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
To only record interactions for a specific adapter, simply append the adapter name to the record namespace:
|
|
80
|
+
|
|
81
|
+
```
|
|
82
|
+
bundle exec rake record:heroku
|
|
83
|
+
```
|
|
84
|
+
|
|
85
|
+
**Notes:**
|
|
86
|
+
* You must be allowed to create at least 3 additional applications with your account, otherwise the quota restrictions will invalidate the test results.
|
|
87
|
+
* A complete recording of a single vendor usually takes 5 up to 15 minutes. Openshift currently takes more than 30 minutes.
|
|
88
|
+
If you only require a certain functionality to be tested (during development), make sure to comment out irrelevant sections in the `spec/adapter/support/shared_example_adapters_valid.rb` file.
|
|
89
|
+
* cloudControl requires you to change the application names if the previous recording was made within the last 2 days, otherwise if fails because the name is still locked.
|
|
90
|
+
Change the name in the `spec/adapter/v1/cloud_control_spec.rb`.
|
|
91
|
+
|
|
92
|
+
### Missing or invalid VCR recording
|
|
93
|
+
|
|
94
|
+
If the recorded cassette is invalid due to a recent change, tests that use this cassette are going to fail.
|
|
95
|
+
|
|
96
|
+
### Sensitive data
|
|
97
|
+
|
|
98
|
+
Most of the requests contain sensitive data that we do not want to be included in the recorded cassettes.
|
|
99
|
+
By implementation, the API tokens and **all** data that is specified in the `config/.credentials` file are filtered.
|
|
@@ -0,0 +1,155 @@
|
|
|
1
|
+
# How to implement a new adapter
|
|
2
|
+
|
|
3
|
+
In total, the process can be grouped into X steps.
|
|
4
|
+
To prevent errors, they should be executed in the following order:
|
|
5
|
+
|
|
6
|
+
* [Add the vendor to the configuration](#add-the-vendor-to-the-configuration)
|
|
7
|
+
* [Create the adapter implementation files](#create-the-adapter-implementation-files)
|
|
8
|
+
* [Implementation](#implementation)
|
|
9
|
+
|
|
10
|
+
## Add the vendor to the configuration
|
|
11
|
+
|
|
12
|
+
Open the directory `config/adapters` and create a new `.yml` configuration file for your platform:
|
|
13
|
+
|
|
14
|
+
```yaml
|
|
15
|
+
---
|
|
16
|
+
name: "Openshift 2"
|
|
17
|
+
id: "openshift_v2"
|
|
18
|
+
providers:
|
|
19
|
+
-
|
|
20
|
+
name: "Openshift Online"
|
|
21
|
+
id: "openshift-online"
|
|
22
|
+
endpoints:
|
|
23
|
+
-
|
|
24
|
+
name: "Openshift Online"
|
|
25
|
+
id: "openshift-online"
|
|
26
|
+
url: "openshift.redhat.com/broker/rest"
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
The first level entry describes the vendor (here: Openshift 2).
|
|
30
|
+
**name:** The actual name of the vendor or his platform. Serves as description.
|
|
31
|
+
**id:** The ID under which the vendor will be available for use in the API. Should be URI compatible!
|
|
32
|
+
Different platform versions shall be distinguished by appending `_v{version}` to the *ID*.
|
|
33
|
+
|
|
34
|
+
The second level are the providers that shall be known to serve a PaaS running the vendors platform.
|
|
35
|
+
**name:** The actual name of the provider, which often equals to the vendor. Serves as description.
|
|
36
|
+
**id:** The ID under which the provider will be available for use in the API. Should be URI compatible!
|
|
37
|
+
|
|
38
|
+
The third level describes all API endpoints.
|
|
39
|
+
**name:** The actual name of the endpoint, which often equals to the provider. Serves as description.
|
|
40
|
+
**id:** The ID under which the endpoint will be available for use in the API. Should be URI compatible!
|
|
41
|
+
|
|
42
|
+
**NOTE:** Providers and Endpoints are optional as they could be added during runtime.
|
|
43
|
+
|
|
44
|
+
## Create the adapter implementation files
|
|
45
|
+
|
|
46
|
+
Start by selecting the API version you want to implement the adapter for.
|
|
47
|
+
Next, create a copy of the `app/adapters/{API_VERSION}/stub_adapter.rb` matching the API version.
|
|
48
|
+
The pasted file must (!) be copied to `app/adapters/{API_VERSION}/{vendor_id}/{vendor_id}.rb`.
|
|
49
|
+
Please make sure that the `{vendor_id}` actually is equal to the **ID** that was assigned to the vendor in the `.yml` configuration file.
|
|
50
|
+
|
|
51
|
+
Open the new adapter file and change the namespace so that it matches the chosen naming and inherits from the `Stub`.
|
|
52
|
+
|
|
53
|
+
```ruby
|
|
54
|
+
module Nucleus
|
|
55
|
+
module Adapters
|
|
56
|
+
module {API_VERSION}
|
|
57
|
+
class {VENDOR_ID} < Stub
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
Now the adapter should already be available in the API, but all calls would fail and return `501 Not implemented`.
|
|
61
|
+
|
|
62
|
+
## Tests
|
|
63
|
+
|
|
64
|
+
To include your adapter in the automatic adapter tests, we must create:
|
|
65
|
+
|
|
66
|
+
```
|
|
67
|
+
spec/adapter/v1/{VENDOR_ID}/{VENDOR_ID}_spec.rb
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
In this test file, you can use this basic template:
|
|
71
|
+
|
|
72
|
+
```ruby
|
|
73
|
+
require 'spec/adapter/adapter_spec_helper'
|
|
74
|
+
|
|
75
|
+
describe Nucleus::Adapters::{API_VERSION}::{VENDOR_CLASS} do
|
|
76
|
+
before :all do
|
|
77
|
+
# skip these example groups / tests for this adapter. E.g.:
|
|
78
|
+
# @unsupported = ['with valid credentials is compliant and application update']
|
|
79
|
+
@unsupported = []
|
|
80
|
+
@endpoint = '{ENDPOINT_ID}'
|
|
81
|
+
@api_version = '{API_VERSION}'
|
|
82
|
+
@app_min = { original_name: 'nucleustestappminproperties',
|
|
83
|
+
updated_name: 'nucleustestappminproperties',
|
|
84
|
+
region: 'default' }
|
|
85
|
+
@app_all = { original_name: 'nucleustestappallupdated',
|
|
86
|
+
updated_name: 'nucleustestappallupdated',
|
|
87
|
+
region: 'default' }
|
|
88
|
+
end
|
|
89
|
+
before do |example|
|
|
90
|
+
if skip_example?(described_class, example.metadata[:full_description], @unsupported)
|
|
91
|
+
skip('This feature is currently not supported by CloudControl - 501')
|
|
92
|
+
end
|
|
93
|
+
# reload adapter for each test
|
|
94
|
+
@adapter = load_adapter(@endpoint, @api_version)
|
|
95
|
+
end
|
|
96
|
+
|
|
97
|
+
context 'with invalid credentials' do
|
|
98
|
+
let!(:request_headers) { credentials(@endpoint, false) }
|
|
99
|
+
include_examples 'compliant adapter with invalid credentials'
|
|
100
|
+
end
|
|
101
|
+
|
|
102
|
+
describe 'with missing credentials' do
|
|
103
|
+
let!(:request_headers) { {} }
|
|
104
|
+
include_examples 'compliant adapter with invalid credentials'
|
|
105
|
+
end
|
|
106
|
+
|
|
107
|
+
context 'with valid credentials' do
|
|
108
|
+
let!(:request_headers) { credentials(@endpoint) }
|
|
109
|
+
include_examples 'compliant adapter with valid credentials'
|
|
110
|
+
|
|
111
|
+
describe 'native adapter call' do
|
|
112
|
+
describe 'against endpoint' do
|
|
113
|
+
describe 'does fetch all available addons' do
|
|
114
|
+
before do
|
|
115
|
+
get "/endpoints/#{@endpoint}/call/addon", request_headers
|
|
116
|
+
end
|
|
117
|
+
include_examples 'a valid GET request'
|
|
118
|
+
it 'with the specified structure' do
|
|
119
|
+
# assumes there is at least one addon
|
|
120
|
+
expect(json_body[0].keys).to include(:name, :stage, :options)
|
|
121
|
+
end
|
|
122
|
+
it 'with the matching content declaration' do
|
|
123
|
+
expect_json_types(:array)
|
|
124
|
+
end
|
|
125
|
+
end
|
|
126
|
+
end
|
|
127
|
+
end
|
|
128
|
+
end
|
|
129
|
+
end
|
|
130
|
+
```
|
|
131
|
+
|
|
132
|
+
## Implementation
|
|
133
|
+
|
|
134
|
+
Now we can start with the actual implementation. But how do you know what the adapter shall invoke and return?
|
|
135
|
+
|
|
136
|
+
The expected behaviour of the adapter methods was described in the copied `stub_adapter.rb` and should therefore be in your adapter, too.
|
|
137
|
+
Within the adapter tests most of the behaviour will also be tested so that you receive feedback and get to known which parts are still not properly implemented.
|
|
138
|
+
|
|
139
|
+
### Structure
|
|
140
|
+
|
|
141
|
+
In the already implemented adapters, we did split the logic into multiple modules.
|
|
142
|
+
With this approach, we could separate different parts of the application that are not actually related and also comply with the style guidelines that are monitored by Rubocop.
|
|
143
|
+
|
|
144
|
+
### Authentication
|
|
145
|
+
|
|
146
|
+
Nucleus already offers quite some authentication approaches that could fit your needs.
|
|
147
|
+
You can find the authentication clients at `app/core/auth`.
|
|
148
|
+
|
|
149
|
+
### What if the platform does not support action X?
|
|
150
|
+
|
|
151
|
+
Well, it depends ;-)
|
|
152
|
+
|
|
153
|
+
For most problems, there always is a workaround that involves some effort implement.
|
|
154
|
+
If the action should actually not be supported on the platform, for instance as *cloud Control* does not support to *start* or *stop* applications,
|
|
155
|
+
the method shall not be present in your adapter so that the `Stub` can provide a common error response.
|
metadata
ADDED
|
@@ -0,0 +1,836 @@
|
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
|
2
|
+
name: nucleus
|
|
3
|
+
version: !ruby/object:Gem::Version
|
|
4
|
+
version: 0.1.0
|
|
5
|
+
platform: ruby
|
|
6
|
+
authors:
|
|
7
|
+
- Stefan Kolb
|
|
8
|
+
- Cedric Röck
|
|
9
|
+
autorequire:
|
|
10
|
+
bindir: bin
|
|
11
|
+
cert_chain: []
|
|
12
|
+
date: 2015-10-28 00:00:00.000000000 Z
|
|
13
|
+
dependencies:
|
|
14
|
+
- !ruby/object:Gem::Dependency
|
|
15
|
+
name: configatron
|
|
16
|
+
requirement: !ruby/object:Gem::Requirement
|
|
17
|
+
requirements:
|
|
18
|
+
- - "~>"
|
|
19
|
+
- !ruby/object:Gem::Version
|
|
20
|
+
version: '4.5'
|
|
21
|
+
type: :runtime
|
|
22
|
+
prerelease: false
|
|
23
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
24
|
+
requirements:
|
|
25
|
+
- - "~>"
|
|
26
|
+
- !ruby/object:Gem::Version
|
|
27
|
+
version: '4.5'
|
|
28
|
+
- !ruby/object:Gem::Dependency
|
|
29
|
+
name: daybreak
|
|
30
|
+
requirement: !ruby/object:Gem::Requirement
|
|
31
|
+
requirements:
|
|
32
|
+
- - "~>"
|
|
33
|
+
- !ruby/object:Gem::Version
|
|
34
|
+
version: '0.3'
|
|
35
|
+
type: :runtime
|
|
36
|
+
prerelease: false
|
|
37
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
38
|
+
requirements:
|
|
39
|
+
- - "~>"
|
|
40
|
+
- !ruby/object:Gem::Version
|
|
41
|
+
version: '0.3'
|
|
42
|
+
- !ruby/object:Gem::Dependency
|
|
43
|
+
name: em-http-request
|
|
44
|
+
requirement: !ruby/object:Gem::Requirement
|
|
45
|
+
requirements:
|
|
46
|
+
- - "~>"
|
|
47
|
+
- !ruby/object:Gem::Version
|
|
48
|
+
version: '1.1'
|
|
49
|
+
type: :runtime
|
|
50
|
+
prerelease: false
|
|
51
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
52
|
+
requirements:
|
|
53
|
+
- - "~>"
|
|
54
|
+
- !ruby/object:Gem::Version
|
|
55
|
+
version: '1.1'
|
|
56
|
+
- !ruby/object:Gem::Dependency
|
|
57
|
+
name: excon
|
|
58
|
+
requirement: !ruby/object:Gem::Requirement
|
|
59
|
+
requirements:
|
|
60
|
+
- - "~>"
|
|
61
|
+
- !ruby/object:Gem::Version
|
|
62
|
+
version: '0.44'
|
|
63
|
+
type: :runtime
|
|
64
|
+
prerelease: false
|
|
65
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
66
|
+
requirements:
|
|
67
|
+
- - "~>"
|
|
68
|
+
- !ruby/object:Gem::Version
|
|
69
|
+
version: '0.44'
|
|
70
|
+
- !ruby/object:Gem::Dependency
|
|
71
|
+
name: faye-websocket
|
|
72
|
+
requirement: !ruby/object:Gem::Requirement
|
|
73
|
+
requirements:
|
|
74
|
+
- - "~>"
|
|
75
|
+
- !ruby/object:Gem::Version
|
|
76
|
+
version: '0.9'
|
|
77
|
+
type: :runtime
|
|
78
|
+
prerelease: false
|
|
79
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
80
|
+
requirements:
|
|
81
|
+
- - "~>"
|
|
82
|
+
- !ruby/object:Gem::Version
|
|
83
|
+
version: '0.9'
|
|
84
|
+
- !ruby/object:Gem::Dependency
|
|
85
|
+
name: git
|
|
86
|
+
requirement: !ruby/object:Gem::Requirement
|
|
87
|
+
requirements:
|
|
88
|
+
- - "~>"
|
|
89
|
+
- !ruby/object:Gem::Version
|
|
90
|
+
version: '1.2'
|
|
91
|
+
type: :runtime
|
|
92
|
+
prerelease: false
|
|
93
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
94
|
+
requirements:
|
|
95
|
+
- - "~>"
|
|
96
|
+
- !ruby/object:Gem::Version
|
|
97
|
+
version: '1.2'
|
|
98
|
+
- !ruby/object:Gem::Dependency
|
|
99
|
+
name: grape
|
|
100
|
+
requirement: !ruby/object:Gem::Requirement
|
|
101
|
+
requirements:
|
|
102
|
+
- - "~>"
|
|
103
|
+
- !ruby/object:Gem::Version
|
|
104
|
+
version: '0.12'
|
|
105
|
+
type: :runtime
|
|
106
|
+
prerelease: false
|
|
107
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
108
|
+
requirements:
|
|
109
|
+
- - "~>"
|
|
110
|
+
- !ruby/object:Gem::Version
|
|
111
|
+
version: '0.12'
|
|
112
|
+
- !ruby/object:Gem::Dependency
|
|
113
|
+
name: grape-entity
|
|
114
|
+
requirement: !ruby/object:Gem::Requirement
|
|
115
|
+
requirements:
|
|
116
|
+
- - "~>"
|
|
117
|
+
- !ruby/object:Gem::Version
|
|
118
|
+
version: '0.4'
|
|
119
|
+
- - ">="
|
|
120
|
+
- !ruby/object:Gem::Version
|
|
121
|
+
version: 0.4.5
|
|
122
|
+
type: :runtime
|
|
123
|
+
prerelease: false
|
|
124
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
125
|
+
requirements:
|
|
126
|
+
- - "~>"
|
|
127
|
+
- !ruby/object:Gem::Version
|
|
128
|
+
version: '0.4'
|
|
129
|
+
- - ">="
|
|
130
|
+
- !ruby/object:Gem::Version
|
|
131
|
+
version: 0.4.5
|
|
132
|
+
- !ruby/object:Gem::Dependency
|
|
133
|
+
name: grape-swagger
|
|
134
|
+
requirement: !ruby/object:Gem::Requirement
|
|
135
|
+
requirements:
|
|
136
|
+
- - "~>"
|
|
137
|
+
- !ruby/object:Gem::Version
|
|
138
|
+
version: '0.10'
|
|
139
|
+
- - ">="
|
|
140
|
+
- !ruby/object:Gem::Version
|
|
141
|
+
version: 0.10.1
|
|
142
|
+
type: :runtime
|
|
143
|
+
prerelease: false
|
|
144
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
145
|
+
requirements:
|
|
146
|
+
- - "~>"
|
|
147
|
+
- !ruby/object:Gem::Version
|
|
148
|
+
version: '0.10'
|
|
149
|
+
- - ">="
|
|
150
|
+
- !ruby/object:Gem::Version
|
|
151
|
+
version: 0.10.1
|
|
152
|
+
- !ruby/object:Gem::Dependency
|
|
153
|
+
name: kwalify
|
|
154
|
+
requirement: !ruby/object:Gem::Requirement
|
|
155
|
+
requirements:
|
|
156
|
+
- - "~>"
|
|
157
|
+
- !ruby/object:Gem::Version
|
|
158
|
+
version: '0.7'
|
|
159
|
+
type: :runtime
|
|
160
|
+
prerelease: false
|
|
161
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
162
|
+
requirements:
|
|
163
|
+
- - "~>"
|
|
164
|
+
- !ruby/object:Gem::Version
|
|
165
|
+
version: '0.7'
|
|
166
|
+
- !ruby/object:Gem::Dependency
|
|
167
|
+
name: lmdb
|
|
168
|
+
requirement: !ruby/object:Gem::Requirement
|
|
169
|
+
requirements:
|
|
170
|
+
- - "~>"
|
|
171
|
+
- !ruby/object:Gem::Version
|
|
172
|
+
version: '0.4'
|
|
173
|
+
type: :runtime
|
|
174
|
+
prerelease: false
|
|
175
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
176
|
+
requirements:
|
|
177
|
+
- - "~>"
|
|
178
|
+
- !ruby/object:Gem::Version
|
|
179
|
+
version: '0.4'
|
|
180
|
+
- !ruby/object:Gem::Dependency
|
|
181
|
+
name: logger
|
|
182
|
+
requirement: !ruby/object:Gem::Requirement
|
|
183
|
+
requirements:
|
|
184
|
+
- - "~>"
|
|
185
|
+
- !ruby/object:Gem::Version
|
|
186
|
+
version: '1.2'
|
|
187
|
+
type: :runtime
|
|
188
|
+
prerelease: false
|
|
189
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
190
|
+
requirements:
|
|
191
|
+
- - "~>"
|
|
192
|
+
- !ruby/object:Gem::Version
|
|
193
|
+
version: '1.2'
|
|
194
|
+
- !ruby/object:Gem::Dependency
|
|
195
|
+
name: mime-types
|
|
196
|
+
requirement: !ruby/object:Gem::Requirement
|
|
197
|
+
requirements:
|
|
198
|
+
- - "~>"
|
|
199
|
+
- !ruby/object:Gem::Version
|
|
200
|
+
version: '2.4'
|
|
201
|
+
type: :runtime
|
|
202
|
+
prerelease: false
|
|
203
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
204
|
+
requirements:
|
|
205
|
+
- - "~>"
|
|
206
|
+
- !ruby/object:Gem::Version
|
|
207
|
+
version: '2.4'
|
|
208
|
+
- !ruby/object:Gem::Dependency
|
|
209
|
+
name: moneta
|
|
210
|
+
requirement: !ruby/object:Gem::Requirement
|
|
211
|
+
requirements:
|
|
212
|
+
- - "~>"
|
|
213
|
+
- !ruby/object:Gem::Version
|
|
214
|
+
version: '0.8'
|
|
215
|
+
type: :runtime
|
|
216
|
+
prerelease: false
|
|
217
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
218
|
+
requirements:
|
|
219
|
+
- - "~>"
|
|
220
|
+
- !ruby/object:Gem::Version
|
|
221
|
+
version: '0.8'
|
|
222
|
+
- !ruby/object:Gem::Dependency
|
|
223
|
+
name: net-ssh
|
|
224
|
+
requirement: !ruby/object:Gem::Requirement
|
|
225
|
+
requirements:
|
|
226
|
+
- - "~>"
|
|
227
|
+
- !ruby/object:Gem::Version
|
|
228
|
+
version: '3.0'
|
|
229
|
+
type: :runtime
|
|
230
|
+
prerelease: false
|
|
231
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
232
|
+
requirements:
|
|
233
|
+
- - "~>"
|
|
234
|
+
- !ruby/object:Gem::Version
|
|
235
|
+
version: '3.0'
|
|
236
|
+
- !ruby/object:Gem::Dependency
|
|
237
|
+
name: oj
|
|
238
|
+
requirement: !ruby/object:Gem::Requirement
|
|
239
|
+
requirements:
|
|
240
|
+
- - "~>"
|
|
241
|
+
- !ruby/object:Gem::Version
|
|
242
|
+
version: '2.12'
|
|
243
|
+
type: :runtime
|
|
244
|
+
prerelease: false
|
|
245
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
246
|
+
requirements:
|
|
247
|
+
- - "~>"
|
|
248
|
+
- !ruby/object:Gem::Version
|
|
249
|
+
version: '2.12'
|
|
250
|
+
- !ruby/object:Gem::Dependency
|
|
251
|
+
name: protobuf
|
|
252
|
+
requirement: !ruby/object:Gem::Requirement
|
|
253
|
+
requirements:
|
|
254
|
+
- - "~>"
|
|
255
|
+
- !ruby/object:Gem::Version
|
|
256
|
+
version: '3.4'
|
|
257
|
+
type: :runtime
|
|
258
|
+
prerelease: false
|
|
259
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
260
|
+
requirements:
|
|
261
|
+
- - "~>"
|
|
262
|
+
- !ruby/object:Gem::Version
|
|
263
|
+
version: '3.4'
|
|
264
|
+
- !ruby/object:Gem::Dependency
|
|
265
|
+
name: rack-ssl-enforcer
|
|
266
|
+
requirement: !ruby/object:Gem::Requirement
|
|
267
|
+
requirements:
|
|
268
|
+
- - "~>"
|
|
269
|
+
- !ruby/object:Gem::Version
|
|
270
|
+
version: '0.2'
|
|
271
|
+
- - ">="
|
|
272
|
+
- !ruby/object:Gem::Version
|
|
273
|
+
version: 0.2.8
|
|
274
|
+
type: :runtime
|
|
275
|
+
prerelease: false
|
|
276
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
277
|
+
requirements:
|
|
278
|
+
- - "~>"
|
|
279
|
+
- !ruby/object:Gem::Version
|
|
280
|
+
version: '0.2'
|
|
281
|
+
- - ">="
|
|
282
|
+
- !ruby/object:Gem::Version
|
|
283
|
+
version: 0.2.8
|
|
284
|
+
- !ruby/object:Gem::Dependency
|
|
285
|
+
name: rest-client
|
|
286
|
+
requirement: !ruby/object:Gem::Requirement
|
|
287
|
+
requirements:
|
|
288
|
+
- - "~>"
|
|
289
|
+
- !ruby/object:Gem::Version
|
|
290
|
+
version: '1.8'
|
|
291
|
+
type: :runtime
|
|
292
|
+
prerelease: false
|
|
293
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
294
|
+
requirements:
|
|
295
|
+
- - "~>"
|
|
296
|
+
- !ruby/object:Gem::Version
|
|
297
|
+
version: '1.8'
|
|
298
|
+
- !ruby/object:Gem::Dependency
|
|
299
|
+
name: rack-stream
|
|
300
|
+
requirement: !ruby/object:Gem::Requirement
|
|
301
|
+
requirements:
|
|
302
|
+
- - '='
|
|
303
|
+
- !ruby/object:Gem::Version
|
|
304
|
+
version: 0.0.5
|
|
305
|
+
type: :runtime
|
|
306
|
+
prerelease: false
|
|
307
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
308
|
+
requirements:
|
|
309
|
+
- - '='
|
|
310
|
+
- !ruby/object:Gem::Version
|
|
311
|
+
version: 0.0.5
|
|
312
|
+
- !ruby/object:Gem::Dependency
|
|
313
|
+
name: request_store
|
|
314
|
+
requirement: !ruby/object:Gem::Requirement
|
|
315
|
+
requirements:
|
|
316
|
+
- - "~>"
|
|
317
|
+
- !ruby/object:Gem::Version
|
|
318
|
+
version: '1.1'
|
|
319
|
+
type: :runtime
|
|
320
|
+
prerelease: false
|
|
321
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
322
|
+
requirements:
|
|
323
|
+
- - "~>"
|
|
324
|
+
- !ruby/object:Gem::Version
|
|
325
|
+
version: '1.1'
|
|
326
|
+
- !ruby/object:Gem::Dependency
|
|
327
|
+
name: require_all
|
|
328
|
+
requirement: !ruby/object:Gem::Requirement
|
|
329
|
+
requirements:
|
|
330
|
+
- - "~>"
|
|
331
|
+
- !ruby/object:Gem::Version
|
|
332
|
+
version: '1.3'
|
|
333
|
+
type: :runtime
|
|
334
|
+
prerelease: false
|
|
335
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
336
|
+
requirements:
|
|
337
|
+
- - "~>"
|
|
338
|
+
- !ruby/object:Gem::Version
|
|
339
|
+
version: '1.3'
|
|
340
|
+
- !ruby/object:Gem::Dependency
|
|
341
|
+
name: rubyzip
|
|
342
|
+
requirement: !ruby/object:Gem::Requirement
|
|
343
|
+
requirements:
|
|
344
|
+
- - "~>"
|
|
345
|
+
- !ruby/object:Gem::Version
|
|
346
|
+
version: '1.1'
|
|
347
|
+
type: :runtime
|
|
348
|
+
prerelease: false
|
|
349
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
350
|
+
requirements:
|
|
351
|
+
- - "~>"
|
|
352
|
+
- !ruby/object:Gem::Version
|
|
353
|
+
version: '1.1'
|
|
354
|
+
- !ruby/object:Gem::Dependency
|
|
355
|
+
name: sshkey
|
|
356
|
+
requirement: !ruby/object:Gem::Requirement
|
|
357
|
+
requirements:
|
|
358
|
+
- - "~>"
|
|
359
|
+
- !ruby/object:Gem::Version
|
|
360
|
+
version: '1.7'
|
|
361
|
+
type: :runtime
|
|
362
|
+
prerelease: false
|
|
363
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
364
|
+
requirements:
|
|
365
|
+
- - "~>"
|
|
366
|
+
- !ruby/object:Gem::Version
|
|
367
|
+
version: '1.7'
|
|
368
|
+
- !ruby/object:Gem::Dependency
|
|
369
|
+
name: thin
|
|
370
|
+
requirement: !ruby/object:Gem::Requirement
|
|
371
|
+
requirements:
|
|
372
|
+
- - "~>"
|
|
373
|
+
- !ruby/object:Gem::Version
|
|
374
|
+
version: '1.6'
|
|
375
|
+
type: :runtime
|
|
376
|
+
prerelease: false
|
|
377
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
378
|
+
requirements:
|
|
379
|
+
- - "~>"
|
|
380
|
+
- !ruby/object:Gem::Version
|
|
381
|
+
version: '1.6'
|
|
382
|
+
- !ruby/object:Gem::Dependency
|
|
383
|
+
name: bundler
|
|
384
|
+
requirement: !ruby/object:Gem::Requirement
|
|
385
|
+
requirements:
|
|
386
|
+
- - ">="
|
|
387
|
+
- !ruby/object:Gem::Version
|
|
388
|
+
version: '0'
|
|
389
|
+
type: :development
|
|
390
|
+
prerelease: false
|
|
391
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
392
|
+
requirements:
|
|
393
|
+
- - ">="
|
|
394
|
+
- !ruby/object:Gem::Version
|
|
395
|
+
version: '0'
|
|
396
|
+
- !ruby/object:Gem::Dependency
|
|
397
|
+
name: guard
|
|
398
|
+
requirement: !ruby/object:Gem::Requirement
|
|
399
|
+
requirements:
|
|
400
|
+
- - ">="
|
|
401
|
+
- !ruby/object:Gem::Version
|
|
402
|
+
version: '0'
|
|
403
|
+
type: :development
|
|
404
|
+
prerelease: false
|
|
405
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
406
|
+
requirements:
|
|
407
|
+
- - ">="
|
|
408
|
+
- !ruby/object:Gem::Version
|
|
409
|
+
version: '0'
|
|
410
|
+
- !ruby/object:Gem::Dependency
|
|
411
|
+
name: guard-bundler
|
|
412
|
+
requirement: !ruby/object:Gem::Requirement
|
|
413
|
+
requirements:
|
|
414
|
+
- - ">="
|
|
415
|
+
- !ruby/object:Gem::Version
|
|
416
|
+
version: '0'
|
|
417
|
+
type: :development
|
|
418
|
+
prerelease: false
|
|
419
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
420
|
+
requirements:
|
|
421
|
+
- - ">="
|
|
422
|
+
- !ruby/object:Gem::Version
|
|
423
|
+
version: '0'
|
|
424
|
+
- !ruby/object:Gem::Dependency
|
|
425
|
+
name: guard-rack
|
|
426
|
+
requirement: !ruby/object:Gem::Requirement
|
|
427
|
+
requirements:
|
|
428
|
+
- - ">="
|
|
429
|
+
- !ruby/object:Gem::Version
|
|
430
|
+
version: '0'
|
|
431
|
+
type: :development
|
|
432
|
+
prerelease: false
|
|
433
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
434
|
+
requirements:
|
|
435
|
+
- - ">="
|
|
436
|
+
- !ruby/object:Gem::Version
|
|
437
|
+
version: '0'
|
|
438
|
+
- !ruby/object:Gem::Dependency
|
|
439
|
+
name: guard-rubocop
|
|
440
|
+
requirement: !ruby/object:Gem::Requirement
|
|
441
|
+
requirements:
|
|
442
|
+
- - ">="
|
|
443
|
+
- !ruby/object:Gem::Version
|
|
444
|
+
version: '0'
|
|
445
|
+
type: :development
|
|
446
|
+
prerelease: false
|
|
447
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
448
|
+
requirements:
|
|
449
|
+
- - ">="
|
|
450
|
+
- !ruby/object:Gem::Version
|
|
451
|
+
version: '0'
|
|
452
|
+
- !ruby/object:Gem::Dependency
|
|
453
|
+
name: guard-yard
|
|
454
|
+
requirement: !ruby/object:Gem::Requirement
|
|
455
|
+
requirements:
|
|
456
|
+
- - ">="
|
|
457
|
+
- !ruby/object:Gem::Version
|
|
458
|
+
version: '0'
|
|
459
|
+
type: :development
|
|
460
|
+
prerelease: false
|
|
461
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
462
|
+
requirements:
|
|
463
|
+
- - ">="
|
|
464
|
+
- !ruby/object:Gem::Version
|
|
465
|
+
version: '0'
|
|
466
|
+
- !ruby/object:Gem::Dependency
|
|
467
|
+
name: inch
|
|
468
|
+
requirement: !ruby/object:Gem::Requirement
|
|
469
|
+
requirements:
|
|
470
|
+
- - "~>"
|
|
471
|
+
- !ruby/object:Gem::Version
|
|
472
|
+
version: '0.7'
|
|
473
|
+
type: :development
|
|
474
|
+
prerelease: false
|
|
475
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
476
|
+
requirements:
|
|
477
|
+
- - "~>"
|
|
478
|
+
- !ruby/object:Gem::Version
|
|
479
|
+
version: '0.7'
|
|
480
|
+
- !ruby/object:Gem::Dependency
|
|
481
|
+
name: rake
|
|
482
|
+
requirement: !ruby/object:Gem::Requirement
|
|
483
|
+
requirements:
|
|
484
|
+
- - "~>"
|
|
485
|
+
- !ruby/object:Gem::Version
|
|
486
|
+
version: '10.4'
|
|
487
|
+
type: :development
|
|
488
|
+
prerelease: false
|
|
489
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
490
|
+
requirements:
|
|
491
|
+
- - "~>"
|
|
492
|
+
- !ruby/object:Gem::Version
|
|
493
|
+
version: '10.4'
|
|
494
|
+
- !ruby/object:Gem::Dependency
|
|
495
|
+
name: rubocop
|
|
496
|
+
requirement: !ruby/object:Gem::Requirement
|
|
497
|
+
requirements:
|
|
498
|
+
- - "~>"
|
|
499
|
+
- !ruby/object:Gem::Version
|
|
500
|
+
version: '0.34'
|
|
501
|
+
type: :development
|
|
502
|
+
prerelease: false
|
|
503
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
504
|
+
requirements:
|
|
505
|
+
- - "~>"
|
|
506
|
+
- !ruby/object:Gem::Version
|
|
507
|
+
version: '0.34'
|
|
508
|
+
- !ruby/object:Gem::Dependency
|
|
509
|
+
name: vcr
|
|
510
|
+
requirement: !ruby/object:Gem::Requirement
|
|
511
|
+
requirements:
|
|
512
|
+
- - "~>"
|
|
513
|
+
- !ruby/object:Gem::Version
|
|
514
|
+
version: '2.9'
|
|
515
|
+
type: :development
|
|
516
|
+
prerelease: false
|
|
517
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
518
|
+
requirements:
|
|
519
|
+
- - "~>"
|
|
520
|
+
- !ruby/object:Gem::Version
|
|
521
|
+
version: '2.9'
|
|
522
|
+
- !ruby/object:Gem::Dependency
|
|
523
|
+
name: webmock
|
|
524
|
+
requirement: !ruby/object:Gem::Requirement
|
|
525
|
+
requirements:
|
|
526
|
+
- - "~>"
|
|
527
|
+
- !ruby/object:Gem::Version
|
|
528
|
+
version: '1.20'
|
|
529
|
+
type: :development
|
|
530
|
+
prerelease: false
|
|
531
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
532
|
+
requirements:
|
|
533
|
+
- - "~>"
|
|
534
|
+
- !ruby/object:Gem::Version
|
|
535
|
+
version: '1.20'
|
|
536
|
+
- !ruby/object:Gem::Dependency
|
|
537
|
+
name: yard
|
|
538
|
+
requirement: !ruby/object:Gem::Requirement
|
|
539
|
+
requirements:
|
|
540
|
+
- - "~>"
|
|
541
|
+
- !ruby/object:Gem::Version
|
|
542
|
+
version: '0.8'
|
|
543
|
+
type: :development
|
|
544
|
+
prerelease: false
|
|
545
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
546
|
+
requirements:
|
|
547
|
+
- - "~>"
|
|
548
|
+
- !ruby/object:Gem::Version
|
|
549
|
+
version: '0.8'
|
|
550
|
+
description: Nucleus is a unified API for deployment and management of Platform-as-a-Service
|
|
551
|
+
(PaaS) systems.
|
|
552
|
+
email:
|
|
553
|
+
- stefan.kolb@uni-bamberg.de
|
|
554
|
+
executables:
|
|
555
|
+
- nucleus
|
|
556
|
+
extensions: []
|
|
557
|
+
extra_rdoc_files: []
|
|
558
|
+
files:
|
|
559
|
+
- ".gitattributes"
|
|
560
|
+
- ".gitignore"
|
|
561
|
+
- ".rspec"
|
|
562
|
+
- ".rubocop.yml"
|
|
563
|
+
- ".travis.yml"
|
|
564
|
+
- CHANGELOG.md
|
|
565
|
+
- CONTRIBUTING.md
|
|
566
|
+
- Gemfile
|
|
567
|
+
- Guardfile
|
|
568
|
+
- LICENSE
|
|
569
|
+
- README.md
|
|
570
|
+
- Rakefile
|
|
571
|
+
- bin/nucleus
|
|
572
|
+
- bin/nucleus.bat
|
|
573
|
+
- config.ru
|
|
574
|
+
- config/adapters/cloud_control.yml
|
|
575
|
+
- config/adapters/cloud_foundry_v2.yml
|
|
576
|
+
- config/adapters/heroku.yml
|
|
577
|
+
- config/adapters/openshift_v2.yml
|
|
578
|
+
- config/nucleus_config.rb
|
|
579
|
+
- lib/nucleus.rb
|
|
580
|
+
- lib/nucleus/adapter_resolver.rb
|
|
581
|
+
- lib/nucleus/adapters/base_adapter.rb
|
|
582
|
+
- lib/nucleus/adapters/buildpack_translator.rb
|
|
583
|
+
- lib/nucleus/adapters/v1/cloud_control/application.rb
|
|
584
|
+
- lib/nucleus/adapters/v1/cloud_control/authentication.rb
|
|
585
|
+
- lib/nucleus/adapters/v1/cloud_control/buildpacks.rb
|
|
586
|
+
- lib/nucleus/adapters/v1/cloud_control/cloud_control.rb
|
|
587
|
+
- lib/nucleus/adapters/v1/cloud_control/data.rb
|
|
588
|
+
- lib/nucleus/adapters/v1/cloud_control/domains.rb
|
|
589
|
+
- lib/nucleus/adapters/v1/cloud_control/lifecycle.rb
|
|
590
|
+
- lib/nucleus/adapters/v1/cloud_control/log_poller.rb
|
|
591
|
+
- lib/nucleus/adapters/v1/cloud_control/logs.rb
|
|
592
|
+
- lib/nucleus/adapters/v1/cloud_control/regions.rb
|
|
593
|
+
- lib/nucleus/adapters/v1/cloud_control/scaling.rb
|
|
594
|
+
- lib/nucleus/adapters/v1/cloud_control/semantic_errors.rb
|
|
595
|
+
- lib/nucleus/adapters/v1/cloud_control/services.rb
|
|
596
|
+
- lib/nucleus/adapters/v1/cloud_control/token.rb
|
|
597
|
+
- lib/nucleus/adapters/v1/cloud_control/vars.rb
|
|
598
|
+
- lib/nucleus/adapters/v1/cloud_foundry_v2/app_states.rb
|
|
599
|
+
- lib/nucleus/adapters/v1/cloud_foundry_v2/application.rb
|
|
600
|
+
- lib/nucleus/adapters/v1/cloud_foundry_v2/authentication.rb
|
|
601
|
+
- lib/nucleus/adapters/v1/cloud_foundry_v2/buildpacks.rb
|
|
602
|
+
- lib/nucleus/adapters/v1/cloud_foundry_v2/cloud_foundry_v2.rb
|
|
603
|
+
- lib/nucleus/adapters/v1/cloud_foundry_v2/data.rb
|
|
604
|
+
- lib/nucleus/adapters/v1/cloud_foundry_v2/domains.rb
|
|
605
|
+
- lib/nucleus/adapters/v1/cloud_foundry_v2/lifecycle.rb
|
|
606
|
+
- lib/nucleus/adapters/v1/cloud_foundry_v2/logs.rb
|
|
607
|
+
- lib/nucleus/adapters/v1/cloud_foundry_v2/regions.rb
|
|
608
|
+
- lib/nucleus/adapters/v1/cloud_foundry_v2/scaling.rb
|
|
609
|
+
- lib/nucleus/adapters/v1/cloud_foundry_v2/semantic_errors.rb
|
|
610
|
+
- lib/nucleus/adapters/v1/cloud_foundry_v2/services.rb
|
|
611
|
+
- lib/nucleus/adapters/v1/cloud_foundry_v2/vars.rb
|
|
612
|
+
- lib/nucleus/adapters/v1/heroku/app_states.rb
|
|
613
|
+
- lib/nucleus/adapters/v1/heroku/application.rb
|
|
614
|
+
- lib/nucleus/adapters/v1/heroku/authentication.rb
|
|
615
|
+
- lib/nucleus/adapters/v1/heroku/buildpacks.rb
|
|
616
|
+
- lib/nucleus/adapters/v1/heroku/data.rb
|
|
617
|
+
- lib/nucleus/adapters/v1/heroku/domains.rb
|
|
618
|
+
- lib/nucleus/adapters/v1/heroku/heroku.rb
|
|
619
|
+
- lib/nucleus/adapters/v1/heroku/lifecycle.rb
|
|
620
|
+
- lib/nucleus/adapters/v1/heroku/logs.rb
|
|
621
|
+
- lib/nucleus/adapters/v1/heroku/regions.rb
|
|
622
|
+
- lib/nucleus/adapters/v1/heroku/scaling.rb
|
|
623
|
+
- lib/nucleus/adapters/v1/heroku/semantic_errors.rb
|
|
624
|
+
- lib/nucleus/adapters/v1/heroku/services.rb
|
|
625
|
+
- lib/nucleus/adapters/v1/heroku/vars.rb
|
|
626
|
+
- lib/nucleus/adapters/v1/openshift_v2/app_states.rb
|
|
627
|
+
- lib/nucleus/adapters/v1/openshift_v2/application.rb
|
|
628
|
+
- lib/nucleus/adapters/v1/openshift_v2/authentication.rb
|
|
629
|
+
- lib/nucleus/adapters/v1/openshift_v2/data.rb
|
|
630
|
+
- lib/nucleus/adapters/v1/openshift_v2/domains.rb
|
|
631
|
+
- lib/nucleus/adapters/v1/openshift_v2/lifecycle.rb
|
|
632
|
+
- lib/nucleus/adapters/v1/openshift_v2/logs.rb
|
|
633
|
+
- lib/nucleus/adapters/v1/openshift_v2/openshift_v2.rb
|
|
634
|
+
- lib/nucleus/adapters/v1/openshift_v2/regions.rb
|
|
635
|
+
- lib/nucleus/adapters/v1/openshift_v2/scaling.rb
|
|
636
|
+
- lib/nucleus/adapters/v1/openshift_v2/semantic_errors.rb
|
|
637
|
+
- lib/nucleus/adapters/v1/openshift_v2/services.rb
|
|
638
|
+
- lib/nucleus/adapters/v1/openshift_v2/vars.rb
|
|
639
|
+
- lib/nucleus/adapters/v1/stub_adapter.rb
|
|
640
|
+
- lib/nucleus/core/adapter_authentication_inductor.rb
|
|
641
|
+
- lib/nucleus/core/adapter_extensions/auth/auth_client.rb
|
|
642
|
+
- lib/nucleus/core/adapter_extensions/auth/authentication_retry_wrapper.rb
|
|
643
|
+
- lib/nucleus/core/adapter_extensions/auth/expiring_token_auth_client.rb
|
|
644
|
+
- lib/nucleus/core/adapter_extensions/auth/http_basic_auth_client.rb
|
|
645
|
+
- lib/nucleus/core/adapter_extensions/auth/o_auth2_auth_client.rb
|
|
646
|
+
- lib/nucleus/core/adapter_extensions/auth/token_auth_client.rb
|
|
647
|
+
- lib/nucleus/core/adapter_extensions/http_client.rb
|
|
648
|
+
- lib/nucleus/core/adapter_extensions/http_tail_client.rb
|
|
649
|
+
- lib/nucleus/core/adapter_extensions/tail_stopper.rb
|
|
650
|
+
- lib/nucleus/core/common/errors/ambiguous_adapter_error.rb
|
|
651
|
+
- lib/nucleus/core/common/errors/file_existence_error.rb
|
|
652
|
+
- lib/nucleus/core/common/errors/startup_error.rb
|
|
653
|
+
- lib/nucleus/core/common/exit_codes.rb
|
|
654
|
+
- lib/nucleus/core/common/files/application_repo_sanitizer.rb
|
|
655
|
+
- lib/nucleus/core/common/files/archive_extractor.rb
|
|
656
|
+
- lib/nucleus/core/common/files/archiver.rb
|
|
657
|
+
- lib/nucleus/core/common/link_generator.rb
|
|
658
|
+
- lib/nucleus/core/common/logging/logging.rb
|
|
659
|
+
- lib/nucleus/core/common/logging/multi_logger.rb
|
|
660
|
+
- lib/nucleus/core/common/logging/request_log_formatter.rb
|
|
661
|
+
- lib/nucleus/core/common/ssh_handler.rb
|
|
662
|
+
- lib/nucleus/core/common/stream_callback.rb
|
|
663
|
+
- lib/nucleus/core/common/thread_config_accessor.rb
|
|
664
|
+
- lib/nucleus/core/common/url_converter.rb
|
|
665
|
+
- lib/nucleus/core/enums/application_states.rb
|
|
666
|
+
- lib/nucleus/core/enums/logfile_types.rb
|
|
667
|
+
- lib/nucleus/core/error_messages.rb
|
|
668
|
+
- lib/nucleus/core/errors/adapter_error.rb
|
|
669
|
+
- lib/nucleus/core/errors/adapter_missing_implementation_error.rb
|
|
670
|
+
- lib/nucleus/core/errors/adapter_request_error.rb
|
|
671
|
+
- lib/nucleus/core/errors/adapter_resource_not_found_error.rb
|
|
672
|
+
- lib/nucleus/core/errors/endpoint_authentication_error.rb
|
|
673
|
+
- lib/nucleus/core/errors/platform_specific_semantic_error.rb
|
|
674
|
+
- lib/nucleus/core/errors/platform_timeout_error.rb
|
|
675
|
+
- lib/nucleus/core/errors/platform_unavailable_error.rb
|
|
676
|
+
- lib/nucleus/core/errors/semantic_adapter_request_error.rb
|
|
677
|
+
- lib/nucleus/core/errors/unknown_adapter_call_error.rb
|
|
678
|
+
- lib/nucleus/core/file_handling/archive_converter.rb
|
|
679
|
+
- lib/nucleus/core/file_handling/file_manager.rb
|
|
680
|
+
- lib/nucleus/core/file_handling/git_deployer.rb
|
|
681
|
+
- lib/nucleus/core/file_handling/git_repo_analyzer.rb
|
|
682
|
+
- lib/nucleus/core/import/adapter_configuration.rb
|
|
683
|
+
- lib/nucleus/core/import/vendor_parser.rb
|
|
684
|
+
- lib/nucleus/core/import/version_detector.rb
|
|
685
|
+
- lib/nucleus/core/models/abstract_model.rb
|
|
686
|
+
- lib/nucleus/core/models/endpoint.rb
|
|
687
|
+
- lib/nucleus/core/models/provider.rb
|
|
688
|
+
- lib/nucleus/core/models/vendor.rb
|
|
689
|
+
- lib/nucleus/ext/kernel.rb
|
|
690
|
+
- lib/nucleus/ext/regexp.rb
|
|
691
|
+
- lib/nucleus/os.rb
|
|
692
|
+
- lib/nucleus/root_dir.rb
|
|
693
|
+
- lib/nucleus/scripts/finalize.rb
|
|
694
|
+
- lib/nucleus/scripts/initialize.rb
|
|
695
|
+
- lib/nucleus/scripts/initialize_config_defaults.rb
|
|
696
|
+
- lib/nucleus/scripts/load.rb
|
|
697
|
+
- lib/nucleus/scripts/load_dependencies.rb
|
|
698
|
+
- lib/nucleus/scripts/setup_config.rb
|
|
699
|
+
- lib/nucleus/scripts/shutdown.rb
|
|
700
|
+
- lib/nucleus/version.rb
|
|
701
|
+
- nucleus.gemspec
|
|
702
|
+
- public/robots.txt
|
|
703
|
+
- public/swagger-ui/css/reset.css
|
|
704
|
+
- public/swagger-ui/css/screen.css
|
|
705
|
+
- public/swagger-ui/images/apple-touch-icon-114x114.png
|
|
706
|
+
- public/swagger-ui/images/apple-touch-icon-120x120.png
|
|
707
|
+
- public/swagger-ui/images/apple-touch-icon-144x144.png
|
|
708
|
+
- public/swagger-ui/images/apple-touch-icon-152x152.png
|
|
709
|
+
- public/swagger-ui/images/apple-touch-icon-57x57.png
|
|
710
|
+
- public/swagger-ui/images/apple-touch-icon-60x60.png
|
|
711
|
+
- public/swagger-ui/images/apple-touch-icon-72x72.png
|
|
712
|
+
- public/swagger-ui/images/apple-touch-icon-76x76.png
|
|
713
|
+
- public/swagger-ui/images/explorer_icons.png
|
|
714
|
+
- public/swagger-ui/images/favicon-128.png
|
|
715
|
+
- public/swagger-ui/images/favicon-16x16.png
|
|
716
|
+
- public/swagger-ui/images/favicon-196x196.png
|
|
717
|
+
- public/swagger-ui/images/favicon-32x32.png
|
|
718
|
+
- public/swagger-ui/images/favicon-96x96.png
|
|
719
|
+
- public/swagger-ui/images/favicon.ico
|
|
720
|
+
- public/swagger-ui/images/logo_small.png
|
|
721
|
+
- public/swagger-ui/images/mstile-144x144.png
|
|
722
|
+
- public/swagger-ui/images/mstile-150x150.png
|
|
723
|
+
- public/swagger-ui/images/mstile-310x150.png
|
|
724
|
+
- public/swagger-ui/images/mstile-310x310.png
|
|
725
|
+
- public/swagger-ui/images/mstile-70x70.png
|
|
726
|
+
- public/swagger-ui/images/pet_store_api.png
|
|
727
|
+
- public/swagger-ui/images/throbber.gif
|
|
728
|
+
- public/swagger-ui/images/wordnik_api.png
|
|
729
|
+
- public/swagger-ui/index.html
|
|
730
|
+
- public/swagger-ui/lib/backbone-min.js
|
|
731
|
+
- public/swagger-ui/lib/handlebars-1.0.0.js
|
|
732
|
+
- public/swagger-ui/lib/highlight.7.3.pack.js
|
|
733
|
+
- public/swagger-ui/lib/jquery-1.8.0.min.js
|
|
734
|
+
- public/swagger-ui/lib/jquery.ba-bbq.min.js
|
|
735
|
+
- public/swagger-ui/lib/jquery.slideto.min.js
|
|
736
|
+
- public/swagger-ui/lib/jquery.wiggle.min.js
|
|
737
|
+
- public/swagger-ui/lib/shred.bundle.js
|
|
738
|
+
- public/swagger-ui/lib/shred/content.js
|
|
739
|
+
- public/swagger-ui/lib/swagger-oauth.js
|
|
740
|
+
- public/swagger-ui/lib/swagger.js
|
|
741
|
+
- public/swagger-ui/lib/underscore-min.js
|
|
742
|
+
- public/swagger-ui/o2c.html
|
|
743
|
+
- public/swagger-ui/redirect.html
|
|
744
|
+
- public/swagger-ui/swagger-ui.js
|
|
745
|
+
- public/swagger-ui/swagger-ui.min.js
|
|
746
|
+
- schemas/api.adapter.schema.yml
|
|
747
|
+
- schemas/api.requirements.schema.yml
|
|
748
|
+
- spec/factories/models.rb
|
|
749
|
+
- spec/integration/api/auth_spec.rb
|
|
750
|
+
- spec/integration/api/endpoints_spec.rb
|
|
751
|
+
- spec/integration/api/errors_spec.rb
|
|
752
|
+
- spec/integration/api/providers_spec.rb
|
|
753
|
+
- spec/integration/api/swagger_schema_spec.rb
|
|
754
|
+
- spec/integration/api/vendors_spec.rb
|
|
755
|
+
- spec/integration/integration_spec_helper.rb
|
|
756
|
+
- spec/integration/test_data_generator.rb
|
|
757
|
+
- spec/nucleus_git_key.pem
|
|
758
|
+
- spec/spec_helper.rb
|
|
759
|
+
- spec/support/shared_example_request_types.rb
|
|
760
|
+
- spec/test_suites.rake
|
|
761
|
+
- spec/unit/adapters/archive_converter_spec.rb
|
|
762
|
+
- spec/unit/adapters/file_manager_spec.rb
|
|
763
|
+
- spec/unit/adapters/git_deployer_spec.rb
|
|
764
|
+
- spec/unit/adapters/v1/stub_spec.rb
|
|
765
|
+
- spec/unit/common/helpers/auth_helper_spec.rb
|
|
766
|
+
- spec/unit/common/oauth2_auth_client_spec.rb
|
|
767
|
+
- spec/unit/common/regexp_spec.rb
|
|
768
|
+
- spec/unit/common/request_log_formatter_spec.rb
|
|
769
|
+
- spec/unit/common/thread_config_accessor_spec.rb
|
|
770
|
+
- spec/unit/models/endpoint_spec.rb
|
|
771
|
+
- spec/unit/models/provider_spec.rb
|
|
772
|
+
- spec/unit/models/vendor_spec.rb
|
|
773
|
+
- spec/unit/schemas/adapter_schema_spec.rb
|
|
774
|
+
- spec/unit/schemas/adapter_validation_spec.rb
|
|
775
|
+
- spec/unit/schemas/requirements_schema_spec.rb
|
|
776
|
+
- spec/unit/unit_spec_helper.rb
|
|
777
|
+
- tasks/compatibility.rake
|
|
778
|
+
- tasks/evaluation.rake
|
|
779
|
+
- wiki/adapter_tests.md
|
|
780
|
+
- wiki/implement_new_adapter.md
|
|
781
|
+
homepage: https://github.com/stefan-kolb/nucleus
|
|
782
|
+
licenses:
|
|
783
|
+
- MIT
|
|
784
|
+
metadata: {}
|
|
785
|
+
post_install_message:
|
|
786
|
+
rdoc_options: []
|
|
787
|
+
require_paths:
|
|
788
|
+
- lib
|
|
789
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
|
790
|
+
requirements:
|
|
791
|
+
- - ">="
|
|
792
|
+
- !ruby/object:Gem::Version
|
|
793
|
+
version: '2.0'
|
|
794
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
795
|
+
requirements:
|
|
796
|
+
- - ">="
|
|
797
|
+
- !ruby/object:Gem::Version
|
|
798
|
+
version: '0'
|
|
799
|
+
requirements: []
|
|
800
|
+
rubyforge_project:
|
|
801
|
+
rubygems_version: 2.4.5
|
|
802
|
+
signing_key:
|
|
803
|
+
specification_version: 4
|
|
804
|
+
summary: Nucleus unifies core management functions of Platform-as-a-Service (PaaS)
|
|
805
|
+
systems.
|
|
806
|
+
test_files:
|
|
807
|
+
- spec/factories/models.rb
|
|
808
|
+
- spec/integration/api/auth_spec.rb
|
|
809
|
+
- spec/integration/api/endpoints_spec.rb
|
|
810
|
+
- spec/integration/api/errors_spec.rb
|
|
811
|
+
- spec/integration/api/providers_spec.rb
|
|
812
|
+
- spec/integration/api/swagger_schema_spec.rb
|
|
813
|
+
- spec/integration/api/vendors_spec.rb
|
|
814
|
+
- spec/integration/integration_spec_helper.rb
|
|
815
|
+
- spec/integration/test_data_generator.rb
|
|
816
|
+
- spec/nucleus_git_key.pem
|
|
817
|
+
- spec/spec_helper.rb
|
|
818
|
+
- spec/support/shared_example_request_types.rb
|
|
819
|
+
- spec/test_suites.rake
|
|
820
|
+
- spec/unit/adapters/archive_converter_spec.rb
|
|
821
|
+
- spec/unit/adapters/file_manager_spec.rb
|
|
822
|
+
- spec/unit/adapters/git_deployer_spec.rb
|
|
823
|
+
- spec/unit/adapters/v1/stub_spec.rb
|
|
824
|
+
- spec/unit/common/helpers/auth_helper_spec.rb
|
|
825
|
+
- spec/unit/common/oauth2_auth_client_spec.rb
|
|
826
|
+
- spec/unit/common/regexp_spec.rb
|
|
827
|
+
- spec/unit/common/request_log_formatter_spec.rb
|
|
828
|
+
- spec/unit/common/thread_config_accessor_spec.rb
|
|
829
|
+
- spec/unit/models/endpoint_spec.rb
|
|
830
|
+
- spec/unit/models/provider_spec.rb
|
|
831
|
+
- spec/unit/models/vendor_spec.rb
|
|
832
|
+
- spec/unit/schemas/adapter_schema_spec.rb
|
|
833
|
+
- spec/unit/schemas/adapter_validation_spec.rb
|
|
834
|
+
- spec/unit/schemas/requirements_schema_spec.rb
|
|
835
|
+
- spec/unit/unit_spec_helper.rb
|
|
836
|
+
has_rdoc:
|