aboutsummaryrefslogtreecommitdiff
path: root/middleware/kubernetes/k8sclient/dataobjects.go
diff options
context:
space:
mode:
Diffstat (limited to 'middleware/kubernetes/k8sclient/dataobjects.go')
-rw-r--r--middleware/kubernetes/k8sclient/dataobjects.go117
1 files changed, 60 insertions, 57 deletions
diff --git a/middleware/kubernetes/k8sclient/dataobjects.go b/middleware/kubernetes/k8sclient/dataobjects.go
index a5ab4f19c..b17adeba4 100644
--- a/middleware/kubernetes/k8sclient/dataobjects.go
+++ b/middleware/kubernetes/k8sclient/dataobjects.go
@@ -1,110 +1,113 @@
package k8sclient
import (
- "encoding/json"
- "net/http"
+ "encoding/json"
+ "net/http"
)
+// getK8sAPIResponse wraps the http.Get(url) function to provide dependency
+// injection for unit testing.
+var getK8sAPIResponse = func(url string) (resp *http.Response, err error) {
+ resp, err = http.Get(url)
+ return resp, err
+}
-func getJson(url string, target interface{}) error {
- r, err := http.Get(url)
- if err != nil {
- return err
- }
- defer r.Body.Close()
+func parseJson(url string, target interface{}) error {
+ r, err := getK8sAPIResponse(url)
+ if err != nil {
+ return err
+ }
+ defer r.Body.Close()
- return json.NewDecoder(r.Body).Decode(target)
+ return json.NewDecoder(r.Body).Decode(target)
}
-
// Kubernetes Resource List
type ResourceList struct {
- Kind string `json:"kind"`
- GroupVersion string `json:"groupVersion"`
- Resources []resource `json:"resources"`
+ Kind string `json:"kind"`
+ GroupVersion string `json:"groupVersion"`
+ Resources []resource `json:"resources"`
}
type resource struct {
- Name string `json:"name"`
- Namespaced bool `json:"namespaced"`
- Kind string `json:"kind"`
+ Name string `json:"name"`
+ Namespaced bool `json:"namespaced"`
+ Kind string `json:"kind"`
}
-
// Kubernetes NamespaceList
type NamespaceList struct {
- Kind string `json:"kind"`
- APIVersion string `json:"apiVersion"`
- Metadata apiListMetadata `json:"metadata"`
- Items []nsItems `json:"items"`
+ Kind string `json:"kind"`
+ APIVersion string `json:"apiVersion"`
+ Metadata apiListMetadata `json:"metadata"`
+ Items []nsItems `json:"items"`
}
type apiListMetadata struct {
- SelfLink string `json:"selfLink"`
- resourceVersion string `json:"resourceVersion"`
+ SelfLink string `json:"selfLink"`
+ ResourceVersion string `json:"resourceVersion"`
}
type nsItems struct {
- Metadata nsMetadata `json:"metadata"`
- Spec nsSpec `json:"spec"`
- Status nsStatus `json:"status"`
+ Metadata nsMetadata `json:"metadata"`
+ Spec nsSpec `json:"spec"`
+ Status nsStatus `json:"status"`
}
type nsMetadata struct {
- Name string `json:"name"`
- SelfLink string `json:"selfLink"`
- Uid string `json:"uid"`
- ResourceVersion string `json:"resourceVersion"`
- CreationTimestamp string `json:"creationTimestamp"`
+ Name string `json:"name"`
+ SelfLink string `json:"selfLink"`
+ Uid string `json:"uid"`
+ ResourceVersion string `json:"resourceVersion"`
+ CreationTimestamp string `json:"creationTimestamp"`
}
type nsSpec struct {
- Finalizers []string `json:"finalizers"`
+ Finalizers []string `json:"finalizers"`
}
type nsStatus struct {
- Phase string `json:"phase"`
+ Phase string `json:"phase"`
}
-
// Kubernetes ServiceList
type ServiceList struct {
- Kind string `json:"kind"`
- APIVersion string `json:"apiVersion"`
- Metadata apiListMetadata `json:"metadata"`
- Items []ServiceItem `json:"items"`
+ Kind string `json:"kind"`
+ APIVersion string `json:"apiVersion"`
+ Metadata apiListMetadata `json:"metadata"`
+ Items []ServiceItem `json:"items"`
}
type ServiceItem struct {
- Metadata serviceMetadata `json:"metadata"`
- Spec serviceSpec `json:"spec"`
-// Status serviceStatus `json:"status"`
+ Metadata serviceMetadata `json:"metadata"`
+ Spec serviceSpec `json:"spec"`
+ // Status serviceStatus `json:"status"`
}
type serviceMetadata struct {
- Name string `json:"name"`
- Namespace string `json:"namespace"`
- SelfLink string `json:"selfLink"`
- Uid string `json:"uid"`
- ResourceVersion string `json:"resourceVersion"`
- CreationTimestamp string `json:"creationTimestamp"`
- // labels
+ Name string `json:"name"`
+ Namespace string `json:"namespace"`
+ SelfLink string `json:"selfLink"`
+ Uid string `json:"uid"`
+ ResourceVersion string `json:"resourceVersion"`
+ CreationTimestamp string `json:"creationTimestamp"`
+ // labels
}
type serviceSpec struct {
- Ports []servicePort `json:"ports"`
- ClusterIP string `json:"clusterIP"`
- Type string `json:"type"`
- SessionAffinity string `json:"sessionAffinity"`
+ Ports []servicePort `json:"ports"`
+ ClusterIP string `json:"clusterIP"`
+ Type string `json:"type"`
+ SessionAffinity string `json:"sessionAffinity"`
}
type servicePort struct {
- Name string `json:"name"`
- Protocol string `json:"protocol"`
- Port int `json:"port"`
- TargetPort int `json:"targetPort"`
+ Name string `json:"name"`
+ Protocol string `json:"protocol"`
+ Port int `json:"port"`
+ TargetPort int `json:"targetPort"`
}
type serviceStatus struct {
- LoadBalancer string `json:"loadBalancer"`
+ LoadBalancer string `json:"loadBalancer"`
}