summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--ansible/README.md19
-rw-r--r--ansible/roles/application/defaults/main.yml2
-rw-r--r--ansible/roles/application/molecule/default/tests/test_default.py3
-rw-r--r--ansible/roles/application/tasks/install.yml1
-rw-r--r--ansible/roles/nexus/defaults/main.yml1
-rw-r--r--ansible/roles/nexus/tasks/install.yml2
-rw-r--r--ansible/roles/package-repository/tasks/main.yml1
-rw-r--r--ansible/roles/rancher/molecule/default/cleanup.yml14
-rw-r--r--ansible/roles/rancher/molecule/default/molecule.yml9
-rw-r--r--ansible/roles/rancher/molecule/default/playbook.yml2
-rw-r--r--ansible/roles/rancher/molecule/default/prepare.yml6
-rw-r--r--ansible/roles/rancher/tasks/rancher_agent.yml1
-rw-r--r--ansible/site.yml2
-rw-r--r--ansible/test/play-infrastructure/.yamllint11
-rw-r--r--ansible/test/play-infrastructure/molecule/default/molecule.yml73
-rw-r--r--ansible/test/play-infrastructure/molecule/default/playbook.yml11
-rw-r--r--ansible/test/play-infrastructure/molecule/default/prepare.yml25
-rw-r--r--ansible/test/play-infrastructure/molecule/default/tests/test_nodes.py11
-rw-r--r--ansible/test/play-infrastructure/molecule/default/vars.yml24
-rw-r--r--ansible/test/roles/prepare-common/tasks/main.yml33
-rw-r--r--ansible/test/roles/prepare-dns/tasks/main.yml22
-rw-r--r--ansible/test/roles/prepare-nexus/tasks/main.yml70
-rw-r--r--ansible/test/roles/prepare-nexus/vars/main.yml5
-rw-r--r--ansible/test/roles/prepare-nginx/tasks/main.yml28
-rw-r--r--ansible/test/roles/prepare-package-repository/tasks/main.yml26
-rw-r--r--ansible/test/roles/prepare-package-repository/vars/main.yml12
-rw-r--r--ansible/test/roles/prepare-vncserver/tasks/main.yml21
-rwxr-xr-xbuild/build_nexus_blob.sh81
-rwxr-xr-xbuild/creating_data/download-pip.sh2
-rw-r--r--build/data_lists/onap_3.0.0-docker_images.list218
-rw-r--r--build/data_lists/onap_3.0.1-docker_images.list221
-rw-r--r--build/data_lists/onap_3.0.2-docker_images.list219
-rw-r--r--build/data_lists/onap_3.0.x-git_repos.list9
-rw-r--r--build/data_lists/onap_3.0.x-pip_packages.list18
-rw-r--r--build/data_lists/onap_docker_images.list225
-rw-r--r--build/data_lists/onap_git_repos.list2
-rw-r--r--build/data_lists/onap_npm.list (renamed from build/data_lists/onap_3.0.x-npm.list)556
-rw-r--r--build/data_lists/onap_pip_packages.list12
-rw-r--r--build/data_lists/rke_docker_images.list22
-rw-r--r--build/download/__init__.py22
-rw-r--r--build/download/base.py114
-rwxr-xr-xbuild/download/docker_images.py268
-rwxr-xr-xbuild/download/git_repos.py93
-rwxr-xr-xbuild/download/http_files.py131
-rwxr-xr-xbuild/download/npm_packages.py121
-rw-r--r--build/download/requirements.txt5
-rwxr-xr-xbuild/download/rpm_packages.py66
-rwxr-xr-xbuild/fetch_and_patch_charts.sh2
-rw-r--r--build/package.conf2
-rwxr-xr-xconfig/application_configuration.yml4
-rw-r--r--docs/BuildGuide.rst6
-rw-r--r--docs/InstallGuide.rst23
-rw-r--r--patches/casablanca.patch428
-rw-r--r--patches/onap-patch-role/tasks/main.yml (renamed from patches/onap-casablanca-patch-role/tasks/main.yml)26
-rw-r--r--patches/onap.patch41
55 files changed, 1820 insertions, 1552 deletions
diff --git a/ansible/README.md b/ansible/README.md
index 8d6e41ee..f82c750f 100644
--- a/ansible/README.md
+++ b/ansible/README.md
@@ -113,7 +113,7 @@ This playbook contains imports for all the other playbooks needed to deploy
wanted Kubernetes application:
- `upload_resources.yml`
- `infrastructure.yml`
- - `rancher_kubernetes.yml`
+ - `rke.yml`
- `application.yml` - this is an application related playbook
### Resource upload
@@ -139,7 +139,7 @@ Infrastructure setup is handled by `infrastructure.yml` playbook.
### Kubernetes cluster deployment
-Kubernetes cluster is deployment is handled by `rancher_kubernetes.yml` playbook.
+Kubernetes cluster deployment is handled by `rke.yml` playbook.
**Preconditions**:
- infrastructure deployed by running `infrastructure.yml` playbook
@@ -162,7 +162,7 @@ copied there after installer package is deployed and before installing the appli
Application Helm charts and configuration is better described in [application/README.md](./application/README.md)
**Preconditions**:
- - Kubernetes cluster must be up and running i.e. `rancher_kubernetes.yml` playbook has been run.
+ - Kubernetes cluster must be up and running i.e. `rke.yml` playbook has been run.
## Running playbooks
To run ansible playbook call `run_playbook.sh` with same arguments as you would
@@ -222,12 +222,25 @@ parts.
hosts:
infrastructure-server:
ansible_host: 10.8.8.9
+ #IP used for communication between infra and kubernetes nodes, must be specified.
+ cluster_ip: 10.8.8.9
# This is group of hosts which are/will be part of Kubernetes cluster.
kubernetes:
hosts:
kubernetes-node-1:
ansible_host: 10.8.8.13
+ #ip of the node that it uses for communication with k8s cluster.
+ cluster_ip: 10.8.8.13
+
+ # This is a group of hosts that are to be used as kubernetes control plane nodes.
+ # This means they host kubernetes api server, controller manager and scheduler.
+ # This example uses infra for this purpose, however note that any
+ # other host could be used including kubernetes nodes.
+ # cluster_ip needs to be set for hosts used as control planes.
+ kubernetes-control-plane:
+ hosts:
+ infrastructure-server
nfs-server:
hosts:
diff --git a/ansible/roles/application/defaults/main.yml b/ansible/roles/application/defaults/main.yml
index dec17601..84fffeca 100644
--- a/ansible/roles/application/defaults/main.yml
+++ b/ansible/roles/application/defaults/main.yml
@@ -1,6 +1,8 @@
---
helm_repository_name: local
helm_repository_url: http://127.0.0.1:8879
+helm_extra_install_options:
+ - { opt: '--timeout 1800'}
# Override file generation for Helm application can be customized by any role
# given by user and found by ansible from roles_path.
# By default override file is generated by 'application-override' role that is
diff --git a/ansible/roles/application/molecule/default/tests/test_default.py b/ansible/roles/application/molecule/default/tests/test_default.py
index 3e0cbb42..5edceff3 100644
--- a/ansible/roles/application/molecule/default/tests/test_default.py
+++ b/ansible/roles/application/molecule/default/tests/test_default.py
@@ -16,7 +16,8 @@ serve
repo list
repo add local http://127.0.0.1:8879
install --name moleculetestapp local/moleculetestapp --namespace \
-moleculetestapp -f /opt/moleculetestapp/override.yaml"""
+moleculetestapp -f /opt/moleculetestapp/override.yaml \
+--timeout 1800"""
assert fc == expected_content
diff --git a/ansible/roles/application/tasks/install.yml b/ansible/roles/application/tasks/install.yml
index cdc7ced0..bdf6e511 100644
--- a/ansible/roles/application/tasks/install.yml
+++ b/ansible/roles/application/tasks/install.yml
@@ -72,6 +72,7 @@
{{ helm_repository_name }}/{{ app_helm_chart_name }}
--namespace {{ app_kubernetes_namespace }}
{{ '' if app_skip_helm_override else '-f ' + app_helm_override_file }}
+ {% for arg in helm_extra_install_options %} {{ arg.opt }} {% endfor %}
changed_when: true # when executed its a changed type of action
register: helm_install
failed_when: helm_install.stderr
diff --git a/ansible/roles/nexus/defaults/main.yml b/ansible/roles/nexus/defaults/main.yml
index 92089e9a..8f636979 100644
--- a/ansible/roles/nexus/defaults/main.yml
+++ b/ansible/roles/nexus/defaults/main.yml
@@ -1,4 +1,5 @@
---
+nexus_come_up_wait_retries: 30
# By default prepopulated nexus binary blob used.
populate_nexus: false
# By dafault no additional docker images pushed to nexus at runtime
diff --git a/ansible/roles/nexus/tasks/install.yml b/ansible/roles/nexus/tasks/install.yml
index f8de5e95..c88e5855 100644
--- a/ansible/roles/nexus/tasks/install.yml
+++ b/ansible/roles/nexus/tasks/install.yml
@@ -36,7 +36,7 @@
password: admin123
force_basic_auth: true
method: GET
- retries: 30
+ retries: "{{ nexus_come_up_wait_retries }}"
delay: 10
register: nexus_wait
until: not nexus_wait.failed
diff --git a/ansible/roles/package-repository/tasks/main.yml b/ansible/roles/package-repository/tasks/main.yml
index 599e1052..7dc2e76f 100644
--- a/ansible/roles/package-repository/tasks/main.yml
+++ b/ansible/roles/package-repository/tasks/main.yml
@@ -5,6 +5,7 @@
path: /etc/resolv.conf
state: present
insertbefore: BOF
+ unsafe_writes: true
- name: Disable all OS default repositories
block:
diff --git a/ansible/roles/rancher/molecule/default/cleanup.yml b/ansible/roles/rancher/molecule/default/cleanup.yml
deleted file mode 100644
index d4bf4495..00000000
--- a/ansible/roles/rancher/molecule/default/cleanup.yml
+++ /dev/null
@@ -1,14 +0,0 @@
----
-- name: Cleanup host
- hosts: localhost
- roles:
- - role: cleanup-containers
- vars:
- container_list:
- - rancher-agent
- - rancher-server
- - role: cleanup-rancher
- vars:
- container_list_by_label:
- - { 'label':'io.rancher.project.name', 'value':'healthcheck'}
- - { 'label':'io.rancher.project.name', 'value':'kubernetes'}
diff --git a/ansible/roles/rancher/molecule/default/molecule.yml b/ansible/roles/rancher/molecule/default/molecule.yml
index b21325d4..eb7f8c19 100644
--- a/ansible/roles/rancher/molecule/default/molecule.yml
+++ b/ansible/roles/rancher/molecule/default/molecule.yml
@@ -13,8 +13,7 @@ platforms:
override_command: false
restart_policy: unless-stopped
volumes:
- - /var/run/docker.sock:/var/run/docker.sock
- - /var/lib/rancher:/var/lib/rancher:ro
+ - /var/lib/docker
groups:
- infrastructure
networks:
@@ -27,12 +26,14 @@ platforms:
override_command: false
restart_policy: unless-stopped
volumes:
- - /var/run/docker.sock:/var/run/docker.sock
- - /var/lib/rancher:/var/lib/rancher:ro
+ - /var/lib/docker
+ - /var/lib/rancher
+ - /var/lib/kubelet
groups:
- kubernetes
networks:
- name: rancher
+ purge_networks: true
provisioner:
name: ansible
diff --git a/ansible/roles/rancher/molecule/default/playbook.yml b/ansible/roles/rancher/molecule/default/playbook.yml
index e0ef086c..e4a7151e 100644
--- a/ansible/roles/rancher/molecule/default/playbook.yml
+++ b/ansible/roles/rancher/molecule/default/playbook.yml
@@ -2,7 +2,7 @@
- name: Converge rancher master
hosts: infrastructure
roles:
- - prepare-common # molecule specific role needed here to populate cluster_ip
+ - prepare-common
- role: rancher
vars:
mode: server
diff --git a/ansible/roles/rancher/molecule/default/prepare.yml b/ansible/roles/rancher/molecule/default/prepare.yml
index 90159c6c..d70cda43 100644
--- a/ansible/roles/rancher/molecule/default/prepare.yml
+++ b/ansible/roles/rancher/molecule/default/prepare.yml
@@ -1,5 +1,5 @@
---
-- name: Prepare kube nodes
- hosts: kubernetes
+- name: Prepare hosts
+ hosts: all
roles:
- - prepare-docker
+ - prepare-docker-dind
diff --git a/ansible/roles/rancher/tasks/rancher_agent.yml b/ansible/roles/rancher/tasks/rancher_agent.yml
index 091503c7..73d9a642 100644
--- a/ansible/roles/rancher/tasks/rancher_agent.yml
+++ b/ansible/roles/rancher/tasks/rancher_agent.yml
@@ -7,7 +7,6 @@
volumes:
- "/var/run/docker.sock:/var/run/docker.sock"
- "/var/lib/rancher:/var/lib/rancher"
- auto_remove: true
privileged: true
vars:
server_hostvars: "{{ hostvars[groups.infrastructure.0] }}"
diff --git a/ansible/site.yml b/ansible/site.yml
index fbf2c389..7e22c5b2 100644
--- a/ansible/site.yml
+++ b/ansible/site.yml
@@ -15,6 +15,6 @@
# installer
- import_playbook: resources.yml
- import_playbook: infrastructure.yml
-- import_playbook: rancher_kubernetes.yml
+- import_playbook: rke.yml
- import_playbook: application.yml
diff --git a/ansible/test/play-infrastructure/.yamllint b/ansible/test/play-infrastructure/.yamllint
new file mode 100644
index 00000000..ad0be760
--- /dev/null
+++ b/ansible/test/play-infrastructure/.yamllint
@@ -0,0 +1,11 @@
+extends: default
+
+rules:
+ braces:
+ max-spaces-inside: 1
+ level: error
+ brackets:
+ max-spaces-inside: 1
+ level: error
+ line-length: disable
+ truthy: disable
diff --git a/ansible/test/play-infrastructure/molecule/default/molecule.yml b/ansible/test/play-infrastructure/molecule/default/molecule.yml
new file mode 100644
index 00000000..894ab804
--- /dev/null
+++ b/ansible/test/play-infrastructure/molecule/default/molecule.yml
@@ -0,0 +1,73 @@
+---
+dependency:
+ name: galaxy
+driver:
+ name: docker
+lint:
+ name: yamllint
+platforms:
+ - name: infrastructure-server
+ image: molecule-${PREBUILD_PLATFORM_DISTRO:-centos}:${PREBUILD_DISTRO_VERSION:-centos7.6}
+ pre_build_image: true
+ privileged: true
+ override_command: false
+ restart_policy: unless-stopped
+ volumes:
+ - /var/lib/docker
+ - /opt/onap
+ groups:
+ - infrastructure
+ networks:
+ - name: infrastructure-net
+ purge_networks: true
+
+ - name: kubernetes-node-1
+ image: molecule-${PREBUILD_PLATFORM_DISTRO:-centos}:${PREBUILD_DISTRO_VERSION:-centos7.6}
+ pre_build_image: true
+ privileged: true
+ override_command: false
+ restart_policy: unless-stopped
+ env:
+ container: docker
+ volumes:
+ - /var/lib/docker
+ groups:
+ - kubernetes
+ networks:
+ - name: infrastructure-net
+ purge_networks: true
+
+provisioner:
+ name: ansible
+ env:
+ ANSIBLE_ROLES_PATH: ../../../roles:../../../../roles/
+ ANSIBLE_LIBRARY: ../../../../library
+ inventory:
+ links:
+ group_vars: ../../../../group_vars
+ lint:
+ name: ansible-lint
+scenario:
+ name: default
+ test_sequence:
+ - lint
+ - cleanup
+ - destroy
+ - dependency
+ - syntax
+ - create
+ - prepare
+ - converge
+ # - idempotence
+ # --> Action: 'idempotence'
+ # ERROR: Idempotence test failed because of the following tasks:
+ # * [infrastructure-server -> 10.0.2.15] => certificates : Generate an OpenSSL CSR.
+ # * [infrastructure-server -> 10.0.2.15] => certificates : Generate root CA certificate
+ - side_effect
+ - verify
+ - cleanup
+ - destroy
+verifier:
+ name: testinfra
+ lint:
+ name: flake8
diff --git a/ansible/test/play-infrastructure/molecule/default/playbook.yml b/ansible/test/play-infrastructure/molecule/default/playbook.yml
new file mode 100644
index 00000000..26b3c15d
--- /dev/null
+++ b/ansible/test/play-infrastructure/molecule/default/playbook.yml
@@ -0,0 +1,11 @@
+---
+- name: Common setup for all hosts
+ hosts: all
+ tasks:
+ - name: Set cluster_ip variable
+ set_fact:
+ cluster_ip: "{{ ansible_default_ipv4.address }}"
+ - name: Include variables
+ include_vars: vars.yml
+
+- import_playbook: ../../../../infrastructure.yml
diff --git a/ansible/test/play-infrastructure/molecule/default/prepare.yml b/ansible/test/play-infrastructure/molecule/default/prepare.yml
new file mode 100644
index 00000000..86e25b48
--- /dev/null
+++ b/ansible/test/play-infrastructure/molecule/default/prepare.yml
@@ -0,0 +1,25 @@
+---
+- name: Prepare infra
+ hosts: infrastructure
+ roles:
+ - prepare-package-repository
+ - prepare-chrony
+ - prepare-vncserver
+ - prepare-nginx
+ - prepare-nexus
+ - prepare-dns
+ - prepare-firewall
+ vars_files:
+ - vars.yml
+ - ../../../../roles/nginx/defaults/main.yml
+ - ../../../../roles/vncserver/defaults/main.yml
+ - ../../../../roles/nexus/defaults/main.yml
+ - ../../../../roles/dns/defaults/main.yml
+
+- name: Prepare kubernetes
+ hosts: kubernetes
+ roles:
+ - prepare-chrony
+ - prepare-firewall
+ vars_files:
+ - vars.yml
diff --git a/ansible/test/play-infrastructure/molecule/default/tests/test_nodes.py b/ansible/test/play-infrastructure/molecule/default/tests/test_nodes.py
new file mode 100644
index 00000000..c0ce64f2
--- /dev/null
+++ b/ansible/test/play-infrastructure/molecule/default/tests/test_nodes.py
@@ -0,0 +1,11 @@
+import os
+
+import testinfra.utils.ansible_runner
+
+testinfra_hosts = testinfra.utils.ansible_runner.AnsibleRunner(
+ os.environ['MOLECULE_INVENTORY_FILE']).get_hosts('kubernetes')
+
+
+def test_registry_access(host):
+ assert host.run(
+ 'docker login -u admin -p admin123 nexus3.onap.org:10001').rc == 0
diff --git a/ansible/test/play-infrastructure/molecule/default/vars.yml b/ansible/test/play-infrastructure/molecule/default/vars.yml
new file mode 100644
index 00000000..e91eadb2
--- /dev/null
+++ b/ansible/test/play-infrastructure/molecule/default/vars.yml
@@ -0,0 +1,24 @@
+---
+vnc_passwd: molecule
+certificates:
+ organization_name: Molecule Testers
+ state_or_province_name: Finland
+ country_name: FI
+ locality_name: Tampere
+app_name: onap
+app_data_path: "/opt/{{ app_name }}"
+
+nexus_come_up_wait_retries: 60
+populate_nexus: true # Different from default, molecule tests also nexus's configure.yml
+
+molecule_test_registry: nexus3.onap.org:10001
+# Different from default i.e. also additional images population is tested with molecule
+runtime_images:
+ busybox:
+ registry: "{{ molecule_test_registry }}"
+ path: "/onap/components/busybox"
+ tag: "latest"
+ aaionap-haproxy:
+ registry: "{{ molecule_test_registry }}"
+ path: "/onap/components/aaionap/haproxy"
+ tag: "1.2.4"
diff --git a/ansible/test/roles/prepare-common/tasks/main.yml b/ansible/test/roles/prepare-common/tasks/main.yml
index 11dcbe71..909d58c9 100644
--- a/ansible/test/roles/prepare-common/tasks/main.yml
+++ b/ansible/test/roles/prepare-common/tasks/main.yml
@@ -1,31 +1,4 @@
---
-- name: Fetch docker host ip
- block:
- - name: Get docker host ip to access host where container running (as dood)
- shell: |
- set -o pipefail
- ip route | awk '/default/ { print $3 }'
- args:
- executable: /bin/bash
- register: ip
- changed_when: false
-
- - name: "set docker host ip {{ ip.stdout }} for cluster_ip"
- set_fact:
- cluster_ip: "{{ ip.stdout }}"
- when: inventory_hostname != 'localhost'
-
-- name: Set fact for localhost OS
- block:
- - name: set localhost fact
- set_fact:
- localhost_ansible_os_family: "{{ hostvars['localhost'].ansible_os_family }}"
-
- - name: debug
- debug:
- var: localhost_ansible_os_family
- when: hostvars['localhost'].ansible_os_family is defined
-
-- name: debug
- debug:
- var: ansible_os_family \ No newline at end of file
+- name: "Set cluster_ip fact"
+ set_fact:
+ cluster_ip: "{{ ansible_default_ipv4.address }}"
diff --git a/ansible/test/roles/prepare-dns/tasks/main.yml b/ansible/test/roles/prepare-dns/tasks/main.yml
new file mode 100644
index 00000000..7907f868
--- /dev/null
+++ b/ansible/test/roles/prepare-dns/tasks/main.yml
@@ -0,0 +1,22 @@
+---
+- name: "Create needed dirs for dns role"
+ file:
+ path: "{{ item }}"
+ state: directory
+ mode: "u+rw,g+wx,o+rwx"
+ recurse: true
+ loop:
+ - "{{ app_data_path }}/cfg"
+ - "{{ infra_images_path }}"
+
+- name: Download and archive dnsmasq docker image for the dns role to use
+ delegate_to: localhost
+ docker_image:
+ name: andyshinn/dnsmasq
+ tag: 2.76
+ archive_path: /tmp/dnsmasq.tar
+
+- name: Copy dnsmasq image to node
+ copy:
+ src: /tmp/dnsmasq.tar
+ dest: "{{ infra_images_path }}/{{ dns_server_image_tar }}"
diff --git a/ansible/test/roles/prepare-nexus/tasks/main.yml b/ansible/test/roles/prepare-nexus/tasks/main.yml
new file mode 100644
index 00000000..4ef40f5e
--- /dev/null
+++ b/ansible/test/roles/prepare-nexus/tasks/main.yml
@@ -0,0 +1,70 @@
+---
+- name: Add nexus simulation hosts to /etc/hosts
+ lineinfile:
+ regexp: "^{{ ansible_default_ipv4.address | regex_escape() }} {{ etc_hosts | join(' ') | regex_escape() }}$"
+ line: "{{ ansible_default_ipv4.address }} {{ etc_hosts | join(' ') }}"
+ insertafter: EOF
+ path: /etc/hosts
+ unsafe_writes: true
+
+- name: "Create needed dirs for nexus role"
+ file:
+ path: "{{ item }}"
+ state: directory
+ mode: "u+rw,g+wx,o+rwx"
+ recurse: true
+ loop:
+ - "{{ app_data_path }}/nexus_data"
+ - "{{ infra_images_path }}"
+ - "{{ aux_data_path }}"
+
+- name: Download and archive nexus docker image for the nexus role to use
+ delegate_to: localhost
+ docker_image:
+ name: "{{ nexus3_image }}"
+ archive_path: /tmp/nexus.tar
+
+- name: Download and tag additional (busybox) docker image for the nexus role to populate into
+ delegate_to: localhost
+ docker_image:
+ name: busybox
+ tag: latest
+ repository: nexus3.onap.org:10001/onap/components/busybox
+
+- name: Save busybox image
+ delegate_to: localhost
+ docker_image:
+ name: nexus3.onap.org:10001/onap/components/busybox
+ tag: latest
+ pull: false
+ archive_path: /tmp/busybox.tar
+
+- name: Download and tag additional (aaionap/haproxy) docker image for the nexus role to populate into nexus
+ delegate_to: localhost
+ docker_image:
+ name: aaionap/haproxy
+ tag: 1.2.4
+ repository: nexus3.onap.org:10001/onap/components/aaionap/haproxy
+
+- name: Save haproxy image
+ delegate_to: localhost
+ docker_image:
+ name: nexus3.onap.org:10001/onap/components/aaionap/haproxy
+ tag: 1.2.4
+ pull: false
+ archive_path: /tmp/haproxy.tar
+
+- name: Copy nexus image to node
+ copy:
+ src: /tmp/nexus.tar
+ dest: "{{ infra_images_path }}/{{ nexus3_image_tar }}"
+
+- name: Copy busybox image to node
+ copy:
+ src: /tmp/busybox.tar
+ dest: "{{ aux_data_path }}/busybox.tar"
+
+- name: Copy haproxy image to node
+ copy:
+ src: /tmp/haproxy.tar
+ dest: "{{ aux_data_path }}/aaionap-haproxy.tar"
diff --git a/ansible/test/roles/prepare-nexus/vars/main.yml b/ansible/test/roles/prepare-nexus/vars/main.yml
new file mode 100644
index 00000000..d2ee3548
--- /dev/null
+++ b/ansible/test/roles/prepare-nexus/vars/main.yml
@@ -0,0 +1,5 @@
+---
+# Hosts to be added to /etc/hosts file.
+etc_hosts:
+ - nexus.infrastructure-server
+ - nexus3.onap.org
diff --git a/ansible/test/roles/prepare-nginx/tasks/main.yml b/ansible/test/roles/prepare-nginx/tasks/main.yml
new file mode 100644
index 00000000..3cd93990
--- /dev/null
+++ b/ansible/test/roles/prepare-nginx/tasks/main.yml
@@ -0,0 +1,28 @@
+---
+- name: "Create needed dirs for nginx role"
+ file:
+ path: "{{ item }}"
+ state: directory
+ mode: "u+rw,g+wx,o+rwx"
+ recurse: true
+ loop:
+ - "{{ infra_images_path }}"
+
+- name: Build nginx docker image
+ delegate_to: localhost
+ docker_image:
+ path: ../../../../../build/creating_data/create_nginx_image/
+ name: own_nginx
+ tag: 2.0.0
+
+- name: Archive nginx docker image for the nginx role to use
+ delegate_to: localhost
+ docker_image:
+ name: own_nginx
+ tag: 2.0.0
+ archive_path: /tmp/nginx.tar
+
+- name: Copy nginx image to node
+ copy:
+ src: /tmp/nginx.tar
+ dest: "{{ infra_images_path }}/{{ nginx_server_image_tar }}"
diff --git a/ansible/test/roles/prepare-package-repository/tasks/main.yml b/ansible/test/roles/prepare-package-repository/tasks/main.yml
new file mode 100644
index 00000000..66f81d6d
--- /dev/null
+++ b/ansible/test/roles/prepare-package-repository/tasks/main.yml
@@ -0,0 +1,26 @@
+---
+- name: Add Docker-CE repo
+ yum_repository:
+ name: docker-ce
+ description: Docker-ce YUM repo
+ baseurl: https://download.docker.com/linux/centos/7/x86_64/stable/
+ gpgcheck: true
+ gpgkey: https://download.docker.com/linux/centos/gpg
+
+- name: Install createrepo
+ yum:
+ name: createrepo
+ state: present
+
+- name: "Ensure {{ rhel_pkg_dir }} exists"
+ file:
+ path: "{{ rhel_pkg_dir }}"
+ state: directory
+
+- name: Download rpm packages
+ command: "yumdownloader --destdir={{ rhel_pkg_dir }} --resolve {{ packages | join(' ') }}"
+
+- name: Index repository
+ command: "createrepo {{ rhel_pkg_dir }}"
+ args:
+ creates: "{{ rhel_pkg_dir }}/repodata"
diff --git a/ansible/test/roles/prepare-package-repository/vars/main.yml b/ansible/test/roles/prepare-package-repository/vars/main.yml
new file mode 100644
index 00000000..80944284
--- /dev/null
+++ b/ansible/test/roles/prepare-package-repository/vars/main.yml
@@ -0,0 +1,12 @@
+---
+rhel_pkg_dir: "{{ app_data_path }}/pkg/rhel"
+packages:
+- "docker-ce-18.09.5"
+- container-selinux
+- docker-ce-cli
+- containerd.io
+- python-jsonpointer
+- python-docker-py
+- python-docker-pycreds
+- python-ipaddress
+- python-websocket-client
diff --git a/ansible/test/roles/prepare-vncserver/tasks/main.yml b/ansible/test/roles/prepare-vncserver/tasks/main.yml
new file mode 100644
index 00000000..cb7a5f8a
--- /dev/null
+++ b/ansible/test/roles/prepare-vncserver/tasks/main.yml
@@ -0,0 +1,21 @@
+---
+- name: "Create needed dirs for vncserver role"
+ file:
+ path: "{{ item }}"
+ state: directory
+ mode: "u+rw,g+wx,o+rwx"
+ recurse: true
+ loop:
+ - "{{ infra_images_path }}"
+
+- name: Download and archive vncserver docker image for the vncserver role to use
+ delegate_to: localhost
+ docker_image:
+ name: "{{ vnc_server_image }}"
+ state: present
+ archive_path: /tmp/vncserver.tar
+
+- name: Copy vnc server image to node
+ copy:
+ src: /tmp/vncserver.tar
+ dest: "{{ infra_images_path }}/{{ vnc_server_image_tar }}"
diff --git a/build/build_nexus_blob.sh b/build/build_nexus_blob.sh
index 4b1697e3..09ed8969 100755
--- a/build/build_nexus_blob.sh
+++ b/build/build_nexus_blob.sh
@@ -21,9 +21,10 @@
### This script prepares Nexus repositories data blobs for ONAP
## The script requires following dependencies are installed: nodejs, jq, docker
-## All required resources are expected in the upper directory
-## created during download procedure as DATA_DIR
-## All lists used must be in project data_lists directory
+## All required resources are expected in the upper directory created during
+## download procedure as DATA_DIR or in the directory given as --input-directory
+## All lists used must be in project data_lists directory or in the directory given
+## as --resource-list-directory
# Fail fast settings
set -e
@@ -34,18 +35,6 @@ SCRIPT_LOG="/tmp/$(basename $0)_$(eval ${TIMESTAMP}).log"
# Log everything
exec &> >(tee -a "${SCRIPT_LOG}")
-usage () {
- echo " This script is preparing Nexus data blob from docker images and npm and pypi packages"
- echo " Usage:"
- echo " ./$(basename $0) <project version> [<target>]"
- echo " "
- echo " Example: ./$(basename $0) onap_3.0.1 /root/nexus_data"
- echo " "
- echo " Dependencies: nodejs, jq, docker"
- echo " "
- exit 1
-}
-
# Nexus repository location
NEXUS_DOMAIN="nexus"
NEXUS_PORT="8081"
@@ -60,24 +49,53 @@ NEXUS_USERNAME=admin
NEXUS_PASSWORD=admin123
NEXUS_EMAIL=admin@example.org
-if [ "${1}" == "-h" ] || [ "${1}" == "--help" ] || [ $# -eq 0 ]; then
- usage
-else
- TAG="${1}"
-fi
-
# Setting paths
LOCAL_PATH="$(readlink -f $(dirname ${0}))"
+
+#Defaults
DATA_DIR="$(realpath ${LOCAL_PATH}/../../resources)"
+NEXUS_DATA_DIR="${DATA_DIR}/nexus_data"
+LISTS_DIR="${LOCAL_PATH}/data_lists"
-if [ -z "${2}" ]; then
- NEXUS_DATA_DIR="${DATA_DIR}/nexus_data"
-else
- NEXUS_DATA_DIR="${2}"
-fi
+usage () {
+ echo " Example usage: build_nexus_blob.sh -t <tag> --input-directory </path/to/downloaded/files/dir> --output-directory
+ </path/to/output/dir> --resource-list-directory </path/to/dir/with/resource/list>
+
+ -t | --tag release tag, taken from available on git or placed by data generating script (mandatory) must fallow scheme onap_<semver>
+ -i | --input-directory directory containing file needed to create nexus blob. The structure of this directory must organized as described in build guide
+ -o | --output-directory
+ -rl | --resource-list-directory directory with files containing docker, pypi and rpm lists
+ "
+ exit 1
+}
+
+while [ "$1" != "" ]; do
+ case $1 in
+ -t | --tag ) shift
+ TAG=$1
+ ;;
+ -i | --input-directory ) shift
+ DATA_DIR=$1
+ ;;
+ -o | --output-directory ) shift
+ NEXUS_DATA_DIR=$1
+ ;;
+ -rl | --resource-list-directory ) shift
+ LISTS_DIR=$1
+ ;;
+ -h | --help ) usage
+ ;;
+ *) usage
+ esac
+ shift
+done
-# Setup directory with resources lists
-LISTS_DIR="${LOCAL_PATH}/data_lists"
+
+# exit if no tag given
+if [ -z ${TAG} ]; then
+ usage
+ exit 1
+fi
# Setup directories with resources for docker, npm and pypi
NXS_SRC_DOCKER_IMG_DIR="${DATA_DIR}/offline_data/docker_images_for_nexus"
@@ -284,7 +302,7 @@ for IMAGE in $(sed $'s/\r// ; /^#/d' ${NXS_DOCKER_IMG_LIST} | awk '{ print $1 }'
if [[ ${IMAGE} != *"/"* ]]; then
PUSH="${DOCKER_REGISTRY}/library/${IMAGE}"
elif [[ ${IMAGE} == *"${DEFAULT_REGISTRY}"* ]]; then
- if [[ ${IMAGE} == *"/"*"/"* ]]; then
+ if [[ ${IMAGE} == *"/"*"/"* ]]; then
PUSH="$(sed 's/'"${DEFAULT_REGISTRY}"'/'"${DOCKER_REGISTRY}"'/' <<< ${IMAGE})"
else
PUSH="$(sed 's/'"${DEFAULT_REGISTRY}"'/'"${DOCKER_REGISTRY}"'\/library/' <<< ${IMAGE})"
@@ -311,10 +329,10 @@ echo "Stopping Nexus and returning backups"
docker stop ${NEXUS_CONT_ID} > /dev/null
# Return backed up configuration files
-mv -f "${HOSTS_BACKUP}" /etc/hosts
+mv -f "/etc/${HOSTS_BACKUP}" /etc/hosts
if [ -f "~/.docker/${DOCKER_CONF_BACKUP}" ]; then
- mv -f "${DOCKER_CONF_BACKUP}" ~/.docker/config.json
+ mv -f "~/.docker/${DOCKER_CONF_BACKUP}" ~/.docker/config.json
fi
# Return default settings
@@ -322,3 +340,4 @@ npm config set registry "https://registry.npmjs.org"
echo "Nexus blob is built"
exit 0
+
diff --git a/build/creating_data/download-pip.sh b/build/creating_data/download-pip.sh
index fd4a4363..7ab4b0c8 100755
--- a/build/creating_data/download-pip.sh
+++ b/build/creating_data/download-pip.sh
@@ -41,7 +41,7 @@ cnt=1
mkdir -p "$outdir"
cd "$outdir"
-for line in $(clean_list "$LIST_FILE)"; do
+for line in $(clean_list "$LIST_FILE"); do
echo "Downloading $cnt / $lines: $line"
pip download $line
cnt=$((cnt+1))
diff --git a/build/data_lists/onap_3.0.0-docker_images.list b/build/data_lists/onap_3.0.0-docker_images.list
deleted file mode 100644
index 589c6a51..00000000
--- a/build/data_lists/onap_3.0.0-docker_images.list
+++ /dev/null
@@ -1,218 +0,0 @@
-aaionap/haproxy:1.2.4
-library/alpine:3.6
-library/busybox:latest
-library/cassandra:2.1
-library/consul:1.0.6
-crunchydata/crunchy-pgpool:centos7-10.4-2.0.0
-crunchydata/crunchy-postgres:centos7-10.3-1.8.2
-crunchydata/crunchy-postgres:centos7-10.4-2.0.0
-docker.elastic.co/beats/filebeat:5.5.0
-docker.elastic.co/elasticsearch/elasticsearch-oss:6.1.3
-docker.elastic.co/elasticsearch/elasticsearch:5.5.0
-docker.elastic.co/elasticsearch/elasticsearch:6.1.2
-docker.elastic.co/elasticsearch/elasticsearch:6.3.1
-docker.elastic.co/kibana/kibana:5.5.0
-docker.elastic.co/kibana/kibana:6.3.1
-docker.elastic.co/logstash/logstash:5.4.3
-gcr.io/google-samples/xtrabackup:1.0
-gcr.io/google_samples/k8szk:v3
-gcr.io/kubernetes-helm/tiller:v2.9.1
-library/mariadb:10
-nexus3.onap.org:10001/adfinissygroup/k8s-mariadb-galera-centos:v002
-nexus3.onap.org:10001/busybox:latest
-nexus3.onap.org:10001/library/consul:1.0.6
-nexus3.onap.org:10001/library/tomcat:8.5
-nexus3.onap.org:10001/library/vault:0.10.0
-nexus3.onap.org:10001/mariadb:10.1.11
-nexus3.onap.org:10001/mariadb:10.2.14
-nexus3.onap.org:10001/onap/aaf/aaf_cass:2.1.8
-nexus3.onap.org:10001/onap/aaf/aaf_cm:2.1.8
-nexus3.onap.org:10001/onap/aaf/aaf_config:2.1.8
-nexus3.onap.org:10001/onap/aaf/aaf_fs:2.1.8
-nexus3.onap.org:10001/onap/aaf/aaf_gui:2.1.8
-nexus3.onap.org:10001/onap/aaf/aaf_hello:2.1.8
-nexus3.onap.org:10001/onap/aaf/aaf_locate:2.1.8
-nexus3.onap.org:10001/onap/aaf/aaf_oauth:2.1.8
-nexus3.onap.org:10001/onap/aaf/aaf_service:2.1.8
-nexus3.onap.org:10001/onap/aaf/distcenter:3.0.0
-nexus3.onap.org:10001/onap/aaf/sms:3.0.1
-nexus3.onap.org:10001/onap/aaf/smsquorumclient:3.0.1
-nexus3.onap.org:10001/onap/aaf/testcaservice:3.0.0
-nexus3.onap.org:10001/onap/aai-graphadmin:1.0.1
-nexus3.onap.org:10001/onap/aai-resources:1.3.4
-nexus3.onap.org:10001/onap/aai-traversal:1.3.3
-nexus3.onap.org:10001/onap/aai/esr-gui:1.2.1
-nexus3.onap.org:10001/onap/aai/esr-server:1.2.1
-nexus3.onap.org:10001/onap/admportal-sdnc-image:1.4.3
-nexus3.onap.org:10001/onap/appc-cdt-image:1.4.3
-nexus3.onap.org:10001/onap/appc-image:1.4.3
-nexus3.onap.org:10001/onap/babel:1.3.2
-nexus3.onap.org:10001/onap/ccsdk-ansible-server-image:0.3.2
-nexus3.onap.org:10001/onap/ccsdk-apps-ms-neng:0.3.2
-nexus3.onap.org:10001/onap/ccsdk-controllerblueprints:0.3.2
-nexus3.onap.org:10001/onap/ccsdk-dgbuilder-image:0.3.2
-nexus3.onap.org:10001/onap/champ:1.3.0
-nexus3.onap.org:10001/onap/clamp-dashboard-kibana:3.0.3
-nexus3.onap.org:10001/onap/clamp-dashboard-logstash:3.0.3
-nexus3.onap.org:10001/onap/clamp:3.0.3
-nexus3.onap.org:10001/onap/cli:2.0.4
-nexus3.onap.org:10001/onap/data-router:1.3.1
-nexus3.onap.org:10001/onap/dcae-be:1.3.0
-nexus3.onap.org:10001/onap/dcae-dt:1.2.0
-nexus3.onap.org:10001/onap/dcae-fe:1.3.0
-nexus3.onap.org:10001/onap/dcae-tools:1.3.0
-nexus3.onap.org:10001/onap/dcae-tosca-app:1.3.0
-nexus3.onap.org:10001/onap/dmaap/buscontroller:1.0.23
-nexus3.onap.org:10001/onap/dmaap/datarouter-node:1.0.3
-nexus3.onap.org:10001/onap/dmaap/datarouter-prov:1.0.3
-nexus3.onap.org:10001/onap/dmaap/dmaap-mr:1.1.8
-nexus3.onap.org:10001/onap/dmaap/kafka01101:0.0.1
-nexus3.onap.org:10001/onap/externalapi/nbi:3.0.1
-nexus3.onap.org:10001/onap/gizmo:1.3.0
-nexus3.onap.org:10001/onap/holmes/engine-management:1.2.2
-nexus3.onap.org:10001/onap/holmes/rule-management:1.2.3
-nexus3.onap.org:10001/onap/model-loader:1.3.1
-nexus3.onap.org:10001/onap/msb/msb_apigateway:1.2.1
-nexus3.onap.org:10001/onap/msb/msb_discovery:1.2.1
-nexus3.onap.org:10001/onap/multicloud/azure:1.2.1
-nexus3.onap.org:10001/onap/multicloud/framework:1.2.1
-nexus3.onap.org:10001/onap/multicloud/openstack-ocata:1.2.1
-nexus3.onap.org:10001/onap/multicloud/openstack-pike:1.2.1
-nexus3.onap.org:10001/onap/multicloud/openstack-windriver:1.2.1
-nexus3.onap.org:10001/onap/multicloud/vio:1.2.1
-nexus3.onap.org:10001/onap/music/cassandra_3_11:3.0.24
-nexus3.onap.org:10001/onap/music/cassandra_job:3.0.24
-nexus3.onap.org:10001/onap/music/cassandra_music:3.0.0
-nexus3.onap.org:10001/onap/music/music:3.0.24
-nexus3.onap.org:10001/onap/network-discovery:1.4.2
-nexus3.onap.org:10001/onap/oom/kube2msb:1.1.0
-nexus3.onap.org:10001/onap/optf-cmso-dbinit:1.0.1
-nexus3.onap.org:10001/onap/optf-cmso-service:1.0.1
-nexus3.onap.org:10001/onap/optf-has:1.2.4
-nexus3.onap.org:10001/onap/optf-osdf:1.2.4
-nexus3.onap.org:10001/onap/org.onap.dcaegen2.collectors.datafile.datafile-app-server:1.0.4
-nexus3.onap.org:10001/onap/org.onap.dcaegen2.collectors.hv-ves.hv-collector-main:1.0.0
-nexus3.onap.org:10001/onap/org.onap.dcaegen2.collectors.snmptrap:1.4.0
-nexus3.onap.org:10001/onap/org.onap.dcaegen2.collectors.ves.vescollector:1.3.1
-nexus3.onap.org:10001/onap/org.onap.dcaegen2.deployments.cm-container:1.4.2
-nexus3.onap.org:10001/onap/org.onap.dcaegen2.deployments.healthcheck-container:1.1.2
-nexus3.onap.org:10001/onap/org.onap.dcaegen2.deployments.k8s-bootstrap-container:1.4.5
-nexus3.onap.org:10001/onap/org.onap.dcaegen2.deployments.redis-cluster-container:1.0.0
-nexus3.onap.org:10001/onap/org.onap.dcaegen2.deployments.tca-cdap-container:1.1.0
-nexus3.onap.org:10001/onap/org.onap.dcaegen2.deployments.tls-init-container:1.0.0
-nexus3.onap.org:10001/onap/org.onap.dcaegen2.platform.configbinding.app-app:2.2.3
-nexus3.onap.org:10001/onap/org.onap.dcaegen2.platform.deployment-handler:3.0.3
-nexus3.onap.org:10001/onap/org.onap.dcaegen2.platform.inventory-api:3.0.4
-nexus3.onap.org:10001/onap/org.onap.dcaegen2.platform.policy-handler:4.4.0
-nexus3.onap.org:10001/onap/org.onap.dcaegen2.platform.servicechange-handler:1.1.5
-nexus3.onap.org:10001/onap/org.onap.dcaegen2.services.prh.prh-app-server:1.1.1
-nexus3.onap.org:10001/onap/policy-apex-pdp:2.0.3
-nexus3.onap.org:10001/onap/policy-distribution:2.0.3
-nexus3.onap.org:10001/onap/policy-drools:1.3.4
-nexus3.onap.org:10001/onap/policy-pe:1.3.4
-nexus3.onap.org:10001/onap/pomba-aai-context-builder:1.3.2
-nexus3.onap.org:10001/onap/pomba-context-aggregator:1.3.4
-nexus3.onap.org:10001/onap/pomba-network-discovery-context-builder:1.3.1
-nexus3.onap.org:10001/onap/pomba-sdc-context-builder:1.3.2
-nexus3.onap.org:10001/onap/portal-app:2.3.1
-nexus3.onap.org:10001/onap/portal-db:2.3.1
-nexus3.onap.org:10001/onap/portal-sdk:2.3.1
-nexus3.onap.org:10001/onap/portal-wms:2.3.1
-nexus3.onap.org:10001/onap/sdc-backend-init:1.3.5
-nexus3.onap.org:10001/onap/sdc-backend:1.3.5
-nexus3.onap.org:10001/onap/sdc-cassandra-init:1.3.5
-nexus3.onap.org:10001/onap/sdc-cassandra:1.3.5
-nexus3.onap.org:10001/onap/sdc-elasticsearch:1.3.5
-nexus3.onap.org:10001/onap/sdc-frontend:1.3.5
-nexus3.onap.org:10001/onap/sdc-init-elasticsearch:1.3.5
-nexus3.onap.org:10001/onap/sdc-kibana:1.3.5
-nexus3.onap.org:10001/onap/sdc-onboard-backend:1.3.5
-nexus3.onap.org:10001/onap/sdc-onboard-cassandra-init:1.3.5
-nexus3.onap.org:10001/onap/sdnc-ansible-server-image:1.4.3
-nexus3.onap.org:10001/onap/sdnc-dmaap-listener-image:1.4.3
-nexus3.onap.org:10001/onap/sdnc-image:1.4.3
-nexus3.onap.org:10001/onap/sdnc-ueb-listener-image:1.4.3
-nexus3.onap.org:10001/onap/search-data-service:1.3.1
-nexus3.onap.org:10001/onap/service-decomposition:1.4.2
-nexus3.onap.org:10001/onap/sniroemulator:1.0.0
-nexus3.onap.org:10001/onap/so/api-handler-infra:1.3.3
-nexus3.onap.org:10001/onap/so/bpmn-infra:1.3.3
-nexus3.onap.org:10001/onap/so/catalog-db-adapter:1.3.3
-nexus3.onap.org:10001/onap/so/openstack-adapter:1.3.3
-nexus3.onap.org:10001/onap/so/request-db-adapter:1.3.3
-nexus3.onap.org:10001/onap/so/sdc-controller:1.3.3
-nexus3.onap.org:10001/onap/so/sdnc-adapter:1.3.3
-nexus3.onap.org:10001/onap/so/so-monitoring:1.3.3
-nexus3.onap.org:10001/onap/so/vfc-adapter:1.3.3
-nexus3.onap.org:10001/onap/sparky-be:1.3.0
-nexus3.onap.org:10001/onap/spike:1.3.1
-nexus3.onap.org:10001/onap/testsuite:1.3.2
-nexus3.onap.org:10001/onap/usecase-ui-server:1.2.1
-nexus3.onap.org:10001/onap/usecase-ui:1.2.2
-nexus3.onap.org:10001/onap/validation:1.3.1
-nexus3.onap.org:10001/onap/vfc/catalog:1.2.1
-nexus3.onap.org:10001/onap/vfc/db:1.2.1
-nexus3.onap.org:10001/onap/vfc/emsdriver:1.2.1
-nexus3.onap.org:10001/onap/vfc/gvnfmdriver:1.2.1
-nexus3.onap.org:10001/onap/vfc/jujudriver:1.2.1
-nexus3.onap.org:10001/onap/vfc/multivimproxy:1.2.1
-nexus3.onap.org:10001/onap/vfc/nfvo/svnfm/huawei:1.2.1
-nexus3.onap.org:10001/onap/vfc/nfvo/svnfm/nokia:1.1.0
-nexus3.onap.org:10001/onap/vfc/nfvo/svnfm/nokiav2:1.3.0
-nexus3.onap.org:10001/onap/vfc/nslcm:1.2.1
-nexus3.onap.org:10001/onap/vfc/resmanagement:1.2.1
-nexus3.onap.org:10001/onap/vfc/vnflcm:1.2.1
-nexus3.onap.org:10001/onap/vfc/vnfmgr:1.2.1
-nexus3.onap.org:10001/onap/vfc/vnfres:1.2.1
-nexus3.onap.org:10001/onap/vfc/wfengine-activiti:1.2.0
-nexus3.onap.org:10001/onap/vfc/wfengine-mgrservice:1.2.0
-nexus3.onap.org:10001/onap/vfc/ztesdncdriver:1.2.0
-nexus3.onap.org:10001/onap/vfc/ztevnfmdriver:1.2.1
-nexus3.onap.org:10001/onap/vid:3.2.2
-nexus3.onap.org:10001/onap/vnfsdk/refrepo:1.2.0
-nexus3.onap.org:10001/onap/workflow-backend:1.3.2
-nexus3.onap.org:10001/onap/workflow-frontend:1.3.2
-nexus3.onap.org:10001/onap/workflow-init:1.3.2
-nexus3.onap.org:10001/sonatype/nexus:2.14.8-01
-nexus3.onap.org:10001/zookeeper:3.4
-library/nginx:1.13-alpine
-ninech/netbox:v2.3.5
-oomk8s/consul:1.0.0
-oomk8s/mariadb-client-init:3.0.0
-oomk8s/readiness-check:2.0.0
-oomk8s/readiness-check:2.0.1
-oomk8s/ubuntu-init:1.0.0
-library/postgres:10.2-alpine
-library/postgres:9.5.2
-rancher/agent:v1.2.11
-rancher/dns:v0.17.4
-rancher/etc-host-updater:v0.0.3
-rancher/etcd:v2.3.7-17
-rancher/healthcheck:v0.3.8
-rancher/heapster-amd64:v1.5.2
-rancher/heapster-grafana-amd64:v4.4.3
-rancher/heapster-influxdb-amd64:v1.3.3
-rancher/k8s-dns-dnsmasq-nanny-amd64:1.14.10
-rancher/k8s-dns-kube-dns-amd64:1.14.10
-rancher/k8s-dns-sidecar-amd64:1.14.10
-rancher/k8s:v1.11.5-rancher1-1
-rancher/kubectld:v0.8.8
-rancher/kubernetes-agent:v0.6.9
-rancher/kubernetes-auth:v0.0.8
-rancher/kubernetes-dashboard-amd64:v1.8.3
-rancher/lb-service-haproxy:v0.9.6
-rancher/lb-service-rancher:v0.9.6
-rancher/metadata:v0.10.4
-rancher/net:holder
-rancher/net:v0.13.17
-rancher/network-manager:v0.7.22
-rancher/pause-amd64:3.0
-rancher/server:v1.6.22
-rancher/tiller:v2.9.1
-registry.hub.docker.com/library/busybox:latest
-registry.hub.docker.com/library/consul:0.9.3
-registry.hub.docker.com/library/mongo:3
-registry.hub.docker.com/library/mysql:5.7
-registry.hub.docker.com/oomk8s/ubuntu-init:2.0.0
-taskrabbit/elasticsearch-dump:latest
-wurstmeister/zookeeper:latest
diff --git a/build/data_lists/onap_3.0.1-docker_images.list b/build/data_lists/onap_3.0.1-docker_images.list
deleted file mode 100644
index ec98a3ed..00000000
--- a/build/data_lists/onap_3.0.1-docker_images.list
+++ /dev/null
@@ -1,221 +0,0 @@
-aaionap/haproxy:1.2.4
-library/alpine:3.6
-library/busybox:latest
-library/cassandra:2.1
-cdposs/zookeeper:3.4.9
-library/consul:1.0.6
-crunchydata/crunchy-pgpool:centos7-10.4-2.0.0
-crunchydata/crunchy-postgres:centos7-10.3-1.8.2
-crunchydata/crunchy-postgres:centos7-10.4-2.0.0
-docker.elastic.co/beats/filebeat:5.5.0
-docker.elastic.co/elasticsearch/elasticsearch-oss:6.1.3
-docker.elastic.co/elasticsearch/elasticsearch:5.5.0
-docker.elastic.co/elasticsearch/elasticsearch:6.1.2
-docker.elastic.co/elasticsearch/elasticsearch:6.3.1
-docker.elastic.co/kibana/kibana:5.5.0
-docker.elastic.co/kibana/kibana:6.3.1
-docker.elastic.co/logstash/logstash:5.4.3
-gcr.io/google-samples/xtrabackup:1.0
-gcr.io/google_samples/k8szk:v3
-gcr.io/kubernetes-helm/tiller:v2.9.1
-library/mariadb:10
-nexus3.onap.org:10001/adfinissygroup/k8s-mariadb-galera-centos:v002
-nexus3.onap.org:10001/busybox:latest
-nexus3.onap.org:10001/library/consul:1.0.6
-nexus3.onap.org:10001/library/tomcat:8.5
-nexus3.onap.org:10001/library/vault:0.10.0
-nexus3.onap.org:10001/mariadb:10.1.11
-nexus3.onap.org:10001/mariadb:10.2.14
-nexus3.onap.org:10001/onap/aaf/aaf_cass:2.1.8
-nexus3.onap.org:10001/onap/aaf/aaf_cm:2.1.8
-nexus3.onap.org:10001/onap/aaf/aaf_config:2.1.8
-nexus3.onap.org:10001/onap/aaf/aaf_fs:2.1.8
-nexus3.onap.org:10001/onap/aaf/aaf_gui:2.1.8
-nexus3.onap.org:10001/onap/aaf/aaf_hello:2.1.8
-nexus3.onap.org:10001/onap/aaf/aaf_locate:2.1.8
-nexus3.onap.org:10001/onap/aaf/aaf_oauth:2.1.8
-nexus3.onap.org:10001/onap/aaf/aaf_service:2.1.8
-nexus3.onap.org:10001/onap/aaf/distcenter:3.0.0
-nexus3.onap.org:10001/onap/aaf/sms:3.0.1
-nexus3.onap.org:10001/onap/aaf/smsquorumclient:3.0.1
-nexus3.onap.org:10001/onap/aaf/testcaservice:3.0.0
-nexus3.onap.org:10001/onap/aai-graphadmin:1.0.4
-nexus3.onap.org:10001/onap/aai-resources:1.3.5
-nexus3.onap.org:10001/onap/aai-traversal:1.3.4
-nexus3.onap.org:10001/onap/aai/esr-gui:1.2.1
-nexus3.onap.org:10001/onap/aai/esr-server:1.2.1
-nexus3.onap.org:10001/onap/admportal-sdnc-image:1.4.4
-nexus3.onap.org:10001/onap/appc-cdt-image:1.4.4
-nexus3.onap.org:10001/onap/appc-image:1.4.4
-nexus3.onap.org:10001/onap/babel:1.3.3
-nexus3.onap.org:10001/onap/ccsdk-ansible-server-image:0.3.3
-nexus3.onap.org:10001/onap/ccsdk-apps-ms-neng:0.3.3
-nexus3.onap.org:10001/onap/ccsdk-controllerblueprints:0.3.3
-nexus3.onap.org:10001/onap/ccsdk-dgbuilder-image:0.3.3
-nexus3.onap.org:10001/onap/champ:1.3.1
-nexus3.onap.org:10001/onap/clamp-dashboard-kibana:3.0.3
-nexus3.onap.org:10001/onap/clamp-dashboard-logstash:3.0.3
-nexus3.onap.org:10001/onap/clamp:3.0.3
-nexus3.onap.org:10001/onap/cli:2.0.4
-nexus3.onap.org:10001/onap/data-router:1.3.1
-nexus3.onap.org:10001/onap/data-router:1.3.2
-nexus3.onap.org:10001/onap/data-router:1.3.3
-nexus3.onap.org:10001/onap/dcae-be:1.3.0
-nexus3.onap.org:10001/onap/dcae-dt:1.2.0
-nexus3.onap.org:10001/onap/dcae-fe:1.3.0
-nexus3.onap.org:10001/onap/dcae-tools:1.3.0
-nexus3.onap.org:10001/onap/dcae-tosca-app:1.3.0
-nexus3.onap.org:10001/onap/dmaap/buscontroller:1.0.23
-nexus3.onap.org:10001/onap/dmaap/datarouter-node:1.0.3
-nexus3.onap.org:10001/onap/dmaap/datarouter-prov:1.0.3
-nexus3.onap.org:10001/onap/dmaap/dmaap-mr:1.1.8
-nexus3.onap.org:10001/onap/dmaap/kafka01101:0.0.1
-nexus3.onap.org:10001/onap/externalapi/nbi:3.0.2
-nexus3.onap.org:10001/onap/gizmo:1.3.2
-nexus3.onap.org:10001/onap/holmes/engine-management:1.2.2
-nexus3.onap.org:10001/onap/holmes/rule-management:1.2.3
-nexus3.onap.org:10001/onap/model-loader:1.3.2
-nexus3.onap.org:10001/onap/msb/msb_apigateway:1.2.1
-nexus3.onap.org:10001/onap/msb/msb_discovery:1.2.1
-nexus3.onap.org:10001/onap/multicloud/azure:1.2.1
-nexus3.onap.org:10001/onap/multicloud/framework:1.2.1
-nexus3.onap.org:10001/onap/multicloud/openstack-ocata:1.2.3
-nexus3.onap.org:10001/onap/multicloud/openstack-pike:1.2.3
-nexus3.onap.org:10001/onap/multicloud/openstack-windriver:1.2.3
-nexus3.onap.org:10001/onap/multicloud/vio:1.2.1
-nexus3.onap.org:10001/onap/music/cassandra_3_11:3.0.24
-nexus3.onap.org:10001/onap/music/cassandra_job:3.0.24
-nexus3.onap.org:10001/onap/music/cassandra_music:3.0.0
-nexus3.onap.org:10001/onap/music/music:3.0.24
-nexus3.onap.org:10001/onap/network-discovery:1.4.2
-nexus3.onap.org:10001/onap/oom/kube2msb:1.1.0
-nexus3.onap.org:10001/onap/optf-cmso-dbinit:1.0.1
-nexus3.onap.org:10001/onap/optf-cmso-service:1.0.1
-nexus3.onap.org:10001/onap/optf-has:1.2.5
-nexus3.onap.org:10001/onap/optf-osdf:1.2.4
-nexus3.onap.org:10001/onap/org.onap.dcaegen2.collectors.datafile.datafile-app-server:1.0.5
-nexus3.onap.org:10001/onap/org.onap.dcaegen2.collectors.hv-ves.hv-collector-main:1.0.2
-nexus3.onap.org:10001/onap/org.onap.dcaegen2.collectors.snmptrap:1.4.0
-nexus3.onap.org:10001/onap/org.onap.dcaegen2.collectors.ves.vescollector:1.3.2
-nexus3.onap.org:10001/onap/org.onap.dcaegen2.deployments.cm-container:1.4.2
-nexus3.onap.org:10001/onap/org.onap.dcaegen2.deployments.healthcheck-container:1.1.2
-nexus3.onap.org:10001/onap/org.onap.dcaegen2.deployments.k8s-bootstrap-container:1.4.5
-nexus3.onap.org:10001/onap/org.onap.dcaegen2.deployments.redis-cluster-container:1.0.0
-nexus3.onap.org:10001/onap/org.onap.dcaegen2.deployments.tca-cdap-container:1.1.0
-nexus3.onap.org:10001/onap/org.onap.dcaegen2.deployments.tls-init-container:1.0.0
-nexus3.onap.org:10001/onap/org.onap.dcaegen2.platform.configbinding.app-app:2.2.3
-nexus3.onap.org:10001/onap/org.onap.dcaegen2.platform.deployment-handler:3.0.3
-nexus3.onap.org:10001/onap/org.onap.dcaegen2.platform.inventory-api:3.0.4
-nexus3.onap.org:10001/onap/org.onap.dcaegen2.platform.policy-handler:4.4.0
-nexus3.onap.org:10001/onap/org.onap.dcaegen2.platform.servicechange-handler:1.1.5
-nexus3.onap.org:10001/onap/org.onap.dcaegen2.services.prh.prh-app-server:1.1.1
-nexus3.onap.org:10001/onap/policy-apex-pdp:2.0.4
-nexus3.onap.org:10001/onap/policy-distribution:2.0.4
-nexus3.onap.org:10001/onap/policy-drools:1.3.5
-nexus3.onap.org:10001/onap/policy-pe:1.3.5
-nexus3.onap.org:10001/onap/pomba-aai-context-builder:1.3.2
-nexus3.onap.org:10001/onap/pomba-context-aggregator:1.3.4
-nexus3.onap.org:10001/onap/pomba-network-discovery-context-builder:1.3.1
-nexus3.onap.org:10001/onap/pomba-sdc-context-builder:1.3.2
-nexus3.onap.org:10001/onap/portal-app:2.3.1
-nexus3.onap.org:10001/onap/portal-db:2.3.1
-nexus3.onap.org:10001/onap/portal-sdk:2.3.1
-nexus3.onap.org:10001/onap/portal-wms:2.3.1
-nexus3.onap.org:10001/onap/sdc-backend-init:1.3.6
-nexus3.onap.org:10001/onap/sdc-backend:1.3.6
-nexus3.onap.org:10001/onap/sdc-cassandra-init:1.3.6
-nexus3.onap.org:10001/onap/sdc-cassandra:1.3.6
-nexus3.onap.org:10001/onap/sdc-elasticsearch:1.3.6
-nexus3.onap.org:10001/onap/sdc-frontend:1.3.6
-nexus3.onap.org:10001/onap/sdc-init-elasticsearch:1.3.6
-nexus3.onap.org:10001/onap/sdc-kibana:1.3.6
-nexus3.onap.org:10001/onap/sdc-onboard-backend:1.3.6
-nexus3.onap.org:10001/onap/sdc-onboard-cassandra-init:1.3.6
-nexus3.onap.org:10001/onap/sdnc-ansible-server-image:1.4.4
-nexus3.onap.org:10001/onap/sdnc-dmaap-listener-image:1.4.4
-nexus3.onap.org:10001/onap/sdnc-image:1.4.4
-nexus3.onap.org:10001/onap/sdnc-ueb-listener-image:1.4.4
-nexus3.onap.org:10001/onap/search-data-service:1.3.2
-nexus3.onap.org:10001/onap/service-decomposition:1.4.2
-nexus3.onap.org:10001/onap/sniroemulator:1.0.0
-nexus3.onap.org:10001/onap/so/api-handler-infra:1.3.6
-nexus3.onap.org:10001/onap/so/bpmn-infra:1.3.6
-nexus3.onap.org:10001/onap/so/catalog-db-adapter:1.3.6
-nexus3.onap.org:10001/onap/so/openstack-adapter:1.3.6
-nexus3.onap.org:10001/onap/so/request-db-adapter:1.3.6
-nexus3.onap.org:10001/onap/so/sdc-controller:1.3.6
-nexus3.onap.org:10001/onap/so/sdnc-adapter:1.3.6
-nexus3.onap.org:10001/onap/so/so-monitoring:1.3.6
-nexus3.onap.org:10001/onap/so/vfc-adapter:1.3.6
-nexus3.onap.org:10001/onap/sparky-be:1.3.2
-nexus3.onap.org:10001/onap/spike:1.3.1
-nexus3.onap.org:10001/onap/testsuite:1.3.3
-nexus3.onap.org:10001/onap/usecase-ui-server:1.2.1
-nexus3.onap.org:10001/onap/usecase-ui:1.2.2
-nexus3.onap.org:10001/onap/validation:1.3.1
-nexus3.onap.org:10001/onap/vfc/catalog:1.2.1
-nexus3.onap.org:10001/onap/vfc/db:1.2.1
-nexus3.onap.org:10001/onap/vfc/emsdriver:1.2.1
-nexus3.onap.org:10001/onap/vfc/gvnfmdriver:1.2.1
-nexus3.onap.org:10001/onap/vfc/jujudriver:1.2.1
-nexus3.onap.org:10001/onap/vfc/multivimproxy:1.2.1
-nexus3.onap.org:10001/onap/vfc/nfvo/svnfm/huawei:1.2.1
-nexus3.onap.org:10001/onap/vfc/nfvo/svnfm/nokia:1.1.0
-nexus3.onap.org:10001/onap/vfc/nfvo/svnfm/nokiav2:1.3.0
-nexus3.onap.org:10001/onap/vfc/nslcm:1.2.1
-nexus3.onap.org:10001/onap/vfc/resmanagement:1.2.1
-nexus3.onap.org:10001/onap/vfc/vnflcm:1.2.1
-nexus3.onap.org:10001/onap/vfc/vnfmgr:1.2.1
-nexus3.onap.org:10001/onap/vfc/vnfres:1.2.1
-nexus3.onap.org:10001/onap/vfc/wfengine-activiti:1.2.0
-nexus3.onap.org:10001/onap/vfc/wfengine-mgrservice:1.2.0
-nexus3.onap.org:10001/onap/vfc/ztesdncdriver:1.2.0
-nexus3.onap.org:10001/onap/vfc/ztevnfmdriver:1.2.1
-nexus3.onap.org:10001/onap/vid:3.2.2
-nexus3.onap.org:10001/onap/vnfsdk/refrepo:1.2.0
-nexus3.onap.org:10001/onap/workflow-backend:1.3.2
-nexus3.onap.org:10001/onap/workflow-frontend:1.3.2
-nexus3.onap.org:10001/onap/workflow-init:1.3.2
-nexus3.onap.org:10001/sonatype/nexus:2.14.8-01
-nexus3.onap.org:10001/zookeeper:3.4
-library/nginx:1.13-alpine
-ninech/netbox:v2.3.5
-oomk8s/consul:1.0.0
-oomk8s/mariadb-client-init:3.0.0
-oomk8s/readiness-check:2.0.0
-oomk8s/readiness-check:2.0.1
-oomk8s/ubuntu-init:1.0.0
-library/postgres:10.2-alpine
-library/postgres:9.5.2
-rancher/agent:v1.2.11
-rancher/dns:v0.17.4
-rancher/etc-host-updater:v0.0.3
-rancher/etcd:v2.3.7-17
-rancher/healthcheck:v0.3.8
-rancher/heapster-amd64:v1.5.2
-rancher/heapster-grafana-amd64:v4.4.3
-rancher/heapster-influxdb-amd64:v1.3.3
-rancher/k8s-dns-dnsmasq-nanny-amd64:1.14.10
-rancher/k8s-dns-kube-dns-amd64:1.14.10
-rancher/k8s-dns-sidecar-amd64:1.14.10
-rancher/k8s:v1.11.5-rancher1-1
-rancher/kubectld:v0.8.8
-rancher/kubernetes-agent:v0.6.9
-rancher/kubernetes-auth:v0.0.8
-rancher/kubernetes-dashboard-amd64:v1.8.3
-rancher/lb-service-haproxy:v0.9.6
-rancher/lb-service-rancher:v0.9.6
-rancher/metadata:v0.10.4
-rancher/net:holder
-rancher/net:v0.13.17
-rancher/network-manager:v0.7.22
-rancher/pause-amd64:3.0
-rancher/server:v1.6.22
-rancher/tiller:v2.9.1
-registry.hub.docker.com/library/busybox:latest
-registry.hub.docker.com/library/consul:0.9.3
-registry.hub.docker.com/library/mongo:3
-registry.hub.docker.com/library/mysql:5.7
-registry.hub.docker.com/oomk8s/ubuntu-init:2.0.0
-taskrabbit/elasticsearch-dump:latest
-library/zookeeper:3.4
diff --git a/build/data_lists/onap_3.0.2-docker_images.list b/build/data_lists/onap_3.0.2-docker_images.list
deleted file mode 100644
index eba44517..00000000
--- a/build/data_lists/onap_3.0.2-docker_images.list
+++ /dev/null
@@ -1,219 +0,0 @@
-alpine:3.6
-cassandra:2.1
-crunchydata/crunchy-pgpool:centos7-10.4-2.0.0
-crunchydata/crunchy-postgres:centos7-10.3-1.8.2
-crunchydata/crunchy-postgres:centos7-10.4-2.0.0
-docker.elastic.co/beats/filebeat:5.5.0
-docker.elastic.co/elasticsearch/elasticsearch:5.5.0
-docker.elastic.co/elasticsearch/elasticsearch:6.1.2
-docker.elastic.co/elasticsearch/elasticsearch:6.3.1
-docker.elastic.co/elasticsearch/elasticsearch-oss:6.1.3
-docker.elastic.co/kibana/kibana:5.5.0
-docker.elastic.co/kibana/kibana:6.3.1
-docker.elastic.co/logstash/logstash:5.4.3
-docker.io/aaionap/haproxy:1.2.4
-docker.io/busybox
-docker.io/cdposs/zookeeper:3.4.9
-docker.io/consul:1.0.6
-docker.io/library/busybox:latest
-docker.io/nginx:1.13-alpine
-docker.io/ninech/netbox:v2.3.5
-docker.io/oomk8s/consul:1.0.0
-docker.io/postgres:10.2-alpine
-docker.io/taskrabbit/elasticsearch-dump
-gcr.io/google_samples/k8szk:v3
-gcr.io/google-samples/xtrabackup:1.0
-library/mariadb:10
-nexus3.onap.org:10001/adfinissygroup/k8s-mariadb-galera-centos:v002
-nexus3.onap.org:10001/busybox
-nexus3.onap.org:10001/library/consul:1.0.6
-nexus3.onap.org:10001/library/tomcat:8.5
-nexus3.onap.org:10001/library/vault:0.10.0
-nexus3.onap.org:10001/mariadb:10.1.11
-nexus3.onap.org:10001/mariadb:10.2.14
-nexus3.onap.org:10001/onap/aaf/aaf_cass:2.1.8
-nexus3.onap.org:10001/onap/aaf/aaf_cm:2.1.8
-nexus3.onap.org:10001/onap/aaf/aaf_config:2.1.8
-nexus3.onap.org:10001/onap/aaf/aaf_fs:2.1.8
-nexus3.onap.org:10001/onap/aaf/aaf_gui:2.1.8
-nexus3.onap.org:10001/onap/aaf/aaf_hello:2.1.8
-nexus3.onap.org:10001/onap/aaf/aaf_locate:2.1.8
-nexus3.onap.org:10001/onap/aaf/aaf_oauth:2.1.8
-nexus3.onap.org:10001/onap/aaf/aaf_service:2.1.8
-nexus3.onap.org:10001/onap/aaf/distcenter:3.0.0
-nexus3.onap.org:10001/onap/aaf/sms:3.0.1
-nexus3.onap.org:10001/onap/aaf/smsquorumclient:3.0.1
-nexus3.onap.org:10001/onap/aaf/testcaservice:3.0.0
-nexus3.onap.org:10001/onap/aai/esr-gui:1.2.1
-nexus3.onap.org:10001/onap/aai/esr-server:1.2.1
-nexus3.onap.org:10001/onap/aai-graphadmin:1.0.4
-nexus3.onap.org:10001/onap/aai-resources:1.3.5
-nexus3.onap.org:10001/onap/aai-traversal:1.3.4
-nexus3.onap.org:10001/onap/admportal-sdnc-image:1.4.4
-nexus3.onap.org:10001/onap/appc-cdt-image:1.4.4
-nexus3.onap.org:10001/onap/appc-image:1.4.4
-nexus3.onap.org:10001/onap/babel:1.3.3
-nexus3.onap.org:10001/onap/ccsdk-ansible-server-image:0.3.4
-nexus3.onap.org:10001/onap/ccsdk-apps-ms-neng:0.3.3
-nexus3.onap.org:10001/onap/ccsdk-controllerblueprints:0.3.3
-nexus3.onap.org:10001/onap/ccsdk-dgbuilder-image:0.3.3
-nexus3.onap.org:10001/onap/champ:1.3.1
-nexus3.onap.org:10001/onap/clamp:3.0.4
-nexus3.onap.org:10001/onap/clamp-dashboard-kibana:3.0.4
-nexus3.onap.org:10001/onap/clamp-dashboard-logstash:3.0.4
-nexus3.onap.org:10001/onap/cli:2.0.4
-nexus3.onap.org:10001/onap/data-router:1.3.3
-nexus3.onap.org:10001/onap/dcae-be:1.3.0
-nexus3.onap.org:10001/onap/dcae-dt:1.2.0
-nexus3.onap.org:10001/onap/dcae-fe:1.3.0
-nexus3.onap.org:10001/onap/dcae-tools:1.3.0
-nexus3.onap.org:10001/onap/dcae-tosca-app:1.3.0
-nexus3.onap.org:10001/onap/dmaap/buscontroller:1.0.23
-nexus3.onap.org:10001/onap/dmaap/datarouter-node:1.0.9
-nexus3.onap.org:10001/onap/dmaap/datarouter-prov:1.0.9
-nexus3.onap.org:10001/onap/dmaap/dmaap-mr:1.1.8
-nexus3.onap.org:10001/onap/dmaap/kafka01101:0.0.1
-nexus3.onap.org:10001/onap/externalapi/nbi:3.0.2
-nexus3.onap.org:10001/onap/gizmo:1.3.2
-nexus3.onap.org:10001/onap/holmes/engine-management:1.2.2
-nexus3.onap.org:10001/onap/holmes/rule-management:1.2.3
-nexus3.onap.org:10001/onap/model-loader:1.3.2
-nexus3.onap.org:10001/onap/msb/msb_apigateway:1.2.1
-nexus3.onap.org:10001/onap/msb/msb_discovery:1.2.1
-nexus3.onap.org:10001/onap/multicloud/azure:1.2.1
-nexus3.onap.org:10001/onap/multicloud/framework:1.2.1
-nexus3.onap.org:10001/onap/multicloud/openstack-ocata:1.2.3
-nexus3.onap.org:10001/onap/multicloud/openstack-pike:1.2.3
-nexus3.onap.org:10001/onap/multicloud/openstack-windriver:1.2.3
-nexus3.onap.org:10001/onap/multicloud/vio:1.2.1
-nexus3.onap.org:10001/onap/music/cassandra_3_11:3.0.24
-nexus3.onap.org:10001/onap/music/cassandra_job:3.0.24
-nexus3.onap.org:10001/onap/music/cassandra_music:3.0.0
-nexus3.onap.org:10001/onap/music/music:3.0.24
-nexus3.onap.org:10001/onap/network-discovery:1.4.2
-nexus3.onap.org:10001/onap/oom/kube2msb:1.1.0
-nexus3.onap.org:10001/onap/optf-cmso-dbinit:1.0.1
-nexus3.onap.org:10001/onap/optf-cmso-service:1.0.1
-nexus3.onap.org:10001/onap/optf-has:1.2.5
-nexus3.onap.org:10001/onap/optf-osdf:1.2.4
-nexus3.onap.org:10001/onap/org.onap.dcaegen2.collectors.datafile.datafile-app-server:1.0.5
-nexus3.onap.org:10001/onap/org.onap.dcaegen2.collectors.hv-ves.hv-collector-main:1.0.2
-nexus3.onap.org:10001/onap/org.onap.dcaegen2.collectors.snmptrap:1.4.0
-nexus3.onap.org:10001/onap/org.onap.dcaegen2.collectors.ves.vescollector:1.3.2
-nexus3.onap.org:10001/onap/org.onap.dcaegen2.deployments.cm-container:1.4.2
-nexus3.onap.org:10001/onap/org.onap.dcaegen2.deployments.healthcheck-container:1.1.2
-nexus3.onap.org:10001/onap/org.onap.dcaegen2.deployments.k8s-bootstrap-container:1.4.5
-nexus3.onap.org:10001/onap/org.onap.dcaegen2.deployments.redis-cluster-container:1.0.0
-nexus3.onap.org:10001/onap/org.onap.dcaegen2.deployments.tca-cdap-container:1.1.0
-nexus3.onap.org:10001/onap/org.onap.dcaegen2.platform.configbinding.app-app:2.2.3
-nexus3.onap.org:10001/onap/org.onap.dcaegen2.platform.deployment-handler:3.0.3
-nexus3.onap.org:10001/onap/org.onap.dcaegen2.platform.inventory-api:3.0.4
-nexus3.onap.org:10001/onap/org.onap.dcaegen2.platform.policy-handler:4.4.0
-nexus3.onap.org:10001/onap/org.onap.dcaegen2.platform.servicechange-handler:1.1.5
-nexus3.onap.org:10001/onap/org.onap.dcaegen2.services.prh.prh-app-server:1.1.1
-nexus3.onap.org:10001/onap/policy-apex-pdp:2.0.5
-nexus3.onap.org:10001/onap/policy-distribution:2.0.6
-nexus3.onap.org:10001/onap/policy-drools:1.3.7
-nexus3.onap.org:10001/onap/policy-pe:1.3.7
-nexus3.onap.org:10001/onap/pomba-aai-context-builder:1.3.2
-nexus3.onap.org:10001/onap/pomba-context-aggregator:1.3.4
-nexus3.onap.org:10001/onap/pomba-network-discovery-context-builder:1.3.1
-nexus3.onap.org:10001/onap/pomba-sdc-context-builder:1.3.2
-nexus3.onap.org:10001/onap/portal-app:2.3.1
-nexus3.onap.org:10001/onap/portal-db:2.3.1
-nexus3.onap.org:10001/onap/portal-sdk:2.3.1
-nexus3.onap.org:10001/onap/portal-wms:2.3.1
-nexus3.onap.org:10001/onap/sdc-backend:1.3.6
-nexus3.onap.org:10001/onap/sdc-backend-init:1.3.6
-nexus3.onap.org:10001/onap/sdc-cassandra:1.3.6
-nexus3.onap.org:10001/onap/sdc-cassandra-init:1.3.6
-nexus3.onap.org:10001/onap/sdc-elasticsearch:1.3.6
-nexus3.onap.org:10001/onap/sdc-frontend:1.3.6
-nexus3.onap.org:10001/onap/sdc-init-elasticsearch:1.3.6
-nexus3.onap.org:10001/onap/sdc-kibana:1.3.6
-nexus3.onap.org:10001/onap/sdc-onboard-backend:1.3.6
-nexus3.onap.org:10001/onap/sdc-onboard-cassandra-init:1.3.6
-nexus3.onap.org:10001/onap/sdnc-ansible-server-image:1.4.5
-nexus3.onap.org:10001/onap/sdnc-dmaap-listener-image:1.4.4
-nexus3.onap.org:10001/onap/sdnc-image:1.4.4
-nexus3.onap.org:10001/onap/sdnc-ueb-listener-image:1.4.4
-nexus3.onap.org:10001/onap/search-data-service:1.3.2
-nexus3.onap.org:10001/onap/service-decomposition:1.4.2
-nexus3.onap.org:10001/onap/sniroemulator:1.0.0
-nexus3.onap.org:10001/onap/so/api-handler-infra:1.3.6
-nexus3.onap.org:10001/onap/so/bpmn-infra:1.3.6
-nexus3.onap.org:10001/onap/so/catalog-db-adapter:1.3.6
-nexus3.onap.org:10001/onap/so/openstack-adapter:1.3.6
-nexus3.onap.org:10001/onap/so/request-db-adapter:1.3.6
-nexus3.onap.org:10001/onap/so/sdc-controller:1.3.6
-nexus3.onap.org:10001/onap/so/sdnc-adapter:1.3.6
-nexus3.onap.org:10001/onap/so/so-monitoring:1.3.6
-nexus3.onap.org:10001/onap/so/vfc-adapter:1.3.6
-nexus3.onap.org:10001/onap/sparky-be:1.3.2
-nexus3.onap.org:10001/onap/spike:1.3.1
-nexus3.onap.org:10001/onap/testsuite:1.3.3
-nexus3.onap.org:10001/onap/usecase-ui:1.2.2
-nexus3.onap.org:10001/onap/usecase-ui-server:1.2.1
-nexus3.onap.org:10001/onap/validation:1.3.1
-nexus3.onap.org:10001/onap/vfc/catalog:1.2.1
-nexus3.onap.org:10001/onap/vfc/db:1.2.1
-nexus3.onap.org:10001/onap/vfc/emsdriver:1.2.1
-nexus3.onap.org:10001/onap/vfc/gvnfmdriver:1.2.1
-nexus3.onap.org:10001/onap/vfc/jujudriver:1.2.1
-nexus3.onap.org:10001/onap/vfc/multivimproxy:1.2.1
-nexus3.onap.org:10001/onap/vfc/nfvo/svnfm/huawei:1.2.1
-nexus3.onap.org:10001/onap/vfc/nfvo/svnfm/nokia:1.1.0
-nexus3.onap.org:10001/onap/vfc/nfvo/svnfm/nokiav2:1.3.0
-nexus3.onap.org:10001/onap/vfc/nslcm:1.2.1
-nexus3.onap.org:10001/onap/vfc/resmanagement:1.2.1
-nexus3.onap.org:10001/onap/vfc/vnflcm:1.2.1
-nexus3.onap.org:10001/onap/vfc/vnfmgr:1.2.1
-nexus3.onap.org:10001/onap/vfc/vnfres:1.2.1
-nexus3.onap.org:10001/onap/vfc/wfengine-activiti:1.2.0
-nexus3.onap.org:10001/onap/vfc/wfengine-mgrservice:1.2.0
-nexus3.onap.org:10001/onap/vfc/ztesdncdriver:1.2.0
-nexus3.onap.org:10001/onap/vfc/ztevnfmdriver:1.2.1
-nexus3.onap.org:10001/onap/vid:3.2.3
-nexus3.onap.org:10001/onap/vnfsdk/refrepo:1.2.0
-nexus3.onap.org:10001/onap/workflow-backend:1.3.2
-nexus3.onap.org:10001/onap/workflow-frontend:1.3.2
-nexus3.onap.org:10001/onap/workflow-init:1.3.2
-nexus3.onap.org:10001/sonatype/nexus:2.14.8-01
-nexus3.onap.org:10001/zookeeper:3.4
-oomk8s/mariadb-client-init:3.0.0
-oomk8s/readiness-check:2.0.0
-oomk8s/readiness-check:2.0.1
-oomk8s/ubuntu-init:1.0.0
-registry.hub.docker.com/library/busybox:latest
-registry.hub.docker.com/library/consul:0.9.3
-registry.hub.docker.com/library/mongo:3
-registry.hub.docker.com/library/mysql:5.7
-registry.hub.docker.com/oomk8s/ubuntu-init:2.0.0
-gcr.io/kubernetes-helm/tiller:v2.9.1
-nexus3.onap.org:10001/onap/org.onap.dcaegen2.deployments.tls-init-container:1.0.0
-library/postgres:9.5.2
-rancher/agent:v1.2.11
-rancher/dns:v0.17.4
-rancher/etc-host-updater:v0.0.3
-rancher/etcd:v2.3.7-17
-rancher/healthcheck:v0.3.8
-rancher/heapster-amd64:v1.5.2
-rancher/heapster-grafana-amd64:v4.4.3
-rancher/heapster-influxdb-amd64:v1.3.3
-rancher/k8s-dns-dnsmasq-nanny-amd64:1.14.10
-rancher/k8s-dns-kube-dns-amd64:1.14.10
-rancher/k8s-dns-sidecar-amd64:1.14.10
-rancher/k8s:v1.11.5-rancher1-1
-rancher/kubectld:v0.8.8
-rancher/kubernetes-agent:v0.6.9
-rancher/kubernetes-auth:v0.0.8
-rancher/kubernetes-dashboard-amd64:v1.8.3
-rancher/lb-service-haproxy:v0.9.6
-rancher/lb-service-rancher:v0.9.6
-rancher/metadata:v0.10.4
-rancher/net:holder
-rancher/net:v0.13.17
-rancher/network-manager:v0.7.22
-rancher/pause-amd64:3.0
-rancher/server:v1.6.22
-rancher/tiller:v2.9.1
diff --git a/build/data_lists/onap_3.0.x-git_repos.list b/build/data_lists/onap_3.0.x-git_repos.list
deleted file mode 100644
index 27ecd57f..00000000
--- a/build/data_lists/onap_3.0.x-git_repos.list
+++ /dev/null
@@ -1,9 +0,0 @@
-#repo branch
-gerrit.onap.org/r/aaf/authz.git casablanca
-gerrit.onap.org/r/demo.git casablanca
-gerrit.onap.org/r/dmaap/messagerouter/messageservice.git casablanca
-gerrit.onap.org/r/so/docker-config.git casablanca
-github.com/rancher/community-catalog.git
-git.rancher.io/rancher-catalog.git
-gerrit.onap.org/r/testsuite/properties.git casablanca
-gerrit.onap.org/r/portal.git casablanca
diff --git a/build/data_lists/onap_3.0.x-pip_packages.list b/build/data_lists/onap_3.0.x-pip_packages.list
deleted file mode 100644
index f67c7640..00000000
--- a/build/data_lists/onap_3.0.x-pip_packages.list
+++ /dev/null
@@ -1,18 +0,0 @@
-CherryPy==17.4.1
-PyMySQL==0.9.3
-backports.functools_lru_cache==1.5
-certifi==2018.11.29
-chardet==3.0.4
-cheroot==6.5.4
-contextlib2==0.5.5
-idna==2.8
-jaraco.functools==2.0
-more_itertools==5.0.0
-portend==2.3
-pytz==2018.9
-requests==2.21.0
-setuptools==40.7.1
-six==1.12.0
-tempora==1.14
-urllib3==1.24.1
-zc.lockfile==1.4
diff --git a/build/data_lists/onap_docker_images.list b/build/data_lists/onap_docker_images.list
new file mode 100644
index 00000000..3ac67ed6
--- /dev/null
+++ b/build/data_lists/onap_docker_images.list
@@ -0,0 +1,225 @@
+# generated from OOM commit 94664fb4457c61076cc7e65ed40dda5cf696bcbe
+alpine:3.6
+busybox
+crunchydata/crunchy-pgpool:centos7-10.4-2.0.0
+crunchydata/crunchy-postgres:centos7-10.3-1.8.2
+crunchydata/crunchy-postgres:centos7-10.4-2.0.0
+docker.elastic.co/beats/filebeat:5.5.0
+docker.elastic.co/elasticsearch/elasticsearch:5.5.0
+docker.elastic.co/elasticsearch/elasticsearch:6.6.2
+docker.elastic.co/elasticsearch/elasticsearch-oss:6.6.2
+docker.elastic.co/kibana/kibana:5.5.0
+docker.elastic.co/kibana/kibana:6.6.2
+docker.elastic.co/logstash/logstash:5.4.3
+docker.io/aaionap/haproxy:1.4.0
+docker.io/busybox
+docker.io/busybox:1.30
+docker.io/consul:1.0.6
+docker.io/library/busybox:latest
+docker.io/nginx:1.15-alpine
+docker.io/oomk8s/consul:1.0.0
+docker.io/postgres:10.4-alpine
+docker.io/taskrabbit/elasticsearch-dump
+gcr.io/google_samples/k8szk:v3
+k8s.gcr.io/etcd-amd64:2.2.5
+library/mariadb:10
+library/python:3.6-alpine
+netboxcommunity/netbox:v2.5.8
+nexus3.onap.org:10001/adfinissygroup/k8s-mariadb-galera-centos:v002
+nexus3.onap.org:10001/busybox
+nexus3.onap.org:10001/library/consul:1.0.6
+nexus3.onap.org:10001/library/tomcat:8.5
+nexus3.onap.org:10001/library/vault:0.10.0
+nexus3.onap.org:10001/mariadb:10.1.38
+nexus3.onap.org:10001/mariadb:10.2.14
+nexus3.onap.org:10001/mariadb:10.3.12
+nexus3.onap.org:10001/mariadb:10.3.14
+nexus3.onap.org:10001/onap/aaf/aaf_agent:2.1.13
+nexus3.onap.org:10001/onap/aaf/aaf_cass:2.1.13
+nexus3.onap.org:10001/onap/aaf/aaf_cm:2.1.13
+nexus3.onap.org:10001/onap/aaf/aaf_config:2.1.13
+nexus3.onap.org:10001/onap/aaf/aaf_fs:2.1.13
+nexus3.onap.org:10001/onap/aaf/aaf_gui:2.1.13
+nexus3.onap.org:10001/onap/aaf/aaf_hello:2.1.13
+nexus3.onap.org:10001/onap/aaf/aaf_locate:2.1.13
+nexus3.onap.org:10001/onap/aaf/aaf_oauth:2.1.13
+nexus3.onap.org:10001/onap/aaf/aaf_service:2.1.13
+nexus3.onap.org:10001/onap/aaf/distcenter:4.0.0
+nexus3.onap.org:10001/onap/aaf/sms:4.0.0
+nexus3.onap.org:10001/onap/aaf/smsquorumclient:4.0.0
+nexus3.onap.org:10001/onap/aaf/testcaservice:4.0.0
+nexus3.onap.org:10001/onap/aai/esr-gui:1.4.0
+nexus3.onap.org:10001/onap/aai/esr-server:1.4.0
+nexus3.onap.org:10001/onap/aai-graphadmin:1.1.0
+nexus3.onap.org:10001/onap/aai-resources:1.4.0
+nexus3.onap.org:10001/onap/aai-schema-service:1.0.6
+nexus3.onap.org:10001/onap/aai-traversal:1.4.1
+nexus3.onap.org:10001/onap/admportal-sdnc-image:1.5.1
+nexus3.onap.org:10001/onap/appc-cdt-image:1.5.0
+nexus3.onap.org:10001/onap/appc-image:1.5.0
+nexus3.onap.org:10001/onap/babel:1.4.2
+nexus3.onap.org:10001/onap/ccsdk-ansible-server-image:0.4.2
+nexus3.onap.org:10001/onap/ccsdk-apps-ms-neng:0.4.2
+nexus3.onap.org:10001/onap/ccsdk-blueprintsprocessor:0.4.2
+nexus3.onap.org:10001/onap/ccsdk-cds-ui-server:0.4.2
+nexus3.onap.org:10001/onap/ccsdk-commandexecutor:0.4.2
+nexus3.onap.org:10001/onap/ccsdk-controllerblueprints:0.4.2
+nexus3.onap.org:10001/onap/ccsdk-dgbuilder-image:0.4.2
+nexus3.onap.org:10001/onap/ccsdk-sdclistener:0.4.2
+nexus3.onap.org:10001/onap/champ:1.4.0
+nexus3.onap.org:10001/onap/clamp:4.0.2
+nexus3.onap.org:10001/onap/clamp-dashboard-kibana:4.0.1
+nexus3.onap.org:10001/onap/clamp-dashboard-logstash:4.0.1
+nexus3.onap.org:10001/onap/cli:2.0.4
+nexus3.onap.org:10001/onap/data-router:1.3.3
+nexus3.onap.org:10001/onap/data-router:1.4.0
+nexus3.onap.org:10001/onap/dcae-be:1.3.0
+nexus3.onap.org:10001/onap/dcae-dt:1.2.0
+nexus3.onap.org:10001/onap/dcae-fe:1.3.0
+nexus3.onap.org:10001/onap/dcae-tools:1.3.0
+nexus3.onap.org:10001/onap/dcae-tosca-app:1.3.0
+nexus3.onap.org:10001/onap/dmaap/datarouter-node:2.1.0
+nexus3.onap.org:10001/onap/dmaap/datarouter-prov:2.1.0
+nexus3.onap.org:10001/onap/dmaap/dbc-client:1.0.9
+nexus3.onap.org:10001/onap/dmaap/dmaap-bc:1.1.5
+nexus3.onap.org:10001/onap/dmaap/dmaap-mr:1.1.14
+nexus3.onap.org:10001/onap/dmaap/kafka111:1.0.1
+nexus3.onap.org:10001/onap/dmaap/zookeeper:6.0.0
+nexus3.onap.org:10001/onap/elasticsearch-sg:1.4.3
+nexus3.onap.org:10001/onap/externalapi/nbi:4.0.0
+nexus3.onap.org:10001/onap/gizmo:1.4.0
+nexus3.onap.org:10001/onap/holmes/engine-management:1.2.5
+nexus3.onap.org:10001/onap/holmes/rule-management:1.2.6
+nexus3.onap.org:10001/onap/modeling/genericparser:1.0.2
+nexus3.onap.org:10001/onap/model-loader:1.4.0
+nexus3.onap.org:10001/onap/msb/msb_apigateway:1.2.4
+nexus3.onap.org:10001/onap/msb/msb_discovery:1.2.3
+nexus3.onap.org:10001/onap/multicloud/azure:1.2.1
+nexus3.onap.org:10001/onap/multicloud/framework:1.3.1
+nexus3.onap.org:10001/onap/multicloud/framework-artifactbroker:1.3.3
+nexus3.onap.org:10001/onap/multicloud/k8s:0.2.0
+nexus3.onap.org:10001/onap/multicloud/openstack-fcaps:1.3.2
+nexus3.onap.org:10001/onap/multicloud/openstack-lenovo:1.3.1
+nexus3.onap.org:10001/onap/multicloud/openstack-ocata:1.3.2
+nexus3.onap.org:10001/onap/multicloud/openstack-pike:1.3.2
+nexus3.onap.org:10001/onap/multicloud/openstack-starlingx:1.3.2
+nexus3.onap.org:10001/onap/multicloud/openstack-windriver:1.3.2
+nexus3.onap.org:10001/onap/multicloud/vio:1.3.1
+nexus3.onap.org:10001/onap/music/cassandra_3_11:3.0.24
+nexus3.onap.org:10001/onap/music/cassandra_job:3.0.24
+nexus3.onap.org:10001/onap/music/cassandra_music:3.0.0
+nexus3.onap.org:10001/onap/music/music:3.0.24
+nexus3.onap.org:10001/onap/network-discovery:1.5.1
+nexus3.onap.org:10001/onap/oom/kube2msb:1.1.0
+nexus3.onap.org:10001/onap/optf-cmso-dbinit:2.0.0
+nexus3.onap.org:10001/onap/optf-cmso-optimizer:2.0.0
+nexus3.onap.org:10001/onap/optf-cmso-service:2.0.0
+nexus3.onap.org:10001/onap/optf-cmso-ticketmgt:2.0.0
+nexus3.onap.org:10001/onap/optf-cmso-topology:2.0.0
+nexus3.onap.org:10001/onap/optf-has:1.3.0
+nexus3.onap.org:10001/onap/optf-osdf:1.3.0
+nexus3.onap.org:10001/onap/org.onap.ccsdk.dashboard.ccsdk-app-os:1.1.0-SNAPSHOT-latest
+nexus3.onap.org:10001/onap/org.onap.dcaegen2.collectors.hv-ves.hv-collector-main:1.1.0
+nexus3.onap.org:10001/onap/org.onap.dcaegen2.collectors.snmptrap:1.4.0
+nexus3.onap.org:10001/onap/org.onap.dcaegen2.collectors.ves.vescollector:1.4.4
+nexus3.onap.org:10001/onap/org.onap.dcaegen2.deployments.cm-container:1.6.2
+nexus3.onap.org:10001/onap/org.onap.dcaegen2.deployments.consul-loader-container:1.0.0
+nexus3.onap.org:10001/onap/org.onap.dcaegen2.deployments.healthcheck-container:1.2.4
+nexus3.onap.org:10001/onap/org.onap.dcaegen2.deployments.k8s-bootstrap-container:1.4.17
+nexus3.onap.org:10001/onap/org.onap.dcaegen2.deployments.multisite-init-container:1.0.0
+nexus3.onap.org:10001/onap/org.onap.dcaegen2.deployments.redis-cluster-container:1.0.0
+nexus3.onap.org:10001/onap/org.onap.dcaegen2.deployments.tca-cdap-container:1.1.1
+nexus3.onap.org:10001/onap/org.onap.dcaegen2.deployments.tls-init-container:1.0.3
+nexus3.onap.org:10001/onap/org.onap.dcaegen2.platform.configbinding.app-app:2.3.0
+nexus3.onap.org:10001/onap/org.onap.dcaegen2.platform.deployment-handler:4.0.1
+nexus3.onap.org:10001/onap/org.onap.dcaegen2.platform.inventory-api:3.2.0
+nexus3.onap.org:10001/onap/org.onap.dcaegen2.platform.policy-handler:5.0.0
+nexus3.onap.org:10001/onap/org.onap.dcaegen2.platform.servicechange-handler:1.1.5
+nexus3.onap.org:10001/onap/org.onap.dcaegen2.services.prh.prh-app-server:1.2.3
+nexus3.onap.org:10001/onap/policy-apex-pdp:2.1.0
+nexus3.onap.org:10001/onap/policy-api:2.0.1
+nexus3.onap.org:10001/onap/policy-distribution:2.1.0
+nexus3.onap.org:10001/onap/policy-pap:2.0.1
+nexus3.onap.org:10001/onap/policy-pdpd-cl:1.4.1
+nexus3.onap.org:10001/onap/policy-pe:1.4.1
+nexus3.onap.org:10001/onap/policy-xacml-pdp:2.0.1
+nexus3.onap.org:10001/onap/pomba-aai-context-builder:1.4.0
+nexus3.onap.org:10001/onap/pomba-context-aggregator:1.4.0
+nexus3.onap.org:10001/onap/pomba-network-discovery-context-builder:1.4.0
+nexus3.onap.org:10001/onap/pomba-sdc-context-builder:1.4.0
+nexus3.onap.org:10001/onap/pomba-sdnc-context-builder:1.4.0
+nexus3.onap.org:10001/onap/portal-app:2.5.0
+nexus3.onap.org:10001/onap/portal-db:2.5.0
+nexus3.onap.org:10001/onap/portal-sdk:2.5.0
+nexus3.onap.org:10001/onap/portal-wms:2.5.0
+nexus3.onap.org:10001/onap/sdc-backend:1.4.0
+nexus3.onap.org:10001/onap/sdc-backend-init:1.4.0
+nexus3.onap.org:10001/onap/sdc-cassandra-init:1.4.0
+nexus3.onap.org:10001/onap/sdc-elasticsearch:1.4.0
+nexus3.onap.org:10001/onap/sdc-frontend:1.4.0
+nexus3.onap.org:10001/onap/sdc-init-elasticsearch:1.4.0
+nexus3.onap.org:10001/onap/sdc-kibana:1.4.0
+nexus3.onap.org:10001/onap/sdc-onboard-backend:1.4.0
+nexus3.onap.org:10001/onap/sdc-onboard-cassandra-init:1.4.0
+nexus3.onap.org:10001/onap/sdnc-ansible-server-image:1.5.1
+nexus3.onap.org:10001/onap/sdnc-dmaap-listener-image:1.5.1
+nexus3.onap.org:10001/onap/sdnc-image:1.5.1
+nexus3.onap.org:10001/onap/sdnc-ueb-listener-image:1.5.1
+nexus3.onap.org:10001/onap/search-data-service:1.3.1
+nexus3.onap.org:10001/onap/search-data-service:1.4.3
+nexus3.onap.org:10001/onap/service-decomposition:1.5.1
+nexus3.onap.org:10001/onap/sniroemulator:1.0.0
+nexus3.onap.org:10001/onap/so/api-handler-infra:1.4.1
+nexus3.onap.org:10001/onap/so/bpmn-infra:1.4.1
+nexus3.onap.org:10001/onap/so/catalog-db-adapter:1.4.1
+nexus3.onap.org:10001/onap/so/openstack-adapter:1.4.1
+nexus3.onap.org:10001/onap/so/request-db-adapter:1.4.1
+nexus3.onap.org:10001/onap/so/sdc-controller:1.4.1
+nexus3.onap.org:10001/onap/so/sdnc-adapter:1.4.1
+nexus3.onap.org:10001/onap/so/so-monitoring:1.4.1
+nexus3.onap.org:10001/onap/so/vfc-adapter:1.4.1
+nexus3.onap.org:10001/onap/so/vnfm-adapter:1.4.1
+nexus3.onap.org:10001/onap/sparky-be:1.4.0
+nexus3.onap.org:10001/onap/spike:1.4.0
+nexus3.onap.org:10001/onap/testsuite:1.4.0
+nexus3.onap.org:10001/onap/usecase-ui:1.2.2
+nexus3.onap.org:10001/onap/usecase-ui-server:1.2.1
+nexus3.onap.org:10001/onap/validation:1.3.1
+nexus3.onap.org:10001/onap/vfc/catalog:1.3.1
+nexus3.onap.org:10001/onap/vfc/db:1.3.0
+nexus3.onap.org:10001/onap/vfc/emsdriver:1.3.0
+nexus3.onap.org:10001/onap/vfc/gvnfmdriver:1.3.1
+nexus3.onap.org:10001/onap/vfc/jujudriver:1.3.1
+nexus3.onap.org:10001/onap/vfc/multivimproxy:1.3.0
+nexus3.onap.org:10001/onap/vfc/nfvo/svnfm/huawei:1.3.0
+nexus3.onap.org:10001/onap/vfc/nfvo/svnfm/nokiav2:1.3.0
+nexus3.onap.org:10001/onap/vfc/nslcm:1.3.1
+nexus3.onap.org:10001/onap/vfc/resmanagement:1.3.0
+nexus3.onap.org:10001/onap/vfc/vnflcm:1.3.1
+nexus3.onap.org:10001/onap/vfc/vnfmgr:1.3.1
+nexus3.onap.org:10001/onap/vfc/vnfres:1.3.1
+nexus3.onap.org:10001/onap/vfc/wfengine-activiti:1.3.0
+nexus3.onap.org:10001/onap/vfc/wfengine-mgrservice:1.3.0
+nexus3.onap.org:10001/onap/vfc/ztesdncdriver:1.3.0
+nexus3.onap.org:10001/onap/vfc/ztevnfmdriver:1.3.1
+nexus3.onap.org:10001/onap/vid:4.0.0
+nexus3.onap.org:10001/onap/vnfsdk/refrepo:1.2.0
+nexus3.onap.org:10001/onap/workflow-backend:1.4.0
+nexus3.onap.org:10001/onap/workflow-frontend:1.4.0
+nexus3.onap.org:10001/onap/workflow-init:1.4.0
+nexus3.onap.org:10001/sonatype/nexus:2.14.8-01
+nexus3.onap.org:10001/zookeeper:3.4
+oomk8s/mariadb-client-init:3.0.0
+oomk8s/readiness-check:2.0.0
+oomk8s/readiness-check:2.0.1
+oomk8s/readiness-check:2.0.2
+oomk8s/ubuntu-init:1.0.0
+pndareg.ctao6.net/onap/org.onap.dcaegen2.deployments.pnda-bootstrap-container:5.0.0
+pndareg.ctao6.net/onap/org.onap.dcaegen2.deployments.pnda-mirror-container:5.0.0
+rabbitmq:alpine
+registry.hub.docker.com/library/busybox:latest
+registry.hub.docker.com/library/consul:1.4.3
+registry.hub.docker.com/library/mongo:4.0.8
+registry.hub.docker.com/oomk8s/ubuntu-init:2.0.0
+library/cassandra:2.2.14
+quay.io/kubernetes_incubator/nfs-provisioner:v1.0.8
diff --git a/build/data_lists/onap_git_repos.list b/build/data_lists/onap_git_repos.list
new file mode 100644
index 00000000..518eecde
--- /dev/null
+++ b/build/data_lists/onap_git_repos.list
@@ -0,0 +1,2 @@
+#repo branch
+gerrit.onap.org/r/so/docker-config.git master
diff --git a/build/data_lists/onap_3.0.x-npm.list b/build/data_lists/onap_npm.list
index a22b237e..058307e3 100644
--- a/build/data_lists/onap_3.0.x-npm.list
+++ b/build/data_lists/onap_npm.list
@@ -1,389 +1,303 @@
async@0.1.22
-bl@0.9.5
-brace-expansion@1.1.11
-commander@2.1.0
compression@1.1.2
-connect@2.26.1
-cookiejar@1.3.2
-csurf@1.6.6
debug@0.7.4
-depd@0.4.5
-domelementtype@1.1.3
-domutils@1.4.3
errorhandler@1.2.4
-express@3.17.2
-extend@1.2.1
-formidable@1.0.14
fresh@0.2.4
-fs.extra@1.3.2
-graceful-fs@2.0.3
-grunt-cli@0.1.13
grunt-legacy-util@0.2.0
-htmlparser2@3.7.3
-inflight@1.0.6
-isarray@0.0.1
js-yaml@2.0.5
-libmime@0.1.7
-load-json-file@1.1.0
-lodash@4.17.11
mime-types@2.0.14
-morgan@1.3.2
-ncp@0.6.0
-object-assign@3.0.0
pause@0.0.1
-proxy-addr@1.0.10
-punycode@2.1.1
-range-parser@1.0.3
-redent@1.0.0
-request@2.42.0
-send@0.9.3
-sigmund@1.0.1
smtp-connection@1.3.8
-sntp@0.2.4
-statuses@1.5.0
-strip-indent@1.0.1
thenify@3.3.0
-through@2.2.7
-tough-cookie@2.5.0
-uglify-to-browserify@1.0.2
underscore.string@2.3.3
-validate-npm-package-license@3.0.4
-wordwrap@0.0.3
-ansi-color@0.2.1
any-promise@1.3.0
-array-find-index@1.0.2
-balanced-match@1.0.0
-basic-auth@1.0.0
-builtin-modules@1.1.1
-coffee-script@1.3.3
-combined-stream@0.0.7
-core-util-is@1.0.2
-crc@3.4.4
-csrf@2.0.7
-csv-stringify@0.0.8
-entities@1.0.0
etag@1.4.0
-exit@0.1.2
-finalhandler@0.2.0
-follow-redirects@0.0.3
hoek@0.9.1
-ipaddr.js@1.0.5
-is-builtin-module@1.0.0
-is-utf8@0.2.1
method-override@2.2.0
-minimatch@3.0.4
-mkdirp@0.3.5
-ms@2.0.0
needle@0.9.2
-nodemailer-direct-transport@1.1.0
-node-uuid@1.4.8
-normalize-package-data@2.4.0
oauth@0.9.12
-on-finished@2.3.0
-options@0.0.6
-parseurl@1.3.2
path-is-absolute@1.0.1
-pinkie@2.0.4
-pretty-data@0.40.0
-rimraf@2.2.8
sentiment@0.2.3
-stream-counter@0.2.0
-string_decoder@1.1.1
-trim-newlines@1.0.0
twitter-ng@0.6.2
-type-is@1.6.16
-underscore.string@2.4.0
-walk@2.3.14
-xml2js@0.4.4
-abbrev@1.1.1
-assert-plus@0.1.5
-async@0.2.10
-bootstrap@3.4.0
cookie-parser@1.3.5
-debug@2.0.0
-dicer@0.2.5
-domelementtype@1.3.1
-domutils@1.5.1
-ee-first@1.0.5
-etag@1.5.1
-formatio@1.0.2
-fs.realpath@1.0.0
-getobject@0.1.0
glob@3.1.21
-grunt-contrib-jshint@0.10.0
-grunt-simple-mocha@0.4.0
-htmlparser2@3.8.3
-http-signature@0.10.1
-iconv-lite@0.4.24
-inherits@1.0.2
-isarray@1.0.0
-libmime@1.2.0
-lodash@0.9.2
media-typer@0.3.0
-mime-db@1.12.0
-mime-types@2.1.21
-minimist@0.0.8
-mkdirp@0.5.0
multer@1.1.0
-native-or-bluebird@1.1.2
-object-assign@4.1.1
-on-headers@1.0.1
-properties-reader@0.0.9
-readable-stream@1.0.27-1
-signal-exit@3.0.2
-spdx-license-ids@3.0.3
-stringstream@0.0.6
-strip-json-comments@1.0.4
-thenify-all@1.6.0
-uid-safe@1.0.1
-underscore@1.6.0
-utf7@1.0.0
-vary@1.0.1
-addressparser@0.3.2
-append-field@0.1.0
-async@0.9.2
-bignumber.js@2.0.7
-busboy@0.2.14
-component-emitter@1.1.2
concat-map@0.0.1
-connect-timeout@1.3.0
-cors@2.4.2
-csv@0.4.6
-csvtojson@0.5.14
-dateformat@1.0.12
-domhandler@2.2.1
-duplexer@0.1.1
entities@1.1.2
-express@4.9.8
-foreachasync@3.0.0
-graceful-fs@4.1.15
-http-errors@1.2.8
-iconv-lite@0.4.4
irc@0.3.7
-is-arrayish@0.2.1
-jshint@2.5.11
-keypress@0.1.0
libqp@0.1.1
-loud-rejection@1.6.0
-minimatch@0.2.14
-mkdirp@0.5.1
-mqtt@0.3.13
mysql@2.7.0
-negotiator@0.4.9
-nodemailer-smtp-transport@0.1.13
-oauth-sign@0.4.0
once@1.4.0
-path-to-regexp@0.1.3
-pinkie-promise@2.0.1
-process@0.11.10
qs@0.6.6
-raw-body@1.3.0
-samsam@1.1.3
-semver@5.6.0
serve-favicon@2.1.7
-shelljs@0.3.0
-spdx-correct@3.1.0
-streamsearch@0.1.2
utils-merge@1.0.0
-when@3.4.6
-wrappy@1.0.2
-async@1.5.2
-basic-auth-connect@1.0.0
-bootstrap-submenu@2.0.4
-camelcase@2.1.1
-caseless@0.6.0
-commander@0.6.1
cookie@0.1.2
-cookie-signature@1.0.5
-cron@1.0.4
-CSSselect@0.4.1
debug@2.6.9
-depd@1.1.2
-diff@1.0.7
-ee-first@1.1.1
-form-data@0.1.2
-forwarded@0.1.2
-fs-extra@0.11.1
-glob@3.2.11
-growl@1.8.1
-grunt-legacy-log@0.1.3
hooker@0.2.3
-iconv-lite@0.2.11
-imap@0.8.13
-inherits@2.0.3
-is-finite@1.0.2
json-stringify-safe@5.0.1
-lodash@1.3.1
-map-obj@1.0.1
-meow@3.7.0
-methods@0.0.1
-mime@1.2.11
-minimist@1.2.0
-mocha@1.21.4
-multer@1.4.1
-mz@1.3.0
-optimist@0.3.7
-psl@1.1.31
-readable-stream@1.0.34
-read-pkg@1.1.0
reduce-component@1.0.1
-repeating@2.0.1
-response-time@2.0.1
-rimraf@2.6.3
-serve-static@1.6.5
-sinon@1.10.3
-spdx-exceptions@2.2.0
-tinycolor@0.0.1
-uid-safe@1.1.0
underscore@1.7.0
-util@0.10.4
-xmlbuilder@9.0.7
-accepts@1.1.4
-append-field@1.0.0
-async@2.6.1
-buffer-from@1.1.1
-bytes@1.0.0
-cli@0.6.6
-crc@3.0.0
-csv-generate@0.0.6
-ctype@0.5.3
-dateformat@1.0.2-1.2.3
-decamelize@1.2.0
-delayed-stream@0.0.5
-destroy@1.0.3
-domhandler@2.3.0
-duplexer2@0.0.2
-ejs@0.8.8
escape-html@1.0.1
-esprima@1.0.4
-eventemitter2@0.4.14
-find-up@1.1.2
forever-agent@0.5.2
-glob@3.2.3
-hyperquest@0.3.0
-jsonfile@1.0.1
-libqp@1.1.0
lodash@2.4.2
-mime-db@1.37.0
-minimatch@0.3.0
-ms@0.6.2
-multiparty@3.3.2
-nodemailer-wellknown@0.1.10
nopt@1.0.10
-number-is-nan@1.0.1
-parse-json@2.2.0
-path@0.12.7
qs@1.2.2
+cookie@0.1.3
+form-data@0.1.4
+grunt-legacy-log-utils@0.1.1
+libbase64@0.1.0
+qs@2.2.3
+glob@7.1.3
+nopt@3.0.1
+qs@2.2.4
+scmp@1.0.0
+type-is@1.5.7
+abbrev@1.1.1
+etag@1.5.1
+iconv-lite@0.4.24
+readable-stream@1.0.27-1
+strip-json-comments@1.0.4
+utf7@1.0.0
+async@0.9.2
+fs-extra@0.11.1
+mime@1.2.11
+optimist@0.3.7
+sinon@1.10.3
+buffer-from@1.1.1
+destroy@1.0.3
+mime-db@1.37.0
readable-stream@1.1.14
-require-all@1.0.0
-sax@0.6.1
-shelljs@0.5.3
-stream-transform@0.1.2
superagent@0.18.0
-tunnel-agent@0.4.3
-typedarray@0.0.6
-underscore@1.9.1
-utils-merge@1.0.1
which@1.0.9
-ws@0.4.32
-argparse@0.1.16
-aws-sign2@0.5.0
batch@0.5.1
-body-parser@1.8.4
-bootstrap-table@1.13.1
-camelcase-keys@2.1.0
colors@0.6.2
-commander@1.3.2
-compressible@2.0.15
-console-browserify@1.1.0
-cookie@0.1.3
cookie-signature@1.0.6
+should@4.0.4
+uglify-js@2.4.15
+base64-url@1.2.1
+clone@0.1.18
+hyperquest@1.3.0
+methods@1.1.0
+on-finished@2.1.0
+readable-stream@2.3.6
+bl@0.9.5
+connect@2.26.1
+depd@0.4.5
+express@3.17.2
+htmlparser2@3.7.3
+libmime@0.1.7
+morgan@1.3.2
+request@2.42.0
+sntp@0.2.4
+through@2.2.7
+coffee-script@1.3.3
+csrf@2.0.7
+exit@0.1.2
+minimatch@3.0.4
+nodemailer-direct-transport@1.1.0
+on-finished@2.3.0
+stream-counter@0.2.0
+type-is@1.6.16
+debug@2.0.0
+formatio@1.0.2
+grunt-contrib-jshint@0.10.0
+mime-db@1.12.0
+native-or-bluebird@1.1.2
+bignumber.js@2.0.7
+connect-timeout@1.3.0
+negotiator@0.4.9
+raw-body@1.3.0
+shelljs@0.3.0
+when@3.4.6
+cookie-signature@1.0.5
+diff@1.0.7
+iconv-lite@0.2.11
+lodash@1.3.1
+ctype@0.5.3
+esprima@1.0.4
+glob@3.2.3
+minimatch@0.3.0
+require-all@1.0.0
cryptiles@0.2.2
-CSSwhat@0.4.7
-date-now@0.1.4
-dns-sync@0.1.3
dom-serializer@0.0.1
-error-ex@1.3.2
-express-session@1.15.6
-form-data@0.1.4
-fs-extra@0.6.4
-get-stdin@4.0.1
-glob@5.0.15
-graceful-fs@1.2.3
-grunt@0.4.5
-grunt-legacy-log-utils@0.1.1
hawk@1.1.1
-hosted-git-info@2.7.1
-indent-string@2.1.0
-libbase64@0.1.0
-lodash@3.10.1
-merge-descriptors@0.0.2
-methods@1.0.0
-mime@1.2.5
-mime-types@1.0.2
-moment@2.23.0
nan@1.0.0
-ncp@0.4.2
-path-type@1.1.0
-proxy-addr@1.0.1
-qs@2.2.3
-random-bytes@1.0.0
-read-pkg-up@1.0.1
-safe-buffer@5.1.2
-serve-index@1.2.1
-should@4.0.4
-spdx-expression-parse@3.0.0
-strip-bom@2.0.0
-through2@0.6.5
-uglify-js@2.4.15
+ipaddr.js@0.1.2
+minimatch@1.0.0
+resolve@0.3.1
+send@0.9.2
+util-deprecate@1.0.2
+assert-plus@0.1.5
+dicer@0.2.5
+inherits@1.0.2
+thenify-all@1.6.0
+vary@1.0.1
+glob@3.2.11
+imap@0.8.13
+psl@1.1.31
+xmlbuilder@9.0.7
+bytes@1.0.0
+domhandler@2.3.0
+hyperquest@0.3.0
+ms@0.6.2
+tunnel-agent@0.4.3
+ws@0.4.32
+body-parser@1.8.4
+commander@1.3.2
+merge-descriptors@0.0.2
underscore.string@2.2.1
-util@0.11.1
-amdefine@1.0.1
-asn1@0.1.11
-base64-url@1.2.1
boom@0.4.2
-buildmail@1.3.0
-cheerio@0.17.0
-clone@0.1.18
commander@2.0.0
+jade@0.26.3
+mkdirp@0.3.0
+source-map@0.1.34
+brace-expansion@1.1.11
+cookiejar@1.3.2
+domelementtype@1.1.3
+extend@1.2.1
+graceful-fs@2.0.3
+inflight@1.0.6
+ncp@0.6.0
+punycode@2.1.1
+send@0.9.3
+statuses@1.5.0
+tough-cookie@2.5.0
+wordwrap@0.0.3
+balanced-match@1.0.0
+combined-stream@0.0.7
+finalhandler@0.2.0
+mkdirp@0.3.5
+node-uuid@1.4.8
+options@0.0.6
+pretty-data@0.40.0
+string_decoder@1.1.1
+underscore.string@2.4.0
+fs.realpath@1.0.0
+grunt-simple-mocha@0.4.0
+mime-types@2.1.21
+busboy@0.2.14
+cors@2.4.2
+domhandler@2.2.1
+graceful-fs@4.1.15
+jshint@2.5.11
+minimatch@0.2.14
+nodemailer-smtp-transport@0.1.13
+samsam@1.1.3
+wrappy@1.0.2
+cron@1.0.4
+ee-first@1.1.1
+growl@1.8.1
+mocha@1.21.4
+response-time@2.0.1
+dateformat@1.0.2-1.2.3
+duplexer2@0.0.2
+eventemitter2@0.4.14
+multiparty@3.3.2
+sax@0.6.1
+compressible@2.0.15
+CSSwhat@0.4.7
+glob@5.0.15
+util@0.11.1
concat-stream@1.6.2
-cookie@0.3.1
-crc@3.2.1
-csv-parse@1.3.3
-currently-unhandled@0.4.1
etag@1.3.1
+mustache@0.8.2
+rndm@1.1.1
+vhost@3.0.2
+async@0.2.10
+domelementtype@1.3.1
+isarray@1.0.0
+minimist@0.0.8
+on-headers@1.0.1
+uid-safe@1.0.1
+addressparser@0.3.2
+http-errors@1.2.8
+mkdirp@0.5.1
+caseless@0.6.0
+form-data@0.1.2
+inherits@2.0.3
+readable-stream@1.0.34
+tinycolor@0.0.1
+accepts@1.1.4
+cli@0.6.6
+typedarray@0.0.6
+argparse@0.1.16
+graceful-fs@1.2.3
+methods@1.0.0
+safe-buffer@5.1.2
+amdefine@1.0.1
+buildmail@1.3.0
express-session@1.8.2
-findup-sync@0.1.3
-glob@7.1.3
-hyperquest@1.3.0
-ipaddr.js@0.1.2
-jade@0.26.3
jsonfile@2.4.0
+string_decoder@0.10.31
+commander@2.1.0
+csurf@1.6.6
+domutils@1.4.3
+formidable@1.0.14
+grunt-cli@0.1.13
+isarray@0.0.1
+object-assign@3.0.0
+range-parser@1.0.3
+sigmund@1.0.1
+uglify-to-browserify@1.0.2
+ansi-color@0.2.1
+basic-auth@1.0.0
+core-util-is@1.0.2
+entities@1.0.0
+follow-redirects@0.0.3
+ms@2.0.0
+parseurl@1.3.2
+rimraf@2.2.8
+domutils@1.5.1
+getobject@0.1.0
+htmlparser2@3.8.3
+libmime@1.2.0
+component-emitter@1.1.2
+duplexer@0.1.1
+keypress@0.1.0
+mqtt@0.3.13
+oauth-sign@0.4.0
+streamsearch@0.1.2
+CSSselect@0.4.1
+grunt-legacy-log@0.1.3
+rimraf@2.6.3
+nodemailer-wellknown@0.1.10
+console-browserify@1.1.0
+date-now@0.1.4
+grunt@0.4.5
+mime@1.2.5
+findup-sync@0.1.3
lodash@3.7.0
-lru-cache@2.7.3
-methods@1.1.0
-minimatch@1.0.0
-mkdirp@0.3.0
-mustache@0.8.2
nodemailer@1.3.0
-nopt@3.0.1
-on-finished@2.1.0
-path-exists@2.1.0
-pify@2.3.0
process-nextick-args@2.0.0
-qs@2.2.4
-readable-stream@2.3.6
-resolve@0.3.1
-rndm@1.1.1
safer-buffer@2.1.2
-scmp@1.0.0
-send@0.9.2
-source-map@0.1.34
-string_decoder@0.10.31
supertest@0.13.0
-type-is@1.5.7
-uid-safe@2.1.5
-util-deprecate@1.0.2
-vhost@3.0.2
-xml2js@0.4.19
+xml2js@0.4.4
+ee-first@1.0.5
+http-signature@0.10.1
+lodash@0.9.2
+mkdirp@0.5.0
+stringstream@0.0.6
+underscore@1.6.0
+append-field@0.1.0
+iconv-lite@0.4.4
+basic-auth-connect@1.0.0
+commander@0.6.1
+methods@0.0.1
+mz@1.3.0
+serve-static@1.6.5
+uid-safe@1.1.0
+crc@3.0.0
+delayed-stream@0.0.5
+libqp@1.1.0
+underscore@1.9.1
+aws-sign2@0.5.0
+mime-types@1.0.2
+proxy-addr@1.0.1
+serve-index@1.2.1
+through2@0.6.5
+asn1@0.1.11
+cheerio@0.17.0
+crc@3.2.1
+lru-cache@2.7.3
xtend@4.0.1 \ No newline at end of file
diff --git a/build/data_lists/onap_pip_packages.list b/build/data_lists/onap_pip_packages.list
new file mode 100644
index 00000000..ba5cdf7e
--- /dev/null
+++ b/build/data_lists/onap_pip_packages.list
@@ -0,0 +1,12 @@
+Click==7.0
+certifi==2019.3.9
+chardet==3.0.4
+Flask==1.0.3
+idna==2.8
+itsdangerous==1.1.0
+Jinja2==2.10.1
+MarkupSafe==1.1.1
+requests==2.22.0
+setuptools==40.7.1
+urllib3==1.25.3
+Werkzeug==0.15.4
diff --git a/build/data_lists/rke_docker_images.list b/build/data_lists/rke_docker_images.list
new file mode 100644
index 00000000..75d35c72
--- /dev/null
+++ b/build/data_lists/rke_docker_images.list
@@ -0,0 +1,22 @@
+coredns/coredns:1.2.6
+gcr.io/kubernetes-helm/tiller:v2.12.3
+k8s.gcr.io/kubernetes-dashboard-amd64:v1.10.1
+rancher/calico-cni:v3.4.0
+rancher/calico-ctl:v2.0.0
+rancher/calico-node:v3.4.0
+rancher/cluster-proportional-autoscaler:1.0.0
+rancher/coreos-etcd:v3.2.24-rancher1
+rancher/coreos-flannel:v0.10.0
+rancher/coreos-flannel:v0.10.0-rancher1
+rancher/flannel-cni:v0.3.0-rancher1
+rancher/hyperkube:v1.13.5-rancher1
+rancher/k8s-dns-dnsmasq-nanny:1.15.0
+rancher/k8s-dns-kube-dns:1.15.0
+rancher/k8s-dns-sidecar:1.15.0
+rancher/metrics-server:v0.3.1
+rancher/nginx-ingress-controller-defaultbackend:1.4-rancher1
+rancher/nginx-ingress-controller:0.21.0-rancher3
+rancher/pause:3.1
+rancher/rke-tools:v0.1.27
+weaveworks/weave-kube:2.5.0
+weaveworks/weave-npc:2.5.0
diff --git a/build/download/__init__.py b/build/download/__init__.py
new file mode 100644
index 00000000..f0efbc15
--- /dev/null
+++ b/build/download/__init__.py
@@ -0,0 +1,22 @@
+
+#! /usr/bin/env python
+# -*- coding: utf-8 -*-
+
+# COPYRIGHT NOTICE STARTS HERE
+
+# Copyright 2019 © Samsung Electronics Co., Ltd.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+# COPYRIGHT NOTICE ENDS HERE
+
diff --git a/build/download/base.py b/build/download/base.py
new file mode 100644
index 00000000..5bcd0ef6
--- /dev/null
+++ b/build/download/base.py
@@ -0,0 +1,114 @@
+#! /usr/bin/env python
+# -*- coding: utf-8 -*-
+
+# COPYRIGHT NOTICE STARTS HERE
+
+# Copyright 2019 © Samsung Electronics Co., Ltd.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+# COPYRIGHT NOTICE ENDS HERE
+
+
+import concurrent.futures
+import os
+import progressbar
+import prettytable
+import requests
+from distutils.spawn import find_executable
+
+progressbar.streams.wrap_stdout()
+progressbar.streams.wrap_stderr()
+
+
+def load_list(item_list):
+ """
+ Parse list with items to be downloaded.
+ :param item_list: File with list of items (1 line per item)
+ :return: set of items from file
+ """
+ with open(item_list, 'r') as f:
+ return {item for item in (line.strip() for line in f) if item}
+
+
+def init_progress(items_name):
+ progress_widgets = ['Downloading {}: '.format(items_name),
+ progressbar.Bar(), ' ',
+ progressbar.Percentage(), ' ',
+ '(', progressbar.SimpleProgress(), ')']
+
+ progress = progressbar.ProgressBar(widgets=progress_widgets,
+ poll_rate=1.0,
+ redirect_stdout=True)
+ return progress
+
+
+def start_progress(progress, target_count, skipping, log):
+ log_skipping(skipping, log)
+ log.info("Initializing download. Takes a while.")
+
+ progress.max_value = target_count
+ progress.start()
+ progress.update(len(skipping))
+
+
+def log_skipping(skipping_iterable, logger):
+ for skipped in skipping_iterable:
+ logger.info('Skipping: {}'.format(skipped))
+
+
+def run_concurrent(workers, progress, fn, iterable, *args):
+ with concurrent.futures.ThreadPoolExecutor(max_workers=workers) as executor:
+ futures = [executor.submit(fn, item, *args) for item in iterable]
+ error_count = 0
+ for future in concurrent.futures.as_completed(futures):
+ error = future.exception()
+ if error:
+ error_count += 1
+ progress.update()
+ else:
+ progress.update(progress.value +1)
+ return error_count
+
+
+def finish_progress(progress, error_count, log):
+ progress.finish(dirty=error_count > 0)
+ log.info('Download ended. Elapsed time {}'.format(progress.data()['time_elapsed']))
+
+def check_tool(name):
+ return find_executable(name)
+
+def save_to_file(dst, content):
+ """
+ Save downloaded byte content to file
+ :param dst: path to file to save content to
+ :param content: byte content of file
+ """
+ dst_dir = os.path.dirname(dst)
+ if not os.path.exists(dst_dir):
+ os.makedirs(dst_dir)
+ with open(dst, 'wb') as dst_file:
+ dst_file.write(content)
+
+def make_get_request(url):
+ req = requests.get(url)
+ req.raise_for_status()
+ return req
+
+def simple_check_table(target, missing):
+ table = prettytable.PrettyTable(['Name', 'Downloaded'])
+ table.align['Name'] = 'l'
+ for item in sorted(target):
+ table.add_row([item, item not in missing])
+ return table
+
diff --git a/build/download/docker_images.py b/build/download/docker_images.py
new file mode 100755
index 00000000..e4e742b3
--- /dev/null
+++ b/build/download/docker_images.py
@@ -0,0 +1,268 @@
+#! /usr/bin/env python
+# -*- coding: utf-8 -*-
+
+# COPYRIGHT NOTICE STARTS HERE
+
+# Copyright 2019 © Samsung Electronics Co., Ltd.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+# COPYRIGHT NOTICE ENDS HERE
+
+
+import argparse
+import concurrent.futures
+import docker
+import itertools
+import json
+import logging
+import os
+import prettytable
+import sys
+import threading
+from retrying import retry
+
+import base
+
+log = logging.getLogger(__name__)
+
+
+def image_filename(image_name):
+ """
+ Get a name of a file where image will be saved.
+ :param image_name: Name of the image from list
+ :return: Filename of the image
+ """
+ return '{}.tar'.format(image_name.replace(':', '_').replace('/', '_'))
+
+
+def image_registry_name(image_name):
+ """
+ Get the name as shown in local registry. Since some strings are not part of name
+ when using default registry e.g. docker.io
+ :param image_name: name of the image from the list
+ :return: name of the image as it is shown by docker
+ """
+ name = image_name
+
+ if name.startswith('docker.io/'):
+ name = name.replace('docker.io/', '')
+
+ if name.startswith('library/'):
+ name = name.replace('library/', '')
+
+ if ':' not in name.rsplit('/')[-1]:
+ name = '{}:latest'.format(name)
+
+ return name
+
+
+def not_pulled_images(docker_client, target_list):
+ """
+ Get set of images that are not pulled on local system.
+ :param docker_client: docker.client.DockerClient
+ :param target_list: list of images to look for
+ :return: (set) images that are not present on local system
+ """
+ pulled = set(itertools.chain.from_iterable((image.tags for image
+ in docker_client.images.list())))
+ return {image for image in target_list if image_registry_name(image) not in pulled}
+
+
+def not_saved(target_images, target_dir):
+ """
+ Get set of images that are not saved in target directory
+ :param target_images: List of images to check for
+ :param target_dir: Directory where those images should be
+ :return: (set) Images that are missing from target directory
+ """
+ return set(image for image in target_images
+ if not os.path.isfile('/'.join((target_dir, image_filename(image)))))
+
+
+def missing(docker_client, target_list, save, target_dir):
+ """
+ Get dictionary of images not present locally.
+ :param docker_client: docker.client.DockerClient for communication with docker
+ :param target_list: list of desired images
+ :param save: (boolean) check for saved images
+ :param target_dir: target directory for saved images
+ :return: Dictionary of missing images ('not_pulled', 'not_saved')
+ """
+ return {'not_pulled': not_pulled_images(docker_client, target_list),
+ 'not_saved': not_saved(target_list, target_dir) if save else set()}
+
+
+def merge_dict_sets(dictionary):
+ return set.union(*dictionary.values())
+
+
+def check_table(check_list, missing, save):
+ table = prettytable.PrettyTable(['Image', 'Pulled', 'Saved'])
+ table.align['Image'] = 'l'
+ for image in sorted(check_list):
+ pulled = not image in missing['not_pulled']
+ download_state = [pulled]
+ if save:
+ # if not pulled save anyway
+ download_state.append(pulled and not image in missing['not_saved'])
+ else:
+ download_state.append('Not checked')
+ table.add_row([image] + download_state)
+ return table
+
+
+@retry(stop_max_attempt_number=5, wait_fixed=5000)
+def pull_image(docker_client, image_name):
+ """
+ Pull docker image.
+ :param docker_client: docker.client.DockerClient for communication with docker
+ :param image_name: name of the image to be pulled
+ :return: pulled image (image object)
+ :raises docker.errors.APIError: after unsuccessful retries
+ """
+ if ':' not in image_name.rsplit('/')[-1]:
+ image_name = '{}:latest'.format(image_name)
+ try:
+ image = docker_client.images.pull(image_name)
+ log.info('Image {} pulled'.format(image_name))
+ return image
+ except docker.errors.APIError as err:
+ log.warning('Failed: {}: {}. Retrying...'.format(image_name, err))
+ raise err
+
+
+def save_image(image_name, image, output_dir, docker_client=None):
+ """
+ Save image to tar.
+ :param output_dir: path to destination directory
+ :param image: image object from pull_image function
+ :param image_name: name of the image from list
+ :param docker_client: docker.client.DockerClient for communication with docker
+ :return: None
+ """
+ dst = '{}/{}'.format(output_dir, image_filename(image_name))
+ if not os.path.exists(output_dir):
+ os.makedirs(output_dir)
+ if not isinstance(image, docker.models.images.Image):
+ image = docker_client.images.get(image_name)
+ try:
+ with open(dst, 'wb') as f:
+ for chunk in image.save(named=image_registry_name(image_name)):
+ f.write(chunk)
+ log.info('Image {} saved as {}'.format(image_name, dst))
+ except Exception as err:
+ os.remove(dst)
+ raise err
+
+
+def download_docker_image(image, save, output_dir, docker_client):
+ """ Pull and save docker image from specified docker registry
+ :param docker_client: docker.client.DockerClient for communication with docker
+ :param image: image to be downloaded
+ :param save: boolean - save image to disk or skip saving
+ :param output_dir: directory where image will be saved
+ :return: None
+ """
+ log.info('Downloading image: {}'.format(image))
+ try:
+ pulled_image = pull_image(docker_client, image)
+ if save:
+ save_image(image, pulled_image, output_dir)
+ except Exception as err:
+ log.error('Error downloading {}: {}'.format(image, err))
+ raise err
+
+
+def download(image_list, save, output_dir, check_mode, progress, workers=3):
+ """
+ Download images from list
+ :param image_list: list of images to be downloaded
+ :param save: whether images should be saved to disk
+ :param output_dir: directory where images will be saved
+ :param check_mode: only check for missing images. No download
+ :param progress_bar: progressbar.ProgressBar to show how far download is
+ :return: None
+ """
+ try:
+ docker_client = docker.client.DockerClient(version='auto')
+ except docker.errors.DockerException as err:
+ log.error(err)
+ log.error('Error creating docker client. Check if is docker installed and running'
+ ' or if you have right permissions.')
+ raise err
+
+ target_images = base.load_list(image_list)
+ missing_images = missing(docker_client, target_images, save, output_dir)
+
+ if check_mode:
+ log.info(check_table(target_images, missing_images, save))
+ return
+
+ skipping = target_images - merge_dict_sets(missing_images)
+
+ base.start_progress(progress, len(target_images), skipping, log)
+
+ # if pulling and save is True. Save every pulled image to assure parity
+ error_count = base.run_concurrent(workers, progress, download_docker_image, missing_images['not_pulled'],
+ save, output_dir, docker_client)
+ # only save those that are pulled already but not saved
+ error_count += base.run_concurrent(workers, progress, save_image,
+ missing_images['not_saved'] - missing_images['not_pulled'],
+ None, output_dir, docker_client)
+
+ if error_count > 0:
+ log.error('{} images were not downloaded'.format(error_count))
+ missing_images = missing(docker_client, target_images, save, output_dir)
+ log.info(check_table(merge_dict_sets(missing_images), missing_images, save))
+
+ base.finish_progress(progress, error_count, log)
+
+ return error_count
+
+
+def run_cli():
+ parser = argparse.ArgumentParser(description='Download docker images from list')
+ parser.add_argument('image_list', metavar='image-list',
+ help='File with list of images to download.')
+ parser.add_argument('--save', '-s', action='store_true', default=False,
+ help='Save images (without it only pull is executed)')
+ parser.add_argument('--output-dir', '-o', default=os.getcwd(),
+ help='Download destination')
+ parser.add_argument('--check', '-c', action='store_true', default=False,
+ help='Check what is missing. No download.'
+ 'Use with combination with -s to check saved images as well.')
+ parser.add_argument('--debug', action='store_true', default=False,
+ help='Turn on debug output')
+ parser.add_argument('--workers', type=int, default=3,
+ help='Set maximum workers for parallel download (default: 3)')
+
+ args = parser.parse_args()
+
+ if args.debug:
+ logging.basicConfig(stream=sys.stdout, level=logging.DEBUG)
+ else:
+ logging.basicConfig(stream=sys.stdout, level=logging.INFO, format='%(message)s')
+
+ progress = base.init_progress('Docker images') if not args.check else None
+ try:
+ sys.exit(download(args.image_list, args.save, args.output_dir, args.check,
+ progress, args.workers))
+ except docker.errors.DockerException:
+ log.error('Irrecoverable error detected.')
+ sys.exit(1)
+
+
+if __name__ == '__main__':
+ run_cli()
+
diff --git a/build/download/git_repos.py b/build/download/git_repos.py
new file mode 100755
index 00000000..e388e94c
--- /dev/null
+++ b/build/download/git_repos.py
@@ -0,0 +1,93 @@
+#! /usr/bin/env python
+# -*- coding: utf-8 -*-
+
+# COPYRIGHT NOTICE STARTS HERE
+
+# Copyright 2019 © Samsung Electronics Co., Ltd.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+# COPYRIGHT NOTICE ENDS HEREE
+
+import argparse
+import subprocess
+import logging
+import sys
+import os
+from retrying import retry
+
+import base
+
+log = logging.getLogger(name=__name__)
+
+@retry(stop_max_attempt_number=5, wait_fixed=5000)
+def clone_repo(dst, repo, branch=None):
+ if branch:
+ command = 'git clone -b {} --single-branch https://{} --bare {}'.format(branch, repo, dst)
+ else:
+ command = 'git clone https://{} --bare {}'.format(repo, dst)
+ log.info('Running: {}'.format(command))
+ log.info(subprocess.check_output(command.split(), stderr=subprocess.STDOUT).decode())
+ log.info('Downloaded: {}'.format(repo))
+
+
+def download(git_list, dst_dir, progress):
+ if not base.check_tool('git'):
+ log.error('ERROR: git is not installed')
+ progress.finish(dirty=True)
+ return 1
+
+ git_set = {tuple(item.split()) for item in base.load_list(git_list)
+ if not item.startswith('#')}
+
+ error_count = 0
+
+ base.start_progress(progress, len(git_set), [], log)
+
+ for repo in git_set:
+ dst = '{}/{}'.format(dst_dir, repo[0])
+ if os.path.isdir(dst):
+ log.warning('Directory {} already exists. Repo probably present'.format(dst))
+ progress.update(progress.value + 1)
+ continue
+ try:
+ clone_repo(dst, *repo)
+ progress.update(progress.value + 1)
+ except subprocess.CalledProcessError as err:
+ log.error(err.output.decode())
+ error_count += 1
+
+ base.finish_progress(progress, error_count, log)
+ if error_count > 0:
+ log.error('{} were not downloaded. Check logs for details'.format(error_count))
+ return error_count
+
+
+def run_cli():
+ parser = argparse.ArgumentParser(description='Download git repositories from list')
+ parser.add_argument('git_list', metavar='git-list',
+ help='File with list of npm packages to download.')
+ parser.add_argument('--output-dir', '-o', default=os.getcwd(),
+ help='Download destination')
+
+ args = parser.parse_args()
+
+ logging.basicConfig(stream=sys.stdout, level=logging.INFO, format='%(message)s')
+
+ progress = base.init_progress('git repositories')
+
+ sys.exit(download(args.git_list, args.output_dir, progress))
+
+
+if __name__ == '__main__':
+ run_cli()
diff --git a/build/download/http_files.py b/build/download/http_files.py
new file mode 100755
index 00000000..f5b1e59a
--- /dev/null
+++ b/build/download/http_files.py
@@ -0,0 +1,131 @@
+#! /usr/bin/env python
+# -*- coding: utf-8 -*-
+
+# COPYRIGHT NOTICE STARTS HERE
+
+# Copyright 2019 © Samsung Electronics Co., Ltd.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+# COPYRIGHT NOTICE ENDS HERE
+
+
+import argparse
+import concurrent.futures
+import logging
+import os
+import sys
+from retrying import retry
+
+import base
+
+log = logging.getLogger(__name__)
+
+@retry(stop_max_attempt_number=5, wait_fixed=2000)
+def get_file(file_uri):
+ """
+ Get file from the Internet
+ :param file_uri: address of file
+ :return: byte content of file
+ """
+ if not file_uri.startswith('http'):
+ file_uri = 'http://' + file_uri
+ file_req = base.make_get_request(file_uri)
+ return file_req.content
+
+
+def download_file(file_uri, dst_dir):
+ """
+ Download http file and save it to file.
+ :param file_uri: http address of file
+ :param dst_dir: directory where file will be saved
+ """
+ log.info('Downloading: {}'.format(file_uri))
+ dst_path = '{}/{}'.format(dst_dir, file_uri.rsplit('//')[-1])
+ try:
+ file_content = get_file(file_uri)
+ base.save_to_file(dst_path, file_content)
+ except Exception as err:
+ if os.path.isfile(dst_path):
+ os.remove(dst_path)
+ log.error('Error downloading: {}: {}'.format(file_uri, err))
+ raise err
+ log.info('Downloaded: {}'.format(file_uri))
+
+
+def missing(file_set, dst_dir):
+ return {file for file in file_set if not os.path.isfile('{}/{}'.format(dst_dir, file))}
+
+
+def download(data_list, dst_dir, check, progress, workers=None):
+ """
+ Download files specified in data list
+ :param data_list: path to file with list
+ :param dst_dir: destination directory
+ :param check: boolean check mode
+ :param progress: progressbar.ProgressBar to monitor progress
+ :param workers: workers to use for parallel execution
+ :return: 0 if success else number of errors
+ """
+ file_set = base.load_list(data_list)
+ missing_files = missing(file_set, dst_dir)
+ target_count = len(file_set)
+
+ if check:
+ log.info(base.simple_check_table(file_set, missing_files))
+ return 0
+
+ skipping = file_set - missing_files
+
+ base.start_progress(progress, len(file_set), skipping, log)
+
+ error_count = base.run_concurrent(workers, progress, download_file, missing_files, dst_dir)
+
+ if error_count > 0:
+ log.error('{} files were not downloaded. Check log for specific failures.'.format(error_count))
+
+ base.finish_progress(progress, error_count, log)
+
+ return error_count
+
+def run_cli():
+ """
+ Run as cli tool
+ """
+ parser = argparse.ArgumentParser(description='Download http files from list')
+ parser.add_argument('file_list', metavar='file-list',
+ help='File with list of http files to download')
+ parser.add_argument('--output-dir', '-o', default=os.getcwd(),
+ help='Destination directory for saving')
+ parser.add_argument('--check', '-c', action='store_true', default=False,
+ help='Check mode')
+ parser.add_argument('--debug', action='store_true', default=False,
+ help='Turn on debug output')
+ parser.add_argument('--workers', type=int, default=None,
+ help='Set maximum workers for parallel download (default: cores * 5)')
+
+ args = parser.parse_args()
+
+ if args.debug:
+ logging.basicConfig(stream=sys.stdout, level=logging.DEBUG)
+ else:
+ logging.basicConfig(stream=sys.stdout, level=logging.INFO, format='%(message)s')
+
+ progress = base.init_progress('http files') if not args.check else None
+
+ sys.exit(download(args.file_list, args.output_dir, args.check, progress, args.workers))
+
+
+if __name__ == '__main__':
+ run_cli()
+
diff --git a/build/download/npm_packages.py b/build/download/npm_packages.py
new file mode 100755
index 00000000..c174e2c1
--- /dev/null
+++ b/build/download/npm_packages.py
@@ -0,0 +1,121 @@
+#! /usr/bin/env python
+# -*- coding: utf-8 -*-
+
+# COPYRIGHT NOTICE STARTS HERE
+
+# Copyright 2019 © Samsung Electronics Co., Ltd.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+# COPYRIGHT NOTICE ENDS HERE
+
+import argparse
+import concurrent.futures
+import hashlib
+import logging
+import os
+import sys
+from retrying import retry
+
+import base
+
+log = logging.getLogger(name=__name__)
+
+
+@retry(stop_max_attempt_number=5, wait_fixed=5000)
+def get_npm(registry, npm_name, npm_version):
+ npm_url = '{}/{}/{}'.format(registry, npm_name, npm_version)
+ npm_req = base.make_get_request(npm_url)
+ npm_json = npm_req.json()
+ tarball_url = npm_json['dist']['tarball']
+ shasum = npm_json['dist']['shasum']
+ tarball_req = base.make_get_request(tarball_url)
+ tarball = tarball_req.content
+ if hashlib.sha1(tarball).hexdigest() == shasum:
+ return tarball
+ else:
+ raise Exception('{}@{}: Wrong checksum. Retrying...'.format(npm_name, npm_version))
+
+
+def download_npm(npm, registry, dst_dir):
+ log.info('Downloading: {}'.format(npm))
+ npm_name, npm_version = npm.split('@')
+ dst_path = '{}/{}-{}.tgz'.format(dst_dir, npm_name, npm_version)
+ try:
+ tarball = get_npm(registry, *npm.split('@'))
+ base.save_to_file(dst_path, tarball)
+ except Exception as err:
+ if os.path.isfile(dst_path):
+ os.remove(dst_path)
+ log.error('Failed: {}: {}'.format(npm, err))
+ raise err
+ log.info('Downloaded: {}'.format(npm))
+
+
+def missing(npm_set, dst_dir):
+ return {npm for npm in npm_set
+ if not os.path.isfile('{}/{}-{}.tgz'.format(dst_dir, *npm.split('@')))}
+
+
+def download(npm_list, registry, dst_dir, check_mode, progress=None, workers=None):
+ npm_set = base.load_list(npm_list)
+ target_count = len(npm_set)
+ missing_npms = missing(npm_set, dst_dir)
+
+ if check_mode:
+ log.info(base.simple_check_table(npm_set, missing_npms))
+ return 0
+
+ skipping = npm_set - missing_npms
+
+ base.start_progress(progress, len(npm_set), skipping, log)
+ error_count = base.run_concurrent(workers, progress, download_npm, missing_npms, registry, dst_dir)
+
+ if error_count > 0:
+ log.error('{} packages were not downloaded. Check log for specific failures.'.format(error_count))
+
+ base.finish_progress(progress, error_count, log)
+
+ return error_count
+
+
+def run_cli():
+ parser = argparse.ArgumentParser(description='Download npm packages from list')
+ parser.add_argument('npm_list', metavar='npm-list',
+ help='File with list of npm packages to download.')
+ parser.add_argument('--registry', '-r', default='https://registry.npmjs.org',
+ help='Download destination')
+ parser.add_argument('--output-dir', '-o', default=os.getcwd(),
+ help='Download destination')
+ parser.add_argument('--check', '-c', action='store_true', default=False,
+ help='Check what is missing. No download.')
+ parser.add_argument('--debug', action='store_true', default=False,
+ help='Turn on debug output')
+ parser.add_argument('--workers', type=int, default=None,
+ help='Set maximum workers for parallel download (default: cores * 5)')
+
+ args = parser.parse_args()
+
+ if args.debug:
+ logging.basicConfig(stream=sys.stdout, level=logging.DEBUG)
+ else:
+ logging.basicConfig(stream=sys.stdout, level=logging.INFO, format='%(message)s')
+
+ progress = base.init_progress('npm packages') if not args.check else None
+ sys.exit(download(args.npm_list, args.registry, args.output_dir, args.check, progress,
+ args.workers))
+
+
+if __name__ == '__main__':
+ run_cli()
+
diff --git a/build/download/requirements.txt b/build/download/requirements.txt
new file mode 100644
index 00000000..875f0c67
--- /dev/null
+++ b/build/download/requirements.txt
@@ -0,0 +1,5 @@
+docker==3.7.2
+futures==3.2.0; python_version == '2.7'
+prettytable==0.7.2
+progressbar2==3.39.3
+retrying==1.3.3
diff --git a/build/download/rpm_packages.py b/build/download/rpm_packages.py
new file mode 100755
index 00000000..7f9700a3
--- /dev/null
+++ b/build/download/rpm_packages.py
@@ -0,0 +1,66 @@
+#! /usr/bin/env python
+# -*- coding: utf-8 -*-
+
+# COPYRIGHT NOTICE STARTS HERE
+
+# Copyright 2019 © Samsung Electronics Co., Ltd.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+# COPYRIGHT NOTICE ENDS HERE
+
+import argparse
+import subprocess
+import logging
+import sys
+import os
+
+import base
+
+log = logging.getLogger(name=__name__)
+
+
+def download(rpm_list, dst_dir):
+ if not base.check_tool('yumdownloader'):
+ log.error('ERROR: yumdownloader is not installed')
+ return 1
+
+ rpm_set = base.load_list(rpm_list)
+
+ command = 'yumdownloader --destdir={} {}'.format(dst_dir, ' '.join(rpm_set))
+ log.info('Running command: {}'.format(command))
+ try:
+ subprocess.check_call(command.split())
+ log.info('Downloaded')
+ except subprocess.CalledProcessError as err:
+ log.error(err.output)
+ return err.returncode
+
+
+
+def run_cli():
+ parser = argparse.ArgumentParser(description='Download rpm packages from list')
+ parser.add_argument('rpm_list', metavar='rpm-list',
+ help='File with list of npm packages to download.')
+ parser.add_argument('--output-dir', '-o', default=os.getcwd(),
+ help='Download destination')
+
+ args = parser.parse_args()
+
+ logging.basicConfig(stream=sys.stdout, level=logging.INFO, format='%(message)s')
+
+ sys.exit(download(args.rpm_list, args.output_dir))
+
+
+if __name__ == '__main__':
+ run_cli()
diff --git a/build/fetch_and_patch_charts.sh b/build/fetch_and_patch_charts.sh
index c5585584..79d7a01e 100755
--- a/build/fetch_and_patch_charts.sh
+++ b/build/fetch_and_patch_charts.sh
@@ -37,7 +37,7 @@ C_='\033[0m' #Color off
usage () {
echo "Usage:"
echo -e "./$(basename $0) <helm charts repo> <commit/tag/branch> <patchfile> <target_dir>\n"
- echo "Example: ./$(basename $0) https://gerrit.onap.org/r/oom 3.0.2-ONAP /root/offline-installer/patches/casablanca.patch /root/offline-installer/ansible/application/helm_charts"
+ echo "Example: ./$(basename $0) https://gerrit.onap.org/r/oom master /root/offline-installer/patches/onap.patch /root/offline-installer/ansible/application/helm_charts"
}
if [ "$#" -ne 4 ]; then
diff --git a/build/package.conf b/build/package.conf
index 7d6a1b8f..d74eac0a 100644
--- a/build/package.conf
+++ b/build/package.conf
@@ -54,7 +54,7 @@ HELM_CHARTS_DIR=/tmp/oom-clone/kubernetes
#)
APP_CONFIGURATION=(
/tmp/offline-installer/config/application_configuration.yml
- /tmp/offline-installer/patches/onap-casablanca-patch-role
+ /tmp/offline-installer/patches/onap-patch-role
)
# APP_BINARY_RESOURCES_DIR is variable to directory containing directories and files for offline
diff --git a/config/application_configuration.yml b/config/application_configuration.yml
index d8970585..2e397f4c 100755
--- a/config/application_configuration.yml
+++ b/config/application_configuration.yml
@@ -7,7 +7,7 @@
#
resources_dir: /data
app_name: onap
-resources_filename: "offline-{{ app_name }}-3.0.2.resources.tar"
+resources_filename: "offline-{{ app_name }}-4.0.0.resources.tar"
app_data_path: "/opt/{{ app_name }}"
certificates:
organization_name: Samsung
@@ -18,4 +18,4 @@ app_helm_build_targets:
- all
- onap
app_helm_chart_name: onap
-application_pre_install_role: "onap-casablanca-patch-role"
+application_pre_install_role: "onap-patch-role"
diff --git a/docs/BuildGuide.rst b/docs/BuildGuide.rst
index 8ae08d8d..bb0e4cca 100644
--- a/docs/BuildGuide.rst
+++ b/docs/BuildGuide.rst
@@ -273,7 +273,7 @@ For example:
::
- ./build/fetch_and_patch_charts.sh https://gerrit.onap.org/r/oom 3.0.2-ONAP /tmp/onap-offline/patches/casablanca.patch /tmp/oom-clone
+ ./build/fetch_and_patch_charts.sh https://gerrit.onap.org/r/oom master /tmp/onap-offline/patches/onap.patch /tmp/oom-clone
Part 5. Creating offline installation package
---------------------------------------------
@@ -298,8 +298,8 @@ Example values below are setup according to steps done in this guide to package
| | Example:: |
| | |
| | APP_CONFIGURATION=( |
-| | /tmp/onap-offline/config/application_configuration.yml |
-| | /tmp/onap-offline/patches/onap-casablanca-patch-role |
+| | /tmp/onap-offline/config/application_configuration.yml |
+| | /tmp/onap-offline/patches/onap-patch-role |
| | ) |
| | |
+---------------------------------------+------------------------------------------------------------------------------+
diff --git a/docs/InstallGuide.rst b/docs/InstallGuide.rst
index 07255b77..7849047d 100644
--- a/docs/InstallGuide.rst
+++ b/docs/InstallGuide.rst
@@ -174,6 +174,15 @@ We need to setup the ``'hosts.yml'`` first, the template looks like this::
#ip of the node that it uses for communication with k8s cluster.
cluster_ip: 10.8.8.19
+ # This is a group of hosts that are to be used as kubernetes control plane nodes.
+ # This means they host kubernetes api server, controller manager and scheduler.
+ # This example uses infra for this purpose, however note that any
+ # other host could be used including kubernetes nodes.
+ # cluster_ip needs to be set for hosts used as control planes.
+ kubernetes-control-plane:
+ hosts:
+ infrastructure-server
+
nfs-server:
hosts:
kubernetes-node-1
@@ -233,6 +242,18 @@ After all the changes, the ``'hosts.yml'`` should look similar to this::
#ip of the node that it uses for communication with k8s cluster.
cluster_ip: 10.8.8.103
+ # This is a group of hosts that are to be used as kubernetes control plane nodes.
+ # This means they host kubernetes api server, controller manager and scheduler.
+ # This example uses infra for this purpose, however note that any
+ # other host could be used including kubernetes nodes.
+ # cluster_ip needs to be set for hosts used as control planes.
+ kubernetes-control-plane:
+ hosts:
+ infrastructure-server
+ ansible_host: 10.8.8.100
+ #IP used for communication between infra and kubernetes nodes, must be specified.
+ cluster_ip: 10.8.8.100
+
nfs-server:
hosts:
kubernetes-node-1
@@ -378,7 +399,7 @@ This will take a while so be patient.
- ``upload_resources.yml``
- ``infrastructure.yml``
-- ``rancher_kubernetes.yml``
+- ``rke.yml``
- ``application.yml``
----
diff --git a/patches/casablanca.patch b/patches/casablanca.patch
deleted file mode 100644
index 7f9d2068..00000000
--- a/patches/casablanca.patch
+++ /dev/null
@@ -1,428 +0,0 @@
-From 10656e7f8089e3c3a718a947fd10b1a728eeb8c6 Mon Sep 17 00:00:00 2001
-From: Milan Verespej <m.verespej@partner.samsung.com>
-Date: Wed, 6 Feb 2019 10:24:09 +0100
-Subject: [PATCH] Casablanca 3.0.0 offline patch
-
----
- .../templates/deployment.yaml | 12 ++-
- .../common/common/templates/_cacert.tpl | 80 +++++++++++++++++++
- .../dgbuilder/templates/deployment.yaml | 10 ++-
- .../templates/deployment.yaml | 7 ++
- kubernetes/onap/templates/configmap.yaml | 33 ++++++++
- .../charts/brmsgw/templates/deployment.yaml | 5 ++
- .../charts/drools/templates/statefulset.yaml | 8 ++
- .../charts/pdp/templates/statefulset.yaml | 5 ++
- .../policy-common/templates/_keystore.tpl | 61 ++++++++++++++
- .../templates/deployment.yaml | 12 ++-
- .../sdnc-portal/templates/deployment.yaml | 9 ++-
- 11 files changed, 234 insertions(+), 8 deletions(-)
- create mode 100644 kubernetes/common/common/templates/_cacert.tpl
- create mode 100644 kubernetes/onap/templates/configmap.yaml
- create mode 100644 kubernetes/policy/charts/policy-common/templates/_keystore.tpl
-
-diff --git a/kubernetes/appc/charts/appc-ansible-server/templates/deployment.yaml b/kubernetes/appc/charts/appc-ansible-server/templates/deployment.yaml
-index a7daa051..b7cdd9e6 100644
---- a/kubernetes/appc/charts/appc-ansible-server/templates/deployment.yaml
-+++ b/kubernetes/appc/charts/appc-ansible-server/templates/deployment.yaml
-@@ -47,8 +47,16 @@ spec:
- name: {{ include "common.name" . }}-readiness
- containers:
- - name: {{ include "common.name" . }}
-- command: ["/bin/bash"]
-- args: ["-c", "cd /opt/onap/ccsdk && ./startAnsibleServer.sh"]
-+ command:
-+ - /bin/bash
-+ - -c
-+ - >
-+ pip install -i http://nexus3.onap.org/repository/pypi-private/simple/
-+ --trusted-host nexus3.onap.org
-+ PyMySQL cherrypy requests;
-+ curl -s repo.infra-server/ubuntu/xenial/onap.list > /etc/apt/sources.list;
-+ apt-get update;
-+ cd /opt/onap/ccsdk && ./startAnsibleServer.sh
- image: "{{ include "common.repository" . }}/{{ .Values.image }}"
- imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }}
- ports:
-diff --git a/kubernetes/common/common/templates/_cacert.tpl b/kubernetes/common/common/templates/_cacert.tpl
-new file mode 100644
-index 00000000..4fb80964
---- /dev/null
-+++ b/kubernetes/common/common/templates/_cacert.tpl
-@@ -0,0 +1,80 @@
-+# COPYRIGHT NOTICE STARTS HERE
-+#
-+# Copyright 2018 © Samsung Electronics Co., Ltd.
-+#
-+# Licensed under the Apache License, Version 2.0 (the "License");
-+# you may not use this file except in compliance with the License.
-+# You may obtain a copy of the License at
-+#
-+# http://www.apache.org/licenses/LICENSE-2.0
-+#
-+# Unless required by applicable law or agreed to in writing, software
-+# distributed under the License is distributed on an "AS IS" BASIS,
-+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-+# See the License for the specific language governing permissions and
-+# limitations under the License.
-+#
-+# COPYRIGHT NOTICE ENDS HERE
-+
-+#This template adds volume for access to ca certificate.
-+#Template is ignored when cacert not set.
-+{{- define "common.cacert-volume" }}
-+{{- if .Values.global.cacert }}
-+- name: cacert
-+ configMap:
-+ name: {{ include "common.namespace" . }}-root-ca-cert
-+{{- end }}
-+{{- end }}
-+
-+#This template mounts the CA certificate in an ubuntu compatible way.
-+#It is mounted to /usr/local/share/ca-certificates/cacert.crt.
-+#Template is ignored if cacert not set.
-+{{- define "common.cacert-mount-ubuntu" }}
-+{{- if .Values.global.cacert }}
-+- mountPath: "/usr/local/share/ca-certificates/cacert.crt"
-+ name: cacert
-+ subPath: certificate
-+{{- end }}
-+{{- end }}
-+
-+#This template creates an empty volume used to store system certificates (includes java keystore).
-+{{- define "common.system-ca-store-volume" }}
-+{{- if .Values.global.cacert }}
-+- name: system-ca-store
-+ emptyDir:
-+{{- end }}
-+{{- end }}
-+
-+#This template mounts system ca store volume to /etc/ssl/certs (ubuntu specific).
-+#Template is ignored in case cacert is not given.
-+{{- define "common.system-ca-store-mount-ubuntu" }}
-+{{- if .Values.global.cacert }}
-+- mountPath: "/etc/ssl/certs"
-+ name: system-ca-store
-+{{- end }}
-+{{- end }}
-+
-+#This template is a template for an init container.
-+#This init container can be declared to update system's ca store for ubuntu containers.
-+#It runs as root using the same image as the main one.
-+#It expects /etc/ssl/certs to be mounted as a volume.
-+#It has to be shared with the main container.
-+#This template is ignored if cacert is not given as helm value.
-+{{- define "common.update-system-ca-store-ubuntu" }}
-+{{- if .Values.global.cacert }}
-+- command:
-+ - "/bin/bash"
-+ - "-c"
-+ - |
-+ mkdir -p /etc/ssl/certs/java
-+ update-ca-certificates
-+ name: update-system-ca-store
-+ imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }}
-+ image: {{ include "common.repository" . }}/{{ .Values.image }}
-+ securityContext:
-+ runAsUser: 0
-+ volumeMounts:
-+{{ include "common.cacert-mount-ubuntu" . | indent 2 }}
-+{{ include "common.system-ca-store-mount-ubuntu" . | indent 2 }}
-+{{- end }}
-+{{- end }}
-diff --git a/kubernetes/common/dgbuilder/templates/deployment.yaml b/kubernetes/common/dgbuilder/templates/deployment.yaml
-index 353c2314..2cb02d62 100644
---- a/kubernetes/common/dgbuilder/templates/deployment.yaml
-+++ b/kubernetes/common/dgbuilder/templates/deployment.yaml
-@@ -49,8 +49,14 @@ spec:
- - name: {{ include "common.name" . }}
- image: "{{ include "common.repository" . }}/{{ .Values.image }}"
- imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }}
-- command: ["/bin/bash"]
-- args: ["-c", "cd /opt/onap/ccsdk/dgbuilder/ && ./start.sh sdnc1.0 && wait"]
-+ command:
-+ - /bin/bash
-+ - -c
-+ - >
-+ HOSTS_FILE_RECORD >> /etc/hosts;
-+ NPM_REGISTRY_RECORD;
-+ cd /opt/onap/ccsdk/dgbuilder/;
-+ ./start.sh sdnc1.0 && wait
- ports:
- - containerPort: {{ .Values.service.internalPort }}
- readinessProbe:
-diff --git a/kubernetes/dcaegen2/charts/dcae-cloudify-manager/templates/deployment.yaml b/kubernetes/dcaegen2/charts/dcae-cloudify-manager/templates/deployment.yaml
-index 79bd8962..8e807a9b 100644
---- a/kubernetes/dcaegen2/charts/dcae-cloudify-manager/templates/deployment.yaml
-+++ b/kubernetes/dcaegen2/charts/dcae-cloudify-manager/templates/deployment.yaml
-@@ -70,6 +70,8 @@ spec:
- - mountPath: /etc/localtime
- name: localtime
- readOnly: true
-+ - mountPath: /etc/pki/ca-trust/source/anchors
-+ name: root-ca
- securityContext:
- privileged: True
- lifecycle:
-@@ -82,6 +84,8 @@ spec:
- set -ex
- mkdir -p /var/run/secrets/kubernetes.io/
- ln -s /secret /var/run/secrets/kubernetes.io/serviceaccount
-+ echo -e '\nREQUESTS_CA_BUNDLE="/etc/ssl/certs/ca-bundle.crt"' >> /etc/sysconfig/cloudify-restservice
-+ update-ca-trust extract
- volumes:
- - name: {{ include "common.fullname" . }}-config
- configMap:
-@@ -95,5 +99,8 @@ spec:
- - name: localtime
- hostPath:
- path: /etc/localtime
-+ - name: root-ca
-+ hostPath:
-+ path: /etc/pki/ca-trust/source/anchors
- imagePullSecrets:
- - name: "{{ include "common.namespace" . }}-docker-registry-key"
-diff --git a/kubernetes/onap/templates/configmap.yaml b/kubernetes/onap/templates/configmap.yaml
-new file mode 100644
-index 00000000..b1804a36
---- /dev/null
-+++ b/kubernetes/onap/templates/configmap.yaml
-@@ -0,0 +1,33 @@
-+# COPYRIGHT NOTICE STARTS HERE
-+#
-+# Copyright 2018 © Samsung Electronics Co., Ltd.
-+#
-+# Licensed under the Apache License, Version 2.0 (the "License");
-+# you may not use this file except in compliance with the License.
-+# You may obtain a copy of the License at
-+#
-+# http://www.apache.org/licenses/LICENSE-2.0
-+#
-+# Unless required by applicable law or agreed to in writing, software
-+# distributed under the License is distributed on an "AS IS" BASIS,
-+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-+# See the License for the specific language governing permissions and
-+# limitations under the License.
-+#
-+# COPYRIGHT NOTICE ENDS HERE
-+
-+{{ if .Values.global.cacert -}}
-+apiVersion: v1
-+kind: ConfigMap
-+metadata:
-+ name: {{ include "common.namespace" . }}-root-ca-cert
-+ namespace: {{ include "common.namespace" . }}
-+ labels:
-+ app: {{ include "common.name" . }}
-+ chart: {{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }}
-+ release: {{ .Release.Name }}
-+ heritage: {{ .Release.Service }}
-+data:
-+ certificate: |
-+{{ .Values.global.cacert | indent 4 }}
-+{{- end }}
-diff --git a/kubernetes/policy/charts/brmsgw/templates/deployment.yaml b/kubernetes/policy/charts/brmsgw/templates/deployment.yaml
-index 7535d541..bbd63c13 100644
---- a/kubernetes/policy/charts/brmsgw/templates/deployment.yaml
-+++ b/kubernetes/policy/charts/brmsgw/templates/deployment.yaml
-@@ -46,6 +46,7 @@ spec:
- image: "{{ .Values.global.readinessRepository }}/{{ .Values.global.readinessImage }}"
- imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }}
- name: {{ include "common.name" . }}-readiness
-+{{ include "common.update-system-ca-store-ubuntu" . | indent 6 }}
- containers:
- - command:
- - /bin/bash
-@@ -69,6 +70,8 @@ spec:
- initialDelaySeconds: {{ .Values.readiness.initialDelaySeconds }}
- periodSeconds: {{ .Values.readiness.periodSeconds }}
- volumeMounts:
-+{{ include "common.cacert-mount-ubuntu" . | indent 8 }}
-+{{ include "common.system-ca-store-mount-ubuntu" . | indent 8 }}
- - mountPath: /etc/localtime
- name: localtime
- readOnly: true
-@@ -95,6 +98,8 @@ spec:
- {{ toYaml .Values.affinity | indent 10 }}
- {{- end }}
- volumes:
-+{{ include "common.cacert-volume" . | indent 8 }}
-+{{ include "common.system-ca-store-volume" . | indent 8 }}
- - name: localtime
- hostPath:
- path: /etc/localtime
-diff --git a/kubernetes/policy/charts/drools/templates/statefulset.yaml b/kubernetes/policy/charts/drools/templates/statefulset.yaml
-index 6564e798..53c8b600 100644
---- a/kubernetes/policy/charts/drools/templates/statefulset.yaml
-+++ b/kubernetes/policy/charts/drools/templates/statefulset.yaml
-@@ -52,6 +52,8 @@ spec:
- image: "{{ .Values.global.readinessRepository }}/{{ .Values.global.readinessImage }}"
- imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }}
- name: {{ include "common.name" . }}-readiness
-+{{ include "common.update-system-ca-store-ubuntu" . | indent 6 }}
-+{{ include "policy.update-policy-truststore" . | indent 6 }}
- containers:
- - name: {{ include "common.name" . }}
- image: "{{ include "common.repository" . }}/{{ .Values.image }}"
-@@ -79,6 +81,9 @@ spec:
- - name: REPLICAS
- value: "{{ .Values.replicaCount }}"
- volumeMounts:
-+{{ include "common.cacert-mount-ubuntu" . | indent 10 }}
-+{{ include "common.system-ca-store-mount-ubuntu" . | indent 10 }}
-+{{ include "policy.truststore-mount" . | indent 10 }}
- - mountPath: /etc/localtime
- name: localtime
- readOnly: true
-@@ -137,6 +142,9 @@ spec:
- {{ toYaml .Values.affinity | indent 10 }}
- {{- end }}
- volumes:
-+{{ include "common.cacert-volume" . | indent 8 }}
-+{{ include "common.system-ca-store-volume" . | indent 8 }}
-+{{ include "policy.truststore-storage-volume" . | indent 8 }}
- - name: localtime
- hostPath:
- path: /etc/localtime
-diff --git a/kubernetes/policy/charts/pdp/templates/statefulset.yaml b/kubernetes/policy/charts/pdp/templates/statefulset.yaml
-index a3a8f6a9..4ae0ead5 100644
---- a/kubernetes/policy/charts/pdp/templates/statefulset.yaml
-+++ b/kubernetes/policy/charts/pdp/templates/statefulset.yaml
-@@ -50,6 +50,7 @@ spec:
- image: "{{ .Values.global.readinessRepository }}/{{ .Values.global.readinessImage }}"
- imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }}
- name: {{ include "common.name" . }}-readiness
-+{{ include "common.update-system-ca-store-ubuntu" . | indent 6 }}
- containers:
- - command:
- - /bin/bash
-@@ -75,6 +76,8 @@ spec:
- initialDelaySeconds: {{ .Values.readiness.initialDelaySeconds }}
- periodSeconds: {{ .Values.readiness.periodSeconds }}
- volumeMounts:
-+{{ include "common.cacert-mount-ubuntu" . | indent 8 }}
-+{{ include "common.system-ca-store-mount-ubuntu" . | indent 8 }}
- - mountPath: /etc/localtime
- name: localtime
- readOnly: true
-@@ -114,6 +117,8 @@ spec:
- - mountPath: /usr/share/filebeat/data
- name: policy-data-filebeat
- volumes:
-+{{ include "common.cacert-volume" . | indent 6 }}
-+{{ include "common.system-ca-store-volume" . | indent 6 }}
- - name: localtime
- hostPath:
- path: /etc/localtime
-diff --git a/kubernetes/policy/charts/policy-common/templates/_keystore.tpl b/kubernetes/policy/charts/policy-common/templates/_keystore.tpl
-new file mode 100644
-index 00000000..81ba09bc
---- /dev/null
-+++ b/kubernetes/policy/charts/policy-common/templates/_keystore.tpl
-@@ -0,0 +1,61 @@
-+# COPYRIGHT NOTICE STARTS HERE
-+#
-+# Copyright 2018 © Samsung Electronics Co., Ltd.
-+#
-+# Licensed under the Apache License, Version 2.0 (the "License");
-+# you may not use this file except in compliance with the License.
-+# You may obtain a copy of the License at
-+#
-+# http://www.apache.org/licenses/LICENSE-2.0
-+#
-+# Unless required by applicable law or agreed to in writing, software
-+# distributed under the License is distributed on an "AS IS" BASIS,
-+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-+# See the License for the specific language governing permissions and
-+# limitations under the License.
-+#
-+# COPYRIGHT NOTICE ENDS HERE
-+
-+#This template creates a volume for storing policy-truststore with imported ca.
-+#It is ignored if cacert was not given.
-+{{- define "policy.truststore-storage-volume" }}
-+{{- if .Values.global.cacert }}
-+- name: truststore-storage
-+ emptyDir:
-+{{- end }}
-+{{- end }}
-+
-+#This template mounts policy-truststore in appropriate place for policy components to take it.
-+#It is ignored if cacert is not given.
-+{{- define "policy.truststore-mount" }}
-+{{- if .Values.global.cacert }}
-+- mountPath: "/tmp/policy-install/config/policy-truststore"
-+ name: truststore-storage
-+ subPath: policy-truststore
-+{{- end }}
-+{{- end }}
-+
-+#This will extract a policy truststore and then import
-+#the root cacert of offline nexus into it.
-+#This template expects a volume named truststore-storage where policy-truststore will be put.
-+#It also expects volume named cacert where the file "certificate" will contain the cert to import.
-+#Template is ignored if ca certificate not given.
-+{{- define "policy.update-policy-truststore" }}
-+{{- if .Values.global.cacert }}
-+- command:
-+ - "/bin/bash"
-+ - "-c"
-+ - |
-+ set -e
-+ tar -xzf base-*.tar.gz etc/ssl/policy-truststore
-+ cp etc/ssl/policy-truststore truststore-storage/
-+ keytool -import -keystore truststore-storage/policy-truststore -storepass "Pol1cy_0nap" -noprompt -file /usr/local/share/ca-certificates/cacert.crt
-+ name: update-policy-truststore
-+ imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }}
-+ image: {{ include "common.repository" . }}/{{ .Values.image }}
-+ volumeMounts:
-+ - mountPath: "/tmp/policy-install/truststore-storage"
-+ name: truststore-storage
-+{{ include "common.cacert-mount-ubuntu" . | indent 2 }}
-+{{- end }}
-+{{- end }}
-diff --git a/kubernetes/sdnc/charts/sdnc-ansible-server/templates/deployment.yaml b/kubernetes/sdnc/charts/sdnc-ansible-server/templates/deployment.yaml
-index 1f14dd31..18b579dd 100644
---- a/kubernetes/sdnc/charts/sdnc-ansible-server/templates/deployment.yaml
-+++ b/kubernetes/sdnc/charts/sdnc-ansible-server/templates/deployment.yaml
-@@ -47,8 +47,16 @@ spec:
- name: {{ include "common.name" . }}-readiness
- containers:
- - name: {{ include "common.name" . }}
-- command: ["/bin/bash"]
-- args: ["-c", "cd /opt/onap/ccsdk && ./startAnsibleServer.sh"]
-+ command:
-+ - /bin/bash
-+ - -c
-+ - >
-+ pip install -i http://nexus3.onap.org/repository/pypi-private/simple/
-+ --trusted-host nexus3.onap.org
-+ PyMySQL cherrypy requests;
-+ curl -s repo.infra-server/ubuntu/xenial/onap.list > /etc/apt/sources.list;
-+ apt-get update;
-+ cd /opt/onap/ccsdk && ./startAnsibleServer.sh
- image: "{{ include "common.repository" . }}/{{ .Values.image }}"
- imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }}
- ports:
-diff --git a/kubernetes/sdnc/charts/sdnc-portal/templates/deployment.yaml b/kubernetes/sdnc/charts/sdnc-portal/templates/deployment.yaml
-index 35dffee5..18dd7cd4 100644
---- a/kubernetes/sdnc/charts/sdnc-portal/templates/deployment.yaml
-+++ b/kubernetes/sdnc/charts/sdnc-portal/templates/deployment.yaml
-@@ -49,8 +49,13 @@ spec:
- name: {{ include "common.name" . }}-readiness
- containers:
- - name: {{ include "common.name" . }}
-- command: ["/bin/bash"]
-- args: ["-c", "cd /opt/onap/sdnc/admportal/shell && ./start_portal.sh"]
-+ command:
-+ - /bin/bash
-+ - -c
-+ - >
-+ HOSTS_FILE_RECORD >> /etc/hosts;
-+ NPM_REGISTRY_RECORD;
-+ cd /opt/onap/sdnc/admportal/shell && ./start_portal.sh
- image: "{{ include "common.repository" . }}/{{ .Values.image }}"
- imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }}
- ports:
---
-2.20.1
-
diff --git a/patches/onap-casablanca-patch-role/tasks/main.yml b/patches/onap-patch-role/tasks/main.yml
index 00ee4577..fb81f200 100644
--- a/patches/onap-casablanca-patch-role/tasks/main.yml
+++ b/patches/onap-patch-role/tasks/main.yml
@@ -6,25 +6,14 @@
path: "{{ app_helm_charts_infra_directory }}/{{ item }}"
with_items:
- common/dgbuilder/templates/deployment.yaml
- - sdnc/charts/sdnc-portal/templates/deployment.yaml
register: npm_files_check
-- name: Check presence of dcae cloudify deployment chart file
+- name: Check presence of files for nexus domain resolving
stat:
path: "{{ app_helm_charts_infra_directory }}/{{ item }}"
with_items:
- - dcaegen2/charts/dcae-cloudify-manager/templates/deployment.yaml
- register: dcae_files_check
-
-- name: Patch OOM - nexus domain resolving
- lineinfile:
- path: "{{ item.stat.path }}"
- regexp: '^(.*)HOSTS_FILE_RECORD'
- line: '\g<1>{{ cluster_ip }} {{ simulated_hosts.nexus | join(" ") }} >> /etc/hosts;'
- backrefs: yes
- state: present
- with_items: "{{ npm_files_check.results }}"
- when: item.stat.exists
+ - oof/charts/oof-cmso/charts/oof-cmso-service/resources/config/msosimulator.sh
+ register: hosts_files_check
- name: Patch OOM - set npm registry
lineinfile:
@@ -36,13 +25,12 @@
with_items: "{{ npm_files_check.results }}"
when: item.stat.exists
-- name: Patch OOM - set cert path for cloudify
+- name: Patch OOM - nexus domain resolving
lineinfile:
path: "{{ item.stat.path }}"
- regexp: '^(.*)CERT_PATH'
- line: '\g<1>/etc/pki/ca-trust/source/anchors'
+ regexp: '^(.*)HOSTS_FILE_RECORD'
+ line: '\g<1>{{ cluster_ip }} {{ simulated_hosts.nexus | join(" ") }} >> /etc/hosts;'
backrefs: yes
state: present
- with_items: "{{ dcae_files_check.results }}"
+ with_items: "{{ hosts_files_check.results }}"
when: item.stat.exists
-
diff --git a/patches/onap.patch b/patches/onap.patch
new file mode 100644
index 00000000..05e217e7
--- /dev/null
+++ b/patches/onap.patch
@@ -0,0 +1,41 @@
+diff --git a/kubernetes/oof/charts/oof-cmso/charts/oof-cmso-service/resources/config/msosimulator.sh b/kubernetes/oof/charts/oof-cmso/charts/oof-cmso-service/resources/config/msosimulator.sh
+index c87a26b..79ad921 100644
+--- a/kubernetes/oof/charts/oof-cmso/charts/oof-cmso-service/resources/config/msosimulator.sh
++++ b/kubernetes/oof/charts/oof-cmso/charts/oof-cmso-service/resources/config/msosimulator.sh
+@@ -1,4 +1,10 @@
+ #!/bin/sh
+-pip install flask
+-pip install requests
++
++# for some reason DNS is not working properly on this pod
++# therefore we need to explicitly add record just for
++# the purpose of this script
++HOSTS_FILE_RECORD >> /etc/hosts
++
++pip install -i https://nexus3.onap.org/repository/pypi-private/simple/ --trusted-host nexus3.onap.org flask
++pip install -i https://nexus3.onap.org/repository/pypi-private/simple/ --trusted-host nexus3.onap.org requests
+ python /share/etc/config/mock.py
+--
+
+diff --git a/kubernetes/common/dgbuilder/templates/deployment.yaml b/kubernetes/common/dgbuilder/templates/deployment.yaml
+index 353c231..cf38409 100644
+--- a/kubernetes/common/dgbuilder/templates/deployment.yaml
++++ b/kubernetes/common/dgbuilder/templates/deployment.yaml
+@@ -49,8 +49,12 @@ spec:
+ - name: {{ include "common.name" . }}
+ image: "{{ include "common.repository" . }}/{{ .Values.image }}"
+ imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }}
+- command: ["/bin/bash"]
+- args: ["-c", "cd /opt/onap/ccsdk/dgbuilder/ && ./start.sh sdnc1.0 && wait"]
++ command:
++ - /bin/bash
++ - -c
++ - >
++ NPM_REGISTRY_RECORD;
++ cd /opt/onap/ccsdk/dgbuilder/ && ./start.sh sdnc1.0 && wait
+ ports:
+ - containerPort: {{ .Values.service.internalPort }}
+ readinessProbe:
+--
+1.8.3.1
+