Skip to content

Instantly share code, notes, and snippets.

@cabecada
Last active September 17, 2016 20:27
Show Gist options
  • Save cabecada/001aa19431ce3881299c4ae6c051dced to your computer and use it in GitHub Desktop.
Save cabecada/001aa19431ce3881299c4ae6c051dced to your computer and use it in GitHub Desktop.
stash_to_silencing
#!/opt/sensu/embedded/bin/ruby
require 'net/http'
require 'json'
def get_uri(url)
URI(url)
end
def base_uri
get_uri("http://localhost:4567")
end
def headers
{'api-proxy' => 'true', 'Content-Type' => 'application/json'}
end
def http
uri = base_uri
http = Net::HTTP.new(uri.host, uri.port)
http.set_debug_output($stdout)
http
end
def get_request(path)
req = Net::HTTP::Get.new(URI.encode(path), headers)
http.request(req)
end
def post_request(path, content)
req = Net::HTTP::Post.new(URI.encode(path), headers)
req.body = content.to_json
http.request(req)
end
def delete_request(path)
req = Net::HTTP::Delete.new(URI.encode(path), headers)
http.request(req)
end
def parse_response(res)
JSON.parse(res.body, :symbolize_keys => true)
end
def stashes
res = get_request('/stashes')
parse_response(res)
end
def silenced
res = get_request('/silenced')
parse_response(res)
end
def delete_all_stashes
stashes.each do |stash|
delete_stash(stash['path'])
end
end
def delete_all_silences
silenced.each do |s|
delete_silenced(s['id'])
end
end
def create_stash(path, content)
post_request('/stashes' + '/'+ path, content)
end
def delete_stash(path)
path = '/' + path unless path.start_with?('/')
delete_request('/stashes' + path)
end
def create_silenced(content)
post_request('/silenced', content)
end
def delete_silenced(id)
content = {
:id => id,
}
post_request('/silenced/clear', content)
end
def stash_to_silenced
stashes.each do |stash|
_, client, check = stash['path'].split('/')
content = {}
content.merge!(:subscription => client)
content.merge!(:check => check) if !check.nil?
content.merge!(:expire => stash['content'].fetch('expire', 3600)) if stash['content'].key?('expire')
content.merge!(:expire_on_resolve => false)
create_silenced(content)
end
end
delete_all_stashes
delete_all_silences
stash_path = 'silence/sensu-server/check-subdue'
stash_content = {
:path => stash_path,
:expire => -1,
:content => {
:message => 'test stashes',
:timestamp => Time.now.to_i
}
}
create_stash(stash_path, stash_content)
p stashes
stash_to_silenced
p silenced
stash_path = 'silence/sensu-server'
stash_content = {
:path => stash_path,
:expire => -1,
:content => {
:message => 'test stashes',
:timestamp => Time.now.to_i
}
}
create_stash(stash_path, stash_content)
p stashes
stash_to_silenced
p silenced
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment