mystro-common 0.3.0 → 0.3.1.alpha2

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,66 +0,0 @@
1
- require 'fog/core/model'
2
-
3
- module Fog
4
- module DNS
5
- class Dynect
6
-
7
- class Record < Fog::Model
8
- extend Fog::Deprecation
9
-
10
- identity :id
11
- attribute :name, :aliases => [:fqdn, 'fqdn']
12
- attribute :rdata
13
- attribute :serial_style
14
- attribute :ttl
15
- attribute :type, :aliases => 'record_type'
16
-
17
- def destroy
18
- requires :identity, :name, :type, :zone
19
- service.delete_record(type, zone.identity, name, identity)
20
- true
21
- end
22
-
23
- def save
24
- requires :name, :type, :rdata, :zone
25
-
26
- options = {
27
- :ttl => ttl
28
- }
29
- options.delete_if {|key, value| value.nil?}
30
-
31
- data = service.post_record(type, zone.identity, name, rdata, options).body['data']
32
- # avoid overwriting zone object with zone string
33
- data = data.reject {|key, value| key == 'zone'}
34
- merge_attributes(data)
35
-
36
- zone.publish
37
- records = service.get_record(type, zone.identity, name).body['data']
38
- # data in format ['/REST/xRecord/domain/fqdn/identity]
39
- records.map! do |record|
40
- tokens = record.split('/')
41
- {
42
- :identity => tokens.last,
43
- :type => tokens[2][0...-6] # everything before 'Record'
44
- }
45
- end
46
- record = records.detect {|record| record[:type] == type}
47
- merge_attributes(record)
48
-
49
- true
50
- end
51
-
52
- def zone
53
- @zone
54
- end
55
-
56
- private
57
-
58
- def zone=(new_zone)
59
- @zone = new_zone
60
- end
61
-
62
- end
63
-
64
- end
65
- end
66
- end
@@ -1,60 +0,0 @@
1
- require 'fog/core/model'
2
- require 'fog/ext/dynect/models/dns/records'
3
-
4
- module Fog
5
- module DNS
6
- class Dynect
7
-
8
- class Zone < Fog::Model
9
-
10
- identity :domain
11
-
12
- attribute :domain, :aliases => 'zone'
13
- attribute :email, :aliases => 'rname'
14
- attribute :serial
15
- attribute :serial_style
16
- attribute :ttl
17
- attribute :type, :aliases => 'zone_type'
18
-
19
- def initialize(attributes={})
20
- super
21
- end
22
-
23
- def destroy
24
- requires :domain
25
- service.delete_zone(domain)
26
- true
27
- end
28
-
29
- undef_method :domain=
30
- def domain=(new_domain)
31
- attributes[:domain] = new_domain.split('/').last
32
- end
33
-
34
- def publish
35
- requires :identity
36
- data = service.put_zone(identity, 'publish' => true)
37
- true
38
- end
39
-
40
- def records
41
- @records ||= Fog::DNS::Dynect::Records.new(:zone => self, :service => service)
42
- end
43
-
44
- def nameservers
45
- raise 'nameservers Not Implemented'
46
- end
47
-
48
- def save
49
- self.ttl ||= 3600
50
- requires :domain, :email, :ttl
51
- data = service.post_zone(email, ttl, domain).body['data']
52
- merge_attributes(data)
53
- true
54
- end
55
-
56
- end
57
-
58
- end
59
- end
60
- end
@@ -1,29 +0,0 @@
1
- require 'fog/core/collection'
2
- require 'fog/ext/dynect/models/dns/zone'
3
-
4
- module Fog
5
- module DNS
6
- class Dynect
7
-
8
- class Zones < Fog::Collection
9
-
10
- model Fog::DNS::Dynect::Zone
11
-
12
- def all
13
- data = service.get_zone.body['data'].map do |zone|
14
- { :domain => zone }
15
- end
16
- load(data)
17
- end
18
-
19
- def get(zone_id)
20
- new(service.get_zone('zone' => zone_id).body['data'])
21
- rescue Excon::Errors::NotFound
22
- nil
23
- end
24
-
25
- end
26
-
27
- end
28
- end
29
- end
@@ -1,56 +0,0 @@
1
- module Fog
2
- module DNS
3
- class Dynect
4
- class Real
5
-
6
- # Delete a record
7
- #
8
- # ==== Parameters
9
- # * type<~String> - type of record in ['AAAA', 'ANY', 'A', 'CNAME', 'DHCID', 'DNAME', 'DNSKEY', 'DS', 'KEY', 'LOC', 'MX', 'NSA', 'NS', 'PTR', 'PX', 'RP', 'SOA', 'SPF', 'SRV', 'SSHFP', 'TXT']
10
- # * zone<~String> - zone of record
11
- # * fqdn<~String> - fqdn of record
12
- # * record_id<~String> - id of record
13
-
14
- def delete_record(type, zone, fqdn, record_id)
15
- request(
16
- :expects => 200,
17
- :idempotent => true,
18
- :method => :delete,
19
- :path => ["#{type.to_s.upcase}Record", zone, fqdn, record_id].join('/')
20
- )
21
- end
22
- end
23
-
24
- class Mock
25
- def delete_record(type, zone, fqdn, record_id)
26
- raise Fog::DNS::Dynect::NotFound unless zone = self.data[:zones][zone]
27
-
28
- raise Fog::DNS::Dynect::NotFound unless zone[:records][type].find { |record| record[:fqdn] == fqdn && record[:record_id] == record_id.to_i }
29
-
30
- zone[:records_to_delete] << {
31
- :type => type,
32
- :fqdn => fqdn,
33
- :record_id => record_id.to_i
34
- }
35
-
36
- response = Excon::Response.new
37
- response.status = 200
38
-
39
- response.body = {
40
- "status" => "success",
41
- "data" => {},
42
- "job_id" => Fog::Dynect::Mock.job_id,
43
- "msgs" => [{
44
- "INFO" => "delete: Record will be deleted on zone publish",
45
- "SOURCE" => "BLL",
46
- "ERR_CD" => nil,
47
- "LVL" => "INFO"
48
- }]
49
- }
50
-
51
- response
52
- end
53
- end
54
- end
55
- end
56
- end
@@ -1,42 +0,0 @@
1
- module Fog
2
- module DNS
3
- class Dynect
4
- class Real
5
-
6
- # Delete a zone
7
- #
8
- # ==== Parameters
9
- # * zone<~String> - zone to host
10
-
11
- def delete_zone(zone)
12
- request(
13
- :expects => 200,
14
- :method => :delete,
15
- :path => "Zone/#{zone}"
16
- )
17
- end
18
- end
19
-
20
- class Mock
21
- def delete_zone(zone)
22
- self.data[:zones].delete(zone)
23
-
24
- response = Excon::Response.new
25
- response.status = 200
26
- response.body = {
27
- "status" => "success",
28
- "data" => {},
29
- "job_id" => Fog::Dynect::Mock.job_id,
30
- "msgs" => [{
31
- "ERR_CD" => '',
32
- "INFO" => '',
33
- "LVL" => '',
34
- "SOURCE" => ''
35
- }]
36
- }
37
- response
38
- end
39
- end
40
- end
41
- end
42
- end
@@ -1,56 +0,0 @@
1
- module Fog
2
- module DNS
3
- class Dynect
4
- class Real
5
-
6
- # Get one or more node lists
7
- #
8
- # ==== Parameters
9
- # * zone<~String> - zone to lookup node lists for
10
- # * options<~Hash>
11
- # * fqdn<~String> - fully qualified domain name of node to lookup
12
-
13
- def get_all_records(zone, options = {})
14
- requested_fqdn = options['fqdn'] || options[:fqdn]
15
- request(
16
- :expects => 200,
17
- :idempotent => true,
18
- :method => :get,
19
- :path => ['AllRecord', zone, requested_fqdn].compact.join('/')
20
- )
21
- end
22
- end
23
-
24
- class Mock
25
- def get_all_records(zone, options = {})
26
- raise Fog::DNS::Dynect::NotFound unless zone = self.data[:zones][zone]
27
-
28
- response = Excon::Response.new
29
- response.status = 200
30
-
31
- data = [zone[:zone]]
32
-
33
- if fqdn = options[:fqdn]
34
- data = data | zone[:records].collect { |type, records| records.select { |record| record[:fqdn] == fqdn } }.flatten.compact
35
- else
36
- data = data | zone[:records].collect { |type, records| records.collect { |record| record[:fqdn] } }.flatten
37
- end
38
-
39
- response.body = {
40
- "status" => "success",
41
- "data" => data,
42
- "job_id" => Fog::Dynect::Mock.job_id,
43
- "msgs" => [{
44
- "INFO" => "get_tree: Here is your zone tree",
45
- "SOURCE" => "BLL",
46
- "ERR_CD" => nil,
47
- "LVL" => "INFO"
48
- }]
49
- }
50
-
51
- response
52
- end
53
- end
54
- end
55
- end
56
- end
@@ -1,56 +0,0 @@
1
- module Fog
2
- module DNS
3
- class Dynect
4
- class Real
5
-
6
- # Get one or more node lists
7
- #
8
- # ==== Parameters
9
- # * zone<~String> - zone to lookup node lists for
10
- # * options<~Hash>
11
- # * fqdn<~String> - fully qualified domain name of node to lookup
12
-
13
- def get_node_list(zone, options = {})
14
- requested_fqdn = options['fqdn'] || options[:fqdn]
15
- request(
16
- :expects => 200,
17
- :idempotent => true,
18
- :method => :get,
19
- :path => ['AllRecord', zone, requested_fqdn].compact.join('/')
20
- )
21
- end
22
- end
23
-
24
- class Mock
25
- def get_node_list(zone, options = {})
26
- raise Fog::DNS::Dynect::NotFound unless zone = self.data[:zones][zone]
27
-
28
- response = Excon::Response.new
29
- response.status = 200
30
-
31
- data = [zone[:zone]]
32
-
33
- if fqdn = options[:fqdn]
34
- data = data | zone[:records].collect { |type, records| records.select { |record| record[:fqdn] == fqdn } }.flatten.compact
35
- else
36
- data = data | zone[:records].collect { |type, records| records.collect { |record| record[:fqdn] } }.flatten
37
- end
38
-
39
- response.body = {
40
- "status" => "success",
41
- "data" => data,
42
- "job_id" => Fog::Dynect::Mock.job_id,
43
- "msgs" => [{
44
- "INFO" => "get_tree: Here is your zone tree",
45
- "SOURCE" => "BLL",
46
- "ERR_CD" => nil,
47
- "LVL" => "INFO"
48
- }]
49
- }
50
-
51
- response
52
- end
53
- end
54
- end
55
- end
56
- end
@@ -1,85 +0,0 @@
1
- module Fog
2
- module DNS
3
- class Dynect
4
- class Real
5
-
6
- # List records of a given type
7
- #
8
- # ==== Parameters
9
- # * type<~String> - type of record in ['AAAA', 'ANY', 'A', 'CNAME', 'DHCID', 'DNAME', 'DNSKEY', 'DS', 'KEY', 'LOC', 'MX', 'NSA', 'NS', 'PTR', 'PX', 'RP', 'SOA', 'SPF', 'SRV', 'SSHFP', 'TXT']
10
- # * zone<~String> - name of zone to lookup
11
- # * fqdn<~String> - name of fqdn to lookup
12
- # * options<~Hash>:
13
- # * record_id<~String> - id of record
14
-
15
- def get_record(type, zone, fqdn, options = {})
16
- path = ["#{type.to_s.upcase}Record", zone, fqdn, options['record_id']].compact.join('/')
17
- request(
18
- :expects => 200,
19
- :idempotent => true,
20
- :method => :get,
21
- :path => path
22
- )
23
- end
24
- end
25
-
26
- class Mock
27
- def get_record(type, zone, fqdn, options = {})
28
- raise ArgumentError unless [
29
- 'AAAA', 'ANY', 'A', 'CNAME',
30
- 'DHCID', 'DNAME', 'DNSKEY',
31
- 'DS', 'KEY', 'LOC', 'MX',
32
- 'NSA', 'NS', 'PTR', 'PX',
33
- 'RP', 'SOA', 'SPF', 'SRV',
34
- 'SSHFP', 'TXT'
35
- ].include? type
36
- raise Fog::DNS::Dynect::NotFound unless zone = self.data[:zones][zone]
37
-
38
- response = Excon::Response.new
39
- response.status = 200
40
-
41
- if record_id = options['record_id']
42
- raise Fog::DNS::Dynect::NotFound unless record = zone[:records][type].find { |record| record[:record_id] == record_id.to_i }
43
- response.body = {
44
- "status" => "success",
45
- "data" => {
46
- "zone" => record[:zone][:zone],
47
- "ttl" => record[:ttl],
48
- "fqdn" => record[:fqdn],
49
- "record_type" => type,
50
- "rdata" => record[:rdata],
51
- "record_id" => record[:record_id]
52
- },
53
- "job_id" => Fog::Dynect::Mock.job_id,
54
- "msgs" => [{
55
- "INFO" => "get: Found the record",
56
- "SOURCE" => "API-B",
57
- "ERR_CD" => nil,
58
- "LVL" => "INFO"
59
- }]
60
- }
61
- else
62
- records = if type == "ANY"
63
- zone[:records].values.flatten.select { |record| record[:fqdn] == fqdn }
64
- else
65
- zone[:records][type].select { |record| record[:fqdn] == fqdn }
66
- end
67
- response.body = {
68
- "status" => "success",
69
- "data" => records.collect { |record| "/REST/#{record[:type]}Record/#{record[:zone][:zone]}/#{record[:fqdn]}/#{record[:record_id]}" },
70
- "job_id" => Fog::Dynect::Mock.job_id,
71
- "msgs" => [{
72
- "INFO" => "detail: Found #{records.size} record",
73
- "SOURCE" => "BLL",
74
- "ERR_CD" => nil,
75
- "LVL" => "INFO"
76
- }]
77
- }
78
- end
79
-
80
- response
81
- end
82
- end
83
- end
84
- end
85
- end
@@ -1,58 +0,0 @@
1
- module Fog
2
- module DNS
3
- class Dynect
4
- class Real
5
-
6
- # Get one or more zones
7
- #
8
- # ==== Parameters
9
- # * options<~Hash>:
10
- # * zone<~String> - name of zone to lookup, or omit to return list of zones
11
-
12
- def get_zone(options = {})
13
- request(
14
- :expects => 200,
15
- :idempotent => true,
16
- :method => :get,
17
- :path => ['Zone', options['zone']].compact.join('/')
18
- )
19
- end
20
- end
21
-
22
- class Mock
23
- def get_zone(options = {})
24
- if options['zone']
25
- raise Fog::DNS::Dynect::NotFound unless zone = self.data[:zones][options['zone']]
26
- data = {
27
- "zone_type" => zone[:zone_type],
28
- "serial_style" => zone[:serial_style],
29
- "serial" => zone[:serial],
30
- "zone" => zone[:zone]
31
- }
32
- info = "get: Your zone, #{zone[:zone]}"
33
- else
34
- data = self.data[:zones].collect { |zone, data| "/REST/Zone/#{zone}/" }
35
- info = "get: Your #{data.size} zones"
36
- end
37
-
38
- response = Excon::Response.new
39
- response.status = 200
40
-
41
- response.body = {
42
- "status" => "success",
43
- "data" => data,
44
- "job_id" => Fog::Dynect::Mock.job_id,
45
- "msgs" => [{
46
- "INFO" => info,
47
- "SOURCE" => "BLL",
48
- "ERR_CD" => nil,
49
- "LVL" => "INFO"
50
- }]
51
- }
52
-
53
- response
54
- end
55
- end
56
- end
57
- end
58
- end
@@ -1,72 +0,0 @@
1
- module Fog
2
- module DNS
3
- class Dynect
4
- class Real
5
-
6
- # Create a record
7
- #
8
- # ==== Parameters
9
- # * type<~String> - type of record in ['AAAA', 'ANY', 'A', 'CNAME', 'DHCID', 'DNAME', 'DNSKEY', 'DS', 'KEY', 'LOC', 'MX', 'NSA', 'NS', 'PTR', 'PX', 'RP', 'SOA', 'SPF', 'SRV', 'SSHFP', 'TXT']
10
- # * zone<~String> - zone of record
11
- # * rdata<~Hash> - rdata for record
12
- # * options<~Hash>: (options vary by type, listing below includes common parameters)
13
- # * ttl<~Integer> - ttl for the record, defaults to zone ttl
14
-
15
- def post_record(type, zone, fqdn, rdata, options = {})
16
- options.merge!('rdata' => rdata)
17
- request(
18
- :body => Fog::JSON.encode(options),
19
- :expects => 200,
20
- :method => :post,
21
- :path => ["#{type.to_s.upcase}Record", zone, fqdn].join('/')
22
- )
23
- end
24
- end
25
-
26
- class Mock
27
- def post_record(type, zone, fqdn, rdata, options = {})
28
- raise Fog::DNS::Dynect::NotFound unless zone = self.data[:zones][zone]
29
-
30
- records = zone[:records]
31
- record_id = zone[:next_record_id]
32
- zone[:next_record_id] += 1
33
-
34
- record = {
35
- :type => type,
36
- :zone => zone,
37
- :fqdn => fqdn,
38
- :rdata => rdata,
39
- :ttl => options[:ttl] || zone[:ttl],
40
- :record_id => record_id
41
- }
42
-
43
- records[type] << record
44
-
45
- response = Excon::Response.new
46
- response.status = 200
47
-
48
- response.body = {
49
- "status" => "success",
50
- "data" => {
51
- "zone" => record[:zone][:zone],
52
- "ttl" => record[:ttl],
53
- "fqdn" => record[:fqdn],
54
- "record_type" => record[:type],
55
- "rdata" => record[:rdata],
56
- "record_id" => record[:record_id]
57
- },
58
- "job_id" => Fog::Dynect::Mock.job_id,
59
- "msgs" => [{
60
- "INFO"=>"add: Record added",
61
- "SOURCE"=>"BLL",
62
- "ERR_CD"=>nil,
63
- "LVL"=>"INFO"
64
- }]
65
- }
66
-
67
- response
68
- end
69
- end
70
- end
71
- end
72
- end
@@ -1,44 +0,0 @@
1
- module Fog
2
- module DNS
3
- class Dynect
4
- class Real
5
-
6
- def post_session
7
- request(
8
- :expects => 200,
9
- :idempotent => true,
10
- :method => :post,
11
- :path => "Session",
12
- :body => Fog::JSON.encode({
13
- :customer_name => @dynect_customer,
14
- :user_name => @dynect_username,
15
- :password => @dynect_password
16
- })
17
- )
18
- end
19
- end
20
-
21
- class Mock
22
- def post_session
23
- response = Excon::Response.new
24
- response.status = 200
25
- response.body = {
26
- "status" => "success",
27
- "data" => {
28
- "token" => auth_token,
29
- "version" => Fog::Dynect::Mock.version
30
- },
31
- "job_id" => Fog::Dynect::Mock.job_id,
32
- "msgs"=>[{
33
- "INFO"=>"login: Login successful",
34
- "SOURCE"=>"BLL",
35
- "ERR_CD"=>nil,
36
- "LVL"=>"INFO"
37
- }]
38
- }
39
- response
40
- end
41
- end
42
- end
43
- end
44
- end