cloud_party 0.1.5 → 0.1.6
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/cloud_party/exception.rb +23 -5
- data/lib/cloud_party/exceptions.rb +4 -4
- data/lib/cloud_party/nodes.rb +1 -0
- data/lib/cloud_party/nodes/dns_records.rb +99 -0
- data/lib/cloud_party/nodes/zones.rb +0 -29
- data/lib/cloud_party/responses.rb +1 -0
- data/lib/cloud_party/responses/dns_records.rb +189 -0
- data/lib/cloud_party/responses/nodes/dns_records.rb +2 -0
- data/lib/cloud_party/responses/nodes/dns_records/meta.rb +25 -0
- data/lib/cloud_party/responses/zones.rb +9 -9
- data/lib/cloud_party/version.rb +1 -1
- metadata +6 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 1a99a96cb3a4dd7c2f4586ea783603c598023b29adb568f307cdfa2ffee6d479
|
4
|
+
data.tar.gz: 346df770759f10809a2e84cee9cb56b87808cb10d7efba62273d7eb0fb0d51e9
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 8de5deacb4758570d871028a0feae56cfe9a10fc0c4baaefd31f639d9fda14a4b084a635b4f9b46c059a31dc84ca3881a2ed4d5de716447b61afeb477c496ec0
|
7
|
+
data.tar.gz: 4c727ffdf69646101e242c7ac215b54afd2af0d7c33266166f882eacc8c779ff862743f3c2f0601425ea26466aeee82f6bbcef27d783e2825e7ff63c3f470b6e
|
@@ -10,26 +10,44 @@ module CloudParty
|
|
10
10
|
end
|
11
11
|
end
|
12
12
|
class RequestError < StandardError
|
13
|
-
def initialize(
|
14
|
-
|
13
|
+
def initialize(message, method, endpoint, code, body)
|
14
|
+
super(message)
|
15
15
|
@method = method
|
16
16
|
@endpoint = endpoint
|
17
17
|
@code = code
|
18
|
-
@
|
18
|
+
@body = body
|
19
19
|
end
|
20
20
|
|
21
21
|
def to_s
|
22
22
|
[error_string.squish, extra_string].join("\n")
|
23
23
|
end
|
24
24
|
|
25
|
-
def
|
25
|
+
def extra_string
|
26
26
|
# This method should be overridden
|
27
27
|
end
|
28
28
|
|
29
29
|
# override error_string to provide your own error_string
|
30
|
-
def
|
30
|
+
def error_string
|
31
31
|
# This method should be overridden
|
32
32
|
end
|
33
33
|
end
|
34
|
+
class InputError < ArgumentError
|
35
|
+
attr_reader :input, :obj
|
36
|
+
# @param [String] message message
|
37
|
+
# @param [Object] obj object
|
38
|
+
# @param [String] input input string
|
39
|
+
def initialize(message, obj, input)
|
40
|
+
super(message)
|
41
|
+
@obj = obj
|
42
|
+
@input = input
|
43
|
+
end
|
44
|
+
end
|
45
|
+
class NoDefinedZoneError < StandardError
|
46
|
+
attr_reader :obj
|
47
|
+
def initialize(message, obj)
|
48
|
+
super(message)
|
49
|
+
@obj = obj
|
50
|
+
end
|
51
|
+
end
|
34
52
|
end
|
35
53
|
end
|
@@ -17,11 +17,11 @@ module CloudParty
|
|
17
17
|
end
|
18
18
|
|
19
19
|
class UnknownError < RequestError
|
20
|
-
def initialize(
|
20
|
+
def initialize(message, method, endpoint, code, response)
|
21
21
|
super
|
22
22
|
end
|
23
23
|
|
24
|
-
def
|
24
|
+
def error_string
|
25
25
|
<<~HEREDOC
|
26
26
|
An error with the request has occurred, please make
|
27
27
|
sure the method verb, endpoint, and credentials are
|
@@ -29,14 +29,14 @@ module CloudParty
|
|
29
29
|
HEREDOC
|
30
30
|
end
|
31
31
|
|
32
|
-
def
|
32
|
+
def extra_string
|
33
33
|
<<~HEREDOC
|
34
34
|
Credentials Context: #{@obj&.class&.cfg}
|
35
35
|
|
36
36
|
Method Verb: #{@method}
|
37
37
|
Endpoint: #{@endpoint}
|
38
38
|
HTTP Status Code: #{@code}
|
39
|
-
Response Body: #{@response
|
39
|
+
Response Body: #{@response&.body}
|
40
40
|
HEREDOC
|
41
41
|
end
|
42
42
|
end
|
data/lib/cloud_party/nodes.rb
CHANGED
@@ -0,0 +1,99 @@
|
|
1
|
+
#
|
2
|
+
# Copyright 2019 Ken Spencer / IotaSpencer
|
3
|
+
#
|
4
|
+
#
|
5
|
+
# File: lib/cloud_party/nodes/dns_records
|
6
|
+
# Created: 9/14/19
|
7
|
+
#
|
8
|
+
# License is in project root, MIT License is in use.
|
9
|
+
require 'cloud_party/context'
|
10
|
+
require 'cloud_party/responses'
|
11
|
+
module CloudParty
|
12
|
+
module Nodes
|
13
|
+
class DNSRecords
|
14
|
+
include CloudParty::Context
|
15
|
+
include HTTParty
|
16
|
+
base_uri 'api.cloudflare.com:443/client/v4'
|
17
|
+
headers 'X-Auth-Email' => cfg.email,
|
18
|
+
'X-Auth-Key' => cfg.api_key,
|
19
|
+
'Content-Type' => 'application/json',
|
20
|
+
'User-Agent' => "CloudParty/#{CloudParty::VERSION}"
|
21
|
+
|
22
|
+
def self.id_by_name(zone)
|
23
|
+
options = {
|
24
|
+
match: 'all',
|
25
|
+
name: zone,
|
26
|
+
order: 'name'
|
27
|
+
}
|
28
|
+
if @options.nil?
|
29
|
+
@options = options
|
30
|
+
else
|
31
|
+
@options.merge!(options)
|
32
|
+
end
|
33
|
+
zone = CloudParty::Responses::Zones.new(:get, '/zones', get('/zones', query: @options), @options).result
|
34
|
+
if zone.is_a?(Array)
|
35
|
+
if zone.size > 1
|
36
|
+
raise CloudParty::Errors::ResultError.new()
|
37
|
+
else
|
38
|
+
zone.first.fetch(:id, nil)
|
39
|
+
|
40
|
+
end
|
41
|
+
end
|
42
|
+
|
43
|
+
end
|
44
|
+
def initialize(options = {})
|
45
|
+
super()
|
46
|
+
@options = options
|
47
|
+
end
|
48
|
+
|
49
|
+
def list
|
50
|
+
CloudParty::Responses::DNSRecords.new(:get, '/zones/:id/dns_records', self.class.get("/zones/#{@@zone}/dns_records", @options), @options)
|
51
|
+
end
|
52
|
+
|
53
|
+
def get(id)
|
54
|
+
CloudParty::Responses::DNSRecords.new(:get, '/zones/:id/dns_records', self.class.get("/zones/#{@@zone}/dns_records", @options), @options)
|
55
|
+
end
|
56
|
+
|
57
|
+
def add(type, name, content, opts, zone:)
|
58
|
+
zone_id = nil
|
59
|
+
options = {
|
60
|
+
type: type,
|
61
|
+
name: name,
|
62
|
+
content: content
|
63
|
+
}
|
64
|
+
ttl = opts.fetch('ttl', nil)
|
65
|
+
priority = opts.fetch('priority', nil)
|
66
|
+
proxied = opts.fetch('proxied', nil)
|
67
|
+
options.merge!(ttl: ttl) unless ttl.nil?
|
68
|
+
options.merge!(priority: priority) unless priority.nil?
|
69
|
+
options.merge!(proxied: proxied) unless proxied.nil?
|
70
|
+
if zone
|
71
|
+
zone_options = {
|
72
|
+
match: 'all',
|
73
|
+
name: zone,
|
74
|
+
order: 'name'
|
75
|
+
}
|
76
|
+
zone_id = CloudParty::Responses::Zones.new(:get, '/zones', self.class.get('/zones', query: zone_options), @options).result.first.fetch(:id, nil)
|
77
|
+
elsif self.class.class_variable_defined?(:@@zone)
|
78
|
+
zone_id = @@zone
|
79
|
+
else
|
80
|
+
raise CloudParty::Errors::NoDefinedZoneError.new("neither the keyword 'zone:' nor the class variable @@zone ended up being defined.", nil)
|
81
|
+
end
|
82
|
+
|
83
|
+
CloudParty::Responses::DNSRecords.new(
|
84
|
+
:post,
|
85
|
+
'/zones/:id/dns_records',
|
86
|
+
self.class.post("/zones/#{zone_id}/dns_records", body: options.to_json),
|
87
|
+
@options)
|
88
|
+
end
|
89
|
+
def rem(id, zone: nil)
|
90
|
+
zone_id = id_by_name(zone)
|
91
|
+
CloudParty::Responses::DNSRecords.new(
|
92
|
+
:delete,
|
93
|
+
'/zones/:id/dns_records/:identifier',
|
94
|
+
self.class.delete("/zones/#{zone_id}")
|
95
|
+
)
|
96
|
+
end
|
97
|
+
end
|
98
|
+
end
|
99
|
+
end
|
@@ -39,35 +39,6 @@ module CloudParty
|
|
39
39
|
def get(id)
|
40
40
|
CloudParty::Responses::Zones.new(:get, '/zones/:id', self.class.get("/zones/#{id}"), @options)
|
41
41
|
end
|
42
|
-
|
43
|
-
def add_record(type, name, content, opts, zone:)
|
44
|
-
zone_id = nil
|
45
|
-
options = {
|
46
|
-
type: type,
|
47
|
-
name: name,
|
48
|
-
content: content
|
49
|
-
}
|
50
|
-
ttl = opts.fetch('ttl', nil)
|
51
|
-
priority = opts.fetch('priority', nil)
|
52
|
-
proxied = opts.fetch('proxied', nil)
|
53
|
-
options.merge!(ttl: ttl) unless ttl.nil?
|
54
|
-
options.merge!(priority: priority) unless priority.nil?
|
55
|
-
options.merge!(proxied: proxied) unless proxied.nil?
|
56
|
-
if zone
|
57
|
-
zone_options = {
|
58
|
-
match: 'all',
|
59
|
-
name: zone,
|
60
|
-
order: 'name'
|
61
|
-
}
|
62
|
-
zone_id = CloudParty::Responses::Zones.new(:get, '/zones', get('/zones', query: zone_options), @options).result.first.fetch(:id, nil)
|
63
|
-
end
|
64
|
-
|
65
|
-
CloudParty::Responses::Zones.new(
|
66
|
-
:post,
|
67
|
-
'/zones/',
|
68
|
-
self.class.get("/zones/#{@@zone || zone_id}/dns_records", options),
|
69
|
-
@options)
|
70
|
-
end
|
71
42
|
end
|
72
43
|
end
|
73
44
|
end
|
@@ -10,6 +10,7 @@ module CloudParty
|
|
10
10
|
autoload :Memberships, 'cloud_party/responses/memberships'
|
11
11
|
autoload :IPs, 'cloud_party/responses/ips'
|
12
12
|
autoload :Zones, 'cloud_party/responses/zones'
|
13
|
+
autoload :DNSRecords, 'cloud_party/responses/dns_records'
|
13
14
|
|
14
15
|
module ResponseMethods
|
15
16
|
|
@@ -0,0 +1,189 @@
|
|
1
|
+
require 'cloud_party/responses/nodes/dns_records'
|
2
|
+
require 'cloud_party/exception'
|
3
|
+
require 'cloud_party/exceptions'
|
4
|
+
module CloudParty
|
5
|
+
module Responses
|
6
|
+
# '/zones' endpoint response object
|
7
|
+
class DNSRecords
|
8
|
+
include CloudParty::Response
|
9
|
+
# @raise [CloudParty::APIError] if the library encountered
|
10
|
+
# an error and {#successful?} is false
|
11
|
+
# @raise [CloudParty::UnRecognizedEndpointError] if the library encountered
|
12
|
+
# an unknown endpoint for this class
|
13
|
+
def initialize(method_name, endpoint, response, options)
|
14
|
+
@code = response.code
|
15
|
+
@body = JSON.parse(response.body, symbolize_names: true)
|
16
|
+
@parsed_response = response.parsed_response
|
17
|
+
@success = @body[:success]
|
18
|
+
unless successful?
|
19
|
+
message = <<~MESSAGE
|
20
|
+
Unable to #{method_name.to_s.upcase} to endpoint:
|
21
|
+
#{endpoint}. Inspect CloudParty::APIError#response
|
22
|
+
for further details
|
23
|
+
MESSAGE
|
24
|
+
raise CloudParty::Errors::APIError.new(message, response)
|
25
|
+
end
|
26
|
+
@results = []
|
27
|
+
if endpoint =~ /^\/zones\/:id\/dns_records\/?$/
|
28
|
+
@body[:result].each do |res|
|
29
|
+
@results << CloudParty::Responses::Result.new(res)
|
30
|
+
end
|
31
|
+
elsif endpoint =~ /^\/zones\/:id\/dns_records\/:identifier\/?$/
|
32
|
+
if method_name == :get
|
33
|
+
@results = CloudParty::Responses::Result.new(@body[:result])
|
34
|
+
end
|
35
|
+
else
|
36
|
+
raise Errors::UnRecognizedEndpointError.new(endpoint, self.class)
|
37
|
+
end
|
38
|
+
if endpoint =~ /^\/zones\/:id\/dns_records\/import\/?$/
|
39
|
+
if @body.fetch(:timing, nil)
|
40
|
+
@timing = CloudParty::Responses::Timing.new(@body[:timing])
|
41
|
+
end
|
42
|
+
@errors = []
|
43
|
+
@body[:errors].each do |err|
|
44
|
+
@errors << CloudParty::Responses::Error.new(err)
|
45
|
+
end
|
46
|
+
@messages = []
|
47
|
+
@body[:messages].each do |msg|
|
48
|
+
@messages << CloudParty::Responses::Message.new(msg)
|
49
|
+
end
|
50
|
+
end
|
51
|
+
end
|
52
|
+
|
53
|
+
attr_reader :errors
|
54
|
+
attr_reader :messages
|
55
|
+
attr_reader :results
|
56
|
+
|
57
|
+
def successful?
|
58
|
+
@success
|
59
|
+
end
|
60
|
+
|
61
|
+
alias success successful?
|
62
|
+
|
63
|
+
def result
|
64
|
+
if check_result_type(@body[:result]) == 'Array'
|
65
|
+
CloudParty::Responses::Result.new(@body[:result].first)
|
66
|
+
elsif check_result_type(@body[:result]) == 'Hash'
|
67
|
+
CloudParty::Responses::Result.new(@body[:result])
|
68
|
+
else
|
69
|
+
raise CloudParty::Errors::UnRecognizedResultTypeError.new(@body[:result].class)
|
70
|
+
end
|
71
|
+
end
|
72
|
+
|
73
|
+
def inspect
|
74
|
+
wanted_methods = %i[success messages errors results]
|
75
|
+
our_methods = methods.select do |m|
|
76
|
+
wanted_methods.include? m
|
77
|
+
end
|
78
|
+
outputs = []
|
79
|
+
our_methods.sort.each do |m|
|
80
|
+
outputs << "#{m}=#{send(m)}"
|
81
|
+
end
|
82
|
+
"#<Response: #{outputs.join(', ')}>"
|
83
|
+
end
|
84
|
+
|
85
|
+
def to_s
|
86
|
+
inspect
|
87
|
+
end
|
88
|
+
end
|
89
|
+
|
90
|
+
class Result
|
91
|
+
attr :id, :name, :type, :content, :proxiable, :proxied, :ttl, :locked, :zone_id, :zone_name, :created_on, :modified_on, :meta
|
92
|
+
|
93
|
+
def initialize(result)
|
94
|
+
@result = result
|
95
|
+
@result.each do |k, v|
|
96
|
+
instance_variable_set(:"@#{k}", v) unless %i[created_on modified_on].include?(k)
|
97
|
+
end
|
98
|
+
date_methods = %i[created_on modified_on]
|
99
|
+
date_methods.each do |date|
|
100
|
+
instance_variable_set(:"@#{date}", DateTime.parse(@result[date]))
|
101
|
+
end
|
102
|
+
end
|
103
|
+
|
104
|
+
|
105
|
+
def inspect
|
106
|
+
unchanged = %i[proxiable proxied locked]
|
107
|
+
strings = %i[id name type content zone_id zone_name]
|
108
|
+
date_methods = %i[created_on modified_on]
|
109
|
+
outputs = []
|
110
|
+
unchanged.each do |m|
|
111
|
+
outputs << "#{m}=#{send(m)}"
|
112
|
+
end
|
113
|
+
strings.each do |string|
|
114
|
+
outputs << "#{string}='#{send(string)}'"
|
115
|
+
end
|
116
|
+
date_methods.each do |date|
|
117
|
+
outputs << "#{date}=<#{send(date)}>"
|
118
|
+
end
|
119
|
+
"#<Result #{outputs.join(', ')}>"
|
120
|
+
end
|
121
|
+
|
122
|
+
def to_s
|
123
|
+
inspect
|
124
|
+
end
|
125
|
+
end
|
126
|
+
class Error
|
127
|
+
def initialize(error)
|
128
|
+
@error = error
|
129
|
+
@code = error.fetch(:code, nil)
|
130
|
+
@message = error.fetch(:message, nil)
|
131
|
+
end
|
132
|
+
|
133
|
+
attr_reader :code
|
134
|
+
|
135
|
+
attr_reader :message
|
136
|
+
|
137
|
+
def inspect
|
138
|
+
to_s
|
139
|
+
end
|
140
|
+
|
141
|
+
def to_s
|
142
|
+
wanted_methods = %i[code message]
|
143
|
+
our_methods = methods.select do |m|
|
144
|
+
wanted_methods.include? m
|
145
|
+
end
|
146
|
+
outputs = []
|
147
|
+
our_methods.each do |m|
|
148
|
+
outputs << "#{m}=#{send(m)}"
|
149
|
+
end
|
150
|
+
"#<Error: #{output.join(', ')}>"
|
151
|
+
end
|
152
|
+
end
|
153
|
+
class Message
|
154
|
+
def initialize(message)
|
155
|
+
@message = message
|
156
|
+
end
|
157
|
+
|
158
|
+
def inspect
|
159
|
+
to_s
|
160
|
+
end
|
161
|
+
|
162
|
+
def to_s
|
163
|
+
@messages.join(', ')
|
164
|
+
end
|
165
|
+
end
|
166
|
+
class Timing
|
167
|
+
attr_reader :start_time, :end_time, :process_time
|
168
|
+
|
169
|
+
def initialize(hsh)
|
170
|
+
@entries = []
|
171
|
+
hsh.each do |key, value|
|
172
|
+
@entries << "#{key}=#{value}"
|
173
|
+
end
|
174
|
+
start_time = DateTime.iso8601(hsh.dig(:start_time))
|
175
|
+
end_time = DateTime.iso8601(hsh.dig(:end_time))
|
176
|
+
process_time = hsh.dig(:process_time).to_i
|
177
|
+
|
178
|
+
end
|
179
|
+
|
180
|
+
def to_s
|
181
|
+
"#<Timing: #{@entries}>"
|
182
|
+
end
|
183
|
+
|
184
|
+
def inspect
|
185
|
+
to_s
|
186
|
+
end
|
187
|
+
end
|
188
|
+
end
|
189
|
+
end
|
@@ -0,0 +1,25 @@
|
|
1
|
+
module CloudParty
|
2
|
+
module Responses
|
3
|
+
module Node
|
4
|
+
class Meta
|
5
|
+
attr_reader :auto_added, :managed_by_apps, :managed_by_argo_tunnel
|
6
|
+
def initialize(hsh)
|
7
|
+
@entries = []
|
8
|
+
hsh.each do |key, value|
|
9
|
+
@entries << "#{key}=#{value}"
|
10
|
+
end
|
11
|
+
auto_added = DateTime.iso8601(hsh.dig(:auto_added))
|
12
|
+
managed_by_apps = DateTime.iso8601(hsh.dig(:managed_by_apps))
|
13
|
+
managed_by_argo_tunnel = hsh.dig(:managed_by_argo_tunnel)
|
14
|
+
|
15
|
+
end
|
16
|
+
def to_s
|
17
|
+
"#<Meta: #{@entries}>"
|
18
|
+
end
|
19
|
+
def inspect
|
20
|
+
to_s
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
@@ -26,13 +26,13 @@ module CloudParty
|
|
26
26
|
raise CloudParty::Errors::APIError.new(message, response)
|
27
27
|
end
|
28
28
|
@results = []
|
29
|
-
|
30
|
-
when '/zones'
|
31
|
-
|
29
|
+
if endpoint =~ /^\/zones\/?$/
|
32
30
|
@body[:result].each do |res|
|
33
31
|
@results << CloudParty::Responses::Result.new(res)
|
34
32
|
end
|
35
|
-
|
33
|
+
elsif endpoint =~ /^\/zones\/:id\/dns_records\/?$/
|
34
|
+
raise CloudParty::Errors::RequestError.new("Use CloudParty::Nodes::DNSRecords for this endpoint.", method_name, endpoint, @code, nil)
|
35
|
+
elsif endpoint =~ /^\/zones\/:id\/?$/
|
36
36
|
@result = CloudParty::Responses::Result.new(@body[:result])
|
37
37
|
@results << @result
|
38
38
|
else
|
@@ -81,14 +81,14 @@ module CloudParty
|
|
81
81
|
end
|
82
82
|
end
|
83
83
|
class Result
|
84
|
-
attr_reader :id, :name, :development_mode, :original_registar, :original_dnshost, :status, :paused, :type, :permissions
|
84
|
+
attr_reader :id, :name, :development_mode, :original_registar, :original_dnshost, :status, :paused, :type, :permissions, :content
|
85
85
|
def initialize(result)
|
86
86
|
@result = result
|
87
87
|
@result.each do |k, v|
|
88
|
-
@plan = CloudParty::Responses::Node::Plan.new(@result.dig(:plan))
|
89
|
-
@plan_pending = CloudParty::Responses::Node::PlanPending.new(@result.dig(:plan_pending))
|
90
|
-
@account = CloudParty::Responses::Node::Account.new(@result.dig(:account))
|
91
|
-
@permissions = CloudParty::Responses::Node::Permissions.new(@result.dig(:permissions))
|
88
|
+
@plan = CloudParty::Responses::Node::Plan.new(@result.dig(:plan)) if @result.fetch(:plan, nil)
|
89
|
+
@plan_pending = CloudParty::Responses::Node::PlanPending.new(@result.dig(:plan_pending)) if @result.fetch(:plan_pending, nil)
|
90
|
+
@account = CloudParty::Responses::Node::Account.new(@result.dig(:account)) if @result.fetch(:account, nil)
|
91
|
+
@permissions = CloudParty::Responses::Node::Permissions.new(@result.dig(:permissions)) if @result.fetch(:permissions, nil)
|
92
92
|
instance_variable_set(:"@#{k}", v) unless %i[plan plan_pending account permissions].include?(k)
|
93
93
|
end
|
94
94
|
end
|
data/lib/cloud_party/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: cloud_party
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.6
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Ken Spencer
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2019-09-
|
11
|
+
date: 2019-09-14 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -210,16 +210,20 @@ files:
|
|
210
210
|
- lib/cloud_party/exceptions/un_recognized_result_type_error.rb
|
211
211
|
- lib/cloud_party/nodes.rb
|
212
212
|
- lib/cloud_party/nodes/accounts.rb
|
213
|
+
- lib/cloud_party/nodes/dns_records.rb
|
213
214
|
- lib/cloud_party/nodes/ips.rb
|
214
215
|
- lib/cloud_party/nodes/memberships.rb
|
215
216
|
- lib/cloud_party/nodes/zones.rb
|
216
217
|
- lib/cloud_party/response.rb
|
217
218
|
- lib/cloud_party/responses.rb
|
218
219
|
- lib/cloud_party/responses/accounts.rb
|
220
|
+
- lib/cloud_party/responses/dns_records.rb
|
219
221
|
- lib/cloud_party/responses/ips.rb
|
220
222
|
- lib/cloud_party/responses/memberships.rb
|
221
223
|
- lib/cloud_party/responses/nodes.rb
|
222
224
|
- lib/cloud_party/responses/nodes/accounts.rb
|
225
|
+
- lib/cloud_party/responses/nodes/dns_records.rb
|
226
|
+
- lib/cloud_party/responses/nodes/dns_records/meta.rb
|
223
227
|
- lib/cloud_party/responses/nodes/memberships.rb
|
224
228
|
- lib/cloud_party/responses/nodes/memberships/account.rb
|
225
229
|
- lib/cloud_party/responses/nodes/memberships/permissions.rb
|