nucleus 0.2.0 → 0.3.1
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 +4 -4
- data/.rubocop.yml +3 -0
- data/CHANGELOG.md +9 -0
- data/README.md +43 -72
- data/lib/nucleus/adapter_resolver.rb +3 -3
- data/lib/nucleus/adapters/base_adapter.rb +109 -109
- data/lib/nucleus/adapters/v1/cloud_foundry_v2/application.rb +111 -111
- data/lib/nucleus/adapters/v1/cloud_foundry_v2/cloud_foundry_v2.rb +141 -141
- data/lib/nucleus/adapters/v1/cloud_foundry_v2/data.rb +97 -97
- data/lib/nucleus/adapters/v1/cloud_foundry_v2/domains.rb +5 -5
- data/lib/nucleus/adapters/v1/cloud_foundry_v2/lifecycle.rb +41 -41
- data/lib/nucleus/adapters/v1/cloud_foundry_v2/logs.rb +6 -6
- data/lib/nucleus/adapters/v1/cloud_foundry_v2/regions.rb +33 -33
- data/lib/nucleus/adapters/v1/cloud_foundry_v2/services.rb +6 -6
- data/lib/nucleus/adapters/v1/cloud_foundry_v2/vars.rb +80 -80
- data/lib/nucleus/adapters/v1/heroku/app_states.rb +57 -57
- data/lib/nucleus/adapters/v1/heroku/data.rb +78 -78
- data/lib/nucleus/adapters/v1/heroku/heroku.rb +146 -146
- data/lib/nucleus/adapters/v1/heroku/lifecycle.rb +51 -51
- data/lib/nucleus/adapters/v1/heroku/logs.rb +2 -2
- data/lib/nucleus/adapters/v1/heroku/regions.rb +42 -42
- data/lib/nucleus/adapters/v1/heroku/services.rb +168 -168
- data/lib/nucleus/adapters/v1/heroku/vars.rb +65 -65
- data/lib/nucleus/adapters/v1/openshift_v2/app_states.rb +68 -68
- data/lib/nucleus/adapters/v1/openshift_v2/application.rb +1 -1
- data/lib/nucleus/adapters/v1/openshift_v2/data.rb +96 -96
- data/lib/nucleus/adapters/v1/openshift_v2/lifecycle.rb +60 -60
- data/lib/nucleus/adapters/v1/openshift_v2/logs.rb +106 -106
- data/lib/nucleus/adapters/v1/openshift_v2/openshift_v2.rb +125 -125
- data/lib/nucleus/adapters/v1/openshift_v2/regions.rb +58 -58
- data/lib/nucleus/adapters/v1/openshift_v2/services.rb +173 -173
- data/lib/nucleus/adapters/v1/openshift_v2/vars.rb +49 -49
- data/lib/nucleus/adapters/v1/stub_adapter.rb +464 -464
- data/lib/nucleus/core/adapter_extensions/auth/auth_client.rb +44 -44
- data/lib/nucleus/core/adapter_extensions/auth/expiring_token_auth_client.rb +53 -53
- data/lib/nucleus/core/adapter_extensions/auth/http_basic_auth_client.rb +3 -3
- data/lib/nucleus/core/adapter_extensions/auth/o_auth2_auth_client.rb +95 -95
- data/lib/nucleus/core/adapter_extensions/auth/token_auth_client.rb +36 -36
- data/lib/nucleus/core/adapter_extensions/http_client.rb +5 -5
- data/lib/nucleus/core/common/files/archive_extractor.rb +1 -1
- data/lib/nucleus/core/common/files/archiver.rb +2 -2
- data/lib/nucleus/core/file_handling/file_manager.rb +64 -64
- data/lib/nucleus/core/file_handling/git_deployer.rb +133 -133
- data/lib/nucleus/core/import/adapter_configuration.rb +53 -53
- data/lib/nucleus/scripts/initialize_config_defaults.rb +26 -26
- data/lib/nucleus/version.rb +1 -1
- data/nucleus.gemspec +2 -2
- data/spec/integration/api/auth_spec.rb +3 -3
- data/spec/spec_helper.rb +98 -98
- data/spec/test_suites.rake +1 -1
- data/spec/unit/adapters/git_deployer_spec.rb +262 -262
- data/spec/unit/common/helpers/auth_helper_spec.rb +1 -1
- data/tasks/evaluation.rake +1 -1
- data/wiki/adapter_tests.md +0 -7
- data/wiki/implement_new_adapter.md +1 -1
- metadata +4 -20
- data/config/adapters/cloud_control.yml +0 -32
- data/lib/nucleus/adapters/v1/cloud_control/application.rb +0 -108
- data/lib/nucleus/adapters/v1/cloud_control/authentication.rb +0 -27
- data/lib/nucleus/adapters/v1/cloud_control/buildpacks.rb +0 -23
- data/lib/nucleus/adapters/v1/cloud_control/cloud_control.rb +0 -153
- data/lib/nucleus/adapters/v1/cloud_control/data.rb +0 -76
- data/lib/nucleus/adapters/v1/cloud_control/domains.rb +0 -68
- data/lib/nucleus/adapters/v1/cloud_control/lifecycle.rb +0 -27
- data/lib/nucleus/adapters/v1/cloud_control/log_poller.rb +0 -71
- data/lib/nucleus/adapters/v1/cloud_control/logs.rb +0 -103
- data/lib/nucleus/adapters/v1/cloud_control/regions.rb +0 -32
- data/lib/nucleus/adapters/v1/cloud_control/scaling.rb +0 -17
- data/lib/nucleus/adapters/v1/cloud_control/semantic_errors.rb +0 -31
- data/lib/nucleus/adapters/v1/cloud_control/services.rb +0 -162
- data/lib/nucleus/adapters/v1/cloud_control/token.rb +0 -17
- data/lib/nucleus/adapters/v1/cloud_control/vars.rb +0 -88
@@ -1,49 +1,49 @@
|
|
1
|
-
module Nucleus
|
2
|
-
module Adapters
|
3
|
-
module V1
|
4
|
-
class OpenshiftV2 < Stub
|
5
|
-
module Vars
|
6
|
-
# @see Stub#env_vars
|
7
|
-
def env_vars(application_id)
|
8
|
-
all_vars = get("/application/#{app_id_by_name(application_id)}/environment-variables").body[:data]
|
9
|
-
all_vars.collect { |var| to_nucleus_var(var) }
|
10
|
-
end
|
11
|
-
|
12
|
-
# @see Stub#env_var
|
13
|
-
def env_var(application_id, env_var_key)
|
14
|
-
response = get("/application/#{app_id_by_name(application_id)}/environment-variable/#{env_var_key}")
|
15
|
-
to_nucleus_var(response.body[:data])
|
16
|
-
end
|
17
|
-
|
18
|
-
# @see Stub#create_env_var
|
19
|
-
def create_env_var(application_id, env_var)
|
20
|
-
to_nucleus_var(post("/application/#{app_id_by_name(application_id)}/environment-variables",
|
21
|
-
body: { name: env_var[:key], value: env_var[:value] }).body[:data])
|
22
|
-
end
|
23
|
-
|
24
|
-
# @see Stub#update_env_var
|
25
|
-
def update_env_var(application_id, env_var_key, env_var)
|
26
|
-
to_nucleus_var(put("/application/#{app_id_by_name(application_id)}/environment-variable/#{env_var_key}",
|
27
|
-
body: { value: env_var[:value] }).body[:data])
|
28
|
-
end
|
29
|
-
|
30
|
-
# @see Stub#delete_env_var
|
31
|
-
def delete_env_var(application_id, env_var_key)
|
32
|
-
id = app_id_by_name(application_id)
|
33
|
-
# Openshift returns 204 even if the key did not exist
|
34
|
-
if get("/application/#{id}/environment-variable/#{env_var_key}", expects: [200, 404]).status == 404
|
35
|
-
|
36
|
-
end
|
37
|
-
delete("/application/#{id}/environment-variable/#{env_var_key}")
|
38
|
-
end
|
39
|
-
|
40
|
-
private
|
41
|
-
|
42
|
-
def to_nucleus_var(var)
|
43
|
-
{ id: var[:name], key: var[:name], value: var[:value] }
|
44
|
-
end
|
45
|
-
end
|
46
|
-
end
|
47
|
-
end
|
48
|
-
end
|
49
|
-
end
|
1
|
+
module Nucleus
|
2
|
+
module Adapters
|
3
|
+
module V1
|
4
|
+
class OpenshiftV2 < Stub
|
5
|
+
module Vars
|
6
|
+
# @see Stub#env_vars
|
7
|
+
def env_vars(application_id)
|
8
|
+
all_vars = get("/application/#{app_id_by_name(application_id)}/environment-variables").body[:data]
|
9
|
+
all_vars.collect { |var| to_nucleus_var(var) }
|
10
|
+
end
|
11
|
+
|
12
|
+
# @see Stub#env_var
|
13
|
+
def env_var(application_id, env_var_key)
|
14
|
+
response = get("/application/#{app_id_by_name(application_id)}/environment-variable/#{env_var_key}")
|
15
|
+
to_nucleus_var(response.body[:data])
|
16
|
+
end
|
17
|
+
|
18
|
+
# @see Stub#create_env_var
|
19
|
+
def create_env_var(application_id, env_var)
|
20
|
+
to_nucleus_var(post("/application/#{app_id_by_name(application_id)}/environment-variables",
|
21
|
+
body: { name: env_var[:key], value: env_var[:value] }).body[:data])
|
22
|
+
end
|
23
|
+
|
24
|
+
# @see Stub#update_env_var
|
25
|
+
def update_env_var(application_id, env_var_key, env_var)
|
26
|
+
to_nucleus_var(put("/application/#{app_id_by_name(application_id)}/environment-variable/#{env_var_key}",
|
27
|
+
body: { value: env_var[:value] }).body[:data])
|
28
|
+
end
|
29
|
+
|
30
|
+
# @see Stub#delete_env_var
|
31
|
+
def delete_env_var(application_id, env_var_key)
|
32
|
+
id = app_id_by_name(application_id)
|
33
|
+
# Openshift returns 204 even if the key did not exist
|
34
|
+
if get("/application/#{id}/environment-variable/#{env_var_key}", expects: [200, 404]).status == 404
|
35
|
+
raise Errors::AdapterResourceNotFoundError, "Env. var key '#{env_var_key}' does not exist"
|
36
|
+
end
|
37
|
+
delete("/application/#{id}/environment-variable/#{env_var_key}")
|
38
|
+
end
|
39
|
+
|
40
|
+
private
|
41
|
+
|
42
|
+
def to_nucleus_var(var)
|
43
|
+
{ id: var[:name], key: var[:name], value: var[:value] }
|
44
|
+
end
|
45
|
+
end
|
46
|
+
end
|
47
|
+
end
|
48
|
+
end
|
49
|
+
end
|
@@ -1,464 +1,464 @@
|
|
1
|
-
module Nucleus
|
2
|
-
module Adapters
|
3
|
-
# Version 1, or the first release of the Nucleus API.<br>
|
4
|
-
# It provides basic management functionality to handle:<br>
|
5
|
-
# * applications
|
6
|
-
# * domains
|
7
|
-
# * environment variables
|
8
|
-
# * logging
|
9
|
-
# * deployment
|
10
|
-
# * scaling (horizontal and vertical)
|
11
|
-
module V1
|
12
|
-
# Stub adapter for Nucleus API version 1.<br>
|
13
|
-
# The stub provides all methods that an actual adapter should implement.<br>
|
14
|
-
# It also contains the documentation that describes the expected method behaviour,
|
15
|
-
# which must be matched by the adapters.<br>
|
16
|
-
# <br>
|
17
|
-
# Adapter methods shall raise:<br>
|
18
|
-
# {Errors::EndpointAuthenticationError} == 401 if a endpoint call failed due to bad credentials<br>
|
19
|
-
# {Errors::AdapterResourceNotFoundError} == 404 if a resource could not be found<br>
|
20
|
-
# {Errors::SemanticAdapterRequestError} == 422 if the request could not be processed due to
|
21
|
-
# common semantic errors<br>
|
22
|
-
# {Errors::PlatformSpecificSemanticError} == 422 if the request could not be processed due to
|
23
|
-
# semantic errors that are specific to the endpoint / platform, for instance quota restrictions.<br>
|
24
|
-
# {Errors::UnknownAdapterCallError} == 500 if the endpoint API shows unexpected behavior,
|
25
|
-
# not matching the implementation<br>
|
26
|
-
# {Errors::AdapterMissingImplementationError} == 501 if a feature is not (yet) implemented by the adapter<br>
|
27
|
-
#
|
28
|
-
# If embedded in the Grape Restful API, authentication errors and bad requests are handled by Grape.<br>
|
29
|
-
# If an adapter is used within the +gem+, the developer must take care of authentication handling and
|
30
|
-
# missing form data.
|
31
|
-
#
|
32
|
-
# @abstract
|
33
|
-
class Stub < BaseAdapter
|
34
|
-
# Error message saying that the adapter feature has not been implemented yet.
|
35
|
-
NOT_IMPLEMENTED_ERROR = Errors::AdapterMissingImplementationError.new(
|
36
|
-
'Adapter is missing an implementation to support this feature')
|
37
|
-
|
38
|
-
# Build an Authentication client that can handle the authentication to the endpoint
|
39
|
-
# given the username and a matching password.
|
40
|
-
# @return [Nucleus::Adapters::AuthClient] authentication client
|
41
|
-
def auth_client
|
42
|
-
|
43
|
-
end
|
44
|
-
|
45
|
-
# Return a list of all {Nucleus::API::Models::Region class} compatible objects
|
46
|
-
# that are available on the current endpoint.<br>
|
47
|
-
# If the platform does not offer multi-region support, one 'default' region shall be returned.
|
48
|
-
# @raise [Nucleus::Errors::EndpointAuthenticationError] if the authentication on the endpoint failed
|
49
|
-
# @return [Hash, Nucleus::API::Models::Regions] region entity compatible Hash of available regions
|
50
|
-
def regions
|
51
|
-
|
52
|
-
end
|
53
|
-
|
54
|
-
# Return the {Nucleus::API::Models::Region class} compatible information
|
55
|
-
# regarding the region with the given region_id.
|
56
|
-
#
|
57
|
-
# @param [String] region_id Id of the region object to retrieve
|
58
|
-
# @raise [Nucleus::Errors::AdapterResourceNotFoundError] if no region matching the region_id could be found
|
59
|
-
# @raise [Nucleus::Errors::EndpointAuthenticationError] if the authentication on the endpoint failed
|
60
|
-
# @return [Hash, Nucleus::API::Models::Region] region entity compatible Hash with the id region_id
|
61
|
-
def region(region_id)
|
62
|
-
|
63
|
-
end
|
64
|
-
|
65
|
-
# Get a list of all applications that are accessible to the authenticated user account.
|
66
|
-
# @raise [Nucleus::Errors::EndpointAuthenticationError] if the authentication on the endpoint failed
|
67
|
-
# @return [Hash, Nucleus::API::Models::Applications] application entity list compatible hash
|
68
|
-
def applications
|
69
|
-
|
70
|
-
end
|
71
|
-
|
72
|
-
# Retrieve the application entity of the application with the given application_id.
|
73
|
-
# @param [String] application_id Id of the application object to retrieve
|
74
|
-
# @raise [Nucleus::Errors::AdapterResourceNotFoundError] if no app matching the application_id could be found
|
75
|
-
# @raise [Nucleus::Errors::EndpointAuthenticationError] if the authentication on the endpoint failed
|
76
|
-
# @return [Hash, Nucleus::API::Models::Application] application entity compatible Hash with the application_id
|
77
|
-
def application(application_id)
|
78
|
-
|
79
|
-
end
|
80
|
-
|
81
|
-
# Create a new application on the endpoint using the given application entity.
|
82
|
-
# @param [Hash, Nucleus::API::Models::Application] application entity compatible Hash.
|
83
|
-
# @option application [String] :name The name of the application
|
84
|
-
# @option application [Array<String>] :runtimes Runtimes (buildpacks) to use with the application
|
85
|
-
# @option application [String] :region Region where the application shall be deployed,
|
86
|
-
# call {#regions} for a list of allowed values
|
87
|
-
# @option application [Boolean] :autoscaled True if the application shall scale automatically,
|
88
|
-
# false if manual scaling shall be used. WARNING: This option is currently not supported by most vendors!
|
89
|
-
# @raise [Nucleus::Errors::EndpointAuthenticationError] if the authentication on the endpoint failed
|
90
|
-
# @return [Hash, Nucleus::API::Models::Application] application entity compatible Hash
|
91
|
-
# of the created application
|
92
|
-
def create_application(application)
|
93
|
-
|
94
|
-
end
|
95
|
-
|
96
|
-
# Update an application on the endpoint using the given application entity.
|
97
|
-
# @param [Hash, Nucleus::API::Models::Application] application application entity compatible Hash.
|
98
|
-
# @option application [String] :name The updated name of the application
|
99
|
-
# @option application [Array<String>] :runtimes Runtimes (buildpacks) to use with the application
|
100
|
-
# @param [String] application_id Id of the application object that shall be updated
|
101
|
-
# @raise [Nucleus::Errors::AdapterResourceNotFoundError] if no app matching the application_id could be found
|
102
|
-
# @raise [Nucleus::Errors::EndpointAuthenticationError] if the authentication on the endpoint failed
|
103
|
-
# @return [Hash, Nucleus::API::Models::Application] application entity compatible Hash with the application_id
|
104
|
-
def update_application(application_id, application)
|
105
|
-
|
106
|
-
end
|
107
|
-
|
108
|
-
# Delete the application with the given application_id on the endpoint.
|
109
|
-
# @param [String] application_id Id of the application object that shall be deleted
|
110
|
-
# @raise [Nucleus::Errors::AdapterResourceNotFoundError] if no app matching the application_id could be found
|
111
|
-
# @raise [Nucleus::Errors::EndpointAuthenticationError] if the authentication on the endpoint failed
|
112
|
-
# @return [void]
|
113
|
-
def delete_application(application_id)
|
114
|
-
|
115
|
-
end
|
116
|
-
|
117
|
-
# Get a list of all domains that are assigned to the application.
|
118
|
-
# @param [String] application_id Id of the application for which the domains are to be retrieved
|
119
|
-
# @raise [Nucleus::Errors::AdapterResourceNotFoundError] if no app matching the application_id could be found
|
120
|
-
# @raise [Nucleus::Errors::EndpointAuthenticationError] if the authentication on the endpoint failed
|
121
|
-
# @return [Hash, Nucleus::API::Models::Domains] domain entity list compatible hash
|
122
|
-
def domains(application_id)
|
123
|
-
|
124
|
-
end
|
125
|
-
|
126
|
-
# Retrieve the domain entity of the application with the given application_id and the domain with the domain_id.
|
127
|
-
# @param [String] application_id Id of the application for which the domain is to be retrieved
|
128
|
-
# @param [String] domain_id Id of the domain object to retrieve
|
129
|
-
# @raise [Nucleus::Errors::AdapterResourceNotFoundError] if no app matching the application_id,
|
130
|
-
# or no domain matching the domain_id could be found
|
131
|
-
# @raise [Nucleus::Errors::EndpointAuthenticationError] if the authentication on the endpoint failed
|
132
|
-
# @return [Hash, Nucleus::API::Models::Domain] domain entity compatible hash of the domain with the domain_id
|
133
|
-
def domain(application_id, domain_id)
|
134
|
-
|
135
|
-
end
|
136
|
-
|
137
|
-
# Create a new domain using the given domain entity and assign it to the application.
|
138
|
-
# @param [String] application_id Id of the application for which the domain is to be created
|
139
|
-
# @param [Hash, Nucleus::API::Models::Domain] domain domain entity compatible Hash.
|
140
|
-
# @option application [String] :name The domain name, e.g. +myapplication.example.org+
|
141
|
-
# @raise [Nucleus::Errors::AdapterResourceNotFoundError] if no app matching the application_id,
|
142
|
-
# or no domain matching the domain_id could be found
|
143
|
-
# @raise [Nucleus::Errors::EndpointAuthenticationError] if the authentication on the endpoint failed
|
144
|
-
# @return [Hash, Nucleus::API::Models::Domain] domain entity compatible hash of the created domain
|
145
|
-
def create_domain(application_id, domain)
|
146
|
-
|
147
|
-
end
|
148
|
-
|
149
|
-
# Delete the domain of the application with the domain_id.
|
150
|
-
# @param [String] application_id Id of the application for which the domain is to be deleted
|
151
|
-
# @param [String] domain_id Id of the domain object to delete
|
152
|
-
# @raise [Nucleus::Errors::AdapterResourceNotFoundError] if no app matching the application_id,
|
153
|
-
# or no domain matching the domain_id could be found
|
154
|
-
# @raise [Nucleus::Errors::EndpointAuthenticationError] if the authentication on the endpoint failed
|
155
|
-
# @return [void]
|
156
|
-
def delete_domain(application_id, domain_id)
|
157
|
-
|
158
|
-
end
|
159
|
-
|
160
|
-
# Get a list of all environment variables that are assigned to the application.
|
161
|
-
# @param [String] application_id Id of the application for which the env_vars are to be retrieved
|
162
|
-
# @raise [Nucleus::Errors::AdapterResourceNotFoundError] if no app matching the application_id could be found
|
163
|
-
# @raise [Nucleus::Errors::EndpointAuthenticationError] if the authentication on the endpoint failed
|
164
|
-
# @return [Hash, Nucleus::API::Models::EnvironmentVariables] environment variable entity list compatible hash
|
165
|
-
def env_vars(application_id)
|
166
|
-
|
167
|
-
end
|
168
|
-
|
169
|
-
# Retrieve the environment variable entity of the application with the given application_id and the env. var
|
170
|
-
# with the env_var_id.
|
171
|
-
# @param [String] application_id Id of the application for which the env_var is to be retrieved
|
172
|
-
# @param [String] env_var_id Id of the env_var object to retrieve
|
173
|
-
# @raise [Nucleus::Errors::AdapterResourceNotFoundError] if no app matching the application_id,
|
174
|
-
# or no environment variable matching the env_var_id could be found
|
175
|
-
# @raise [Nucleus::Errors::EndpointAuthenticationError] if the authentication on the endpoint failed
|
176
|
-
# @return [Hash, Nucleus::API::Models::EnvironmentVariable] environment variable entity compatible hash
|
177
|
-
# of the env. var with the env_var_id
|
178
|
-
def env_var(application_id, env_var_id)
|
179
|
-
|
180
|
-
end
|
181
|
-
|
182
|
-
# Create a new environment variable using the given env. var entity and assign it to the application.
|
183
|
-
# @param [String] application_id Id of the application for which the env_var is to be created
|
184
|
-
# @param [Hash, Nucleus::API::Models::EnvironmentVariable] env_var env. var entity compatible Hash.
|
185
|
-
# @option env_var [String] :key Key of the environment variable, e.g. +IP+
|
186
|
-
# @option env_var [String] :value Value of the environment variable, e.g. +0.0.0.0+
|
187
|
-
# @raise [Nucleus::Errors::AdapterResourceNotFoundError] if no app matching the application_id could be found
|
188
|
-
# @raise [Nucleus::Errors::EndpointAuthenticationError] if the authentication on the endpoint failed
|
189
|
-
# @return [Hash, Nucleus::API::Models::EnvironmentVariable] environment variable entity compatible hash
|
190
|
-
# of the created env. var
|
191
|
-
def create_env_var(application_id, env_var)
|
192
|
-
|
193
|
-
end
|
194
|
-
|
195
|
-
# Update the environment variable of the application, using the given env. var entity.
|
196
|
-
# @param [String] application_id Id of the application for which the env_var is to be updated
|
197
|
-
# @param [String] env_var_id Id of the env_var object to update
|
198
|
-
# @param [Hash, Nucleus::API::Models::EnvironmentVariable] env_var env. var entity compatible Hash.
|
199
|
-
# @option env_var [String] :value Value of the environment variable, e.g. +0.0.0.0+
|
200
|
-
# @raise [Nucleus::Errors::AdapterResourceNotFoundError] if no app matching the application_id,
|
201
|
-
# or no environment variable matching the env_var_id could be found
|
202
|
-
# @raise [Nucleus::Errors::EndpointAuthenticationError] if the authentication on the endpoint failed
|
203
|
-
# @return [Hash, Nucleus::API::Models::EnvironmentVariable] environment variable entity compatible hash
|
204
|
-
# of the updated env. var
|
205
|
-
def update_env_var(application_id, env_var_id, env_var)
|
206
|
-
|
207
|
-
end
|
208
|
-
|
209
|
-
# Delete the environment variable of the application with the env_var_id.
|
210
|
-
# @param [String] application_id Id of the application for which the env_var is to be deleted
|
211
|
-
# @param [String] env_var_id Id of the env_var object to delete
|
212
|
-
# @raise [Nucleus::Errors::AdapterResourceNotFoundError] if no app matching the application_id,
|
213
|
-
# or no environment variable matching the env_var_id could be found
|
214
|
-
# @raise [Nucleus::Errors::EndpointAuthenticationError] if the authentication on the endpoint failed
|
215
|
-
# @return [void]
|
216
|
-
def delete_env_var(application_id, env_var_id)
|
217
|
-
|
218
|
-
end
|
219
|
-
|
220
|
-
# Start all instances of the application with the application_id.
|
221
|
-
# The state of all application instances should become +running+ when all actions are finished
|
222
|
-
# (unless there are technical errors preventing the application to start).
|
223
|
-
# Preconditions:<br>
|
224
|
-
# * application must have been deployed
|
225
|
-
# Postconditions (delayed):<br>
|
226
|
-
# * state == running
|
227
|
-
# @param [String] application_id Id of the application which is to be started
|
228
|
-
# @raise [Nucleus::Errors::AdapterResourceNotFoundError] if the application could not be found
|
229
|
-
# @raise [Nucleus::Errors::EndpointAuthenticationError] if the authentication on the endpoint failed
|
230
|
-
# @raise [Nucleus::Errors::SemanticAdapterRequestError] if the application is not deployed
|
231
|
-
# @return [Hash, Nucleus::API::Models::Application] application entity compatible Hash
|
232
|
-
def start(application_id)
|
233
|
-
|
234
|
-
end
|
235
|
-
|
236
|
-
# Stop all instances of the application with the application_id.
|
237
|
-
# The state of all application instances will become +stopped+ when all actions are finished.
|
238
|
-
# Preconditions:<br>
|
239
|
-
# * application must have been deployed
|
240
|
-
# Postconditions (delayed):<br>
|
241
|
-
# * state == stopped
|
242
|
-
# @param [String] application_id Id of the application which is to be stopped
|
243
|
-
# @raise [Nucleus::Errors::AdapterResourceNotFoundError] if the application could not be found
|
244
|
-
# @raise [Nucleus::Errors::EndpointAuthenticationError] if the authentication on the endpoint failed
|
245
|
-
# @raise [Nucleus::Errors::SemanticAdapterRequestError] if the application is not deployed
|
246
|
-
# @return [Hash, Nucleus::API::Models::Application] application entity compatible Hash
|
247
|
-
def stop(application_id)
|
248
|
-
|
249
|
-
end
|
250
|
-
|
251
|
-
# Restart all instances of the application with the application_id.
|
252
|
-
# The state of all application instances should become +running+ when all actions are finished
|
253
|
-
# (unless there are technical errors preventing the application to start).
|
254
|
-
# Preconditions:<br>
|
255
|
-
# * application must have been deployed
|
256
|
-
# Postconditions (delayed):<br>
|
257
|
-
# * state == running
|
258
|
-
# @param [String] application_id Id of the application which is to be restarted
|
259
|
-
# @raise [Nucleus::Errors::AdapterResourceNotFoundError] if the application could not be found
|
260
|
-
# @raise [Nucleus::Errors::EndpointAuthenticationError] if the authentication on the endpoint failed
|
261
|
-
# @raise [Nucleus::Errors::SemanticAdapterRequestError] if the application is not deployed
|
262
|
-
# @return [Hash, Nucleus::API::Models::Application] application entity compatible Hash
|
263
|
-
def restart(application_id)
|
264
|
-
|
265
|
-
end
|
266
|
-
|
267
|
-
# Deploy the data of the application given the compressed application archive.<br>
|
268
|
-
# The application shall not be running when the deployment is finished.
|
269
|
-
# Postconditions (delayed):<br>
|
270
|
-
# * state == deployed
|
271
|
-
# @param [String] application_id Id of the application for which the data is to be deployed
|
272
|
-
# @param [Tempfile] application_archive compressed application archive that shall be deployed
|
273
|
-
# @param [Symbol] compression_format archive formats, see {Nucleus::API::Enums::CompressionFormats.all}
|
274
|
-
# for a list of all allowed values
|
275
|
-
# @raise [Nucleus::Errors::AdapterResourceNotFoundError] if the application could not be found
|
276
|
-
# @raise [Nucleus::Errors::EndpointAuthenticationError] if the authentication on the endpoint failed
|
277
|
-
# @raise [Nucleus::Errors::AdapterRequestError] if the application archive that shall be deployed is no
|
278
|
-
# valid application archive, or if the application_archive / compression_format are not supported
|
279
|
-
# @return [void]
|
280
|
-
def deploy(application_id, application_archive, compression_format)
|
281
|
-
|
282
|
-
end
|
283
|
-
|
284
|
-
# Rebuild the recently deployed bits of the application.<br>
|
285
|
-
# The rebuild can be used to update the application to use a new version of the underlying runtime or fix a
|
286
|
-
# previously failed application start after the issues have been resolved.
|
287
|
-
# @param [String] application_id Id of the application which is to be rebuild
|
288
|
-
# @raise [Nucleus::Errors::AdapterResourceNotFoundError] if the application could not be found
|
289
|
-
# @raise [Nucleus::Errors::EndpointAuthenticationError] if the authentication on the endpoint failed
|
290
|
-
# @return [Hash, Nucleus::API::Models::Application] application entity compatible Hash
|
291
|
-
def rebuild(application_id)
|
292
|
-
|
293
|
-
end
|
294
|
-
|
295
|
-
# Download the application data that is currently deployed on the platform.
|
296
|
-
# The downloaded application archive must contain at least all files that were originally deployed,
|
297
|
-
# but can also contain additional files, for instance log files.
|
298
|
-
# @param [String] application_id Id of the application of which the data is to be downloaded
|
299
|
-
# @param [Symbol] compression_format archive formats, see {Nucleus::API::Enums::CompressionFormats.all}
|
300
|
-
# for a list of all allowed values
|
301
|
-
# @raise [Nucleus::Errors::AdapterResourceNotFoundError] if the application could not be found
|
302
|
-
# @raise [Nucleus::Errors::EndpointAuthenticationError] if the authentication on the endpoint failed
|
303
|
-
# @raise [Nucleus::Errors::AdapterRequestError] if the application archive that shall be deployed is no
|
304
|
-
# valid application archive, or if the compression_format is not supported
|
305
|
-
# @return [StringIO] binary application data
|
306
|
-
def download(application_id, compression_format)
|
307
|
-
|
308
|
-
end
|
309
|
-
|
310
|
-
# TODO: Finish documentation when vertical scaling is added
|
311
|
-
# Scale the application and adjust the number of instances that shall be running.
|
312
|
-
# @param [String] application_id Id of the application which is to be scaled
|
313
|
-
# @raise [Nucleus::Errors::AdapterResourceNotFoundError] if the application could not be found
|
314
|
-
# @raise [Nucleus::Errors::EndpointAuthenticationError] if the authentication on the endpoint failed
|
315
|
-
# @raise [Nucleus::Errors::SemanticAdapterRequestError] if the number of instances is disallowed on the platform
|
316
|
-
# @return [Hash, Nucleus::API::Models::Application] application entity compatible Hash
|
317
|
-
def scale(application_id, instances)
|
318
|
-
|
319
|
-
end
|
320
|
-
|
321
|
-
# Assert whether the given log_id is valid for the application_id.
|
322
|
-
# @param [String] application_id Id of the application of which the log existence is to be checked
|
323
|
-
# @param [String] log_id Id of the log whose existence is to be checked
|
324
|
-
# @raise [Nucleus::Errors::AdapterResourceNotFoundError] if the application could not be found
|
325
|
-
# @raise [Nucleus::Errors::EndpointAuthenticationError] if the authentication on the endpoint failed
|
326
|
-
# @return [Boolean] returns true if there is a log for the application with the log_id,
|
327
|
-
# false if it does not exist
|
328
|
-
def log?(application_id, log_id)
|
329
|
-
|
330
|
-
end
|
331
|
-
|
332
|
-
# Get a list of all logs that are available for the application.
|
333
|
-
# @param [String] application_id Id of the application of which the logs are to be listed
|
334
|
-
# @raise [Nucleus::Errors::AdapterResourceNotFoundError] if the application could not be found
|
335
|
-
# @raise [Nucleus::Errors::EndpointAuthenticationError] if the authentication on the endpoint failed
|
336
|
-
# @return [Hash, Nucleus::API::Models::Logs] log entity list compatible hash
|
337
|
-
def logs(application_id)
|
338
|
-
|
339
|
-
end
|
340
|
-
|
341
|
-
# Retrieve all log entries of the log.
|
342
|
-
# @param [String] application_id Id of the application of which the log_entries are to be retrieved
|
343
|
-
# @param [String] log_id Id of the log for which the entries are to be retrieved
|
344
|
-
# @raise [Nucleus::Errors::AdapterResourceNotFoundError] if the application or log could not be found
|
345
|
-
# @raise [Nucleus::Errors::EndpointAuthenticationError] if the authentication on the endpoint failed
|
346
|
-
# @return [Array<String>] array of log entries, starting with the earliest entry at pos [0]
|
347
|
-
def log_entries(application_id, log_id)
|
348
|
-
|
349
|
-
end
|
350
|
-
|
351
|
-
# Tail the logfile of the application and send each retrieved chunk, which can be a line of a file,
|
352
|
-
# a new chunk in a received http message, or a websocket message, to the stream. The deferred tailing
|
353
|
-
# process shall be stoppable when the +stop+ method of the returned {Nucleus::Adapters::TailStopper TailStopper}
|
354
|
-
# is called.
|
355
|
-
# @param [String] application_id Id of the application of which the log is to be tailed
|
356
|
-
# @param [String] log_id Id of the log that is to be tailed
|
357
|
-
# @param [Nucleus::StreamCallback] stream stream callback to which messages can be sent via
|
358
|
-
# the +send_message+ method
|
359
|
-
# @raise [Nucleus::Errors::AdapterResourceNotFoundError] if the application or log could not be found
|
360
|
-
# @raise [Nucleus::Errors::EndpointAuthenticationError] if the authentication on the endpoint failed
|
361
|
-
# @return [Nucleus::Adapters::TailStopper] callback object to stop the ongoing tail process
|
362
|
-
def tail(application_id, log_id, stream)
|
363
|
-
|
364
|
-
end
|
365
|
-
|
366
|
-
# List all services that are available at the endpoint.
|
367
|
-
# @raise [Nucleus::Errors::EndpointAuthenticationError] if the authentication on the endpoint failed
|
368
|
-
# @return [Hash, Nucleus::API::Models::Services] services list compatible hash
|
369
|
-
def services
|
370
|
-
|
371
|
-
end
|
372
|
-
|
373
|
-
# Retrieve the service entity matching the given service_id.
|
374
|
-
# @param [String] service_id Id of the service that is to be retrieved
|
375
|
-
# @raise [Nucleus::Errors::AdapterResourceNotFoundError] if the service could not be found
|
376
|
-
# @raise [Nucleus::Errors::EndpointAuthenticationError] if the authentication on the endpoint failed
|
377
|
-
# @return [Hash, Nucleus::API::Models::Service] service entity compatible hash
|
378
|
-
def service(service_id)
|
379
|
-
|
380
|
-
end
|
381
|
-
|
382
|
-
# List all plans that can be chosen for the service with the service_id, ascending order on the price.
|
383
|
-
# @param [String] service_id Id of the service the plans belong to
|
384
|
-
# @raise [Nucleus::Errors::AdapterResourceNotFoundError] if the service could not be found
|
385
|
-
# @raise [Nucleus::Errors::EndpointAuthenticationError] if the authentication on the endpoint failed
|
386
|
-
# @return [Hash, Nucleus::API::Models::ServicePlans] service plan list compatible hash
|
387
|
-
def service_plans(service_id)
|
388
|
-
|
389
|
-
end
|
390
|
-
|
391
|
-
# Show the plan with the plan_id that is applicable to the service with the service_id.
|
392
|
-
# @param [String] service_id Id of the service the plans belongs to
|
393
|
-
# @raise [Nucleus::Errors::AdapterResourceNotFoundError] if the service or the plan could not be found
|
394
|
-
# @raise [Nucleus::Errors::EndpointAuthenticationError] if the authentication on the endpoint failed
|
395
|
-
# @return [Hash, Nucleus::API::Models::ServicePlan] service plan entity compatible hash
|
396
|
-
def service_plan(service_id, plan_id)
|
397
|
-
|
398
|
-
end
|
399
|
-
|
400
|
-
# List all services that are installed on the application with the given application_id.
|
401
|
-
# @param [String] application_id Id of the application of which the services are to be listed of
|
402
|
-
# @raise [Nucleus::Errors::AdapterResourceNotFoundError] if the application could not be found
|
403
|
-
# @raise [Nucleus::Errors::EndpointAuthenticationError] if the authentication on the endpoint failed
|
404
|
-
# @return [Hash, Nucleus::API::Models::InstalledServices] installed services list compatible hash
|
405
|
-
def installed_services(application_id)
|
406
|
-
|
407
|
-
end
|
408
|
-
|
409
|
-
# Retrieve the installed service entity matching the given service_id that is installed
|
410
|
-
# on the application with the given application_id.
|
411
|
-
# @param [String] service_id Id of the installed service that is to be retrieved
|
412
|
-
# @raise [Nucleus::Errors::AdapterResourceNotFoundError] if the application or service could not be found
|
413
|
-
# @raise [Nucleus::Errors::EndpointAuthenticationError] if the authentication on the endpoint failed
|
414
|
-
# @return [Hash, Nucleus::API::Models::InstalledService] installed service entity compatible hash
|
415
|
-
def installed_service(application_id, service_id)
|
416
|
-
|
417
|
-
end
|
418
|
-
|
419
|
-
# Add the service with the service_id to the application with the application_id.
|
420
|
-
# @param [String] application_id Id of the application of which the service is to be added to
|
421
|
-
# @param [Hash, Nucleus::API::Models::Service] service_entity service entity compatible Hash.
|
422
|
-
# @option env_var [String] :id ID of the service to add to the application
|
423
|
-
# @param [Hash, Nucleus::API::Models::ServicePlan] plan_entity service plan entity compatible Hash.
|
424
|
-
# @option env_var [String] :id ID of the service plan that shall be applied
|
425
|
-
# @raise [Nucleus::Errors::AdapterResourceNotFoundError] if the application could not be found
|
426
|
-
# @raise [Nucleus::Errors::EndpointAuthenticationError] if the authentication on the endpoint failed
|
427
|
-
# @raise [Nucleus::Errors::SemanticAdapterRequestError] if the service to add or the plan to use
|
428
|
-
# could not be found
|
429
|
-
# @return [Hash, Nucleus::API::Models::InstalledService] installed service entity compatible hash
|
430
|
-
def add_service(application_id, service_entity, plan_entity)
|
431
|
-
|
432
|
-
end
|
433
|
-
|
434
|
-
# Change the service, e.g. the active plan, of the service with the service_id for
|
435
|
-
# the application with the application_id. Use the fields of the service_entity to execute the update.
|
436
|
-
# @param [String] application_id Id of the application of which the service is to be changed
|
437
|
-
# @param [String] service_id Id of the installed service that is to be updated. The id must not (but can) be
|
438
|
-
# identical to the id of the service the installed service is based on.
|
439
|
-
# @param [Hash, Nucleus::API::Models::ServicePlan] plan_entity service plan entity compatible Hash.
|
440
|
-
# @option env_var [String] :id ID of the service plan that shall be applied
|
441
|
-
# @raise [Nucleus::Errors::AdapterResourceNotFoundError] if the application could not be found or
|
442
|
-
# the service was not installed on this application
|
443
|
-
# @raise [Nucleus::Errors::EndpointAuthenticationError] if the authentication on the endpoint failed
|
444
|
-
# @raise [Nucleus::Errors::SemanticAdapterRequestError] if the plan to use could not be found
|
445
|
-
# @return [Hash, Nucleus::API::Models::InstalledService] installed service entity compatible hash
|
446
|
-
def change_service(application_id, service_id, plan_entity)
|
447
|
-
|
448
|
-
end
|
449
|
-
|
450
|
-
# Remove the installed service with the service_id from the application with the application_id.
|
451
|
-
# @param [String] application_id Id of the application of which the service is to be removed from
|
452
|
-
# @param [String] service_id Id of the installed service that is to be removed from the application. The id
|
453
|
-
# must not (but can) be identical to the id of the service the installed service is based on.
|
454
|
-
# @raise [Nucleus::Errors::AdapterResourceNotFoundError] if the application could not be found or
|
455
|
-
# the service was not installed on this application
|
456
|
-
# @raise [Nucleus::Errors::EndpointAuthenticationError] if the authentication on the endpoint failed
|
457
|
-
# @return [void]
|
458
|
-
def remove_service(application_id, service_id)
|
459
|
-
|
460
|
-
end
|
461
|
-
end
|
462
|
-
end
|
463
|
-
end
|
464
|
-
end
|
1
|
+
module Nucleus
|
2
|
+
module Adapters
|
3
|
+
# Version 1, or the first release of the Nucleus API.<br>
|
4
|
+
# It provides basic management functionality to handle:<br>
|
5
|
+
# * applications
|
6
|
+
# * domains
|
7
|
+
# * environment variables
|
8
|
+
# * logging
|
9
|
+
# * deployment
|
10
|
+
# * scaling (horizontal and vertical)
|
11
|
+
module V1
|
12
|
+
# Stub adapter for Nucleus API version 1.<br>
|
13
|
+
# The stub provides all methods that an actual adapter should implement.<br>
|
14
|
+
# It also contains the documentation that describes the expected method behaviour,
|
15
|
+
# which must be matched by the adapters.<br>
|
16
|
+
# <br>
|
17
|
+
# Adapter methods shall raise:<br>
|
18
|
+
# {Errors::EndpointAuthenticationError} == 401 if a endpoint call failed due to bad credentials<br>
|
19
|
+
# {Errors::AdapterResourceNotFoundError} == 404 if a resource could not be found<br>
|
20
|
+
# {Errors::SemanticAdapterRequestError} == 422 if the request could not be processed due to
|
21
|
+
# common semantic errors<br>
|
22
|
+
# {Errors::PlatformSpecificSemanticError} == 422 if the request could not be processed due to
|
23
|
+
# semantic errors that are specific to the endpoint / platform, for instance quota restrictions.<br>
|
24
|
+
# {Errors::UnknownAdapterCallError} == 500 if the endpoint API shows unexpected behavior,
|
25
|
+
# not matching the implementation<br>
|
26
|
+
# {Errors::AdapterMissingImplementationError} == 501 if a feature is not (yet) implemented by the adapter<br>
|
27
|
+
#
|
28
|
+
# If embedded in the Grape Restful API, authentication errors and bad requests are handled by Grape.<br>
|
29
|
+
# If an adapter is used within the +gem+, the developer must take care of authentication handling and
|
30
|
+
# missing form data.
|
31
|
+
#
|
32
|
+
# @abstract
|
33
|
+
class Stub < BaseAdapter
|
34
|
+
# Error message saying that the adapter feature has not been implemented yet.
|
35
|
+
NOT_IMPLEMENTED_ERROR = Errors::AdapterMissingImplementationError.new(
|
36
|
+
'Adapter is missing an implementation to support this feature')
|
37
|
+
|
38
|
+
# Build an Authentication client that can handle the authentication to the endpoint
|
39
|
+
# given the username and a matching password.
|
40
|
+
# @return [Nucleus::Adapters::AuthClient] authentication client
|
41
|
+
def auth_client
|
42
|
+
raise NOT_IMPLEMENTED_ERROR
|
43
|
+
end
|
44
|
+
|
45
|
+
# Return a list of all {Nucleus::API::Models::Region class} compatible objects
|
46
|
+
# that are available on the current endpoint.<br>
|
47
|
+
# If the platform does not offer multi-region support, one 'default' region shall be returned.
|
48
|
+
# @raise [Nucleus::Errors::EndpointAuthenticationError] if the authentication on the endpoint failed
|
49
|
+
# @return [Hash, Nucleus::API::Models::Regions] region entity compatible Hash of available regions
|
50
|
+
def regions
|
51
|
+
raise NOT_IMPLEMENTED_ERROR
|
52
|
+
end
|
53
|
+
|
54
|
+
# Return the {Nucleus::API::Models::Region class} compatible information
|
55
|
+
# regarding the region with the given region_id.
|
56
|
+
#
|
57
|
+
# @param [String] region_id Id of the region object to retrieve
|
58
|
+
# @raise [Nucleus::Errors::AdapterResourceNotFoundError] if no region matching the region_id could be found
|
59
|
+
# @raise [Nucleus::Errors::EndpointAuthenticationError] if the authentication on the endpoint failed
|
60
|
+
# @return [Hash, Nucleus::API::Models::Region] region entity compatible Hash with the id region_id
|
61
|
+
def region(region_id)
|
62
|
+
raise NOT_IMPLEMENTED_ERROR
|
63
|
+
end
|
64
|
+
|
65
|
+
# Get a list of all applications that are accessible to the authenticated user account.
|
66
|
+
# @raise [Nucleus::Errors::EndpointAuthenticationError] if the authentication on the endpoint failed
|
67
|
+
# @return [Hash, Nucleus::API::Models::Applications] application entity list compatible hash
|
68
|
+
def applications
|
69
|
+
raise NOT_IMPLEMENTED_ERROR
|
70
|
+
end
|
71
|
+
|
72
|
+
# Retrieve the application entity of the application with the given application_id.
|
73
|
+
# @param [String] application_id Id of the application object to retrieve
|
74
|
+
# @raise [Nucleus::Errors::AdapterResourceNotFoundError] if no app matching the application_id could be found
|
75
|
+
# @raise [Nucleus::Errors::EndpointAuthenticationError] if the authentication on the endpoint failed
|
76
|
+
# @return [Hash, Nucleus::API::Models::Application] application entity compatible Hash with the application_id
|
77
|
+
def application(application_id)
|
78
|
+
raise NOT_IMPLEMENTED_ERROR
|
79
|
+
end
|
80
|
+
|
81
|
+
# Create a new application on the endpoint using the given application entity.
|
82
|
+
# @param [Hash, Nucleus::API::Models::Application] application entity compatible Hash.
|
83
|
+
# @option application [String] :name The name of the application
|
84
|
+
# @option application [Array<String>] :runtimes Runtimes (buildpacks) to use with the application
|
85
|
+
# @option application [String] :region Region where the application shall be deployed,
|
86
|
+
# call {#regions} for a list of allowed values
|
87
|
+
# @option application [Boolean] :autoscaled True if the application shall scale automatically,
|
88
|
+
# false if manual scaling shall be used. WARNING: This option is currently not supported by most vendors!
|
89
|
+
# @raise [Nucleus::Errors::EndpointAuthenticationError] if the authentication on the endpoint failed
|
90
|
+
# @return [Hash, Nucleus::API::Models::Application] application entity compatible Hash
|
91
|
+
# of the created application
|
92
|
+
def create_application(application)
|
93
|
+
raise NOT_IMPLEMENTED_ERROR
|
94
|
+
end
|
95
|
+
|
96
|
+
# Update an application on the endpoint using the given application entity.
|
97
|
+
# @param [Hash, Nucleus::API::Models::Application] application application entity compatible Hash.
|
98
|
+
# @option application [String] :name The updated name of the application
|
99
|
+
# @option application [Array<String>] :runtimes Runtimes (buildpacks) to use with the application
|
100
|
+
# @param [String] application_id Id of the application object that shall be updated
|
101
|
+
# @raise [Nucleus::Errors::AdapterResourceNotFoundError] if no app matching the application_id could be found
|
102
|
+
# @raise [Nucleus::Errors::EndpointAuthenticationError] if the authentication on the endpoint failed
|
103
|
+
# @return [Hash, Nucleus::API::Models::Application] application entity compatible Hash with the application_id
|
104
|
+
def update_application(application_id, application)
|
105
|
+
raise NOT_IMPLEMENTED_ERROR
|
106
|
+
end
|
107
|
+
|
108
|
+
# Delete the application with the given application_id on the endpoint.
|
109
|
+
# @param [String] application_id Id of the application object that shall be deleted
|
110
|
+
# @raise [Nucleus::Errors::AdapterResourceNotFoundError] if no app matching the application_id could be found
|
111
|
+
# @raise [Nucleus::Errors::EndpointAuthenticationError] if the authentication on the endpoint failed
|
112
|
+
# @return [void]
|
113
|
+
def delete_application(application_id)
|
114
|
+
raise NOT_IMPLEMENTED_ERROR
|
115
|
+
end
|
116
|
+
|
117
|
+
# Get a list of all domains that are assigned to the application.
|
118
|
+
# @param [String] application_id Id of the application for which the domains are to be retrieved
|
119
|
+
# @raise [Nucleus::Errors::AdapterResourceNotFoundError] if no app matching the application_id could be found
|
120
|
+
# @raise [Nucleus::Errors::EndpointAuthenticationError] if the authentication on the endpoint failed
|
121
|
+
# @return [Hash, Nucleus::API::Models::Domains] domain entity list compatible hash
|
122
|
+
def domains(application_id)
|
123
|
+
raise NOT_IMPLEMENTED_ERROR
|
124
|
+
end
|
125
|
+
|
126
|
+
# Retrieve the domain entity of the application with the given application_id and the domain with the domain_id.
|
127
|
+
# @param [String] application_id Id of the application for which the domain is to be retrieved
|
128
|
+
# @param [String] domain_id Id of the domain object to retrieve
|
129
|
+
# @raise [Nucleus::Errors::AdapterResourceNotFoundError] if no app matching the application_id,
|
130
|
+
# or no domain matching the domain_id could be found
|
131
|
+
# @raise [Nucleus::Errors::EndpointAuthenticationError] if the authentication on the endpoint failed
|
132
|
+
# @return [Hash, Nucleus::API::Models::Domain] domain entity compatible hash of the domain with the domain_id
|
133
|
+
def domain(application_id, domain_id)
|
134
|
+
raise NOT_IMPLEMENTED_ERROR
|
135
|
+
end
|
136
|
+
|
137
|
+
# Create a new domain using the given domain entity and assign it to the application.
|
138
|
+
# @param [String] application_id Id of the application for which the domain is to be created
|
139
|
+
# @param [Hash, Nucleus::API::Models::Domain] domain domain entity compatible Hash.
|
140
|
+
# @option application [String] :name The domain name, e.g. +myapplication.example.org+
|
141
|
+
# @raise [Nucleus::Errors::AdapterResourceNotFoundError] if no app matching the application_id,
|
142
|
+
# or no domain matching the domain_id could be found
|
143
|
+
# @raise [Nucleus::Errors::EndpointAuthenticationError] if the authentication on the endpoint failed
|
144
|
+
# @return [Hash, Nucleus::API::Models::Domain] domain entity compatible hash of the created domain
|
145
|
+
def create_domain(application_id, domain)
|
146
|
+
raise NOT_IMPLEMENTED_ERROR
|
147
|
+
end
|
148
|
+
|
149
|
+
# Delete the domain of the application with the domain_id.
|
150
|
+
# @param [String] application_id Id of the application for which the domain is to be deleted
|
151
|
+
# @param [String] domain_id Id of the domain object to delete
|
152
|
+
# @raise [Nucleus::Errors::AdapterResourceNotFoundError] if no app matching the application_id,
|
153
|
+
# or no domain matching the domain_id could be found
|
154
|
+
# @raise [Nucleus::Errors::EndpointAuthenticationError] if the authentication on the endpoint failed
|
155
|
+
# @return [void]
|
156
|
+
def delete_domain(application_id, domain_id)
|
157
|
+
raise NOT_IMPLEMENTED_ERROR
|
158
|
+
end
|
159
|
+
|
160
|
+
# Get a list of all environment variables that are assigned to the application.
|
161
|
+
# @param [String] application_id Id of the application for which the env_vars are to be retrieved
|
162
|
+
# @raise [Nucleus::Errors::AdapterResourceNotFoundError] if no app matching the application_id could be found
|
163
|
+
# @raise [Nucleus::Errors::EndpointAuthenticationError] if the authentication on the endpoint failed
|
164
|
+
# @return [Hash, Nucleus::API::Models::EnvironmentVariables] environment variable entity list compatible hash
|
165
|
+
def env_vars(application_id)
|
166
|
+
raise NOT_IMPLEMENTED_ERROR
|
167
|
+
end
|
168
|
+
|
169
|
+
# Retrieve the environment variable entity of the application with the given application_id and the env. var
|
170
|
+
# with the env_var_id.
|
171
|
+
# @param [String] application_id Id of the application for which the env_var is to be retrieved
|
172
|
+
# @param [String] env_var_id Id of the env_var object to retrieve
|
173
|
+
# @raise [Nucleus::Errors::AdapterResourceNotFoundError] if no app matching the application_id,
|
174
|
+
# or no environment variable matching the env_var_id could be found
|
175
|
+
# @raise [Nucleus::Errors::EndpointAuthenticationError] if the authentication on the endpoint failed
|
176
|
+
# @return [Hash, Nucleus::API::Models::EnvironmentVariable] environment variable entity compatible hash
|
177
|
+
# of the env. var with the env_var_id
|
178
|
+
def env_var(application_id, env_var_id)
|
179
|
+
raise NOT_IMPLEMENTED_ERROR
|
180
|
+
end
|
181
|
+
|
182
|
+
# Create a new environment variable using the given env. var entity and assign it to the application.
|
183
|
+
# @param [String] application_id Id of the application for which the env_var is to be created
|
184
|
+
# @param [Hash, Nucleus::API::Models::EnvironmentVariable] env_var env. var entity compatible Hash.
|
185
|
+
# @option env_var [String] :key Key of the environment variable, e.g. +IP+
|
186
|
+
# @option env_var [String] :value Value of the environment variable, e.g. +0.0.0.0+
|
187
|
+
# @raise [Nucleus::Errors::AdapterResourceNotFoundError] if no app matching the application_id could be found
|
188
|
+
# @raise [Nucleus::Errors::EndpointAuthenticationError] if the authentication on the endpoint failed
|
189
|
+
# @return [Hash, Nucleus::API::Models::EnvironmentVariable] environment variable entity compatible hash
|
190
|
+
# of the created env. var
|
191
|
+
def create_env_var(application_id, env_var)
|
192
|
+
raise NOT_IMPLEMENTED_ERROR
|
193
|
+
end
|
194
|
+
|
195
|
+
# Update the environment variable of the application, using the given env. var entity.
|
196
|
+
# @param [String] application_id Id of the application for which the env_var is to be updated
|
197
|
+
# @param [String] env_var_id Id of the env_var object to update
|
198
|
+
# @param [Hash, Nucleus::API::Models::EnvironmentVariable] env_var env. var entity compatible Hash.
|
199
|
+
# @option env_var [String] :value Value of the environment variable, e.g. +0.0.0.0+
|
200
|
+
# @raise [Nucleus::Errors::AdapterResourceNotFoundError] if no app matching the application_id,
|
201
|
+
# or no environment variable matching the env_var_id could be found
|
202
|
+
# @raise [Nucleus::Errors::EndpointAuthenticationError] if the authentication on the endpoint failed
|
203
|
+
# @return [Hash, Nucleus::API::Models::EnvironmentVariable] environment variable entity compatible hash
|
204
|
+
# of the updated env. var
|
205
|
+
def update_env_var(application_id, env_var_id, env_var)
|
206
|
+
raise NOT_IMPLEMENTED_ERROR
|
207
|
+
end
|
208
|
+
|
209
|
+
# Delete the environment variable of the application with the env_var_id.
|
210
|
+
# @param [String] application_id Id of the application for which the env_var is to be deleted
|
211
|
+
# @param [String] env_var_id Id of the env_var object to delete
|
212
|
+
# @raise [Nucleus::Errors::AdapterResourceNotFoundError] if no app matching the application_id,
|
213
|
+
# or no environment variable matching the env_var_id could be found
|
214
|
+
# @raise [Nucleus::Errors::EndpointAuthenticationError] if the authentication on the endpoint failed
|
215
|
+
# @return [void]
|
216
|
+
def delete_env_var(application_id, env_var_id)
|
217
|
+
raise NOT_IMPLEMENTED_ERROR
|
218
|
+
end
|
219
|
+
|
220
|
+
# Start all instances of the application with the application_id.
|
221
|
+
# The state of all application instances should become +running+ when all actions are finished
|
222
|
+
# (unless there are technical errors preventing the application to start).
|
223
|
+
# Preconditions:<br>
|
224
|
+
# * application must have been deployed
|
225
|
+
# Postconditions (delayed):<br>
|
226
|
+
# * state == running
|
227
|
+
# @param [String] application_id Id of the application which is to be started
|
228
|
+
# @raise [Nucleus::Errors::AdapterResourceNotFoundError] if the application could not be found
|
229
|
+
# @raise [Nucleus::Errors::EndpointAuthenticationError] if the authentication on the endpoint failed
|
230
|
+
# @raise [Nucleus::Errors::SemanticAdapterRequestError] if the application is not deployed
|
231
|
+
# @return [Hash, Nucleus::API::Models::Application] application entity compatible Hash
|
232
|
+
def start(application_id)
|
233
|
+
raise NOT_IMPLEMENTED_ERROR
|
234
|
+
end
|
235
|
+
|
236
|
+
# Stop all instances of the application with the application_id.
|
237
|
+
# The state of all application instances will become +stopped+ when all actions are finished.
|
238
|
+
# Preconditions:<br>
|
239
|
+
# * application must have been deployed
|
240
|
+
# Postconditions (delayed):<br>
|
241
|
+
# * state == stopped
|
242
|
+
# @param [String] application_id Id of the application which is to be stopped
|
243
|
+
# @raise [Nucleus::Errors::AdapterResourceNotFoundError] if the application could not be found
|
244
|
+
# @raise [Nucleus::Errors::EndpointAuthenticationError] if the authentication on the endpoint failed
|
245
|
+
# @raise [Nucleus::Errors::SemanticAdapterRequestError] if the application is not deployed
|
246
|
+
# @return [Hash, Nucleus::API::Models::Application] application entity compatible Hash
|
247
|
+
def stop(application_id)
|
248
|
+
raise NOT_IMPLEMENTED_ERROR
|
249
|
+
end
|
250
|
+
|
251
|
+
# Restart all instances of the application with the application_id.
|
252
|
+
# The state of all application instances should become +running+ when all actions are finished
|
253
|
+
# (unless there are technical errors preventing the application to start).
|
254
|
+
# Preconditions:<br>
|
255
|
+
# * application must have been deployed
|
256
|
+
# Postconditions (delayed):<br>
|
257
|
+
# * state == running
|
258
|
+
# @param [String] application_id Id of the application which is to be restarted
|
259
|
+
# @raise [Nucleus::Errors::AdapterResourceNotFoundError] if the application could not be found
|
260
|
+
# @raise [Nucleus::Errors::EndpointAuthenticationError] if the authentication on the endpoint failed
|
261
|
+
# @raise [Nucleus::Errors::SemanticAdapterRequestError] if the application is not deployed
|
262
|
+
# @return [Hash, Nucleus::API::Models::Application] application entity compatible Hash
|
263
|
+
def restart(application_id)
|
264
|
+
raise NOT_IMPLEMENTED_ERROR
|
265
|
+
end
|
266
|
+
|
267
|
+
# Deploy the data of the application given the compressed application archive.<br>
|
268
|
+
# The application shall not be running when the deployment is finished.
|
269
|
+
# Postconditions (delayed):<br>
|
270
|
+
# * state == deployed
|
271
|
+
# @param [String] application_id Id of the application for which the data is to be deployed
|
272
|
+
# @param [Tempfile] application_archive compressed application archive that shall be deployed
|
273
|
+
# @param [Symbol] compression_format archive formats, see {Nucleus::API::Enums::CompressionFormats.all}
|
274
|
+
# for a list of all allowed values
|
275
|
+
# @raise [Nucleus::Errors::AdapterResourceNotFoundError] if the application could not be found
|
276
|
+
# @raise [Nucleus::Errors::EndpointAuthenticationError] if the authentication on the endpoint failed
|
277
|
+
# @raise [Nucleus::Errors::AdapterRequestError] if the application archive that shall be deployed is no
|
278
|
+
# valid application archive, or if the application_archive / compression_format are not supported
|
279
|
+
# @return [void]
|
280
|
+
def deploy(application_id, application_archive, compression_format)
|
281
|
+
raise NOT_IMPLEMENTED_ERROR
|
282
|
+
end
|
283
|
+
|
284
|
+
# Rebuild the recently deployed bits of the application.<br>
|
285
|
+
# The rebuild can be used to update the application to use a new version of the underlying runtime or fix a
|
286
|
+
# previously failed application start after the issues have been resolved.
|
287
|
+
# @param [String] application_id Id of the application which is to be rebuild
|
288
|
+
# @raise [Nucleus::Errors::AdapterResourceNotFoundError] if the application could not be found
|
289
|
+
# @raise [Nucleus::Errors::EndpointAuthenticationError] if the authentication on the endpoint failed
|
290
|
+
# @return [Hash, Nucleus::API::Models::Application] application entity compatible Hash
|
291
|
+
def rebuild(application_id)
|
292
|
+
raise NOT_IMPLEMENTED_ERROR
|
293
|
+
end
|
294
|
+
|
295
|
+
# Download the application data that is currently deployed on the platform.
|
296
|
+
# The downloaded application archive must contain at least all files that were originally deployed,
|
297
|
+
# but can also contain additional files, for instance log files.
|
298
|
+
# @param [String] application_id Id of the application of which the data is to be downloaded
|
299
|
+
# @param [Symbol] compression_format archive formats, see {Nucleus::API::Enums::CompressionFormats.all}
|
300
|
+
# for a list of all allowed values
|
301
|
+
# @raise [Nucleus::Errors::AdapterResourceNotFoundError] if the application could not be found
|
302
|
+
# @raise [Nucleus::Errors::EndpointAuthenticationError] if the authentication on the endpoint failed
|
303
|
+
# @raise [Nucleus::Errors::AdapterRequestError] if the application archive that shall be deployed is no
|
304
|
+
# valid application archive, or if the compression_format is not supported
|
305
|
+
# @return [StringIO] binary application data
|
306
|
+
def download(application_id, compression_format)
|
307
|
+
raise NOT_IMPLEMENTED_ERROR
|
308
|
+
end
|
309
|
+
|
310
|
+
# TODO: Finish documentation when vertical scaling is added
|
311
|
+
# Scale the application and adjust the number of instances that shall be running.
|
312
|
+
# @param [String] application_id Id of the application which is to be scaled
|
313
|
+
# @raise [Nucleus::Errors::AdapterResourceNotFoundError] if the application could not be found
|
314
|
+
# @raise [Nucleus::Errors::EndpointAuthenticationError] if the authentication on the endpoint failed
|
315
|
+
# @raise [Nucleus::Errors::SemanticAdapterRequestError] if the number of instances is disallowed on the platform
|
316
|
+
# @return [Hash, Nucleus::API::Models::Application] application entity compatible Hash
|
317
|
+
def scale(application_id, instances)
|
318
|
+
raise NOT_IMPLEMENTED_ERROR
|
319
|
+
end
|
320
|
+
|
321
|
+
# Assert whether the given log_id is valid for the application_id.
|
322
|
+
# @param [String] application_id Id of the application of which the log existence is to be checked
|
323
|
+
# @param [String] log_id Id of the log whose existence is to be checked
|
324
|
+
# @raise [Nucleus::Errors::AdapterResourceNotFoundError] if the application could not be found
|
325
|
+
# @raise [Nucleus::Errors::EndpointAuthenticationError] if the authentication on the endpoint failed
|
326
|
+
# @return [Boolean] returns true if there is a log for the application with the log_id,
|
327
|
+
# false if it does not exist
|
328
|
+
def log?(application_id, log_id)
|
329
|
+
raise NOT_IMPLEMENTED_ERROR
|
330
|
+
end
|
331
|
+
|
332
|
+
# Get a list of all logs that are available for the application.
|
333
|
+
# @param [String] application_id Id of the application of which the logs are to be listed
|
334
|
+
# @raise [Nucleus::Errors::AdapterResourceNotFoundError] if the application could not be found
|
335
|
+
# @raise [Nucleus::Errors::EndpointAuthenticationError] if the authentication on the endpoint failed
|
336
|
+
# @return [Hash, Nucleus::API::Models::Logs] log entity list compatible hash
|
337
|
+
def logs(application_id)
|
338
|
+
raise NOT_IMPLEMENTED_ERROR
|
339
|
+
end
|
340
|
+
|
341
|
+
# Retrieve all log entries of the log.
|
342
|
+
# @param [String] application_id Id of the application of which the log_entries are to be retrieved
|
343
|
+
# @param [String] log_id Id of the log for which the entries are to be retrieved
|
344
|
+
# @raise [Nucleus::Errors::AdapterResourceNotFoundError] if the application or log could not be found
|
345
|
+
# @raise [Nucleus::Errors::EndpointAuthenticationError] if the authentication on the endpoint failed
|
346
|
+
# @return [Array<String>] array of log entries, starting with the earliest entry at pos [0]
|
347
|
+
def log_entries(application_id, log_id)
|
348
|
+
raise NOT_IMPLEMENTED_ERROR
|
349
|
+
end
|
350
|
+
|
351
|
+
# Tail the logfile of the application and send each retrieved chunk, which can be a line of a file,
|
352
|
+
# a new chunk in a received http message, or a websocket message, to the stream. The deferred tailing
|
353
|
+
# process shall be stoppable when the +stop+ method of the returned {Nucleus::Adapters::TailStopper TailStopper}
|
354
|
+
# is called.
|
355
|
+
# @param [String] application_id Id of the application of which the log is to be tailed
|
356
|
+
# @param [String] log_id Id of the log that is to be tailed
|
357
|
+
# @param [Nucleus::StreamCallback] stream stream callback to which messages can be sent via
|
358
|
+
# the +send_message+ method
|
359
|
+
# @raise [Nucleus::Errors::AdapterResourceNotFoundError] if the application or log could not be found
|
360
|
+
# @raise [Nucleus::Errors::EndpointAuthenticationError] if the authentication on the endpoint failed
|
361
|
+
# @return [Nucleus::Adapters::TailStopper] callback object to stop the ongoing tail process
|
362
|
+
def tail(application_id, log_id, stream)
|
363
|
+
raise NOT_IMPLEMENTED_ERROR
|
364
|
+
end
|
365
|
+
|
366
|
+
# List all services that are available at the endpoint.
|
367
|
+
# @raise [Nucleus::Errors::EndpointAuthenticationError] if the authentication on the endpoint failed
|
368
|
+
# @return [Hash, Nucleus::API::Models::Services] services list compatible hash
|
369
|
+
def services
|
370
|
+
raise NOT_IMPLEMENTED_ERROR
|
371
|
+
end
|
372
|
+
|
373
|
+
# Retrieve the service entity matching the given service_id.
|
374
|
+
# @param [String] service_id Id of the service that is to be retrieved
|
375
|
+
# @raise [Nucleus::Errors::AdapterResourceNotFoundError] if the service could not be found
|
376
|
+
# @raise [Nucleus::Errors::EndpointAuthenticationError] if the authentication on the endpoint failed
|
377
|
+
# @return [Hash, Nucleus::API::Models::Service] service entity compatible hash
|
378
|
+
def service(service_id)
|
379
|
+
raise NOT_IMPLEMENTED_ERROR
|
380
|
+
end
|
381
|
+
|
382
|
+
# List all plans that can be chosen for the service with the service_id, ascending order on the price.
|
383
|
+
# @param [String] service_id Id of the service the plans belong to
|
384
|
+
# @raise [Nucleus::Errors::AdapterResourceNotFoundError] if the service could not be found
|
385
|
+
# @raise [Nucleus::Errors::EndpointAuthenticationError] if the authentication on the endpoint failed
|
386
|
+
# @return [Hash, Nucleus::API::Models::ServicePlans] service plan list compatible hash
|
387
|
+
def service_plans(service_id)
|
388
|
+
raise NOT_IMPLEMENTED_ERROR
|
389
|
+
end
|
390
|
+
|
391
|
+
# Show the plan with the plan_id that is applicable to the service with the service_id.
|
392
|
+
# @param [String] service_id Id of the service the plans belongs to
|
393
|
+
# @raise [Nucleus::Errors::AdapterResourceNotFoundError] if the service or the plan could not be found
|
394
|
+
# @raise [Nucleus::Errors::EndpointAuthenticationError] if the authentication on the endpoint failed
|
395
|
+
# @return [Hash, Nucleus::API::Models::ServicePlan] service plan entity compatible hash
|
396
|
+
def service_plan(service_id, plan_id)
|
397
|
+
raise NOT_IMPLEMENTED_ERROR
|
398
|
+
end
|
399
|
+
|
400
|
+
# List all services that are installed on the application with the given application_id.
|
401
|
+
# @param [String] application_id Id of the application of which the services are to be listed of
|
402
|
+
# @raise [Nucleus::Errors::AdapterResourceNotFoundError] if the application could not be found
|
403
|
+
# @raise [Nucleus::Errors::EndpointAuthenticationError] if the authentication on the endpoint failed
|
404
|
+
# @return [Hash, Nucleus::API::Models::InstalledServices] installed services list compatible hash
|
405
|
+
def installed_services(application_id)
|
406
|
+
raise NOT_IMPLEMENTED_ERROR
|
407
|
+
end
|
408
|
+
|
409
|
+
# Retrieve the installed service entity matching the given service_id that is installed
|
410
|
+
# on the application with the given application_id.
|
411
|
+
# @param [String] service_id Id of the installed service that is to be retrieved
|
412
|
+
# @raise [Nucleus::Errors::AdapterResourceNotFoundError] if the application or service could not be found
|
413
|
+
# @raise [Nucleus::Errors::EndpointAuthenticationError] if the authentication on the endpoint failed
|
414
|
+
# @return [Hash, Nucleus::API::Models::InstalledService] installed service entity compatible hash
|
415
|
+
def installed_service(application_id, service_id)
|
416
|
+
raise NOT_IMPLEMENTED_ERROR
|
417
|
+
end
|
418
|
+
|
419
|
+
# Add the service with the service_id to the application with the application_id.
|
420
|
+
# @param [String] application_id Id of the application of which the service is to be added to
|
421
|
+
# @param [Hash, Nucleus::API::Models::Service] service_entity service entity compatible Hash.
|
422
|
+
# @option env_var [String] :id ID of the service to add to the application
|
423
|
+
# @param [Hash, Nucleus::API::Models::ServicePlan] plan_entity service plan entity compatible Hash.
|
424
|
+
# @option env_var [String] :id ID of the service plan that shall be applied
|
425
|
+
# @raise [Nucleus::Errors::AdapterResourceNotFoundError] if the application could not be found
|
426
|
+
# @raise [Nucleus::Errors::EndpointAuthenticationError] if the authentication on the endpoint failed
|
427
|
+
# @raise [Nucleus::Errors::SemanticAdapterRequestError] if the service to add or the plan to use
|
428
|
+
# could not be found
|
429
|
+
# @return [Hash, Nucleus::API::Models::InstalledService] installed service entity compatible hash
|
430
|
+
def add_service(application_id, service_entity, plan_entity)
|
431
|
+
raise NOT_IMPLEMENTED_ERROR
|
432
|
+
end
|
433
|
+
|
434
|
+
# Change the service, e.g. the active plan, of the service with the service_id for
|
435
|
+
# the application with the application_id. Use the fields of the service_entity to execute the update.
|
436
|
+
# @param [String] application_id Id of the application of which the service is to be changed
|
437
|
+
# @param [String] service_id Id of the installed service that is to be updated. The id must not (but can) be
|
438
|
+
# identical to the id of the service the installed service is based on.
|
439
|
+
# @param [Hash, Nucleus::API::Models::ServicePlan] plan_entity service plan entity compatible Hash.
|
440
|
+
# @option env_var [String] :id ID of the service plan that shall be applied
|
441
|
+
# @raise [Nucleus::Errors::AdapterResourceNotFoundError] if the application could not be found or
|
442
|
+
# the service was not installed on this application
|
443
|
+
# @raise [Nucleus::Errors::EndpointAuthenticationError] if the authentication on the endpoint failed
|
444
|
+
# @raise [Nucleus::Errors::SemanticAdapterRequestError] if the plan to use could not be found
|
445
|
+
# @return [Hash, Nucleus::API::Models::InstalledService] installed service entity compatible hash
|
446
|
+
def change_service(application_id, service_id, plan_entity)
|
447
|
+
raise NOT_IMPLEMENTED_ERROR
|
448
|
+
end
|
449
|
+
|
450
|
+
# Remove the installed service with the service_id from the application with the application_id.
|
451
|
+
# @param [String] application_id Id of the application of which the service is to be removed from
|
452
|
+
# @param [String] service_id Id of the installed service that is to be removed from the application. The id
|
453
|
+
# must not (but can) be identical to the id of the service the installed service is based on.
|
454
|
+
# @raise [Nucleus::Errors::AdapterResourceNotFoundError] if the application could not be found or
|
455
|
+
# the service was not installed on this application
|
456
|
+
# @raise [Nucleus::Errors::EndpointAuthenticationError] if the authentication on the endpoint failed
|
457
|
+
# @return [void]
|
458
|
+
def remove_service(application_id, service_id)
|
459
|
+
raise NOT_IMPLEMENTED_ERROR
|
460
|
+
end
|
461
|
+
end
|
462
|
+
end
|
463
|
+
end
|
464
|
+
end
|