diff options
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 + |