Skip to content

Instantly share code, notes, and snippets.

View kaidokert's full-sized avatar

Kaido Kert kaidokert

View GitHub Profile
# pip install retryz backoff
from __future__ import print_function
import random
import retryz
import backoff
def naughty_func():
picky = random.randint(1, 3)
import urlparse
import argparse
import psycopg2
class Bunch:
def __init__(self, **kwds):
self.__dict__.update(kwds)
@kaidokert
kaidokert / salt_repo.sls
Created January 25, 2016 06:41
Salt minion install from official repos, migrating from PPA
{% set ver_str = [grains.os|lower,grains.osrelease,grains.osarch]|join('/') %}
{% set release = latest %} {# currently 2015.8 #}
{% set release = 2015.5 %}
salt_repo:
pkgrepo.managed:
- humanname: salt-repo
- name: "deb http://repo.saltstack.com/apt/{{ ver_str }}/{{ release }} {{ grains.oscodename }} main"
- file: /etc/apt/sources.list.d/salt.list
- keyid: DE57BFBE
@kaidokert
kaidokert / demo.js
Created January 13, 2016 06:36
Easily make Node http requests with built in http and Promises module
var http = require('http');
function make_request(options, payload) {
return new Promise(function(resolve,reject) {
if(payload) options.method = 'POST'; else options.method = 'GET';
var request = http.request(options,function(response) {
var str = '';
response.on('error', function() { reject('Error'); } )
response.on('data', function (chunk) { str += chunk; })
response.on('end', function () { resolve(JSON.parse(str));})
@kaidokert
kaidokert / varmacros.h
Created January 8, 2016 01:11
Portable variadic macros
// excellent solution from here : http://stackoverflow.com/a/24028231/295231
//macro glue to make it work on msvc/gcc
#define GLUE(x, y) x y
#define RETURN_ARG_COUNT(_1_, _2_, _3_, _4_, _5_, count, ...) count
#define EXPAND_ARGS(args) RETURN_ARG_COUNT args
#define COUNT_ARGS_MAX5(...) EXPAND_ARGS((__VA_ARGS__, 5, 4, 3, 2, 1, 0))
@kaidokert
kaidokert / librato_alerts_to_yaml.py
Created January 6, 2016 02:30
Dump all defined alerts in Librato to a cleaned and ordered Yaml file, to use in Salt
import argparse
import collections
import yaml
import librato
# ht to http://stackoverflow.com/a/16782282/295231
# http://stackoverflow.com/a/20720773/295231
class UnsortableList(list):
def sort(self, *args, **kwargs):
@kaidokert
kaidokert / osx-for-hackers.sh
Created December 31, 2015 19:41 — forked from matthewmueller/osx-for-hackers.sh
OSX for Hackers (Mavericks/Yosemite)
# OSX for Hackers (Mavericks/Yosemite)
#
# Source: https://gist.github.com/brandonb927/3195465
#!/bin/sh
# Some things taken from here
# https://github.com/mathiasbynens/dotfiles/blob/master/.osx
# Ask for the administrator password upfront
{%- set fqdn = grains['id'] %}
{%- set internal_ip = grains['ip4_interfaces']['eth0'][0] %}
hostname-match:
file.managed:
- name: /etc/hostname
- contents: {{ fqdn }}
primary_ip_in_host_file:
host.present:
@kaidokert
kaidokert / wall_of_fame.py
Created August 2, 2015 16:45
Simple page scraping with html5lib
import html5lib
import requests
def get_packages():
page = 'https://python3wos.appspot.com/'
doc = html5lib.parse(requests.get(page).content,
namespaceHTMLElements=False)
table = doc.find('body/div/div/table/tbody')
if not table:
@kaidokert
kaidokert / pippi.py
Last active August 29, 2015 14:26
Use pip to find all available and matching versions of a package
import logging
import pip
log = logging.getLogger(__name__)
def check_package(package):
requirement = pip.req.InstallRequirement.from_line(package)