Skip to content

Instantly share code, notes, and snippets.

View ilaif's full-sized avatar
🎯
Focusing

Ilai Fallach ilaif

🎯
Focusing
View GitHub Profile
{
"version": "2.0.0",
"tasks": [
{
"label": "veloctl-attach-worker",
"type": "shell",
"isBackground": false,
"command": "veloctl env develop -s worker -v --attach --env-file ${workspaceFolder}/.env.velocity",
"presentation": {
"echo": true,
{
"configurations": [
{
"name": "Run with Velocity",
"type": "go",
"request": "launch",
"mode": "auto",
"program": "${workspaceFolder}",
"envFile": "${workspaceFolder}/.env.velocity",
"preLaunchTask": "veloctl-attach-worker",
@ilaif
ilaif / report-jinja-template.jinja2
Last active April 28, 2022 23:43
instrument-everything-blog-report-jinja-template
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>{{ title }}</title>
<link rel="stylesheet" type="text/css" href="highlight.css">
</head>
<body>
<div class="header">
<h2>{{ title }}</h2>
@ilaif
ilaif / generate-html-report.py
Created April 16, 2019 21:08
instrument-everything-blog-generate-html-report
from pygments import highlight
from pygments.lexers import get_lexer_by_name
from pygments.formatters import HtmlFormatter
def generate_html_report(coverage_object):
"""
Given a coverage object returns an html report
:param dict coverage_object:
:return list(string), string: html files, css file
"""
@ilaif
ilaif / calculate-coverage.py
Created April 16, 2019 21:07
instrument-everything-blog-calculate-coverage
def calculate_coverage(instrumentation_mappings, processed_logs):
"""
Given the parameters, returns a coverage object that contains the needed data for the report
:param dict instrumentation_mappings: a dictionary of
key: name, value: properties that includes instrumentation mappings
:param list processed_logs: a list of processed logs that contain the coverage information
:return dict: coverage object
"""
coverage_object = {}
files = {}
@ilaif
ilaif / listen-for-incoming-logs.py
Created April 16, 2019 21:06
instrument-everything-blog-listen-for-incoming-logs
def run_syslog_server(logs_path):
client = docker.from_env()
volumes = ['{}:/var/log'.format(logs_path)]
container_handle = client.containers.run(image='balabit/syslog-ng:latest', command='--no-caps', stdout=True,
stderr=True, remove=True, detach=True, volumes=volumes,
name='instrumentation-syslog-ng')
return container_handle
def run_ngrok(auth_token, remote_addr):
client = docker.from_env()
@ilaif
ilaif / activate-version.py
Created April 16, 2019 21:05
instrument-everything-blog-activate-version
def activate_version(service_id, version):
url = 'https://api.fastly.com/service/{}/version/{}/activate'.format(service_id, version)
response = requests.request('PUT', url, headers={...})
@ilaif
ilaif / syslog-endpoint.py
Created April 16, 2019 21:04
instrument-everything-blog-syslog-endpoint
def create_syslog_endpoint(service_id, version):
syslog_object = {
'name': '<syslog_endpoint_name>',
'address': '<reserved_tcp_address>',
'hostname': '<reserved_tcp_address>',
'port': <reserved_tcp_port>,
}
url = 'https://api.fastly.com/service/{}/version/{}/logging/syslog'.format(service_id, version)
response = requests.request('POST', url, headers={...}, data=urlencode(syslog_object))
@ilaif
ilaif / replace-instrumented-vcls.py
Created April 16, 2019 21:04
instrument-everything-blog-replace-instrumented-vcls
def delete_custom_vcl(service_id, version, name):
url = 'https://api.fastly.com/service/{}/version/{}/vcl/{}'.format(service_id, version, name)
response = requests.request('DELETE', url, headers={...})
def create_custom_vcl(service_id, version, vcl_object):
url = 'https://api.fastly.com/service/{}/version/{}/vcl'.format(service_id, version)
response = requests.request('POST', url, headers={...}, data=urlencode(vcl_object))
@ilaif
ilaif / clone-fastly-service.py
Created April 16, 2019 21:03
instrument-everything-blog-clone-fastly-service
def clone_version(service_id, version):
url = 'https://api.fastly.com/service/{}/version/{}/clone'.format(service_id, version)
response = requests.request('PUT', url, headers={...})
return response.json()['number']