3scale_toolbox 0.10.0 → 0.11.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +21 -144
- data/lib/3scale_toolbox.rb +0 -1
- data/lib/3scale_toolbox/commands.rb +12 -0
- data/lib/3scale_toolbox/commands/3scale_command.rb +1 -1
- data/lib/3scale_toolbox/commands/account_command.rb +23 -0
- data/lib/3scale_toolbox/commands/account_command/find_command.rb +41 -0
- data/lib/3scale_toolbox/commands/activedocs_command.rb +32 -0
- data/lib/3scale_toolbox/commands/activedocs_command/apply_command.rb +127 -0
- data/lib/3scale_toolbox/commands/activedocs_command/create_command.rb +65 -0
- data/lib/3scale_toolbox/commands/activedocs_command/delete_command.rb +49 -0
- data/lib/3scale_toolbox/commands/activedocs_command/list_command.rb +54 -0
- data/lib/3scale_toolbox/commands/application_command.rb +30 -0
- data/lib/3scale_toolbox/commands/application_command/apply_command.rb +179 -0
- data/lib/3scale_toolbox/commands/application_command/create_command.rb +110 -0
- data/lib/3scale_toolbox/commands/application_command/delete_command.rb +57 -0
- data/lib/3scale_toolbox/commands/application_command/list_command.rb +124 -0
- data/lib/3scale_toolbox/commands/application_command/show_command.rb +72 -0
- data/lib/3scale_toolbox/commands/copy_command/copy_service.rb +97 -28
- data/lib/3scale_toolbox/commands/import_command/import_csv.rb +16 -17
- data/lib/3scale_toolbox/commands/import_command/openapi.rb +14 -10
- data/lib/3scale_toolbox/commands/import_command/openapi/create_service_step.rb +3 -2
- data/lib/3scale_toolbox/commands/import_command/openapi/method.rb +0 -1
- data/lib/3scale_toolbox/commands/import_command/openapi/step.rb +8 -1
- data/lib/3scale_toolbox/commands/import_command/openapi/update_service_proxy_step.rb +17 -7
- data/lib/3scale_toolbox/commands/methods_command.rb +4 -4
- data/lib/3scale_toolbox/commands/methods_command/apply_command.rb +2 -2
- data/lib/3scale_toolbox/commands/methods_command/create_command.rb +1 -1
- data/lib/3scale_toolbox/commands/metrics_command.rb +4 -4
- data/lib/3scale_toolbox/commands/metrics_command/apply_command.rb +2 -2
- data/lib/3scale_toolbox/commands/metrics_command/create_command.rb +1 -1
- data/lib/3scale_toolbox/commands/plans_command/apply_command.rb +7 -7
- data/lib/3scale_toolbox/commands/plans_command/create_command.rb +5 -5
- data/lib/3scale_toolbox/commands/policy_registry_command.rb +22 -0
- data/lib/3scale_toolbox/commands/policy_registry_command/copy_command.rb +85 -0
- data/lib/3scale_toolbox/commands/proxy_config_command.rb +30 -0
- data/lib/3scale_toolbox/commands/proxy_config_command/list_command.rb +78 -0
- data/lib/3scale_toolbox/commands/proxy_config_command/promote_command.rb +68 -0
- data/lib/3scale_toolbox/commands/proxy_config_command/show_command.rb +88 -0
- data/lib/3scale_toolbox/commands/service_command.rb +34 -0
- data/lib/3scale_toolbox/commands/service_command/apply_command.rb +77 -0
- data/lib/3scale_toolbox/commands/service_command/create_command.rb +59 -0
- data/lib/3scale_toolbox/commands/service_command/delete_command.rb +49 -0
- data/lib/3scale_toolbox/commands/service_command/list_command.rb +50 -0
- data/lib/3scale_toolbox/commands/service_command/show_command.rb +63 -0
- data/lib/3scale_toolbox/commands/update_command/update_service.rb +6 -3
- data/lib/3scale_toolbox/entities.rb +4 -0
- data/lib/3scale_toolbox/entities/account.rb +63 -0
- data/lib/3scale_toolbox/entities/activedocs.rb +88 -0
- data/lib/3scale_toolbox/entities/application.rb +124 -0
- data/lib/3scale_toolbox/entities/application_plan.rb +28 -4
- data/lib/3scale_toolbox/entities/base_entity.rb +44 -0
- data/lib/3scale_toolbox/entities/proxy_config.rb +58 -0
- data/lib/3scale_toolbox/entities/service.rb +42 -8
- data/lib/3scale_toolbox/error.rb +8 -0
- data/lib/3scale_toolbox/tasks.rb +2 -1
- data/lib/3scale_toolbox/tasks/bump_proxy_version_task.rb +32 -0
- data/lib/3scale_toolbox/tasks/copy_service_settings_task.rb +38 -0
- data/lib/3scale_toolbox/version.rb +1 -1
- metadata +36 -5
- data/lib/3scale_toolbox/tasks/update_service_settings_task.rb +0 -49
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 5b92f14c66af8c902ae8c68e2052f1fa95fa251eff222665f69e8758a5c4fae5
|
4
|
+
data.tar.gz: 77193321a8835f5e55276a6e454765c4a66f00b42af58a9d2ccecd3a60359804
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: bc467460e0db0d22ac18d8c5e8265bc9e3fd6fbb154f0f58d3b222b03a1d1d05980f16d9f21e9414822702bf119e7d6207282a57198af7344e9bf71d335df2d9
|
7
|
+
data.tar.gz: e24bc998136917729814dfcf634e9da8c68a20a6987f5a2080aff6811605904dc160ec1e763e2f06870e0062633f1a8f0abf21145b6cc074fac249ea71afb14e
|
data/README.md
CHANGED
@@ -11,14 +11,18 @@ See the LICENSE and NOTICE files that should have been provided along with this
|
|
11
11
|
## Table of contents
|
12
12
|
* [Installation](#installation)
|
13
13
|
* [Usage](#usage)
|
14
|
-
* [Copy a service](
|
15
|
-
* [
|
16
|
-
* [Import from CSV](#import-from-csv)
|
14
|
+
* [Copy a service](docs/copy-service.md)
|
15
|
+
* [Import from CSV](docs/import-csv.md)
|
17
16
|
* [Import from OpenAPI definition](docs/openapi.md)
|
18
17
|
* [Export/Import Application Plan](docs/export-import-app-plan.md)
|
19
18
|
* Create, Apply, List, Show, Delete [Application plan](docs/app-plan.md)
|
20
19
|
* Create, Apply, List, Delete [Metric](docs/metric.md)
|
21
20
|
* Create, Apply, List, Delete [Method](docs/method.md)
|
21
|
+
* Create, Apply, List, Show, Delete [Service](docs/service.md)
|
22
|
+
* Create, Apply, List, Delete [ActiveDocs](docs/activedocs.md)
|
23
|
+
* List, Show, Promote [Proxy Configuration](docs/proxy-config.md)
|
24
|
+
* [Copy Policy Registry](docs/copy-policy-registry.md)
|
25
|
+
* Create, Apply, List, Show, Delete, Suspend, Resume [Applications](docs/applications.md)
|
22
26
|
* [Remotes](docs/remotes.md)
|
23
27
|
* [Development](#development)
|
24
28
|
* [Testing](#testing)
|
@@ -46,11 +50,20 @@ DESCRIPTION
|
|
46
50
|
3scale toolbox to manage your API from the terminal.
|
47
51
|
|
48
52
|
COMMANDS
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
53
|
+
account account super command
|
54
|
+
activedocs activedocs super command
|
55
|
+
application application super command
|
56
|
+
application-plan application-plan super command
|
57
|
+
copy copy super command
|
58
|
+
help show help
|
59
|
+
import import super command
|
60
|
+
method method super command
|
61
|
+
metric metric super command
|
62
|
+
policy-registry policy-registry super command
|
63
|
+
proxy-config proxy-config super command
|
64
|
+
remote remotes super command
|
65
|
+
service services super command
|
66
|
+
update update super command
|
54
67
|
|
55
68
|
OPTIONS
|
56
69
|
-c --config-file=<value> 3scale toolbox configuration file (default:
|
@@ -62,142 +75,6 @@ OPTIONS
|
|
62
75
|
--verbose Verbose mode
|
63
76
|
```
|
64
77
|
|
65
|
-
### Copy a service
|
66
|
-
Will create a new service, copy existing proxy settings, pricing rules, activedocs, metrics, methods, application plans and mapping rules.
|
67
|
-
|
68
|
-
3scale instances can be either a [URL](docs/remotes.md#remote-urls) or the name of a [remote](docs/remotes.md).
|
69
|
-
|
70
|
-
Help message:
|
71
|
-
|
72
|
-
```shell
|
73
|
-
$ 3scale copy service --help
|
74
|
-
NAME
|
75
|
-
service - Copy service
|
76
|
-
|
77
|
-
USAGE
|
78
|
-
3scale copy service [opts] -s <src> -d <dst>
|
79
|
-
<service_id>
|
80
|
-
|
81
|
-
DESCRIPTION
|
82
|
-
Will create a new services, copy existing proxy settings, metrics,
|
83
|
-
methods, policies, application plans and mapping rules.
|
84
|
-
|
85
|
-
OPTIONS
|
86
|
-
-d --destination=<value> 3scale target instance. Url or
|
87
|
-
remote name
|
88
|
-
-s --source=<value> 3scale source instance. Url or
|
89
|
-
remote name
|
90
|
-
-t --target_system_name=<value> Target system name. Default to
|
91
|
-
source system name
|
92
|
-
|
93
|
-
OPTIONS FOR COPY
|
94
|
-
-h --help show help for this command
|
95
|
-
-k --insecure Proceed and operate even for server
|
96
|
-
connections otherwise considered
|
97
|
-
insecure
|
98
|
-
-v --version Prints the version of this command
|
99
|
-
--verbose Verbose mode
|
100
|
-
```
|
101
|
-
|
102
|
-
```shell
|
103
|
-
3scale copy service NUMBER --source=foo --destination=https://access_token@foo2-admin.3scale.net
|
104
|
-
```
|
105
|
-
|
106
|
-
### Update a service
|
107
|
-
|
108
|
-
Will update existing service, update proxy settings, pricing rules, activedocs, metrics, methods, application plans and mapping rules.
|
109
|
-
|
110
|
-
3scale instances can be either a [URL](docs/remotes.md#remote-urls) or the name of a [remote](docs/remotes.md).
|
111
|
-
|
112
|
-
Help message:
|
113
|
-
|
114
|
-
```shell
|
115
|
-
NAME
|
116
|
-
service - Update service
|
117
|
-
|
118
|
-
USAGE
|
119
|
-
3scale update service [opts] -s <src> -d <dst>
|
120
|
-
<src_service_id> <dst_service_id>
|
121
|
-
|
122
|
-
DESCRIPTION
|
123
|
-
Will update existing service, update proxy settings, metrics, methods,
|
124
|
-
application plans, policies and mapping rules.
|
125
|
-
|
126
|
-
OPTIONS
|
127
|
-
-d --destination=<value> 3scale target instance. Url or
|
128
|
-
remote name
|
129
|
-
-f --force Overwrites the mapping rules by deleting
|
130
|
-
all rules from target service first
|
131
|
-
-r --rules-only Updates only the mapping rules
|
132
|
-
-s --source=<value> 3scale source instance. Url or
|
133
|
-
remote name
|
134
|
-
|
135
|
-
OPTIONS FOR UPDATE
|
136
|
-
-h --help show help for this command
|
137
|
-
-k --insecure Proceed and operate even for server
|
138
|
-
connections otherwise considered insecure
|
139
|
-
-v --version Prints the version of this command
|
140
|
-
--verbose Verbose mode
|
141
|
-
```
|
142
|
-
|
143
|
-
Example:
|
144
|
-
|
145
|
-
```shell
|
146
|
-
$ 3scale update service -s https://9874598743@source.example.com -d foo 3 2
|
147
|
-
```
|
148
|
-
|
149
|
-
### Import from CSV
|
150
|
-
|
151
|
-
Will create new services, metrics, methods, and mapping rules having as source comma separated values (CSV) formatted file.
|
152
|
-
|
153
|
-
3scale instances can be either a [URL](docs/remotes.md#remote-urls) or the name of a [remote](docs/remotes.md).
|
154
|
-
|
155
|
-
CSV header
|
156
|
-
|
157
|
-
```csv
|
158
|
-
service_name,endpoint_name,endpoint_http_method,endpoint_path,auth_mode,endpoint_system_name,type
|
159
|
-
```
|
160
|
-
|
161
|
-
File example
|
162
|
-
|
163
|
-
```csv
|
164
|
-
service_name,endpoint_name,endpoint_http_method,endpoint_path,auth_mode,endpoint_system_name,type
|
165
|
-
Movies ,Movies (Biography),GET,/movies/biography/,api_key,movies_biography,metric
|
166
|
-
Movies ,Movies (Drama),GET,/movies/drama/,api_key,movies_drama,method
|
167
|
-
```
|
168
|
-
|
169
|
-
Help message:
|
170
|
-
|
171
|
-
```shell
|
172
|
-
$ 3scale import csv -h
|
173
|
-
NAME
|
174
|
-
csv - Import csv file
|
175
|
-
|
176
|
-
USAGE
|
177
|
-
3scale import csv [opts] -d <dst> -f <file>
|
178
|
-
|
179
|
-
DESCRIPTION
|
180
|
-
Create new services, metrics, methods and mapping rules from CSV
|
181
|
-
formatted file
|
182
|
-
|
183
|
-
OPTIONS
|
184
|
-
-d --destination=<value> 3scale target instance. Url or remote name
|
185
|
-
-f --file=<value> CSV formatted file
|
186
|
-
|
187
|
-
OPTIONS FOR IMPORT
|
188
|
-
-h --help show help for this command
|
189
|
-
-k --insecure Proceed and operate even for server
|
190
|
-
connections otherwise considered insecure
|
191
|
-
-v --version Prints the version of this command
|
192
|
-
--verbose Verbose mode
|
193
|
-
```
|
194
|
-
|
195
|
-
Example:
|
196
|
-
|
197
|
-
```shell
|
198
|
-
3scale import csv --destination=https://provider_key@user-admin.3scale.net --file=examples/import_example.csv
|
199
|
-
```
|
200
|
-
|
201
78
|
## Development
|
202
79
|
|
203
80
|
After checking out the repo, run `bin/setup` to install dependencies. You can also run `bin/console` for an interactive prompt that will allow you to experiment. Run `bundle exec 3scale` to use the gem in this directory, ignoring other installed copies of this gem.
|
data/lib/3scale_toolbox.rb
CHANGED
@@ -7,6 +7,12 @@ require '3scale_toolbox/commands/remote_command'
|
|
7
7
|
require '3scale_toolbox/commands/plans_command'
|
8
8
|
require '3scale_toolbox/commands/metrics_command'
|
9
9
|
require '3scale_toolbox/commands/methods_command'
|
10
|
+
require '3scale_toolbox/commands/service_command'
|
11
|
+
require '3scale_toolbox/commands/activedocs_command'
|
12
|
+
require '3scale_toolbox/commands/account_command'
|
13
|
+
require '3scale_toolbox/commands/proxy_config_command'
|
14
|
+
require '3scale_toolbox/commands/policy_registry_command'
|
15
|
+
require '3scale_toolbox/commands/application_command'
|
10
16
|
|
11
17
|
module ThreeScaleToolbox
|
12
18
|
module Commands
|
@@ -19,6 +25,12 @@ module ThreeScaleToolbox
|
|
19
25
|
ThreeScaleToolbox::Commands::PlansCommand,
|
20
26
|
ThreeScaleToolbox::Commands::MetricsCommand,
|
21
27
|
ThreeScaleToolbox::Commands::MethodsCommand,
|
28
|
+
ThreeScaleToolbox::Commands::ServiceCommand,
|
29
|
+
ThreeScaleToolbox::Commands::ActiveDocsCommand,
|
30
|
+
ThreeScaleToolbox::Commands::AccountCommand,
|
31
|
+
ThreeScaleToolbox::Commands::ProxyConfigCommand,
|
32
|
+
ThreeScaleToolbox::Commands::PolicyRegistryCommand,
|
33
|
+
ThreeScaleToolbox::Commands::ApplicationCommand,
|
22
34
|
].freeze
|
23
35
|
end
|
24
36
|
end
|
@@ -10,7 +10,7 @@ module ThreeScaleToolbox
|
|
10
10
|
summary '3scale toolbox'
|
11
11
|
description '3scale toolbox to manage your API from the terminal.'
|
12
12
|
option :c, 'config-file', '3scale toolbox configuration file',
|
13
|
-
|
13
|
+
argument: :required, default: ThreeScaleToolbox.default_config_file
|
14
14
|
flag :v, :version, 'Prints the version of this command' do
|
15
15
|
puts ThreeScaleToolbox::VERSION
|
16
16
|
exit 0
|
@@ -0,0 +1,23 @@
|
|
1
|
+
require '3scale_toolbox/commands/account_command/find_command'
|
2
|
+
|
3
|
+
module ThreeScaleToolbox
|
4
|
+
module Commands
|
5
|
+
module AccountCommand
|
6
|
+
include ThreeScaleToolbox::Command
|
7
|
+
|
8
|
+
def self.command
|
9
|
+
Cri::Command.define do
|
10
|
+
name 'account'
|
11
|
+
usage 'acccount <sub-command> [options]'
|
12
|
+
summary 'account super command'
|
13
|
+
description 'Accounts commands'
|
14
|
+
|
15
|
+
run do |_opts, _args, cmd|
|
16
|
+
puts cmd.help
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
20
|
+
add_subcommand(Find::FindSubcommand)
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
@@ -0,0 +1,41 @@
|
|
1
|
+
require 'cri'
|
2
|
+
require '3scale_toolbox/base_command'
|
3
|
+
|
4
|
+
module ThreeScaleToolbox
|
5
|
+
module Commands
|
6
|
+
module AccountCommand
|
7
|
+
module Find
|
8
|
+
class FindSubcommand < Cri::CommandRunner
|
9
|
+
include ThreeScaleToolbox::Command
|
10
|
+
|
11
|
+
def self.command
|
12
|
+
Cri::Command.define do
|
13
|
+
name 'find'
|
14
|
+
usage 'find [opts] <remote> <text>'
|
15
|
+
summary 'find account'
|
16
|
+
description 'Find account by email, provider key or service token'
|
17
|
+
|
18
|
+
option :a, :'print-all', 'Print all the account info', argument: :forbidden
|
19
|
+
param :remote
|
20
|
+
param :text
|
21
|
+
|
22
|
+
runner FindSubcommand
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
def run
|
27
|
+
client = threescale_client(arguments[:remote])
|
28
|
+
account = ThreeScaleToolbox::Entities::Account.find_by_text(arguments[:text], client)
|
29
|
+
if account.nil?
|
30
|
+
puts 'Account not found'
|
31
|
+
return
|
32
|
+
end
|
33
|
+
|
34
|
+
account.verbose = options[:'print-all']
|
35
|
+
puts account
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end
|
@@ -0,0 +1,32 @@
|
|
1
|
+
require 'cri'
|
2
|
+
require '3scale_toolbox/base_command'
|
3
|
+
require '3scale_toolbox/commands/activedocs_command/delete_command'
|
4
|
+
require '3scale_toolbox/commands/activedocs_command/create_command'
|
5
|
+
require '3scale_toolbox/commands/activedocs_command/apply_command'
|
6
|
+
require '3scale_toolbox/commands/activedocs_command/list_command'
|
7
|
+
|
8
|
+
module ThreeScaleToolbox
|
9
|
+
module Commands
|
10
|
+
module ActiveDocsCommand
|
11
|
+
include ThreeScaleToolbox::Command
|
12
|
+
|
13
|
+
def self.command
|
14
|
+
Cri::Command.define do
|
15
|
+
name 'activedocs'
|
16
|
+
usage 'activedocs <sub-command> [options]'
|
17
|
+
summary 'activedocs super command'
|
18
|
+
description 'Manage your ActiveDocs'
|
19
|
+
|
20
|
+
run do |_opts, _args, cmd|
|
21
|
+
puts cmd.help
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
add_subcommand(Delete::DeleteSubcommand)
|
27
|
+
add_subcommand(Create::CreateSubcommand)
|
28
|
+
add_subcommand(Apply::ApplySubcommand)
|
29
|
+
add_subcommand(List::ListSubcommand)
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
@@ -0,0 +1,127 @@
|
|
1
|
+
module ThreeScaleToolbox
|
2
|
+
module Commands
|
3
|
+
module ActiveDocsCommand
|
4
|
+
module Apply
|
5
|
+
class ApplySubcommand < Cri::CommandRunner
|
6
|
+
include ThreeScaleToolbox::Command
|
7
|
+
include ThreeScaleToolbox::ResourceReader
|
8
|
+
|
9
|
+
def self.command
|
10
|
+
Cri::Command.define do
|
11
|
+
name 'apply'
|
12
|
+
usage 'apply <remote> <activedocs_id_or_system_name>'
|
13
|
+
summary 'Update activedocs'
|
14
|
+
description 'Create or update an ActiveDocs'
|
15
|
+
runner ApplySubcommand
|
16
|
+
|
17
|
+
param :remote
|
18
|
+
param :activedocs_id_or_system_name
|
19
|
+
|
20
|
+
option :i, :'service-id', "Specify the Service ID associated to the ActiveDocs", argument: :required
|
21
|
+
option :p, :'publish', "Specify it to publish the ActiveDocs on the Developer Portal. Otherwise it will be hidden", argument: :forbidden
|
22
|
+
option nil, :'hide', "Specify it to hide the ActiveDocs on the Developer Portal", argument: :forbidden
|
23
|
+
option nil, :'skip-swagger-validations', "Specify it to skip validation of the Swagger specification", argument: :forbidden
|
24
|
+
option :d, :'description', "Specify the description of the ActiveDocs", argument: :required
|
25
|
+
option :s, :'name', "Specify the name of the ActiveDocs", argument: :required
|
26
|
+
option nil, :'openapi-spec', "Specify the swagger spec. Can be a file, an URL or '-' to read from stdin. This option is mandatory when applying the ActiveDoc for the first time", argument: :required
|
27
|
+
end
|
28
|
+
end
|
29
|
+
|
30
|
+
def run
|
31
|
+
res = activedocs
|
32
|
+
validate_option_params
|
33
|
+
if !res
|
34
|
+
res = Entities::ActiveDocs::create(remote: remote, attrs: create_activedocs_attrs)
|
35
|
+
else
|
36
|
+
res.update(activedocs_attrs) unless activedocs_attrs.empty?
|
37
|
+
end
|
38
|
+
|
39
|
+
output_msg_array = ["Applied ActiveDocs id: #{res.id}"]
|
40
|
+
output_msg_array << "Published" if option_publish
|
41
|
+
output_msg_array << "Hidden" if option_hide
|
42
|
+
puts output_msg_array.join(";")
|
43
|
+
end
|
44
|
+
|
45
|
+
private
|
46
|
+
|
47
|
+
def remote
|
48
|
+
@remote ||= threescale_client(arguments[:remote])
|
49
|
+
end
|
50
|
+
|
51
|
+
def validate_option_params
|
52
|
+
if option_publish && option_hide
|
53
|
+
raise ThreeScaleToolbox::Error.new("--publish and --hide are mutually exclusive")
|
54
|
+
end
|
55
|
+
end
|
56
|
+
|
57
|
+
def check_openapi_spec_defined
|
58
|
+
if !option_openapi_spec
|
59
|
+
raise ThreeScaleToolbox::Error.new("--openapi-spec is mandatory when ActiveDocs is created")
|
60
|
+
end
|
61
|
+
end
|
62
|
+
|
63
|
+
def activedocs
|
64
|
+
@activedocs ||= find_activedocs
|
65
|
+
end
|
66
|
+
|
67
|
+
def ref
|
68
|
+
arguments[:activedocs_id_or_system_name]
|
69
|
+
end
|
70
|
+
|
71
|
+
def find_activedocs
|
72
|
+
Entities::ActiveDocs.find(remote: remote, ref: ref)
|
73
|
+
end
|
74
|
+
|
75
|
+
def option_publish
|
76
|
+
options.fetch(:publish, false)
|
77
|
+
end
|
78
|
+
|
79
|
+
def option_hide
|
80
|
+
options.fetch(:hide, false)
|
81
|
+
end
|
82
|
+
|
83
|
+
def option_openapi_spec
|
84
|
+
options[:'openapi-spec']
|
85
|
+
end
|
86
|
+
|
87
|
+
def activedocs_json_spec
|
88
|
+
@json_spec ||= read_activedocs_json_spec
|
89
|
+
end
|
90
|
+
|
91
|
+
def read_activedocs_json_spec
|
92
|
+
activedoc_spec = option_openapi_spec
|
93
|
+
activedoc_spec_content = load_resource(activedoc_spec)
|
94
|
+
JSON.pretty_generate(activedoc_spec_content)
|
95
|
+
end
|
96
|
+
|
97
|
+
def activedocs_attrs
|
98
|
+
activedocs_basic_attrs.tap do |params|
|
99
|
+
params["body"] = activedocs_json_spec if !option_openapi_spec.nil?
|
100
|
+
params["published"] = true if option_publish
|
101
|
+
params["published"] = false if option_hide
|
102
|
+
end
|
103
|
+
end
|
104
|
+
|
105
|
+
def activedocs_basic_attrs
|
106
|
+
{
|
107
|
+
"service_id" => options[:'service-id'],
|
108
|
+
"skip_swagger_validations" => options[:'skip-swagger-validations'],
|
109
|
+
"description" => options[:'description'],
|
110
|
+
"system_name" => options[:'system-name'],
|
111
|
+
"name" => options[:name],
|
112
|
+
}.compact
|
113
|
+
end
|
114
|
+
|
115
|
+
def create_activedocs_attrs
|
116
|
+
check_openapi_spec_defined
|
117
|
+
activedocs_attrs.merge(
|
118
|
+
"system_name" => ref,
|
119
|
+
"name" => ref,
|
120
|
+
"body" => activedocs_json_spec,
|
121
|
+
) { |_key, oldval, _newval| oldval } # receiver of the merge message has key priority
|
122
|
+
end
|
123
|
+
end
|
124
|
+
end
|
125
|
+
end
|
126
|
+
end
|
127
|
+
end
|