class Dennis::Group
Public Class Methods
all(client, page: nil, per_page: nil)
click to toggle source
# File lib/dennis/group.rb, line 11 def all(client, page: nil, per_page: nil) request = client.api.create_request(:get, 'groups') request.arguments[:page] = page if page request.arguments[:per_page] = per_page if per_page PaginatedArray.create(request.perform.hash, 'groups') do |hash| new(client, hash) end end
create(client, name:, external_reference: nil)
click to toggle source
# File lib/dennis/group.rb, line 28 def create(client, name:, external_reference: nil) request = client.api.create_request(:post, 'groups') request.arguments[:properties] = { name: name, external_reference: external_reference } Group.new(client, request.perform.hash['group']) rescue ApiaClient::RequestError => e raise ValidationError, e.detail['errors'] if e.code == 'validation_error' raise end
find_by(client, field, value)
click to toggle source
# File lib/dennis/group.rb, line 20 def find_by(client, field, value) request = client.api.create_request(:get, 'groups/:group') request.arguments[:group] = { field => value } Group.new(client, request.perform.hash['group']) rescue ApiaClient::RequestError => e e.code == 'group_not_found' ? nil : raise end
new(client, hash)
click to toggle source
# File lib/dennis/group.rb, line 40 def initialize(client, hash) @client = client @hash = hash end
Public Instance Methods
create_or_update_zone(**properties)
click to toggle source
# File lib/dennis/group.rb, line 81 def create_or_update_zone(**properties) Zone.create_or_update(@client, group: { id: id }, **properties) end
create_zone(**properties)
click to toggle source
# File lib/dennis/group.rb, line 77 def create_zone(**properties) Zone.create(@client, group: { id: id }, **properties) end
created_at()
click to toggle source
# File lib/dennis/group.rb, line 57 def created_at return nil if @hash['created_at'].nil? return @hash['created_at'] if @hash['created_at'].is_a?(Time) Time.at(@hash['created_at']) end
delete()
click to toggle source
# File lib/dennis/group.rb, line 113 def delete req = @client.api.create_request(:delete, 'groups/:group') req.arguments['group'] = { id: id } req.perform true end
external_reference()
click to toggle source
# File lib/dennis/group.rb, line 53 def external_reference @hash['external_reference'] end
id()
click to toggle source
# File lib/dennis/group.rb, line 45 def id @hash['id'] end
name()
click to toggle source
# File lib/dennis/group.rb, line 49 def name @hash['name'] end
nameservers()
click to toggle source
# File lib/dennis/group.rb, line 71 def nameservers @nameservers ||= @hash['nameservers'].map do |hash| Nameserver.new(@client, hash) end end
tagged_records(tags)
click to toggle source
# File lib/dennis/group.rb, line 97 def tagged_records(tags) Record.all_by_tag(@client, tags, group: { id: id }) end
update(properties)
click to toggle source
# File lib/dennis/group.rb, line 101 def update(properties) req = @client.api.create_request(:patch, 'groups/:group') req.arguments['group'] = { id: id } req.arguments['properties'] = properties @hash = req.perform.hash['group'] true rescue ApiaClient::RequestError => e raise ValidationError, e.detail['errors'] if e.code == 'validation_error' raise end
updated_at()
click to toggle source
# File lib/dennis/group.rb, line 64 def updated_at return nil if @hash['updated_at'].nil? return @hash['updated_at'] if @hash['updated_at'].is_a?(Time) Time.at(@hash['updated_at']) end
zone(id, field: :id)
click to toggle source
# File lib/dennis/group.rb, line 89 def zone(id, field: :id) zone = Zone.find_by(@client, field, id) return nil if zone.nil? return nil if zone.group.id != self.id zone end
zones(**options)
click to toggle source
# File lib/dennis/group.rb, line 85 def zones(**options) Zone.all_for_group(@client, { id: id }, **options) end