Class: Hcloud::PrimaryIPResource

Inherits:
AbstractResource show all
Defined in:
lib/hcloud/primary_ip_resource.rb

Instance Attribute Summary

Attributes inherited from AbstractResource

#client

Instance Method Summary collapse

Methods inherited from AbstractResource

#all, bind_to, #each, filter_attributes, #find, #find_by, #initialize, #limit, #order, #page, #pagination, #per_page, resource, resource_class, resource_path, resource_url, #run, #where

Constructor Details

This class inherits a constructor from Hcloud::AbstractResource

Instance Method Details

#[](arg) ⇒ Object



9
10
11
12
13
14
# File 'lib/hcloud/primary_ip_resource.rb', line 9

def [](arg)
  case arg
  when Integer then find_by(id: arg)
  when String then find_by(name: arg)
  end
end

#create(name:, type:, assignee_id: nil, assignee_type: 'server', datacenter: nil, auto_delete: nil, labels: {}) ⇒ Object



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
# File 'lib/hcloud/primary_ip_resource.rb', line 16

def create(
  name:,
  type:,
  assignee_id: nil,
  assignee_type: 'server',
  datacenter: nil,
  auto_delete: nil,
  labels: {}
)
  raise Hcloud::Error::InvalidInput, 'no name given' if name.blank?

  unless %w[ipv4 ipv6].include?(type.to_s)
    raise Hcloud::Error::InvalidInput, 'invalid type given'
  end

  raise Hcloud::Error::InvalidInput, 'no assignee_type given' if assignee_type.blank?

  if assignee_id.nil? && datacenter.nil?
    raise Hcloud::Error::InvalidInput, 'either assignee_id or datacenter must be given'
  end

  prepare_request(
    'primary_ips', j: COLLECT_ARGS.call(__method__, binding),
                   expected_code: 201
  ) do |response|
    action = Action.new(client, response[:action]) if response[:action]
    [action, PrimaryIP.new(client, response[:primary_ip])]
  end
end