+##############################################################################
+# Copyright (c) 2019 AT&T Intellectual Property. #
+# Copyright (c) 2019 Nokia. #
+# #
+# Licensed under the Apache License, Version 2.0 (the "License"); #
+# you maynot 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. #
+##############################################################################
+
+
+*** Settings ***
+Documentation HA tests: etcd, api-server, controller-manager, scheduler
+Library SSHLibrary
+Library OperatingSystem
+Library BuiltIn
+Suite Setup Open Connection And Log In
+Suite Teardown Close All Connections
+
+*** Variables ***
+${HOST} localhost
+${USERNAME} localadmin
+${NODENAME} aknode109
+${LOG} /opt/akraino/validation/ha/print_etcd_api_ctl-manager_sch.txt
+
+
+## kubernetes-etcd
+
+*** Test Cases ***
+Verify etcd status
+ [Documentation] etcd label defined
+ ${output}= Execute Command date
+ Append To File ${LOG} ${output}${\n}
+ Start Command kubectl describe node ${NODENAME} | egrep "Labels|etcd" sudo=True
+ ${stdout}= Read Command Output
+ Append To File ${LOG} ${stdout}${\n}
+ Sleep 2s
+ Should Contain ${stdout} kubernetes-etcd=enabled
+
+
+Failure of etcd in node
+ [Documentation] kubernetes etcd removed
+ Start Command kubectl label node ${NODENAME} kubernetes-etcd- sudo=True
+ ${stdout}= Read Command Output
+ Append To File ${LOG} ${stdout}${\n}
+ Sleep 3s
+ Should Contain ${stdout} labeled
+ Sleep 40s
+ ${output}= Execute Command kubectl describe node ${NODENAME} | egrep "Labels|etcd" sudo=True
+ Append To File ${LOG} ${output}${\n}
+
+
+Enable etcd in node
+ [Documentation] etcd label re-established
+ Start Command kubectl label node ${NODENAME} kubernetes-etcd=enabled sudo=True
+ ${stdout}= Read Command Output
+ Append To File ${LOG} ${stdout}${\n}
+ Sleep 5s
+ Should Contain ${stdout} labeled
+ Sleep 40s
+ ${output}= Execute Command kubectl describe node ${NODENAME} | egrep "Labels|etcd" sudo=True
+ Append To File ${LOG} ${output}${\n}
+
+
+Verify etcd health
+ [Documentation] etcd endpoint healthy
+ Sleep 25s
+ Start Command kubectl exec -it -n kube-system kubernetes-etcd-${NODENAME} etcdctl endpoint health sudo=True
+ ${stdout}= Read Command Output
+ Append To File ${LOG} ${stdout}${\n}
+ Sleep 5s
+ Should Contain ${stdout} is healthy: successfully committed
+
+
+Check etcd node list
+ [Documentation] member list started
+ Start Command kubectl exec -it -n kube-system kubernetes-etcd-${NODENAME} etcdctl member list sudo=True
+ ${stdout}= Read Command Output
+ Append To File ${LOG} ${stdout}${\n}
+ Should Contain ${stdout} started, ${NODENAME}
+
+## kubernetes-api
+
+
+Verify api-server status
+ [Documentation] kubernetes api-server state
+ Start Command kubectl describe node ${NODENAME} | egrep 'Label|kubernetes-apiserver' sudo=True
+ ${stdout}= Read Command Output
+ Append To File ${LOG} ${stdout}${\n}
+ Sleep 2s
+ Should Contain ${stdout} kubernetes-apiserver=enabled
+
+
+Failure of api-server in node
+ [Documentation] kubernetes api-server removed
+ Start Command kubectl label node ${NODENAME} kubernetes-apiserver- sudo=True
+ ${stdout}= Read Command Output
+ Append To File ${LOG} ${stdout}${\n}
+ Sleep 3s
+ Should Contain ${stdout} labeled
+ Sleep 40s
+ ${output}= Execute Command kubectl describe node ${NODENAME} | egrep 'Label|kubernetes-apiserver' sudo=True
+ Append To File ${LOG} ${output}${\n}
+
+
+Enable api-server in node
+ [Documentation] api-serverd label re-established
+ Start Command kubectl label node ${NODENAME} kubernetes-apiserver=enabled sudo=True
+ ${stdout}= Read Command Output
+ Append To File ${LOG} ${stdout}${\n}
+ Sleep 5s
+ Should Contain ${stdout} labeled
+ Sleep 30s
+
+
+Check api-server status
+ [Documentation] kubernetes api-server re-established
+ Start Command kubectl describe node ${NODENAME} | egrep 'Label|kubernetes-apiserver' sudo=True
+ ${stdout}= Read Command Output
+ Append To File ${LOG} ${stdout}${\n}
+ Sleep 2s
+ Should Contain ${stdout} kubernetes-apiserver=enabled
+
+##kubernetes controller-manager
+
+Verify controller-manager status
+ [Documentation] kubernetes controller-manager state
+ Start Command kubectl describe node ${NODENAME} | egrep 'Label|controller-manager' sudo=True
+ ${stdout}= Read Command Output
+ Append To File ${LOG} ${stdout}${\n}
+ Sleep 2s
+ Should Contain ${stdout} kubernetes-controller-manager=enabled
+
+
+Failure of controller-manager in node
+ [Documentation] kubernetes controller removed
+ Start Command kubectl label node ${NODENAME} kubernetes-controller-manager- sudo=True
+ ${stdout}= Read Command Output
+ Append To File ${LOG} ${stdout}${\n}
+ Sleep 3s
+ Should Contain ${stdout} labeled
+ Sleep 40s
+ ${output}= Execute Command kubectl describe node ${NODENAME} | egrep 'Label|controller-manager' sudo=True
+ Append To File ${LOG} ${output}${\n}
+
+
+Enable controller-manager in node
+ [Documentation] controller-manager re-established
+ Start Command kubectl label node ${NODENAME} kubernetes-controller-manager=enabled sudo=True
+ ${stdout}= Read Command Output
+ Append To File ${LOG} ${stdout}${\n}
+ Sleep 5s
+ Should Contain ${stdout} labeled
+ Sleep 30s
+
+
+Check controller-manager status
+ [Documentation] kubernetes controller-manager re-established
+ Start Command kubectl describe node ${NODENAME} | egrep 'Label|controller-manager' sudo=True
+ ${stdout}= Read Command Output
+ Append To File ${LOG} ${stdout}${\n}
+ Sleep 2s
+ Should Contain ${stdout} kubernetes-controller-manager=enabled
+
+## kubernetes-scheduler
+
+Verify k8s-scheduler status
+ [Documentation] kubernetes scheduler state
+ Start Command kubectl describe node ${NODENAME} | egrep 'Label|scheduler' sudo=True
+ ${stdout}= Read Command Output
+ Append To File ${LOG} ${stdout}${\n}
+ Sleep 2s
+ Should Contain ${stdout} kubernetes-scheduler=enabled
+
+
+Failure of scheduler in node
+ [Documentation] kubernetes scheduler removed
+ Start Command kubectl label node ${NODENAME} kubernetes-scheduler- sudo=True
+ ${stdout}= Read Command Output
+ Append To File ${LOG} ${stdout}${\n}
+ Sleep 3s
+ Should Contain ${stdout} labeled
+ Sleep 40s
+ ${output}= Execute Command kubectl describe node ${NODENAME} | egrep 'Label|scheduler' sudo=True
+ Append To File ${LOG} ${output}${\n}
+
+
+Enable scheduler in node
+ [Documentation] scheduler re-established
+ Start Command kubectl label node ${NODENAME} kubernetes-scheduler=enabled sudo=True
+ ${stdout}= Read Command Output
+ Append To File ${LOG} ${stdout}${\n}
+ Sleep 5s
+ Should Contain ${stdout} labeled
+ Sleep 30s
+
+
+Check k8s scheduler status
+ [Documentation] kubernetes scheduler re-established
+ Start Command kubectl describe node ${NODENAME} | egrep 'Label|scheduler' sudo=True
+ ${stdout}= Read Command Output
+ Append To File ${LOG} ${stdout}${\n}
+ Sleep 2s
+ Should Contain ${stdout} kubernetes-scheduler=enabled
+
+
+*** Keywords ***
+Open Connection And Log In
+ Open Connection ${HOST}
+ Login With Public Key ${USERNAME} /root/.ssh/${USERNAME}_id_rsa
+