Class: Lita::Handlers::Digitalocean::Droplet

Inherits:
Base
  • Object
show all
Defined in:
lib/lita/handlers/digitalocean/droplet.rb

Instance Method Summary collapse

Instance Method Details

#create(response) ⇒ Object



67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
# File 'lib/lita/handlers/digitalocean/droplet.rb', line 67

def create(response)
  name, size, image, region = response.args[2..5]
  kwargs = response.extensions[:kwargs].dup
  kwargs.each { |k, v| kwargs.delete(k) if v.nil? }

  numeric = /^\d+$/

  size_key = size =~ numeric ? :size_id : :size_slug
  image_key = image =~ numeric ? :image_id : :image_slug
  region_key = region =~ numeric ? :region_id : :region_slug

  options = {
    name: name,
    size_key => size,
    image_key => image,
    region_key => region
  }.merge(kwargs)

  do_response = do_call(response) do |client|
    client.droplets.create(options)
  end or return

  response.reply(t("droplets.create.created", do_response[:droplet]))
end

#delete(response) ⇒ Object



92
93
94
95
96
97
98
99
100
101
102
# File 'lib/lita/handlers/digitalocean/droplet.rb', line 92

def delete(response)
  id = response.args[2]
  options = {}
  options[:scrub_data] = true if response.extensions[:kwargs][:scrub]

  do_response = do_call(response) do |client|
    client.droplets.delete(id, options)
  end or return

  response.reply(t("droplets.delete.deleted", id: id))
end

#list(response) ⇒ Object



104
105
106
107
108
109
110
111
112
# File 'lib/lita/handlers/digitalocean/droplet.rb', line 104

def list(response)
  do_response = do_call(response) do |client|
    client.droplets.list
  end or return

  messages = do_response[:droplets].map { |droplet| t("droplets.list.detail", droplet) }

  response.reply(*messages)
end

#password_reset(response) ⇒ Object



114
115
116
117
118
119
120
121
122
# File 'lib/lita/handlers/digitalocean/droplet.rb', line 114

def password_reset(response)
  id = response.args[3]

  do_response = do_call(response) do |client|
    client.droplets.password_reset(id)
  end or return

  response.reply(t("droplets.password_reset.reset", id: id))
end

#power_cycle(response) ⇒ Object



124
125
126
127
128
129
130
131
132
# File 'lib/lita/handlers/digitalocean/droplet.rb', line 124

def power_cycle(response)
  id = response.args[3]

  do_response = do_call(response) do |client|
    client.droplets.power_cycle(response.args[3])
  end or return

  response.reply(t("droplets.power_cycle.cycled", id: id))
end

#power_off(response) ⇒ Object



134
135
136
137
138
139
140
141
142
# File 'lib/lita/handlers/digitalocean/droplet.rb', line 134

def power_off(response)
  id = response.args[3]

  do_response = do_call(response) do |client|
    client.droplets.power_off(response.args[3])
  end or return

  response.reply(t("droplets.power_off.powered_off", id: id))
end

#power_on(response) ⇒ Object



144
145
146
147
148
149
150
151
152
# File 'lib/lita/handlers/digitalocean/droplet.rb', line 144

def power_on(response)
  id = response.args[3]

  do_response = do_call(response) do |client|
    client.droplets.power_on(response.args[3])
  end or return

  response.reply(t("droplets.power_on.powered_on", id: id))
end

#reboot(response) ⇒ Object



154
155
156
157
158
159
160
161
162
# File 'lib/lita/handlers/digitalocean/droplet.rb', line 154

def reboot(response)
  id = response.args[2]

  do_response = do_call(response) do |client|
    client.droplets.reboot(response.args[2])
  end or return

  response.reply(t("droplets.reboot.rebooted", id: id))
end

#rebuild(response) ⇒ Object



164
165
166
167
168
169
170
171
172
# File 'lib/lita/handlers/digitalocean/droplet.rb', line 164

def rebuild(response)
  id, image_id = response.args[2..3]

  do_response = do_call(response) do |client|
    client.droplets.rebuild(id, image_id: image_id)
  end or return

  response.reply(t("droplets.rebuild.rebuilt", id: id))
end

#resize(response) ⇒ Object



174
175
176
177
178
179
180
181
182
183
# File 'lib/lita/handlers/digitalocean/droplet.rb', line 174

def resize(response)
  id, size = response.args[2..3]
  size_key = size =~ /^\d+$/ ? :size_id : :size_slug

  do_response = do_call(response) do |client|
    client.droplets.resize(id, size_key => size)
  end or return

  response.reply(t("droplets.resize.resized", id: id))
end

#restore(response) ⇒ Object



185
186
187
188
189
190
191
192
193
# File 'lib/lita/handlers/digitalocean/droplet.rb', line 185

def restore(response)
  id, image_id = response.args[2..3]

  do_response = do_call(response) do |client|
    client.droplets.restore(id, image_id: image_id)
  end or return

  response.reply(t("droplets.restore.restored", id: id))
end

#show(response) ⇒ Object



195
196
197
198
199
200
201
# File 'lib/lita/handlers/digitalocean/droplet.rb', line 195

def show(response)
  do_response = do_call(response) do |client|
    client.droplets.show(response.args[2])
  end or return

  response.reply(t("droplets.show.details", formatted_droplet(do_response[:droplet])))
end

#shutdown(response) ⇒ Object



203
204
205
206
207
208
209
210
211
# File 'lib/lita/handlers/digitalocean/droplet.rb', line 203

def shutdown(response)
  id = response.matches[0][0]

  do_response = do_call(response) do |client|
    client.droplets.shutdown(id)
  end or return

  response.reply(t("droplets.shutdown.shut_down", id: id))
end

#snapshot(response) ⇒ Object



213
214
215
216
217
218
219
220
221
222
223
# File 'lib/lita/handlers/digitalocean/droplet.rb', line 213

def snapshot(response)
  id, name = response.args[2..3]
  options = {}
  options[:name] = name if name

  do_response = do_call(response) do |client|
    client.droplets.snapshot(id, options)
  end or return

  response.reply(t("droplets.snapshot.snapshotted", id: id))
end