# Configuration RIC
## Environment
Hardware requests :
- RAM : 8G RAM
- CPU : 6 core
- Disk : 40G
Installation Environment:
- VM:Ubuntu 20.04 LTS (Focal Fossa)
Platform Environment:
- Kubernetes:1.16.0
- Helm:3.5.4
- Docker:20.10.
## 1. Install the Docker, Kubernetes and Helm 3
### 1.2 Become root user :
```
## Become root user
sudo -i
```
output :
```
root@teep-ric:~#
```
### 1.3 Install the Dependent Tools
```
apt-get update
## Install the Dependent Tools
apt-get install -y git vim curl net-tools openssh-server python3-pip nfs-common
```
output :
```
root@teep-ric:~# apt-get install -y git vim curl net-tools openssh-server python3-pip nfs-common
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
net-tools is already the newest version (1.60+git20181103.0eebece-1ubuntu5).
curl is already the newest version (7.81.0-1ubuntu1.15).
curl set to manually installed.
git is already the newest version (1:2.34.1-1ubuntu1.10).
git set to manually installed.
openssh-server is already the newest version (1:8.9p1-3ubuntu0.6).
vim is already the newest version (2:8.2.3995-1ubuntu2.15).
vim set to manually installed.
.
.
.
Running kernel seems to be up-to-date.
Restarting services...
Service restarts being deferred:
/etc/needrestart/restart.d/dbus.service
systemctl restart networkd-dispatcher.service
systemctl restart systemd-logind.service
systemctl restart unattended-upgrades.service
systemctl restart user@1000.service
No containers need to be restarted.
No user sessions are running outdated binaries.
No VM guests are running outdated hypervisor (qemu) binaries on this host.
```
### 1.4 Download the source code of RIC Platform
```
cd ~
git clone https://gerrit.o-ran-sc.org/r/ric-plt/ric-dep -b i-release
```
output :
```
root@teep-ric:~# cd ~
git clone https://gerrit.o-ran-sc.org/r/ric-plt/ric-dep -b i-release
Cloning into 'ric-dep'...
remote: Total 2199 (delta 0), reused 2199 (delta 0)
Receiving objects: 100% (2199/2199), 879.62 KiB | 1.20 MiB/s, done.
Resolving deltas: 100% (906/906), done.
.
.
.
root@teep-ric:~# ll
total 32
drwx------ 5 root root 4096 Mar 18 15:39 ./
drwxr-xr-x 19 root root 4096 Mar 15 08:22 ../
-rw------- 1 root root 210 Mar 17 03:33 .bash_history
-rw-r--r-- 1 root root 3106 Oct 15 2021 .bashrc
-rw-r--r-- 1 root root 161 Jul 9 2019 .profile
drwxr-xr-x 11 root root 4096 Mar 18 15:39 ric-dep/
drwx------ 3 root root 4096 Mar 15 08:27 snap/
drwx------ 2 root root 4096 Mar 15 08:27 .ssh/
-rw-r--r-- 1 root root 0 Mar 15 14:27 .sudo_as_admin_successful
```
### 1.5 Execute the Installation Script of the Docker, Kubernetes and Helm 3
add repository alternative:
```
nano root/etc/apt/sources.list
```
adding to sources : ' deb https://mirrors.aliyun.com/kubernetes/apt kubernetes-xenial main '
continue command :
```
curl https://mirrors.aliyun.com/kubernetes/apt/doc/apt-key.gpg | gpg --dearmor > /usr/share/keyrings/EXAMPLE.gpg
echo "deb [signed-by=/usr/share/keyrings/EXAMPLE.gpg] https://mirrors.aliyun.com/kubernetes/apt stable main" || sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt-get update
```
```
cd ric-dep/bin
./install_k8s_and_helm.sh
```
output :
```
root@teep-ric:~# cd ric-dep/bin
./install_k8s_and_helm.sh
+ KUBEV=1.16.0
+ KUBECNIV=0.7.5
+ HELMV=3.5.4
+ DOCKERV=20.10.21
+ echo running ./install_k8s_and_helm.sh
running ./install_k8s_and_helm.sh
+ getopts :k:d:e:n:c o
+ [[ 3.5.4 == 2.* ]]
+ set -x
+ export DEBIAN_FRONTEND=noninteractive
+ DEBIAN_FRONTEND=noninteractive
++ hostname -I
++ hostname
+ echo '192.168.0.155 ubuntu'
+ printenv
SHELL=/bin/bash
SUDO_GID=1000
SUDO_COMMAND=/bin/bash
SUDO_USER=ubuntu
PWD=/root/ric-dep/bin
LOGNAME=root
HOME=/root
LANG=en_US.UTF-8
.
.
.
+ echo '> waiting for 0/8 pods running in namespace [kube-system] with keyword [Running]'
> waiting for 0/8 pods running in namespace [kube-system] with keyword [Running]
+ '[' 0 -lt 8 ']'
+ sleep 5
.
.
.
+ '[' '' == teep-ric ']'
+ echo 'Done with master node setup'
Done with master node setup
+ [[ ! -z '' ]]
+ [[ ! -z '' ]]
+ [[ ! -z '' ]]
+ [[ 1 -gt 100 ]]
+ [[ 1 -gt 100 ]]
```
### 1.6 Check the Status of Kubernetes deployment
```
kubectl get pods -A
```
output :
```
root@teep-ric:~/ric-dep/bin# kubectl get pods -A
NAMESPACE NAME READY STATUS RESTARTS AGE
kube-system coredns-787d4945fb-5f5zs 1/1 Running 0 39s
kube-system coredns-787d4945fb-fx56v 1/1 Running 0 39s
kube-system etcd-teep-ric 1/1 Running 4 53s
kube-system kube-apiserver-teep-ric 1/1 Running 3 53s
kube-system kube-controller-manager-teep-ric 1/1 Running 3 52s
kube-system kube-flannel-ds-m6slx 1/1 Running 0 39s
kube-system kube-proxy-7m487 1/1 Running 0 39s
kube-system kube-scheduler-teep-ric 1/1 Running 3 53s
```
## 2. Install the Near-RT RIC Platform
### 2.1 Add the ric-common templates
command:
```
./install_common_templates_to_helm.sh
```
output:
```
root@teep-ric:~/ric-dep/bin# ./install_common_templates_to_helm.sh
Installing servecm (Chart Manager) and common templates to helm3
Installed plugin: servecm
/root/.cache/helm/repository
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 15.0M 100 15.0M 0 0 3460k 0 0:00:04 0:00:04 --:--:-- 4315k
linux-386/
linux-386/chartmuseum
linux-386/LICENSE
linux-386/README.md
servecm not yet running. sleeping for 2 seconds
nohup: appending output to 'nohup.out'
servcm up and running
/root/.cache/helm/repository
Successfully packaged chart and saved it to: /tmp/ric-common-3.3.2.tgz
Error: no repositories configured
"local" has been added to your repositories
checking that ric-common templates were added
NAME CHART VERSION APP VERSION DESCRIPTION
local/ric-common 3.3.2 Common templates for inclusion in other charts
```
command:
```
./setup-ric-common-template
```
output:
```
root@teep-ric:~/ric-dep/bin# ./setup-ric-common-template
Cloning into '../dep'...
remote: Counting objects: 318, done
remote: Finding sources: 100% (6989/6989)
remote: Total 6989 (delta 2787), reused 6952 (delta 2787)
Receiving objects: 100% (6989/6989), 3.81 MiB | 20.00 KiB/s, done.
Resolving deltas: 100% (2787/2787), done.
.
.
.
+ NONRTRIC_COMMON_CHART_VERSION=2.0.0
+ helm package -d /tmp /root/ric-dep/dep/bin/../ric-common/Common-Template/helm/nonrtric-common
Successfully packaged chart and saved it to: /tmp/nonrtric-common-2.0.0.tgz
+ cp /tmp/nonrtric-common-2.0.0.tgz /root/.cache/helm/repository/local/
+ helm repo index /root/.cache/helm/repository/local/
+ helm repo remove local
"local" has been removed from your repositories
+ helm repo add local http://127.0.0.1:8879/charts
"local" has been added to your repositories
```
### 2.2 Edit Deployment Configuration
#### 2.2.1 Modify the code of xApp Manager
##### 2.2.1.1 Modify the Log-Level
command :
```
sudo nano ~/ric-dep/helm/appmgr/resources/appmgr.yaml
```
Add loglevel “DEBUG”:
Add loglevel : 4
```
"xapp":
#Namespace to install xAPPs
"namespace": __XAPP_NAMESPACE__
"tarDir": "/tmp"
"schema": "descriptors/schema.json"
"config": "config/config-file.json"
"tmpConfig": "/tmp/config-file.json"
"loglevel" : 4
```
#### 2.2.2 Modify the code of A1 Mediator
##### 2.2.2.1 Modify the Log-Level
**Step 1:Modify the loglevel.txt section**
command :
```
sudo nano ~/ric-dep/helm/a1mediator/templates/config.yaml
```
Change log-level: {{ .Values.loglevel }} to log-level: {{ .Values.a1mediator.loglevel }}
output :
```
loglevel.txt: |
log-level: {{ .Values.a1mediator.loglevel }}
```
**Step 2:Change loglevel from INFO to DEBUG & change Component Connection**
command :
```
sudo nano ~/ric-dep/helm/a1mediator/values.yaml
```
Change loglevel from INFO to DEBUG & add a1ei: ecs_ip_port: "http://<ecs_host>:<ecs_port>
output:
```
rmr_timeout_config:
a1_rcv_retry_times: 20
ins_del_no_resp_ttl: 5
ins_del_resp_ttl: 10
loglevel: "DEBUG"
a1ei:
ecs_ip_port: "http://<ecs_host>:<ecs_port>"
```
#### 2.2.2.2 Component Connection
**Step 1:Add ENV for A1EI**
```
sudo nano ~/ric-dep/helm/a1mediator/templates/env.yaml
```
Add ECS_SERVICE_HOST: {{ .Values.a1mediator.a1ei.ecs_ip_port }}
output:
```
INSTANCE_DELETE_NO_RESP_TTL: "{{ .Values.a1mediator.rmr_timeout_config.ins_del_no_resp_ttl }}"
INSTANCE_DELETE_RESP_TTL: "{{ .Values.a1mediator.rmr_timeout_config.ins_del_resp_ttl }}"
CONFIG_MAP_NAME: "/opt/route/loglevel.txt"
ECS_SERVICE_HOST: {{ .Values.a1mediator.a1ei.ecs_ip_port }}
```
#### 2.2.3 Modify the code of E2 Termination(Error occurred, Skipped!!)
#### 2.2.4 Modify the code of Subscription Manager
##### 2.2.4.1 Modify the Log-Level
Change level from 3(Info) to 4(Debug):
```
sudo nano ~/ric-dep/helm/submgr/templates/configmap.yaml
```
output:
```
submgrcfg: |
"local":
"host": ":8080"
"logger":
"level": 4
"rmr":
"protPort" : "tcp:4560"
"maxSize": 8192
"numWorkers": 1
```
#### 2.2.4.2 Component Connection
Step 1:Add new port for subscription in service file
```
sudo nano ~/ric-dep/helm/submgr/templates/service-http.yaml
```
Add Line 11 to 14
```
spec:
selector:
app: {{ include "common.namespace.platform" . }}-{{ include "common.name.submgr" . }}
release: {{ .Release.Name }}
clusterIP: None
ports:
- name: http
port: {{ include "common.serviceport.submgr.http" . }}
protocol: TCP
targetPort: http
- name: subscription
port: 8088
protocol: TCP
targetPort: 8088
```
Step 2:Add new port for subscription in deployment file
```
sudo nano ~/ric-dep/helm/submgr/templates/deployment.yaml
```
Add Line from 9 to 11
```
containers:
...
envFrom:
- configMapRef:
name: {{ include "common.configmapname.submgr" . }}-env
- configMapRef:
name: {{ include "common.configmapname.dbaas" . }}-appconfig
ports:
- name: subscription
containerPort: 8088
protocol: TCP
...
```
#### 2.2.5 Modify the code of Routing Manager
##### 2.2.5.1 Routing Path Configuration
Add A1EI Msgtype and A1EI Routes:
```
sudo nano ~/ric-dep/helm/rtmgr/templates/config.yaml
```
Add Line from 3 to 7 & 12 to 13
```
"messagetypes": [
...
"A1_EI_QUERY_ALL=20013",
"A1_EI_QUERY_ALL_RESP=20014",
"A1_EI_CREATE_JOB=20015",
"A1_EI_CREATE_JOB_RESP=20016",
"A1_EI_DATA_DELIVERY=20017",
]
...
"PlatformRoutes": [
...
{ 'messagetype': 'A1_EI_QUERY_ALL','senderendpoint': '', 'subscriptionid': -1, 'endpoint': 'A1MEDIATOR', 'meid': ''},
{ 'messagetype': 'A1_EI_CREATE_JOB','senderendpoint': '', 'subscriptionid': -1, 'endpoint': 'A1MEDIATOR', 'meid': ''},
]
```
#### 2.2.6 Modify the code of Alarm Manager
##### 2.2.6.1 Component Connection
Step 1:Change controls.promAlertManager.address
```
sudo nano ~/ric-dep/helm/alarmmanager/templates/configmap.yaml
```
change cpro-alertmanager:80 to r4-infrastructure-prometheus-alertmanager:80
```
controls": {
"promAlertManager": {
"address": "r4-infrastructure-prometheus-alertmanager:80",
"baseUrl": "api/v2",
"schemes": "http",
"alertInterval": 30000
},
```
Step 2:Add livenessProbe and readinessProbe
```
sudo nano ~/ric-dep/helm/alarmmanager/templates/deployment.yaml
```
Add Line from 10 to 25
```
spec:
hostname: {{ include "common.name.alarmmanager" . }}
imagePullSecrets:
- name: {{ include "common.dockerregistry.credential" $imagectx }}
serviceAccountName: {{ include "common.serviceaccountname.alarmmanager" . }}
containers:
- name: {{ include "common.containername.alarmmanager" . }}
image: {{ include "common.dockerregistry.url" $imagectx }}/{{ .Values.alarmmanager.image.name }}:{{ $imagetag }}
imagePullPolicy: {{ include "common.dockerregistry.pullpolicy" $pullpolicyctx }}
readinessProbe:
failureThreshold: 3
httpGet:
path: ric/v1/health/ready
port: 8080
scheme: HTTP
initialDelaySeconds: 5
periodSeconds: 15
livenessProbe:
failureThreshold: 3
httpGet:
path: ric/v1/health/alive
port: 8080
scheme: HTTP
initialDelaySeconds: 5
periodSeconds: 15
...
```
#### 2.2.7 Modify the code of O1 Mediator
##### 2.2.7.1 Component Connection
Add livenessProbe and readinessProbe:
```
sudo nano ~/ric-dep/helm/o1mediator/templates/deployment.yaml
```
Add Line from 10 to 29
```
spec:
hostname: {{ include "common.name.o1mediator" . }}
imagePullSecrets:
- name: {{ include "common.dockerregistry.credential" $imagectx }}
serviceAccountName: {{ include "common.serviceaccountname.o1mediator" . }}
containers:
- name: {{ include "common.containername.o1mediator" . }}
image: {{ include "common.dockerregistry.url" $imagectx }}/{{ .Values.o1mediator.image.name }}:{{ .Values.o1mediator.image.tag }}
imagePullPolicy: {{ include "common.dockerregistry.pullpolicy" $pullpolicyctx }}
livenessProbe:
failureThreshold: 3
httpGet:
path: ric/v1/health/alive
port: 8080
scheme: HTTP
initialDelaySeconds: 5
periodSeconds: 15
successThreshold: 1
timeoutSeconds: 1
readinessProbe:
failureThreshold: 3
httpGet:
path: ric/v1/health/ready
port: 8080
scheme: HTTP
initialDelaySeconds: 5
periodSeconds: 15
successThreshold: 1
timeoutSeconds: 1
...
```
### 2.3 Install nfs for InfluxDB
```
kubectl create ns ricinfra
helm repo add stable https://charts.helm.sh/stable
helm install nfs-release-1 stable/nfs-server-provisioner --namespace ricinfra
kubectl patch storageclass nfs -p '{"metadata": {"annotations":{"storageclass.kubernetes.io/is-default-class":"true"}}}'
sudo apt install nfs-common
```
output :
```
root@teep-ric:~# kubectl create ns ricinfra
all nfs-release-1 stable/nfs-server-provisioner --namespace ricinfra
kubectl patch storageclass nfs -p '{"metadata": {"annotations":{"storageclass.kubernetes.io/is-default-class":"true"}}}'
sudo apt install nfs-commonnamespace/ricinfra created
root@teep-ric:~# helm repo add stable https://charts.helm.sh/stable
"stable" has been added to your repositories
root@teep-ric:~# helm install nfs-release-1 stable/nfs-server-provisioner --namespace ricinfra
WARNING: This chart is deprecated
NAME: nfs-release-1
LAST DEPLOYED: Tue Apr 2 11:08:00 2024
.
.
.
root@teep-ric:~# kubectl patch storageclass nfs -p '{"metadata": {"annotations":{"storageclass.kubernetes.io/is-default-class":"true"}}}'
storageclass.storage.k8s.io/nfs patched
```
### 2.4 Execute the Installation Script of Near-RT RIC
Find your IP of VM:
```
ip a
```
output:
```
root@teep-ric:~# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: ens18: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
link/ether b6:64:fb:a9:11:fe brd ff:ff:ff:ff:ff:ff
altname enp0s18
inet 192.168.0.212/24 brd 192.168.0.255 scope global noprefixroute ens18
valid_lft forever preferred_lft forever
inet6 fe80::8afa:e23b:85c6:4d3e/64 scope link noprefixroute
valid_lft forever preferred_lft forever
3: docker0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default
link/ether 02:42:da:f3:d4:ee brd ff:ff:ff:ff:ff:ff
inet 172.17.0.1/16 brd 172.17.255.255 scope global docker0
valid_lft forever preferred_lft forever
4: flannel.1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1450 qdisc noqueue state UNKNOWN group default
link/ether ea:49:e0:af:53:f0 brd ff:ff:ff:ff:ff:ff
inet 10.244.0.0/32 scope global flannel.1
valid_lft forever preferred_lft forever
inet6 fe80::e849:e0ff:feaf:53f0/64 scope link
valid_lft forever preferred_lft forever
```
Modify the IP of RIC and AUX::
```
sudo nano ~/ric-dep/RECIPE_EXAMPLE/example_recipe_oran_i_release.yaml
```
output:
```
# Change the namespaces using the following options
# namespace:
# aux: ricaux
# platform: ricplt
# xapp: ricxapp
# infra: ricinfra
# ricip should be the ingress controller listening IP for the platform cluster
# auxip should be the ingress controller listening IP for the AUX cluster
extsvcplt:
ricip: "192.168.0.212"
auxip: "192.168.0.212"
```
Deploy the RIC Platform:
```
cd ~/ric-dep/bin
./install -f ../RECIPE_EXAMPLE/example_recipe_oran_i_release.yaml -c "jaegeradapter influxdb"
```
output:
```
root@teep-ric:~/ric-dep/bin# ./install -f ../RECIPE_EXAMPLE/example_recipe_oran_i_release.yaml -c "jaegeradapter influxdb"
namespace/ricplt created
namespace/ricxapp created
nfs storage exist
Deploying RIC infra components [infrastructure dbaas appmgr rtmgr e2mgr e2term a1mediator submgr vespamgr o1mediator alarmmanager jaegeradapter influxdb]
configmap/ricplt-recipe created
Add cluster roles
Hang tight while we grab the latest from your chart repositories...
...Successfully got an update from the "local" chart repository
...Successfully got an update from the "stable" chart repository
Update Complete. ⎈Happy Helming!⎈
Saving 7 charts
.
.
.
InfluxDB 2 is deployed as a StatefulSet on your cluster.
You can access it by using the service name: r4-influxdb-influxdb2
To retrieve the password for the 'admin' user:
echo $(kubectl get secret r4-influxdb-influxdb2-auth -o "jsonpath={.data['admin-password']}" --namespace ricplt | base64 --decode)
Note: with enabled persistence, admin password is only set once during the initial deployment. The password is not changed when InfluxDB 2 is re-deployed with different password.
```
### 2.5. Check the Status of Near-RT RIC deployment
* Results similar to the output shown below indicate a complete and successful deployment, all are either “Completed” or “Running”, and that none are “Error”, “Pending”, “Evicted”,or “ImagePullBackOff”.
* The status of pods “PodInitializing” & “Init” & “ContainerCreating” mean that the pods are creating now, you need to wait for deploying.
```
kubectl get pods -A
```
Output:
```
root@teep-ric:~/ric-dep/bin# kubectl get pods -A
NAMESPACE NAME READY STATUS RESTARTS AGE
kube-system coredns-5644d7b6d9-88pl2 1/1 Running 0 39m
kube-system coredns-5644d7b6d9-v9pmm 1/1 Running 0 39m
kube-system etcd-teep-ric 1/1 Running 0 37m
kube-system kube-apiserver-teep-ric 1/1 Running 0 37m
kube-system kube-controller-manager-teep-ric 1/1 Running 0 38m
kube-system kube-flannel-ds-dp2hm 1/1 Running 0 39m
kube-system kube-proxy-6zz8v 1/1 Running 0 39m
kube-system kube-scheduler-teep-ric 1/1 Running 0 38m
ricinfra deployment-tiller-ricxapp-68f777c4d4-xw2m4 1/1 Running 0 12m
ricinfra nfs-release-1-nfs-server-provisioner-0 1/1 Running 0 13m
ricinfra tiller-secret-generator-hsttk 0/1 Completed 0 12m
ricplt deployment-ricplt-a1mediator-7d5b85ff7d-nnlmf 1/1 Running 0 10m
ricplt deployment-ricplt-alarmmanager-5b797c9484-klnvj 1/1 Running 0 9m17s
ricplt deployment-ricplt-appmgr-77986c9cbb-cxhcr 1/1 Running 0 11m
ricplt deployment-ricplt-e2mgr-78c987559f-pcz7j 1/1 Running 0 10m
ricplt deployment-ricplt-e2term-alpha-5dc768bcb7-smk8w 1/1 Running 0 10m
ricplt deployment-ricplt-jaegeradapter-76ddbf9c9-ljhgp 1/1 Running 0 9m
ricplt deployment-ricplt-rtmgr-78f768474-8bs4p 1/1 Running 6 11m
ricplt deployment-ricplt-submgr-547965db4c-7rhct 1/1 Running 0 10m
ricplt deployment-ricplt-vespamgr-84f7d87dfb-2tr2v 1/1 Running 0 9m49s
ricplt r4-influxdb-influxdb2-0 1/1 Running 0 8m52s
ricplt r4-infrastructure-kong-7995f4679b-pcdkt 2/2 Running 2 12m
ricplt r4-infrastructure-prometheus-alertmanager-5798b78f48-5wssd 2/2 Running 0 12m
ricplt r4-infrastructure-prometheus-server-c8ddcfdf5-bftkp 1/1 Running 0 12m
ricplt statefulset-ricplt-dbaas-server-0 1/1 Running 0 11m
```
## 3. Install the DMS Tool
### 3.1 Install the DMS tool
Prepare source code:
```
docker run --rm -u 0 -it -d -p 8090:8080 -e DEBUG=1 -e STORAGE=local -e STORAGE_LOCAL_ROOTDIR=/chart -v $(pwd)/charts:/charts chartmuseum/chartmuseum:latest
export CHART_REPO_URL=http://0.0.0.0:8090
git clone https://gerrit.o-ran-sc.org/r/ric-plt/appmgr -b i-release
```
output:
```
root@teep-ric:~/ric-dep/bin# docker run --rm -u 0 -it -d -p 8090:8080 -e DEBUG=1 -e STORAGE=local -e STORAGE_LOCAL_ROOTDIR=/chart -v $(pwd)/charts:/charts chartmuseum/chartmuseum:latest
Unable to find image 'chartmuseum/chartmuseum:latest' locally
latest: Pulling from chartmuseum/chartmuseum
596ba82af5aa: Pull complete
97cda76ac4f8: Pull complete
7cd1b4b8c77a: Pull complete
Digest: sha256:7fb4cd65d68978b1280f39cedc8c4db8c96efe6f622160a109b425a95098615f
Status: Downloaded newer image for chartmuseum/chartmuseum:latest
e9995461ba3d653d45f6c3ffd2dad079bc8c54edf3febd1aeafa9bdad0bed4c7
root@teep-ric:~/ric-dep/bin# export CHART_REPO_URL=http://0.0.0.0:8090
root@teep-ric:~/ric-dep/bin# cd ~
root@teep-ric:~# git clone https://gerrit.o-ran-sc.org/r/ric-plt/appmgr -b i-release
Cloning into 'appmgr'...
remote: Counting objects: 13, done
remote: Total 790 (delta 0), reused 790 (delta 0)
```
Install DMS tool:
```
cd appmgr/xapp_orchestrater/dev/xapp_onboarder
apt-get install python3-pip
pip3 uninstall xapp_onboarder
pip3 install ./
chmod 755 /usr/local/bin/dms_cli
ls -la /usr/local/lib/ptyhon3.8
chmod -R 755 /usr/local/lib/python3.8
```
output:
```
root@teep-ric:~# cd appmgr/xapp_orchestrater/dev/xapp_onboarder
root@teep-ric:~/appmgr/xapp_orchestrater/dev/xapp_onboarder# apt-get install python3-pip
Reading package lists... Done
Building dependency tree
Reading state information... Done
python3-pip is already the newest version (20.0.2-5ubuntu1.10).
0 upgraded, 0 newly installed, 0 to remove and 82 not upgraded.
root@teep-ric:~/appmgr/xapp_orchestrater/dev/xapp_onboarder# pip3 uninstall xapp_onboarder
WARNING: Skipping xapp-onboarder as it is not installed.
root@teep-ric:~/appmgr/xapp_orchestrater/dev/xapp_onboarder#
.
.
.
root@teep-ric:~/appmgr/xapp_orchestrater/dev/xapp_onboarder# pip3 install ./
Processing /root/appmgr/xapp_orchestrater/dev/xapp_onboarder
Requirement already satisfied: Click==7.0 in /usr/lib/python3/dist-packages (from xapp-onboarder==1.0.0) (7.0)
Collecting Flask==1.1.1
Downloading Flask-1.1.1-py2.py3-none-any.whl (94 kB)
|████████████████████████████████| 94 kB 2.7 MB/s
.
.
.
root@teep-ric:~/appmgr/xapp_orchestrater/dev/xapp_onboarder# pip3 install ./
Processing /root/appmgr/xapp_orchestrater/dev/xapp_onboarder
Requirement already satisfied: Click==7.0 in /usr/lib/python3/dist-packages (from xapp-onboarder==1.0.0) (7.0)
Requirement already satisfied: Flask==1.1.1 in /usr/local/lib/python3.8/dist-packages (from xapp-onboarder==1.0.0) (1.1.1)
Requirement already satisfied: Jinja2==2.11.1 in /usr/local/lib/python3.8/dist-packages (from xapp-onboarder==1.0.0) (2.11.1)
Requirement already satisfied: MarkupSafe==1.1.1 in /usr/local/lib/python3.8/dist-packages (from xapp-onboarder==1.0.0) (1.1.1)
Requirement already satisfied: PyYAML==5.3 in /usr/local/lib/python3.8/dist-packages (from xapp-onboarder==1.0.0) (5.3)
Requirement already satisfied: Werkzeug==0.16.1 in /usr/local/lib/python3.8/dist-packages (from xapp-onboarder==1.0.0) (0.16.1)
Requirement already satisfied: aniso8601==8.0.0 in /usr/local/lib/python3.8/dist-packages (from xapp-onboarder==1.0.0) (8.0.0)
Requirement already satisfied: attrs==19.3.0 in /usr/local/lib/python3.8/dist-packages (from xapp-onboarder==1.0.0) (19.3.0)
Requirement already satisfied: certifi==2019.11.28 in /usr/lib/python3/dist-packages (from xapp-onboarder==1.0.0) (2019.11.28)
Requirement already satisfied: chardet==3.0.4 in /usr/lib/python3/dist-packages (from xapp-onboarder==1.0.0) (3.0.4)
Requirement already satisfied: fire==0.2.1 in /usr/local/lib/python3.8/dist-packages (from xapp-onboarder==1.0.0) (0.2.1)
Requirement already satisfied: flask-restplus==0.13.0 in /usr/local/lib/python3.8/dist-packages (from xapp-onboarder==1.0.0) (0.13.0)
Requirement already satisfied: idna==2.9 in /usr/local/lib/python3.8/dist-packages (from xapp-onboarder==1.0.0) (2.9)
Requirement already satisfied: importlib-metadata==1.5.0 in /usr/local/lib/python3.8/dist-packages (from xapp-onboarder==1.0.0) (1.5.0)
Requirement already satisfied: itsdangerous==1.1.0 in /usr/local/lib/python3.8/dist-packages (from xapp-onboarder==1.0.0) (1.1.0)
Requirement already satisfied: jsonschema==3.2.0 in /usr/local/lib/python3.8/dist-packages (from xapp-onboarder==1.0.0) (3.2.0)
Requirement already satisfied: pyrsistent==0.15.7 in /usr/local/lib/python3.8/dist-packages (from xapp-onboarder==1.0.0) (0.15.7)
Requirement already satisfied: pytz==2019.3 in /usr/lib/python3/dist-packages (from xapp-onboarder==1.0.0) (2019.3)
Requirement already satisfied: requests==2.23.0 in /usr/local/lib/python3.8/dist-packages (from xapp-onboarder==1.0.0) (2.23.0)
Requirement already satisfied: six==1.14.0 in /usr/lib/python3/dist-packages (from xapp-onboarder==1.0.0) (1.14.0)
Requirement already satisfied: termcolor==1.1.0 in /usr/local/lib/python3.8/dist-packages (from xapp-onboarder==1.0.0) (1.1.0)
Requirement already satisfied: urllib3==1.25.8 in /usr/lib/python3/dist-packages (from xapp-onboarder==1.0.0) (1.25.8)
Requirement already satisfied: zipp==3.0.0 in /usr/local/lib/python3.8/dist-packages (from xapp-onboarder==1.0.0) (3.0.0)
Requirement already satisfied: setuptools in /usr/lib/python3/dist-packages (from jsonschema==3.2.0->xapp-onboarder==1.0.0) (45.2.0)
```