lmc 0.10.1 → 0.14.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +5 -5
- data/.idea/inspectionProfiles/Project_Default.xml +1 -1
- data/.idea/vcs.xml +1 -1
- data/.rubocop.yml +3 -3
- data/.ruby-version +1 -1
- data/Rakefile +4 -3
- data/coverage/.last_run.json +1 -1
- data/lib/lmc.rb +16 -3
- data/lib/lmc/Account.rb +28 -16
- data/lib/lmc/Cloud.rb +34 -15
- data/lib/lmc/Response.rb +3 -2
- data/lib/lmc/User.rb +1 -0
- data/lib/lmc/authority.rb +1 -2
- data/lib/lmc/config/device_config.rb +4 -3
- data/lib/lmc/config/device_dsc_ui.rb +2 -2
- data/lib/lmc/entity.rb +2 -2
- data/lib/lmc/logger.rb +1 -1
- data/lib/lmc/mixins/service_resource.rb +0 -7
- data/lib/lmc/preferences/preferences.rb +24 -0
- data/lib/lmc/version.rb +1 -1
- data/lmc.gemspec +4 -3
- metadata +29 -29
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: e239ac693f1144e6391c0aad69e68657ad5498ae51e3b0c92dcc9e163abb15de
|
4
|
+
data.tar.gz: d98d01d4b424db42dc6fb581d763f4b60e20d4e283a87f1b771bd786c8c1a34e
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: abb83a783cfe4247cb3952cdd10df18fd36c4d9ad91d4196783e90aaf5bb39f5be51ee6b65ee1b11c4421077d3479e16f7c10359b83e39e361e90e586c3aee7c
|
7
|
+
data.tar.gz: 778005cf105deaf7fbd4bfd9ba60bb595ffb747e14e924a89dc1e56c5e8790518c9f386770ad36c3876280ed72f08e61bc6f081f0e15fbd8123fd570d4fc9b7b
|
@@ -1,7 +1,7 @@
|
|
1
1
|
<component name="InspectionProjectProfileManager">
|
2
2
|
<profile version="1.0">
|
3
3
|
<option name="myName" value="Project Default" />
|
4
|
-
<inspection_tool class="Rubocop" enabled="
|
4
|
+
<inspection_tool class="Rubocop" enabled="false" level="WARNING" enabled_by_default="true">
|
5
5
|
<scope name="Tests" level="ERROR" enabled="true" />
|
6
6
|
</inspection_tool>
|
7
7
|
<inspection_tool class="RubyInstanceMethodNamingConvention" enabled="true" level="WARNING" enabled_by_default="true">
|
data/.idea/vcs.xml
CHANGED
data/.rubocop.yml
CHANGED
@@ -1,8 +1,8 @@
|
|
1
|
-
Layout/
|
1
|
+
Layout/TrailingEmptyLines:
|
2
2
|
EnforcedStyle: final_blank_line
|
3
|
-
Layout/
|
3
|
+
Layout/FirstHashElementIndentation:
|
4
4
|
IndentationWidth: 4
|
5
|
-
|
5
|
+
Layout/LineLength:
|
6
6
|
Max: 110
|
7
7
|
Style/IfUnlessModifier:
|
8
8
|
Enabled: false
|
data/.ruby-version
CHANGED
@@ -1 +1 @@
|
|
1
|
-
2.
|
1
|
+
2.7.1
|
data/Rakefile
CHANGED
@@ -21,15 +21,16 @@ RuboCop::RakeTask.new(:autocop) do |t|
|
|
21
21
|
'Layout/SpaceAroundOperators',
|
22
22
|
'Layout/SpaceInsideBlockBraces',
|
23
23
|
'Layout/SpaceInsideHashLiteralBraces',
|
24
|
-
'Layout/
|
25
|
-
'Style/BracesAroundHashParameters',
|
24
|
+
'Layout/TrailingEmptyLines',
|
26
25
|
'Style/CommentAnnotation',
|
27
26
|
'Style/FrozenStringLiteralComment',
|
28
27
|
'Style/MethodDefParentheses',
|
29
28
|
'Style/RedundantSelf',
|
30
29
|
'Style/RedundantReturn',
|
31
30
|
'Style/StringLiterals',
|
32
|
-
'Style/StringLiteralsInInterpolation'
|
31
|
+
'Style/StringLiteralsInInterpolation',
|
32
|
+
'Style/StabbyLambdaParentheses',
|
33
|
+
]
|
33
34
|
t.options = ['--only', autofix.join(','), '--auto-correct', 'lib', 'test', 'Rakefile', 'lmc.gemspec']
|
34
35
|
end
|
35
36
|
task :default => :test
|
data/coverage/.last_run.json
CHANGED
data/lib/lmc.rb
CHANGED
@@ -5,10 +5,23 @@ require 'restclient'
|
|
5
5
|
|
6
6
|
module LMC
|
7
7
|
SERVICELIST = ['cloud-service-auth',
|
8
|
+
'cloud-service-backstage',
|
9
|
+
'cloud-service-config',
|
8
10
|
'cloud-service-devices',
|
11
|
+
'cloud-service-devicetunnel',
|
12
|
+
'cloud-service-dyndns',
|
13
|
+
'cloud-service-fields',
|
14
|
+
'cloud-service-geolocation',
|
15
|
+
'cloud-service-hotspot',
|
16
|
+
'cloud-service-jobs',
|
9
17
|
'cloud-service-monitoring',
|
10
|
-
'cloud-service-
|
11
|
-
'cloud-service-
|
18
|
+
'cloud-service-messaging',
|
19
|
+
'cloud-service-notification',
|
20
|
+
'cloud-service-licenses',
|
21
|
+
'cloud-service-logging',
|
22
|
+
'cloud-service-preferences',
|
23
|
+
'cloud-service-uf-translator'
|
24
|
+
]
|
12
25
|
|
13
26
|
def self.useful
|
14
27
|
true
|
@@ -23,7 +36,7 @@ Dir.glob(File.expand_path('../lmc/*.rb', __FILE__)).each do |file|
|
|
23
36
|
require file
|
24
37
|
end
|
25
38
|
|
26
|
-
['exceptions', 'auth', 'config', 'monitoring'].each do |folder|
|
39
|
+
['exceptions', 'auth', 'config', 'monitoring', 'preferences'].each do |folder|
|
27
40
|
Dir.glob(File.expand_path("../lmc/#{folder}/*.rb", __FILE__)).each do |file|
|
28
41
|
require file
|
29
42
|
end
|
data/lib/lmc/Account.rb
CHANGED
@@ -25,7 +25,7 @@ module LMC
|
|
25
25
|
(name.nil? || a.name == name) && (type.nil? || a.type == type)
|
26
26
|
end
|
27
27
|
if accounts.length == 1
|
28
|
-
|
28
|
+
accounts[0]
|
29
29
|
elsif accounts.length == 0
|
30
30
|
raise 'Did not find account'
|
31
31
|
else
|
@@ -56,8 +56,8 @@ module LMC
|
|
56
56
|
delete_action = AuthAction.new @cloud
|
57
57
|
delete_action.type = AuthAction::ACCOUNT_DELETE
|
58
58
|
delete_action.name = Cloud.user
|
59
|
-
delete_action.data = {'password' => Cloud.password,
|
60
|
-
'accountId' => @id}
|
59
|
+
delete_action.data = { 'password' => Cloud.password,
|
60
|
+
'accountId' => @id }
|
61
61
|
delete_action.post
|
62
62
|
@id = nil
|
63
63
|
true
|
@@ -73,30 +73,33 @@ module LMC
|
|
73
73
|
def members
|
74
74
|
ids = Cloud.instance.get ['cloud-service-auth', 'accounts', @id, 'members'], 'select' => 'id'
|
75
75
|
puts ids.inspect if Cloud.debug
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
76
|
+
# these are not actual membership objects
|
77
|
+
memberships = ids.map do |member_id|
|
78
|
+
response = Cloud.instance.get ['cloud-service-auth', 'accounts', @id, 'members', member_id]
|
79
|
+
memberships = response.body
|
80
|
+
puts memberships.inspect if Cloud.debug
|
81
|
+
memberships
|
81
82
|
end
|
82
|
-
|
83
|
+
memberships
|
83
84
|
end
|
84
85
|
|
85
86
|
def find_member_by_name(name)
|
86
87
|
if name.nil?
|
87
88
|
raise 'No member name given'
|
88
89
|
end
|
89
|
-
member = members.find {|m| m.name == name}
|
90
|
+
member = members.find { |m| m.name == name }
|
90
91
|
unless member
|
91
92
|
raise "Member named #{name} not found in account #{self}"
|
92
93
|
end
|
93
94
|
member
|
94
95
|
end
|
95
96
|
|
97
|
+
#--
|
96
98
|
# def update_member(principal_id, data)
|
97
99
|
# response = @cloud.post ["cloud-service-auth", "accounts", id, 'members', principal_id], data
|
98
100
|
# return response
|
99
101
|
# end
|
102
|
+
#++
|
100
103
|
|
101
104
|
def remove_membership(member_id)
|
102
105
|
@cloud.delete ['cloud-service-auth', 'accounts', id, 'members', member_id]
|
@@ -123,16 +126,21 @@ module LMC
|
|
123
126
|
end
|
124
127
|
|
125
128
|
def children
|
126
|
-
@cloud.auth_for_accounts([
|
127
|
-
|
128
|
-
|
129
|
+
@cloud.auth_for_accounts([ROOT_ACCOUNT_UUID])
|
130
|
+
# Projects can not have children, return empty map immediately as optimization
|
131
|
+
if type != 'PROJECT'
|
132
|
+
response = @cloud.get ['cloud-service-auth', 'accounts', id, 'children']
|
133
|
+
response.map { |child| Account.new @cloud, child }
|
134
|
+
else
|
135
|
+
[]
|
136
|
+
end
|
129
137
|
end
|
130
138
|
|
139
|
+
# This can only show the most recent page of logs so far
|
131
140
|
def logs
|
132
|
-
# https://lmctest/cloud-service-logging/accounts/6392b234-b11c-498a-a077-a5f5b23c54a0/logs?lang=DE
|
133
141
|
cloud = Cloud.instance
|
134
142
|
cloud.auth_for_accounts [id]
|
135
|
-
cloud.get(['cloud-service-logging', 'accounts', id, 'logs?lang=DE']).body
|
143
|
+
cloud.get(['cloud-service-logging', 'accounts', id, 'logs', 'paginated?lang=DE']).body.logs
|
136
144
|
end
|
137
145
|
|
138
146
|
def sites
|
@@ -140,7 +148,7 @@ module LMC
|
|
140
148
|
return [] if @type == 'PRIVATE_CLOUD'
|
141
149
|
@cloud.auth_for_accounts([id])
|
142
150
|
response = @cloud.get ['cloud-service-devices', 'accounts', id, 'sites'], :select => :id
|
143
|
-
response.body.map {|data|
|
151
|
+
response.body.map { |data|
|
144
152
|
Site.new(UUID.new(data), self)
|
145
153
|
}
|
146
154
|
end
|
@@ -168,6 +176,10 @@ module LMC
|
|
168
176
|
"#{name}"
|
169
177
|
end
|
170
178
|
|
179
|
+
def summary
|
180
|
+
"\"#{@name}\" (#{@type}) ID: #{@id}"
|
181
|
+
end
|
182
|
+
|
171
183
|
private
|
172
184
|
|
173
185
|
## should be put into entity or such
|
data/lib/lmc/Cloud.rb
CHANGED
@@ -7,22 +7,24 @@ require 'restclient'
|
|
7
7
|
module LMC
|
8
8
|
class Cloud
|
9
9
|
class << self
|
10
|
-
attr_accessor :cloud_host, :user, :password, :verbose, :debug, :verify_tls, :use_tls
|
10
|
+
attr_accessor :cloud_host, :user, :password, :code, :verbose, :debug, :verify_tls, :use_tls
|
11
11
|
Cloud.use_tls = true
|
12
12
|
Cloud.verify_tls = true
|
13
|
+
Cloud.code = nil
|
13
14
|
end
|
14
15
|
|
15
16
|
def self.instance(opts = { authorize: true })
|
16
|
-
@@inst ||= new(@cloud_host, @user, @password, opts[:authorize])
|
17
|
+
@@inst ||= new(@cloud_host, @user, @password, @code, opts[:authorize])
|
17
18
|
end
|
18
19
|
|
19
20
|
attr_reader :auth_ok, :cloud_host, :user, :password
|
20
21
|
|
21
|
-
def initialize(cloud_host, user,
|
22
|
+
def initialize(cloud_host, user, password, code = nil, auth = true)
|
22
23
|
@auth_ok = false
|
23
24
|
@cloud_host = cloud_host
|
24
25
|
@user = user
|
25
|
-
@password =
|
26
|
+
@password = password
|
27
|
+
@code = code
|
26
28
|
@verify_tls = Cloud.verify_tls
|
27
29
|
@last_authorized_account_ids = nil
|
28
30
|
@logger ||= ::LMC::Logger.new(STDOUT) if Cloud.debug
|
@@ -31,7 +33,7 @@ module LMC
|
|
31
33
|
authorize if auth
|
32
34
|
end
|
33
35
|
|
34
|
-
# hide
|
36
|
+
# hide secret fields from being displayed in dumps
|
35
37
|
def inspect
|
36
38
|
"#<Cloud:#{object_id}, #{build_url}>"
|
37
39
|
end
|
@@ -63,6 +65,11 @@ module LMC
|
|
63
65
|
post ['cloud-service-auth', 'accounts', account_id, 'members'], body
|
64
66
|
end
|
65
67
|
|
68
|
+
# @param section Array of String to indicate section to access. Example: ['principal', 'self', 'ui']
|
69
|
+
def preferences(section)
|
70
|
+
LMC::Preferences.new cloud: self, section: section
|
71
|
+
end
|
72
|
+
|
66
73
|
def get(path, params = nil)
|
67
74
|
prepared_headers = headers
|
68
75
|
prepared_headers[:params] = params
|
@@ -74,31 +81,37 @@ module LMC
|
|
74
81
|
execute_request args
|
75
82
|
end
|
76
83
|
|
77
|
-
def put(path, body_object)
|
84
|
+
def put(path, body_object, params = nil)
|
85
|
+
prepared_headers = headers
|
86
|
+
prepared_headers[:params] = params
|
78
87
|
args = {
|
79
88
|
:method => :put,
|
80
89
|
:url => build_url(path),
|
81
|
-
:payload => body_object.to_json
|
82
|
-
|
90
|
+
:payload => body_object.to_json,
|
91
|
+
:headers => prepared_headers
|
83
92
|
}
|
84
93
|
execute_request args
|
85
94
|
end
|
86
95
|
|
87
|
-
def post(path, body_object)
|
96
|
+
def post(path, body_object, params=nil )
|
97
|
+
prepared_headers = headers
|
98
|
+
prepared_headers[:params] = params
|
88
99
|
args = {
|
89
100
|
:method => :post,
|
90
101
|
:url => build_url(path),
|
91
|
-
:payload => body_object.to_json
|
102
|
+
:payload => body_object.to_json,
|
103
|
+
:headers => prepared_headers
|
92
104
|
}
|
93
105
|
execute_request args
|
94
106
|
end
|
95
107
|
|
96
|
-
def delete(path,
|
108
|
+
def delete(path, params = nil)
|
109
|
+
prepared_headers = headers
|
110
|
+
prepared_headers[:params] = params
|
97
111
|
args = {
|
98
112
|
:method => :delete,
|
99
113
|
:url => build_url(path),
|
100
|
-
:
|
101
|
-
:headers => headers
|
114
|
+
:headers => prepared_headers
|
102
115
|
}
|
103
116
|
execute_request args
|
104
117
|
end
|
@@ -142,7 +155,12 @@ module LMC
|
|
142
155
|
}
|
143
156
|
if account_ids != @last_authorized_account_ids
|
144
157
|
begin
|
145
|
-
reply = post(['cloud-service-auth', 'auth'],
|
158
|
+
reply = post(['cloud-service-auth', 'auth'],
|
159
|
+
name: @user,
|
160
|
+
password: @password,
|
161
|
+
code: @code,
|
162
|
+
accountIds: account_ids,
|
163
|
+
termsOfUse: tos)
|
146
164
|
@last_authorized_account_ids = account_ids
|
147
165
|
@auth_token = reply
|
148
166
|
@auth_ok = true
|
@@ -151,6 +169,7 @@ module LMC
|
|
151
169
|
if response['code'] == 100
|
152
170
|
raise LMC::OutdatedTermsOfUseException.new(response)
|
153
171
|
end
|
172
|
+
raise e
|
154
173
|
end
|
155
174
|
end
|
156
175
|
end
|
@@ -180,7 +199,7 @@ module LMC
|
|
180
199
|
internal_args.merge! args
|
181
200
|
begin
|
182
201
|
resp = RestClient::Request.execute internal_args
|
183
|
-
|
202
|
+
LMCResponse.new(resp)
|
184
203
|
rescue RestClient::ExceptionWithResponse => e
|
185
204
|
if Cloud.debug
|
186
205
|
puts 'EXCEPTION: ' + e.to_s
|
data/lib/lmc/Response.rb
CHANGED
@@ -1,6 +1,7 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
3
|
require 'ostruct'
|
4
|
+
require 'recursive-open-struct'
|
4
5
|
module LMC
|
5
6
|
class LMCResponse
|
6
7
|
attr_reader :body, :code, :headers
|
@@ -13,12 +14,12 @@ module LMC
|
|
13
14
|
if @body_object.class == Array
|
14
15
|
@body = @body_object.map { |elem|
|
15
16
|
if elem.is_a? Hash then
|
16
|
-
|
17
|
+
RecursiveOpenStruct.new(elem, recurse_over_arrays: true)
|
17
18
|
else
|
18
19
|
elem
|
19
20
|
end}
|
20
21
|
elsif @body_object.class == Hash
|
21
|
-
@body =
|
22
|
+
@body = RecursiveOpenStruct.new(@body_object, recurse_over_arrays: true)
|
22
23
|
elsif @body_object.class == TrueClass || @body_object.class == FalseClass
|
23
24
|
@body = @body_object
|
24
25
|
else
|
data/lib/lmc/User.rb
CHANGED
data/lib/lmc/authority.rb
CHANGED
@@ -54,7 +54,7 @@ module LMC
|
|
54
54
|
def descriptive_confighash
|
55
55
|
item_map = dscui.item_by_id_map
|
56
56
|
confighash.map { |k, v|
|
57
|
-
[item_map[k].description, v]
|
57
|
+
[item_map[k.to_s].description, v]
|
58
58
|
}.to_h
|
59
59
|
end
|
60
60
|
|
@@ -172,16 +172,17 @@ module LMC
|
|
172
172
|
end
|
173
173
|
|
174
174
|
def redeem_ticket(tries)
|
175
|
+
wait_seconds = 0.5
|
175
176
|
attempts = 1
|
176
177
|
until @response
|
177
|
-
raise
|
178
|
+
raise "Timeout waiting for config (#{attempts * wait_seconds}s)" if attempts > tries
|
178
179
|
attempts += 1
|
179
180
|
body = @cloud.get(url_ticket).body
|
180
181
|
unless body.respond_to? :ticketId
|
181
182
|
@ticket_id = nil
|
182
183
|
@response = body
|
183
184
|
end
|
184
|
-
sleep
|
185
|
+
sleep wait_seconds * attempts
|
185
186
|
end
|
186
187
|
end
|
187
188
|
|
@@ -28,7 +28,7 @@ module LMC
|
|
28
28
|
attr_reader :version_string, :sections
|
29
29
|
|
30
30
|
def initialize(v_hash)
|
31
|
-
keys = v_hash.keys
|
31
|
+
keys = v_hash.to_h.keys
|
32
32
|
raise('More than one version key contained in dscui.') if keys.length > 1
|
33
33
|
@version_string = keys.first
|
34
34
|
@sections = v_hash[@version_string].map { |section_wrapper| Section.new section_wrapper }
|
@@ -76,7 +76,7 @@ module LMC
|
|
76
76
|
end
|
77
77
|
|
78
78
|
def initialize(item_wrapper)
|
79
|
-
keys = item_wrapper.keys
|
79
|
+
keys = item_wrapper.to_h.keys
|
80
80
|
raise('More than one key contained in item wrapper') if keys.length > 1
|
81
81
|
@type = keys.first
|
82
82
|
item = item_wrapper[@type]
|
data/lib/lmc/entity.rb
CHANGED
data/lib/lmc/logger.rb
CHANGED
@@ -5,7 +5,7 @@ module LMC
|
|
5
5
|
class Logger < ::Logger
|
6
6
|
@cloud = nil
|
7
7
|
attr_accessor :cloud
|
8
|
-
@@header_token_re = /"Authorization"=>"Bearer ([\S
|
8
|
+
@@header_token_re = /"Authorization"=>"Bearer ([\S]*)"/
|
9
9
|
def <<(line)
|
10
10
|
value_found = @@header_token_re.match line
|
11
11
|
if value_found
|
@@ -9,9 +9,6 @@ module LMC
|
|
9
9
|
end
|
10
10
|
end
|
11
11
|
klass.class_exec do
|
12
|
-
def methodtest
|
13
|
-
puts("cloud-service-#{service_name}")
|
14
|
-
end
|
15
12
|
|
16
13
|
# method that wraps attr_accessor to keep the defined attrs in a class instance var for serializing
|
17
14
|
def self.resource_attrs(*attrs)
|
@@ -26,10 +23,6 @@ module LMC
|
|
26
23
|
end
|
27
24
|
end
|
28
25
|
|
29
|
-
def method_on_instance_of_class
|
30
|
-
puts("cloud-service-#{service_name} #{inspect}, #{@cloud}")
|
31
|
-
end
|
32
|
-
|
33
26
|
def collection_path
|
34
27
|
["cloud-service-#{service_name}", collection_name]
|
35
28
|
end
|
@@ -0,0 +1,24 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
module LMC
|
3
|
+
class Preferences
|
4
|
+
def initialize(cloud:, section:)
|
5
|
+
@cloud = cloud
|
6
|
+
@section = section
|
7
|
+
end
|
8
|
+
|
9
|
+
def get(path)
|
10
|
+
response = @cloud.get build_url, { path: path }
|
11
|
+
response.body
|
12
|
+
end
|
13
|
+
|
14
|
+
def put(path, payload)
|
15
|
+
@cloud.put build_url, payload, { path: path }
|
16
|
+
end
|
17
|
+
|
18
|
+
private
|
19
|
+
def build_url
|
20
|
+
['cloud-service-preferences'] + @section
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
data/lib/lmc/version.rb
CHANGED
data/lmc.gemspec
CHANGED
@@ -10,6 +10,7 @@ Gem::Specification.new do |spec|
|
|
10
10
|
spec.authors = ['erpel']
|
11
11
|
spec.email = ['philipp@copythat.de']
|
12
12
|
|
13
|
+
spec.required_ruby_version = '~> 2.0'
|
13
14
|
spec.summary = %q{Library for interacting with LMC cloud instances}
|
14
15
|
spec.license = 'BSD-3-Clause'
|
15
16
|
|
@@ -32,13 +33,13 @@ Gem::Specification.new do |spec|
|
|
32
33
|
spec.add_development_dependency 'bundler', '~> 2.0'
|
33
34
|
spec.add_development_dependency 'minitest', '~> 5.11'
|
34
35
|
spec.add_development_dependency 'minitest-reporters', '~> 1'
|
35
|
-
spec.add_development_dependency 'rake', '~>
|
36
|
-
spec.add_development_dependency 'recursive-open-struct', '~> 1.1'
|
36
|
+
spec.add_development_dependency 'rake', '~> 12.0'
|
37
37
|
spec.add_development_dependency 'simplecov', '~> 0.15'
|
38
38
|
spec.add_development_dependency 'pry-nav', '~> 0.2.4'
|
39
39
|
spec.add_development_dependency 'rubocop', '~> 0.58.1'
|
40
40
|
|
41
|
-
spec.add_runtime_dependency 'json', '~> 2.
|
41
|
+
spec.add_runtime_dependency 'json', '~> 2.3'
|
42
42
|
spec.add_runtime_dependency 'rest-client', '~> 2.0'
|
43
|
+
spec.add_runtime_dependency 'recursive-open-struct', '~> 1.1'
|
43
44
|
end
|
44
45
|
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: lmc
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.14.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- erpel
|
8
|
-
autorequire:
|
8
|
+
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2021-05-06 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -58,28 +58,14 @@ dependencies:
|
|
58
58
|
requirements:
|
59
59
|
- - "~>"
|
60
60
|
- !ruby/object:Gem::Version
|
61
|
-
version: '
|
61
|
+
version: '12.0'
|
62
62
|
type: :development
|
63
63
|
prerelease: false
|
64
64
|
version_requirements: !ruby/object:Gem::Requirement
|
65
65
|
requirements:
|
66
66
|
- - "~>"
|
67
67
|
- !ruby/object:Gem::Version
|
68
|
-
version: '
|
69
|
-
- !ruby/object:Gem::Dependency
|
70
|
-
name: recursive-open-struct
|
71
|
-
requirement: !ruby/object:Gem::Requirement
|
72
|
-
requirements:
|
73
|
-
- - "~>"
|
74
|
-
- !ruby/object:Gem::Version
|
75
|
-
version: '1.1'
|
76
|
-
type: :development
|
77
|
-
prerelease: false
|
78
|
-
version_requirements: !ruby/object:Gem::Requirement
|
79
|
-
requirements:
|
80
|
-
- - "~>"
|
81
|
-
- !ruby/object:Gem::Version
|
82
|
-
version: '1.1'
|
68
|
+
version: '12.0'
|
83
69
|
- !ruby/object:Gem::Dependency
|
84
70
|
name: simplecov
|
85
71
|
requirement: !ruby/object:Gem::Requirement
|
@@ -128,14 +114,14 @@ dependencies:
|
|
128
114
|
requirements:
|
129
115
|
- - "~>"
|
130
116
|
- !ruby/object:Gem::Version
|
131
|
-
version: '2.
|
117
|
+
version: '2.3'
|
132
118
|
type: :runtime
|
133
119
|
prerelease: false
|
134
120
|
version_requirements: !ruby/object:Gem::Requirement
|
135
121
|
requirements:
|
136
122
|
- - "~>"
|
137
123
|
- !ruby/object:Gem::Version
|
138
|
-
version: '2.
|
124
|
+
version: '2.3'
|
139
125
|
- !ruby/object:Gem::Dependency
|
140
126
|
name: rest-client
|
141
127
|
requirement: !ruby/object:Gem::Requirement
|
@@ -150,7 +136,21 @@ dependencies:
|
|
150
136
|
- - "~>"
|
151
137
|
- !ruby/object:Gem::Version
|
152
138
|
version: '2.0'
|
153
|
-
|
139
|
+
- !ruby/object:Gem::Dependency
|
140
|
+
name: recursive-open-struct
|
141
|
+
requirement: !ruby/object:Gem::Requirement
|
142
|
+
requirements:
|
143
|
+
- - "~>"
|
144
|
+
- !ruby/object:Gem::Version
|
145
|
+
version: '1.1'
|
146
|
+
type: :runtime
|
147
|
+
prerelease: false
|
148
|
+
version_requirements: !ruby/object:Gem::Requirement
|
149
|
+
requirements:
|
150
|
+
- - "~>"
|
151
|
+
- !ruby/object:Gem::Version
|
152
|
+
version: '1.1'
|
153
|
+
description:
|
154
154
|
email:
|
155
155
|
- philipp@copythat.de
|
156
156
|
executables: []
|
@@ -195,33 +195,33 @@ files:
|
|
195
195
|
- lib/lmc/mixins/json_able.rb
|
196
196
|
- lib/lmc/mixins/service_resource.rb
|
197
197
|
- lib/lmc/monitoring/monitoring_record.rb
|
198
|
+
- lib/lmc/preferences/preferences.rb
|
198
199
|
- lib/lmc/principal.rb
|
199
200
|
- lib/lmc/uuid.rb
|
200
201
|
- lib/lmc/version.rb
|
201
202
|
- lmc.gemspec
|
202
203
|
- misc/debug_log_experiment.rb
|
203
|
-
homepage:
|
204
|
+
homepage:
|
204
205
|
licenses:
|
205
206
|
- BSD-3-Clause
|
206
207
|
metadata: {}
|
207
|
-
post_install_message:
|
208
|
+
post_install_message:
|
208
209
|
rdoc_options: []
|
209
210
|
require_paths:
|
210
211
|
- lib
|
211
212
|
required_ruby_version: !ruby/object:Gem::Requirement
|
212
213
|
requirements:
|
213
|
-
- - "
|
214
|
+
- - "~>"
|
214
215
|
- !ruby/object:Gem::Version
|
215
|
-
version: '0'
|
216
|
+
version: '2.0'
|
216
217
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
217
218
|
requirements:
|
218
219
|
- - ">="
|
219
220
|
- !ruby/object:Gem::Version
|
220
221
|
version: '0'
|
221
222
|
requirements: []
|
222
|
-
|
223
|
-
|
224
|
-
signing_key:
|
223
|
+
rubygems_version: 3.1.2
|
224
|
+
signing_key:
|
225
225
|
specification_version: 4
|
226
226
|
summary: Library for interacting with LMC cloud instances
|
227
227
|
test_files: []
|