bmc-sdk-development 0.0.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/lib/bmc-sdk.rb +73 -0
- data/lib/commands.rb +283 -0
- data/lib/dtos.rb +108 -0
- metadata +87 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: a9b8172a7e9be24285622b8edf0742b17dcb265cf03dbc6e51e1c70882458a73
|
4
|
+
data.tar.gz: a2d67cf55a12e57787e77a04d20fcbeffa565ea12b2f3f88a1c5eed5dd6ff4b8
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 2750dd847b8c823b51e52920672569b07fb74bb80c1c3e65de55b1aa8b00a32070e56252597e2e29c2acaedba529cb3a1d0a09380dbbd6fe157dfaa2d8b1d61a
|
7
|
+
data.tar.gz: 484864ec591398198d1b3ee2816ce4587f1ff18fd530a67202b09b747ad87981dcd9cb4a08523919ca9e8f2ec73db46caa9cb8777667b82bc2630ed9f52c0615
|
data/lib/bmc-sdk.rb
ADDED
@@ -0,0 +1,73 @@
|
|
1
|
+
require 'os'
|
2
|
+
require 'oauth2'
|
3
|
+
require 'yaml'
|
4
|
+
|
5
|
+
module Bmc
|
6
|
+
end
|
7
|
+
|
8
|
+
##
|
9
|
+
# This module provides commands and DTOs for working with the BMC API documented at https://developers.phoenixnap.com/docs/bmc/1/overview.
|
10
|
+
# Module functions provided here which load configuration assume that client credentials are located in a YAML file at $HOME/.pnap/config.
|
11
|
+
#
|
12
|
+
|
13
|
+
module Bmc::Sdk
|
14
|
+
|
15
|
+
##
|
16
|
+
# The API entrypoint URL.
|
17
|
+
Entrypoint = "https://api-dev.phoenixnap.com/bmc/v1/"
|
18
|
+
|
19
|
+
##
|
20
|
+
# The OIDC token URL
|
21
|
+
TokenURL = "https://auth-dev.phoenixnap.com/auth/realms/BMC/protocol/openid-connect/token"
|
22
|
+
|
23
|
+
##
|
24
|
+
# The default configuration file location on POSIX systems
|
25
|
+
POSIXPath = "/.pnap/config"
|
26
|
+
|
27
|
+
##
|
28
|
+
# The default configuration file location on Windows systems
|
29
|
+
WindowsPath = '\\AppData\\Roaming\\pnap\\config'
|
30
|
+
|
31
|
+
##
|
32
|
+
# The computed configuration file location based on the current system
|
33
|
+
ConfigPath = OS.windows? ? Dir.home + WindowsPath : Dir.home + POSIXPath
|
34
|
+
|
35
|
+
require 'commands.rb'
|
36
|
+
require 'dtos.rb'
|
37
|
+
|
38
|
+
##
|
39
|
+
# This function creates a new HTTP client with integrated OAuth2 with the provided configuration.
|
40
|
+
#
|
41
|
+
|
42
|
+
def new_client(config)
|
43
|
+
cfg = config.dup
|
44
|
+
client = OAuth2::Client.new(
|
45
|
+
cfg[:client_id],
|
46
|
+
cfg[:client_secret],
|
47
|
+
token_url: TokenURL)
|
48
|
+
return client.client_credentials.get_token
|
49
|
+
end
|
50
|
+
module_function :new_client
|
51
|
+
|
52
|
+
##
|
53
|
+
# load_client is a shortcut function which loads configuration from the expected location and uses that configuration to produce a new client.
|
54
|
+
#
|
55
|
+
|
56
|
+
def load_client
|
57
|
+
cfg = load_config
|
58
|
+
return new_client({
|
59
|
+
client_id: cfg['client_id'],
|
60
|
+
client_secret: cfg['client_secret']
|
61
|
+
})
|
62
|
+
end
|
63
|
+
module_function :load_client
|
64
|
+
|
65
|
+
##
|
66
|
+
# load_config loads a YAML file from the expected file path.
|
67
|
+
|
68
|
+
def load_config
|
69
|
+
return YAML.load_file(ConfigPath)
|
70
|
+
end
|
71
|
+
module_function :load_config
|
72
|
+
|
73
|
+
end
|
data/lib/commands.rb
ADDED
@@ -0,0 +1,283 @@
|
|
1
|
+
require 'json'
|
2
|
+
|
3
|
+
module Bmc::Sdk
|
4
|
+
|
5
|
+
##
|
6
|
+
# CreateServer command create (request) a new server for account. Server DNS will be configured to access Google's public DNS at 8.8.8.8.
|
7
|
+
#
|
8
|
+
|
9
|
+
class CreateServer
|
10
|
+
attr_accessor :server
|
11
|
+
|
12
|
+
# server is a ProvisionedServer
|
13
|
+
def initialize(client, server)
|
14
|
+
@client = client
|
15
|
+
@server = server
|
16
|
+
end
|
17
|
+
|
18
|
+
def execute
|
19
|
+
return @client.post(
|
20
|
+
"#{Entrypoint}servers",
|
21
|
+
headers: {'Content-Type': 'application/json'},
|
22
|
+
body: @server.to_json)
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
##
|
27
|
+
# DeleteServer command will deprovision specific server with the given server ID.
|
28
|
+
#
|
29
|
+
# @see https://developers.phoenixnap.com/docs/bmc/1/routes/servers/%7Bserver_id%7D/delete
|
30
|
+
|
31
|
+
class DeleteServer
|
32
|
+
attr_accessor :serverID
|
33
|
+
|
34
|
+
def initialize(client, serverID)
|
35
|
+
@client = client
|
36
|
+
@serverID = serverID
|
37
|
+
end
|
38
|
+
|
39
|
+
def execute
|
40
|
+
return @client.delete(
|
41
|
+
"#{Entrypoint}servers/#{serverID}",
|
42
|
+
headers: {'Content-Type': 'application/json'})
|
43
|
+
end
|
44
|
+
end
|
45
|
+
|
46
|
+
##
|
47
|
+
# GetServer command will get server properties for a given server ID.
|
48
|
+
#
|
49
|
+
# @see https://developers.phoenixnap.com/docs/bmc/1/routes/servers/%7Bserver_id%7D/get
|
50
|
+
|
51
|
+
class GetServer
|
52
|
+
attr_accessor :serverID
|
53
|
+
|
54
|
+
def initialize(client, serverID)
|
55
|
+
@client = client
|
56
|
+
@serverID = serverID
|
57
|
+
end
|
58
|
+
|
59
|
+
def execute
|
60
|
+
return @client.get(
|
61
|
+
"#{Entrypoint}servers/#{serverID}",
|
62
|
+
headers: {'Content-Type': 'application/json'})
|
63
|
+
end
|
64
|
+
end
|
65
|
+
|
66
|
+
##
|
67
|
+
# GetServers command will get server properties for all servers in an account.
|
68
|
+
#
|
69
|
+
# @see https://developers.phoenixnap.com/docs/bmc/1/routes/servers/get
|
70
|
+
|
71
|
+
class GetServers
|
72
|
+
def initialize(client)
|
73
|
+
@client = client
|
74
|
+
end
|
75
|
+
|
76
|
+
def execute
|
77
|
+
return @client.get(
|
78
|
+
"#{Entrypoint}servers",
|
79
|
+
headers: {'Content-Type': 'application/json'})
|
80
|
+
end
|
81
|
+
end
|
82
|
+
|
83
|
+
##
|
84
|
+
# PowerOff command will power off a specific server.
|
85
|
+
#
|
86
|
+
# @see https://developers.phoenixnap.com/docs/bmc/1/routes/servers/%7Bserver_id%7D/actions/power-off/post
|
87
|
+
|
88
|
+
class PowerOff
|
89
|
+
attr_accessor :serverID
|
90
|
+
|
91
|
+
def initialize(client, serverID)
|
92
|
+
@client = client
|
93
|
+
@serverID = serverID
|
94
|
+
end
|
95
|
+
|
96
|
+
def execute
|
97
|
+
return @client.post(
|
98
|
+
"#{Entrypoint}servers/#{serverID}/actions/power-off",
|
99
|
+
headers: {'Content-Type': 'application/json'})
|
100
|
+
end
|
101
|
+
end
|
102
|
+
|
103
|
+
##
|
104
|
+
# PowerOn command will power on a specific server.
|
105
|
+
#
|
106
|
+
# @see https://developers.phoenixnap.com/docs/bmc/1/routes/servers/%7Bserver_id%7D/actions/power-on/post
|
107
|
+
|
108
|
+
class PowerOn
|
109
|
+
attr_accessor :serverID
|
110
|
+
|
111
|
+
def initialize(client, serverID)
|
112
|
+
@client = client
|
113
|
+
@serverID = serverID
|
114
|
+
end
|
115
|
+
|
116
|
+
def execute
|
117
|
+
return @client.post(
|
118
|
+
"#{Entrypoint}servers/#{serverID}/actions/power-on",
|
119
|
+
headers: {'Content-Type': 'application/json'})
|
120
|
+
end
|
121
|
+
end
|
122
|
+
|
123
|
+
##
|
124
|
+
# Reboot command will reboot a specific server.
|
125
|
+
#
|
126
|
+
# @see https://developers.phoenixnap.com/docs/bmc/1/routes/servers/%7Bserver_id%7D/actions/reboot/post
|
127
|
+
|
128
|
+
class Reboot
|
129
|
+
attr_accessor :serverID
|
130
|
+
|
131
|
+
def initialize(client, serverID)
|
132
|
+
@client = client
|
133
|
+
@serverID = serverID
|
134
|
+
end
|
135
|
+
|
136
|
+
def execute
|
137
|
+
return @client.post(
|
138
|
+
"#{Entrypoint}servers/#{serverID}/actions/reboot",
|
139
|
+
headers: {'Content-Type': 'application/json'})
|
140
|
+
end
|
141
|
+
end
|
142
|
+
|
143
|
+
##
|
144
|
+
# Reset command will reset the configuration for a specific server.
|
145
|
+
#
|
146
|
+
# @see https://developers.phoenixnap.com/docs/bmc/1/routes/servers/%7Bserver_id%7D/actions/reset/post
|
147
|
+
|
148
|
+
class Reset
|
149
|
+
attr_accessor :server
|
150
|
+
|
151
|
+
# server is a ProvisionedServer
|
152
|
+
def initialize(client, server)
|
153
|
+
@client = client
|
154
|
+
@server = server
|
155
|
+
end
|
156
|
+
|
157
|
+
def execute
|
158
|
+
return @client.post(
|
159
|
+
"#{Entrypoint}servers/#{@server.id}/actions/reset",
|
160
|
+
headers: {'Content-Type': 'application/json'},
|
161
|
+
body: @server.to_json)
|
162
|
+
end
|
163
|
+
end
|
164
|
+
|
165
|
+
##
|
166
|
+
# Shutdown command will shutdown a specific server
|
167
|
+
#
|
168
|
+
# @see https://developers.phoenixnap.com/docs/bmc/1/routes/servers/%7Bserver_id%7D/actions/shutdown/post
|
169
|
+
|
170
|
+
class Shutdown
|
171
|
+
attr_accessor :serverID
|
172
|
+
|
173
|
+
def initialize(client, serverID)
|
174
|
+
@client = client
|
175
|
+
@serverID = serverID
|
176
|
+
end
|
177
|
+
|
178
|
+
def execute
|
179
|
+
return @client.post(
|
180
|
+
"#{Entrypoint}servers/#{serverID}/actions/shutdown",
|
181
|
+
headers: {'Content-Type': 'application/json'})
|
182
|
+
end
|
183
|
+
end
|
184
|
+
|
185
|
+
##
|
186
|
+
# GetSSHKeys command will list all SSH keys associated with an account
|
187
|
+
#
|
188
|
+
# @see https://developers.phoenixnap.com/docs/bmc/1/routes/ssh-keys/get
|
189
|
+
|
190
|
+
class GetSSHKeys
|
191
|
+
def initialize(client)
|
192
|
+
@client = client
|
193
|
+
end
|
194
|
+
|
195
|
+
def execute
|
196
|
+
return @client.get(
|
197
|
+
"#{Entrypoint}ssh-keys",
|
198
|
+
headers: {'Content-Type': 'application/json'})
|
199
|
+
end
|
200
|
+
end
|
201
|
+
|
202
|
+
##
|
203
|
+
# CreateSSHKey command will create a new SSH key with the provided properties.
|
204
|
+
#
|
205
|
+
# @see https://developers.phoenixnap.com/docs/bmc/1/routes/ssh-keys/post
|
206
|
+
|
207
|
+
class CreateSSHKey
|
208
|
+
attr_accessor :sshKey
|
209
|
+
|
210
|
+
def initialize(client, sshKey)
|
211
|
+
@client = client
|
212
|
+
@sshKey = sshKey
|
213
|
+
end
|
214
|
+
|
215
|
+
def execute
|
216
|
+
return @client.post(
|
217
|
+
"#{Entrypoint}ssh-keys",
|
218
|
+
headers: {'Content-Type': 'application/json'},
|
219
|
+
body: @sshKey.to_json)
|
220
|
+
end
|
221
|
+
end
|
222
|
+
|
223
|
+
##
|
224
|
+
# DeleteSSHKey command will delete the SSH key with the specified ID.
|
225
|
+
#
|
226
|
+
# @see https://developers.phoenixnap.com/docs/bmc/1/routes/ssh-keys/%7Bssh_key_id%7D/delete
|
227
|
+
|
228
|
+
class DeleteSSHKey
|
229
|
+
attr_accessor :sshKeyID
|
230
|
+
|
231
|
+
def initialize(client, sshKeyID)
|
232
|
+
@client = client
|
233
|
+
@sshKeyID = sshKeyID
|
234
|
+
end
|
235
|
+
|
236
|
+
def execute
|
237
|
+
return @client.delete(
|
238
|
+
"#{Entrypoint}ssh-keys/#{sshKeyID}",
|
239
|
+
headers: {'Content-Type': 'application/json'})
|
240
|
+
end
|
241
|
+
end
|
242
|
+
|
243
|
+
##
|
244
|
+
# GetSSHKey command will retrieve the SSH key with the specified ID.
|
245
|
+
#
|
246
|
+
# @see https://developers.phoenixnap.com/docs/bmc/1/routes/ssh-keys/%7Bssh_key_id%7D/get
|
247
|
+
|
248
|
+
class GetSSHKey
|
249
|
+
attr_accessor :sshKeyID
|
250
|
+
|
251
|
+
def initialize(client, sshKeyID)
|
252
|
+
@client = client
|
253
|
+
@sshKeyID = sshKeyID
|
254
|
+
end
|
255
|
+
|
256
|
+
def execute
|
257
|
+
return @client.get(
|
258
|
+
"#{Entrypoint}ssh-keys/#{sshKeyID}",
|
259
|
+
headers: {'Content-Type': 'application/json'})
|
260
|
+
end
|
261
|
+
end
|
262
|
+
|
263
|
+
##
|
264
|
+
# GetSSHKey command will update the SSH key with the specified ID.
|
265
|
+
#
|
266
|
+
# @see https://developers.phoenixnap.com/docs/bmc/1/routes/ssh-keys/%7Bssh_key_id%7D/put
|
267
|
+
|
268
|
+
class EditSSHKey
|
269
|
+
attr_accessor :sshKey
|
270
|
+
|
271
|
+
def initialize(client, sshKey)
|
272
|
+
@client = client
|
273
|
+
@sshKey = sshKey
|
274
|
+
end
|
275
|
+
|
276
|
+
def execute
|
277
|
+
return @client.put(
|
278
|
+
"#{Entrypoint}ssh-keys/#{@sshKey.id}",
|
279
|
+
headers: {'Content-Type': 'application/json'},
|
280
|
+
body: @sshKey.to_json)
|
281
|
+
end
|
282
|
+
end
|
283
|
+
end
|
data/lib/dtos.rb
ADDED
@@ -0,0 +1,108 @@
|
|
1
|
+
module Bmc::Sdk
|
2
|
+
|
3
|
+
##
|
4
|
+
# ErrorMessage is used to transmit details on error responses.
|
5
|
+
#
|
6
|
+
# @see https://developers.phoenixnap.com/docs/bmc/1/types/Error
|
7
|
+
|
8
|
+
class ErrorMessage
|
9
|
+
attr_accessor :message, :validationErrors
|
10
|
+
def initialize(message, validationErrors)
|
11
|
+
@message = message
|
12
|
+
@validationErrors = validationErrors
|
13
|
+
end
|
14
|
+
def to_json(*a)
|
15
|
+
{message: @message, validationErrors: @validationErrors}.to_json(*a)
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
19
|
+
##
|
20
|
+
# LongServer is used to transmit details on fully specified server responses.
|
21
|
+
#
|
22
|
+
# @see https://developers.phoenixnap.com/docs/bmc/1/types/Server
|
23
|
+
|
24
|
+
class LongServer
|
25
|
+
attr_accessor :id, :status, :hostname, :description, :privateIPAddresses, :publicIPAddresses, :os, :type, :location, :cpu, :ram, :storage
|
26
|
+
def initialize(id, status, hostname, description, privateIPAddresses, publicIPAddresses, os, type, location, cpu, ram, storage)
|
27
|
+
@id = id
|
28
|
+
@status = status
|
29
|
+
@hostname = hostname
|
30
|
+
@description = description
|
31
|
+
@privateIPAddresses = privateIPAddresses
|
32
|
+
@publicIPAddresses = publicIPAddresses
|
33
|
+
@os = os
|
34
|
+
@type = type
|
35
|
+
@location = location
|
36
|
+
@cpu = cpu
|
37
|
+
@ram = ram
|
38
|
+
@storage = storage
|
39
|
+
end
|
40
|
+
def to_json(*a)
|
41
|
+
{id: @id, status: @status, hostname: @hostname, description: @description, privateIpAddresses: @privateIPAddresses,
|
42
|
+
publicIPAddresses: @publicIpAddresses, os: @os, type: @type, location: @location, cpu: @cpu, ram: @ram,
|
43
|
+
storage: @storage }.to_json(*a)
|
44
|
+
end
|
45
|
+
end
|
46
|
+
|
47
|
+
##
|
48
|
+
# ProvisionedServer is used to transmit details on CreateServer commands.
|
49
|
+
#
|
50
|
+
# @see https://developers.phoenixnap.com/docs/bmc/1/types/ServerCreate
|
51
|
+
|
52
|
+
class ProvisionedServer
|
53
|
+
attr_accessor :id, :status, :hostname, :description, :os, :type, :location, :sshKeys, :sshKeyIds
|
54
|
+
def initialize(id, status, hostname, description, os, type, location, sshKeys, sshKeyIds)
|
55
|
+
@id = id
|
56
|
+
@status = status
|
57
|
+
@hostname = hostname
|
58
|
+
@description = description
|
59
|
+
@os = os
|
60
|
+
@type = type
|
61
|
+
@location = location
|
62
|
+
@sshKeys = sshKeys
|
63
|
+
@sshKeyIds = sshKeyIds
|
64
|
+
end
|
65
|
+
def to_json(*a)
|
66
|
+
{id: @id, status: @status, hostname: @hostname, description: @description, os: @os, type: @type, location: @location, sshKeys: @sshKeys, sshKeyIds: @sshKeyIds}.to_json(*a)
|
67
|
+
end
|
68
|
+
end
|
69
|
+
|
70
|
+
##
|
71
|
+
# ServerResetSpec is used to transmit details on ServerReset commands.
|
72
|
+
#
|
73
|
+
# @see https://developers.phoenixnap.com/docs/bmc/1/types/ServerReset
|
74
|
+
|
75
|
+
class ServerResetSpec
|
76
|
+
attr_accessor :id, :sshKeys, :sshKeyIds, :installDefaultSshKeys
|
77
|
+
def initialize(id, sshKeys, sshKeyIds, installDefaultSshKeys)
|
78
|
+
@id = id
|
79
|
+
@sshKeys = sshKeys
|
80
|
+
@sshKeyIds = sshKeyIds
|
81
|
+
@installDefaultSshKeys = installDefaultSshKeys
|
82
|
+
end
|
83
|
+
def to_json(*a)
|
84
|
+
{id: @id, status: @status, sshKeys: @sshKeys, sshKeyIds: @sshKeyIds, installDefaultSshKeys: @installDefaultSshKeys}.to_json(*a)
|
85
|
+
end
|
86
|
+
end
|
87
|
+
|
88
|
+
##
|
89
|
+
# SSHKeySpec is used to transmit details for BMC SSH Key objects.
|
90
|
+
#
|
91
|
+
# @see https://developers.phoenixnap.com/docs/bmc/1/types/SshKey
|
92
|
+
|
93
|
+
class SSHKeySpec
|
94
|
+
attr_accessor :id, :default, :name, :key, :fingerprint, :createdOn, :lastUpdatedOn
|
95
|
+
def initialize(id, default, name, key, fingerprint, createdOn, lastUpdatedOn)
|
96
|
+
@id = id
|
97
|
+
@default = default
|
98
|
+
@name = name
|
99
|
+
@key = key
|
100
|
+
@fingerprint = fingerprint
|
101
|
+
@createdOn = createdOn
|
102
|
+
@lastUpdatedOn = lastUpdatedOn
|
103
|
+
end
|
104
|
+
def to_json(*a)
|
105
|
+
{id: @id, default: @default, name: @name, key: @key, fingerprint: @fingerprint, createdOn: @createdOn, lastUpdatedOn: @lastUpdatedOn}.to_json(*a)
|
106
|
+
end
|
107
|
+
end
|
108
|
+
end
|
metadata
ADDED
@@ -0,0 +1,87 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: bmc-sdk-development
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.1
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- PhoenixNAP
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2021-02-01 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: rspec
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - "~>"
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '3.10'
|
20
|
+
type: :development
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - "~>"
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '3.10'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: os
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - "~>"
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '1.1'
|
34
|
+
type: :runtime
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - "~>"
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '1.1'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: oauth2
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - '='
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: 1.4.4
|
48
|
+
type: :runtime
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - '='
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: 1.4.4
|
55
|
+
description: An SDK for interacting with the BMC API. See https://developers.phoenixnap.com/docs/bmc/1/overview
|
56
|
+
email: support@phoenixnap.com
|
57
|
+
executables: []
|
58
|
+
extensions: []
|
59
|
+
extra_rdoc_files: []
|
60
|
+
files:
|
61
|
+
- lib/bmc-sdk.rb
|
62
|
+
- lib/commands.rb
|
63
|
+
- lib/dtos.rb
|
64
|
+
homepage: https://github.com/phoenixnap/bmc-sdk-ruby
|
65
|
+
licenses:
|
66
|
+
- MPL-2.0
|
67
|
+
metadata: {}
|
68
|
+
post_install_message:
|
69
|
+
rdoc_options: []
|
70
|
+
require_paths:
|
71
|
+
- lib
|
72
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
73
|
+
requirements:
|
74
|
+
- - ">="
|
75
|
+
- !ruby/object:Gem::Version
|
76
|
+
version: '0'
|
77
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
78
|
+
requirements:
|
79
|
+
- - ">="
|
80
|
+
- !ruby/object:Gem::Version
|
81
|
+
version: '0'
|
82
|
+
requirements: []
|
83
|
+
rubygems_version: 3.2.3
|
84
|
+
signing_key:
|
85
|
+
specification_version: 4
|
86
|
+
summary: An SDK for interacting with the BMC API.
|
87
|
+
test_files: []
|