Created
November 22, 2017 20:32
-
-
Save eriknelson/9c34e83136e8fb7fd6110985b74fcb3b to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
diff --git a/cmd/broker/main.go b/cmd/broker/main.go | |
index 15895167..0e0af329 100644 | |
--- a/cmd/broker/main.go | |
+++ b/cmd/broker/main.go | |
@@ -16,11 +16,103 @@ | |
package main | |
-import "github.com/openshift/ansible-service-broker/pkg/app" | |
+import ( | |
+ logging "github.com/op/go-logging" | |
+ "runtime/debug" | |
+ //"github.com/openshift/ansible-service-broker/pkg/app" | |
+ "fmt" | |
+ "github.com/openshift/ansible-service-broker/pkg/clients" | |
+ //"k8s.io/apimachinery/pkg/runtime" | |
+ "bufio" | |
+ "bytes" | |
+ "io" | |
+ "k8s.io/apimachinery/pkg/runtime/serializer" | |
+ "k8s.io/client-go/kubernetes/scheme" | |
+ "k8s.io/client-go/pkg/api/v1" | |
+ rest "k8s.io/client-go/rest" | |
+ "k8s.io/client-go/tools/remotecommand" | |
+ "k8s.io/kubernetes/pkg/api" | |
+ "os" | |
+) | |
+ | |
+const ( | |
+ PodName = "asb-1-zzwlt" | |
+ PodNamespace = "ansible-service-broker" | |
+ ContainerName = "asb" | |
+) | |
func main() { | |
- app := app.CreateApp() | |
- app.Start() | |
+ TestCommand := []string{"whoami"} | |
+ | |
+ log := NewLogger() | |
+ | |
+ k8sClient, err := clients.Kubernetes(log) | |
+ if err != nil { | |
+ fmt.Printf("error creating k8s client:") | |
+ fmt.Printf("%+v", err.Error()) | |
+ return | |
+ } | |
+ | |
+ clientConfig := k8sClient.ClientConfig | |
+ clientConfig.GroupVersion = &v1.SchemeGroupVersion | |
+ clientConfig.NegotiatedSerializer = | |
+ serializer.DirectCodecFactory{CodecFactory: scheme.Codecs} | |
+ | |
+ // NOTE: kubectl exec simply sets the API path to /api when where is no | |
+ // Group, which is the case for pod exec. | |
+ clientConfig.APIPath = "/api" | |
+ | |
+ log.Infof("%+v\n", clientConfig) | |
+ log.Infof("%s", string(debug.Stack())) | |
+ | |
+ restClient, err := rest.RESTClientFor(clientConfig) | |
+ if err != nil { | |
+ fmt.Printf("error creating rest client:") | |
+ fmt.Printf("%+v", err.Error()) | |
+ return | |
+ } | |
+ | |
+ req := restClient.Post(). | |
+ Resource("pods"). | |
+ Name(PodName). | |
+ Namespace(PodNamespace). | |
+ SubResource("exec"). | |
+ Param("container", ContainerName) | |
+ | |
+ req.VersionedParams(&api.PodExecOptions{ | |
+ Container: ContainerName, | |
+ Command: TestCommand, | |
+ Stdin: false, | |
+ Stdout: true, | |
+ Stderr: true, | |
+ TTY: false, | |
+ }, api.ParameterCodec) | |
+ | |
+ exec, err := remotecommand.NewExecutor(clientConfig, "POST", req.URL()) | |
+ if err != nil { | |
+ fmt.Printf("error getting new remotecommand executor") | |
+ fmt.Printf("%+v", err.Error()) | |
+ } | |
+ | |
+ var stdoutBuffer, stderrBuffer bytes.Buffer | |
+ stdoutWriter := bufio.NewWriter(&stdoutBuffer) | |
+ stderrWriter := bufio.NewWriter(&stderrBuffer) | |
+ | |
+ err = exec.Stream(remotecommand.StreamOptions{ | |
+ Stdout: stdoutWriter, | |
+ Stderr: stderrWriter, | |
+ }) | |
+ | |
+ // Flush? | |
+ | |
+ fmt.Printf("stdoutBuffer: [%s]", stdoutBuffer.String()) | |
+ fmt.Printf("stderrBuffer: [%s]", stderrBuffer.String()) | |
+ | |
+ if err != nil { | |
+ log.Error("Bad shit happened") | |
+ log.Errorf("%+v", err.Error()) | |
+ } | |
+ | |
//////////////////////////////////////////////////////////// | |
// TODO: | |
// try/finally to make sure we clean things up cleanly? | |
@@ -29,3 +121,35 @@ func main() { | |
//} | |
//////////////////////////////////////////////////////////// | |
} | |
+ | |
+const LOGGING_MODULE = "cluster-sbx" | |
+ | |
+func NewLogger() *logging.Logger { | |
+ logger := logging.MustGetLogger(LOGGING_MODULE) | |
+ var backends []logging.Backend | |
+ | |
+ colorFormatter := logging.MustStringFormatter( | |
+ "%{color}[%{time}] [%{level}] %{message}%{color:reset}", | |
+ ) | |
+ | |
+ standardFormatter := logging.MustStringFormatter( | |
+ "[%{time}] [%{level}] %{message}", | |
+ ) | |
+ | |
+ var formattedBackend = func(writer io.Writer, isColored bool) logging.Backend { | |
+ backend := logging.NewLogBackend(writer, "", 0) | |
+ formatter := standardFormatter | |
+ if isColored { | |
+ formatter = colorFormatter | |
+ } | |
+ return logging.NewBackendFormatter(backend, formatter) | |
+ } | |
+ | |
+ backends = append(backends, formattedBackend(os.Stdout, true /* isColored */)) | |
+ | |
+ multiBackend := logging.MultiLogger(backends...) | |
+ logger.SetBackend(multiBackend) | |
+ logging.SetLevel(logging.DEBUG, LOGGING_MODULE) | |
+ | |
+ return logger | |
+} | |
diff --git a/glide.yaml b/glide.yaml | |
index efb63913..a1a89358 100644 | |
--- a/glide.yaml | |
+++ b/glide.yaml | |
@@ -30,25 +30,29 @@ import: | |
version: v0.11.4 | |
- package: github.com/docker/go-connections | |
version: 7da10c8c50cad14494ec818dcdfb6506265c0086 | |
- | |
-# copied compatible versions from service-catalog glide.yaml | |
- package: k8s.io/kubernetes | |
- version: ebb8d6e0fadfc95f3d64ccecc36c8ed2ac9224ef # client-go origin version | |
+ version: ebb8d6e0fadfc95f3d64ccecc36c8ed2ac9224ef | |
- package: k8s.io/client-go | |
- version: e356aa2e77ab4a5914c216c12ba14cce25a25ab0 # in sync with kubernetes 1.7.0 | |
+ version: e356aa2e77ab4a5914c216c12ba14cce25a25ab0 | |
- package: k8s.io/apimachinery | |
- version: abe34e4f5b4413c282a83011892cbeea5b32223b # wanted by client-go; release-1.7 branch | |
+ version: abe34e4f5b4413c282a83011892cbeea5b32223b | |
- package: k8s.io/apiserver | |
- version: ab57ed5a72c3b67058f665d660e23bae18339fc2 # June 23, similar to client-go. No 1.7 branch yet BUT this version is perfectly compatible it seems | |
+ version: ab57ed5a72c3b67058f665d660e23bae18339fc2 | |
- package: github.com/onsi/gomega | |
- version: d59fa0ac68bb5dd932ee8d24eed631cdd519efc3 # wanted by k8s.io/kubernetes | |
+ version: d59fa0ac68bb5dd932ee8d24eed631cdd519efc3 | |
- package: github.com/onsi/ginkgo | |
- version: 67b9df7f55fe1165fd9ad49aca7754cce01a42b8 # wanted by k8s.io/kubernetes | |
+ version: 67b9df7f55fe1165fd9ad49aca7754cce01a42b8 | |
- package: github.com/emicklei/go-restful | |
- version: ff4f55a206334ef123e4f79bbf348980da81ca46 # not a direct dep, but forces the version for k8s/apiserver | |
+ version: ff4f55a206334ef123e4f79bbf348980da81ca46 | |
subpackages: | |
- swagger | |
- package: gopkg.in/natefinch/lumberjack.v2 | |
version: 20b71e5b60d756d3d2f80def009790325acc2b23 | |
- package: github.com/exponent-io/jsonpath | |
version: d6023ce2651d8eafb5c75bb0c7167536102ec9f5 | |
+- package: google.golang.org/grpc | |
+ version: ^1.8.0 | |
+ subpackages: | |
+ - status | |
+ - keepalive | |
+- package: github.com/docker/spdystream |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment