diff options
author | GitLab Bot <gitlab-bot@gitlab.com> | 2020-05-20 14:34:42 +0000 |
---|---|---|
committer | GitLab Bot <gitlab-bot@gitlab.com> | 2020-05-20 14:34:42 +0000 |
commit | 9f46488805e86b1bc341ea1620b866016c2ce5ed (patch) | |
tree | f9748c7e287041e37d6da49e0a29c9511dc34768 /spec/support/helpers/kubernetes_helpers.rb | |
parent | dfc92d081ea0332d69c8aca2f0e745cb48ae5e6d (diff) | |
download | gitlab-ce-9f46488805e86b1bc341ea1620b866016c2ce5ed.tar.gz |
Add latest changes from gitlab-org/gitlab@13-0-stable-ee
Diffstat (limited to 'spec/support/helpers/kubernetes_helpers.rb')
-rw-r--r-- | spec/support/helpers/kubernetes_helpers.rb | 112 |
1 files changed, 90 insertions, 22 deletions
diff --git a/spec/support/helpers/kubernetes_helpers.rb b/spec/support/helpers/kubernetes_helpers.rb index ca910e47695..8882f31e2f4 100644 --- a/spec/support/helpers/kubernetes_helpers.rb +++ b/spec/support/helpers/kubernetes_helpers.rb @@ -3,6 +3,8 @@ module KubernetesHelpers include Gitlab::Kubernetes + NODE_NAME = "gke-cluster-applications-default-pool-49b7f225-v527" + def kube_response(body) { body: body.to_json } end @@ -11,6 +13,14 @@ module KubernetesHelpers kube_response(kube_pods_body) end + def nodes_response + kube_response(nodes_body) + end + + def nodes_metrics_response + kube_response(nodes_metrics_body) + end + def kube_pod_response kube_response(kube_pod) end @@ -34,6 +44,9 @@ module KubernetesHelpers WebMock .stub_request(:get, api_url + '/apis/rbac.authorization.k8s.io/v1') .to_return(kube_response(kube_v1_rbac_authorization_discovery_body)) + WebMock + .stub_request(:get, api_url + '/apis/metrics.k8s.io/v1beta1') + .to_return(kube_response(kube_metrics_v1beta1_discovery_body)) end def stub_kubeclient_discover_istio(api_url) @@ -76,6 +89,22 @@ module KubernetesHelpers WebMock.stub_request(:get, pods_url).to_return(response || kube_pods_response) end + def stub_kubeclient_nodes(api_url) + stub_kubeclient_discover_base(api_url) + + nodes_url = api_url + "/api/v1/nodes" + + WebMock.stub_request(:get, nodes_url).to_return(nodes_response) + end + + def stub_kubeclient_nodes_and_nodes_metrics(api_url) + stub_kubeclient_nodes(api_url) + + nodes_url = api_url + "/apis/metrics.k8s.io/v1beta1/nodes" + + WebMock.stub_request(:get, nodes_url).to_return(nodes_metrics_response) + end + def stub_kubeclient_pods(namespace, status: nil) stub_kubeclient_discover(service.api_url) pods_url = service.api_url + "/api/v1/namespaces/#{namespace}/pods" @@ -201,28 +230,8 @@ module KubernetesHelpers .to_return(kube_response({})) end - def stub_kubeclient_get_cluster_role_binding_error(api_url, name, status: 404) - WebMock.stub_request(:get, api_url + "/apis/rbac.authorization.k8s.io/v1/clusterrolebindings/#{name}") - .to_return(status: [status, "Internal Server Error"]) - end - - def stub_kubeclient_create_cluster_role_binding(api_url) - WebMock.stub_request(:post, api_url + '/apis/rbac.authorization.k8s.io/v1/clusterrolebindings') - .to_return(kube_response({})) - end - - def stub_kubeclient_get_role_binding(api_url, name, namespace: 'default') - WebMock.stub_request(:get, api_url + "/apis/rbac.authorization.k8s.io/v1/namespaces/#{namespace}/rolebindings/#{name}") - .to_return(kube_response({})) - end - - def stub_kubeclient_get_role_binding_error(api_url, name, namespace: 'default', status: 404) - WebMock.stub_request(:get, api_url + "/apis/rbac.authorization.k8s.io/v1/namespaces/#{namespace}/rolebindings/#{name}") - .to_return(status: [status, "Internal Server Error"]) - end - - def stub_kubeclient_create_role_binding(api_url, namespace: 'default') - WebMock.stub_request(:post, api_url + "/apis/rbac.authorization.k8s.io/v1/namespaces/#{namespace}/rolebindings") + def stub_kubeclient_put_cluster_role_binding(api_url, name) + WebMock.stub_request(:put, api_url + "/apis/rbac.authorization.k8s.io/v1/clusterrolebindings/#{name}") .to_return(kube_response({})) end @@ -274,6 +283,7 @@ module KubernetesHelpers { "kind" => "APIResourceList", "resources" => [ + { "name" => "nodes", "namespaced" => false, "kind" => "Node" }, { "name" => "pods", "namespaced" => true, "kind" => "Pod" }, { "name" => "deployments", "namespaced" => true, "kind" => "Deployment" }, { "name" => "secrets", "namespaced" => true, "kind" => "Secret" }, @@ -334,6 +344,16 @@ module KubernetesHelpers } end + def kube_metrics_v1beta1_discovery_body + { + "kind" => "APIResourceList", + "resources" => [ + { "name" => "nodes", "namespaced" => false, "kind" => "NodeMetrics" }, + { "name" => "pods", "namespaced" => true, "kind" => "PodMetrics" } + ] + } + end + def kube_istio_discovery_body { "kind" => "APIResourceList", @@ -462,6 +482,20 @@ module KubernetesHelpers } end + def nodes_body + { + "kind" => "NodeList", + "items" => [kube_node] + } + end + + def nodes_metrics_body + { + "kind" => "List", + "items" => [kube_node_metrics] + } + end + def kube_logs_body "2019-12-13T14:04:22.123456Z Log 1\n2019-12-13T14:04:23.123456Z Log 2\n2019-12-13T14:04:24.123456Z Log 3" end @@ -514,6 +548,40 @@ module KubernetesHelpers } end + # This is a partial response, it will have many more elements in reality but + # these are the ones we care about at the moment + def kube_node + { + "metadata" => { + "name" => NODE_NAME + }, + "status" => { + "capacity" => { + "cpu" => "2", + "memory" => "7657228Ki" + }, + "allocatable" => { + "cpu" => "1930m", + "memory" => "5777164Ki" + } + } + } + end + + # This is a partial response, it will have many more elements in reality but + # these are the ones we care about at the moment + def kube_node_metrics + { + "metadata" => { + "name" => NODE_NAME + }, + "usage" => { + "cpu" => "144208668n", + "memory" => "1789048Ki" + } + } + end + # Similar to a kube_pod, but should contain a running service def kube_knative_pod(name: "kube-pod", namespace: "default", status: "Running") { |