Class: Ey::Core::Client::Alert

Inherits:
Model
  • Object
show all
Extended by:
Associations
Defined in:
lib/vendor/core/ey-core/models/alert.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Methods included from Associations

assoc_accessor, assoc_coverage, assoc_reader, assoc_writer, associations, collection_reader

Methods inherited from Model

#destroy, range_parser, #save, #update!, #url

Instance Attribute Details

#database_serverObject



39
40
41
42
43
# File 'lib/vendor/core/ey-core/models/alert.rb', line 39

def database_server
  type, identity = resource_keys

  (type == "database-servers" || nil) && self.connection.database_servers.get!(identity)
end

#resourceObject



21
22
23
24
25
# File 'lib/vendor/core/ey-core/models/alert.rb', line 21

def resource
  type, identity = resource_keys

  self.connection.public_send(type.gsub("-", "_")).get!(identity)
end

#serverObject



33
34
35
36
37
# File 'lib/vendor/core/ey-core/models/alert.rb', line 33

def server
  type, identity = resource_keys

  (type == "servers" || nil) && self.connection.servers.get!(identity)
end

Instance Method Details

#resource_keysObject



27
28
29
30
31
# File 'lib/vendor/core/ey-core/models/alert.rb', line 27

def resource_keys
  requires :resource_url

  resource_url.split("/")[-2..-1]
end

#save!Object



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
# File 'lib/vendor/core/ey-core/models/alert.rb', line 45

def save!
  response = if new_record?
               params = {
                 "url"   => self.collection.url,
                 "alert" => {
                   "description" => description,
                   "external_id" => external_id,
                   "finished_at" => finished_at,
                   "message"     => message,
                   "name"        => name,
                   "severity"    => severity,
                   "started_at"  => started_at,
                 }
               }

               if @database_server
                 params.merge!(database_server_id: @database_server.identity)
               elsif @server
                 params.merge!(server_id: @server.identity)
               end

               self.connection.create_alert(params)
             else
               requires :identity

               params = {
                 :id    => self.id,
                 :alert => {
                   :acknowledged => acknowledged,
                   :external_id  => external_id,
                   :finished_at  => finished_at,
                   :ignored      => ignored,
                   :message      => message,
                   :severity     => severity,
                   :started_at   => started_at
                 }
               }

               self.connection.update_alert(params)
             end

  merge_attributes(response.body["alert"])
end