aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--INFO.yaml95
-rw-r--r--src/k8splugin/api/api.go3
-rw-r--r--src/k8splugin/api/healthcheckhandler.go35
-rw-r--r--src/k8splugin/api/healthcheckhandler_test.go58
-rw-r--r--src/k8splugin/internal/db/testing.go4
5 files changed, 153 insertions, 42 deletions
diff --git a/INFO.yaml b/INFO.yaml
index 2bd41fdb..d808cb30 100644
--- a/INFO.yaml
+++ b/INFO.yaml
@@ -21,12 +21,12 @@ mailing_list:
realtime_discussion: ''
meetings:
- type: 'zoom'
- agenda: 'https://wiki.onap.org/pages/viewpage.action?pageId=6591499'
- url: 'https://wiki.onap.org/pages/viewpage.action?pageId=6591499'
- server: 'n/a'
- channel: 'n/a'
- repeats: 'weekly'
- time: '13:00 UTC'
+ agenda: 'https://wiki.onap.org/pages/viewpage.action?pageId=6591499'
+ url: 'https://wiki.onap.org/pages/viewpage.action?pageId=6591499'
+ server: 'n/a'
+ channel: 'n/a'
+ repeats: 'weekly'
+ time: '13:00 UTC'
repositories:
- 'multicloud-framework'
- 'multicloud-openstack'
@@ -38,51 +38,62 @@ repositories:
committers:
- <<: *onap_multicloud_ptl
- name: 'Anbing Zhang'
- email: 'zhanganbing@chinamobile.com'
- company: 'China Mobile'
- id: 'zhangab'
- timezone: ''
+ email: 'zhanganbing@chinamobile.com'
+ company: 'China Mobile'
+ id: 'zhangab'
+ timezone: 'Asia/Shanghai'
- name: 'Xinhui Li'
- email: 'lxinhui@vmware.com'
- id: 'xinhuili'
- company: 'VMware'
- timezone: 'China/Beijing'
+ email: 'lxinhui@vmware.com'
+ id: 'xinhuili'
+ company: 'VMware'
+ timezone: 'Asia/Shanghai'
- name: 'Bin Hu'
- email: 'bh526r@att.com'
- company: 'ATT'
- id: 'bh526r'
- timezone: 'America/Palo Alto'
+ email: 'bh526r@att.com'
+ company: 'ATT'
+ id: 'bh526r'
+ timezone: 'America/Los_Angeles'
- name: 'Victor Morales'
- email: 'victor.morales@intel.com'
- company: 'Intel'
- id: 'electrocucaracha'
- timezone: ''
+ email: 'victor.morales@intel.com'
+ company: 'Intel'
+ id: 'electrocucaracha'
+ timezone: 'America/Los_Angeles'
- name: 'Ethan Lynn'
- email: 'ethanlynnl@vmware.com'
- company: 'VMWare'
- id: 'ethanlynnl'
- timezone: ''
+ email: 'ethanlynnl@vmware.com'
+ company: 'VMWare'
+ id: 'ethanlynnl'
+ timezone: 'Asia/Shanghai'
- name: 'Huang Haibin'
- email: 'haibin.huang@intel.com'
- company: 'Intel'
- id: 'haibin'
- timezone: ''
+ email: 'haibin.huang@intel.com'
+ company: 'Intel'
+ id: 'haibin'
+ timezone: 'Asia/Shanghai'
- name: 'Sudhakar Reddy'
- email: 'Sudhakar.Reddy@amdocs.com'
- company: 'Amdocs'
- id: 'SudhakarReddy'
- timezone: ''
+ email: 'Sudhakar.Reddy@amdocs.com'
+ company: 'Amdocs'
+ id: 'SudhakarReddy'
+ timezone: 'Asia/Kolkata'
+ - name: 'Xiaohua Zhang'
+ email: 'Xiaohua.Zhang@windriver.com'
+ company: 'Wind River'
+ id: 'Xiaohua626'
+ timezone: 'Asia/Shanghai'
tsc:
approval: 'https://lists.onap.org/pipermail/onap-tsc'
changes:
- type: 'Addition'
- name: 'yun huang'
- name: 'Victor Morales'
- name: 'Ethan Lynn'
- name: 'Huang Haibin'
- name: 'Sudhakar Reddy'
+ name:
+ - 'yun huang'
+ - 'Victor Morales'
+ - 'Ethan Lynn'
+ - 'Huang Haibin'
+ - 'Sudhakar Reddy'
link: 'http://ircbot.wl.linuxfoundation.org/meetings/onap-meeting/2018/onap-meeting.2018-08-16-13.45.html'
- type: 'Remove'
- name: 'yun huang'
- name: 'Ke Liang'
- name: 'Andrew Philip'
+ name:
+ - 'yun huang'
+ - 'Ke Liang'
+ - 'Andrew Philip'
+ link: 'https://lists.onap.org/g/onap-tsc/message/4635'
+ - type: 'Addition'
+ name: 'Xiaohua Zhang'
+ link: 'https://lists.onap.org/g/onap-tsc/message/4772'
diff --git a/src/k8splugin/api/api.go b/src/k8splugin/api/api.go
index 741c0639..5fed28a0 100644
--- a/src/k8splugin/api/api.go
+++ b/src/k8splugin/api/api.go
@@ -101,5 +101,8 @@ func NewRouter(defClient rb.DefinitionManager,
resRouter.HandleFunc("/definition/{rbname}/{rbversion}/profile/{prname}/config/rollback", configHandler.rollbackHandler).Methods("POST")
resRouter.HandleFunc("/definition/{rbname}/{rbversion}/profile/{prname}/config/tagit", configHandler.tagitHandler).Methods("POST")
+ // Add healthcheck path
+ instRouter.HandleFunc("/healthcheck", healthCheckHandler).Methods("GET")
+
return router
}
diff --git a/src/k8splugin/api/healthcheckhandler.go b/src/k8splugin/api/healthcheckhandler.go
new file mode 100644
index 00000000..79b7b7ef
--- /dev/null
+++ b/src/k8splugin/api/healthcheckhandler.go
@@ -0,0 +1,35 @@
+/*
+ * Copyright 2018 Intel Corporation, Inc
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package api
+
+import (
+ "net/http"
+
+ "k8splugin/internal/db"
+)
+
+// healthCheckHandler executes a db read to return health of k8splugin
+// and its backing database
+func healthCheckHandler(w http.ResponseWriter, r *http.Request) {
+ err := db.DBconn.HealthCheck()
+ if err != nil {
+ http.Error(w, err.Error(), http.StatusInternalServerError)
+ return
+ }
+
+ w.WriteHeader(http.StatusOK)
+}
diff --git a/src/k8splugin/api/healthcheckhandler_test.go b/src/k8splugin/api/healthcheckhandler_test.go
new file mode 100644
index 00000000..c2e1888e
--- /dev/null
+++ b/src/k8splugin/api/healthcheckhandler_test.go
@@ -0,0 +1,58 @@
+/*
+ * Copyright 2018 Intel Corporation, Inc
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package api
+
+import (
+ "net/http"
+ "net/http/httptest"
+ "testing"
+
+ "k8splugin/internal/db"
+
+ pkgerrors "github.com/pkg/errors"
+)
+
+// healthCheckHandler executes a db read to return health of k8splugin
+// and its backing database
+func TestHealthCheckHandler(t *testing.T) {
+
+ t.Run("OK HealthCheck", func(t *testing.T) {
+ db.DBconn = &db.MockDB{
+ Err: nil,
+ }
+ request := httptest.NewRequest("GET", "/v1/healthcheck", nil)
+ resp := executeRequest(request, NewRouter(nil, nil, nil, nil, nil))
+
+ //Check returned code
+ if resp.StatusCode != http.StatusOK {
+ t.Fatalf("Expected %d; Got: %d", http.StatusOK, resp.StatusCode)
+ }
+ })
+
+ t.Run("FAILED HealthCheck", func(t *testing.T) {
+ db.DBconn = &db.MockDB{
+ Err: pkgerrors.New("Runtime Error in DB"),
+ }
+ request := httptest.NewRequest("GET", "/v1/healthcheck", nil)
+ resp := executeRequest(request, NewRouter(nil, nil, nil, nil, nil))
+
+ //Check returned code
+ if resp.StatusCode != http.StatusInternalServerError {
+ t.Fatalf("Expected %d; Got: %d", http.StatusInternalServerError, resp.StatusCode)
+ }
+ })
+}
diff --git a/src/k8splugin/internal/db/testing.go b/src/k8splugin/internal/db/testing.go
index 1fefd63c..5f69dcb4 100644
--- a/src/k8splugin/internal/db/testing.go
+++ b/src/k8splugin/internal/db/testing.go
@@ -35,6 +35,10 @@ type MockDB struct {
Err error
}
+func (m *MockDB) HealthCheck() error {
+ return m.Err
+}
+
func (m *MockDB) Create(table string, key Key, tag string, data interface{}) error {
return m.Err
}