Skip to content

Instantly share code, notes, and snippets.

View jtigger's full-sized avatar
💭
☸️

John Ryan jtigger

💭
☸️
View GitHub Profile
@jtigger
jtigger / kapp-config.yaml
Last active September 27, 2021 21:52
Custom document matcher with key presence check
apiVersion: kapp.k14s.io/v1alpha1
kind: Config
rebaseRules:
- path: [data]
type: copy
sources: [existing, new]
resourceMatchers:
- kindNamespaceNameMatcher: {kind: ConfigMap, namespace: kube-system, name: antrea-ca}
@jtigger
jtigger / jsonpatch.star
Last active April 4, 2021 19:24
RFC 6902 "JSON Patch" implemented in `ytt`
load("@ytt:struct", "struct")
load("@ytt:yaml", "yaml")
# `raw_yaml()` makes an editable copy of `node`
# warning: all nodes are scrubbed of attached annotations and code.
def raw_yaml(node):
return yaml.decode(yaml.encode(node))
end
def key_or_index(target, part):
@jtigger
jtigger / imglock.sh
Created October 14, 2020 02:09
Convert between "ImagesLock" and kbld's "Config" files
#!/usr/bin/env bash
KIND=$(yq --raw-output '.kind' <(cat $1))
case ${KIND} in
"Config")
read -r -d '' TEMPLATE <<'EOF'
#@ load("@ytt:data", "data")
---
apiVersion: imgpkg.k14s.io/v1alpha1
@jtigger
jtigger / ParseYamlEmptyNode.java
Last active October 3, 2020 23:31
Parse empty node in YAML (many languages)
// on classpath: https://repo1.maven.org/maven2/org/yaml/snakeyaml/1.27/snakeyaml-1.27.jar
package emptynode;
import org.yaml.snakeyaml.Yaml;
import java.util.Map;
public class ParseYaml {
public static void main(String[] args) {
Yaml yaml = new Yaml();
Map<String, Object> obj = yaml.load("---\nfoo: #@ data.value\n");
#@ load("@ytt:data", "data")
apps:
#@ for app in data.values.traefik.ingress_routes:
- #@ app
#@ end
@jtigger
jtigger / overlay_util.star
Last active May 25, 2020 05:15
Overlay utility functions
load("@ytt:overlay", "overlay")
# `k8s_resource` yields matcher function that returns subset matching the Kubernetes resource parameters.
def k8s_resource(apiVersion, kind, name):
return overlay.subset({"apiVersion": apiVersion, "kind": kind, "metadata": {"name": name}})
end
# `shape` yields matcher function that returns True when the structure of `right` matches that of `left`
# (ignoring leaves).
# exactly :: when `True`, array items in `left` must match exactly in the order they appear in `right`
@jtigger
jtigger / overlay-on-all-documents.yml
Last active May 21, 2020 03:01
Illustrate error message fail
#@overlay/match by=lambda i,l,r: True
---
metadata:
namespace: foos
@jtigger
jtigger / test.yml
Created February 14, 2020 16:54
ytt: `overlay/match` on an Array Item expecting to match many
---
clients:
- client1:
secret: blah1
- client2:
secret: blah2
#@ load("@ytt:overlay", "overlay")
#@overlay/match by=overlay.all
---
@jtigger
jtigger / how-to-run-ginkgo-in-goland.md
Last active June 2, 2019 02:56
Running Ginkgo specs in GoLand
  1. Create a starter test

    package main
    
    import (
      . "github.com/onsi/ginkgo"
      . "github.com/onsi/gomega"

)