File: record.rb

package info (click to toggle)
ruby-fog-google 1.19.0-3
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 2,568 kB
  • sloc: ruby: 16,775; makefile: 3
file content (108 lines) | stat: -rw-r--r-- 3,368 bytes parent folder | download | duplicates (4)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
module Fog
  module DNS
    class Google
      ##
      # Resource Record Sets resource
      #
      # @see https://cloud.google.com/dns/api/v1/resourceRecordSets
      class Record < Fog::Model
        identity :name

        attribute :kind
        attribute :type
        attribute :ttl
        attribute :rrdatas

        ##
        # Deletes a previously created Resource Record Sets resource
        #
        # @param [Boolean] async If the operation must be asyncronous (true by default)
        # @return [Boolean] If the Resource Record Set has been deleted
        def destroy(async = true)
          requires :name, :type, :ttl, :rrdatas

          data = service.create_change(zone.id, [], [resource_record_set_format])
          change = Fog::DNS::Google::Changes
                   .new(:service => service, :zone => zone)
                   .get(data.id)
          change.wait_for { ready? } unless async
          true
        end

        ##
        # Modifies a previously created Resource Record Sets resource
        #
        # @param [Hash] new_attributes Resource Record Set new attributes
        # @return [Fog::DNS::Google::Record] Resource Record Sets resource
        def modify(new_attributes)
          requires :name, :type, :ttl, :rrdatas

          deletions = resource_record_set_format
          merge_attributes(new_attributes)

          data = service.create_change(zone.id, [resource_record_set_format], [deletions])
          change = Fog::DNS::Google::Changes
                   .new(:service => service, :zone => zone)
                   .get(data.id)
          new_attributes.key?(:async) ? async = new_attributes[:async] : async = true
          change.wait_for { ready? } unless async
          self
        end

        ##
        # Reloads a Resource Record Sets resource
        #
        # @return [Fog::DNS::Google::Record] Resource Record Sets resource
        def reload
          requires :name, :type

          data = collection.get(name, type).to_h
          merge_attributes(data.attributes)
          self
        end

        ##
        # Creates a new Resource Record Sets resource
        #
        # @return [Fog::DNS::Google::Record] Resource Record Sets resource
        def save
          requires :name, :type, :ttl, :rrdatas

          data = service.create_change(zone.id, [resource_record_set_format], [])
          change = Fog::DNS::Google::Changes
                   .new(:service => service, :zone => zone)
                   .get(data.id)
          change.wait_for { ready? }
          self
        end

        ##
        # Returns the Managed Zone of the Resource Record Sets resource
        #
        # @return [Fog::DNS::Google::Zone] Managed Zone of the Resource Record Sets resource
        attr_reader :zone

        private

        ##
        # Assigns the Managed Zone of the Resource Record Sets resource
        #
        # @param [Fog::DNS::Google::Zone] new_zone Managed Zone of the Resource Record Sets resource
        attr_writer :zone

        ##
        # Resource Record Sets resource representation
        #
        def resource_record_set_format
          {
            :kind => "dns#resourceRecordSet",
            :name => name,
            :type => type,
            :ttl  => ttl,
            :rrdatas => rrdatas
          }
        end
      end
    end
  end
end