package main import ( "encoding/json" // "flag" //"fmt" "strconv" "html/template" "time" // "log" "strings" "net/http" "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/client-go/kubernetes" "k8s.io/client-go/tools/clientcmd" ) type microservice_details struct{ Deployment_name string `json:"Deployment_name"` Namespace string `json:"Namespace"` Image_tag string } type namespace_details struct { Namespace []string } var templates = template.Must(template.ParseGlob("./*.html")) var label_name string var namespace string var microservice ="/microservice/" var detailed_view="/detailed/" var kube_config_path="/home/saivamsi/.kube/config" var config, _ = clientcmd.BuildConfigFromFlags("", kube_config_path) var clientset, _ = kubernetes.NewForConfig(config) func main() { templates = template.Must(template.ParseGlob("./*.html")) http.Handle("/css/", http.StripPrefix("/css/", http.FileServer(http.Dir("css")))) http.Handle("/jpeg/", http.StripPrefix("/jpeg/", http.FileServer(http.Dir("css")))) http.HandleFunc("/", homepage) http.HandleFunc(microservice, Deployment) http.ListenAndServe(":8801",nil) } func homepage(w http.ResponseWriter, r *http.Request){ namespace,_:=clientset.CoreV1().Namespaces().List(v1.ListOptions{}) namespace_tmp := namespace_details{} for _,s := range namespace.Items{ namespace_tmp.Namespace = append(namespace_tmp.Namespace,s.Name) } templates.ExecuteTemplate(w,"homepage2.html",namespace_tmp) } func Deployment(w http.ResponseWriter, r *http.Request){ name := r.URL.Path[len(microservice):] var array2 []microservice_details deploy,_ := clientset.AppsV1().Deployments(name).List(v1.ListOptions{}) microservice_tmp := microservice_details{} microservice_tmp.Namespace=name for _, d := range deploy.Items { microservice_tmp.Deployment_name =d.Name for _, deployment_containers := range d.Spec.Template.Spec.Containers {
image_tag := deployment_containers.Image[strings.IndexByte(deployment_containers.Image':')+1:] microservice_tmp.Image_tag=image_tag } array2 = append(array2, microservice_tmp) } b,_:=json.Marshal(array2) json.Unmarshal([]byte(b), &array2)
templates.ExecuteTemplate(w ,"microservices2.html",array2) }
how to use Namespace variable of homepage function in Deployment function.I need to use them inside go templates.
i have to use that Namespace in microservices.html .i tried many things but didnt work.
Asked
Active
Viewed 120 times
-2

Sai Vamsi
- 111
- 3
- 19
-
If it is a common variable then define it globally – shubham_asati Feb 11 '20 at 07:02
1 Answers
2
Go is lexically scoped using blocks. This means any variable declared inside a function ABC()
will not be accessible from other function Xyz()
.
If you need such "sharing", you must define namespace
variable globally of the homepage
, or pass it by referencehomepage
, and then deployment
.

Umar Hayat
- 4,300
- 1
- 12
- 27