f39d53595c52c9910c6ffd510ddd1cef63a0131b
[icn.git] / tools / software-bom.sh
1 #!/bin/bash
2 set -eu -o pipefail
3
4 SCRIPTDIR="$(readlink -f $(dirname ${BASH_SOURCE[0]}))"
5 LIBDIR="$(dirname ${SCRIPTDIR})/env/lib"
6 ICNDIR="$(dirname ${SCRIPTDIR})"
7
8 source $LIBDIR/common.sh
9
10 function table_header {
11     cat <<EOF
12 |Component|Version|
13 |---|---|
14 EOF
15 }
16
17 function jump_server_os {
18     case $(awk '/m.vm.box = / {print $3}' ${ICNDIR}/Vagrantfile | tr -d "'") in
19         "intergratedcloudnative/ubuntu2004") version="Ubuntu 20.04" ;;
20         *) version="UNKNOWN" ;;
21     esac
22     echo "|OS|${version}|"
23 }
24
25 function kubespray_version {
26     awk -F= '/KUBESPRAY_VERSION=/ {print $2}' ${ICNDIR}/deploy/kud/kud_bm_launch.sh
27 }
28  
29 function jump_server_k8s {
30     local -r version=$(curl -sL https://raw.githubusercontent.com/kubernetes-sigs/kubespray/v$(kubespray_version)/roles/kubespray-defaults/defaults/main.yaml | awk '/kube_version:/ {print $2}')
31     echo "|K8s|${version} (Kubespray $(kubespray_version))|"
32 }
33
34 function jump_server_cri {
35     local -r version=$(curl -sL https://raw.githubusercontent.com/kubernetes-sigs/kubespray/v$(kubespray_version)/roles/container-engine/docker/defaults/main.yml | awk '/docker_version:/ {print $2}' | tr -d "'")
36     echo "|Docker|${version} (Kubespray $(kubespray_version))|"
37 }
38
39 function jump_server_cni {
40     # kud/hosting_providers/vagrant/inventory/group_vars/k8s-cluster.yml:kube_network_plugin: flannel
41     local -r version=$(curl -sL https://raw.githubusercontent.com/kubernetes-sigs/kubespray/v$(kubespray_version)/roles/download/defaults/main.yml | awk '/flannel_version:/ {print $2}' | tr -d '"')
42     echo "|Flannel|${version} (Kubespray $(kubespray_version))|"
43 }
44
45 function jump_server_addons {
46     cat <<EOF
47 |Ironic|${BMO_VERSION}|
48 |cert-manager|${CERT_MANAGER_VERSION}|
49 |Bare Metal Operator|${BMO_VERSION}|
50 |Cluster API|${CAPI_VERSION}|
51 |Flux|${FLUX_VERSION}|
52 EOF
53 }
54
55 function jump_server {
56     table_header
57     jump_server_os
58     jump_server_k8s
59     jump_server_cri
60     jump_server_cni
61     jump_server_addons
62 }
63
64 function compute_cluster_os {
65     case $(awk '/imageName:/ {print $2}' ${ICNDIR}/deploy/cluster/values.yaml) in
66         "focal-server-cloudimg-amd64.img") version="Ubuntu 20.04" ;;
67         *) version="UNKNOWN" ;;
68     esac
69     echo "|OS|${version}|"
70 }
71
72 function compute_cluster_k8s {
73     local -r version=$(awk '/k8sVersion:/ {print $2}' ${ICNDIR}/deploy/cluster/values.yaml)
74     echo "|K8s|${version}|"
75 }
76
77 function compute_cluster_cri {
78     local -r version=$(awk '/containerdVersion:/ {print $2}' ${ICNDIR}/deploy/cluster/values.yaml)
79     echo "|containerd|${version}|"
80 }
81
82 function compute_cluster_cni {
83     echo "|Calico|${CALICO_VERSION}|"
84 }
85
86 function git_repository_tag {
87     local -r source_yaml=$1
88     awk '/tag:/ {print $2}' ${source_yaml}
89 }
90
91 function image_tag {
92     local -r source_yaml=$1
93     local -r image_name=$2
94     awk -F: '/image:.*'"${image_name}"'/ {print $3}' ${source_yaml} | tr -d '"' 
95 }
96
97 function ref_tag {
98     local -r kustomization_yaml=$1
99     awk -F= '/?ref=/ {print $2}' ${kustomization_yaml} | tr -d "'"
100 }
101
102 function compute_cluster_addons {
103     cat <<EOF
104 |Containerized Data Importer|${CDI_VERSION}|
105 |cert-manager|${CERT_MANAGER_VERSION}|
106 |CPU Manager for Kubernetes|${CPU_MANAGER_VERSION}|
107 |EMCO|$(git_repository_tag ${ICNDIR}/deploy/site/cluster-emco-management/emco-source.yaml)|
108 |Flux|${FLUX_VERSION}|
109 |Intel Network Adapter Virtual Function Driver Installer|$(image_tag ${ICNDIR}/deploy/iavf-driver-installer/icn/daemonset.yaml iavf-driver-installer)|
110 |Istio|$(git_repository_tag ${ICNDIR}/deploy/site/cluster-addons/istio-source.yaml)|
111 |Kata Containers|${KATA_VERSION}|
112 |KubeVirt|${KUBEVIRT_VERSION}|
113 |Multus|${MULTUS_VERSION}|
114 |Node Feature Discovery|$(ref_tag ${ICNDIR}/deploy/node-feature-discovery/icn/kustomization.yaml)|
115 |Nodus|${NODUS_VERSION}|
116 |Intel QAT Device Plugin|${QAT_VERSION}|
117 |Intel QAT Driver Installer|$(image_tag ${ICNDIR}/deploy/qat-driver-installer/icn/daemonset.yaml qat-driver-installer)|
118 |SR-IOV Network Operator|$(git_repository_tag ${ICNDIR}/deploy/sriov-network-operator/icn/source.yaml)|
119 EOF
120 }
121
122 function compute_cluster {
123     table_header
124     compute_cluster_os
125     compute_cluster_k8s
126     compute_cluster_cri
127     compute_cluster_cni
128     compute_cluster_addons
129 }
130
131 cat <<EOF >${ICNDIR}/doc/software-bom.md
132 <!-- Markdown generated from tools/software-bom.sh. DO NOT EDIT. -->
133
134 # Software BOM
135
136 ## Jump server
137
138 $(jump_server)
139
140 ## Compute cluster
141
142 $(compute_cluster)
143
144 EOF