rails_service_broker 0.1.0 → 0.1.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/generators/rails_service_broker/api_generator.rb +4 -1
- data/lib/generators/templates/apis/v2/catalog.rb +1 -1
- data/lib/generators/templates/apis/v2/service_binding.rb +10 -3
- data/lib/generators/templates/apis/v2/service_instance.rb +17 -4
- data/lib/generators/templates/config/service.yml +20 -17
- data/lib/generators/templates/specs/v2/service_broker_api_spec.rb +80 -0
- data/lib/rails_service_broker.rb +1 -0
- data/lib/rails_service_broker/return_codes.rb +8 -0
- data/lib/rails_service_broker/version.rb +1 -1
- metadata +4 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 2cf2be217815247f31b172b082aec798238cffed
|
4
|
+
data.tar.gz: acece6e790e4f8fed0f71b25cff7583fdc81d336
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 279d64a5f8cc9382b0a3083bbe55d1b3deb5629cea510bba7ab46b5658779065aee0926315a2c50b892891711413f95acac389624491b4c1ca8c85f14748cf93
|
7
|
+
data.tar.gz: 8375b4355d80fbdbb1723a7a226b01407cb118b05e3bc558e6f484a040538ae43739b4630ec9af992109bbdd089d355267e9c56753b34dd9de7b513a889f296d
|
@@ -3,13 +3,16 @@ module RailsServiceBroker
|
|
3
3
|
source_root File.expand_path('../../templates', __FILE__)
|
4
4
|
argument :api_version, type: :string, default: "v2"
|
5
5
|
argument :api_dir, type: :string, default: "apis"
|
6
|
+
argument :service_id, default: SecureRandom.uuid
|
7
|
+
argument :plan_id, default: SecureRandom.uuid
|
6
8
|
|
7
|
-
def
|
9
|
+
def add_template_grape_files_and_spec
|
8
10
|
template "apis/base.rb", "app/#{api_dir}/#{plural_name.singularize}/base.rb"
|
9
11
|
template "apis/#{api_version}/base.rb", "app/#{api_dir}/#{plural_name.singularize}/#{api_version}/base.rb"
|
10
12
|
template "apis/#{api_version}/catalog.rb", "app/#{api_dir}/#{plural_name.singularize}/#{api_version}/catalog.rb"
|
11
13
|
template "apis/#{api_version}/service_binding.rb", "app/#{api_dir}/#{plural_name.singularize}/#{api_version}/service_binding.rb"
|
12
14
|
template "apis/#{api_version}/service_instance.rb", "app/#{api_dir}/#{plural_name.singularize}/#{api_version}/service_instance.rb"
|
15
|
+
template "specs/#{api_version}/service_broker_api_spec.rb", "spec/requests/#{api_dir}/#{plural_name.singularize}/#{api_version}/service_broker_api_spec.rb"
|
13
16
|
end
|
14
17
|
|
15
18
|
def add_template_service_yaml
|
@@ -2,7 +2,7 @@ module <%= plural_name.singularize.classify %>
|
|
2
2
|
module V2
|
3
3
|
class Catalog < Grape::API
|
4
4
|
resource :catalog do
|
5
|
-
desc 'GET
|
5
|
+
desc 'GET /<%= plural_name.singularize %>/v2/catalog'
|
6
6
|
get '/', jbuilder: '<%= plural_name.singularize %>/v2/catalog.json' do
|
7
7
|
@services = YAML.load_file(File.join(Rails.root, 'config', '<%= plural_name.singularize %>_service.yml'))
|
8
8
|
end
|
@@ -4,7 +4,7 @@ module <%= plural_name.singularize.classify %>
|
|
4
4
|
resource :service_instances do
|
5
5
|
route_param :instance_id do
|
6
6
|
resource :service_bindings do
|
7
|
-
desc 'PUT
|
7
|
+
desc 'PUT /<%= plural_name.singularize %>/v2/service_instances/:instance_id/service_bindings/:binding_id'
|
8
8
|
# Bind service
|
9
9
|
# 201 Created Binding has been created.
|
10
10
|
# 200 OK the binding already exists and requested parameters are identical to the existing binding.
|
@@ -12,14 +12,21 @@ module <%= plural_name.singularize.classify %>
|
|
12
12
|
# 422 Unprocessable Entity
|
13
13
|
put '/:binding_id' do
|
14
14
|
# TODO Write code to return HTTP status code for create service binding result.
|
15
|
+
return {
|
16
|
+
credentials: {
|
17
|
+
},
|
18
|
+
syslog_drain_url: "http://syslog_drain_url", # this parameter is optional.
|
19
|
+
route_service_url: "http://route_service_url" # If you create route service broker, this parameter must be need.
|
20
|
+
}
|
15
21
|
end
|
16
22
|
|
17
|
-
desc 'DELETE
|
23
|
+
desc 'DELETE /<%= plural_name.singularize %>/v2/service_instances/:instance_id/service_bindings/:binding_id'
|
18
24
|
# Unbinding service
|
19
25
|
# 200 OK Binding was deleted.
|
20
26
|
# 410 Gone Binding does not exist.
|
21
|
-
|
27
|
+
delete '/:binding_id' do
|
22
28
|
# TODO Write code to return HTTP status code for delete service binding result.
|
29
|
+
return { }
|
23
30
|
end
|
24
31
|
end
|
25
32
|
end
|
@@ -2,32 +2,42 @@ module <%= plural_name.singularize.classify %>
|
|
2
2
|
module V2
|
3
3
|
class ServiceInstance < Grape::API
|
4
4
|
resource :service_instances do
|
5
|
-
desc 'PUT
|
5
|
+
desc 'PUT /<%= plural_name.singularize %>/v2/service_instances/:instance_id'
|
6
6
|
# Catalog Management
|
7
7
|
# Status Code
|
8
8
|
# 200 OK The expected response body is below.
|
9
9
|
put '/:instance_id' do
|
10
10
|
# TODO Write code to return HTTP status code for create service instance
|
11
|
+
return {
|
12
|
+
dashboard_url: "http://path.to/dashboard_url",
|
13
|
+
operation: "create in progress" # TODO 'operation' field is optional.
|
14
|
+
}
|
11
15
|
end
|
12
16
|
|
13
|
-
desc 'GET
|
17
|
+
desc 'GET /<%= plural_name.singularize %>/v2/service_instances/:instance_id/last_opration'
|
14
18
|
# Polling Last Operation(async only)
|
15
19
|
# 200 OK The expected response body is below.
|
16
20
|
# 410 GONE Appropriate only for asynchronous delete requests.
|
17
21
|
get '/:instance_id/last_operation' do
|
18
22
|
# TODO Write code to return HTTP status code for create service progress(optional)
|
23
|
+
return {
|
24
|
+
operation: "create in progress" # TODO 'operation' field is optional
|
25
|
+
}
|
19
26
|
end
|
20
27
|
|
21
|
-
desc 'PATCH
|
28
|
+
desc 'PATCH /<%= plural_name.singularize %>/v2/service_instances/:instance_id'
|
22
29
|
# Updating a Service Instance
|
23
30
|
# 200 OK New plan is effective.
|
24
31
|
# 202 Accepted Service instance update is in progress.
|
25
32
|
# 422 Unprocessable entity May be returned if the particular plan change requested is not supported.
|
26
33
|
patch '/:instance_id' do
|
27
34
|
# TODO Write code to return HTTP status code for update service instance(optional)
|
35
|
+
return {
|
36
|
+
operation: "update in progress" # TODO 'operation' field is optional
|
37
|
+
}
|
28
38
|
end
|
29
39
|
|
30
|
-
desc 'DELETE
|
40
|
+
desc 'DELETE /<%= plural_name.singularize %>/v2/service_instances/:instance_id'
|
31
41
|
# Deprovisioning
|
32
42
|
# 200 OK Service instance was deleted.
|
33
43
|
# 202 Accepted Service instance deletion is in progress.
|
@@ -35,6 +45,9 @@ module <%= plural_name.singularize.classify %>
|
|
35
45
|
# 422 Unprocessable Entity
|
36
46
|
delete '/:instance_id' do
|
37
47
|
# TODO Write code to return HTTP status code for delete service instance
|
48
|
+
return {
|
49
|
+
operation: "delete in progress" # TODO 'operation' field is optional
|
50
|
+
}
|
38
51
|
end
|
39
52
|
end
|
40
53
|
end
|
@@ -1,6 +1,6 @@
|
|
1
1
|
services:
|
2
2
|
- name: "TODO: Put your service"
|
3
|
-
id: "<%=
|
3
|
+
id: "<%= service_id %>"
|
4
4
|
description: "TODO: Put your description"
|
5
5
|
tags: "TODO: Put your service type"
|
6
6
|
requires: ""
|
@@ -15,19 +15,22 @@ services:
|
|
15
15
|
documentationUrl: "TODO: Link to documentation page for service"
|
16
16
|
supportUrl: "TODO: Link to support for the service"
|
17
17
|
dashboard_client:
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
18
|
+
id: 'TODO: Add client id when you would like to provide dashboard client'
|
19
|
+
secret: 'TODO: Add client secret when you would like to provide dashboard client'
|
20
|
+
redirect_uri: 'TODO: http://path.to/dashboard/oauth_endpoint'
|
21
|
+
plan_updateable: true
|
22
|
+
plans:
|
23
|
+
- name: "TODO: Add your plan"
|
24
|
+
id: "<%= plan_id %>"
|
25
|
+
description: "TODO: A short description of the service that will appear in the catalog"
|
26
|
+
metadata:
|
27
|
+
name: "TODO: A short name for the service plan to be displayed in a catalog"
|
28
|
+
description: "TODO: A description of the service plan to be displayed in a catalog"
|
29
|
+
bullets:
|
30
|
+
- "TODO: Features of this plan, to be displayed in a bulleted-list"
|
31
|
+
costs:
|
32
|
+
amount:
|
33
|
+
usd: 0
|
34
|
+
unit: "MONTHLY"
|
35
|
+
displayName: "TODO: Name of the plan to be display in graphical clients"
|
36
|
+
free: true
|
@@ -0,0 +1,80 @@
|
|
1
|
+
require 'rails_helper'
|
2
|
+
|
3
|
+
RSpec.describe "ServiceBrokerApis", type: :request do
|
4
|
+
describe "GET /<%= plural_name.singularize %>/v2/catalog" do
|
5
|
+
subject { get "/<%= plural_name.singularize %>/v2/catalog" }
|
6
|
+
|
7
|
+
it "works! (now write some real specs)" do
|
8
|
+
subject
|
9
|
+
expect(response).to have_http_status(200)
|
10
|
+
end
|
11
|
+
end
|
12
|
+
|
13
|
+
describe "PUT /<%= plural_name.singularize %>/v2/service_instances/:instance_id" do
|
14
|
+
let(:instance_id) { SecureRandom.uuid }
|
15
|
+
let(:organization_guid) { SecureRandom.uuid }
|
16
|
+
let(:space_guid) { SecureRandom.uuid }
|
17
|
+
let(:parameters) { { } }
|
18
|
+
|
19
|
+
subject do
|
20
|
+
put "/<%= plural_name.singularize %>/v2/service_instances/#{instance_id}",
|
21
|
+
params: { organization_guid: organization_guid,
|
22
|
+
plan_id: "<%= service_id %>",
|
23
|
+
service_id: "<%= plan_id %>",
|
24
|
+
space_guid: space_guid,
|
25
|
+
parameters: parameters }
|
26
|
+
end
|
27
|
+
|
28
|
+
it "return json with dashbaord_url" do
|
29
|
+
subject
|
30
|
+
json = JSON.parse(response.body)
|
31
|
+
expect(json["dashboard_url"]).to eq("http://path.to/dashboard_url")
|
32
|
+
end
|
33
|
+
end
|
34
|
+
|
35
|
+
describe "DELETE /<%= plural_name.singularize %>/v2/service_instances/:instance_id" do
|
36
|
+
let(:instance_id) { SecureRandom.uuid }
|
37
|
+
subject do
|
38
|
+
delete "/<%= plural_name.singularize %>/v2/service_instances/#{instance_id}",
|
39
|
+
params: {
|
40
|
+
service_id: "<%= service_id %>",
|
41
|
+
plan_id: "<%= plan_id %>"
|
42
|
+
}
|
43
|
+
end
|
44
|
+
it{ subject; expect(response.status).to eq(200) }
|
45
|
+
it{ subject; expect(response.body).to eq("{}") }
|
46
|
+
end
|
47
|
+
|
48
|
+
describe "PUT /<%= plural_name.singularize %>/v2/service_instances/:instance_id/service_bindings/:binding_id" do
|
49
|
+
let(:instance_id){ SecureRandom.uuid }
|
50
|
+
let(:app_guid){ SecureRandom.uuid }
|
51
|
+
let(:binding_id){ SecureRandom.uuid }
|
52
|
+
|
53
|
+
subject do
|
54
|
+
put "/<%= plural_name.singularize %>/v2/service_instances/#{instance_id}/service_bindings/#{binding_id}",
|
55
|
+
params: {
|
56
|
+
service_id: "<%= service_id %>",
|
57
|
+
plan_id: "<%= plan_id %>",
|
58
|
+
app_guid: app_guid
|
59
|
+
}
|
60
|
+
end
|
61
|
+
|
62
|
+
it{ subject; expect(response.status).to eq(200) }
|
63
|
+
end
|
64
|
+
|
65
|
+
describe "DELETE /v2/service_instances/:instance_id/service_bindings/:binding_id" do
|
66
|
+
let(:instance_id){ SecureRandom.uuid }
|
67
|
+
let(:binding_id){ SecureRandom.uuid }
|
68
|
+
|
69
|
+
subject do
|
70
|
+
delete "/<%= plural_name.singularize %>/v2/service_instances/#{instance_id}/service_bindings/#{binding_id}",
|
71
|
+
params: {
|
72
|
+
service_id: "<%= service_id %>",
|
73
|
+
plan_id: "<%= plan_id %>"
|
74
|
+
}
|
75
|
+
end
|
76
|
+
|
77
|
+
it{ subject; expect(response.status).to eq(200) }
|
78
|
+
end
|
79
|
+
end
|
80
|
+
|
data/lib/rails_service_broker.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rails_service_broker
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Toshio Maki
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2017-01-13 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: grape
|
@@ -104,9 +104,11 @@ files:
|
|
104
104
|
- lib/generators/templates/apis/v2/service_binding.rb
|
105
105
|
- lib/generators/templates/apis/v2/service_instance.rb
|
106
106
|
- lib/generators/templates/config/service.yml
|
107
|
+
- lib/generators/templates/specs/v2/service_broker_api_spec.rb
|
107
108
|
- lib/generators/templates/views/v2/catalog.json.jbuilder
|
108
109
|
- lib/rails_service_broker.rb
|
109
110
|
- lib/rails_service_broker/engine.rb
|
111
|
+
- lib/rails_service_broker/return_codes.rb
|
110
112
|
- lib/rails_service_broker/version.rb
|
111
113
|
- rails_service_broker.gemspec
|
112
114
|
homepage: https://github.com/kirikak2/rails_service_broker
|