Skip to content

Instantly share code, notes, and snippets.

@jmcarp
jmcarp / deployer-account-broker.go
Created October 28, 2016 03:11
deployer account broker
package main
import (
"context"
"errors"
"fmt"
"code.cloudfoundry.org/lager"
"github.com/cloudfoundry-community/go-cfclient"
"github.com/pivotal-cf/brokerapi"
@jmcarp
jmcarp / alerts.clj
Created October 27, 2016 01:08
new adventures in stream processing
;; Goal: Page if the firehose stops sending to riemann, and close pages if it resumes
;; Replace all firehose events with synthetic heartbeat events and index, then merge with existing stream and listen for expiration
;; h/t @sharms
(where (service #"^cf.*")
(smap (fn [ev] (if (= (:state ev) nil) (event {:service "cf.nozzle.heartbeat" :host "internal" :metric 1 :state "ok" :ttl 30}) ev)) index
(where (service "cf.nozzle.heartbeat")
(changed-state {:init "ok"}
(where (state "ok") (:resolve pd)
(else (where (state "expired") (:trigger pd))))))))
meta:
name: (( param "specify name" ))
aws:
bucket: (( param "specify bucket name" ))
access_key_id: (( param "specify access key" ))
secret_access_key: (( param "specify secret key" ))
region: (( param "specify region" ))
tasks:
url: (( param "specify tasks url" ))
branch: (( param "specify tasks branch" ))
@jmcarp
jmcarp / load.py
Created September 9, 2016 04:32
email-load-test
import os
import re
import time
import uuid
import base64
import httplib2
from apiclient import discovery
import oauth2client
from oauth2client import client
@jmcarp
jmcarp / login.py
Created September 8, 2016 19:30
simple-load-test
import os
import faker
import locust
import pyquery
fake = faker.Faker()
username, password = os.getenv('AUTH_USER'), os.getenv('AUTH_PASS')
auth = (username, password) if username and password else ()
@jmcarp
jmcarp / extract.py
Created September 2, 2016 23:18
concourse extract
#!/usr/bin/env python
# encoding: utf-8
import re
import sys
import yaml
parameter = re.compile(r'{{(.+)}}')
def extract(templated, complete):
if isinstance(templated, list):
@jmcarp
jmcarp / jump.sh
Created July 15, 2016 01:22
jumpbox
#!/usr/bin/expect
set timeout 30
set target [lindex $argv 0];
set environment [lindex $argv 1];
spawn ./trigger.sh $target $environment
expect "choose a container"
set lines [split $expect_out(buffer) \n]
#!/bin/bash
set -e -x
TODAY=$(date +%Y.%m.%d)
YESTERDAY=$(date -d "1 day ago" +%Y.%m.%d)
TTL=${TTL:-600}
JQ_PATH=${JQ_PATH:-jq}
INTERVAL=${INTERVAL:-5m}
@jmcarp
jmcarp / travis.js
Last active November 22, 2015 22:54
Store all travis builds for a given repo in mongo
/* global console */
var urijs = require('urijs');
var Promise = require('bluebird');
var request = Promise.promisifyAll(require('request'));
var mongodb = Promise.promisifyAll(require('mongodb'));
var baseUrl = 'https://api.travis-ci.org';
var client = mongodb.MongoClient.connect('mongodb://localhost:27017/dashboard');
@jmcarp
jmcarp / scrapy_schema.py
Created November 8, 2015 05:12
scraping for humans?
"""
Scrapy includes an `ItemLoader` class and associated helpers to abstract
data extraction from `Reponse` objects. But this API is verbose and easily
result in more boilerplate, not less. The following is a quick sketch of
a possible interface for using marshmallow, with a few custom fields, to
pull data from Scrapy responses.
"""
class PersonSchema(Schema):
name = fields.XPath('//title/text()', fields.Str)