4dbaef06d677bb97c55a477e6e90ead1f5be6780
[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|Link|Version|License|
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")
20             link="https://ubuntu.com/"
21             version="Ubuntu 20.04"
22             license="GPL-2.0"
23             ;;
24         *)
25             link="UNKNOWN"
26             version="UNKNOWN"
27             license="UNKNOWN"
28             ;;
29     esac
30     echo "|OS|${link}|${version}|${license}|"
31 }
32
33 function kubespray_version {
34     awk -F= '/KUBESPRAY_VERSION=/ {print $2}' ${ICNDIR}/deploy/kud/kud_bm_launch.sh
35 }
36
37 function jump_server_k8s {
38     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}')
39     echo "|Kubespray|https://github.com/kubernetes-sigs/kubespray|$(kubespray_version)|Apache-2.0|"
40     echo "|K8s|https://kubernetes.io/|${version}|Apache-2.0|"
41 }
42
43 function jump_server_cri {
44     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 "'")
45     echo "|Docker|https://www.docker.com/|${version}|Apache-2.0|"
46 }
47
48 function jump_server_cni {
49     # kud/hosting_providers/vagrant/inventory/group_vars/k8s-cluster.yml:kube_network_plugin: flannel
50     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 '"')
51     echo "|Flannel|https://github.com/flannel-io/flannel|${version}|Apache-2.0|"
52 }
53
54 function jump_server_addons {
55     cat <<EOF
56 |Ironic|https://github.com/metal3-io/baremetal-operator|${BMO_VERSION}|Apache-2.0|
57 |cert-manager|https://cert-manager.io/|${CERT_MANAGER_VERSION}|Apache-2.0|
58 |Bare Metal Operator|https://github.com/metal3-io/baremetal-operator|${BMO_VERSION}|Apache-2.0|
59 |Cluster API|https://cluster-api.sigs.k8s.io/|${CAPI_VERSION}|Apache-2.0|
60 |Flux|https://fluxcd.io/|${FLUX_VERSION}|Apache-2.0|
61 EOF
62 }
63
64 function jump_server {
65     table_header
66     jump_server_os
67     jump_server_k8s
68     jump_server_cri
69     jump_server_cni
70     jump_server_addons
71 }
72
73 function compute_cluster_os {
74     case $(awk '/imageName:/ {print $2}' ${ICNDIR}/deploy/cluster/values.yaml) in
75         "focal-server-cloudimg-amd64.img")
76             link="https://ubuntu.com/"
77             version="Ubuntu 20.04"
78             license="GPL-2.0"
79             ;;
80         *)
81             link="UNKNOWN"
82             version="UNKNOWN"
83             license="UNKNOWN"
84             ;;
85     esac
86     echo "|OS|${link}|${version}|${license}"
87 }
88
89 function compute_cluster_k8s {
90     local -r version=$(awk '/k8sVersion:/ {print $2}' ${ICNDIR}/deploy/cluster/values.yaml)
91     echo "|K8s|https://kubernetes.io/|${version}|Apache-2.0|"
92 }
93
94 function compute_cluster_cri {
95     local -r version=$(awk '/containerdVersion:/ {print $2}' ${ICNDIR}/deploy/cluster/values.yaml)
96     echo "|containerd|https://containerd.io/|${version}|Apache-2.0|"
97 }
98
99 function compute_cluster_cni {
100     echo "|Calico|https://www.tigera.io/project-calico/|${CALICO_VERSION}|Apache-2.0|"
101 }
102
103 function git_repository_tag {
104     local -r source_yaml=$1
105     awk '/tag:/ {print $2}' ${source_yaml}
106 }
107
108 function image_tag {
109     local -r source_yaml=$1
110     local -r image_name=$2
111     awk -F: '/image:.*'"${image_name}"'/ {print $3}' ${source_yaml} | tr -d '"'
112 }
113
114 function ref_tag {
115     local -r kustomization_yaml=$1
116     awk -F= '/?ref=/ {print $2}' ${kustomization_yaml} | tr -d "'"
117 }
118
119 function iavf_driver_version {
120     eval $(curl -sL https://raw.githubusercontent.com/onap/multicloud-k8s/${KUD_VERSION}/kud/deployment_infra/installers/entrypoint-iavf-driver-installer.sh | awk '/IAVF_DRIVER_VERSION/ {print; exit}')
121     echo ${IAVF_DRIVER_VERSION}
122 }
123
124 function qat_driver_version {
125     eval $(curl -sL https://raw.githubusercontent.com/onap/multicloud-k8s/${KUD_VERSION}/kud/deployment_infra/installers/entrypoint-qat-driver-installer.sh | awk '/QAT_DRIVER_VERSION/ {print; exit}')
126     echo ${QAT_DRIVER_VERSION}
127 }
128
129 function compute_cluster_addons {
130     cat <<EOF
131 |Containerized Data Importer|https://github.com/kubevirt/containerized-data-importer|${CDI_VERSION}|Apache-2.0|
132 |cert-manager|https://cert-manager.io/|${CERT_MANAGER_VERSION}|Apache-2.0|
133 |CPU Manager for Kubernetes|https://github.com/intel/CPU-Manager-for-Kubernetes|${CPU_MANAGER_VERSION}|Apache-2.0|
134 |EMCO|https://gitlab.com/project-emco|$(git_repository_tag ${ICNDIR}/deploy/site/cluster-emco-management/emco-source.yaml)|Apache-2.0|
135 |Flux|https://fluxcd.io/|${FLUX_VERSION}|Apache-2.0|
136 |Intel Network Adapter Linux Virtual Function Driver for Intel Ethernet Controller 700 and E810 Series|https://www.intel.com/content/www/us/en/download/18159/intel-network-adapter-linux-virtual-function-driver-for-intel-ethernet-controller-700-and-e810-series.html|$(iavf_driver_version)|GPL-2.0|
137 |Intel Network Adapter Virtual Function Driver Installer|https://gerrit.onap.org/r/#/admin/projects/multicloud/k8s|$(image_tag ${ICNDIR}/deploy/iavf-driver-installer/icn/daemonset.yaml iavf-driver-installer)|Apache-2.0|
138 |Istio|https://istio.io/|$(git_repository_tag ${ICNDIR}/deploy/site/cluster-addons/istio-source.yaml)|Apache-2.0|
139 |Kata Containers|https://katacontainers.io/|${KATA_VERSION}|Apache-2.0|
140 |KubeVirt|https://kubevirt.io/|${KUBEVIRT_VERSION}|Apache-2.0|
141 |Multus|https://github.com/k8snetworkplumbingwg/multus-cni|${MULTUS_VERSION}|Apache-2.0|
142 |Node Feature Discovery|https://github.com/kubernetes-sigs/node-feature-discovery|$(ref_tag ${ICNDIR}/deploy/node-feature-discovery/icn/kustomization.yaml)|Apache-2.0|
143 |Nodus|https://gerrit.akraino.org/r/admin/repos/icn/nodus|${NODUS_VERSION}|Apache-2.0|
144 |Intel QAT Driver for Linux for Intel Server Boards and Systems Based on Intel 62X Chipset|https://www.intel.com/content/www/us/en/download/19081/intel-quickassist-technology-intel-qat-driver-for-linux-for-intel-server-boards-and-systems-based-on-intel-62x-chipset.html|$(qat_driver_version)|GPL-2.0,BSD,OpenSSL,ZLib|
145 |Intel QAT Device Plugin|https://github.com/intel/intel-device-plugins-for-kubernetes|${QAT_VERSION}|Apache-2.0|
146 |Intel QAT Driver Installer|https://gerrit.onap.org/r/#/admin/projects/multicloud/k8s|$(image_tag ${ICNDIR}/deploy/qat-driver-installer/icn/daemonset.yaml qat-driver-installer)|Apache-2.0|
147 |SR-IOV Network Operator|https://github.com/k8snetworkplumbingwg/sriov-network-operator|$(git_repository_tag ${ICNDIR}/deploy/sriov-network-operator/icn/source.yaml)|Apache-2.0|
148 EOF
149 }
150
151 function compute_cluster {
152     table_header
153     compute_cluster_os
154     compute_cluster_k8s
155     compute_cluster_cri
156     compute_cluster_cni
157     compute_cluster_addons
158 }
159
160 cat <<EOF >${ICNDIR}/doc/software-bom.md
161 <!-- Markdown generated from tools/software-bom.sh. DO NOT EDIT. -->
162
163 # Software BOM
164
165 ## Jump server
166
167 $(jump_server)
168
169 ## Compute cluster
170
171 $(compute_cluster)
172
173 EOF