Skip to content

Instantly share code, notes, and snippets.

@andrejvanderzee
Last active May 22, 2017 19:32
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save andrejvanderzee/0a7148ffe2931e5eb52ff613201cf97e to your computer and use it in GitHub Desktop.
Save andrejvanderzee/0a7148ffe2931e5eb52ff613201cf97e to your computer and use it in GitHub Desktop.
package main
import (
"bufio"
"bytes"
"fmt"
"log"
_ "k8s.io/client-go/kubernetes"
"k8s.io/client-go/pkg/api"
"k8s.io/client-go/pkg/runtime"
"k8s.io/client-go/pkg/runtime/serializer/json"
)
const depYml = `
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: push
`
func main() {
// Decode into obj.
d := api.Codecs.UniversalDecoder()
obj, gvk, err := d.Decode([]byte(depYml), nil, nil)
if err != nil {
log.Fatalf("could not decode depYml: %s\n%s", depYml, err)
}
obj.GetObjectKind().SetGroupVersionKind(*gvk)
// Create YML encoder.
var encoder runtime.Encoder
mediaTypes := api.Codecs.SupportedMediaTypes()
for _, info := range mediaTypes {
if info.MediaType == "application/yaml" {
encoder = info.Serializer
break
}
}
if encoder == nil {
log.Fatal("encoder == nil")
}
gv := obj.GetObjectKind().GroupVersionKind().GroupVersion()
encoder = json.NewYAMLSerializer(json.DefaultMetaFactory, api.Scheme, api.Scheme)
encoder = api.Codecs.EncoderForVersion(encoder, gv)
var b bytes.Buffer
w := bufio.NewWriter(&b)
if err := encoder.Encode(obj, w); err != nil {
log.Fatal(err)
}
w.Flush()
fmt.Println(b.String())
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment