summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--monitor/monitoring.sh3
-rw-r--r--monitor/uninstall.py1
-rw-r--r--requirements/requirements.txt1
-rw-r--r--utils/env_prepare/config_prepare.sh4
-rwxr-xr-xutils/infra_setup/heat/common.py16
-rw-r--r--utils/k8s_setup/__init__.py0
-rw-r--r--utils/k8s_setup/golang_install.sh100
-rw-r--r--utils/k8s_setup/k8s_config_pre.sh66
-rw-r--r--utils/k8s_setup/k8s_env.sh13
-rw-r--r--utils/k8s_setup/k8s_utils.py56
-rw-r--r--utils/k8s_setup/kubectl_install.sh33
11 files changed, 282 insertions, 11 deletions
diff --git a/monitor/monitoring.sh b/monitor/monitoring.sh
index 26b63fc5..758f77ec 100644
--- a/monitor/monitoring.sh
+++ b/monitor/monitoring.sh
@@ -52,7 +52,7 @@ while [[ $# > 0 ]]
INSTALLER_TYPE="$2"
shift
;;
- -i|--openstack-env)
+ -o|--openstack-env)
OPENSTACK_ENV="$2"
shift
;;
@@ -104,7 +104,6 @@ sudo docker run --name bottlenecks-node-exporter \
-v "/proc:/host/proc:ro" \
-v "/sys:/host/sys:ro" \
-v "/:/rootfs:ro" \
- --net="host" \
quay.io/prometheus/node-exporter:v0.14.0 \
-collector.procfs /host/proc \
-collector.sysfs /host/sys \
diff --git a/monitor/uninstall.py b/monitor/uninstall.py
index 3a9cf0c7..26351722 100644
--- a/monitor/uninstall.py
+++ b/monitor/uninstall.py
@@ -50,3 +50,4 @@ local_del_docker('cadvisor')
local_del_docker('barometer')
local_del_docker('grafana')
local_del_docker('collectd')
+local_del_docker('openstack-exporter')
diff --git a/requirements/requirements.txt b/requirements/requirements.txt
index dacffcea..381cb5cd 100644
--- a/requirements/requirements.txt
+++ b/requirements/requirements.txt
@@ -18,3 +18,4 @@ nose==1.3.7
pyroute2==0.4.10
elasticsearch==5.0.1
docker==2.0.2
+kubernetes==6.0.0
diff --git a/utils/env_prepare/config_prepare.sh b/utils/env_prepare/config_prepare.sh
index b13b5a02..8de60438 100644
--- a/utils/env_prepare/config_prepare.sh
+++ b/utils/env_prepare/config_prepare.sh
@@ -155,7 +155,7 @@ if [[ ${INSTALLER_TYPE} != "" ]]; then
echo "export OS_CACERT=${OS_CACERT}" >> ${OPENRC}
cat ${OPENRC}
else
- error "Couldn't find openstack cacert file: ${OS_CACERT}, please check if the it's been properly provided."
+ info "Couldn't find openstack cacert file: ${OS_CACERT}, please check if the it's been properly provided."
fi
else
error "Couldn't find openstack rc file: ${OPENRC}, please check if the it's been properly provided."
@@ -166,6 +166,6 @@ if [[ ${INSTALLER_TYPE} != "" ]]; then
if [[ -f "/tmp/id_rsa" ]]; then
info "Path of ssh key file for openstack nodes is /tmp/id_rsa"
else
- error "Couldn't find the ssh key file for openstack nodes. If you are using user/pwd in pod.yaml, please ignore."
+ info "Couldn't find the ssh key file for openstack nodes. If you are using user/pwd in pod.yaml, please ignore."
fi
fi
diff --git a/utils/infra_setup/heat/common.py b/utils/infra_setup/heat/common.py
index a0d6d83c..f0512b0f 100755
--- a/utils/infra_setup/heat/common.py
+++ b/utils/infra_setup/heat/common.py
@@ -66,14 +66,16 @@ def get_session_auth():
def get_session():
auth = get_session_auth()
- try:
- cacert = os.environ['OS_CACERT']
- except KeyError:
- return session.Session(auth=auth)
- else:
- insecure = os.getenv('OS_INSECURE', '').lower() == 'true'
- cacert = False if insecure else cacert
+ if os.getenv('OS_INSECURE', '').lower() == 'true':
+ cacert = False
return session.Session(auth=auth, verify=cacert)
+ else:
+ try:
+ cacert = os.environ['OS_CACERT']
+ except KeyError:
+ return session.Session(auth=auth)
+ else:
+ return session.Session(auth=auth, verify=cacert)
def get_endpoint(service_type, endpoint_type='publicURL'):
diff --git a/utils/k8s_setup/__init__.py b/utils/k8s_setup/__init__.py
new file mode 100644
index 00000000..e69de29b
--- /dev/null
+++ b/utils/k8s_setup/__init__.py
diff --git a/utils/k8s_setup/golang_install.sh b/utils/k8s_setup/golang_install.sh
new file mode 100644
index 00000000..06c54cee
--- /dev/null
+++ b/utils/k8s_setup/golang_install.sh
@@ -0,0 +1,100 @@
+#!/bin/bash
+##############################################################################
+# Copyright (c) 2018 Huawei Technologies Co.,Ltd and others.
+# All rights reserved. This program and the accompanying materials
+# are made available under the terms of the Apache License, Version 2.0
+# which accompanies this distribution, and is available at
+# http://www.apache.org/licenses/LICENSE-2.0
+##############################################################################
+usage="Script to install and config golang of specific version.
+
+usage:
+ bash $(basename "$0") [-h|--help] [-v|--version <version>] [--debug]
+
+where:
+ -h|--help show the help text
+ -v|--version input the version of golang
+ --debug debug option switch
+examples:
+ $(basename "$0") -v 1.10.3"
+
+# Debug option
+redirect="/dev/null"
+
+# Process input variables
+while [[ $# > 0 ]]
+ do
+ key="$1"
+ case $key in
+ -h|--help)
+ echo "$usage"
+ exit 0
+ shift
+ ;;
+ -v|--version)
+ GOLANG_VERSION="$2"
+ shift
+ ;;
+ --debug)
+ redirect="/dev/stdout"
+ shift
+ ;;
+ *)
+ echo "unkown option $1 $2"
+ exit 1
+ ;;
+ esac
+ shift
+done
+
+#set -e
+
+echo "=======Downloading golang of version: ${GOLANG_VERSION}========"
+
+if [[ -f go${GOLANG_VERSION}.linux-amd64.tar.gz ]]; then
+ rm go${GOLANG_VERSION}.linux-amd64.tar.gz
+fi
+curl -O https://storage.googleapis.com/golang/go${GOLANG_VERSION}.linux-amd64.tar.gz >${redirect}
+
+echo "Installing golang of version: ${GOLANG_VERSION}"
+if [[ -d /usr/local/go ]]; then
+ rm -rf /usr/local/go
+fi
+
+tar -C /usr/local -xzf go${GOLANG_VERSION}.linux-amd64.tar.gz >${redirect}
+
+if [[ -d $HOME/go ]]; then
+ rm -rf ${HOME}/go
+ mkdir ${HOME}/go
+ mkdir ${HOME}/go/bin
+ mkdir ${HOME}/go/src
+else
+ mkdir ${HOME}/go
+ mkdir ${HOME}/go/bin
+ mkdir ${HOME}/go/src
+fi
+
+echo "Adding golang env to ~/.bashrc"
+GOROOT=/usr/local/go
+GOPATH=${HOME}/go
+
+if [[ $(cat ${HOME}/.bashrc | grep GOROOT) ]]; then
+ echo "golang env alreay in ${HOME}/.bashrc"
+else
+ cat <<EOF >> ${HOME}/.bashrc
+
+export GOROOT=/usr/local/go
+export GOPATH=${HOME}/go
+export PATH=${PATH}:${GOROOT}/bin:${GOPATH}/bin
+EOF
+fi
+
+export GOROOT=/usr/local/go
+export GOPATH=${HOME}/go
+export PATH=${PATH}:${GOROOT}/bin:${GOPATH}/bin
+
+echo "Running go version command:"
+go version
+
+echo "=======Installation of golang-${GOLANG_VERSION} complete======="
+
diff --git a/utils/k8s_setup/k8s_config_pre.sh b/utils/k8s_setup/k8s_config_pre.sh
new file mode 100644
index 00000000..f41ba78d
--- /dev/null
+++ b/utils/k8s_setup/k8s_config_pre.sh
@@ -0,0 +1,66 @@
+#!/bin/bash
+##############################################################################
+# Copyright (c) 2018 Huawei Tech and others.
+#
+# All rights reserved. This program and the accompanying materials
+# are made available under the terms of the Apache License, Version 2.0
+# which accompanies this distribution, and is available at
+# http://www.apache.org/licenses/LICENSE-2.0
+##############################################################################
+K8S_CONFIG="/tmp/k8s_conig"
+
+usage="Script to prepare kubenetes test configurations.
+
+usage:
+ bash $(basename "$0") [-h|--help] [-i|--installer <installer typer>] [-c|--config <k8s config>]
+
+where:
+ -h|--help show the help text
+ -i|--installer specify the installer for the system to be monitored
+ <installer type>
+ one of the following:
+ (compass)
+examples:
+ $(basename "$0") -i compass"
+
+
+info () {
+ logger -s -t "BOTTLENECKS INFO" "$*"
+}
+
+error () {
+ logger -s -t "BOTTLENECKS ERROR" "$*"
+ exit 1
+}
+
+# Process input variables
+while [[ $# > 0 ]]
+ do
+ key="$1"
+ case $key in
+ -h|--help)
+ echo "$usage"
+ exit 0
+ shift
+ ;;
+ -i|--installer)
+ INSTALLER_TYPE="$2"
+ shift
+ ;;
+ -c|--config)
+ K8S_CONFIG="$2"
+ shift
+ ;;
+ *)
+ error "unkown input options $1 $2"
+ exit 1
+ ;;
+ esac
+ shift
+done
+
+if [[ ${INSTALLER_TYPE} == 'compass' ]]; then
+ sshpass -p root scp root@192.16.1.222:~/.kube/config ${K8S_CONFIG}
+else
+ echo "BOTTLENECKS EROOR: unrecognized installer"
+fi
diff --git a/utils/k8s_setup/k8s_env.sh b/utils/k8s_setup/k8s_env.sh
new file mode 100644
index 00000000..855dea2f
--- /dev/null
+++ b/utils/k8s_setup/k8s_env.sh
@@ -0,0 +1,13 @@
+#!/bin/bash
+##############################################################################
+# Copyright (c) 2018 Huawei Technologies Co.,Ltd and others.
+# All rights reserved. This program and the accompanying materials
+# are made available under the terms of the Apache License, Version 2.0
+# which accompanies this distribution, and is available at
+# http://www.apache.org/licenses/LICENSE-2.0
+##############################################################################
+
+export GOROOT=/usr/local/go
+export GOPATH=${HOME}/go
+export PATH=${PATH}:${GOROOT}/bin:${GOPATH}/bin
+
diff --git a/utils/k8s_setup/k8s_utils.py b/utils/k8s_setup/k8s_utils.py
new file mode 100644
index 00000000..7195bf23
--- /dev/null
+++ b/utils/k8s_setup/k8s_utils.py
@@ -0,0 +1,56 @@
+#!/usr/bin/env python
+##############################################################################
+# Copyright (c) 2018 Huawei Technologies Co.,Ltd and others.
+#
+# All rights reserved. This program and the accompanying materials
+# are made available under the terms of the Apache License, Version 2.0
+# which accompanies this distribution, and is available at
+# http://www.apache.org/licenses/LICENSE-2.0
+##############################################################################
+
+import os
+import utils.logger as log
+from kubernetes import client, watch
+
+
+LOG = log.Logger(__name__).getLogger()
+INSTALLER_TYPE = os.getenv("INSTALLER_TYPE")
+
+
+def get_config_path(INSTALLER_TYPE=None, CONFIG_PATH="/tmp/k8s_config"):
+ if INSTALLER_TYPE:
+ CMD = "bash k8s_config_pre.sh -i " + INSTALLER_TYPE + \
+ " -c " + CONFIG_PATH
+ LOG.info("Executing command: " + CMD)
+ CONFIG_PATH = os.popen(CMD)
+ else:
+ if not os.path.exists(CONFIG_PATH):
+ raise Exception("Must at least specify the path \
+of k8s config!")
+ return CONFIG_PATH
+
+
+def get_core_api(version='v1'):
+ if version.lower() == 'v1':
+ API = client.CoreV1Api()
+ LOG.info(API)
+ else:
+ raise Exception("Must input a validate verison!")
+ return API
+
+
+def watch_namespace(namespace, count=3, stop=None, request_timeout=0):
+ w = watch.Watch()
+ LOG.debug("Watch object generated: {}".format(w))
+ LOG.info("Watch stream generated: {}".format(
+ w.stream(namespace, _request_timeout=request_timeout)))
+ for event in w.stream(namespace, _request_timeout=request_timeout):
+ LOG.info("Event: %s %s" %
+ (event['type'], event['object'].metadata.name))
+ if event['object'].metadata.name == stop:
+ LOG.info("Namesapce successfully added.\n")
+ w.stop()
+ count -= 1
+ if not count:
+ LOG.info("Ended.\n")
+ w.stop()
diff --git a/utils/k8s_setup/kubectl_install.sh b/utils/k8s_setup/kubectl_install.sh
new file mode 100644
index 00000000..14f97f2b
--- /dev/null
+++ b/utils/k8s_setup/kubectl_install.sh
@@ -0,0 +1,33 @@
+#!/bin/bash
+##############################################################################
+# Copyright (c) 2018 Huawei Tech and others.
+#
+# All rights reserved. This program and the accompanying materials
+# are made available under the terms of the Apache License, Version 2.0
+# which accompanies this distribution, and is available at
+# http://www.apache.org/licenses/LICENSE-2.0
+##############################################################################
+
+OS_TYPE=$(uname -a)
+OS_UBUNTU=$(echo $OS_TYPE | grep ubuntu)
+
+if [[ $OS_UBUNTU ]]; then
+ apt-get update && apt-get install -y apt-transport-https
+ curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | apt-key add -
+ touch /etc/apt/sources.list.d/kubernetes.list
+ echo "deb http://apt.kubernetes.io/ kubernetes-xenial main" | tee -a /etc/apt/sources.list.d/kubernetes.list
+ apt-get update
+ apt-get install -y kubectl
+else
+ cat <<EOF > /etc/yum.repos.d/kubernetes.repo
+[kubernetes]
+name=Kubernetes
+baseurl=https://packages.cloud.google.com/yum/repos/kubernetes-el7-x86_64
+enabled=1
+gpgcheck=1
+repo_gpgcheck=1
+gpgkey=https://packages.cloud.google.com/yum/doc/yum-key.gpg https://packages.cloud.google.com/yum/doc/rpm-package-key.gpg
+EOF
+ yum install -y kubectl
+fi
+