Class: Gcloud::Dns::Change
- Inherits:
-
Object
- Object
- Gcloud::Dns::Change
- Defined in:
- lib/gcloud/dns/change.rb,
lib/gcloud/dns/change/list.rb
Overview
# DNS Change
Represents a request containing additions or deletions or records. Additions and deletions can be done in bulk, in a single atomic transaction, and take effect at the same time in each authoritative DNS server.
Defined Under Namespace
Classes: List
Instance Attribute Summary collapse
Class Method Summary collapse
Instance Method Summary collapse
-
#additions ⇒ Object
The records added in this change request.
-
#deletions ⇒ Object
The records removed in this change request.
-
#done? ⇒ Boolean
Checks if the status is ‘“done”`.
-
#id ⇒ Object
Unique identifier for the resource; defined by the server.
-
#initialize ⇒ Change
constructor
A new instance of Change.
-
#pending? ⇒ Boolean
Checks if the status is ‘“pending”`.
-
#reload! ⇒ Object
(also: #refresh!)
Reloads the change with updated status from the DNS service.
-
#started_at ⇒ Object
The time that this operation was started by the server.
-
#status ⇒ Object
Status of the operation.
-
#wait_until_done! ⇒ Object
Refreshes the change until the status is ‘done`.
Constructor Details
#initialize ⇒ Change
Returns a new instance of Change.
51 52 53 54 |
# File 'lib/gcloud/dns/change.rb', line 51 def initialize @zone = nil @gapi = {} end |
Instance Attribute Details
#gapi ⇒ Object
47 48 49 |
# File 'lib/gcloud/dns/change.rb', line 47 def gapi @gapi end |
#zone ⇒ Object
43 44 45 |
# File 'lib/gcloud/dns/change.rb', line 43 def zone @zone end |
Class Method Details
.from_gapi(gapi, zone) ⇒ Object
147 148 149 150 151 152 |
# File 'lib/gcloud/dns/change.rb', line 147 def self.from_gapi gapi, zone new.tap do |f| f.gapi = gapi f.zone = zone end end |
Instance Method Details
#additions ⇒ Object
The records added in this change request.
66 67 68 |
# File 'lib/gcloud/dns/change.rb', line 66 def additions Array(@gapi["additions"]).map { |gapi| Record.from_gapi gapi } end |
#deletions ⇒ Object
The records removed in this change request.
73 74 75 |
# File 'lib/gcloud/dns/change.rb', line 73 def deletions Array(@gapi["deletions"]).map { |gapi| Record.from_gapi gapi } end |
#done? ⇒ Boolean
Checks if the status is ‘“done”`.
86 87 88 89 |
# File 'lib/gcloud/dns/change.rb', line 86 def done? return false if status.nil? "done".casecmp(status).zero? end |
#id ⇒ Object
Unique identifier for the resource; defined by the server.
59 60 61 |
# File 'lib/gcloud/dns/change.rb', line 59 def id @gapi["id"] end |
#pending? ⇒ Boolean
Checks if the status is ‘“pending”`.
93 94 95 96 |
# File 'lib/gcloud/dns/change.rb', line 93 def pending? return false if status.nil? "pending".casecmp(status).zero? end |
#reload! ⇒ Object Also known as: refresh!
Reloads the change with updated status from the DNS service.
109 110 111 112 113 114 115 116 117 |
# File 'lib/gcloud/dns/change.rb', line 109 def reload! ensure_connection! resp = zone.connection.get_change @zone.id, id if resp.success? @gapi = resp.data else fail ApiError.from_response(resp) end end |
#started_at ⇒ Object
The time that this operation was started by the server.
101 102 103 104 105 |
# File 'lib/gcloud/dns/change.rb', line 101 def started_at Time.parse @gapi["startTime"] rescue nil end |
#status ⇒ Object
Status of the operation. Values are ‘“done”` and `“pending”`.
80 81 82 |
# File 'lib/gcloud/dns/change.rb', line 80 def status @gapi["status"] end |
#wait_until_done! ⇒ Object
Refreshes the change until the status is ‘done`. The delay between refreshes will incrementally increase.
135 136 137 138 139 140 141 142 143 |
# File 'lib/gcloud/dns/change.rb', line 135 def wait_until_done! backoff = ->(retries) { sleep 2 * retries + 5 } retries = 0 until done? backoff.call retries retries += 1 reload! end end |