Skip to content

Instantly share code, notes, and snippets.

@minherz
minherz / alert_filter_and_condition
Last active August 15, 2023 14:53
Automated rollback of CF
fetch cloud_function
| metric 'cloudfunctions.googleapis.com/function/execution_count'
| {
filter status != 'ok'
;
ident
}
| group_by drop[status], sliding(5m), .sum
| ratio
| scale '%'
class BatchPayloads(CombineFn):
'''Collect all items in the windowed collection into single batch'''
def create_accumulator(self):
return []
def add_input(self, accumulator, input):
accumulator.append(input)
return accumulator
def merge_accumulators(self, accumulators):
2022-10-03T18:53:36.321-0700 [INFO] Terraform version: 1.3.1
2022-10-03T18:53:36.321-0700 [DEBUG] using github.com/hashicorp/go-tfe v1.9.0
2022-10-03T18:53:36.321-0700 [DEBUG] using github.com/hashicorp/hcl/v2 v2.14.1
2022-10-03T18:53:36.321-0700 [DEBUG] using github.com/hashicorp/terraform-config-inspect v0.0.0-20210209133302-4fd17a0faac2
2022-10-03T18:53:36.321-0700 [DEBUG] using github.com/hashicorp/terraform-svchost v0.0.0-20200729002733-f050f53b9734
2022-10-03T18:53:36.321-0700 [DEBUG] using github.com/zclconf/go-cty v1.11.0
2022-10-03T18:53:36.321-0700 [INFO] Go runtime version: go1.19.1
2022-10-03T18:53:36.321-0700 [INFO] CLI args: []string{"terraform", "apply", "-auto-approve"}
2022-10-03T18:53:36.321-0700 [TRACE] Stdout is a terminal of width 111
2022-10-03T18:53:36.321-0700 [TRACE] Stderr is a terminal of width 111
<?xml version='1.0' encoding='UTF-8'?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.google.cloud</groupId>
<artifactId>examples-testbed-local</artifactId>
<packaging>jar</packaging>
<version>1.0.0</version>
<name>Test Local Environment Examples</name>
<!--
@minherz
minherz / wait_startup_script_to_exit.sh
Created May 4, 2021 14:14
Wait until startup script logs it is finished with time threshold
wait_startup_script_to_finish() {
vm_name=$1
vm_zone=$2
threshold=$(date --date="-5 min" "+%b %_d %H:%M:%S")
echo -n "Wait for \"$vm_name\" startup script to exit."
status=""
while [[ -z "$status" ]]
do
sleep 3;
echo -n "."
@minherz
minherz / wait_startup_script_to_exit.sh
Last active May 4, 2021 14:15
Bash script function to wait until the startup script finishes execution and logs it into /var/log/syslog
wait_startup_script_to_finish() {
vm_name=$1
vm_zone=$2
echo -n "Wait for \"$vm_name\" startup script to exit."
status=""
while [[ -z "$status" ]]
do
sleep 3;
echo -n "."
status=$(gcloud compute ssh $vm_name --zone=$vm_zone --ssh-flag="-q" --command 'grep -m 1 "startup-script exit status" /var/log/syslog' 2>&-)
@minherz
minherz / daemonset.yml
Created January 22, 2021 16:55
Deploy solution as a daemonset
apiVersion: apps/v1
kind: DaemonSet
metadata:
name: node-labeling
labels:
app: node-labeling
spec:
selector:
matchLabels:
app: node-labeling
@minherz
minherz / rbac.yml
Created January 22, 2021 16:52
example of rbac setting
apiVersion: v1
kind: ServiceAccount
metadata:
name: node-labeling-robot
namespace: default
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
name: node-info-reader
@minherz
minherz / main.py
Created January 22, 2021 16:45
set GCE instance labels using Google client library in Python
resp = compute.instances().get(project=project_id, zone=zone, instance=instance_name).execute()
if 'error' in resp:
print('Failed to get GCE instance info')
exit(1)
fingerprint = resp['labelFingerprint']
resp = compute.instances().setLabels(project=project_id, zone=zone, instance=instance_name,
body={'labelFingerprint': fingerprint,
'labels': labels}).execute()
@minherz
minherz / main.py
Created January 22, 2021 16:43
initialize Google client library in Python
creds, project_id = google.auth.default(scopes=['https://www.googleapis.com/auth/compute'])
compute = googleapiclient.discovery.build('compute', 'v1', credentials=creds)