diff options
77 files changed, 2797 insertions, 1181 deletions
diff --git a/S3Ptools/locustfile.py b/S3Ptools/locustfile.py new file mode 100644 index 000000000..5fe5b3786 --- /dev/null +++ b/S3Ptools/locustfile.py @@ -0,0 +1,28 @@ +import random +import string +from locust import HttpLocust, TaskSet, task + +class UserBehavior(TaskSet): + def on_start(self): + """ on_start is called when a Locust start before any task is scheduled """ + self.init() + + def init(self): + pass + + @task(1) + def DCI(self): + method = "POST" + url = "/ecomp/mso/infra/e2eServiceInstances/v3" + headers = {"Accept":"application/json","Content-Type":"application/json","Authorization":"Basic SW5mcmFQb3J0YWxDbGllbnQ6cGFzc3dvcmQxJA=="} + service_instance_name = ''.join(random.choice(string.ascii_uppercase + string.digits) for _ in range(10)) + data = "{\"service\": {\"name\": \"E2E_volte_%s\", \"description\": \"E2E_volte_ONAP_deploy\", \"serviceDefId\": \"a16eb184-4a81-4c8c-89df-c287d390315a\", \"templateId\": \"012c3446-51db-4a2a-9e64-a936f10a5e3c\", \"parameters\": { \"globalSubscriberId\": \"Demonstration\", \"subscriberName\": \"Demonstration\", \"serviceType\": \"vIMS\", \"templateName\": \"VoLTE e2e Service:null\", \"resources\": [ { \"resourceName\": \"VL OVERLAYTUNNEL\", \"resourceDefId\": \"671d4757-b018-47ab-9df3-351c3bda0a98\", \"resourceId\": \"e859b0fd-d928-4cc8-969e-0fee7795d623\", \"nsParameters\": { \"locationConstraints\": [], \"additionalParamForNs\": { \"site2_vni\": \"5010\", \"site1_localNetworkAll\": \"false\", \"site1_vni\": \"5010\", \"site1_exportRT1\": \"11:1\", \"description\": \"overlay\", \"site2_localNetworkAll\": \"false\", \"site1_routerId\": \"9.9.9.9\", \"site1_fireWallEnable\": \"false\", \"site1_networkName\": \"network1\", \"site2_description\": \"overlay\", \"site1_importRT1\": \"11:1\", \"site1_description\": \"overlay\", \"site2_networkName\": \"network3\", \"name\": \"overlay\", \"site2_fireWallEnable\": \"false\", \"site2_id\": \"ZTE-DCI-Controller\", \"site2_routerId\": \"9.9.9.9\", \"site2_importRT1\": \"11:1\", \"site2_exportRT1\": \"11:1\", \"site2_fireWallId\": \"false\", \"site1_id\": \"DCI-Controller-1\", \"tunnelType\": \"L3-DCI\" } } } ] } } }" % service_instance_name + print(data) + response = self.client.request(method, url, headers=headers, data=data) + print(response.json()) + +class WebsiteUser(HttpLocust): + task_set = UserBehavior + host = "http://10.0.5.1:8080" + min_wait = 5000 + max_wait = 9000 diff --git a/deployment/heat/onap-oom/env/gwu/onap.env b/deployment/heat/onap-oom/env/gwu/onap.env index 1a9aa9a82..c510eb4c1 100644 --- a/deployment/heat/onap-oom/env/gwu/onap.env +++ b/deployment/heat/onap-oom/env/gwu/onap.env @@ -1,33 +1,35 @@ parameters: - keystone_url: http://192.168.1.11:5000 - openstack_tenant_id: 4c93f99551604bf7af25a8f80c7f34cb - openstack_tenant_name: onap - openstack_username: demo - openstack_api_key: demo - - ubuntu_1404_image: trusty ubuntu_1604_image: xenial - centos_7_image: centos7 apt_proxy: 192.168.1.51:3142 docker_proxy: 192.168.1.51:5000 - rancher_vm_flavor: m1.large - k8s_vm_flavor: m2.xxlarge + rancher_vm_flavor: m1.xlarge + k8s_vm_flavor: m1.xlarge public_net_id: 024582bd-ef9b-48b9-9e70-e6732559d9df - public_net_name: provider - oam_network_cidr: 172.16.0.0/16 - dns_forwarder: 192.168.1.11 - external_dns: 192.168.1.3 + oam_network_cidr: 10.0.0.0/16 - dnsaas_proxy_enable: "false" - dnsaas_proxied_keystone_url_path: "v2.0" - dnsaas_keystone_url: http://192.168.1.11:5000 - dnsaas_region: RegionOne - dnsaas_tenant_id: 4c93f99551604bf7af25a8f80c7f34cb - dnsaas_tenant_name: onap - dnsaas_username: demo - dnsaas_password: demo + integration_override_yaml: > + global: + repository: 192.168.1.51:5000 + pullPolicy: IfNotPresent + robot: + openStackKeyStoneUrl: "http://192.168.1.11:5000" + openStackPublicNetId: "024582bd-ef9b-48b9-9e70-e6732559d9df" + openStackPassword: "${OS_PASSWORD}" + openStackTenantId: "${OS_PROJECT_ID}" + openStackUserName: "${OS_USERNAME}" + ubuntu14Image: "trusty" + ubuntu16Image: "xenial" + openStackPrivateNetId: "__oam_network_id__" + openStackPrivateSubnetId: "__oam_subnet_id__" + openStackPrivateNetCidr: "10.0.0.0/16" + openStackOamNetworkCidrPrefix: "10.0" + so: + config: + openStackUserName: "${OS_USERNAME}" + openStackKeyStoneUrl: "http://192.168.1.11:5000" + openStackEncryptedPasswordHere: "${OS_PASSWORD_ENCRYPTED}" diff --git a/deployment/heat/onap-oom/env/huawei/onap-beijing-oom.env b/deployment/heat/onap-oom/env/huawei/onap-beijing-oom.env index 88d6b7492..18171f2fd 100644 --- a/deployment/heat/onap-oom/env/huawei/onap-beijing-oom.env +++ b/deployment/heat/onap-oom/env/huawei/onap-beijing-oom.env @@ -1,33 +1,35 @@ parameters: - keystone_url: http://10.145.122.117:5000 - openstack_tenant_id: 3d228d2fcbb7447bbba3cde703431bc1 - openstack_tenant_name: onap-beijing-oom - openstack_username: demo - openstack_api_key: demo - - ubuntu_1404_image: trusty ubuntu_1604_image: xenial - centos_7_image: centos7 apt_proxy: 10.145.122.118:3142 docker_proxy: 10.145.122.118:5000 - rancher_vm_flavor: m1.large - k8s_vm_flavor: m2.xxlarge + rancher_vm_flavor: m1.xlarge + k8s_vm_flavor: m1.xlarge public_net_id: 3a6247f1-fac6-4167-a49f-33cc8415ccf4 - public_net_name: provider - oam_network_cidr: 172.16.0.0/16 - dns_forwarder: 10.145.122.117 - external_dns: 10.145.122.118 + oam_network_cidr: 10.0.0.0/16 - dnsaas_proxy_enable: "false" - dnsaas_proxied_keystone_url_path: "v2.0" - dnsaas_keystone_url: http://10.145.122.117:5000 - dnsaas_region: RegionOne - dnsaas_tenant_id: 3d228d2fcbb7447bbba3cde703431bc1 - dnsaas_tenant_name: onap-beijing-oom - dnsaas_username: demo - dnsaas_password: demo + integration_override_yaml: > + global: + repository: 10.145.122.118:5000 + pullPolicy: IfNotPresent + robot: + openStackKeyStoneUrl: "http://10.145.122.117:5000" + openStackPublicNetId: "3a6247f1-fac6-4167-a49f-33cc8415ccf4" + openStackPassword: "${OS_PASSWORD}" + openStackTenantId: "${OS_PROJECT_ID}" + openStackUserName: "${OS_USERNAME}" + ubuntu14Image: "trusty" + ubuntu16Image: "xenial" + openStackPrivateNetId: "__oam_network_id__" + openStackPrivateSubnetId: "__oam_subnet_id__" + openStackPrivateNetCidr: "10.0.0.0/16" + openStackOamNetworkCidrPrefix: "10.0" + so: + config: + openStackUserName: "${OS_USERNAME}" + openStackKeyStoneUrl: "http://10.145.122.117:5000" + openStackEncryptedPasswordHere: "${OS_PASSWORD_ENCRYPTED}" diff --git a/deployment/heat/onap-oom/env/tlab/ETE-HEAT-Test.env b/deployment/heat/onap-oom/env/tlab/ETE-HEAT-Test.env index daa145a86..d0beefaa1 100644 --- a/deployment/heat/onap-oom/env/tlab/ETE-HEAT-Test.env +++ b/deployment/heat/onap-oom/env/tlab/ETE-HEAT-Test.env @@ -1,34 +1,35 @@ parameters: - keystone_url: https://bdc1tlab01.research.att.com:5000 - openstack_tenant_id: 76b1938dd3b9471fa1ed413a1b212a96 - openstack_tenant_name: ETE-HEAT-Test - openstack_username: ${OS_USERNAME} - openstack_api_key: ${OS_PASSWORD} - - ubuntu_1404_image: "Ubuntu 14.04 LTS Generic" ubuntu_1604_image: "Ubuntu 16.04 LTS Generic" - centos_7_image: "centos7" - lab_name: tlab apt_proxy: 192.168.31.204:3142 docker_proxy: 192.168.31.204:5000 - rancher_vm_flavor: m2.large - k8s_vm_flavor: m5.xxlarge + rancher_vm_flavor: m1.xlarge + k8s_vm_flavor: m1.xlarge public_net_id: fbe8fd92-6636-4e63-ab28-bb6a5b0888a9 - public_net_name: admin-vpn-floating oam_network_cidr: 10.0.0.0/16 - dns_forwarder: 204.178.3.230 - external_dns: 8.8.8.8 - dnsaas_proxy_enable: "false" - dnsaas_proxied_keystone_url_path: "v3" - dnsaas_keystone_url: https://bdc1tlab01.research.att.com:5000 - dnsaas_region: RegionOne - dnsaas_tenant_id: 76b1938dd3b9471fa1ed413a1b212a96 - dnsaas_tenant_name: ETE-HEAT-Test - dnsaas_username: ${OS_USERNAME} - dnsaas_password: ${OS_PASSWORD} + integration_override_yaml: > + global: + repository: 192.168.31.204:5000 + pullPolicy: IfNotPresent + robot: + openStackKeyStoneUrl: "https://bdc1tlab01.research.att.com:5000" + openStackPublicNetId: "fbe8fd92-6636-4e63-ab28-bb6a5b0888a9" + openStackPassword: "${OS_PASSWORD}" + openStackTenantId: "${OS_PROJECT_ID}" + openStackUserName: "${OS_USERNAME}" + ubuntu14Image: "Ubuntu 14.04 LTS Generic" + ubuntu16Image: "Ubuntu 16.04 LTS Generic" + openStackPrivateNetId: "__oam_network_id__" + openStackPrivateSubnetId: "__oam_subnet_id__" + openStackPrivateNetCidr: "10.0.0.0/16" + openStackOamNetworkCidrPrefix: "10.0" + so: + config: + openStackUserName: "${OS_USERNAME}" + openStackKeyStoneUrl: "https://bdc1tlab01.research.att.com:5000" + openStackEncryptedPasswordHere: "${OS_PASSWORD_ENCRYPTED}" diff --git a/deployment/heat/onap-oom/env/tlab/ETE-OOM-Test.env b/deployment/heat/onap-oom/env/tlab/ETE-OOM-Test.env index cbda112f7..d0beefaa1 100644 --- a/deployment/heat/onap-oom/env/tlab/ETE-OOM-Test.env +++ b/deployment/heat/onap-oom/env/tlab/ETE-OOM-Test.env @@ -1,34 +1,35 @@ parameters: - keystone_url: https://bdc1tlab01.research.att.com:5000 - openstack_tenant_id: b4062c7fbf9646b8a2bcb71c46695ff3 - openstack_tenant_name: ETE-OOM-Test - openstack_username: ${OS_USERNAME} - openstack_api_key: ${OS_PASSWORD} - - ubuntu_1404_image: "Ubuntu 14.04 LTS Generic" ubuntu_1604_image: "Ubuntu 16.04 LTS Generic" - centos_7_image: "centos7" - lab_name: tlab apt_proxy: 192.168.31.204:3142 docker_proxy: 192.168.31.204:5000 - rancher_vm_flavor: m2.large - k8s_vm_flavor: m5.xxlarge + rancher_vm_flavor: m1.xlarge + k8s_vm_flavor: m1.xlarge public_net_id: fbe8fd92-6636-4e63-ab28-bb6a5b0888a9 - public_net_name: admin-vpn-floating oam_network_cidr: 10.0.0.0/16 - dns_forwarder: 204.178.3.230 - external_dns: 8.8.8.8 - dnsaas_proxy_enable: "false" - dnsaas_proxied_keystone_url_path: "v3" - dnsaas_keystone_url: https://bdc1tlab01.research.att.com:5000 - dnsaas_region: RegionOne - dnsaas_tenant_id: b4062c7fbf9646b8a2bcb71c46695ff3 - dnsaas_tenant_name: ETE-OOM-Test - dnsaas_username: ${OS_USERNAME} - dnsaas_password: ${OS_PASSWORD} + integration_override_yaml: > + global: + repository: 192.168.31.204:5000 + pullPolicy: IfNotPresent + robot: + openStackKeyStoneUrl: "https://bdc1tlab01.research.att.com:5000" + openStackPublicNetId: "fbe8fd92-6636-4e63-ab28-bb6a5b0888a9" + openStackPassword: "${OS_PASSWORD}" + openStackTenantId: "${OS_PROJECT_ID}" + openStackUserName: "${OS_USERNAME}" + ubuntu14Image: "Ubuntu 14.04 LTS Generic" + ubuntu16Image: "Ubuntu 16.04 LTS Generic" + openStackPrivateNetId: "__oam_network_id__" + openStackPrivateSubnetId: "__oam_subnet_id__" + openStackPrivateNetCidr: "10.0.0.0/16" + openStackOamNetworkCidrPrefix: "10.0" + so: + config: + openStackUserName: "${OS_USERNAME}" + openStackKeyStoneUrl: "https://bdc1tlab01.research.att.com:5000" + openStackEncryptedPasswordHere: "${OS_PASSWORD_ENCRYPTED}" diff --git a/deployment/heat/onap-oom/env/tlab/EXTONAP_DEV.env b/deployment/heat/onap-oom/env/tlab/EXTONAP_DEV.env index cb9244299..d0beefaa1 100644 --- a/deployment/heat/onap-oom/env/tlab/EXTONAP_DEV.env +++ b/deployment/heat/onap-oom/env/tlab/EXTONAP_DEV.env @@ -1,33 +1,35 @@ parameters: - keystone_url: https://bdc1tlab01.research.att.com:5000 - openstack_tenant_id: 01b47c21807242598cd5ab63d1c6ba8e - openstack_tenant_name: EXTONAP_DEV - openstack_username: ${OS_USERNAME} - openstack_api_key: ${OS_PASSWORD} - - ubuntu_1404_image: "Ubuntu 14.04 LTS Generic" ubuntu_1604_image: "Ubuntu 16.04 LTS Generic" - centos_7_image: "centos7" apt_proxy: 192.168.31.204:3142 docker_proxy: 192.168.31.204:5000 - rancher_vm_flavor: m1.large - k8s_vm_flavor: m2.xxlarge + rancher_vm_flavor: m1.xlarge + k8s_vm_flavor: m1.xlarge public_net_id: fbe8fd92-6636-4e63-ab28-bb6a5b0888a9 - public_net_name: admin-vpn-floating oam_network_cidr: 10.0.0.0/16 - dns_forwarder: 204.178.3.230 - external_dns: 8.8.8.8 - dnsaas_proxy_enable: "false" - dnsaas_proxied_keystone_url_path: "v3" - dnsaas_keystone_url: https://bdc1tlab01.research.att.com:5000 - dnsaas_region: RegionOne - dnsaas_tenant_id: 01b47c21807242598cd5ab63d1c6ba8e - dnsaas_tenant_name: EXTONAP_DEV - dnsaas_username: ${OS_USERNAME} - dnsaas_password: ${OS_PASSWORD} + integration_override_yaml: > + global: + repository: 192.168.31.204:5000 + pullPolicy: IfNotPresent + robot: + openStackKeyStoneUrl: "https://bdc1tlab01.research.att.com:5000" + openStackPublicNetId: "fbe8fd92-6636-4e63-ab28-bb6a5b0888a9" + openStackPassword: "${OS_PASSWORD}" + openStackTenantId: "${OS_PROJECT_ID}" + openStackUserName: "${OS_USERNAME}" + ubuntu14Image: "Ubuntu 14.04 LTS Generic" + ubuntu16Image: "Ubuntu 16.04 LTS Generic" + openStackPrivateNetId: "__oam_network_id__" + openStackPrivateSubnetId: "__oam_subnet_id__" + openStackPrivateNetCidr: "10.0.0.0/16" + openStackOamNetworkCidrPrefix: "10.0" + so: + config: + openStackUserName: "${OS_USERNAME}" + openStackKeyStoneUrl: "https://bdc1tlab01.research.att.com:5000" + openStackEncryptedPasswordHere: "${OS_PASSWORD_ENCRYPTED}" diff --git a/deployment/heat/onap-oom/env/tlab/integration-override.yaml b/deployment/heat/onap-oom/env/tlab/integration-override.yaml deleted file mode 100644 index 87302c96d..000000000 --- a/deployment/heat/onap-oom/env/tlab/integration-override.yaml +++ /dev/null @@ -1,136 +0,0 @@ -# Copyright © 2017 Amdocs, Bell Canada -# -# 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. - -# This override file is useful to test one or more subcharts. -# It overrides the default ONAP parent chart behaviour to deploy -# all of ONAP. -# -# Example use to enable a single subchart (from this directory): -# -# helm install local/onap -n onap --namespace onap -f disable-allcharts.yaml --set so.enabled=true - - -################################################################# -# Global configuration overrides. -# -# These overrides will affect all helm charts (ie. applications) -# that are listed below and are 'enabled'. -################################################################# -global: - # Change to an unused port prefix range to prevent port conflicts - # with other instances running within the same k8s cluster - nodePortPrefix: 302 - - # lab local nexus proxy - nexus3 default - repository: 192.168.31.204:5000 - # image pull policy - #pullPolicy: Always - pullPolicy: IfNotPresent - - - # default mount path root directory referenced - # by persistent volumes and log files -# persistence: -# mountPath: /onapdata - -################################################################# -# Enable/disable and configure helm charts (ie. applications) -# to customize the ONAP deployment. -################################################################# -aaf: - enabled: true -aai: - enabled: true - # aai subchart image overrides - aai-champ: - image: onap/champ:1.2-STAGING-latest - aai-data-router: - image: onap/data-router:1.2-STAGING-latest - aai-modelloader: - image: onap/model-loader:1.2-STAGING-latest - aai-resources: - image: onap/aai-resources:1.2-STAGING-latest - aai-search-data: - image: onap/search-data-service:1.2-STAGING-latest - aai-sparky-be: - image: onap/sparky-be:1.2-STAGING-latest - aai-traveral: - image: onap/aai-traversal:1.2-STAGING-latest -appc: - enabled: false -clamp: - enabled: true -cli: - enabled: true -consul: - enabled: true -dcaegen2: - enabled: false -esr: - enabled: true - # esr parent chart (server) image override - image: onap/aai/esr-server:1.1.0-SNAPSHOT - # esr subchart omage override - esr-gui: - image: onap/aai/esr-gui:1.1.0-SNAPSHOT -log: - enabled: true -message-router: - enabled: true -# kafka: -# repositoryOverride: docker.io -# image: wurstmeister/kafka:latest -mock: - enabled: true -msb: - enabled: true -multicloud: - enabled: true -policy: - enabled: true -portal: - enabled: true -robot: - enabled: true - #pullPolicy: Always -# config: - # openstack configuration -# openStackUserName: "demo" -# openStackRegion: "RegionOne" -# openStackKeyStoneUrl: "http://10.12.25.2:5000" -# openStackServiceTenantName: "service" -# openStackEncryptedPasswordHere: "c124921a3a0efbe579782cde8227681e" -sdc: - enabled: true -sdnc: - enabled: true -so: - enabled: true - # so server configuration - config: - # openstack configuration - openStackUserName: "demo" - openStackRegion: "RegionOne" - openStackKeyStoneUrl: "https://bdc1tlab01.research.att.com:5000" - openStackServiceTenantName: "service" - openStackEncryptedPasswordHere: "bbaef6cd76625ab9eb60deedeae7dbb9" - -uui: - enabled: true -vfc: - enabled: true -vid: - enabled: true -vnfsdk: - enabled: true diff --git a/deployment/heat/onap-oom/env/windriver/Integration-Jenkins-DNS-openrc b/deployment/heat/onap-oom/env/windriver/Integration-Jenkins-DNS-openrc deleted file mode 120000 index ad2738819..000000000 --- a/deployment/heat/onap-oom/env/windriver/Integration-Jenkins-DNS-openrc +++ /dev/null @@ -1 +0,0 @@ -../../../../../test/ete/labs/windriver/Integration-Jenkins-DNS-openrc
\ No newline at end of file diff --git a/deployment/heat/onap-oom/env/windriver/Integration-Jenkins.env b/deployment/heat/onap-oom/env/windriver/Integration-Jenkins.env index d80b8a54b..fa16c2504 100644 --- a/deployment/heat/onap-oom/env/windriver/Integration-Jenkins.env +++ b/deployment/heat/onap-oom/env/windriver/Integration-Jenkins.env @@ -1,34 +1,35 @@ parameters: - keystone_url: http://10.12.25.2:5000 - openstack_tenant_id: 09d8566ea45e43aa974cf447ed591d77 - openstack_tenant_name: Integration-Jenkins - openstack_username: demo - openstack_api_key: onapdemo - - ubuntu_1404_image: ubuntu-14-04-cloud-amd64 ubuntu_1604_image: ubuntu-16-04-cloud-amd64 - centos_7_image: CentOS-7 - lab_name: windriver apt_proxy: 10.12.5.2:3142 docker_proxy: 10.12.5.2:5000 - rancher_vm_flavor: m1.large - k8s_vm_flavor: m1.xxlarge + rancher_vm_flavor: m1.xlarge + k8s_vm_flavor: m1.xlarge public_net_id: 971040b2-7059-49dc-b220-4fab50cb2ad4 - public_net_name: external oam_network_cidr: 10.0.0.0/16 - dns_forwarder: 10.12.25.5 - external_dns: 8.8.8.8 - dnsaas_proxy_enable: "true" - dnsaas_proxied_keystone_url_path: "api/multicloud-titanium_cloud/v0/pod25_RegionOne/identity/v2.0" - dnsaas_keystone_url: http://10.12.25.5:5000 - dnsaas_region: RegionOne - dnsaas_tenant_id: bf80d09fbc804b42b3bc727d6cf1fcbe - dnsaas_tenant_name: Integration-Jenkins - dnsaas_username: demo - dnsaas_password: onapdemo + integration_override_yaml: > + global: + repository: 10.12.5.2:5000 + pullPolicy: IfNotPresent + robot: + openStackKeyStoneUrl: "http://10.12.25.2:5000" + openStackPublicNetId: "971040b2-7059-49dc-b220-4fab50cb2ad4" + openStackPassword: "${OS_PASSWORD}" + openStackTenantId: "${OS_PROJECT_ID}" + openStackUserName: "${OS_USERNAME}" + ubuntu14Image: "ubuntu-14-04-cloud-amd64" + ubuntu16Image: "ubuntu-16-04-cloud-amd64" + openStackPrivateNetId: "__oam_network_id__" + openStackPrivateSubnetId: "__oam_subnet_id__" + openStackPrivateNetCidr: "10.0.0.0/16" + openStackOamNetworkCidrPrefix: "10.0" + so: + config: + openStackUserName: "${OS_USERNAME}" + openStackKeyStoneUrl: "http://10.12.25.2:5000" + openStackEncryptedPasswordHere: "${OS_PASSWORD_ENCRYPTED}" diff --git a/deployment/heat/onap-oom/env/windriver/Integration-SB-00-DNS-openrc b/deployment/heat/onap-oom/env/windriver/Integration-SB-00-DNS-openrc deleted file mode 120000 index f5d04b1f2..000000000 --- a/deployment/heat/onap-oom/env/windriver/Integration-SB-00-DNS-openrc +++ /dev/null @@ -1 +0,0 @@ -../../../../../test/ete/labs/windriver/Integration-SB-00-DNS-openrc
\ No newline at end of file diff --git a/deployment/heat/onap-oom/env/windriver/Integration-SB-00.env b/deployment/heat/onap-oom/env/windriver/Integration-SB-00.env index 16965979f..fa16c2504 100644 --- a/deployment/heat/onap-oom/env/windriver/Integration-SB-00.env +++ b/deployment/heat/onap-oom/env/windriver/Integration-SB-00.env @@ -1,34 +1,35 @@ parameters: - keystone_url: http://10.12.25.2:5000 - openstack_tenant_id: 41d6d38489bd40b09ea8a6b6b852dcbd - openstack_tenant_name: Integration-SB-00 - openstack_username: demo - openstack_api_key: onapdemo - - ubuntu_1404_image: ubuntu-14-04-cloud-amd64 ubuntu_1604_image: ubuntu-16-04-cloud-amd64 - centos_7_image: CentOS-7 - lab_name: windriver apt_proxy: 10.12.5.2:3142 docker_proxy: 10.12.5.2:5000 - rancher_vm_flavor: m1.large - k8s_vm_flavor: m1.xxlarge + rancher_vm_flavor: m1.xlarge + k8s_vm_flavor: m1.xlarge public_net_id: 971040b2-7059-49dc-b220-4fab50cb2ad4 - public_net_name: external oam_network_cidr: 10.0.0.0/16 - dns_forwarder: 10.12.25.5 - external_dns: 8.8.8.8 - dnsaas_proxy_enable: "true" - dnsaas_proxied_keystone_url_path: "api/multicloud-titanium_cloud/v0/pod25_RegionOne/identity/v2.0" - dnsaas_keystone_url: http://10.12.25.5:5000 - dnsaas_region: RegionOne - dnsaas_tenant_id: a813ac529c6d4b44a3308ed38bcd7480 - dnsaas_tenant_name: Integration-SB-00 - dnsaas_username: demo - dnsaas_password: onapdemo + integration_override_yaml: > + global: + repository: 10.12.5.2:5000 + pullPolicy: IfNotPresent + robot: + openStackKeyStoneUrl: "http://10.12.25.2:5000" + openStackPublicNetId: "971040b2-7059-49dc-b220-4fab50cb2ad4" + openStackPassword: "${OS_PASSWORD}" + openStackTenantId: "${OS_PROJECT_ID}" + openStackUserName: "${OS_USERNAME}" + ubuntu14Image: "ubuntu-14-04-cloud-amd64" + ubuntu16Image: "ubuntu-16-04-cloud-amd64" + openStackPrivateNetId: "__oam_network_id__" + openStackPrivateSubnetId: "__oam_subnet_id__" + openStackPrivateNetCidr: "10.0.0.0/16" + openStackOamNetworkCidrPrefix: "10.0" + so: + config: + openStackUserName: "${OS_USERNAME}" + openStackKeyStoneUrl: "http://10.12.25.2:5000" + openStackEncryptedPasswordHere: "${OS_PASSWORD_ENCRYPTED}" diff --git a/deployment/heat/onap-oom/env/windriver/Integration-SB-01-DNS-openrc b/deployment/heat/onap-oom/env/windriver/Integration-SB-01-DNS-openrc deleted file mode 120000 index 208d760eb..000000000 --- a/deployment/heat/onap-oom/env/windriver/Integration-SB-01-DNS-openrc +++ /dev/null @@ -1 +0,0 @@ -../../../../../test/ete/labs/windriver/Integration-SB-01-DNS-openrc
\ No newline at end of file diff --git a/deployment/heat/onap-oom/env/windriver/Integration-SB-01.env b/deployment/heat/onap-oom/env/windriver/Integration-SB-01.env index 8e851913c..fa16c2504 100644 --- a/deployment/heat/onap-oom/env/windriver/Integration-SB-01.env +++ b/deployment/heat/onap-oom/env/windriver/Integration-SB-01.env @@ -1,34 +1,35 @@ parameters: - keystone_url: http://10.12.25.2:5000 - openstack_tenant_id: 087050388b204c73a3e418dd2c1fe30b - openstack_tenant_name: Integration-SB-01 - openstack_username: demo - openstack_api_key: onapdemo - - ubuntu_1404_image: ubuntu-14-04-cloud-amd64 ubuntu_1604_image: ubuntu-16-04-cloud-amd64 - centos_7_image: CentOS-7 - lab_name: windriver apt_proxy: 10.12.5.2:3142 docker_proxy: 10.12.5.2:5000 - rancher_vm_flavor: m1.large - k8s_vm_flavor: m1.xxlarge + rancher_vm_flavor: m1.xlarge + k8s_vm_flavor: m1.xlarge public_net_id: 971040b2-7059-49dc-b220-4fab50cb2ad4 - public_net_name: external oam_network_cidr: 10.0.0.0/16 - dns_forwarder: 10.12.25.5 - external_dns: 8.8.8.8 - dnsaas_proxy_enable: "true" - dnsaas_proxied_keystone_url_path: "api/multicloud-titanium_cloud/v0/pod25_RegionOne/identity/v2.0" - dnsaas_keystone_url: http://10.12.25.5:5000 - dnsaas_region: RegionOne - dnsaas_tenant_id: 4318a6c5788449cc97c88fd745b554b9 - dnsaas_tenant_name: Integration-SB-01 - dnsaas_username: demo - dnsaas_password: onapdemo + integration_override_yaml: > + global: + repository: 10.12.5.2:5000 + pullPolicy: IfNotPresent + robot: + openStackKeyStoneUrl: "http://10.12.25.2:5000" + openStackPublicNetId: "971040b2-7059-49dc-b220-4fab50cb2ad4" + openStackPassword: "${OS_PASSWORD}" + openStackTenantId: "${OS_PROJECT_ID}" + openStackUserName: "${OS_USERNAME}" + ubuntu14Image: "ubuntu-14-04-cloud-amd64" + ubuntu16Image: "ubuntu-16-04-cloud-amd64" + openStackPrivateNetId: "__oam_network_id__" + openStackPrivateSubnetId: "__oam_subnet_id__" + openStackPrivateNetCidr: "10.0.0.0/16" + openStackOamNetworkCidrPrefix: "10.0" + so: + config: + openStackUserName: "${OS_USERNAME}" + openStackKeyStoneUrl: "http://10.12.25.2:5000" + openStackEncryptedPasswordHere: "${OS_PASSWORD_ENCRYPTED}" diff --git a/deployment/heat/onap-oom/env/windriver/Integration-SB-02-DNS-openrc b/deployment/heat/onap-oom/env/windriver/Integration-SB-02-DNS-openrc deleted file mode 120000 index 814962e0d..000000000 --- a/deployment/heat/onap-oom/env/windriver/Integration-SB-02-DNS-openrc +++ /dev/null @@ -1 +0,0 @@ -../../../../../test/ete/labs/windriver/Integration-SB-02-DNS-openrc
\ No newline at end of file diff --git a/deployment/heat/onap-oom/env/windriver/Integration-SB-02.env b/deployment/heat/onap-oom/env/windriver/Integration-SB-02.env index 99d267bc6..fa16c2504 100644 --- a/deployment/heat/onap-oom/env/windriver/Integration-SB-02.env +++ b/deployment/heat/onap-oom/env/windriver/Integration-SB-02.env @@ -1,34 +1,35 @@ parameters: - keystone_url: http://10.12.25.2:5000 - openstack_tenant_id: ebb0ea7144004bacac1e39ff23105fa7 - openstack_tenant_name: Integration-SB-02 - openstack_username: demo - openstack_api_key: onapdemo - - ubuntu_1404_image: ubuntu-14-04-cloud-amd64 ubuntu_1604_image: ubuntu-16-04-cloud-amd64 - centos_7_image: CentOS-7 - lab_name: windriver apt_proxy: 10.12.5.2:3142 docker_proxy: 10.12.5.2:5000 - rancher_vm_flavor: m1.large - k8s_vm_flavor: m1.xxlarge + rancher_vm_flavor: m1.xlarge + k8s_vm_flavor: m1.xlarge public_net_id: 971040b2-7059-49dc-b220-4fab50cb2ad4 - public_net_name: external oam_network_cidr: 10.0.0.0/16 - dns_forwarder: 10.12.25.5 - external_dns: 8.8.8.8 - dnsaas_proxy_enable: "true" - dnsaas_proxied_keystone_url_path: "api/multicloud-titanium_cloud/v0/pod25_RegionOne/identity/v2.0" - dnsaas_keystone_url: http://10.12.25.5:5000 - dnsaas_region: RegionOne - dnsaas_tenant_id: 89fee629f5f044739fb64380be63b6da - dnsaas_tenant_name: Integration-SB-02 - dnsaas_username: demo - dnsaas_password: onapdemo + integration_override_yaml: > + global: + repository: 10.12.5.2:5000 + pullPolicy: IfNotPresent + robot: + openStackKeyStoneUrl: "http://10.12.25.2:5000" + openStackPublicNetId: "971040b2-7059-49dc-b220-4fab50cb2ad4" + openStackPassword: "${OS_PASSWORD}" + openStackTenantId: "${OS_PROJECT_ID}" + openStackUserName: "${OS_USERNAME}" + ubuntu14Image: "ubuntu-14-04-cloud-amd64" + ubuntu16Image: "ubuntu-16-04-cloud-amd64" + openStackPrivateNetId: "__oam_network_id__" + openStackPrivateSubnetId: "__oam_subnet_id__" + openStackPrivateNetCidr: "10.0.0.0/16" + openStackOamNetworkCidrPrefix: "10.0" + so: + config: + openStackUserName: "${OS_USERNAME}" + openStackKeyStoneUrl: "http://10.12.25.2:5000" + openStackEncryptedPasswordHere: "${OS_PASSWORD_ENCRYPTED}" diff --git a/deployment/heat/onap-oom/env/windriver/Integration-SB-03-DNS-openrc b/deployment/heat/onap-oom/env/windriver/Integration-SB-03-DNS-openrc deleted file mode 120000 index 10a7b0b16..000000000 --- a/deployment/heat/onap-oom/env/windriver/Integration-SB-03-DNS-openrc +++ /dev/null @@ -1 +0,0 @@ -../../../../../test/ete/labs/windriver/Integration-SB-03-DNS-openrc
\ No newline at end of file diff --git a/deployment/heat/onap-oom/env/windriver/Integration-SB-03.env b/deployment/heat/onap-oom/env/windriver/Integration-SB-03.env index 89fc801ba..fa16c2504 100644 --- a/deployment/heat/onap-oom/env/windriver/Integration-SB-03.env +++ b/deployment/heat/onap-oom/env/windriver/Integration-SB-03.env @@ -1,34 +1,35 @@ parameters: - keystone_url: http://10.12.25.2:5000 - openstack_tenant_id: bc43d50ffcb84750bac0c1707a9a765b - openstack_tenant_name: Integration-SB-03 - openstack_username: demo - openstack_api_key: onapdemo - - ubuntu_1404_image: ubuntu-14-04-cloud-amd64 ubuntu_1604_image: ubuntu-16-04-cloud-amd64 - centos_7_image: CentOS-7 - lab_name: windriver apt_proxy: 10.12.5.2:3142 docker_proxy: 10.12.5.2:5000 - rancher_vm_flavor: m1.large - k8s_vm_flavor: m1.xxlarge + rancher_vm_flavor: m1.xlarge + k8s_vm_flavor: m1.xlarge public_net_id: 971040b2-7059-49dc-b220-4fab50cb2ad4 - public_net_name: external oam_network_cidr: 10.0.0.0/16 - dns_forwarder: 10.12.25.5 - external_dns: 8.8.8.8 - dnsaas_proxy_enable: "true" - dnsaas_proxied_keystone_url_path: "api/multicloud-titanium_cloud/v0/pod25_RegionOne/identity/v2.0" - dnsaas_keystone_url: http://10.12.25.5:5000 - dnsaas_region: RegionOne - dnsaas_tenant_id: 29fb1a7806e84d8fbc93fa3945f1e2a5 - dnsaas_tenant_name: Integration-SB-03 - dnsaas_username: demo - dnsaas_password: onapdemo + integration_override_yaml: > + global: + repository: 10.12.5.2:5000 + pullPolicy: IfNotPresent + robot: + openStackKeyStoneUrl: "http://10.12.25.2:5000" + openStackPublicNetId: "971040b2-7059-49dc-b220-4fab50cb2ad4" + openStackPassword: "${OS_PASSWORD}" + openStackTenantId: "${OS_PROJECT_ID}" + openStackUserName: "${OS_USERNAME}" + ubuntu14Image: "ubuntu-14-04-cloud-amd64" + ubuntu16Image: "ubuntu-16-04-cloud-amd64" + openStackPrivateNetId: "__oam_network_id__" + openStackPrivateSubnetId: "__oam_subnet_id__" + openStackPrivateNetCidr: "10.0.0.0/16" + openStackOamNetworkCidrPrefix: "10.0" + so: + config: + openStackUserName: "${OS_USERNAME}" + openStackKeyStoneUrl: "http://10.12.25.2:5000" + openStackEncryptedPasswordHere: "${OS_PASSWORD_ENCRYPTED}" diff --git a/deployment/heat/onap-oom/env/windriver/Integration-SB-04-DNS-openrc b/deployment/heat/onap-oom/env/windriver/Integration-SB-04-DNS-openrc deleted file mode 120000 index cd1eeb5ad..000000000 --- a/deployment/heat/onap-oom/env/windriver/Integration-SB-04-DNS-openrc +++ /dev/null @@ -1 +0,0 @@ -../../../../../test/ete/labs/windriver/Integration-SB-04-DNS-openrc
\ No newline at end of file diff --git a/deployment/heat/onap-oom/env/windriver/Integration-SB-04.env b/deployment/heat/onap-oom/env/windriver/Integration-SB-04.env index ec4227e7d..fa16c2504 100644 --- a/deployment/heat/onap-oom/env/windriver/Integration-SB-04.env +++ b/deployment/heat/onap-oom/env/windriver/Integration-SB-04.env @@ -1,34 +1,35 @@ parameters: - keystone_url: http://10.12.25.2:5000 - openstack_tenant_id: d570c718cbc545029f40e50b75eb13df - openstack_tenant_name: Integration-SB-04 - openstack_username: demo - openstack_api_key: onapdemo - - ubuntu_1404_image: ubuntu-14-04-cloud-amd64 ubuntu_1604_image: ubuntu-16-04-cloud-amd64 - centos_7_image: CentOS-7 - lab_name: windriver apt_proxy: 10.12.5.2:3142 docker_proxy: 10.12.5.2:5000 - rancher_vm_flavor: m1.large - k8s_vm_flavor: m1.xxlarge + rancher_vm_flavor: m1.xlarge + k8s_vm_flavor: m1.xlarge public_net_id: 971040b2-7059-49dc-b220-4fab50cb2ad4 - public_net_name: external oam_network_cidr: 10.0.0.0/16 - dns_forwarder: 10.12.25.5 - external_dns: 8.8.8.8 - dnsaas_proxy_enable: "true" - dnsaas_proxied_keystone_url_path: "api/multicloud-titanium_cloud/v0/pod25_RegionOne/identity/v2.0" - dnsaas_keystone_url: http://10.12.25.5:5000 - dnsaas_region: RegionOne - dnsaas_tenant_id: 024b911be9514ed7885af0c6bf6f68c8 - dnsaas_tenant_name: Integration-SB-04 - dnsaas_username: demo - dnsaas_password: onapdemo + integration_override_yaml: > + global: + repository: 10.12.5.2:5000 + pullPolicy: IfNotPresent + robot: + openStackKeyStoneUrl: "http://10.12.25.2:5000" + openStackPublicNetId: "971040b2-7059-49dc-b220-4fab50cb2ad4" + openStackPassword: "${OS_PASSWORD}" + openStackTenantId: "${OS_PROJECT_ID}" + openStackUserName: "${OS_USERNAME}" + ubuntu14Image: "ubuntu-14-04-cloud-amd64" + ubuntu16Image: "ubuntu-16-04-cloud-amd64" + openStackPrivateNetId: "__oam_network_id__" + openStackPrivateSubnetId: "__oam_subnet_id__" + openStackPrivateNetCidr: "10.0.0.0/16" + openStackOamNetworkCidrPrefix: "10.0" + so: + config: + openStackUserName: "${OS_USERNAME}" + openStackKeyStoneUrl: "http://10.12.25.2:5000" + openStackEncryptedPasswordHere: "${OS_PASSWORD_ENCRYPTED}" diff --git a/deployment/heat/onap-oom/env/windriver/Integration-SB-05-DNS-openrc b/deployment/heat/onap-oom/env/windriver/Integration-SB-05-DNS-openrc deleted file mode 120000 index 2210fcc34..000000000 --- a/deployment/heat/onap-oom/env/windriver/Integration-SB-05-DNS-openrc +++ /dev/null @@ -1 +0,0 @@ -../../../../../test/ete/labs/windriver/Integration-SB-05-DNS-openrc
\ No newline at end of file diff --git a/deployment/heat/onap-oom/env/windriver/Integration-SB-05.env b/deployment/heat/onap-oom/env/windriver/Integration-SB-05.env index af6c5fe23..fa16c2504 100644 --- a/deployment/heat/onap-oom/env/windriver/Integration-SB-05.env +++ b/deployment/heat/onap-oom/env/windriver/Integration-SB-05.env @@ -1,34 +1,35 @@ parameters: - keystone_url: http://10.12.25.2:5000 - openstack_tenant_id: b8ad3842ab3642f7bf3fbe4e4d3b9f86 - openstack_tenant_name: Integration-SB-05 - openstack_username: demo - openstack_api_key: onapdemo - - ubuntu_1404_image: ubuntu-14-04-cloud-amd64 ubuntu_1604_image: ubuntu-16-04-cloud-amd64 - centos_7_image: CentOS-7 - lab_name: windriver apt_proxy: 10.12.5.2:3142 docker_proxy: 10.12.5.2:5000 - rancher_vm_flavor: m1.large - k8s_vm_flavor: m1.xxlarge + rancher_vm_flavor: m1.xlarge + k8s_vm_flavor: m1.xlarge public_net_id: 971040b2-7059-49dc-b220-4fab50cb2ad4 - public_net_name: external oam_network_cidr: 10.0.0.0/16 - dns_forwarder: 10.12.25.5 - external_dns: 8.8.8.8 - dnsaas_proxy_enable: "true" - dnsaas_proxied_keystone_url_path: "api/multicloud-titanium_cloud/v0/pod25_RegionOne/identity/v2.0" - dnsaas_keystone_url: http://10.12.25.5:5000 - dnsaas_region: RegionOne - dnsaas_tenant_id: d4e1d9e89456490cb7213092086e5c66 - dnsaas_tenant_name: Integration-SB-05 - dnsaas_username: demo - dnsaas_password: onapdemo + integration_override_yaml: > + global: + repository: 10.12.5.2:5000 + pullPolicy: IfNotPresent + robot: + openStackKeyStoneUrl: "http://10.12.25.2:5000" + openStackPublicNetId: "971040b2-7059-49dc-b220-4fab50cb2ad4" + openStackPassword: "${OS_PASSWORD}" + openStackTenantId: "${OS_PROJECT_ID}" + openStackUserName: "${OS_USERNAME}" + ubuntu14Image: "ubuntu-14-04-cloud-amd64" + ubuntu16Image: "ubuntu-16-04-cloud-amd64" + openStackPrivateNetId: "__oam_network_id__" + openStackPrivateSubnetId: "__oam_subnet_id__" + openStackPrivateNetCidr: "10.0.0.0/16" + openStackOamNetworkCidrPrefix: "10.0" + so: + config: + openStackUserName: "${OS_USERNAME}" + openStackKeyStoneUrl: "http://10.12.25.2:5000" + openStackEncryptedPasswordHere: "${OS_PASSWORD_ENCRYPTED}" diff --git a/deployment/heat/onap-oom/env/windriver/Integration-SB-06-DNS-openrc b/deployment/heat/onap-oom/env/windriver/Integration-SB-06-DNS-openrc deleted file mode 120000 index 850c25544..000000000 --- a/deployment/heat/onap-oom/env/windriver/Integration-SB-06-DNS-openrc +++ /dev/null @@ -1 +0,0 @@ -../../../../../test/ete/labs/windriver/Integration-SB-06-DNS-openrc
\ No newline at end of file diff --git a/deployment/heat/onap-oom/env/windriver/Integration-SB-06.env b/deployment/heat/onap-oom/env/windriver/Integration-SB-06.env index 72ddd4172..fa16c2504 100644 --- a/deployment/heat/onap-oom/env/windriver/Integration-SB-06.env +++ b/deployment/heat/onap-oom/env/windriver/Integration-SB-06.env @@ -1,34 +1,35 @@ parameters: - keystone_url: http://10.12.25.2:5000 - openstack_tenant_id: 7fad299815104c0a8f90a8df80343f03 - openstack_tenant_name: Integration-SB-06 - openstack_username: demo - openstack_api_key: onapdemo - - ubuntu_1404_image: ubuntu-14-04-cloud-amd64 ubuntu_1604_image: ubuntu-16-04-cloud-amd64 - centos_7_image: CentOS-7 - lab_name: windriver apt_proxy: 10.12.5.2:3142 docker_proxy: 10.12.5.2:5000 - rancher_vm_flavor: m1.large - k8s_vm_flavor: m1.xxlarge + rancher_vm_flavor: m1.xlarge + k8s_vm_flavor: m1.xlarge public_net_id: 971040b2-7059-49dc-b220-4fab50cb2ad4 - public_net_name: external oam_network_cidr: 10.0.0.0/16 - dns_forwarder: 10.12.25.5 - external_dns: 8.8.8.8 - dnsaas_proxy_enable: "true" - dnsaas_proxied_keystone_url_path: "api/multicloud-titanium_cloud/v0/pod25_RegionOne/identity/v2.0" - dnsaas_keystone_url: http://10.12.25.5:5000 - dnsaas_region: RegionOne - dnsaas_tenant_id: 2d7c6ec2cf9147fa974fa059b3673d7a - dnsaas_tenant_name: Integration-SB-06 - dnsaas_username: demo - dnsaas_password: onapdemo + integration_override_yaml: > + global: + repository: 10.12.5.2:5000 + pullPolicy: IfNotPresent + robot: + openStackKeyStoneUrl: "http://10.12.25.2:5000" + openStackPublicNetId: "971040b2-7059-49dc-b220-4fab50cb2ad4" + openStackPassword: "${OS_PASSWORD}" + openStackTenantId: "${OS_PROJECT_ID}" + openStackUserName: "${OS_USERNAME}" + ubuntu14Image: "ubuntu-14-04-cloud-amd64" + ubuntu16Image: "ubuntu-16-04-cloud-amd64" + openStackPrivateNetId: "__oam_network_id__" + openStackPrivateSubnetId: "__oam_subnet_id__" + openStackPrivateNetCidr: "10.0.0.0/16" + openStackOamNetworkCidrPrefix: "10.0" + so: + config: + openStackUserName: "${OS_USERNAME}" + openStackKeyStoneUrl: "http://10.12.25.2:5000" + openStackEncryptedPasswordHere: "${OS_PASSWORD_ENCRYPTED}" diff --git a/deployment/heat/onap-oom/env/windriver/Integration-SB-07-DNS-openrc b/deployment/heat/onap-oom/env/windriver/Integration-SB-07-DNS-openrc deleted file mode 120000 index 7e4a3af20..000000000 --- a/deployment/heat/onap-oom/env/windriver/Integration-SB-07-DNS-openrc +++ /dev/null @@ -1 +0,0 @@ -../../../../../test/ete/labs/windriver/Integration-SB-07-DNS-openrc
\ No newline at end of file diff --git a/deployment/heat/onap-oom/env/windriver/Integration-SB-07.env b/deployment/heat/onap-oom/env/windriver/Integration-SB-07.env index 6c5f23aa5..fa16c2504 100644 --- a/deployment/heat/onap-oom/env/windriver/Integration-SB-07.env +++ b/deployment/heat/onap-oom/env/windriver/Integration-SB-07.env @@ -1,34 +1,35 @@ parameters: - keystone_url: http://10.12.25.2:5000 - openstack_tenant_id: 1e097c6713e74fd7ac8e4295e605ee1e - openstack_tenant_name: Integration-SB-07 - openstack_username: demo - openstack_api_key: onapdemo - - ubuntu_1404_image: ubuntu-14-04-cloud-amd64 ubuntu_1604_image: ubuntu-16-04-cloud-amd64 - centos_7_image: CentOS-7 - lab_name: windriver apt_proxy: 10.12.5.2:3142 docker_proxy: 10.12.5.2:5000 - rancher_vm_flavor: m1.large - k8s_vm_flavor: m1.xxlarge + rancher_vm_flavor: m1.xlarge + k8s_vm_flavor: m1.xlarge public_net_id: 971040b2-7059-49dc-b220-4fab50cb2ad4 - public_net_name: external oam_network_cidr: 10.0.0.0/16 - dns_forwarder: 10.12.25.5 - external_dns: 8.8.8.8 - dnsaas_proxy_enable: "true" - dnsaas_proxied_keystone_url_path: "api/multicloud-titanium_cloud/v0/pod25_RegionOne/identity/v2.0" - dnsaas_keystone_url: http://10.12.25.5:5000 - dnsaas_region: RegionOne - dnsaas_tenant_id: 885777d5e9074f31ad7801f9e6876b84 - dnsaas_tenant_name: Integration-SB-07 - dnsaas_username: demo - dnsaas_password: onapdemo + integration_override_yaml: > + global: + repository: 10.12.5.2:5000 + pullPolicy: IfNotPresent + robot: + openStackKeyStoneUrl: "http://10.12.25.2:5000" + openStackPublicNetId: "971040b2-7059-49dc-b220-4fab50cb2ad4" + openStackPassword: "${OS_PASSWORD}" + openStackTenantId: "${OS_PROJECT_ID}" + openStackUserName: "${OS_USERNAME}" + ubuntu14Image: "ubuntu-14-04-cloud-amd64" + ubuntu16Image: "ubuntu-16-04-cloud-amd64" + openStackPrivateNetId: "__oam_network_id__" + openStackPrivateSubnetId: "__oam_subnet_id__" + openStackPrivateNetCidr: "10.0.0.0/16" + openStackOamNetworkCidrPrefix: "10.0" + so: + config: + openStackUserName: "${OS_USERNAME}" + openStackKeyStoneUrl: "http://10.12.25.2:5000" + openStackEncryptedPasswordHere: "${OS_PASSWORD_ENCRYPTED}" diff --git a/deployment/heat/onap-oom/env/windriver/integration-override.yaml b/deployment/heat/onap-oom/env/windriver/integration-override.yaml deleted file mode 100644 index 31c28fe41..000000000 --- a/deployment/heat/onap-oom/env/windriver/integration-override.yaml +++ /dev/null @@ -1,136 +0,0 @@ -# Copyright © 2017 Amdocs, Bell Canada -# -# 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. - -# This override file is useful to test one or more subcharts. -# It overrides the default ONAP parent chart behaviour to deploy -# all of ONAP. -# -# Example use to enable a single subchart (from this directory): -# -# helm install local/onap -n onap --namespace onap -f disable-allcharts.yaml --set so.enabled=true - - -################################################################# -# Global configuration overrides. -# -# These overrides will affect all helm charts (ie. applications) -# that are listed below and are 'enabled'. -################################################################# -global: - # Change to an unused port prefix range to prevent port conflicts - # with other instances running within the same k8s cluster - nodePortPrefix: 302 - - # windriver local nexus proxy - nexus3 default - repository: 10.12.5.2:5000 - # image pull policy - #pullPolicy: Always - pullPolicy: IfNotPresent - - - # default mount path root directory referenced - # by persistent volumes and log files -# persistence: -# mountPath: /onapdata - -################################################################# -# Enable/disable and configure helm charts (ie. applications) -# to customize the ONAP deployment. -################################################################# -aaf: - enabled: true -aai: - enabled: true - # aai subchart image overrides - aai-champ: - image: onap/champ:1.2-STAGING-latest - aai-data-router: - image: onap/data-router:1.2-STAGING-latest - aai-modelloader: - image: onap/model-loader:1.2-STAGING-latest - aai-resources: - image: onap/aai-resources:1.2-STAGING-latest - aai-search-data: - image: onap/search-data-service:1.2-STAGING-latest - aai-sparky-be: - image: onap/sparky-be:1.2-STAGING-latest - aai-traveral: - image: onap/aai-traversal:1.2-STAGING-latest -appc: - enabled: false -clamp: - enabled: true -cli: - enabled: true -consul: - enabled: true -dcaegen2: - enabled: false -esr: - enabled: true - # esr parent chart (server) image override - image: onap/aai/esr-server:1.1.0-SNAPSHOT - # esr subchart omage override - esr-gui: - image: onap/aai/esr-gui:1.1.0-SNAPSHOT -log: - enabled: true -message-router: - enabled: true -# kafka: -# repositoryOverride: docker.io -# image: wurstmeister/kafka:latest -mock: - enabled: true -msb: - enabled: true -multicloud: - enabled: true -policy: - enabled: true -portal: - enabled: true -robot: - enabled: true - #pullPolicy: Always -# config: - # openstack configuration -# openStackUserName: "demo" -# openStackRegion: "RegionOne" -# openStackKeyStoneUrl: "http://10.12.25.2:5000" -# openStackServiceTenantName: "service" -# openStackEncryptedPasswordHere: "c124921a3a0efbe579782cde8227681e" -sdc: - enabled: true -sdnc: - enabled: true -so: - enabled: true - # so server configuration - config: - # openstack configuration - openStackUserName: "demo" - openStackRegion: "RegionOne" - openStackKeyStoneUrl: "http://10.12.25.2:5000" - openStackServiceTenantName: "service" - openStackEncryptedPasswordHere: "bbaef6cd76625ab9eb60deedeae7dbb9" - -uui: - enabled: true -vfc: - enabled: true -vid: - enabled: true -vnfsdk: - enabled: true diff --git a/deployment/heat/onap-oom/k8s_vm_entrypoint.sh b/deployment/heat/onap-oom/k8s_vm_entrypoint.sh index f4c6eb6a5..1ec659c0e 100644 --- a/deployment/heat/onap-oom/k8s_vm_entrypoint.sh +++ b/deployment/heat/onap-oom/k8s_vm_entrypoint.sh @@ -3,7 +3,9 @@ printenv mkdir -p /opt/config echo "__rancher_ip_addr__" > /opt/config/rancher_ip_addr.txt -echo `hostname -I` `hostname` >> /etc/hosts +HOST_IP=$(hostname -I) +echo $HOST_IP `hostname` >> /etc/hosts + mkdir -p /etc/docker if [ ! -z "__docker_proxy__" ]; then cat > /etc/docker/daemon.json <<EOF @@ -19,7 +21,11 @@ Acquire::https::Proxy "DIRECT"; EOF fi apt-get -y update -apt-get -y install linux-image-extra-$(uname -r) jq make + +mkdir -p /dockerdata-nfs +echo "__rancher_ip_addr__:/dockerdata-nfs /dockerdata-nfs nfs auto,nofail,noatime,nolock,intr,tcp,actimeo=1800 0 0" | tee -a /etc/fstab + +apt-get -y install linux-image-extra-$(uname -r) jq nfs-common cd ~ @@ -27,149 +33,16 @@ cd ~ curl -s https://releases.rancher.com/install-docker/17.03.sh | sh usermod -aG docker ubuntu -# install kubernetes 1.8.6 -curl -s -LO https://storage.googleapis.com/kubernetes-release/release/v1.8.6/bin/linux/amd64/kubectl -chmod +x ./kubectl -sudo mv ./kubectl /usr/local/bin/kubectl -mkdir ~/.kube - -# install helm -wget -q http://storage.googleapis.com/kubernetes-helm/helm-v2.7.2-linux-amd64.tar.gz -tar -zxvf helm-v2.7.2-linux-amd64.tar.gz -sudo mv linux-amd64/helm /usr/local/bin/helm - # Fix virtual memory allocation for onap-log:elasticsearch: echo "vm.max_map_count=262144" >> /etc/sysctl.conf sysctl -p -# install rancher agent -echo export RANCHER_IP=__rancher_ip_addr__ > api-keys-rc -source api-keys-rc - -sleep 50 -until curl -s -o projects.json -H "Accept: application/json" http://$RANCHER_IP:8080/v2-beta/projects; do - sleep 10 -done -OLD_PID=$(jq -r '.data[0].id' projects.json) - -curl -s -H "Accept: application/json" -H "Content-Type: application/json" -d '{"accountId":"1a1"}' http://$RANCHER_IP:8080/v2-beta/apikeys > apikeys.json -echo export RANCHER_ACCESS_KEY=`jq -r '.publicValue' apikeys.json` >> api-keys-rc -echo export RANCHER_SECRET_KEY=`jq -r '.secretValue' apikeys.json` >> api-keys-rc -source api-keys-rc - -curl -s -u "${RANCHER_ACCESS_KEY}:${RANCHER_SECRET_KEY}" -X DELETE -H 'Content-Type: application/json' "http://$RANCHER_IP:8080/v2-beta/projects/$OLD_PID" - -until [ ! -z "$TEMPLATE_ID" ] && [ "$TEMPLATE_ID" != "null" ]; do - sleep 5 - curl -s -H "Accept: application/json" http://$RANCHER_IP:8080/v2-beta/projectTemplates?name=Kubernetes > projectTemplatesKubernetes.json - TEMPLATE_ID=$(jq -r '.data[0].id' projectTemplatesKubernetes.json) -done - -curl -s -u "${RANCHER_ACCESS_KEY}:${RANCHER_SECRET_KEY}" -X POST -H 'Content-Type: application/json' -d '{ "name":"oom", "projectTemplateId":"'$TEMPLATE_ID'" }' "http://$RANCHER_IP:8080/v2-beta/projects" > project.json -PID=`jq -r '.id' project.json` -echo export RANCHER_URL=http://$RANCHER_IP:8080/v1/projects/$PID >> api-keys-rc -source api-keys-rc - -until [ $(jq -r '.state' project.json) == "active" ]; do - sleep 5 - curl -s -H "Accept: application/json" http://$RANCHER_IP:8080/v1/projects/$PID > project.json -done +sleep 100 -TID=$(curl -s -X POST -H "Accept: application/json" -H "Content-Type: application/json" http://$RANCHER_IP:8080/v1/projects/$PID/registrationTokens | jq -r '.id') -touch token.json -while [ $(jq -r .command token.json | wc -c) -lt 10 ]; do +while [ ! -e /dockerdata-nfs/rancher_agent_cmd.sh ]; do + mount /dockerdata-nfs sleep 5 - curl -s -X GET -H "Accept: application/json" http://$RANCHER_IP:8080/v1/projects/$PID/registrationToken/$TID > token.json done -RANCHER_AGENT_CMD=$(jq -r .command token.json) -eval $RANCHER_AGENT_CMD - - -KUBETOKEN=$(echo -n 'Basic '$(echo -n "$RANCHER_ACCESS_KEY:$RANCHER_SECRET_KEY" | base64 -w 0) | base64 -w 0) - -# create .kube/config -cat > ~/.kube/config <<EOF -apiVersion: v1 -kind: Config -clusters: -- cluster: - api-version: v1 - insecure-skip-tls-verify: true - server: "https://$RANCHER_IP:8080/r/projects/$PID/kubernetes:6443" - name: "oom" -contexts: -- context: - cluster: "oom" - user: "oom" - name: "oom" -current-context: "oom" -users: -- name: "oom" - user: - token: "$KUBETOKEN" -EOF - -export KUBECONFIG=/root/.kube/config -kubectl config view - -# wait for kubernetes to initialze -sleep 100 -until [ $(kubectl get pods --namespace kube-system | tail -n +2 | grep -c Running) -ge 6 ]; do - sleep 10 -done - - -# Install using OOM -export HOME=/root - -# Clone OOM: -cd ~ -git clone -b master http://gerrit.onap.org/r/oom -cd oom -git log -1 - -# Update values.yaml to point to docker-proxy instead of nexus3: -cd ~/oom/kubernetes -#perl -p -i -e 's/nexus3.onap.org:10001/__docker_proxy__/g' `find ./ -name values.yaml` -sed -i 's/nexus3.onap.org:10001/__docker_proxy__/g' onap/values.yaml -sed -i 's/#repository:/repository:/g' onap/values.yaml -sed -i 's/#repositorySecret:/repositorySecret:/g' onap/values.yaml -git diff - - -# Clone integration: -cd ~ -git clone -b master http://gerrit.onap.org/r/integration -cd integration -git log -1 - -cd ~ -ln -s ~/integration/deployment/heat/onap-oom/env/__lab_name__/integration-override.yaml - - -# version control the persistence volume to see what's happening -mkdir -p /dockerdata-nfs/ -cd /dockerdata-nfs/ -git init -git config user.email "root@k8s" -git config user.name "root" -git add -A -git commit -m "initial commit" - -# Run ONAP: -cd ~/oom/kubernetes/ -# verify version -helm version -helm init --client-only -helm init --upgrade -helm serve & -sleep 3 -helm repo add local http://127.0.0.1:8879 -helm repo list -make all -helm search -l | grep local -helm install local/onap -n dev --namespace onap -f ~/integration/deployment/heat/onap-oom/env/__lab_name__/integration-override.yaml - -# Check ONAP status: -sleep 3 -kubectl get pods --all-namespaces +cp /dockerdata-nfs/rancher_agent_cmd.sh . +sed -i "s/docker run/docker run -e CATTLE_AGENT_IP=${HOST_IP}/g" rancher_agent_cmd.sh +source rancher_agent_cmd.sh diff --git a/deployment/heat/onap-oom/onap-oom.yaml b/deployment/heat/onap-oom/onap-oom.yaml index a6a5cf0c4..c290e17cd 100644 --- a/deployment/heat/onap-oom/onap-oom.yaml +++ b/deployment/heat/onap-oom/onap-oom.yaml @@ -1,10 +1,10 @@ +# +# Generated by scripts/gen-onap-oom-yaml.sh; MANUAL CHANGES WILL BE LOST +# heat_template_version: 2015-10-15 description: ONAP on Kubernetes using OOM parameters: - lab_name: - type: string - docker_proxy: type: string @@ -15,93 +15,25 @@ parameters: type: string description: The ID of the Public network for floating IP address allocation - public_net_name: - type: string - description: The name of the Public network referred by public_net_id - oam_network_cidr: type: string description: CIDR of the OAM ONAP network - keystone_url: - type: string - description: URL of OpenStack Keystone - - openstack_tenant_id: - type: string - description: OpenStack tenant ID - - openstack_tenant_name: - type: string - description: OpenStack tenant name (matching with the openstack_tenant_id) - - openstack_username: - type: string - description: OpenStack username - - openstack_api_key: - type: string - description: OpenStack password or API Key - - ubuntu_1404_image: - type: string - description: Name of the Ubuntu 14.04 image - ubuntu_1604_image: type: string description: Name of the Ubuntu 16.04 image - centos_7_image: - type: string - description: the id/name of the CentOS 7 VM imange - rancher_vm_flavor: type: string - description: Name of the Ubuntu 14.04 image + description: VM flavor for Rancher k8s_vm_flavor: type: string - description: Name of the Ubuntu 14.04 image + description: VM flavor for k8s hosts - dns_forwarder: + integration_override_yaml: type: string - description: the forwarder address for setting up ONAP's private DNS server - - external_dns: - type: string - description: Public IP of the external DNS for ONAP network - - dnsaas_proxy_enable: - type: string - description: whether to enable DNSaaS proxy via multicloud - - dnsaas_region: - type: string - description: the region of the cloud instance providing the Designate DNS as a Service - - dnsaas_proxied_keystone_url_path: - type: string - description: the proxy keystone URL path for DCAE to use (via MultiCloud) - - dnsaas_keystone_url: - type: string - description: the keystone URL of the cloud instance providing the Designate DNS as a Service - - dnsaas_username: - type: string - description: the username of the cloud instance providing the Designate DNS as a Service - - dnsaas_password: - type: string - description: the password of the cloud instance providing the Designate DNS as a Service - - dnsaas_tenant_id: - type: string - description: the ID of the tenant in the cloud instance providing the Designate DNS as a Service - - dnsaas_tenant_name: - type: string - description: the name of the tenant in the cloud instance providing the Designate DNS as a Service + description: Content for integration_override.yaml resources: random-str: @@ -157,7 +89,7 @@ resources: rand: { get_resource: random-str } network_id: { get_resource: oam_network } cidr: { get_param: oam_network_cidr } - dns_nameservers: [ get_param: dns_forwarder ] + dns_nameservers: [ "8.8.8.8" ] router: type: OS::Neutron::Router @@ -197,13 +129,58 @@ resources: user_data_format: RAW user_data: str_replace: + template: + get_file: rancher_vm_entrypoint.sh + params: + __docker_proxy__: { get_param: docker_proxy } + __apt_proxy__: { get_param: apt_proxy } + __rancher_ip_addr__: { get_attr: [rancher_floating_ip, floating_ip_address] } + __integration_override_yaml__: { get_param: integration_override_yaml } + __oam_network_id__: { get_resource: oam_network } + __oam_subnet_id__: { get_resource: oam_subnet } + __k8s_vm_ips__: [ + get_attr: [k8s_1_floating_ip, floating_ip_address], + get_attr: [k8s_2_floating_ip, floating_ip_address], + get_attr: [k8s_3_floating_ip, floating_ip_address], + get_attr: [k8s_4_floating_ip, floating_ip_address], + get_attr: [k8s_5_floating_ip, floating_ip_address], + get_attr: [k8s_6_floating_ip, floating_ip_address], + get_attr: [k8s_7_floating_ip, floating_ip_address], + ] + k8s_1_private_port: + type: OS::Neutron::Port + properties: + network: { get_resource: oam_network } + fixed_ips: [{"subnet": { get_resource: oam_subnet }}] + security_groups: + - { get_resource: onap_sg } + + k8s_1_floating_ip: + type: OS::Neutron::FloatingIP + properties: + floating_network_id: { get_param: public_net_id } + port_id: { get_resource: k8s_1_private_port } + + k8s_1_vm: + type: OS::Nova::Server + properties: + name: k8s_1 + image: { get_param: ubuntu_1604_image } + flavor: { get_param: k8s_vm_flavor } + key_name: onap_key + networks: + - port: { get_resource: k8s_1_private_port } + user_data_format: RAW + user_data: + str_replace: params: __docker_proxy__: { get_param: docker_proxy } __apt_proxy__: { get_param: apt_proxy } + __rancher_ip_addr__: { get_attr: [rancher_floating_ip, floating_ip_address] } template: - get_file: rancher_vm_entrypoint.sh + get_file: k8s_vm_entrypoint.sh - k8s_private_port: + k8s_2_private_port: type: OS::Neutron::Port properties: network: { get_resource: oam_network } @@ -211,53 +188,193 @@ resources: security_groups: - { get_resource: onap_sg } - k8s_floating_ip: + k8s_2_floating_ip: type: OS::Neutron::FloatingIP properties: floating_network_id: { get_param: public_net_id } - port_id: { get_resource: k8s_private_port } + port_id: { get_resource: k8s_2_private_port } - k8s_vm: + k8s_2_vm: type: OS::Nova::Server properties: - name: k8s + name: k8s_2 image: { get_param: ubuntu_1604_image } flavor: { get_param: k8s_vm_flavor } key_name: onap_key networks: - - port: { get_resource: k8s_private_port } + - port: { get_resource: k8s_2_private_port } + user_data_format: RAW + user_data: + str_replace: + params: + __docker_proxy__: { get_param: docker_proxy } + __apt_proxy__: { get_param: apt_proxy } + __rancher_ip_addr__: { get_attr: [rancher_floating_ip, floating_ip_address] } + template: + get_file: k8s_vm_entrypoint.sh + + k8s_3_private_port: + type: OS::Neutron::Port + properties: + network: { get_resource: oam_network } + fixed_ips: [{"subnet": { get_resource: oam_subnet }}] + security_groups: + - { get_resource: onap_sg } + + k8s_3_floating_ip: + type: OS::Neutron::FloatingIP + properties: + floating_network_id: { get_param: public_net_id } + port_id: { get_resource: k8s_3_private_port } + + k8s_3_vm: + type: OS::Nova::Server + properties: + name: k8s_3 + image: { get_param: ubuntu_1604_image } + flavor: { get_param: k8s_vm_flavor } + key_name: onap_key + networks: + - port: { get_resource: k8s_3_private_port } + user_data_format: RAW + user_data: + str_replace: + params: + __docker_proxy__: { get_param: docker_proxy } + __apt_proxy__: { get_param: apt_proxy } + __rancher_ip_addr__: { get_attr: [rancher_floating_ip, floating_ip_address] } + template: + get_file: k8s_vm_entrypoint.sh + + k8s_4_private_port: + type: OS::Neutron::Port + properties: + network: { get_resource: oam_network } + fixed_ips: [{"subnet": { get_resource: oam_subnet }}] + security_groups: + - { get_resource: onap_sg } + + k8s_4_floating_ip: + type: OS::Neutron::FloatingIP + properties: + floating_network_id: { get_param: public_net_id } + port_id: { get_resource: k8s_4_private_port } + + k8s_4_vm: + type: OS::Nova::Server + properties: + name: k8s_4 + image: { get_param: ubuntu_1604_image } + flavor: { get_param: k8s_vm_flavor } + key_name: onap_key + networks: + - port: { get_resource: k8s_4_private_port } + user_data_format: RAW + user_data: + str_replace: + params: + __docker_proxy__: { get_param: docker_proxy } + __apt_proxy__: { get_param: apt_proxy } + __rancher_ip_addr__: { get_attr: [rancher_floating_ip, floating_ip_address] } + template: + get_file: k8s_vm_entrypoint.sh + + k8s_5_private_port: + type: OS::Neutron::Port + properties: + network: { get_resource: oam_network } + fixed_ips: [{"subnet": { get_resource: oam_subnet }}] + security_groups: + - { get_resource: onap_sg } + + k8s_5_floating_ip: + type: OS::Neutron::FloatingIP + properties: + floating_network_id: { get_param: public_net_id } + port_id: { get_resource: k8s_5_private_port } + + k8s_5_vm: + type: OS::Nova::Server + properties: + name: k8s_5 + image: { get_param: ubuntu_1604_image } + flavor: { get_param: k8s_vm_flavor } + key_name: onap_key + networks: + - port: { get_resource: k8s_5_private_port } + user_data_format: RAW + user_data: + str_replace: + params: + __docker_proxy__: { get_param: docker_proxy } + __apt_proxy__: { get_param: apt_proxy } + __rancher_ip_addr__: { get_attr: [rancher_floating_ip, floating_ip_address] } + template: + get_file: k8s_vm_entrypoint.sh + + k8s_6_private_port: + type: OS::Neutron::Port + properties: + network: { get_resource: oam_network } + fixed_ips: [{"subnet": { get_resource: oam_subnet }}] + security_groups: + - { get_resource: onap_sg } + + k8s_6_floating_ip: + type: OS::Neutron::FloatingIP + properties: + floating_network_id: { get_param: public_net_id } + port_id: { get_resource: k8s_6_private_port } + + k8s_6_vm: + type: OS::Nova::Server + properties: + name: k8s_6 + image: { get_param: ubuntu_1604_image } + flavor: { get_param: k8s_vm_flavor } + key_name: onap_key + networks: + - port: { get_resource: k8s_6_private_port } + user_data_format: RAW + user_data: + str_replace: + params: + __docker_proxy__: { get_param: docker_proxy } + __apt_proxy__: { get_param: apt_proxy } + __rancher_ip_addr__: { get_attr: [rancher_floating_ip, floating_ip_address] } + template: + get_file: k8s_vm_entrypoint.sh + + k8s_7_private_port: + type: OS::Neutron::Port + properties: + network: { get_resource: oam_network } + fixed_ips: [{"subnet": { get_resource: oam_subnet }}] + security_groups: + - { get_resource: onap_sg } + + k8s_7_floating_ip: + type: OS::Neutron::FloatingIP + properties: + floating_network_id: { get_param: public_net_id } + port_id: { get_resource: k8s_7_private_port } + + k8s_7_vm: + type: OS::Nova::Server + properties: + name: k8s_7 + image: { get_param: ubuntu_1604_image } + flavor: { get_param: k8s_vm_flavor } + key_name: onap_key + networks: + - port: { get_resource: k8s_7_private_port } user_data_format: RAW user_data: str_replace: params: - __lab_name__: { get_param: lab_name } __docker_proxy__: { get_param: docker_proxy } __apt_proxy__: { get_param: apt_proxy } __rancher_ip_addr__: { get_attr: [rancher_floating_ip, floating_ip_address] } - __k8s_ip_addr__: { get_attr: [k8s_floating_ip, floating_ip_address] } - __openstack_tenant_id__: { get_param: openstack_tenant_id } - __openstack_tenant_name__: { get_param: openstack_tenant_name } - __openstack_username__: { get_param: openstack_username } - __openstack_api_key__: { get_param : openstack_api_key } - __public_net_id__: { get_param: public_net_id } - __public_net_name__: { get_param: public_net_name } - __oam_network_id__: { get_resource: oam_network } - __oam_subnet_id__: { get_resource: oam_subnet } - __oam_network_cidr__: { get_param: oam_network_cidr } - __ubuntu_1404_image__: { get_param: ubuntu_1404_image } - __ubuntu_1604_image__: { get_param: ubuntu_1604_image } - __centos_7_image__: { get_param: centos_7_image } - __keystone_url__: { get_param: keystone_url } - __dns_forwarder__: { get_param: dns_forwarder } - __external_dns__: { get_param: external_dns } - __dnsaas_proxy_enable__: { get_param: dnsaas_proxy_enable } - __dnsaas_proxied_keystone_url_path__: { get_param: dnsaas_proxied_keystone_url_path } - __dnsaas_keystone_url__: { get_param: dnsaas_keystone_url } - __dnsaas_region__: { get_param: dnsaas_region } - __dnsaas_tenant_id__: { get_param: dnsaas_tenant_id } - __dnsaas_tenant_name__: { get_param: dnsaas_tenant_name } - __dnsaas_username__: { get_param: dnsaas_username } - __dnsaas_password__: { get_param: dnsaas_password } template: get_file: k8s_vm_entrypoint.sh @@ -266,6 +383,31 @@ outputs: description: The IP address of the rancher instance value: { get_attr: [rancher_floating_ip, floating_ip_address] } - k8s_vm_ip: - description: The IP address of the k8s instance - value: { get_attr: [k8s_floating_ip, floating_ip_address] } + k8s_1_vm_ip: + description: The IP address of the k8s_1 instance + value: { get_attr: [k8s_1_floating_ip, floating_ip_address] } + + k8s_2_vm_ip: + description: The IP address of the k8s_2 instance + value: { get_attr: [k8s_2_floating_ip, floating_ip_address] } + + k8s_3_vm_ip: + description: The IP address of the k8s_3 instance + value: { get_attr: [k8s_3_floating_ip, floating_ip_address] } + + k8s_4_vm_ip: + description: The IP address of the k8s_4 instance + value: { get_attr: [k8s_4_floating_ip, floating_ip_address] } + + k8s_5_vm_ip: + description: The IP address of the k8s_5 instance + value: { get_attr: [k8s_5_floating_ip, floating_ip_address] } + + k8s_6_vm_ip: + description: The IP address of the k8s_6 instance + value: { get_attr: [k8s_6_floating_ip, floating_ip_address] } + + k8s_7_vm_ip: + description: The IP address of the k8s_7 instance + value: { get_attr: [k8s_7_floating_ip, floating_ip_address] } + diff --git a/deployment/heat/onap-oom/parts/onap-oom-1.yaml b/deployment/heat/onap-oom/parts/onap-oom-1.yaml new file mode 100644 index 000000000..e29f6cd81 --- /dev/null +++ b/deployment/heat/onap-oom/parts/onap-oom-1.yaml @@ -0,0 +1,116 @@ +heat_template_version: 2015-10-15 +description: ONAP on Kubernetes using OOM + +parameters: + docker_proxy: + type: string + + apt_proxy: + type: string + + public_net_id: + type: string + description: The ID of the Public network for floating IP address allocation + + oam_network_cidr: + type: string + description: CIDR of the OAM ONAP network + + ubuntu_1604_image: + type: string + description: Name of the Ubuntu 16.04 image + + rancher_vm_flavor: + type: string + description: VM flavor for Rancher + + k8s_vm_flavor: + type: string + description: VM flavor for k8s hosts + + integration_override_yaml: + type: string + description: Content for integration_override.yaml + +resources: + random-str: + type: OS::Heat::RandomString + properties: + length: 4 + + # ONAP security group + onap_sg: + type: OS::Neutron::SecurityGroup + properties: + name: + str_replace: + template: base_rand + params: + base: onap_sg + rand: { get_resource: random-str } + description: security group used by ONAP + rules: + # All egress traffic + - direction: egress + ethertype: IPv4 + - direction: egress + ethertype: IPv6 + # ingress traffic + # ICMP + - protocol: icmp + - protocol: udp + port_range_min: 1 + port_range_max: 65535 + - protocol: tcp + port_range_min: 1 + port_range_max: 65535 + + + # ONAP management private network + oam_network: + type: OS::Neutron::Net + properties: + name: + str_replace: + template: oam_network_rand + params: + rand: { get_resource: random-str } + + oam_subnet: + type: OS::Neutron::Subnet + properties: + name: + str_replace: + template: oam_network_rand + params: + rand: { get_resource: random-str } + network_id: { get_resource: oam_network } + cidr: { get_param: oam_network_cidr } + dns_nameservers: [ "8.8.8.8" ] + + router: + type: OS::Neutron::Router + properties: + external_gateway_info: + network: { get_param: public_net_id } + + router_interface: + type: OS::Neutron::RouterInterface + properties: + router_id: { get_resource: router } + subnet_id: { get_resource: oam_subnet } + + rancher_private_port: + type: OS::Neutron::Port + properties: + network: { get_resource: oam_network } + fixed_ips: [{"subnet": { get_resource: oam_subnet }}] + security_groups: + - { get_resource: onap_sg } + + rancher_floating_ip: + type: OS::Neutron::FloatingIP + properties: + floating_network_id: { get_param: public_net_id } + port_id: { get_resource: rancher_private_port } + diff --git a/deployment/heat/onap-oom/parts/onap-oom-2.yaml b/deployment/heat/onap-oom/parts/onap-oom-2.yaml new file mode 100644 index 000000000..7ee9021af --- /dev/null +++ b/deployment/heat/onap-oom/parts/onap-oom-2.yaml @@ -0,0 +1,33 @@ + ${K8S_VM_NAME}_private_port: + type: OS::Neutron::Port + properties: + network: { get_resource: oam_network } + fixed_ips: [{"subnet": { get_resource: oam_subnet }}] + security_groups: + - { get_resource: onap_sg } + + ${K8S_VM_NAME}_floating_ip: + type: OS::Neutron::FloatingIP + properties: + floating_network_id: { get_param: public_net_id } + port_id: { get_resource: ${K8S_VM_NAME}_private_port } + + ${K8S_VM_NAME}_vm: + type: OS::Nova::Server + properties: + name: ${K8S_VM_NAME} + image: { get_param: ubuntu_1604_image } + flavor: { get_param: k8s_vm_flavor } + key_name: onap_key + networks: + - port: { get_resource: ${K8S_VM_NAME}_private_port } + user_data_format: RAW + user_data: + str_replace: + params: + __docker_proxy__: { get_param: docker_proxy } + __apt_proxy__: { get_param: apt_proxy } + __rancher_ip_addr__: { get_attr: [rancher_floating_ip, floating_ip_address] } + template: + get_file: k8s_vm_entrypoint.sh + diff --git a/deployment/heat/onap-oom/parts/onap-oom-3.yaml b/deployment/heat/onap-oom/parts/onap-oom-3.yaml new file mode 100644 index 000000000..8dc35b68e --- /dev/null +++ b/deployment/heat/onap-oom/parts/onap-oom-3.yaml @@ -0,0 +1,5 @@ +outputs: + rancher_vm_ip: + description: The IP address of the rancher instance + value: { get_attr: [rancher_floating_ip, floating_ip_address] } + diff --git a/deployment/heat/onap-oom/rancher_vm_entrypoint.sh b/deployment/heat/onap-oom/rancher_vm_entrypoint.sh index 12ed51f13..a729b6bab 100644 --- a/deployment/heat/onap-oom/rancher_vm_entrypoint.sh +++ b/deployment/heat/onap-oom/rancher_vm_entrypoint.sh @@ -1,6 +1,19 @@ #!/bin/bash -x printenv +mkdir -p /opt/config +echo "__rancher_ip_addr__" > /opt/config/rancher_ip_addr.txt +echo "__k8s_vm_ips__" > /opt/config/k8s_vm_ips.txt +echo "__oam_network_id__" > /opt/config/oam_network_id.txt +echo "__oam_subnet_id__" > /opt/config/oam_subnet_id.txt + +cat <<EOF > /opt/config/integration-override.yaml +__integration_override_yaml__ +EOF +sed -i 's/\_\_oam_network_id__/__oam_network_id__/g' /opt/config/integration-override.yaml +sed -i 's/\_\_oam_subnet_id__/__oam_subnet_id__/g' /opt/config/integration-override.yaml +cp /opt/config/integration-override.yaml /root + echo `hostname -I` `hostname` >> /etc/hosts mkdir -p /etc/docker if [ ! -z "__docker_proxy__" ]; then @@ -17,6 +30,165 @@ Acquire::https::Proxy "DIRECT"; EOF fi apt-get -y update -apt-get -y install docker.io +apt-get -y install linux-image-extra-$(uname -r) jq make nfs-kernel-server + + +# version control the persistence volume to see what's happening +mkdir -p /dockerdata-nfs/ +chmod 777 /dockerdata-nfs/ +chown nobody:nogroup /dockerdata-nfs/ +cd /dockerdata-nfs/ +git init +git config user.email "root@onap" +git config user.name "root" +git add -A +git commit -m "initial commit" + +# export NFS mount +NFS_EXP="" +for K8S_VM_IP in $(tr -d ',[]' < /opt/config/k8s_vm_ips.txt); do + NFS_EXP+="$K8S_VM_IP(rw,sync,no_root_squash,no_subtree_check) " +done +echo "/dockerdata-nfs $NFS_EXP" | tee /etc/exports + + +exportfs -a +systemctl restart nfs-kernel-server + +cd ~ + +# install docker 17.03 +curl -s https://releases.rancher.com/install-docker/17.03.sh | sh usermod -aG docker ubuntu -docker run --restart unless-stopped -d -p 8080:8080 rancher/server:v1.6.14 + +docker run --restart unless-stopped -d -p 8080:8080 -e CATTLE_BOOTSTRAP_REQUIRED_IMAGE=__docker_proxy__/rancher/agent:v1.2.9 __docker_proxy__/rancher/server:v1.6.14 + +# install kubernetes 1.8.6 +curl -s -LO https://storage.googleapis.com/kubernetes-release/release/v1.8.10/bin/linux/amd64/kubectl +chmod +x ./kubectl +sudo mv ./kubectl /usr/local/bin/kubectl +mkdir ~/.kube + +# install helm +wget -q http://storage.googleapis.com/kubernetes-helm/helm-v2.8.2-linux-amd64.tar.gz +tar -zxvf helm-v2.8.2-linux-amd64.tar.gz +sudo mv linux-amd64/helm /usr/local/bin/helm + +echo export RANCHER_IP=__rancher_ip_addr__ > api-keys-rc +source api-keys-rc + +sleep 50 +until curl -s -o projects.json -H "Accept: application/json" http://$RANCHER_IP:8080/v2-beta/projects; do + sleep 10 +done +OLD_PID=$(jq -r '.data[0].id' projects.json) + +curl -s -H "Accept: application/json" -H "Content-Type: application/json" -d '{"accountId":"1a1"}' http://$RANCHER_IP:8080/v2-beta/apikeys > apikeys.json +echo export RANCHER_ACCESS_KEY=`jq -r '.publicValue' apikeys.json` >> api-keys-rc +echo export RANCHER_SECRET_KEY=`jq -r '.secretValue' apikeys.json` >> api-keys-rc +source api-keys-rc + + +curl -u "${RANCHER_ACCESS_KEY}:${RANCHER_SECRET_KEY}" -X PUT -H 'Accept: application/json' -H 'Content-Type: application/json' -d '{"id":"registry.default","type":"activeSetting","baseType":"setting","name":"registry.default","activeValue":"__docker_proxy__","inDb":true,"source":"Database","value":"__docker_proxy__"}' http://$RANCHER_IP:8080/v2-beta/settings/registry.default + +curl -s -u "${RANCHER_ACCESS_KEY}:${RANCHER_SECRET_KEY}" -X DELETE -H 'Content-Type: application/json' "http://$RANCHER_IP:8080/v2-beta/projects/$OLD_PID" + +until [ ! -z "$TEMPLATE_ID" ] && [ "$TEMPLATE_ID" != "null" ]; do + sleep 5 + curl -s -H "Accept: application/json" http://$RANCHER_IP:8080/v2-beta/projectTemplates?name=Kubernetes > projectTemplatesKubernetes.json + TEMPLATE_ID=$(jq -r '.data[0].id' projectTemplatesKubernetes.json) +done + +curl -s -u "${RANCHER_ACCESS_KEY}:${RANCHER_SECRET_KEY}" -X POST -H 'Content-Type: application/json' -d '{ "name":"oom", "projectTemplateId":"'$TEMPLATE_ID'" }' "http://$RANCHER_IP:8080/v2-beta/projects" > project.json +PID=`jq -r '.id' project.json` +echo export RANCHER_URL=http://$RANCHER_IP:8080/v1/projects/$PID >> api-keys-rc +source api-keys-rc + +until [ $(jq -r '.state' project.json) == "active" ]; do + sleep 5 + curl -s -H "Accept: application/json" http://$RANCHER_IP:8080/v1/projects/$PID > project.json +done + + +curl -s -u $RANCHER_ACCESS_KEY:$RANCHER_SECRET_KEY -X POST -H 'Accept: application/json' -H 'Content-Type: application/json' -d '{"name":"docker-proxy", "serverAddress":"__docker_proxy__"}' $RANCHER_URL/registries > registry.json +RID=$(jq -r '.id' registry.json) + + +curl -u "${RANCHER_ACCESS_KEY}:${RANCHER_SECRET_KEY}" -X POST -H 'Accept: application/json' -H 'Content-Type: application/json' -d '{"publicValue":"docker", "registryId":"'$RID'", "secretValue":"docker", "type":"registryCredential"}' "http://$RANCHER_IP:8080/v2-beta/projects/$PID/registrycredential" + + + +TID=$(curl -s -X POST -H "Accept: application/json" -H "Content-Type: application/json" http://$RANCHER_IP:8080/v1/projects/$PID/registrationTokens | jq -r '.id') +touch token.json +while [ $(jq -r .command token.json | wc -c) -lt 10 ]; do + sleep 5 + curl -s -X GET -H "Accept: application/json" http://$RANCHER_IP:8080/v1/projects/$PID/registrationToken/$TID > token.json +done +jq -r .command token.json > rancher_agent_cmd.sh +chmod +x rancher_agent_cmd.sh +cp rancher_agent_cmd.sh /dockerdata-nfs +cd /dockerdata-nfs +git add -A +git commit -a -m "Add rancher agent command file" +cd ~ + + +KUBETOKEN=$(echo -n 'Basic '$(echo -n "$RANCHER_ACCESS_KEY:$RANCHER_SECRET_KEY" | base64 -w 0) | base64 -w 0) + +# create .kube/config +cat > ~/.kube/config <<EOF +apiVersion: v1 +kind: Config +clusters: +- cluster: + api-version: v1 + insecure-skip-tls-verify: true + server: "https://$RANCHER_IP:8080/r/projects/$PID/kubernetes:6443" + name: "oom" +contexts: +- context: + cluster: "oom" + user: "oom" + name: "oom" +current-context: "oom" +users: +- name: "oom" + user: + token: "$KUBETOKEN" +EOF + +export KUBECONFIG=/root/.kube/config +kubectl config view + +# wait for kubernetes to initialze +sleep 100 +until [ $(kubectl get pods --namespace kube-system | tail -n +2 | grep -c Running) -ge 6 ]; do + sleep 10 +done + + +# Install using OOM +export HOME=/root + +# Clone OOM: +cd ~ +git clone -b master http://gerrit.onap.org/r/oom +cd oom +git log -1 + +# Run ONAP: +cd ~/oom/kubernetes/ +helm init --client-only +helm init --upgrade +helm serve & +sleep 3 +helm repo add local http://127.0.0.1:8879 +helm repo list +make all +helm search -l | grep local +helm install local/onap -n dev --namespace onap -f ~/integration-override.yaml + + +# Check ONAP status: +sleep 3 +kubectl get pods --all-namespaces diff --git a/deployment/heat/onap-oom/scripts/deploy.sh b/deployment/heat/onap-oom/scripts/deploy.sh index c49239403..8ab79a2c8 100755 --- a/deployment/heat/onap-oom/scripts/deploy.sh +++ b/deployment/heat/onap-oom/scripts/deploy.sh @@ -12,6 +12,9 @@ ENV_FILE=$1 source $WORKSPACE/test/ete/scripts/install_openstack_cli.sh +SO_ENCRYPTION_KEY=aa3871669d893c7fb8abbcda31b88b4f +export OS_PASSWORD_ENCRYPTED=$(echo -n "$OS_PASSWORD" | openssl aes-128-ecb -e -K "$SO_ENCRYPTION_KEY" -nosalt | xxd -c 256 -p) + for n in $(seq 1 5); do $WORKSPACE/test/ete/scripts/teardown-onap.sh @@ -19,33 +22,34 @@ for n in $(seq 1 5); do envsubst < $ENV_FILE > $ENV_FILE~ openstack stack create -t ./onap-oom.yaml -e $ENV_FILE~ onap-oom - for i in $(seq 1 10); do - sleep 10 - K8S_IP=$(openstack stack output show onap-oom k8s_vm_ip -c output_value -f value) + for i in $(seq 1 30); do + sleep 30 RANCHER_IP=$(openstack stack output show onap-oom rancher_vm_ip -c output_value -f value) - timeout 1 ping -c 1 "$K8S_IP" && timeout 1 ping -c 1 "$RANCHER_IP" && break + timeout 1 ping -c 1 "$RANCHER_IP" && break done - timeout 1 ping -c 1 "$K8S_IP" && timeout 1 ping -c 1 "$RANCHER_IP" && break + timeout 1 ping -c 1 "$RANCHER_IP" && break - echo Error: OpenStack infrastructure issue: unable to reach both rancher "$RANCHER_IP" and k8s "$K8S_IP" + echo Error: OpenStack infrastructure issue: unable to reach rancher "$RANCHER_IP" sleep 10 done -if ! timeout 1 ping -c 1 "$K8S_IP" || ! timeout 1 ping -c 1 "$RANCHER_IP"; then +if ! timeout 1 ping -c 1 "$RANCHER_IP"; then exit 2 fi -ssh-keygen -R $K8S_IP +ssh-keygen -R $RANCHER_IP for n in $(seq 1 10); do - timeout 15m ssh -o StrictHostKeychecking=no -i ~/.ssh/onap_key ubuntu@$K8S_IP 'sudo su -l root -c "/root/oom/kubernetes/robot/ete-k8s.sh onap health"' + timeout 15m ssh -o StrictHostKeychecking=no -i ~/.ssh/onap_key ubuntu@$RANCHER_IP 'sudo su -l root -c "/root/oom/kubernetes/robot/ete-k8s.sh onap health"' RESULT=$? if [ $RESULT -eq 0 ]; then break fi sleep 15m done -ROBOT_POD=$(ssh -o StrictHostKeychecking=no -i ~/.ssh/onap_key ubuntu@$K8S_IP 'sudo su -c "kubectl --namespace onap get pods"' | grep robot | sed 's/ .*//') -LOG_DIR=$(ssh -o StrictHostKeychecking=no -i ~/.ssh/onap_key ubuntu@$K8S_IP "sudo su -c \"kubectl exec $ROBOT_POD --namespace onap -- ls -1t /share/logs | head -1\"") +ROBOT_POD=$(ssh -o StrictHostKeychecking=no -i ~/.ssh/onap_key ubuntu@$RANCHER_IP 'sudo su -c "kubectl --namespace onap get pods"' | grep robot | sed 's/ .*//') +LOG_DIR=$(ssh -o StrictHostKeychecking=no -i ~/.ssh/onap_key ubuntu@$RANCHER_IP "sudo su -c \"kubectl exec $ROBOT_POD --namespace onap -- ls -1t /share/logs | head -1\"") + +K8S_IP=$(openstack stack output show onap-oom k8s_1_vm_ip -c output_value -f value) wget --user=robot --password=robot -r -np -nH --cut-dirs=2 -R "index.html*" -P $WORKSPACE/archives/ http://$K8S_IP:30209/logs/$LOG_DIR/ exit 0 diff --git a/deployment/heat/onap-oom/scripts/gen-onap-oom-yaml.sh b/deployment/heat/onap-oom/scripts/gen-onap-oom-yaml.sh new file mode 100755 index 000000000..19e7b60b1 --- /dev/null +++ b/deployment/heat/onap-oom/scripts/gen-onap-oom-yaml.sh @@ -0,0 +1,68 @@ +#!/bin/bash + +NUM_K8S_VMS=7 + +if [ -z "$WORKSPACE" ]; then + export WORKSPACE=`git rev-parse --show-toplevel` +fi +PARTS_DIR=$WORKSPACE/deployment/heat/onap-oom/parts + +cat <<EOF +# +# Generated by scripts/gen-onap-oom-yaml.sh; MANUAL CHANGES WILL BE LOST +# +EOF + +cat $PARTS_DIR/onap-oom-1.yaml + +cat <<EOF + rancher_vm: + type: OS::Nova::Server + properties: + name: rancher + image: { get_param: ubuntu_1604_image } + flavor: { get_param: rancher_vm_flavor } + key_name: onap_key + networks: + - port: { get_resource: rancher_private_port } + user_data_format: RAW + user_data: + str_replace: + template: + get_file: rancher_vm_entrypoint.sh + params: + __docker_proxy__: { get_param: docker_proxy } + __apt_proxy__: { get_param: apt_proxy } + __rancher_ip_addr__: { get_attr: [rancher_floating_ip, floating_ip_address] } + __integration_override_yaml__: { get_param: integration_override_yaml } + __oam_network_id__: { get_resource: oam_network } + __oam_subnet_id__: { get_resource: oam_subnet } + __k8s_vm_ips__: [ +EOF + +for VM_NUM in $(seq $NUM_K8S_VMS); do + K8S_VM_NAME=k8s_$VM_NUM + cat <<EOF + get_attr: [${K8S_VM_NAME}_floating_ip, floating_ip_address], +EOF +done + +cat <<EOF + ] +EOF + +for VM_NUM in $(seq $NUM_K8S_VMS); do + K8S_VM_NAME=k8s_$VM_NUM envsubst < $PARTS_DIR/onap-oom-2.yaml +done + +cat $PARTS_DIR/onap-oom-3.yaml + +for VM_NUM in $(seq $NUM_K8S_VMS); do + K8S_VM_NAME=k8s_$VM_NUM + cat <<EOF + ${K8S_VM_NAME}_vm_ip: + description: The IP address of the ${K8S_VM_NAME} instance + value: { get_attr: [${K8S_VM_NAME}_floating_ip, floating_ip_address] } + +EOF +done diff --git a/deployment/heat/onap-oom/scripts/prepull-docker.sh b/deployment/heat/onap-oom/scripts/prepull-docker.sh new file mode 100755 index 000000000..d3556a882 --- /dev/null +++ b/deployment/heat/onap-oom/scripts/prepull-docker.sh @@ -0,0 +1,15 @@ +#!/bin/bash -x + +if [ -z "$WORKSPACE" ]; then + export WORKSPACE=`git rev-parse --show-toplevel` +fi + +if [ "$#" -ne 1 ]; then + echo "Usage: $0 <docker-proxy>" + exit 1 +fi +DOCKER_PROXY=$1 + +for DOCKER_IMAGE in $(tail -n +2 $WORKSPACE/version-manifest/src/main/resources/docker-manifest.csv | tr ',' ':'); do + docker pull $DOCKER_PROXY/$DOCKER_IMAGE +done diff --git a/test/csit/plans/aaf/aafapi/setup.sh b/test/csit/plans/aaf/aafapi/setup.sh index 4a312704f..add9ae17e 100644 --- a/test/csit/plans/aaf/aafapi/setup.sh +++ b/test/csit/plans/aaf/aafapi/setup.sh @@ -37,12 +37,15 @@ chmod -R 777 $WORKSPACE/archives/aafcsit/authz/auth/auth-service/src/main/resour # start aaf containers with docker compose and configuration from docker-compose.yml docker-compose up -d +export aaf_service=$(get_docker_compose_service aaf_container) +export cassandra_service=$(get_docker_compose_service cassandra_container) -# Wait for initialization of Docker contaienr for AAF & Cassandra +# Wait for initialization of Docker container for AAF & Cassandra for i in {1..12}; do - if [ $(docker inspect --format '{{ .State.Running }}' dockercompose_aaf_container_1) ] && \ - [ $(docker inspect --format '{{ .State.Running }}' dockercompose_cassandra_container_1) ] && \ - [ $(docker inspect --format '{{ .State.Running }}' dockercompose_aaf_container_1) ] + + if [ $(docker inspect --format '{{ .State.Running }}' $aaf_service) ] && \ + [ $(docker inspect --format '{{ .State.Running }}' $cassandra_service) ] && \ + [ $(docker inspect --format '{{ .State.Running }}' $aaf_service) ] then echo "AAF Service Running" break @@ -53,9 +56,11 @@ for i in {1..12}; do done -AAF_IP=$(docker inspect --format='{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' dockercompose_aaf_container_1) -CASSANDRA_IP=$(docker inspect --format='{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' dockercompose_cassandra_container_1) +AAF_IP=$(docker inspect --format='{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' $aaf_service) +CASSANDRA_IP=$(docker inspect --format='{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' $cassandra_service) +bypass_ip_adress $AAF_IP +bypass_ip_adress $CASSANDRA_IP echo AAF_IP=${AAF_IP} echo CASSANDRA_IP=${CASSANDRA_IP} diff --git a/test/csit/plans/aaf/aafapi/teardown.sh b/test/csit/plans/aaf/aafapi/teardown.sh index 1f7b2853d..41e0b00ea 100644 --- a/test/csit/plans/aaf/aafapi/teardown.sh +++ b/test/csit/plans/aaf/aafapi/teardown.sh @@ -17,6 +17,8 @@ # Modifications copyright (c) 2017 AT&T Intellectual Property # -kill-instance.sh dockercompose_aaf_container_1 -kill-instance.sh dockercompose_cassandra_container_1 +kill-instance.sh $aaf_service +kill-instance.sh $cassandra_service +unset aaf_service +unset cassandra_service diff --git a/test/csit/plans/appc/healthcheck/setup.sh b/test/csit/plans/appc/healthcheck/setup.sh index f47685334..ef79483b4 100755 --- a/test/csit/plans/appc/healthcheck/setup.sh +++ b/test/csit/plans/appc/healthcheck/setup.sh @@ -48,8 +48,11 @@ sed -i "s/DMAAP_TOPIC_ENV=.*/DMAAP_TOPIC_ENV="$DMAAP_TOPIC"/g" docker-compose.ym docker login -u $NEXUS_USERNAME -p $NEXUS_PASSWD $NEXUS_DOCKER_REPO docker pull $NEXUS_DOCKER_REPO/${SOLUTION_NAME}/appc-image:$APPC_DOCKER_IMAGE_VERSION docker tag $NEXUS_DOCKER_REPO/${SOLUTION_NAME}/appc-image:$APPC_DOCKER_IMAGE_VERSION ${SOLUTION_NAME}/appc-image:latest -docker pull $NEXUS_DOCKER_REPO/onap/ccsdk-dgbuilder-image:$CCSDK_DOCKER_IMAGE_VERSION -docker tag $NEXUS_DOCKER_REPO/onap/ccsdk-dgbuilder-image:$CCSDK_DOCKER_IMAGE_VERSION onap/ccsdk-dgbuilder-image:latest +docker pull $NEXUS_DOCKER_REPO/${SOLUTION_NAME}/ccsdk-dgbuilder-image:$CCSDK_DOCKER_IMAGE_VERSION +docker tag $NEXUS_DOCKER_REPO/${SOLUTION_NAME}/ccsdk-dgbuilder-image:$CCSDK_DOCKER_IMAGE_VERSION ${SOLUTION_NAME}/ccsdk-dgbuilder-image:latest +docker pull $NEXUS_DOCKER_REPO/${SOLUTION_NAME}/appc-cdt-image:$APPC_DOCKER_IMAGE_VERSION +docker tag $NEXUS_DOCKER_REPO/${SOLUTION_NAME}/appc-cdt-image:$APPC_DOCKER_IMAGE_VERSION ${SOLUTION_NAME}/appc-cdt-image:latest + # start APPC containers with docker compose and configuration from docker-compose.yml docker-compose up -d # WAIT 5 minutes maximum and test every 5 seconds if APPC is up using HealthCheck API diff --git a/test/csit/plans/appc/healthcheck/teardown.sh b/test/csit/plans/appc/healthcheck/teardown.sh index 357ead8aa..94d1bc778 100755 --- a/test/csit/plans/appc/healthcheck/teardown.sh +++ b/test/csit/plans/appc/healthcheck/teardown.sh @@ -18,7 +18,8 @@ # kill-instance.sh appc_controller_container -kill-instance.sh sdnc_dgbuilder_container +kill-instance.sh ccsdk_dgbuilder_container +kill-instance.sh appc_cdt_container kill-instance.sh sdnc_db_container # $WORKSPACE/archives/appc deleted with archives folder when tests starts so we keep it at the end for debugging diff --git a/test/csit/plans/dmaap-buscontroller/mock_downstream/setup.sh b/test/csit/plans/dmaap-buscontroller/mock_downstream/setup.sh index a19454be5..d5c77b0bd 100755 --- a/test/csit/plans/dmaap-buscontroller/mock_downstream/setup.sh +++ b/test/csit/plans/dmaap-buscontroller/mock_downstream/setup.sh @@ -40,3 +40,6 @@ echo "AAF_IP=$AAF_IP MRC_IP=$MRC_IP DRPS_IP=$DRPS_IP DMAAPBC_IP=$DMAAPBC_IP" # Pass any variables required by Robot test suites in ROBOT_VARIABLES ROBOT_VARIABLES="-v AAF_IP:${AAF_IP} -v MRC_IP:${MRC_IP} -v DRPS_IP:${DRPS_IP} -v DMAAPBC_IP:${DMAAPBC_IP}" +set -x +${WORKSPACE}/test/csit/scripts/dmaap-buscontroller/dmaapbc-init.sh ${DMAAPBC_IP} ${DRPS_IP} ${MRC_IP} +set +x diff --git a/test/csit/plans/dmaap-buscontroller/with_mr/setup.sh b/test/csit/plans/dmaap-buscontroller/with_mr/setup.sh index 35534de0b..3b604fe99 100755 --- a/test/csit/plans/dmaap-buscontroller/with_mr/setup.sh +++ b/test/csit/plans/dmaap-buscontroller/with_mr/setup.sh @@ -20,25 +20,35 @@ # # - -# Place the scripts in run order: -source ${WORKSPACE}/test/csit/scripts/dmaap-message-router/dmaap-mr-launch.sh -dmaap_mr_launch -MRC_IP=${IP} - -source ${WORKSPACE}/test/csit/scripts/dmaap-buscontroller/start-mock.sh -#start_mock "aaf" -AAF_IP=${IP} -start_mock "drps" -DRPS_IP=${IP} - -source ${WORKSPACE}/test/csit/scripts/dmaap-buscontroller/dmaapbc-launch.sh -dmaapbc_launch $AAF_IP $MRC_IP $DRPS_IP -DMAAPBC_IP=${IP} - - -echo "AAF_IP=$AAF_IP MRC_IP=$MRC_IP DRPS_IP=$DRPS_IP DMAAPBC_IP=$DMAAPBC_IP" - -# Pass any variables required by Robot test suites in ROBOT_VARIABLES -ROBOT_VARIABLES="-v AAF_IP:${AAF_IP} -v MRC_IP:${MRC_IP} -v DRPS_IP:${DRPS_IP} -v DMAAPBC_IP:${DMAAPBC_IP}" +if [ "$USE_EXISTING_DMAAP" = "Y" ] +then + ROBOT_VARIABLES="-v AAF_IP:0.0.0 -v MRC_IP:172.18.0.3 -v DRPS_IP:0.0.0.0 -v DMAAPBC_IP:172.17.0.4" +else + + # Place the scripts in run order: + source ${WORKSPACE}/test/csit/scripts/dmaap-message-router/dmaap-mr-launch.sh + dmaap_mr_launch + MRC_IP=${IP} + + source ${WORKSPACE}/test/csit/scripts/dmaap-buscontroller/start-mock.sh + #start_mock "aaf" + #AAF_IP=${IP} + AAF_IP=0.0.0.0 + #start_mock "drps" + #DRPS_IP=${IP} + DRPS_IP=0.0.0.0 + + source ${WORKSPACE}/test/csit/scripts/dmaap-buscontroller/dmaapbc-launch.sh + dmaapbc_launch $AAF_IP $MRC_IP $DRPS_IP + DMAAPBC_IP=${IP} + + + echo "AAF_IP=$AAF_IP MRC_IP=$MRC_IP DRPS_IP=$DRPS_IP DMAAPBC_IP=$DMAAPBC_IP" + + # Pass any variables required by Robot test suites in ROBOT_VARIABLES + ROBOT_VARIABLES="-v AAF_IP:${AAF_IP} -v MRC_IP:${MRC_IP} -v DRPS_IP:${DRPS_IP} -v DMAAPBC_IP:${DMAAPBC_IP}" + set -x + ${WORKSPACE}/test/csit/scripts/dmaap-buscontroller/dmaapbc-init.sh ${DMAAPBC_IP} ${DRPS_IP} ${MRC_IP} + set +x +fi diff --git a/test/csit/plans/dmaap-buscontroller/with_mr/teardown.sh b/test/csit/plans/dmaap-buscontroller/with_mr/teardown.sh index 0474dded6..f35b02259 100644 --- a/test/csit/plans/dmaap-buscontroller/with_mr/teardown.sh +++ b/test/csit/plans/dmaap-buscontroller/with_mr/teardown.sh @@ -21,8 +21,9 @@ # source ${WORKSPACE}/test/csit/scripts/dmaap-message-router/dmaap-mr-teardown.sh +if [ "$KEEP_DMAAP" != "Y" ] +then dmaap_mr_teardown -kill-instance.sh aaf-mock -kill-instance.sh drps-mock kill-instance.sh dmaapbc +fi diff --git a/test/csit/plans/multicloud-ocata/functionality1/setup.sh b/test/csit/plans/multicloud-ocata/functionality1/setup.sh index 75411781e..b674fa61d 100644 --- a/test/csit/plans/multicloud-ocata/functionality1/setup.sh +++ b/test/csit/plans/multicloud-ocata/functionality1/setup.sh @@ -11,16 +11,17 @@ # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# -# Place the scripts in run order: -# Start all process required for executing test case - -source ${SCRIPTS}/common_functions.sh +pushd ${SCRIPTS} # start multicloud-ocata -docker run -d --name multicloud-ocata nexus3.onap.org:10001/onap/multicloud/openstack-ocata -SERVICE_IP=`get-instance-ip.sh multicloud-ocata` +./run-instance.sh nexus3.onap.org:10001/onap/multicloud/openstack-ocata:latest multicloud-ocata +SERVICE_IP=$(./get-instance-ip.sh multicloud-ocata) SERVICE_PORT=9006 +popd + +if [[ $no_proxy && $no_proxy != *$SERVICE_IP* ]]; then + export no_proxy+=$no_proxy,$SERVICE_IP +fi for i in {1..50}; do curl -sS ${SERVICE_IP}:${SERVICE_PORT} && break @@ -28,7 +29,6 @@ for i in {1..50}; do sleep $i done -echo SCRIPTS # Pass any variables required by Robot test suites in ROBOT_VARIABLES ROBOT_VARIABLES+="-v SERVICE_IP:${SERVICE_IP} " ROBOT_VARIABLES+="-v SERVICE_PORT:${SERVICE_PORT} " diff --git a/test/csit/plans/sdnc/healthcheck/setup.sh b/test/csit/plans/sdnc/healthcheck/setup.sh index 0b906f4f2..a8119f616 100644 --- a/test/csit/plans/sdnc/healthcheck/setup.sh +++ b/test/csit/plans/sdnc/healthcheck/setup.sh @@ -49,6 +49,9 @@ docker login -u $NEXUS_USERNAME -p $NEXUS_PASSWD $NEXUS_DOCKER_REPO docker pull $NEXUS_DOCKER_REPO/onap/sdnc-image:$DOCKER_IMAGE_VERSION docker tag $NEXUS_DOCKER_REPO/onap/sdnc-image:$DOCKER_IMAGE_VERSION onap/sdnc-image:latest +docker pull $NEXUS_DOCKER_REPO/onap/sdnc-ansible-server-image:$DOCKER_IMAGE_VERSION +docker tag $NEXUS_DOCKER_REPO/onap/sdnc-ansible-server-image:$DOCKER_IMAGE_VERSION onap/sdnc-ansible-server-image:latest + docker pull $NEXUS_DOCKER_REPO/onap/ccsdk-dgbuilder-image:$CCSDK_DOCKER_IMAGE_VERSION docker tag $NEXUS_DOCKER_REPO/onap/ccsdk-dgbuilder-image:$CCSDK_DOCKER_IMAGE_VERSION onap/ccsdk-dgbuilder-image:latest diff --git a/test/csit/plans/vnfsdk-refrepo/sanity-check/setup.sh b/test/csit/plans/vnfsdk-refrepo/sanity-check/setup.sh index d1930cef5..ecee227f9 100644 --- a/test/csit/plans/vnfsdk-refrepo/sanity-check/setup.sh +++ b/test/csit/plans/vnfsdk-refrepo/sanity-check/setup.sh @@ -23,7 +23,7 @@ docker run -d -i -t --name=postgres -p 5432:5432 nexus3.onap.org:10001/onap/vn POSTGRES=`docker inspect --format '{{ .NetworkSettings.IPAddress }}' postgres` #Start market place -docker run -d -i -t --name=refrepo -e POSTGRES_IP=$POSTGRES -p 8702:8702 nexus3.onap.org:10001/onap/vnfsdk/refrepo:1.1-STAGING-latest +docker run -d -i -t --name=refrepo -e POSTGRES_SERVICE_HOST=$POSTGRES -p 8702:8702 nexus3.onap.org:10001/onap/vnfsdk/refrepo:1.1-STAGING-latest # Wait for Market place initialization echo Wait for VNF Repository initialization diff --git a/test/csit/scripts/common_functions.sh b/test/csit/scripts/common_functions.sh index 69856dab3..4293a526c 100755 --- a/test/csit/scripts/common_functions.sh +++ b/test/csit/scripts/common_functions.sh @@ -233,3 +233,20 @@ function run_simulator_docker () ROBOT_VARIABLES=${ROBOT_VARIABLES}" -v SIMULATOR_IP:${SIMULATOR_IP} -v SCRIPTS:${SCRIPTS}" echo ${ROBOT_VARIABLES} } + +function get_docker_compose_service () +{ + local service=$1 + local compose_file=${2:-docker-compose.yml} + + echo $(docker-compose --file ./${compose_file} ps | grep $service | cut -d " " -f1 ) +} + +function bypass_ip_adress () +{ + local ip_address=$1 + + if [[ $no_proxy && $no_proxy != *$ip_address* ]]; then + export no_proxy=$no_proxy,$ip_address + fi +} diff --git a/test/csit/scripts/dmaap-buscontroller/dmaapbc-init.sh b/test/csit/scripts/dmaap-buscontroller/dmaapbc-init.sh index 7ec7345d5..96ac40f18 100755 --- a/test/csit/scripts/dmaap-buscontroller/dmaapbc-init.sh +++ b/test/csit/scripts/dmaap-buscontroller/dmaapbc-init.sh @@ -17,6 +17,7 @@ cat << EOF > $JSON } EOF +echo "Initializing /dmaap endpoint" curl -v -X POST -d @${JSON} -H "Content-Type: application/json" http://$1:8080/webapi/dmaap @@ -33,20 +34,28 @@ cat << EOF > $JSON } EOF +echo "Initializing /dcaeLocations endpoint" curl -v -X POST -d @${JSON} -H "Content-Type: application/json" http://$1:8080/webapi/dcaeLocations # INITIALIZE: MR object in 1 site +# since MR is currently deployed via docker-compose, its IP doesn't seem +# to be routable from DBCL. Fortunately, the MR port is mapped from the docker bridge IP address. +# Found this article for how to deterine the docker bridge IP so using it as a workaround. +# https://stackoverflow.com/questions/22944631/how-to-get-the-ip-address-of-the-docker-host-from-inside-a-docker-container +# Used the following snippet found buried in a comment to an answer and then modified for only 1 value. +DOCKER_HOST=$(ip -4 addr show docker0 | grep -Po 'inet \K[\d.]+' | head -1 ) +# Perhaps there is a better way... JSON=/tmp/$$.mrc cat << EOF > $JSON { "dcaeLocationName": "csit-sanfrancisco", - "fqdn": "$3", - "hosts" : [ "$3", "$3", "$3" ], - "protocol" : "https", - "port": "3094" + "fqdn": "$DOCKER_HOST", + "topicProtocol" : "http", + "topicPort": "3904" } EOF +echo "Initializing /mr_clusters endpoint" curl -v -X POST -d @${JSON} -H "Content-Type: application/json" http://$1:8080/webapi/mr_clusters diff --git a/test/csit/scripts/dmaap-buscontroller/dmaapbc-launch.sh b/test/csit/scripts/dmaap-buscontroller/dmaapbc-launch.sh index 72c443850..688ce7d45 100755 --- a/test/csit/scripts/dmaap-buscontroller/dmaapbc-launch.sh +++ b/test/csit/scripts/dmaap-buscontroller/dmaapbc-launch.sh @@ -4,13 +4,13 @@ # sets global var IP with assigned IP address function dmaapbc_launch() { - TAG=onap/dmaap/buscontroller + TAG="nexus3.onap.org:10001/onap/dmaap/buscontroller" CONTAINER_NAME=dmaapbc IP="" cd ${WORKSPACE}/test/csit/scripts/dmaap-buscontroller - TMP_CFG=/tmp/docker-databys-controller.conf + TMP_CFG=/tmp/docker-databus-controller.conf . ./onapCSIT.env > $TMP_CFG docker run -d --name $CONTAINER_NAME -v $TMP_CFG:/opt/app/config/conf $TAG IP=`get-instance-ip.sh ${CONTAINER_NAME}` @@ -22,9 +22,4 @@ function dmaapbc_launch() { sleep $i done - set -x - ${WORKSPACE}/test/csit/scripts/dmaap-buscontroller/dmaapbc-init.sh ${IP} - set +x - - } diff --git a/test/csit/scripts/externalapi-nbi/start_nbi_containers.sh b/test/csit/scripts/externalapi-nbi/start_nbi_containers.sh index 7237a1fbc..24de74099 100644 --- a/test/csit/scripts/externalapi-nbi/start_nbi_containers.sh +++ b/test/csit/scripts/externalapi-nbi/start_nbi_containers.sh @@ -34,18 +34,33 @@ docker login -u $NEXUS_USERNAME -p $NEXUS_PASSWD $NEXUS_DOCKER_REPO docker pull $NEXUS_DOCKER_REPO/onap/externalapi/nbi:$DOCKER_IMAGE_VERSION # Start nbi, MariaDB and MongoDB containers with docker compose and nbi/docker-compose.yml -docker-compose up -d mariadb mongo && sleep 5 # to ensure that these services are ready for connections +docker-compose up -d mariadb mongo + +# inject a script to ensure that these services are ready for connections +docker-compose run --rm --entrypoint='/bin/sh' nbi -c '\ + attempt=1; \ + while ! nc -z mariadb 3306 || ! nc -z mongo 27017; do \ + if [ $attempt = 30 ]; then \ + echo "Timed out!"; \ + exit 1; \ + fi; \ + echo "waiting for db services (attempt #$attempt)..."; \ + sleep 1; \ + attempt=$(( attempt + 1)); \ + done; \ + echo "all db services are ready for connections!" \ +' + docker-compose up -d nbi NBI_CONTAINER_NAME=$(docker-compose ps 2> /dev/null | tail -n+3 | tr -s ' ' | cut -d' ' -f1 | grep _nbi_) -NBI_IP=$(docker inspect $NBI_CONTAINER_NAME --format='{{ range .NetworkSettings.Networks }}{{ .IPAddress }}{{ end }}') +NBI_IP=$(docker inspect --format='{{ range .NetworkSettings.Networks }}{{ .IPAddress }}{{ end }}' ${NBI_CONTAINER_NAME}) echo "IP address for NBI main container ($NBI_CONTAINER_NAME) is set to ${NBI_IP}." # Wait for initialization for i in {1..30}; do - curl -sS ${NBI_IP}:8080 > /dev/null 2>&1 && break + curl -sS ${NBI_IP}:8080 > /dev/null 2>&1 && echo 'nbi initialized' && break echo sleep $i sleep $i done - diff --git a/test/csit/scripts/optf-has/has/has-properties/conductor.conf.onap b/test/csit/scripts/optf-has/has/has-properties/conductor.conf.onap index 0f9e7494d..a8e84846c 100644 --- a/test/csit/scripts/optf-has/has/has-properties/conductor.conf.onap +++ b/test/csit/scripts/optf-has/has/has-properties/conductor.conf.onap @@ -314,7 +314,7 @@ aafns = conductor #table_prefix = sdnc # Base URL for SDN-C. (string value) -server_url = http://localhost:8082/restconf/ +server_url = http://localhost:8083/restconf/ # Basic Authentication Username (string value) username = admin @@ -346,3 +346,33 @@ extensions = sdnc # solver will restart any orphaned solving requests at startup. (boolean value) #concurrent = false + +[multicloud] + +# +# From conductor +# + +# Base URL for Multicloud without a trailing slash. (string value) +server_url = http://msb.onap.org:8082/api/multicloud + +# Timeout for Multicloud Rest Call (string value) +multicloud_rest_timeout = 30 + +# Number of retry for Multicloud Rest Call (string value) +multicloud_retries = 3 + +# The version of Multicloud API. (string value) +server_url_version = v0 + + + +[vim_controller] + +# +# From conductor +# + +# Extensions list to use (list value) +extensions = multicloud + diff --git a/test/csit/scripts/optf-has/has/has_script.sh b/test/csit/scripts/optf-has/has/has_script.sh index ac907eea1..ee5479e10 100755 --- a/test/csit/scripts/optf-has/has/has_script.sh +++ b/test/csit/scripts/optf-has/has/has_script.sh @@ -60,7 +60,7 @@ MULTICLOUDSIM_IP=`docker inspect --format '{{ .NetworkSettings.Networks.bridge.I echo "MULTICLOUDSIM_IP=${MULTICLOUDSIM_IP}" # change MULTICLOUD reference to the local instance -sed -i -e "s%localhost:8082/%${MULTICLOUDSIM_IP}:8082/%g" /tmp/conductor/properties/conductor.conf +sed -i -e "s%msb.onap.org:8082/%${MULTICLOUDSIM_IP}:8082/%g" /tmp/conductor/properties/conductor.conf #onboard conductor into music curl -vvvvv --noproxy "*" --request POST http://${MUSIC_IP}:8080/MUSIC/rest/v2/admin/onboardAppWithMusic -H "Content-Type: application/json" --data @${WORKSPACE}/test/csit/tests/optf-has/has/data/onboard.json diff --git a/test/csit/scripts/so/chef-config/mso-docker.json b/test/csit/scripts/so/chef-config/mso-docker.json index 13b0d22fc..120db1176 100644 --- a/test/csit/scripts/so/chef-config/mso-docker.json +++ b/test/csit/scripts/so/chef-config/mso-docker.json @@ -171,7 +171,7 @@ "sniroTimeout": "PT30M", "serviceAgnosticSniroHost": "http://sniro.api.simpledemo.openecomp.org:8080", "serviceAgnosticSniroEndpoint": "/sniro/api/v2/placement", - "aaiEndpoint": "https://aai.api.simpledemo.openecomp.org:8443", + "aaiEndpoint": "https://aai.api.simpledemo.onap.org:8443", "aaiAuth": "2630606608347B7124C244AB0FE34F6F", "adaptersNamespace": "http://org.openecomp.mso", "adaptersCompletemsoprocessEndpoint": "http://mso:8080/CompleteMsoProcess", @@ -204,6 +204,16 @@ "sdncTimeoutFirewall": "20", "callbackRetryAttempts": "30", "callbackRetrySleepTime": "1000", + "appcClientTopicRead": "APPC-LCM-READ", + "appcClientTopicWrite": "APPC-LCM-WRITE", + "appcClientTopicSdncRead": "SDNC-LCM-READ", + "appcClientTopicSdncWrite": "SDNC-LCM-WRITE", + "appcClientTopicReadTimeout": "360000", + "appcClientResponseTime": "360000", + "appcClientPoolMembers": "10.0.11.1:3904", + "appcClientKey": "VIlbtVl6YLhNUrtU", + "appcClientSecret": "64AG2hF4pYeG2pq7CT6XwUOT", + "appcClientService": "ueb", "workflowL3ToHigherLayerAddBondingModelName": "WAN Bonding", "workflowL3ToHigherLayerAddBondingModelVersion": "2.0" } diff --git a/test/csit/tests/clamp/UIs/02__Create_TCA_model.robot b/test/csit/tests/clamp/UIs/02__Create_TCA_model.robot index 99d93c312..7349f63bb 100644 --- a/test/csit/tests/clamp/UIs/02__Create_TCA_model.robot +++ b/test/csit/tests/clamp/UIs/02__Create_TCA_model.robot @@ -50,7 +50,7 @@ Set Properties for TCAModel1 Click Element locator=Properties CL Select From List By Label id=service vLoadBalancer Select From List By Label id=vf vLoadBalancer 0 - Select From List By Label id=actionSet eNodeB + Select From List By Label id=actionSet VNF Select From List By Label id=location Data Center 1 Data Center 3 Click Button locator=Save @@ -59,7 +59,7 @@ Set Policy Box properties for TCAModel1 Click Element xpath=//*[@data-element-id="Policy_12lup3h"] Click Button locator=New Policy Input Text locator=//*[@id="pname"] text=Policy2 - Select From List By Label id=recipe Reset + Select From List By Label id=recipe Restart Input Text locator=maxRetries text=6 Input Text locator=retryTimeLimit text=280 Input Text locator=timeout text=400 diff --git a/test/csit/tests/clamp/UIs/03__Verify_UI_Models.robot b/test/csit/tests/clamp/UIs/03__Verify_UI_Models.robot index 70cbf1262..a9cb78749 100644 --- a/test/csit/tests/clamp/UIs/03__Verify_UI_Models.robot +++ b/test/csit/tests/clamp/UIs/03__Verify_UI_Models.robot @@ -30,11 +30,11 @@ Verify TCAModel1 ${resp}= Get Request clamp /restservices/clds/v1/clds/model/TCAModel1 Should Contain Match ${resp} *templateTCA1* Should Contain Match ${resp} *c95b0e7c-c1f0-4287-9928-7964c5377a46* - Should Contain Match ${resp} *enbRecipe* + Should Contain Match ${resp} *vnfRecipe* Should Contain Match ${resp} *DC1* Should Contain Match ${resp} *DC3* Should Contain Match ${resp} *Policy2* - Should Contain Match ${resp} *reset* + Should Contain Match ${resp} *restart* Should Contain Match ${resp} *280* Should Contain Match ${resp} *400* diff --git a/test/csit/tests/dcaegen2/testcases/assets/json_events/ves_pnf_registration_event.json b/test/csit/tests/dcaegen2/testcases/assets/json_events/ves_pnf_registration_event.json new file mode 100644 index 000000000..49d77eb17 --- /dev/null +++ b/test/csit/tests/dcaegen2/testcases/assets/json_events/ves_pnf_registration_event.json @@ -0,0 +1,34 @@ +{ + "event": { + "commonEventHeader": { + "domain": "other", + "eventName": "pnfRegistration_5GDU", + "eventId": "QTFCOC540002E-reg", + "eventType": "pnfRegistration", + "internalHeaderFields": {}, + "lastEpochMicrosec": 1519837825682, + "nfNamingCode": "5GRAN", + "nfcNamingCode": "5DU", + "priority": "Normal", + "reportingEntityName": "5GRAN_DU", + "sequence": 0, + "sourceId": "QTFCOC540002E", + "sourceName": "5GRAN_DU", + "startEpochMicrosec": 1519837825682, + "version": 3 + }, + "otherFields": { + "pnfVendorName": "Nokia", + "pnfOamIpv4Address": "10.16.123.234", + "pnfOamIpv6Address": "<<NONE>>", + "pnfFamily": "BBU", + "pnfType": "AirScale", + "pnfModelNumber": "AJ02", + "pnfSerialNumber": "QTFCOC540002E", + "pnfSoftwareVersion": "v4.5.0.1", + "pnfManufactureDate": 1516406400, + "pnfLastServiceDate": 1517206400, + "otherFieldsVersion": 1 + } + } +}
\ No newline at end of file diff --git a/test/csit/tests/dcaegen2/testcases/dcae_ves.robot b/test/csit/tests/dcaegen2/testcases/dcae_ves.robot index 47ce5f14d..393359f54 100644 --- a/test/csit/tests/dcaegen2/testcases/dcae_ves.robot +++ b/test/csit/tests/dcaegen2/testcases/dcae_ves.robot @@ -1,6 +1,5 @@ *** Settings *** Documentation Testing DCAE VES Listener with various event feeds from VoLTE, vDNS, vFW and cCPE use scenarios - Library RequestsLibrary Library OperatingSystem Library Collections @@ -10,9 +9,6 @@ Test Setup Cleanup VES Events Suite Setup VES Collector Suite Setup DMaaP Suite Teardown VES Collector Suite Shutdown DMaaP - - - *** Variables *** ${VESC_URL_HTTPS} https://%{VESC_IP}:8443 ${VESC_URL} http://%{VESC_IP}:8080 @@ -25,7 +21,7 @@ ${EVENT_MEASURE_FILE} %{WORKSPACE}/test/csit/tests/dcaegen2/t ${EVENT_DATA_FILE_BAD} %{WORKSPACE}/test/csit/tests/dcaegen2/testcases/assets/json_events/ves_volte_single_fault_event_bad.json ${EVENT_BATCH_DATA_FILE} %{WORKSPACE}/test/csit/tests/dcaegen2/testcases/assets/json_events/ves_volte_fault_eventlist_batch.json ${EVENT_THROTTLING_STATE_DATA_FILE} %{WORKSPACE}/test/csit/tests/dcaegen2/testcases/assets/json_events/ves_volte_fault_provide_throttle_state.json - +${EVENT_PNF_REGISTRATION} %{WORKSPACE}/test/csit/tests/dcaegen2/testcases/assets/json_events/ves_pnf_registration_event.json #DCAE Health Check ${CONFIG_BINDING_URL} http://localhost:8443 @@ -34,9 +30,7 @@ ${CB_SERVICE_COMPONENT_PATH} /service_component/ ${VES_Service_Name1} dcae-controller-ves-collector ${VES_Service_Name2} ves-collector-not-exist - *** Test Cases *** - VES Collector Health Check [Tags] DCAE-VESC-R1 [Documentation] Ves Collector Health Check @@ -44,8 +38,7 @@ VES Collector Health Check ${session}= Create Session dcae ${VESC_URL} ${headers}= Create Dictionary Accept=*/* X-TransactionId=${GLOBAL_APPLICATION_ID}-${uuid} X-FromAppId=${GLOBAL_APPLICATION_ID} ${resp}= Get Request dcae /healthcheck headers=${headers} - Should Be Equal As Strings ${resp.status_code} 200 - + Should Be Equal As Strings ${resp.status_code} 200 Publish Single VES VoLTE Fault Event [Tags] DCAE-VESC-R1 @@ -82,8 +75,7 @@ Publish VES VoLTE Fault Batch Events Should Be Equal As Strings ${resp.status_code} 200 #${ret}= DMaaP Message Receive ab305d54-85b4-a31b-7db2-fb6b9e546016 ${ret}= DMaaP Message Receive ab305d54-85b4-a31b-7db2-fb6b9e546025 - Should Be Equal As Strings ${ret} true - + Should Be Equal As Strings ${ret} true Publish Single VES VoLTE Fault Event With Bad Data [Tags] DCAE-VESC-R1 @@ -105,8 +97,7 @@ Publish VES Event With Invalid Method Log Send HTTP Request with invalid method Put instead of Post ${resp}= Publish Event To VES Collector With Put Method No Auth ${VESC_URL} ${VES_ANY_EVENT_PATH} ${headers} ${evtdata} Log Receive HTTP Status code ${resp.status_code} - Should Be Equal As Strings ${resp.status_code} 404 - + Should Be Equal As Strings ${resp.status_code} 404 Publish VES Event With Invalid URL Path [Tags] DCAE-VESC-R1 @@ -116,8 +107,7 @@ Publish VES Event With Invalid URL Path Log Send HTTP Request with invalid /listener/v5/ instead of /eventListener/v5 path ${resp}= Publish Event To VES Collector No Auth ${VESC_URL} /listener/v5/ ${headers} ${evtdata} Log Receive HTTP Status code ${resp.status_code} - Should Be Equal As Strings ${resp.status_code} 404 - + Should Be Equal As Strings ${resp.status_code} 404 #Enable VESC HTTPS And Basic Auth #[Tags] DCAE-VESC-R1 @@ -142,8 +132,7 @@ Publish Single VES Fault Event Over HTTPS ${isEmpty}= Is Json Empty ${resp} Run Keyword If '${isEmpty}' == False Log ${resp.json()} ${ret}= DMaaP Message Receive ab305d54-85b4-a31b-7db2-fb6b9e546015 - Should Be Equal As Strings ${ret} true - + Should Be Equal As Strings ${ret} true Publish Single VES Measurement Event Over HTTPS [Tags] DCAE-VESC-R1 @@ -169,7 +158,6 @@ Publish VES Fault Batch Events Over HTTPS ${ret}= DMaaP Message Receive ab305d54-85b4-a31b-7db2-fb6b9e546025 Should Be Equal As Strings ${ret} true - Publish VES Event With Invalid URL Path HTTPS [Tags] DCAE-VESC-R1 [Documentation] Use invalid url path to expect 404 response @@ -180,22 +168,16 @@ Publish VES Event With Invalid URL Path HTTPS Log Receive HTTP Status code ${resp.status_code} Should Be Equal As Strings ${resp.status_code} 404 - - - - - - - - - - - - - - - - - - - +Publish PNF Registration Event + [Tags] DCAE-VESC-R1 + [Documentation] Post PNF registration event and expect 200 Response + ${evtdata}= Get Event Data From File ${EVENT_PNF_REGISTRATION} + ${headers}= Create Header From String ${HEADER_STRING} + ${resp}= Publish Event To VES Collector No Auth ${VESC_URL} ${VES_ANY_EVENT_PATH} ${headers} ${evtdata} + Log Receive HTTP Status code ${resp.status_code} + Should Be Equal As Strings ${resp.status_code} 200 + ${isEmpty}= Is Json Empty ${resp} + Run Keyword If '${isEmpty}' == False Log ${resp.json()} + ${ret}= DMaaP Message Receive QTFCOC540002E-reg + Should Be Equal As Strings ${ret} true +
\ No newline at end of file diff --git a/test/csit/tests/dmaap-buscontroller/single-mr-suite/test1.robot b/test/csit/tests/dmaap-buscontroller/single-mr-suite/test1.robot index f69538dc6..d68b9ed17 100644 --- a/test/csit/tests/dmaap-buscontroller/single-mr-suite/test1.robot +++ b/test/csit/tests/dmaap-buscontroller/single-mr-suite/test1.robot @@ -4,14 +4,25 @@ Library Collections Library json Library OperatingSystem Library RequestsLibrary - +Library HttpLibrary.HTTP +Library String *** Variables *** ${MESSAGE} Hello, world! ${DBC_URI} webapi -${TOPIC1} singleMRtopic1 -${TOPIC1_DATA} { "topicName":"singleMRtopic1", "topicDescription":"generated for CSIT", "owner":"dgl"} +${DBC_URL} http://${DMAAPBC_IP}:8080/${DBC_URI} +${TOPIC_NS} org.onap.dmaap.onapCSIT +${LOC} csit-sanfrancisco +${PUB_CORE} "dcaeLocationName": "${LOC}", "clientRole": "org.onap.dmaap.client.pub", "action": [ "pub", "view" ] +${SUB_CORE} "dcaeLocationName": "${LOC}", "clientRole": "org.onap.dmaap.client.sub", "action": [ "sub", "view" ] +${PUB} { ${PUB_CORE} } +${SUB} { ${SUB_CORE} } +${TOPIC1_DATA} { "topicName":"singleMRtopic1", "topicDescription":"generated for CSIT", "owner":"dgl"} +${TOPIC2_DATA} { "topicName":"singleMRtopic2", "topicDescription":"generated for CSIT", "owner":"dgl", "clients": [ ${PUB}, ${SUB}] } +${TOPIC3_DATA} { "topicName":"singleMRtopic3", "topicDescription":"generated for CSIT", "owner":"dgl"} +${PUB3_DATA} { "fqtn": "${TOPIC_NS}.singleMRtopic3", ${PUB_CORE} } +${SUB3_DATA} { "fqtn": "${TOPIC_NS}.singleMRtopic3", ${SUB_CORE} } @@ -22,11 +33,54 @@ Url Test ${resp}= Get Request sanity / Should Be Equal As Integers ${resp.status_code} 200 -Create Topic Test - [Documentation] Check POST ${DBC_URI}/topics endpoint - ${resp}= PostCall http://${DMAAPBC_IP}:8080/${DBC_URI}/topics ${TOPIC1_DATA} +(DMAAP-293) + [Documentation] Create Topic w no clients POST ${DBC_URI}/topics endpoint + ${resp}= PostCall ${DBC_URL}/topics ${TOPIC1_DATA} + Should Be Equal As Integers ${resp.status_code} 201 + +(DMAAP-294) + [Documentation] Create Topic w pub and sub clients POST ${DBC_URI}/topics endpoint + ${resp}= PostCall ${DBC_URL}/topics ${TOPIC2_DATA} Should Be Equal As Integers ${resp.status_code} 201 +(DMAAP-295) + [Documentation] Create Topic w no clients and then add a client POST ${DBC_URI}/mr_clients endpoint + ${resp}= PostCall ${DBC_URL}/topics ${TOPIC3_DATA} + Should Be Equal As Integers ${resp.status_code} 201 + ${resp}= PostCall ${DBC_URL}/mr_clients ${PUB3_DATA} + Should Be Equal As Integers ${resp.status_code} 200 + ${resp}= PostCall ${DBC_URL}/mr_clients ${SUB3_DATA} + Should Be Equal As Integers ${resp.status_code} 200 + +(DMAAP-297) + [Documentation] Query for all topics and specific topic + Create Session get ${DBC_URL} + ${resp}= Get Request get /topics + Should Be Equal As Integers ${resp.status_code} 200 + ${resp}= Get Request get /topics/${TOPIC_NS}.singleMRtopic3 + Should Be Equal As Integers ${resp.status_code} 200 + +(DMAAP-301) + [Documentation] Delete a subscriber + Create Session get ${DBC_URL} + ${resp}= Get Request get /topics/${TOPIC_NS}.singleMRtopic3 + Should Be Equal As Integers ${resp.status_code} 200 + ${tmp}= Get Json Value ${resp.text} /clients/1/mrClientId + ${clientId}= Remove String ${tmp} \" + ${resp}= DelCall ${DBC_URL}/mr_clients/${clientId} + Should Be Equal As Integers ${resp.status_code} 204 + +(DMAAP-302) + [Documentation] Delete a publisher + Create Session get ${DBC_URL} + ${resp}= Get Request get /topics/${TOPIC_NS}.singleMRtopic3 + Should Be Equal As Integers ${resp.status_code} 200 + ${tmp}= Get Json Value ${resp.text} /clients/0/mrClientId + ${clientId}= Remove String ${tmp} \" + ${resp}= DelCall ${DBC_URL}/mr_clients/${clientId} + Should Be Equal As Integers ${resp.status_code} 204 + + *** Keywords *** CheckDir [Arguments] ${path} @@ -43,3 +97,8 @@ PostCall ${resp}= Evaluate requests.post('${url}',data='${data}', headers=${headers},verify=False) requests [Return] ${resp} +DelCall + [Arguments] ${url} + ${headers}= Create Dictionary Accept=application/json Content-Type=application/json + ${resp}= Evaluate requests.delete('${url}', headers=${headers},verify=False) requests + [Return] ${resp} diff --git a/test/csit/tests/optf-has/has/data/plan_with_hpa.json b/test/csit/tests/optf-has/has/data/plan_with_hpa.json new file mode 100644 index 000000000..bf314a9cb --- /dev/null +++ b/test/csit/tests/optf-has/has/data/plan_with_hpa.json @@ -0,0 +1,230 @@ +{ + "name":"vCPE-with-HPA", + "template":{ + "homing_template_version":"2017-10-10", + "parameters":{ + "service_name":"Residential vCPE", + "service_id":"vcpe_service_id", + "customer_lat":45.395968, + "customer_long":-71.135344, + "REQUIRED_MEM":4, + "REQUIRED_DISK":100, + "pnf_id":"some_pnf_id" + }, + "locations":{ + "customer_loc":{ + "latitude":{ + "get_param":"customer_lat" + }, + "longitude":{ + "get_param":"customer_long" + } + } + }, + "demands":{ + "vG":[ + { + "inventory_provider":"aai", + "inventory_type":"cloud" + } + ] + }, + "constraints":{ + "constraint_vg_customer":{ + "type":"distance_to_location", + "demands":[ + "vG" + ], + "properties":{ + "distance":"< 100 km", + "location":"customer_loc" + } + }, + "hpa_constraint":{ + "type":"hpa", + "demands":[ + "vG" + ], + "properties":{ + "evaluate":[ + { + "flavorLabel":"flavor_label_1", + "flavorProperties":[ + { + "hpa-feature":"basicCapabilities", + "hpa-version":"v1", + "architecture":"generic", + "mandatory": "False", + "score": "5", + "hpa-feature-attributes":[ + { + "hpa-attribute-key":"numVirtualCpu", + "hpa-attribute-value":"4", + "operator":">=" + }, + { + "hpa-attribute-key":"virtualMemSize", + "hpa-attribute-value":"4", + "operator":">=", + "unit":"GB" + } + ] + }, + { + "hpa-feature":"numa", + "hpa-version":"v1", + "architecture":"generic", + "mandatory": "False", + "score": "5", + "hpa-feature-attributes":[ + { + "hpa-attribute-key":"numaNodes", + "hpa-attribute-value":"2", + "operator":"=" + }, + { + "hpa-attribute-key":"numaCpu-0", + "hpa-attribute-value":"2", + "operator":"=" + }, + { + "hpa-attribute-key":"numaCpu-1", + "hpa-attribute-value":"4", + "operator":"=" + }, + { + "hpa-attribute-key":"numaMem-0", + "hpa-attribute-value":"2", + "operator":"=", + "unit":"GB" + }, + { + "hpa-attribute-key":"numaMem-1", + "hpa-attribute-value":"4", + "operator":"=", + "unit":"GB" + } + ] + }, + { + "hpa-feature":"cpuPinning", + "hpa-version":"v1", + "architecture":"generic", + "mandatory": "False", + "score": "5", + "hpa-feature-attributes":[ + { + "hpa-attribute-key":"logicalCpuThreadPinningPolicy", + "hpa-attribute-value":"prefer", + "operator":"=" + }, + { + "hpa-attribute-key":"logicalCpuPinningPolicy", + "hpa-attribute-value":"dedicated", + "operator":"=" + } + ] + } + ] + }, + { + "flavorLabel":"flavor_label_2", + "flavorProperties":[ + { + "hpa-feature":"basicCapabilities", + "hpa-version":"v1", + "architecture":"generic", + "mandatory": "False", + "score": "5", + "hpa-feature-attributes":[ + { + "hpa-attribute-key":"numVirtualCpu", + "hpa-attribute-value":"8", + "operator":">=" + }, + { + "hpa-attribute-key":"virtualMemSize", + "hpa-attribute-value":"16", + "operator":">=", + "unit":"GB" + } + ] + }, + { + "hpa-feature":"numa", + "hpa-version":"v1", + "architecture":"generic", + "mandatory": "False", + "score": "5", + "hpa-feature-attributes":[ + { + "hpa-attribute-key":"numaNodes", + "hpa-attribute-value":"2", + "operator":"=" + }, + { + "hpa-attribute-key":"numaCpu-0", + "hpa-attribute-value":"2", + "operator":"=" + }, + { + "hpa-attribute-key":"numaCpu-1", + "hpa-attribute-value":"4", + "operator":"=" + }, + { + "hpa-attribute-key":"numaMem-0", + "hpa-attribute-value":"2", + "operator":"=", + "unit":"GB" + }, + { + "hpa-attribute-key":"numaMem-1", + "hpa-attribute-value":"4", + "operator":"=", + "unit":"GB" + } + ] + }, + { + "hpa-feature":"ovsDpdk", + "hpa-version":"v1", + "architecture":"generic", + "mandatory": "False", + "score": "5", + "hpa-feature-attributes":[ + { + "hpa-attribute-key":"dataProcessingAccelerationLibrary", + "hpa-attribute-value":"v18.02", + "operator":"=" + } + ] + } + ] + } + ] + } + } + }, + "optimization":{ + "minimize":{ + "sum":[ + { + "distance_between":[ + "customer_loc", + "vG" + ] + }, + { + "distance_between":[ + "customer_loc", + "vG" + ] + } + ] + } + } + }, + "timeout":5, + "limit":3 +} diff --git a/test/csit/tests/optf-has/has/data/plan_with_hpa_requirements_mandatory.json b/test/csit/tests/optf-has/has/data/plan_with_hpa_requirements_mandatory.json new file mode 100644 index 000000000..80685ae8e --- /dev/null +++ b/test/csit/tests/optf-has/has/data/plan_with_hpa_requirements_mandatory.json @@ -0,0 +1,165 @@ +{ + "name":"vCPE-with-HPA-requirement-mandatory", + "template":{ + "homing_template_version":"2017-10-10", + "parameters":{ + "service_name":"Residential vCPE", + "service_id":"vcpe_service_id", + "customer_lat":45.395968, + "customer_long":-71.135344, + "REQUIRED_MEM":4, + "REQUIRED_DISK":100, + "pnf_id":"some_pnf_id" + }, + "locations":{ + "customer_loc":{ + "latitude":{ + "get_param":"customer_lat" + }, + "longitude":{ + "get_param":"customer_long" + } + } + }, + "demands":{ + "vG":[ + { + "inventory_provider":"aai", + "inventory_type":"cloud" + } + ] + }, + "constraints":{ + "constraint_vg_customer":{ + "type":"distance_to_location", + "demands":[ + "vG" + ], + "properties":{ + "distance":"< 100 km", + "location":"customer_loc" + } + }, + "hpa_constraint":{ + "type":"hpa", + "demands":[ + "vG" + ], + "properties":{ + "evaluate":[ + { + "flavorLabel":"flavor_label_1", + "flavorProperties":[ + { + "hpa-feature":"basicCapabilities", + "hpa-version":"v1", + "architecture":"generic", + "mandatory": "True", + "hpa-feature-attributes":[ + { + "hpa-attribute-key":"numVirtualCpu", + "hpa-attribute-value":"64", + "operator":"=" + }, + { + "hpa-attribute-key":"virtualMemSize", + "hpa-attribute-value":"64", + "operator":"=", + "unit":"GB" + } + ] + }, + { + "hpa-feature":"numa", + "hpa-version":"v1", + "architecture":"generic", + "mandatory":"True", + "hpa-feature-attributes":[ + { + "hpa-attribute-key":"numaNodes", + "hpa-attribute-value":"2", + "operator":"=" + }, + { + "hpa-attribute-key":"numaCpu-0", + "hpa-attribute-value":"2", + "operator":"=" + }, + { + "hpa-attribute-key":"numaCpu-1", + "hpa-attribute-value":"4", + "operator":"=" + }, + { + "hpa-attribute-key":"numaMem-0", + "hpa-attribute-value":"2", + "operator":"=", + "unit":"GB" + }, + { + "hpa-attribute-key":"numaMem-1", + "hpa-attribute-value":"4", + "operator":"=", + "unit":"GB" + } + ] + } + ] + }, + { + "flavorLabel":"flavor_label_2", + "flavorProperties":[ + { + "hpa-feature":"basicCapabilities", + "hpa-version":"v1", + "architecture":"generic", + "mandatory": "True", + "hpa-feature-attributes":[ + { + "hpa-attribute-key":"numVirtualCpu", + "hpa-attribute-value":"32", + "operator":"=" + }, + { + "hpa-attribute-key":"virtualMemSize", + "hpa-attribute-value":"128", + "operator":"=", + "unit":"GB" + } + ] + }, + { + "hpa-feature":"ovsDpdk", + "hpa-version":"v1", + "architecture":"generic", + "mandatory": "True", + "hpa-feature-attributes":[ + { + "hpa-attribute-key":"dataProcessingAccelerationLibrary", + "hpa-attribute-value":"v18.02", + "operator":"=" + } + ] + } + ] + } + ] + } + } + }, + "optimization":{ + "minimize":{ + "sum":[ + { + "distance_between":[ + "customer_loc", + "vG" + ] + } + ] + } + } + }, + "timeout":5, + "limit":3 +} diff --git a/test/csit/tests/optf-has/has/data/plan_with_hpa_requirements_optionals.json b/test/csit/tests/optf-has/has/data/plan_with_hpa_requirements_optionals.json new file mode 100644 index 000000000..4672349d2 --- /dev/null +++ b/test/csit/tests/optf-has/has/data/plan_with_hpa_requirements_optionals.json @@ -0,0 +1,217 @@ +{ + "name":"vCPE-HPA-Requirement-Optional", + "template":{ + "homing_template_version":"2017-10-10", + "parameters":{ + "service_name":"Residential vCPE", + "service_id":"vcpe_service_id", + "customer_lat":45.395968, + "customer_long":-71.135344, + "REQUIRED_MEM":4, + "REQUIRED_DISK":100, + "pnf_id":"some_pnf_id" + }, + "locations":{ + "customer_loc":{ + "latitude":{ + "get_param":"customer_lat" + }, + "longitude":{ + "get_param":"customer_long" + } + } + }, + "demands":{ + "vG":[ + { + "inventory_provider":"aai", + "inventory_type":"cloud" + } + ] + }, + "constraints":{ + "constraint_vg_customer":{ + "type":"distance_to_location", + "demands":[ + "vG" + ], + "properties":{ + "distance":"< 100 km", + "location":"customer_loc" + } + }, + "hpa_constraint":{ + "type":"hpa", + "demands":[ + "vG" + ], + "properties":{ + "evaluate":[ + { + "flavorLabel":"flavor_label_1", + "flavorProperties":[ + { + "hpa-feature":"basicCapabilities", + "hpa-version":"v1", + "architecture":"generic", + "mandatory": "True", + "hpa-feature-attributes":[ + { + "hpa-attribute-key":"numVirtualCpu", + "hpa-attribute-value":"4", + "operator":">=" + }, + { + "hpa-attribute-key":"virtualMemSize", + "hpa-attribute-value":"8", + "operator":">=", + "unit":"GB" + } + ] + }, + { + "hpa-feature":"instructionSetExtensions", + "hpa-version":"v1", + "architecture":"Intel64", + "mandatory": "True", + "hpa-feature-attributes":[ + { + "hpa-attribute-key":"instructionSetExtensions", + "hpa-attribute-value":["aes", "sse", "avx", "smt"], + "operator":"ALL", + "unit":"" + } + ] + }, + { + "hpa-feature":"numa", + "hpa-version":"v1", + "architecture":"generic", + "mandatory":"False", + "score":"3", + "hpa-feature-attributes":[ + { + "hpa-attribute-key":"numaNodes", + "hpa-attribute-value":"2", + "operator":"=" + }, + { + "hpa-attribute-key":"numaCpu-0", + "hpa-attribute-value":"2", + "operator":"=" + }, + { + "hpa-attribute-key":"numaCpu-1", + "hpa-attribute-value":"4", + "operator":"=" + }, + { + "hpa-attribute-key":"numaMem-0", + "hpa-attribute-value":"2", + "operator":"=", + "unit":"GB" + }, + { + "hpa-attribute-key":"numaMem-1", + "hpa-attribute-value":"4", + "operator":"=", + "unit":"GB" + } + ] + } + ] + }, + { + "flavorLabel":"flavor_label_2", + "flavorProperties":[ + { + "hpa-feature":"basicCapabilities", + "hpa-version":"v1", + "architecture":"generic", + "mandatory": "True", + "hpa-feature-attributes":[ + { + "hpa-attribute-key":"numVirtualCpu", + "hpa-attribute-value":"4", + "operator":">=" + }, + { + "hpa-attribute-key":"virtualMemSize", + "hpa-attribute-value":"8", + "operator":">=", + "unit":"GB" + } + ] + }, + { + "hpa-feature":"ovsDpdk", + "hpa-version":"v1", + "architecture":"generic", + "mandatory": "False", + "score":"5", + "hpa-feature-attributes":[ + { + "hpa-attribute-key":"dataProcessingAccelerationLibrary", + "hpa-attribute-value":"v18.02", + "operator":"=" + } + ] + }, + { + "hpa-feature":"numa", + "hpa-version":"v1", + "architecture":"generic", + "mandatory":"False", + "score":"3", + "hpa-feature-attributes":[ + { + "hpa-attribute-key":"numaNodes", + "hpa-attribute-value":"2", + "operator":"=" + }, + { + "hpa-attribute-key":"numaCpu-0", + "hpa-attribute-value":"2", + "operator":"=" + }, + { + "hpa-attribute-key":"numaCpu-1", + "hpa-attribute-value":"4", + "operator":"=" + }, + { + "hpa-attribute-key":"numaMem-0", + "hpa-attribute-value":"2", + "operator":"=", + "unit":"GB" + }, + { + "hpa-attribute-key":"numaMem-1", + "hpa-attribute-value":"4", + "operator":"=", + "unit":"GB" + } + ] + } + ] + } + ] + } + } + }, + "optimization":{ + "minimize":{ + "sum":[ + { + "distance_between":[ + "customer_loc", + "vG" + ] + } + ] + } + } + }, + "timeout":5, + "limit":3 +} diff --git a/test/csit/tests/optf-has/has/data/plan_with_hpa_simple.json b/test/csit/tests/optf-has/has/data/plan_with_hpa_simple.json new file mode 100644 index 000000000..25b226280 --- /dev/null +++ b/test/csit/tests/optf-has/has/data/plan_with_hpa_simple.json @@ -0,0 +1,129 @@ +{ + "name":"vCPE-with-HPA", + "template":{ + "homing_template_version":"2017-10-10", + "parameters":{ + "service_name":"Residential vCPE", + "service_id":"vcpe_service_id", + "customer_lat":45.395968, + "customer_long":-71.135344, + "REQUIRED_MEM":4, + "REQUIRED_DISK":100, + "pnf_id":"some_pnf_id" + }, + "locations":{ + "customer_loc":{ + "latitude":{ + "get_param":"customer_lat" + }, + "longitude":{ + "get_param":"customer_long" + } + } + }, + "demands":{ + "vG":[ + { + "inventory_provider":"aai", + "inventory_type":"cloud" + } + ] + }, + "constraints":{ + "hpa_constraint":{ + "type":"hpa", + "demands":[ + "vG" + ], + "properties":{ + "evaluate":[ + { + "flavorLabel":"flavor_label_1", + "flavorProperties":[ + { + "hpa-feature":"basicCapabilities", + "hpa-version":"v1", + "architecture":"generic", + "mandatory": "False", + "score": "5", + "hpa-feature-attributes":[ + { + "hpa-attribute-key":"numVirtualCpu", + "hpa-attribute-value":"32", + "operator":"=" + }, + { + "hpa-attribute-key":"virtualMemSize", + "hpa-attribute-value":"64", + "operator":"=", + "unit":"GB" + } + ] + }, + { + "hpa-feature":"ovsDpdk", + "hpa-version":"v1", + "architecture":"generic", + "mandatory": "False", + "score": "5", + "hpa-feature-attributes":[ + { + "hpa-attribute-key":"dataProcessingAccelerationLibrary", + "hpa-attribute-value":"v18.02", + "operator":"=" + } + ] + } + ] + }, + { + "flavorLabel":"flavor_label_2", + "flavorProperties":[ + { + "hpa-feature":"basicCapabilities", + "hpa-version":"v1", + "architecture":"generic", + "mandatory": "False", + "score": "5", + "hpa-feature-attributes":[ + { + "hpa-attribute-key":"numVirtualCpu", + "hpa-attribute-value":"8", + "operator":">=" + }, + { + "hpa-attribute-key":"virtualMemSize", + "hpa-attribute-value":"16", + "operator":">=", + "unit":"GB" + } + ] + } + ] + } + ] + } + } + }, + "optimization":{ + "minimize":{ + "sum":[ + { + "distance_between":[ + "customer_loc", + "vG" + ] + }, + { + "distance_between":[ + "customer_loc", + "vG" + ] + } + ] + } + } + }, + "timeout":5, + "limit":3 +} diff --git a/test/csit/tests/optf-has/has/data/plan_with_hpa_unmatched.json b/test/csit/tests/optf-has/has/data/plan_with_hpa_unmatched.json new file mode 100644 index 000000000..8a3198566 --- /dev/null +++ b/test/csit/tests/optf-has/has/data/plan_with_hpa_unmatched.json @@ -0,0 +1,117 @@ +{ + "name":"vCPE-with-HPA-unmatched-requirements", + "template":{ + "homing_template_version":"2017-10-10", + "parameters":{ + "service_name":"Residential vCPE", + "service_id":"vcpe_service_id", + "customer_lat":45.395968, + "customer_long":-71.135344, + "REQUIRED_MEM":4, + "REQUIRED_DISK":100, + "pnf_id":"some_pnf_id" + }, + "locations":{ + "customer_loc":{ + "latitude":{ + "get_param":"customer_lat" + }, + "longitude":{ + "get_param":"customer_long" + } + } + }, + "demands":{ + "vG":[ + { + "inventory_provider":"aai", + "inventory_type":"cloud" + } + ] + }, + "constraints":{ + "constraint_vgmux_customer":{ + "type":"distance_to_location", + "demands":[ + "vG" + ], + "properties":{ + "distance":"< 100 km", + "location":"customer_loc" + } + }, + "hpa_constraint":{ + "type":"hpa", + "demands":[ + "vG" + ], + "properties":{ + "evaluate":[ + { + "flavorLabel":"flavor_label_1", + "flavorProperties":[ + { + "hpa-feature":"basicCapabilities", + "hpa-version":"v1", + "architecture":"generic", + "mandatory": "True", + "hpa-feature-attributes":[ + { + "hpa-attribute-key":"numVirtualCpu", + "hpa-attribute-value":"60", + "operator":"=" + }, + { + "hpa-attribute-key":"virtualMemSize", + "hpa-attribute-value":"64", + "operator":"=", + "unit":"GB" + } + ] + } + ] + }, + { + "flavorLabel":"flavor_label_2", + "flavorProperties":[ + { + "hpa-feature":"basicCapabilities", + "hpa-version":"v1", + "architecture":"generic", + "mandatory":"True", + "hpa-feature-attributes":[ + { + "hpa-attribute-key":"numVirtualCpu", + "hpa-attribute-value":"30", + "operator":"=" + }, + { + "hpa-attribute-key":"virtualMemSize", + "hpa-attribute-value":"128", + "operator":"=", + "unit":"GB" + } + ] + } + ] + } + ] + } + } + }, + "optimization":{ + "minimize":{ + "sum":[ + { + "distance_between":[ + "customer_loc", + "vG" + ] + } + ] + } + } + }, + "timeout":5, + "limit":3 +} diff --git a/test/csit/tests/optf-has/has/data/plan_with_vim_fit.json b/test/csit/tests/optf-has/has/data/plan_with_vim_fit.json new file mode 100644 index 000000000..00a599125 --- /dev/null +++ b/test/csit/tests/optf-has/has/data/plan_with_vim_fit.json @@ -0,0 +1,89 @@ +{ + "name":"vCPE-Sanity1", + "template":{ + "homing_template_version":"2017-10-10", + "parameters":{ + "service_name":"Residential vCPE", + "service_id":"vcpe_service_id", + "customer_lat":45.395968, + "customer_long":-71.135344, + "REQUIRED_MEM":4, + "REQUIRED_DISK":100, + "pnf_id":"some_pnf_id" + }, + "locations":{ + "customer_loc":{ + "latitude":{ + "get_param":"customer_lat" + }, + "longitude":{ + "get_param":"customer_long" + } + } + }, + "demands":{ + "vG":[ + { + "inventory_provider":"aai", + "inventory_type":"cloud" + } + ] + }, + "constraints":{ + "constraint_vg_customer":{ + "type":"distance_to_location", + "demands":[ + "vG" + ], + "properties":{ + "distance":"< 100 km", + "location":"customer_loc" + } + }, + "check_cloud_capacity":{ + "type":"vim_fit", + "demands":[ + "vG" + ], + "properties":{ + "controller":"multicloud", + "request":{ + "vCPU":10, + "Memory":{ + "quantity":{ + "get_param":"REQUIRED_MEM" + }, + "unit":"GB" + }, + "Storage":{ + "quantity":{ + "get_param":"REQUIRED_DISK" + }, + "unit":"GB" + } + } + } + } + }, + "optimization":{ + "minimize":{ + "sum":[ + { + "distance_between":[ + "customer_loc", + "vG" + ] + }, + { + "distance_between":[ + "customer_loc", + "vG" + ] + } + ] + } + } + }, + "timeout":5, + "limit":3 +} diff --git a/test/csit/tests/optf-has/has/optf_has_test.robot b/test/csit/tests/optf-has/has/optf_has_test.robot index 62db10774..815ffa850 100644 --- a/test/csit/tests/optf-has/has/optf_has_test.robot +++ b/test/csit/tests/optf-has/has/optf_has_test.robot @@ -295,6 +295,191 @@ GetPlanWithShortDistanceConstraint Should Be Equal As Integers ${resp.status_code} 200 Should Be Equal not found ${resultStatus} +SendPlanWithVimFit + [Documentation] It sends a POST request to conductor + Create Session optf-cond ${COND_HOSTNAME}:${COND_PORT} + ${data}= Get Binary File ${CURDIR}${/}data${/}plan_with_vim_fit.json + &{headers}= Create Dictionary Content-Type=application/json Accept=application/json + ${resp}= Post Request optf-cond /v1/plans data=${data} headers=${headers} + Log To Console ********************* + Log To Console response = ${resp} + Log To Console body = ${resp.text} + ${response_json} json.loads ${resp.content} + ${generatedPlanId}= Convert To String ${response_json['id']} + Set Global Variable ${generatedPlanId} + Log To Console generatedPlanId = ${generatedPlanId} + Should Be Equal As Integers ${resp.status_code} 201 + Sleep 60s Wait Plan Resolution + +GetPlanWithVimFit + [Documentation] It sends a REST GET request to capture recommendations + Create Session optf-cond ${COND_HOSTNAME}:${COND_PORT} + &{headers}= Create Dictionary Content-Type=application/json Accept=application/json + ${resp}= Get Request optf-cond /v1/plans/${generatedPlanId} headers=${headers} + Log To Console ********************* + Log To Console response = ${resp} + ${response_json} json.loads ${resp.content} + ${resultStatus}= Convert To String ${response_json['plans'][0]['status']} + Set Global Variable ${resultStatus} + Log To Console resultStatus = ${resultStatus} + Log To Console body = ${resp.text} + Should Be Equal As Integers ${resp.status_code} 200 + Should Be Equal done ${resultStatus} + +SendPlanWithHpa + [Documentation] It sends a POST request to conductor + Create Session optf-cond ${COND_HOSTNAME}:${COND_PORT} + ${data}= Get Binary File ${CURDIR}${/}data${/}plan_with_hpa.json + &{headers}= Create Dictionary Content-Type=application/json Accept=application/json + ${resp}= Post Request optf-cond /v1/plans data=${data} headers=${headers} + Log To Console ********************* + Log To Console response = ${resp} + Log To Console body = ${resp.text} + ${response_json} json.loads ${resp.content} + ${generatedPlanId}= Convert To String ${response_json['id']} + Set Global Variable ${generatedPlanId} + Log To Console generatedPlanId = ${generatedPlanId} + Should Be Equal As Integers ${resp.status_code} 201 + Sleep 60s Wait Plan Resolution + +GetPlanWithHpa + [Documentation] It sends a REST GET request to capture recommendations + Create Session optf-cond ${COND_HOSTNAME}:${COND_PORT} + &{headers}= Create Dictionary Content-Type=application/json Accept=application/json + ${resp}= Get Request optf-cond /v1/plans/${generatedPlanId} headers=${headers} + Log To Console ********************* + Log To Console response = ${resp} + ${response_json} json.loads ${resp.content} + ${resultStatus}= Convert To String ${response_json['plans'][0]['status']} + Set Global Variable ${resultStatus} + Log To Console resultStatus = ${resultStatus} + Log To Console body = ${resp.text} + Should Be Equal As Integers ${resp.status_code} 200 + Should Be Equal done ${resultStatus} + +SendPlanWithHpaSimple + [Documentation] It sends a POST request to conductor + Create Session optf-cond ${COND_HOSTNAME}:${COND_PORT} + ${data}= Get Binary File ${CURDIR}${/}data${/}plan_with_hpa_simple.json + &{headers}= Create Dictionary Content-Type=application/json Accept=application/json + ${resp}= Post Request optf-cond /v1/plans data=${data} headers=${headers} + Log To Console ********************* + Log To Console response = ${resp} + Log To Console body = ${resp.text} + ${response_json} json.loads ${resp.content} + ${generatedPlanId}= Convert To String ${response_json['id']} + Set Global Variable ${generatedPlanId} + Log To Console generatedPlanId = ${generatedPlanId} + Should Be Equal As Integers ${resp.status_code} 201 + Sleep 60s Wait Plan Resolution + +GetPlanWithHpaSimple + [Documentation] It sends a REST GET request to capture recommendations + Create Session optf-cond ${COND_HOSTNAME}:${COND_PORT} + &{headers}= Create Dictionary Content-Type=application/json Accept=application/json + ${resp}= Get Request optf-cond /v1/plans/${generatedPlanId} headers=${headers} + Log To Console ********************* + Log To Console response = ${resp} + ${response_json} json.loads ${resp.content} + ${resultStatus}= Convert To String ${response_json['plans'][0]['status']} + Set Global Variable ${resultStatus} + Log To Console resultStatus = ${resultStatus} + Log To Console body = ${resp.text} + Should Be Equal As Integers ${resp.status_code} 200 + Should Be Equal done ${resultStatus} + +SendPlanWithHpaMandatory + [Documentation] It sends a POST request to conductor + Create Session optf-cond ${COND_HOSTNAME}:${COND_PORT} + ${data}= Get Binary File ${CURDIR}${/}data${/}plan_with_hpa_requirements_mandatory.json + &{headers}= Create Dictionary Content-Type=application/json Accept=application/json + ${resp}= Post Request optf-cond /v1/plans data=${data} headers=${headers} + Log To Console ********************* + Log To Console response = ${resp} + Log To Console body = ${resp.text} + ${response_json} json.loads ${resp.content} + ${generatedPlanId}= Convert To String ${response_json['id']} + Set Global Variable ${generatedPlanId} + Log To Console generatedPlanId = ${generatedPlanId} + Should Be Equal As Integers ${resp.status_code} 201 + Sleep 60s Wait Plan Resolution + +GetPlanWithHpaMandatory + [Documentation] It sends a REST GET request to capture recommendations + Create Session optf-cond ${COND_HOSTNAME}:${COND_PORT} + &{headers}= Create Dictionary Content-Type=application/json Accept=application/json + ${resp}= Get Request optf-cond /v1/plans/${generatedPlanId} headers=${headers} + Log To Console ********************* + Log To Console response = ${resp} + ${response_json} json.loads ${resp.content} + ${resultStatus}= Convert To String ${response_json['plans'][0]['status']} + Set Global Variable ${resultStatus} + Log To Console resultStatus = ${resultStatus} + Log To Console body = ${resp.text} + Should Be Equal As Integers ${resp.status_code} 200 + Should Be Equal done ${resultStatus} + +SendPlanWithHpaOptionals + [Documentation] It sends a POST request to conductor + Create Session optf-cond ${COND_HOSTNAME}:${COND_PORT} + ${data}= Get Binary File ${CURDIR}${/}data${/}plan_with_hpa_requirements_optionals.json + &{headers}= Create Dictionary Content-Type=application/json Accept=application/json + ${resp}= Post Request optf-cond /v1/plans data=${data} headers=${headers} + Log To Console ********************* + Log To Console response = ${resp} + Log To Console body = ${resp.text} + ${response_json} json.loads ${resp.content} + ${generatedPlanId}= Convert To String ${response_json['id']} + Set Global Variable ${generatedPlanId} + Log To Console generatedPlanId = ${generatedPlanId} + Should Be Equal As Integers ${resp.status_code} 201 + Sleep 60s Wait Plan Resolution + +GetPlanWithHpaOptionals + [Documentation] It sends a REST GET request to capture recommendations + Create Session optf-cond ${COND_HOSTNAME}:${COND_PORT} + &{headers}= Create Dictionary Content-Type=application/json Accept=application/json + ${resp}= Get Request optf-cond /v1/plans/${generatedPlanId} headers=${headers} + Log To Console ********************* + Log To Console response = ${resp} + ${response_json} json.loads ${resp.content} + ${resultStatus}= Convert To String ${response_json['plans'][0]['status']} + Set Global Variable ${resultStatus} + Log To Console resultStatus = ${resultStatus} + Log To Console body = ${resp.text} + Should Be Equal As Integers ${resp.status_code} 200 + Should Be Equal done ${resultStatus} + +SendPlanWithHpaUnmatched + [Documentation] It sends a POST request to conductor + Create Session optf-cond ${COND_HOSTNAME}:${COND_PORT} + ${data}= Get Binary File ${CURDIR}${/}data${/}plan_with_hpa_unmatched.json + &{headers}= Create Dictionary Content-Type=application/json Accept=application/json + ${resp}= Post Request optf-cond /v1/plans data=${data} headers=${headers} + Log To Console ********************* + Log To Console response = ${resp} + Log To Console body = ${resp.text} + ${response_json} json.loads ${resp.content} + ${generatedPlanId}= Convert To String ${response_json['id']} + Set Global Variable ${generatedPlanId} + Log To Console generatedPlanId = ${generatedPlanId} + Should Be Equal As Integers ${resp.status_code} 201 + Sleep 60s Wait Plan Resolution + +GetPlanWithHpaUnmatched + [Documentation] It sends a REST GET request to capture recommendations + Create Session optf-cond ${COND_HOSTNAME}:${COND_PORT} + &{headers}= Create Dictionary Content-Type=application/json Accept=application/json + ${resp}= Get Request optf-cond /v1/plans/${generatedPlanId} headers=${headers} + Log To Console ********************* + Log To Console response = ${resp} + ${response_json} json.loads ${resp.content} + ${resultStatus}= Convert To String ${response_json['plans'][0]['status']} + Set Global Variable ${resultStatus} + Log To Console resultStatus = ${resultStatus} + Log To Console body = ${resp.text} + Should Be Equal As Integers ${resp.status_code} 200 + Should Be Equal not found ${resultStatus} *** Keywords *** diff --git a/test/csit/tests/portal/testsuites/test1.robot b/test/csit/tests/portal/testsuites/test1.robot index 90aa10788..0b61807b2 100644 --- a/test/csit/tests/portal/testsuites/test1.robot +++ b/test/csit/tests/portal/testsuites/test1.robot @@ -1,17 +1,17 @@ *** Settings *** Documentation This is RobotFrame work script -Library ExtendedSelenium2Library -Library OperatingSystem -Library eteutils/RequestsClientCert.py -Library RequestsLibrary -Library eteutils/UUID.py -Library DateTime -Library Collections -Library eteutils/OSUtils.py -Library eteutils/StringTemplater.py -Library XvfbRobot -Resource json_templater.robot - +Library ExtendedSelenium2Library +Library OperatingSystem +Library eteutils/RequestsClientCert.py +Library RequestsLibrary +Library eteutils/UUID.py +Library DateTime +Library Collections +Library eteutils/OSUtils.py +Library eteutils/StringTemplater.py +Library String +Library XvfbRobot +Resource json_templater.robot *** Variables *** ${PORTAL_URL} http://portal.api.simpledemo.onap.org:8989 @@ -40,16 +40,20 @@ ${Test_Loginpwd} demo123456! ${Test_LoginPwdCheck} demo123456! ${Existing_User} portal ${PORTAL_HEALTH_CHECK_PATH} /ONAPPORTAL/portalApi/healthCheck +${PORTAL_XDEMPAPP_REST_URL} http://portal-sdk:8080/ONAPPORTALSDK/api/v2 ${PORTAL_ASSETS_DIRECTORY} ${CURDIR} ${GLOBAL_APPLICATION_ID} robot-functional ${GLOBAL_PORTAL_ADMIN_USER} demo ${GLOBAL_PORTAL_ADMIN_PWD} demo123456! +${AppAccountName} testApp +${AppUserName} testApp +${AppPassword} testApp123! ${GLOBAL_MSO_STATUS_PATH} /ecomp/mso/infra/orchestrationRequests/v2/ ${GLOBAL_SELENIUM_BROWSER} chrome ${GLOBAL_SELENIUM_BROWSER_CAPABILITIES} Create Dictionary ${GLOBAL_SELENIUM_DELAY} 0 ${GLOBAL_SELENIUM_BROWSER_IMPLICIT_WAIT} 5 -${GLOBAL_SELENIUM_BROWSER_WAIT_TIMEOUT} 15 +${GLOBAL_SELENIUM_BROWSER_WAIT_TIMEOUT} 45 ${GLOBAL_OPENSTACK_HEAT_SERVICE_TYPE} orchestration ${GLOBAL_OPENSTACK_CINDER_SERVICE_TYPE} volume ${GLOBAL_OPENSTACK_NOVA_SERVICE_TYPE} compute @@ -63,7 +67,8 @@ ${RESOURCE_PATH} ONAPPORTAL/auxapi/ticketevent ${portal_Template} ${CURDIR}/portal.template ${Result} FALSE - +${td_id} 0 +${download_link_id} 0 *** Test Cases *** @@ -77,119 +82,134 @@ Login into Portal URL # [Documentation] ONAP Portal R1 functionality test # Notification on ONAP Portal # Portal Application Account Management validation + +Portal Change REST URL Of X-DemoApp + [Documentation] Portal Change REST URL Of X-DemoApp + Portal Change REST URL Portal R1 Release for AAF [Documentation] ONAP Portal R1 functionality for AAF test Portal AAF new fields -#Create Microse service onboarding - #Portal admin Microservice Onboarding +Create Microse service onboarding + Portal admin Microservice Onboarding -#Delete Microse service - #Portal admin Microservice Delete +##Delete Microse service + ##Portal admin Microservice Delete -#Create Widget for all users - #Portal Admin Create Widget for All users +Create Widget for all users + Portal Admin Create Widget for All users -# Delete Widget for all users - # Portal Admin Delete Widget for All users +Delete Widget for all users + Portal Admin Delete Widget for All users -#Create Widget for Application Roles - #Portal Admin Create Widget for Application Roles +Create Widget for Application Roles + Portal Admin Create Widget for Application Roles #Delete Widget for Application Roles - #Portal Admin Delete Widget for Application Roles + #Portal Admin Delete Widget for Application Roles -#Validate Functional Top Menu Get Access - #Functional Top Menu Get Access +##EP Admin widget download + ##Admin widget download -#Validate Functional Top Menu Contact Us - #Functional Top Menu Contact Us +EP Admin widget layout reset + Reset widget layout option + +Validate Functional Top Menu Get Access + Functional Top Menu Get Access -#Edit Functional Menu - #Portal admin Edit Functional menu +Validate Functional Top Menu Contact Us + Functional Top Menu Contact Us +Edit Functional Menu + Portal admin Edit Functional menu -# Broadbond Notification functionality - # ${AdminBroadCastMsg}= Portal Admin Broadcast Notifications - # set global variable ${AdminBroadCastMsg} +Broadbond Notification functionality + ${AdminBroadCastMsg}= Portal Admin Broadcast Notifications + set global variable ${AdminBroadCastMsg} -# Category Notification functionality - # ${AdminCategoryMsg}= Portal Admin Category Notifications - # set global variable ${AdminCategoryMsg} +Category Notification functionality + ${AdminCategoryMsg}= Portal Admin Category Notifications + set global variable ${AdminCategoryMsg} -#Create a Test user for Application Admin -Test - #Portal admin Add Application admin User New user -Test +Create a Test user for Application Admin -Test + Portal admin Add Application admin User New user -Test -#Create a Test User for Apllication Admin - #Portal admin Add Application admin User New user +Create a Test User for Apllication Admin + Portal admin Add Application admin User New user -#Add Application Admin for Existing User Test user - #Portal admin Add Application Admin Exiting User -APPDEMO +Add Application Admin for Existing User Test user + Portal admin Add Application Admin Exiting User -APPDEMO -#Create a Test user for Standared User - #Portal admin Add Standard User New user +Create a Test user for Standared User + Portal admin Add Standard User New user -#Add Application Admin for Exisitng User - #Portal admin Add Application Admin Exiting User +Add Application Admin for Exisitng User + Portal admin Add Application Admin Exiting User -#Delete Application Admin for Exisitng User - #Portal admin Delete Application Admin Existing User +Delete Application Admin for Exisitng User + Portal admin Delete Application Admin Existing User -# Add Standard User Role for Existing user - # Portal admin Add Standard User Existing user +#Add Standard User Role for Existing user + #Portal admin Add Standard User Existing user -# Edit Standard User Role for Existing user - # Portal admin Edit Standard User Existing user +#Edit Standard User Role for Existing user + #Portal admin Edit Standard User Existing user - #Delete Standard User Role for Existing user - #Portal admin Delete Standard User Existing user - + #Portal admin Delete Standard User Existing user + +#Add Account new account from App Account Management + #Portal admin Add New Account + +#Delete Account new account from App Account Management + #Portal admin Delete Account + Logout from Portal GUI as Portal Admin - Portal admin Logout from Portal GUI + Portal admin Logout from Portal GUI -# Application Admin user Test cases +## Application Admin user Test cases -#Login To Portal GUI as APP Admin - #Application admin Login To Portal GUI +Login To Portal GUI as APP Admin + Application admin Login To Portal GUI ##Navigate Functional Link as APP Admin -## Application Admin Navigation Functional Menu + ##Application Admin Navigation Functional Menu -# Add Standard User Role for Existing user as APP Admin - # Application admin Add Standard User Existing user +#Add Standard User Role for Existing user as APP Admin + #Application admin Add Standard User Existing user -# Edit Standard User Role for Existing user as APP Admin - # Application admin Edit Standard User Existing user +#Edit Standard User Role for Existing user as APP Admin + #Application admin Edit Standard User Existing user -# Delete Standard User Role for Existing user as APP Admin - # Application admin Delete Standard User Existing user +#Delete Standard User Role for Existing user as APP Admin + #Application admin Delete Standard User Existing user -# #Navigate Application Link as APP Admin -# # Application Admin Navigation Application Link Tab +#Navigate Application Link as APP Admin + #Application Admin Navigation Application Link Tab -#Logout from Portal GUI as APP Admin - #Application admin Logout from Portal GUI +Logout from Portal GUI as APP Admin + Application admin Logout from Portal GUI -#Standard User Test cases +##Standard User Test cases -#Login To Portal GUI as Standared User - #Standared user Login To Portal GUI +Login To Portal GUI as Standared User + Standared user Login To Portal GUI #Navigate Application Link as Standared User -# Standared user Navigation Application Link Tab + #Standared user Navigation Application Link Tab -##Navigate Functional Link as Standared User -## Standared user Navigation Functional Menu - +#Navigate Functional Link as Standared User + #Standared user Navigation Functional Menu -# Broadcast Notifications Standared user - # Standared user Broadcast Notifications ${AdminBroadCastMsg} +#Broadcast Notifications Standared user + #Standared user Broadcast Notifications ${AdminBroadCastMsg} -# Category Notifications Standared user - # Standared user Category Notifications ${AdminCategoryMsg} +#Category Notifications Standared user + #Standared user Category Notifications ${AdminCategoryMsg} +Logout from Portal GUI as Standared User + Standared User Logout from Portal GUI Teardown [Documentation] Close All Open browsers @@ -231,6 +251,7 @@ Run Portal Health Check ${resp}= Run Portal Get Request ${PORTAL_HEALTH_CHECK_PATH} Should Be Equal As Strings ${resp.status_code} 200 Should Be Equal As Strings ${resp.json()['statusCode']} 200 + Run Portal Get Request [Documentation] Runs Portal Get request [Arguments] ${data_path} @@ -259,7 +280,8 @@ Portal admin Login To Portal GUI Input Password xpath=//input[@ng-model='password'] ${GLOBAL_PORTAL_ADMIN_PWD} Click Link xpath=//a[@id='loginBtn'] Wait Until Page Contains Element xpath=//img[@alt='Onap Logo'] ${GLOBAL_SELENIUM_BROWSER_WAIT_TIMEOUT} - Log Logged in to ${PORTAL_URL}${PORTAL_ENV} + #Execute Javascript document.getElementById('w-ecomp-footer').style.display = 'none' + Log Logged in to ${PORTAL_URL}${PORTAL_ENV} Portal admin Go To Portal HOME [Documentation] Naviage to Portal Home @@ -272,10 +294,7 @@ Portal admin User Notifications Wait Until Element Is Visible xpath=//h1[@class='heading-page'] ${GLOBAL_SELENIUM_BROWSER_WAIT_TIMEOUT} Click Button xpath=//button[@id='button-openAddNewApp'] Click Button xpath=(//button[@id='undefined'])[1] - #Click Button xpath=//input[@id='datepicker-start'] - - - + #Click Button xpath=//input[@id='datepicker-start'] Portal admin Add Application Admin Exiting User [Documentation] Naviage to Admins tab @@ -458,8 +477,6 @@ Portal admin Add Application admin User New user -Test #Input Text xpath=//input[@id='input-table-search'] ${Test_First_Name} #Element Text Should Be xpath=(//span[contains(.,'appdemo')] )[1] ${Test_First_Name} - - Portal admin Add Application Admin Exiting User -APPDEMO [Documentation] Naviage to Admins tab Wait Until Element Is Visible xpath=//a[@title='Admins'] ${GLOBAL_SELENIUM_BROWSER_WAIT_TIMEOUT} @@ -501,8 +518,8 @@ Portal admin Add Standard User Existing user Click Button xpath=//button[@id='next-button'] # Click Element xpath=//*[@id='div-app-name-dropdown-Default'] # Click Element xpath=//*[@id='div-app-name-Default']/following::input[@id='Standard-User-checkbox'] - Click Element xpath=//div[@id='div-app-name-dropdown-xDemo-App'] - Click Element xpath=//div[@id='div-app-name-xDemo-App']/following::input[@id='Standard-User-checkbox'] + Click Element xpath=//div[@id='app-select-Select roles1'] + Click Element xpath=//div[@id='app-select-Select roles1']/following::input[@id='Standard-User-checkbox'] Set Selenium Implicit Wait 3000 Click Button xpath=//button[@id='new-user-save-button'] Set Selenium Implicit Wait 3000 @@ -520,18 +537,41 @@ Portal admin Add Standard User Existing user Element Text Should Be xpath=(.//*[@id='rowheader_t1_0'])[2] Standard User Set Selenium Implicit Wait 3000 -Portal admin Edit Standard User Existing user +Portal admin Edit Standard User Existing user [Documentation] Naviage to Users tab + Click Link xpath=//a[@title='Users'] + Click Element xpath=//input[@id='dropdown1'] + # Click Element xpath=//li[contains(.,'Default')] +# Set Selenium Implicit Wait 3000 + Click Element xpath=//li[contains(.,'xDemo App')] +# Set Selenium Implicit Wait 3000 + Input Text xpath=//input[@id='input-table-search'] ${Existing_User} + Element Text Should Be xpath=(.//*[@id='rowheader_t1_0'])[2] Standard User Click Element xpath=(.//*[@id='rowheader_t1_0'])[2] -# Click Element xpath=//*[@id='div-app-name-dropdown-Default'] -# Click Element xpath=//*[@id='div-app-name-Default']/following::input[@id='Standard-User-checkbox'] -# Click Element xpath=//*[@id='div-app-name-Default']/following::input[@id='Portal-Notification-Admin-checkbox'] - Click Element xpath=//*[@id='div-app-name-dropdown-xDemo-App'] - Click Element xpath=//*[@id='div-app-name-xDemo-App']/following::input[@id='Standard-User-checkbox'] - Click Element xpath=//*[@id='div-app-name-xDemo-App']/following::input[@id='Portal-Notification-Admin-checkbox'] -# Click Element xpath=//*[@id='div-app-name-dropdown-SDC'] -# Click Element xpath=//*[@id='div-app-name-SDC']/following::input[@id='Standard-User-checkbox'] -# Click Element xpath=//*[@id='div-app-name-SDC']/following::input[@id='Portal-Notification-Admin-checkbox'] + # Click Element xpath=//*[@id='div-app-name-dropdown-Default'] + # Click Element xpath=//*[@id='div-app-name-Default']/following::input[@id='Standard-User-checkbox'] + # Click Element xpath=//*[@id='div-app-name-Default']/following::input[@id='Portal-Notification-Admin-checkbox'] + Click Element xpath=//*[@id='app-select-Standard User1'] + Click Element xpath=//*[@id='app-select-Standard User1']/following::input[@id='Standard-User-checkbox'] + Set Selenium Implicit Wait 3000 + Click Button xpath=//button[@id='new-user-save-button'] + Set Selenium Implicit Wait 3000 + + Page Should Contain Users + Click Button xpath=//button[@ng-click='toggleSidebar()'] + Click Button xpath=//button[@ng-click='users.openAddNewUserModal()'] + Input Text xpath=//input[@id='input-user-search'] ${Existing_User} + Click Button xpath=//button[@id='button-search-users'] + Click Element xpath=//span[@id='result-uuid-0'] + Click Button xpath=//button[@id='next-button'] + Click Element xpath=//div[@id='app-select-Select roles1'] + Click Element xpath=//div[@id='app-select-Select roles1']/following::input[@id='System-Administrator-checkbox'] + Set Selenium Implicit Wait 3000 +# Click Element xpath=//*[@id='app-select-Standard User1'] +# Click Element xpath=//*[@id='app-select-Standard User1']/following::input[@id='System-Administrator-checkbox'] + # Click Element xpath=//*[@id='div-app-name-dropdown-SDC'] + # Click Element xpath=//*[@id='div-app-name-SDC']/following::input[@id='Standard-User-checkbox'] + # Click Element xpath=//*[@id='div-app-name-SDC']/following::input[@id='Portal-Notification-Admin-checkbox'] Set Selenium Implicit Wait 3000 Click Button xpath=//button[@id='new-user-save-button'] Set Selenium Implicit Wait 3000 @@ -539,6 +579,7 @@ Portal admin Edit Standard User Existing user #Click Button xpath=//input[@id='dropdown1'] #Click Element xpath=//li[contains(.,'xDemo App')] Input Text xpath=//input[@id='input-table-search'] ${Existing_User} + # Element Text Should Be xpath=(.//*[@id='rowheader_t1_0'])[2] Portal Notification Admin Element Text Should Be xpath=(.//*[@id='rowheader_t1_0'])[2] System Administrator Set Selenium Implicit Wait 3000 @@ -561,6 +602,7 @@ Portal admin Edit Standard User Existing user Functional Top Menu Get Access [Documentation] Naviage to Support tab + Go To ${PORTAL_HOME_URL} Click Link xpath=//a[contains(.,'Support')] Mouse Over xpath=//*[contains(text(),'Get Access')] Click Link xpath=//a[contains(.,'Get Access')] @@ -618,7 +660,8 @@ Portal admin Edit Functional menu Set Selenium Implicit Wait 3000 Element Should Not Contain xpath=(.//*[contains(.,'Design')]/following::ul[1])[1] ONAP Test Set Selenium Implicit Wait 3000 - + Click Image xpath=//img[@alt='Onap Logo'] + Set Selenium Implicit Wait 3000 Portal admin Microservice Onboarding [Documentation] Naviage to Edit Functional menu tab @@ -658,7 +701,7 @@ Portal admin Microservice Delete Input Text xpath=//input[@name='username'] ${GLOBAL_PORTAL_ADMIN_USER} Input Text xpath=//input[@name='password'] ${GLOBAL_PORTAL_ADMIN_PWD} Click Button xpath=//button[@id='microservice-details-save-button'] - Table Column Should Contain xpath=//*[@table-data='serviceList'] 1 TestMS + Execute Javascript window.scrollTo(0,document.body.scrollHeight); Click Element xpath=(.//*[contains(text(),'TestMS')]/following::*[@ng-click='microserviceOnboarding.deleteService(rowData)'])[1] Click Button xpath=//button[@id="div-confirm-ok-button"] Set Selenium Implicit Wait 3000 @@ -666,20 +709,21 @@ Portal admin Microservice Delete Portal Admin Create Widget for All users [Documentation] Navigate to Create Widget menu tab ${WidgetAttachment}= Catenate ${PORTAL_ASSETS_DIRECTORY}//news_widget.zip + Wait until page contains Element xpath=//a[@title='Widget Onboarding'] ${GLOBAL_SELENIUM_BROWSER_WAIT_TIMEOUT} Click Link xpath=//a[@title='Widget Onboarding'] Click Button xpath=//button[@ng-click='toggleSidebar()'] Click Button xpath=//button[@id='widget-onboarding-button-add'] Input Text xpath=//*[@name='name'] ONAP-xDemo Input Text xpath=//*[@name='desc'] ONAP xDemo Click Element xpath=//*[@id='widgets-details-input-endpoint-url'] - Scroll Element Into View xpath=//li[contains(.,'Test Microservice')] - Click Element xpath=//li[contains(.,'Test Microservice')] + Scroll Element Into View xpath=//li[contains(.,'News Microservice')] + Click Element xpath=//li[contains(.,'News Microservice')] Click Element xpath=//*[contains(text(),'Allow all user access')]/preceding::input[@ng-model='widgetOnboardingDetails.widget.allUser'][1] Choose File xpath=//input[@id='widget-onboarding-details-upload-file'] ${WidgetAttachment} Click Button xpath=//button[@id='widgets-details-save-button'] - Wait Until Page Contains ONAP-xDemo ${GLOBAL_SELENIUM_BROWSER_WAIT_TIMEOUT} + Wait Until Page Contains ONAP-xDemo ${GLOBAL_SELENIUM_BROWSER_WAIT_TIMEOUT} Page Should Contain ONAP-xDemo - Set Selenium Implicit Wait 3000 + Set Selenium Implicit Wait 3000 GO TO ${PORTAL_HOME_PAGE} @@ -711,12 +755,12 @@ Portal Admin Create Widget for Application Roles Input Text xpath=//*[@name='name'] ONAP-xDemo Input Text xpath=//*[@name='desc'] ONAP xDemo Click Element xpath=//*[@id='widgets-details-input-endpoint-url'] - Scroll Element Into View xpath=//li[contains(.,'Test Microservice')] - Click Element xpath=//li[contains(.,'Test Microservice')] + Scroll Element Into View xpath=//li[contains(.,'News Microservice')] + Click Element xpath=//li[contains(.,'News Microservice')] Click element xpath=//*[@id="app-select-Select Applications"] click element xpath=//*[@id="xDemo-App-checkbox"] Click element xpath=//*[@name='desc'] - click element xpath=//*[@id="app-select-Select Roles"] + click element xpath=//*[@id="app-select-Select Roles0"] click element xpath=//*[@id="Standard-User-checkbox"] Click element xpath=//*[@name='desc'] Scroll Element Into View xpath=//input[@id='widget-onboarding-details-upload-file'] @@ -775,12 +819,12 @@ Portal Admin Edit Widget Portal Admin Broadcast Notifications [Documentation] Portal Test Admin Broadcast Notifications - ${CurrentDay}= Get Current Date increment=24:00:00 result_format=%m/%d/%Y ${NextDay}= Get Current Date increment=48:00:00 result_format=%m/%d/%Y ${CurrentDate}= Get Current Date increment=24:00:00 result_format=%m%d%y%H%M ${AdminBroadCastMsg}= catenate ONAP VID Broadcast Automation${CurrentDate} - Click Image xpath=//img[@alt='Onap Logo'] + Go To ${PORTAL_HOME_URL} + Click Image xpath=//img[@alt='Onap Logo'] Set Selenium Implicit Wait 3000 Click Link xpath=//*[@id="parent-item-User-Notifications"] Wait until Element is visible xpath=//*[@id="button-openAddNewApp"] timeout=10 @@ -793,8 +837,9 @@ Portal Admin Broadcast Notifications Wait until Element is visible xpath=//*[@id="button-openAddNewApp"] timeout=10 click element xpath=//*[@id="megamenu-notification-button"] click element xpath=//*[@id="notification-history-link"] - Wait until Element is visible xpath=//*[@id="notification-history-table"] timeout=10 - Table Column Should Contain xpath=//*[@id="notification-history-table"] 2 ${AdminBroadCastMsg} +# Notification bug, Uncomment the code when PORTAL-232 is fixed + # Wait until Element is visible xpath=//*[@id="notification-history-table"] timeout=10 + # Table Column Should Contain xpath=//*[@id="notification-history-table"] 2 ${AdminBroadCastMsg} Set Selenium Implicit Wait 3000 log ${AdminBroadCastMsg} [Return] ${AdminBroadCastMsg} @@ -823,21 +868,19 @@ Portal Admin Category Notifications Wait until Element is visible xpath=//*[@id="button-openAddNewApp"] timeout=10 click element xpath=//*[@id="megamenu-notification-button"] click element xpath=//*[@id="notification-history-link"] - Wait until Element is visible xpath=//*[@id="notification-history-table"] timeout=10 - Table Column Should Contain xpath=//*[@id="notification-history-table"] 2 ${AdminCategoryMsg} +# Notification bug, Uncomment the code when PORTAL-232 is fixed + # Wait until Element is visible xpath=//*[@id="notification-history-table"] timeout=10 + # Table Column Should Contain xpath=//*[@id="notification-history-table"] 2 ${AdminCategoryMsg} Set Selenium Implicit Wait 3000 log ${AdminCategoryMsg} [Return] ${AdminCategoryMsg} - Portal admin Logout from Portal GUI [Documentation] Logout from Portal GUI Click Element xpath=//div[@id='header-user-icon'] Click Button xpath=//button[contains(.,'Log out')] Title Should Be Login - - Application admin Login To Portal GUI [Documentation] Logs into Portal GUI # Setup Browser Now being managed by test case @@ -876,7 +919,7 @@ Application Admin Navigation Functional Menu Click Element xpath=(.//span[@id='tab-Home'])[1] -Application admin Add Standard User Existing user +Application admin Add Standard User Existing user [Documentation] Naviage to Users tab Click Link xpath=//a[@title='Users'] Page Should Contain Users @@ -887,9 +930,10 @@ Application admin Add Standard User Existing user Click Element xpath=//span[@id='result-uuid-0'] Click Button xpath=//button[@id='next-button'] Click Element xpath=//*[@id='div-app-name-dropdown-xDemo-App'] - Set Selenium Implicit Wait 3000 Click Element xpath=//*[@id='div-app-name-xDemo-App']/following::input[@id='Standard-User-checkbox'] - Set Selenium Implicit Wait 3000 + # Click Element xpath=//*[@id='div-app-name-dropdown-Default'] + # Click Element xpath=//*[@id='div-app-name-Default']/following::input[@id='Standard-User-checkbox'] + # Set Selenium Implicit Wait 3000 Click Button xpath=//button[@id='new-user-save-button'] Set Selenium Implicit Wait 3000 #Set Browser Implicit Wait ${GLOBAL_SELENIUM_BROWSER_IMPLICIT_WAIT} @@ -900,20 +944,21 @@ Application admin Add Standard User Existing user Set Selenium Implicit Wait 3000 Click Link xpath=//a[@title='Users'] Click Element xpath=//input[@id='dropdown1'] + #Click Element xpath=//li[contains(.,'Default')] Click Element xpath=//li[contains(.,'xDemo App')] Input Text xpath=//input[@id='input-table-search'] ${Existing_User} + # Element Text Should Be xpath=(.//*[@id='rowheader_t1_0'])[2] Account Administrator Element Text Should Be xpath=(.//*[@id='rowheader_t1_0'])[2] Standard User - -Application admin Edit Standard User Existing user +Application admin Edit Standard User Existing user [Documentation] Naviage to Users tab Click Element xpath=(.//*[@id='rowheader_t1_0'])[2] -# Click Element xpath=//*[@id='div-app-name-dropdown-Default'] -# Click Element xpath=//*[@id='div-app-name-Default']/following::input[@id='Standard-User-checkbox'] -# Click Element xpath=//*[@id='div-app-name-Default']/following::input[@id='Portal-Notification-Admin-checkbox'] + # Click Element xpath=//*[@id='div-app-name-dropdown-Default'] + # Click Element xpath=//*[@id='div-app-name-Default']/following::input[@id='Standard-User-checkbox'] + # Click Element xpath=//*[@id='div-app-name-Default']/following::input[@id='Portal-Notification-Admin-checkbox'] Click Element xpath=//*[@id='div-app-name-dropdown-xDemo-App'] Click Element xpath=//*[@id='div-app-name-xDemo-App']/following::input[@id='Standard-User-checkbox'] - Click Element xpath=//*[@id='div-app-name-xDemo-App']/following::input[@id='Portal-Notification-Admin-checkbox'] + Click Element xpath=//*[@id='div-app-name-xDemo-App']/following::input[@id='System-Administrator-checkbox'] Set Selenium Implicit Wait 3000 Click Button xpath=//button[@id='new-user-save-button'] Set Selenium Implicit Wait 3000 @@ -921,9 +966,9 @@ Application admin Edit Standard User Existing user #Click Button xpath=//input[@id='dropdown1'] #Click Element xpath=//li[contains(.,'xDemo App')] Input Text xpath=//input[@id='input-table-search'] ${Existing_User} + # Element Text Should Be xpath=(.//*[@id='rowheader_t1_0'])[2] Account Administrator Element Text Should Be xpath=(.//*[@id='rowheader_t1_0'])[2] System Administrator - Application admin Delete Standard User Existing user [Documentation] Naviage to Users tab Click Element xpath=(.//*[@id='rowheader_t1_0'])[2] @@ -939,8 +984,6 @@ Application admin Delete Standard User Existing user #Click Image xpath=//img[@alt='Onap Logo'] Set Selenium Implicit Wait 3000 - - Application admin Logout from Portal GUI [Documentation] Logout from Portal GUI Click Element xpath=//div[@id='header-user-icon'] @@ -948,10 +991,6 @@ Application admin Logout from Portal GUI Click Button xpath=//button[contains(text(),'Log out')] #Set Selenium Implicit Wait 3000 Title Should Be Login - - - - Standared user Login To Portal GUI [Documentation] Logs into Portal GUI @@ -970,7 +1009,6 @@ Standared user Login To Portal GUI Wait Until Page Contains Element xpath=//img[@alt='Onap Logo'] ${GLOBAL_SELENIUM_BROWSER_WAIT_TIMEOUT} Log Logged in to ${PORTAL_URL}${PORTAL_ENV} - Standared user Navigation Application Link Tab [Documentation] Logs into Portal GUI as application admin #Portal admin Go To Portal HOME @@ -1008,7 +1046,6 @@ Standared user Category Notifications Table Column Should Contain xpath=//*[@id='notification-history-table'] 2 ${AdminCategoryMsg} log ${AdminCategoryMsg} - Standared user Logout from Portal GUI [Documentation] Logout from Portal GUI Click Element xpath=//div[@id='header-user-icon'] @@ -1016,35 +1053,48 @@ Standared user Logout from Portal GUI #Confirm Action Title Should Be Login - - - -Tear Down +Portal admin Add New Account + Click Link //*[@id="parent-item-App-Account-Management"] + Click Button xpath=//button[@ng-click='toggleSidebar()'] + Set Selenium Implicit Wait 3000 + Click Button //*[@id="account-onboarding-button-add"] + Set Selenium Implicit Wait 3000 + Input Text //*[@id="account-details-input-name"] ${AppAccountName} + Input Text //*[@id="account-details-input-username"] ${AppUserName} + Input Text //*[@id="account-details-input-password"] ${AppPassword} + Input Text //*[@id="account-details-input-repassword"] ${AppPassword} + # Click Button xpath=//*[@ng-click='accountAddDetails.saveChanges()'] + # #Click Button xpath=//button[@ng-click='admins.openAddNewAdminModal()'] + #account-details-next-button + Click Button xpath=//button[@ng-click='accountAddDetails.saveChanges()'] + +Portal admin Delete Account + Click Link //*[@id="parent-item-App-Account-Management"] + Click Button xpath=//button[@ng-click='toggleSidebar()'] + Set Selenium Implicit Wait 3000 + Click Button //*[@id="account-onboarding-button-add"] + Set Selenium Implicit Wait 3000 + +Tear Down [Documentation] Close all browsers Close All Browsers - Enhanced Notification on ONAP Portal [Documentation] Runs portal Post request [Arguments] ${data_path} ${data} -# Log Creating session ${GLOBAL_PORTAL_SERVER_URL} + # Log Creating session ${GLOBAL_PORTAL_SERVER_URL} ${session}= Create Session portal ${PORTAL_URL} ${headers}= Create Dictionary Accept=application/json Content-Type=application/json Authorization=Basic amlyYTpfcGFzcw== username=jira password=_pass ${resp}= Post Request portal ${data_path} data=${data} headers=${headers} -# Log Received response from portal ${resp.text} + # Log Received response from portal ${resp.text} [Return] ${resp} - - - + Notification on ONAP Portal [Documentation] Create Config portal ${configportal}= Create Dictionary jira_id=${jira} ${output} = Fill JSON Template File ${portal_Template} ${configportal} ${post_resp} = Enhanced Notification on ONAP Portal ${RESOURCE_PATH} ${output} Should Be Equal As Strings ${post_resp.status_code} 200 - - - Portal Application Account Management [Documentation] Naviage to Application Account Management tab @@ -1057,7 +1107,7 @@ Portal Application Account Management Click Element xpath=//div[@ng-click='accountAddDetails.saveChanges()'] Element Text Should Be xpath=//*[@table-data='serviceList'] JIRA -Portal Application Account Management validation +Portal Application Account Management validation [Documentation] Naviage to user notification tab Click Link xpath=//a[@id='parent-item-User-Notifications'] click element xpath=//*[@id="megamenu-notification-button"] @@ -1066,13 +1116,40 @@ Portal Application Account Management validation Table Column Should Contain xpath=//*[@id="notification-history-table"] 1 JIRA -Portal AAF new fields +Portal AAF new fields [Documentation] Naviage to user Application details tab Click Link xpath=//a[@title='Application Onboarding'] Click Element xpath=//td[contains(.,'xDemo App')] Page Should Contain Name Space Page Should Contain Centralized Click Element xpath=//button[@id='button-notification-cancel'] + +Portal Change REST URL + [Documentation] Naviage to user Application details tab + Click Link xpath=//a[@title='Application Onboarding'] + Click Element xpath=//td[contains(.,'xDemo App')] + Input Text xpath=//input[@name='restUrl'] ${PORTAL_XDEMPAPP_REST_URL} + Click Element xpath=//button[@id='button-save-app'] - - +Admin widget download + Go To ${PORTAL_HOME_URL} + Wait until page contains Element xpath=//a[@title='Widget Onboarding'] ${GLOBAL_SELENIUM_BROWSER_WAIT_TIMEOUT} + click Link xpath=//a[@title='Widget Onboarding'] + Wait until page contains Element xpath=//table[@class='ng-scope'] + ${td_id}= get element attribute xpath=//*[contains(text(),'Events')]@id + log ${td_id} + ${test}= Get Substring ${td_id} -1 + log ${test} + ${download_link_id}= Catenate 'widget-onboarding-div-download-widget-${test}' + click Element xpath=//*[@id=${download_link_id}] + +Reset widget layout option + Go To ${PORTAL_HOME_URL} + Wait Until Page Contains Element xpath=//div[@id='widget-boarder'] ${GLOBAL_SELENIUM_BROWSER_WAIT_TIMEOUT} + Execute Javascript document.getElementById('widgets').scrollTo(0,1400) + Wait Until Page Contains Element xpath=//*[@id='widget-gridster-Events-icon'] ${GLOBAL_SELENIUM_BROWSER_WAIT_TIMEOUT} + Execute Javascript document.getElementById('widgets').scrollTo(0,1800) + Drag And Drop By Offset xpath=//*[@id='widget-gridster-Events-icon'] 500 500 + Execute Javascript document.getElementById('widgets').scrollTo(0,document.getElementById('widgets').scrollHeight); + Execute Javascript document.getElementById('dashboardDefaultPreference').click() + Execute Javascript document.getElementById('div-confirm-ok-button').click() diff --git a/test/ete/labs/gwu/apt-proxy.sh b/test/ete/labs/gwu/apt-proxy.sh index d69415bd8..e1c4f0891 100755 --- a/test/ete/labs/gwu/apt-proxy.sh +++ b/test/ete/labs/gwu/apt-proxy.sh @@ -13,6 +13,3 @@ sed -i '/#!\/bin\/bash/a\ Acquire::https::Proxy "DIRECT";\ EOF\ apt-get -y update' $1 - -# don't use insecure docker proxy in dcae -perl -i -0pe 's/(?<=dcae_c_vm:)(.*?)\{ get_param: nexus_docker_repo \}/$1"nexus3.onap.org:10001"/s' $1 diff --git a/test/ete/labs/huawei/apt-proxy.sh b/test/ete/labs/huawei/apt-proxy.sh index 37018ca6b..b95299302 100755 --- a/test/ete/labs/huawei/apt-proxy.sh +++ b/test/ete/labs/huawei/apt-proxy.sh @@ -11,6 +11,3 @@ sed -i '/#!\/bin\/bash/a\ Acquire::https::Proxy "DIRECT";\ EOF\ apt-get -y update' $1 - -# don't use insecure docker proxy in dcae -perl -i -0pe 's/(?<=dcae_c_vm:)(.*?)\{ get_param: nexus_docker_repo \}/$1"nexus3.onap.org:10001"/s' $1 diff --git a/test/ete/labs/tlab/apt-proxy.sh b/test/ete/labs/tlab/apt-proxy.sh index f2094ee2f..3cf547452 100755 --- a/test/ete/labs/tlab/apt-proxy.sh +++ b/test/ete/labs/tlab/apt-proxy.sh @@ -11,6 +11,3 @@ sed -i '/#!\/bin\/bash/a\ Acquire::https::Proxy "DIRECT";\ EOF\ apt-get -y update' $1 - -# don't use insecure docker proxy in dcae -perl -i -0pe 's/(?<=dcae_c_vm:)(.*?)\{ get_param: nexus_docker_repo \}/$1"nexus3.onap.org:10001"/s' $1 diff --git a/test/ete/labs/tlab/onap-openstack-template.env b/test/ete/labs/tlab/onap-openstack-template.env index 3da2ca937..3b702c48e 100644 --- a/test/ete/labs/tlab/onap-openstack-template.env +++ b/test/ete/labs/tlab/onap-openstack-template.env @@ -92,6 +92,7 @@ parameters: music_ip_addr: 10.0.15.1 oof_ip_addr: 10.0.16.1 aaf_ip_addr: 10.0.13.1 + sms_ip_addr: 10.0.13.2 nbi_ip_addr: 10.0.17.1 ########################### diff --git a/test/ete/labs/windriver/apt-proxy.sh b/test/ete/labs/windriver/apt-proxy.sh index 54b15bba6..365b5d015 100755 --- a/test/ete/labs/windriver/apt-proxy.sh +++ b/test/ete/labs/windriver/apt-proxy.sh @@ -11,6 +11,3 @@ sed -i '/#!\/bin\/bash/a\ Acquire::https::Proxy "DIRECT";\ EOF\ apt-get -y update' $1 - -# don't use insecure docker proxy in dcae -perl -i -0pe 's/(?<=dcae_c_vm:)(.*?)\{ get_param: nexus_docker_repo \}/$1"nexus3.onap.org:10001"/s' $1 diff --git a/test/ete/labs/windriver/onap-openstack-template.env b/test/ete/labs/windriver/onap-openstack-template.env index 6f4ea8783..da4b0e7e5 100644 --- a/test/ete/labs/windriver/onap-openstack-template.env +++ b/test/ete/labs/windriver/onap-openstack-template.env @@ -92,6 +92,7 @@ parameters: music_ip_addr: 10.0.15.1 oof_ip_addr: 10.0.16.1 aaf_ip_addr: 10.0.13.1 + sms_ip_addr: 10.0.13.2 nbi_ip_addr: 10.0.17.1 ########################### diff --git a/test/ete/scripts/install_openstack_cli.sh b/test/ete/scripts/install_openstack_cli.sh index 8f1529606..842034eef 100755 --- a/test/ete/scripts/install_openstack_cli.sh +++ b/test/ete/scripts/install_openstack_cli.sh @@ -24,10 +24,10 @@ else ONAP_VENV=$(mktemp -d --suffix=_onap_venv) virtualenv ${ONAP_VENV} source ${ONAP_VENV}/bin/activate - + pip install --upgrade pip - pip install openstacksdk==0.9.19 python-openstackclient python-heatclient python-designateclient - + pip install python-openstackclient python-heatclient python-designateclient + echo "ONAP_VENV=${ONAP_VENV}" >> $WORKSPACE/env.properties fi echo "ONAP_VENV=${ONAP_VENV}" diff --git a/version-manifest/pom.xml b/version-manifest/pom.xml index b2102d5dc..22634cb31 100644 --- a/version-manifest/pom.xml +++ b/version-manifest/pom.xml @@ -121,6 +121,19 @@ </arguments> </configuration> </execution> + <execution> + <id>check-docker-images-exist</id> + <phase>validate</phase> + <goals> + <goal>exec</goal> + </goals> + <configuration> + <arguments> + <argument>${project.basedir}/src/main/scripts/check-docker-manifest.sh</argument> + <argument>${project.basedir}/src/main/resources/docker-manifest.csv</argument> + </arguments> + </configuration> + </execution> </executions> </plugin> </plugins> diff --git a/version-manifest/src/main/resources/docker-manifest.csv b/version-manifest/src/main/resources/docker-manifest.csv index 15d1a0a26..c4d5b6082 100644 --- a/version-manifest/src/main/resources/docker-manifest.csv +++ b/version-manifest/src/main/resources/docker-manifest.csv @@ -1,34 +1,37 @@ image,tag -onap/aaf,2.1.0-SNAPSHOT +onap/aaf/aaf_service,2.1.0-SNAPSHOT +onap/aaf/sms,latest onap/aai-resources,1.2-STAGING-latest onap/aai-traversal,1.2-STAGING-latest onap/aai/esr-gui,1.1.0-SNAPSHOT onap/aai/esr-server,1.1.0-SNAPSHOT onap/admportal-sdnc-image,1.3-STAGING-latest onap/appc-image,1.3.0-SNAPSHOT-latest -onap/ccsdk-dgbuilder-image,0.2.1-SNAPSHOT -onap/ccsdk-odl-image,0.2.1-SNAPSHOT -onap/ccsdk-odlsli-image,0.2.1-SNAPSHOT +onap/ccsdk-dgbuilder-image,0.2-STAGING-latest +onap/ccsdk-odl-image,0.2-STAGING-latest +onap/ccsdk-odlsli-image,0.2-STAGING-latest onap/clamp,2.0-STAGING-latest -onap/cli,v1.1.0 +onap/cli,2.0-STAGING-latest onap/data-router,1.2-STAGING-latest -onap/dmaap/dmaap-mr,1.0.1 +onap/dmaap/buscontroller,latest +onap/dmaap/dmaap-mr,1.1.4 onap/externalapi/nbi,latest -onap/holmes/engine-management,v1.0.0 -onap/holmes/rule-management,v1.0.0 +onap/holmes/engine-management,latest +onap/holmes/rule-management,latest onap/model-loader,1.2-STAGING-latest onap/modeling/javatoscachecker,latest onap/msb/msb_apigateway,1.1.0-STAGING-latest onap/msb/msb_discovery,1.1.0-STAGING-latest -onap/multicloud/framework,v1.0.0 -onap/multicloud/openstack-newton,1.0.0-SNAPSHOT -onap/multicloud/openstack-ocata,1.0.0-SNAPSHOT -onap/multicloud/openstack-windriver,1.0.0-SNAPSHOT -onap/multicloud/vio,1.0.0-SNAPSHOT +onap/multicloud/framework,1.1.2-STAGING +onap/multicloud/openstack-newton,1.1.2-SNAPSHOT +onap/multicloud/openstack-ocata,1.1.2-SNAPSHOT +onap/multicloud/openstack-windriver,1.1.2-SNAPSHOT +onap/multicloud/vio,1.1.2-STAGING onap/multicloud/vio-vesagent,1.0.0 -onap/music,latest -onap/oof,latest -onap/oom/kube2msb,1.0.0 +onap/music/music,latest +onap/oom/kube2msb,v1.0.0 +onap/optf-has,latest +onap/optf-osdf,latest onap/org.onap.dcaegen2.collectors.snmptrap,latest onap/org.onap.dcaegen2.collectors.ves.vescollector,latest onap/org.onap.dcaegen2.deployments.bootstrap,1.1.2 @@ -44,8 +47,8 @@ onap/org.onap.dcaegen2.platform.policy-handler,latest onap/org.onap.dcaegen2.platform.servicechange-handler,latest onap/org.onap.dcaegen2.services.heartbeat,latest onap/org.onap.dcaegen2.services.prh.prh-app-server,latest -onap/policy-drools,1.2-STAGING-latest -onap/policy-pe,1.2-STAGING-latest +onap/policy-drools,1.2.0 +onap/policy-pe,1.2.0 onap/portal-app,2.1-STAGING-latest onap/portal-db,2.1-STAGING-latest onap/portal-wms,2.1-STAGING-latest @@ -55,6 +58,7 @@ onap/sdc-frontend,1.2-STAGING-latest onap/sdc-kibana,1.2-STAGING-latest onap/sdc-sanity,1.2-STAGING-latest onap/sdc/sdc-workflow-designer,1.1.0-SNAPSHOT-STAGING-latest +onap/sdnc-ansible-server-image,1.3-STAGING-latest onap/sdnc-dmaap-listener-image,1.3-STAGING-latest onap/sdnc-image,1.3-STAGING-latest onap/sdnc-ueb-listener-image,1.3-STAGING-latest @@ -82,6 +86,6 @@ onap/vfc/ztesdncdriver,1.1.0-STAGING-latest onap/vfc/ztevmanagerdriver,1.0.3-STAGING-latest onap/vfc/ztevnfmdriver,1.1.0-STAGING-latest onap/vid,1.2.1 -onap/vnfsdk/refrepo,1.0.0 -onap/vnfsdk/refrepo-postgres,1.0.0 +onap/vnfsdk/refrepo,1.1-STAGING-latest +onap/vnfsdk/refrepo/postgres,latest openecomp/mso,1.2.1 diff --git a/version-manifest/src/main/resources/java-manifest.csv b/version-manifest/src/main/resources/java-manifest.csv index 4bed11cda..8210eb33a 100644 --- a/version-manifest/src/main/resources/java-manifest.csv +++ b/version-manifest/src/main/resources/java-manifest.csv @@ -55,26 +55,34 @@ org.onap.aai.sparky-be,sparky-be,1.2.0 org.onap.aai.sparky-fe,sparky-fe,1.2.0 org.onap.aai.traversal,aai-traversal,1.2.0 org.onap.aai.traversal,traversal,1.2.0 -org.onap.ccsdk.parent,odlparent-carbon-sr1,0.0.2 -org.onap.ccsdk.sli.adaptors,aai-service-provider,0.1.0 -org.onap.ccsdk.sli.adaptors,mdsal-resource-provider,0.1.0 -org.onap.ccsdk.sli.adaptors,resource-assignment-provider,0.1.0 -org.onap.ccsdk.sli.adaptors,sql-resource-provider,0.1.0 -org.onap.ccsdk.sli.core,dblib-provider,0.1.2 -org.onap.ccsdk.sli.core,filters-provider,0.1.2 -org.onap.ccsdk.sli.core,sli-common,0.1.2 -org.onap.ccsdk.sli.core,sli-provider,0.1.2 -org.onap.ccsdk.sli.core,sli-recording,0.1.2 -org.onap.ccsdk.sli.core,sliPluginUtils-provider,0.1.2 -org.onap.ccsdk.sli.core,sliapi-provider,0.1.2 -org.onap.ccsdk.sli.core,utils-provider,1.0.0 -org.onap.ccsdk.sli.northbound,asdcApi-provider,0.1.0 -org.onap.ccsdk.sli.northbound,dataChange-provider,0.1.0 -org.onap.ccsdk.sli.northbound,dmaap-listener,0.1.0 -org.onap.ccsdk.sli.northbound,ueb-listener,0.1.0 -org.onap.ccsdk.sli.plugins,fabric-discovery-plugin-provider,0.1.0 -org.onap.ccsdk.sli.plugins,properties-node-provider,0.1.0 -org.onap.ccsdk.sli.plugins,restapi-call-node-provider,0.1.0 +org.onap.ccsdk.parent,binding-parent,1.0.1 +org.onap.ccsdk.parent,bundle-parent,1.0.1 +org.onap.ccsdk.parent,feature-repo-parent,1.0.1 +org.onap.ccsdk.parent,karaf4-parent,1.0.1 +org.onap.ccsdk.parent,mdsal-it-parent,1.0.1 +org.onap.ccsdk.parent,odlparent,1.0.1 +org.onap.ccsdk.parent,odlparent-lite,1.0.1 +org.onap.ccsdk.parent,single-feature-parent,1.0.1 +org.onap.ccsdk.sli.adaptors,aai-service-provider,0.2.1 +org.onap.ccsdk.sli.adaptors,mdsal-resource-provider,0.2.1 +org.onap.ccsdk.sli.adaptors,resource-assignment-provider,0.2.1 +org.onap.ccsdk.sli.adaptors,sql-resource-provider,0.2.1 +org.onap.ccsdk.sli.core,dblib-provider,0.2.1 +org.onap.ccsdk.sli.core,filters-provider,0.2.1 +org.onap.ccsdk.sli.core,sli-common,0.2.1 +org.onap.ccsdk.sli.core,sli-provider,0.2.1 +org.onap.ccsdk.sli.core,sli-recording,0.2.1 +org.onap.ccsdk.sli.core,sliPluginUtils-provider,0.2.1 +org.onap.ccsdk.sli.core,sliapi-provider,0.2.1 +org.onap.ccsdk.sli.core,utils-provider,0.2.1 +org.onap.ccsdk.sli.northbound,asdcApi-provider,0.2.1 +org.onap.ccsdk.sli.northbound,dataChange-provider,0.2.1 +org.onap.ccsdk.sli.northbound,dmaap-listener,0.2.1 +org.onap.ccsdk.sli.northbound,lcm-provider,0.2.1 +org.onap.ccsdk.sli.northbound,ueb-listener,0.2.1 +org.onap.ccsdk.sli.plugins,fabric-discovery-plugin-provider,0.2.1 +org.onap.ccsdk.sli.plugins,properties-node-provider,0.2.1 +org.onap.ccsdk.sli.plugins,restapi-call-node-provider,0.2.1 org.onap.ccsdk.storage.pgaas,pgaas,1.0.0 org.onap.ccsdk.utils,utils,1.0.0 org.onap.clamp.clds.clamp,clamp,2.0.0 @@ -129,10 +137,10 @@ org.onap.multicloud.openstack,windriver,1.0.0 org.onap.multicloud.openstack.vmware,vesagent,1.0.0 org.onap.multicloud.openstack.vmware,vio,1.0.0 org.onap.oparent,oparent,1.1.0 -org.onap.policy.common,common-modules,2.1.0 -org.onap.policy.drools-applications,drools-pdp-apps,2.1.0 -org.onap.policy.drools-pdp,drools-pdp,2.1.0 -org.onap.policy.engine,PolicyEngineSuite,2.1.0 +org.onap.policy.common,common-modules,1.2.0 +org.onap.policy.drools-applications,drools-pdp-apps,1.2.0 +org.onap.policy.drools-pdp,drools-pdp,1.2.0 +org.onap.policy.engine,PolicyEngineSuite,1.2.0 org.onap.portal.sdk,epsdk-analytics,1.3.2 org.onap.portal.sdk,epsdk-app-common,1.3.2 org.onap.portal.sdk,epsdk-app-overlay,1.3.2 @@ -140,9 +148,9 @@ org.onap.portal.sdk,epsdk-core,1.3.2 org.onap.portal.sdk,epsdk-fw,1.3.2 org.onap.portal.sdk,epsdk-workflow,1.3.2 org.onap.sdc.sdc-workflow-designer,sdc-workflow-designer,1.0.0 -org.onap.sdnc.northbound,generic-resource-api.provider,1.2.2 -org.onap.sdnc.northbound,vnfapi-provider,1.2.2 -org.onap.sdnc.northbound,vnftools-provider,1.2.2 +org.onap.sdnc.northbound,generic-resource-api.provider,1.3.1 +org.onap.sdnc.northbound,vnfapi-provider,1.3.1 +org.onap.sdnc.northbound,vnftools-provider,1.3.1 org.onap.usecase-ui,usecaseui-common,1.0.1 org.onap.usecase-ui.server,usecase-ui-server,1.0.1 org.onap.vfc.gvnfm.vnflcm.lcm,vfc-gvnfm-vnflcm-lcm,1.0.1 @@ -164,9 +172,9 @@ org.onap.vnfsdk.refrepo,vnf-sdk-marketplace-core-parent,1.1.0 org.onap.vnfsdk.refrepo,vnf-sdk-marketplace-deployment,1.1.0 org.onap.vnfsdk.refrepo,vnfmarket,1.1.0 org.onap.vnfsdk.refrepo,vnfmarket-deployment,1.1.0 -org.onap.vnfsdk.validation,csarvalidation-deployment,1.1.0 -org.onap.vnfsdk.validation,validation,1.1.1 -org.onap.vnfsdk.validation,validation-csar,1.1.1 +org.onap.vnfsdk.validation,csarvalidation-deployment,1.1.1 +org.onap.vnfsdk.validation,validation,1.1.2 +org.onap.vnfsdk.validation,validation-csar,1.1.2 org.onap.vnfsdk.ves-agent,evel_javalib2,1.1.0 org.openecomp.appc,appc-aai-client-provider,1.2.0 org.openecomp.appc,appc-ansible-adapter-bundle,1.2.0 diff --git a/version-manifest/src/main/scripts/check-docker-manifest.sh b/version-manifest/src/main/scripts/check-docker-manifest.sh new file mode 100755 index 000000000..9064c836d --- /dev/null +++ b/version-manifest/src/main/scripts/check-docker-manifest.sh @@ -0,0 +1,21 @@ +#!/bin/bash + +if [ -z "$WORKSPACE" ]; then + export WORKSPACE=`git rev-parse --show-toplevel` +fi + +NEXUS_PREFIX="https://nexus3.onap.org/repository/docker.public/v2" + +err=0 +for line in $(tail -n +2 $1); do + image=$(echo $line | cut -d , -f 1) + tag=$(echo $line | cut -d , -f 2) + tags=$(curl -s $NEXUS_PREFIX/$image/tags/list | jq -r '.tags[]') + echo "$tags" | grep -q "^$tag\$" + if [ $? -ne 0 ]; then + echo "[ERROR] $image:$tag not found" + echo "$tags" | sed 's/^/ /' + (( err++ )) + fi +done +exit $err diff --git a/version-manifest/src/main/scripts/check-sorted.sh b/version-manifest/src/main/scripts/check-sorted.sh index d926409f4..fa120f399 100755 --- a/version-manifest/src/main/scripts/check-sorted.sh +++ b/version-manifest/src/main/scripts/check-sorted.sh @@ -3,7 +3,7 @@ LC_ALL=C sort -c $1 retval=$? if [ $retval -ne 0 ]; then echo - echo "ERROR: $1 is not properly sorted. Please sort it with the following commands:" + echo "[ERROR] $1 is not properly sorted. Please sort it with the following commands:" echo echo " LC_ALL=C sort < $1 > $1.tmp" echo " mv $1.tmp $1" |