/
placement_group.rb
77 lines (72 loc) · 1.94 KB
/
placement_group.rb
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
# frozen_string_literal: true
module HCloud
##
# Represents a placement group
#
# == List all placement group
#
# HCloud::PlacementGroup.all
# # => [#<HCloud::PlacementGroup id: 2, ...>, ...]
#
# == Sort placement groups
#
# HCloud::PlacementGroup.sort(name: :desc)
# # => [#<HCloud::PlacementGroup id: 1, ...>, ...]
#
# HCloud::PlacementGroup.sort(:id, name: :asc)
# # => [#<HCloud::PlacementGroup id: 1, ...>, ...]
#
# == Search placement groups
#
# HCloud::PlacementGroup.where(name: "my_placement_group")
# # => #<HCloud::PlacementGroup id: 2, ...>
#
# HCloud::PlacementGroup.where(label_selector: { environment: "production" })
# # => #<HCloud::PlacementGroup id: 2, ...>
#
# == Find placement group by ID
#
# HCloud::PlacementGroup.find(2)
# # => #<HCloud::PlacementGroup id: 2, ...>
#
# == Create placement group
#
# placement_group = HCloud::PlacementGroup.new(name: "my_placement_group", type: "spread")
# placement_group.create
# placement_group.created?
# # => true
#
# firewall = HCloud::PlacementGroup.create(name: "my_placement_group")
# # => #<HCloud::PlacementGroup id: 1, ...>
#
# == Update placement group
#
# placement_group = HCloud::PlacementGroup.find(1)
# placement_group.name = "another_placement_group"
# placement_group.update
#
# == Delete placement group
#
# placement_group = HCloud::PlacementGroup.find(1)
# placement_group.delete
# placement_group.deleted?
# # => true
#
class PlacementGroup < Resource
queryable
creatable
updatable
deletable
labelable
attribute :id, :integer
attribute :name
attribute :type
attribute :servers, :server, array: true, default: -> { [] }
def creatable_attributes
[:name, :type, :labels]
end
def updatable_attributes
[:name, :labels]
end
end
end