+#installs kubernetes packages
+function install_kube() {
+ sudo apt-get update && sudo apt-get install -y apt-transport-https
+ curl -fsSL https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add -
+ sudo add-apt-repository "deb https://apt.kubernetes.io/ kubernetes-xenial main"
+ sudo apt-get update
+ echo "Installing Kubernetes Packages ..."
+ sudo apt-get install -y kubelet=1.15.0-00 kubeadm=1.15.0-00 kubectl=1.15.0-00
+}
+
+#initializes kubernetes control plane
+function init_kubeadm() {
+ sudo swapoff -a
+ sudo kubeadm init --config $1
+ sleep 5
+}
+
+function kube_config_dir() {
+ [ ! -d $K8S_MANIFEST_DIR ] && FATAL "Cannot Install Kubernetes"
+ mkdir -p $HOME/.kube
+ sudo cp /etc/kubernetes/admin.conf $HOME/.kube/config
+ sudo chown $(id -u):$(id -g) $HOME/.kube/config
+}
+
+#deploys flannel as daemonsets
+function deploy_cni_provider() {
+ CNI_DIR="$(mktemp -d -q --tmpdir "flannel.XXXXXX")"
+ trap 'rm -rf "${CNI_DIR}"' EXIT
+ wget -q https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml -P $CNI_DIR
+ kubectl apply -f $CNI_DIR
+ [ $? -ne 0 ] && FATAL "Cannot Install Flannel"
+}
+
+#creates secrets from env files which will be used by containers
+function kube_secrets(){
+ kubectl create ns $OSM_STACK_NAME
+ kubectl create secret generic lcm-secret -n $OSM_STACK_NAME --from-env-file=$OSM_DOCKER_WORK_DIR/lcm.env
+ kubectl create secret generic mon-secret -n $OSM_STACK_NAME --from-env-file=$OSM_DOCKER_WORK_DIR/mon.env
+ kubectl create secret generic nbi-secret -n $OSM_STACK_NAME --from-env-file=$OSM_DOCKER_WORK_DIR/nbi.env
+ kubectl create secret generic ro-db-secret -n $OSM_STACK_NAME --from-env-file=$OSM_DOCKER_WORK_DIR/ro-db.env
+ kubectl create secret generic ro-secret -n $OSM_STACK_NAME --from-env-file=$OSM_DOCKER_WORK_DIR/ro.env
+ kubectl create secret generic keystone-secret -n $OSM_STACK_NAME --from-env-file=$OSM_DOCKER_WORK_DIR/keystone.env
+ kubectl create secret generic lwui-secret -n $OSM_STACK_NAME --from-env-file=$OSM_DOCKER_WORK_DIR/lwui.env
+ kubectl create secret generic pol-secret -n $OSM_STACK_NAME --from-env-file=$OSM_DOCKER_WORK_DIR/pol.env
+}
+
+#deploys osm pods and services
+function deploy_osm_services() {
+ K8S_MASTER=$(kubectl get nodes | awk '$3~/master/'| awk '{print $1}')
+ kubectl taint node $K8S_MASTER node-role.kubernetes.io/master:NoSchedule-
+ sleep 5
+ kubectl apply -n $OSM_STACK_NAME -f $OSM_K8S_WORK_DIR
+}
+
+function parse_yaml() {
+ osm_services="nbi lcm ro pol mon light-ui keystone"
+ TAG=$1
+ for osm in $osm_services; do
+ $WORKDIR_SUDO sed -i "s/opensourcemano\/$osm:.*/opensourcemano\/$osm:$TAG/g" $OSM_K8S_WORK_DIR/$osm.yaml
+ done
+}
+
+function namespace_vol() {
+ osm_services="nbi lcm ro pol mon kafka mongo mysql"
+ for osm in $osm_services; do
+ $WORKDIR_SUDO sed -i "s#path: /var/lib/osm#path: $OSM_NAMESPACE_VOL#g" $OSM_K8S_WORK_DIR/$osm.yaml
+ done
+}
+