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

Inherits:
Model
  • Object
show all
Extended by:
Associations
Defined in:
lib/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, #to_s, #update!, #url

Instance Attribute Details

#agentObject



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

def agent
  type, identity = resource_keys

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

#database_serverObject



45
46
47
48
49
# File 'lib/ey-core/models/alert.rb', line 45

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/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/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

#acknowledge!Object



51
52
53
54
# File 'lib/ey-core/models/alert.rb', line 51

def acknowledge!
  requires :id
  merge_attributes(self.connection.acknowledge_alert("id" => self.id).body["legacy_alert"])
end

#resource_keysObject



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

def resource_keys
  requires :resource_url

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

#save!Object



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
88
89
90
91
92
93
94
95
96
97
98
# File 'lib/ey-core/models/alert.rb', line 56

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