コード例 #1
0
ファイル: main.go プロジェクト: dbenque/khystrix
func statusHandler(w http.ResponseWriter, r *http.Request) {
	name := r.URL.Query().Get("name")
	if len(name) == 0 {
		w.WriteHeader(http.StatusBadRequest)
		w.Write(([]byte)("Missing or empty parameter\n"))
		return
	}

	if cb, _, err := hystrix.GetCircuit(name); err != nil {
		w.WriteHeader(http.StatusInternalServerError)
		w.Write(([]byte)("Can get Circuit Breaker\n"))
	} else {
		w.WriteHeader(http.StatusOK)
		allow := "Allow:No\n"
		if cb.AllowRequest() {
			allow = "Allow:Yes\n"
		}
		isOpen := "Opened:No\n"
		if cb.IsOpen() {
			isOpen = "Opened:Yes\n"
		}

		w.Write(([]byte)(allow + isOpen))
	}
}
コード例 #2
0
ファイル: main.go プロジェクト: dbenque/khystrix
func closeHandler(w http.ResponseWriter, r *http.Request) {
	name := r.URL.Query().Get("name")
	if len(name) == 0 {
		w.WriteHeader(http.StatusBadRequest)
		w.Write(([]byte)("Missing or empty parameter\n"))
		return
	}

	if cb, _, err := hystrix.GetCircuit(name); err != nil {
		w.WriteHeader(http.StatusInternalServerError)
		w.Write(([]byte)("Can get Circuit Breaker\n"))
	} else {
		cb.ReportEvent([]string{"success"}, time.Now(), 0)

		w.WriteHeader(http.StatusOK)
		w.Write(([]byte)("Closed.\n"))
	}
}
コード例 #3
0
ファイル: main.go プロジェクト: dbenque/khystrix
func toggleOpenHandler(w http.ResponseWriter, r *http.Request) {
	name := r.URL.Query().Get("name")
	tg := r.URL.Query().Get("value")
	if len(name) == 0 || (tg != "true" && tg != "false") {
		w.WriteHeader(http.StatusBadRequest)
		w.Write(([]byte)("Missing or empty parameter\n"))
		return
	}

	if cb, _, err := hystrix.GetCircuit(name); err != nil {
		w.WriteHeader(http.StatusInternalServerError)
		w.Write(([]byte)("Can get Circuit Breaker\n"))
	} else {
		cb.ToggleForceOpen(tg == "true")
		cb.AllowRequest()
		w.WriteHeader(http.StatusOK)
		w.Write(([]byte)("Done.\n"))

		log.Printf("%#v", *cb)

	}
}