aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--.gitattributes7
-rw-r--r--bootstrap/vagrant-onap/CONTRIBUTING.md30
-rw-r--r--bootstrap/vagrant-onap/LICENSE201
-rw-r--r--bootstrap/vagrant-onap/README.md92
-rw-r--r--bootstrap/vagrant-onap/Vagrantfile528
-rw-r--r--bootstrap/vagrant-onap/doc/source/conf.py40
-rw-r--r--bootstrap/vagrant-onap/doc/source/features/configure_execution.rst72
-rw-r--r--bootstrap/vagrant-onap/doc/source/features/consuming_scripts.rst91
-rw-r--r--bootstrap/vagrant-onap/doc/source/features/example_usage.rst151
-rw-r--r--bootstrap/vagrant-onap/doc/source/features/features.rst16
-rw-r--r--bootstrap/vagrant-onap/doc/source/features/openstack.rst89
-rw-r--r--bootstrap/vagrant-onap/doc/source/index.rst23
-rw-r--r--bootstrap/vagrant-onap/doc/source/install/index.rst102
-rw-r--r--bootstrap/vagrant-onap/doc/source/install/known_issues.rst63
-rw-r--r--bootstrap/vagrant-onap/etc/settings.yaml.development6
-rw-r--r--bootstrap/vagrant-onap/etc/settings.yaml.testing6
-rwxr-xr-xbootstrap/vagrant-onap/lib/_composed_functions35
-rwxr-xr-xbootstrap/vagrant-onap/lib/_onap_functions107
-rwxr-xr-xbootstrap/vagrant-onap/lib/aai147
-rwxr-xr-xbootstrap/vagrant-onap/lib/appc43
-rwxr-xr-xbootstrap/vagrant-onap/lib/ccsdk36
-rwxr-xr-xbootstrap/vagrant-onap/lib/commons119
-rwxr-xr-xbootstrap/vagrant-onap/lib/config/env-vars79
-rwxr-xr-xbootstrap/vagrant-onap/lib/dcae92
-rw-r--r--bootstrap/vagrant-onap/lib/files/aai.pem102
-rw-r--r--bootstrap/vagrant-onap/lib/files/all-in-one585
-rw-r--r--bootstrap/vagrant-onap/lib/files/globals.yml2
-rw-r--r--bootstrap/vagrant-onap/lib/files/haproxy.cfg120
-rw-r--r--bootstrap/vagrant-onap/lib/files/kolla-build.conf5
-rw-r--r--bootstrap/vagrant-onap/lib/files/kubectl_config_generator.py40
-rw-r--r--bootstrap/vagrant-onap/lib/files/passwords.yml216
-rw-r--r--bootstrap/vagrant-onap/lib/files/settings.xml369
-rwxr-xr-xbootstrap/vagrant-onap/lib/functions450
-rwxr-xr-xbootstrap/vagrant-onap/lib/mr31
-rwxr-xr-xbootstrap/vagrant-onap/lib/msb50
-rwxr-xr-xbootstrap/vagrant-onap/lib/mso94
-rwxr-xr-xbootstrap/vagrant-onap/lib/multicloud51
-rwxr-xr-xbootstrap/vagrant-onap/lib/oom207
-rwxr-xr-xbootstrap/vagrant-onap/lib/openstack75
-rwxr-xr-xbootstrap/vagrant-onap/lib/policy53
-rwxr-xr-xbootstrap/vagrant-onap/lib/portal98
-rwxr-xr-xbootstrap/vagrant-onap/lib/robot45
-rwxr-xr-xbootstrap/vagrant-onap/lib/sdc88
-rwxr-xr-xbootstrap/vagrant-onap/lib/sdnc64
-rwxr-xr-xbootstrap/vagrant-onap/lib/vfc96
-rwxr-xr-xbootstrap/vagrant-onap/lib/vid49
-rwxr-xr-xbootstrap/vagrant-onap/lib/vnfsdk47
-rwxr-xr-xbootstrap/vagrant-onap/lib/vvp40
-rwxr-xr-xbootstrap/vagrant-onap/tests/_test_base33
-rwxr-xr-xbootstrap/vagrant-onap/tests/asserts94
-rw-r--r--bootstrap/vagrant-onap/tests/projects.txt209
-rwxr-xr-xbootstrap/vagrant-onap/tests/test_aai100
-rwxr-xr-xbootstrap/vagrant-onap/tests/test_appc95
-rwxr-xr-xbootstrap/vagrant-onap/tests/test_ccsdk90
-rwxr-xr-xbootstrap/vagrant-onap/tests/test_dcae111
-rwxr-xr-xbootstrap/vagrant-onap/tests/test_functions191
-rwxr-xr-xbootstrap/vagrant-onap/tests/test_mr38
-rwxr-xr-xbootstrap/vagrant-onap/tests/test_msb61
-rwxr-xr-xbootstrap/vagrant-onap/tests/test_mso67
-rwxr-xr-xbootstrap/vagrant-onap/tests/test_multicloud54
-rwxr-xr-xbootstrap/vagrant-onap/tests/test_policy100
-rwxr-xr-xbootstrap/vagrant-onap/tests/test_portal59
-rwxr-xr-xbootstrap/vagrant-onap/tests/test_robot48
-rwxr-xr-xbootstrap/vagrant-onap/tests/test_sdc69
-rwxr-xr-xbootstrap/vagrant-onap/tests/test_sdnc69
-rwxr-xr-xbootstrap/vagrant-onap/tests/test_vfc68
-rwxr-xr-xbootstrap/vagrant-onap/tests/test_vid51
-rwxr-xr-xbootstrap/vagrant-onap/tests/test_vnfsdk57
-rwxr-xr-xbootstrap/vagrant-onap/tests/test_vvp55
-rw-r--r--bootstrap/vagrant-onap/tools/Run.ps1120
-rwxr-xr-xbootstrap/vagrant-onap/tools/get_repos.sh38
-rwxr-xr-xbootstrap/vagrant-onap/tools/run.sh100
-rwxr-xr-xbootstrap/vagrant-onap/tools/setup.sh133
-rwxr-xr-xbootstrap/vagrant-onap/tools/setup_openstack.sh23
-rwxr-xr-xbootstrap/vagrant-onap/tools/update_project_list.sh5
-rw-r--r--bootstrap/vagrant-onap/tox.ini30
-rwxr-xr-xbootstrap/vagrant-onap/vagrant_utils/postinstall.sh26
-rwxr-xr-xbootstrap/vagrant-onap/vagrant_utils/unit_testing.sh14
-rw-r--r--deployment/heat/onap-oom/env/gwu/onap.env2
-rw-r--r--deployment/heat/onap-oom/env/huawei/onap-beijing-oom.env2
-rw-r--r--deployment/heat/onap-oom/env/tlab/ETE-HEAT-Test.env2
-rw-r--r--deployment/heat/onap-oom/env/tlab/ETE-OOM-Test.env2
-rw-r--r--deployment/heat/onap-oom/env/tlab/EXTONAP_DEV.env2
-rw-r--r--deployment/heat/onap-oom/env/windriver/Integration-Jenkins.env2
-rw-r--r--deployment/heat/onap-oom/env/windriver/Integration-SB-03.env2
-rw-r--r--deployment/heat/onap-oom/env/windriver/Integration-SB-04.env2
-rw-r--r--deployment/heat/onap-oom/env/windriver/Integration-SB-05.env2
l---------deployment/heat/onap-oom/env/windriver/Integration-SB-06-DNS-openrc1
l---------deployment/heat/onap-oom/env/windriver/Integration-SB-06-openrc1
-rw-r--r--deployment/heat/onap-oom/env/windriver/Integration-SB-06.env33
l---------deployment/heat/onap-oom/env/windriver/Integration-SB-07-DNS-openrc1
l---------deployment/heat/onap-oom/env/windriver/Integration-SB-07-openrc1
-rw-r--r--deployment/heat/onap-oom/env/windriver/Integration-SB-07.env33
-rw-r--r--deployment/heat/onap-oom/k8s_vm_entrypoint.sh239
-rw-r--r--deployment/heat/onap-oom/onap-oom.yaml1
-rw-r--r--deployment/heat/onap-oom/rancher_vm_entrypoint.sh2
-rwxr-xr-xdeployment/heat/onap-oom/scripts/deploy.sh7
-rw-r--r--test/csit/plans/aaf/aafapi/setup.sh22
-rwxr-xr-xtest/csit/plans/aaf/sms-test-plan/setup.sh71
-rw-r--r--test/csit/plans/aaf/sms-test-plan/teardown.sh25
-rw-r--r--test/csit/plans/aaf/sms-test-plan/testplan.txt3
-rw-r--r--test/csit/plans/aai/esr-server/setup.sh2
-rw-r--r--test/csit/plans/aai/resources/aai-resources/appconfig/aai_keystorebin0 -> 3811 bytes
-rw-r--r--test/csit/plans/aai/resources/aai-resources/appconfig/aaiconfig.properties119
-rw-r--r--test/csit/plans/aai/resources/aai-resources/appconfig/application.properties72
-rw-r--r--test/csit/plans/aai/resources/aai-resources/appconfig/janusgraph-cached.properties43
-rw-r--r--test/csit/plans/aai/resources/aai-resources/appconfig/janusgraph-realtime.properties40
-rw-r--r--test/csit/plans/aai/resources/aai-resources/appconfig/localhost-access-logback.xml62
-rw-r--r--test/csit/plans/aai/resources/aai-resources/appconfig/logback.xml391
-rw-r--r--test/csit/plans/aai/resources/aai-resources/appconfig/realm.properties12
-rw-r--r--test/csit/plans/aai/resources/aai-traversal/appconfig/aai_keystorebin0 -> 3811 bytes
-rw-r--r--test/csit/plans/aai/resources/aai-traversal/appconfig/aaiconfig.properties114
-rw-r--r--test/csit/plans/aai/resources/aai-traversal/appconfig/application.properties72
-rw-r--r--test/csit/plans/aai/resources/aai-traversal/appconfig/janusgraph-cached.properties43
-rw-r--r--test/csit/plans/aai/resources/aai-traversal/appconfig/janusgraph-realtime.properties40
-rw-r--r--test/csit/plans/aai/resources/aai-traversal/appconfig/localhost-access-logback.xml62
-rw-r--r--test/csit/plans/aai/resources/aai-traversal/appconfig/logback.xml391
-rw-r--r--test/csit/plans/aai/resources/aai-traversal/appconfig/realm.properties12
-rw-r--r--test/csit/plans/aai/resources/docker-compose.yml47
-rw-r--r--test/csit/plans/aai/resources/setup.sh12
-rw-r--r--test/csit/plans/aai/traversal/aai-resources/appconfig/aai_keystorebin0 -> 3811 bytes
-rw-r--r--test/csit/plans/aai/traversal/aai-resources/appconfig/aaiconfig.properties119
-rw-r--r--test/csit/plans/aai/traversal/aai-resources/appconfig/application.properties72
-rw-r--r--test/csit/plans/aai/traversal/aai-resources/appconfig/janusgraph-cached.properties43
-rw-r--r--test/csit/plans/aai/traversal/aai-resources/appconfig/janusgraph-realtime.properties40
-rw-r--r--test/csit/plans/aai/traversal/aai-resources/appconfig/localhost-access-logback.xml62
-rw-r--r--test/csit/plans/aai/traversal/aai-resources/appconfig/logback.xml391
-rw-r--r--test/csit/plans/aai/traversal/aai-resources/appconfig/realm.properties12
-rw-r--r--test/csit/plans/aai/traversal/aai-traversal/appconfig/aai_keystorebin0 -> 3811 bytes
-rw-r--r--test/csit/plans/aai/traversal/aai-traversal/appconfig/aaiconfig.properties114
-rw-r--r--test/csit/plans/aai/traversal/aai-traversal/appconfig/application.properties72
-rw-r--r--test/csit/plans/aai/traversal/aai-traversal/appconfig/janusgraph-cached.properties43
-rw-r--r--test/csit/plans/aai/traversal/aai-traversal/appconfig/janusgraph-realtime.properties40
-rw-r--r--test/csit/plans/aai/traversal/aai-traversal/appconfig/localhost-access-logback.xml62
-rw-r--r--test/csit/plans/aai/traversal/aai-traversal/appconfig/logback.xml391
-rw-r--r--test/csit/plans/aai/traversal/aai-traversal/appconfig/realm.properties12
-rw-r--r--test/csit/plans/aai/traversal/docker-compose.yml48
-rw-r--r--test/csit/plans/aai/traversal/setup.sh24
-rwxr-xr-xtest/csit/plans/appc/healthcheck/bundle_query.sh8
-rwxr-xr-xtest/csit/plans/appc/healthcheck/health_check.sh2
-rwxr-xr-xtest/csit/plans/appc/healthcheck/setup.sh20
-rw-r--r--test/csit/plans/ccsdk/healthcheck/health_check.sh2
-rw-r--r--test/csit/plans/ccsdk/healthcheck/setup.sh18
-rw-r--r--test/csit/plans/ccsdk/healthcheck/teardown.sh1
-rwxr-xr-xtest/csit/plans/dmaap-buscontroller/with_mr/setup.sh44
-rw-r--r--test/csit/plans/dmaap-buscontroller/with_mr/teardown.sh28
-rw-r--r--test/csit/plans/dmaap-buscontroller/with_mr/testplan.txt4
-rwxr-xr-xtest/csit/plans/dmaap/mrpubsub/setup.sh2
-rw-r--r--test/csit/plans/holmes-rule-management/sanity-check/setup.sh6
-rw-r--r--test/csit/plans/multicloud-vmware/functionality1/testplan.txt4
-rwxr-xr-xtest/csit/plans/multicloud/functionality1/setup.sh4
-rwxr-xr-xtest/csit/plans/multicloud/functionality1/teardown.sh1
-rw-r--r--test/csit/plans/music/music-distributed-kv-store-test-plan/setup.sh60
-rw-r--r--test/csit/plans/music/music-distributed-kv-store-test-plan/teardown.sh21
-rw-r--r--test/csit/plans/music/music-distributed-kv-store-test-plan/testplan.txt3
-rwxr-xr-xtest/csit/plans/music/music-test-plan/setup.sh88
-rwxr-xr-xtest/csit/plans/music/music-test-plan/teardown.sh28
-rwxr-xr-xtest/csit/plans/optf-has/has/setup.sh (renamed from test/csit/plans/optf/has/setup.sh)34
-rwxr-xr-xtest/csit/plans/optf-has/has/teardown.sh34
-rw-r--r--test/csit/plans/optf-has/has/testplan.txt3
-rw-r--r--test/csit/plans/optf-has/osdf/sample.txt (renamed from test/csit/plans/optf/osdf/sample.txt)0
-rw-r--r--test/csit/plans/portal-sdk/testsuite/.env29
-rw-r--r--test/csit/plans/portal-sdk/testsuite/docker-compose.yml127
-rw-r--r--test/csit/plans/portal-sdk/testsuite/setup.sh24
-rw-r--r--test/csit/plans/portal/testsuite/.env29
-rw-r--r--test/csit/plans/portal/testsuite/docker-compose.yml127
-rw-r--r--test/csit/plans/portal/testsuite/setup.sh26
-rw-r--r--test/csit/plans/sdc/nightly/setup.sh25
-rw-r--r--test/csit/plans/sdc/nightly/teardown.sh19
-rw-r--r--test/csit/plans/sdc/sanity/setup.sh21
-rw-r--r--test/csit/plans/sdc/sanity/teardown.sh19
-rw-r--r--test/csit/plans/sdc/uiSanity/setup.sh11
-rw-r--r--test/csit/plans/sdc/uiSanity/teardown.sh3
-rw-r--r--test/csit/plans/sdc/uiSanity/testplan.txt (renamed from test/csit/plans/optf/has/testplan.txt)2
-rw-r--r--test/csit/plans/sdnc/healthcheck/setup.sh24
-rw-r--r--test/csit/plans/sdnc/healthcheck/teardown.sh1
-rw-r--r--test/csit/plans/so/integration-testing/setup.sh (renamed from test/csit/plans/so/sanity-check/setup.sh)0
-rw-r--r--test/csit/plans/so/integration-testing/teardown.sh (renamed from test/csit/plans/so/sanity-check/teardown.sh)0
-rw-r--r--test/csit/plans/so/integration-testing/testplan.txt (renamed from test/csit/plans/so/sanity-check/testplan.txt)0
-rw-r--r--test/csit/plans/vfc-nfvo-multivimproxy/sanity-check/setup.sh44
-rw-r--r--test/csit/plans/vfc-nfvo-multivimproxy/sanity-check/teardown.sh22
-rw-r--r--test/csit/plans/vfc-nfvo-multivimproxy/sanity-check/testplan.txt3
-rw-r--r--test/csit/plans/vfc-nfvo-wfengine/sanity-check/testplan.txt6
-rw-r--r--test/csit/plans/vnfsdk-ice/sanity-check/setup.sh34
-rw-r--r--test/csit/plans/vnfsdk-ice/sanity-check/teardown.sh22
-rw-r--r--test/csit/plans/vnfsdk-ice/sanity-check/testplan.txt3
-rwxr-xr-xtest/csit/scripts/clamp/clone_clamp_and_change_dockercompose.sh7
-rwxr-xr-xtest/csit/scripts/clamp/kill_and_remove_clamp_and_db_containers.sh2
-rwxr-xr-xtest/csit/scripts/clamp/start_clamp_containers.sh2
-rwxr-xr-xtest/csit/scripts/dmaap-buscontroller/dmaapbc-launch.sh2
-rwxr-xr-xtest/csit/scripts/dmaap-message-router/dmaap-mr-launch.sh105
-rwxr-xr-xtest/csit/scripts/dmaap-message-router/dmaap-mr-teardown.sh (renamed from test/csit/scripts/optf/has/has_script.sh)13
-rw-r--r--test/csit/scripts/externalapi-nbi/delete_nbi_containers.sh29
-rw-r--r--test/csit/scripts/externalapi-nbi/start_nbi_containers.sh37
-rw-r--r--test/csit/scripts/music/music-properties/log4j.properties3
-rw-r--r--test/csit/scripts/music/music-properties/music.properties17
-rwxr-xr-xtest/csit/scripts/music/music-scripts/wait_for_port.sh18
-rw-r--r--test/csit/scripts/optf-has/has/has-properties/cert.cer36
-rw-r--r--test/csit/scripts/optf-has/has/has-properties/cert.key28
-rw-r--r--test/csit/scripts/optf-has/has/has-properties/cert.pem36
-rw-r--r--test/csit/scripts/optf-has/has/has-properties/conductor.conf.onap348
-rw-r--r--test/csit/scripts/optf-has/has/has-properties/log.conf.onap65
-rwxr-xr-xtest/csit/scripts/optf-has/has/has_proxy_settings.sh31
-rwxr-xr-xtest/csit/scripts/optf-has/has/has_script.sh92
-rwxr-xr-xtest/csit/scripts/optf-has/has/has_teardown_script.sh34
-rw-r--r--test/csit/scripts/optf-has/has/music-properties/log4j.properties3
-rw-r--r--test/csit/scripts/optf-has/has/music-properties/music.properties17
-rwxr-xr-xtest/csit/scripts/optf-has/has/music_script.sh100
-rwxr-xr-xtest/csit/scripts/optf-has/has/music_teardown_script.sh39
-rwxr-xr-xtest/csit/scripts/optf-has/has/simulator_script.sh85
-rwxr-xr-xtest/csit/scripts/optf-has/has/simulator_teardown_script.sh (renamed from test/csit/plans/optf/has/teardown.sh)16
-rwxr-xr-xtest/csit/scripts/optf-has/has/wait_for_port.sh18
-rw-r--r--test/csit/scripts/optf-has/osdf/testsample.txt (renamed from test/csit/scripts/optf/osdf/testsample.txt)0
-rwxr-xr-xtest/csit/scripts/policy/script1.sh40
-rw-r--r--test/csit/scripts/sdc/clone_and_setup_sdc_data.sh113
-rw-r--r--test/csit/scripts/sdc/kill_containers_and_remove_dataFolders.sh4
-rw-r--r--test/csit/scripts/sdc/setup_sdc_for_apis_sanity.sh85
-rw-r--r--test/csit/scripts/sdc/setup_sdc_for_ui_sanity.sh85
-rw-r--r--test/csit/tests/aaf/aaf-sms-suite/__init__.robot2
-rw-r--r--test/csit/tests/aaf/aaf-sms-suite/aaf-sms-test.robot94
-rw-r--r--test/csit/tests/aaf/aaf-sms-suite/data/create_domain.json3
-rw-r--r--test/csit/tests/aaf/aaf-sms-suite/data/create_secret.json12
-rw-r--r--test/csit/tests/aai/esr-server/startup/test1.robot2
-rw-r--r--test/csit/tests/clamp/APIs/01__Create_CL_Holmes.robot11
-rw-r--r--test/csit/tests/clamp/APIs/02__Create_CL_TCA.robot11
-rw-r--r--test/csit/tests/clamp/APIs/03__VariousApis.robot11
-rw-r--r--test/csit/tests/clamp/APIs/04__Verify_API_Models.robot22
-rw-r--r--test/csit/tests/clamp/APIs/data/createClHolmes2.json6
-rw-r--r--test/csit/tests/clamp/APIs/data/createClTCA1.json6
-rw-r--r--test/csit/tests/clamp/APIs/data/createClTCA2.json6
-rw-r--r--test/csit/tests/clamp/UIs/01__Create_Holmes_model.robot8
-rw-r--r--test/csit/tests/clamp/UIs/02__Create_TCA_model.robot22
-rw-r--r--test/csit/tests/clamp/UIs/03__Verify_UI_Models.robot12
-rw-r--r--test/csit/tests/clamp/UIs/04__Submit_deploy_chain_Holmes.robot130
-rw-r--r--test/csit/tests/clamp/UIs/05__Submit_deploy_chain_TCA.robot130
-rw-r--r--test/csit/tests/dcaegen2/testcases/dcae_ves.robot28
-rw-r--r--test/csit/tests/dcaegen2/testcases/resources/DMaaP.py844
-rw-r--r--test/csit/tests/dcaegen2/testcases/resources/DcaeLibrary.py318
-rw-r--r--test/csit/tests/dcaegen2/testcases/resources/dcae_keywords.robot266
-rw-r--r--test/csit/tests/dcaegen2/testcases/resources/dcae_properties.robot30
-rw-r--r--test/csit/tests/holmes/testcase/RuleMgt/Rule-Mgt.robot3
-rw-r--r--test/csit/tests/multicloud-vmware/hosts/sanity-host.robot24
-rw-r--r--test/csit/tests/multicloud-vmware/images/sanity-image.robot24
-rw-r--r--test/csit/tests/multicloud-vmware/networks/sanity-network.robot24
-rw-r--r--test/csit/tests/multicloud-vmware/provision/jsoninput/image_file.json7
-rw-r--r--test/csit/tests/multicloud-vmware/provision/sanity_test_image.robot34
-rw-r--r--test/csit/tests/multicloud-vmware/samples/sanity-sample.robot25
-rw-r--r--test/csit/tests/multicloud/provision/data/capacity.json6
-rw-r--r--test/csit/tests/multicloud/provision/sanity_test_multivim.robot11
-rw-r--r--test/csit/tests/music/music-distributed-kv-store-suite/__init__.robot2
-rw-r--r--test/csit/tests/music/music-distributed-kv-store-suite/data/register_domain.json3
-rw-r--r--test/csit/tests/music/music-distributed-kv-store-suite/music-distributed-kv-store-test.robot53
-rw-r--r--test/csit/tests/music/music-suite/music-test.robot39
-rw-r--r--test/csit/tests/optf-has/has/__init__.robot (renamed from test/csit/tests/optf/has/__init__.robot)0
-rw-r--r--test/csit/tests/optf-has/has/data/healthcheck.json19
-rw-r--r--test/csit/tests/optf-has/has/data/onboard.json6
-rw-r--r--test/csit/tests/optf-has/has/data/plan_with_lati_and_longi.json41
-rw-r--r--test/csit/tests/optf-has/has/data/plan_with_short_distance_constraint.json64
-rw-r--r--test/csit/tests/optf-has/has/data/plan_with_wrong_distance_constraint.json63
-rw-r--r--test/csit/tests/optf-has/has/data/plan_with_wrong_version.json41
-rw-r--r--test/csit/tests/optf-has/has/data/plan_without_demand_section.json33
-rw-r--r--test/csit/tests/optf-has/has/optf_has_test.robot302
-rw-r--r--test/csit/tests/optf-has/osdf/data/sampletest.txt (renamed from test/csit/tests/optf/osdf/data/sampletest.txt)0
-rw-r--r--test/csit/tests/optf/has/data/plan_with_wrong_version.json175
-rw-r--r--test/csit/tests/optf/has/data/plan_without_demand_section.json93
-rw-r--r--test/csit/tests/optf/has/optf_has_test.robot29
-rw-r--r--test/csit/tests/policy/suite1/Policy-CSIT.robot50
-rw-r--r--test/csit/tests/policy/suite1/getoofpolicy.template6
-rw-r--r--test/csit/tests/policy/suite1/oofpolicy_HPA_R1.template6
-rw-r--r--test/csit/tests/portal-sdk/testsuites/test1.robot204
-rw-r--r--test/csit/tests/portal/testsuites/test1.robot337
-rw-r--r--test/csit/tests/sdc/uiSanity/__init__.robot2
-rw-r--r--test/csit/tests/sdc/uiSanity/test1.robot16
-rw-r--r--test/csit/tests/vfc/nfvo-multivimproxy/test.robot24
-rw-r--r--test/csit/tests/vfc/nfvo-wfengine/workflow.robot226
-rw-r--r--test/csit/tests/vnfsdk-ice/ice-server/heat_template_empty.zipbin0 -> 166 bytes
-rw-r--r--test/csit/tests/vnfsdk-ice/ice-server/heat_template_ok.zipbin0 -> 1120 bytes
-rw-r--r--test/csit/tests/vnfsdk-ice/ice-server/validation_test.robot69
-rw-r--r--test/csit/tests/vnfsdk-pkgtools/tosca-metadata/csar/test_entry.mf4
-rw-r--r--test/ete/labs/tlab/onap-openstack-template.env5
-rw-r--r--test/ete/labs/windriver/Integration-SB-06-DNS-openrc9
-rw-r--r--test/ete/labs/windriver/Integration-SB-06-openrc9
-rw-r--r--test/ete/labs/windriver/Integration-SB-07-DNS-openrc9
-rw-r--r--test/ete/labs/windriver/Integration-SB-07-openrc9
-rw-r--r--test/ete/labs/windriver/onap-openstack-template.env5
-rwxr-xr-xtest/ete/scripts/deploy-onap.sh8
-rwxr-xr-xtest/s3p/collector/get_resource_stats.py87
-rw-r--r--test/s3p/generator/locustfile.py186
-rwxr-xr-xtest/s3p/mock/set_expectation.sh249
-rw-r--r--test/s3p/util/docker_util.py126
-rwxr-xr-xtest/vcpe/config_sdnc_so.py89
-rwxr-xr-xtest/vcpe/csar_parser.py231
-rwxr-xr-xtest/vcpe/get_info.py26
-rwxr-xr-xtest/vcpe/healthcheck.py30
-rwxr-xr-xtest/vcpe/loop.py37
-rwxr-xr-xtest/vcpe/preload.py216
-rwxr-xr-xtest/vcpe/soutils.py318
-rwxr-xr-xtest/vcpe/vcpe.py207
-rwxr-xr-xtest/vcpe/vcpe_custom_service.py80
-rwxr-xr-xtest/vcpe/vcpecommon.py414
-rw-r--r--version-manifest/pom.xml10
-rw-r--r--version-manifest/src/main/resources/docker-manifest.csv129
-rw-r--r--version-manifest/src/main/resources/java-manifest.csv139
-rwxr-xr-xversion-manifest/src/main/scripts/check-sorted.sh12
-rw-r--r--version.properties2
305 files changed, 10495 insertions, 9629 deletions
diff --git a/.gitattributes b/.gitattributes
index 4048784af..6313b56c5 100644
--- a/.gitattributes
+++ b/.gitattributes
@@ -1,6 +1 @@
-*.java text eol=lf
-*.xml text eol=lf
-*.sh text eol=lf
-*.csv text eol=lf
-*.yaml text eol=lf
-*.json text eol=lf
+* text=auto eol=lf
diff --git a/bootstrap/vagrant-onap/CONTRIBUTING.md b/bootstrap/vagrant-onap/CONTRIBUTING.md
deleted file mode 100644
index 7341a10db..000000000
--- a/bootstrap/vagrant-onap/CONTRIBUTING.md
+++ /dev/null
@@ -1,30 +0,0 @@
-First off, thank you for considering contributing to ONAP on Vagrant project.
-It's people like you that make it such a great tool.
-
-ONAP on Vagrant is an open source project and we love to receive contributions
-from our community — you! There are many ways to contribute, from writing
-tutorials or blog posts, improving the documentation, submitting bug reports and
-feature requests or writing code which can be incorporated into ONAP on Vagrant
-itself.
-
-Unit Testing
-============
-
-The **_tests_** folder contains ~~scripts~~ _test suites_ that ensure the proper
-implementation of the _functions_ created on **_lib_** folder. In order to
-display the Usage information you must execute the script with question mark as
-an argument like follows:
-
- $ ./tools/run.sh
-
-or using PowerShell
-
- PS C:\> Set-ExecutionPolicy Bypass -Scope CurrentUser
- PS C:\> .\tools\Run.ps1 testing -?
-
-Examples
---------
-
- $ ./tools/run.sh -y testing # Executes all the Unit Tests unattended mode
- $ ./tools/run.sh -s functions testing # Executes all the Unit Tests of Functions Test Suite
- $ ./tools/run.sh -s functions -c install_maven testing # Executes the install_maven Unit Test of Functions Test Suite
diff --git a/bootstrap/vagrant-onap/LICENSE b/bootstrap/vagrant-onap/LICENSE
deleted file mode 100644
index 8dada3eda..000000000
--- a/bootstrap/vagrant-onap/LICENSE
+++ /dev/null
@@ -1,201 +0,0 @@
- Apache License
- Version 2.0, January 2004
- http://www.apache.org/licenses/
-
- TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
-
- 1. Definitions.
-
- "License" shall mean the terms and conditions for use, reproduction,
- and distribution as defined by Sections 1 through 9 of this document.
-
- "Licensor" shall mean the copyright owner or entity authorized by
- the copyright owner that is granting the License.
-
- "Legal Entity" shall mean the union of the acting entity and all
- other entities that control, are controlled by, or are under common
- control with that entity. For the purposes of this definition,
- "control" means (i) the power, direct or indirect, to cause the
- direction or management of such entity, whether by contract or
- otherwise, or (ii) ownership of fifty percent (50%) or more of the
- outstanding shares, or (iii) beneficial ownership of such entity.
-
- "You" (or "Your") shall mean an individual or Legal Entity
- exercising permissions granted by this License.
-
- "Source" form shall mean the preferred form for making modifications,
- including but not limited to software source code, documentation
- source, and configuration files.
-
- "Object" form shall mean any form resulting from mechanical
- transformation or translation of a Source form, including but
- not limited to compiled object code, generated documentation,
- and conversions to other media types.
-
- "Work" shall mean the work of authorship, whether in Source or
- Object form, made available under the License, as indicated by a
- copyright notice that is included in or attached to the work
- (an example is provided in the Appendix below).
-
- "Derivative Works" shall mean any work, whether in Source or Object
- form, that is based on (or derived from) the Work and for which the
- editorial revisions, annotations, elaborations, or other modifications
- represent, as a whole, an original work of authorship. For the purposes
- of this License, Derivative Works shall not include works that remain
- separable from, or merely link (or bind by name) to the interfaces of,
- the Work and Derivative Works thereof.
-
- "Contribution" shall mean any work of authorship, including
- the original version of the Work and any modifications or additions
- to that Work or Derivative Works thereof, that is intentionally
- submitted to Licensor for inclusion in the Work by the copyright owner
- or by an individual or Legal Entity authorized to submit on behalf of
- the copyright owner. For the purposes of this definition, "submitted"
- means any form of electronic, verbal, or written communication sent
- to the Licensor or its representatives, including but not limited to
- communication on electronic mailing lists, source code control systems,
- and issue tracking systems that are managed by, or on behalf of, the
- Licensor for the purpose of discussing and improving the Work, but
- excluding communication that is conspicuously marked or otherwise
- designated in writing by the copyright owner as "Not a Contribution."
-
- "Contributor" shall mean Licensor and any individual or Legal Entity
- on behalf of whom a Contribution has been received by Licensor and
- subsequently incorporated within the Work.
-
- 2. Grant of Copyright License. Subject to the terms and conditions of
- this License, each Contributor hereby grants to You a perpetual,
- worldwide, non-exclusive, no-charge, royalty-free, irrevocable
- copyright license to reproduce, prepare Derivative Works of,
- publicly display, publicly perform, sublicense, and distribute the
- Work and such Derivative Works in Source or Object form.
-
- 3. Grant of Patent License. Subject to the terms and conditions of
- this License, each Contributor hereby grants to You a perpetual,
- worldwide, non-exclusive, no-charge, royalty-free, irrevocable
- (except as stated in this section) patent license to make, have made,
- use, offer to sell, sell, import, and otherwise transfer the Work,
- where such license applies only to those patent claims licensable
- by such Contributor that are necessarily infringed by their
- Contribution(s) alone or by combination of their Contribution(s)
- with the Work to which such Contribution(s) was submitted. If You
- institute patent litigation against any entity (including a
- cross-claim or counterclaim in a lawsuit) alleging that the Work
- or a Contribution incorporated within the Work constitutes direct
- or contributory patent infringement, then any patent licenses
- granted to You under this License for that Work shall terminate
- as of the date such litigation is filed.
-
- 4. Redistribution. You may reproduce and distribute copies of the
- Work or Derivative Works thereof in any medium, with or without
- modifications, and in Source or Object form, provided that You
- meet the following conditions:
-
- (a) You must give any other recipients of the Work or
- Derivative Works a copy of this License; and
-
- (b) You must cause any modified files to carry prominent notices
- stating that You changed the files; and
-
- (c) You must retain, in the Source form of any Derivative Works
- that You distribute, all copyright, patent, trademark, and
- attribution notices from the Source form of the Work,
- excluding those notices that do not pertain to any part of
- the Derivative Works; and
-
- (d) If the Work includes a "NOTICE" text file as part of its
- distribution, then any Derivative Works that You distribute must
- include a readable copy of the attribution notices contained
- within such NOTICE file, excluding those notices that do not
- pertain to any part of the Derivative Works, in at least one
- of the following places: within a NOTICE text file distributed
- as part of the Derivative Works; within the Source form or
- documentation, if provided along with the Derivative Works; or,
- within a display generated by the Derivative Works, if and
- wherever such third-party notices normally appear. The contents
- of the NOTICE file are for informational purposes only and
- do not modify the License. You may add Your own attribution
- notices within Derivative Works that You distribute, alongside
- or as an addendum to the NOTICE text from the Work, provided
- that such additional attribution notices cannot be construed
- as modifying the License.
-
- You may add Your own copyright statement to Your modifications and
- may provide additional or different license terms and conditions
- for use, reproduction, or distribution of Your modifications, or
- for any such Derivative Works as a whole, provided Your use,
- reproduction, and distribution of the Work otherwise complies with
- the conditions stated in this License.
-
- 5. Submission of Contributions. Unless You explicitly state otherwise,
- any Contribution intentionally submitted for inclusion in the Work
- by You to the Licensor shall be under the terms and conditions of
- this License, without any additional terms or conditions.
- Notwithstanding the above, nothing herein shall supersede or modify
- the terms of any separate license agreement you may have executed
- with Licensor regarding such Contributions.
-
- 6. Trademarks. This License does not grant permission to use the trade
- names, trademarks, service marks, or product names of the Licensor,
- except as required for reasonable and customary use in describing the
- origin of the Work and reproducing the content of the NOTICE file.
-
- 7. Disclaimer of Warranty. Unless required by applicable law or
- agreed to in writing, Licensor provides the Work (and each
- Contributor provides its Contributions) on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
- implied, including, without limitation, any warranties or conditions
- of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
- PARTICULAR PURPOSE. You are solely responsible for determining the
- appropriateness of using or redistributing the Work and assume any
- risks associated with Your exercise of permissions under this License.
-
- 8. Limitation of Liability. In no event and under no legal theory,
- whether in tort (including negligence), contract, or otherwise,
- unless required by applicable law (such as deliberate and grossly
- negligent acts) or agreed to in writing, shall any Contributor be
- liable to You for damages, including any direct, indirect, special,
- incidental, or consequential damages of any character arising as a
- result of this License or out of the use or inability to use the
- Work (including but not limited to damages for loss of goodwill,
- work stoppage, computer failure or malfunction, or any and all
- other commercial damages or losses), even if such Contributor
- has been advised of the possibility of such damages.
-
- 9. Accepting Warranty or Additional Liability. While redistributing
- the Work or Derivative Works thereof, You may choose to offer,
- and charge a fee for, acceptance of support, warranty, indemnity,
- or other liability obligations and/or rights consistent with this
- License. However, in accepting such obligations, You may act only
- on Your own behalf and on Your sole responsibility, not on behalf
- of any other Contributor, and only if You agree to indemnify,
- defend, and hold each Contributor harmless for any liability
- incurred by, or claims asserted against, such Contributor by reason
- of your accepting any such warranty or additional liability.
-
- END OF TERMS AND CONDITIONS
-
- APPENDIX: How to apply the Apache License to your work.
-
- To apply the Apache License to your work, attach the following
- boilerplate notice, with the fields enclosed by brackets "{}"
- replaced with your own identifying information. (Don't include
- the brackets!) The text should be enclosed in the appropriate
- comment syntax for the file format. We also recommend that a
- file or class name and description of purpose be included on the
- same "printed page" as the copyright notice for easier
- identification within third-party archives.
-
- Copyright {yyyy} {name of copyright owner}
-
- 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.
diff --git a/bootstrap/vagrant-onap/README.md b/bootstrap/vagrant-onap/README.md
index 1afe53361..8a8d1bd9b 100644
--- a/bootstrap/vagrant-onap/README.md
+++ b/bootstrap/vagrant-onap/README.md
@@ -1,92 +1,4 @@
-# ONAP on Vagrant
+# Deprecated
-This vagrant project pretends to collect information about a way to deploy
-and build [ONAP project](https://www.onap.org/) into a development environment.
+ONAP on Vagrant tool's code has been migrated to [Devtool repo](https://git.onap.org/integration/devtool/)
-### Problem Being Solved
-
-* Reduce the barrier of entry to allow new ONAP developers to ramp up on to
-active development quickly
-* Reduce the cost to the community in responding to simple environment setup
-questions faced by new developers
-
----
-
-| Component | Requirement |
-|------------------|---------------------------------------|
-| Vagrant | >= 1.8.6 |
-| Provider | VirtualBox, Libvirt or OpenStack |
-| Operating System | Linux, Mac OS or Windows |
-| Hard Disk | > 8 GB of free disk |
-| Memory | > 12 GB |
-
----
-
-## Execution:
-
-#### deploying a single application
-
-* Windows
-
- PS C:\> cd integration\bootstrap\vagrant-onap
- PS C:\integration\bootstrap\vagrant-onap> Set-ExecutionPolicy Bypass -Scope CurrentUser
- PS C:\integration\bootstrap\vagrant-onap> .\tools\Run.ps1 <app_name>
-
-* Linux or Mac OS
-
- $ cd integration/bootstrap/vagrant-onap
- $ ./tools/run.sh <app_name>
-
-current options include:
-
-| app_name | description |
-|:----------:|-------------------------------------|
-| aai | Active and Available Inventory |
-| appc | Application Controller |
-| ccsdk | Common Controller SDK |
-| dcae | Data Collection Analytics & Events |
-| mr | Message Router |
-| mso | Master Service Orchestrator |
-| msb | Microservices Bus Project |
-| multicloud | Multi Cloud |
-| oom | ONAP Operations Manager |
-| policy | Policy |
-| portal | Portal |
-| robot | Robot |
-| sdc | Service Design & Creation |
-| sdnc | Software Defined Network Controller |
-| vfc | Virtual Function Controller |
-| vid | Virtual Infrastructure Development |
-| vnfsdk | VNF SDK |
-| vvp | VNF Validation Program |
-
-| app_name | description |
-|:----------:|------------------------------------------|
-| all_in_one | All ONAP services in a VM (experimental) |
-| testing | Unit Test VM |
-
-| app_name | description |
-|:----------:|----------------------|
-| openstack | OpenStack Deployment |
-
-#### Generating documentation
-
-The documentation of this project was written in reStructuredText
-format which is located under the [docs folder](../blob/master/doc/source/index.rst).
-It's possible to format these documents to HTML using Sphinix python
-tool.
-
- $ tox -e docs
-
-This results in the creation of a new *doc/build/html* folder with
-the documentation converted in HTML pages that can be viewed through
-the preferred Web Browser.
-
-## Contributing
-
-Bug reports and patches are most welcome.
-See the [contribution guidelines](CONTRIBUTING.md).
-
-## License
-
-Apache-2.0
diff --git a/bootstrap/vagrant-onap/Vagrantfile b/bootstrap/vagrant-onap/Vagrantfile
deleted file mode 100644
index 4b10392fd..000000000
--- a/bootstrap/vagrant-onap/Vagrantfile
+++ /dev/null
@@ -1,528 +0,0 @@
-# -*- mode: ruby -*-
-# vi: set ft=ruby :
-
-Vagrant::DEFAULT_SERVER_URL.replace('https://vagrantcloud.com')
-
-configuration = {
- # Generic parameters used across all ONAP components
- 'key_name' => 'ecomp_key',
- 'pub_key' => '',
- 'nexus_repo' => 'https://nexus.onap.org/content/sites/raw',
- 'nexus_repo_root' => 'https://nexus.onap.org',
- 'nexus_url_snapshot' => 'https://nexus.onap.org/content/repositories/snapshots',
- 'nexus_docker_repo' => 'nexus3.onap.org:10001',
- 'nexus_username' => 'docker',
- 'nexus_password' => 'docker',
- 'dmaap_topic' => 'AUTO',
- 'artifacts_version' => '1.0.0',
- 'docker_version' => 'latest',
- # Parameters for DCAE instantiation
- 'dcae_zone' => 'iad4',
- 'dcae_state' => 'vi',
- 'openstack_tenant_id' => '',
- 'openstack_username' => '',
- 'openstack_api_key' => '',
- 'openstack_password' => '',
- 'odl_version' => '0.5.3-Boron-SR3',
- # Parameters for enabling features
- 'debug' => 'True',
- 'build_image' => 'True',
- 'clone_repo' => 'True',
- 'compile_repo' => 'False',
- 'enable_oparent' => 'True',
- 'skip_get_images' => 'False',
- 'skip_install' => 'True'
-}
-
-box = {
- :virtualbox => 'ubuntu/trusty64',
- :libvirt => 'elastic/ubuntu-14.04-x86_64',
- :openstack => nil
-}
-
-nodes = [
- {
- :name => "aai",
- :ips => ['10.252.0.6', "192.168.50.6"],
- :macs => [],
- :cpus => 2,
- :cpu => "50",
- :ram => 8 * 1024,
- :groups => ["individual"],
- :args => ["aai"],
- :fwds => [
- { :guest => 8446, :host => 8446, :guest_ip => '192.168.50.6' },
- { :guest => 9446, :host => 9446, :guest_ip => '192.168.50.6' },
- ]
- },
- {
- :name => "all-in-one",
- :ips => ['10.252.1.3', "192.168.51.3"],
- :macs => [],
- :cpus => 2,
- :cpu => "50",
- :ram => 12 * 1024,
- :groups => ["all-in-one"],
- :flavor => 'm1.xlarge',
- :args => ['mr', 'sdc', 'aai', 'mso', 'robot', 'vid', 'sdnc', 'portal', 'dcae', 'policy', 'appc', 'vfc', 'ccsdk', 'multicloud', 'vnfsdk', 'vpp', 'msb'],
- },
- {
- :name => "appc",
- :ips => ['10.252.0.14', "192.168.50.14"],
- :macs => [],
- :cpus => 2,
- :cpu => "50",
- :ram => 4 * 1024,
- :groups => ["individual"],
- :args => ["appc"],
- },
- {
- :name => "ccsdk",
- :ips => ['10.252.0.19', "192.168.50.19"],
- :macs => [],
- :cpus => 2,
- :cpu => "50",
- :ram => 4 * 1024,
- :groups => ["individual"],
- :args => ["ccsdk"],
- },
- {
- :name => "dcae",
- :ips => ['10.252.0.12', "192.168.50.12"],
- :macs => [],
- :cpus => 2,
- :cpu => "50",
- :ram => 4 * 1024,
- :groups => ["individual"],
- :args => ["dcae"],
- },
- {
- :name => "dns",
- :ips => ['10.252.0.3', "192.168.50.3"],
- :macs => [],
- :cpus => 2,
- :cpu => "50",
- :ram => 1 * 1024,
- :groups => ["individual"],
- :flavor => 'm1.small',
- :args => [" "]
- },
- {
- :name => "message-router",
- :ips => ['10.252.0.4', "192.168.50.4"],
- :macs => [],
- :cpus => 2,
- :cpu => "50",
- :ram => 4 * 1024,
- :groups => ["individual"],
- :args => ["mr"],
- },
- {
- :name => "mso",
- :ips => ['10.252.0.20', "192.168.50.20"],
- :macs => [],
- :cpus => 2,
- :cpu => "50",
- :ram => 4 * 1024,
- :groups => ["individual"],
- :args => ["mso"],
- },
- {
- :name => "msb",
- :ips => ['10.252.0.7', "192.168.50.7"],
- :macs => [],
- :cpus => 2,
- :cpu => "50",
- :ram => 4 * 1024,
- :groups => ["individual"],
- :args => ["msb"],
- },
- {
- :name => "multicloud",
- :ips => ['10.252.0.16', "192.168.50.16"],
- :macs => [],
- :cpus => 2,
- :cpu => "50",
- :ram => 4 * 1024,
- :groups => ["individual"],
- :args => ["multicloud"],
- :fwds => [
- { :guest => 9003, :host => 9003, :guest_ip => '192.168.50.16' },
- ]
- },
- {
- :name => "oom",
- :ips => ['10.252.0.21', "192.168.50.21"],
- :macs => [],
- :cpus => 16,
- :cpu => "50",
- :ram => 64 * 1024,
- :groups => ["individual"],
- :args => ["oom"],
- :hd => { :virtualbox => "61440", :libvirt => "60G", },
- :fwds => [
- { :guest => 8880, :host => 8880, :guest_ip => '192.168.50.21' },
- { :guest => 8989, :host => 8989, :guest_ip => '192.168.50.21' },
- ]
- },
- {
- :name => "policy",
- :ips => ['10.252.0.13', "192.168.50.13"],
- :macs => [],
- :cpus => 2,
- :cpu => "50",
- :ram => 4 * 1024,
- :groups => ["individual"],
- :args => ["policy"],
- },
- {
- :name => "portal",
- :ips => ['10.252.0.11', "192.168.50.11"],
- :macs => [],
- :cpus => 2,
- :cpu => "50",
- :ram => 4 * 1024,
- :groups => ["individual"],
- :args => ["portal"],
- },
- {
- :name => "robot",
- :ips => ['10.252.0.8', "192.168.50.8"],
- :macs => [],
- :cpus => 2,
- :cpu => "50",
- :ram => 4 * 1024,
- :groups => ["individual"],
- :args => ["robot"],
- },
- {
- :name => "sdc",
- :ips => ['10.252.0.5', "192.168.50.5"],
- :macs => [],
- :cpus => 2,
- :cpu => "50",
- :ram => 6 * 1024,
- :groups => ["individual"],
- :args => ["sdc"],
- :hd => { :virtualbox => "20480", :libvirt => "20G", },
- :fwds => [
- { :guest => 8285, :host => 8285, :guest_ip => '192.168.50.5' },
- ]
- },
- {
- :name => "sdnc",
- :ips => ['10.252.0.10', "192.168.50.10"],
- :macs => [],
- :cpus => 2,
- :cpu => "50",
- :ram => 4 * 1024,
- :groups => ["individual"],
- :args => ["sdnc"],
- },
- {
- :name => "testing",
- :ips => ['10.252.2.3', "192.168.52.3"],
- :macs => [],
- :cpus => 2,
- :cpu => "50",
- :ram => 4 * 1024,
- :groups => ["testing"],
- :flavor => 'm1.small',
- :args => [""],
- },
- {
- :name => "vfc",
- :ips => ['10.252.0.15', "192.168.50.15"],
- :macs => [],
- :cpus => 2,
- :cpu => "50",
- :ram => 4 * 1024,
- :groups => ["individual"],
- :args => ['vfc'],
- },
- {
- :name => "vid",
- :ips => ['10.252.0.9', "192.168.50.9"],
- :macs => [],
- :cpus => 2,
- :cpu => "50",
- :ram => 4 * 1024,
- :groups => ["individual"],
- :args => ['vid'],
- },
- {
- :name => "vnfsdk",
- :ips => ['10.252.0.18', "192.168.50.18"],
- :macs => [],
- :cpus => 2,
- :cpu => "50",
- :ram => 4 * 1024,
- :groups => ["individual"],
- :args => ['vnfsdk'],
- },
- {
- :name => "vvp",
- :ips => ['10.252.0.17', "192.168.50.17"],
- :macs => [],
- :cpus => 2,
- :cpu => "50",
- :ram => 4 * 1024,
- :groups => ["individual"],
- :args => ['vvp'],
- },
- {
- :name => "openstack",
- :ips => ['10.252.3.3', "192.168.53.3"],
- :macs => [],
- :cpus => 2,
- :cpu => "50",
- :ram => 8 * 1024,
- :groups => ["individual"],
- :args => ['openstack'],
- :fwds => [
- { :guest => 80, :host => 8888, :guest_ip => '192.168.53.4' },
- { :guest => 6080, :host => 6080, :guest_ip => '192.168.53.4' },
- ]
- }
-]
-
-run_path = 'vagrant_utils/postinstall.sh'
-sdc_volume = 'vol1-sdc-data.vdi'
-
-Vagrant.require_version ">= 1.8.6"
-
-# Determine the provider used
-provider = (ENV['VAGRANT_DEFAULT_PROVIDER'] || :virtualbox).to_sym
-puts "[INFO] Provider: #{provider} "
-
-vd_conf = ENV.fetch('VD_CONF', 'etc/settings.yaml')
-if File.exist?(vd_conf)
- require 'yaml'
- user_conf = YAML.load_file(vd_conf)
- configuration.update(user_conf)
-end
-
-# Set network interface
-net_interface = 'vboxnet0'
-is_windows = Gem.win_platform?
-if is_windows
- net_interface = 'VirtualBox Host-Only Ethernet Adapter #2'
-end
-puts "[INFO] Net interface: #{net_interface}"
-
-
-# If argument is given use it. Otherwise use Env: DEPLOY_MODE else use default
-requested_machine = ARGV[1]
-
-deploy_mode = ENV.fetch('DEPLOY_MODE', 'individual')
-if requested_machine != nil
- if requested_machine.include?("all-in-one") || requested_machine.include?("testing")
- deploy_mode = requested_machine
- end
-end
-
-# Catch the status of all machines
-if ARGV[0] == 'status' || ARGV[0] == 'destroy'
- deploy_mode = 'NA'
-end
-
-puts "[INFO] Deploy Mode: #{deploy_mode}"
-
-# In case of all-in-one or testing clean the nodes list
-case deploy_mode
- when 'all-in-one'
- nodes.select! do |node|
- if node[:name].include?("all-in-one")
- true if node[:name]
- end
- end
-
- when 'individual'
- nodes.select! do |node|
- if node[:groups][0].include?("individual")
- true if node[:name]
- end
- end
-
- when 'testing'
- nodes.select! do |node|
- if node[:name].include?("testing")
- true if node[:name]
- end
- end
-end
-
-Vagrant.configure("2") do |config|
-
- # PROXY definitions
- if ENV['http_proxy'] != nil and ENV['https_proxy'] != nil
- if not Vagrant.has_plugin?('vagrant-proxyconf')
- system 'vagrant plugin install vagrant-proxyconf'
- raise 'vagrant-proxyconf was installed but it requires to execute again'
- end
- config.proxy.enabled = { docker: false }
- config.proxy.http = ENV['http_proxy']
- config.proxy.https = ENV['https_proxy']
- configuration['socks_proxy'] = ENV['socks_proxy']
- end
-
- if Vagrant.has_plugin?('vagrant-vbguest')
- puts 'vagrant-vbguest auto_update feature will be disable to avoid sharing conflicts'
- config.vbguest.auto_update = false
- end
-
- sync_type = "virtualbox"
- if provider == :libvirt
- if not Vagrant.has_plugin?('vagrant-libvirt')
- system 'vagrant plugin install vagrant-libvirt'
- raise 'vagrant-libvirt was installed but it requires to execute again'
- end
- sync_type = "nfs"
- end
-
- if provider == :openstack
- config.ssh.username = 'ubuntu'
- if not Vagrant.has_plugin?('vagrant-openstack-provider')
- system 'vagrant plugin install vagrant-openstack-provider'
- raise 'vagrant-openstack-provider was installed but it requires to execute again'
- end
- end
-
- nodes.each do |node|
- config.vm.define node[:name] do |nodeconfig|
-
- # NO_PROXY definitions
- if ENV['no_proxy'] != nil
- if not Vagrant.has_plugin?('vagrant-proxyconf')
- system 'vagrant plugin install vagrant-proxyconf'
- raise 'vagrant-proxyconf was installed but it requires to execute again'
- end
- config.proxy.no_proxy = node[:ips].join(",") + "," + ENV['no_proxy']
- end
-
- # Common Settings:
-
- nodeconfig.vm.provider "virtualbox" do |vbox|
- vbox.customize ['modifyvm', :id, '--nictype1', 'virtio']
- vbox.customize ['modifyvm', :id, '--audio', 'none']
- vbox.customize ['modifyvm', :id, '--vram', '1']
- vbox.customize ['modifyvm', :id, "--cpuhotplug", "off"]
- vbox.customize ['modifyvm', :id, "--cpuexecutioncap", node[:cpu]]
- vbox.customize ['modifyvm', :id, "--cpus", node[:cpus]]
- vbox.customize ["modifyvm", :id, "--memory", node[:ram]]
-
- # Set Network
- nodeconfig.vm.network :private_network,
- :adapter => 2,
- :name => net_interface,
- :ip => node[:ips][0]
-
- nodeconfig.vm.network :private_network,
- :adapter => 3,
- :ip => node[:ips][1],
- :type => :static
-
- # Set Storage
- if node.has_key? :hd
- volume_file = node[:name] + '-vol1-data.vdi'
- unless File.exist?(volume_file)
- vbox.customize ['createmedium', 'disk', '--filename', volume_file, '--size', node[:hd][provider]]
- end
- vbox.customize ['storageattach', :id, '--storagectl', 'SATAController', '--port', 1, '--device', 0, '--type', 'hdd', '--medium', volume_file]
- end
- end
-
- nodeconfig.vm.provider "libvirt" do |lbox|
- lbox.memory = node[:ram]
- lbox.nested = true
- lbox.cpu_mode = 'host-passthrough'
- lbox.cpus = node[:cpus]
-
- # Set Network
- nodeconfig.vm.network :private_network,
- :ip => node[:ips][0]
-
- nodeconfig.vm.network :private_network,
- :ip => node[:ips][1],
- :type => :static
-
- # Set Storage
- if node.has_key? :hd
- lbox.storage :file, bus: 'sata', device: 'sda', size: node[:hd][provider]
- end
- end
- if node.has_key? :fwds
- node[:fwds].each do |fwd|
- nodeconfig.vm.network :forwarded_port,
- :guest => fwd[:guest],
- :guest_ip => fwd[:guest_ip],
- :host => fwd[:host],
- :host_ip => "0.0.0.0"
- end
- end
-
- nodeconfig.vm.provider :openstack do |obox|
- obox.openstack_auth_url = ENV.fetch('OS_AUTH_URL', '')
- obox.tenant_name = ENV.fetch('OS_TENANT_NAME', '')
- obox.username = ENV.fetch('OS_USERNAME', '')
- obox.password = ENV.fetch('OS_PASSWORD', '')
- obox.region = ENV.fetch('OS_REGION_NAME', '')
- obox.identity_api_version = ENV.fetch('OS_IDENTITY_API_VERSION', '')
- obox.domain_name = ENV.fetch('OS_PROJECT_DOMAIN_ID', '')
- obox.project_name = ENV.fetch('OS_PROJECT_NAME', '')
- obox.floating_ip_pool = ENV.fetch('OS_FLOATING_IP_POOL', '')
- obox.floating_ip_pool_always_allocate = (ENV['OS_FLOATING_IP_ALWAYS_ALLOCATE'] == 'true')
- obox.image = ENV.fetch('OS_IMAGE', '')
- obox.security_groups = [ENV.fetch('OS_SEC_GROUP', '')]
- obox.networks = ENV.fetch('OS_NETWORK', '')
- obox.flavor = node[:flavor]
- obox.server_name = node[:name]
- end
-
- # Set Box type
- if "openstack" == node[:name]
- box = {
- :virtualbox => 'ubuntu/xenial64',
- :libvirt => 'elastic/ubuntu-16.04-x86_64'
- }
- end
- nodeconfig.vm.box = box[provider]
-
- # Set Node name
- nodeconfig.vm.hostname = node[:name]
-
- # Set Sync Folder
- nodeconfig.vm.synced_folder ".", "/vagrant", disabled: true
- nodeconfig.vm.synced_folder './opt', '/opt/onap/', create: true, type: sync_type
- nodeconfig.vm.synced_folder './lib', '/var/onap/', create: true, type: sync_type
- if !is_windows
- nodeconfig.vm.synced_folder '~/.m2', '/root/.m2/', create: true
- end
-
- # Specific settings:
-
- if node[:name].include? "testing"
- nodeconfig.vm.synced_folder './tests', '/var/onap_tests/', create: true
- test_suite = ENV.fetch('TEST_SUITE', '*')
- test_case = ENV.fetch('TEST_CASE', '*')
- # Override variables
- run_path = 'vagrant_utils/unit_testing.sh'
- node[:args] = [test_suite, test_case]
- else
- configuration['skip_get_images'] = ENV.fetch('SKIP_GET_IMAGES', configuration['skip_get_images'])
- configuration['skip_install'] = ENV.fetch('SKIP_INSTALL', configuration['skip_install'])
- end
-
- if node[:name].include? "vfc"
- nodeconfig.vm.provision 'docker'
- end
-
- nodeconfig.vm.provision 'shell' do |s|
- s.path = run_path
- s.args = node[:args]
- s.env = configuration
- end
-
- end #nodeconfig
- end #node
-end #config
diff --git a/bootstrap/vagrant-onap/doc/source/conf.py b/bootstrap/vagrant-onap/doc/source/conf.py
deleted file mode 100644
index 906f249d4..000000000
--- a/bootstrap/vagrant-onap/doc/source/conf.py
+++ /dev/null
@@ -1,40 +0,0 @@
-# -*- coding: utf-8 -*-
-# 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.
-
-import os
-import sys
-
-BASE_DIR = os.path.dirname(os.path.abspath(__file__))
-ROOT = os.path.abspath(os.path.join(BASE_DIR, "..", ".."))
-
-sys.path.insert(0, ROOT)
-sys.path.insert(0, BASE_DIR)
-
-# -- General configuration ----------------------------------------------------
-
-# Add any Sphinx extension module names here, as strings. They can be
-# extensions coming with Sphinx (named 'sphinx.ext.*') or your custom ones.
-extensions = [
- 'sphinx.ext.autodoc',
- #'sphinx.ext.intersphinx'
-]
-
-# The suffix of source filenames.
-source_suffix = '.rst'
-
-# The master toctree document.
-master_doc = 'index'
-
-# General information about the project.
-project = u'ONAP on Vagrant'
diff --git a/bootstrap/vagrant-onap/doc/source/features/configure_execution.rst b/bootstrap/vagrant-onap/doc/source/features/configure_execution.rst
deleted file mode 100644
index df08605ac..000000000
--- a/bootstrap/vagrant-onap/doc/source/features/configure_execution.rst
+++ /dev/null
@@ -1,72 +0,0 @@
-=======================
-Modify execution values
-=======================
-
-In order to provide a flexible platform that adjusts to different developer
-needs, there are two mechanisms to configure the execution of this project.
-
-Settings configuration file
----------------------------
-
-The first mechanism refers to the process to replace default configuration
-values in the settings configuration file. This file needs to be placed into
-the *./etc* folder and named *settings.yaml*. It must contain the key/pair
-configuration values that will be overriden.
-
-.. note::
-
- There are sample files (e. g. settings.yaml.development and
- settings.yaml.testing) placed into the *./etc* folder. Their purpose is to
- provide a reference of different configurations.
-
-.. end
-
-Configuration values:
-
-+------------------+-------------------+---------------------------------------+
-| Key | Values | Description |
-+==================+===================+=======================================+
-| build_image | "True" or "False" | Determines if the Docker image is |
-| | | retrieved from public hub or built |
-| | | from source code. |
-+------------------+-------------------+---------------------------------------+
-| clone_repo | "True" or "False" | Determines if all the source code |
-| | | repositories of a given component are |
-| | | cloned locally. |
-+------------------+-------------------+---------------------------------------+
-| compile_repo | "True" or "False" | Determines if all the source code |
-| | | repositories of a given component are |
-| | | going to be compiled. |
-+------------------+-------------------+---------------------------------------+
-| enable_oparent | "True" or "False" | Determines if the OParent project |
-| | | will be used during the maven |
-| | | compilation. |
-+------------------+-------------------+---------------------------------------+
-| skip_get_images | "True" or "False" | Determines if the process to build or |
-| | | retrieve docker images of a given |
-| | | component are going to skipped. |
-+------------------+-------------------+---------------------------------------+
-| skip_install | "True" or "False" | Determines if the process to start |
-| | | the services of a given component |
-| | | will be started. |
-+------------------+-------------------+---------------------------------------+
-
-Parameters
-----------
-
-The **skip_get_images** and **skip_install** are the only two configuration
-values that can be overriden using *-g* and *-i* respectively by the run scripts
-(*./tools/run.sh* and *.\\tools\\Run.ps1*).
-
-.. note::
-
- The script parameters take precendence of the configuration file.
-
-.. end
-
-.. code-block:: console
-
- $ ./tools/run.sh sdc -g
-
-.. end
-
diff --git a/bootstrap/vagrant-onap/doc/source/features/consuming_scripts.rst b/bootstrap/vagrant-onap/doc/source/features/consuming_scripts.rst
deleted file mode 100644
index dd4f14ba7..000000000
--- a/bootstrap/vagrant-onap/doc/source/features/consuming_scripts.rst
+++ /dev/null
@@ -1,91 +0,0 @@
-==============================
-Using the provisioning scripts
-==============================
-
-Vagrant is a platform that uses prebaked images called
-*vagrant boxes* to guarranty that running multiple times a
-provisioning script will result in an expected output. This
-mechanism is crucial for reducing the number of external factors
-during the creation, development and testing of provisioning scripts.
-However, it's possible to provide an ONAP development enviroment
-without having to install Vagrant tool. This document explains how to
-consume the provisioning scripts localed in **./lib** folder to
-provision a development environment and the environment variables
-that modifies their behavior.
-
-This project was built on an Ubuntu 14.04 ("Trusty") Operating System,
-therefore it's necessary to have an user who has *sudo* permissions to
-access to a Bare Metal or Virtual Machine.
-
-The following instructions retrieve the provisioning scripts and place
-them into the */var/onap/* folder.
-
-.. code-block:: console
-
- $ sudo su -
- # apt-get install git -y
- # git clone https://git.onap.org/integration
- # mv integration/bootstrap/vagrant-onap/lib/ /var/onap/
-
-.. end
-
-Loading a provisioning script will be based on the desired ONAP
-service, for example to setup the development environment for Active
-and Available Inventory (AAI) service will be required to load the
-*/var/onap/aai* script.
-
-.. note::
-
- The **git_src_folder** environment variable specifies the
- source code destination folder, it's default value is */opt/*
- but it can be changed only after is loaded the provisioning
- scripts.
-
-.. end
-
-.. code-block:: console
-
- # source /var/onap/aai
-
-.. end
-
-Lastly, every script has defined a initialization function with
-*init_* as prefix. This function is the starting point to provision
-the chosen ONAP service. This example uses the *init_aai* function
-to provision a AAI Developement environment.
-
-.. note::
-
- The **compile_repo** environment variable defines whether or not
- the source code located on the repositories of the service.
- Enabling this value can impact the provisioning time of the
- service.
-
-.. end
-.. note::
-
- **nexus_docker_repo**, **nexus_username** and **nexus_password**
- environment variables specify the connectivity to a private Docker
- Hub.
-
-.. end
-.. note::
-
- **build_image** environment variable allows the Docker images
- from source code. Enabling this value can impact the
- provisioning time of the service.
-
-.. end
-
-.. code-block:: console
-
- # export nexus_docker_repo="nexus3.onap.org:10001"
- # export nexus_username="docker"
- # export nexus_password="docker"
- # init_aai
-
-.. end
-
-As result, the source code is pulled into */opt/aai/* folder and the
-AAI services are up and running with the proper connection to the
-Titan Distributed Graph Database.
diff --git a/bootstrap/vagrant-onap/doc/source/features/example_usage.rst b/bootstrap/vagrant-onap/doc/source/features/example_usage.rst
deleted file mode 100644
index 293c543fa..000000000
--- a/bootstrap/vagrant-onap/doc/source/features/example_usage.rst
+++ /dev/null
@@ -1,151 +0,0 @@
-=================================================
-Example usage to bring up a developer environment
-=================================================
-
-In the example, we will bring up a single ONAP component using the Vagrant ONAP
-tool.
-
-There are multiple scenarios in which this tool can be made use of by a
-developer, they usually fall in the following use cases.
-
-Use case 1: Use Vagrant ONAP to just clone project related source code
-----------------------------------------------------------------------
-
-In this use case, the developer needs just the source code of the project to work on.
-
-Since the Vagrant ONAP project supports building docker containers and compiling
-source files, we need to first edit the settings.yaml file to add key value pairs
-indicating we need to only clone repo and not build docker image or compile then.
-By default, Vagrant ONAP clones repo, but to not run the build process and cloning
-docker images, the following are required to be added in the settings file.
-
-.. code-block:: console
-
- skip_get_images: "True"
-
-.. end
-
-The reason this is done is because as mentioned in the
-`configure execution docs. <https://git.onap.org/integration/tree/bootstrap/vagrant-onap/doc/source/features/configure_execution.rst>`,
-the default values taken are:
-
-.. code-block:: console
-
- 'build_image' => 'True',
- 'clone_repo' => 'True',
- 'compile_repo' => 'False',
- 'enable_oparent' => 'True',
- 'skip_get_images' => 'False',
- 'skip_install' => 'True'
-
-.. end
-
-We override them and skip_get_images is given precedence over build_image.
-
-Use case 2: Use Vagrant ONAP to clone project related source code and clone Docker Images
------------------------------------------------------------------------------------------
-
-In this use case, the developer needs to clone docker images of the project to work on.
-
-For this case, we will edit the settings.yaml file to add key value pairs indicating we
-need to clone repo and clone docker image from Nexus.
-
-.. code-block:: console
-
- build_images: "False"
- compile_repo: "True"
- skip_get_images: "False"
- skip_install: "True"
-
-.. end
-
-Use case 3: Use Vagrant ONAP to clone project related source code and build Docker Images locally
--------------------------------------------------------------------------------------------------
-
-In this use case, the developer needs to build docker images of the project to work on.
-
-For this case, we will edit the settings.yaml file to add key value pairs indicating we need to
-clone repo and build docker image locally and not fetch them from Nexus.
-
-.. code-block:: console
-
- build_images: "True"
- compile_repo: "True"
- skip_get_images: "False"
- skip_install: "True"
-
-.. end
-
-Use case 4: Use Vagrant ONAP to clone project related source code and build Docker Images and start services
-------------------------------------------------------------------------------------------------------------
-
-In this use case, the developer needs to build docker images of the project he or
-she wanted to work on and start the services running inside them.
-
-For this case, we will edit the settings.yaml file to add key value pairs indicating
-we need to clone repo, compile repo, build docker image and run the image.
-
-.. code-block:: console
-
- build_images: "True"
- compile_repo: "True"
- skip_get_images: "False"
- skip_install: "False"
-
-.. end
-
-Once the required changes to the settings file is added, we can use the run.sh
-script in tools directory to setup the development environment.
-
-Example steps for setting up a development environment for VFC project.
------------------------------------------------------------------------
-
-In this example we will be using vagrant ONAP to get all the source code of VFC
-project and the developer can point the IDE to the cloned repo in the ./opt directory
-and start the development process.
-
-.. code-block:: console
-
- $ ./tools/run.sh vfc
-
-.. end
-
-At the end of the setup process, all the VFC related source code will be present
-in the vagrant-onap/opt/ directory. The developer can point an IDE to this directory
-and start contributing. When the changes are done, the developer can SSH into the VM
-running VFC and tests can be executed by running Maven for Java and Tox for Python
-from the ~/opt/vfc directory.
-
-.. code-block:: console
-
- $ vagrant ssh vfc
- $ cd ~/opt/vfc/<vfc-subrepo>
- $ tox -e py27
-
-.. end
-
-This way the tool helps the developer to clone repos of a particular project,
-without having to manually search for repos and setup an environment.
-
-Also, if something gets messed up in the VM, the developer can tear down the VM
-and spin a fresh one without having to lose the changes made to the source code since
-the ./opt files are in sync from the host to the VM.
-
-.. code-block:: console
-
- $ vagrant destroy vfc
-
-.. end
-
-Testing
--------
-
-Use the run.sh script to test if the provisioning scripts run without errors.
-
-And example test to check the number of covered repositories with this tool.
-
-.. code-block:: console
-
- $ ./tools/run.sh testing -y -c coverity_repos -s functions
-
-.. end \ No newline at end of file
diff --git a/bootstrap/vagrant-onap/doc/source/features/features.rst b/bootstrap/vagrant-onap/doc/source/features/features.rst
deleted file mode 100644
index 2f88c52e7..000000000
--- a/bootstrap/vagrant-onap/doc/source/features/features.rst
+++ /dev/null
@@ -1,16 +0,0 @@
-.. _features:
-
-=================
-Advanced features
-=================
-
-.. toctree::
- :maxdepth: 1
-
- openstack.rst
- consuming_scripts.rst
- configure_execution.rst
- example_usage.rst
-
-This chapter explains how to use ONAP on Vagrant Advanced features
-like different providers.
diff --git a/bootstrap/vagrant-onap/doc/source/features/openstack.rst b/bootstrap/vagrant-onap/doc/source/features/openstack.rst
deleted file mode 100644
index f44bc62f9..000000000
--- a/bootstrap/vagrant-onap/doc/source/features/openstack.rst
+++ /dev/null
@@ -1,89 +0,0 @@
-==================
-OpenStack Provider
-==================
-
-It's possible to use Vagrant to provision VMs on OpenStack using the
-`Vagrant OpenStack Cloud Provider <https://github.com/ggiamarchi/vagrant-openstack-provider/>`.
-The only requirement for the Cloud provider is to have an Ubuntu Cloud
-image accesible to your tenant and a Security Rule that allows to do
-SSH into the instance.
-
-Environment variables
----------------------
-
-The usage of environment variables in OpenStack command-line clients
-is to avoid repeating some values. These variables have *OS_* as
-prefix. This provider will use them for authentication to Keystone
-service.
-
-.. code-block:: console
-
- export OS_AUTH_URL=http://<keystone_ip>:5000/v3
- export OS_TENANT_NAME=<project_or_tenant_name>
- export OS_PROJECT_NAME=<project_or_tenant_name>
- export OS_USERNAME=<openstack_username>
- export OS_PASSWORD=<openstack_password>
- export OS_REGION_NAME=<openstack_region_name>
- export OS_IDENTITY_API_VERSION=<keystone_version_number>
- export OS_PROJECT_DOMAIN_ID=<openstack_domain_name>
-
-.. end
-
-OpenStack Vagrant provider needs additional information about the
-name of the image to be used and the networking where the instance
-will be provisioned. That information can be passed using the
-following variables
-
-.. code-block:: console
-
- export OS_IMAGE=<ubuntu_cloud_image_name>
- export OS_NETWORK=<neutron_private_network>
- export OS_FLOATING_IP_POOL=<neutron_floating_ip_pool>
- export OS_SEC_GROUP=<onap-ssh-secgroup>
-
-.. end
-
-Tenant setup
-------------
-
-The *tools/setup_openstack.sh* script can be useful to get an idea
-of the process to setup the OpenStack environment with the necessary
-requirements. This script depends on the Environment Variables
-explained previously.
-
-----
-
-Devstack
---------
-
-It's possible to use this plugin to provision instances on
-`Devstack <https://docs.openstack.org/devstack/latest/>`. This is
-an example of the *local.conf* file that can be used as input
-for Devstack
-
-.. path local.conf
-.. code-block:: ini
-
- [[local|localrc]]
- ADMIN_PASSWORD=<password>
- DATABASE_PASSWORD=<password>
- RABBIT_PASSWORD=<password>
- SERVICE_PASSWORD=<password>
- SERVICE_TOKEN=<token>
-
- # Used to only upload the Ubuntu Cloud Image
- DOWNLOAD_DEFAULT_IMAGES=False
- IMAGE_URLS+="http://cloud-images.ubuntu.com/trusty/current/trusty-server-cloudimg-amd64-disk1.img"
-
- # (Optional) These values helps to improve the experience deploying and using Devstack
- GIT_BASE=https://git.openstack.org
- FORCE_CONFIG_DRIVE="True"
- disable_service tempest
-
-.. end
-
-.. note::
-
- There is a validation that checks if the
- *vagrant-openstack-provider* plugin is installed raising an error
- for those cases when it isn't.
diff --git a/bootstrap/vagrant-onap/doc/source/index.rst b/bootstrap/vagrant-onap/doc/source/index.rst
deleted file mode 100644
index af5777ccd..000000000
--- a/bootstrap/vagrant-onap/doc/source/index.rst
+++ /dev/null
@@ -1,23 +0,0 @@
-ONAP on Vagrant tool
-====================
-
-This project collects instructions to setup a development environment
-using different providers like VirtualBox, Libvirt or OpenStack.
-
-.. seealso::
-
- You may want to read the `Bootstrap documentation`__ to get an idea of the
- concepts.
-
- __ https://wiki.onap.org/display/DW/ONAP+on+Vagrant
-
-Table of contents
------------------
-
-.. toctree::
- :maxdepth: 2
-
- Installation Guide <install/index>
- Known Issues <install/known_issues>
- Advanced Features <features/features>
-
diff --git a/bootstrap/vagrant-onap/doc/source/install/index.rst b/bootstrap/vagrant-onap/doc/source/install/index.rst
deleted file mode 100644
index 62f57e66f..000000000
--- a/bootstrap/vagrant-onap/doc/source/install/index.rst
+++ /dev/null
@@ -1,102 +0,0 @@
-==================
-Installation Guide
-==================
-
-This project collects instructions related to the automatic creation
-of a development environment. However, this requires only two
-components previous to its execution. These are an automation
-building tool (Vagrant) and a provider platform (VirtualBox, Libvirt
-and OpenStack). This section explains how to install the most common
-set of configuration(Vagrant/VirtualBox) in different Operating
-Systems.
-
-Ubuntu 14.04 ("Trusty")
------------------------
-
-.. code-block:: console
-
- $ wget -q https://releases.hashicorp.com/vagrant/2.0.1/vagrant_2.0.1_x86_64.deb
- $ sudo dpkg -i vagrant_2.0.1_x86_64.deb
-
- $ echo "deb http://download.virtualbox.org/virtualbox/debian trusty contrib" >> /etc/apt/sources.list
- $ wget -q https://www.virtualbox.org/download/oracle_vbox_2016.asc -O- | sudo apt-key add -
- $ wget -q https://www.virtualbox.org/download/oracle_vbox.asc -O- | sudo apt-key add -
- $ sudo apt-get update -y
- $ sudo apt-get install -y virtualbox-5.1 dkms
-
- $ sudo apt install -y nfs-kernel-server
-
-.. end
-
-CentOS
-------
-
-.. code-block:: console
-
- $ wget -q https://releases.hashicorp.com/vagrant/2.0.1/vagrant_2.0.1_x86_64.rpm
- $ sudo yum install vagrant_2.0.1_x86_64.rpm
-
- $ wget -q http://download.virtualbox.org/virtualbox/rpm/rhel/virtualbox.repo -P /etc/yum.repos.d
- $ sudo yum --enablerepo=epel install dkms
- $ wget -q https://www.virtualbox.org/download/oracle_vbox.asc -O- | rpm --import -
- $ sudo yum install -y VirtualBox-5.1
-
- $ sudo yum install -y nfs-utils nfs-utils-lib
-
-.. end
-
-Mac OS
-------
-
-.. code-block:: console
-
- $ /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
- $ brew cask install vagrant
- $ brew cask install virtualbox
-
-.. end
-
-Windows 7+ (PowerShell v2+)
----------------------------
-
-.. code-block:: console
-
- PS C:\> Set-ExecutionPolicy AllSigned
- PS C:\> iex ((New-Object System.Net.WebClient).DownloadString('https://chocolatey.org/install.ps1'))
- PS C:\> choco install vagrant
- PS C:\> choco install virtualbox
-
-.. end
-
-.. note::
-
- Some corporations use Proxy Servers to protect their assets
- from security threats. This project uses the Proxy Environment
- variables to connect to those servers in order to download the
- content required during the setup. The methods to setup these
- variables depends on the Operating system that is used.
-
- * Linux or Mac OS
-
- .. code-block:: console
-
- $ export http_proxy=<proxy>
- $ export https_proxy=<proxy>
- $ export no_proxy=<no_proxy_urls>
-
- .. end
-
- * Windows
-
- .. code-block:: console
-
- C:\> setx http_proxy <proxy>
- C:\> setx https_proxy <proxy>
- C:\> setx no_proxy <no_proxy_urls>
-
- .. end
-
-.. note::
-
- Vagrant can be configured to use a different default provider
- through the environment variable **VAGRANT_DEFAULT_PROVIDER**.
diff --git a/bootstrap/vagrant-onap/doc/source/install/known_issues.rst b/bootstrap/vagrant-onap/doc/source/install/known_issues.rst
deleted file mode 100644
index 8db55e72c..000000000
--- a/bootstrap/vagrant-onap/doc/source/install/known_issues.rst
+++ /dev/null
@@ -1,63 +0,0 @@
-============
-Known Issues
-============
-
-Virtualbox guest additions conflict with shared directories
------------------------------------------------------------
-
-If the **vagrant-vbguest** plugin is installed on the host, then an
-updated version of the Virtualbox guest additions will be installed
-on the guest in the /opt directory. Once this projects Vagrantfile
-mounts the ./opt directory on the host to the /opt directory on the
-guest during the provisioning process, the guest addtions on the
-guest are hidden and subsequent mounts of shared directories with the
-host will fail.
-
-The simplest workaround appears to be uninstalling the
-*vagrant-vbguest* plugin on the host system. This has been observed
-to work on a Windows 10 host using virtualbox 5.1.26.
-
-Check if vagrant-vbguest plugin is installed
-
-- Linux or Mac
-
-.. code-block:: console
-
- $ vagrant plugin list
-.. end
-
-- Windows
-
-.. code-block:: console
-
- C:\> vagrant plugin list
-.. end
-
-Remove vagrant-vbguest plugin
-
-- Linux or Mac
-
-.. code-block:: console
-
- $ vagrant plugin uninstall vagrant-vbguest
-.. end
-
-- Windows
-
-.. code-block:: console
-
- C:\> vagrant plugin uninstall vagrant-vbguest
-.. end
-
-
-Network configuration in Windows
---------------------------------
-
-Some Virtual Machines present a problem in their network configuration so to
-make sure the install will work as it should install the virtualbox from the
-cmd window with the following command:
-
-.. code-block:: console
-
- c:\downloads\VirtualBox-5.1.20-114628-Win.exe -msiparams NETWORKTYPE=NDIS5
-.. end
diff --git a/bootstrap/vagrant-onap/etc/settings.yaml.development b/bootstrap/vagrant-onap/etc/settings.yaml.development
deleted file mode 100644
index 7e1a1ec0b..000000000
--- a/bootstrap/vagrant-onap/etc/settings.yaml.development
+++ /dev/null
@@ -1,6 +0,0 @@
-build_image: "True"
-clone_repo: "True"
-compile_repo: "False"
-enable_oparent: "True"
-skip_get_images: "False"
-skip_install: "True"
diff --git a/bootstrap/vagrant-onap/etc/settings.yaml.testing b/bootstrap/vagrant-onap/etc/settings.yaml.testing
deleted file mode 100644
index 0a81e2d0c..000000000
--- a/bootstrap/vagrant-onap/etc/settings.yaml.testing
+++ /dev/null
@@ -1,6 +0,0 @@
-build_image: "False"
-clone_repo: "False"
-compile_repo: "False"
-enable_oparent: "False"
-skip_get_images: "False"
-skip_install: "False"
diff --git a/bootstrap/vagrant-onap/lib/_composed_functions b/bootstrap/vagrant-onap/lib/_composed_functions
deleted file mode 100755
index 9f2d0a1d8..000000000
--- a/bootstrap/vagrant-onap/lib/_composed_functions
+++ /dev/null
@@ -1,35 +0,0 @@
-#!/bin/bash
-
-# build_docker_image() - Build Docker container image from source code
-function build_docker_image {
- local src_folder=$1
- local profile=$2
- install_maven
- install_docker
- pushd $src_folder
-
- # Cleanup external repo
- sed -i 's|${docker.push.registry}/||g' pom.xml
- local mvn_docker="mvn clean package docker:build"
- if [ $profile ]; then
- mvn_docker+=" -P $profile"
- fi
- if [ $http_proxy ]; then
- if ! grep -ql "docker.buildArg.http_proxy" pom.xml ; then
- mvn_docker+=" -Ddocker.buildArg.http_proxy=$http_proxy"
- fi
- if ! grep -ql "docker.buildArg.HTTP_PROXY" pom.xml ; then
- mvn_docker+=" -Ddocker.buildArg.HTTP_PROXY=$http_proxy"
- fi
- fi
- if [ $https_proxy ]; then
- if ! grep -ql "docker.buildArg.https_proxy" pom.xml ; then
- mvn_docker+=" -Ddocker.buildArg.https_proxy=$https_proxy"
- fi
- if ! grep -ql "docker.buildArg.HTTPS_PROXY" pom.xml ; then
- mvn_docker+=" -Ddocker.buildArg.HTTPS_PROXY=$https_proxy"
- fi
- fi
- eval $mvn_docker
- popd
-}
diff --git a/bootstrap/vagrant-onap/lib/_onap_functions b/bootstrap/vagrant-onap/lib/_onap_functions
deleted file mode 100755
index c65e58958..000000000
--- a/bootstrap/vagrant-onap/lib/_onap_functions
+++ /dev/null
@@ -1,107 +0,0 @@
-#!/bin/bash
-
-# create_configuration_files() - Store credentials in files
-function create_configuration_files {
- local onap_config_folder="/opt/config"
-
- mkdir -p $onap_config_folder
- pushd $onap_config_folder
- echo $nexus_docker_repo > nexus_docker_repo.txt
- echo $nexus_username > nexus_username.txt
- echo $nexus_password > nexus_password.txt
- echo $openstack_username > openstack_username.txt
- echo $openstack_tenant_id > tenant_id.txt
- echo $dmaap_topic > dmaap_topic.txt
- echo $docker_version > docker_version.txt
- popd
-}
-
-# docker_openecomp_login() - Login to OpenECOMP Docker Hub
-function docker_openecomp_login {
- install_docker
- docker login -u ${nexus_username:-docker} -p ${nexus_password:-docker} ${nexus_docker_repo:-nexus3.onap.org:10001}
-}
-
-# pull_openecomp_image() - Pull Docker container image from a Docker Registry Hub
-function pull_openecomp_image {
- local image=$1
- local tag=$2
- docker_openecomp_login
- pull_docker_image ${nexus_docker_repo:-nexus3.onap.org:10001}/openecomp/${image}:${docker_version:-latest} $tag
- docker logout
-}
-
-# pull_onap_image() - Pull Docker container image from a Docker Registry Hub
-function pull_onap_image {
- local image=$1
- local tag=$2
- docker_openecomp_login
- pull_docker_image ${nexus_docker_repo:-nexus3.onap.org:10001}/onap/${image}:${docker_version:-latest} $tag
- docker logout
-}
-
-# configure_bind()- Configure bind utils
-function configure_bind {
- _install_bind
- mkdir /etc/bind/zones
-
- curl -k $nexus_repo/org.openecomp.demo/boot/$artifacts_version/db_simpledemo_openecomp_org -o /etc/bind/zones/db.simpledemo.openecomp.org
- curl -k $nexus_repo/org.openecomp.demo/boot/$artifacts_version/named.conf.options -o /etc/bind/named.conf.options
- curl -k $nexus_repo/org.openecomp.demo/boot/$artifacts_version/named.conf.local -o /etc/bind/named.conf.local
-
- modprobe ip_gre
- sed -i "s/OPTIONS=.*/OPTIONS=\"-4 -u bind\"/g" /etc/default/bind9
- service bind9 restart
-}
-
-# _configure_maven() - This function creates a maven configuration file in case that doesn't exist
-function _configure_maven {
- local proxies_start=" <!--"
- local proxies=" \|"
- local proxies_end=" \|-->"
- local mvn_http=""
- local mvn_https=""
-
- if [ $http_proxy ] | [ $https_proxy ]; then
- proxies_start=" <proxies>"
- proxies=" "
- proxies_end=" <\/proxies>"
- if [ $http_proxy ]; then
- proxy_domain=`echo $http_proxy | awk -F/ '{print $3}' | awk -F: '{print $1}'`
- proxy_port=`echo $http_proxy | awk -F/ '{print $3}' | awk -F: '{print $2}'`
- mvn_http="<proxy>\n <id>http</id>\n <active>true</active>\n <protocol>http</protocol>\n <host>$proxy_domain</host>\n <port>$proxy_port</port>\n <nonProxyHosts>${no_proxy}</nonProxyHosts>\n </proxy>"
- fi
- if [ $https_proxy ]; then
- proxy_domain=`echo $https_proxy | awk -F/ '{print $3}' | awk -F: '{print $1}'`
- proxy_port=`echo $https_proxy | awk -F/ '{print $3}' | awk -F: '{print $2}'`
- mvn_https="<proxy>\n <id>https</id>\n <active>true</active>\n <protocol>https</protocol>\n <host>$proxy_domain</host>\n <port>$proxy_port</port>\n <nonProxyHosts>${no_proxy}</nonProxyHosts>\n </proxy>"
- fi
- fi
-
- mkdir -p $(dirname $mvn_conf_file)
- if [ ! -f $mvn_conf_file ]; then
- if [[ "$enable_oparent" == "True" ]]; then
- clone_repo oparent
- cp $git_src_folder/oparent/settings.xml $mvn_conf_file
- sed -i "s|<\/profiles>|<\/profiles>\n%PROXIES_START%\n%PROXIES% %HTTP_PROXY%\n%PROXIES% %HTTPS_PROXY%\n%PROXIES_END%|g" $mvn_conf_file
- else
- cp /var/onap/files/settings.xml $mvn_conf_file
- fi
-
- sed -e "
- s|%PROXIES_START%|$proxies_start|g;
- s|%PROXIES%|$proxies|g;
- s|%HTTP_PROXY%|$mvn_http|g;
- s|%HTTPS_PROXY%|$mvn_https|g;
- s|%PROXIES_END%|$proxies_end|g
- " -i $mvn_conf_file
- fi
-}
-
-# configure_service() - Download and configure a specific service in upstart
-function configure_service {
- local service_script=$1
- curl -k $nexus_repo/org.openecomp.demo/boot/$artifacts_version/$service_script -o /etc/init.d/$service_script
- chmod +x /etc/init.d/$service_script
- update-rc.d $service_script defaults
-}
diff --git a/bootstrap/vagrant-onap/lib/aai b/bootstrap/vagrant-onap/lib/aai
deleted file mode 100755
index 1ce3485c6..000000000
--- a/bootstrap/vagrant-onap/lib/aai
+++ /dev/null
@@ -1,147 +0,0 @@
-#!/bin/bash
-
-source /var/onap/functions
-
-hbase_version=1.2.0
-
-# install_hadoop() - Function that installs Hadoop
-function install_hadoop {
- local release=titan
- local version=1.0.0
- local filename=$release-$version-hadoop1
- local dest_folder=/opt/hadoop/current
-
- if [ ! -d $dest_folder ]; then
- curl http://s3.thinkaurelius.com/downloads/$release/$filename.zip -o /tmp/${filename}.zip
- install_package unzip
- mkdir -p $dest_folder
- unzip /tmp/${filename}.zip -d $dest_folder
- fi
-
- pushd $dest_folder/${filename}
- # Change commitlog_directory and data_file_directories values (https://stackoverflow.com/a/26856246/1707651)
- sed -i "s|db/cassandra/data|/tmp/data|g" conf/cassandra/cassandra.yaml
- sed -i "s|db/cassandra/commitlog|/tmp/commitlog|g" conf/cassandra/cassandra.yaml
-
- install_java
- ./bin/titan.sh start
- popd
-}
-
-# install_haproxy() - Function that install HAProxy
-function install_haproxy {
- if is_package_installed haproxy; then
- return
- fi
- install_package software-properties-common
- add-apt-repository -y ppa:vbernat/haproxy-1.7
- update_repos
- install_package haproxy
- cp /var/onap/files/haproxy.cfg /etc/haproxy/
- cp /var/onap/files/aai.pem /etc/ssl/private/
- chmod 640 /etc/ssl/private/aai.pem
- chown root:ssl-cert /etc/ssl/private/aai.pem
- mkdir -p /usr/local/etc/haproxy
- #echo "127.0.0.1 localhost aai-traversal.api.simpledemo.openecomp.org aai-resources.api.simpledemo.openecomp.org" >> /etc/hosts
-
- service haproxy restart
-}
-
-# compile_aai_repos() - Function that compiles AAI source repo.
-function compile_aai_repos {
- local repos="aai/aai-common aai/resources aai/logging-service aai/traversal"
- if [[ "$compile_repo" == "True" ]]; then
- repos="${repos[aai]}"
- fi
-
- for repo in ${repos[@]}; do
- compile_src ${src_folders[aai]}${repo#*aai}
- done
-}
-
-# setup_titan() - Function that configures AAI services to connect to Hadoop Titan
-function setup_titan {
- local subdirectory="bundleconfig-local/etc/appprops"
- install_python_package crudini
-
- for dirc in resources/aai-resources traversal/aai-traversal; do
- for file in titan-cached.properties titan-realtime.properties; do
- crudini --set "${src_folders[aai]}/$dirc/$subdirectory/$file" "" "storage.backend" "cassandra"
- crudini --set "${src_folders[aai]}/$dirc/$subdirectory/$file" "" "storage.hostname" "localhost"
- done
- done
-
- # Add the schema to the local instance
- compile_src ${src_folders[aai]}/resources/aai-resources/
- uninstall_packages default-jre openjdk-7-jdk openjdk-7-jre openjdk-7-jre-headless
- pushd ${src_folders[aai]}
- java -DAJSC_HOME=${src_folders[aai]}/resources/aai-resources -DBUNDLECONFIG_DIR="bundleconfig-local" -cp aai-common/aai-core/target/aai-core-*.jar:resources/aai-resources/target/aai-resources.jar:resources/aai-resources/target/userjars/* org.onap.aai.dbgen.GenTester
- popd
-}
-
-# _start_data_managment() - Funtion that start a data management service
-function _start_data_managment {
- local service=$1
- local debug_port=$2
-
- install_maven
- pushd ${src_folders[aai]}/$service
- export MAVEN_OPTS="-Xms1024m -Xmx5120m -XX:PermSize=2024m -Xdebug -Xnoagent -Djava.compiler=NONE -Xrunjdwp:transport=dt_socket,address=$debug_port,server=y,suspend=n"
- mvn -P runAjsc &
- popd
-}
-
-# start_aai_microservices() - Function that starts AAI microservices
-function start_aai_microservices {
- _start_data_managment resources 9446
- sleep 360
- _start_data_managment traversal 9447
-}
-
-# install_aai() - Install AAI Services
-function install_aai {
- install_docker_compose
- pushd ${src_folders[aai]}/test-config
- ./deploy_vm2.sh
- ./deploy_vm1.sh
- popd
-}
-
-# get_aai_images() - Function that pulls or creates AAI docker images
-function get_aai_images {
- pull_docker_image elasticsearch:2.4.1
- docker_openecomp_login
- pull_docker_image ${nexus_docker_repo:-nexus3.onap.org:10001}/aaionap/hbase:${hbase_version}
-
- if [[ "$build_image" == "True" ]]; then
- unset MAVEN_OPTS
- for project in resources/aai-resources traversal/aai-traversal search-data-service data-router model-loader sparky-be; do
- build_docker_image ${src_folders[aai]}/$project
- done
- else
- for image in aai-resources aai-traversal search-data-service data-router model-loader sparky-be; do
- pull_onap_image $image
- done
- fi
-}
-
-# init_aai() - Function that initialize AAI services
-function init_aai {
- install_hadoop
- install_haproxy
-
- if [[ "$clone_repo" == "True" ]]; then
- clone_repos "aai"
- fi
- compile_aai_repos
-
- setup_titan
- #start_aai_microservices
-
- if [[ "$skip_get_images" == "False" ]]; then
- get_aai_images
- fi
- if [[ "$skip_install" == "False" ]]; then
- install_aai
- fi
-}
diff --git a/bootstrap/vagrant-onap/lib/appc b/bootstrap/vagrant-onap/lib/appc
deleted file mode 100755
index 95654fc10..000000000
--- a/bootstrap/vagrant-onap/lib/appc
+++ /dev/null
@@ -1,43 +0,0 @@
-#!/bin/bash
-
-source /var/onap/sdnc
-source /var/onap/functions
-
-# _build_appc_images() - Function that creates APPC images from source code.
-function _build_appc_images {
- get_sdnc_images
- build_docker_image ${src_folders[appc]}/deployment/installation/appc docker
-}
-
-# get_appc_images() - Function that gets or build APPC docker images
-function get_appc_images {
- if [[ "$build_image" == "True" ]]; then
- _build_appc_images
- else
- for image in appc-image dgbuilder-sdnc-image; do
- pull_openecomp_image $image openecomp/$image:latest
- done
- fi
-}
-
-# install_appc() - Function that clones and installs the APPC services from source code
-function install_appc {
- run_docker_compose ${src_folders[appc]}/deployment/docker-compose
-}
-
-# init_appc() - Function that initialize APPC services
-function init_appc {
- if [[ "$clone_repo" == "True" ]]; then
- clone_repos "appc"
- if [[ "$compile_repo" == "True" ]]; then
- compile_repos "appc"
- fi
- fi
-
- if [[ "$skip_get_images" == "False" ]]; then
- get_appc_images
- if [[ "$skip_install" == "False" ]]; then
- install_appc
- fi
- fi
-}
diff --git a/bootstrap/vagrant-onap/lib/ccsdk b/bootstrap/vagrant-onap/lib/ccsdk
deleted file mode 100755
index 93ee0c85d..000000000
--- a/bootstrap/vagrant-onap/lib/ccsdk
+++ /dev/null
@@ -1,36 +0,0 @@
-#!/bin/bash
-
-source /var/onap/functions
-
-# _build_ccsdk_images() - Build CCSDK Docker images from source code
-function _build_ccsdk_images {
- install_package unzip
- compile_src ${src_folders[ccsdk]}/distribution
- for image in ubuntu opendaylight odlsli dgbuilder-docker; do
- build_docker_image ${src_folders[ccsdk]}/distribution/$image docker
- done
-}
-
-# get_ccsdk_images() - Get CCSDK Docker images
-function get_ccsdk_images {
- if [[ "$build_image" == "True" ]]; then
- _build_ccsdk_images
- else
- for image in ubuntu odl dgbuilder; do
- pull_onap_image ccsdk-$image-image
- done
- fi
-}
-
-# init_ccsdk() - Function that initialize Multi Cloud services
-function init_ccsdk {
- if [[ "$clone_repo" == "True" ]]; then
- clone_repos "ccsdk"
- if [[ "$compile_repo" == "True" ]]; then
- compile_repos "ccsdk"
- fi
- fi
- if [[ "$skip_get_images" == "False" ]]; then
- get_ccsdk_images
- fi
-}
diff --git a/bootstrap/vagrant-onap/lib/commons b/bootstrap/vagrant-onap/lib/commons
deleted file mode 100755
index 90f73d230..000000000
--- a/bootstrap/vagrant-onap/lib/commons
+++ /dev/null
@@ -1,119 +0,0 @@
-#!/bin/bash
-
-# update_repos() - Function that updates linux repositories
-function update_repos {
- echo "Updating repositories list..."
- if [ -f /var/onap/files/sources.list ]; then
- cp /var/onap/files/sources.list /etc/apt/sources.list
- fi
- source /etc/os-release || source /usr/lib/os-release
- case ${ID,,} in
- *suse)
- zypper -n ref
- ;;
- ubuntu|debian)
- if [[ "$debug" == "False" ]]; then
- apt-get update > /dev/null
- else
- apt-get update
- fi
- ;;
- rhel|centos|fedora)
- yum updateinfo
- ;;
- esac
-}
-
-# is_package_installed() - Function to tell if a package is installed
-function is_package_installed {
- if [[ -z "$@" ]]; then
- return 1
- fi
- source /etc/os-release || source /usr/lib/os-release
- case ${ID,,} in
- *suse)
- CHECK_CMD="zypper search --match-exact --installed"
- ;;
- ubuntu|debian)
- CHECK_CMD="dpkg -l"
- ;;
- rhel|centos|fedora)
- CHECK_CMD="rpm -q"
- ;;
- esac
- ${CHECK_CMD} "$@" &> /dev/null
-}
-
-# install_packages() - Install a list of packages
-function install_packages {
- local package=$@
- source /etc/os-release || source /usr/lib/os-release
- case ${ID,,} in
- *suse)
- ;;
- ubuntu|debian)
- apt-get install -y -qq $package
- ;;
- rhel|centos|fedora)
- ;;
- esac
-}
-
-# install_package() - Install specific package if doesn't exist
-function install_package {
- local package=$1
-
- if ! is_package_installed $package; then
- echo "Installing $package..."
-
- source /etc/os-release || source /usr/lib/os-release
- case ${ID,,} in
- *suse)
- zypper install -y $package
- ;;
- ubuntu|debian)
- if [[ "$debug" == "False" ]]; then
- apt-get install -y -qq -o=Dpkg::Use-Pty=0 $package
- else
- apt-get install -y $package
- fi
- ;;
- rhel|centos|fedora)
- PKG_MANAGER=$(which dnf || which yum)
- ${PKG_MANAGER} -y install $package
- ;;
- esac
- fi
-}
-
-# uninstall_packages() - Uninstall a list of packages
-function uninstall_packages {
- local packages=$@
- source /etc/os-release || source /usr/lib/os-release
- case ${ID,,} in
- *suse)
- ;;
- ubuntu|debian)
- apt-get purge -y -qq $packages
- ;;
- rhel|centos|fedora)
- ;;
- esac
-}
-
-# uninstall_package() - Uninstall specific package if exists
-function uninstall_package {
- local package=$1
- if is_package_installed $package; then
- source /etc/os-release || source /usr/lib/os-release
- case ${ID,,} in
- *suse)
- ;;
- ubuntu|debian)
- apt-get purge -y -qq $package
- ;;
- rhel|centos|fedora)
- ;;
- esac
- fi
-}
diff --git a/bootstrap/vagrant-onap/lib/config/env-vars b/bootstrap/vagrant-onap/lib/config/env-vars
deleted file mode 100755
index 7712de88e..000000000
--- a/bootstrap/vagrant-onap/lib/config/env-vars
+++ /dev/null
@@ -1,79 +0,0 @@
-#!/bin/bash
-
-# Source code destination folder
-git_src_folder=/opt/onap
-
-declare -A src_folders
-src_folders=(
-["aai"]="$git_src_folder/aai"
-["appc"]="$git_src_folder/appc"
-["ccsdk"]="$git_src_folder/ccsdk"
-["dcae"]="$git_src_folder/dcae"
-["mr"]="$git_src_folder/dcae/message-router"
-["msb"]="$git_src_folder/msb"
-["mso"]="$git_src_folder/mso"
-["multicloud"]="$git_src_folder/multicloud"
-["oom"]="$git_src_folder/oom"
-["policy"]="$git_src_folder/policy"
-["portal"]="$git_src_folder/portal"
-["robot"]="$git_src_folder/testsuite"
-["sdc"]="$git_src_folder/sdc"
-["sdnc"]="$git_src_folder/openecomp/sdnc"
-["vfc"]="$git_src_folder/vfc"
-["vid"]="$git_src_folder/vid"
-["vnfsdk"]="$git_src_folder/vnfsdk"
-["vvp"]="$git_src_folder/vvp"
-)
-
-# Repositories list
-declare -A repos
-repos=(
-["aai"]="aai/aai-common aai/aai-config aai/aai-data aai/aai-service \
-aai/babel aai/champ aai/data-router aai/esr-gui aai/esr-server aai/gizmo \
-aai/logging-service aai/model-loader aai/resources aai/rest-client \
-aai/router-core aai/search-data-service aai/test-config aai/traversal \
-aai/sparky-fe aai/sparky-be"
-["appc"]="appc appc/deployment"
-["ccsdk"]="ccsdk ccsdk/dashboard ccsdk/distribution ccsdk/parent \
-ccsdk/platform/blueprints ccsdk/platform/nbapi \
-ccsdk/platform/plugins ccsdk/sli ccsdk/sli/adaptors ccsdk/sli/core \
-ccsdk/sli/northbound ccsdk/sli/plugins ccsdk/storage \
-ccsdk/storage/esaas ccsdk/storage/pgaas ccsdk/utils"
-["dcae"]="dcae dcae/apod dcae/apod/analytics dcae/apod/buildtools \
-dcae/apod/cdap dcae/collectors dcae/collectors/ves dcae/controller \
-dcae/controller/analytics dcae/dcae-inventory dcae/demo \
-dcae/demo/startup dcae/demo/startup/aaf dcae/demo/startup/controller \
-dcae/demo/startup/message-router dcae/dmaapbc dcae/operation \
-dcae/operation/utils dcae/orch-dispatcher dcae/pgaas dcae/utils \
-dcae/utils/buildtools"
-["msb"]="msb/apigateway msb/discovery msb/java-sdk msb/swagger-sdk"
-["mso"]="mso mso/chef-repo mso/docker-config mso/libs mso/mso-config"
-["multicloud"]="multicloud multicloud/framework multicloud/openstack \
-multicloud/openstack/vmware multicloud/openstack/windriver \
-multicloud/azure"
-["oom"]="oom oom/registrator"
-["policy"]="policy/api policy/common policy/docker \
-policy/drools-applications policy/drools-pdp policy/engine \
-policy/gui policy/pap policy/pdp"
-["portal"]="portal portal/sdk ecompsdkos ui/dmaapbc"
-["robot"]="testsuite testsuite/heatbridge testsuite/properties \
-testsuite/python-testing-utils"
-["sdc"]="sdc sdc/jtosca sdc/sdc-distribution-client \
-sdc/sdc-docker-base sdc/sdc-titan-cassandra sdc/sdc-tosca \
-sdc/sdc-vnfdesign sdc/sdc-workflow-designer sdc/sdc_common"
-["sdnc"]="sdnc/adaptors sdnc/architecture sdnc/core sdnc/features \
-sdnc/northbound sdnc/oam sdnc/parent sdnc/plugins"
-["vfc"]="vfc/gvnfm vfc/gvnfm/vnflcm vfc/gvnfm/vnfmgr \
-vfc/gvnfm/vnfres vfc/nfvo vfc/nfvo/catalog vfc/nfvo/driver \
-vfc/nfvo/driver/ems vfc/nfvo/driver/sfc vfc/nfvo/driver/vnfm \
-vfc/nfvo/driver/vnfm/gvnfm vfc/nfvo/driver/vnfm/svnfm vfc/nfvo/lcm \
-vfc/nfvo/resmanagement vfc/nfvo/wfengine"
-["vid"]="vid vid/asdcclient"
-["vnfsdk"]="vnfsdk/compliance vnfsdk/functest vnfsdk/lctest \
-vnfsdk/model vnfsdk/pkgtools vnfsdk/refrepo vnfsdk/validation"
-["vvp"]="vvp/ansible-ice-bootstrap vvp/cms vvp/devkit \
-vvp/documentation vvp/engagementmgr vvp/gitlab vvp/image-scanner \
-vvp/jenkins vvp/portal vvp/postgresql vvp/test-engine \
-vvp/validation-scripts"
-)
-
diff --git a/bootstrap/vagrant-onap/lib/dcae b/bootstrap/vagrant-onap/lib/dcae
deleted file mode 100755
index 25efddddc..000000000
--- a/bootstrap/vagrant-onap/lib/dcae
+++ /dev/null
@@ -1,92 +0,0 @@
-#!/bin/bash
-
-source /var/onap/functions
-
-# _create_config_file() - Creates a configuration yaml file for the controller
-function _create_config_file {
- cat > ${src_folders[dcae]}/controller/config.yaml << EOL
-ZONE: $dcae_zone
-STATE: $dcae_state
-DCAE-VERSION: $artifacts_version
-HORIZON-URL: https://mycloud.rackspace.com/cloud/$tenant_id
-KEYSTONE-URL: https://identity.api.rackspacecloud.com/v2.0
-OPENSTACK-TENANT-ID: $tenant_id
-OPENSTACK-TENANT-NAME: OPEN-ECOMP
-OPENSTACK-REGION: $openstack_region
-OPENSTACK-PRIVATE-NETWORK: $openstack_private_network_name
-OPENSTACK-USER: $openstack_user
-OPENSTACK-PASSWORD: $openstack_password
-OPENSTACK-KEYNAME: ${key_name}${rand_str}_dcae
-OPENSTACK-PUBKEY: $pub_key
-
-NEXUS-URL-ROOT: $nexus_repo_root
-NEXUS-USER: $nexus_username
-NEXUS-PASSWORD: $nexus_password
-NEXUS-URL-SNAPSHOTS: $nexus_url_snapshots
-NEXUS-RAWURL: $nexus_repo
-
-DOCKER-REGISTRY: $nexus_docker_repo
-
-GIT-MR-REPO: http://gerrit.onap.org/r/dcae/demo/startup/message-router.git
-EOL
-}
-
-# _build_dcae_images() Function that builds DCAE docker images from source code.
-function _build_dcae_images {
- if [[ "$compile_repo" != "True" ]]; then
- compile_repos "dcae"
- fi
- build_docker_image ${src_folders[dcae]}/dmaapbc openecomp/dcae-dmaapbc
- build_docker_image ${src_folders[dcae]}/orch-dispatcher dcae/orch-dispatcher
-
- pushd ${src_folders[dcae]}/demo
- bash dcae-demo-controller/src/main/docker-build/build.sh
- popd
-
- build_docker_image ${src_folders[dcae]}/dcae-inventory
-}
-
-# get_dcae_images() - Function that retrieves or builds DCAE docker images.
-function get_dcae_images {
- if [[ "$build_image" == "True" ]]; then
- _build_dcae_images
- else
- pull_openecomp_image dcae-dmaapbc openecomp/dcae-dmaapbc
- pull_openecomp_image dcae-controller
- fi
-}
-
-# install_dcae() - Function that clones and installs the DCAE controller services from source code
-function install_dcae {
- pushd ${src_folders[dcae]}/demo/startup/controller
- if [[ "$build_image" == "True" ]]; then
- dcae_image=`docker images | grep dcae-controller | awk '{print $1 ":" $2}'`
- sed -i "s|DOCKER-REGISTRY/openecomp/dcae-controller:DCAE-VERSION|$dcae_image|g" docker-compose.yml
- sed -i "s|MTU|$MTU|g" docker-compose.yml
- run_docker_compose .
- else
- bash init.sh
- install_package make
- make up
- fi
- popd
- # run_docker_image -p 8080:8080 -d -v <some local directory>/config.yml:/opt/config.yml --name dcae-inventory <docker registry>/dcae-inventory:<version>
-}
-
-# init_dcae() - Function that initialize DCAE Controller services
-function init_dcae {
- if [[ "$clone_repo" == "True" ]]; then
- clone_repos "dcae"
- if [[ "$compile_repo" == "True" ]]; then
- compile_repos "dcae"
- fi
- fi
-
- _create_config_file
- if [[ "$skip_get_images" == "False" ]]; then
- get_dcae_images
- if [[ "$skip_install" == "False" ]]; then
- install_dcae
- fi
- fi
-}
diff --git a/bootstrap/vagrant-onap/lib/files/aai.pem b/bootstrap/vagrant-onap/lib/files/aai.pem
deleted file mode 100644
index d446705c7..000000000
--- a/bootstrap/vagrant-onap/lib/files/aai.pem
+++ /dev/null
@@ -1,102 +0,0 @@
-Bag Attributes
- friendlyName: aaiopenecomp
- localKeyID: 54 69 6D 65 20 31 34 39 35 35 31 32 38 30 33 36 34 39
-subject=/C=US/ST=NJ/L=Bedminster/O=OpenECOMP/OU=SimpleDemo/CN=aai.api.simpledemo.openecomp.org/emailAddress=aai-host@api.simpledemo.openecomp.org
-issuer=/C=US/ST=NJ/L=Bedminster/O=OpenECOMP/OU=simpledemo/CN=OpenECOMP simpledemo Server CA X1/emailAddress=simpledemo@openecomp.org
------BEGIN CERTIFICATE-----
-MIIEiTCCA3GgAwIBAgIJAIPKfDLcn3MpMA0GCSqGSIb3DQEBCwUAMIGtMQswCQYD
-VQQGEwJVUzELMAkGA1UECAwCTkoxEzARBgNVBAcMCkJlZG1pbnN0ZXIxEjAQBgNV
-BAoMCU9wZW5FQ09NUDETMBEGA1UECwwKc2ltcGxlZGVtbzEqMCgGA1UEAwwhT3Bl
-bkVDT01QIHNpbXBsZWRlbW8gU2VydmVyIENBIFgxMScwJQYJKoZIhvcNAQkBFhhz
-aW1wbGVkZW1vQG9wZW5lY29tcC5vcmcwHhcNMTYxMTMwMTUzODM5WhcNMTcxMTMw
-MTUzODM5WjCBuTELMAkGA1UEBhMCVVMxCzAJBgNVBAgMAk5KMRMwEQYDVQQHDApC
-ZWRtaW5zdGVyMRIwEAYDVQQKDAlPcGVuRUNPTVAxEzARBgNVBAsMClNpbXBsZURl
-bW8xKTAnBgNVBAMMIGFhaS5hcGkuc2ltcGxlZGVtby5vcGVuZWNvbXAub3JnMTQw
-MgYJKoZIhvcNAQkBFiVhYWktaG9zdEBhcGkuc2ltcGxlZGVtby5vcGVuZWNvbXAu
-b3JnMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAwQrQl8A0rT0Jjlos
-Mr/7LEhT5UOif4GGPOk+3NCIxT3lOqAbUf+d9ZXyT2jWFRiKWua03vQ+Dxc8c2h2
-RRuH8LwEiOiWqPjWRxNqsARzZMI3ryHFCFBZh0FcpjH9kEeKVlLDYuV68k+ZucKd
-NiqUNn61lD7kbmEGwvzKwf91FrJ09+CBMx1OnWKm3gCNKDqAEFMZCOdn2MgesJYB
-/03lzPBS1jDfBXImXRcTBzpgA+wdCLn0cIQ1eLWUwS5tUqUJNh36nHdVyJ0P2Yjd
-JLuxhFcmBKOz1ShyyO+BBtKBO8EGbU6qKflOiwOw0Fsn8LjKcrHQ58NPui5y04BU
-Rypf3QIDAQABo4GdMIGaMAwGA1UdEwEB/wQCMAAwDgYDVR0PAQH/BAQDAgO4MB0G
-A1UdDgQWBBQyMUOsE2J+CKzK0qd8KFBD2gaWyjBbBgNVHSAEVDBSMFAGBFUdIAAw
-SDBGBggrBgEFBQcCAjA6GjhLZWVwIGF3YXkgZnJvbSBjaGlsZHJlbi4gIFRoaXMg
-Y2VydGlmaWNhdGUgaXMgbm90IGEgdG95LjANBgkqhkiG9w0BAQsFAAOCAQEAnkoy
-2tWJOyyyIQwtVojUxv1GWQPnw3WCUcKpuX4CJhHXLxNErW1fBg7bmo08BNmBPPpq
-WrJsy5lbBgUo9kgpViux5Stfy1rRIRsRLfl/icgCvJmUAxkmRCZL7yUvwG4K7s+8
-DwT+nW/XuWNP6Hd/qHccexB6COJ8KwvTdVoxAkCdX8qw4MCb/f7Kb1yle/vwBM5Q
-UUONCJ4bEns1vnb9DGlNDUJNwCfwORAaVJpVS38Mv4UnSTmb2KMePtCWcx/dNsYR
-2XrSGqLDnTvHwOpyhbfFTmackysGoSuDytORXy8YbwEiF13BwEK8i3rgNN0Z2ojf
-cpmE2xxmaa+A2uuN6g==
------END CERTIFICATE-----
-Bag Attributes
- friendlyName: root
- 2.16.840.1.113894.746875.1.1: <Unsupported tag 6>
-subject=/C=US/ST=NJ/L=Bedminster/O=OpenECOMP/OU=simpledemo/CN=OpenECOMP simpledemo Server CA X1/emailAddress=simpledemo@openecomp.org
-issuer=/C=US/ST=NJ/L=Bedminster/O=OpenECOMP/OU=simpledemo/CN=OpenECOMP simpledemo Root Certification Authority/emailAddress=simpledemo@openecomp.org
------BEGIN CERTIFICATE-----
-MIIFpTCCA42gAwIBAgIJAJqx8dKnCZZoMA0GCSqGSIb3DQEBCwUAMIG9MQswCQYD
-VQQGEwJVUzELMAkGA1UECAwCTkoxEzARBgNVBAcMCkJlZG1pbnN0ZXIxEjAQBgNV
-BAoMCU9wZW5FQ09NUDETMBEGA1UECwwKc2ltcGxlZGVtbzE6MDgGA1UEAwwxT3Bl
-bkVDT01QIHNpbXBsZWRlbW8gUm9vdCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTEn
-MCUGCSqGSIb3DQEJARYYc2ltcGxlZGVtb0BvcGVuZWNvbXAub3JnMB4XDTE2MTEy
-ODIxMTQyNloXDTIxMTEyNzIxMTQyNlowga0xCzAJBgNVBAYTAlVTMQswCQYDVQQI
-DAJOSjETMBEGA1UEBwwKQmVkbWluc3RlcjESMBAGA1UECgwJT3BlbkVDT01QMRMw
-EQYDVQQLDApzaW1wbGVkZW1vMSowKAYDVQQDDCFPcGVuRUNPTVAgc2ltcGxlZGVt
-byBTZXJ2ZXIgQ0EgWDExJzAlBgkqhkiG9w0BCQEWGHNpbXBsZWRlbW9Ab3BlbmVj
-b21wLm9yZzCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALr4rivKQuRk
-YNf5Ig40e1nqj6s6LB1vgMOYbKfRziOFpPcUpsHPOhusHowiUsrU1vdFSzPz6Ej7
-PjlmNSg2Qka8YCn9kd6QgM7U0KcPJvIucBp+qjifH3EvP0jgDPhDeVRYxzV454dv
-5kQ9uCpswJP7YAnX51dkWeH8nwPUoagt31bOl9LXENSrgxEThxdLYMJnQJWk2CmV
-otXM4tT1dxyJxFUrZ6uJCEAYw5VtlplqihHf8lHy+sWQavtsLz/4dc+sGeXSTfoI
-voKvoh3uZ5gEhGV8yfJxk1veX5y5/AxP80vQ+smWYjTnQL5QQ57y4bciez4XVBmQ
-SWimWtOi4e8CAwEAAaOBtTCBsjAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQE
-AwIBhjAdBgNVHQ4EFgQUTqdsYgGNGubdJHq9tsaJhM9HE5wwcAYDVR0gBGkwZzBl
-BgRVHSAAMF0wWwYIKwYBBQUHAgIwTxpNSWYgeW91IHRydXN0IHRoaXMgY2VydCB0
-aGVuIHdlIGhhdmUgYSBicmlkZ2UgdGhhdCB5b3UgbWlnaHQgYmUgaW50ZXJlc3Rl
-ZCBpbi4wDQYJKoZIhvcNAQELBQADggIBAKNNlRqFuE/JgV1BHyYK0xoSXH4aZP/7
-IoHtDVcSaZAOOuFOUrwVMUbzRBebbb6RpFwt/X+NLFUGysd+XNLF7W7lzxKtmFNX
-n4OpNkBe0y5O7yurus8rERHzu3jiOSgVo+WzDlGpYSRnG3hI2qPWqD+Puzx/WwI8
-XUTuzEQQ3gUSyVFfXHpay3VpYmLZiLJ9WKY5SDw7Ie6Sxrju4Qm1HwnFY8wHZGcs
-2KMQzorJ1ZNQf523yUTghbT0rKaSFaD8zugPtI2ONfFG/QgrkQXo78opzPsHnHwa
-SxGSiAgeLbwAUCvPNl27zr6k6+7TcNjV0VUivAs0OG3VEAdgi7UWYB+30KfWwHwE
-zGmvd4IAGqIqlqLcSVArN5z8JK1B5nfjQn5UrclU1vK+dnuiKE2X4rKuBTRYRFR/
-km+mj4koYFPKFHndmJl1uv2OCJK9l5CSIuKWeI1qv8BASKqgNdoT/SKBXqxgYlCb
-o+j4IDjxrxChRO+e5vl9lA7INfRrbljCkUjfLRa+v2q9tWQ3+EQUwwnSrSfihh2T
-j0Tksr6b8dDsvMlCdOKG1B+JPcEXORSFKNXVTEfjqpJG8s16kFAocWt3S6xO0k1t
-qbQp+3tWQgW2TGnX0rMZzB6NGRNfWhlYmq2zHgXkiCIZ26Ztgt/LNbwEvN3+VlLo
-z/Rd+SKtlrfb
------END CERTIFICATE-----
-Bag Attributes
- friendlyName: aaiopenecomp
- localKeyID: 54 69 6D 65 20 31 34 39 35 35 31 32 38 30 33 36 34 39
-Key Attributes: <No Attributes>
------BEGIN PRIVATE KEY-----
-MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQDBCtCXwDStPQmO
-Wiwyv/ssSFPlQ6J/gYY86T7c0IjFPeU6oBtR/531lfJPaNYVGIpa5rTe9D4PFzxz
-aHZFG4fwvASI6Jao+NZHE2qwBHNkwjevIcUIUFmHQVymMf2QR4pWUsNi5XryT5m5
-wp02KpQ2frWUPuRuYQbC/MrB/3UWsnT34IEzHU6dYqbeAI0oOoAQUxkI52fYyB6w
-lgH/TeXM8FLWMN8FciZdFxMHOmAD7B0IufRwhDV4tZTBLm1SpQk2Hfqcd1XInQ/Z
-iN0ku7GEVyYEo7PVKHLI74EG0oE7wQZtTqop+U6LA7DQWyfwuMpysdDnw0+6LnLT
-gFRHKl/dAgMBAAECggEBAJko2HkeIW01mUhdWOXnFgR7WjzzXZEmlffr41lVBr7f
-rejGsQZs9cms73R7rCdOsi8PDoA6bqaQfADg571K659fvYVWbHqh+3im+iWvUlKm
-GYIVG/vNrEq43CZsUU7Qw/xba/QiOFraNxCATTV1sORPwgddouXEi5XW9ZPX9/FJ
-wORx4L/K0DfHX1rr+rtOoHCJdZYhn3Ij87kmR8Mwg0fNeWhHqtxUEyM/itRjCvOe
-mgt2V8DORhmq12L4+5QJctBrkBVRp9Rh6YSZZBGnKbTSgf4q648BdkJDLSK4cguT
-D6BAw3gxj5V4wt5W0wn2JpjadFwnixrTzvMP/yAqfK0CgYEA93nBAoUPw8nzQkwk
-8iWBjfJ999Rw92hnnvk3xbcQcGfgUYuB4dxwe6FQTmFIVylt81er1YUvMb3ao7fo
-5ZcGnI5p1idjsd27kbZJLxb5Oh919hKu5IfkfYsVgnC0UdKCTgH5CaH0U4ATuXwt
-RL6qm0XcLALs5y2OO6z3s+mYhisCgYEAx7EQ8MA45bkXnRQiHBhGcIIcr2sRDfVJ
-OhHmGxx3EcYgtsIYKTqtQOyIt/nQxo6iyNL9bzfzBTybFJLuj63ZG1Ef4LosJedl
-eAU2NsKv5MlKYDSdNbLAJ0Op9I2Xu/pXQecPwY/3MkIQArdQCLevMLEGywCsuJTn
-BjkJNDkb9hcCgYAhoFiaiAwJVYKJSqFmibQd3opBR4uGApi54DE021gPff3b9rHS
-R8q88cFgtRVISqfW/d2qaKtt/dcckdvCfo/2a99zqux/+ZoIBZXSITQCMs4rfoRn
-JxPj/ycQD1JhH9J22QvGxEvXoLqNZJMeGS5DZO2yyT75dpYyA6Gwv5fq+wKBgQC5
-AhV917lfLELyZurLOLpaFlHZO8rLMcusH1UfHRo7v2IjsGOOHyzRD9QDD1IcA55R
-jRj8Z8uhuGq9fvvC5gBVTK3KGPI6E85wifOWfH1V7CAaTeSxEXDxb8EQL/a6U89v
-4VE5tdYCHC6VNZzS1staw0hV38QmJt57Z3Bdj+OV9QKBgE/b9fxpo+SVQ37BzNNY
-SEKTTijaddz8fdomApg6a2eFJL93Ej/op7N7gnHtPWMivPnRRza9ZjfnG+aZ7n2J
-sWyBiZK9xliS2TsF3l3q9Z0Vaq3i1nOlV7Bd20ZS8KjQjDtKnIRfLkQDkvmXbU5L
-emwkdsQZbpPFJch3mCGtI7JW
------END PRIVATE KEY-----
diff --git a/bootstrap/vagrant-onap/lib/files/all-in-one b/bootstrap/vagrant-onap/lib/files/all-in-one
deleted file mode 100644
index efdb2bfce..000000000
--- a/bootstrap/vagrant-onap/lib/files/all-in-one
+++ /dev/null
@@ -1,585 +0,0 @@
-# These initial groups are the only groups required to be modified. The
-# additional groups are for more control of the environment.
-[control]
-localhost ansible_connection=local
-
-[network]
-localhost ansible_connection=local
-
-[compute]
-localhost ansible_connection=local
-
-[storage]
-localhost ansible_connection=local
-
-[monitoring]
-localhost ansible_connection=local
-
-[deployment]
-localhost ansible_connection=local
-
-# You can explicitly specify which hosts run each project by updating the
-# groups in the sections below. Common services are grouped together.
-[chrony-server:children]
-haproxy
-
-[chrony:children]
-network
-compute
-storage
-monitoring
-
-[collectd:children]
-compute
-
-[baremetal:children]
-control
-
-[grafana:children]
-monitoring
-
-[etcd:children]
-control
-compute
-
-[karbor:children]
-control
-
-[kibana:children]
-control
-
-[telegraf:children]
-compute
-control
-monitoring
-network
-storage
-
-[elasticsearch:children]
-control
-
-[haproxy:children]
-network
-
-[hyperv]
-#hyperv_host
-
-[hyperv:vars]
-#ansible_user=user
-#ansible_password=password
-#ansible_port=5986
-#ansible_connection=winrm
-#ansible_winrm_server_cert_validation=ignore
-
-[mariadb:children]
-control
-
-[rabbitmq:children]
-control
-
-[outward-rabbitmq:children]
-control
-
-[qdrouterd:children]
-control
-
-[mongodb:children]
-control
-
-[keystone:children]
-control
-
-[glance:children]
-control
-
-[nova:children]
-control
-
-[neutron:children]
-network
-
-[openvswitch:children]
-network
-compute
-manila-share
-
-[opendaylight:children]
-network
-
-[cinder:children]
-control
-
-[cloudkitty:children]
-control
-
-[freezer:children]
-control
-
-[memcached:children]
-control
-
-[horizon:children]
-control
-
-[swift:children]
-control
-
-[barbican:children]
-control
-
-[heat:children]
-control
-
-[murano:children]
-control
-
-[ceph:children]
-control
-
-[ironic:children]
-control
-
-[influxdb:children]
-monitoring
-
-[magnum:children]
-control
-
-[sahara:children]
-control
-
-[solum:children]
-control
-
-[mistral:children]
-control
-
-[manila:children]
-control
-
-[panko:children]
-control
-
-[gnocchi:children]
-control
-
-[ceilometer:children]
-control
-
-[aodh:children]
-control
-
-[congress:children]
-control
-
-[tacker:children]
-control
-
-# Tempest
-[tempest:children]
-control
-
-[senlin:children]
-control
-
-[vmtp:children]
-control
-
-[trove:children]
-control
-
-[watcher:children]
-control
-
-[rally:children]
-control
-
-[searchlight:children]
-control
-
-[octavia:children]
-control
-
-[designate:children]
-control
-
-[placement:children]
-control
-
-[bifrost:children]
-deployment
-
-[zun:children]
-control
-
-[skydive:children]
-monitoring
-
-[redis:children]
-control
-
-# Additional control implemented here. These groups allow you to control which
-# services run on which hosts at a per-service level.
-#
-# Word of caution: Some services are required to run on the same host to
-# function appropriately. For example, neutron-metadata-agent must run on the
-# same host as the l3-agent and (depending on configuration) the dhcp-agent.
-
-# Glance
-[glance-api:children]
-glance
-
-[glance-registry:children]
-glance
-
-# Nova
-[nova-api:children]
-nova
-
-[nova-conductor:children]
-nova
-
-[nova-consoleauth:children]
-nova
-
-[nova-novncproxy:children]
-nova
-
-[nova-scheduler:children]
-nova
-
-[nova-spicehtml5proxy:children]
-nova
-
-[nova-compute-ironic:children]
-nova
-
-[nova-serialproxy:children]
-nova
-
-# Neutron
-[neutron-server:children]
-control
-
-[neutron-dhcp-agent:children]
-neutron
-
-[neutron-l3-agent:children]
-neutron
-
-[neutron-lbaas-agent:children]
-neutron
-
-[neutron-metadata-agent:children]
-neutron
-
-[neutron-vpnaas-agent:children]
-neutron
-
-[neutron-bgp-dragent:children]
-neutron
-
-# Ceph
-[ceph-mon:children]
-ceph
-
-[ceph-rgw:children]
-ceph
-
-[ceph-osd:children]
-storage
-
-# Cinder
-[cinder-api:children]
-cinder
-
-[cinder-backup:children]
-storage
-
-[cinder-scheduler:children]
-cinder
-
-[cinder-volume:children]
-storage
-
-# Cloudkitty
-[cloudkitty-api:children]
-cloudkitty
-
-[cloudkitty-processor:children]
-cloudkitty
-
-# Freezer
-[freezer-api:children]
-freezer
-
-# iSCSI
-[iscsid:children]
-compute
-storage
-ironic-conductor
-
-[tgtd:children]
-storage
-
-# Karbor
-[karbor-api:children]
-karbor
-
-[karbor-protection:children]
-karbor
-
-[karbor-operationengine:children]
-karbor
-
-# Manila
-[manila-api:children]
-manila
-
-[manila-scheduler:children]
-manila
-
-[manila-share:children]
-network
-
-[manila-data:children]
-manila
-
-# Swift
-[swift-proxy-server:children]
-swift
-
-[swift-account-server:children]
-storage
-
-[swift-container-server:children]
-storage
-
-[swift-object-server:children]
-storage
-
-# Barbican
-[barbican-api:children]
-barbican
-
-[barbican-keystone-listener:children]
-barbican
-
-[barbican-worker:children]
-barbican
-
-# Trove
-[trove-api:children]
-trove
-
-[trove-conductor:children]
-trove
-
-[trove-taskmanager:children]
-trove
-
-# Heat
-[heat-api:children]
-heat
-
-[heat-api-cfn:children]
-heat
-
-[heat-engine:children]
-heat
-
-# Murano
-[murano-api:children]
-murano
-
-[murano-engine:children]
-murano
-
-# Ironic
-[ironic-api:children]
-ironic
-
-[ironic-conductor:children]
-ironic
-
-[ironic-inspector:children]
-ironic
-
-[ironic-pxe:children]
-ironic
-
-# Magnum
-[magnum-api:children]
-magnum
-
-[magnum-conductor:children]
-magnum
-
-# Solum
-[solum-api:children]
-solum
-
-[solum-worker:children]
-solum
-
-[solum-deployer:children]
-solum
-
-[solum-conductor:children]
-solum
-
-# Mistral
-[mistral-api:children]
-mistral
-
-[mistral-executor:children]
-mistral
-
-[mistral-engine:children]
-mistral
-
-# Aodh
-[aodh-api:children]
-aodh
-
-[aodh-evaluator:children]
-aodh
-
-[aodh-listener:children]
-aodh
-
-[aodh-notifier:children]
-aodh
-
-# Panko
-[panko-api:children]
-panko
-
-# Gnocchi
-[gnocchi-api:children]
-gnocchi
-
-[gnocchi-statsd:children]
-gnocchi
-
-[gnocchi-metricd:children]
-gnocchi
-
-# Sahara
-[sahara-api:children]
-sahara
-
-[sahara-engine:children]
-sahara
-
-# Ceilometer
-[ceilometer-api:children]
-ceilometer
-
-[ceilometer-central:children]
-ceilometer
-
-[ceilometer-notification:children]
-ceilometer
-
-[ceilometer-collector:children]
-ceilometer
-
-[ceilometer-compute:children]
-compute
-
-# Congress
-[congress-api:children]
-congress
-
-[congress-datasource:children]
-congress
-
-[congress-policy-engine:children]
-congress
-
-# Multipathd
-[multipathd:children]
-compute
-
-# Watcher
-[watcher-api:children]
-watcher
-
-[watcher-engine:children]
-watcher
-
-[watcher-applier:children]
-watcher
-
-# Senlin
-[senlin-api:children]
-senlin
-
-[senlin-engine:children]
-senlin
-
-# Searchlight
-[searchlight-api:children]
-searchlight
-
-[searchlight-listener:children]
-searchlight
-
-# Octavia
-[octavia-api:children]
-octavia
-
-[octavia-health-manager:children]
-octavia
-
-[octavia-housekeeping:children]
-octavia
-
-[octavia-worker:children]
-octavia
-
-# Designate
-[designate-api:children]
-designate
-
-[designate-central:children]
-designate
-
-[designate-mdns:children]
-network
-
-[designate-worker:children]
-designate
-
-[designate-sink:children]
-designate
-
-[designate-backend-bind9:children]
-designate
-
-# Placement
-[placement-api:children]
-placement
-
-# Zun
-[zun-api:children]
-zun
-
-[zun-compute:children]
-compute
-
-# Skydive
-[skydive-analyzer:children]
-skydive
-
-[skydive-agent:children]
-compute
-network
-
-# Tacker
-[tacker-server:children]
-tacker
-
-[tacker-conductor:children]
-tacker
diff --git a/bootstrap/vagrant-onap/lib/files/globals.yml b/bootstrap/vagrant-onap/lib/files/globals.yml
deleted file mode 100644
index d10cc3d83..000000000
--- a/bootstrap/vagrant-onap/lib/files/globals.yml
+++ /dev/null
@@ -1,2 +0,0 @@
----
-openstack_release: "master"
diff --git a/bootstrap/vagrant-onap/lib/files/haproxy.cfg b/bootstrap/vagrant-onap/lib/files/haproxy.cfg
deleted file mode 100644
index ac4b75498..000000000
--- a/bootstrap/vagrant-onap/lib/files/haproxy.cfg
+++ /dev/null
@@ -1,120 +0,0 @@
-global
- log /dev/log local0
- stats socket /usr/local/etc/haproxy/haproxy.socket mode 660 level admin
- stats timeout 30s
- user root
- group root
- daemon
- #################################
- # Default SSL material locations#
- #################################
- ca-base /etc/ssl/certs
- crt-base /etc/ssl/private
-
- # Default ciphers to use on SSL-enabled listening sockets.
- # For more information, see ciphers(1SSL). This list is from:
- # https://hynek.me/articles/hardening-your-web-servers-ssl-ciphers/
- # An alternative list with additional directives can be obtained from
- # https://mozilla.github.io/server-side-tls/ssl-config-generator/?server=haproxy
- tune.ssl.default-dh-param 2048
-
-defaults
- log global
- mode http
- option httplog
-# option dontlognull
-# errorfile 400 /etc/haproxy/errors/400.http
-# errorfile 403 /etc/haproxy/errors/403.http
-# errorfile 408 /etc/haproxy/errors/408.http
-# errorfile 500 /etc/haproxy/errors/500.http
-# errorfile 502 /etc/haproxy/errors/502.http
-# errorfile 503 /etc/haproxy/errors/503.http
-# errorfile 504 /etc/haproxy/errors/504.http
-
- option http-server-close
- option forwardfor except 127.0.0.1
- retries 6
- option redispatch
- maxconn 50000
- timeout connect 50000
- timeout client 480000
- timeout server 480000
- timeout http-keep-alive 30000
-
-
-frontend IST_8443
- mode http
- bind 0.0.0.0:8443 name https ssl crt /etc/ssl/private/aai.pem
-# log-format %ci:%cp\ [%t]\ %ft\ %b/%s\ %Tq/%Tw/%Tc/%Tr/%Tt\ %ST\ %B\ %CC\ %CS\ %tsc\ %ac/%fc/%bc/%sc/%rc\ %sq/%bq\ %hr\ %hs\ {%[ssl_c_verify],%{+Q}[ssl_c_s_dn],%{+Q}[ssl_c_i_dn]}\ %{+Q}r
- log-format "%ci:%cp [%tr] %ft %b/%s %TR/%Tw/%Tc/%Tr/%Ta %ST %B %CC \ %CS %tsc %ac/%fc/%bc/%sc/%rc %sq/%bq %hr %hs %{+Q}r"
- option httplog
- log global
- option logasap
- option forwardfor
- capture request header Host len 100
- capture response header Host len 100
- option log-separate-errors
- option forwardfor
- http-request set-header X-Forwarded-Proto https if { ssl_fc }
- http-request set-header X-AAI-Client-SSL TRUE if { ssl_c_used }
- http-request set-header X-AAI-SSL %[ssl_fc]
- http-request set-header X-AAI-SSL-Client-Verify %[ssl_c_verify]
- http-request set-header X-AAI-SSL-Client-DN %{+Q}[ssl_c_s_dn]
- http-request set-header X-AAI-SSL-Client-CN %{+Q}[ssl_c_s_dn(cn)]
- http-request set-header X-AAI-SSL-Issuer %{+Q}[ssl_c_i_dn]
- http-request set-header X-AAI-SSL-Client-NotBefore %{+Q}[ssl_c_notbefore]
- http-request set-header X-AAI-SSL-Client-NotAfter %{+Q}[ssl_c_notafter]
- http-request set-header X-AAI-SSL-ClientCert-Base64 %{+Q}[ssl_c_der,base64]
- http-request set-header X-AAI-SSL-Client-OU %{+Q}[ssl_c_s_dn(OU)]
- http-request set-header X-AAI-SSL-Client-L %{+Q}[ssl_c_s_dn(L)]
- http-request set-header X-AAI-SSL-Client-ST %{+Q}[ssl_c_s_dn(ST)]
- http-request set-header X-AAI-SSL-Client-C %{+Q}[ssl_c_s_dn(C)]
- http-request set-header X-AAI-SSL-Client-O %{+Q}[ssl_c_s_dn(O)]
- reqadd X-Forwarded-Proto:\ https
- reqadd X-Forwarded-Port:\ 8443
-
-#######################
-#ACLS FOR PORT 8446####
-#######################
-
- acl is_Port_8446_generic path_reg -i ^/aai/v[0-9]+/search/generic-query$
- acl is_Port_8446_nodes path_reg -i ^/aai/v[0-9]+/search/nodes-query$
- acl is_Port_8446_version path_reg -i ^/aai/v[0-9]+/query$
- acl is_named-query path_beg -i /aai/search/named-query
- acl is_search-model path_beg -i /aai/search/model
- use_backend IST_AAI_8446 if is_Port_8446_generic or is_Port_8446_nodes or is_Port_8446_version or is_named-query or is_search-model
-
- default_backend IST_Default_8447
-
-
-#######################
-#DEFAULT BACKEND 847###
-#######################
-
-backend IST_Default_8447
- balance roundrobin
- http-request set-header X-Forwarded-Port %[src_port]
- http-response set-header Strict-Transport-Security max-age=16000000;\ includeSubDomains;\ preload;
- server aai aai:8447 port 8447 ssl verify none
-
-#######################
-# BACKEND 8446#########
-#######################
-
-backend IST_AAI_8446
- balance roundrobin
- http-request set-header X-Forwarded-Port %[src_port]
- http-response set-header Strict-Transport-Security max-age=16000000;\ includeSubDomains;\ preload;
- server aai aai:8446 port 8446 ssl verify none
-
-listen IST_AAI_STATS
- mode http
- bind *:8080
- stats uri /stats
- stats enable
- stats refresh 30s
- stats hide-version
- stats auth admin:admin
- stats show-legends
- stats show-desc IST AAI APPLICATION NODES
- stats admin if TRUE
diff --git a/bootstrap/vagrant-onap/lib/files/kolla-build.conf b/bootstrap/vagrant-onap/lib/files/kolla-build.conf
deleted file mode 100644
index 8dd14e6c6..000000000
--- a/bootstrap/vagrant-onap/lib/files/kolla-build.conf
+++ /dev/null
@@ -1,5 +0,0 @@
-[DEFAULT]
-base = ubuntu
-profile = main
-
-[profiles]
diff --git a/bootstrap/vagrant-onap/lib/files/kubectl_config_generator.py b/bootstrap/vagrant-onap/lib/files/kubectl_config_generator.py
deleted file mode 100644
index 6b5a6e9f6..000000000
--- a/bootstrap/vagrant-onap/lib/files/kubectl_config_generator.py
+++ /dev/null
@@ -1,40 +0,0 @@
-import requests
-import os
-import base64
-
-RANCHER_URL = str(os.environ['RANCHER_URL'])
-RANCHER_ENVIRONMENT_ID = str(os.environ['RANCHER_ENVIRONMENT'])
-data = requests.post(RANCHER_URL + '/v1/projects/' + RANCHER_ENVIRONMENT_ID + '/apikeys',
- {"accountId": RANCHER_ENVIRONMENT_ID,
- "description": "ONAP on Kubernetes",
- "name": "ONAP on Kubernetes",
- "publicValue": "string",
- "secretValue": "password"})
-json_dct = data.json()
-access_key = json_dct['publicValue']
-secret_key = json_dct['secretValue']
-auth_header = 'Basic ' + base64.b64encode(access_key + ':' + secret_key)
-token = "\"" + str(base64.b64encode(auth_header)) + "\""
-dct = \
-"""
-apiVersion: v1
-kind: Config
-clusters:
-- cluster:
- api-version: v1
- insecure-skip-tls-verify: true
- server: "{}/r/projects/{}/kubernetes:6443"
- name: "onap_on_kubernetes"
-contexts:
-- context:
- cluster: "onap_on_kubernetes"
- user: "onap_on_kubernetes"
- name: "onap_on_kubernetes"
-current-context: "onap_on_kubernetes"
-users:
-- name: "onap_on_kubernetes"
- user:
- token: {}
-""".format(RANCHER_URL, RANCHER_ENVIRONMENT_ID, token)
-with open("config", "w") as file:
- file.write(dct)
diff --git a/bootstrap/vagrant-onap/lib/files/passwords.yml b/bootstrap/vagrant-onap/lib/files/passwords.yml
deleted file mode 100644
index f376e31f0..000000000
--- a/bootstrap/vagrant-onap/lib/files/passwords.yml
+++ /dev/null
@@ -1,216 +0,0 @@
----
-###################
-# Ceph options
-####################
-# These options must be UUID4 values in string format
-# XXXXXXXX-XXXX-4XXX-XXXX-XXXXXXXXXXXX
-ceph_cluster_fsid:
-ceph_rgw_keystone_password:
-# for backward compatible consideration, rbd_secret_uuid is only used for nova,
-# cinder_rbd_secret_uuid is used for cinder
-rbd_secret_uuid:
-cinder_rbd_secret_uuid:
-
-###################
-# Database options
-####################
-database_password:
-
-####################
-# Docker options
-####################
-# This should only be set if you require a password for your Docker registry
-docker_registry_password:
-
-######################
-# OpenDaylight options
-######################
-opendaylight_password:
-
-####################
-# OpenStack options
-####################
-aodh_database_password:
-aodh_keystone_password:
-
-barbican_database_password:
-barbican_keystone_password:
-barbican_p11_password:
-barbican_crypto_key:
-
-keystone_admin_password:
-keystone_database_password:
-
-grafana_database_password:
-grafana_admin_password:
-
-glance_database_password:
-glance_keystone_password:
-
-gnocchi_database_password:
-gnocchi_keystone_password:
-
-karbor_database_password:
-karbor_keystone_password:
-karbor_openstack_infra_id:
-
-kuryr_keystone_password:
-
-nova_database_password:
-nova_api_database_password:
-nova_keystone_password:
-
-placement_keystone_password:
-
-neutron_database_password:
-neutron_keystone_password:
-metadata_secret:
-
-cinder_database_password:
-cinder_keystone_password:
-
-cloudkitty_database_password:
-cloudkitty_keystone_password:
-
-panko_database_password:
-panko_keystone_password:
-
-freezer_database_password:
-freezer_keystone_password:
-
-sahara_database_password:
-sahara_keystone_password:
-
-designate_database_password:
-designate_pool_manager_database_password:
-designate_keystone_password:
-# This option must be UUID4 value in string format
-designate_pool_id:
-# This option must be HMAC-MD5 value in string format
-designate_rndc_key:
-
-swift_keystone_password:
-swift_hash_path_suffix:
-swift_hash_path_prefix:
-
-heat_database_password:
-heat_keystone_password:
-heat_domain_admin_password:
-
-murano_database_password:
-murano_keystone_password:
-murano_agent_rabbitmq_password:
-
-ironic_database_password:
-ironic_keystone_password:
-
-ironic_inspector_database_password:
-ironic_inspector_keystone_password:
-
-magnum_database_password:
-magnum_keystone_password:
-
-mistral_database_password:
-mistral_keystone_password:
-
-trove_database_password:
-trove_keystone_password:
-
-ceilometer_database_password:
-ceilometer_keystone_password:
-
-watcher_database_password:
-watcher_keystone_password:
-
-congress_database_password:
-congress_keystone_password:
-
-rally_database_password:
-
-senlin_database_password:
-senlin_keystone_password:
-
-solum_database_password:
-solum_keystone_password:
-
-horizon_secret_key:
-horizon_database_password:
-
-telemetry_secret_key:
-
-manila_database_password:
-manila_keystone_password:
-
-octavia_database_password:
-octavia_keystone_password:
-octavia_ca_password:
-
-searchlight_keystone_password:
-
-tacker_database_password:
-tacker_keystone_password:
-
-zun_database_password:
-zun_keystone_password:
-
-memcache_secret_key:
-
-#HMAC secret key
-osprofiler_secret:
-
-nova_ssh_key:
- private_key:
- public_key:
-
-kolla_ssh_key:
- private_key:
- public_key:
-
-keystone_ssh_key:
- private_key:
- public_key:
-
-bifrost_ssh_key:
- private_key:
- public_key:
-
-####################
-# Gnocchi options
-####################
-gnocchi_project_id:
-gnocchi_resource_id:
-gnocchi_user_id:
-
-####################
-# Qdrouterd options
-####################
-qdrouterd_password:
-
-####################
-# RabbitMQ options
-####################
-rabbitmq_password:
-rabbitmq_cluster_cookie:
-outward_rabbitmq_password:
-outward_rabbitmq_cluster_cookie:
-
-####################
-# HAProxy options
-####################
-haproxy_password:
-keepalived_password:
-
-####################
-# Kibana options
-####################
-kibana_password:
-
-####################
-# etcd options
-####################
-etcd_cluster_token:
-
-####################
-# redis options
-####################
-redis_master_password:
diff --git a/bootstrap/vagrant-onap/lib/files/settings.xml b/bootstrap/vagrant-onap/lib/files/settings.xml
deleted file mode 100644
index 862a3e865..000000000
--- a/bootstrap/vagrant-onap/lib/files/settings.xml
+++ /dev/null
@@ -1,369 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd">
- <!-- offline | Determines whether maven should attempt to connect to the
- network when executing a build. | This will have an effect on artifact downloads,
- artifact deployment, and others. | | Default: false <offline>false</offline> -->
- <!-- proxies | This is a list of proxies which can be used on this machine
- to connect to the network. | Unless otherwise specified (by system property
- or command-line switch), the first proxy | specification in this list marked
- as active will be used. | -->
-%PROXIES_START%
-%PROXIES% %HTTP_PROXY%
-%PROXIES% %HTTPS_PROXY%
-%PROXIES_END%
- <!-- mirrors | This is a list of mirrors to be used in downloading artifacts
- from remote repositories. | | It works like this: a POM may declare a repository
- to use in resolving certain artifacts. | However, this repository may have
- problems with heavy traffic at times, so people have mirrored | it to several
- places. | | That repository definition will have a unique id, so we can create
- a mirror reference for that | repository, to be used as an alternate download
- site. The mirror site will be the preferred | server for that repository.
- | -->
- <!-- profiles | This is a list of profiles which can be activated in a variety
- of ways, and which can modify | the build process. Profiles provided in the
- settings.xml are intended to provide local machine- | specific paths and
- repository locations which allow the build to work in the local environment.
- | | For example, if you have an integration testing plugin - like cactus
- - that needs to know where | your Tomcat instance is installed, you can provide
- a variable here such that the variable is | dereferenced during the build
- process to configure the cactus plugin. | | As noted above, profiles can
- be activated in a variety of ways. One way - the activeProfiles | section
- of this document (settings.xml) - will be discussed later. Another way essentially
- | relies on the detection of a system property, either matching a particular
- value for the property, | or merely testing its existence. Profiles can also
- be activated by JDK version prefix, where a | value of '1.4' might activate
- a profile when the build is executed on a JDK version of '1.4.2_07'. | Finally,
- the list of active profiles can be specified directly from the command line.
- | | NOTE: For profiles defined in the settings.xml, you are restricted to
- specifying only artifact | repositories, plugin repositories, and free-form
- properties to be used as configuration | variables for plugins in the POM.
- | | -->
- <profiles>
- <profile>
- <id>00_maven</id>
- <repositories>
- <repository>
- <id>00_maven</id>
- <url>https://maven.restlet.com</url>
- </repository>
- </repositories>
- </profile>
- <profile>
- <id>10_nexus</id>
- <repositories>
- <repository>
- <id>10_nexus</id>
- <url>http://repo.maven.apache.org/maven2/</url>
- <releases>
- <enabled>true</enabled>
- </releases>
- <snapshots>
- <enabled>true</enabled>
- </snapshots>
- </repository>
- </repositories>
- <pluginRepositories>
- <pluginRepository>
- <id>10_nexus</id>
- <url>http://repo.maven.apache.org/maven2/</url>
- <releases>
- <enabled>true</enabled>
- </releases>
- <snapshots>
- <enabled>true</enabled>
- </snapshots>
- </pluginRepository>
- </pluginRepositories>
- </profile>
- <profile>
- <id>20_openecomp-public</id>
- <repositories>
- <repository>
- <id>20_openecomp-public</id>
- <name>20_openecomp-public</name>
- <url>https://nexus.onap.org/content/repositories/public/</url>
- <releases>
- <enabled>true</enabled>
- <updatePolicy>daily</updatePolicy>
- </releases>
- <snapshots>
- <enabled>false</enabled>
- </snapshots>
- </repository>
- </repositories>
- <pluginRepositories>
- <pluginRepository>
- <id>20_openecomp-public</id>
- <name>20_openecomp-public</name>
- <url>https://nexus.onap.org/content/repositories/public/</url>
- <releases>
- <enabled>true</enabled>
- <updatePolicy>daily</updatePolicy>
- </releases>
- <snapshots>
- <enabled>false</enabled>
- </snapshots>
- </pluginRepository>
- </pluginRepositories>
- </profile>
- <profile>
- <id>30_openecomp-staging</id>
- <repositories>
- <repository>
- <id>30_openecomp-staging</id>
- <name>30_openecomp-staging</name>
- <url>https://nexus.onap.org/content/repositories/staging/</url>
- <releases>
- <enabled>true</enabled>
- <updatePolicy>daily</updatePolicy>
- </releases>
- <snapshots>
- <enabled>false</enabled>
- </snapshots>
- </repository>
- </repositories>
- <pluginRepositories>
- <pluginRepository>
- <id>30_openecomp-staging</id>
- <name>30_openecomp-staging</name>
- <url>https://nexus.onap.org/content/repositories/staging/</url>
- <releases>
- <enabled>true</enabled>
- <updatePolicy>daily</updatePolicy>
- </releases>
- <snapshots>
- <enabled>false</enabled>
- </snapshots>
- </pluginRepository>
- </pluginRepositories>
- </profile>
- <profile>
- <id>40_openecomp-release</id>
- <repositories>
- <repository>
- <id>40_openecomp-release</id>
- <name>40_openecomp-release</name>
- <url>https://nexus.onap.org/content/repositories/releases/</url>
- <releases>
- <enabled>true</enabled>
- <updatePolicy>daily</updatePolicy>
- </releases>
- <snapshots>
- <enabled>false</enabled>
- </snapshots>
- </repository>
- </repositories>
- <pluginRepositories>
- <pluginRepository>
- <id>40_openecomp-release</id>
- <name>40_openecomp-release</name>
- <url>https://nexus.onap.org/content/repositories/releases/</url>
- <releases>
- <enabled>true</enabled>
- <updatePolicy>daily</updatePolicy>
- </releases>
- <snapshots>
- <enabled>false</enabled>
- </snapshots>
- </pluginRepository>
- </pluginRepositories>
- </profile>
- <profile>
- <id>50_openecomp-snapshots</id>
- <repositories>
- <repository>
- <id>50_openecomp-snapshot</id>
- <name>50_openecomp-snapshot</name>
- <url>https://nexus.onap.org/content/repositories/snapshots/</url>
- <releases>
- <enabled>false</enabled>
- </releases>
- <snapshots>
- <enabled>true</enabled>
- </snapshots>
- </repository>
- </repositories>
- <pluginRepositories>
- <pluginRepository>
- <id>50_openecomp-snapshot</id>
- <name>50_openecomp-snapshot</name>
- <url>https://nexus.onap.org/content/repositories/snapshots/</url>
- <releases>
- <enabled>false</enabled>
- </releases>
- <snapshots>
- <enabled>true</enabled>
- </snapshots>
- </pluginRepository>
- </pluginRepositories>
- </profile>
- <profile>
- <id>60_opendaylight-release</id>
- <repositories>
- <repository>
- <id>60_opendaylight-mirror</id>
- <name>60_opendaylight-mirror</name>
- <url>https://nexus.opendaylight.org/content/repositories/public/</url>
- <releases>
- <enabled>true</enabled>
- <updatePolicy>daily</updatePolicy>
- </releases>
- <snapshots>
- <enabled>false</enabled>
- </snapshots>
- </repository>
- </repositories>
- <pluginRepositories>
- <pluginRepository>
- <id>60_opendaylight-mirror</id>
- <name>60_opendaylight-mirror</name>
- <url>https://nexus.opendaylight.org/content/repositories/public/</url>
- <releases>
- <enabled>true</enabled>
- <updatePolicy>daily</updatePolicy>
- </releases>
- <snapshots>
- <enabled>false</enabled>
- </snapshots>
- </pluginRepository>
- </pluginRepositories>
- </profile>
- <profile>
- <id>70_opendaylight-snapshots</id>
- <repositories>
- <repository>
- <id>70_opendaylight-snapshot</id>
- <name>70_opendaylight-snapshot</name>
- <url>https://nexus.opendaylight.org/content/repositories/opendaylight.snapshot/</url>
- <releases>
- <enabled>false</enabled>
- </releases>
- <snapshots>
- <enabled>true</enabled>
- </snapshots>
- </repository>
- </repositories>
- <pluginRepositories>
- <pluginRepository>
- <id>70_opendaylight-snapshot</id>
- <name>70_opendaylight-snapshot</name>
- <url>https://nexus.opendaylight.org/content/repositories/opendaylight.snapshot/</url>
- <releases>
- <enabled>false</enabled>
- </releases>
- <snapshots>
- <enabled>true</enabled>
- </snapshots>
- </pluginRepository>
- </pluginRepositories>
- </profile>
- <profile>
- <id>80_onap</id>
- <repositories>
- <repository>
- <id>onap-snapshots</id>
- <name>onap-snapshots</name>
- <url>https://nexus.onap.org/content/repositories/snapshots/</url>
- <releases>
- <enabled>false</enabled>
- </releases>
- <snapshots>
- <enabled>true</enabled>
- </snapshots>
- </repository>
- <repository>
- <id>onap-staging</id>
- <name>onap-staging</name>
- <url>https://nexus.onap.org/content/repositories/staging/</url>
- <releases>
- <enabled>true</enabled>
- </releases>
- <snapshots>
- <enabled>false</enabled>
- </snapshots>
- </repository>
- <repository>
- <id>onap-releases</id>
- <name>onap-releases</name>
- <url>https://nexus.onap.org/content/repositories/releases/</url>
- <releases>
- <enabled>true</enabled>
- </releases>
- <snapshots>
- <enabled>false</enabled>
- </snapshots>
- </repository>
- <repository>
- <id>onap-public</id>
- <name>onap-public</name>
- <url>https://nexus.onap.org/content/repositories/public/</url>
- <releases>
- <enabled>true</enabled>
- </releases>
- <snapshots>
- <enabled>false</enabled>
- </snapshots>
- </repository>
- </repositories>
- <pluginRepositories>
- <pluginRepository>
- <id>onap-snapshots</id>
- <name>onap-snapshots</name>
- <url>https://nexus.onap.org/content/repositories/snapshots/</url>
- <releases>
- <enabled>false</enabled>
- </releases>
- <snapshots>
- <enabled>true</enabled>
- </snapshots>
- </pluginRepository>
- <pluginRepository>
- <id>onap-staging</id>
- <name>onap-staging</name>
- <url>https://nexus.onap.org/content/repositories/staging/</url>
- <releases>
- <enabled>true</enabled>
- </releases>
- <snapshots>
- <enabled>false</enabled>
- </snapshots>
- </pluginRepository>
- <pluginRepository>
- <id>onap-releases</id>
- <name>onap-releases</name>
- <url>https://nexus.onap.org/content/repositories/releases/</url>
- <releases>
- <enabled>true</enabled>
- </releases>
- <snapshots>
- <enabled>false</enabled>
- </snapshots>
- </pluginRepository>
- <pluginRepository>
- <id>onap-public</id>
- <name>onap-public</name>
- <url>https://nexus.onap.org/content/repositories/public/</url>
- <releases>
- <enabled>true</enabled>
- </releases>
- <snapshots>
- <enabled>false</enabled>
- </snapshots>
- </pluginRepository>
- </pluginRepositories>
- </profile>
- </profiles>
- <activeProfiles>
- <activeProfile>00_maven</activeProfile>
- <activeProfile>10_nexus</activeProfile>
- <activeProfile>20_openecomp-public</activeProfile>
- <activeProfile>30_openecomp-staging</activeProfile>
- <activeProfile>40_openecomp-release</activeProfile>
- <activeProfile>50_openecomp-snapshots</activeProfile>
- <activeProfile>60_opendaylight-release</activeProfile>
- <activeProfile>70_opendaylight-snapshots</activeProfile>
- <activeProfile>80_onap</activeProfile>
- </activeProfiles>
-</settings>
diff --git a/bootstrap/vagrant-onap/lib/functions b/bootstrap/vagrant-onap/lib/functions
deleted file mode 100755
index f40761f59..000000000
--- a/bootstrap/vagrant-onap/lib/functions
+++ /dev/null
@@ -1,450 +0,0 @@
-#!/bin/bash
-
-source /var/onap/commons
-source /var/onap/config/env-vars
-source /var/onap/_composed_functions
-source /var/onap/_onap_functions
-
-export MTU=$(/sbin/ifconfig | grep MTU | sed 's/.*MTU://' | sed 's/ .*//' |sort -n | head -1)
-export NIC=$(ip route get 8.8.8.8 | awk '{ print $5; exit }')
-export IP_ADDRESS=$(ifconfig $NIC | grep "inet addr" | tr -s ' ' | cut -d' ' -f3 | cut -d':' -f2)
-
-mvn_conf_file=/root/.m2/settings.xml
-
-# configure_dns() - DNS/GW IP address configuration
-function configure_dns {
- echo "nameserver 10.0.0.1" >> /etc/resolvconf/resolv.conf.d/head
- resolvconf -u
-}
-
-# get_next_ip() - Function that provides the next ip
-function get_next_ip {
- local ip=${1:-$IP_ADDRESS}
- ip_hex=$(printf '%.2X%.2X%.2X%.2X\n' `echo $ip | sed -e 's/\./ /g'`)
- next_ip_hex=$(printf %.8X `echo $(( 0x$ip_hex + 1 ))`)
- echo $(printf '%d.%d.%d.%d\n' `echo $next_ip_hex | sed -r 's/(..)/0x\1 /g'`)
-}
-
-# _git_timed() - git can sometimes get itself infinitely stuck with transient network
-# errors or other issues with the remote end. This wraps git in a
-# timeout/retry loop and is intended to watch over non-local git
-# processes that might hang.
-function _git_timed {
- local count=0
- local timeout=0
-
- install_package git
- until timeout -s SIGINT ${timeout} git "$@"; do
- # 124 is timeout(1)'s special return code when it reached the
- # timeout; otherwise assume fatal failure
- if [[ $? -ne 124 ]]; then
- exit 1
- fi
-
- count=$(($count + 1))
- if [ $count -eq 3 ]; then
- exit 1
- fi
- sleep 5
- done
-}
-
-# clone_repo() - Clone Git repository into specific folder
-function clone_repo {
- local repo_url=${3:-"https://git.onap.org/"}
- local repo=$1
- local dest_folder=${2:-$git_src_folder/$repo}
- if [ ! -d $dest_folder ]; then
- if [[ "$debug" == "False" ]]; then
- _git_timed clone --quiet ${repo_url}${repo} $dest_folder
- else
- _git_timed clone ${repo_url}${repo} $dest_folder
- fi
- fi
-}
-
-# clone_repos() - Function that clones source repositories for a given project
-function clone_repos {
- local project=$1
- local repo_name=${2:-$project}
-
- for repo in ${repos[$project]}; do
- clone_repo $repo ${src_folders[$project]}${repo#*$repo_name}
- done
-}
-
-# _install_bind() - Install bind utils
-function _install_bind {
- install_packages bind9 bind9utils
-}
-
-# install_java() - Install java binaries
-function install_java {
- if is_package_installed openjdk-8-jdk; then
- return
- fi
- source /etc/os-release || source /usr/lib/os-release
- case ${ID,,} in
- *suse)
- ;;
- ubuntu|debian)
- install_package software-properties-common
- add-apt-repository -y ppa:openjdk-r/ppa
- ;;
- rhel|centos|fedora)
- ;;
- esac
- update_repos
-
- # Remove Java 7
- uninstall_packages default-jre openjdk-7-jdk openjdk-7-jre openjdk-7-jre-headless
-
- install_package openjdk-8-jdk
- # ca-certificates-java is not a dependency in the Oracle JDK/JRE so this must be explicitly installed.
- /var/lib/dpkg/info/ca-certificates-java.postinst configure
-}
-
-# install_maven() - Install maven binaries
-function install_maven {
- if is_package_installed maven3; then
- return
- fi
- install_java
- source /etc/os-release || source /usr/lib/os-release
- case ${ID,,} in
- *suse)
- ;;
- ubuntu|debian)
- install_package software-properties-common
- add-apt-repository -y ppa:andrei-pozolotin/maven3
- ;;
- rhel|centos|fedora)
- ;;
- esac
- update_repos
- install_package maven3
-
- # Remove Java 7
- uninstall_package openjdk-7-jdk
-
- _configure_maven
-}
-
-# _configure_docker_settings() - Configures Docker settings
-function _configure_docker_settings {
- local docker_conf_backup=/tmp/docker.backup
- local docker_conf=/etc/default/docker
- local chameleonsocks_filename=chameleonsocks.sh
- local max_concurrent_downloads=${1:-3}
-
- cp ${docker_conf} ${docker_conf_backup}
- if [ $http_proxy ]; then
- echo "export http_proxy=$http_proxy" >> $docker_conf
- fi
- if [ $https_proxy ]; then
- echo "export https_proxy=$https_proxy" >> $docker_conf
- #If you have a socks proxy, then use that to connect to the nexus repo
- #via a redsocks container
- if [ $socks_proxy ]; then
- wget https://raw.githubusercontent.com/crops/chameleonsocks/master/$chameleonsocks_filename
- chmod 755 $chameleonsocks_filename
- socks=$(echo $socks_proxy | sed -e "s/^.*\///" | sed -e "s/:.*$//")
- port=$(echo $socks_proxy | sed -e "s/^.*://")
- PROXY=$socks PORT=$port ./$chameleonsocks_filename --install
- rm $chameleonsocks_filename
- cp ${docker_conf_backup} ${docker_conf}
- fi
- fi
- rm ${docker_conf_backup}
-
- echo "DOCKER_OPTS=\"-H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock --max-concurrent-downloads $max_concurrent_downloads \"" >> $docker_conf
- usermod -aG docker $USER
-
- source /etc/os-release || source /usr/lib/os-release
- case ${ID,,} in
- *suse)
- ;;
- ubuntu|debian)
- service docker restart
- sleep 10
- ;;
- rhel|centos|fedora)
- ;;
- esac
-}
-
-# install_nodejs() - Download and install NodeJS
-function install_nodejs {
- if is_package_installed nodejs; then
- return
- fi
- curl -sL https://deb.nodesource.com/setup_6.x | sudo -E bash -
- install_package nodejs
-
- # Update NPM to latest version
- npm install npm -g
-}
-
-# install_python() - Install Python 2.7 and other tools necessary for development.
-function install_python {
- install_packages python2.7 python-dev
-}
-
-# _install_pip() - Install Python Package Manager
-function _install_pip {
- install_python
- if ! which pip; then
- curl -sL https://bootstrap.pypa.io/get-pip.py | python
- fi
-}
-
-# install_python_package() - Install python modules
-function install_python_package {
- local python_packages=$@
-
- _install_pip
- pip install $python_packages
-}
-
-# install_python_requirements() - Install a list of python modules defined in requirement.txt file
-function install_python_requirements {
- local python_project_path=$1
-
- _install_pip
- pushd $python_project_path
- pip install -r requirements.txt
- popd
-}
-
-# install_docker() - Download and install docker-engine
-function install_docker {
- if $(docker version &>/dev/null); then
- return
- fi
- source /etc/os-release || source /usr/lib/os-release
- case ${ID,,} in
- *suse)
- ;;
- ubuntu|debian)
- install_packages software-properties-common linux-image-extra-$(uname -r) linux-image-extra-virtual apt-transport-https ca-certificates curl
- curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
- add-apt-repository \
- "deb [arch=amd64] https://download.docker.com/linux/ubuntu \
- $(lsb_release -cs) stable"
- ;;
- rhel|centos|fedora)
- ;;
- esac
- update_repos
-
- install_package docker-ce
- _configure_docker_settings
-}
-
-# pull_docker_image() - Pull Docker container image from the Public Docker Registry Hub
-function pull_docker_image {
- install_docker
- local image=$1
- local tag=$2
- docker pull ${image}
- if [ ${tag} ]; then
- docker tag ${image} $tag
- fi
-}
-
-# wait_docker_pull() - Function that waits for all docker pull processes
-function wait_docker_pull {
- local counter=60
- local delay=${1:-60}
-
- sleep $delay
- while [ $(ps -ef | grep "docker pull" | wc -l) -gt 1 ]; do
- sleep $delay
- counter=$((counter - 1))
- if [ "$counter" -eq 0 ]; then
- break
- fi
- done
-}
-
-# run_docker_image() - Starts a Docker instance
-function run_docker_image {
- install_docker
- docker run $@
-}
-
-# run_docker_compose() - Ensures that docker compose is installed and run it in background
-function run_docker_compose {
- local folder=$1
-
- install_docker_compose
- pushd $folder
- /opt/docker/docker-compose up -d
- popd
-}
-
-# install_docker_compose() - Download and install docker-engine
-function install_docker_compose {
- local docker_compose_version=${1:-1.12.0}
- if [ ! -d /opt/docker ]; then
- mkdir /opt/docker
- curl -L https://github.com/docker/compose/releases/download/$docker_compose_version/docker-compose-`uname -s`-`uname -m` > /opt/docker/docker-compose
- chmod +x /opt/docker/docker-compose
- fi
-}
-
-# install_chefdk() - Install ChefDK package
-function install_chefdk {
- local chefdk_version="2.4.17"
-
- if is_package_installed chefdk; then
- return
- fi
- pushd $(mktemp -d)
- source /etc/os-release || source /usr/lib/os-release
- case ${ID,,} in
- *suse)
- ;;
- ubuntu|debian)
- chefdk_pkg="chefdk_$chefdk_version-1_amd64.deb"
- chefdk_url="https://packages.chef.io/files/stable/chefdk/$chefdk_version/ubuntu/$VERSION_ID/$chefdk_pkg"
-
- wget $chefdk_url
- dpkg -i $chefdk_pkg
- apt-get install -f -y
- ;;
- rhel|centos|fedora)
- rpm -Uvh "https://packages.chef.io/files/stable/chefdk/$chefdk_version/el/7/chefdk-$chefdk_version-1.el7.x86_64.rpm"
- ;;
- esac
- popd
-}
-
-# _install_ODL() - Download and Install OpenDayLight SDN controller
-function _install_ODL {
- if [ ! -d /opt/opendaylight/current ]; then
- mkdir -p /opt/opendaylight/
- wget "https://nexus.opendaylight.org/content/repositories/public/org/opendaylight/integration/distribution-karaf/"$odl_version"/distribution-karaf-"$odl_version".tar.gz" -P /opt/
- tar xvf "/opt/distribution-karaf-"$odl_version".tar.gz" -C /tmp/
- mv "/tmp/distribution-karaf-"$odl_version /opt/opendaylight/current
- rm -rf "/opt/distribution-karaf-"$odl_version".tar.gz"
- fi
-}
-
-# start_ODL() - Start OpenDayLight SDN controller
-function start_ODL {
- _install_ODL
- if [ -d /opt/opendaylight ]; then
- export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64/jre
- /opt/opendaylight/current/bin/start
- sleep 180
- /opt/opendaylight/current/bin/client feature:install odl-dlux-all
- fi
-}
-
-# compile_src() - Function that compiles the java source code thru maven
-function compile_src {
- local src_folder=$1
- pushd $src_folder
- local mvn_build='mvn clean install -DskipTests=true -Dmaven.test.skip=true -Dmaven.javadoc.skip=true -Dadditionalparam=-Xdoclint:none'
- if [[ "$debug" == "False" ]]; then
- mvn_build+=" -q"
- fi
- if [ -f pom.xml ]; then
- install_maven
- echo "Compiling $src_folder folder..."
- eval $mvn_build
- fi
- popd
-}
-
-# compile_repos() - Function that compiles source repositories for a given project
-function compile_repos {
- local project=$1
-
- for repo in ${repos[$project]}; do
- compile_src ${src_folders[$project]}${repo#*$project}
- done
-}
-
-# build_docker_image() - Build Docker container image from source code
-function build_docker_image {
- local src_folder=$1
- local profile=$2
- install_docker
- pushd $src_folder
-
- if [ -f pom.xml ]; then
- install_maven
- # Cleanup external repo
- sed -i 's|${docker.push.registry}/||g' pom.xml
- local docker_build="mvn clean package docker:build -DskipTests=true -Dmaven.test.skip=true -Dmaven.javadoc.skip=true"
- if [ $profile ]; then
- docker_build+=" -P $profile"
- fi
- if [[ "$debug" == "False" ]]; then
- docker_build+=" -q"
- fi
- if [ $http_proxy ]; then
- if ! grep -ql "docker.buildArg.http_proxy" pom.xml ; then
- docker_build+=" -Ddocker.buildArg.http_proxy=$http_proxy"
- fi
- if ! grep -ql "docker.buildArg.HTTP_PROXY" pom.xml ; then
- docker_build+=" -Ddocker.buildArg.HTTP_PROXY=$http_proxy"
- fi
- fi
- if [ $https_proxy ]; then
- if ! grep -ql "docker.buildArg.https_proxy" pom.xml ; then
- docker_build+=" -Ddocker.buildArg.https_proxy=$https_proxy"
- fi
- if ! grep -ql "docker.buildArg.HTTPS_PROXY" pom.xml ; then
- docker_build+=" -Ddocker.buildArg.HTTPS_PROXY=$https_proxy"
- fi
- fi
- elif [ -f Dockerfile ]; then
- # NOTE: Workaround for dmmapbc images
- sed -i '/LocalKey/d' Dockerfile
- sed -i "s/nexus3.onap.org\:10003\///g" Dockerfile
- local docker_build="docker build -t $profile -f ./Dockerfile ."
- if [ $http_proxy ]; then
- docker_build+=" --build-arg http_proxy=$http_proxy"
- docker_build+=" --build-arg HTTP_PROXY=$http_proxy"
- fi
- if [ $https_proxy ]; then
- docker_build+=" --build-arg https_proxy=$https_proxy"
- docker_build+=" --build-arg HTTPS_PROXY=$https_proxy"
- fi
- fi
- echo $docker_build
- eval $docker_build
- popd
-}
-
-# mount_external_partition() - Create partition and mount the external volume
-function mount_external_partition {
- local dev_name="/dev/$1"
- local mount_dir=$2
-
- sfdisk $dev_name << EOF
-;
-EOF
- mkfs -t ext4 ${dev_name}1
- mkdir -p $mount_dir
- mount ${dev_name}1 $mount_dir
- echo "${dev_name}1 $mount_dir ext4 errors=remount-ro,noatime,barrier=0 0 1" >> /etc/fstab
-}
-
-# add_no_proxy_value() - Add no_proxy values into environment file, used for internal IPs generated at deploy time
-function add_no_proxy_value {
- if [[ `grep "no_proxy" /etc/environment` ]]; then
- sed -i.bak "s/^no_proxy.*$/&,$1/" /etc/environment
- else
- echo "no_proxy=$1" >> /etc/environment
- fi
- if [[ `grep "NO_PROXY" /etc/environment` ]]; then
- sed -i.bak "s/^NO_PROXY.*$/&,$1/" /etc/environment
- else
- echo "NO_PROXY=$1" >> /etc/environment
- fi
-}
-
diff --git a/bootstrap/vagrant-onap/lib/mr b/bootstrap/vagrant-onap/lib/mr
deleted file mode 100755
index bba748618..000000000
--- a/bootstrap/vagrant-onap/lib/mr
+++ /dev/null
@@ -1,31 +0,0 @@
-#!/bin/bash
-
-source /var/onap/functions
-
-# get_mr_images() - Function that retrieves the Message Router Docker images
-function get_mr_images {
- pull_docker_image attos/dmaap
- pull_docker_image wurstmeister/zookeeper
-}
-
-# install_message_router() - Downloads and configure message router source code
-function install_message_router {
- install_docker_compose
-
- pushd ${src_folders[mr]}
- bash deploy.sh
- popd
-}
-
-# init_mr() - Function that initialize Message Router services
-function init_mr {
- if [[ "$clone_repo" == "True" ]]; then
- clone_repo dcae/demo/startup/message-router ${src_folders[mr]}
- fi
- if [[ "$skip_get_images" == "False" ]]; then
- get_mr_images
- if [[ "$skip_install" == "False" ]]; then
- install_message_router
- fi
- fi
-}
diff --git a/bootstrap/vagrant-onap/lib/msb b/bootstrap/vagrant-onap/lib/msb
deleted file mode 100755
index bcf27fe75..000000000
--- a/bootstrap/vagrant-onap/lib/msb
+++ /dev/null
@@ -1,50 +0,0 @@
-#!/bin/bash
-
-source /var/onap/functions
-
-# _build_msb_images() - Function that creates Microservices Docker images from source code
-function _build_msb_images {
- if [[ "$compile_repo" != "True" ]]; then
- compile_repos "msb"
- fi
-
- build_docker_image ${src_folders[msb]}/apigateway/distributions/msb-apigateway/src/main/basedocker onap/msb/msb_base
- build_docker_image ${src_folders[msb]}/apigateway/distributions/msb-apigateway/src/main/docker onap/msb/msb_apigateway
- build_docker_image ${src_folders[msb]}/discovery/distributions/msb-discovery/src/main/docker onap/msb/msb_discovery
-}
-
-# get_msb_images() - Function that retrieves the Microservices Bus images
-function get_msb_images {
- pull_docker_image "consul:0.9.3"
- if [[ "$build_image" == "True" ]]; then
- _build_msb_images
- else
- unset docker_version
- for image in base apigateway discovery; do
- pull_onap_image msb/msb_$image
- done
- fi
-}
-
-# install_msb() - Downloads and configure Microservices Bus source code
-function install_msb {
- run_docker_image -d --net=host --name msb_consul consul:0.9.3
- run_docker_image -d --net=host --name msb_discovery nexus3.onap.org:10001/onap/msb/msb_discovery
- run_docker_image -d --net=host -e "ROUTE_LABELS=visualRange:1" --name msb_internal_apigateway nexus3.onap.org:10001/onap/msb/msb_apigateway
-}
-
-# init_msb() - Function that initialize Message Router services
-function init_msb {
- if [[ "$clone_repo" == "True" ]]; then
- clone_repos "msb"
- if [[ "$compile_repo" == "True" ]]; then
- compile_repos "msb"
- fi
- fi
- if [[ "$skip_get_images" == "False" ]]; then
- get_msb_images
- if [[ "$skip_install" == "False" ]]; then
- install_msb
- fi
- fi
-}
diff --git a/bootstrap/vagrant-onap/lib/mso b/bootstrap/vagrant-onap/lib/mso
deleted file mode 100755
index 6dd0676eb..000000000
--- a/bootstrap/vagrant-onap/lib/mso
+++ /dev/null
@@ -1,94 +0,0 @@
-#!/bin/bash
-
-source /var/onap/functions
-
-# get_mso_images() - Function that retrieves or create MSO Docker images
-function get_mso_images {
- if [[ "$build_image" == "True" ]]; then
- export GIT_NO_PROJECT=/opt/
- compile_src ${src_folders[mso]}
- build_docker_image ${src_folders[mso]}/packages/docker docker
- fi
-}
-
-# install_mso() - Install MSO Docker configuration project
-function install_mso {
- MSO_ENCRYPTION_KEY=$(cat /opt/mso/docker-config/encryption.key)
- echo -n "$openstack_api_key" | openssl aes-128-ecb -e -K $MSO_ENCRYPTION_KEY -nosalt | xxd -c 256 -p > /opt/config/api_key.txt
-
- # Deployments in OpenStack require a keystone file
- if [ -e /opt/config/keystone.txt ]; then
- KEYSTONE_URL=$(cat /opt/config/keystone.txt)
- DCP_CLLI="DEFAULT_KEYSTONE"
- AUTH_TYPE="USERNAME_PASSWORD"
- else
- KEYSTONE_URL="https://identity.api.rackspacecloud.com/v2.0"
- DCP_CLLI="RAX_KEYSTONE"
- AUTH_TYPE="RACKSPACE_APIKEY"
- fi
-
- # Update the MSO configuration file.
- read -d '' MSO_CONFIG_UPDATES <<-EOF
-{
-"default_attributes":
- {
- "asdc-connections":
- {
- "asdc-controller1":
- {
- "environmentName": "$dmaap_topic"
- }
- },
- "mso-po-adapter-config":
- {
- "identity_services":
- [
- {
- "dcp_clli": "$DCP_CLLI",
- "identity_url": "$KEYSTONE_URL",
- "mso_id": "$openstack_username",
- "mso_pass": "$openstack_password",
- "admin_tenant": "service",
- "member_role": "admin",
- "tenant_metadata": "true",
- "identity_server_type": "KEYSTONE",
- "identity_authentication_type": "$AUTH_TYPE"
- }
- ]
- }
- }
-}
-EOF
- export MSO_CONFIG_UPDATES
- export MSO_DOCKER_IMAGE_VERSION=$docker_version
-
- install_docker
- install_docker_compose
- # Deploy the environment
- pushd ${src_folders[mso]}/docker-config
- chmod +x deploy.sh
- if [[ "$build_image" == "True" ]]; then
- bash deploy.sh
- else
- # This script takes in input 2 nexus repos (the first one for the MSO image, the second one for mariadb)
- bash deploy.sh $nexus_docker_repo $nexus_username $nexus_password $nexus_docker_repo $nexus_username $nexus_password
- fi
- popd
-}
-
-# init_mso() - Function that initialize MSO services
-function init_mso {
- if [[ "$clone_repo" == "True" ]]; then
- clone_repos "mso"
- if [[ "$compile_repo" == "True" ]]; then
- compile_repos "mso"
- fi
- fi
-
- if [[ "$skip_get_images" == "False" ]]; then
- get_mso_images
- if [[ "$skip_install" == "False" ]]; then
- install_mso
- fi
- fi
-}
diff --git a/bootstrap/vagrant-onap/lib/multicloud b/bootstrap/vagrant-onap/lib/multicloud
deleted file mode 100755
index ff6f9708c..000000000
--- a/bootstrap/vagrant-onap/lib/multicloud
+++ /dev/null
@@ -1,51 +0,0 @@
-#!/bin/bash
-
-source /var/onap/functions
-
-openstack_release="newton"
-
-# _build_multicloud_images() - Function that builds docker images from source code
-function _build_multicloud_images {
- install_docker
- pushd ${src_folders[multicloud]}/openstack/$openstack_release
- install_python_requirements .
- python setup.py develop
- #bash build_image.sh
- popd
-}
-
-# get_multicloud_images() -
-function get_multicloud_images {
- if [[ "$build_image" == "True" ]]; then
- _build_multicloud_images
- else
- pull_onap_image multicloud/openstack-$openstack_release
- fi
-}
-
-# install_multicloud() -
-function install_multicloud {
- #run_docker_compose ${src_folders[multicloud]}/openstack/$openstack_release
- if [[ "$build_image" == "True" ]]; then
- multicloud-api --port 9003 --host 0.0.0.0 &
- else
- docker_id=`docker images | grep onap/multicloud/openstack-$openstack_release | grep latest | awk '{print $3; exit}'`
- docker run -d -p 0.0.0.0:9003:9003 $docker_id
- fi
-}
-
-# init_multicloud() - Function that initialize Multi Cloud services
-function init_multicloud {
- if [[ "$clone_repo" == "True" ]]; then
- clone_repos "multicloud"
- if [[ "$compile_repo" == "True" ]]; then
- compile_repos "multicloud"
- fi
- fi
- if [[ "$skip_get_images" == "False" ]]; then
- get_multicloud_images
- if [[ "$skip_install" == "False" ]]; then
- install_multicloud
- fi
- fi
-}
diff --git a/bootstrap/vagrant-onap/lib/oom b/bootstrap/vagrant-onap/lib/oom
deleted file mode 100755
index d52c029e4..000000000
--- a/bootstrap/vagrant-onap/lib/oom
+++ /dev/null
@@ -1,207 +0,0 @@
-#!/bin/bash
-
-source /var/onap/functions
-
-RANCHER_PORT=8880
-oom_delay=30
-export RANCHER_URL=http://localhost:$RANCHER_PORT
-export RANCHER_ACCESS_KEY='access_key'
-export RANCHER_SECRET_KEY='secret_key'
-
-# _install_docker() - Function that installs Docker version for Rancher
-function _install_docker {
- if ! $(docker version &>/dev/null); then
- curl https://releases.rancher.com/install-docker/1.12.sh | sh
- _configure_docker_settings 15
- fi
-}
-
-# _pull_rancher_images() - Function that retrieves Rancher images required for k8s
-function _pull_rancher_images {
- for image in "net:v0.13.5" "k8s:v1.8.5-rancher3" \
-"lb-service-rancher:v0.7.17" "network-manager:v0.7.18" "metadata:v0.9.5" \
-"kubectld:v0.8.5" "kubernetes-agent:v0.6.6" "dns:v0.15.3" \
-"kubernetes-auth:v0.0.8" "healthcheck:v0.3.3" "etcd:v2.3.7-13" \
-"etc-host-updater:v0.0.3" "net:holder"; do
- pull_docker_image rancher/$image &
- done
-}
-
-# _pull_k8s_images() - Function that retrieves Google k8s images
-function _pull_k8s_images {
- for image in "kubernetes-dashboard-amd64:v1.7.1" \
-"k8s-dns-sidecar-amd64:1.14.5" "k8s-dns-kube-dns-amd64:1.14.5" \
-"k8s-dns-dnsmasq-nanny-amd64:1.14.5" "heapster-influxdb-amd64:v1.3.3" \
-"heapster-grafana-amd64:v4.4.3" "heapster-amd64:v1.4.0" "pause-amd64:3.0"; do
- pull_docker_image gcr.io/google_containers/$image &
- done
-}
-
-# _install_rancher() - Function that installs Rancher CLI and container
-function _install_rancher {
- local rancher_version=v0.6.5
- local rancher_server_version=v1.6.10
- local rancher_server=rancher/server:$rancher_server_version
-
- if [ ! -d /opt/rancher/current ]; then
- mkdir -p /opt/rancher/current
- wget https://github.com/rancher/cli/releases/download/$rancher_version/rancher-linux-amd64-$rancher_version.tar.gz
- tar -xzf rancher-linux-amd64-$rancher_version.tar.gz -C /tmp
- mv /tmp/rancher-$rancher_version/rancher /opt/rancher/current/
- fi
-
- _install_docker
- pull_docker_image $rancher_server
- run_docker_image -d --restart=unless-stopped -p $RANCHER_PORT:8080 $rancher_server
- while true; do
- if curl --fail -X GET $RANCHER_URL; then
- break
- fi
- echo "waiting for racher"
- sleep $oom_delay
- done
-}
-
-# _install_kubernetes() - Function that deploys kubernetes via RancherOS host registration
-function _install_kubernetes {
- local rancher_agent_version=v1.2.7
- local rancher_agent=rancher/agent:$rancher_agent_version
-
- _install_rancher
-
- _pull_rancher_images
- _pull_k8s_images
- pull_docker_image $rancher_agent
- wait_docker_pull
-
- pushd /opt/rancher/current/
- export RANCHER_ENVIRONMENT=`./rancher env create -t kubernetes onap_on_kubernetes`
- popd
-
- install_python_package rancher-agent-registration
- export no_proxy=$no_proxy,$IP_ADDRESS
- rancher-agent-registration --host-ip $IP_ADDRESS --url http://$IP_ADDRESS:$RANCHER_PORT --environment $RANCHER_ENVIRONMENT --key $RANCHER_ACCESS_KEY --secret $RANCHER_SECRET_KEY
-}
-
-# _install_kubectl() - Function that installs kubectl as client for kubernetes
-function _install_kubectl {
- if ! $(kubectl version &>/dev/null); then
- rm -rf ~/.kube
- curl -LO https://storage.googleapis.com/kubernetes-release/release/$(curl -s https://storage.googleapis.com/kubernetes-release/release/stable.txt)/bin/linux/amd64/kubectl
- chmod +x ./kubectl
- mv ./kubectl /usr/local/bin/kubectl
- mkdir ~/.kube
- pushd ~/.kube
- python /var/onap/files/kubectl_config_generator.py
- popd
- fi
-}
-
-# _install_helm() - Function that install Kubernetes Package Manager
-function _install_helm {
- local helm_version=v2.3.0
-
- if ! $(helm version &>/dev/null); then
- wget http://storage.googleapis.com/kubernetes-helm/helm-${helm_version}-linux-amd64.tar.gz
- tar -zxvf helm-${helm_version}-linux-amd64.tar.gz -C /tmp
- mv /tmp/linux-amd64/helm /usr/local/bin/helm
- helm init
- fi
-}
-
-# _pull_images_from_yaml() - Function that parses a yaml file and pull their images
-function _pull_images_from_yaml_file {
- local values_file=$1
- local prefix=$2
- local s='[[:space:]]*'
- local w='[a-zA-Z0-9_]*'
- fs=`echo @|tr @ '\034'`
-
- for line in $(sed -ne "s|^\($s\):|\1|" \
--e "s|^\($s\)\($w\)$s:$s[\"']\(.*\)[\"']$s\$|\1$fs\2$fs\3|p" \
--e "s|^\($s\)\($w\)$s:$s\(.*\)$s\$|\1$fs\2$fs\3|p" $values_file |
-awk -F$fs '{
-indent = length($1)/2;
-vname[indent] = $2;
-for (i in vname) {
- if (i > indent) {
- delete vname[i]}
- }
- if (length($3) > 0) {
- vn=""; for (i=0; i<indent; i++) {vn=(vn)(vname[i])(".")}
- printf("%s%s%s=%s\n", "'$prefix'",vn, $2, $3);
- }
-}' | grep image); do
- echo $line
- if echo $line | grep -q Version ; then
- pull_docker_image "$image_name:$(echo $line | awk -F "=" '{print $2}')" &
- else
- image_name=`echo ${line#*=}`
- if [[ ${image_name#*${nexus_docker_repo:-nexus3.onap.org:10001}} == *:* ]]; then
- pull_docker_image $image_name &
- else
- pull_docker_image $image_name:latest
- fi
- fi
- done
-}
-
-# get_oom_images() - Function that retrieves ONAP images from official hub
-function get_oom_images {
- if [[ "$build_image" == "True" ]]; then
- # TODO(electrocucaracha): Create a function for calling the build docker function of every ONAP project
- echo "Not Implemented"
- else
- if [[ "$clone_repo" != "True" ]]; then
- clone_repos "oom"
- fi
-
- docker_openecomp_login
- for values_file in `find ${src_folders[oom]}/kubernetes -name values.yaml -type f`; do
- _pull_images_from_yaml_file $values_file
- done
- docker logout
- wait_docker_pull
- fi
-}
-
-# _install_oom() - Function that clones OOM and deploys ONAP
-function install_oom {
- if [[ "$clone_repo" != "True" ]]; then
- clone_repos "oom"
- fi
- pushd ${src_folders[oom]}/kubernetes/oneclick
- source setenv.bash
-
- pushd ${src_folders[oom]}/kubernetes/config
- cp onap-parameters-sample.yaml onap-parameters.yaml
- ./createConfig.sh -n onap
- popd
-
- for app in consul msb mso message-router sdnc vid robot portal policy appc aai sdc dcaegen2 log cli multicloud clamp vnfsdk uui aaf vfc kube2msb; do
- ./createAll.bash -n onap -a $app
- done
- popd
-}
-
-# init_oom() - Function that deploys ONAP using OOM
-function init_oom {
- mount_external_partition sda /var/lib/docker/
- _install_kubernetes
- _install_kubectl
- _install_helm
- if [[ "$clone_repo" == "True" ]]; then
- clone_repos "oom"
- fi
-
- if [[ "$skip_get_images" == "False" ]]; then
- get_oom_images
- if [[ "$skip_install" == "False" ]]; then
- until kubectl cluster-info; do
- echo "waiting for kubernetes host"
- sleep $oom_delay
- done
- install_oom
- fi
- fi
-}
diff --git a/bootstrap/vagrant-onap/lib/openstack b/bootstrap/vagrant-onap/lib/openstack
deleted file mode 100755
index 5e5189086..000000000
--- a/bootstrap/vagrant-onap/lib/openstack
+++ /dev/null
@@ -1,75 +0,0 @@
-#!/bin/bash
-
-source /var/onap/functions
-
-kolla_config=/etc/kolla
-kolla_build=$kolla_config/kolla-build.conf
-kolla_passwords=$kolla_config/passwords.yml
-kolla_globals=$kolla_config/globals.yml
-kolla_inventory=/var/onap/files/all-in-one
-
-# install_dependencies() - Function that installs Kolla-Ansible requirements
-function install_dependencies {
- install_docker
-
- mkdir -p /etc/systemd/system/docker.service.d
- tee /etc/systemd/system/docker.service.d/kolla.conf <<-'EOF'
-[Service]
-MountFlags=shared
-EOF
- systemctl daemon-reload
- systemctl restart docker
-
- install_python_package ansible docker kolla-ansible python-openstackclient
-}
-
-# configure_deploy() - Function that modifies configuration files
-function configure_deploy {
- local network_id=$1
- local enable_opendaylight=${2-False}
- local openstack_services="main = ceilometer,cinder,glance,heat,horizon,isci,keystone,neutron,nova-,swift"
- nic=$(ip route get $network_id | awk '{ print $4; exit }')
- ip_address=$(ip route get $network_id | awk '{ print $6; exit }')
- internal_vip_address=$(get_next_ip $ip_address)
-
- if [[ `env | grep -i "proxy"` ]]; then
- add_no_proxy_value $internal_vip_address
- fi
-
- mkdir -p $kolla_config
- cp /var/onap/files/globals.yml $kolla_globals
- cp /var/onap/files/passwords.yml $kolla_passwords
- cp /var/onap/files/kolla-build.conf $kolla_build
- kolla-genpwd
- echo "network_interface: \"$nic\"" >> $kolla_globals
- echo "kolla_internal_vip_address: \"$internal_vip_address\"" >> $kolla_globals
- echo "api_interface: \"{{ network_interface }}\"" >> $kolla_globals
- if [[ $enable_opendaylight == True ]]; then
- echo "enable_opendaylight: \"yes\"" >> $kolla_globals
- openstack_services+=",opendaylight"
- fi
- echo $openstack_services >> $kolla_build
-
- echo "$ip_address $(hostname)" >> /etc/hosts
-}
-
-# get_openstack_images() - Function that retrieves or builds docker images
-function get_openstack_images {
- if [[ "$build_image" == "True" ]]; then
- install_python_package kolla
- kolla-build --config-file $kolla_build
- else
- kolla-ansible pull -i $kolla_inventory
- fi
-}
-
-# deploy_openstack() - Function that provisions an OpenStack deployment
-function deploy_openstack {
- install_dependencies
- configure_deploy ${1:-"192.168.53.0"} "True"
-
- get_openstack_images
- kolla-ansible deploy -i $kolla_inventory
- kolla-ansible post-deploy
- echo "source /etc/kolla/admin-openrc.sh" >> ${HOME}/.bashrc
-}
diff --git a/bootstrap/vagrant-onap/lib/policy b/bootstrap/vagrant-onap/lib/policy
deleted file mode 100755
index 1e633bef1..000000000
--- a/bootstrap/vagrant-onap/lib/policy
+++ /dev/null
@@ -1,53 +0,0 @@
-#!/bin/bash
-
-source /var/onap/functions
-
-# _build_policy_images() - Function that build Policy docker images from source code
-function _build_policy_images {
- compile_src ${src_folders[policy]}/docker
- pushd ${src_folders[policy]}/docker
- install_maven
- mvn prepare-package
- cp -r target/policy-pe/* policy-pe/
- cp -r target/policy-drools/* policy-drools
- install_docker
- bash docker_verify.sh
- popd
-}
-
-# get_policy_images() - Function that retrieves Policy docker images
-function get_policy_images {
- if [[ "$build_image" == "True" ]]; then
- _build_policy_images
- else
- for image in db pe drools nexus; do
- pull_onap_image policy/policy-$image onap/policy/policy-$image:latest
- done
- fi
-}
-
-# install_policy() - Function that clones and installs the Policy services from source code
-function install_policy {
- pushd ${src_folders[policy]}/docker
- chmod +x config/drools/drools-tweaks.sh
- echo $IP_ADDRESS > config/pe/ip_addr.txt
- run_docker_compose .
- popd
-}
-
-# init_policy() - Function that initialize Policy services
-function init_policy {
- if [[ "$clone_repo" == "True" ]]; then
- clone_repos "policy"
- if [[ "$compile_repo" == "True" ]]; then
- compile_repos "policy"
- fi
- fi
-
- if [[ "$skip_get_images" == "False" ]]; then
- get_policy_images
- if [[ "$skip_install" == "False" ]]; then
- install_policy
- fi
- fi
-}
diff --git a/bootstrap/vagrant-onap/lib/portal b/bootstrap/vagrant-onap/lib/portal
deleted file mode 100755
index fe5469822..000000000
--- a/bootstrap/vagrant-onap/lib/portal
+++ /dev/null
@@ -1,98 +0,0 @@
-#!/bin/bash
-
-source /var/onap/functions
-
-# clone_all_portal_repos() - Function that clones Portal source repo.
-function clone_all_portal_repos {
- for repo in ${repos[portal]}; do
- if [[ "$repo" == "ui/dmaapbc" ]];then
- prefix="ui"
- else
- prefix="portal"
- fi
- clone_repo $repo ${src_folders[portal]}/${repo#*$prefix}
- done
-}
-
-# compile_all_portal_repos() - Function that compiles Portal source repo.
-function compile_all_portal_repos {
- for repo in ${repos[portal]}; do
- if [[ "$repo" == "ui/dmaapbc" ]];then
- prefix="ui"
- else
- prefix="portal"
- fi
- compile_src ${src_folders[portal]}/${repo#*$prefix}
- done
-}
-
-# _build_portal_images() - Function that builds Portal Docker images from source code
-function _build_portal_images {
- install_maven
-
- pushd ${src_folders[portal]}/deliveries
- chmod +x *.sh
- export MVN=$(which mvn)
- export GLOBAL_SETTINGS_FILE=/usr/share/maven3/conf/settings.xml
- export SETTINGS_FILE=$HOME/.m2/settings.xml
- bash build_portalapps_dockers.sh
- popd
-}
-
-# get_portal_images() - Function to get Portal images.
-function get_portal_images {
- if [[ "$build_image" == "True" ]]; then
- _build_portal_images
- else
- pull_openecomp_image portaldb ecompdb:portal
- pull_openecomp_image portalapps ep:1610-1
- fi
- pull_docker_image mariadb
-}
-
-# _install_mariadb() - Pull and create a MariaDB container
-function _install_mariadb {
- docker create --name data_vol_portal -v /var/lib/mysql mariadb
-}
-
-# install_portal() - Function that installs the source code of Portal
-function install_portal {
- install_docker
- docker rm -f ecompdb_portal
- docker rm -f 1610-1
-
- pushd ${src_folders[portal]}/deliveries
- mkdir -p /PROJECT/OpenSource/UbuntuEP/logs
- install_package unzip
- unzip -o etc.zip -d /PROJECT/OpenSource/UbuntuEP/
-
- _install_mariadb
- install_docker_compose
- bash portal_vm_init.sh
-
- sleep 180
-
- if [ ! -e /opt/config/boot.txt ]; then
- install_package mysql-client
- mysql -u root -p'Aa123456' -h $IP_ADDRESS < Apps_Users_OnBoarding_Script.sql
- echo "yes" > /opt/config/boot.txt
- fi
- popd
-}
-
-# init_portal() - Function that initialize Portal services
-function init_portal {
- if [[ "$clone_repo" == "True" ]]; then
- clone_all_portal_repos
- if [[ "$compile_repo" == "True" ]]; then
- compile_all_portal_repos
- fi
- fi
-
- if [[ "$skip_get_images" == "False" ]]; then
- get_portal_images
- if [[ "$skip_install" == "False" ]]; then
- install_portal
- fi
- fi
-}
diff --git a/bootstrap/vagrant-onap/lib/robot b/bootstrap/vagrant-onap/lib/robot
deleted file mode 100755
index 70f8cf704..000000000
--- a/bootstrap/vagrant-onap/lib/robot
+++ /dev/null
@@ -1,45 +0,0 @@
-#!/bin/bash
-
-source /var/onap/functions
-
-# _setup_ete_folder() - Create and copy ete folder structure
-function _setup_ete_folder {
- mkdir -p /opt/eteshare/config
-
- cp ${src_folders[robot]}/integration_* /opt/eteshare/config
- cp ${src_folders[robot]}/vm_config2robot.sh /opt/eteshare/config
- cp ${src_folders[robot]}/ete.sh /opt
- cp ${src_folders[robot]}/demo.sh /opt
-
- chmod +x /opt/ete.sh
- chmod +x /opt/demo.sh
-}
-
-# get_robot_images() - Pull or build the Robot Docker images
-function get_robot_images {
- pull_openecomp_image testsuite
-}
-
-# install_robot() - Run Robot services
-function install_robot {
- docker rm -f openecompete_container
- run_docker_image -d --name openecompete_container -v /opt/eteshare:/share -p 88:88 $nexus_docker_repo/openecomp/testsuite:$docker_version
-}
-
-# init_robot() - Function that initialize Robot services
-function init_robot {
- if [[ "$clone_repo" == "True" ]]; then
- clone_repos "robot" "testsuite"
- _setup_ete_folder
- if [[ "$compile_repo" == "True" ]]; then
- compile_repos "robot"
- fi
- fi
-
- if [[ "$skip_get_images" == "False" ]]; then
- get_robot_images
- if [[ "$skip_install" == "False" ]]; then
- install_robot
- fi
- fi
-}
diff --git a/bootstrap/vagrant-onap/lib/sdc b/bootstrap/vagrant-onap/lib/sdc
deleted file mode 100755
index 71a5fea86..000000000
--- a/bootstrap/vagrant-onap/lib/sdc
+++ /dev/null
@@ -1,88 +0,0 @@
-#!/bin/bash
-
-source /var/onap/functions
-
-# _init_data_folders() - Function that initialize the data folders
-function _init_data_folders {
- mkdir -p /data/environments
- mkdir -p /data/scripts
- mkdir -p /data/logs/BE
- mkdir -p /data/logs/FE
- chmod 777 /data
- chmod 777 /data/logs
-}
-
-# _setup_docker_aliases() - Function that setups the aliases required by sdc scripts
-function _setup_docker_aliases {
- cat <<EOL > /root/.bash_aliases
-alias dcls='/data/scripts/docker_clean.sh \$1'
-alias dlog='/data/scripts/docker_login.sh \$1'
-alias drun='/data/scripts/docker_run.sh'
-alias health='/data/scripts/docker_health.sh'
-EOL
-}
-
-# get_sdc_images() - Function that retrieves the SDC docker images
-function get_sdc_images {
- build_docker_image ${src_folders[sdc]}/sdc-docker-base
- build_docker_image ${src_folders[sdc]}/utils/webseal-simulator docker
- if [[ "$build_image" == "True" ]]; then
- compile_src ${src_folders[sdc]}
- for project in catalog-fe test-apis-ci; do
- compile_src ${src_folders[sdc]}/$project
- done
- build_docker_image ${src_folders[sdc]}/sdc-os-chef docker
- else
- for image in elasticsearch init-elasticsearch cassandra kibana backend frontend sanity; do
- pull_onap_image sdc-$image &
- done
- wait_docker_pull
- fi
-}
-
-# install_sdc() - Function that pull templates and executes
-function install_sdc {
- local ENV_NAME=$dmaap_topic
- local MR_IP_ADDR='10.0.11.1'
-
- pushd ${src_folders[sdc]}/utils/webseal-simulator
- bash scripts/simulator_docker_run.sh
- popd
-
- _init_data_folders
-
- cp ${src_folders[sdc]}/sdc-os-chef/scripts/{docker_run.sh,docker_health.sh,docker_login.sh,docker_clean.sh,simulator_docker_run.sh} /data/scripts
- chmod +x /data/scripts/*.sh
-
- cat ${src_folders[sdc]}/sdc-os-chef/environments/Template.json | sed "s/yyy/"$IP_ADDRESS"/g" > /data/environments/$ENV_NAME.json
- sed -i "s/xxx/"$ENV_NAME"/g" /data/environments/$ENV_NAME.json
- sed -i "s/\"ueb_url_list\":.*/\"ueb_url_list\": \""$MR_IP_ADDR","$MR_IP_ADDR"\",/g" /data/environments/$ENV_NAME.json
- sed -i "s/\"fqdn\":.*/\"fqdn\": [\""$MR_IP_ADDR"\", \""$MR_IP_ADDR"\"]/g" /data/environments/$ENV_NAME.json
-
- install_docker
- if [[ "$skip_get_images" == "False" ]]; then
- bash /data/scripts/docker_run.sh -e $ENV_NAME -l
- else
- bash /data/scripts/docker_run.sh -e $ENV_NAME -r $docker_version -p $(echo $nexus_docker_repo | cut -d':' -f2)
- fi
- install_chefdk
-}
-
-# init_sdc() - Function that initialize SDC services
-function init_sdc {
- mount_external_partition sdb /data/
- if [[ "$clone_repo" == "True" ]]; then
- clone_repos "sdc"
- if [[ "$compile_repo" == "True" ]]; then
- compile_repos "sdc"
- fi
- fi
-
- if [[ "$skip_get_images" == "False" ]]; then
- get_sdc_images
- fi
- if [[ "$skip_install" == "False" ]]; then
- install_sdc
- fi
- _setup_docker_aliases
-}
diff --git a/bootstrap/vagrant-onap/lib/sdnc b/bootstrap/vagrant-onap/lib/sdnc
deleted file mode 100755
index 8dacf9e16..000000000
--- a/bootstrap/vagrant-onap/lib/sdnc
+++ /dev/null
@@ -1,64 +0,0 @@
-#!/bin/bash
-
-source /var/onap/functions
-source /var/onap/ccsdk
-
-# compile_all_sdnc_repos() - Function that compiles SDNC source repo.
-function compile_all_sdnc_repos {
- for repo in ${repos[sdnc]}; do
- if [[ "$repo" == "sdnc/core" ]]; then
- compile_src ${src_folders[sdnc]}/core/rootpom
- fi
- compile_src ${src_folders[sdnc]}${repo#*sdnc}
- done
-}
-
-# _build_sdnc_images() - Builds SDNC images from source code
-function _build_sdnc_images {
- local folder=${src_folders[sdnc]}/oam
-
- get_ccsdk_images
- install_package unzip
- # The OAM code depends on all the SDNC repos which should be downloaded and compiled first
- if [[ "$compile_repo" != "True" ]]; then
- compile_src $folder
- fi
- for dirc in ubuntu sdnc admportal dgbuilder; do
- build_docker_image $folder/installation/$dirc
- done
-}
-
-# get_sdnc_images() - Build or retrieve necessary images
-function get_sdnc_images {
- if [[ "$build_image" == "True" ]]; then
- _build_sdnc_images
- else
- for image in sdnc-image admportal-sdnc-image dgbuilder-sdnc-image; do
- pull_openecomp_image $image openecomp/$image:latest
- done
- fi
- pull_docker_image mysql/mysql-server:5.6
-}
-
-# install_sdnc() - Download and install SDNC services from source code
-function install_sdnc {
- run_docker_compose ${src_folders[sdnc]}/oam/installation/src/main/yaml
-}
-
-# init_sdnc() - Function that initialize SDNC services
-function init_sdnc {
- if [[ "$clone_repo" == "True" ]]; then
- clone_repos "sdnc"
- if [[ "$compile_repo" == "True" ]]; then
- compile_all_sdnc_repos
- fi
- fi
-
- if [[ "$skip_get_images" == "False" ]]; then
- get_sdnc_images
- if [[ "$skip_install" == "False" ]]; then
- start_ODL
- install_sdnc
- fi
- fi
-}
diff --git a/bootstrap/vagrant-onap/lib/vfc b/bootstrap/vagrant-onap/lib/vfc
deleted file mode 100755
index 64f7df00e..000000000
--- a/bootstrap/vagrant-onap/lib/vfc
+++ /dev/null
@@ -1,96 +0,0 @@
-#!/bin/bash
-
-source /var/onap/functions
-
-# compile_all_vfc_repos() - Function that compiles VF-C source repo.
-function compile_all_vfc_repos {
- install_python_package tox
-
- tox_repos=("gvnfm/vnflcm/lcm" "gvnfm/vnfmgr/mgr" "gvnfm/vnfres/res" "nfvo/lcm" \
- "nfvo/driver/vnfm/gvnfm/gvnfmadapter" "nfvo/driver/vnfm/svnfm/zte/vmanager")
- for dirc in ${tox_repos[@]}; do
- pushd ${src_folders[vfc]}/$dirc
- tox -e py27
- popd
- done
-
- # TODO(sshank): Add compile for other vfc_repos. (Java based.)
-
- # Java based:
- # nfvo/catalog
- # nfvo/driver/ems/ems/sems/boco/ems-driver
- # nfvo/driver/sfc/zte/sfc-driver
- # nfvo/driver/vnfm/gvnfm/juju/juju-vnfmadapter
- # nfvo/driver/vnfm/svnfm/huawei/vnfmadapter
- # nfvo/resmanagement
- # nfvo/wfengine
-}
-
-# _build_vfc_image() - Build VFC docker image
-function _build_vfc_image {
- pushd ${src_folders[vfc]}/$1/docker
- sed -i "s/^push_image/#push_image/g" build_image.sh
- sed -i 's|IMAGE_NAME="${DOCKER_REPOSITORY}/${ORG}/${PROJECT}/${IMAGE}"|IMAGE_NAME=${ORG}/${IMAGE}|g' build_image.sh
- ./build_image.sh
- popd
-}
-
-# get_vfc_images() - Build VFC docker images
-function get_vfc_images {
- if [[ "$build_image" == "True" ]]; then
- install_docker
- # Separate methods are required since the image build process will change.
- _build_vfc_image gvnfm/vnflcm/lcm onap/nslcm
- _build_vfc_image gvnfm/vnfmgr/mgr onap/gvnfmdriver
- _build_vfc_image gvnfm/vnfres/res onap/vnfres
- _build_vfc_image nfvo/lcm onap/vnflcm
- _build_vfc_image nfvo/driver/vnfm/gvnfm/gvnfmadapter
-
- build_gvnfm_lcm_image
- build_gvnfm_vnfmgr_image
- build_gvnfm_vnfres_image
- build_nfvo_lcm_image
- build_nfvo_vnfm_gvnfmadapter_image
- # TODO(sshank): Add other VFC component docker image builds.
- else
- for image in gvnfm/vnflcm/lcm gvnfm/vnfmgr/mgr gvnfm/vnfres/res nfvo/lcm nfvo/driver/vnfm/gvnfm/gvnfmadapter; do
- pull_onap_image vfc/$image
- done
- fi
-}
-
-# install_vfc() - Download and install vfc service from source code
-function install_vfc {
- nslcm_image=`docker images | grep nslcm | grep latest| awk '{print $1 ":" $2}'`
- vnflcm_image=`docker images | grep vnflcm | grep latest| awk '{print $1 ":" $2}'`
- vnfmgr_image=`docker images | grep vnfmgr | grep latest| awk '{print $1 ":" $2}'`
- vnfres_image=`docker images | grep vnfres | grep latest| awk '{print $1 ":" $2}'`
- gvnfmdriver_image=`docker images | grep gvnfmdriver | grep latest| awk '{print $1 ":" $2}'`
-
- run_docker_image -d --name vfc-nslcm -p 8403:8403 -e MSB_ADDR=127.0.0.1 $nslcm_image
- run_docker_image -d --name vfc-vnflcm -p 8801:8801 -e MSB_ADDR=127.0.0.1 $vnflcm_image
- run_docker_image -d --name vfc-vnfmgr -p 8803:8803 -e MSB_ADDR=127.0.0.1 $vnfmgr_image
- run_docker_image -d --name vfc-vnfres -p 8802:8802 -e MSB_ADDR=127.0.0.1 $vnfres_image
- run_docker_image -d --name vfc-gvnfmdriver -p 8484:8484 -e MSB_ADDR=127.0.0.1 $gvnfmdriver_image
-
- # TODO(sshank): Run other VFC component docker images.
-}
-
-# init_vfc() - Function that initialize VF-C services
-function init_vfc {
- install_package libmysqlclient-dev
-
- if [[ "$clone_repo" == "True" ]]; then
- clone_repos "vfc"
- if [[ "$compile_repo" == "True" ]]; then
- compile_all_vfc_repos
- fi
- fi
-
- if [[ "$skip_get_images" == "False" ]]; then
- get_vfc_images
- if [[ "$skip_install" == "False" ]]; then
- install_vfc
- fi
- fi
-}
diff --git a/bootstrap/vagrant-onap/lib/vid b/bootstrap/vagrant-onap/lib/vid
deleted file mode 100755
index 0c7ad8536..000000000
--- a/bootstrap/vagrant-onap/lib/vid
+++ /dev/null
@@ -1,49 +0,0 @@
-#!/bin/bash
-
-source /var/onap/functions
-
-# _build_vid_images() - Function that builds VID docker images
-function _build_vid_images {
- if [[ "$compile_repo" != "True" ]]; then
- compile_src ${src_folders[vid]}
- fi
- build_docker_image ${src_folders[vid]}/deliveries
-}
-
-# get_vid_images() - Function that retrieves VID docker images
-function get_vid_images {
- if [[ "$build_image" == "True" ]]; then
- _build_vid_images
- else
- pull_openecomp_image vid
- fi
- pull_docker_image mariadb:10
-}
-
-# install_vid() - Download and configure Vid source code
-function install_vid {
- vid_image=`docker images | grep vid | grep latest| awk '{print $1 ":" $2}'`
-
- docker rm -f vid-mariadb
- docker rm -f vid-server
-
- run_docker_image --name vid-mariadb -e MYSQL_DATABASE=vid_openecomp -e MYSQL_USER=vidadmin -e MYSQL_PASSWORD=Kp8bJ4SXszM0WXlhak3eHlcse2gAw84vaoGGmJvUy2U -e MYSQL_ROOT_PASSWORD=LF+tp_1WqgSY -v /opt/vid/lf_config/vid-my.cnf:/etc/mysql/my.cnf -v /opt/vid/lf_config/vid-pre-init.sql:/docker-entrypoint-initdb.d/vid-pre-init.sql -v /var/lib/mysql -d mariadb:10
- run_docker_image -e VID_MYSQL_DBNAME=vid_openecomp -e VID_MYSQL_PASS=Kp8bJ4SXszM0WXlhak3eHlcse2gAw84vaoGGmJvUy2U --name vid-server -p 8080:8080 --link vid-mariadb:vid-mariadb-docker-instance -d $vid_image
-}
-
-# init_vid() - Function that initialize Vid services
-function init_vid {
- if [[ "$clone_repo" == "True" ]]; then
- clone_repos "vid"
- if [[ "$compile_repo" == "True" ]]; then
- compile_repos "vid"
- fi
- fi
-
- if [[ "$skip_get_images" == "False" ]]; then
- get_vid_images
- if [[ "$skip_install" == "False" ]]; then
- install_vid
- fi
- fi
-}
diff --git a/bootstrap/vagrant-onap/lib/vnfsdk b/bootstrap/vagrant-onap/lib/vnfsdk
deleted file mode 100755
index ea7fa3332..000000000
--- a/bootstrap/vagrant-onap/lib/vnfsdk
+++ /dev/null
@@ -1,47 +0,0 @@
-#!/bin/bash
-
-source /var/onap/functions
-
-# _build_vnfsdk_images() - Builds VNFSDK images from source code
-function _build_vnfsdk_images {
- install_package unzip
- pushd ${src_folders[vnfsdk]}/refrepo/vnfmarket-be/deployment/docker/docker-refrepo
- build_docker_image .
- popd
-}
-
-# get_vnfsdk_images - Function that clones vnfsdk Docker images
-function get_vnfsdk_images {
- if [[ "$build_image" == "True" ]]; then
- # TODO(sshank): Has errors building.
- _build_vnfsdk_images
- else
- pull_docker_image refrepo:1.0-STAGING-latest
- pull_docker_image refrepo:latest
- fi
-}
-
-# install_vnfsdk - Function that installs vnfsdk Docker images
-function install_vnfsdk {
- install_docker_compose
- pushd ${src_folders[vnfsdk]}/refrepo/vnfmarket-be/deployment/install
- /opt/docker/docker-compose up -d
- popd
-}
-
-# init_vnfsdk() - Init VNFSDK services
-function init_vnfsdk {
- if [[ "$clone_repo" == "True" ]]; then
- clone_repos "vnfsdk"
- if [[ "$compile_repo" == "True" ]]; then
- compile_repos "vnfsdk"
- fi
- fi
-
- if [[ "$skip_get_images" == "False" ]]; then
- get_vnfsdk_images
- if [[ "$skip_install" == "False" ]]; then
- install_vnfsdk
- fi
- fi
-}
diff --git a/bootstrap/vagrant-onap/lib/vvp b/bootstrap/vagrant-onap/lib/vvp
deleted file mode 100755
index f24431ee6..000000000
--- a/bootstrap/vagrant-onap/lib/vvp
+++ /dev/null
@@ -1,40 +0,0 @@
-#!/bin/bash
-
-source /var/onap/functions
-
-# _build_vvp_images() - Builds VNFSDK images from source code
-function _build_vvp_images {
- echo "pass"
-}
-
-# get_vvp_images - Function that clones vvp Docker images
-function get_vvp_images {
- if [[ "$build_image" == "True" ]]; then
- _build_vvp_images
- else
- pull_docker_image refrepo:1.0-STAGING-latest
- pull_docker_image refrepo:latest
- fi
-}
-
-# install_vvp - Function that installs vvp Docker images
-function install_vvp {
- echo "pass"
-}
-
-# init_vvp() - Init VNFSDK services
-function init_vvp {
- if [[ "$clone_repo" == "True" ]]; then
- clone_repos "vvp"
- if [[ "$compile_repo" == "True" ]]; then
- compile_repos "vvp"
- fi
- fi
-
- if [[ "$skip_get_images" == "False" ]]; then
- get_vvp_images
- if [[ "$skip_install" == "False" ]]; then
- install_vvp
- fi
- fi
-}
diff --git a/bootstrap/vagrant-onap/tests/_test_base b/bootstrap/vagrant-onap/tests/_test_base
deleted file mode 100755
index b30632d26..000000000
--- a/bootstrap/vagrant-onap/tests/_test_base
+++ /dev/null
@@ -1,33 +0,0 @@
-#!/bin/bash
-
-if [[ "$debug" == "True" ]]; then
- set -o xtrace
-fi
-
-source /var/onap_tests/asserts
-source /var/onap/commons
-
-# main() - Starting point for Unit Tests
-function main {
- local covered_functions=("$@")
-
- update_repos
- len=${#covered_functions[@]}
- echo "1..$len"
- for i in ${!covered_functions[@]}; do
- dpkg --get-selections > installed-software
- sort -o installed-software installed-software
- test_${covered_functions[$i]}
- echo "ok $((i+1)) - test_${covered_functions[$i]}"
-
- # Teardown process
- if is_package_installed docker-ce; then
- docker images -q | xargs docker rmi -f
- fi
- dpkg --get-selections > installed-software_new
- sort -o installed-software_new installed-software_new
- apt-get purge -y -qq $(comm -3 installed-software installed-software_new | awk '{print $1}')
- #rm -rf $git_src_folder
- #rm -rf ~/.m2/
- done
-}
diff --git a/bootstrap/vagrant-onap/tests/asserts b/bootstrap/vagrant-onap/tests/asserts
deleted file mode 100755
index 441b9f091..000000000
--- a/bootstrap/vagrant-onap/tests/asserts
+++ /dev/null
@@ -1,94 +0,0 @@
-#!/bin/bash
-
-source /var/onap/commons
-
-# asserts_http_status_code() - Function that determines if a HTTP status code is retrieved from URL
-function asserts_http_status_code {
- local url=$1
- local expected_code=${2:-"200"}
-
- code=$(curl -I $url | head -n 1 | cut -d$' ' -f2)
- local error_msg=${3:-"The URL $url responded with $code status code"}
- if [[ "$code" != "$expected_code" ]]; then
- raise_error $error_msg
- fi
-}
-
-# asserts_process() - Function that verifies if a specific process is running
-function asserts_process {
- local process=$1
- local error_msg=${2:-"There is no $process running process"}
-
- if [[ "ps -ef | grep $process" == "" ]]; then
- raise_error $error_msg
- fi
-}
-
-# asserts_java_process() - Function that verifies if a specific java process is running
-function asserts_java_process {
- local process=$1
- local error_msg=${2:-"There is no $process java running process"}
-
- install_java
- if [[ "jps | grep $process" == "" ]]; then
- raise_error $error_msg
- fi
-}
-
-# asserts_image_running() - Function that verifies if a specific image is running
-function asserts_image_running {
- local image=$1
- local error_msg=${2:-"There is no process with $image image running"}
-
- asserts_image $image
- if [[ "$(docker ps -q --filter=ancestor=$image 2> /dev/null)" == "" ]]; then
- raise_error $error_msg
- fi
-}
-
-# asserts_image() - Function that verifies if a specific image was created
-function asserts_image {
- local image=$1
- local error_msg=${2:-"There is no $image image"}
-
- install_docker
- if [[ "$(docker images -q $image 2> /dev/null)" == "" ]]; then
- raise_error $error_msg
- fi
-}
-
-# asserts_installed_package() - Function that verifies if a specific package was installed.
-function asserts_installed_package {
- local package=$1
- local error_msg=${2:-"$package wasn't installed"}
-
- if ! is_package_installed $package; then
- raise_error $error_msg
- fi
-}
-
-# asserts_file_exist() - Function that verifies if a specific file exists
-function asserts_file_exist {
- local file=$1
- local error_msg=${2:-"$file doesn't exist"}
-
- if [ ! -f $file ]; then
- raise_error $error_msg
- fi
-}
-
-# asserts_env_set() - Function that verities that an environment variable is set
-function asserts_env_set {
- local variable=$1
- local error_msg=${2:-"$variable wasn't set"}
-
- if [ -z ${variable+x} ]; then
- raise_error $error_msg
- fi
-}
-
-# raise_error() - Function that prints and exits the execution
-function raise_error {
- echo $@
- exit 1
-}
diff --git a/bootstrap/vagrant-onap/tests/projects.txt b/bootstrap/vagrant-onap/tests/projects.txt
deleted file mode 100644
index 0aba508c9..000000000
--- a/bootstrap/vagrant-onap/tests/projects.txt
+++ /dev/null
@@ -1,209 +0,0 @@
-aaf/authz
-aaf/cadi
-aaf/inno
-aaf/luaplugin
-aai/aai-common
-aai/aai-config
-aai/aai-data
-aai/aai-service
-aai/babel
-aai/champ
-aai/data-router
-aai/esr-gui
-aai/esr-server
-aai/gizmo
-aai/logging-service
-aai/model-loader
-aai/resources
-aai/rest-client
-aai/router-core
-aai/search-data-service
-aai/sparky-be
-aai/sparky-fe
-aai/test-config
-aai/traversal
-appc
-appc/deployment
-ccsdk/dashboard
-ccsdk/distribution
-ccsdk/parent
-ccsdk/platform/blueprints
-ccsdk/platform/nbapi
-ccsdk/platform/plugins
-ccsdk/sli/adaptors
-ccsdk/sli/core
-ccsdk/sli/northbound
-ccsdk/sli/plugins
-ccsdk/storage/esaas
-ccsdk/storage/pgaas
-ccsdk/utils
-ci-management
-clamp
-cli
-dcae
-dcae/apod
-dcae/apod/analytics
-dcae/apod/buildtools
-dcae/apod/cdap
-dcae/collectors
-dcae/collectors/ves
-dcae/controller
-dcae/controller/analytics
-dcae/dcae-inventory
-dcae/demo
-dcae/demo/startup
-dcae/demo/startup/aaf
-dcae/demo/startup/controller
-dcae/demo/startup/message-router
-dcae/dmaapbc
-dcae/operation
-dcae/operation/utils
-dcae/orch-dispatcher
-dcae/pgaas
-dcae/utils
-dcae/utils/buildtools
-dcaegen2
-dcaegen2/analytics
-dcaegen2/analytics/tca
-dcaegen2/collectors
-dcaegen2/collectors/snmptrap
-dcaegen2/collectors/ves
-dcaegen2/deployments
-dcaegen2/platform
-dcaegen2/platform/blueprints
-dcaegen2/platform/cdapbroker
-dcaegen2/platform/cli
-dcaegen2/platform/configbinding
-dcaegen2/platform/deployment-handler
-dcaegen2/platform/inventory-api
-dcaegen2/platform/plugins
-dcaegen2/platform/policy-handler
-dcaegen2/platform/registrator
-dcaegen2/platform/servicechange-handler
-dcaegen2/utils
-demo
-dmaap/buscontroller
-dmaap/datarouter
-dmaap/dbcapi
-dmaap/messagerouter/dmaapclient
-dmaap/messagerouter/messageservice
-dmaap/messagerouter/mirroragent
-dmaap/messagerouter/msgrtr
-doc
-doc/tools
-ecompsdkos
-externalapi/nbi
-holmes/common
-holmes/dsa
-holmes/engine-management
-holmes/rule-management
-integration
-logging-analytics
-modeling/modelspec
-modeling/toscaparsers
-msb/apigateway
-msb/discovery
-msb/java-sdk
-msb/swagger-sdk
-mso
-mso/chef-repo
-mso/docker-config
-mso/libs
-mso/mso-config
-multicloud/azure
-multicloud/framework
-multicloud/openstack
-multicloud/openstack/vmware
-multicloud/openstack/windriver
-ncomp
-ncomp/cdap
-ncomp/core
-ncomp/docker
-ncomp/maven
-ncomp/openstack
-ncomp/sirius
-ncomp/sirius/manager
-ncomp/utils
-oom
-oom/registrator
-oparent
-optf/cmso
-optf/has
-optf/osdf
-policy/api
-policy/common
-policy/docker
-policy/drools-applications
-policy/drools-pdp
-policy/engine
-policy/gui
-policy/pap
-policy/pdp
-portal
-portal/sdk
-sdc
-sdc/jtosca
-sdc/sdc-distribution-client
-sdc/sdc-docker-base
-sdc/sdc-titan-cassandra
-sdc/sdc-tosca
-sdc/sdc-workflow-designer
-sdnc/adaptors
-sdnc/architecture
-sdnc/core
-sdnc/features
-sdnc/northbound
-sdnc/oam
-sdnc/parent
-sdnc/plugins
-so
-so/chef-repo
-so/docker-config
-so/libs
-so/so-config
-testsuite
-testsuite/heatbridge
-testsuite/properties
-testsuite/python-testing-utils
-ui
-ui/dmaapbc
-university
-usecase-ui
-usecase-ui/server
-vfc/gvnfm/vnflcm
-vfc/gvnfm/vnfmgr
-vfc/gvnfm/vnfres
-vfc/nfvo/catalog
-vfc/nfvo/driver/ems
-vfc/nfvo/driver/sfc
-vfc/nfvo/driver/vnfm/gvnfm
-vfc/nfvo/driver/vnfm/svnfm
-vfc/nfvo/lcm
-vfc/nfvo/resmanagement
-vfc/nfvo/wfengine
-vid
-vid/asdcclient
-vnfrqts/epics
-vnfrqts/guidelines
-vnfrqts/requirements
-vnfrqts/testcases
-vnfrqts/usecases
-vnfsdk/compliance
-vnfsdk/functest
-vnfsdk/lctest
-vnfsdk/model
-vnfsdk/pkgtools
-vnfsdk/refrepo
-vnfsdk/validation
-vvp/ansible-ice-bootstrap
-vvp/cms
-vvp/devkit
-vvp/documentation
-vvp/engagementmgr
-vvp/gitlab
-vvp/image-scanner
-vvp/jenkins
-vvp/portal
-vvp/postgresql
-vvp/test-engine
-vvp/validation-scripts
diff --git a/bootstrap/vagrant-onap/tests/test_aai b/bootstrap/vagrant-onap/tests/test_aai
deleted file mode 100755
index dd027d2bc..000000000
--- a/bootstrap/vagrant-onap/tests/test_aai
+++ /dev/null
@@ -1,100 +0,0 @@
-#!/bin/bash
-
-source /var/onap_tests/_test_base
-source /var/onap/aai
-
-covered_functions=(
-#"install_hadoop" "install_haproxy" "clone_all_aai_repos" "compile_aai_repos" "setup_titan" "start_aai_microservices" "install_hbase" "install_ajsc_aai" "install_model_loader"
-"install_hadoop" "install_haproxy" "clone_all_aai_repos" "compile_aai_repos" "setup_titan" "install_hbase"
-)
-
-# test_install_hadoop() - Verify that Hadoop is downloaded and started properly
-function test_install_hadoop {
- install_hadoop
-
- asserts_file_exist /opt/hadoop/current/titan-1.0.0-hadoop1/bin/titan.sh
- asserts_java_process Elasticsearch
- asserts_java_process GremlinServer
- asserts_java_process CassandraDaemon
-}
-
-# test_install_haproxy() - Verify that HAProxy is installed properly
-function test_install_haproxy {
- install_haproxy
-
- asserts_installed_package haproxy
- asserts_process haproxy
-}
-
-# test_clone_all_aai_repos() - Verify that all the AAI Repos are cloned
-function test_clone_all_aai_repos {
- clone_repos "aai"
-
- asserts_file_exist ${src_folders[aai]}/aai-common/pom.xml
- asserts_file_exist ${src_folders[aai]}/aai-config/cookbooks/aai-resources/runlist-aai-resources.json
- asserts_file_exist ${src_folders[aai]}/aai-data/environments/solo.json
- asserts_file_exist ${src_folders[aai]}/aai-service/pom.xml
- asserts_file_exist ${src_folders[aai]}/babel/README.md
- asserts_file_exist ${src_folders[aai]}/champ/pom.xml
- asserts_file_exist ${src_folders[aai]}/data-router/pom.xml
- asserts_file_exist ${src_folders[aai]}/esr-gui/pom.xml
- asserts_file_exist ${src_folders[aai]}/esr-server/pom.xml
- asserts_file_exist ${src_folders[aai]}/gizmo/pom.xml
- asserts_file_exist ${src_folders[aai]}/logging-service/pom.xml
- asserts_file_exist ${src_folders[aai]}/model-loader/pom.xml
- asserts_file_exist ${src_folders[aai]}/resources/pom.xml
- asserts_file_exist ${src_folders[aai]}/rest-client/pom.xml
- asserts_file_exist ${src_folders[aai]}/router-core/pom.xml
- asserts_file_exist ${src_folders[aai]}/search-data-service/pom.xml
- asserts_file_exist ${src_folders[aai]}/sparky-be/pom.xml
- asserts_file_exist ${src_folders[aai]}/sparky-fe/pom.xml
- asserts_file_exist ${src_folders[aai]}/test-config/docker-compose-app.yml
- asserts_file_exist ${src_folders[aai]}/traversal/pom.xml
-}
-
-# test_compile_aai_repos() - Verify that all the AAI Repositories complile properly
-function test_compile_aai_repos {
- clone_repos "aai"
- compile_aai_repos
-
- for common in annotations auth core schema utils; do
- asserts_file_exist ${src_folders[aai]}/aai-common/aai-$common/target/aai-$common-1.1.0-SNAPSHOT.jar
- done
-
- for service in common-logging eelf-logging logging-api; do
- asserts_file_exist ${src_folders[aai]}/logging-service/$service/target/$service-1.1.0-SNAPSHOT.jar
- done
-
- asserts_file_exist ${src_folders[aai]}/resources/aai-resources/target/aai-resources.jar
- asserts_file_exist ${src_folders[aai]}/traversal/aai-traversal/target/traversal.jar
-}
-
-# test_setup_titan() - Verify that Titan Cassandra DB is up and running
-function test_setup_titan {
- clone_repos "aai"
- install_hadoop
- setup_titan
-
- # TODO(electrocucaracha): Validate the DB creation
-}
-
-# test_start_aai_microservices() - Verify that AAI Resources and Traversal images works
-function test_start_aai_microservices {
- clone_repos "aai"
- start_aai_microservices
-
- # TODO(electrocucaracha): Investigate how to run AAI microservices in background
-}
-
-# test_install_hbase() - Verify that AAI HBase service is up and running properly
-function test_install_hbase {
- install_hbase
-
- asserts_image_running aai-hbase-${hbase_version}
-}
-
-if [ "$1" != '*' ]; then
- unset covered_functions
- covered_functions=$1
-fi
-main "${covered_functions[@]}"
diff --git a/bootstrap/vagrant-onap/tests/test_appc b/bootstrap/vagrant-onap/tests/test_appc
deleted file mode 100755
index f567d7f1b..000000000
--- a/bootstrap/vagrant-onap/tests/test_appc
+++ /dev/null
@@ -1,95 +0,0 @@
-#!/bin/bash
-
-source /var/onap_tests/_test_base
-source /var/onap/appc
-
-covered_functions=(
-"clone_all_appc_repos" "compile_all_appc_repos" "get_appc_images" "install_appc"
-)
-
-# test_clone_all_appc_repos() - Verify that the APPC source code is cloned
-function test_clone_all_appc_repos {
- clone_repos "appc"
-
- asserts_file_exist ${src_folders[appc]}/pom.xml
- asserts_file_exist ${src_folders[appc]}/deployment/pom.xml
-}
-
-# test_compile_all_appc_repos() - Verify that the APPC source code is compiled properly
-function test_compile_all_appc_repos {
- clone_repos "appc"
- compile_repos "appc"
-
- for adapter in appc-ansible-adapter appc-chef-adapter appc-dmaap-adapter appc-iaas-adapter appc-netconf-adapter appc-rest-adapter appc-rest-healthcheck-adapter; do
- asserts_file_exist ${src_folders[appc]}/appc-adapters/$adapter/$adapter-bundle/target/$adapter-bundle-*-SNAPSHOT.jar
- asserts_file_exist ${src_folders[appc]}/appc-adapters/$adapter/$adapter-features/target/$adapter-features-*-SNAPSHOT.jar
- if [[ "$adapter" == "appc-netconf-adapter" ]]; then
- asserts_file_exist ${src_folders[appc]}/appc-adapters/$adapter/appc-netconf-installer/target/$adapter-*-SNAPSHOT.zip
- else
- asserts_file_exist ${src_folders[appc]}/appc-adapters/$adapter/$adapter-installer/target/$adapter-*-SNAPSHOT.zip
- fi
- done
- asserts_file_exist ${src_folders[appc]}/appc-adapters/appc-dmaap-adapter/appc-message-adapter-api/target/appc-message-adapter-api-*-SNAPSHOT.jar
- asserts_file_exist ${src_folders[appc]}/appc-adapters/appc-dmaap-adapter/appc-message-adapter-factory/target/appc-message-adapter-factory-*-SNAPSHOT.jar
- asserts_file_exist ${src_folders[appc]}/appc-adapters/appc-ssh-adapter/appc-ssh-adapter-api/target/appc-ssh-adapter-api-*-SNAPSHOT.jar
- asserts_file_exist ${src_folders[appc]}/appc-adapters/appc-ssh-adapter/appc-ssh-adapter-features/target/appc-ssh-adapter-features-*-SNAPSHOT.jar
- asserts_file_exist ${src_folders[appc]}/appc-adapters/appc-ssh-adapter/appc-ssh-adapter-sshd/target/appc-ssh-adapter-sshd-*-SNAPSHOT.jar
- asserts_file_exist ${src_folders[appc]}/appc-adapters/appc-ssh-adapter/appc-ssh-adapter-tests/target/appc-ssh-adapter-tests-*-SNAPSHOT.jar
-
- #for component in appc-event-listener appc-oam appc-provider; do
- for component in appc-event-listener appc-provider; do
- asserts_file_exist ${src_folders[appc]}/$component/$component-bundle/target/$component-bundle-*-SNAPSHOT.jar
- asserts_file_exist ${src_folders[appc]}/$component/$component-features/target/$component-features-*-SNAPSHOT.jar
- asserts_file_exist ${src_folders[appc]}/$component/$component-installer/target/$component-*-SNAPSHOT.zip
- done
- #for component in appc-oam appc-provider; do
- for component in appc-provider; do
- asserts_file_exist ${src_folders[appc]}/$component/$component-model/target/$component-model-*-SNAPSHOT.jar
- done
-
- asserts_file_exist ${src_folders[appc]}/appc-common/target/appc-common-*-SNAPSHOT.jar
-
- asserts_file_exist ${src_folders[appc]}/appc-dg/appc-dg-shared/appc-dg-dependency-model/target/appc-dg-dependency-model-*-SNAPSHOT.jar
- asserts_file_exist ${src_folders[appc]}/appc-dg/appc-dg-shared/appc-dg-domain-model-lib/target/appc-dg-domain-model-lib-*-SNAPSHOT.jar
-
- asserts_file_exist ${src_folders[appc]}/appc-dispatcher/appc-command-executor/appc-command-executor-api/target/appc-command-executor-api-*-SNAPSHOT.jar
- asserts_file_exist ${src_folders[appc]}/appc-dispatcher/appc-dispatcher-common/appc-data-access-lib/target/appc-data-access-lib-*-SNAPSHOT.jar
- asserts_file_exist ${src_folders[appc]}/appc-dispatcher/appc-dispatcher-common/domain-model-lib/target/domain-model-lib-*-SNAPSHOT.jar
- asserts_file_exist ${src_folders[appc]}/appc-dispatcher/appc-dispatcher-common/execution-queue-management-lib/target/execution-queue-management-lib-*-SNAPSHOT.jar
- asserts_file_exist ${src_folders[appc]}/appc-dispatcher/appc-license-manager/appc-license-manager-api/target/appc-license-manager-api-*-SNAPSHOT.jar
- asserts_file_exist ${src_folders[appc]}/appc-dispatcher/appc-request-handler/appc-request-handler-api/target/appc-request-handler-api-*-SNAPSHOT.jar
-
-
- #asserts_file_exist ${src_folders[appc]}/appc-lifecycle-management/appc-lifecycle-management-api/target/appc-lifecycle-management-api-*-SNAPSHOT.jar
- #asserts_file_exist ${src_folders[appc]}/appc-lifecycle-management/appc-lifecycle-management-core/target/appc-lifecycle-management-core-*-SNAPSHOT.jar
- #asserts_file_exist ${src_folders[appc]}/appc-lifecycle-management/appc-lifecycle-management-features/target/appc-lifecycle-management-features-*-SNAPSHOT.jar
- #asserts_file_exist ${src_folders[appc]}/appc-lifecycle-management/appc-lifecycle-management-installer/target/appc-lifecycle-management-*-SNAPSHOT.zip
- #asserts_file_exist ${src_folders[appc]}/appc-lifecycle-management/state-machine-lib/target/state-machine-lib-*-SNAPSHOT.jar
-
- asserts_file_exist ${src_folders[appc]}/appc-metric/appc-metric-bundle/target/appc-metric-bundle-*-SNAPSHOT.jar
-
- asserts_file_exist ${src_folders[appc]}/deployment/platform-logic/installer/target/platform-logic-installer-*-SNAPSHOT.zip
-}
-
-# test_get_appc_images() - Verify that APPC Docker images can be retrieved
-function test_get_appc_images {
- clone_repos "appc"
- get_appc_images
-
- asserts_image openecomp/appc-image
-}
-
-# test_install_appc() - Verify that the APPC Docker images are up and running
-function test_install_appc {
- clone_repos "appc"
- get_appc_images
- install_appc
-
- asserts_image_running openecomp/appc-image
-}
-
-if [ "$1" != '*' ]; then
- unset covered_functions
- covered_functions=$1
-fi
-main "${covered_functions[@]}"
diff --git a/bootstrap/vagrant-onap/tests/test_ccsdk b/bootstrap/vagrant-onap/tests/test_ccsdk
deleted file mode 100755
index 28de27065..000000000
--- a/bootstrap/vagrant-onap/tests/test_ccsdk
+++ /dev/null
@@ -1,90 +0,0 @@
-#!/bin/bash
-
-source /var/onap_tests/_test_base
-source /var/onap/ccsdk
-
-covered_functions=(
-"clone_ccsdk_repos" "compile_ccsdk_repos" "get_ccsdk_images"
-)
-
-# test_clone_ccsdk_repos() - Verify that CCSDL repositories are retrieved properly
-function test_clone_ccsdk_repos {
- clone_repos "ccsdk"
-
- asserts_file_exist ${src_folders[ccsdk]}/dashboard/pom.xml
- asserts_file_exist ${src_folders[ccsdk]}/distribution/pom.xml
- asserts_file_exist ${src_folders[ccsdk]}/parent/pom.xml
- asserts_file_exist ${src_folders[ccsdk]}/platform/blueprints/pom.xml
- asserts_file_exist ${src_folders[ccsdk]}/platform/nbapi/pom.xml
- asserts_file_exist ${src_folders[ccsdk]}/platform/plugins/pom.xml
- asserts_file_exist ${src_folders[ccsdk]}/sli/adaptors/pom.xml
- asserts_file_exist ${src_folders[ccsdk]}/sli/core/pom.xml
- asserts_file_exist ${src_folders[ccsdk]}/sli/northbound/pom.xml
- asserts_file_exist ${src_folders[ccsdk]}/sli/plugins/pom.xml
- asserts_file_exist ${src_folders[ccsdk]}/storage/esaas/pom.xml
- asserts_file_exist ${src_folders[ccsdk]}/storage/pgaas/pom.xml
- asserts_file_exist ${src_folders[ccsdk]}/utils/pom.xml
-}
-
-# test_compile_ccsdk_repos() - Verify the compilation of CCSDK repositories
-function test_compile_ccsdk_repos {
- clone_repos "ccsdk"
- compile_repos "ccsdk"
-
- asserts_file_exist ${src_folders[ccsdk]}/dashboard/ccsdk-app-common/target/ccsdk-app-common-1.1.0-SNAPSHOT.jar
- asserts_file_exist ${src_folders[ccsdk]}/dashboard/ccsdk-app-os/target/ccsdk-app-os-1.1.0-SNAPSHOT.war
- asserts_file_exist ${src_folders[ccsdk]}/dashboard/ccsdk-app-overlay/target/ccsdk-app-overlay-1.1.0-SNAPSHOT.war
- asserts_file_exist ${src_folders[ccsdk]}/distribution/dgbuilder/target/dgbuilder.0.1.0-SNAPSHOT.zip
- asserts_file_exist ${src_folders[ccsdk]}/distribution/platform-logic/installer/target/platform-logic-installer-0.1.0-SNAPSHOT.zip
- asserts_file_exist ${src_folders[ccsdk]}/platform/nbapi/target/commonnbapi-*.war
-
- #for adaptor in aai-service mdsal-resource resource-assignment sql-resource; do
- #for component in features provider; do
- #asserts_file_exist ${src_folders[ccsdk]}/sli/adaptors/$adaptor/$component/target/$adaptor-$component-0.1.0-SNAPSHOT.jar
- #done
- #asserts_file_exist ${src_folders[ccsdk]}/sli/adaptors/$adaptor/installer/target/sdnc-$adaptor-0.1.0-SNAPSHOT-installer.zip
- #done
-
- #for core in dblib filters sli sliapi sliPluginUtils; do
- for core in dblib; do
- for component in features provider; do
- asserts_file_exist ${src_folders[ccsdk]}/sli/core/$core/$component/target/$core-$component-*-SNAPSHOT.jar
- done
- asserts_file_exist ${src_folders[ccsdk]}/sli/core/$core/installer/target/sdnc-$core-*-SNAPSHOT-installer.zip
- done
- #asserts_file_exist ${src_folders[ccsdk]}/sli/core/sli/common/target/sli-common-*-SNAPSHOT.jar
- #asserts_file_exist ${src_folders[ccsdk]}/sli/core/sli/recording/target/sli-recording-*-SNAPSHOT.jar
- #asserts_file_exist ${src_folders[ccsdk]}/sli/core/sliapi/model/target/sliapi-model-*-SNAPSHOT.jar
-
- for northbound in asdcApi dataChange; do
- for component in features model provider; do
- asserts_file_exist ${src_folders[ccsdk]}/sli/northbound/$northbound/$component/target/$northbound-$component-*-SNAPSHOT.jar
- done
- asserts_file_exist ${src_folders[ccsdk]}/sli/northbound/$northbound/installer/target/sdnc-$northbound-*-SNAPSHOT-installer.zip
- done
- asserts_file_exist ${src_folders[ccsdk]}/sli/northbound/dmaap-listener/target/dmaap-listener-*-SNAPSHOT.jar
- asserts_file_exist ${src_folders[ccsdk]}/sli/northbound/ueb-listener/target/ueb-listener-*-SNAPSHOT.jar
-
- for plugin in properties-node restapi-call-node; do
- for component in features provider; do
- asserts_file_exist ${src_folders[ccsdk]}/sli/plugins/$plugin/$component/target/$plugin-$component-*-SNAPSHOT.jar
- done
- asserts_file_exist ${src_folders[ccsdk]}/sli/plugins/$plugin/installer/target/sdnc-$plugin-*-SNAPSHOT-installer.zip
- done
-}
-
-# test_get_ccsdk_images() - Verify that CCSDK images are retrieved or built properly
-function test_get_ccsdk_images {
- clone_repos "ccsdk"
- get_ccsdk_images
-
- for image in dgbuilder odlsli odl ubuntu; do
- asserts_image onap/ccsdk-$image-image
- done
-}
-
-if [ "$1" != '*' ]; then
- unset covered_functions
- covered_functions=$1
-fi
-main "${covered_functions[@]}"
diff --git a/bootstrap/vagrant-onap/tests/test_dcae b/bootstrap/vagrant-onap/tests/test_dcae
deleted file mode 100755
index 3c5400fa1..000000000
--- a/bootstrap/vagrant-onap/tests/test_dcae
+++ /dev/null
@@ -1,111 +0,0 @@
-#!/bin/bash
-
-source /var/onap_tests/_test_base
-source /var/onap/dcae
-
-covered_functions=(
-"clone_all_dcae_repos" "compile_all_dcae_repos" "get_dcae_images" "install_dcae"
-)
-
-# test_clone_all_dcae_repos() - Verifies that can retrieve DCAE repositories properly
-function test_clone_all_dcae_repos {
- clone_repos "dcae"
-
- asserts_file_exist ${src_folders[dcae]}/apod/README.md
- asserts_file_exist ${src_folders[dcae]}/apod/analytics/pom.xml
- asserts_file_exist ${src_folders[dcae]}/apod/buildtools/LICENSE.txt
- asserts_file_exist ${src_folders[dcae]}/apod/cdap/LICENSE.txt
- asserts_file_exist ${src_folders[dcae]}/collectors/README.md
- asserts_file_exist ${src_folders[dcae]}/collectors/ves/pom.xml
- asserts_file_exist ${src_folders[dcae]}/controller/pom.xml
- asserts_file_exist ${src_folders[dcae]}/controller/analytics/pom.xml
- asserts_file_exist ${src_folders[dcae]}/dcae-inventory/pom.xml
- asserts_file_exist ${src_folders[dcae]}/demo/pom.xml
- asserts_file_exist ${src_folders[dcae]}/demo/startup/README.md
- asserts_file_exist ${src_folders[dcae]}/demo/startup/aaf/LICENSE.txt
- asserts_file_exist ${src_folders[dcae]}/demo/startup/controller/LICENSE.txt
- asserts_file_exist ${src_folders[dcae]}/demo/startup/message-router/LICENSE.txt
- asserts_file_exist ${src_folders[dcae]}/dmaapbc/pom.xml
- asserts_file_exist ${src_folders[dcae]}/operation/README.md
- asserts_file_exist ${src_folders[dcae]}/operation/utils/pom.xml
- asserts_file_exist ${src_folders[dcae]}/orch-dispatcher/LICENSE.txt
- asserts_file_exist ${src_folders[dcae]}/pgaas/LICENSE.txt
- asserts_file_exist ${src_folders[dcae]}/utils/README.md
- asserts_file_exist ${src_folders[dcae]}/utils/buildtools/LICENSE.txt
-}
-
-# test_compile_all_dcae_repos() - Verify that the DCAE source code is compiled properly
-function test_compile_all_dcae_repos {
- clone_repos "dcae"
- compile_repos "dcae"
-
- asserts_file_exist ${src_folders[dcae]}/collectors/ves/target/VESCollector-1.1.0-SNAPSHOT.jar
-
- asserts_file_exist ${src_folders[dcae]}/controller/analytics/dcae-analytics-cdap-common-model/target/dcae-analytics-cdap-common-model-1.1.0-SNAPSHOT.jar
-
- asserts_file_exist ${src_folders[dcae]}/controller/dcae-controller-core/dcae-controller-core-model/target/dcae-controller-core-model-1.1.0-SNAPSHOT.jar
- asserts_file_exist ${src_folders[dcae]}/controller/dcae-controller-core/dcae-controller-core-utils/target/dcae-controller-core-utils-1.1.0-SNAPSHOT.jar
- asserts_file_exist ${src_folders[dcae]}/controller/dcae-controller-core/dcae-controller-operation-utils/target/dcae-controller-operation-utils-1.1.0-SNAPSHOT.jar
- asserts_file_exist ${src_folders[dcae]}/controller/dcae-controller-core/dcae-controller-platform-model/target/dcae-controller-platform-model-1.1.0-SNAPSHOT.jar
- asserts_file_exist ${src_folders[dcae]}/controller/dcae-controller-core/dcae-controller-platform-server/target/dcae-controller-platform-server-1.1.0-SNAPSHOT.jar
-
- asserts_file_exist ${src_folders[dcae]}/controller/dcae-controller-service/dcae-controller-service-dmaap-drsub/dcae-controller-service-dmaap-drsub-manager/target/dcae-controller-service-dmaap-drsub-manager-1.1.0-SNAPSHOT.jar
- asserts_file_exist ${src_folders[dcae]}/controller/dcae-controller-service/dcae-controller-service-dmaap-drsub/dcae-controller-service-dmaap-drsub-model/target/dcae-controller-service-dmaap-drsub-model-1.1.0-SNAPSHOT.jar
- asserts_file_exist ${src_folders[dcae]}/controller/dcae-controller-service/dcae-controller-service-standardeventcollector/dcae-controller-service-standardeventcollector-manager/target/dcae-controller-service-standardeventcollector-manager-1.1.0-SNAPSHOT.jar
- asserts_file_exist ${src_folders[dcae]}/controller/dcae-controller-service/dcae-controller-service-standardeventcollector/dcae-controller-service-standardeventcollector-model/target/dcae-controller-service-standardeventcollector-model-1.1.0-SNAPSHOT.jar
- asserts_file_exist ${src_folders[dcae]}/controller/dcae-controller-service/dcae-controller-service-storage-postgres-model/target/dcae-controller-service-storage-postgres-model-1.1.0-SNAPSHOT.jar
-
- asserts_file_exist ${src_folders[dcae]}/controller/dcae-controller-service-cdap/dcae-controller-service-cdap-adaptor/target/dcae-controller-service-cdap-adaptor-1.1.0-SNAPSHOT.jar
- asserts_file_exist ${src_folders[dcae]}/controller/dcae-controller-service-cdap/dcae-controller-service-cdap-cluster/dcae-controller-service-cdap-cluster-manager/target/dcae-controller-service-cdap-cluster-manager-1.1.0-SNAPSHOT.jar
- asserts_file_exist ${src_folders[dcae]}/controller/dcae-controller-service-cdap/dcae-controller-service-cdap-cluster/dcae-controller-service-cdap-cluster-model/target/dcae-controller-service-cdap-cluster-model-1.1.0-SNAPSHOT.jar
- asserts_file_exist ${src_folders[dcae]}/controller/dcae-controller-service-cdap/dcae-controller-service-cdap-model/target/dcae-controller-service-cdap-model-1.1.0-SNAPSHOT.jar
-
- asserts_file_exist ${src_folders[dcae]}/controller/dcae-controller-service-docker/dcae-controller-service-common-docker/dcae-controller-service-common-docker-manager/target/dcae-controller-service-common-docker-manager-1.1.0-SNAPSHOT.jar
- asserts_file_exist ${src_folders[dcae]}/controller/dcae-controller-service-docker/dcae-controller-service-common-docker/dcae-controller-service-common-docker-model/target/dcae-controller-service-common-docker-model-1.1.0-SNAPSHOT.jar
- asserts_file_exist ${src_folders[dcae]}/controller/dcae-controller-service-docker/dcae-controller-service-docker-adaptor/target/dcae-controller-service-docker-adaptor-1.1.0-SNAPSHOT.jar
- asserts_file_exist ${src_folders[dcae]}/controller/dcae-controller-service-docker/dcae-controller-service-docker-host/dcae-controller-service-docker-host-manager/target/dcae-controller-service-docker-host-manager-1.1.0-SNAPSHOT.jar
- asserts_file_exist ${src_folders[dcae]}/controller/dcae-controller-service-docker/dcae-controller-service-docker-host/dcae-controller-service-docker-host-model/target/dcae-controller-service-docker-host-model-1.1.0-SNAPSHOT.jar
- asserts_file_exist ${src_folders[dcae]}/controller/dcae-controller-service-docker/dcae-controller-service-docker-model/target/dcae-controller-service-docker-model-1.1.0-SNAPSHOT.jar
-
- asserts_file_exist ${src_folders[dcae]}/controller/dcae-controller-service-vm/dcae-controller-service-common-vm/dcae-controller-service-common-vm-manager/target/dcae-controller-service-common-vm-manager-1.1.0-SNAPSHOT.jar
- asserts_file_exist ${src_folders[dcae]}/controller/dcae-controller-service-vm/dcae-controller-service-common-vm/dcae-controller-service-common-vm-model/target/dcae-controller-service-common-vm-model-1.1.0-SNAPSHOT.jar
- asserts_file_exist ${src_folders[dcae]}/controller/dcae-controller-service-vm/dcae-controller-service-vm-adaptor/target/dcae-controller-service-vm-adaptor-1.1.0-SNAPSHOT.jar
- asserts_file_exist ${src_folders[dcae]}/controller/dcae-controller-service-vm/dcae-controller-service-vm-model/target/dcae-controller-service-vm-model-1.1.0-SNAPSHOT.jar
-
- asserts_file_exist ${src_folders[dcae]}/dcae-inventory/target/dcae-inventory-1.1.0.jar
-
- asserts_file_exist ${src_folders[dcae]}/demo/dcae-demo-controller/target/dcae-demo-controller-1.1.0-SNAPSHOT-runtime.zip
-
- asserts_file_exist ${src_folders[dcae]}/dmaapbc/target/dcae_dmaapbc.jar
-
- asserts_file_exist ${src_folders[dcae]}/operation/utils/operation-utils/target/operation-utils-1.1.0-SNAPSHOT.jar
-}
-
-# test_get_dcae_images() - Function that verifies DCAE images are retrieved properly
-function test_get_dcae_images {
- clone_repos "dcae"
- compile_repos "dcae"
- get_dcae_images
-
- asserts_image openecomp/dcae-dmaapbc
- #asserts_image dcae/orch-dispatcher
- asserts_image dcae-controller
- asserts_image dcae-inventory
-}
-
-# test_install_dcae() - Function that verifies that DCAE services are up and running
-function test_install_dcae {
- clone_repos "dcae"
- compile_all_dcae_repos
- get_dcae_images
- install_dcae
-
- dcae_image=`docker images | grep dcae-controller | awk '{print $1 ":" $2}'`
- asserts_image_running $dcae_image
-}
-
-if [ "$1" != '*' ]; then
- unset covered_functions
- covered_functions=$1
-fi
-main "${covered_functions[@]}"
diff --git a/bootstrap/vagrant-onap/tests/test_functions b/bootstrap/vagrant-onap/tests/test_functions
deleted file mode 100755
index dd482151f..000000000
--- a/bootstrap/vagrant-onap/tests/test_functions
+++ /dev/null
@@ -1,191 +0,0 @@
-#!/bin/bash
-
-source /var/onap_tests/_test_base
-source /var/onap/functions
-
-covered_functions=(
-"create_configuration_files" "clone_repo"
-"configure_bind" "install_java" "install_maven" "install_nodejs" "install_python"
-"install_docker" "pull_docker_image" "install_docker_compose" "configure_service"
-"start_ODL" "compile_src" "build_docker_image" "docker_openecomp_login"
-"pull_openecomp_image" "pull_onap_image" "coverity_repos" "add_no_proxy_value"
-)
-
-# test_create_configuration_files() - Verify the creation of a configuration files
-function test_create_configuration_files {
- create_configuration_files
-
- asserts_file_exist /opt/config/nexus_docker_repo.txt
- asserts_file_exist /opt/config/nexus_username.txt
- asserts_file_exist /opt/config/nexus_password.txt
- asserts_file_exist /opt/config/openstack_username.txt
- asserts_file_exist /opt/config/tenant_id.txt
- asserts_file_exist /opt/config/dmaap_topic.txt
- asserts_file_exist /opt/config/docker_version.txt
-}
-
-# test_docker_openecomp_login() - Verify the proper login to OpenECOMP Docker Hub
-function test_docker_openecomp_login {
- docker_openecomp_login
-}
-
-# test_pull_openecomp_image() - Verify the OpenECOMP container image pulling process
-function test_pull_openecomp_image {
- local image_name=portal-apps
- unset docker_version
- pull_openecomp_image $image_name
-
- asserts_image $nexus_docker_repo/openecomp/$image_name
-}
-
-# test_pull_onap_image() - Verify the ONAP cointainer pulling process
-function test_pull_onap_image {
- local image_name=portal-apps
- unset docker_version
- pull_onap_image $image_name
-
- asserts_image $nexus_docker_repo/onap/$image_name
-}
-
-# test_clone_repo() - Verify cloning and pulling source code from repositories
-function test_clone_repo {
- clone_repo demo
-
- asserts_installed_package git
- asserts_file_exist $git_src_folder/demo/LICENSE.TXT
-}
-
-# test_configure_bind() - Verify the correct installation and configuration of bind
-function test_configure_bind {
- configure_bind
-
- asserts_installed_package bind9
- asserts_installed_package bind9utils
- asserts_file_exist /etc/bind/zones/db.simpledemo.openecomp.org
- asserts_file_exist /etc/bind/named.conf.options
- asserts_file_exist /etc/bind/named.conf.local
-
- rm -rf /etc/bind/
-}
-
-# test_install_java() - Verify the correct installation of java
-function test_install_java {
- install_java
-
- asserts_installed_package openjdk-8-jdk
-}
-
-# test_install_maven() - Verify the correct installation and configuration of maven
-function test_install_maven {
- install_maven
-
- asserts_installed_package maven3
- asserts_installed_package openjdk-8-jdk
- asserts_file_exist $mvn_conf_file
-}
-
-# test_install_nodejs() - Verify the correct installation of NodeJS tools
-function test_install_nodejs {
- install_nodejs
-
- asserts_installed_package nodejs
- asserts_file_exist /usr/bin/npm
-}
-
-# test_install_python() - Verify the correct installation of Python
-function test_install_python {
- install_python
- asserts_installed_package python2.7
- asserts_installed_package python-dev
-}
-
-# test_install_docker() - Verify the correct installation of Docker
-function test_install_docker {
- install_docker
-
- asserts_installed_package docker-ce
-}
-
-# test_pull_docker_image() - Verify the correct retrieve of a specific docker image
-function test_pull_docker_image {
- local image=attos/dmaap
- pull_docker_image $image
-
- asserts_image $image
-}
-
-# test_install_docker_compose() - Verify the correct installation of Docker Compose tool
-function test_install_docker_compose {
- install_docker_compose
-
- asserts_file_exist /opt/docker/docker-compose
-}
-
-# test_configure_service() - Verify the correct configuration of a specific init service
-function test_configure_service {
- local service=mso
-
- configure_service $service
-
- asserts_file_exist /etc/init.d/$service
-
- rm -rf /etc/init.d/$service
-}
-
-# test_start_ODL() - Verify the installation and configuration of OpenDayLight controller
-function test_start_ODL {
- start_ODL
-
- asserts_file_exist /opt/opendaylight/current/bin/start
-}
-
-# test_compile_src() - Verify the compilation of java code using maven tools
-function test_compile_src {
- local repo=vid/asdcclient
- clone_repo $repo
- compile_src $git_src_folder/$repo
-
- asserts_file_exist $git_src_folder/$repo/target/asdcclient-1.0.2-SNAPSHOT.jar
-}
-
-# test_build_docker_image() - Verify that a docker image is created from source code
-function test_build_docker_image {
- clone_repo ccsdk/distribution
- build_docker_image $git_src_folder/ccsdk/distribution/ubuntu docker
-
- asserts_image onap/ccsdk-ubuntu-image
-}
-
-# test_coverity_repos() - Verify that all the repos are covered by scripts
-function test_coverity_repos {
- pushd /var/onap_tests/
- cp projects.txt remaining_projects.txt
- for project in "${repos[@]}"; do
- for covered_repo in $project; do
- sed -i '/^'${covered_repo//\//\\/}'$/d' remaining_projects.txt
- done
- done
-
- threshold=75
- num_projects=$(wc -l < projects.txt)
- num_remaining_projects=$(wc -l < remaining_projects.txt)
- coverage=`echo "scale=2; 100-($num_remaining_projects/$num_projects*100)" | bc | cut -d . -f 1`
- if [ $coverage -lt $threshold ]; then
- raise_error "There are repositories that are not covered by scripts"
- fi
- popd
-}
-
-# test_add_no_proxy_value - Verify that the no_proxy value is correctly set
-function test_add_no_proxy_value {
- local ip="172.16.0.3"
- add_no_proxy_value $ip
-
- asserts_env_set no_proxy
-}
-
-if [ "$1" != '*' ]; then
- unset covered_functions
- covered_functions=$1
-fi
-main "${covered_functions[@]}"
diff --git a/bootstrap/vagrant-onap/tests/test_mr b/bootstrap/vagrant-onap/tests/test_mr
deleted file mode 100755
index ad1bcd2f5..000000000
--- a/bootstrap/vagrant-onap/tests/test_mr
+++ /dev/null
@@ -1,38 +0,0 @@
-#!/bin/bash
-
-source /var/onap_tests/_test_base
-source /var/onap/mr
-
-covered_functions=(
-"clone_mr_repos" "get_mr_images" "install_message_router"
-)
-
-# test_clone_mr_repos() - Verify that Message Router repositories are cloned properly
-function test_clone_mr_repos {
- clone_repo dcae/demo/startup/message-router ${src_folders[mr]}
-
- asserts_file_exist ${src_folders[mr]}/deploy.sh
-}
-
-# test_get_mr_images() - Verify that Message Router Docker images are retrieved
-function test_get_mr_images {
- get_mr_images
-
- asserts_image attos/dmaap
- asserts_image wurstmeister/zookeeper
-}
-
-# test_install_message_router() - Verify the built and start of Message Router services
-function test_install_message_router {
- clone_repo dcae/demo/startup/message-router ${src_folders[mr]}
- get_mr_images
- install_message_router
-
- asserts_image_running dockerfiles_kafka
-}
-
-if [ "$1" != '*' ]; then
- unset covered_functions
- covered_functions=$1
-fi
-main "${covered_functions[@]}"
diff --git a/bootstrap/vagrant-onap/tests/test_msb b/bootstrap/vagrant-onap/tests/test_msb
deleted file mode 100755
index 0848d333b..000000000
--- a/bootstrap/vagrant-onap/tests/test_msb
+++ /dev/null
@@ -1,61 +0,0 @@
-#!/bin/bash
-
-source /var/onap_tests/_test_base
-source /var/onap/msb
-
-covered_functions=(
-"clone_all_msb_repos" "compile_all_msb_repos" "get_msb_images" "install_msb"
-)
-
-# test_clone_all_msb_repos() - Verify the source code retrieve of Microservice Bus project
-function test_clone_all_msb_repos {
- clone_repos "msb"
-
- asserts_file_exist ${src_folders[msb]}/apigateway/pom.xml
- asserts_file_exist ${src_folders[msb]}/discovery/pom.xml
- asserts_file_exist ${src_folders[msb]}/java-sdk/pom.xml
- asserts_file_exist ${src_folders[msb]}/swagger-sdk/pom.xml
-}
-
-# test_compile_all_msb_repos() - Verify the correct compilation of MSB project
-function test_compile_all_msb_repos {
- clone_repos "msb"
- compile_repos "msb"
-
- asserts_file_exist ${src_folders[msb]}/apigateway/apiroute/apiroute-service/target/original-apiroute-service-1.1.0-SNAPSHOT.jar
- asserts_file_exist ${src_folders[msb]}/apigateway/apiroute/apiroute-standalone/target/apiroute-1.1.0-SNAPSHOT.zip
- asserts_file_exist ${src_folders[msb]}/discovery/discovery-ui/target/discovery-ui-1.1.0-SNAPSHOT.jar
- asserts_file_exist ${src_folders[msb]}/discovery/sdclient/discovery-service/target/original-discovery-service-1.1.0-SNAPSHOT.jar
- asserts_file_exist ${src_folders[msb]}/java-sdk/target/msb-java-sdk-1.1.0-SNAPSHOT.jar
- asserts_file_exist ${src_folders[msb]}/swagger-sdk/target/swagger-sdk-1.1.0-SNAPSHOT.jar
-}
-
-# test_get_msb_images() - Verify the creation of MSB Docker images
-function test_get_msb_images {
- clone_repos "msb"
- get_msb_images
-
- for image in base apigateway discovery; do
- asserts_image $nexus_docker_repo/onap/msb/msb_$image
- done
-}
-
-# test_install_msb - Verify the execution of MSB Docker images
-function test_install_msb {
- clone_repos "msb"
- get_msb_images
- install_msb
-
- for image in apigateway discovery; do
- asserts_image_running $nexus_docker_repo/onap/msb/msb_$image
- done
-
- asserts_http_status_code "http://127.0.0.1:10081/api/microservices/v1/services"
- asserts_http_status_code "http://127.0.0.1/api/aai/v8/cloud-infrastructure/cloud-regions"
-}
-
-if [ "$1" != '*' ]; then
- unset covered_functions
- covered_functions=$1
-fi
-main "${covered_functions[@]}"
diff --git a/bootstrap/vagrant-onap/tests/test_mso b/bootstrap/vagrant-onap/tests/test_mso
deleted file mode 100755
index 6a6bef772..000000000
--- a/bootstrap/vagrant-onap/tests/test_mso
+++ /dev/null
@@ -1,67 +0,0 @@
-#!/bin/bash
-
-source /var/onap_tests/_test_base
-source /var/onap/mso
-
-covered_functions=(
-"clone_all_mso_repos" "compile_all_mso_repos" "get_mso_images" "install_mso"
-)
-
-# test_clone_all_mso_repos() - Verify the source code retrieve of MSO project
-function test_clone_all_mso_repos {
- clone_repos "mso"
-
- asserts_file_exist ${src_folders[mso]}/pom.xml
- asserts_file_exist ${src_folders[mso]}/chef-repo/LICENSE.txt
- asserts_file_exist ${src_folders[mso]}/docker-config/LICENSE.txt
- asserts_file_exist ${src_folders[mso]}/libs/pom.xml
- asserts_file_exist ${src_folders[mso]}/mso-config/LICENSE.txt
-}
-
-# test_compile_all_mso_repos() - Verify the correct compilation of MSO projects
-function test_compile_all_mso_repos {
- clone_repos "mso"
- compile_repos "mso"
-
- asserts_file_exist ${src_folders[mso]}/libs/ceilometer-client/target/ceilometer-client-1.1.0-SNAPSHOT.jar
- asserts_file_exist ${src_folders[mso]}/libs/ceilometer-model/target/ceilometer-model-1.1.0-SNAPSHOT.jar
- asserts_file_exist ${src_folders[mso]}/libs/glance-client/target/glance-client-1.1.0-SNAPSHOT.jar
- asserts_file_exist ${src_folders[mso]}/libs/glance-model/target/glance-model-1.1.0-SNAPSHOT.jar
- asserts_file_exist ${src_folders[mso]}/libs/heat-client/target/heat-client-1.1.0-SNAPSHOT.jar
- asserts_file_exist ${src_folders[mso]}/libs/heat-model/target/heat-model-1.1.0-SNAPSHOT.jar
- asserts_file_exist ${src_folders[mso]}/libs/keystone-client/target/keystone-client-1.1.0-SNAPSHOT.jar
- asserts_file_exist ${src_folders[mso]}/libs/keystone-model/target/keystone-model-1.1.0-SNAPSHOT.jar
- asserts_file_exist ${src_folders[mso]}/libs/nova-client/target/nova-client-1.1.0-SNAPSHOT.jar
- asserts_file_exist ${src_folders[mso]}/libs/nova-model/target/nova-model-1.1.0-SNAPSHOT.jar
- asserts_file_exist ${src_folders[mso]}/libs/openstack-client/target/openstack-client-1.1.0-SNAPSHOT.jar
- asserts_file_exist ${src_folders[mso]}/libs/quantum-client/target/quantum-client-1.1.0-SNAPSHOT.jar
- asserts_file_exist ${src_folders[mso]}/libs/quantum-model/target/quantum-model-1.1.0-SNAPSHOT.jar
- asserts_file_exist ${src_folders[mso]}/libs/swift-client/target/swift-client-1.1.0-SNAPSHOT.jar
- asserts_file_exist ${src_folders[mso]}/libs/swift-model/target/swift-model-1.1.0-SNAPSHOT.jar
-}
-
-# test_get_mso_images() - Verify the creation of MSO Docker images
-function test_get_mso_images {
- clone_repos "mso"
- install_mso
-
- for image in mso mso-arquillian wildfly ubuntu-update jacoco; do
- asserts_image openecomp/$image
- done
-}
-
-# test_install_mso - Verify the execution of MSO Docker images
-function test_install_mso {
- clone_repos "mso"
- install_mso
- install_mso_docker_config
-
- asserts_image_running openecomp/mso
- asserts_image_running mariadb:10.1.11
-}
-
-if [ "$1" != '*' ]; then
- unset covered_functions
- covered_functions=$1
-fi
-main "${covered_functions[@]}"
diff --git a/bootstrap/vagrant-onap/tests/test_multicloud b/bootstrap/vagrant-onap/tests/test_multicloud
deleted file mode 100755
index 1b5b85de6..000000000
--- a/bootstrap/vagrant-onap/tests/test_multicloud
+++ /dev/null
@@ -1,54 +0,0 @@
-#!/bin/bash
-
-source /var/onap_tests/_test_base
-source /var/onap/multicloud
-
-covered_functions=(
-"clone_multicloud_repos" "compile_multicloud_repos" "get_multicloud_images" "install_multicloud"
-)
-
-# test_clone_multicloud_repos() - Verify that Multi Cloud repositories are cloned properly
-function test_clone_multicloud_repos {
- clone_repos "multicloud"
-
- #asserts_file_exist ${src_folders[multicloud]}/
- asserts_file_exist ${src_folders[multicloud]}/framework/pom.xml
- asserts_file_exist ${src_folders[multicloud]}/openstack/pom.xml
- asserts_file_exist ${src_folders[multicloud]}/openstack/vmware/pom.xml
- asserts_file_exist ${src_folders[multicloud]}/openstack/windriver/pom.xml
- #asserts_file_exist ${src_folders[multicloud]}/azure/
-}
-
-# test_compile_multicloud_repos() -
-function test_compile_multicloud_repos {
- clone_repos "multicloud"
- compile_repos "multicloud"
-
- asserts_file_exist ${src_folders[multicloud]}/openstack/newton/target/multicloud-openstack-newton-1.0.0-SNAPSHOT.zip
- asserts_file_exist ${src_folders[multicloud]}/openstack/ocata/target/multicloud-openstack-ocata-1.0.0-SNAPSHOT.zip
- asserts_file_exist ${src_folders[multicloud]}/openstack/windriver/target/multicloud-openstack-windriver-1.0.0-SNAPSHOT.zip
-}
-
-# test_get_multicloud_images() -
-function test_get_multicloud_images {
- clone_repos "multicloud"
- get_multicloud_images
-
- asserts_image onap/multicloud/openstack-$openstack_release
-}
-
-# test_install_multicloud() - Verify the built and start of Multi Cloud services
-function test_install_multicloud {
- clone_repos "multicloud"
- get_multicloud_images
- install_multicloud
-
- # NOTE(electrocucaracha): Depends on https://gerrit.onap.org/r/#/c/23631/
- asserts_http_status_code http://127.0.0.1:9003/api/multicloud-$openstack_release/v0/swagger.json
-}
-
-if [ "$1" != '*' ]; then
- unset covered_functions
- covered_functions=$1
-fi
-main "${covered_functions[@]}"
diff --git a/bootstrap/vagrant-onap/tests/test_policy b/bootstrap/vagrant-onap/tests/test_policy
deleted file mode 100755
index b666cf9db..000000000
--- a/bootstrap/vagrant-onap/tests/test_policy
+++ /dev/null
@@ -1,100 +0,0 @@
-#!/bin/bash
-
-source /var/onap_tests/_test_base
-source /var/onap/policy
-
-covered_functions=(
-"clone_all_policy_repos"
-"compile_all_policy_repos"
-"get_policy_images"
-"install_policy"
-)
-
-# test_clone_all_policy_repos() - Verify cloning of Policy source code
-function test_clone_all_policy_repos {
- clone_repos "policy"
-
- asserts_file_exist ${src_folders[policy]}/api/pom.xml
- asserts_file_exist ${src_folders[policy]}/common/pom.xml
- asserts_file_exist ${src_folders[policy]}/docker/pom.xml
- asserts_file_exist ${src_folders[policy]}/drools-applications/pom.xml
- asserts_file_exist ${src_folders[policy]}/drools-pdp/pom.xml
- asserts_file_exist ${src_folders[policy]}/engine/pom.xml
- asserts_file_exist ${src_folders[policy]}/gui/pom.xml
- asserts_file_exist ${src_folders[policy]}/pap/pom.xml
- asserts_file_exist ${src_folders[policy]}/pdp/pom.xml
-}
-
-# test_compile_all_policy_repos() - Verify compiling of Policy source code
-function test_compile_all_policy_repos {
- clone_repos "policy"
- compile_repos "policy"
-
- asserts_file_exist ${src_folders[policy]}/common/common-logging/target/ONAP-Logging-*-SNAPSHOT.jar
- asserts_file_exist ${src_folders[policy]}/common/integrity-audit/target/integrity-audit-*-SNAPSHOT.jar
- asserts_file_exist ${src_folders[policy]}/common/integrity-monitor/target/integrity-monitor-*-SNAPSHOT.jar
- asserts_file_exist ${src_folders[policy]}/common/site-manager/target/site-manager-*-SNAPSHOT.jar
- for actor in appc appclcm so test vfc; do
- asserts_file_exist ${src_folders[policy]}/drools-applications/controlloop/common/actors/actor.$actor/target/actor.$actor-*-SNAPSHOT.jar
- done
- asserts_file_exist ${src_folders[policy]}/drools-applications/controlloop/common/actors/actorServiceProvider/target/actorServiceProvider-*-SNAPSHOT.jar
- asserts_file_exist ${src_folders[policy]}/drools-applications/controlloop/common/eventmanager/target/eventmanager-*-SNAPSHOT.jar
- asserts_file_exist ${src_folders[policy]}/drools-applications/controlloop/common/guard/target/guard-*-SNAPSHOT.jar
- for module in aai appc appclcm events rest sdc so trafficgenerator vfc; do
- asserts_file_exist ${src_folders[policy]}/drools-applications/controlloop/common/model-impl/$module/target/$module-*-SNAPSHOT.jar
- done
- asserts_file_exist ${src_folders[policy]}/drools-applications/controlloop/common/policy-yaml/target/policy-yaml-*-SNAPSHOT.jar
- for package in apps artifacts; do
- asserts_file_exist ${src_folders[policy]}/drools-applications/controlloop/packages/$package/target/$package-*-SNAPSHOT.zip
- done
- #asserts_file_exist ${src_folders[policy]}/drools-applications/controlloop/packages/basex/target/basex-*-SNAPSHOT.tar.gz
- asserts_file_exist ${src_folders[policy]}/drools-applications/controlloop/templates/template.demo/target/template.demo-*-SNAPSHOT.jar
- asserts_file_exist ${src_folders[policy]}/drools-applications/controlloop/templates/template.demo/target/template.demo-*-SNAPSHOT.jar
- for feature in eelf healthcheck session-persistence; do
- asserts_file_exist ${src_folders[policy]}/drools-pdp/feature-$feature/target/feature-$feature-*-SNAPSHOT.jar
- done
- #asserts_file_exist ${src_folders[policy]}/drools-pdp/packages/base/target/base-*-SNAPSHOT.tar.gz
- #asserts_file_exist ${src_folders[policy]}/drools-pdp/packages/install/target/install-drools-*-SNAPSHOT.zip
- for policy in core endpoints management utils; do
- asserts_file_exist ${src_folders[policy]}/drools-pdp/policy-$policy/target/policy-$policy-*-SNAPSHOT.jar
- done
- for engine in BRMSGateway LogParser ONAP-PDP ONAP-XACML ONAP-REST; do
- asserts_file_exist ${src_folders[policy]}/engine/$engine/target/$engine-*-SNAPSHOT.jar
- done
- for engine in ONAP-PAP-REST ONAP-PDP-REST ONAP-SDK-APP; do
- asserts_file_exist ${src_folders[policy]}/engine/$engine/target/$engine-*-SNAPSHOT.war
- done
- asserts_file_exist ${src_folders[policy]}/engine/packages/base/target/base-*-SNAPSHOT.tar.gz
- asserts_file_exist ${src_folders[policy]}/engine/packages/install/target/install-*-SNAPSHOT.zip
- asserts_file_exist ${src_folders[policy]}/engine/POLICY-SDK-APP/target/POLICY-SDK-APP-*-SNAPSHOT.war
- asserts_file_exist ${src_folders[policy]}/engine/PolicyEngineAPI/target/PolicyEngineAPI-*-SNAPSHOT.jar
- asserts_file_exist ${src_folders[policy]}/engine/PolicyEngineClient/target/PolicyEngineClient-*-SNAPSHOT.jar
- asserts_file_exist ${src_folders[policy]}/engine/PolicyEngineUtils/target/PolicyEngineUtils-*-SNAPSHOT.jar
-}
-
-# test_get_policy_images() - Verify that Policy Docker images are retrieved properly
-function test_get_policy_images {
- clone_repos "policy"
- get_policy_images
-
- for image in os nexus db base drools pe; do
- asserts_image onap/policy/policy-$image
- done
-}
-
-# test_install_policy() - Verify that Policy services are started properly
-function test_install_policy {
- clone_repos "policy"
- get_policy_images
- install_policy
-
- for image in pe drools db nexus; do
- asserts_image_running onap/policy/policy-$image
- done
-}
-
-if [ "$1" != '*' ]; then
- unset covered_functions
- covered_functions=$1
-fi
-main "${covered_functions[@]}"
diff --git a/bootstrap/vagrant-onap/tests/test_portal b/bootstrap/vagrant-onap/tests/test_portal
deleted file mode 100755
index d20f173ce..000000000
--- a/bootstrap/vagrant-onap/tests/test_portal
+++ /dev/null
@@ -1,59 +0,0 @@
-#!/bin/bash
-
-source /var/onap_tests/_test_base
-source /var/onap/portal
-
-covered_functions=(
-"clone_all_portal_repos"
-"compile_all_portal_repos"
-"get_portal_images"
-"install_portal"
-)
-
-# test_clone_all_portal_repos() - Verify cloning of Portal source code
-function test_clone_all_portal_repos {
- clone_all_portal_repos
-
- asserts_file_exist ${src_folders[portal]}/pom.xml
- asserts_file_exist ${src_folders[portal]}/ecompsdkos/LICENSE.txt
- asserts_file_exist ${src_folders[portal]}/dmaapbc/pom.xml
- asserts_file_exist ${src_folders[portal]}/sdk/LICENSE.txt
-}
-
-# test_compile_all_portal_repos() - Verify compiling of Portal source code
-function test_compile_all_portal_repos {
- clone_all_portal_repos
- compile_all_portal_repos
-
- asserts_file_exist ${src_folders[portal]}/ecomp-portal-BE-common/target/ecompportal-be-common.war
- asserts_file_exist ${src_folders[portal]}/ecomp-portal-BE-common-test/target/ecomp-portal-BE-common-test.jar
- asserts_file_exist ${src_folders[portal]}/ecomp-portal-BE-os/target/ecompportal-be-os.war
-}
-
-# test_get_portal_images() - Verify that Portal Docker images are retrieved or built properly
-function test_get_portal_images {
- clone_all_portal_repos
- get_portal_images
-
- asserts_image portal-db
- asserts_image portal-wms
- asserts_image portal-apps
- asserts_image mariadb
-}
-
-# test_install_portal() - Verify installation of Portal services
-function test_install_portal {
- clone_all_portal_repos
- install_mariadb
- install_portal
-
- asserts_image_running portal-db
- asserts_image_running portal-wms
- asserts_image_running portal-apps
-}
-
-if [ "$1" != '*' ]; then
- unset covered_functions
- covered_functions=$1
-fi
-main "${covered_functions[@]}"
diff --git a/bootstrap/vagrant-onap/tests/test_robot b/bootstrap/vagrant-onap/tests/test_robot
deleted file mode 100755
index b96a08848..000000000
--- a/bootstrap/vagrant-onap/tests/test_robot
+++ /dev/null
@@ -1,48 +0,0 @@
-#!/bin/bash
-
-source /var/onap_tests/_test_base
-source /var/onap/robot
-
-covered_functions=(
-"clone_robot_repos" "compile_robot_repos" "get_robot_images" "install_robot"
-)
-
-# test_clone_robot_repos() - Verify that Robot repositories are cloned properly
-function test_clone_robot_repos {
- clone_repos "robot" "testsuite"
-
- asserts_file_exist ${src_folders[robot]}/LICENSE.TXT
- asserts_file_exist ${src_folders[robot]}/heatbridge/pom.xml
- asserts_file_exist ${src_folders[robot]}/properties/LICENSE.TXT
- asserts_file_exist ${src_folders[robot]}/python-testing-utils/LICENSE.TXT
-}
-
-# test_compile_robot_repos() - Verify that Robot source code can be compiled properly
-function test_compile_robot_repos {
- clone_repos "robot" "testsuite"
- compile_repos "robot"
-
- #asserts_file_exist $testsuite_src_folder/heatbridge/target/maven-python/dist/heatbridge-0.3.0.dev0-py2-none-any.whl
-}
-
-# test_get_robot_images() - Verify that Robot Docker images are retrieved
-function test_get_robot_images {
- get_robot_images
-
- asserts_image $nexus_docker_repo/openecomp/testsuite
-}
-
-# test_install_robot() - Verify the built and start of Robot services
-function test_install_robot {
- clone_repos "robot" "testsuite"
- get_robot_images
- install_robot
-
- asserts_image_running $nexus_docker_repo/openecomp/testsuite
-}
-
-if [ "$1" != '*' ]; then
- unset covered_functions
- covered_functions=$1
-fi
-main "${covered_functions[@]}"
diff --git a/bootstrap/vagrant-onap/tests/test_sdc b/bootstrap/vagrant-onap/tests/test_sdc
deleted file mode 100755
index 67657803e..000000000
--- a/bootstrap/vagrant-onap/tests/test_sdc
+++ /dev/null
@@ -1,69 +0,0 @@
-#!/bin/bash
-
-source /var/onap_tests/_test_base
-source /var/onap/sdc
-
-covered_functions=(
-"clone_all_sdc_repos" "compile_all_sdc_repos" "get_sdc_images" "install_sdc"
-)
-
-# test_clone_all_sdc_repos() - Verifies the retrieval of SDC source code repos
-function test_clone_all_sdc_repos {
- clone_repos "sdc"
-
- asserts_file_exist ${src_folders[sdc]}/pom.xml
- asserts_file_exist ${src_folders[sdc]}/sdc-os-chef/pom.xml
- asserts_file_exist ${src_folders[sdc]}/jtosca/pom.xml
- asserts_file_exist ${src_folders[sdc]}/sdc-distribution-client/pom.xml
- asserts_file_exist ${src_folders[sdc]}/sdc-titan-cassandra/pom.xml
- asserts_file_exist ${src_folders[sdc]}/sdc-tosca/pom.xml
- asserts_file_exist ${src_folders[sdc]}/sdc_common/pom.xml
-}
-
-# test_compile_all_sdc_repos() - Verifies the correct compilation of SDC repositories
-function test_compile_all_sdc_repos {
- clone_repos "sdc"
- compile_repos "sdc"
-
- #asserts_file_exist ${src_folders[sdc]}/jtosca/target/jtosca-1.1.10-SNAPSHOT.jar
- #asserts_file_exist ${src_folders[sdc]}/sdc-distribution-client/sdc-distribution-ci/target/sdc-distribution-ci-1.1.*-SNAPSHOT.jar
- #asserts_file_exist ${src_folders[sdc]}/sdc-distribution-client/sdc-distribution-client/target/sdc-distribution-client-1.1.*-SNAPSHOT.jar
- #asserts_file_exist ${src_folders[sdc]}/sdc-titan-cassandra/target/jamm-0.3.0.jar
- #asserts_file_exist ${src_folders[sdc]}/sdc-tosca/target/sdc-tosca-1.1.*-SNAPSHOT.jar
-
- #for dirc in logging sdc-artifact-generator; do
- for dirc in logging; do
- name="openecomp-$dirc"
- for module in api core; do
- fullname="$name-$module"
- asserts_file_exist ${src_folders[sdc]}/sdc_common/$name-lib/$fullname/target/$fullname-1.1.0-SNAPSHOT.jar
- done
- done
-}
-
-# test_get_sdc_images() - Verifies the correct retrieval of SDC Docker images
-function test_get_sdc_images {
- clone_repos "sdc"
- get_sdc_images
-
- for image in sanity elasticsearch cassandra kibana frontend backend; do
- asserts_image openecomp/base_sdc-$image
- done
-}
-
-# test_install_sdc() - Verifies that SDC services are up and running
-function test_install_sdc {
- clone_repos "sdc"
- get_sdc_images
- install_sdc
-
- for image in elasticsearch cassandra kibana frontend backend; do
- asserts_image_running openecomp/base_sdc-$image
- done
-}
-
-if [ "$1" != '*' ]; then
- unset covered_functions
- covered_functions=$1
-fi
-main "${covered_functions[@]}"
diff --git a/bootstrap/vagrant-onap/tests/test_sdnc b/bootstrap/vagrant-onap/tests/test_sdnc
deleted file mode 100755
index c4ddc56cd..000000000
--- a/bootstrap/vagrant-onap/tests/test_sdnc
+++ /dev/null
@@ -1,69 +0,0 @@
-#!/bin/bash
-
-source /var/onap_tests/_test_base
-source /var/onap/sdnc
-
-covered_functions=(
-"clone_all_sdnc_repos" "compile_all_sdnc_repos" "get_sdnc_images" "install_sdnc"
-)
-
-# test_clone_all_sdnc_repos() - Verify the source code retrieve of SDNC project
-function test_clone_all_sdnc_repos {
- clone_repos "sdnc"
-
- asserts_file_exist ${src_folders[sdnc]}/adaptors/pom.xml
- #asserts_file_exist ${src_folders[sdnc]}/architecture/docs/index.rst
- asserts_file_exist ${src_folders[sdnc]}/core/pom.xml
- #asserts_file_exist ${src_folders[sdnc]}/features/docs/index.rst
- asserts_file_exist ${src_folders[sdnc]}/northbound/pom.xml
- asserts_file_exist ${src_folders[sdnc]}/oam/pom.xml
- #asserts_file_exist ${src_folders[sdnc]}/parent/docs/index.rst
- asserts_file_exist ${src_folders[sdnc]}/plugins/pom.xml
-}
-
-# test_compile_all_sdnc_repos() - Verify the correct compilation of SDNC projects
-function test_compile_all_sdnc_repos {
- clone_repos "sdnc"
- compile_all_sdnc_repos
-
- for component in generic-resource-api vnfapi vnftools; do
- if [[ "$component" == "vnfapi" ]]; then
- asserts_file_exist ${src_folders[sdnc]}/northbound/vnfapi/model/target/vnfapi-model-1.2.0-SNAPSHOT.jar
- fi
- asserts_file_exist ${src_folders[sdnc]}/northbound/$component/installer/target/sdnc-$component-1.2.0-SNAPSHOT-installer.zip
- asserts_file_exist ${src_folders[sdnc]}/northbound/$component/features/target/$component-features-1.2.0-SNAPSHOT.jar
- asserts_file_exist ${src_folders[sdnc]}/northbound/$component/provider/target/$component-provider-1.2.0-SNAPSHOT.jar
- done
- asserts_file_exist ${src_folders[sdnc]}/oam/admportal/target/admportal.*-SNAPSHOT.zip
- asserts_file_exist ${src_folders[sdnc]}/oam/dgbuilder/target/dgbuilder.*-SNAPSHOT.zip
- asserts_file_exist ${src_folders[sdnc]}/oam/platform-logic/installer/target/platform-logic-installer-*-SNAPSHOT.zip
-}
-
-# test_get_sdnc_images() - Verify that the SDNC images are created or retrieved
-function test_get_sdnc_images {
- clone_repos "sdnc"
- get_sdnc_images
-
- asserts_image onap/sdnc-image
- asserts_image onap/admportal-sdnc-image
- asserts_image onap/dgbuilder-sdnc-image
- asserts_image mysql/mysql-server:5.6
-}
-
-# test_install_sdnc() - Verify that the SDNC Docker containers are up and running
-function test_install_sdnc {
- clone_repos "sdnc"
- get_sdnc_images
- install_sdnc
-
- asserts_image_running onap/ccsdk-dgbuilder-image
- asserts_image_running onap/admportal-sdnc-image
- asserts_image_running onap/sdnc-image
- asserts_image_running mysql/mysql-server:5.6
-}
-
-if [ "$1" != '*' ]; then
- unset covered_functions
- covered_functions=$1
-fi
-main "${covered_functions[@]}"
diff --git a/bootstrap/vagrant-onap/tests/test_vfc b/bootstrap/vagrant-onap/tests/test_vfc
deleted file mode 100755
index 3fadeafad..000000000
--- a/bootstrap/vagrant-onap/tests/test_vfc
+++ /dev/null
@@ -1,68 +0,0 @@
-#!/bin/bash
-
-source /var/onap_tests/_test_base
-source /var/onap/vfc
-
-covered_functions=(
-"clone_all_vfc_repos" "compile_all_vfc_repos" "install_vfc" "get_vfc_images"
-)
-
-# test_clone_all_vfc_repos() - Verify cloning and pulling source code from repositories
-function test_clone_all_vfc_repos {
- clone_repos "vfc"
-
- #asserts_file_exist ${src_folders[vfc]}/pom.xml
- #asserts_file_exist ${src_folders[vfc]}/gvnfm
- asserts_file_exist ${src_folders[vfc]}/gvnfm/vnflcm/pom.xml
- asserts_file_exist ${src_folders[vfc]}/gvnfm/vnfmgr/pom.xml
- asserts_file_exist ${src_folders[vfc]}/gvnfm/vnfres/pom.xml
- #asserts_file_exist ${src_folders[vfc]}/nfvo
- asserts_file_exist ${src_folders[vfc]}/nfvo/catalog/run.sh
- #asserts_file_exist ${src_folders[vfc]}/nfvo/driver
- asserts_file_exist ${src_folders[vfc]}/nfvo/driver/ems/pom.xml
- asserts_file_exist ${src_folders[vfc]}/nfvo/driver/sfc/pom.xml
- #asserts_file_exist ${src_folders[vfc]}/nfvo/driver/vnfm
- asserts_file_exist ${src_folders[vfc]}/nfvo/driver/vnfm/gvnfm/pom.xml
- asserts_file_exist ${src_folders[vfc]}/nfvo/driver/vnfm/svnfm/pom.xml
- asserts_file_exist ${src_folders[vfc]}/nfvo/lcm/pom.xml
- asserts_file_exist ${src_folders[vfc]}/nfvo/wfengine/wso2/pom.xml
-}
-
-# test_compile_all_vfc_repos() - Verify that all the VFC modules are compiled properly
-function test_compile_all_vfc_repos {
- clone_repos "vfc"
- compile_all_vfc_repos
-
- # TODO(electrocucaracha): Add asserts_file_exist
-}
-
-# test_get_vfc_images() - Verify all VFC images are built correctly.
-function test_get_vfc_images {
- clone_repos "vfc"
- get_vfc_images
-
- asserts_image onap/gvnfmdriver
- asserts_image onap/nslcm
- asserts_image onap/vnfres
- asserts_image onap/vnfmgr
- asserts_image onap/vnflcm
-}
-
-# test_install_vfc() - Verify that the VFC are up and running
-function test_install_vfc {
- clone_repos "vfc"
- get_vfc_images
- install_vfc
-
- asserts_image_running onap/nslcm
- asserts_image_running onap/gvnfmdriver
- asserts_image_running onap/vnfres
- asserts_image_running onap/vnfmgr
- asserts_image_running onap/vnflcm
-}
-
-if [ "$1" != '*' ]; then
- unset covered_functions
- covered_functions=$1
-fi
-main "${covered_functions[@]}"
diff --git a/bootstrap/vagrant-onap/tests/test_vid b/bootstrap/vagrant-onap/tests/test_vid
deleted file mode 100755
index 79a415242..000000000
--- a/bootstrap/vagrant-onap/tests/test_vid
+++ /dev/null
@@ -1,51 +0,0 @@
-#!/bin/bash
-
-source /var/onap_tests/_test_base
-source /var/onap/vid
-
-covered_functions=(
-"clone_all_vid_repos" "compile_all_vid_repos" "get_vid_images" "install_vid"
-)
-
-# test_clone_all_vid_repos() - Verifies that VID repositories are retrieved properly
-function test_clone_all_vid_repos {
- clone_repos "vid"
-
- asserts_file_exist ${src_folders[vid]}/pom.xml
- asserts_file_exist ${src_folders[vid]}/asdcclient/pom.xml
-}
-
-# test_compile_all_vid_repos() - Verifies that VID source code is compiled properly
-function test_compile_all_vid_repos {
- clone_repos "vid"
- compile_repos "vid"
-
- asserts_file_exist ${src_folders[vid]}/asdcclient/target/asdcclient-1.0.2-SNAPSHOT.jar
- asserts_file_exist ${src_folders[vid]}/epsdk-app-onap/target/vid.war
- asserts_file_exist ${src_folders[vid]}/vid-app-common/target/vid-common.war
-}
-
-# test_get_vid_images() - Verifies that VID Docker images are built properly
-function test_get_vid_images {
- clone_repos "vid"
- get_vid_images
-
- asserts_image openecomp/vid
- asserts_image mariadb:10
-}
-
-# test_install_vid() - Verifies taht VID services are up and running
-function test_install_vid {
- clone_repos "vid"
- get_vid_images
- install_vid
-
- vid_image=`docker images | grep vid | grep latest| awk '{print $1 ":" $2}'`
- asserts_image_running $vid_image
-}
-
-if [ "$1" != '*' ]; then
- unset covered_functions
- covered_functions=$1
-fi
-main "${covered_functions[@]}"
diff --git a/bootstrap/vagrant-onap/tests/test_vnfsdk b/bootstrap/vagrant-onap/tests/test_vnfsdk
deleted file mode 100755
index cd29a9733..000000000
--- a/bootstrap/vagrant-onap/tests/test_vnfsdk
+++ /dev/null
@@ -1,57 +0,0 @@
-#!/bin/bash
-
-source /var/onap_tests/_test_base
-source /var/onap/vnfsdk
-
-covered_functions=(
-"clone_all_vnfsdk_repos" "compile_all_vnfsdk_repos" "get_vnfsdk_images" "install_vnfsdk"
-)
-
-# test_clone_all_vnfsdk_repos() - Verify the cloning of VNFSDK source repo.
-function test_clone_all_vnfsdk_repos {
- clone_repos "vnfsdk"
-
- asserts_file_exist ${src_folders[vnfsdk]}/compliance/veslibrary/README
- asserts_file_exist ${src_folders[vnfsdk]}/functest/pom.xml
- asserts_file_exist ${src_folders[vnfsdk]}/lctest/pom.xml
- asserts_file_exist ${src_folders[vnfsdk]}/model/docs/index.rst
- asserts_file_exist ${src_folders[vnfsdk]}/pkgtools/pom.xml
- asserts_file_exist ${src_folders[vnfsdk]}/refrepo/pom.xml
- asserts_file_exist ${src_folders[vnfsdk]}/validation/pom.xml
-}
-
-# test_compile_all_vnfsdk_repos () - Verify if VNFSDK source repo compiles correctly.
-function test_compile_all_vnfsdk_repos {
- clone_repos "vnfsdk"
- compile_repos "vnfsdk"
-
- asserts_file_exist ${src_folders[vnfsdk]}/lctest/lifecycle-test/target/lifecycle-test-service-1.0.0-SNAPSHOT.war
- asserts_file_exist ${src_folders[vnfsdk]}/pkgtools/target/vnf-sdk-pkgtools-1.0.0-SNAPSHOT.zip
- asserts_file_exist ${src_folders[vnfsdk]}/refrepo/vnfmarket-be/vnf-sdk-marketplace/target/ROOT.war
- asserts_file_exist ${src_folders[vnfsdk]}/validation/csarvalidation/target/validation-csar-1.0.0-SNAPSHOT.jar
-}
-
-# test_get_vnfsdk_images() - Verify that the VNFSDK images are created or retrieved
-function test_get_vnfsdk_images {
- clone_repos "vnfsdk"
- get_vnfsdk_images
-
- asserts_image refrepo:1.0-STAGING-latest
- asserts_image refrepo:latest
-}
-
-# test_install_vnfsdk() - Verify that VNFSDK docker images are running.
-function test_install_vnfsdk {
- clone_repos "vnfsdk"
- get_vnfsdk_images
- install_vnfsdk
-
- asserts_image_running refrepo:1.0-STAGING-latest
- asserts_image refrepo:latest
-}
-
-if [ "$1" != '*' ]; then
- unset covered_functions
- covered_functions=$1
-fi
-main "${covered_functions[@]}"
diff --git a/bootstrap/vagrant-onap/tests/test_vvp b/bootstrap/vagrant-onap/tests/test_vvp
deleted file mode 100755
index 8e9594dcd..000000000
--- a/bootstrap/vagrant-onap/tests/test_vvp
+++ /dev/null
@@ -1,55 +0,0 @@
-#!/bin/bash
-
-source /var/onap_tests/_test_base
-source /var/onap/vvp
-
-covered_functions=(
-"clone_all_vvp_repos" "compile_all_vvp_repos" "get_vvp_images" "install_vvp"
-)
-
-# test_clone_all_vvp_repos() - Verify the cloning of VNFSDK source repo.
-function test_clone_all_vvp_repos {
- clone_repos "vvp"
-
- asserts_file_exist ${src_folders[vvp]}/cms/pom.xml
- asserts_file_exist ${src_folders[vvp]}/devkit/LICENSE.TXT
- asserts_file_exist ${src_folders[vvp]}/engagementmgr/pom.xml
- asserts_file_exist ${src_folders[vvp]}/gitlab/pom.xml
- asserts_file_exist ${src_folders[vvp]}/image-scanner/pom.xml
- asserts_file_exist ${src_folders[vvp]}/jenkins/pom.xml
- asserts_file_exist ${src_folders[vvp]}/portal/pom.xml
- asserts_file_exist ${src_folders[vvp]}/postgresql/pom.xml
- asserts_file_exist ${src_folders[vvp]}/test-engine/pom.xml
- asserts_file_exist ${src_folders[vvp]}/validation-scripts/LICENSE.txt
-}
-
-# test_compile_all_vvp_repos () - Verify if VNFSDK source repo compiles correctly.
-function test_compile_all_vvp_repos {
- clone_repos "vvp"
- compile_repos "vvp"
-
- # asserts_file_exist ${src_folders[vvp]}/
-}
-
-# test_get_vvp_images() - Verify that the VNFSDK images are created or retrieved
-function test_get_vvp_images {
- clone_repos "vvp"
- get_vvp_images
-
- #asserts_image refrepo:latest
-}
-
-# test_install_vvp() - Verify that VNFSDK docker images are running.
-function test_install_vvp {
- clone_repos "vvp"
- get_vvp_images
- install_vvp
-
- #asserts_image_running refrepo:1.0-STAGING-latest
-}
-
-if [ "$1" != '*' ]; then
- unset covered_functions
- covered_functions=$1
-fi
-main "${covered_functions[@]}"
diff --git a/bootstrap/vagrant-onap/tools/Run.ps1 b/bootstrap/vagrant-onap/tools/Run.ps1
deleted file mode 100644
index de57a1564..000000000
--- a/bootstrap/vagrant-onap/tools/Run.ps1
+++ /dev/null
@@ -1,120 +0,0 @@
-<#
-.SYNOPSIS
-This script helps to configure its environment variables based on the component selected.
-
-.EXAMPLE
-.\tools\Run.ps1 testing -s functions -c install_maven -y
-
-.EXAMPLE
-.\tools\Run.ps1 all_in_one
-
-.EXAMPLE
-.\tools\Run.ps1 aai
-
-.PARAMETER s
-Test suite to use in testing mode.
-
-.PARAMETER c
-Test case to use in testing mode.
-
-.PARAMETER y
-Skips warning prompt.
-
-.PARAMETER g
-Skips creation or retrieve image process.
-
-.PARAMETER i
-Skips installation service process.
-
-.LINK
-https://wiki.onap.org/display/DW/ONAP+on+Vagrant
-#>
-
-Param(
- [ValidateSet("all_in_one","dns", "mr", "sdc", "aai", "mso", "robot", "vid", "sdnc", "portal", "dcae", "policy", "appc", "vfc", "multicloud", "ccsdk", "vnfsdk", "vvp", "openstack", "msb", "oom", "testing")]
-
- [Parameter(Mandatory=$True,Position=0)]
- [ValidateNotNullOrEmpty()]
- [String]
- $Command
-,
- [Parameter(Mandatory=$False,HelpMessage="Test suite to use in testing mode.")]
- [Alias("suite")]
- [String]
- $s = "*"
-,
- [Parameter(Mandatory=$False,HelpMessage="Test case to sue in testing mode.")]
- [Alias("case")]
- [String]
- $c = "*"
-,
- [Parameter(Mandatory=$False,HelpMessage="Skips warning prompt.")]
- [AllowNull()]
- [Switch]
- $y = $True
-,
- [Parameter(Mandatory=$False,HelpMessage="Skips creation or retrieve image process.")]
- [AllowNull()]
- [Switch]
- $skip_get_images = $True
-,
- [Parameter(Mandatory=$False,HelpMessage="Skips warning prompt.")]
- [AllowNull()]
- [Switch]
- $skip_install = $True
-)
-
-if ( -Not "testing".Equals($Command) )
- {
- if($PsBoundParameters.ContainsKey('s'))
- {
- Write-Host "Test suite should only be specified in testing mode."
- Write-Host ".\tools\Run.ps1 -?"
- exit 1
- }
- if($PsBoundParameters.ContainsKey('c'))
- {
- Write-Host "Test case should only be specified in testing mode."
- Write-Host ".\tools\Run.ps1 -?"
- exit 1
- }
- }
-
-$env:SKIP_GET_IMAGES=$skip_get_images
-$env:SKIP_INSTALL=$skip_install
-
-switch ($Command)
- {
- "all_in_one" { $env:DEPLOY_MODE="all-in-one" }
- { @("dns", "mr", "sdc", "aai", "mso", "robot", "vid", "sdnc", "portal", "dcae", "policy", "appc", "vfc", "multicloud", "ccsdk", "vnfsdk", "vvp", "openstack", "msb", "oom") -contains $_ } { $env:DEPLOY_MODE="individual" }
- "testing"
- {
- $env:DEPLOY_MODE="testing"
- If(-Not $y)
- {
- Write-Host "Warning: This test script will delete the contents of ../opt/ and ~/.m2."
- $yn = Read-Host "Would you like to continue? [y]es/[n]o: "
- switch ($yn)
- {
- { @("n", "N") -contains $_ }
- {
- Write-Host "Exiting."
- exit 0
- }
- }
- }
- $env:TEST_SUITE=$s
- $env:TEST_CASE=$c
-
- &cmd.exe /c rd /s /q .\opt\
- &cmd.exe /c rd /s /q $HOME\.m2\
- }
- default
- {
- Write-Output $"Usage: $0 {all_in_one|dns|mr|sdc|aai|mso|robot|vid|sdnc|portal|dcae|policy|appc|vfc|multicloud|ccsdk|vnfsdk|vvp|testing}"
- exit 1
- }
- }
-
-vagrant destroy -f $Command
-vagrant up $Command
diff --git a/bootstrap/vagrant-onap/tools/get_repos.sh b/bootstrap/vagrant-onap/tools/get_repos.sh
deleted file mode 100755
index ae5d4e0eb..000000000
--- a/bootstrap/vagrant-onap/tools/get_repos.sh
+++ /dev/null
@@ -1,38 +0,0 @@
-#!/bin/bash
-
-repos=(
-"aai/aai-data" "aai/aai-config" "aai/aai-service" "aai/data-router" "aai/logging-service" "aai/model-loader" "aai/resources" "aai/rest-client" "aai/router-core" "aai/search-data-service" "aai/sparky-be" "aai/sparky-fe" "aai/test-config" "aai/traversal"
-"appc" "appc/deployment"
-"ci-management"
-"dcae" "dcae/apod" "dcae/apod/analytics" "dcae/apod/buildtools" "dcae/apod/cdap" "dcae/collectors" "dcae/collectors/ves" "dcae/controller" "dcae/controller/analytics" "dcae/dcae-inventory" "dcae/demo" "dcae/demo/startup" "dcae/demo/startup/aaf" "dcae/demo/startup/controller" "dcae/demo/startup/message-router" "dcae/dmaapbc" "dcae/operation" "dcae/operation/utils" "dcae/orch-dispatcher" "dcae/pgaas" "dcae/utils" "dcae/utils/buildtools"
-"demo"
-"ecompsdkos"
-"mso" "mso/chef-repo" "mso/docker-config" "mso/libs" "mso/mso-config"
-"ncomp" "ncomp/cdap" "ncomp/core" "ncomp/docker" "ncomp/maven" "ncomp/openstack" "ncomp/sirius" "ncomp/sirius/manager" "ncomp/utils"
-"policy/common" "policy/docker" "policy/drools-applications" "policy/drools-pdp" "policy/engine"
-"portal"
-"sdc" "sdc/sdc-distribution-client" "sdc/sdc-titan-cassandra" "sdc/sdc_common"
-"sdnc/adaptors" "sdnc/core" "sdnc/northbound" "sdnc/oam" "sdnc/plugins"
-"testsuite" "testsuite/heatbridge" "testsuite/properties" "testsuite/python-testing-utils"
-"ui" "ui/dmaapbc"
-"vid" "vid/asdcclient")
-
-function git_clone_or_pull {
- local repo=$1
- local folder="./opt/$1"
- local mvn_build=$2
- if [ ! -d $folder ]; then
- git clone https://git.onap.org/$repo $folder
- fi
- pushd $folder > /dev/null
- git pull -q
- if [ -f .gitreview ]; then
- git review -s
- fi
- popd > /dev/null
-}
-
-for repo in ${repos[@]}; do
- echo "Working on $repo repository..."
- git_clone_or_pull $repo
-done
diff --git a/bootstrap/vagrant-onap/tools/run.sh b/bootstrap/vagrant-onap/tools/run.sh
deleted file mode 100755
index 27e0aa31e..000000000
--- a/bootstrap/vagrant-onap/tools/run.sh
+++ /dev/null
@@ -1,100 +0,0 @@
-#!/bin/bash
-
-function usage {
- cat <<EOF
-Usage: run.sh Command [-y] [-?]
-Optional arguments:
- -y
- Skips warning prompt.
- -g
- Skips creation or retrieve image process.
- -i
- Skips installation service process.
- -s <suite>
- Test suite to use in testing mode.
- -c <case>
- Test case to use in testing mode.
-Commands:
- all_in_one Deploy in all-in-one mode.
- dns|mr|sdc|aai|mso|robot|vid|sdnc|portal|dcae|policy|appc|vfc|vnfsdk|multicloud|ccsdk|vvp|openstack|msb|oom Deploy chosen service.
- testing Deploy in testing mode.
-EOF
-}
-
-run=false
-test_suite="*"
-test_case="*"
-
-COMMAND=$1
-
-while getopts "ygis:c:" OPTION "${@:2}"; do
- case "$OPTION" in
- y)
- run=true
- ;;
- g)
- export SKIP_GET_IMAGES="True"
- ;;
- i)
- export SKIP_INSTALL="True"
- ;;
- s)
- if [ "$COMMAND" != "testing" ] ; then
- echo "Test suite should only be specified in testing mode."
- echo "./tools/run.sh -? for usage."
- exit 1
- fi
- test_suite=$OPTARG
- ;;
- c)
- if [ "$COMMAND" != "testing" ] ; then
- echo "Test case should only be specified in testing mode."
- echo "./tools/run.sh -? for usage."
- exit 1
- fi
- test_case=$OPTARG
- ;;
- \?)
- usage
- exit 1
- ;;
- esac
-done
-
-case $COMMAND in
- "all_in_one" )
- export DEPLOY_MODE='all-in-one'
- ;;
- "dns" | "mr" | "sdc" | "aai" | "mso" | "robot" | "vid" | "sdnc" | "portal" | "dcae" | "policy" | "appc" | "vfc" | "vnfsdk"| "multicloud" | "ccsdk" | "vvp" | "openstack" | "msb" | "oom" )
- export DEPLOY_MODE='individual'
- ;;
- "testing" )
- export DEPLOY_MODE='testing'
- if [ "$run" == false ] ; then
- while true ; do
- echo "Warning: This test script will delete the contents of ../opt/ and ~/.m2."
- read -p "Would you like to continue? [y]es/[n]o: " yn
- case $yn in
- [Yy]*)
- break
- ;;
- [Nn]*)
- echo "Exiting."
- exit 0
- ;;
- esac
- done
- fi
-
- export TEST_SUITE=$test_suite
- export TEST_CASE=$test_case
- rm -rf ./opt/
- rm -rf ~/.m2/
- ;;
- * )
- usage
- exit 1
-esac
-
-vagrant destroy -f $COMMAND
-vagrant up $COMMAND
diff --git a/bootstrap/vagrant-onap/tools/setup.sh b/bootstrap/vagrant-onap/tools/setup.sh
deleted file mode 100755
index fe3a3fc28..000000000
--- a/bootstrap/vagrant-onap/tools/setup.sh
+++ /dev/null
@@ -1,133 +0,0 @@
-#!/bin/bash
-# SPDX-license-identifier: Apache-2.0
-##############################################################################
-# Copyright (c) 2017-2018
-# All rights reserved. This program and the accompanying materials
-# are made available under the terms of the Apache License, Version 2.0
-# which accompanies this distribution, and is available at
-# http://www.apache.org/licenses/LICENSE-2.0
-##############################################################################
-
-vagrant_version=2.0.2
-
-function usage {
- cat <<EOF
-usage: setup.sh -p <PROVIDER>
-Argument:
- -p Vagrant provider
-EOF
-}
-
-while getopts ":p:" OPTION; do
- case $OPTION in
- p)
- provider=$OPTARG
- ;;
- \?)
- usage
- exit 1
- ;;
- esac
-done
-
-case $provider in
- "virtualbox" | "libvirt" )
- export VAGRANT_DEFAULT_PROVIDER=${provider}
- ;;
- * )
- usage
- exit 1
-esac
-source /etc/os-release || source /usr/lib/os-release
-
-packages=()
-case ${ID,,} in
- *suse)
- INSTALLER_CMD="sudo -H -E zypper -q install -y --no-recommends"
-
- # Vagrant installation
- vagrant_pgp="pgp_keys.asc"
- wget -q https://keybase.io/hashicorp/$vagrant_pgp
- wget -q https://releases.hashicorp.com/vagrant/$vagrant_version/vagrant_${vagrant_version}_x86_64.rpm
- gpg --quiet --with-fingerprint $vagrant_pgp
- sudo rpm --import $vagrant_pgp
- sudo rpm --checksig vagrant_${vagrant_version}_x86_64.rpm
- sudo rpm --install vagrant_${vagrant_version}_x86_64.rpm
- rm vagrant_${vagrant_version}_x86_64.rpm
- rm $vagrant_pgp
-
- case $VAGRANT_DEFAULT_PROVIDER in
- virtualbox)
- wget -q http://download.virtualbox.org/virtualbox/rpm/opensuse/$VERSION/virtualbox.repo -P /etc/zypp/repos.d/
- $INSTALLER_CMD --enablerepo=epel dkms
- wget -q https://www.virtualbox.org/download/oracle_vbox.asc -O- | rpm --import -
- packages+=(VirtualBox-5.1)
- ;;
- libvirt)
- # vagrant-libvirt dependencies
- packages+=(qemu libvirt libvirt-devel ruby-devel gcc qemu-kvm zlib-devel libxml2-devel libxslt-devel make)
- # NFS
- packages+=(nfs-kernel-server)
- ;;
- esac
- sudo zypper -n ref
- ;;
-
- ubuntu|debian)
- INSTALLER_CMD="sudo -H -E apt-get -y -q=3 install"
-
- # Vagrant installation
- wget -q https://releases.hashicorp.com/vagrant/$vagrant_version/vagrant_${vagrant_version}_x86_64.deb
- sudo dpkg -i vagrant_${vagrant_version}_x86_64.deb
- rm vagrant_${vagrant_version}_x86_64.deb
-
- case $VAGRANT_DEFAULT_PROVIDER in
- virtualbox)
- echo "deb http://download.virtualbox.org/virtualbox/debian trusty contrib" >> /etc/apt/sources.list
- wget -q https://www.virtualbox.org/download/oracle_vbox_2016.asc -O- | sudo apt-key add -
- wget -q https://www.virtualbox.org/download/oracle_vbox.asc -O- | sudo apt-key add -
- packages+=(virtualbox-5.1 dkms)
- ;;
- libvirt)
- # vagrant-libvirt dependencies
- packages+=(qemu libvirt-bin ebtables dnsmasq libxslt-dev libxml2-dev libvirt-dev zlib1g-dev ruby-dev)
- # NFS
- packages+=(nfs-kernel-server)
- ;;
- esac
- sudo apt-get update
- ;;
-
- rhel|centos|fedora)
- PKG_MANAGER=$(which dnf || which yum)
- sudo $PKG_MANAGER updateinfo
- INSTALLER_CMD="sudo -H -E ${PKG_MANAGER} -q -y install"
-
- # Vagrant installation
- wget -q https://releases.hashicorp.com/vagrant/$vagrant_version/vagrant_${vagrant_version}_x86_64.rpm
- $INSTALLER_CMD vagrant_${vagrant_version}_x86_64.rpm
- rm vagrant_${vagrant_version}_x86_64.rpm
-
- case $VAGRANT_DEFAULT_PROVIDER in
- virtualbox)
- wget -q http://download.virtualbox.org/virtualbox/rpm/rhel/virtualbox.repo -P /etc/yum.repos.d
- $INSTALLER_CMD --enablerepo=epel dkms
- wget -q https://www.virtualbox.org/download/oracle_vbox.asc -O- | rpm --import -
- packages+=(VirtualBox-5.1)
- ;;
- libvirt)
- # vagrant-libvirt dependencies
- packages+=(qemu libvirt libvirt-devel ruby-devel gcc qemu-kvm)
- # NFS
- packages+=(nfs-utils nfs-utils-lib)
- ;;
- esac
- ;;
-
-esac
-
-${INSTALLER_CMD} ${packages[@]}
-if [ $VAGRANT_DEFAULT_PROVIDER == libvirt ]; then
- vagrant plugin install vagrant-libvirt
- sudo usermod -a -G libvirt $USER
-fi
diff --git a/bootstrap/vagrant-onap/tools/setup_openstack.sh b/bootstrap/vagrant-onap/tools/setup_openstack.sh
deleted file mode 100755
index 765ad9446..000000000
--- a/bootstrap/vagrant-onap/tools/setup_openstack.sh
+++ /dev/null
@@ -1,23 +0,0 @@
-#!/bin/bash
-
-ubuntu_name=${OS_IMAGE:-"trusty-server-cloudimg-amd64-disk1"}
-export OS_IMAGE=$ubuntu_name
-ubuntu_glance=`openstack image list -c Name -f value | grep "$ubuntu_name"`
-ubuntu_file=/tmp/ubuntu.img
-
-sec_group_name=${OS_SEC_GROUP:-"onap-ssh-secgroup"}
-export OS_SEC_GROUP=$sec_group_name
-sec_group_list=`openstack security group list -c Name -f value | grep "$sec_group_name"`
-
-if [[ -z $ubuntu_glance ]]; then
- if [ ! -f $ubuntu_file ]; then
- curl http://cloud-images.ubuntu.com/trusty/current/trusty-server-cloudimg-amd64-disk1.img -o "$ubuntu_file"
- fi
-
- openstack image create --disk-format raw --container-format bare --public --file $ubuntu_file "$ubuntu_name"
-fi
-
-if [[ -z $sec_group_list ]]; then
- openstack security group create "$sec_group_name"
- openstack security group rule create --protocol tcp --remote-ip 0.0.0.0/0 --dst-port 22:22 "$sec_group_name"
-fi
diff --git a/bootstrap/vagrant-onap/tools/update_project_list.sh b/bootstrap/vagrant-onap/tools/update_project_list.sh
deleted file mode 100755
index 2f0ebb9a3..000000000
--- a/bootstrap/vagrant-onap/tools/update_project_list.sh
+++ /dev/null
@@ -1,5 +0,0 @@
-#!/bin/bash
-
-ssh $1@gerrit.onap.org -p 29418 gerrit ls-projects > projects.tmp
-tail -n +2 projects.tmp > tests/projects.txt
-rm projects.tmp
diff --git a/bootstrap/vagrant-onap/tox.ini b/bootstrap/vagrant-onap/tox.ini
deleted file mode 100644
index 6ab309fdf..000000000
--- a/bootstrap/vagrant-onap/tox.ini
+++ /dev/null
@@ -1,30 +0,0 @@
-[tox]
-minversion = 1.6
-skipsdist = True
-envlist = bashate
-
-[testenv]
-passenv = http_proxy HTTP_PROXY https_proxy HTTPS_PROXY no_proxy NO_PROXY
-usedevelop = False
-install_command = pip install {opts} {packages}
-
-[testenv:bashate]
-deps =
- {env:BASHATE_INSTALL_PATH:bashate}
-whitelist_externals = bash
-commands = bash -c "find {toxinidir}/{tests,lib,tools} \
- -not \( -type d -path *files* -prune \) \
- -not \( -type f -name .*.swp* -prune \) \
- -not \( -type f -name *.ps1 -prune \) \
- -not \( -type f -name installed-software* -prune \) \
- -not \( -type f -name *projects.txt -prune \) \
- -type f \
-# E005 file does not begin with #! or have a .sh prefix
-# E006 check for lines longer than 79 columns
-# E042 local declaration hides errors
-# E043 Arithmetic compound has inconsistent return semantics
- -print0 | xargs -0 bashate -v -iE006 -eE005,E042,E043"
-
-[testenv:docs]
-deps = sphinx
-commands = sphinx-build -W -b html doc/source doc/build/html
diff --git a/bootstrap/vagrant-onap/vagrant_utils/postinstall.sh b/bootstrap/vagrant-onap/vagrant_utils/postinstall.sh
deleted file mode 100755
index 3b5017a66..000000000
--- a/bootstrap/vagrant-onap/vagrant_utils/postinstall.sh
+++ /dev/null
@@ -1,26 +0,0 @@
-#!/bin/bash
-
-if [[ "$debug" == "True" ]]; then
- set -o xtrace
-fi
-
-if [[ "$1" == "openstack" ]]; then
- source /var/onap/openstack
- deploy_openstack
- exit
-fi
-
-source /var/onap/functions
-
-update_repos
-create_configuration_files
-configure_bind
-
-for serv in $@; do
- source /var/onap/${serv}
- configure_service ${serv}_serv.sh
- init_${serv}
- echo "source /var/onap/${serv}" >> ~/.bashrc
-done
-
-echo "source /var/onap/functions" >> ~/.bashrc
diff --git a/bootstrap/vagrant-onap/vagrant_utils/unit_testing.sh b/bootstrap/vagrant-onap/vagrant_utils/unit_testing.sh
deleted file mode 100755
index 3a97ad9cf..000000000
--- a/bootstrap/vagrant-onap/vagrant_utils/unit_testing.sh
+++ /dev/null
@@ -1,14 +0,0 @@
-#!/bin/bash
-
-if [[ "$debug" == "True" ]]; then
- set -o xtrace
-fi
-
-set -o errexit
-
-TEST_SUITE=${1:-*}
-TEST_CASE=${2:-*}
-
-for file in $( ls /var/onap_tests/test_$TEST_SUITE); do
- bash ${file} $TEST_CASE
-done
diff --git a/deployment/heat/onap-oom/env/gwu/onap.env b/deployment/heat/onap-oom/env/gwu/onap.env
index 3ca447d70..1a9aa9a82 100644
--- a/deployment/heat/onap-oom/env/gwu/onap.env
+++ b/deployment/heat/onap-oom/env/gwu/onap.env
@@ -13,7 +13,7 @@ parameters:
apt_proxy: 192.168.1.51:3142
docker_proxy: 192.168.1.51:5000
- rancher_vm_flavor: m1.small
+ rancher_vm_flavor: m1.large
k8s_vm_flavor: m2.xxlarge
public_net_id: 024582bd-ef9b-48b9-9e70-e6732559d9df
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 0365c751c..88d6b7492 100644
--- a/deployment/heat/onap-oom/env/huawei/onap-beijing-oom.env
+++ b/deployment/heat/onap-oom/env/huawei/onap-beijing-oom.env
@@ -13,7 +13,7 @@ parameters:
apt_proxy: 10.145.122.118:3142
docker_proxy: 10.145.122.118:5000
- rancher_vm_flavor: m1.small
+ rancher_vm_flavor: m1.large
k8s_vm_flavor: m2.xxlarge
public_net_id: 3a6247f1-fac6-4167-a49f-33cc8415ccf4
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 442d9fd76..405008380 100644
--- a/deployment/heat/onap-oom/env/tlab/ETE-HEAT-Test.env
+++ b/deployment/heat/onap-oom/env/tlab/ETE-HEAT-Test.env
@@ -13,7 +13,7 @@ parameters:
apt_proxy: 192.168.31.204:3142
docker_proxy: 192.168.31.204:5000
- rancher_vm_flavor: m1.small
+ rancher_vm_flavor: m1.large
k8s_vm_flavor: m2.xxlarge
public_net_id: fbe8fd92-6636-4e63-ab28-bb6a5b0888a9
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 3cd226113..63d2f671a 100644
--- a/deployment/heat/onap-oom/env/tlab/ETE-OOM-Test.env
+++ b/deployment/heat/onap-oom/env/tlab/ETE-OOM-Test.env
@@ -13,7 +13,7 @@ parameters:
apt_proxy: 192.168.31.204:3142
docker_proxy: 192.168.31.204:5000
- rancher_vm_flavor: m1.small
+ rancher_vm_flavor: m1.large
k8s_vm_flavor: m2.xxlarge
public_net_id: fbe8fd92-6636-4e63-ab28-bb6a5b0888a9
diff --git a/deployment/heat/onap-oom/env/tlab/EXTONAP_DEV.env b/deployment/heat/onap-oom/env/tlab/EXTONAP_DEV.env
index 2d360eaca..cb9244299 100644
--- a/deployment/heat/onap-oom/env/tlab/EXTONAP_DEV.env
+++ b/deployment/heat/onap-oom/env/tlab/EXTONAP_DEV.env
@@ -13,7 +13,7 @@ parameters:
apt_proxy: 192.168.31.204:3142
docker_proxy: 192.168.31.204:5000
- rancher_vm_flavor: m1.small
+ rancher_vm_flavor: m1.large
k8s_vm_flavor: m2.xxlarge
public_net_id: fbe8fd92-6636-4e63-ab28-bb6a5b0888a9
diff --git a/deployment/heat/onap-oom/env/windriver/Integration-Jenkins.env b/deployment/heat/onap-oom/env/windriver/Integration-Jenkins.env
index 846d77b6e..22a5bdeb2 100644
--- a/deployment/heat/onap-oom/env/windriver/Integration-Jenkins.env
+++ b/deployment/heat/onap-oom/env/windriver/Integration-Jenkins.env
@@ -13,7 +13,7 @@ parameters:
apt_proxy: 10.12.5.2:3142
docker_proxy: 10.12.5.2:5000
- rancher_vm_flavor: m1.small
+ rancher_vm_flavor: m1.large
k8s_vm_flavor: m1.xxlarge
public_net_id: 971040b2-7059-49dc-b220-4fab50cb2ad4
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 98c6c5f25..350bd475a 100644
--- a/deployment/heat/onap-oom/env/windriver/Integration-SB-03.env
+++ b/deployment/heat/onap-oom/env/windriver/Integration-SB-03.env
@@ -13,7 +13,7 @@ parameters:
apt_proxy: 10.12.5.2:3142
docker_proxy: 10.12.5.2:5000
- rancher_vm_flavor: m1.small
+ rancher_vm_flavor: m1.large
k8s_vm_flavor: m1.xxlarge
public_net_id: 971040b2-7059-49dc-b220-4fab50cb2ad4
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 ea7aa7ddb..4e6e1cdfd 100644
--- a/deployment/heat/onap-oom/env/windriver/Integration-SB-04.env
+++ b/deployment/heat/onap-oom/env/windriver/Integration-SB-04.env
@@ -13,7 +13,7 @@ parameters:
apt_proxy: 10.12.5.2:3142
docker_proxy: 10.12.5.2:5000
- rancher_vm_flavor: m1.small
+ rancher_vm_flavor: m1.large
k8s_vm_flavor: m1.xxlarge
public_net_id: 971040b2-7059-49dc-b220-4fab50cb2ad4
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 5369182b4..47147ed3a 100644
--- a/deployment/heat/onap-oom/env/windriver/Integration-SB-05.env
+++ b/deployment/heat/onap-oom/env/windriver/Integration-SB-05.env
@@ -13,7 +13,7 @@ parameters:
apt_proxy: 10.12.5.2:3142
docker_proxy: 10.12.5.2:5000
- rancher_vm_flavor: m1.small
+ rancher_vm_flavor: m1.large
k8s_vm_flavor: m1.xxlarge
public_net_id: 971040b2-7059-49dc-b220-4fab50cb2ad4
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
new file mode 120000
index 000000000..850c25544
--- /dev/null
+++ b/deployment/heat/onap-oom/env/windriver/Integration-SB-06-DNS-openrc
@@ -0,0 +1 @@
+../../../../../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-openrc b/deployment/heat/onap-oom/env/windriver/Integration-SB-06-openrc
new file mode 120000
index 000000000..98ea5829a
--- /dev/null
+++ b/deployment/heat/onap-oom/env/windriver/Integration-SB-06-openrc
@@ -0,0 +1 @@
+../../../../../test/ete/labs/windriver/Integration-SB-06-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
new file mode 100644
index 000000000..6cf405386
--- /dev/null
+++ b/deployment/heat/onap-oom/env/windriver/Integration-SB-06.env
@@ -0,0 +1,33 @@
+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
+
+ apt_proxy: 10.12.5.2:3142
+ docker_proxy: 10.12.5.2:5000
+
+ rancher_vm_flavor: m1.large
+ k8s_vm_flavor: m1.xxlarge
+
+ 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
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
new file mode 120000
index 000000000..7e4a3af20
--- /dev/null
+++ b/deployment/heat/onap-oom/env/windriver/Integration-SB-07-DNS-openrc
@@ -0,0 +1 @@
+../../../../../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-openrc b/deployment/heat/onap-oom/env/windriver/Integration-SB-07-openrc
new file mode 120000
index 000000000..87292901c
--- /dev/null
+++ b/deployment/heat/onap-oom/env/windriver/Integration-SB-07-openrc
@@ -0,0 +1 @@
+../../../../../test/ete/labs/windriver/Integration-SB-07-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
new file mode 100644
index 000000000..10b691e89
--- /dev/null
+++ b/deployment/heat/onap-oom/env/windriver/Integration-SB-07.env
@@ -0,0 +1,33 @@
+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
+
+ apt_proxy: 10.12.5.2:3142
+ docker_proxy: 10.12.5.2:5000
+
+ rancher_vm_flavor: m1.large
+ k8s_vm_flavor: m1.xxlarge
+
+ 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
diff --git a/deployment/heat/onap-oom/k8s_vm_entrypoint.sh b/deployment/heat/onap-oom/k8s_vm_entrypoint.sh
index 9118c8e24..d483e73df 100644
--- a/deployment/heat/onap-oom/k8s_vm_entrypoint.sh
+++ b/deployment/heat/onap-oom/k8s_vm_entrypoint.sh
@@ -19,12 +19,12 @@ Acquire::https::Proxy "DIRECT";
EOF
fi
apt-get -y update
-apt-get -y install linux-image-extra-$(uname -r) jq
+apt-get -y install linux-image-extra-$(uname -r) jq make
cd ~
-# install docker 1.12
-curl -s https://releases.rancher.com/install-docker/1.12.sh | sh
+# install docker 17.03
+curl -s https://releases.rancher.com/install-docker/17.03.sh | sh
usermod -aG docker ubuntu
# install kubernetes 1.8.6
@@ -33,9 +33,9 @@ chmod +x ./kubectl
sudo mv ./kubectl /usr/local/bin/kubectl
mkdir ~/.kube
-# install helm 2.3
-wget -q http://storage.googleapis.com/kubernetes-helm/helm-v2.3.0-linux-amd64.tar.gz
-tar -zxvf helm-v2.3.0-linux-amd64.tar.gz
+# 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:
@@ -84,18 +84,6 @@ done
RANCHER_AGENT_CMD=$(jq -r .command token.json)
eval $RANCHER_AGENT_CMD
-# download rancher CLI
-wget -q https://github.com/rancher/cli/releases/download/v0.6.7/rancher-linux-amd64-v0.6.7.tar.xz
-unxz rancher-linux-amd64-v0.6.7.tar.xz
-tar xvf rancher-linux-amd64-v0.6.7.tar
-
-# Clone OOM:
-cd ~
-git clone -b amsterdam http://gerrit.onap.org/r/oom
-
-# 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` oneclick/setenv.bash
KUBETOKEN=$(echo -n 'Basic '$(echo -n "$RANCHER_ACCESS_KEY:$RANCHER_SECRET_KEY" | base64 -w 0) | base64 -w 0)
@@ -124,197 +112,32 @@ EOF
export KUBECONFIG=/root/.kube/config
kubectl config view
-# Update ~/oom/kubernetes/kube2msb/values.yaml kubeMasterAuthToken to use the token from ~/.kube/config
-sed -i "s/kubeMasterAuthToken:.*/kubeMasterAuthToken: $KUBETOKEN/" ~/oom/kubernetes/kube2msb/values.yaml
-
-# Put your onap_key ssh private key in ~/.ssh/onap_key
-
-# Create or edit ~/oom/kubernetes/config/onap-parameters.yaml
-cat > ~/oom/kubernetes/config/onap-parameters.yaml <<EOF
-# For information regarding those parameters, please visit http://onap.readthedocs.io/en/latest/submodules/dcaegen2.git/docs/sections/installation_heat.html
-
-#################
-# COMMON CONFIG #
-#################
-
-# NEXUS
-NEXUS_HTTP_REPO: https://nexus.onap.org/content/sites/raw
-NEXUS_DOCKER_REPO: nexus3.onap.org:10001
-NEXUS_USERNAME: docker
-NEXUS_PASSWORD: docker
-
-# ONAP config
-# Do not change unless you know what you're doing
-DMAAP_TOPIC: "AUTO"
-DEMO_ARTIFACTS_VERSION: "1.1.1"
-
-# ------------------------------------------------#
-# OpenStack Config on which VNFs will be deployed #
-# ------------------------------------------------#
-
-# The four below parameters are only used by Robot.
-# As Robot is able to perform some automated actions,
-# e.g. onboard/distribute/instantiate, it has to be
-# configured with four below parameters (in addition
-# to the OPENSTACK ones).
-# If you don't intend to use Robot for those actions,
-# you can put dummy values, but you will have to provide
-# those values when deploying VNF anyway.
-# --------------------------------------------------
-# This is the OAM Network ID used for internal network by VNFs.
-# You could create 10.10.10.0/24 (256 IPs should be enough) in your cloud instance.
-OPENSTACK_OAM_NETWORK_ID: "__oam_network_id__"
-# This is the public Network ID. Public = external network in OpenStack.
-# Floating IPs will be created and assigned to VNFs from this network,
-# to provide external reachability.
-OPENSTACK_PUBLIC_NETWORK_ID: "__public_net_id__"
-# VM Flavor to be used by VNF.
-OPENSTACK_FLAVOR: "m1.medium"
-# VM image to be used by VNF. Here ubuntu 14.04 is provided.
-OPENSTACK_IMAGE: "__ubuntu_1604_image__"
-
-OPENSTACK_USERNAME: "__openstack_username__"
-OPENSTACK_PASSWORD: "__openstack_api_key__"
-OPENSTACK_TENANT_NAME: "__openstack_tenant_name__"
-OPENSTACK_TENANT_ID: "__openstack_tenant_id__"
-OPENSTACK_REGION: "RegionOne"
-# Either v2.0 or v3
-OPENSTACK_API_VERSION: "v2.0"
-OPENSTACK_KEYSTONE_URL: "__keystone_url__"
-# Don't change this if you don't know what it is
-OPENSTACK_SERVICE_TENANT_NAME: "service"
-
-########
-# DCAE #
-########
-
-# Whether or not to deploy DCAE
-# If set to false, all the parameters below can be left empty or removed
-# If set to false, update ../dcaegen2/values.yaml disableDcae value to true,
-# this is to avoid deploying the DCAE deployments and services.
-DEPLOY_DCAE: "true"
-
-# DCAE Config
-DCAE_DOCKER_VERSION: v1.1.1
-DCAE_VM_BASE_NAME: "dcae"
-
-# ------------------------------------------------#
-# OpenStack Config on which DCAE will be deployed #
-# ------------------------------------------------#
-
-# Whether to have DCAE deployed on the same OpenStack instance on which VNF will be deployed.
-# (e.g. re-use the same config as defined above)
-# If set to true, discard the next config block, else provide the values.
-IS_SAME_OPENSTACK_AS_VNF: "true"
-
-# Fill in the values in below block only if IS_SAME_OPENSTACK_AS_VNF set to "false"
-# ---
-# Either v2.0 or v3
-DCAE_OS_API_VERSION: "v2.0"
-DCAE_OS_KEYSTONE_URL: "__keystone_url__"
-DCAE_OS_USERNAME: ""
-DCAE_OS_PASSWORD: ""
-DCAE_OS_TENANT_NAME: ""
-DCAE_OS_TENANT_ID: ""
-DCAE_OS_REGION: ""
-# ---
-
-# We need to provide the config of the public network here, because the DCAE VMs will be
-# assigned a floating IP on this network so one can access them, to debug for instance.
-# The ID of the public network.
-DCAE_OS_PUBLIC_NET_ID: "__public_net_id__"
-# The name of the public network.
-DCAE_OS_PUBLIC_NET_NAME: "__public_net_name__"
-# This is the private network that will be used by DCAE VMs. The network will be created during the DCAE boostrap process,
-# and will the subnet created will use this CIDR. (/28 provides 16 IPs, DCAE requires 15.)
-DCAE_OS_OAM_NETWORK_CIDR: "10.99.0.0/16"
-# This will be the private ip of the DCAE boostrap VM. This VM is responsible for spinning up the whole DCAE stack (14 VMs total)
-DCAE_IP_ADDR: "10.99.4.1"
-
-# The flavors' name to be used by DCAE VMs
-DCAE_OS_FLAVOR_SMALL: "m1.small"
-DCAE_OS_FLAVOR_MEDIUM: "m1.medium"
-DCAE_OS_FLAVOR_LARGE: "m1.large"
-# The images' name to be used by DCAE VMs
-DCAE_OS_UBUNTU_14_IMAGE: "__ubuntu_1404_image__"
-DCAE_OS_UBUNTU_16_IMAGE: "__ubuntu_1604_image__"
-DCAE_OS_CENTOS_7_IMAGE: "__centos_7_image__"
-
-# This is the keypair that will be created in OpenStack, and that one can use to access DCAE VMs using ssh.
-# The private key needs to be in a specific format so at the end of the process, it's formatted properly
-# when ending up in the DCAE HEAT stack. The best way is to do the following:
-# - copy paste your key
-# - surround it with quote
-# - add \n at the end of each line
-# - escape the result using https://www.freeformatter.com/java-dotnet-escape.html#ad-output
-DCAE_OS_KEY_NAME: "onap_key"
-DCAE_OS_PUB_KEY: "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDKXDgoo3+WOqcUG8/5uUbk81+yczgwC4Y8ywTmuQqbNxlY1oQ0YxdMUqUnhitSXs5S/yRuAVOYHwGg2mCs20oAINrP+mxBI544AMIb9itPjCtgqtE2EWo6MmnFGbHB4Sx3XioE7F4VPsh7japsIwzOjbrQe+Mua1TGQ5d4nfEOQaaglXLLPFfuc7WbhbJbK6Q7rHqZfRcOwAMXgDoBqlyqKeiKwnumddo2RyNT8ljYmvB6buz7KnMinzo7qB0uktVT05FH9Rg0CTWH5norlG5qXgP2aukL0gk1ph8iAt7uYLf1ktp+LJI2gaF6L0/qli9EmVCSLr1uJ38Q8CBflhkh"
-DCAE_OS_PRIVATE_KEY: \"-----BEGIN RSA PRIVATE KEY-----\\n\r\nMIIEpQIBAAKCAQEAylw4KKN/ljqnFBvP+blG5PNfsnM4MAuGPMsE5rkKmzcZWNaE\\n\r\nNGMXTFKlJ4YrUl7OUv8kbgFTmB8BoNpgrNtKACDaz/psQSOeOADCG/YrT4wrYKrR\\n\r\nNhFqOjJpxRmxweEsd14qBOxeFT7Ie42qbCMMzo260HvjLmtUxkOXeJ3xDkGmoJVy\\n\r\nyzxX7nO1m4WyWyukO6x6mX0XDsADF4A6AapcqinoisJ7pnXaNkcjU/JY2Jrwem7s\\n\r\n+ypzIp86O6gdLpLVU9ORR/UYNAk1h+Z6K5Rual4D9mrpC9IJNaYfIgLe7mC39ZLa\\n\r\nfiySNoGhei9P6pYvRJlQki69bid/EPAgX5YZIQIDAQABAoIBAQClDekkhI9ZqseC\\n\r\nqFjPuKaxsizZMg+faJb6WSHLSxzyk1OSWY6F6FklgLeC8HW/fuLNYZyGOYDEsG20\\n\r\nlMqL02Wdiy7OutS3oOS5iyzIf9a90HfFJi706el6RIpvINETcaXCS0T8tQrcS1Rd\\n\r\nKqTaBRC6HXJGAPbBcvw3pwQSdskatU6a/Kt2a3x6DsqqinQcgEB/SbrDaJCUX9sb\\n\r\nF2HVUwdq7aZK1Lk0ozr1FID9mrhjwWuQ6XC+vjG0FqtyXeMpR5iaQ73hex3FXQ8z\\n\r\nOjkFbMwuHWSh1DSx70r5yFrrBqwQKnMsBqx4QDRf3fIENUnWviaL+n+gwcXA07af\\n\r\n4kaNUFUtAoGBAPuNNRAGhZnyZ9zguns9PM56nmeMUikV5dPN2DTbQb79cpfV+7pC\\n\r\n6PeSH/dTKFLz62d6qAM2EsNXQvewf8fipBVBRPsRqKOv+uepd01dHNy62I5B+zRm\\n\r\nbe9Kbe+EN60qdzvyPM+2hV6CnvGv1dirimS9pu6RrxD2Rmz1ectnJE+rAoGBAM3w\\n\r\nUbSEemyZ6EKjck2RfdipzY0MNBnIZ2cUqHh8mmPXjdTLzpXb9vmPbHb01Qwo8MP+\\n\r\ngMnTbTBOzyNAaHdIrCO9FHW6C85j3ot5Yzcr+EcBVcua+7KHU0Sgn44JNH8DisJ7\\n\r\nY63UP/1Xb4d1/QvHfxYy3WOvvRdVZ7pPo8JNX95jAoGAIe5CIg8/JizUZa7KeKUh\\n\r\n9pgDleQPkQsrHQ6/AyIwFBsLwf9THSS5V+uV9D57SfUs46Bf2U8J6N90YQSlt8iS\\n\r\naWuManFPVgT+yxDIzt6obf2mCEpOIBtQ6N4ZRh2HhQwdWTCrkzkDdGQaHG+jYL6C\\n\r\nxGPwiG2ON7OAfGIAM7eN5lECgYEAhoRLWlaOgRGnHKAWsYQvZ67CjTdDcPPuVu6v\\n\r\nfMQnNMA/7JeTwV+E205L0wfpgZ/cZKmBBlQMJlnUA3q2wfO+PTnse1mjDJU/cGtB\\n\r\n22/lJLxChlQdxGeQhGtGzUhF+hEeOhrO6WSSx7CtMRZoy6Dr6lwfMFZCdVNcBd6v\\n\r\nYOOZk3ECgYEAseUKGb6E80XTVVNziyuiVbQCsI0ZJuRfqMZ2IIDQJU9u6AnGAway\\n\r\nitqHbkGsmDT+4HUz01+1JKnnw42RdSrHdU/LaOonD+RIGqe2x800QXzqASKLdCXr\\n\r\ny7RoiFqJtkdFQykzJemA+xOXvHLgKi/MXFsU90PCD0VJKLj8vwpX78Y=\\n\r\n-----END RSA PRIVATE KEY-----\\n\r\n\"
-
-# This below settings allows one to configure the /etc/resolv.conf nameserver resolution for all the DCAE VMs.
-# -
-# In the HEAT setup, it's meant to be a DNS list, as the HEAT setup deploys a DNS Server VM in addition to DNS Designate
-# and this DNS Server is setup to forward request to the DNS Designate backend when it cannot resolve, hence the
-# DNS_FORWARDER config here. The DCAE Boostrap requires both inputs, even though they are now similar, we have to pass
-# them.
-# -
-# ATTENTION: Assumption is made the DNS Designate backend is configure to forward request to a public DNS (e.g. 8.8.8.8)
-# -
-# Put the IP of the DNS Designate backend (e.g. the OpenStack IP supporting DNS Designate)
-DNS_IP: "__dns_forwarder__"
-DNS_FORWARDER: "__dns_forwarder__"
-
-# Public DNS - not used but required by the DCAE boostrap container
-EXTERNAL_DNS: "__external_dns__"
-
-# DNS domain for the DCAE VMs
-DCAE_DOMAIN: "dcaeg2.onap.org"
-
-# Proxy DNS Designate. This means DCAE will run in an instance not support Designate, and Designate will be provided by another instance.
-# Set to true if you wish to use it
-DNSAAS_PROXY_ENABLE: "__dnsaas_proxy_enable__"
-# Provide this only if DNSAAS_PROXY_ENABLE set to true. The IP has to be the IP of one of the K8S hosts.
-# e.g. http://10.195.197.164/api/multicloud-titanium_cloud/v0/pod25_RegionOne/identity/v2.0
-DCAE_PROXIED_KEYSTONE_URL: "http://__k8s_ip_addr__/__dnsaas_proxied_keystone_url_path__"
-
-# -----------------------------------------------------#
-# OpenStack Config on which DNS Designate is supported #
-# -----------------------------------------------------#
-
-# If this is the same OpenStack used for the VNF or DCAE, please re-enter the values here.
-
-DNSAAS_API_VERSION: "v3"
-DNSAAS_REGION: "RegionOne"
-DNSAAS_KEYSTONE_URL: "__dnsaas_keystone_url__"
-DNSAAS_TENANT_ID: "__dnsaas_tenant_id__"
-DNSAAS_TENANT_NAME: "__dnsaas_tenant_name__"
-DNSAAS_USERNAME: "__dnsaas_username__"
-DNSAAS_PASSWORD: "__dnsaas_password__"
-EOF
-cat ~/oom/kubernetes/config/onap-parameters.yaml
-
-
# 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
-# Source the environment file:
-cd ~/oom/kubernetes/oneclick/
-source setenv.bash
-# run the config pod creation
-cd ~/oom/kubernetes/config
-./createConfig.sh -n onap
+# Install using OOM
+export HOME=/root
+
+# Clone OOM:
+cd ~
+git clone -b master http://gerrit.onap.org/r/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
-# Wait until the config container completes.
-sleep 20
-until [ $(kubectl get pods --namespace onap -a | tail -n +2 | grep -c Completed) -eq 1 ]; do
- sleep 10
-done
-# version control the config to see what's happening
+# 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"
@@ -322,11 +145,19 @@ git config user.name "root"
git add -A
git commit -m "initial commit"
-cat /dockerdata-nfs/onap/dcaegen2/heat/onap_dcae.env
-
# Run ONAP:
-cd ~/oom/kubernetes/oneclick/
-./createAll.bash -n 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
# Check ONAP status:
sleep 3
diff --git a/deployment/heat/onap-oom/onap-oom.yaml b/deployment/heat/onap-oom/onap-oom.yaml
index 760a9575d..0a40ee224 100644
--- a/deployment/heat/onap-oom/onap-oom.yaml
+++ b/deployment/heat/onap-oom/onap-oom.yaml
@@ -238,6 +238,7 @@ resources:
__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 }
diff --git a/deployment/heat/onap-oom/rancher_vm_entrypoint.sh b/deployment/heat/onap-oom/rancher_vm_entrypoint.sh
index ac704f106..12ed51f13 100644
--- a/deployment/heat/onap-oom/rancher_vm_entrypoint.sh
+++ b/deployment/heat/onap-oom/rancher_vm_entrypoint.sh
@@ -19,4 +19,4 @@ fi
apt-get -y update
apt-get -y install docker.io
usermod -aG docker ubuntu
-docker run --restart unless-stopped -d -p 8080:8080 rancher/server:v1.6.10
+docker run --restart unless-stopped -d -p 8080:8080 rancher/server:v1.6.14
diff --git a/deployment/heat/onap-oom/scripts/deploy.sh b/deployment/heat/onap-oom/scripts/deploy.sh
index de33b08e0..c81e65c8b 100755
--- a/deployment/heat/onap-oom/scripts/deploy.sh
+++ b/deployment/heat/onap-oom/scripts/deploy.sh
@@ -38,13 +38,14 @@ fi
ssh-keygen -R $K8S_IP
for n in $(seq 1 10); do
- timeout 2m ssh -o StrictHostKeychecking=no -i ~/.ssh/onap_key ubuntu@$K8S_IP 'sudo su -l root -c "/root/oom/kubernetes/robot/ete-k8s.sh health"'
+ timeout 2m 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"'
RESULT=$?
if [ $RESULT -eq 0 ]; then
break
fi
sleep 15m
done
-LOG_DIR=$(ssh -o StrictHostKeychecking=no -i ~/.ssh/onap_key ubuntu@$K8S_IP "ls -1t /dockerdata-nfs/onap/robot/eteshare/logs | head -1")
-rsync -e "ssh -i ~/.ssh/onap_key" -avPz ubuntu@$K8S_IP:/dockerdata-nfs/onap/robot/eteshare/logs/${LOG_DIR}/ $WORKSPACE/archives/
+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\"")
+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/test/csit/plans/aaf/aafapi/setup.sh b/test/csit/plans/aaf/aafapi/setup.sh
index bfaff925c..4a312704f 100644
--- a/test/csit/plans/aaf/aafapi/setup.sh
+++ b/test/csit/plans/aaf/aafapi/setup.sh
@@ -30,24 +30,24 @@ cd $WORKSPACE/archives/aafcsit
#unset http_proxy https_proxy
git clone --depth 1 http://gerrit.onap.org/r/aaf/authz -b master
git pull
-cd $WORKSPACE/archives/aafcsit/authz/authz-service/src/main/resources/docker-compose
+cd $WORKSPACE/archives/aafcsit/authz/auth/auth-service/src/main/resources/docker-compose
pwd
-chmod -R 777 $WORKSPACE/archives/aafcsit/authz/authz-service/src/main/resources/docker-compose
+chmod -R 777 $WORKSPACE/archives/aafcsit/authz/auth/auth-service/src/main/resources/docker-compose
# start aaf containers with docker compose and configuration from docker-compose.yml
docker-compose up -d
# Wait for initialization of Docker contaienr for AAF & Cassandra
-for i in {1..50}; do
+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) ]
+ [ $(docker inspect --format '{{ .State.Running }}' dockercompose_aaf_container_1) ]
then
- echo "AAF Service Running"
- break
- else
- echo sleep $i
+ echo "AAF Service Running"
+ break
+ else
+ echo sleep $i
sleep $i
fi
done
@@ -62,11 +62,11 @@ echo CASSANDRA_IP=${CASSANDRA_IP}
# Wait for initialization of docker services
-for i in {1..50}; do
- curl -sS -m 1 ${AAF_IP}:8101 && break
+for i in {1..12}; do
+ curl -sS -m 1 ${AAF_IP}:8101 && break
echo sleep $i
sleep $i
done
#Pass any variables required by Robot test suites in ROBOT_VARIABLES
-ROBOT_VARIABLES="-v AAF_IP:${AAF_IP}"
+ROBOT_VARIABLES="-v AAF_IP:${AAF_IP}"
diff --git a/test/csit/plans/aaf/sms-test-plan/setup.sh b/test/csit/plans/aaf/sms-test-plan/setup.sh
new file mode 100755
index 000000000..9f77b698e
--- /dev/null
+++ b/test/csit/plans/aaf/sms-test-plan/setup.sh
@@ -0,0 +1,71 @@
+#!/bin/bash
+#
+# Copyright 2018 Intel Corporation
+#
+# 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.
+#
+
+# Not sure why this is needed.
+source ${SCRIPTS}/common_functions.sh
+
+CONFIG_FILE=$(pwd)/config/smsconfig.json
+
+mkdir -p $(pwd)/config
+
+docker login -u docker -p docker nexus3.onap.org:10001
+docker pull nexus3.onap.org:10001/onap/aaf/sms
+docker pull docker.io/vault:0.9.5
+
+#
+# Running vault in dev server mode here for CSIT
+# In HELM it runs in production mode
+#
+docker run -e "VAULT_DEV_ROOT_TOKEN_ID=aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee" \
+ -e SKIP_SETCAP=true \
+ --name vault -d -p 8200:8200 vault:0.9.5
+
+SMSDB_IP=$(docker inspect --format='{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' vault)
+cat << EOF > $CONFIG_FILE
+{
+ "cafile": "auth/selfsignedca.pem",
+ "servercert": "auth/server.cert",
+ "serverkey": "auth/server.key",
+
+ "smsdbaddress": "http://$SMSDB_IP:8200",
+ "vaulttoken": "aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee",
+ "disable_tls": true
+}
+EOF
+
+cat $CONFIG_FILE
+
+docker run --workdir /sms -v $CONFIG_FILE:/sms/smsconfig.json \
+ --name sms -d -p 10443:10443 nexus3.onap.org:10001/onap/aaf/sms
+
+SMS_IP=$(docker inspect --format='{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' sms)
+
+echo "###### WAITING FOR ALL CONTAINERS TO COME UP"
+sleep 20
+for i in {1..20}; do
+ curl -sS -m 1 http://${SMSDB_IP}:8200/v1/sys/seal-status && break
+ echo sleep $i
+ sleep $i
+done
+
+#
+# add here all ROBOT_VARIABLES settings
+#
+echo "# sms robot variables settings";
+ROBOT_VARIABLES="-v SMS_HOSTNAME:http://${SMS_IP} -v SMS_PORT:10443"
+
+echo ${ROBOT_VARIABLES}
diff --git a/test/csit/plans/aaf/sms-test-plan/teardown.sh b/test/csit/plans/aaf/sms-test-plan/teardown.sh
new file mode 100644
index 000000000..d6fa32924
--- /dev/null
+++ b/test/csit/plans/aaf/sms-test-plan/teardown.sh
@@ -0,0 +1,25 @@
+#!/bin/bash
+#
+# Copyright 2018 Intel Corporation
+#
+# 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.
+#
+
+docker cp sms:/sms/sms.log .
+cat sms.log
+rm sms.log
+rm -rf config
+docker stop sms vault
+docker rm sms vault
+docker rmi nexus3.onap.org:10001/onap/aaf/sms
+docker rmi docker.io/vault:0.9.5
diff --git a/test/csit/plans/aaf/sms-test-plan/testplan.txt b/test/csit/plans/aaf/sms-test-plan/testplan.txt
new file mode 100644
index 000000000..c2b3b7b1b
--- /dev/null
+++ b/test/csit/plans/aaf/sms-test-plan/testplan.txt
@@ -0,0 +1,3 @@
+# Test suites are relative paths under [integration.git]/test/csit/tests/.
+# Place the suites in run order.
+aaf/aaf-sms-suite \ No newline at end of file
diff --git a/test/csit/plans/aai/esr-server/setup.sh b/test/csit/plans/aai/esr-server/setup.sh
index a2cfa5e8d..42d9676d7 100644
--- a/test/csit/plans/aai/esr-server/setup.sh
+++ b/test/csit/plans/aai/esr-server/setup.sh
@@ -1,6 +1,6 @@
#!/bin/bash
#
-# Copyright 2017 ZTE Corporation.
+# Copyright 2017-2018 ZTE Corporation.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
diff --git a/test/csit/plans/aai/resources/aai-resources/appconfig/aai_keystore b/test/csit/plans/aai/resources/aai-resources/appconfig/aai_keystore
new file mode 100644
index 000000000..1ddef0c9b
--- /dev/null
+++ b/test/csit/plans/aai/resources/aai-resources/appconfig/aai_keystore
Binary files differ
diff --git a/test/csit/plans/aai/resources/aai-resources/appconfig/aaiconfig.properties b/test/csit/plans/aai/resources/aai-resources/appconfig/aaiconfig.properties
new file mode 100644
index 000000000..435507a81
--- /dev/null
+++ b/test/csit/plans/aai/resources/aai-resources/appconfig/aaiconfig.properties
@@ -0,0 +1,119 @@
+#
+# ============LICENSE_START=======================================================
+# org.onap.aai
+# ================================================================================
+# Copyright © 2017 AT&T Intellectual Property. All rights reserved.
+# ================================================================================
+# 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.
+# ============LICENSE_END=========================================================
+#
+# ECOMP is a trademark and service mark of AT&T Intellectual Property.
+#
+
+####################################################################
+# REMEMBER TO THINK ABOUT ENVIRONMENTAL DIFFERENCES AND CHANGE THE
+# TEMPLATE AND *ALL* DATAFILES
+####################################################################
+
+####################################################################
+# REMEMBER TO THINK ABOUT ENVIRONMENTAL DIFFERENCES AND CHANGE THE
+# TEMPLATE AND *ALL* DATAFILES
+####################################################################
+
+aai.config.checktime=1000
+
+# this could come from siteconfig.pl?
+aai.config.nodename=AutomaticallyOverwritten
+
+
+
+aai.auth.cspcookies_on=false
+aai.dbmodel.filename=ex5.json
+
+aai.server.url.base=https://aai.api.simpledemo.onap.org:8443/aai/
+aai.server.url=https://aai.api.simpledemo.onap.org:8443/aai/v11/
+aai.global.callback.url=https://aai.api.simpledemo.onap.org:8443/aai/
+
+aai.tools.enableBasicAuth=true
+aai.tools.username=AAI
+aai.tools.password=AAI
+
+aai.truststore.filename=aai_keystore
+aai.truststore.passwd.x=OBF:1vn21ugu1saj1v9i1v941sar1ugw1vo0
+aai.keystore.filename=aai_keystore
+aai.keystore.passwd.x=OBF:1vn21ugu1saj1v9i1v941sar1ugw1vo0
+
+
+aai.notification.current.version=v11
+aai.notificationEvent.default.status=UNPROCESSED
+aai.notificationEvent.default.eventType=AAI-EVENT
+aai.notificationEvent.default.domain=dev
+aai.notificationEvent.default.sourceName=aai
+aai.notificationEvent.default.sequenceNumber=0
+aai.notificationEvent.default.severity=NORMAL
+aai.notificationEvent.default.version=v11
+# This one lets us enable/disable resource-version checking on updates/deletes
+aai.resourceversion.enableflag=true
+aai.logging.maxStackTraceEntries=10
+aai.default.api.version=v11
+
+
+
+# Used by Model-processing code
+aai.model.delete.sleep.per.vtx.msec=500
+aai.model.query.resultset.maxcount=50
+aai.model.query.timeout.sec=90
+
+# Used by Data Grooming
+aai.grooming.default.max.file=150
+aai.grooming.default.sleep.minutes=7
+
+aai.model.proc.max.levels=50
+aai.edgeTag.proc.max.levels=50
+
+# for transaction log
+aai.logging.hbase.interceptor=true
+aai.logging.hbase.enabled=true
+aai.logging.hbase.logrequest=true
+aai.logging.hbase.logresponse=true
+
+# for gremlin server
+aai.server.rebind=g
+hbase.table.name=aailogging.dev
+hbase.table.timestamp.format=YYYYMMdd-HH:mm:ss:SSS
+hbase.zookeeper.quorum=localhost
+hbase.zookeeper.property.clientPort=2181
+hbase.zookeeper.znode.parent=/hbase
+
+aai.logging.trace.enabled=true
+aai.logging.trace.logrequest=false
+aai.logging.trace.logresponse=false
+
+aai.transaction.logging=true
+aai.transaction.logging.get=false
+aai.transaction.logging.post=false
+
+#timeout for crud enabled flag
+aai.crud.timeoutenabled=true
+
+#timeout app specific -1 to bypass for that app id, a whole number to override the timeout with that value (in ms)
+aai.crud.timeout.appspecific=JUNITTESTAPP1,1|JUNITTESTAPP2,-1|DCAE-CCS,-1|DCAES,-1|AAIRctFeed,-1|NewvceCreator,-1|IANewvceCreator,-1|AAI-CSIOVALS,-1
+
+#default timeout limit added for crud if not overridden (in ms)
+aai.crud.timeoutlimit=100000
+#limit set for bulk consumer APIS
+aai.bulkconsumer.payloadlimit=30
+
+#uncomment and use header X-OverrideLimit with the value to override the bulk api limit
+#aai.bulkconsumer.payloadoverride=E6F04B93462CB5B0EDF41C05A9DDF5C3FE59748F
+aai.bulkconsumer.payloadoverride=false
diff --git a/test/csit/plans/aai/resources/aai-resources/appconfig/application.properties b/test/csit/plans/aai/resources/aai-resources/appconfig/application.properties
new file mode 100644
index 000000000..b9c51eaf2
--- /dev/null
+++ b/test/csit/plans/aai/resources/aai-resources/appconfig/application.properties
@@ -0,0 +1,72 @@
+# The following info parameters are being referenced by ajsc6
+info.build.artifact=aai-resources
+info.build.name=resources
+info.build.description=Resources Microservice
+info.build.version=1.2.0
+
+spring.application.name=aai-resources
+spring.jersey.type=filter
+
+server.contextPath=/
+spring.autoconfigure.exclude=org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration,org.springframework.boot.autoconfigure.orm.jpa.HibernateJpaAutoConfiguration
+
+spring.profiles.active=production,dmaap
+#The max number of active threads in this pool
+server.tomcat.max-threads=200
+#The minimum number of threads always kept alive
+server.tomcat.min-Spare-Threads=25
+#The number of milliseconds before an idle thread shutsdown, unless the number of active threads are less or equal to minSpareThreads
+server.tomcat.max-idle-time=60000
+
+
+#Add this properties only if you want to change the URL, AJSC Framework interceptors will intercept
+#com.att.ajsc.common.interceptors.PreInterceptor.url=/**
+#com.att.ajsc.common.interceptors.PostInterceptor.url=/**
+
+#Servlet context parameters
+server.context_parameters.p-name=value #context parameter with p-name as key and value as value.
+kubernetes.namespace=org-onap-aai
+
+# If you get an application startup failure that the port is already taken
+# If thats not it, please check if the key-store file path makes sense
+server.local.startpath=aai-resources/src/main/resources/
+server.basic.auth.location=${server.local.startpath}etc/auth/realm.properties
+
+server.port=8447
+server.ssl.enabled-protocols=TLSv1.1,TLSv1.2
+server.ssl.key-store=${server.local.startpath}etc/auth/aai_keystore
+server.ssl.key-store-password=password(OBF:1vn21ugu1saj1v9i1v941sar1ugw1vo0)
+server.ssl.trust-store=${server.local.startpath}etc/auth/aai_keystore
+server.ssl.trust-store-password=password(OBF:1vn21ugu1saj1v9i1v941sar1ugw1vo0)
+server.ssl.client-auth=want
+server.ssl.key-store-type=JKS
+
+# JMS bind address host port
+jms.bind.address=tcp://localhost:61647
+dmaap.ribbon.eureka.enabled=false
+dmaap.ribbon.listOfServers=mr.api.simpledemo.onap.org:3904
+# Number of milliseconds to wait before making ping requests again
+dmaap.ribbon.ServerListRefreshInterval=75000
+dmaap.ribbon.NFLoadBalancerPingInterval=75000
+dmaap.ribbon.NFLoadBalancerRuleClassName=com.netflix.loadbalancer.AvailabilityFilteringRule
+dmaap.ribbon.NFLoadBalancerPingClassName=org.onap.aai.config.HttpPingImpl
+dmaap.ribbon.EnableMarkingServerDownOnReachingFailureLimit=true
+dmaap.ribbon.ServerDownFailureLimit=1
+# This needs to be verified but it seems that adding this property should automatically
+# Make the dmaap client change the url from http to https depending on the server
+dmaap.ribbon.securePorts=3905
+
+# Custom Dmaap Specific Configuration
+dmaap.ribbon.username=
+dmaap.ribbon.password=
+dmaap.ribbon.health.endpoint=/topics/AAI-EVENT
+# Number of seconds to wait for the ping to work and might need to increase this if the pings are all failing
+dmaap.ribbon.pingport.timeout=3
+
+niws.loadbalancer.dmaap.filterCircuitTripped=true
+niws.loadbalancer.dmaap.connectionFailureCountThreshold=3
+niws.loadbalancer.dmaap.circuitTripMaxTimeoutSeconds=180
+#dmaap.ribbon.retryableStatusCodes=404,503
+#dmaap.ribbon.retryableStatusCodes.MaxAutoRetriesNextServer=2
+#dmaap.ribbon.retryableStatusCodes.MaxAutoRetries=2
+#dmaap.ribbon.retryableStatusCodes.OkToRetryOnAllOperations=true
diff --git a/test/csit/plans/aai/resources/aai-resources/appconfig/janusgraph-cached.properties b/test/csit/plans/aai/resources/aai-resources/appconfig/janusgraph-cached.properties
new file mode 100644
index 000000000..c2110f77c
--- /dev/null
+++ b/test/csit/plans/aai/resources/aai-resources/appconfig/janusgraph-cached.properties
@@ -0,0 +1,43 @@
+#
+# ============LICENSE_START=======================================================
+# org.onap.aai
+# ================================================================================
+# Copyright © 2017 AT&T Intellectual Property. All rights reserved.
+# ================================================================================
+# 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.
+# ============LICENSE_END=========================================================
+#
+# ECOMP is a trademark and service mark of AT&T Intellectual Property.
+#
+
+query.fast-property=true
+query.smart-limit=false
+
+# the following parameters are not reloaded automatically and require a manual bounce
+storage.backend=cassandra
+storage.hostname=aai.hbase.simpledemo.onap.org
+
+storage.cassandra.keyspace=aaigraph
+
+#schema.default=none
+storage.lock.wait-time=300
+storage.hbase.table=aaigraph-dev1.dev
+storage.hbase.ext.zookeeper.znode.parent=/hbase
+#caching on
+cache.db-cache = true
+cache.db-cache-clean-wait = 20
+cache.db-cache-time = 180000
+cache.db-cache-size = 0.3
+
+#load graphson file on startup
+load.snapshot.file=false
diff --git a/test/csit/plans/aai/resources/aai-resources/appconfig/janusgraph-realtime.properties b/test/csit/plans/aai/resources/aai-resources/appconfig/janusgraph-realtime.properties
new file mode 100644
index 000000000..4791431a1
--- /dev/null
+++ b/test/csit/plans/aai/resources/aai-resources/appconfig/janusgraph-realtime.properties
@@ -0,0 +1,40 @@
+#
+# ============LICENSE_START=======================================================
+# org.onap.aai
+# ================================================================================
+# Copyright © 2017 AT&T Intellectual Property. All rights reserved.
+# ================================================================================
+# 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.
+# ============LICENSE_END=========================================================
+#
+# ECOMP is a trademark and service mark of AT&T Intellectual Property.
+#
+
+query.fast-property=true
+query.smart-limit=false
+
+# the following parameters are not reloaded automatically and require a manual bounce
+storage.backend=cassandra
+storage.hostname=aai.hbase.simpledemo.onap.org
+
+storage.cassandra.keyspace=aaigraph
+
+#schema.default=none
+storage.lock.wait-time=300
+storage.hbase.table=aaigraph-dev1.dev
+storage.hbase.ext.zookeeper.znode.parent=/hbase
+# Setting db-cache to false ensure the fastest propagation of changes across servers
+cache.db-cache = false
+
+#load graphson file on startup
+load.snapshot.file=false
diff --git a/test/csit/plans/aai/resources/aai-resources/appconfig/localhost-access-logback.xml b/test/csit/plans/aai/resources/aai-resources/appconfig/localhost-access-logback.xml
new file mode 100644
index 000000000..a318796c5
--- /dev/null
+++ b/test/csit/plans/aai/resources/aai-resources/appconfig/localhost-access-logback.xml
@@ -0,0 +1,62 @@
+<!--
+
+ ============LICENSE_START=======================================================
+ org.onap.aai
+ ================================================================================
+ Copyright © 2017 AT&T Intellectual Property. All rights reserved.
+ ================================================================================
+ 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.
+ ============LICENSE_END=========================================================
+
+ ECOMP is a trademark and service mark of AT&T Intellectual Property.
+
+-->
+<configuration>
+ <property name="AJSC_HOME" value="${AJSC_HOME:-.}" />
+ <appender name="ACCESS"
+ class="ch.qos.logback.core.rolling.RollingFileAppender">
+ <file>${AJSC_HOME}/logs/ajsc-jetty/localhost_access.log</file>
+ <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
+ <fileNamePattern>${AJSC_HOME}/logs/ajsc-jetty/localhost_access.log.%d{yyyy-MM-dd}
+ </fileNamePattern>
+ </rollingPolicy>
+ <encoder class="org.onap.aai.logging.CustomLogPatternLayoutEncoder">
+ <Pattern>%a %u %z [%t] "%m %U%q" %s %b %y %i{X-TransactionId} %i{X-FromAppId} %i{X-Forwarded-For} %i{X-AAI-SSL-Client-CN} %i{X-AAI-SSL-Client-OU} %i{X-AAI-SSL-Client-O} %i{X-AAI-SSL-Client-L} %i{X-AAI-SSL-Client-ST} %i{X-AAI-SSL-Client-C} %i{X-AAI-SSL-Client-NotBefore} %i{X-AAI-SSL-Client-NotAfter} %i{X-AAI-SSL-Client-DN} %D</Pattern>
+ </encoder>
+ </appender>
+ <appender-ref ref="ACCESS" />
+</configuration>
+
+<!--
+%a - Remote IP address
+%A - Local IP address
+%b - Bytes sent, excluding HTTP headers, or '-' if no bytes were sent
+%B - Bytes sent, excluding HTTP headers
+%h - Remote host name
+%H - Request protocol
+%l - Remote logical username from identd (always returns '-')
+%m - Request method
+%p - Local port
+%q - Query string (prepended with a '?' if it exists, otherwise an empty string
+%r - First line of the request
+%s - HTTP status code of the response
+%S - User session ID
+%t - Date and time, in Common Log Format format
+%u - Remote user that was authenticated
+%U - Requested URL path
+%v - Local server name
+%I - current request thread name (can compare later with stacktraces)
+
+%z - Custom pattern that parses the cert for the subject
+%y - Custom pattern determines rest or dme2
+ --> \ No newline at end of file
diff --git a/test/csit/plans/aai/resources/aai-resources/appconfig/logback.xml b/test/csit/plans/aai/resources/aai-resources/appconfig/logback.xml
new file mode 100644
index 000000000..ee7ee61a6
--- /dev/null
+++ b/test/csit/plans/aai/resources/aai-resources/appconfig/logback.xml
@@ -0,0 +1,391 @@
+<!--
+
+ ============LICENSE_START=======================================================
+ org.onap.aai
+ ================================================================================
+ Copyright © 2017 AT&T Intellectual Property. All rights reserved.
+ ================================================================================
+ 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.
+ ============LICENSE_END=========================================================
+
+ ECOMP is a trademark and service mark of AT&T Intellectual Property.
+
+-->
+<configuration scan="true" scanPeriod="60 seconds" debug="false">
+ <statusListener class="ch.qos.logback.core.status.NopStatusListener" />
+
+ <property resource="application.properties" />
+
+ <property name="namespace" value="aai-resources"/>
+
+ <property name="AJSC_HOME" value="${AJSC_HOME:-.}" />
+ <jmxConfigurator />
+ <property name="logDirectory" value="${AJSC_HOME}/logs" />
+ <property name="eelfLogPattern" value="%ecompStartTime|%date{yyyy-MM-dd'T'HH:mm:ss.SSSZ, UTC}|%X{requestId}|%X{serviceInstanceId}|%-10t|%X{serverName}|%X{serviceName}|%X{partnerName}|%X{statusCode}|%X{responseCode}|%replace(%replace(%X{responseDescription}){'\\|', '!'}){'\r|\n', '^'}|%X{instanceUUID}|%level|%X{severity}|%X{serverIpAddress}|%ecompElapsedTime|%X{server}|%X{clientIpAddress}|%eelfClassOfCaller|%X{unused}|%X{processKey}|%X{customField1}|%X{customField2}|%X{customField3}|%X{customField4}|co=%X{component}:%replace(%replace(%m){'\\|', '!'}){'\r|\n', '^'}%n"/>
+ <property name="eelfAuditLogPattern" value="%ecompStartTime|%date{yyyy-MM-dd'T'HH:mm:ss.SSSZ, UTC}|%X{requestId}|%X{serviceInstanceId}|%-10t|%X{serverName}|%X{serviceName}|%X{partnerName}|%X{statusCode}|%X{responseCode}|%replace(%replace(%X{responseDescription}){'\\|', '!'}){'\r|\n|\r\n', '^'}|%X{instanceUUID}|%level|%X{severity}|%X{serverIpAddress}|%ecompElapsedTime|%X{server}|%X{clientIpAddress}|%eelfClassOfCaller|%X{unused}|%X{processKey}|%X{customField1}|%X{customField2}|%X{customField3}|%X{customField4}|co=%X{component}:%replace(%replace(%m){'\\|', '!'}){'\r|\n', '^'}%n"/>
+ <property name="eelfMetricLogPattern" value="%ecompStartTime|%date{yyyy-MM-dd'T'HH:mm:ss.SSSZ, UTC}|%X{requestId}|%X{serviceInstanceId}|%-10t|%X{serverName}|%X{serviceName}|%X{partnerName}|%X{targetEntity}|%X{targetServiceName}|%X{statusCode}|%X{responseCode}|%replace(%replace(%X{responseDescription}){'\\|', '!'}){'\r|\n', '^'}|%X{instanceUUID}|%level|%X{severity}|%X{serverIpAddress}|%ecompElapsedTime|%X{server}|%X{clientIpAddress}|%eelfClassOfCaller|%X{unused}|%X{processKey}|%X{targetVirtualEntity}|%X{customField1}|%X{customField2}|%X{customField3}|%X{customField4}|co=%X{component}:%replace(%replace(%m){'\\|', '!'}){'\r|\n', '^'}%n"/>
+ <!-- <property name="eelfErrorLogPattern" value="%ecompStartTime|%X{requestId}|%-10t|%X{serviceName}|%X{partnerName}|%X{targetEntity}|%X{targetServiceName}|%ecompErrorCategory|%X{responseCode}|%replace(%replace(%X{responseDescription}){'\\|', '!'}){'\r|\n|\r\n', '^'}|co=%X{component}:%replace(%replace(%m){'\\|', '!'}){'\r|\n', '^'}%n"/> -->
+ <property name="eelfErrorLogPattern" value="%ecompStartTime|%X{requestId}|%-10t|%X{serviceName}|%X{partnerName}|%X{targetEntity}|%X{targetServiceName}|%ecompErrorCategory|%ecompResponseCode|%ecompResponseDescription|co=%X{component}:%replace(%replace(%m){'\\|', '!'}){'\r|\n', '^'}%n"/>
+ <property name="eelfTransLogPattern" value="%ecompStartTime|%date{yyyy-MM-dd'T'HH:mm:ss.SSSZ, UTC}|%X{requestId}|%X{serviceInstanceId}|%-10t|%X{serverName}|%X{serviceName}|%X{partnerName}|%X{statusCode}|%X{responseCode}|%replace(%replace(%X{responseDescription}){'\\|', '!'}){'\r|\n', '^'}|%X{instanceUUID}|%level|%X{severity}|%X{serverIpAddress}|%ecompElapsedTime|%X{server}|%X{clientIpAddress}|%eelfClassOfCaller|%X{unused}|%X{processKey}|%X{customField1}|%X{customField2}|%X{customField3}|%X{customField4}|co=%X{partnerName}:%m%n"/>
+
+ <conversionRule conversionWord="clr" converterClass="org.springframework.boot.logging.logback.ColorConverter" />
+ <conversionRule conversionWord="wex" converterClass="org.springframework.boot.logging.logback.WhitespaceThrowableProxyConverter" />
+ <conversionRule conversionWord="wEx" converterClass="org.springframework.boot.logging.logback.ExtendedWhitespaceThrowableProxyConverter" />
+ <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
+ <encoder>
+ <pattern>
+ %clr(%d{yyyy-MM-dd HH:mm:ss.SSS}){faint} %clr(${LOG_LEVEL_PATTERN:-%5p}) %clr(${PID:- }){magenta} %clr(---){faint} %clr([%15.15t]){faint} %clr(%-40.40logger{39}){cyan} %clr(:){faint} %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}
+ </pattern>
+ </encoder>
+ </appender>
+
+ <appender name="SANE" class="ch.qos.logback.core.rolling.RollingFileAppender">
+ <file>${logDirectory}/rest/sane.log</file>
+ <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
+ <fileNamePattern>${logDirectory}/rest/sane.log.%d{yyyy-MM-dd}</fileNamePattern>
+ </rollingPolicy>
+ <encoder>
+ <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{1024} - %msg%n
+ </pattern>
+ </encoder>
+ </appender>
+
+ <appender name="asyncSANE" class="ch.qos.logback.classic.AsyncAppender">
+ <queueSize>1000</queueSize>
+ <includeCallerData>true</includeCallerData>
+ <appender-ref ref="SANE" />
+ </appender>
+
+ <appender name="METRIC"
+ class="ch.qos.logback.core.rolling.RollingFileAppender">
+ <filter class="ch.qos.logback.classic.filter.LevelFilter">
+ <level>INFO</level>
+ <onMatch>ACCEPT</onMatch>
+ <onMismatch>DENY</onMismatch>
+ </filter>
+ <file>${logDirectory}/rest/metrics.log</file>
+ <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
+ <fileNamePattern>${logDirectory}/rest/metrics.log.%d{yyyy-MM-dd}
+ </fileNamePattern>
+ </rollingPolicy>
+ <encoder class="org.onap.aai.logging.EcompEncoder">
+ <pattern>${eelfMetricLogPattern}</pattern>
+ </encoder>
+ </appender>
+ <appender name="asyncMETRIC" class="ch.qos.logback.classic.AsyncAppender">
+ <queueSize>1000</queueSize>
+ <includeCallerData>true</includeCallerData>
+ <appender-ref ref="METRIC" />
+ </appender>
+
+ <appender name="DEBUG"
+ class="ch.qos.logback.core.rolling.RollingFileAppender">
+ <filter class="ch.qos.logback.classic.filter.LevelFilter">
+ <level>DEBUG</level>
+ <onMatch>ACCEPT</onMatch>
+ <onMismatch>DENY</onMismatch>
+ </filter>
+ <file>${logDirectory}/rest/debug.log</file>
+ <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
+ <fileNamePattern>${logDirectory}/rest/debug.log.%d{yyyy-MM-dd}
+ </fileNamePattern>
+ </rollingPolicy>
+ <encoder class="org.onap.aai.logging.EcompEncoder">
+ <pattern>${eelfLogPattern}</pattern>
+ </encoder>
+ </appender>
+
+ <appender name="asyncDEBUG" class="ch.qos.logback.classic.AsyncAppender">
+ <queueSize>1000</queueSize>
+ <includeCallerData>true</includeCallerData>
+ <appender-ref ref="DEBUG" />
+ </appender>
+
+ <appender name="ERROR"
+ class="ch.qos.logback.core.rolling.RollingFileAppender">
+ <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
+ <level>WARN</level>
+ </filter>
+ <file>${logDirectory}/rest/error.log</file>
+ <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
+ <fileNamePattern>${logDirectory}/rest/error.log.%d{yyyy-MM-dd}
+ </fileNamePattern>
+ </rollingPolicy>
+ <encoder class="org.onap.aai.logging.EcompEncoder">
+ <pattern>${eelfErrorLogPattern}</pattern>
+ </encoder>
+ </appender>
+
+ <appender name="asyncERROR" class="ch.qos.logback.classic.AsyncAppender">
+ <queueSize>1000</queueSize>
+ <includeCallerData>true</includeCallerData>
+ <appender-ref ref="ERROR" />
+ </appender>
+
+ <appender name="AUDIT"
+ class="ch.qos.logback.core.rolling.RollingFileAppender">
+ <file>${logDirectory}/rest/audit.log</file>
+ <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
+ <fileNamePattern>${logDirectory}/rest/audit.log.%d{yyyy-MM-dd}
+ </fileNamePattern>
+ </rollingPolicy>
+ <encoder class="org.onap.aai.logging.EcompEncoder">
+ <pattern>${eelfAuditLogPattern}</pattern>
+ </encoder>
+ </appender>
+
+ <appender name="asyncAUDIT" class="ch.qos.logback.classic.AsyncAppender">
+ <queueSize>1000</queueSize>
+ <includeCallerData>true</includeCallerData>
+ <appender-ref ref="AUDIT" />
+ </appender>
+
+ <appender name="translog"
+ class="ch.qos.logback.core.rolling.RollingFileAppender">
+ <filter class="ch.qos.logback.classic.filter.LevelFilter">
+ <level>DEBUG</level>
+ <onMatch>ACCEPT</onMatch>
+ <onMismatch>DENY</onMismatch>
+ </filter>
+ <file>${logDirectory}/rest/translog.log</file>
+ <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
+ <fileNamePattern>${logDirectory}/rest/translog.log.%d{yyyy-MM-dd}
+ </fileNamePattern>
+ </rollingPolicy>
+ <encoder class="org.onap.aai.logging.EcompEncoder">
+ <pattern>${eelfTransLogPattern}</pattern>
+ </encoder>
+ </appender>
+
+ <appender name="asynctranslog" class="ch.qos.logback.classic.AsyncAppender">
+ <queueSize>1000</queueSize>
+ <includeCallerData>true</includeCallerData>
+ <appender-ref ref="translog" />
+ </appender>
+
+ <appender name="dmaapAAIEventConsumer"
+ class="ch.qos.logback.core.rolling.RollingFileAppender">
+ <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
+ <level>WARN</level>
+ </filter>
+ <File>${logDirectory}/dmaapAAIEventConsumer/error.log</File>
+ <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
+ <fileNamePattern>${logDirectory}/dmaapAAIEventConsumer/error.log.%d{yyyy-MM-dd}
+ </fileNamePattern>
+ </rollingPolicy>
+ <encoder class="org.onap.aai.logging.EcompEncoder">
+ <pattern>${eelfLogPattern}</pattern>
+ </encoder>
+ </appender>
+
+ <appender name="dmaapAAIEventConsumerDebug"
+ class="ch.qos.logback.core.rolling.RollingFileAppender">
+ <filter class="ch.qos.logback.classic.filter.LevelFilter">
+ <level>DEBUG</level>
+ <onMatch>ACCEPT</onMatch>
+ <onMismatch>DENY</onMismatch>
+ </filter>
+ <File>${logDirectory}/dmaapAAIEventConsumer/debug.log</File>
+ <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
+ <fileNamePattern>${logDirectory}/dmaapAAIEventConsumer/debug.log.%d{yyyy-MM-dd}
+ </fileNamePattern>
+ </rollingPolicy>
+ <encoder class="org.onap.aai.logging.EcompEncoder">
+ <pattern>${eelfLogPattern}</pattern>
+ </encoder>
+ </appender>
+ <appender name="dmaapAAIEventConsumerMetric"
+ class="ch.qos.logback.core.rolling.RollingFileAppender">
+ <filter class="ch.qos.logback.classic.filter.LevelFilter">
+ <level>INFO</level>
+ <onMatch>ACCEPT</onMatch>
+ <onMismatch>DENY</onMismatch>
+ </filter>
+ <File>${logDirectory}/dmaapAAIEventConsumer/metrics.log</File>
+ <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
+ <fileNamePattern>${logDirectory}/dmaapAAIEventConsumer/metrics.log.%d{yyyy-MM-dd}
+ </fileNamePattern>
+ </rollingPolicy>
+ <encoder class="org.onap.aai.logging.EcompEncoder">
+ <pattern>${eelfMetricLogPattern}</pattern>
+ </encoder>
+ </appender>
+ <appender name="external"
+ class="ch.qos.logback.core.rolling.RollingFileAppender">
+ <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
+ <level>WARN</level>
+ </filter>
+ <file>${logDirectory}/external/external.log</file>
+ <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
+ <fileNamePattern>${logDirectory}/external/external.log.%d{yyyy-MM-dd}
+ </fileNamePattern>
+ </rollingPolicy>
+ <encoder class="org.onap.aai.logging.EcompEncoder">
+ <pattern>${eelfLogPattern}</pattern>
+ </encoder>
+ </appender>
+ <logger name="org.onap.aai" level="DEBUG" additivity="false">
+ <appender-ref ref="asyncDEBUG" />
+ <appender-ref ref="asyncERROR" />
+ <appender-ref ref="asyncMETRIC" />
+ <appender-ref ref="asyncSANE" />
+ </logger>
+
+ <!-- Spring related loggers -->
+ <logger name="org.springframework" level="WARN" />
+ <logger name="org.springframework.beans" level="WARN" />
+ <logger name="org.springframework.web" level="WARN" />
+ <logger name="com.blog.spring.jms" level="WARN" />
+ <logger name="com.jayway.jsonpath" level="WARN" />
+
+ <!-- AJSC Services (bootstrap services) -->
+ <logger name="ajsc" level="WARN" />
+ <logger name="ajsc.RouteMgmtService" level="WARN" />
+ <logger name="ajsc.ComputeService" level="WARN" />
+ <logger name="ajsc.VandelayService" level="WARN" />
+ <logger name="ajsc.FilePersistenceService" level="WARN" />
+ <logger name="ajsc.UserDefinedJarService" level="WARN" />
+ <logger name="ajsc.UserDefinedBeansDefService" level="WARN" />
+ <logger name="ajsc.LoggingConfigurationService" level="WARN" />
+
+ <!-- AJSC related loggers (DME2 Registration, csi logging, restlet, servlet
+ logging) -->
+ <logger name="org.codehaus.groovy" level="WARN" />
+ <logger name="com.att.scamper" level="WARN" />
+ <logger name="ajsc.utils" level="WARN" />
+ <logger name="ajsc.utils.DME2Helper" level="WARN" />
+ <logger name="ajsc.filters" level="WARN" />
+ <logger name="ajsc.beans.interceptors" level="WARN" />
+ <logger name="ajsc.restlet" level="WARN" />
+ <logger name="ajsc.servlet" level="WARN" />
+ <logger name="com.att.ajsc" level="WARN" />
+ <logger name="com.att.ajsc.csi.logging" level="WARN" />
+ <logger name="com.att.ajsc.filemonitor" level="WARN" />
+ <logger name="com.netflix.loadbalancer" level="WARN" />
+
+ <logger name="org.apache.zookeeper" level="OFF" />
+
+ <!-- Other Loggers that may help troubleshoot -->
+ <logger name="net.sf" level="WARN" />
+ <logger name="org.apache.commons.httpclient" level="WARN" />
+ <logger name="org.apache.commons" level="WARN" />
+ <logger name="org.apache.coyote" level="WARN" />
+ <logger name="org.apache.jasper" level="WARN" />
+
+ <!-- Camel Related Loggers (including restlet/servlet/jaxrs/cxf logging.
+ May aid in troubleshooting) -->
+ <logger name="org.apache.camel" level="WARN" />
+ <logger name="org.apache.cxf" level="WARN" />
+ <logger name="org.apache.camel.processor.interceptor" level="WARN" />
+ <logger name="org.apache.cxf.jaxrs.interceptor" level="WARN" />
+ <logger name="org.apache.cxf.service" level="WARN" />
+ <logger name="org.restlet" level="WARN" />
+ <logger name="org.apache.camel.component.restlet" level="WARN" />
+
+ <logger name="org.hibernate.validator" level="WARN" />
+ <logger name="org.hibernate" level="WARN" />
+ <logger name="org.hibernate.ejb" level="OFF" />
+
+ <!-- logback internals logging -->
+ <logger name="ch.qos.logback.classic" level="WARN" />
+ <logger name="ch.qos.logback.core" level="WARN" />
+
+ <logger name="org.eclipse.jetty" level="WARN" />
+
+ <!-- logback jms appenders & loggers definition starts here -->
+ <appender name="auditLogs"
+ class="ch.qos.logback.core.rolling.RollingFileAppender">
+ <filter class="ch.qos.logback.classic.filter.ThresholdFilter" />
+ <file>${logDirectory}/perf-audit/Audit-${lrmRVer}-${lrmRO}-${Pid}.log
+ </file>
+ <rollingPolicy class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
+ <fileNamePattern>${logDirectory}/perf-audit/Audit-${lrmRVer}-${lrmRO}-${Pid}.%i.log.zip
+ </fileNamePattern>
+ <minIndex>1</minIndex>
+ <maxIndex>9</maxIndex>
+ </rollingPolicy>
+ <triggeringPolicy
+ class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
+ <maxFileSize>5MB</maxFileSize>
+ </triggeringPolicy>
+ <encoder>
+ <pattern>"%d [%thread] %-5level %logger{1024} - %msg%n"</pattern>
+ </encoder>
+ </appender>
+ <appender name="perfLogs"
+ class="ch.qos.logback.core.rolling.RollingFileAppender">
+ <filter class="ch.qos.logback.classic.filter.ThresholdFilter" />
+ <file>${logDirectory}/perf-audit/Perform-${lrmRVer}-${lrmRO}-${Pid}.log
+ </file>
+ <rollingPolicy class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
+ <fileNamePattern>${logDirectory}/perf-audit/Perform-${lrmRVer}-${lrmRO}-${Pid}.%i.log.zip
+ </fileNamePattern>
+ <minIndex>1</minIndex>
+ <maxIndex>9</maxIndex>
+ </rollingPolicy>
+ <triggeringPolicy
+ class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
+ <maxFileSize>5MB</maxFileSize>
+ </triggeringPolicy>
+ <encoder>
+ <pattern>"%d [%thread] %-5level %logger{1024} - %msg%n"</pattern>
+ </encoder>
+ </appender>
+ <logger name="AuditRecord" level="INFO" additivity="false">
+ <appender-ref ref="auditLogs" />
+ </logger>
+ <logger name="AuditRecord_DirectCall" level="INFO" additivity="false">
+ <appender-ref ref="auditLogs" />
+ </logger>
+ <logger name="PerfTrackerRecord" level="INFO" additivity="false">
+ <appender-ref ref="perfLogs" />
+ </logger>
+ <!-- logback jms appenders & loggers definition ends here -->
+
+ <logger name="org.onap.aai.interceptors.post" level="DEBUG"
+ additivity="false">
+ <appender-ref ref="asynctranslog" />
+ </logger>
+
+ <logger name="org.onap.aai.interceptors.pre.SetLoggingContext" level="DEBUG">
+ <appender-ref ref="asyncAUDIT"/>
+ </logger>
+
+ <logger name="org.onap.aai.interceptors.post.ResetLoggingContext" level="DEBUG">
+ <appender-ref ref="asyncAUDIT"/>
+ </logger>
+
+ <logger name="org.onap.aai.dmaap" level="DEBUG" additivity="false">
+ <appender-ref ref="dmaapAAIEventConsumer" />
+ <appender-ref ref="dmaapAAIEventConsumerDebug" />
+ <appender-ref ref="dmaapAAIEventConsumerMetric" />
+ </logger>
+
+ <logger name="org.apache" level="OFF" />
+ <logger name="org.zookeeper" level="OFF" />
+ <logger name="com.thinkaurelius" level="WARN" />
+ <logger name="com.att.aft.dme2" level="WARN" />
+
+ <!-- ============================================================================ -->
+ <!-- General EELF logger -->
+ <!-- ============================================================================ -->
+ <logger name="com.att.eelf" level="WARN" additivity="false">
+ <appender-ref ref="asyncDEBUG" />
+ <appender-ref ref="asyncERROR" />
+ <appender-ref ref="asyncMETRIC" />
+ </logger>
+
+ <root level="DEBUG">
+ <appender-ref ref="external" />
+ </root>
+</configuration>
diff --git a/test/csit/plans/aai/resources/aai-resources/appconfig/realm.properties b/test/csit/plans/aai/resources/aai-resources/appconfig/realm.properties
new file mode 100644
index 000000000..fb692cc3e
--- /dev/null
+++ b/test/csit/plans/aai/resources/aai-resources/appconfig/realm.properties
@@ -0,0 +1,12 @@
+# format : username: password[,rolename ...]
+# default username/password: AAI/AAI, MSO/MSO, ModelLoader/ModelLoader...
+AAI:OBF:1gfr1ev31gg7,admin
+MSO:OBF:1jzx1lz31k01,admin
+SDNC:OBF:1itr1i0l1i151isv,admin
+DCAE:OBF:1g8u1f9d1f991g8w,admin
+POLICY:OBF:1mk61i171ima1im41i0j1mko,admin
+ASDC:OBF:1f991j0u1j001f9d,admin
+VID:OBF:1jm91i0v1jl9,admin
+APPC:OBF:1f991ksf1ksf1f9d,admin
+ModelLoader:OBF:1qvu1v2h1sov1sar1wfw1j7j1wg21saj1sov1v1x1qxw,admin
+AaiUI:OBF:1gfr1p571unz1p4j1gg7,admin
diff --git a/test/csit/plans/aai/resources/aai-traversal/appconfig/aai_keystore b/test/csit/plans/aai/resources/aai-traversal/appconfig/aai_keystore
new file mode 100644
index 000000000..1ddef0c9b
--- /dev/null
+++ b/test/csit/plans/aai/resources/aai-traversal/appconfig/aai_keystore
Binary files differ
diff --git a/test/csit/plans/aai/resources/aai-traversal/appconfig/aaiconfig.properties b/test/csit/plans/aai/resources/aai-traversal/appconfig/aaiconfig.properties
new file mode 100644
index 000000000..cef109033
--- /dev/null
+++ b/test/csit/plans/aai/resources/aai-traversal/appconfig/aaiconfig.properties
@@ -0,0 +1,114 @@
+#
+# ============LICENSE_START=======================================================
+# org.onap.aai
+# ================================================================================
+# Copyright © 2017 AT&T Intellectual Property. All rights reserved.
+# ================================================================================
+# 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.
+# ============LICENSE_END=========================================================
+#
+# ECOMP is a trademark and service mark of AT&T Intellectual Property.
+#
+
+####################################################################
+# REMEMBER TO THINK ABOUT ENVIRONMENTAL DIFFERENCES AND CHANGE THE
+# TEMPLATE AND *ALL* DATAFILES
+####################################################################
+
+####################################################################
+# REMEMBER TO THINK ABOUT ENVIRONMENTAL DIFFERENCES AND CHANGE THE
+# TEMPLATE AND *ALL* DATAFILES
+####################################################################
+
+aai.config.checktime=1000
+
+# this could come from siteconfig.pl?
+aai.config.nodename=AutomaticallyOverwritten
+
+
+
+aai.auth.cspcookies_on=false
+aai.dbmodel.filename=ex5.json
+
+aai.server.url.base=https://aai.api.simpledemo.onap.org:8443/aai/
+aai.server.url=https://aai.api.simpledemo.onap.org:8443/aai/v11/
+aai.global.callback.url=https://aai.api.simpledemo.onap.org:8443/aai/
+
+aai.tools.enableBasicAuth=true
+aai.tools.username=AAI
+aai.tools.password=AAI
+
+aai.truststore.filename=aai_keystore
+aai.truststore.passwd.x=OBF:1vn21ugu1saj1v9i1v941sar1ugw1vo0
+aai.keystore.filename=aai_keystore
+aai.keystore.passwd.x=OBF:1vn21ugu1saj1v9i1v941sar1ugw1vo0
+
+
+aai.notification.current.version=v11
+aai.notificationEvent.default.status=UNPROCESSED
+aai.notificationEvent.default.eventType=AAI-EVENT
+aai.notificationEvent.default.domain=dev
+aai.notificationEvent.default.sourceName=aai
+aai.notificationEvent.default.sequenceNumber=0
+aai.notificationEvent.default.severity=NORMAL
+aai.notificationEvent.default.version=v11
+# This one lets us enable/disable resource-version checking on updates/deletes
+aai.resourceversion.enableflag=true
+aai.logging.maxStackTraceEntries=10
+aai.default.api.version=v11
+
+
+
+# Used by Model-processing code
+aai.model.delete.sleep.per.vtx.msec=500
+aai.model.query.resultset.maxcount=50
+aai.model.query.timeout.sec=90
+
+# Used by Data Grooming
+aai.grooming.default.max.file=150
+aai.grooming.default.sleep.minutes=7
+
+aai.model.proc.max.levels=50
+aai.edgeTag.proc.max.levels=50
+
+# for transaction log
+aai.logging.hbase.interceptor=true
+aai.logging.hbase.enabled=true
+aai.logging.hbase.logrequest=true
+aai.logging.hbase.logresponse=true
+
+# for gremlin server
+aai.server.rebind=g
+hbase.table.name=aailogging.dev
+hbase.table.timestamp.format=YYYYMMdd-HH:mm:ss:SSS
+hbase.zookeeper.quorum=localhost
+hbase.zookeeper.property.clientPort=2181
+hbase.zookeeper.znode.parent=/hbase
+
+aai.logging.trace.enabled=true
+aai.logging.trace.logrequest=false
+aai.logging.trace.logresponse=false
+
+aai.transaction.logging=true
+aai.transaction.logging.get=false
+aai.transaction.logging.post=false
+
+#timeout for traversal enabled flag
+aai.traversal.timeoutenabled=true
+
+#timeout app specific
+aai.traversal.timeout.appspecific=JUNITTESTAPP1,1|JUNITTESTAPP2,-1|DCAE-CCS,-1|DCAES,-1|AAI-FILEGEN-GFPIP,-1
+
+#default timeout limit added for traversal if not overridden (in ms)
+aai.traversal.timeoutlimit=180000
+
diff --git a/test/csit/plans/aai/resources/aai-traversal/appconfig/application.properties b/test/csit/plans/aai/resources/aai-traversal/appconfig/application.properties
new file mode 100644
index 000000000..0292512c1
--- /dev/null
+++ b/test/csit/plans/aai/resources/aai-traversal/appconfig/application.properties
@@ -0,0 +1,72 @@
+# The following info parameters are being referenced by ajsc6
+info.build.artifact=aai-traversal
+info.build.name=traversal
+info.build.description=Traversal Microservice
+info.build.version=1.2.0
+
+spring.application.name=aai-traversal
+spring.jersey.type=filter
+
+server.contextPath=/
+spring.autoconfigure.exclude=org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration,org.springframework.boot.autoconfigure.orm.jpa.HibernateJpaAutoConfiguration
+
+spring.profiles.active=production,dmaap
+#The max number of active threads in this pool
+server.tomcat.max-threads=200
+#The minimum number of threads always kept alive
+server.tomcat.min-Spare-Threads=25
+#The number of milliseconds before an idle thread shutsdown, unless the number of active threads are less or equal to minSpareThreads
+server.tomcat.max-idle-time=60000
+
+
+#Add this properties only if you want to change the URL, AJSC Framework interceptors will intercept
+#com.att.ajsc.common.interceptors.PreInterceptor.url=/**
+#com.att.ajsc.common.interceptors.PostInterceptor.url=/**
+
+#Servlet context parameters
+server.context_parameters.p-name=value #context parameter with p-name as key and value as value.
+kubernetes.namespace=org-onap-aai
+
+# If you get an application startup failure that the port is already taken
+# If thats not it, please check if the key-store file path makes sense
+server.local.startpath=aai-traversal/src/main/resources/
+server.basic.auth.location=${server.local.startpath}etc/auth/realm.properties
+
+server.port=8446
+server.ssl.enabled-protocols=TLSv1.1,TLSv1.2
+server.ssl.key-store=${server.local.startpath}etc/auth/aai_keystore
+server.ssl.key-store-password=password(OBF:1vn21ugu1saj1v9i1v941sar1ugw1vo0)
+server.ssl.trust-store=${server.local.startpath}etc/auth/aai_keystore
+server.ssl.trust-store-password=password(OBF:1vn21ugu1saj1v9i1v941sar1ugw1vo0)
+server.ssl.client-auth=want
+server.ssl.key-store-type=JKS
+
+# JMS bind address host port
+jms.bind.address=tcp://localhost:61647
+dmaap.ribbon.eureka.enabled=false
+dmaap.ribbon.listOfServers=mr.api.simpledemo.onap.org:3904
+# Number of milliseconds to wait before making ping requests again
+dmaap.ribbon.ServerListRefreshInterval=75000
+dmaap.ribbon.NFLoadBalancerPingInterval=75000
+dmaap.ribbon.NFLoadBalancerRuleClassName=com.netflix.loadbalancer.AvailabilityFilteringRule
+dmaap.ribbon.NFLoadBalancerPingClassName=org.onap.aai.config.HttpPingImpl
+dmaap.ribbon.EnableMarkingServerDownOnReachingFailureLimit=true
+dmaap.ribbon.ServerDownFailureLimit=1
+# This needs to be verified but it seems that adding this property should automatically
+# Make the dmaap client change the url from http to https depending on the server
+dmaap.ribbon.securePorts=3905
+
+# Custom Dmaap Specific Configuration
+dmaap.ribbon.username=
+dmaap.ribbon.password=
+dmaap.ribbon.health.endpoint=/topics/AAI-EVENT
+# Number of seconds to wait for the ping to work and might need to increase this if the pings are all failing
+dmaap.ribbon.pingport.timeout=3
+
+niws.loadbalancer.dmaap.filterCircuitTripped=true
+niws.loadbalancer.dmaap.connectionFailureCountThreshold=3
+niws.loadbalancer.dmaap.circuitTripMaxTimeoutSeconds=180
+#dmaap.ribbon.retryableStatusCodes=404,503
+#dmaap.ribbon.retryableStatusCodes.MaxAutoRetriesNextServer=2
+#dmaap.ribbon.retryableStatusCodes.MaxAutoRetries=2
+#dmaap.ribbon.retryableStatusCodes.OkToRetryOnAllOperations=true
diff --git a/test/csit/plans/aai/resources/aai-traversal/appconfig/janusgraph-cached.properties b/test/csit/plans/aai/resources/aai-traversal/appconfig/janusgraph-cached.properties
new file mode 100644
index 000000000..c2110f77c
--- /dev/null
+++ b/test/csit/plans/aai/resources/aai-traversal/appconfig/janusgraph-cached.properties
@@ -0,0 +1,43 @@
+#
+# ============LICENSE_START=======================================================
+# org.onap.aai
+# ================================================================================
+# Copyright © 2017 AT&T Intellectual Property. All rights reserved.
+# ================================================================================
+# 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.
+# ============LICENSE_END=========================================================
+#
+# ECOMP is a trademark and service mark of AT&T Intellectual Property.
+#
+
+query.fast-property=true
+query.smart-limit=false
+
+# the following parameters are not reloaded automatically and require a manual bounce
+storage.backend=cassandra
+storage.hostname=aai.hbase.simpledemo.onap.org
+
+storage.cassandra.keyspace=aaigraph
+
+#schema.default=none
+storage.lock.wait-time=300
+storage.hbase.table=aaigraph-dev1.dev
+storage.hbase.ext.zookeeper.znode.parent=/hbase
+#caching on
+cache.db-cache = true
+cache.db-cache-clean-wait = 20
+cache.db-cache-time = 180000
+cache.db-cache-size = 0.3
+
+#load graphson file on startup
+load.snapshot.file=false
diff --git a/test/csit/plans/aai/resources/aai-traversal/appconfig/janusgraph-realtime.properties b/test/csit/plans/aai/resources/aai-traversal/appconfig/janusgraph-realtime.properties
new file mode 100644
index 000000000..4791431a1
--- /dev/null
+++ b/test/csit/plans/aai/resources/aai-traversal/appconfig/janusgraph-realtime.properties
@@ -0,0 +1,40 @@
+#
+# ============LICENSE_START=======================================================
+# org.onap.aai
+# ================================================================================
+# Copyright © 2017 AT&T Intellectual Property. All rights reserved.
+# ================================================================================
+# 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.
+# ============LICENSE_END=========================================================
+#
+# ECOMP is a trademark and service mark of AT&T Intellectual Property.
+#
+
+query.fast-property=true
+query.smart-limit=false
+
+# the following parameters are not reloaded automatically and require a manual bounce
+storage.backend=cassandra
+storage.hostname=aai.hbase.simpledemo.onap.org
+
+storage.cassandra.keyspace=aaigraph
+
+#schema.default=none
+storage.lock.wait-time=300
+storage.hbase.table=aaigraph-dev1.dev
+storage.hbase.ext.zookeeper.znode.parent=/hbase
+# Setting db-cache to false ensure the fastest propagation of changes across servers
+cache.db-cache = false
+
+#load graphson file on startup
+load.snapshot.file=false
diff --git a/test/csit/plans/aai/resources/aai-traversal/appconfig/localhost-access-logback.xml b/test/csit/plans/aai/resources/aai-traversal/appconfig/localhost-access-logback.xml
new file mode 100644
index 000000000..a318796c5
--- /dev/null
+++ b/test/csit/plans/aai/resources/aai-traversal/appconfig/localhost-access-logback.xml
@@ -0,0 +1,62 @@
+<!--
+
+ ============LICENSE_START=======================================================
+ org.onap.aai
+ ================================================================================
+ Copyright © 2017 AT&T Intellectual Property. All rights reserved.
+ ================================================================================
+ 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.
+ ============LICENSE_END=========================================================
+
+ ECOMP is a trademark and service mark of AT&T Intellectual Property.
+
+-->
+<configuration>
+ <property name="AJSC_HOME" value="${AJSC_HOME:-.}" />
+ <appender name="ACCESS"
+ class="ch.qos.logback.core.rolling.RollingFileAppender">
+ <file>${AJSC_HOME}/logs/ajsc-jetty/localhost_access.log</file>
+ <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
+ <fileNamePattern>${AJSC_HOME}/logs/ajsc-jetty/localhost_access.log.%d{yyyy-MM-dd}
+ </fileNamePattern>
+ </rollingPolicy>
+ <encoder class="org.onap.aai.logging.CustomLogPatternLayoutEncoder">
+ <Pattern>%a %u %z [%t] "%m %U%q" %s %b %y %i{X-TransactionId} %i{X-FromAppId} %i{X-Forwarded-For} %i{X-AAI-SSL-Client-CN} %i{X-AAI-SSL-Client-OU} %i{X-AAI-SSL-Client-O} %i{X-AAI-SSL-Client-L} %i{X-AAI-SSL-Client-ST} %i{X-AAI-SSL-Client-C} %i{X-AAI-SSL-Client-NotBefore} %i{X-AAI-SSL-Client-NotAfter} %i{X-AAI-SSL-Client-DN} %D</Pattern>
+ </encoder>
+ </appender>
+ <appender-ref ref="ACCESS" />
+</configuration>
+
+<!--
+%a - Remote IP address
+%A - Local IP address
+%b - Bytes sent, excluding HTTP headers, or '-' if no bytes were sent
+%B - Bytes sent, excluding HTTP headers
+%h - Remote host name
+%H - Request protocol
+%l - Remote logical username from identd (always returns '-')
+%m - Request method
+%p - Local port
+%q - Query string (prepended with a '?' if it exists, otherwise an empty string
+%r - First line of the request
+%s - HTTP status code of the response
+%S - User session ID
+%t - Date and time, in Common Log Format format
+%u - Remote user that was authenticated
+%U - Requested URL path
+%v - Local server name
+%I - current request thread name (can compare later with stacktraces)
+
+%z - Custom pattern that parses the cert for the subject
+%y - Custom pattern determines rest or dme2
+ --> \ No newline at end of file
diff --git a/test/csit/plans/aai/resources/aai-traversal/appconfig/logback.xml b/test/csit/plans/aai/resources/aai-traversal/appconfig/logback.xml
new file mode 100644
index 000000000..31bfe10cf
--- /dev/null
+++ b/test/csit/plans/aai/resources/aai-traversal/appconfig/logback.xml
@@ -0,0 +1,391 @@
+<!--
+
+ ============LICENSE_START=======================================================
+ org.onap.aai
+ ================================================================================
+ Copyright © 2017 AT&T Intellectual Property. All rights reserved.
+ ================================================================================
+ 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.
+ ============LICENSE_END=========================================================
+
+ ECOMP is a trademark and service mark of AT&T Intellectual Property.
+
+-->
+<configuration scan="true" scanPeriod="60 seconds" debug="false">
+ <statusListener class="ch.qos.logback.core.status.NopStatusListener" />
+
+ <property resource="application.properties" />
+
+ <property name="namespace" value="aai-traversal"/>
+
+ <property name="AJSC_HOME" value="${AJSC_HOME:-.}" />
+ <jmxConfigurator />
+ <property name="logDirectory" value="${AJSC_HOME}/logs" />
+ <property name="eelfLogPattern" value="%ecompStartTime|%date{yyyy-MM-dd'T'HH:mm:ss.SSSZ, UTC}|%X{requestId}|%X{serviceInstanceId}|%-10t|%X{serverName}|%X{serviceName}|%X{partnerName}|%X{statusCode}|%X{responseCode}|%replace(%replace(%X{responseDescription}){'\\|', '!'}){'\r|\n', '^'}|%X{instanceUUID}|%level|%X{severity}|%X{serverIpAddress}|%ecompElapsedTime|%X{server}|%X{clientIpAddress}|%eelfClassOfCaller|%X{unused}|%X{processKey}|%X{customField1}|%X{customField2}|%X{customField3}|%X{customField4}|co=%X{component}:%replace(%replace(%m){'\\|', '!'}){'\r|\n', '^'}%n"/>
+ <property name="eelfAuditLogPattern" value="%ecompStartTime|%date{yyyy-MM-dd'T'HH:mm:ss.SSSZ, UTC}|%X{requestId}|%X{serviceInstanceId}|%-10t|%X{serverName}|%X{serviceName}|%X{partnerName}|%X{statusCode}|%X{responseCode}|%replace(%replace(%X{responseDescription}){'\\|', '!'}){'\r|\n|\r\n', '^'}|%X{instanceUUID}|%level|%X{severity}|%X{serverIpAddress}|%ecompElapsedTime|%X{server}|%X{clientIpAddress}|%eelfClassOfCaller|%X{unused}|%X{processKey}|%X{customField1}|%X{customField2}|%X{customField3}|%X{customField4}|co=%X{component}:%replace(%replace(%m){'\\|', '!'}){'\r|\n', '^'}%n"/>
+ <property name="eelfMetricLogPattern" value="%ecompStartTime|%date{yyyy-MM-dd'T'HH:mm:ss.SSSZ, UTC}|%X{requestId}|%X{serviceInstanceId}|%-10t|%X{serverName}|%X{serviceName}|%X{partnerName}|%X{targetEntity}|%X{targetServiceName}|%X{statusCode}|%X{responseCode}|%replace(%replace(%X{responseDescription}){'\\|', '!'}){'\r|\n', '^'}|%X{instanceUUID}|%level|%X{severity}|%X{serverIpAddress}|%ecompElapsedTime|%X{server}|%X{clientIpAddress}|%eelfClassOfCaller|%X{unused}|%X{processKey}|%X{targetVirtualEntity}|%X{customField1}|%X{customField2}|%X{customField3}|%X{customField4}|co=%X{component}:%replace(%replace(%m){'\\|', '!'}){'\r|\n', '^'}%n"/>
+ <!-- <property name="eelfErrorLogPattern" value="%ecompStartTime|%X{requestId}|%-10t|%X{serviceName}|%X{partnerName}|%X{targetEntity}|%X{targetServiceName}|%ecompErrorCategory|%X{responseCode}|%replace(%replace(%X{responseDescription}){'\\|', '!'}){'\r|\n|\r\n', '^'}|co=%X{component}:%replace(%replace(%m){'\\|', '!'}){'\r|\n', '^'}%n"/> -->
+ <property name="eelfErrorLogPattern" value="%ecompStartTime|%X{requestId}|%-10t|%X{serviceName}|%X{partnerName}|%X{targetEntity}|%X{targetServiceName}|%ecompErrorCategory|%ecompResponseCode|%ecompResponseDescription|co=%X{component}:%replace(%replace(%m){'\\|', '!'}){'\r|\n', '^'}%n"/>
+ <property name="eelfTransLogPattern" value="%ecompStartTime|%date{yyyy-MM-dd'T'HH:mm:ss.SSSZ, UTC}|%X{requestId}|%X{serviceInstanceId}|%-10t|%X{serverName}|%X{serviceName}|%X{partnerName}|%X{statusCode}|%X{responseCode}|%replace(%replace(%X{responseDescription}){'\\|', '!'}){'\r|\n', '^'}|%X{instanceUUID}|%level|%X{severity}|%X{serverIpAddress}|%ecompElapsedTime|%X{server}|%X{clientIpAddress}|%eelfClassOfCaller|%X{unused}|%X{processKey}|%X{customField1}|%X{customField2}|%X{customField3}|%X{customField4}|co=%X{partnerName}:%m%n"/>
+
+ <conversionRule conversionWord="clr" converterClass="org.springframework.boot.logging.logback.ColorConverter" />
+ <conversionRule conversionWord="wex" converterClass="org.springframework.boot.logging.logback.WhitespaceThrowableProxyConverter" />
+ <conversionRule conversionWord="wEx" converterClass="org.springframework.boot.logging.logback.ExtendedWhitespaceThrowableProxyConverter" />
+ <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
+ <encoder>
+ <pattern>
+ %clr(%d{yyyy-MM-dd HH:mm:ss.SSS}){faint} %clr(${LOG_LEVEL_PATTERN:-%5p}) %clr(${PID:- }){magenta} %clr(---){faint} %clr([%15.15t]){faint} %clr(%-40.40logger{39}){cyan} %clr(:){faint} %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}
+ </pattern>
+ </encoder>
+ </appender>
+
+ <appender name="SANE" class="ch.qos.logback.core.rolling.RollingFileAppender">
+ <file>${logDirectory}/rest/sane.log</file>
+ <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
+ <fileNamePattern>${logDirectory}/rest/sane.log.%d{yyyy-MM-dd}</fileNamePattern>
+ </rollingPolicy>
+ <encoder>
+ <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{1024} - %msg%n
+ </pattern>
+ </encoder>
+ </appender>
+
+ <appender name="asyncSANE" class="ch.qos.logback.classic.AsyncAppender">
+ <queueSize>1000</queueSize>
+ <includeCallerData>true</includeCallerData>
+ <appender-ref ref="SANE" />
+ </appender>
+
+ <appender name="METRIC"
+ class="ch.qos.logback.core.rolling.RollingFileAppender">
+ <filter class="ch.qos.logback.classic.filter.LevelFilter">
+ <level>INFO</level>
+ <onMatch>ACCEPT</onMatch>
+ <onMismatch>DENY</onMismatch>
+ </filter>
+ <file>${logDirectory}/rest/metrics.log</file>
+ <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
+ <fileNamePattern>${logDirectory}/rest/metrics.log.%d{yyyy-MM-dd}
+ </fileNamePattern>
+ </rollingPolicy>
+ <encoder class="org.onap.aai.logging.EcompEncoder">
+ <pattern>${eelfMetricLogPattern}</pattern>
+ </encoder>
+ </appender>
+ <appender name="asyncMETRIC" class="ch.qos.logback.classic.AsyncAppender">
+ <queueSize>1000</queueSize>
+ <includeCallerData>true</includeCallerData>
+ <appender-ref ref="METRIC" />
+ </appender>
+
+ <appender name="DEBUG"
+ class="ch.qos.logback.core.rolling.RollingFileAppender">
+ <filter class="ch.qos.logback.classic.filter.LevelFilter">
+ <level>DEBUG</level>
+ <onMatch>ACCEPT</onMatch>
+ <onMismatch>DENY</onMismatch>
+ </filter>
+ <file>${logDirectory}/rest/debug.log</file>
+ <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
+ <fileNamePattern>${logDirectory}/rest/debug.log.%d{yyyy-MM-dd}
+ </fileNamePattern>
+ </rollingPolicy>
+ <encoder class="org.onap.aai.logging.EcompEncoder">
+ <pattern>${eelfLogPattern}</pattern>
+ </encoder>
+ </appender>
+
+ <appender name="asyncDEBUG" class="ch.qos.logback.classic.AsyncAppender">
+ <queueSize>1000</queueSize>
+ <includeCallerData>true</includeCallerData>
+ <appender-ref ref="DEBUG" />
+ </appender>
+
+ <appender name="ERROR"
+ class="ch.qos.logback.core.rolling.RollingFileAppender">
+ <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
+ <level>WARN</level>
+ </filter>
+ <file>${logDirectory}/rest/error.log</file>
+ <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
+ <fileNamePattern>${logDirectory}/rest/error.log.%d{yyyy-MM-dd}
+ </fileNamePattern>
+ </rollingPolicy>
+ <encoder class="org.onap.aai.logging.EcompEncoder">
+ <pattern>${eelfErrorLogPattern}</pattern>
+ </encoder>
+ </appender>
+
+ <appender name="asyncERROR" class="ch.qos.logback.classic.AsyncAppender">
+ <queueSize>1000</queueSize>
+ <includeCallerData>true</includeCallerData>
+ <appender-ref ref="ERROR" />
+ </appender>
+
+ <appender name="AUDIT"
+ class="ch.qos.logback.core.rolling.RollingFileAppender">
+ <file>${logDirectory}/rest/audit.log</file>
+ <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
+ <fileNamePattern>${logDirectory}/rest/audit.log.%d{yyyy-MM-dd}
+ </fileNamePattern>
+ </rollingPolicy>
+ <encoder class="org.onap.aai.logging.EcompEncoder">
+ <pattern>${eelfAuditLogPattern}</pattern>
+ </encoder>
+ </appender>
+
+ <appender name="asyncAUDIT" class="ch.qos.logback.classic.AsyncAppender">
+ <queueSize>1000</queueSize>
+ <includeCallerData>true</includeCallerData>
+ <appender-ref ref="AUDIT" />
+ </appender>
+
+ <appender name="translog"
+ class="ch.qos.logback.core.rolling.RollingFileAppender">
+ <filter class="ch.qos.logback.classic.filter.LevelFilter">
+ <level>DEBUG</level>
+ <onMatch>ACCEPT</onMatch>
+ <onMismatch>DENY</onMismatch>
+ </filter>
+ <file>${logDirectory}/rest/translog.log</file>
+ <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
+ <fileNamePattern>${logDirectory}/rest/translog.log.%d{yyyy-MM-dd}
+ </fileNamePattern>
+ </rollingPolicy>
+ <encoder class="org.onap.aai.logging.EcompEncoder">
+ <pattern>${eelfTransLogPattern}</pattern>
+ </encoder>
+ </appender>
+
+ <appender name="asynctranslog" class="ch.qos.logback.classic.AsyncAppender">
+ <queueSize>1000</queueSize>
+ <includeCallerData>true</includeCallerData>
+ <appender-ref ref="translog" />
+ </appender>
+
+ <appender name="dmaapAAIEventConsumer"
+ class="ch.qos.logback.core.rolling.RollingFileAppender">
+ <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
+ <level>WARN</level>
+ </filter>
+ <File>${logDirectory}/dmaapAAIEventConsumer/error.log</File>
+ <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
+ <fileNamePattern>${logDirectory}/dmaapAAIEventConsumer/error.log.%d{yyyy-MM-dd}
+ </fileNamePattern>
+ </rollingPolicy>
+ <encoder class="org.onap.aai.logging.EcompEncoder">
+ <pattern>${eelfLogPattern}</pattern>
+ </encoder>
+ </appender>
+
+ <appender name="dmaapAAIEventConsumerDebug"
+ class="ch.qos.logback.core.rolling.RollingFileAppender">
+ <filter class="ch.qos.logback.classic.filter.LevelFilter">
+ <level>DEBUG</level>
+ <onMatch>ACCEPT</onMatch>
+ <onMismatch>DENY</onMismatch>
+ </filter>
+ <File>${logDirectory}/dmaapAAIEventConsumer/debug.log</File>
+ <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
+ <fileNamePattern>${logDirectory}/dmaapAAIEventConsumer/debug.log.%d{yyyy-MM-dd}
+ </fileNamePattern>
+ </rollingPolicy>
+ <encoder class="org.onap.aai.logging.EcompEncoder">
+ <pattern>${eelfLogPattern}</pattern>
+ </encoder>
+ </appender>
+ <appender name="dmaapAAIEventConsumerMetric"
+ class="ch.qos.logback.core.rolling.RollingFileAppender">
+ <filter class="ch.qos.logback.classic.filter.LevelFilter">
+ <level>INFO</level>
+ <onMatch>ACCEPT</onMatch>
+ <onMismatch>DENY</onMismatch>
+ </filter>
+ <File>${logDirectory}/dmaapAAIEventConsumer/metrics.log</File>
+ <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
+ <fileNamePattern>${logDirectory}/dmaapAAIEventConsumer/metrics.log.%d{yyyy-MM-dd}
+ </fileNamePattern>
+ </rollingPolicy>
+ <encoder class="org.onap.aai.logging.EcompEncoder">
+ <pattern>${eelfMetricLogPattern}</pattern>
+ </encoder>
+ </appender>
+ <appender name="external"
+ class="ch.qos.logback.core.rolling.RollingFileAppender">
+ <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
+ <level>WARN</level>
+ </filter>
+ <file>${logDirectory}/external/external.log</file>
+ <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
+ <fileNamePattern>${logDirectory}/external/external.log.%d{yyyy-MM-dd}
+ </fileNamePattern>
+ </rollingPolicy>
+ <encoder class="org.onap.aai.logging.EcompEncoder">
+ <pattern>${eelfLogPattern}</pattern>
+ </encoder>
+ </appender>
+ <logger name="org.onap.aai" level="DEBUG" additivity="false">
+ <appender-ref ref="asyncDEBUG" />
+ <appender-ref ref="asyncERROR" />
+ <appender-ref ref="asyncMETRIC" />
+ <appender-ref ref="asyncSANE" />
+ </logger>
+
+ <!-- Spring related loggers -->
+ <logger name="org.springframework" level="WARN" />
+ <logger name="org.springframework.beans" level="WARN" />
+ <logger name="org.springframework.web" level="WARN" />
+ <logger name="com.blog.spring.jms" level="WARN" />
+ <logger name="com.jayway.jsonpath" level="WARN" />
+
+ <!-- AJSC Services (bootstrap services) -->
+ <logger name="ajsc" level="WARN" />
+ <logger name="ajsc.RouteMgmtService" level="WARN" />
+ <logger name="ajsc.ComputeService" level="WARN" />
+ <logger name="ajsc.VandelayService" level="WARN" />
+ <logger name="ajsc.FilePersistenceService" level="WARN" />
+ <logger name="ajsc.UserDefinedJarService" level="WARN" />
+ <logger name="ajsc.UserDefinedBeansDefService" level="WARN" />
+ <logger name="ajsc.LoggingConfigurationService" level="WARN" />
+
+ <!-- AJSC related loggers (DME2 Registration, csi logging, restlet, servlet
+ logging) -->
+ <logger name="org.codehaus.groovy" level="WARN" />
+ <logger name="com.att.scamper" level="WARN" />
+ <logger name="ajsc.utils" level="WARN" />
+ <logger name="ajsc.utils.DME2Helper" level="WARN" />
+ <logger name="ajsc.filters" level="WARN" />
+ <logger name="ajsc.beans.interceptors" level="WARN" />
+ <logger name="ajsc.restlet" level="WARN" />
+ <logger name="ajsc.servlet" level="WARN" />
+ <logger name="com.att.ajsc" level="WARN" />
+ <logger name="com.att.ajsc.csi.logging" level="WARN" />
+ <logger name="com.att.ajsc.filemonitor" level="WARN" />
+ <logger name="com.netflix.loadbalancer" level="WARN" />
+
+ <logger name="org.apache.zookeeper" level="OFF" />
+
+ <!-- Other Loggers that may help troubleshoot -->
+ <logger name="net.sf" level="WARN" />
+ <logger name="org.apache.commons.httpclient" level="WARN" />
+ <logger name="org.apache.commons" level="WARN" />
+ <logger name="org.apache.coyote" level="WARN" />
+ <logger name="org.apache.jasper" level="WARN" />
+
+ <!-- Camel Related Loggers (including restlet/servlet/jaxrs/cxf logging.
+ May aid in troubleshooting) -->
+ <logger name="org.apache.camel" level="WARN" />
+ <logger name="org.apache.cxf" level="WARN" />
+ <logger name="org.apache.camel.processor.interceptor" level="WARN" />
+ <logger name="org.apache.cxf.jaxrs.interceptor" level="WARN" />
+ <logger name="org.apache.cxf.service" level="WARN" />
+ <logger name="org.restlet" level="WARN" />
+ <logger name="org.apache.camel.component.restlet" level="WARN" />
+
+ <logger name="org.hibernate.validator" level="WARN" />
+ <logger name="org.hibernate" level="WARN" />
+ <logger name="org.hibernate.ejb" level="OFF" />
+
+ <!-- logback internals logging -->
+ <logger name="ch.qos.logback.classic" level="WARN" />
+ <logger name="ch.qos.logback.core" level="WARN" />
+
+ <logger name="org.eclipse.jetty" level="WARN" />
+
+ <!-- logback jms appenders & loggers definition starts here -->
+ <appender name="auditLogs"
+ class="ch.qos.logback.core.rolling.RollingFileAppender">
+ <filter class="ch.qos.logback.classic.filter.ThresholdFilter" />
+ <file>${logDirectory}/perf-audit/Audit-${lrmRVer}-${lrmRO}-${Pid}.log
+ </file>
+ <rollingPolicy class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
+ <fileNamePattern>${logDirectory}/perf-audit/Audit-${lrmRVer}-${lrmRO}-${Pid}.%i.log.zip
+ </fileNamePattern>
+ <minIndex>1</minIndex>
+ <maxIndex>9</maxIndex>
+ </rollingPolicy>
+ <triggeringPolicy
+ class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
+ <maxFileSize>5MB</maxFileSize>
+ </triggeringPolicy>
+ <encoder>
+ <pattern>"%d [%thread] %-5level %logger{1024} - %msg%n"</pattern>
+ </encoder>
+ </appender>
+ <appender name="perfLogs"
+ class="ch.qos.logback.core.rolling.RollingFileAppender">
+ <filter class="ch.qos.logback.classic.filter.ThresholdFilter" />
+ <file>${logDirectory}/perf-audit/Perform-${lrmRVer}-${lrmRO}-${Pid}.log
+ </file>
+ <rollingPolicy class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
+ <fileNamePattern>${logDirectory}/perf-audit/Perform-${lrmRVer}-${lrmRO}-${Pid}.%i.log.zip
+ </fileNamePattern>
+ <minIndex>1</minIndex>
+ <maxIndex>9</maxIndex>
+ </rollingPolicy>
+ <triggeringPolicy
+ class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
+ <maxFileSize>5MB</maxFileSize>
+ </triggeringPolicy>
+ <encoder>
+ <pattern>"%d [%thread] %-5level %logger{1024} - %msg%n"</pattern>
+ </encoder>
+ </appender>
+ <logger name="AuditRecord" level="INFO" additivity="false">
+ <appender-ref ref="auditLogs" />
+ </logger>
+ <logger name="AuditRecord_DirectCall" level="INFO" additivity="false">
+ <appender-ref ref="auditLogs" />
+ </logger>
+ <logger name="PerfTrackerRecord" level="INFO" additivity="false">
+ <appender-ref ref="perfLogs" />
+ </logger>
+ <!-- logback jms appenders & loggers definition ends here -->
+
+ <logger name="org.onap.aai.interceptors.post" level="DEBUG"
+ additivity="false">
+ <appender-ref ref="asynctranslog" />
+ </logger>
+
+ <logger name="org.onap.aai.interceptors.pre.SetLoggingContext" level="DEBUG">
+ <appender-ref ref="asyncAUDIT"/>
+ </logger>
+
+ <logger name="org.onap.aai.interceptors.post.ResetLoggingContext" level="DEBUG">
+ <appender-ref ref="asyncAUDIT"/>
+ </logger>
+
+ <logger name="org.onap.aai.dmaap" level="DEBUG" additivity="false">
+ <appender-ref ref="dmaapAAIEventConsumer" />
+ <appender-ref ref="dmaapAAIEventConsumerDebug" />
+ <appender-ref ref="dmaapAAIEventConsumerMetric" />
+ </logger>
+
+ <logger name="org.apache" level="OFF" />
+ <logger name="org.zookeeper" level="OFF" />
+ <logger name="com.thinkaurelius" level="WARN" />
+ <logger name="com.att.aft.dme2" level="WARN" />
+
+ <!-- ============================================================================ -->
+ <!-- General EELF logger -->
+ <!-- ============================================================================ -->
+ <logger name="com.att.eelf" level="WARN" additivity="false">
+ <appender-ref ref="asyncDEBUG" />
+ <appender-ref ref="asyncERROR" />
+ <appender-ref ref="asyncMETRIC" />
+ </logger>
+
+ <root level="DEBUG">
+ <appender-ref ref="external" />
+ </root>
+</configuration>
diff --git a/test/csit/plans/aai/resources/aai-traversal/appconfig/realm.properties b/test/csit/plans/aai/resources/aai-traversal/appconfig/realm.properties
new file mode 100644
index 000000000..fb692cc3e
--- /dev/null
+++ b/test/csit/plans/aai/resources/aai-traversal/appconfig/realm.properties
@@ -0,0 +1,12 @@
+# format : username: password[,rolename ...]
+# default username/password: AAI/AAI, MSO/MSO, ModelLoader/ModelLoader...
+AAI:OBF:1gfr1ev31gg7,admin
+MSO:OBF:1jzx1lz31k01,admin
+SDNC:OBF:1itr1i0l1i151isv,admin
+DCAE:OBF:1g8u1f9d1f991g8w,admin
+POLICY:OBF:1mk61i171ima1im41i0j1mko,admin
+ASDC:OBF:1f991j0u1j001f9d,admin
+VID:OBF:1jm91i0v1jl9,admin
+APPC:OBF:1f991ksf1ksf1f9d,admin
+ModelLoader:OBF:1qvu1v2h1sov1sar1wfw1j7j1wg21saj1sov1v1x1qxw,admin
+AaiUI:OBF:1gfr1p571unz1p4j1gg7,admin
diff --git a/test/csit/plans/aai/resources/docker-compose.yml b/test/csit/plans/aai/resources/docker-compose.yml
index 80865bb90..6f62e6ef2 100644
--- a/test/csit/plans/aai/resources/docker-compose.yml
+++ b/test/csit/plans/aai/resources/docker-compose.yml
@@ -4,13 +4,20 @@ services:
image: ${DOCKER_REGISTRY}/onap/aai-resources
hostname: aai-resources.api.simpledemo.onap.org
environment:
- - AAI_CHEF_ENV=simpledemo
- - AAI_CHEF_LOC=/var/chef/aai-data/environments
- - CHEF_BRANCH=master
- - CHEF_GIT_URL=http://gerrit.onap.org/r/aai
- LOCAL_USER_ID=${USER_ID}
+ - LOCAL_GROUP_ID=${GROUP_ID}
+ - SKIP_CREATE_DB_SCHEMA_AT_STARTUP=true
ports:
- 8447:8447
+ volumes:
+ - ${CURRENT_PWD}/aai-resources/appconfig/janusgraph-realtime.properties:/opt/app/aai-resources/resources/etc/appprops/janusgraph-realtime.properties
+ - ${CURRENT_PWD}/aai-resources/appconfig/janusgraph-cached.properties:/opt/app/aai-resources/resources/etc/appprops/janusgraph-cached.properties
+ - ${CURRENT_PWD}/aai-resources/appconfig/aaiconfig.properties:/opt/app/aai-resources/resources/etc/appprops/aaiconfig.properties
+ - ${CURRENT_PWD}/aai-resources/appconfig/application.properties:/opt/app/aai-resources/resources/application.properties
+ - ${CURRENT_PWD}/aai-resources/appconfig/logback.xml:/opt/app/aai-resources/resources/logback.xml
+ - ${CURRENT_PWD}/aai-resources/appconfig/localhost-access-logback.xml:/opt/app/aai-resources/resources/localhost-access-logback.xml
+ - ${CURRENT_PWD}/aai-resources/appconfig/aai_keystore:/opt/app/aai-resources/resources/etc/auth/aai_keystore
+ - ${CURRENT_PWD}/aai-resources/appconfig/realm.properties:/opt/app/aai-resources/resources/etc/auth/realm.properties
logging:
driver: "json-file"
options:
@@ -20,12 +27,18 @@ services:
image: ${DOCKER_REGISTRY}/onap/aai-traversal
hostname: aai-traversal.api.simpledemo.onap.org
environment:
- - AAI_CHEF_ENV=simpledemo
- - AAI_CHEF_LOC=/var/chef/aai-data/environments
- - CHEF_BRANCH=master
- - CHEF_GIT_URL=http://gerrit.onap.org/r/aai
- LOCAL_USER_ID=${USER_ID}
+ - LOCAL_GROUP_ID=${GROUP_ID}
- DISABLE_UPDATE_QUERY=true
+ volumes:
+ - ${CURRENT_PWD}/aai-traversal/appconfig/janusgraph-realtime.properties:/opt/app/aai-traversal/resources/etc/appprops/janusgraph-realtime.properties
+ - ${CURRENT_PWD}/aai-traversal/appconfig/janusgraph-cached.properties:/opt/app/aai-traversal/resources/etc/appprops/janusgraph-cached.properties
+ - ${CURRENT_PWD}/aai-traversal/appconfig/aaiconfig.properties:/opt/app/aai-traversal/resources/etc/appprops/aaiconfig.properties
+ - ${CURRENT_PWD}/aai-traversal/appconfig/application.properties:/opt/app/aai-traversal/resources/application.properties
+ - ${CURRENT_PWD}/aai-traversal/appconfig/logback.xml:/opt/app/aai-traversal/resources/logback.xml
+ - ${CURRENT_PWD}/aai-traversal/appconfig/localhost-access-logback.xml:/opt/app/aai-traversal/resources/localhost-access-logback.xml
+ - ${CURRENT_PWD}/aai-traversal/appconfig/aai_keystore:/opt/app/aai-traversal/resources/etc/auth/aai_keystore
+ - ${CURRENT_PWD}/aai-traversal/appconfig/realm.properties:/opt/app/aai-traversal/resources/etc/auth/realm.properties
ports:
- 8446:8446
logging:
@@ -49,16 +62,18 @@ services:
max-size: "30m"
max-file: "5"
aai.hbase.simpledemo.onap.org:
- image: ${HBASE_IMAGE}:${HBASE_VERSION}
+ image: cassandra:2.1
hostname: aai.hbase.simpledemo.onap.org
ports:
- - 2181:2181
- - 8080:8080
- - 8085:8085
- - 9090:9090
- - 16000:16000
- - 16010:16010
- - 16201:16201
+ - 7000:7000
+ - 7001:7001
+ - 7199:7199
+ - 9042:9042
+ environment:
+ - CASSANDRA_SEEDS=aai.hbase.simpledemo.onap.org
+ - CASSANDRA_DC=Heat
+ - CASSANDRA_RACK=Rack1
+ - CASSANDRA_AUTO_BOOTSTRAP=true
logging:
driver: "json-file"
options:
diff --git a/test/csit/plans/aai/resources/setup.sh b/test/csit/plans/aai/resources/setup.sh
index a4c7648c0..bd5cb5214 100644
--- a/test/csit/plans/aai/resources/setup.sh
+++ b/test/csit/plans/aai/resources/setup.sh
@@ -26,6 +26,8 @@ DOCKER_IMAGE_VERSION=$(cat /opt/config/docker_version.txt)
DOCKER_REGISTRY=${NEXUS_DOCKER_REPO}
DOCKER_IMAGE_VERSION=1.2-STAGING-latest
+export CURRENT_PWD=$(pwd);
+
function wait_for_container() {
CONTAINER_NAME="$1";
@@ -71,10 +73,8 @@ ${DOCKER_COMPOSE_CMD} stop
${DOCKER_COMPOSE_CMD} rm -f -v
# Start the hbase where the data will be stored
-HBASE_CONTAINER_NAME=$(${DOCKER_COMPOSE_CMD} up -d aai.hbase.simpledemo.onap.org 2>&1 | grep 'Creating' | grep -v 'volume' | grep -v 'network' | awk '{ print $2; }' | head -1);
-wait_for_container ${HBASE_CONTAINER_NAME} ' Started SelectChannelConnector@0.0.0.0:8085';
-wait_for_container ${HBASE_CONTAINER_NAME} ' Started SelectChannelConnector@0.0.0.0:8080';
-wait_for_container ${HBASE_CONTAINER_NAME} ' Started SelectChannelConnector@0.0.0.0:9095';
+CASSANDRA_CONTAINER_NAME=$(${DOCKER_COMPOSE_CMD} up -d aai.hbase.simpledemo.onap.org 2>&1 | grep 'Creating' | grep -v 'volume' | grep -v 'network' | awk '{ print $2; }' | head -1);
+wait_for_container $CASSANDRA_CONTAINER_NAME 'Listening for thrift clients';
USER_EXISTS=$(check_if_user_exists aaiadmin);
@@ -100,8 +100,10 @@ else
export USER_ID=$(id -u aaiadmin);
fi;
+$DOCKER_COMPOSE_CMD run --rm aai-resources.api.simpledemo.onap.org createDBSchema.sh
+
RESOURCES_CONTAINER_NAME=$(${DOCKER_COMPOSE_CMD} up -d aai-resources.api.simpledemo.onap.org 2>&1 | grep 'Creating' | grep -v 'volume' | grep -v 'network' | awk '{ print $2; }' | head -1);
-wait_for_container ${RESOURCES_CONTAINER_NAME} '0.0.0.0:8447';
+wait_for_container $RESOURCES_CONTAINER_NAME 'Resources Microservice Started';
docker logs ${RESOURCES_CONTAINER_NAME};
diff --git a/test/csit/plans/aai/traversal/aai-resources/appconfig/aai_keystore b/test/csit/plans/aai/traversal/aai-resources/appconfig/aai_keystore
new file mode 100644
index 000000000..1ddef0c9b
--- /dev/null
+++ b/test/csit/plans/aai/traversal/aai-resources/appconfig/aai_keystore
Binary files differ
diff --git a/test/csit/plans/aai/traversal/aai-resources/appconfig/aaiconfig.properties b/test/csit/plans/aai/traversal/aai-resources/appconfig/aaiconfig.properties
new file mode 100644
index 000000000..435507a81
--- /dev/null
+++ b/test/csit/plans/aai/traversal/aai-resources/appconfig/aaiconfig.properties
@@ -0,0 +1,119 @@
+#
+# ============LICENSE_START=======================================================
+# org.onap.aai
+# ================================================================================
+# Copyright © 2017 AT&T Intellectual Property. All rights reserved.
+# ================================================================================
+# 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.
+# ============LICENSE_END=========================================================
+#
+# ECOMP is a trademark and service mark of AT&T Intellectual Property.
+#
+
+####################################################################
+# REMEMBER TO THINK ABOUT ENVIRONMENTAL DIFFERENCES AND CHANGE THE
+# TEMPLATE AND *ALL* DATAFILES
+####################################################################
+
+####################################################################
+# REMEMBER TO THINK ABOUT ENVIRONMENTAL DIFFERENCES AND CHANGE THE
+# TEMPLATE AND *ALL* DATAFILES
+####################################################################
+
+aai.config.checktime=1000
+
+# this could come from siteconfig.pl?
+aai.config.nodename=AutomaticallyOverwritten
+
+
+
+aai.auth.cspcookies_on=false
+aai.dbmodel.filename=ex5.json
+
+aai.server.url.base=https://aai.api.simpledemo.onap.org:8443/aai/
+aai.server.url=https://aai.api.simpledemo.onap.org:8443/aai/v11/
+aai.global.callback.url=https://aai.api.simpledemo.onap.org:8443/aai/
+
+aai.tools.enableBasicAuth=true
+aai.tools.username=AAI
+aai.tools.password=AAI
+
+aai.truststore.filename=aai_keystore
+aai.truststore.passwd.x=OBF:1vn21ugu1saj1v9i1v941sar1ugw1vo0
+aai.keystore.filename=aai_keystore
+aai.keystore.passwd.x=OBF:1vn21ugu1saj1v9i1v941sar1ugw1vo0
+
+
+aai.notification.current.version=v11
+aai.notificationEvent.default.status=UNPROCESSED
+aai.notificationEvent.default.eventType=AAI-EVENT
+aai.notificationEvent.default.domain=dev
+aai.notificationEvent.default.sourceName=aai
+aai.notificationEvent.default.sequenceNumber=0
+aai.notificationEvent.default.severity=NORMAL
+aai.notificationEvent.default.version=v11
+# This one lets us enable/disable resource-version checking on updates/deletes
+aai.resourceversion.enableflag=true
+aai.logging.maxStackTraceEntries=10
+aai.default.api.version=v11
+
+
+
+# Used by Model-processing code
+aai.model.delete.sleep.per.vtx.msec=500
+aai.model.query.resultset.maxcount=50
+aai.model.query.timeout.sec=90
+
+# Used by Data Grooming
+aai.grooming.default.max.file=150
+aai.grooming.default.sleep.minutes=7
+
+aai.model.proc.max.levels=50
+aai.edgeTag.proc.max.levels=50
+
+# for transaction log
+aai.logging.hbase.interceptor=true
+aai.logging.hbase.enabled=true
+aai.logging.hbase.logrequest=true
+aai.logging.hbase.logresponse=true
+
+# for gremlin server
+aai.server.rebind=g
+hbase.table.name=aailogging.dev
+hbase.table.timestamp.format=YYYYMMdd-HH:mm:ss:SSS
+hbase.zookeeper.quorum=localhost
+hbase.zookeeper.property.clientPort=2181
+hbase.zookeeper.znode.parent=/hbase
+
+aai.logging.trace.enabled=true
+aai.logging.trace.logrequest=false
+aai.logging.trace.logresponse=false
+
+aai.transaction.logging=true
+aai.transaction.logging.get=false
+aai.transaction.logging.post=false
+
+#timeout for crud enabled flag
+aai.crud.timeoutenabled=true
+
+#timeout app specific -1 to bypass for that app id, a whole number to override the timeout with that value (in ms)
+aai.crud.timeout.appspecific=JUNITTESTAPP1,1|JUNITTESTAPP2,-1|DCAE-CCS,-1|DCAES,-1|AAIRctFeed,-1|NewvceCreator,-1|IANewvceCreator,-1|AAI-CSIOVALS,-1
+
+#default timeout limit added for crud if not overridden (in ms)
+aai.crud.timeoutlimit=100000
+#limit set for bulk consumer APIS
+aai.bulkconsumer.payloadlimit=30
+
+#uncomment and use header X-OverrideLimit with the value to override the bulk api limit
+#aai.bulkconsumer.payloadoverride=E6F04B93462CB5B0EDF41C05A9DDF5C3FE59748F
+aai.bulkconsumer.payloadoverride=false
diff --git a/test/csit/plans/aai/traversal/aai-resources/appconfig/application.properties b/test/csit/plans/aai/traversal/aai-resources/appconfig/application.properties
new file mode 100644
index 000000000..b9c51eaf2
--- /dev/null
+++ b/test/csit/plans/aai/traversal/aai-resources/appconfig/application.properties
@@ -0,0 +1,72 @@
+# The following info parameters are being referenced by ajsc6
+info.build.artifact=aai-resources
+info.build.name=resources
+info.build.description=Resources Microservice
+info.build.version=1.2.0
+
+spring.application.name=aai-resources
+spring.jersey.type=filter
+
+server.contextPath=/
+spring.autoconfigure.exclude=org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration,org.springframework.boot.autoconfigure.orm.jpa.HibernateJpaAutoConfiguration
+
+spring.profiles.active=production,dmaap
+#The max number of active threads in this pool
+server.tomcat.max-threads=200
+#The minimum number of threads always kept alive
+server.tomcat.min-Spare-Threads=25
+#The number of milliseconds before an idle thread shutsdown, unless the number of active threads are less or equal to minSpareThreads
+server.tomcat.max-idle-time=60000
+
+
+#Add this properties only if you want to change the URL, AJSC Framework interceptors will intercept
+#com.att.ajsc.common.interceptors.PreInterceptor.url=/**
+#com.att.ajsc.common.interceptors.PostInterceptor.url=/**
+
+#Servlet context parameters
+server.context_parameters.p-name=value #context parameter with p-name as key and value as value.
+kubernetes.namespace=org-onap-aai
+
+# If you get an application startup failure that the port is already taken
+# If thats not it, please check if the key-store file path makes sense
+server.local.startpath=aai-resources/src/main/resources/
+server.basic.auth.location=${server.local.startpath}etc/auth/realm.properties
+
+server.port=8447
+server.ssl.enabled-protocols=TLSv1.1,TLSv1.2
+server.ssl.key-store=${server.local.startpath}etc/auth/aai_keystore
+server.ssl.key-store-password=password(OBF:1vn21ugu1saj1v9i1v941sar1ugw1vo0)
+server.ssl.trust-store=${server.local.startpath}etc/auth/aai_keystore
+server.ssl.trust-store-password=password(OBF:1vn21ugu1saj1v9i1v941sar1ugw1vo0)
+server.ssl.client-auth=want
+server.ssl.key-store-type=JKS
+
+# JMS bind address host port
+jms.bind.address=tcp://localhost:61647
+dmaap.ribbon.eureka.enabled=false
+dmaap.ribbon.listOfServers=mr.api.simpledemo.onap.org:3904
+# Number of milliseconds to wait before making ping requests again
+dmaap.ribbon.ServerListRefreshInterval=75000
+dmaap.ribbon.NFLoadBalancerPingInterval=75000
+dmaap.ribbon.NFLoadBalancerRuleClassName=com.netflix.loadbalancer.AvailabilityFilteringRule
+dmaap.ribbon.NFLoadBalancerPingClassName=org.onap.aai.config.HttpPingImpl
+dmaap.ribbon.EnableMarkingServerDownOnReachingFailureLimit=true
+dmaap.ribbon.ServerDownFailureLimit=1
+# This needs to be verified but it seems that adding this property should automatically
+# Make the dmaap client change the url from http to https depending on the server
+dmaap.ribbon.securePorts=3905
+
+# Custom Dmaap Specific Configuration
+dmaap.ribbon.username=
+dmaap.ribbon.password=
+dmaap.ribbon.health.endpoint=/topics/AAI-EVENT
+# Number of seconds to wait for the ping to work and might need to increase this if the pings are all failing
+dmaap.ribbon.pingport.timeout=3
+
+niws.loadbalancer.dmaap.filterCircuitTripped=true
+niws.loadbalancer.dmaap.connectionFailureCountThreshold=3
+niws.loadbalancer.dmaap.circuitTripMaxTimeoutSeconds=180
+#dmaap.ribbon.retryableStatusCodes=404,503
+#dmaap.ribbon.retryableStatusCodes.MaxAutoRetriesNextServer=2
+#dmaap.ribbon.retryableStatusCodes.MaxAutoRetries=2
+#dmaap.ribbon.retryableStatusCodes.OkToRetryOnAllOperations=true
diff --git a/test/csit/plans/aai/traversal/aai-resources/appconfig/janusgraph-cached.properties b/test/csit/plans/aai/traversal/aai-resources/appconfig/janusgraph-cached.properties
new file mode 100644
index 000000000..c2110f77c
--- /dev/null
+++ b/test/csit/plans/aai/traversal/aai-resources/appconfig/janusgraph-cached.properties
@@ -0,0 +1,43 @@
+#
+# ============LICENSE_START=======================================================
+# org.onap.aai
+# ================================================================================
+# Copyright © 2017 AT&T Intellectual Property. All rights reserved.
+# ================================================================================
+# 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.
+# ============LICENSE_END=========================================================
+#
+# ECOMP is a trademark and service mark of AT&T Intellectual Property.
+#
+
+query.fast-property=true
+query.smart-limit=false
+
+# the following parameters are not reloaded automatically and require a manual bounce
+storage.backend=cassandra
+storage.hostname=aai.hbase.simpledemo.onap.org
+
+storage.cassandra.keyspace=aaigraph
+
+#schema.default=none
+storage.lock.wait-time=300
+storage.hbase.table=aaigraph-dev1.dev
+storage.hbase.ext.zookeeper.znode.parent=/hbase
+#caching on
+cache.db-cache = true
+cache.db-cache-clean-wait = 20
+cache.db-cache-time = 180000
+cache.db-cache-size = 0.3
+
+#load graphson file on startup
+load.snapshot.file=false
diff --git a/test/csit/plans/aai/traversal/aai-resources/appconfig/janusgraph-realtime.properties b/test/csit/plans/aai/traversal/aai-resources/appconfig/janusgraph-realtime.properties
new file mode 100644
index 000000000..4791431a1
--- /dev/null
+++ b/test/csit/plans/aai/traversal/aai-resources/appconfig/janusgraph-realtime.properties
@@ -0,0 +1,40 @@
+#
+# ============LICENSE_START=======================================================
+# org.onap.aai
+# ================================================================================
+# Copyright © 2017 AT&T Intellectual Property. All rights reserved.
+# ================================================================================
+# 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.
+# ============LICENSE_END=========================================================
+#
+# ECOMP is a trademark and service mark of AT&T Intellectual Property.
+#
+
+query.fast-property=true
+query.smart-limit=false
+
+# the following parameters are not reloaded automatically and require a manual bounce
+storage.backend=cassandra
+storage.hostname=aai.hbase.simpledemo.onap.org
+
+storage.cassandra.keyspace=aaigraph
+
+#schema.default=none
+storage.lock.wait-time=300
+storage.hbase.table=aaigraph-dev1.dev
+storage.hbase.ext.zookeeper.znode.parent=/hbase
+# Setting db-cache to false ensure the fastest propagation of changes across servers
+cache.db-cache = false
+
+#load graphson file on startup
+load.snapshot.file=false
diff --git a/test/csit/plans/aai/traversal/aai-resources/appconfig/localhost-access-logback.xml b/test/csit/plans/aai/traversal/aai-resources/appconfig/localhost-access-logback.xml
new file mode 100644
index 000000000..a318796c5
--- /dev/null
+++ b/test/csit/plans/aai/traversal/aai-resources/appconfig/localhost-access-logback.xml
@@ -0,0 +1,62 @@
+<!--
+
+ ============LICENSE_START=======================================================
+ org.onap.aai
+ ================================================================================
+ Copyright © 2017 AT&T Intellectual Property. All rights reserved.
+ ================================================================================
+ 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.
+ ============LICENSE_END=========================================================
+
+ ECOMP is a trademark and service mark of AT&T Intellectual Property.
+
+-->
+<configuration>
+ <property name="AJSC_HOME" value="${AJSC_HOME:-.}" />
+ <appender name="ACCESS"
+ class="ch.qos.logback.core.rolling.RollingFileAppender">
+ <file>${AJSC_HOME}/logs/ajsc-jetty/localhost_access.log</file>
+ <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
+ <fileNamePattern>${AJSC_HOME}/logs/ajsc-jetty/localhost_access.log.%d{yyyy-MM-dd}
+ </fileNamePattern>
+ </rollingPolicy>
+ <encoder class="org.onap.aai.logging.CustomLogPatternLayoutEncoder">
+ <Pattern>%a %u %z [%t] "%m %U%q" %s %b %y %i{X-TransactionId} %i{X-FromAppId} %i{X-Forwarded-For} %i{X-AAI-SSL-Client-CN} %i{X-AAI-SSL-Client-OU} %i{X-AAI-SSL-Client-O} %i{X-AAI-SSL-Client-L} %i{X-AAI-SSL-Client-ST} %i{X-AAI-SSL-Client-C} %i{X-AAI-SSL-Client-NotBefore} %i{X-AAI-SSL-Client-NotAfter} %i{X-AAI-SSL-Client-DN} %D</Pattern>
+ </encoder>
+ </appender>
+ <appender-ref ref="ACCESS" />
+</configuration>
+
+<!--
+%a - Remote IP address
+%A - Local IP address
+%b - Bytes sent, excluding HTTP headers, or '-' if no bytes were sent
+%B - Bytes sent, excluding HTTP headers
+%h - Remote host name
+%H - Request protocol
+%l - Remote logical username from identd (always returns '-')
+%m - Request method
+%p - Local port
+%q - Query string (prepended with a '?' if it exists, otherwise an empty string
+%r - First line of the request
+%s - HTTP status code of the response
+%S - User session ID
+%t - Date and time, in Common Log Format format
+%u - Remote user that was authenticated
+%U - Requested URL path
+%v - Local server name
+%I - current request thread name (can compare later with stacktraces)
+
+%z - Custom pattern that parses the cert for the subject
+%y - Custom pattern determines rest or dme2
+ --> \ No newline at end of file
diff --git a/test/csit/plans/aai/traversal/aai-resources/appconfig/logback.xml b/test/csit/plans/aai/traversal/aai-resources/appconfig/logback.xml
new file mode 100644
index 000000000..ee7ee61a6
--- /dev/null
+++ b/test/csit/plans/aai/traversal/aai-resources/appconfig/logback.xml
@@ -0,0 +1,391 @@
+<!--
+
+ ============LICENSE_START=======================================================
+ org.onap.aai
+ ================================================================================
+ Copyright © 2017 AT&T Intellectual Property. All rights reserved.
+ ================================================================================
+ 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.
+ ============LICENSE_END=========================================================
+
+ ECOMP is a trademark and service mark of AT&T Intellectual Property.
+
+-->
+<configuration scan="true" scanPeriod="60 seconds" debug="false">
+ <statusListener class="ch.qos.logback.core.status.NopStatusListener" />
+
+ <property resource="application.properties" />
+
+ <property name="namespace" value="aai-resources"/>
+
+ <property name="AJSC_HOME" value="${AJSC_HOME:-.}" />
+ <jmxConfigurator />
+ <property name="logDirectory" value="${AJSC_HOME}/logs" />
+ <property name="eelfLogPattern" value="%ecompStartTime|%date{yyyy-MM-dd'T'HH:mm:ss.SSSZ, UTC}|%X{requestId}|%X{serviceInstanceId}|%-10t|%X{serverName}|%X{serviceName}|%X{partnerName}|%X{statusCode}|%X{responseCode}|%replace(%replace(%X{responseDescription}){'\\|', '!'}){'\r|\n', '^'}|%X{instanceUUID}|%level|%X{severity}|%X{serverIpAddress}|%ecompElapsedTime|%X{server}|%X{clientIpAddress}|%eelfClassOfCaller|%X{unused}|%X{processKey}|%X{customField1}|%X{customField2}|%X{customField3}|%X{customField4}|co=%X{component}:%replace(%replace(%m){'\\|', '!'}){'\r|\n', '^'}%n"/>
+ <property name="eelfAuditLogPattern" value="%ecompStartTime|%date{yyyy-MM-dd'T'HH:mm:ss.SSSZ, UTC}|%X{requestId}|%X{serviceInstanceId}|%-10t|%X{serverName}|%X{serviceName}|%X{partnerName}|%X{statusCode}|%X{responseCode}|%replace(%replace(%X{responseDescription}){'\\|', '!'}){'\r|\n|\r\n', '^'}|%X{instanceUUID}|%level|%X{severity}|%X{serverIpAddress}|%ecompElapsedTime|%X{server}|%X{clientIpAddress}|%eelfClassOfCaller|%X{unused}|%X{processKey}|%X{customField1}|%X{customField2}|%X{customField3}|%X{customField4}|co=%X{component}:%replace(%replace(%m){'\\|', '!'}){'\r|\n', '^'}%n"/>
+ <property name="eelfMetricLogPattern" value="%ecompStartTime|%date{yyyy-MM-dd'T'HH:mm:ss.SSSZ, UTC}|%X{requestId}|%X{serviceInstanceId}|%-10t|%X{serverName}|%X{serviceName}|%X{partnerName}|%X{targetEntity}|%X{targetServiceName}|%X{statusCode}|%X{responseCode}|%replace(%replace(%X{responseDescription}){'\\|', '!'}){'\r|\n', '^'}|%X{instanceUUID}|%level|%X{severity}|%X{serverIpAddress}|%ecompElapsedTime|%X{server}|%X{clientIpAddress}|%eelfClassOfCaller|%X{unused}|%X{processKey}|%X{targetVirtualEntity}|%X{customField1}|%X{customField2}|%X{customField3}|%X{customField4}|co=%X{component}:%replace(%replace(%m){'\\|', '!'}){'\r|\n', '^'}%n"/>
+ <!-- <property name="eelfErrorLogPattern" value="%ecompStartTime|%X{requestId}|%-10t|%X{serviceName}|%X{partnerName}|%X{targetEntity}|%X{targetServiceName}|%ecompErrorCategory|%X{responseCode}|%replace(%replace(%X{responseDescription}){'\\|', '!'}){'\r|\n|\r\n', '^'}|co=%X{component}:%replace(%replace(%m){'\\|', '!'}){'\r|\n', '^'}%n"/> -->
+ <property name="eelfErrorLogPattern" value="%ecompStartTime|%X{requestId}|%-10t|%X{serviceName}|%X{partnerName}|%X{targetEntity}|%X{targetServiceName}|%ecompErrorCategory|%ecompResponseCode|%ecompResponseDescription|co=%X{component}:%replace(%replace(%m){'\\|', '!'}){'\r|\n', '^'}%n"/>
+ <property name="eelfTransLogPattern" value="%ecompStartTime|%date{yyyy-MM-dd'T'HH:mm:ss.SSSZ, UTC}|%X{requestId}|%X{serviceInstanceId}|%-10t|%X{serverName}|%X{serviceName}|%X{partnerName}|%X{statusCode}|%X{responseCode}|%replace(%replace(%X{responseDescription}){'\\|', '!'}){'\r|\n', '^'}|%X{instanceUUID}|%level|%X{severity}|%X{serverIpAddress}|%ecompElapsedTime|%X{server}|%X{clientIpAddress}|%eelfClassOfCaller|%X{unused}|%X{processKey}|%X{customField1}|%X{customField2}|%X{customField3}|%X{customField4}|co=%X{partnerName}:%m%n"/>
+
+ <conversionRule conversionWord="clr" converterClass="org.springframework.boot.logging.logback.ColorConverter" />
+ <conversionRule conversionWord="wex" converterClass="org.springframework.boot.logging.logback.WhitespaceThrowableProxyConverter" />
+ <conversionRule conversionWord="wEx" converterClass="org.springframework.boot.logging.logback.ExtendedWhitespaceThrowableProxyConverter" />
+ <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
+ <encoder>
+ <pattern>
+ %clr(%d{yyyy-MM-dd HH:mm:ss.SSS}){faint} %clr(${LOG_LEVEL_PATTERN:-%5p}) %clr(${PID:- }){magenta} %clr(---){faint} %clr([%15.15t]){faint} %clr(%-40.40logger{39}){cyan} %clr(:){faint} %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}
+ </pattern>
+ </encoder>
+ </appender>
+
+ <appender name="SANE" class="ch.qos.logback.core.rolling.RollingFileAppender">
+ <file>${logDirectory}/rest/sane.log</file>
+ <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
+ <fileNamePattern>${logDirectory}/rest/sane.log.%d{yyyy-MM-dd}</fileNamePattern>
+ </rollingPolicy>
+ <encoder>
+ <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{1024} - %msg%n
+ </pattern>
+ </encoder>
+ </appender>
+
+ <appender name="asyncSANE" class="ch.qos.logback.classic.AsyncAppender">
+ <queueSize>1000</queueSize>
+ <includeCallerData>true</includeCallerData>
+ <appender-ref ref="SANE" />
+ </appender>
+
+ <appender name="METRIC"
+ class="ch.qos.logback.core.rolling.RollingFileAppender">
+ <filter class="ch.qos.logback.classic.filter.LevelFilter">
+ <level>INFO</level>
+ <onMatch>ACCEPT</onMatch>
+ <onMismatch>DENY</onMismatch>
+ </filter>
+ <file>${logDirectory}/rest/metrics.log</file>
+ <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
+ <fileNamePattern>${logDirectory}/rest/metrics.log.%d{yyyy-MM-dd}
+ </fileNamePattern>
+ </rollingPolicy>
+ <encoder class="org.onap.aai.logging.EcompEncoder">
+ <pattern>${eelfMetricLogPattern}</pattern>
+ </encoder>
+ </appender>
+ <appender name="asyncMETRIC" class="ch.qos.logback.classic.AsyncAppender">
+ <queueSize>1000</queueSize>
+ <includeCallerData>true</includeCallerData>
+ <appender-ref ref="METRIC" />
+ </appender>
+
+ <appender name="DEBUG"
+ class="ch.qos.logback.core.rolling.RollingFileAppender">
+ <filter class="ch.qos.logback.classic.filter.LevelFilter">
+ <level>DEBUG</level>
+ <onMatch>ACCEPT</onMatch>
+ <onMismatch>DENY</onMismatch>
+ </filter>
+ <file>${logDirectory}/rest/debug.log</file>
+ <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
+ <fileNamePattern>${logDirectory}/rest/debug.log.%d{yyyy-MM-dd}
+ </fileNamePattern>
+ </rollingPolicy>
+ <encoder class="org.onap.aai.logging.EcompEncoder">
+ <pattern>${eelfLogPattern}</pattern>
+ </encoder>
+ </appender>
+
+ <appender name="asyncDEBUG" class="ch.qos.logback.classic.AsyncAppender">
+ <queueSize>1000</queueSize>
+ <includeCallerData>true</includeCallerData>
+ <appender-ref ref="DEBUG" />
+ </appender>
+
+ <appender name="ERROR"
+ class="ch.qos.logback.core.rolling.RollingFileAppender">
+ <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
+ <level>WARN</level>
+ </filter>
+ <file>${logDirectory}/rest/error.log</file>
+ <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
+ <fileNamePattern>${logDirectory}/rest/error.log.%d{yyyy-MM-dd}
+ </fileNamePattern>
+ </rollingPolicy>
+ <encoder class="org.onap.aai.logging.EcompEncoder">
+ <pattern>${eelfErrorLogPattern}</pattern>
+ </encoder>
+ </appender>
+
+ <appender name="asyncERROR" class="ch.qos.logback.classic.AsyncAppender">
+ <queueSize>1000</queueSize>
+ <includeCallerData>true</includeCallerData>
+ <appender-ref ref="ERROR" />
+ </appender>
+
+ <appender name="AUDIT"
+ class="ch.qos.logback.core.rolling.RollingFileAppender">
+ <file>${logDirectory}/rest/audit.log</file>
+ <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
+ <fileNamePattern>${logDirectory}/rest/audit.log.%d{yyyy-MM-dd}
+ </fileNamePattern>
+ </rollingPolicy>
+ <encoder class="org.onap.aai.logging.EcompEncoder">
+ <pattern>${eelfAuditLogPattern}</pattern>
+ </encoder>
+ </appender>
+
+ <appender name="asyncAUDIT" class="ch.qos.logback.classic.AsyncAppender">
+ <queueSize>1000</queueSize>
+ <includeCallerData>true</includeCallerData>
+ <appender-ref ref="AUDIT" />
+ </appender>
+
+ <appender name="translog"
+ class="ch.qos.logback.core.rolling.RollingFileAppender">
+ <filter class="ch.qos.logback.classic.filter.LevelFilter">
+ <level>DEBUG</level>
+ <onMatch>ACCEPT</onMatch>
+ <onMismatch>DENY</onMismatch>
+ </filter>
+ <file>${logDirectory}/rest/translog.log</file>
+ <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
+ <fileNamePattern>${logDirectory}/rest/translog.log.%d{yyyy-MM-dd}
+ </fileNamePattern>
+ </rollingPolicy>
+ <encoder class="org.onap.aai.logging.EcompEncoder">
+ <pattern>${eelfTransLogPattern}</pattern>
+ </encoder>
+ </appender>
+
+ <appender name="asynctranslog" class="ch.qos.logback.classic.AsyncAppender">
+ <queueSize>1000</queueSize>
+ <includeCallerData>true</includeCallerData>
+ <appender-ref ref="translog" />
+ </appender>
+
+ <appender name="dmaapAAIEventConsumer"
+ class="ch.qos.logback.core.rolling.RollingFileAppender">
+ <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
+ <level>WARN</level>
+ </filter>
+ <File>${logDirectory}/dmaapAAIEventConsumer/error.log</File>
+ <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
+ <fileNamePattern>${logDirectory}/dmaapAAIEventConsumer/error.log.%d{yyyy-MM-dd}
+ </fileNamePattern>
+ </rollingPolicy>
+ <encoder class="org.onap.aai.logging.EcompEncoder">
+ <pattern>${eelfLogPattern}</pattern>
+ </encoder>
+ </appender>
+
+ <appender name="dmaapAAIEventConsumerDebug"
+ class="ch.qos.logback.core.rolling.RollingFileAppender">
+ <filter class="ch.qos.logback.classic.filter.LevelFilter">
+ <level>DEBUG</level>
+ <onMatch>ACCEPT</onMatch>
+ <onMismatch>DENY</onMismatch>
+ </filter>
+ <File>${logDirectory}/dmaapAAIEventConsumer/debug.log</File>
+ <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
+ <fileNamePattern>${logDirectory}/dmaapAAIEventConsumer/debug.log.%d{yyyy-MM-dd}
+ </fileNamePattern>
+ </rollingPolicy>
+ <encoder class="org.onap.aai.logging.EcompEncoder">
+ <pattern>${eelfLogPattern}</pattern>
+ </encoder>
+ </appender>
+ <appender name="dmaapAAIEventConsumerMetric"
+ class="ch.qos.logback.core.rolling.RollingFileAppender">
+ <filter class="ch.qos.logback.classic.filter.LevelFilter">
+ <level>INFO</level>
+ <onMatch>ACCEPT</onMatch>
+ <onMismatch>DENY</onMismatch>
+ </filter>
+ <File>${logDirectory}/dmaapAAIEventConsumer/metrics.log</File>
+ <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
+ <fileNamePattern>${logDirectory}/dmaapAAIEventConsumer/metrics.log.%d{yyyy-MM-dd}
+ </fileNamePattern>
+ </rollingPolicy>
+ <encoder class="org.onap.aai.logging.EcompEncoder">
+ <pattern>${eelfMetricLogPattern}</pattern>
+ </encoder>
+ </appender>
+ <appender name="external"
+ class="ch.qos.logback.core.rolling.RollingFileAppender">
+ <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
+ <level>WARN</level>
+ </filter>
+ <file>${logDirectory}/external/external.log</file>
+ <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
+ <fileNamePattern>${logDirectory}/external/external.log.%d{yyyy-MM-dd}
+ </fileNamePattern>
+ </rollingPolicy>
+ <encoder class="org.onap.aai.logging.EcompEncoder">
+ <pattern>${eelfLogPattern}</pattern>
+ </encoder>
+ </appender>
+ <logger name="org.onap.aai" level="DEBUG" additivity="false">
+ <appender-ref ref="asyncDEBUG" />
+ <appender-ref ref="asyncERROR" />
+ <appender-ref ref="asyncMETRIC" />
+ <appender-ref ref="asyncSANE" />
+ </logger>
+
+ <!-- Spring related loggers -->
+ <logger name="org.springframework" level="WARN" />
+ <logger name="org.springframework.beans" level="WARN" />
+ <logger name="org.springframework.web" level="WARN" />
+ <logger name="com.blog.spring.jms" level="WARN" />
+ <logger name="com.jayway.jsonpath" level="WARN" />
+
+ <!-- AJSC Services (bootstrap services) -->
+ <logger name="ajsc" level="WARN" />
+ <logger name="ajsc.RouteMgmtService" level="WARN" />
+ <logger name="ajsc.ComputeService" level="WARN" />
+ <logger name="ajsc.VandelayService" level="WARN" />
+ <logger name="ajsc.FilePersistenceService" level="WARN" />
+ <logger name="ajsc.UserDefinedJarService" level="WARN" />
+ <logger name="ajsc.UserDefinedBeansDefService" level="WARN" />
+ <logger name="ajsc.LoggingConfigurationService" level="WARN" />
+
+ <!-- AJSC related loggers (DME2 Registration, csi logging, restlet, servlet
+ logging) -->
+ <logger name="org.codehaus.groovy" level="WARN" />
+ <logger name="com.att.scamper" level="WARN" />
+ <logger name="ajsc.utils" level="WARN" />
+ <logger name="ajsc.utils.DME2Helper" level="WARN" />
+ <logger name="ajsc.filters" level="WARN" />
+ <logger name="ajsc.beans.interceptors" level="WARN" />
+ <logger name="ajsc.restlet" level="WARN" />
+ <logger name="ajsc.servlet" level="WARN" />
+ <logger name="com.att.ajsc" level="WARN" />
+ <logger name="com.att.ajsc.csi.logging" level="WARN" />
+ <logger name="com.att.ajsc.filemonitor" level="WARN" />
+ <logger name="com.netflix.loadbalancer" level="WARN" />
+
+ <logger name="org.apache.zookeeper" level="OFF" />
+
+ <!-- Other Loggers that may help troubleshoot -->
+ <logger name="net.sf" level="WARN" />
+ <logger name="org.apache.commons.httpclient" level="WARN" />
+ <logger name="org.apache.commons" level="WARN" />
+ <logger name="org.apache.coyote" level="WARN" />
+ <logger name="org.apache.jasper" level="WARN" />
+
+ <!-- Camel Related Loggers (including restlet/servlet/jaxrs/cxf logging.
+ May aid in troubleshooting) -->
+ <logger name="org.apache.camel" level="WARN" />
+ <logger name="org.apache.cxf" level="WARN" />
+ <logger name="org.apache.camel.processor.interceptor" level="WARN" />
+ <logger name="org.apache.cxf.jaxrs.interceptor" level="WARN" />
+ <logger name="org.apache.cxf.service" level="WARN" />
+ <logger name="org.restlet" level="WARN" />
+ <logger name="org.apache.camel.component.restlet" level="WARN" />
+
+ <logger name="org.hibernate.validator" level="WARN" />
+ <logger name="org.hibernate" level="WARN" />
+ <logger name="org.hibernate.ejb" level="OFF" />
+
+ <!-- logback internals logging -->
+ <logger name="ch.qos.logback.classic" level="WARN" />
+ <logger name="ch.qos.logback.core" level="WARN" />
+
+ <logger name="org.eclipse.jetty" level="WARN" />
+
+ <!-- logback jms appenders & loggers definition starts here -->
+ <appender name="auditLogs"
+ class="ch.qos.logback.core.rolling.RollingFileAppender">
+ <filter class="ch.qos.logback.classic.filter.ThresholdFilter" />
+ <file>${logDirectory}/perf-audit/Audit-${lrmRVer}-${lrmRO}-${Pid}.log
+ </file>
+ <rollingPolicy class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
+ <fileNamePattern>${logDirectory}/perf-audit/Audit-${lrmRVer}-${lrmRO}-${Pid}.%i.log.zip
+ </fileNamePattern>
+ <minIndex>1</minIndex>
+ <maxIndex>9</maxIndex>
+ </rollingPolicy>
+ <triggeringPolicy
+ class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
+ <maxFileSize>5MB</maxFileSize>
+ </triggeringPolicy>
+ <encoder>
+ <pattern>"%d [%thread] %-5level %logger{1024} - %msg%n"</pattern>
+ </encoder>
+ </appender>
+ <appender name="perfLogs"
+ class="ch.qos.logback.core.rolling.RollingFileAppender">
+ <filter class="ch.qos.logback.classic.filter.ThresholdFilter" />
+ <file>${logDirectory}/perf-audit/Perform-${lrmRVer}-${lrmRO}-${Pid}.log
+ </file>
+ <rollingPolicy class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
+ <fileNamePattern>${logDirectory}/perf-audit/Perform-${lrmRVer}-${lrmRO}-${Pid}.%i.log.zip
+ </fileNamePattern>
+ <minIndex>1</minIndex>
+ <maxIndex>9</maxIndex>
+ </rollingPolicy>
+ <triggeringPolicy
+ class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
+ <maxFileSize>5MB</maxFileSize>
+ </triggeringPolicy>
+ <encoder>
+ <pattern>"%d [%thread] %-5level %logger{1024} - %msg%n"</pattern>
+ </encoder>
+ </appender>
+ <logger name="AuditRecord" level="INFO" additivity="false">
+ <appender-ref ref="auditLogs" />
+ </logger>
+ <logger name="AuditRecord_DirectCall" level="INFO" additivity="false">
+ <appender-ref ref="auditLogs" />
+ </logger>
+ <logger name="PerfTrackerRecord" level="INFO" additivity="false">
+ <appender-ref ref="perfLogs" />
+ </logger>
+ <!-- logback jms appenders & loggers definition ends here -->
+
+ <logger name="org.onap.aai.interceptors.post" level="DEBUG"
+ additivity="false">
+ <appender-ref ref="asynctranslog" />
+ </logger>
+
+ <logger name="org.onap.aai.interceptors.pre.SetLoggingContext" level="DEBUG">
+ <appender-ref ref="asyncAUDIT"/>
+ </logger>
+
+ <logger name="org.onap.aai.interceptors.post.ResetLoggingContext" level="DEBUG">
+ <appender-ref ref="asyncAUDIT"/>
+ </logger>
+
+ <logger name="org.onap.aai.dmaap" level="DEBUG" additivity="false">
+ <appender-ref ref="dmaapAAIEventConsumer" />
+ <appender-ref ref="dmaapAAIEventConsumerDebug" />
+ <appender-ref ref="dmaapAAIEventConsumerMetric" />
+ </logger>
+
+ <logger name="org.apache" level="OFF" />
+ <logger name="org.zookeeper" level="OFF" />
+ <logger name="com.thinkaurelius" level="WARN" />
+ <logger name="com.att.aft.dme2" level="WARN" />
+
+ <!-- ============================================================================ -->
+ <!-- General EELF logger -->
+ <!-- ============================================================================ -->
+ <logger name="com.att.eelf" level="WARN" additivity="false">
+ <appender-ref ref="asyncDEBUG" />
+ <appender-ref ref="asyncERROR" />
+ <appender-ref ref="asyncMETRIC" />
+ </logger>
+
+ <root level="DEBUG">
+ <appender-ref ref="external" />
+ </root>
+</configuration>
diff --git a/test/csit/plans/aai/traversal/aai-resources/appconfig/realm.properties b/test/csit/plans/aai/traversal/aai-resources/appconfig/realm.properties
new file mode 100644
index 000000000..fb692cc3e
--- /dev/null
+++ b/test/csit/plans/aai/traversal/aai-resources/appconfig/realm.properties
@@ -0,0 +1,12 @@
+# format : username: password[,rolename ...]
+# default username/password: AAI/AAI, MSO/MSO, ModelLoader/ModelLoader...
+AAI:OBF:1gfr1ev31gg7,admin
+MSO:OBF:1jzx1lz31k01,admin
+SDNC:OBF:1itr1i0l1i151isv,admin
+DCAE:OBF:1g8u1f9d1f991g8w,admin
+POLICY:OBF:1mk61i171ima1im41i0j1mko,admin
+ASDC:OBF:1f991j0u1j001f9d,admin
+VID:OBF:1jm91i0v1jl9,admin
+APPC:OBF:1f991ksf1ksf1f9d,admin
+ModelLoader:OBF:1qvu1v2h1sov1sar1wfw1j7j1wg21saj1sov1v1x1qxw,admin
+AaiUI:OBF:1gfr1p571unz1p4j1gg7,admin
diff --git a/test/csit/plans/aai/traversal/aai-traversal/appconfig/aai_keystore b/test/csit/plans/aai/traversal/aai-traversal/appconfig/aai_keystore
new file mode 100644
index 000000000..1ddef0c9b
--- /dev/null
+++ b/test/csit/plans/aai/traversal/aai-traversal/appconfig/aai_keystore
Binary files differ
diff --git a/test/csit/plans/aai/traversal/aai-traversal/appconfig/aaiconfig.properties b/test/csit/plans/aai/traversal/aai-traversal/appconfig/aaiconfig.properties
new file mode 100644
index 000000000..cef109033
--- /dev/null
+++ b/test/csit/plans/aai/traversal/aai-traversal/appconfig/aaiconfig.properties
@@ -0,0 +1,114 @@
+#
+# ============LICENSE_START=======================================================
+# org.onap.aai
+# ================================================================================
+# Copyright © 2017 AT&T Intellectual Property. All rights reserved.
+# ================================================================================
+# 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.
+# ============LICENSE_END=========================================================
+#
+# ECOMP is a trademark and service mark of AT&T Intellectual Property.
+#
+
+####################################################################
+# REMEMBER TO THINK ABOUT ENVIRONMENTAL DIFFERENCES AND CHANGE THE
+# TEMPLATE AND *ALL* DATAFILES
+####################################################################
+
+####################################################################
+# REMEMBER TO THINK ABOUT ENVIRONMENTAL DIFFERENCES AND CHANGE THE
+# TEMPLATE AND *ALL* DATAFILES
+####################################################################
+
+aai.config.checktime=1000
+
+# this could come from siteconfig.pl?
+aai.config.nodename=AutomaticallyOverwritten
+
+
+
+aai.auth.cspcookies_on=false
+aai.dbmodel.filename=ex5.json
+
+aai.server.url.base=https://aai.api.simpledemo.onap.org:8443/aai/
+aai.server.url=https://aai.api.simpledemo.onap.org:8443/aai/v11/
+aai.global.callback.url=https://aai.api.simpledemo.onap.org:8443/aai/
+
+aai.tools.enableBasicAuth=true
+aai.tools.username=AAI
+aai.tools.password=AAI
+
+aai.truststore.filename=aai_keystore
+aai.truststore.passwd.x=OBF:1vn21ugu1saj1v9i1v941sar1ugw1vo0
+aai.keystore.filename=aai_keystore
+aai.keystore.passwd.x=OBF:1vn21ugu1saj1v9i1v941sar1ugw1vo0
+
+
+aai.notification.current.version=v11
+aai.notificationEvent.default.status=UNPROCESSED
+aai.notificationEvent.default.eventType=AAI-EVENT
+aai.notificationEvent.default.domain=dev
+aai.notificationEvent.default.sourceName=aai
+aai.notificationEvent.default.sequenceNumber=0
+aai.notificationEvent.default.severity=NORMAL
+aai.notificationEvent.default.version=v11
+# This one lets us enable/disable resource-version checking on updates/deletes
+aai.resourceversion.enableflag=true
+aai.logging.maxStackTraceEntries=10
+aai.default.api.version=v11
+
+
+
+# Used by Model-processing code
+aai.model.delete.sleep.per.vtx.msec=500
+aai.model.query.resultset.maxcount=50
+aai.model.query.timeout.sec=90
+
+# Used by Data Grooming
+aai.grooming.default.max.file=150
+aai.grooming.default.sleep.minutes=7
+
+aai.model.proc.max.levels=50
+aai.edgeTag.proc.max.levels=50
+
+# for transaction log
+aai.logging.hbase.interceptor=true
+aai.logging.hbase.enabled=true
+aai.logging.hbase.logrequest=true
+aai.logging.hbase.logresponse=true
+
+# for gremlin server
+aai.server.rebind=g
+hbase.table.name=aailogging.dev
+hbase.table.timestamp.format=YYYYMMdd-HH:mm:ss:SSS
+hbase.zookeeper.quorum=localhost
+hbase.zookeeper.property.clientPort=2181
+hbase.zookeeper.znode.parent=/hbase
+
+aai.logging.trace.enabled=true
+aai.logging.trace.logrequest=false
+aai.logging.trace.logresponse=false
+
+aai.transaction.logging=true
+aai.transaction.logging.get=false
+aai.transaction.logging.post=false
+
+#timeout for traversal enabled flag
+aai.traversal.timeoutenabled=true
+
+#timeout app specific
+aai.traversal.timeout.appspecific=JUNITTESTAPP1,1|JUNITTESTAPP2,-1|DCAE-CCS,-1|DCAES,-1|AAI-FILEGEN-GFPIP,-1
+
+#default timeout limit added for traversal if not overridden (in ms)
+aai.traversal.timeoutlimit=180000
+
diff --git a/test/csit/plans/aai/traversal/aai-traversal/appconfig/application.properties b/test/csit/plans/aai/traversal/aai-traversal/appconfig/application.properties
new file mode 100644
index 000000000..0292512c1
--- /dev/null
+++ b/test/csit/plans/aai/traversal/aai-traversal/appconfig/application.properties
@@ -0,0 +1,72 @@
+# The following info parameters are being referenced by ajsc6
+info.build.artifact=aai-traversal
+info.build.name=traversal
+info.build.description=Traversal Microservice
+info.build.version=1.2.0
+
+spring.application.name=aai-traversal
+spring.jersey.type=filter
+
+server.contextPath=/
+spring.autoconfigure.exclude=org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration,org.springframework.boot.autoconfigure.orm.jpa.HibernateJpaAutoConfiguration
+
+spring.profiles.active=production,dmaap
+#The max number of active threads in this pool
+server.tomcat.max-threads=200
+#The minimum number of threads always kept alive
+server.tomcat.min-Spare-Threads=25
+#The number of milliseconds before an idle thread shutsdown, unless the number of active threads are less or equal to minSpareThreads
+server.tomcat.max-idle-time=60000
+
+
+#Add this properties only if you want to change the URL, AJSC Framework interceptors will intercept
+#com.att.ajsc.common.interceptors.PreInterceptor.url=/**
+#com.att.ajsc.common.interceptors.PostInterceptor.url=/**
+
+#Servlet context parameters
+server.context_parameters.p-name=value #context parameter with p-name as key and value as value.
+kubernetes.namespace=org-onap-aai
+
+# If you get an application startup failure that the port is already taken
+# If thats not it, please check if the key-store file path makes sense
+server.local.startpath=aai-traversal/src/main/resources/
+server.basic.auth.location=${server.local.startpath}etc/auth/realm.properties
+
+server.port=8446
+server.ssl.enabled-protocols=TLSv1.1,TLSv1.2
+server.ssl.key-store=${server.local.startpath}etc/auth/aai_keystore
+server.ssl.key-store-password=password(OBF:1vn21ugu1saj1v9i1v941sar1ugw1vo0)
+server.ssl.trust-store=${server.local.startpath}etc/auth/aai_keystore
+server.ssl.trust-store-password=password(OBF:1vn21ugu1saj1v9i1v941sar1ugw1vo0)
+server.ssl.client-auth=want
+server.ssl.key-store-type=JKS
+
+# JMS bind address host port
+jms.bind.address=tcp://localhost:61647
+dmaap.ribbon.eureka.enabled=false
+dmaap.ribbon.listOfServers=mr.api.simpledemo.onap.org:3904
+# Number of milliseconds to wait before making ping requests again
+dmaap.ribbon.ServerListRefreshInterval=75000
+dmaap.ribbon.NFLoadBalancerPingInterval=75000
+dmaap.ribbon.NFLoadBalancerRuleClassName=com.netflix.loadbalancer.AvailabilityFilteringRule
+dmaap.ribbon.NFLoadBalancerPingClassName=org.onap.aai.config.HttpPingImpl
+dmaap.ribbon.EnableMarkingServerDownOnReachingFailureLimit=true
+dmaap.ribbon.ServerDownFailureLimit=1
+# This needs to be verified but it seems that adding this property should automatically
+# Make the dmaap client change the url from http to https depending on the server
+dmaap.ribbon.securePorts=3905
+
+# Custom Dmaap Specific Configuration
+dmaap.ribbon.username=
+dmaap.ribbon.password=
+dmaap.ribbon.health.endpoint=/topics/AAI-EVENT
+# Number of seconds to wait for the ping to work and might need to increase this if the pings are all failing
+dmaap.ribbon.pingport.timeout=3
+
+niws.loadbalancer.dmaap.filterCircuitTripped=true
+niws.loadbalancer.dmaap.connectionFailureCountThreshold=3
+niws.loadbalancer.dmaap.circuitTripMaxTimeoutSeconds=180
+#dmaap.ribbon.retryableStatusCodes=404,503
+#dmaap.ribbon.retryableStatusCodes.MaxAutoRetriesNextServer=2
+#dmaap.ribbon.retryableStatusCodes.MaxAutoRetries=2
+#dmaap.ribbon.retryableStatusCodes.OkToRetryOnAllOperations=true
diff --git a/test/csit/plans/aai/traversal/aai-traversal/appconfig/janusgraph-cached.properties b/test/csit/plans/aai/traversal/aai-traversal/appconfig/janusgraph-cached.properties
new file mode 100644
index 000000000..c2110f77c
--- /dev/null
+++ b/test/csit/plans/aai/traversal/aai-traversal/appconfig/janusgraph-cached.properties
@@ -0,0 +1,43 @@
+#
+# ============LICENSE_START=======================================================
+# org.onap.aai
+# ================================================================================
+# Copyright © 2017 AT&T Intellectual Property. All rights reserved.
+# ================================================================================
+# 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.
+# ============LICENSE_END=========================================================
+#
+# ECOMP is a trademark and service mark of AT&T Intellectual Property.
+#
+
+query.fast-property=true
+query.smart-limit=false
+
+# the following parameters are not reloaded automatically and require a manual bounce
+storage.backend=cassandra
+storage.hostname=aai.hbase.simpledemo.onap.org
+
+storage.cassandra.keyspace=aaigraph
+
+#schema.default=none
+storage.lock.wait-time=300
+storage.hbase.table=aaigraph-dev1.dev
+storage.hbase.ext.zookeeper.znode.parent=/hbase
+#caching on
+cache.db-cache = true
+cache.db-cache-clean-wait = 20
+cache.db-cache-time = 180000
+cache.db-cache-size = 0.3
+
+#load graphson file on startup
+load.snapshot.file=false
diff --git a/test/csit/plans/aai/traversal/aai-traversal/appconfig/janusgraph-realtime.properties b/test/csit/plans/aai/traversal/aai-traversal/appconfig/janusgraph-realtime.properties
new file mode 100644
index 000000000..4791431a1
--- /dev/null
+++ b/test/csit/plans/aai/traversal/aai-traversal/appconfig/janusgraph-realtime.properties
@@ -0,0 +1,40 @@
+#
+# ============LICENSE_START=======================================================
+# org.onap.aai
+# ================================================================================
+# Copyright © 2017 AT&T Intellectual Property. All rights reserved.
+# ================================================================================
+# 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.
+# ============LICENSE_END=========================================================
+#
+# ECOMP is a trademark and service mark of AT&T Intellectual Property.
+#
+
+query.fast-property=true
+query.smart-limit=false
+
+# the following parameters are not reloaded automatically and require a manual bounce
+storage.backend=cassandra
+storage.hostname=aai.hbase.simpledemo.onap.org
+
+storage.cassandra.keyspace=aaigraph
+
+#schema.default=none
+storage.lock.wait-time=300
+storage.hbase.table=aaigraph-dev1.dev
+storage.hbase.ext.zookeeper.znode.parent=/hbase
+# Setting db-cache to false ensure the fastest propagation of changes across servers
+cache.db-cache = false
+
+#load graphson file on startup
+load.snapshot.file=false
diff --git a/test/csit/plans/aai/traversal/aai-traversal/appconfig/localhost-access-logback.xml b/test/csit/plans/aai/traversal/aai-traversal/appconfig/localhost-access-logback.xml
new file mode 100644
index 000000000..a318796c5
--- /dev/null
+++ b/test/csit/plans/aai/traversal/aai-traversal/appconfig/localhost-access-logback.xml
@@ -0,0 +1,62 @@
+<!--
+
+ ============LICENSE_START=======================================================
+ org.onap.aai
+ ================================================================================
+ Copyright © 2017 AT&T Intellectual Property. All rights reserved.
+ ================================================================================
+ 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.
+ ============LICENSE_END=========================================================
+
+ ECOMP is a trademark and service mark of AT&T Intellectual Property.
+
+-->
+<configuration>
+ <property name="AJSC_HOME" value="${AJSC_HOME:-.}" />
+ <appender name="ACCESS"
+ class="ch.qos.logback.core.rolling.RollingFileAppender">
+ <file>${AJSC_HOME}/logs/ajsc-jetty/localhost_access.log</file>
+ <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
+ <fileNamePattern>${AJSC_HOME}/logs/ajsc-jetty/localhost_access.log.%d{yyyy-MM-dd}
+ </fileNamePattern>
+ </rollingPolicy>
+ <encoder class="org.onap.aai.logging.CustomLogPatternLayoutEncoder">
+ <Pattern>%a %u %z [%t] "%m %U%q" %s %b %y %i{X-TransactionId} %i{X-FromAppId} %i{X-Forwarded-For} %i{X-AAI-SSL-Client-CN} %i{X-AAI-SSL-Client-OU} %i{X-AAI-SSL-Client-O} %i{X-AAI-SSL-Client-L} %i{X-AAI-SSL-Client-ST} %i{X-AAI-SSL-Client-C} %i{X-AAI-SSL-Client-NotBefore} %i{X-AAI-SSL-Client-NotAfter} %i{X-AAI-SSL-Client-DN} %D</Pattern>
+ </encoder>
+ </appender>
+ <appender-ref ref="ACCESS" />
+</configuration>
+
+<!--
+%a - Remote IP address
+%A - Local IP address
+%b - Bytes sent, excluding HTTP headers, or '-' if no bytes were sent
+%B - Bytes sent, excluding HTTP headers
+%h - Remote host name
+%H - Request protocol
+%l - Remote logical username from identd (always returns '-')
+%m - Request method
+%p - Local port
+%q - Query string (prepended with a '?' if it exists, otherwise an empty string
+%r - First line of the request
+%s - HTTP status code of the response
+%S - User session ID
+%t - Date and time, in Common Log Format format
+%u - Remote user that was authenticated
+%U - Requested URL path
+%v - Local server name
+%I - current request thread name (can compare later with stacktraces)
+
+%z - Custom pattern that parses the cert for the subject
+%y - Custom pattern determines rest or dme2
+ --> \ No newline at end of file
diff --git a/test/csit/plans/aai/traversal/aai-traversal/appconfig/logback.xml b/test/csit/plans/aai/traversal/aai-traversal/appconfig/logback.xml
new file mode 100644
index 000000000..31bfe10cf
--- /dev/null
+++ b/test/csit/plans/aai/traversal/aai-traversal/appconfig/logback.xml
@@ -0,0 +1,391 @@
+<!--
+
+ ============LICENSE_START=======================================================
+ org.onap.aai
+ ================================================================================
+ Copyright © 2017 AT&T Intellectual Property. All rights reserved.
+ ================================================================================
+ 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.
+ ============LICENSE_END=========================================================
+
+ ECOMP is a trademark and service mark of AT&T Intellectual Property.
+
+-->
+<configuration scan="true" scanPeriod="60 seconds" debug="false">
+ <statusListener class="ch.qos.logback.core.status.NopStatusListener" />
+
+ <property resource="application.properties" />
+
+ <property name="namespace" value="aai-traversal"/>
+
+ <property name="AJSC_HOME" value="${AJSC_HOME:-.}" />
+ <jmxConfigurator />
+ <property name="logDirectory" value="${AJSC_HOME}/logs" />
+ <property name="eelfLogPattern" value="%ecompStartTime|%date{yyyy-MM-dd'T'HH:mm:ss.SSSZ, UTC}|%X{requestId}|%X{serviceInstanceId}|%-10t|%X{serverName}|%X{serviceName}|%X{partnerName}|%X{statusCode}|%X{responseCode}|%replace(%replace(%X{responseDescription}){'\\|', '!'}){'\r|\n', '^'}|%X{instanceUUID}|%level|%X{severity}|%X{serverIpAddress}|%ecompElapsedTime|%X{server}|%X{clientIpAddress}|%eelfClassOfCaller|%X{unused}|%X{processKey}|%X{customField1}|%X{customField2}|%X{customField3}|%X{customField4}|co=%X{component}:%replace(%replace(%m){'\\|', '!'}){'\r|\n', '^'}%n"/>
+ <property name="eelfAuditLogPattern" value="%ecompStartTime|%date{yyyy-MM-dd'T'HH:mm:ss.SSSZ, UTC}|%X{requestId}|%X{serviceInstanceId}|%-10t|%X{serverName}|%X{serviceName}|%X{partnerName}|%X{statusCode}|%X{responseCode}|%replace(%replace(%X{responseDescription}){'\\|', '!'}){'\r|\n|\r\n', '^'}|%X{instanceUUID}|%level|%X{severity}|%X{serverIpAddress}|%ecompElapsedTime|%X{server}|%X{clientIpAddress}|%eelfClassOfCaller|%X{unused}|%X{processKey}|%X{customField1}|%X{customField2}|%X{customField3}|%X{customField4}|co=%X{component}:%replace(%replace(%m){'\\|', '!'}){'\r|\n', '^'}%n"/>
+ <property name="eelfMetricLogPattern" value="%ecompStartTime|%date{yyyy-MM-dd'T'HH:mm:ss.SSSZ, UTC}|%X{requestId}|%X{serviceInstanceId}|%-10t|%X{serverName}|%X{serviceName}|%X{partnerName}|%X{targetEntity}|%X{targetServiceName}|%X{statusCode}|%X{responseCode}|%replace(%replace(%X{responseDescription}){'\\|', '!'}){'\r|\n', '^'}|%X{instanceUUID}|%level|%X{severity}|%X{serverIpAddress}|%ecompElapsedTime|%X{server}|%X{clientIpAddress}|%eelfClassOfCaller|%X{unused}|%X{processKey}|%X{targetVirtualEntity}|%X{customField1}|%X{customField2}|%X{customField3}|%X{customField4}|co=%X{component}:%replace(%replace(%m){'\\|', '!'}){'\r|\n', '^'}%n"/>
+ <!-- <property name="eelfErrorLogPattern" value="%ecompStartTime|%X{requestId}|%-10t|%X{serviceName}|%X{partnerName}|%X{targetEntity}|%X{targetServiceName}|%ecompErrorCategory|%X{responseCode}|%replace(%replace(%X{responseDescription}){'\\|', '!'}){'\r|\n|\r\n', '^'}|co=%X{component}:%replace(%replace(%m){'\\|', '!'}){'\r|\n', '^'}%n"/> -->
+ <property name="eelfErrorLogPattern" value="%ecompStartTime|%X{requestId}|%-10t|%X{serviceName}|%X{partnerName}|%X{targetEntity}|%X{targetServiceName}|%ecompErrorCategory|%ecompResponseCode|%ecompResponseDescription|co=%X{component}:%replace(%replace(%m){'\\|', '!'}){'\r|\n', '^'}%n"/>
+ <property name="eelfTransLogPattern" value="%ecompStartTime|%date{yyyy-MM-dd'T'HH:mm:ss.SSSZ, UTC}|%X{requestId}|%X{serviceInstanceId}|%-10t|%X{serverName}|%X{serviceName}|%X{partnerName}|%X{statusCode}|%X{responseCode}|%replace(%replace(%X{responseDescription}){'\\|', '!'}){'\r|\n', '^'}|%X{instanceUUID}|%level|%X{severity}|%X{serverIpAddress}|%ecompElapsedTime|%X{server}|%X{clientIpAddress}|%eelfClassOfCaller|%X{unused}|%X{processKey}|%X{customField1}|%X{customField2}|%X{customField3}|%X{customField4}|co=%X{partnerName}:%m%n"/>
+
+ <conversionRule conversionWord="clr" converterClass="org.springframework.boot.logging.logback.ColorConverter" />
+ <conversionRule conversionWord="wex" converterClass="org.springframework.boot.logging.logback.WhitespaceThrowableProxyConverter" />
+ <conversionRule conversionWord="wEx" converterClass="org.springframework.boot.logging.logback.ExtendedWhitespaceThrowableProxyConverter" />
+ <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
+ <encoder>
+ <pattern>
+ %clr(%d{yyyy-MM-dd HH:mm:ss.SSS}){faint} %clr(${LOG_LEVEL_PATTERN:-%5p}) %clr(${PID:- }){magenta} %clr(---){faint} %clr([%15.15t]){faint} %clr(%-40.40logger{39}){cyan} %clr(:){faint} %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}
+ </pattern>
+ </encoder>
+ </appender>
+
+ <appender name="SANE" class="ch.qos.logback.core.rolling.RollingFileAppender">
+ <file>${logDirectory}/rest/sane.log</file>
+ <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
+ <fileNamePattern>${logDirectory}/rest/sane.log.%d{yyyy-MM-dd}</fileNamePattern>
+ </rollingPolicy>
+ <encoder>
+ <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{1024} - %msg%n
+ </pattern>
+ </encoder>
+ </appender>
+
+ <appender name="asyncSANE" class="ch.qos.logback.classic.AsyncAppender">
+ <queueSize>1000</queueSize>
+ <includeCallerData>true</includeCallerData>
+ <appender-ref ref="SANE" />
+ </appender>
+
+ <appender name="METRIC"
+ class="ch.qos.logback.core.rolling.RollingFileAppender">
+ <filter class="ch.qos.logback.classic.filter.LevelFilter">
+ <level>INFO</level>
+ <onMatch>ACCEPT</onMatch>
+ <onMismatch>DENY</onMismatch>
+ </filter>
+ <file>${logDirectory}/rest/metrics.log</file>
+ <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
+ <fileNamePattern>${logDirectory}/rest/metrics.log.%d{yyyy-MM-dd}
+ </fileNamePattern>
+ </rollingPolicy>
+ <encoder class="org.onap.aai.logging.EcompEncoder">
+ <pattern>${eelfMetricLogPattern}</pattern>
+ </encoder>
+ </appender>
+ <appender name="asyncMETRIC" class="ch.qos.logback.classic.AsyncAppender">
+ <queueSize>1000</queueSize>
+ <includeCallerData>true</includeCallerData>
+ <appender-ref ref="METRIC" />
+ </appender>
+
+ <appender name="DEBUG"
+ class="ch.qos.logback.core.rolling.RollingFileAppender">
+ <filter class="ch.qos.logback.classic.filter.LevelFilter">
+ <level>DEBUG</level>
+ <onMatch>ACCEPT</onMatch>
+ <onMismatch>DENY</onMismatch>
+ </filter>
+ <file>${logDirectory}/rest/debug.log</file>
+ <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
+ <fileNamePattern>${logDirectory}/rest/debug.log.%d{yyyy-MM-dd}
+ </fileNamePattern>
+ </rollingPolicy>
+ <encoder class="org.onap.aai.logging.EcompEncoder">
+ <pattern>${eelfLogPattern}</pattern>
+ </encoder>
+ </appender>
+
+ <appender name="asyncDEBUG" class="ch.qos.logback.classic.AsyncAppender">
+ <queueSize>1000</queueSize>
+ <includeCallerData>true</includeCallerData>
+ <appender-ref ref="DEBUG" />
+ </appender>
+
+ <appender name="ERROR"
+ class="ch.qos.logback.core.rolling.RollingFileAppender">
+ <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
+ <level>WARN</level>
+ </filter>
+ <file>${logDirectory}/rest/error.log</file>
+ <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
+ <fileNamePattern>${logDirectory}/rest/error.log.%d{yyyy-MM-dd}
+ </fileNamePattern>
+ </rollingPolicy>
+ <encoder class="org.onap.aai.logging.EcompEncoder">
+ <pattern>${eelfErrorLogPattern}</pattern>
+ </encoder>
+ </appender>
+
+ <appender name="asyncERROR" class="ch.qos.logback.classic.AsyncAppender">
+ <queueSize>1000</queueSize>
+ <includeCallerData>true</includeCallerData>
+ <appender-ref ref="ERROR" />
+ </appender>
+
+ <appender name="AUDIT"
+ class="ch.qos.logback.core.rolling.RollingFileAppender">
+ <file>${logDirectory}/rest/audit.log</file>
+ <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
+ <fileNamePattern>${logDirectory}/rest/audit.log.%d{yyyy-MM-dd}
+ </fileNamePattern>
+ </rollingPolicy>
+ <encoder class="org.onap.aai.logging.EcompEncoder">
+ <pattern>${eelfAuditLogPattern}</pattern>
+ </encoder>
+ </appender>
+
+ <appender name="asyncAUDIT" class="ch.qos.logback.classic.AsyncAppender">
+ <queueSize>1000</queueSize>
+ <includeCallerData>true</includeCallerData>
+ <appender-ref ref="AUDIT" />
+ </appender>
+
+ <appender name="translog"
+ class="ch.qos.logback.core.rolling.RollingFileAppender">
+ <filter class="ch.qos.logback.classic.filter.LevelFilter">
+ <level>DEBUG</level>
+ <onMatch>ACCEPT</onMatch>
+ <onMismatch>DENY</onMismatch>
+ </filter>
+ <file>${logDirectory}/rest/translog.log</file>
+ <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
+ <fileNamePattern>${logDirectory}/rest/translog.log.%d{yyyy-MM-dd}
+ </fileNamePattern>
+ </rollingPolicy>
+ <encoder class="org.onap.aai.logging.EcompEncoder">
+ <pattern>${eelfTransLogPattern}</pattern>
+ </encoder>
+ </appender>
+
+ <appender name="asynctranslog" class="ch.qos.logback.classic.AsyncAppender">
+ <queueSize>1000</queueSize>
+ <includeCallerData>true</includeCallerData>
+ <appender-ref ref="translog" />
+ </appender>
+
+ <appender name="dmaapAAIEventConsumer"
+ class="ch.qos.logback.core.rolling.RollingFileAppender">
+ <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
+ <level>WARN</level>
+ </filter>
+ <File>${logDirectory}/dmaapAAIEventConsumer/error.log</File>
+ <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
+ <fileNamePattern>${logDirectory}/dmaapAAIEventConsumer/error.log.%d{yyyy-MM-dd}
+ </fileNamePattern>
+ </rollingPolicy>
+ <encoder class="org.onap.aai.logging.EcompEncoder">
+ <pattern>${eelfLogPattern}</pattern>
+ </encoder>
+ </appender>
+
+ <appender name="dmaapAAIEventConsumerDebug"
+ class="ch.qos.logback.core.rolling.RollingFileAppender">
+ <filter class="ch.qos.logback.classic.filter.LevelFilter">
+ <level>DEBUG</level>
+ <onMatch>ACCEPT</onMatch>
+ <onMismatch>DENY</onMismatch>
+ </filter>
+ <File>${logDirectory}/dmaapAAIEventConsumer/debug.log</File>
+ <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
+ <fileNamePattern>${logDirectory}/dmaapAAIEventConsumer/debug.log.%d{yyyy-MM-dd}
+ </fileNamePattern>
+ </rollingPolicy>
+ <encoder class="org.onap.aai.logging.EcompEncoder">
+ <pattern>${eelfLogPattern}</pattern>
+ </encoder>
+ </appender>
+ <appender name="dmaapAAIEventConsumerMetric"
+ class="ch.qos.logback.core.rolling.RollingFileAppender">
+ <filter class="ch.qos.logback.classic.filter.LevelFilter">
+ <level>INFO</level>
+ <onMatch>ACCEPT</onMatch>
+ <onMismatch>DENY</onMismatch>
+ </filter>
+ <File>${logDirectory}/dmaapAAIEventConsumer/metrics.log</File>
+ <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
+ <fileNamePattern>${logDirectory}/dmaapAAIEventConsumer/metrics.log.%d{yyyy-MM-dd}
+ </fileNamePattern>
+ </rollingPolicy>
+ <encoder class="org.onap.aai.logging.EcompEncoder">
+ <pattern>${eelfMetricLogPattern}</pattern>
+ </encoder>
+ </appender>
+ <appender name="external"
+ class="ch.qos.logback.core.rolling.RollingFileAppender">
+ <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
+ <level>WARN</level>
+ </filter>
+ <file>${logDirectory}/external/external.log</file>
+ <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
+ <fileNamePattern>${logDirectory}/external/external.log.%d{yyyy-MM-dd}
+ </fileNamePattern>
+ </rollingPolicy>
+ <encoder class="org.onap.aai.logging.EcompEncoder">
+ <pattern>${eelfLogPattern}</pattern>
+ </encoder>
+ </appender>
+ <logger name="org.onap.aai" level="DEBUG" additivity="false">
+ <appender-ref ref="asyncDEBUG" />
+ <appender-ref ref="asyncERROR" />
+ <appender-ref ref="asyncMETRIC" />
+ <appender-ref ref="asyncSANE" />
+ </logger>
+
+ <!-- Spring related loggers -->
+ <logger name="org.springframework" level="WARN" />
+ <logger name="org.springframework.beans" level="WARN" />
+ <logger name="org.springframework.web" level="WARN" />
+ <logger name="com.blog.spring.jms" level="WARN" />
+ <logger name="com.jayway.jsonpath" level="WARN" />
+
+ <!-- AJSC Services (bootstrap services) -->
+ <logger name="ajsc" level="WARN" />
+ <logger name="ajsc.RouteMgmtService" level="WARN" />
+ <logger name="ajsc.ComputeService" level="WARN" />
+ <logger name="ajsc.VandelayService" level="WARN" />
+ <logger name="ajsc.FilePersistenceService" level="WARN" />
+ <logger name="ajsc.UserDefinedJarService" level="WARN" />
+ <logger name="ajsc.UserDefinedBeansDefService" level="WARN" />
+ <logger name="ajsc.LoggingConfigurationService" level="WARN" />
+
+ <!-- AJSC related loggers (DME2 Registration, csi logging, restlet, servlet
+ logging) -->
+ <logger name="org.codehaus.groovy" level="WARN" />
+ <logger name="com.att.scamper" level="WARN" />
+ <logger name="ajsc.utils" level="WARN" />
+ <logger name="ajsc.utils.DME2Helper" level="WARN" />
+ <logger name="ajsc.filters" level="WARN" />
+ <logger name="ajsc.beans.interceptors" level="WARN" />
+ <logger name="ajsc.restlet" level="WARN" />
+ <logger name="ajsc.servlet" level="WARN" />
+ <logger name="com.att.ajsc" level="WARN" />
+ <logger name="com.att.ajsc.csi.logging" level="WARN" />
+ <logger name="com.att.ajsc.filemonitor" level="WARN" />
+ <logger name="com.netflix.loadbalancer" level="WARN" />
+
+ <logger name="org.apache.zookeeper" level="OFF" />
+
+ <!-- Other Loggers that may help troubleshoot -->
+ <logger name="net.sf" level="WARN" />
+ <logger name="org.apache.commons.httpclient" level="WARN" />
+ <logger name="org.apache.commons" level="WARN" />
+ <logger name="org.apache.coyote" level="WARN" />
+ <logger name="org.apache.jasper" level="WARN" />
+
+ <!-- Camel Related Loggers (including restlet/servlet/jaxrs/cxf logging.
+ May aid in troubleshooting) -->
+ <logger name="org.apache.camel" level="WARN" />
+ <logger name="org.apache.cxf" level="WARN" />
+ <logger name="org.apache.camel.processor.interceptor" level="WARN" />
+ <logger name="org.apache.cxf.jaxrs.interceptor" level="WARN" />
+ <logger name="org.apache.cxf.service" level="WARN" />
+ <logger name="org.restlet" level="WARN" />
+ <logger name="org.apache.camel.component.restlet" level="WARN" />
+
+ <logger name="org.hibernate.validator" level="WARN" />
+ <logger name="org.hibernate" level="WARN" />
+ <logger name="org.hibernate.ejb" level="OFF" />
+
+ <!-- logback internals logging -->
+ <logger name="ch.qos.logback.classic" level="WARN" />
+ <logger name="ch.qos.logback.core" level="WARN" />
+
+ <logger name="org.eclipse.jetty" level="WARN" />
+
+ <!-- logback jms appenders & loggers definition starts here -->
+ <appender name="auditLogs"
+ class="ch.qos.logback.core.rolling.RollingFileAppender">
+ <filter class="ch.qos.logback.classic.filter.ThresholdFilter" />
+ <file>${logDirectory}/perf-audit/Audit-${lrmRVer}-${lrmRO}-${Pid}.log
+ </file>
+ <rollingPolicy class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
+ <fileNamePattern>${logDirectory}/perf-audit/Audit-${lrmRVer}-${lrmRO}-${Pid}.%i.log.zip
+ </fileNamePattern>
+ <minIndex>1</minIndex>
+ <maxIndex>9</maxIndex>
+ </rollingPolicy>
+ <triggeringPolicy
+ class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
+ <maxFileSize>5MB</maxFileSize>
+ </triggeringPolicy>
+ <encoder>
+ <pattern>"%d [%thread] %-5level %logger{1024} - %msg%n"</pattern>
+ </encoder>
+ </appender>
+ <appender name="perfLogs"
+ class="ch.qos.logback.core.rolling.RollingFileAppender">
+ <filter class="ch.qos.logback.classic.filter.ThresholdFilter" />
+ <file>${logDirectory}/perf-audit/Perform-${lrmRVer}-${lrmRO}-${Pid}.log
+ </file>
+ <rollingPolicy class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
+ <fileNamePattern>${logDirectory}/perf-audit/Perform-${lrmRVer}-${lrmRO}-${Pid}.%i.log.zip
+ </fileNamePattern>
+ <minIndex>1</minIndex>
+ <maxIndex>9</maxIndex>
+ </rollingPolicy>
+ <triggeringPolicy
+ class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
+ <maxFileSize>5MB</maxFileSize>
+ </triggeringPolicy>
+ <encoder>
+ <pattern>"%d [%thread] %-5level %logger{1024} - %msg%n"</pattern>
+ </encoder>
+ </appender>
+ <logger name="AuditRecord" level="INFO" additivity="false">
+ <appender-ref ref="auditLogs" />
+ </logger>
+ <logger name="AuditRecord_DirectCall" level="INFO" additivity="false">
+ <appender-ref ref="auditLogs" />
+ </logger>
+ <logger name="PerfTrackerRecord" level="INFO" additivity="false">
+ <appender-ref ref="perfLogs" />
+ </logger>
+ <!-- logback jms appenders & loggers definition ends here -->
+
+ <logger name="org.onap.aai.interceptors.post" level="DEBUG"
+ additivity="false">
+ <appender-ref ref="asynctranslog" />
+ </logger>
+
+ <logger name="org.onap.aai.interceptors.pre.SetLoggingContext" level="DEBUG">
+ <appender-ref ref="asyncAUDIT"/>
+ </logger>
+
+ <logger name="org.onap.aai.interceptors.post.ResetLoggingContext" level="DEBUG">
+ <appender-ref ref="asyncAUDIT"/>
+ </logger>
+
+ <logger name="org.onap.aai.dmaap" level="DEBUG" additivity="false">
+ <appender-ref ref="dmaapAAIEventConsumer" />
+ <appender-ref ref="dmaapAAIEventConsumerDebug" />
+ <appender-ref ref="dmaapAAIEventConsumerMetric" />
+ </logger>
+
+ <logger name="org.apache" level="OFF" />
+ <logger name="org.zookeeper" level="OFF" />
+ <logger name="com.thinkaurelius" level="WARN" />
+ <logger name="com.att.aft.dme2" level="WARN" />
+
+ <!-- ============================================================================ -->
+ <!-- General EELF logger -->
+ <!-- ============================================================================ -->
+ <logger name="com.att.eelf" level="WARN" additivity="false">
+ <appender-ref ref="asyncDEBUG" />
+ <appender-ref ref="asyncERROR" />
+ <appender-ref ref="asyncMETRIC" />
+ </logger>
+
+ <root level="DEBUG">
+ <appender-ref ref="external" />
+ </root>
+</configuration>
diff --git a/test/csit/plans/aai/traversal/aai-traversal/appconfig/realm.properties b/test/csit/plans/aai/traversal/aai-traversal/appconfig/realm.properties
new file mode 100644
index 000000000..fb692cc3e
--- /dev/null
+++ b/test/csit/plans/aai/traversal/aai-traversal/appconfig/realm.properties
@@ -0,0 +1,12 @@
+# format : username: password[,rolename ...]
+# default username/password: AAI/AAI, MSO/MSO, ModelLoader/ModelLoader...
+AAI:OBF:1gfr1ev31gg7,admin
+MSO:OBF:1jzx1lz31k01,admin
+SDNC:OBF:1itr1i0l1i151isv,admin
+DCAE:OBF:1g8u1f9d1f991g8w,admin
+POLICY:OBF:1mk61i171ima1im41i0j1mko,admin
+ASDC:OBF:1f991j0u1j001f9d,admin
+VID:OBF:1jm91i0v1jl9,admin
+APPC:OBF:1f991ksf1ksf1f9d,admin
+ModelLoader:OBF:1qvu1v2h1sov1sar1wfw1j7j1wg21saj1sov1v1x1qxw,admin
+AaiUI:OBF:1gfr1p571unz1p4j1gg7,admin
diff --git a/test/csit/plans/aai/traversal/docker-compose.yml b/test/csit/plans/aai/traversal/docker-compose.yml
index 8b07c336f..6f62e6ef2 100644
--- a/test/csit/plans/aai/traversal/docker-compose.yml
+++ b/test/csit/plans/aai/traversal/docker-compose.yml
@@ -4,13 +4,20 @@ services:
image: ${DOCKER_REGISTRY}/onap/aai-resources
hostname: aai-resources.api.simpledemo.onap.org
environment:
- - AAI_CHEF_ENV=simpledemo
- - AAI_CHEF_LOC=/var/chef/aai-data/environments
- - CHEF_BRANCH=master
- - CHEF_GIT_URL=http://gerrit.onap.org/r/aai
- LOCAL_USER_ID=${USER_ID}
+ - LOCAL_GROUP_ID=${GROUP_ID}
+ - SKIP_CREATE_DB_SCHEMA_AT_STARTUP=true
ports:
- 8447:8447
+ volumes:
+ - ${CURRENT_PWD}/aai-resources/appconfig/janusgraph-realtime.properties:/opt/app/aai-resources/resources/etc/appprops/janusgraph-realtime.properties
+ - ${CURRENT_PWD}/aai-resources/appconfig/janusgraph-cached.properties:/opt/app/aai-resources/resources/etc/appprops/janusgraph-cached.properties
+ - ${CURRENT_PWD}/aai-resources/appconfig/aaiconfig.properties:/opt/app/aai-resources/resources/etc/appprops/aaiconfig.properties
+ - ${CURRENT_PWD}/aai-resources/appconfig/application.properties:/opt/app/aai-resources/resources/application.properties
+ - ${CURRENT_PWD}/aai-resources/appconfig/logback.xml:/opt/app/aai-resources/resources/logback.xml
+ - ${CURRENT_PWD}/aai-resources/appconfig/localhost-access-logback.xml:/opt/app/aai-resources/resources/localhost-access-logback.xml
+ - ${CURRENT_PWD}/aai-resources/appconfig/aai_keystore:/opt/app/aai-resources/resources/etc/auth/aai_keystore
+ - ${CURRENT_PWD}/aai-resources/appconfig/realm.properties:/opt/app/aai-resources/resources/etc/auth/realm.properties
logging:
driver: "json-file"
options:
@@ -20,11 +27,18 @@ services:
image: ${DOCKER_REGISTRY}/onap/aai-traversal
hostname: aai-traversal.api.simpledemo.onap.org
environment:
- - AAI_CHEF_ENV=simpledemo
- - AAI_CHEF_LOC=/var/chef/aai-data/environments
- - CHEF_BRANCH=master
- - CHEF_GIT_URL=http://gerrit.onap.org/r/aai
+ - LOCAL_USER_ID=${USER_ID}
+ - LOCAL_GROUP_ID=${GROUP_ID}
- DISABLE_UPDATE_QUERY=true
+ volumes:
+ - ${CURRENT_PWD}/aai-traversal/appconfig/janusgraph-realtime.properties:/opt/app/aai-traversal/resources/etc/appprops/janusgraph-realtime.properties
+ - ${CURRENT_PWD}/aai-traversal/appconfig/janusgraph-cached.properties:/opt/app/aai-traversal/resources/etc/appprops/janusgraph-cached.properties
+ - ${CURRENT_PWD}/aai-traversal/appconfig/aaiconfig.properties:/opt/app/aai-traversal/resources/etc/appprops/aaiconfig.properties
+ - ${CURRENT_PWD}/aai-traversal/appconfig/application.properties:/opt/app/aai-traversal/resources/application.properties
+ - ${CURRENT_PWD}/aai-traversal/appconfig/logback.xml:/opt/app/aai-traversal/resources/logback.xml
+ - ${CURRENT_PWD}/aai-traversal/appconfig/localhost-access-logback.xml:/opt/app/aai-traversal/resources/localhost-access-logback.xml
+ - ${CURRENT_PWD}/aai-traversal/appconfig/aai_keystore:/opt/app/aai-traversal/resources/etc/auth/aai_keystore
+ - ${CURRENT_PWD}/aai-traversal/appconfig/realm.properties:/opt/app/aai-traversal/resources/etc/auth/realm.properties
ports:
- 8446:8446
logging:
@@ -48,16 +62,18 @@ services:
max-size: "30m"
max-file: "5"
aai.hbase.simpledemo.onap.org:
- image: ${HBASE_IMAGE}:${HBASE_VERSION}
+ image: cassandra:2.1
hostname: aai.hbase.simpledemo.onap.org
ports:
- - 2181:2181
- - 8080:8080
- - 8085:8085
- - 9090:9090
- - 16000:16000
- - 16010:16010
- - 16201:16201
+ - 7000:7000
+ - 7001:7001
+ - 7199:7199
+ - 9042:9042
+ environment:
+ - CASSANDRA_SEEDS=aai.hbase.simpledemo.onap.org
+ - CASSANDRA_DC=Heat
+ - CASSANDRA_RACK=Rack1
+ - CASSANDRA_AUTO_BOOTSTRAP=true
logging:
driver: "json-file"
options:
diff --git a/test/csit/plans/aai/traversal/setup.sh b/test/csit/plans/aai/traversal/setup.sh
index d3635d4ca..70dda84b6 100644
--- a/test/csit/plans/aai/traversal/setup.sh
+++ b/test/csit/plans/aai/traversal/setup.sh
@@ -26,6 +26,8 @@ DOCKER_IMAGE_VERSION=$(cat /opt/config/docker_version.txt)
DOCKER_REGISTRY=${NEXUS_DOCKER_REPO}
DOCKER_IMAGE_VERSION=1.2-STAGING-latest
+export CURRENT_PWD=$(pwd);
+
function wait_for_container() {
CONTAINER_NAME="$1";
@@ -70,10 +72,8 @@ ${DOCKER_COMPOSE_CMD} stop
${DOCKER_COMPOSE_CMD} rm -f -v
# Start the hbase where the data will be stored
-HBASE_CONTAINER_NAME=$(${DOCKER_COMPOSE_CMD} up -d aai.hbase.simpledemo.onap.org 2>&1 | grep 'Creating' | grep -v 'volume' | grep -v 'network' | awk '{ print $2; }' | head -1);
-wait_for_container ${HBASE_CONTAINER_NAME} ' Started SelectChannelConnector@0.0.0.0:8085';
-wait_for_container ${HBASE_CONTAINER_NAME} ' Started SelectChannelConnector@0.0.0.0:8080';
-wait_for_container ${HBASE_CONTAINER_NAME} ' Started SelectChannelConnector@0.0.0.0:9095';
+CASSANDRA_CONTAINER_NAME=$(${DOCKER_COMPOSE_CMD} up -d aai.hbase.simpledemo.onap.org 2>&1 | grep 'Creating' | grep -v 'volume' | grep -v 'network' | awk '{ print $2; }' | head -1);
+wait_for_container $CASSANDRA_CONTAINER_NAME 'Listening for thrift clients';
USER_EXISTS=$(check_if_user_exists aaiadmin);
@@ -95,17 +95,25 @@ function check_if_user_exists(){
if [ "${USER_EXISTS}" -eq 0 ]; then
export USER_ID=9000;
+ export GROUP_ID=9000;
else
export USER_ID=$(id -u aaiadmin);
+ export GROUP_ID=$(id -g aaiadmin);
fi;
+$DOCKER_COMPOSE_CMD run --rm aai-resources.api.simpledemo.onap.org createDBSchema.sh
+
RESOURCES_CONTAINER_NAME=$(${DOCKER_COMPOSE_CMD} up -d aai-resources.api.simpledemo.onap.org 2>&1 | grep 'Creating' | grep -v 'volume' | grep -v 'network' | awk '{ print $2; }' | head -1);
-wait_for_container ${RESOURCES_CONTAINER_NAME} '0.0.0.0:8447';
+wait_for_container $RESOURCES_CONTAINER_NAME 'Resources Microservice Started';
+
+${DOCKER_COMPOSE_CMD} up -d aai-traversal.api.simpledemo.onap.org aai.api.simpledemo.onap.org
+TRAVERSAL_CONTAINER_NAME=$(echo $RESOURCES_CONTAINER_NAME | sed 's/aai-resources/aai-traversal/g');
-TRAVERSAL_CONTAINER_NAME=$(${DOCKER_COMPOSE_CMD} up -d aai-traversal.api.simpledemo.onap.org 2>&1 | grep 'Creating' | grep -v 'volume' | grep -v 'network' | awk '{ print $2; }' | head -1);
-wait_for_container ${TRAVERSAL_CONTAINER_NAME} '0.0.0.0:8446';
+$DOCKER_COMPOSE_CMD run --rm aai-traversal.api.simpledemo.onap.org install/updateQueryData.sh
-${DOCKER_COMPOSE_CMD} up -d aai.api.simpledemo.onap.org
echo "A&AI Microservices, resources and traversal, are up and running along with HAProxy";
+
+wait_for_container $TRAVERSAL_CONTAINER_NAME 'Traversal Microservice Started';
+
# Set the host ip for robot from the haproxy
ROBOT_VARIABLES="-v HOST_IP:`ip addr show docker0 | head -3 | tail -1 | cut -d' ' -f6 | cut -d'/' -f1`"
diff --git a/test/csit/plans/appc/healthcheck/bundle_query.sh b/test/csit/plans/appc/healthcheck/bundle_query.sh
index a85bf31c4..3801d0a12 100755
--- a/test/csit/plans/appc/healthcheck/bundle_query.sh
+++ b/test/csit/plans/appc/healthcheck/bundle_query.sh
@@ -18,10 +18,10 @@ SCRIPTS="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
echo $SCRIPTS
-num_bundles=$(docker exec appc_controller_container /opt/opendaylight/current/bin/client -u karaf bundle:list | tail -1 | cut -d\| -f1)
-#num_failed_bundles=$(docker exec appc_controller_container /opt/opendaylight/current/bin/client -u karaf bundle:list | grep Failure | wc -l)
-num_failed_bundles=$(docker exec appc_controller_container /opt/opendaylight/current/bin/client -u karaf bundle:list | grep Failure | wc -l)
-failed_bundles=$(docker exec appc_controller_container /opt/opendaylight/current/bin/client -u karaf bundle:list | grep Failure)
+num_bundles=$(docker exec appc_controller_container /opt/opendaylight/current/bin/client bundle:list | tail -1 | cut -d\| -f1)
+#num_failed_bundles=$(docker exec appc_controller_container /opt/opendaylight/current/bin/client bundle:list | grep Failure | wc -l)
+num_failed_bundles=$(docker exec appc_controller_container /opt/opendaylight/current/bin/client bundle:list | grep Failure | wc -l)
+failed_bundles=$(docker exec appc_controller_container /opt/opendaylight/current/bin/client bundle:list | grep Failure)
echo "There are $num_failed_bundles failed bundles out of $num_bundles installed bundles."
diff --git a/test/csit/plans/appc/healthcheck/health_check.sh b/test/csit/plans/appc/healthcheck/health_check.sh
index 63e0b17aa..e4cfae8f5 100755
--- a/test/csit/plans/appc/healthcheck/health_check.sh
+++ b/test/csit/plans/appc/healthcheck/health_check.sh
@@ -17,7 +17,7 @@
SCRIPTS="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
echo $SCRIPTS
-response=$(curl --write-out '%{http_code}' --silent --output /dev/null -H "Authorization: Basic YWRtaW46S3A4Yko0U1hzek0wV1hsaGFrM2VIbGNzZTJnQXc4NHZhb0dHbUp2VXkyVQ==" -X POST -H "X-FromAppId: csit-appc" -H "X-TransactionId: csit-appc" -H "Accept: application/json" -H "Content-Type: application/json" http://localhost:8282/restconf/operations/SLI-API:healthcheck )
+response=$(curl --write-out '%{http_code}' --silent --output /dev/null -H "Authorization: Basic YWRtaW46YWRtaW4=" -X POST -H "X-FromAppId: csit-appc" -H "X-TransactionId: csit-appc" -H "Accept: application/json" -H "Content-Type: application/json" http://localhost:8282/restconf/operations/SLI-API:healthcheck )
if [ "$response" == "200" ]; then
echo "APPC health check passed."
diff --git a/test/csit/plans/appc/healthcheck/setup.sh b/test/csit/plans/appc/healthcheck/setup.sh
index 406743303..f47685334 100755
--- a/test/csit/plans/appc/healthcheck/setup.sh
+++ b/test/csit/plans/appc/healthcheck/setup.sh
@@ -19,19 +19,11 @@
# Place the scripts in run order:
SCRIPTS="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
source ${WORKSPACE}/test/csit/scripts/appc/script1.sh
-amsterdam="$(echo ${WORKSPACE} | grep amsterdam | wc -l)"
-if [ "$amsterdam" != "1" ]; then
- export APPC_DOCKER_IMAGE_VERSION=1.3.0-SNAPSHOT-latest
- export CCSDK_DOCKER_IMAGE_VERSION=0.1-STAGING-latest
- export BRANCH=master
- export SOLUTION_NAME=onap
-else
- export APPC_DOCKER_IMAGE_VERSION=v1.2.0
- export CCSDK_DOCKER_IMAGE_VERSION=v0.1.0
- export BRANCH=amsterdam
- export SOLUTION_NAME=openecomp
-fi
+export APPC_DOCKER_IMAGE_VERSION=1.3.0-SNAPSHOT-latest
+export CCSDK_DOCKER_IMAGE_VERSION=0.2.1-SNAPSHOT
+export BRANCH=master
+export SOLUTION_NAME=onap
export NEXUS_USERNAME=docker
export NEXUS_PASSWD=docker
@@ -67,8 +59,8 @@ TIME=0
while [ "$TIME" -lt "$TIME_OUT" ]; do
startODL_status=$(docker exec appc_controller_container ps -e | grep startODL | wc -l)
-waiting_bundles=$(docker exec appc_controller_container /opt/opendaylight/current/bin/client -u karaf bundle:list | grep Waiting | wc -l)
-run_level=$(docker exec appc_controller_container /opt/opendaylight/current/bin/client -u karaf system:start-level)
+waiting_bundles=$(docker exec appc_controller_container /opt/opendaylight/current/bin/client bundle:list | grep Waiting | wc -l)
+run_level=$(docker exec appc_controller_container /opt/opendaylight/current/bin/client system:start-level)
if [ "$run_level" == "Level 100" ] && [ "$startODL_status" -lt "1" ] && [ "$waiting_bundles" -lt "1" ] ; then
echo APPC started in $TIME seconds
diff --git a/test/csit/plans/ccsdk/healthcheck/health_check.sh b/test/csit/plans/ccsdk/healthcheck/health_check.sh
index ffc766fe9..99f717a20 100644
--- a/test/csit/plans/ccsdk/healthcheck/health_check.sh
+++ b/test/csit/plans/ccsdk/healthcheck/health_check.sh
@@ -19,7 +19,7 @@ echo $SCRIPTS
unset http_proxy https_proxy
-response=$(curl --write-out '%{http_code}' --silent --output /dev/null -H "Authorization: Basic YWRtaW46S3A4Yko0U1hzek0wV1hsaGFrM2VIbGNzZTJnQXc4NHZhb0dHbUp2VXkyVQ==" -X POST -H "X-FromAppId: csit-sdnc" -H "X-TransactionId: csit-ccsdk" -H "Accept: application/json" -H "Content-Type: application/json" http://localhost:8383/restconf/operations/SLI-API:healthcheck )
+response=$(curl --write-out '%{http_code}' --silent --output /dev/null -H "Authorization: Basic YWRtaW46YWRtaW4=" -X POST -H "X-FromAppId: csit-sdnc" -H "X-TransactionId: csit-ccsdk" -H "Accept: application/json" -H "Content-Type: application/json" http://localhost:8383/restconf/operations/SLI-API:healthcheck )
if [ "$response" == "200" ]; then
echo "CCSDK health check passed."
diff --git a/test/csit/plans/ccsdk/healthcheck/setup.sh b/test/csit/plans/ccsdk/healthcheck/setup.sh
index 0be8bef6c..2b7424c3b 100644
--- a/test/csit/plans/ccsdk/healthcheck/setup.sh
+++ b/test/csit/plans/ccsdk/healthcheck/setup.sh
@@ -63,7 +63,7 @@ TIME_OUT=500
INTERVAL=30
TIME=0
while [ "$TIME" -lt "$TIME_OUT" ]; do
- response=$(curl --write-out '%{http_code}' --silent --output /dev/null -H "Authorization: Basic YWRtaW46S3A4Yko0U1hzek0wV1hsaGFrM2VIbGNzZTJnQXc4NHZhb0dHbUp2VXkyVQ==" -X POST -H "X-FromAppId: csit-ccsdk" -H "X-TransactionId: csit-ccsdk" -H "Accept: application/json" -H "Content-Type: application/json" http://localhost:8383/restconf/operations/SLI-API:healthcheck ); echo $response
+ response=$(curl --write-out '%{http_code}' --silent --output /dev/null -H "Authorization: Basic YWRtaW46YWRtaW4=" -X POST -H "X-FromAppId: csit-ccsdk" -H "X-TransactionId: csit-ccsdk" -H "Accept: application/json" -H "Content-Type: application/json" http://localhost:8383/restconf/operations/SLI-API:healthcheck ); echo $response
if [ "$response" == "200" ]; then
echo CCSDK started in $TIME seconds
@@ -86,8 +86,10 @@ INTERVAL=60
TIME=0
while [ "$TIME" -lt "$TIME_OUT" ]; do
-response=$(docker exec ccsdk_odlsli_container /opt/opendaylight/current/bin/client -u karaf system:start-level)
-num_bundles=$(docker exec ccsdk_odlsli_container /opt/opendaylight/current/bin/client -u karaf bundle:list | tail -1 | cut -d\| -f1)
+docker exec ccsdk_odlsli_container rm -f /opt/opendaylight/current/etc/host.key
+response=$(docker exec ccsdk_odlsli_container /opt/opendaylight/current/bin/client system:start-level)
+docker exec ccsdk_odlsli_container rm -f /opt/opendaylight/current/etc/host.key
+num_bundles=$(docker exec ccsdk_odlsli_container /opt/opendaylight/current/bin/client bundle:list | tail -1 | cut -d\| -f1)
if [ "$response" == "Level 100" ] && [ "$num_bundles" -ge 333 ]; then
echo CCSDK karaf started in $TIME seconds
@@ -103,13 +105,13 @@ if [ "$TIME" -ge "$TIME_OUT" ]; then
echo TIME OUT: karaf session not started in $TIME_OUT seconds... Could cause problems for testing activities...
fi
-response=$(docker exec ccsdk_odlsli_container /opt/opendaylight/current/bin/client -u karaf system:start-level)
-num_bundles=$(docker exec ccsdk_odlsli_container /opt/opendaylight/current/bin/client -u karaf bundle:list | tail -1 | cut -d\| -f1)
+response=$(docker exec ccsdk_odlsli_container /opt/opendaylight/current/bin/client system:start-level)
+num_bundles=$(docker exec ccsdk_odlsli_container /opt/opendaylight/current/bin/client bundle:list | tail -1 | cut -d\| -f1)
if [ "$response" == "Level 100" ] && [ "$num_bundles" -ge 333 ]; then
- num_bundles=$(docker exec ccsdk_odlsli_container /opt/opendaylight/current/bin/client -u karaf bundle:list | tail -1 | cut -d\| -f1)
- num_failed_bundles=$(docker exec ccsdk_odlsli_container /opt/opendaylight/current/bin/client -u karaf bundle:list | grep Failure | wc -l)
- failed_bundles=$(docker exec ccsdk_odlsli_container /opt/opendaylight/current/bin/client -u karaf bundle:list | grep Failure)
+ num_bundles=$(docker exec ccsdk_odlsli_container /opt/opendaylight/current/bin/client bundle:list | tail -1 | cut -d\| -f1)
+ num_failed_bundles=$(docker exec ccsdk_odlsli_container /opt/opendaylight/current/bin/client bundle:list | grep Failure | wc -l)
+ failed_bundles=$(docker exec ccsdk_odlsli_container /opt/opendaylight/current/bin/client bundle:list | grep Failure)
echo There is/are $num_failed_bundles failed bundles out of $num_bundles installed bundles.
fi
diff --git a/test/csit/plans/ccsdk/healthcheck/teardown.sh b/test/csit/plans/ccsdk/healthcheck/teardown.sh
index fbc0dfa42..56820786a 100644
--- a/test/csit/plans/ccsdk/healthcheck/teardown.sh
+++ b/test/csit/plans/ccsdk/healthcheck/teardown.sh
@@ -19,7 +19,6 @@
kill-instance.sh ccsdk_db_container
kill-instance.sh ccsdk_dgbuilder_container
-kill-instance.sh ccsdk_bareodl_container
kill-instance.sh ccsdk_odlsli_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/with_mr/setup.sh b/test/csit/plans/dmaap-buscontroller/with_mr/setup.sh
new file mode 100755
index 000000000..3e6efd4d3
--- /dev/null
+++ b/test/csit/plans/dmaap-buscontroller/with_mr/setup.sh
@@ -0,0 +1,44 @@
+#!/bin/bash
+#
+# ============LICENSE_START=======================================================
+# org.onap.dmaap
+# ================================================================================
+# Copyright (C) 2018 AT&T Intellectual Property. All rights reserved.
+# ================================================================================
+# 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.
+# ============LICENSE_END=========================================================
+#
+#
+
+
+# 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}"
+
diff --git a/test/csit/plans/dmaap-buscontroller/with_mr/teardown.sh b/test/csit/plans/dmaap-buscontroller/with_mr/teardown.sh
new file mode 100644
index 000000000..0474dded6
--- /dev/null
+++ b/test/csit/plans/dmaap-buscontroller/with_mr/teardown.sh
@@ -0,0 +1,28 @@
+#!/bin/bash
+#
+# ============LICENSE_START=======================================================
+# org.onap.dmaap
+# ================================================================================
+# Copyright (C) 2018 AT&T Intellectual Property. All rights reserved.
+# ================================================================================
+# 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.
+# ============LICENSE_END=========================================================
+#
+#
+source ${WORKSPACE}/test/csit/scripts/dmaap-message-router/dmaap-mr-teardown.sh
+
+dmaap_mr_teardown
+kill-instance.sh aaf-mock
+kill-instance.sh drps-mock
+kill-instance.sh dmaapbc
+
diff --git a/test/csit/plans/dmaap-buscontroller/with_mr/testplan.txt b/test/csit/plans/dmaap-buscontroller/with_mr/testplan.txt
new file mode 100644
index 000000000..39a2f4499
--- /dev/null
+++ b/test/csit/plans/dmaap-buscontroller/with_mr/testplan.txt
@@ -0,0 +1,4 @@
+# Test suites are relative paths under [integration.git]/test/csit/tests/.
+# Place the suites in run order.
+dmaap-buscontroller/suite1
+
diff --git a/test/csit/plans/dmaap/mrpubsub/setup.sh b/test/csit/plans/dmaap/mrpubsub/setup.sh
index 3e8950f2b..0a1f9d359 100755
--- a/test/csit/plans/dmaap/mrpubsub/setup.sh
+++ b/test/csit/plans/dmaap/mrpubsub/setup.sh
@@ -35,6 +35,7 @@ cp $WORKSPACE/archives/dmaapmr/messageservice/bundleconfig-local/etc/appprops/Ms
# start DMaaP MR containers with docker compose and configuration from docker-compose.yml
+docker login -u docker -p docker nexus3.onap.org:10001
docker-compose up -d
# Wait for initialization of Docker contaienr for DMaaP MR, Kafka and Zookeeper
@@ -68,6 +69,7 @@ sed -i -e 's/<zookeeper_host>/'$ZOOKEEPER_IP'/' /var/tmp/MsgRtrApi.properties
sed -i -e 's/<kafka_host>:<kafka_port>/'$KAFKA_IP':9092/' /var/tmp/MsgRtrApi.properties
docker-compose build
+docker login -u docker -p docker nexus3.onap.org:10001
docker-compose up -d
# Wait for initialization of Docker containers
diff --git a/test/csit/plans/holmes-rule-management/sanity-check/setup.sh b/test/csit/plans/holmes-rule-management/sanity-check/setup.sh
index ae78ec49a..89688eeaf 100644
--- a/test/csit/plans/holmes-rule-management/sanity-check/setup.sh
+++ b/test/csit/plans/holmes-rule-management/sanity-check/setup.sh
@@ -60,6 +60,12 @@ for i in {1..10}; do
echo sleep $i
sleep $i
done
+
+echo sleep 30s for service registration
+sleep 30
+
+docker logs i-rulemgt
+docker logs i-engine-d
#Pass any variables required by Robot test suites in ROBOT_VARIABLES
ROBOT_VARIABLES="-v MSB_IP:${MSB_IP} -v RULEMGT_IP:${RULEMGT_IP} -v ENGINE_D_IP:${ENGINE_D_IP}"
diff --git a/test/csit/plans/multicloud-vmware/functionality1/testplan.txt b/test/csit/plans/multicloud-vmware/functionality1/testplan.txt
index 2f5ad1b6f..0a2ad45af 100644
--- a/test/csit/plans/multicloud-vmware/functionality1/testplan.txt
+++ b/test/csit/plans/multicloud-vmware/functionality1/testplan.txt
@@ -7,3 +7,7 @@ multicloud-vmware/provision/sanity_test_neutron.robot
multicloud-vmware/nova/sanity-flavor.robot
multicloud-vmware/nova/sanity-host.robot
multicloud-vmware/nova/sanity-server.robot
+multicloud-vmware/samples/sanity-sample.robot
+multicloud-vmware/hosts/sanity-host.robot
+multicloud-vmware/networks/sanity-network.robot
+multicloud-vmware/images/sanity-image.robot
diff --git a/test/csit/plans/multicloud/functionality1/setup.sh b/test/csit/plans/multicloud/functionality1/setup.sh
index 993a39f68..50118a54a 100755
--- a/test/csit/plans/multicloud/functionality1/setup.sh
+++ b/test/csit/plans/multicloud/functionality1/setup.sh
@@ -20,7 +20,9 @@
source ${SCRIPTS}/common_functions.sh
# start multivim-broker
-docker run -d --name multivim-broker nexus3.onap.org:10001/onap/multicloud/framework
+docker run -d --name multivim-vio nexus3.onap.org:10001/onap/multicloud/vio
+docker run -d --name multivim-broker --link multivim-vio -e MSB_ADDR=multivim-vio -e MSB_PORT=9004 nexus3.onap.org:10001/onap/multicloud/framework
+
BROKER_IP=`get-instance-ip.sh multivim-broker`
for i in {1..50}; do
curl -sS ${BROKER_IP}:9001 && break
diff --git a/test/csit/plans/multicloud/functionality1/teardown.sh b/test/csit/plans/multicloud/functionality1/teardown.sh
index 1732649af..a2ef0e35e 100755
--- a/test/csit/plans/multicloud/functionality1/teardown.sh
+++ b/test/csit/plans/multicloud/functionality1/teardown.sh
@@ -16,4 +16,5 @@
#
# This script is sourced by run-csit.sh after Robot test completion.
+kill-instance.sh multivim-vio
kill-instance.sh multivim-broker
diff --git a/test/csit/plans/music/music-distributed-kv-store-test-plan/setup.sh b/test/csit/plans/music/music-distributed-kv-store-test-plan/setup.sh
new file mode 100644
index 000000000..88becf69e
--- /dev/null
+++ b/test/csit/plans/music/music-distributed-kv-store-test-plan/setup.sh
@@ -0,0 +1,60 @@
+#!/bin/bash
+#
+# Copyright 2018 Intel Corporation
+#
+# 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.
+#
+
+# Not sure why this is needed.
+source ${SCRIPTS}/common_functions.sh
+
+# Initial Configuration.
+DATASTORE="consul"
+DATASTORE_IP="localhost"
+
+MOUNTPATH="/dkv_mount_path/configs/"
+DEFAULT_CONFIGS=$(pwd)/mountpath/default
+
+mkdir -p mountpath/default
+
+pushd mountpath/default
+cat << EOF > sampleConfig1.properties
+foo1=bar1
+hello1=world1
+key1=value1
+EOF
+cat << EOF > sampleConfig2.properties
+foo2=bar2
+hello2=world2
+key2=value2
+EOF
+popd
+
+docker login -u docker -p docker nexus3.onap.org:10001
+docker pull nexus3.onap.org:10001/onap/music/distributed-kv-store
+docker run -e DATASTORE=$DATASTORE -e DATASTORE_IP=$DATASTORE_IP -e MOUNTPATH=$MOUNTPATH -d \
+ --name dkv \
+ -v $DEFAULT_CONFIGS:/dkv_mount_path/configs/default \
+ -p 8200:8200 -p 8080:8080 nexus3.onap.org:10001/onap/music/distributed-kv-store
+
+
+echo "###### WAITING FOR DISTRIBUTED KV STORE CONTAINER TO COME UP"
+sleep 10
+
+#
+# add here all ROBOT_VARIABLES settings
+#
+echo "# music robot variables settings";
+ROBOT_VARIABLES="-v DKV_HOSTNAME:http://localhost -v DKV_PORT:8080"
+
+echo ${ROBOT_VARIABLES} \ No newline at end of file
diff --git a/test/csit/plans/music/music-distributed-kv-store-test-plan/teardown.sh b/test/csit/plans/music/music-distributed-kv-store-test-plan/teardown.sh
new file mode 100644
index 000000000..0abf3a62d
--- /dev/null
+++ b/test/csit/plans/music/music-distributed-kv-store-test-plan/teardown.sh
@@ -0,0 +1,21 @@
+#!/bin/bash
+#
+# Copyright 2018 Intel Corporation
+#
+# 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.
+#
+
+rm -rf mountpath
+docker stop dkv
+docker rm dkv
+docker rmi nexus3.onap.org:10001/onap/music/distributed-kv-store
diff --git a/test/csit/plans/music/music-distributed-kv-store-test-plan/testplan.txt b/test/csit/plans/music/music-distributed-kv-store-test-plan/testplan.txt
new file mode 100644
index 000000000..ac37bc5a6
--- /dev/null
+++ b/test/csit/plans/music/music-distributed-kv-store-test-plan/testplan.txt
@@ -0,0 +1,3 @@
+# Test suites are relative paths under [integration.git]/test/csit/tests/.
+# Place the suites in run order.
+music/music-distributed-kv-store-suite \ No newline at end of file
diff --git a/test/csit/plans/music/music-test-plan/setup.sh b/test/csit/plans/music/music-test-plan/setup.sh
index 517837c9a..ddfdfc023 100755
--- a/test/csit/plans/music/music-test-plan/setup.sh
+++ b/test/csit/plans/music/music-test-plan/setup.sh
@@ -18,41 +18,85 @@
#
# add here eventual scripts needed for music
#
-echo "##########################################################";
-echo "#";
echo "# music scripts calling";
-echo "#";
-echo "##########################################################";
source ${WORKSPACE}/test/csit/scripts/music/music-scripts/music_script.sh
#
-# add here below the start of all docker containers needed for music CSIT testing
-#
-echo "##########################################################";
-echo "#";
-echo "# music scripts docker containers spinoff";
-echo "#";
-echo "##########################################################";
-
-#
# add here all the configuration steps eventually needed to be carried out for music CSIT testing
#
-echo "##########################################################";
-echo "#";
echo "# music configuration step";
-echo "#";
-echo "##########################################################";
+
+CASS_IMG=nexus3.onap.org:10001/onap/music/cassandra_music:latest
+TOMCAT_IMG=nexus3.onap.org:10001/library/tomcat:8.0
+ZK_IMG=nexus3.onap.org:10001/library/zookeeper:3.4
+MUSIC_IMG=nexus3.onap.org:10001/onap/music/music:latest
+WORK_DIR=/tmp/music
+CASS_USERNAME=nelson24
+CASS_PASSWORD=winman123
+MUSIC_SOURCE_PROPERTIES=${WORKSPACE}/test/csit/scripts/music/music-properties
+MUSIC_PROPERTIES=/tmp/music/properties
+MUSIC_LOGS=/tmp/music/logs
+mkdir -p ${MUSIC_PROPERTIES}
+mkdir -p ${MUSIC_LOGS}
+
+cp ${MUSIC_SOURCE_PROPERTIES}/* ${WORK_DIR}/properties
+
+# Create Volume for mapping war file and tomcat
+docker volume create --name music-vol;
+
+# Create a network for all the containers to run in.
+docker network create music-net;
+
+# Start Cassandra
+docker run -d --name music-db --network music-net -p "7000:7000" -p "7001:7001" -p "7199:7199" -p "9042:9042" -p "9160:9160" -e CASSUSER=${CASS_USERNAME} -e CASSPASS=${CASS_PASSWORD} ${CASS_IMG};
+
+CASSA_IP=`docker inspect -f '{{ $network := index .NetworkSettings.Networks "music-net" }}{{ $network.IPAddress}}' music-db`
+echo "CASSANDRA_IP=${CASSA_IP}"
+${WORKSPACE}/test/csit/scripts/optf-has/has/wait_for_port.sh ${CASSA_IP} 9042
+
+# Start Music war
+docker run -d --name music-war -v music-vol:/app ${MUSIC_IMG};
+
+# Start Zookeeper
+docker run -d --name music-zk --network music-net -p "2181:2181" -p "2888:2888" -p "3888:3888" ${ZK_IMG};
+
+ZOO_IP=`docker inspect -f '{{ $network := index .NetworkSettings.Networks "music-net" }}{{ $network.IPAddress}}' music-zk`
+echo "ZOOKEEPER_IP=${ZOO_IP}"
+
+# Delay between Cassandra/Zookeeper and Tomcat
+sleep 60;
+
+# Start Up tomcat - Needs to have properties,logs dir and war file volume mapped.
+docker run -d --name music-tomcat --network music-net -p "8080:8080" -v music-vol:/usr/local/tomcat/webapps -v ${WORK_DIR}/properties:/opt/app/music/etc:ro -v ${WORK_DIR}/logs:/opt/app/music/logs ${TOMCAT_IMG};
+
+# Connect tomcat to host bridge network so that its port can be seen.
+docker network connect bridge music-tomcat;
+
+TOMCAT_IP=`docker inspect --format '{{ .NetworkSettings.Networks.bridge.IPAddress}}' music-tomcat`
+echo "TOMCAT_IP=${TOMCAT_IP}"
+
+${WORKSPACE}/test/csit/scripts/music/music-scripts/wait_for_port.sh ${TOMCAT_IP} 8080
+
+
+echo "inspect docker things for tracing purpose"
+docker inspect music-db
+docker inspect music-zk
+docker inspect music-tomcat
+docker inspect music-war
+docker volume inspect music-vol
+docker network inspect music-net
+
+echo "dump music content just after music is started"
+docker exec music-db /usr/bin/nodetool status
+docker exec music-db /usr/bin/cqlsh -unelson24 -pwinman123 -e 'SELECT * FROM system_schema.keyspaces'
+docker exec music-db /usr/bin/cqlsh -unelson24 -pwinman123 -e 'SELECT * FROM admin.keyspace_master'
#
# add here all ROBOT_VARIABLES settings
#
-echo "##########################################################";
-echo "#";
echo "# music robot variables settings";
-echo "#";
-echo "##########################################################";
-ROBOT_VARIABLES="-v MUSIC_HOSTNAME:http://localhost -v MUSIC_PORT:8080 -v COND_HOSTNAME:http://localhost -v COND_PORT:8091"
+ROBOT_VARIABLES="-v MUSIC_HOSTNAME:http://${TOMCAT_IP} -v MUSIC_PORT:8080 -v COND_HOSTNAME:http://localhost -v COND_PORT:8091"
echo ${ROBOT_VARIABLES}
diff --git a/test/csit/plans/music/music-test-plan/teardown.sh b/test/csit/plans/music/music-test-plan/teardown.sh
index 884a64f71..e9982ae27 100755
--- a/test/csit/plans/music/music-test-plan/teardown.sh
+++ b/test/csit/plans/music/music-test-plan/teardown.sh
@@ -24,5 +24,31 @@ echo "#";
echo "# music scripts docker containers killing";
echo "#";
echo "##########################################################";
-# kill-instance.sh <dockercontainername>
+docker stop music-tomcat
+docker stop music-war
+docker stop music-zk
+docker stop music-db
+
+docker rm music-zk
+docker rm music-tomcat
+docker rm music-war
+docker rm music-db
+
+docker network rm music-net;
+sleep 5;
+
+docker volume rm music-vol
+
+echo "dump music.log files"
+ls -alF /tmp/music
+ls -alF /tmp/music/properties
+cat /tmp/music/properties/music.properties
+cat /tmp/music/logs/MUSIC/music.log
+cat /tmp/music/logs/MUSIC/error.log
+
+#rm -Rf /tmp/music
+
+
+
+
diff --git a/test/csit/plans/optf/has/setup.sh b/test/csit/plans/optf-has/has/setup.sh
index b2c81433c..a0bef71d6 100755
--- a/test/csit/plans/optf/has/setup.sh
+++ b/test/csit/plans/optf-has/has/setup.sh
@@ -15,44 +15,42 @@
# limitations under the License.
#
+
+#
+# add here eventual scripts needed for music
#
+echo "# music scripts calling";
+source ${WORKSPACE}/test/csit/scripts/optf-has/has/music_script.sh
+
+
+#
+echo "# simulator scripts calling";
+source ${WORKSPACE}/test/csit/scripts/optf-has/has/simulator_script.sh
+
# add here eventual scripts needed for optf/has
#
-echo "##########################################################";
-echo "#";
echo "# optf/has scripts calling";
-echo "#";
-echo "##########################################################";
-source ${WORKSPACE}/test/csit/scripts/optf/has/has_script.sh
+source ${WORKSPACE}/test/csit/scripts/optf-has/has/has_script.sh
#
# add here below the start of all docker containers needed for optf/has CSIT testing
#
-echo "##########################################################";
-echo "#";
echo "# optf/has scripts docker containers spinoff";
-echo "#";
-echo "##########################################################";
#
# add here all the configuration steps eventually needed to be carried out for optf/has CSIT testing
#
-echo "##########################################################";
-echo "#";
echo "# optf/has configuration step";
-echo "#";
-echo "##########################################################";
#
# add here all ROBOT_VARIABLES settings
#
-echo "##########################################################";
-echo "#";
echo "# optf/has robot variables settings";
-echo "#";
-echo "##########################################################";
-ROBOT_VARIABLES="-v MUSIC_HOSTNAME:http://localhost -v MUSIC_PORT:8080 -v COND_HOSTNAME:http://localhost -v COND_PORT:8091"
+echo "conductor ip = ${COND_IP}"
+echo "music ip = ${TOMCAT_IP}"
+
+ROBOT_VARIABLES="-v MUSIC_HOSTNAME:http://${TOMCAT_IP} -v MUSIC_PORT:8080 -v COND_HOSTNAME:http://${COND_IP} -v COND_PORT:8091"
echo ${ROBOT_VARIABLES}
diff --git a/test/csit/plans/optf-has/has/teardown.sh b/test/csit/plans/optf-has/has/teardown.sh
new file mode 100755
index 000000000..41d7aff2c
--- /dev/null
+++ b/test/csit/plans/optf-has/has/teardown.sh
@@ -0,0 +1,34 @@
+#!/bin/bash
+#
+# Copyright 2016-2017 Huawei Technologies Co., Ltd.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+
+
+#
+# add here below the killing of all docker containers used for optf/has CSIT testing
+#
+
+#
+# optf/has scripts docker containers killing";
+#
+echo "# optf/has has scripts calling";
+source ${WORKSPACE}/test/csit/scripts/optf-has/has/has_teardown_script.sh
+
+echo "# optf/has simulator scripts calling";
+source ${WORKSPACE}/test/csit/scripts/optf-has/has/simulator_teardown_script.sh
+
+echo "# optf/has music scripts calling";
+source ${WORKSPACE}/test/csit/scripts/optf-has/has/music_teardown_script.sh
+
diff --git a/test/csit/plans/optf-has/has/testplan.txt b/test/csit/plans/optf-has/has/testplan.txt
new file mode 100644
index 000000000..980050c90
--- /dev/null
+++ b/test/csit/plans/optf-has/has/testplan.txt
@@ -0,0 +1,3 @@
+# Test suites are relative paths under [integration.git]/test/csit/tests/.
+# Place the suites in run order.
+optf-has/has
diff --git a/test/csit/plans/optf/osdf/sample.txt b/test/csit/plans/optf-has/osdf/sample.txt
index 9f4e8d7d6..9f4e8d7d6 100644
--- a/test/csit/plans/optf/osdf/sample.txt
+++ b/test/csit/plans/optf-has/osdf/sample.txt
diff --git a/test/csit/plans/portal-sdk/testsuite/.env b/test/csit/plans/portal-sdk/testsuite/.env
index 0b7de9560..27e9aa3fb 100644
--- a/test/csit/plans/portal-sdk/testsuite/.env
+++ b/test/csit/plans/portal-sdk/testsuite/.env
@@ -2,25 +2,34 @@
# used by docker-compose AND by other shell scripts
# Host directory with config files
-LOGS_DIR=./logs
-PROPS_DIR=./properties
-
-
-# Directory within containers
-WEBAPPS_DIR=/opt/apache-tomcat-8.0.37/webapps
-
# Following are ALSO used in demo/boot/portal_vm_init.sh
-EP_IMG_NAME=onap/portal-apps
+EP_IMG_NAME=onap/portal-app
+SDK_IMG_NAME=onap/portal-sdk
DB_IMG_NAME=onap/portal-db
+CDR_IMG_NAME=onap/music/cassandra_music
+ZK_IMG_NAME=zookeeper
WMS_IMG_NAME=onap/portal-wms
+# Deployed with portal; built elsewhere
CLI_IMG_NAME=onap/cli
# Tag all images with this
-PORTAL_TAG=1.3.0
-DOCKER_IMAGE_VERSION=1.3-STAGING-latest
+DOCKER_IMAGE_VERSION=2.1-STAGING-latest
CLI_DOCKER_VERSION=1.1-STAGING-latest
+CDR_IMAGE_VERSION=latest
+ZK_IMAGE_VERSION=3.4
NEXUS_DOCKER_REPO=nexus3.onap.org:10003
+# This is used during builds and in docker-compose;
+# it is never published to the ONAP registry.
+PORTAL_TAG=beijing
+
+# Name of directory in apps container (NOT host)
+WEBAPPS_DIR=/opt/apache-tomcat-8.0.37/webapps
+
+# Required settings with default values.
+# Export shell environment variables on ALL hosts.
+LOGS_DIR=./logs
+PROPS_DIR=./properties
# Optional settings with no defaults.
EXTRA_HOST_IP=""
diff --git a/test/csit/plans/portal-sdk/testsuite/docker-compose.yml b/test/csit/plans/portal-sdk/testsuite/docker-compose.yml
index 7a9fb8caa..dda74c91a 100644
--- a/test/csit/plans/portal-sdk/testsuite/docker-compose.yml
+++ b/test/csit/plans/portal-sdk/testsuite/docker-compose.yml
@@ -1,11 +1,12 @@
# docker-compose for ONAP portal containers: database, microservice, portal apps.
-# Relies on .env file in current directory.
+# Relies on .env file, which CANNOT be specified via command-line option
# Works in multiple environments; does not pull from a Nexus registry.
# Exposes the portal apps docker (but not DB nor WMS dockers) on the host network.
# Images must be pulled from ONAP Nexus registry after logging in like this:
# docker login -u USER -p PASS nexus3.onap.org:10001
+# Uses healthcheck feature added in docker-compose v2.1
-version: '2.0'
+version: '2.1'
services:
@@ -29,11 +30,51 @@ services:
volumes:
# Just specify a path and let the Engine create a volume
- /var/lib/mysql
+ # Inject the onboarding script at start time
+ - ./Apps_Users_OnBoarding_Script.sql:/docker-entrypoint-initdb.d/zzz_apps_users_onboarding.sql
logging:
driver: json-file
+ healthcheck:
+ test: [ "CMD", "mysqladmin", "ping", "-h", "localhost" ]
+ timeout: 10s
+ retries: 30
+
+ # Config files may use hostname "portal-cassandra"
+ portal-cassandra:
+ image: ${CDR_IMG_NAME}:${PORTAL_TAG}
+ environment:
+ - CASSUSER=root
+ - CASSPASS=Aa123456
+ expose:
+ - 7000
+ - 7001
+ - 7199
+ - 9042
+ - 9160
+ ports:
+ - 7000:7000
+ - 7001:7001
+ - 7199:7199
+ - 9042:9042
+ - 9160:9160
+ volumes:
+ - ./portal.cql:/docker-entrypoint-initdb.d/zzz_portal.cql
+ - ./portalsdk.cql:/docker-entrypoint-initdb.d/zzz_portalsdk.cql
+ links:
+ - portal-db
+ depends_on:
+ portal-db:
+ condition: service_healthy
+
+ # Config files may use hostname "portal-zk"
+ portal-zk:
+ image: ${ZK_IMG_NAME}:${PORTAL_TAG}
+ expose:
+ - 2181
+ ports:
+ - 2181:2181
- # An environment variable here CAN override the database URL;
- # instead the value in the config file uses hostname from above
+ # The app config file uses the docker name above
portal-wms:
image: ${WMS_IMG_NAME}:${PORTAL_TAG}
expose:
@@ -41,25 +82,18 @@ services:
links:
- portal-db
depends_on:
- - portal-db
+ portal-db:
+ condition: service_healthy
volumes:
- - ${PROPS_DIR}/ECOMPWIDGETMS/application.properties:/application.properties
+ - ${PROPS_DIR}/ONAPWIDGETMS/application.properties:/application.properties
+ - ${PROPS_DIR}/ONAPWIDGETMS/application.yml:/application.yml
command:
- - /wait-for.sh
- - -t
- - "420"
- - portal-db:3306
- - --
- - /start-wms-cmd.sh
+ - /start-wms.sh
logging:
driver: json-file
- # Environment variables here CANNOT override the database URL because
- # two apps use identical configuration keys with different values
- portal-apps:
+ portal-app:
image: ${EP_IMG_NAME}:${PORTAL_TAG}
- expose:
- - 8989
ports:
- 8989:8080
- 8010:8009
@@ -67,32 +101,51 @@ services:
links:
- portal-db
- portal-wms
+ - portal-zk
+ - portal-cassandra
depends_on:
- - portal-db
- - portal-wms
+ portal-db:
+ condition: service_healthy
+ portal-wms:
+ condition: service_started
volumes:
- - ${PROPS_DIR}/ECOMPPORTALAPP/system.properties:${WEBAPPS_DIR}/ECOMPPORTAL/WEB-INF/conf/system.properties
- - ${PROPS_DIR}/ECOMPPORTALAPP/fusion.properties:${WEBAPPS_DIR}/ECOMPPORTAL/WEB-INF/fusion/conf/fusion.properties
- - ${PROPS_DIR}/ECOMPPORTALAPP/portal.properties:${WEBAPPS_DIR}/ECOMPPORTAL/WEB-INF/classes/portal.properties
- - ${PROPS_DIR}/ECOMPPORTALAPP/openid-connect.properties:${WEBAPPS_DIR}/ECOMPPORTAL/WEB-INF/classes/openid-connect.properties
- - ${PROPS_DIR}/ECOMPPORTALAPP/logback.xml:${WEBAPPS_DIR}/ECOMPPORTAL/WEB-INF/classes/logback.xml
- - ${PROPS_DIR}/ECOMPSDKAPP/fusion.properties:${WEBAPPS_DIR}/ECOMPSDKAPP/WEB-INF/fusion/conf/fusion.properties
- - ${PROPS_DIR}/ECOMPSDKAPP/system.properties:${WEBAPPS_DIR}/ECOMPSDKAPP/WEB-INF/conf/system.properties
- - ${PROPS_DIR}/ECOMPSDKAPP/portal.properties:${WEBAPPS_DIR}/ECOMPSDKAPP/WEB-INF/classes/portal.properties
- - ${PROPS_DIR}/ECOMPDBCAPP/system.properties:${WEBAPPS_DIR}/ECOMPDBCAPP/WEB-INF/conf/system.properties
- - ${PROPS_DIR}/ECOMPDBCAPP/portal.properties:${WEBAPPS_DIR}/ECOMPDBCAPP/WEB-INF/classes/portal.properties
- - ${PROPS_DIR}/ECOMPDBCAPP/dbcapp.properties:${WEBAPPS_DIR}/ECOMPDBCAPP/WEB-INF/dbcapp/dbcapp.properties
- - ${PROPS_DIR}/ECOMPDBCAPP/fusion.properties:${WEBAPPS_DIR}/ECOMPDBCAPP/WEB-INF/fusion/conf/fusion.properties
+ - ${PROPS_DIR}/ONAPPORTAL/system.properties:${WEBAPPS_DIR}/ONAPPORTAL/WEB-INF/conf/system.properties
+ - ${PROPS_DIR}/ONAPPORTAL/fusion.properties:${WEBAPPS_DIR}/ONAPPORTAL/WEB-INF/fusion/conf/fusion.properties
+ - ${PROPS_DIR}/ONAPPORTAL/portal.properties:${WEBAPPS_DIR}/ONAPPORTAL/WEB-INF/classes/portal.properties
+ - ${PROPS_DIR}/ONAPPORTAL/music.properties:${WEBAPPS_DIR}/ONAPPORTAL/WEB-INF/classes/music.properties
+ - ${PROPS_DIR}/ONAPPORTAL/openid-connect.properties:${WEBAPPS_DIR}/ONAPPORTAL/WEB-INF/classes/openid-connect.properties
+ - ${PROPS_DIR}/ONAPPORTAL/logback.xml:${WEBAPPS_DIR}/ONAPPORTAL/WEB-INF/classes/logback.xml
- ${LOGS_DIR}:/opt/apache-tomcat-8.0.37/logs
command:
- - /wait-for.sh
- - -t
- - "420"
- - portal-db:3306
- - --
- - /start-apps-cmd.sh
+ - /start-apache-tomcat.sh
# see comments in .env file
+ - -i
- $EXTRA_HOST_IP
+ - -n
- $EXTRA_HOST_NAME
logging:
driver: json-file
+
+ portal-sdk:
+ image: ${SDK_IMG_NAME}:${PORTAL_TAG}
+ ports:
+ - 8990:8080
+ links:
+ - portal-db
+ - portal-wms
+ - portal-zk
+ - portal-cassandra
+ depends_on:
+ portal-db:
+ condition: service_healthy
+ volumes:
+ - ${PROPS_DIR}/ONAPPORTALSDK/fusion.properties:${WEBAPPS_DIR}/ONAPPORTALSDK/WEB-INF/fusion/conf/fusion.properties
+ - ${PROPS_DIR}/ONAPPORTALSDK/system.properties:${WEBAPPS_DIR}/ONAPPORTALSDK/WEB-INF/conf/system.properties
+ - ${PROPS_DIR}/ONAPPORTALSDK/portal.properties:${WEBAPPS_DIR}/ONAPPORTALSDK/WEB-INF/classes/portal.properties
+ - ${PROPS_DIR}/ONAPPORTALSDK/music.properties:${WEBAPPS_DIR}/ONAPPORTALSDK/WEB-INF/classes/music.properties
+ - ${PROPS_DIR}/ONAPPORTALSDK/logback.xml:${WEBAPPS_DIR}/ONAPPORTALSDK/WEB-INF/classes/logback.xml
+ - ${LOGS_DIR}:/opt/apache-tomcat-8.0.37/logs
+ command:
+ - /start-apache-tomcat.sh
+ logging:
+ driver: json-file
diff --git a/test/csit/plans/portal-sdk/testsuite/setup.sh b/test/csit/plans/portal-sdk/testsuite/setup.sh
index 0c90dc66b..6510311cb 100644
--- a/test/csit/plans/portal-sdk/testsuite/setup.sh
+++ b/test/csit/plans/portal-sdk/testsuite/setup.sh
@@ -48,7 +48,7 @@ NEXUS_DOCKER_REPO=nexus3.onap.org:10003
CURR="$(pwd)"
-git clone http://gerrit.onap.org/r/portal -b "release-1.3.0"
+git clone http://gerrit.onap.org/r/portal -b "master"
# Refresh configuration and scripts
cd portal
@@ -80,15 +80,21 @@ mkdir -p $LOGS_DIR
# Refresh images
docker login -u $NEXUS_USERNAME -p $NEXUS_PASSWD $NEXUS_DOCKER_REPO
-docker pull $NEXUS_DOCKER_REPO/${DB_IMG_NAME}:$DOCKER_IMAGE_VERSION
-docker pull $NEXUS_DOCKER_REPO/${EP_IMG_NAME}:$DOCKER_IMAGE_VERSION
-docker pull $NEXUS_DOCKER_REPO/${WMS_IMG_NAME}:$DOCKER_IMAGE_VERSION
+docker pull $NEXUS_DOCKER_REPO/$DB_IMG_NAME:$DOCKER_IMAGE_VERSION
+docker pull $NEXUS_DOCKER_REPO/$EP_IMG_NAME:$DOCKER_IMAGE_VERSION
+docker pull $NEXUS_DOCKER_REPO/$SDK_IMG_NAME:$DOCKER_IMAGE_VERSION
+docker pull $NEXUS_DOCKER_REPO/$CDR_IMG_NAME:$CDR_IMAGE_VERSION
+docker pull $ZK_IMG_NAME:$ZK_IMAGE_VERSION
+docker pull $NEXUS_DOCKER_REPO/$WMS_IMG_NAME:$DOCKER_IMAGE_VERSION
docker pull $NEXUS_DOCKER_REPO/$CLI_IMG_NAME:$CLI_DOCKER_VERSION
# Tag them as expected by docker-compose file
-docker tag $NEXUS_DOCKER_REPO/${DB_IMG_NAME}:$DOCKER_IMAGE_VERSION $DB_IMG_NAME:$PORTAL_TAG
-docker tag $NEXUS_DOCKER_REPO/${EP_IMG_NAME}:$DOCKER_IMAGE_VERSION $EP_IMG_NAME:$PORTAL_TAG
-docker tag $NEXUS_DOCKER_REPO/${WMS_IMG_NAME}:$DOCKER_IMAGE_VERSION $WMS_IMG_NAME:$PORTAL_TAG
+docker tag $NEXUS_DOCKER_REPO/$DB_IMG_NAME:$DOCKER_IMAGE_VERSION $DB_IMG_NAME:$PORTAL_TAG
+docker tag $NEXUS_DOCKER_REPO/$EP_IMG_NAME:$DOCKER_IMAGE_VERSION $EP_IMG_NAME:$PORTAL_TAG
+docker tag $NEXUS_DOCKER_REPO/$SDK_IMG_NAME:$DOCKER_IMAGE_VERSION $SDK_IMG_NAME:$PORTAL_TAG
+docker tag $NEXUS_DOCKER_REPO/$CDR_IMG_NAME:$CDR_IMAGE_VERSION $CDR_IMG_NAME:$PORTAL_TAG
+docker tag $ZK_IMG_NAME:$ZK_IMAGE_VERSION $ZK_IMG_NAME:$PORTAL_TAG
+docker tag $NEXUS_DOCKER_REPO/$WMS_IMG_NAME:$DOCKER_IMAGE_VERSION $WMS_IMG_NAME:$PORTAL_TAG
docker tag $NEXUS_DOCKER_REPO/$CLI_IMG_NAME:$CLI_DOCKER_VERSION $CLI_IMG_NAME:$PORTAL_TAG
@@ -130,7 +136,7 @@ fi
-sleep 3m
+sleep 6m
# WAIT 5 minutes maximum and test every 5 seconds if Portal up using HealthCheck API
TIME_OUT=500
@@ -170,7 +176,7 @@ HOST_IP=$(ip route get 8.8.8.8 | awk '/8.8.8.8/ {print $NF}')
export HOST_IP=${HOST_IP}
#docker logs deliveries_portal-db_1
-docker logs deliveries_portal-apps_1
+docker logs deliveries_portal-app_1
docker logs deliveries_portal-wms_1
diff --git a/test/csit/plans/portal/testsuite/.env b/test/csit/plans/portal/testsuite/.env
index 0b7de9560..27e9aa3fb 100644
--- a/test/csit/plans/portal/testsuite/.env
+++ b/test/csit/plans/portal/testsuite/.env
@@ -2,25 +2,34 @@
# used by docker-compose AND by other shell scripts
# Host directory with config files
-LOGS_DIR=./logs
-PROPS_DIR=./properties
-
-
-# Directory within containers
-WEBAPPS_DIR=/opt/apache-tomcat-8.0.37/webapps
-
# Following are ALSO used in demo/boot/portal_vm_init.sh
-EP_IMG_NAME=onap/portal-apps
+EP_IMG_NAME=onap/portal-app
+SDK_IMG_NAME=onap/portal-sdk
DB_IMG_NAME=onap/portal-db
+CDR_IMG_NAME=onap/music/cassandra_music
+ZK_IMG_NAME=zookeeper
WMS_IMG_NAME=onap/portal-wms
+# Deployed with portal; built elsewhere
CLI_IMG_NAME=onap/cli
# Tag all images with this
-PORTAL_TAG=1.3.0
-DOCKER_IMAGE_VERSION=1.3-STAGING-latest
+DOCKER_IMAGE_VERSION=2.1-STAGING-latest
CLI_DOCKER_VERSION=1.1-STAGING-latest
+CDR_IMAGE_VERSION=latest
+ZK_IMAGE_VERSION=3.4
NEXUS_DOCKER_REPO=nexus3.onap.org:10003
+# This is used during builds and in docker-compose;
+# it is never published to the ONAP registry.
+PORTAL_TAG=beijing
+
+# Name of directory in apps container (NOT host)
+WEBAPPS_DIR=/opt/apache-tomcat-8.0.37/webapps
+
+# Required settings with default values.
+# Export shell environment variables on ALL hosts.
+LOGS_DIR=./logs
+PROPS_DIR=./properties
# Optional settings with no defaults.
EXTRA_HOST_IP=""
diff --git a/test/csit/plans/portal/testsuite/docker-compose.yml b/test/csit/plans/portal/testsuite/docker-compose.yml
index 7a9fb8caa..dda74c91a 100644
--- a/test/csit/plans/portal/testsuite/docker-compose.yml
+++ b/test/csit/plans/portal/testsuite/docker-compose.yml
@@ -1,11 +1,12 @@
# docker-compose for ONAP portal containers: database, microservice, portal apps.
-# Relies on .env file in current directory.
+# Relies on .env file, which CANNOT be specified via command-line option
# Works in multiple environments; does not pull from a Nexus registry.
# Exposes the portal apps docker (but not DB nor WMS dockers) on the host network.
# Images must be pulled from ONAP Nexus registry after logging in like this:
# docker login -u USER -p PASS nexus3.onap.org:10001
+# Uses healthcheck feature added in docker-compose v2.1
-version: '2.0'
+version: '2.1'
services:
@@ -29,11 +30,51 @@ services:
volumes:
# Just specify a path and let the Engine create a volume
- /var/lib/mysql
+ # Inject the onboarding script at start time
+ - ./Apps_Users_OnBoarding_Script.sql:/docker-entrypoint-initdb.d/zzz_apps_users_onboarding.sql
logging:
driver: json-file
+ healthcheck:
+ test: [ "CMD", "mysqladmin", "ping", "-h", "localhost" ]
+ timeout: 10s
+ retries: 30
+
+ # Config files may use hostname "portal-cassandra"
+ portal-cassandra:
+ image: ${CDR_IMG_NAME}:${PORTAL_TAG}
+ environment:
+ - CASSUSER=root
+ - CASSPASS=Aa123456
+ expose:
+ - 7000
+ - 7001
+ - 7199
+ - 9042
+ - 9160
+ ports:
+ - 7000:7000
+ - 7001:7001
+ - 7199:7199
+ - 9042:9042
+ - 9160:9160
+ volumes:
+ - ./portal.cql:/docker-entrypoint-initdb.d/zzz_portal.cql
+ - ./portalsdk.cql:/docker-entrypoint-initdb.d/zzz_portalsdk.cql
+ links:
+ - portal-db
+ depends_on:
+ portal-db:
+ condition: service_healthy
+
+ # Config files may use hostname "portal-zk"
+ portal-zk:
+ image: ${ZK_IMG_NAME}:${PORTAL_TAG}
+ expose:
+ - 2181
+ ports:
+ - 2181:2181
- # An environment variable here CAN override the database URL;
- # instead the value in the config file uses hostname from above
+ # The app config file uses the docker name above
portal-wms:
image: ${WMS_IMG_NAME}:${PORTAL_TAG}
expose:
@@ -41,25 +82,18 @@ services:
links:
- portal-db
depends_on:
- - portal-db
+ portal-db:
+ condition: service_healthy
volumes:
- - ${PROPS_DIR}/ECOMPWIDGETMS/application.properties:/application.properties
+ - ${PROPS_DIR}/ONAPWIDGETMS/application.properties:/application.properties
+ - ${PROPS_DIR}/ONAPWIDGETMS/application.yml:/application.yml
command:
- - /wait-for.sh
- - -t
- - "420"
- - portal-db:3306
- - --
- - /start-wms-cmd.sh
+ - /start-wms.sh
logging:
driver: json-file
- # Environment variables here CANNOT override the database URL because
- # two apps use identical configuration keys with different values
- portal-apps:
+ portal-app:
image: ${EP_IMG_NAME}:${PORTAL_TAG}
- expose:
- - 8989
ports:
- 8989:8080
- 8010:8009
@@ -67,32 +101,51 @@ services:
links:
- portal-db
- portal-wms
+ - portal-zk
+ - portal-cassandra
depends_on:
- - portal-db
- - portal-wms
+ portal-db:
+ condition: service_healthy
+ portal-wms:
+ condition: service_started
volumes:
- - ${PROPS_DIR}/ECOMPPORTALAPP/system.properties:${WEBAPPS_DIR}/ECOMPPORTAL/WEB-INF/conf/system.properties
- - ${PROPS_DIR}/ECOMPPORTALAPP/fusion.properties:${WEBAPPS_DIR}/ECOMPPORTAL/WEB-INF/fusion/conf/fusion.properties
- - ${PROPS_DIR}/ECOMPPORTALAPP/portal.properties:${WEBAPPS_DIR}/ECOMPPORTAL/WEB-INF/classes/portal.properties
- - ${PROPS_DIR}/ECOMPPORTALAPP/openid-connect.properties:${WEBAPPS_DIR}/ECOMPPORTAL/WEB-INF/classes/openid-connect.properties
- - ${PROPS_DIR}/ECOMPPORTALAPP/logback.xml:${WEBAPPS_DIR}/ECOMPPORTAL/WEB-INF/classes/logback.xml
- - ${PROPS_DIR}/ECOMPSDKAPP/fusion.properties:${WEBAPPS_DIR}/ECOMPSDKAPP/WEB-INF/fusion/conf/fusion.properties
- - ${PROPS_DIR}/ECOMPSDKAPP/system.properties:${WEBAPPS_DIR}/ECOMPSDKAPP/WEB-INF/conf/system.properties
- - ${PROPS_DIR}/ECOMPSDKAPP/portal.properties:${WEBAPPS_DIR}/ECOMPSDKAPP/WEB-INF/classes/portal.properties
- - ${PROPS_DIR}/ECOMPDBCAPP/system.properties:${WEBAPPS_DIR}/ECOMPDBCAPP/WEB-INF/conf/system.properties
- - ${PROPS_DIR}/ECOMPDBCAPP/portal.properties:${WEBAPPS_DIR}/ECOMPDBCAPP/WEB-INF/classes/portal.properties
- - ${PROPS_DIR}/ECOMPDBCAPP/dbcapp.properties:${WEBAPPS_DIR}/ECOMPDBCAPP/WEB-INF/dbcapp/dbcapp.properties
- - ${PROPS_DIR}/ECOMPDBCAPP/fusion.properties:${WEBAPPS_DIR}/ECOMPDBCAPP/WEB-INF/fusion/conf/fusion.properties
+ - ${PROPS_DIR}/ONAPPORTAL/system.properties:${WEBAPPS_DIR}/ONAPPORTAL/WEB-INF/conf/system.properties
+ - ${PROPS_DIR}/ONAPPORTAL/fusion.properties:${WEBAPPS_DIR}/ONAPPORTAL/WEB-INF/fusion/conf/fusion.properties
+ - ${PROPS_DIR}/ONAPPORTAL/portal.properties:${WEBAPPS_DIR}/ONAPPORTAL/WEB-INF/classes/portal.properties
+ - ${PROPS_DIR}/ONAPPORTAL/music.properties:${WEBAPPS_DIR}/ONAPPORTAL/WEB-INF/classes/music.properties
+ - ${PROPS_DIR}/ONAPPORTAL/openid-connect.properties:${WEBAPPS_DIR}/ONAPPORTAL/WEB-INF/classes/openid-connect.properties
+ - ${PROPS_DIR}/ONAPPORTAL/logback.xml:${WEBAPPS_DIR}/ONAPPORTAL/WEB-INF/classes/logback.xml
- ${LOGS_DIR}:/opt/apache-tomcat-8.0.37/logs
command:
- - /wait-for.sh
- - -t
- - "420"
- - portal-db:3306
- - --
- - /start-apps-cmd.sh
+ - /start-apache-tomcat.sh
# see comments in .env file
+ - -i
- $EXTRA_HOST_IP
+ - -n
- $EXTRA_HOST_NAME
logging:
driver: json-file
+
+ portal-sdk:
+ image: ${SDK_IMG_NAME}:${PORTAL_TAG}
+ ports:
+ - 8990:8080
+ links:
+ - portal-db
+ - portal-wms
+ - portal-zk
+ - portal-cassandra
+ depends_on:
+ portal-db:
+ condition: service_healthy
+ volumes:
+ - ${PROPS_DIR}/ONAPPORTALSDK/fusion.properties:${WEBAPPS_DIR}/ONAPPORTALSDK/WEB-INF/fusion/conf/fusion.properties
+ - ${PROPS_DIR}/ONAPPORTALSDK/system.properties:${WEBAPPS_DIR}/ONAPPORTALSDK/WEB-INF/conf/system.properties
+ - ${PROPS_DIR}/ONAPPORTALSDK/portal.properties:${WEBAPPS_DIR}/ONAPPORTALSDK/WEB-INF/classes/portal.properties
+ - ${PROPS_DIR}/ONAPPORTALSDK/music.properties:${WEBAPPS_DIR}/ONAPPORTALSDK/WEB-INF/classes/music.properties
+ - ${PROPS_DIR}/ONAPPORTALSDK/logback.xml:${WEBAPPS_DIR}/ONAPPORTALSDK/WEB-INF/classes/logback.xml
+ - ${LOGS_DIR}:/opt/apache-tomcat-8.0.37/logs
+ command:
+ - /start-apache-tomcat.sh
+ logging:
+ driver: json-file
diff --git a/test/csit/plans/portal/testsuite/setup.sh b/test/csit/plans/portal/testsuite/setup.sh
index 0c90dc66b..76cf5f373 100644
--- a/test/csit/plans/portal/testsuite/setup.sh
+++ b/test/csit/plans/portal/testsuite/setup.sh
@@ -48,7 +48,7 @@ NEXUS_DOCKER_REPO=nexus3.onap.org:10003
CURR="$(pwd)"
-git clone http://gerrit.onap.org/r/portal -b "release-1.3.0"
+git clone http://gerrit.onap.org/r/portal -b "master"
# Refresh configuration and scripts
cd portal
@@ -80,15 +80,21 @@ mkdir -p $LOGS_DIR
# Refresh images
docker login -u $NEXUS_USERNAME -p $NEXUS_PASSWD $NEXUS_DOCKER_REPO
-docker pull $NEXUS_DOCKER_REPO/${DB_IMG_NAME}:$DOCKER_IMAGE_VERSION
-docker pull $NEXUS_DOCKER_REPO/${EP_IMG_NAME}:$DOCKER_IMAGE_VERSION
-docker pull $NEXUS_DOCKER_REPO/${WMS_IMG_NAME}:$DOCKER_IMAGE_VERSION
+docker pull $NEXUS_DOCKER_REPO/$DB_IMG_NAME:$DOCKER_IMAGE_VERSION
+docker pull $NEXUS_DOCKER_REPO/$EP_IMG_NAME:$DOCKER_IMAGE_VERSION
+docker pull $NEXUS_DOCKER_REPO/$SDK_IMG_NAME:$DOCKER_IMAGE_VERSION
+docker pull $NEXUS_DOCKER_REPO/$CDR_IMG_NAME:$CDR_IMAGE_VERSION
+docker pull $ZK_IMG_NAME:$ZK_IMAGE_VERSION
+docker pull $NEXUS_DOCKER_REPO/$WMS_IMG_NAME:$DOCKER_IMAGE_VERSION
docker pull $NEXUS_DOCKER_REPO/$CLI_IMG_NAME:$CLI_DOCKER_VERSION
# Tag them as expected by docker-compose file
-docker tag $NEXUS_DOCKER_REPO/${DB_IMG_NAME}:$DOCKER_IMAGE_VERSION $DB_IMG_NAME:$PORTAL_TAG
-docker tag $NEXUS_DOCKER_REPO/${EP_IMG_NAME}:$DOCKER_IMAGE_VERSION $EP_IMG_NAME:$PORTAL_TAG
-docker tag $NEXUS_DOCKER_REPO/${WMS_IMG_NAME}:$DOCKER_IMAGE_VERSION $WMS_IMG_NAME:$PORTAL_TAG
+docker tag $NEXUS_DOCKER_REPO/$DB_IMG_NAME:$DOCKER_IMAGE_VERSION $DB_IMG_NAME:$PORTAL_TAG
+docker tag $NEXUS_DOCKER_REPO/$EP_IMG_NAME:$DOCKER_IMAGE_VERSION $EP_IMG_NAME:$PORTAL_TAG
+docker tag $NEXUS_DOCKER_REPO/$SDK_IMG_NAME:$DOCKER_IMAGE_VERSION $SDK_IMG_NAME:$PORTAL_TAG
+docker tag $NEXUS_DOCKER_REPO/$CDR_IMG_NAME:$CDR_IMAGE_VERSION $CDR_IMG_NAME:$PORTAL_TAG
+docker tag $ZK_IMG_NAME:$ZK_IMAGE_VERSION $ZK_IMG_NAME:$PORTAL_TAG
+docker tag $NEXUS_DOCKER_REPO/$WMS_IMG_NAME:$DOCKER_IMAGE_VERSION $WMS_IMG_NAME:$PORTAL_TAG
docker tag $NEXUS_DOCKER_REPO/$CLI_IMG_NAME:$CLI_DOCKER_VERSION $CLI_IMG_NAME:$PORTAL_TAG
@@ -130,7 +136,7 @@ fi
-sleep 3m
+sleep 6m
# WAIT 5 minutes maximum and test every 5 seconds if Portal up using HealthCheck API
TIME_OUT=500
@@ -169,8 +175,8 @@ fi
HOST_IP=$(ip route get 8.8.8.8 | awk '/8.8.8.8/ {print $NF}')
export HOST_IP=${HOST_IP}
-#docker logs deliveries_portal-db_1
-docker logs deliveries_portal-apps_1
+docker logs deliveries_portal-db_1
+docker logs deliveries_portal-app_1
docker logs deliveries_portal-wms_1
diff --git a/test/csit/plans/sdc/nightly/setup.sh b/test/csit/plans/sdc/nightly/setup.sh
index 5abdd6bd1..a7bbaa8ee 100644
--- a/test/csit/plans/sdc/nightly/setup.sh
+++ b/test/csit/plans/sdc/nightly/setup.sh
@@ -1,29 +1,6 @@
#!/bin/bash
-#
-# Copyright 2016-2017 Huawei Technologies Co., Ltd.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-# Modifications copyright (c) 2017 AT&T Intellectual Property
-#
-## Place the scripts in run order:
-
-
-mkdir ${WORKSPACE}/archives
-chmod -R 777 ${WORKSPACE}/archives
-
-source ${WORKSPACE}/test/csit/scripts/sdc/clone_and_setup_sdc_data.sh
+source ${WORKSPACE}/test/csit/scripts/sdc/setup_sdc_for_apis_sanity.sh
BE_IP=`get-instance-ip.sh sdc-BE`
echo BE_IP=${BE_IP}
diff --git a/test/csit/plans/sdc/nightly/teardown.sh b/test/csit/plans/sdc/nightly/teardown.sh
index a5f69819e..2074d10f4 100644
--- a/test/csit/plans/sdc/nightly/teardown.sh
+++ b/test/csit/plans/sdc/nightly/teardown.sh
@@ -1,22 +1,3 @@
#!/bin/bash
-#
-# Copyright 2016-2017 Huawei Technologies Co., Ltd.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-# Modifications copyright (c) 2017 AT&T Intellectual Property
-#
source ${WORKSPACE}/test/csit/scripts/sdc/kill_containers_and_remove_dataFolders.sh
-
-# $WORKSPACE/archives/clamp-clone deleted with archives folder when tests starts so we keep it at the end for debugging
diff --git a/test/csit/plans/sdc/sanity/setup.sh b/test/csit/plans/sdc/sanity/setup.sh
index de3cb942c..a7bbaa8ee 100644
--- a/test/csit/plans/sdc/sanity/setup.sh
+++ b/test/csit/plans/sdc/sanity/setup.sh
@@ -1,25 +1,6 @@
#!/bin/bash
-#
-# Copyright 2016-2017 Huawei Technologies Co., Ltd.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-# Modifications copyright (c) 2017 AT&T Intellectual Property
-#
-# Place the scripts in run order:
-
-source ${WORKSPACE}/test/csit/scripts/sdc/clone_and_setup_sdc_data.sh
+source ${WORKSPACE}/test/csit/scripts/sdc/setup_sdc_for_apis_sanity.sh
BE_IP=`get-instance-ip.sh sdc-BE`
echo BE_IP=${BE_IP}
diff --git a/test/csit/plans/sdc/sanity/teardown.sh b/test/csit/plans/sdc/sanity/teardown.sh
index a5f69819e..2074d10f4 100644
--- a/test/csit/plans/sdc/sanity/teardown.sh
+++ b/test/csit/plans/sdc/sanity/teardown.sh
@@ -1,22 +1,3 @@
#!/bin/bash
-#
-# Copyright 2016-2017 Huawei Technologies Co., Ltd.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-# Modifications copyright (c) 2017 AT&T Intellectual Property
-#
source ${WORKSPACE}/test/csit/scripts/sdc/kill_containers_and_remove_dataFolders.sh
-
-# $WORKSPACE/archives/clamp-clone deleted with archives folder when tests starts so we keep it at the end for debugging
diff --git a/test/csit/plans/sdc/uiSanity/setup.sh b/test/csit/plans/sdc/uiSanity/setup.sh
new file mode 100644
index 000000000..8f2bafda9
--- /dev/null
+++ b/test/csit/plans/sdc/uiSanity/setup.sh
@@ -0,0 +1,11 @@
+#!/bin/bash
+
+source ${WORKSPACE}/test/csit/scripts/sdc/setup_sdc_for_ui_sanity.sh
+
+BE_IP=`get-instance-ip.sh sdc-BE`
+echo BE_IP=${BE_IP}
+
+
+# Pass any variables required by Robot test suites in ROBOT_VARIABLES
+ROBOT_VARIABLES="-v BE_IP:${BE_IP}"
+
diff --git a/test/csit/plans/sdc/uiSanity/teardown.sh b/test/csit/plans/sdc/uiSanity/teardown.sh
new file mode 100644
index 000000000..2074d10f4
--- /dev/null
+++ b/test/csit/plans/sdc/uiSanity/teardown.sh
@@ -0,0 +1,3 @@
+#!/bin/bash
+
+source ${WORKSPACE}/test/csit/scripts/sdc/kill_containers_and_remove_dataFolders.sh
diff --git a/test/csit/plans/optf/has/testplan.txt b/test/csit/plans/sdc/uiSanity/testplan.txt
index 0f9f84dfe..801f37d38 100644
--- a/test/csit/plans/optf/has/testplan.txt
+++ b/test/csit/plans/sdc/uiSanity/testplan.txt
@@ -1,3 +1,3 @@
# Test suites are relative paths under [integration.git]/test/csit/tests/.
# Place the suites in run order.
-optf/has
+sdc/sanity
diff --git a/test/csit/plans/sdnc/healthcheck/setup.sh b/test/csit/plans/sdnc/healthcheck/setup.sh
index 3ffed5d26..0b906f4f2 100644
--- a/test/csit/plans/sdnc/healthcheck/setup.sh
+++ b/test/csit/plans/sdnc/healthcheck/setup.sh
@@ -24,8 +24,8 @@ export NEXUS_USERNAME=docker
export NEXUS_PASSWD=docker
export NEXUS_DOCKER_REPO=nexus3.onap.org:10001
export DMAAP_TOPIC=AUTO
-export DOCKER_IMAGE_VERSION=1.2-STAGING-latest
-export CCSDK_DOCKER_IMAGE_VERSION=0.1-STAGING-latest
+export DOCKER_IMAGE_VERSION=1.3-STAGING-latest
+export CCSDK_DOCKER_IMAGE_VERSION=0.2-STAGING-latest
export MTU=$(/sbin/ifconfig | grep MTU | sed 's/.*MTU://' | sed 's/ .*//' | sort -n | head -1)
@@ -64,9 +64,7 @@ docker tag $NEXUS_DOCKER_REPO/onap/sdnc-dmaap-listener-image:$DOCKER_IMAGE_VERSI
# start SDNC containers with docker compose and configuration from docker-compose.yml
-curl -L https://github.com/docker/compose/releases/download/1.9.0/docker-compose-`uname -s`-`uname -m` > docker-compose
-chmod +x docker-compose
-./docker-compose up -d
+docker-compose up -d
# WAIT 10 minutes maximum and test every 5 seconds if SDNC is up using HealthCheck API
TIME_OUT=1000
@@ -96,8 +94,10 @@ INTERVAL=60
TIME=0
while [ "$TIME" -lt "$TIME_OUT" ]; do
-response=$(docker exec sdnc_controller_container /opt/opendaylight/current/bin/client -u karaf system:start-level)
-num_bundles=$(docker exec sdnc_controller_container /opt/opendaylight/current/bin/client -u karaf bundle:list | tail -1 | cut -d\| -f1)
+docker exec sdnc_controller_container rm -f /opt/opendaylight/current/etc/host.key
+response=$(docker exec sdnc_controller_container /opt/opendaylight/current/bin/client system:start-level)
+docker exec sdnc_controller_container rm -f /opt/opendaylight/current/etc/host.key
+num_bundles=$(docker exec sdnc_controller_container /opt/opendaylight/current/bin/client bundle:list | tail -1 | cut -d\| -f1)
if [ "$response" == "Level 100" ] && [ "$num_bundles" -ge 333 ]; then
echo SDNC karaf started in $TIME seconds
@@ -113,13 +113,13 @@ if [ "$TIME" -ge "$TIME_OUT" ]; then
echo TIME OUT: karaf session not started in $TIME_OUT seconds... Could cause problems for testing activities...
fi
-response=$(docker exec sdnc_controller_container /opt/opendaylight/current/bin/client -u karaf system:start-level)
-num_bundles=$(docker exec sdnc_controller_container /opt/opendaylight/current/bin/client -u karaf bundle:list | tail -1 | cut -d\| -f1)
+response=$(docker exec sdnc_controller_container /opt/opendaylight/current/bin/client system:start-level)
+num_bundles=$(docker exec sdnc_controller_container /opt/opendaylight/current/bin/client bundle:list | tail -1 | cut -d\| -f1)
if [ "$response" == "Level 100" ] && [ "$num_bundles" -ge 333 ]; then
- num_bundles=$(docker exec sdnc_controller_container /opt/opendaylight/current/bin/client -u karaf bundle:list | tail -1 | cut -d\| -f1)
- num_failed_bundles=$(docker exec sdnc_controller_container /opt/opendaylight/current/bin/client -u karaf bundle:list | grep Failure | wc -l)
- failed_bundles=$(docker exec sdnc_controller_container /opt/opendaylight/current/bin/client -u karaf bundle:list | grep Failure)
+ num_bundles=$(docker exec sdnc_controller_container /opt/opendaylight/current/bin/client bundle:list | tail -1 | cut -d\| -f1)
+ num_failed_bundles=$(docker exec sdnc_controller_container /opt/opendaylight/current/bin/client bundle:list | grep Failure | wc -l)
+ failed_bundles=$(docker exec sdnc_controller_container /opt/opendaylight/current/bin/client bundle:list | grep Failure)
echo There is/are $num_failed_bundles failed bundles out of $num_bundles installed bundles.
fi
diff --git a/test/csit/plans/sdnc/healthcheck/teardown.sh b/test/csit/plans/sdnc/healthcheck/teardown.sh
index 925e7b732..dd465bb33 100644
--- a/test/csit/plans/sdnc/healthcheck/teardown.sh
+++ b/test/csit/plans/sdnc/healthcheck/teardown.sh
@@ -22,5 +22,6 @@ kill-instance.sh sdnc_dgbuilder_container
kill-instance.sh sdnc_portal_container
kill-instance.sh sdnc_db_container
kill-instance.sh sdnc_ueblistener_container
+kill-instance.sh sdnc_dmaaplistener_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/so/sanity-check/setup.sh b/test/csit/plans/so/integration-testing/setup.sh
index cd0cbdc33..cd0cbdc33 100644
--- a/test/csit/plans/so/sanity-check/setup.sh
+++ b/test/csit/plans/so/integration-testing/setup.sh
diff --git a/test/csit/plans/so/sanity-check/teardown.sh b/test/csit/plans/so/integration-testing/teardown.sh
index 1696c745c..1696c745c 100644
--- a/test/csit/plans/so/sanity-check/teardown.sh
+++ b/test/csit/plans/so/integration-testing/teardown.sh
diff --git a/test/csit/plans/so/sanity-check/testplan.txt b/test/csit/plans/so/integration-testing/testplan.txt
index 761c75c03..761c75c03 100644
--- a/test/csit/plans/so/sanity-check/testplan.txt
+++ b/test/csit/plans/so/integration-testing/testplan.txt
diff --git a/test/csit/plans/vfc-nfvo-multivimproxy/sanity-check/setup.sh b/test/csit/plans/vfc-nfvo-multivimproxy/sanity-check/setup.sh
new file mode 100644
index 000000000..4d97f33eb
--- /dev/null
+++ b/test/csit/plans/vfc-nfvo-multivimproxy/sanity-check/setup.sh
@@ -0,0 +1,44 @@
+#!/bin/bash
+#
+# Copyright 2018 Huawei Technologies Co., Ltd.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+# Place the scripts in run order:
+# Start all process required for executing test case
+
+#login to the onap nexus docker repo
+docker login -u docker -p docker nexus3.onap.org:10001
+
+# Start MSB
+docker run -d -p 8500:8500 --name msb_consul consul:0.9.3
+CONSUL_IP=`get-instance-ip.sh msb_consul`
+echo CONSUL_IP=${CONSUL_IP}
+docker run -d -p 10081:10081 -e CONSUL_IP=$CONSUL_IP --name msb_discovery nexus3.onap.org:10001/onap/msb/msb_discovery
+DISCOVERY_IP=`get-instance-ip.sh msb_discovery`
+echo DISCOVERY_IP=${DISCOVERY_IP}
+docker run -d -p 80:80 -e CONSUL_IP=$CONSUL_IP -e SDCLIENT_IP=$DISCOVERY_IP --name msb_internal_apigateway nexus3.onap.org:10001/onap/msb/msb_apigateway
+MSB_IP==`get-instance-ip.sh msb_internal_apigateway`
+echo MSB_IP=${MSB_IP}
+
+# Start resmgr
+docker run -d --name vfc-multivimproxy -e MSB_ADDR=${MSB_IP}:80 nexus3.onap.org:10001/onap/vfc/multivimproxy
+RESMGR_IP=`get-instance-ip.sh vfc-multivimproxy`
+for i in {1..20}; do
+ curl -sS ${RESMGR_IP}:8486 && break
+ echo sleep $i
+ sleep $i
+done
+
+# Pass any variables required by Robot test suites in ROBOT_VARIABLES
+ROBOT_VARIABLES="-v MSB_IP:${MSB_IP} -v RESMGR_IP:${RESMGR_IP}"
diff --git a/test/csit/plans/vfc-nfvo-multivimproxy/sanity-check/teardown.sh b/test/csit/plans/vfc-nfvo-multivimproxy/sanity-check/teardown.sh
new file mode 100644
index 000000000..c158d1997
--- /dev/null
+++ b/test/csit/plans/vfc-nfvo-multivimproxy/sanity-check/teardown.sh
@@ -0,0 +1,22 @@
+#!/bin/bash
+#
+# Copyright 2018 Huawei Technologies Co., Ltd.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+
+# This script is sourced by run-csit.sh after Robot test completion.
+kill-instance.sh msb_internal_apigateway
+kill-instance.sh msb_discovery
+kill-instance.sh msb_consul
+kill-instance.sh vfc-multivimproxy
diff --git a/test/csit/plans/vfc-nfvo-multivimproxy/sanity-check/testplan.txt b/test/csit/plans/vfc-nfvo-multivimproxy/sanity-check/testplan.txt
new file mode 100644
index 000000000..f81be8ecf
--- /dev/null
+++ b/test/csit/plans/vfc-nfvo-multivimproxy/sanity-check/testplan.txt
@@ -0,0 +1,3 @@
+# Test suites are relative paths under [integration.git]/test/csit/tests/.
+# Place the suites in run order.
+vfc/nfvo-multivimproxy/test.robot \ No newline at end of file
diff --git a/test/csit/plans/vfc-nfvo-wfengine/sanity-check/testplan.txt b/test/csit/plans/vfc-nfvo-wfengine/sanity-check/testplan.txt
index 5f6910bdd..ff9f4d5d6 100644
--- a/test/csit/plans/vfc-nfvo-wfengine/sanity-check/testplan.txt
+++ b/test/csit/plans/vfc-nfvo-wfengine/sanity-check/testplan.txt
@@ -1,4 +1,4 @@
-# Test suites are relative paths under [integration.git]/test/csit/tests/.
-# Place the suites in run order.
-
+# Test suites are relative paths under [integration.git]/test/csit/tests/.
+# Place the suites in run order.
+
vfc/nfvo-wfengine/workflow.robot \ No newline at end of file
diff --git a/test/csit/plans/vnfsdk-ice/sanity-check/setup.sh b/test/csit/plans/vnfsdk-ice/sanity-check/setup.sh
new file mode 100644
index 000000000..22d9acddc
--- /dev/null
+++ b/test/csit/plans/vnfsdk-ice/sanity-check/setup.sh
@@ -0,0 +1,34 @@
+#!/bin/bash
+#
+# Copyright 2018 Orange Labs.
+#
+# 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.
+#
+# These scripts are sourced by run-csit.sh.
+
+
+#Start ice server
+docker run --name vnfsdk-ice -d -p 5000:5000 nexus3.onap.org:10001/onap/vnfsdk/ice:latest
+
+# Wait for server initialization
+echo Wait for vnfsdk-ice initialization
+until [ "`/usr/bin/docker inspect -f {{.State.Running}} vnfsdk-ice`"=="true" ]; do
+ sleep 1;
+done;
+ICE_IP=`docker inspect --format '{{ .NetworkSettings.IPAddress }}' vnfsdk-ice`
+
+
+# Pass any variables required by Robot test suites in ROBOT_VARIABLES
+ROBOT_VARIABLES="-v SCRIPTS:${SCRIPTS} -v ICE_IP:${ICE_IP}"
+echo ${ROBOT_VARIABLES}
+
diff --git a/test/csit/plans/vnfsdk-ice/sanity-check/teardown.sh b/test/csit/plans/vnfsdk-ice/sanity-check/teardown.sh
new file mode 100644
index 000000000..c84ea757b
--- /dev/null
+++ b/test/csit/plans/vnfsdk-ice/sanity-check/teardown.sh
@@ -0,0 +1,22 @@
+#!/bin/bash
+#
+# Copyright 2018 Orange Labs.
+#
+# 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 script is sourced by run-csit.sh after Robot test completion.
+
+
+kill-instance.sh vnfsdk-ice
+
+
diff --git a/test/csit/plans/vnfsdk-ice/sanity-check/testplan.txt b/test/csit/plans/vnfsdk-ice/sanity-check/testplan.txt
new file mode 100644
index 000000000..c84eb0312
--- /dev/null
+++ b/test/csit/plans/vnfsdk-ice/sanity-check/testplan.txt
@@ -0,0 +1,3 @@
+## Test suites are relative paths under [integration.git]/test/csit/tests/.
+## Place the suites in run order.
+vnfsdk-ice/ice-server/validation_test.robot
diff --git a/test/csit/scripts/clamp/clone_clamp_and_change_dockercompose.sh b/test/csit/scripts/clamp/clone_clamp_and_change_dockercompose.sh
index 14619b9f3..92e2f02ff 100755
--- a/test/csit/scripts/clamp/clone_clamp_and_change_dockercompose.sh
+++ b/test/csit/scripts/clamp/clone_clamp_and_change_dockercompose.sh
@@ -33,12 +33,9 @@ cd clamp/extra/docker/clamp/
# Pull the Clamp docker image from nexus instead of local image by default in the docker-compose.yml
sed -i '/image: onap\/clamp/c\ image: nexus3.onap.org:10001\/onap\/clamp' docker-compose.yml
-# Change config to take localhost:8085 for SDC and Policy simulator
-sed -i 's/classpath:\/clds\/clds-reference.properties/file:.\/config\/clds-reference-sdc_proxy.properties/g' clamp.env
-sed -i 's/classpath:\/clds\/clds-policy-config.properties/file:.\/config\/clds-policy-config-sdc_proxy.properties/g' clamp.env
+# Change config to take third_party_proxy:8085 for SDC, Policy and DCAE simulator
+sed -i 's/}/,\"clamp.config.policy.pdpUrl1\":\"http:\/\/third_party_proxy:8085\/pdp\/ , testpdp, alpha123\",\"clamp.config.policy.pdpUrl2\":\"http:\/\/third_party_proxy:8085\/pdp\/ , testpdp, alpha123\",\"clamp.config.policy.papUrl\":\"http:\/\/third_party_proxy:8085\/pap\/ , testpap, alpha123\",\"clamp.config.policy.clientId\":\"python\",\"clamp.config.policy.clientKey\":\"dGVzdA==\",\"clamp.config.sdc.catalog.url\":\"http:\/\/third_party_proxy:8085\/sdc\/v1\/catalog\/\",\"clamp.config.sdc.hostUrl\":\"http:\/\/third_party_proxy:8085\",\"clamp.config.sdc.serviceUrl\":\"http:\/\/third_party_proxy:8085\/sdc\/v1\/catalog\/services\",\"clamp.config.dcae.inventory.url\":\"http:\/\/third_party_proxy:8085\",\"clamp.config.dcae.dispatcher.url\":\"http:\/\/third_party_proxy:8085\"}/g' clamp.env
# Add the sql to create template so it is played by docker-compose later
cp ../../../src/test/resources/sql/four_templates_only.sql ../../sql/bulkload/
echo 'mysql -uroot -p$MYSQL_ROOT_PASSWORD -f < four_templates_only.sql' >> ../../sql/load-sql-files-tests-automation.sh
-
-
diff --git a/test/csit/scripts/clamp/kill_and_remove_clamp_and_db_containers.sh b/test/csit/scripts/clamp/kill_and_remove_clamp_and_db_containers.sh
index d59d19407..c94a40bcc 100755
--- a/test/csit/scripts/clamp/kill_and_remove_clamp_and_db_containers.sh
+++ b/test/csit/scripts/clamp/kill_and_remove_clamp_and_db_containers.sh
@@ -21,6 +21,6 @@ echo "This is ${WORKSPACE}/test/csit/scripts/clamp/kill_and_remove_clamp_and_db_
kill-instance.sh clamp_clamp_1
kill-instance.sh clamp_db_1
-kill-instance.sh clamp_sdc_proxy_1
+kill-instance.sh clamp_third_party_proxy_1
# $WORKSPACE/archives/clamp-clone deleted with archives folder when tests starts so we keep it at the end for debugging
diff --git a/test/csit/scripts/clamp/start_clamp_containers.sh b/test/csit/scripts/clamp/start_clamp_containers.sh
index e49a591dd..11ddda1e4 100755
--- a/test/csit/scripts/clamp/start_clamp_containers.sh
+++ b/test/csit/scripts/clamp/start_clamp_containers.sh
@@ -51,7 +51,7 @@ fi
# To avoid some problem because templates not yet read
TIME=0
while [ "$TIME" -lt "$TIME_OUT" ]; do
- response=$(curl --write-out '%{http_code}' --silent --output /dev/null -u admin:5f4dcc3b5aa765d61d8327deb882cf99 http://localhost:8080/restservices/clds/v1/cldsTempate/template-names); echo $response
+ response=$(curl --write-out '%{http_code}' --silent --output /dev/null -u admin:password http://localhost:8080/restservices/clds/v1/cldsTempate/template-names); echo $response
if [ "$response" == "200" ]; then
echo Templates well available
diff --git a/test/csit/scripts/dmaap-buscontroller/dmaapbc-launch.sh b/test/csit/scripts/dmaap-buscontroller/dmaapbc-launch.sh
index f8f8c24e0..5c349534b 100755
--- a/test/csit/scripts/dmaap-buscontroller/dmaapbc-launch.sh
+++ b/test/csit/scripts/dmaap-buscontroller/dmaapbc-launch.sh
@@ -4,7 +4,7 @@
# sets global var IP with assigned IP address
function dmaapbc_launch() {
- TAG=dmaap/buscontroller
+ TAG=onap/dmaap/buscontroller:latest
CONTAINER_NAME=dmaapbc
IP=""
diff --git a/test/csit/scripts/dmaap-message-router/dmaap-mr-launch.sh b/test/csit/scripts/dmaap-message-router/dmaap-mr-launch.sh
new file mode 100755
index 000000000..95fecff39
--- /dev/null
+++ b/test/csit/scripts/dmaap-message-router/dmaap-mr-launch.sh
@@ -0,0 +1,105 @@
+#!/bin/bash
+#
+# ============LICENSE_START=======================================================
+# ONAP DMAAP MR
+# ================================================================================
+# Copyright (C) 2018 AT&T Intellectual Property. All rights
+# reserved.
+# ================================================================================
+# 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.
+# ============LICENSE_END============================================
+# ===================================================================
+# ECOMP is a trademark and service mark of AT&T Intellectual Property.
+#
+# This script is a copy of plans/dmaap/mrpubsub/setup.sh, placed in the scripts
+# dir, and edited to be a callable function from other plans. e.g. dmaap-buscontroller needs it.
+#
+source ${SCRIPTS}/common_functions.sh
+
+# function to launch DMaaP MR docker containers.
+# sets global var IP with assigned IP address of MR container.
+# (kafka and zk containers are not called externally)
+
+function dmaap_mr_launch() {
+ # Clone DMaaP Message Router repo
+ mkdir -p $WORKSPACE/archives/dmaapmr
+ cd $WORKSPACE/archives/dmaapmr
+ #unset http_proxy https_proxy
+ git clone --depth 1 http://gerrit.onap.org/r/dmaap/messagerouter/messageservice -b master
+ git pull
+ cd $WORKSPACE/archives/dmaapmr/messageservice/src/main/resources/docker-compose
+ cp $WORKSPACE/archives/dmaapmr/messageservice/bundleconfig-local/etc/appprops/MsgRtrApi.properties /var/tmp/
+
+
+ # start DMaaP MR containers with docker compose and configuration from docker-compose.yml
+ docker login -u docker -p docker nexus3.onap.org:10001
+ docker-compose up -d
+
+ # Wait for initialization of Docker contaienr for DMaaP MR, Kafka and Zookeeper
+ for i in {1..50}; do
+ if [ $(docker inspect --format '{{ .State.Running }}' dockercompose_dmaap_1) ] && \
+ [ $(docker inspect --format '{{ .State.Running }}' dockercompose_zookeeper_1) ] && \
+ [ $(docker inspect --format '{{ .State.Running }}' dockercompose_dmaap_1) ]
+ then
+ echo "DMaaP Service Running"
+ break
+ else
+ echo sleep $i
+ sleep $i
+ fi
+ done
+
+
+ DMAAP_MR_IP=$(docker inspect --format='{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' dockercompose_dmaap_1)
+ IP=${DMAAP_MR_IP}
+ KAFKA_IP=$(docker inspect --format='{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' dockercompose_kafka_1)
+ ZOOKEEPER_IP=$(docker inspect --format='{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' dockercompose_zookeeper_1)
+
+ echo DMAAP_MR_IP=${DMAAP_MR_IP}
+ echo IP=${IP}
+ echo KAFKA_IP=${KAFKA_IP}
+ echo ZOOKEEPER_IP=${ZOOKEEPER_IP}
+
+ # Initial docker-compose up and down is for populating kafka and zookeeper IPs in /var/tmp/MsgRtrApi.properites
+ docker-compose down
+
+ # Update kafkfa and zookeeper properties in MsgRtrApi.propeties which will be copied to DMaaP Container
+ sed -i -e 's/<zookeeper_host>/'$ZOOKEEPER_IP'/' /var/tmp/MsgRtrApi.properties
+ sed -i -e 's/<kafka_host>:<kafka_port>/'$KAFKA_IP':9092/' /var/tmp/MsgRtrApi.properties
+
+ docker-compose build
+ docker login -u docker -p docker nexus3.onap.org:10001
+ docker-compose up -d
+
+ # Wait for initialization of Docker containers
+ for i in {1..50}; do
+ if [ $(docker inspect --format '{{ .State.Running }}' dockercompose_dmaap_1) ] && \
+ [ $(docker inspect --format '{{ .State.Running }}' dockercompose_zookeeper_1) ] && \
+ [ $(docker inspect --format '{{ .State.Running }}' dockercompose_dmaap_1) ]
+ then
+ echo "DMaaP Service Running"
+ break
+ else
+ echo sleep $i
+ sleep $i
+ fi
+ done
+
+ # Wait for initialization of docker services
+ for i in {1..50}; do
+ curl -sS -m 1 ${DMAAP_MR_IP}:3904/events/TestTopic && break
+ echo sleep $i
+ sleep $i
+ done
+}
+
diff --git a/test/csit/scripts/optf/has/has_script.sh b/test/csit/scripts/dmaap-message-router/dmaap-mr-teardown.sh
index 6f1ddd6e3..f57385707 100755
--- a/test/csit/scripts/optf/has/has_script.sh
+++ b/test/csit/scripts/dmaap-message-router/dmaap-mr-teardown.sh
@@ -14,12 +14,11 @@
# See the License for the specific language governing permissions and
# limitations under the License.
#
-echo "######################################################################"
-echo "### "
-echo "### This is ${WORKSPACE}/test/csit/scripts/optf/has/has_script.sh"
-echo "### "
-echo "######################################################################"
-#
-# add here whatever commands is needed to prepare the optf/has CSIT testing
+# Modifications copyright (c) 2018 AT&T Intellectual Property
#
+function dmaap_mr_teardown() {
+kill-instance.sh dockercompose_dmaap_1
+kill-instance.sh dockercompose_kafka_1
+kill-instance.sh dockercompose_zookeeper_1
+}
diff --git a/test/csit/scripts/externalapi-nbi/delete_nbi_containers.sh b/test/csit/scripts/externalapi-nbi/delete_nbi_containers.sh
new file mode 100644
index 000000000..abb1e2f30
--- /dev/null
+++ b/test/csit/scripts/externalapi-nbi/delete_nbi_containers.sh
@@ -0,0 +1,29 @@
+#!/bin/bash
+# ========================================================================
+# Copyright (c) 2018 Orange
+# 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.
+# ========================================================================
+
+$NEXUS_USERNAME=docker
+$NEXUS_PASSWD=docker
+$NEXUS_DOCKER_REPO=nexus3.onap.org:10001
+$DOCKER_IMAGE_VERSION=latest
+
+echo "This is ${WORKSPACE}/test/csit/scripts/externalapi-nbi/delete_nbi_containers.sh"
+
+# Create directory
+mkdir -p $WORKSPACE/externalapi-nbi
+cd $WORKSPACE/externalapi-nbi
+
+# Remove containers
+docker-compose down
diff --git a/test/csit/scripts/externalapi-nbi/start_nbi_containers.sh b/test/csit/scripts/externalapi-nbi/start_nbi_containers.sh
new file mode 100644
index 000000000..a81c3bf11
--- /dev/null
+++ b/test/csit/scripts/externalapi-nbi/start_nbi_containers.sh
@@ -0,0 +1,37 @@
+#!/bin/bash
+# ========================================================================
+# Copyright (c) 2018 Orange
+# 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.
+# ========================================================================
+
+$NEXUS_USERNAME=docker
+$NEXUS_PASSWD=docker
+$NEXUS_DOCKER_REPO=nexus3.onap.org:10001
+$DOCKER_IMAGE_VERSION=latest
+
+echo "This is ${WORKSPACE}/test/csit/scripts/externalapi-nbi/start_nbi_containers.sh"
+
+# Create directory
+mkdir -p $WORKSPACE/externalapi-nbi
+cd $WORKSPACE/externalapi-nbi
+
+# Fetch the latest docker-compose.yml
+wget -o docker-compose.yml https://git.onap.org/externalapi/nbi/plain/docker-compose.yml?h=master
+
+# Pull the nbi docker image from nexus
+# MariaDB and mongoDB will be pulled automatically from docker.io during docker-compose
+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
diff --git a/test/csit/scripts/music/music-properties/log4j.properties b/test/csit/scripts/music/music-properties/log4j.properties
new file mode 100644
index 000000000..1312e9bb9
--- /dev/null
+++ b/test/csit/scripts/music/music-properties/log4j.properties
@@ -0,0 +1,3 @@
+# No longer needed, please see the logback properties
+
+
diff --git a/test/csit/scripts/music/music-properties/music.properties b/test/csit/scripts/music/music-properties/music.properties
new file mode 100644
index 000000000..02fb52df1
--- /dev/null
+++ b/test/csit/scripts/music/music-properties/music.properties
@@ -0,0 +1,17 @@
+my.public.ip=localhost
+all.public.ips=localhost
+my.id=0
+all.ids=0
+#######################################
+# Optional current values are defaults
+#######################################
+zookeeper.host=music-zk
+cassandra.host=music-db
+#music.ip=localhost
+#debug=true
+#music.rest.ip=localhost
+#lock.lease.period=6000
+cassandra.user=nelson24
+cassandra.password=winman123
+
+
diff --git a/test/csit/scripts/music/music-scripts/wait_for_port.sh b/test/csit/scripts/music/music-scripts/wait_for_port.sh
new file mode 100755
index 000000000..10f08ded1
--- /dev/null
+++ b/test/csit/scripts/music/music-scripts/wait_for_port.sh
@@ -0,0 +1,18 @@
+#!/bin/bash
+
+if [[ $# -ne 2 ]]; then
+ echo "Usage: wait-for-port hostname port" >&2
+ exit 1
+fi
+
+host=$1
+port=$2
+
+echo "Waiting for $host port $port open"
+until telnet $host $port </dev/null 2>/dev/null | grep -q '^Connected'; do
+ sleep 1
+done
+
+echo "$host port $port is open"
+
+exit 0
diff --git a/test/csit/scripts/optf-has/has/has-properties/cert.cer b/test/csit/scripts/optf-has/has/has-properties/cert.cer
new file mode 100644
index 000000000..67bb1303a
--- /dev/null
+++ b/test/csit/scripts/optf-has/has/has-properties/cert.cer
@@ -0,0 +1,36 @@
+-----BEGIN CERTIFICATE-----
+MIIGFjCCBP6gAwIBAgIQaTKJblnN1egdvyJmqxK6TDANBgkqhkiG9w0BAQsFADB+
+MQswCQYDVQQGEwJVUzEdMBsGA1UEChMUU3ltYW50ZWMgQ29ycG9yYXRpb24xHzAd
+BgNVBAsTFlN5bWFudGVjIFRydXN0IE5ldHdvcmsxLzAtBgNVBAMTJlN5bWFudGVj
+IENsYXNzIDMgU2VjdXJlIFNlcnZlciBDQSAtIEc0MB4XDTE3MDgzMTAwMDAwMFoX
+DTE4MDgzMTIzNTk1OVowgY8xCzAJBgNVBAYTAlVTMREwDwYDVQQIDAhNaWNoaWdh
+bjETMBEGA1UEBwwKU291dGhmaWVsZDEcMBoGA1UECgwTQVQmVCBTZXJ2aWNlcywg
+SW5jLjESMBAGA1UECwwJQ29uZHVjdG9yMSYwJAYDVQQDDB1lY29tcC1wZXctOTct
+MDE3LnBlZGMuc2JjLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEB
+ANiCKEitPcCKcmTTmvuwItG34wVOhhWuha1GQ9KeW/JmKgDWYM/7BwKmT6FhrSWe
+998UKHKC+MriZKI6WsBoENu070zTyyphQ0SwTw7QZbeCpgrvSBv6+q9qWpkGZEQN
+OgZ4IOVQX1asqh+qmUuVKWIAN1AF60iMb+Krqr04FX/N+3N9wLFfOJIS80Ycrxwa
+2Kjqza9awVXOtuTHPa4hFqz7ggRoi7Ybdr8GyxNoXTP0QNCBsYYmjuTFnbfCnC/j
+d/1zMn3D6G4eihnTnUB9jhM+Jj85IXcgAG5um/jEjN7qxmi+kURFl6AbadmgTCca
+aIW1rOHZtR4vlA/sRWqSh28CAwEAAaOCAnwwggJ4MCgGA1UdEQQhMB+CHWVjb21w
+LXBldy05Ny0wMTcucGVkYy5zYmMuY29tMAkGA1UdEwQCMAAwDgYDVR0PAQH/BAQD
+AgWgMB0GA1UdJQQWMBQGCCsGAQUFBwMBBggrBgEFBQcDAjBhBgNVHSAEWjBYMFYG
+BmeBDAECAjBMMCMGCCsGAQUFBwIBFhdodHRwczovL2Quc3ltY2IuY29tL2NwczAl
+BggrBgEFBQcCAjAZDBdodHRwczovL2Quc3ltY2IuY29tL3JwYTAfBgNVHSMEGDAW
+gBRfYM9hkFXfhEMUimAqsvV69EMY7zArBgNVHR8EJDAiMCCgHqAchhpodHRwOi8v
+c3Muc3ltY2IuY29tL3NzLmNybDBXBggrBgEFBQcBAQRLMEkwHwYIKwYBBQUHMAGG
+E2h0dHA6Ly9zcy5zeW1jZC5jb20wJgYIKwYBBQUHMAKGGmh0dHA6Ly9zcy5zeW1j
+Yi5jb20vc3MuY3J0MIIBBgYKKwYBBAHWeQIEAgSB9wSB9ADyAHcA3esdK3oNT6Yg
+i4GtgWhwfi6OnQHVXIiNPRHEzbbsvswAAAFeOADGyAAABAMASDBGAiEAzYxTfoKt
+RnxlePKnJ0sCqLOvdd223T7CjqNsqbgmxfECIQC6FOBOe9J+a1poasZ7QfCVl9g2
+McAdcKofxp21Qw1DhwB3AKS5CZC0GFgUh7sTosxncAo8NZgE+RvfuON3zQ7IDdwQ
+AAABXjgAxuAAAAQDAEgwRgIhAIUbjCQBxcxAXBT3MS77jIR3Lw90Y622+JGAuhH7
+PASuAiEAzblNSNu2GDHu/KINsiX4apBzXgSw5J8BM9LCAYPmUogwDQYJKoZIhvcN
+AQELBQADggEBAIwOqd+U0iRFSt68vWh1ErMeY0I7Re/81cm17cAn1cQuhTNKFUwq
+lYnVXZHFBkGhVAU0vXAI59XN29TQ3sjBlmfDdtxAJ3PzITBxeHswJjnqCaslEGik
+sbdK4/cwCjWmAN0azKtUmKhH3ajnjyduWdlvCx5hsUdFmYGZ1yl+1QbTrwkkU9JB
+bYjHNbtca0Orq8JlfZlc6L9vO6LNU6+qa9NTkLs2qd3rsCOXUiAWhGBdARB+a0AT
+1ukrZDS2BZ6fUDmG2XxUsRPqUwuVNAb8NgOc0zLNaAe8CpU6fVzek1fZnL0KkJmK
+jJnnuCr6AOteod19VIChd54mo0QtFm+i/Ww=
+-----END CERTIFICATE-----
+
diff --git a/test/csit/scripts/optf-has/has/has-properties/cert.key b/test/csit/scripts/optf-has/has/has-properties/cert.key
new file mode 100644
index 000000000..b8a957ff8
--- /dev/null
+++ b/test/csit/scripts/optf-has/has/has-properties/cert.key
@@ -0,0 +1,28 @@
+-----BEGIN RSA PRIVATE KEY-----
+MIIEpQIBAAKCAQEA2IIoSK09wIpyZNOa+7Ai0bfjBU6GFa6FrUZD0p5b8mYqANZg
+z/sHAqZPoWGtJZ733xQocoL4yuJkojpawGgQ27TvTNPLKmFDRLBPDtBlt4KmCu9I
+G/r6r2pamQZkRA06Bngg5VBfVqyqH6qZS5UpYgA3UAXrSIxv4quqvTgVf837c33A
+sV84khLzRhyvHBrYqOrNr1rBVc625Mc9riEWrPuCBGiLtht2vwbLE2hdM/RA0IGx
+hiaO5MWdt8KcL+N3/XMyfcPobh6KGdOdQH2OEz4mPzkhdyAAbm6b+MSM3urGaL6R
+REWXoBtp2aBMJxpohbWs4dm1Hi+UD+xFapKHbwIDAQABAoIBAQCQVn1arjwL34CR
+3UxmXK9p1si/YfEcBURTFxPiFva/bAK2mjTikrzCtHND6GVRPmCLVNn+NXh9cV6b
+lIGp4fbTMhWSx2ObdkotQckC3EXjiHL/uTP+i1ySkzmg6NTxVUwIwg9UMTfOBcBI
+6ifWbrOvBOvbKocHz7BLkhx6lygmEccyiy3wD/a/NBTRFTBLFyGrNBh2/a9ZXRqs
+Gz1IxVSdxrNJZUoi1nKbBTOX5lKyjL0AyAkIEzC4MvgEBcGz5xZHFRF1cj4x0ajc
+xEDsRUv0hi3Vczw5/FfKVWUVQPmY7sqpLtvu9qnb9MeZFwtrVZBxG5Ik4LP0Sjxt
+0B1+EHYpAoGBAPeOpR1co9pJa8tgkObZWehrVd+VEMD9UM5SKfYYn/2FyVMl1/TH
+Z6SqB7e1aNYsT5oUDt5y3g+tG3i/r4zmE4OzwT/9neb/rVBsKdd5cPICVnhHajYu
+bdOKoCNEMBrQRBSBAeSK0IjbUYIMyre1bwhxU7HT5NzGJnLYBn4vx0BNAoGBAN/k
+bxLQpsYcMwAX4K0H42qI1yL4jlezv4zj+kDRAI9Szh94c2yxGBC4rAub3Igz1OlQ
+CfqPimvlnkWrhgz50+0CdJFPEQyC0+d2rzS7i816k8WYUYCDkrTJhr64eFnV1jjs
+AuLpnhF0WpqvrixBzf5ZENPV3C8k4HG4KrYjDuSrAoGBALeDELdRY01/u97JuODI
+IrP+TWwujnrhzbMEiYKbAo7nTDTNCuezogsY2BvA6PRLaL7pO5R/RkoMox7ByhsC
+u1iYOht7oEALLKk/ZU0MA0QDo6IKHpwHkvaL/uXluFtIJA+nCoYmuSuamTN01BmW
+77YsfESItVFLuljL9xQ3ytbJAoGAVqkd0SOQGgiaOQQFBBSUkwzqcO/ScOHzV756
+hBIh7Ff5zraZvs2Bah+BAHFQ2Ctv0usXIbPjuUXEkGUG2wjsXcXghsoa6EPPb71B
+reCWCW/TuNzvVxYWeAG1NSdD9knNxHSd3WTduRXXaB5uBVVnPXcOC2Cw/FKCyaGm
+bp99SUcCgYEAxzGq0cxFedF7TAQLjIMagsGIAatokzDvvQOvOK0lWZ+f17G+LV9Y
+tLpnvS6IdGnki6Kvg9Xa0F4eP7YoY4laHxl2DEceP/TeMLNHetM9cXCPKwP7w/24
+5mZlQ0t/HdVnjc1uDvkeHR6HVxnXTyWtKBJ0FtC6SfdRgK20YYFrKAQ=
+-----END RSA PRIVATE KEY-----
+
diff --git a/test/csit/scripts/optf-has/has/has-properties/cert.pem b/test/csit/scripts/optf-has/has/has-properties/cert.pem
new file mode 100644
index 000000000..5ecf38234
--- /dev/null
+++ b/test/csit/scripts/optf-has/has/has-properties/cert.pem
@@ -0,0 +1,36 @@
+Bag Attributes
+ friendlyName: mso-client
+ localKeyID: 54 69 6D 65 20 31 35 31 39 32 39 37 30 37 31 32 33 33
+subject=/C=US/ST=Michigan/L=Southfield/O=AT&T Services, Inc./OU=mso-bpel-client-mtanj/CN=msobpel-client.mtanj.aic.cip.att.com
+issuer=/C=US/O=DigiCert Inc/CN=DigiCert SHA2 Secure Server CA
+-----BEGIN CERTIFICATE-----
+MIIFZDCCBEygAwIBAgIQCDZ0gBbsclD2Ino3w+NqPDANBgkqhkiG9w0BAQsFADBN
+MQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMScwJQYDVQQDEx5E
+aWdpQ2VydCBTSEEyIFNlY3VyZSBTZXJ2ZXIgQ0EwHhcNMTgwMTE5MDAwMDAwWhcN
+MTkwMTE5MTIwMDAwWjCBojELMAkGA1UEBhMCVVMxETAPBgNVBAgTCE1pY2hpZ2Fu
+MRMwEQYDVQQHEwpTb3V0aGZpZWxkMRwwGgYDVQQKDBNBVCZUIFNlcnZpY2VzLCBJ
+bmMuMR4wHAYDVQQLExVtc28tYnBlbC1jbGllbnQtbXRhbmoxLTArBgNVBAMTJG1z
+b2JwZWwtY2xpZW50Lm10YW5qLmFpYy5jaXAuYXR0LmNvbTCCASIwDQYJKoZIhvcN
+AQEBBQADggEPADCCAQoCggEBAOJtbcWtMUYCIgIvdqm2CPN/cVTD8j3fDAsd42vn
+7I3PYJ4aBu8tiJVRheJhj9mejfwjBd5f5E2z9kWfNMPZU/9q0RB+cYbKWv0lP+q5
+q/RkbXN7iRtGUkXUyNpekvxNT3IKYfXK3P29qVDVhvUSey2ngIALRvBrRIKRTmb8
+gzrvcavJSwm8oQw2JXE1+Da+8PYR3TjJ19nfmoTmKbO+QDD58I5+2TgNqd/b7zhN
+GLaS3oiVONDmJ1b5iWwKg31otPDP8AJb7cNtl8vgfnGK2zvFIWnF2TRzMb6FePbn
+JBLaEyi7+c1iKJafj61t5nn27I2psbJloT9/2fmb6l4NU8MCAwEAAaOCAegwggHk
+MB8GA1UdIwQYMBaAFA+AYRyCMWHVLyjnjUY4tCzhxtniMB0GA1UdDgQWBBSQcljn
+BCxIKpisBfyoNgGCdtPzBzAvBgNVHREEKDAmgiRtc29icGVsLWNsaWVudC5tdGFu
+ai5haWMuY2lwLmF0dC5jb20wDgYDVR0PAQH/BAQDAgWgMB0GA1UdJQQWMBQGCCsG
+AQUFBwMBBggrBgEFBQcDAjBrBgNVHR8EZDBiMC+gLaArhilodHRwOi8vY3JsMy5k
+aWdpY2VydC5jb20vc3NjYS1zaGEyLWc2LmNybDAvoC2gK4YpaHR0cDovL2NybDQu
+ZGlnaWNlcnQuY29tL3NzY2Etc2hhMi1nNi5jcmwwTAYDVR0gBEUwQzA3BglghkgB
+hv1sAQEwKjAoBggrBgEFBQcCARYcaHR0cHM6Ly93d3cuZGlnaWNlcnQuY29tL0NQ
+UzAIBgZngQwBAgIwfAYIKwYBBQUHAQEEcDBuMCQGCCsGAQUFBzABhhhodHRwOi8v
+b2NzcC5kaWdpY2VydC5jb20wRgYIKwYBBQUHMAKGOmh0dHA6Ly9jYWNlcnRzLmRp
+Z2ljZXJ0LmNvbS9EaWdpQ2VydFNIQTJTZWN1cmVTZXJ2ZXJDQS5jcnQwCQYDVR0T
+BAIwADANBgkqhkiG9w0BAQsFAAOCAQEAxkadmzFcpA3f3qc9PbzMWfV2lJCXWxfr
+/6z4RXotl255GBZFR2zLn56k8J3hAJGWRc0WeSgSsLH1fxrxF60fWk+cmYCrMC9t
+C5ha5zWav/kz+dkZvJVbUxIFdx0Cd5uqBsLFnAaGrnSR6WzJkZHQ2rQUvwvQXwdP
+XL01FleDSNbV8jtHXvzmcdnVQWeLjcVOeOeBF3dW6lSvDRV0G6fe6+R9U+Gz0MwK
+x93XbsIAMTCJKUBkV7QdHwHzis3fhKJHwJUrb1p2Byhn/RwYUmFbjkamFiEfAyzw
++KdkwripOgYHnmGyLBJ16FdO/8kGhn4URW/qL1FO/sN2loGGlyA82w==
+-----END CERTIFICATE-----
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
new file mode 100644
index 000000000..0f9e7494d
--- /dev/null
+++ b/test/csit/scripts/optf-has/has/has-properties/conductor.conf.onap
@@ -0,0 +1,348 @@
+
+[DEFAULT]
+
+#
+# From conductor
+#
+
+# Configuration file for WSGI definition of API. (string value)
+#api_paste_config = api_paste.ini
+
+# Music keyspace for content (string value)
+keyspace = conductor
+
+#
+# From oslo.log
+#
+
+# If set to true, the logging level will be set to DEBUG instead of the default
+# INFO level. (boolean value)
+# Note: This option can be changed without restarting.
+debug = true
+
+# DEPRECATED: If set to false, the logging level will be set to WARNING instead
+# of the default INFO level. (boolean value)
+# This option is deprecated for removal.
+# Its value may be silently ignored in the future.
+#verbose = true
+
+# The name of a logging configuration file. This file is appended to any
+# existing logging configuration files. For details about logging configuration
+# files, see the Python logging module documentation. Note that when logging
+# configuration files are used then all logging configuration is set in the
+# configuration file and other logging configuration options are ignored (for
+# example, logging_context_format_string). (string value)
+# Note: This option can be changed without restarting.
+# Deprecated group/name - [DEFAULT]/log_config
+log_config_append = /usr/local/bin/log.conf
+
+# Defines the format string for %%(asctime)s in log records. Default:
+# %(default)s . This option is ignored if log_config_append is set. (string
+# value)
+log_date_format = %d-%m-%Y %H:%M:%S
+
+# (Optional) Name of log file to send logging output to. If no default is set,
+# logging will go to stderr as defined by use_stderr. This option is ignored if
+# log_config_append is set. (string value)
+# Deprecated group/name - [DEFAULT]/logfile
+#log_file = application.log
+
+
+# (Optional) The base directory used for relative log_file paths. This option
+# is ignored if log_config_append is set. (string value)
+# Deprecated group/name - [DEFAULT]/logdir
+log_dir = /var/log
+
+
+
+
+# Uses logging handler designed to watch file system. When log file is moved or
+# removed this handler will open a new log file with specified path
+# instantaneously. It makes sense only if log_file option is specified and
+# Linux platform is used. This option is ignored if log_config_append is set.
+# (boolean value)
+#watch_log_file = false
+
+# Use syslog for logging. Existing syslog format is DEPRECATED and will be
+# changed later to honor RFC5424. This option is ignored if log_config_append
+# is set. (boolean value)
+#use_syslog = false
+
+# Syslog facility to receive log lines. This option is ignored if
+# log_config_append is set. (string value)
+#syslog_log_facility = LOG_USER
+
+# Log output to standard error. This option is ignored if log_config_append is
+# set. (boolean value)
+#use_stderr = false
+
+# Format string to use for log messages with context. (string value)
+#logging_context_format_string = %(asctime)s.%(msecs)03d %(process)d %(levelname)s %(name)s [%(request_id)s %(user_identity)s] %(instance)s%(message)s
+
+# Format string to use for log messages when context is undefined. (string
+# value)
+#logging_default_format_string = %(asctime)s.%(msecs)03d %(process)d %(levelname)s %(name)s [-] %(instance)s%(message)s
+
+# Additional data to append to log message when logging level for the message
+# is DEBUG. (string value)
+#logging_debug_format_suffix = %(funcName)s %(pathname)s:%(lineno)d
+
+# Prefix each line of exception output with this format. (string value)
+#logging_exception_prefix = %(asctime)s.%(msecs)03d %(process)d ERROR %(name)s %(instance)s
+
+# Defines the format string for %(user_identity)s that is used in
+# logging_context_format_string. (string value)
+#logging_user_identity_format = %(user)s %(tenant)s %(domain)s %(user_domain)s %(project_domain)s
+
+# List of package logging levels in logger=LEVEL pairs. This option is ignored
+# if log_config_append is set. (list value)
+#default_log_levels = amqp=WARN,amqplib=WARN,boto=WARN,qpid=WARN,sqlalchemy=WARN,suds=INFO,oslo.messaging=INFO,iso8601=WARN,requests.packages.urllib3.connectionpool=WARN,urllib3.connectionpool=WARN,websocket=WARN,requests.packages.urllib3.util.retry=WARN,urllib3.util.retry=WARN,keystonemiddleware=WARN,routes.middleware=WARN,stevedore=WARN,taskflow=WARN,keystoneauth=WARN,oslo.cache=INFO,dogpile.core.dogpile=INFO
+
+# Enables or disables publication of error events. (boolean value)
+#publish_errors = false
+
+# The format for an instance that is passed with the log message. (string
+# value)
+#instance_format = "[instance: %(uuid)s] "
+
+# The format for an instance UUID that is passed with the log message. (string
+# value)
+#instance_uuid_format = "[instance: %(uuid)s] "
+
+# Interval, number of seconds, of log rate limiting. (integer value)
+#rate_limit_interval = 0
+
+# Maximum number of logged messages per rate_limit_interval. (integer value)
+#rate_limit_burst = 0
+
+# Log level name used by rate limiting: CRITICAL, ERROR, INFO, WARNING, DEBUG
+# or empty string. Logs with level greater or equal to rate_limit_except_level
+# are not filtered. An empty string means that all levels are filtered. (string
+# value)
+#rate_limit_except_level = CRITICAL
+
+# Enables or disables fatal status of deprecations. (boolean value)
+#fatal_deprecations = false
+
+
+[aai]
+
+#
+# From conductor
+#
+
+# Interval with which to refresh the local cache, in minutes. (integer value)
+cache_refresh_interval = 1
+complex_cache_refresh_interval = 60
+
+# Data Store table prefix. (string value)
+#table_prefix = aai
+
+# Base URL for A&AI, up to and including the version. (string value)
+server_url = http://localhost:8081/aai/
+
+
+# The version of A&AI (string value)
+server_url_version = v13
+
+# SSL/TLS certificate file in pem format. This certificate must be registered
+# with the A&AI endpoint. (string value)
+certificate_file = /usr/local/bin/cert.cer
+
+# Private Certificate Key file in pem format. (string value)
+certificate_key_file = /usr/local/bin/cert.key
+
+# Certificate Authority Bundle file in pem format. Must contain the appropriate
+# trust chain for theCertificate file. (string value)
+certificate_authority_bundle_file = /usr/local/bin/cert.pem
+
+[api]
+
+#
+# From conductor
+#
+
+# Toggle Pecan Debug Middleware. (boolean value)
+#pecan_debug = false
+
+# Default maximum number of items returned by API request. (integer value)
+# Minimum value: 1
+#default_api_return_limit = 100
+
+[conductor_api]
+
+# Basic Authentication Username (string value)
+username = admin1
+
+# Basic Authentication Password (string value)
+password = plan.15
+
+# To disable basic_auth_secure = false and to enable basic_auth_secure = true
+basic_auth_secure = false
+
+
+
+[controller]
+
+#
+# From conductor
+#
+
+# Timeout for planning requests. Default value is 10. (integer value)
+# Minimum value: 1
+#timeout = 10
+
+# Maximum number of result sets to return. Default value is 1. (integer value)
+# Minimum value: 1
+#limit = 1
+
+# Number of workers for controller service. Default value is 1. (integer value)
+# Minimum value: 1
+#workers = 1
+
+
+[inventory_provider]
+
+#
+# From conductor
+#
+
+# Extensions list to use (list value)
+# extensions = aai
+
+
+[messaging_server]
+
+#
+# From conductor
+#
+
+# Music keyspace for messages (string value)
+keyspace = conductor_rpc
+
+# Wait interval while checking for a message response. Default value is 1
+# second. (integer value)
+# Minimum value: 1
+#check_interval = 1
+
+# Overall message response timeout. Default value is 10 seconds. (integer
+# value)
+# Minimum value: 1
+timeout = 3600
+
+# Number of workers for messaging service. Default value is 1. (integer value)
+# Minimum value: 1
+#workers = 1
+
+# Time between checking for new messages. Default value is 1. (integer value)
+# Minimum value: 1
+#polling_interval = 1
+
+# Log debug messages. Default value is False. (boolean value)
+#debug = false
+
+
+[music_api]
+
+#
+# From conductor
+#
+music_new_version = True
+
+# Base URL for Music REST API without a trailing slash. (string value)
+server_url = http://localhost:8080/MUSIC/rest/v2
+version = v2
+music_version = "2.4.22"
+aafuser = conductor
+aafpass = c0nduct0r
+aafns = conductor
+
+# DEPRECATED: List of hostnames (round-robin access) (list value)
+# This option is deprecated for removal.
+# Its value may be silently ignored in the future.
+# Reason: Use server_url instead
+
+# DEPRECATED: Port (integer value)
+# This option is deprecated for removal.
+# Its value may be silently ignored in the future.
+# Reason: Use server_url instead
+#port = <None>
+
+# DEPRECATED: Path (string value)
+# This option is deprecated for removal.
+# Its value may be silently ignored in the future.
+# Reason: Use server_url instead
+#path = <None>
+
+# Lock timeout (integer value)
+#lock_timeout = 10
+
+# Replication factor (integer value)
+#replication_factor = 1
+
+# debug = false
+
+[reservation]
+
+#
+# From conductor
+#
+
+# Number of workers for reservation service. Default value is 1. (integer
+# value)
+# Minimum value: 1
+#workers = 1
+
+# Number of times reservation/release should be attempted. (integer value)
+#reserve_retries = 3
+
+# Set to True when reservation will run in active-active mode. When set to
+# False, reservation will restart any orphaned reserving requests at startup.
+# (boolean value)
+#concurrent = false
+
+[sdnc]
+
+#
+# From conductor
+#
+
+# Interval with which to refresh the local cache, in minutes. (integer value)
+#cache_refresh_interval = 1440
+
+# Data Store table prefix. (string value)
+#table_prefix = sdnc
+
+# Base URL for SDN-C. (string value)
+server_url = http://localhost:8082/restconf/
+
+# Basic Authentication Username (string value)
+username = admin
+
+# Basic Authentication Password (string value)
+password = admin
+
+
+[service_controller]
+
+#
+# From conductor
+#
+
+# Extensions list to use (list value)
+extensions = sdnc
+
+[solver]
+
+#
+# From conductor
+#
+
+# Number of workers for solver service. Default value is 1. (integer value)
+# Minimum value: 1
+#workers = 1
+
+# Set to True when solver will run in active-active mode. When set to False,
+# solver will restart any orphaned solving requests at startup. (boolean value)
+#concurrent = false
+
diff --git a/test/csit/scripts/optf-has/has/has-properties/log.conf.onap b/test/csit/scripts/optf-has/has/has-properties/log.conf.onap
new file mode 100644
index 000000000..41d66444e
--- /dev/null
+++ b/test/csit/scripts/optf-has/has/has-properties/log.conf.onap
@@ -0,0 +1,65 @@
+[loggers]
+keys=root
+
+[handlers]
+keys=trfhand,consoleHandler,audithand,metrichand,errhand,debughand
+
+[logger_root]
+level=NOTSET
+handlers=trfhand,consoleHandler,audithand,metrichand,errhand,debughand
+
+[handler_consoleHandler]
+class=StreamHandler
+level=NOTSET
+formatter=generic
+args=(sys.stdout,)
+
+[handler_trfhand]
+class=handlers.TimedRotatingFileHandler
+level=NOTSET
+formatter=generic
+args=('application.log','midnight', 1, 10)
+
+[handler_audithand]
+class=handlers.TimedRotatingFileHandler
+level=INFO
+formatter=audit
+args=('audit.log', 'midnight', 1, 10)
+
+[handler_metrichand]
+class=handlers.TimedRotatingFileHandler
+level=INFO
+formatter=metric
+args=('metric.log','midnight', 1, 10)
+
+[handler_errhand]
+class=handlers.TimedRotatingFileHandler
+level=ERROR
+formatter=error
+args=('error.log','midnight', 1, 10)
+
+[handler_debughand]
+class=handlers.TimedRotatingFileHandler
+level=DEBUG
+formatter=generic
+args=('debug.log','midnight', 1, 10)
+
+[formatters]
+keys=generic,audit,metric,error
+
+[formatter_audit]
+format=%(asctime)s|%(asctime)s|00000000-0000-0000-0000-000000000000||%(thread)d||Conductor|N/A|COMPLETE|200|sucessful||%(levelname)s|||0|%(module)s|||||||||%(name)s : [-] %(message)s
+datefmt=
+
+[formatter_metric]
+format=%(asctime)s|%(asctime)s|00000000-0000-0000-0000-000000000000||%(thread)d||Conductor|N/A|N/A|N/A|COMPLETE|200|sucessful||%(levelname)s|||0|%(module)s||||||||||%(name)s : [-] %(message)s
+datefmt=
+
+[formatter_error]
+format=%(asctime)s|00000000-0000-0000-0000-000000000000|%(thread)d|Conductor|N/A|N/A|N/A|ERROR|500|N/A|%(name)s : [-] %(message)s
+datefmt=
+
+[formatter_generic]
+format=%(asctime)s||%(thread)d|%(levelname)s|%(module)s|%(name)s: [-] %(message)s
+datefmt=
+
diff --git a/test/csit/scripts/optf-has/has/has_proxy_settings.sh b/test/csit/scripts/optf-has/has/has_proxy_settings.sh
new file mode 100755
index 000000000..92f8d93c7
--- /dev/null
+++ b/test/csit/scripts/optf-has/has/has_proxy_settings.sh
@@ -0,0 +1,31 @@
+#!/bin/bash
+#
+# Copyright 2016-2017 Huawei Technologies Co., Ltd.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+# put into this file local proxy settings in case they are needed on your local environment
+echo "### This is ${WORKSPACE}/test/csit/scripts/optf-has/has/has_proxy_settings.sh"
+
+echo "optf/has proxy settings"
+if [ "$#" -eq "1" ]; then
+ echo "$1"
+ cd $1
+ pwd
+else
+ exit 1
+fi
+
+# don't remove following lines: commands can be attached here
+
+
diff --git a/test/csit/scripts/optf-has/has/has_script.sh b/test/csit/scripts/optf-has/has/has_script.sh
new file mode 100755
index 000000000..ac907eea1
--- /dev/null
+++ b/test/csit/scripts/optf-has/has/has_script.sh
@@ -0,0 +1,92 @@
+#!/bin/bash
+#
+# Copyright 2016-2017 Huawei Technologies Co., Ltd.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+echo "### This is ${WORKSPACE}/test/csit/scripts/optf-has/has/has_script.sh"
+#
+# add here whatever commands is needed to prepare the optf/has CSIT testing
+#
+
+# assume the base is /tmp dir
+DIR=/tmp
+
+# the directory of the script
+echo ${DIR}
+cd ${DIR}
+
+# create directory for volume and copy configuration file
+# run docker containers
+COND_CONF=/tmp/conductor/properties/conductor.conf
+LOG_CONF=/tmp/conductor/properties/log.conf
+IMAGE_NAME=nexus3.onap.org:10001/onap/optf-has
+CERT=/tmp/conductor/properties/cert.cer
+KEY=/tmp/conductor/properties/cert.key
+BUNDLE=/tmp/conductor/properties/cert.pem
+
+mkdir -p /tmp/conductor/properties
+mkdir -p /tmp/conductor/logs
+cp ${WORKSPACE}/test/csit/scripts/optf-has/has/has-properties/conductor.conf.onap /tmp/conductor/properties/conductor.conf
+cp ${WORKSPACE}/test/csit/scripts/optf-has/has/has-properties/log.conf.onap /tmp/conductor/properties/log.conf
+cp ${WORKSPACE}/test/csit/scripts/optf-has/has/has-properties/cert.cer /tmp/conductor/properties/cert.cer
+cp ${WORKSPACE}/test/csit/scripts/optf-has/has/has-properties/cert.key /tmp/conductor/properties/cert.key
+cp ${WORKSPACE}/test/csit/scripts/optf-has/has/has-properties/cert.pem /tmp/conductor/properties/cert.pem
+#chmod -R 777 /tmp/conductor/properties
+
+MUSIC_IP=`docker inspect --format '{{ .NetworkSettings.Networks.bridge.IPAddress}}' music-tomcat`
+echo "MUSIC_IP=${MUSIC_IP}"
+
+# change MUSIC reference to the local instance
+sed -i -e "s%localhost:8080/MUSIC%${MUSIC_IP}:8080/MUSIC%g" /tmp/conductor/properties/conductor.conf
+
+AAISIM_IP=`docker inspect --format '{{ .NetworkSettings.Networks.bridge.IPAddress}}' aaisim`
+echo "AAISIM_IP=${AAISIM_IP}"
+
+# change AAI reference to the local instance
+sed -i -e "s%localhost:8081/%${AAISIM_IP}:8081/%g" /tmp/conductor/properties/conductor.conf
+
+MULTICLOUDSIM_IP=`docker inspect --format '{{ .NetworkSettings.Networks.bridge.IPAddress}}' multicloudsim`
+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
+
+#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
+
+docker run -d --name cond-cont -v ${COND_CONF}:/usr/local/bin/conductor.conf -v ${LOG_CONF}:/usr/local/bin/log.conf ${IMAGE_NAME}:latest python /usr/local/bin/conductor-controller --config-file=/usr/local/bin/conductor.conf
+sleep 2
+docker run -d --name cond-api -p "8091:8091" -v ${COND_CONF}:/usr/local/bin/conductor.conf -v ${LOG_CONF}:/usr/local/bin/log.conf ${IMAGE_NAME}:latest python /usr/local/bin/conductor-api --port=8091 -- --config-file=/usr/local/bin/conductor.conf
+sleep 2
+docker run -d --name cond-solv -v ${COND_CONF}:/usr/local/bin/conductor.conf -v ${LOG_CONF}:/usr/local/bin/log.conf ${IMAGE_NAME}:latest python /usr/local/bin/conductor-solver --config-file=/usr/local/bin/conductor.conf
+sleep 2
+docker run -d --name cond-resv -v ${COND_CONF}:/usr/local/bin/conductor.conf -v ${LOG_CONF}:/usr/local/bin/log.conf ${IMAGE_NAME}:latest python /usr/local/bin/conductor-reservation --config-file=/usr/local/bin/conductor.conf
+sleep 2
+docker run -d --name cond-data -v ${COND_CONF}:/usr/local/bin/conductor.conf -v ${LOG_CONF}:/usr/local/bin/log.conf -v ${CERT}:/usr/local/bin/cert.cer -v ${KEY}:/usr/local/bin/cert.key -v ${BUNDLE}:/usr/local/bin/cert.pem ${IMAGE_NAME}:latest python /usr/local/bin/conductor-data --config-file=/usr/local/bin/conductor.conf
+sleep 2
+
+COND_IP=`docker inspect --format '{{ .NetworkSettings.Networks.bridge.IPAddress}}' cond-api`
+${WORKSPACE}/test/csit/scripts/optf-has/has/wait_for_port.sh ${COND_IP} 8091
+
+echo "inspect docker things for tracing purpose"
+docker inspect cond-data
+docker inspect cond-cont
+docker inspect cond-api
+docker inspect cond-solv
+docker inspect cond-resv
+
+echo "dump music content just after conductor is started"
+docker exec music-db /usr/bin/nodetool status
+docker exec music-db /usr/bin/cqlsh -unelson24 -pwinman123 -e 'SELECT * FROM system_schema.keyspaces'
+docker exec music-db /usr/bin/cqlsh -unelson24 -pwinman123 -e 'SELECT * FROM admin.keyspace_master'
diff --git a/test/csit/scripts/optf-has/has/has_teardown_script.sh b/test/csit/scripts/optf-has/has/has_teardown_script.sh
new file mode 100755
index 000000000..bef28b435
--- /dev/null
+++ b/test/csit/scripts/optf-has/has/has_teardown_script.sh
@@ -0,0 +1,34 @@
+#!/bin/bash
+#
+# Copyright 2016-2017 Huawei Technologies Co., Ltd.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+echo "print meaningful data before scratching everything"
+docker exec music-db /usr/bin/cqlsh -unelson24 -pwinman123 -e 'SELECT * FROM system_schema.keyspaces'
+docker exec music-db /usr/bin/cqlsh -unelson24 -pwinman123 -e 'SELECT * FROM admin.keyspace_master'
+docker exec music-db /usr/bin/cqlsh -unelson24 -pwinman123 -e 'SELECT * FROM conductor.plans'
+
+echo "optf/has scripts docker containers killing";
+docker stop cond-api
+docker stop cond-solv
+docker stop cond-cont
+docker stop cond-data
+docker stop cond-resv
+
+docker rm cond-api
+docker rm cond-solv
+docker rm cond-cont
+docker rm cond-data
+docker rm cond-resv
+
diff --git a/test/csit/scripts/optf-has/has/music-properties/log4j.properties b/test/csit/scripts/optf-has/has/music-properties/log4j.properties
new file mode 100644
index 000000000..1312e9bb9
--- /dev/null
+++ b/test/csit/scripts/optf-has/has/music-properties/log4j.properties
@@ -0,0 +1,3 @@
+# No longer needed, please see the logback properties
+
+
diff --git a/test/csit/scripts/optf-has/has/music-properties/music.properties b/test/csit/scripts/optf-has/has/music-properties/music.properties
new file mode 100644
index 000000000..02fb52df1
--- /dev/null
+++ b/test/csit/scripts/optf-has/has/music-properties/music.properties
@@ -0,0 +1,17 @@
+my.public.ip=localhost
+all.public.ips=localhost
+my.id=0
+all.ids=0
+#######################################
+# Optional current values are defaults
+#######################################
+zookeeper.host=music-zk
+cassandra.host=music-db
+#music.ip=localhost
+#debug=true
+#music.rest.ip=localhost
+#lock.lease.period=6000
+cassandra.user=nelson24
+cassandra.password=winman123
+
+
diff --git a/test/csit/scripts/optf-has/has/music_script.sh b/test/csit/scripts/optf-has/has/music_script.sh
new file mode 100755
index 000000000..fdd9a3e26
--- /dev/null
+++ b/test/csit/scripts/optf-has/has/music_script.sh
@@ -0,0 +1,100 @@
+#!/bin/bash
+#
+# Copyright 2016-2017 Huawei Technologies Co., Ltd.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+echo "### This is ${WORKSPACE}/test/csit/scripts/optf-has/has/music_script.sh"
+#
+# add here whatever commands is needed to prepare the music setup for optf-has CSIT testing
+#
+
+#
+# add here all the configuration steps eventually needed to be carried out for music CSIT testing
+#
+echo "# music configuration step";
+
+CASS_IMG=nexus3.onap.org:10001/onap/music/cassandra_music:latest
+TOMCAT_IMG=nexus3.onap.org:10001/library/tomcat:8.0
+ZK_IMG=nexus3.onap.org:10001/library/zookeeper:3.4
+MUSIC_IMG=nexus3.onap.org:10001/onap/music/music:latest
+WORK_DIR=/tmp/music
+CASS_USERNAME=nelson24
+CASS_PASSWORD=winman123
+MUSIC_SOURCE_PROPERTIES=${WORKSPACE}/test/csit/scripts/optf-has/has/music-properties
+MUSIC_PROPERTIES=/tmp/music/properties
+MUSIC_LOGS=/tmp/music/logs
+mkdir -p ${MUSIC_PROPERTIES}
+mkdir -p ${MUSIC_LOGS}
+
+cp ${MUSIC_SOURCE_PROPERTIES}/* ${WORK_DIR}/properties
+
+# Create Volume for mapping war file and tomcat
+docker volume create --name music-vol;
+
+# Create a network for all the containers to run in.
+docker network create music-net;
+
+# Start Cassandra
+docker run -d --name music-db --network music-net -p "7000:7000" -p "7001:7001" -p "7199:7199" -p "9042:9042" -p "9160:9160" -e CASSUSER=${CASS_USERNAME} -e CASSPASS=${CASS_PASSWORD} ${CASS_IMG};
+#CASSA_IP=`docker inspect --format '{{ .NetworkSettings.Networks.bridge.IPAddress}}' music-db`
+CASSA_IP=`docker inspect -f '{{ $network := index .NetworkSettings.Networks "music-net" }}{{ $network.IPAddress}}' music-db`
+echo "CASSANDRA_IP=${CASSA_IP}"
+${WORKSPACE}/test/csit/scripts/optf-has/has/wait_for_port.sh ${CASSA_IP} 9042
+
+# Start Music war
+docker run -d --name music-war -v music-vol:/app ${MUSIC_IMG};
+
+# Start Zookeeper
+docker run -d --name music-zk --network music-net -p "2181:2181" -p "2888:2888" -p "3888:3888" ${ZK_IMG};
+#ZOO_IP=`docker inspect --format '{{ .NetworkSettings.Networks.bridge.IPAddress}}' music-zk`
+ZOO_IP=`docker inspect -f '{{ $network := index .NetworkSettings.Networks "music-net" }}{{ $network.IPAddress}}' music-zk`
+echo "ZOOKEEPER_IP=${ZOO_IP}"
+
+# Delay between Cassandra/Zookeeper and Tomcat
+sleep 60;
+
+# Start Up tomcat - Needs to have properties,logs dir and war file volume mapped.
+docker run -d --name music-tomcat --network music-net -p "8080:8080" -v music-vol:/usr/local/tomcat/webapps -v ${WORK_DIR}/properties:/opt/app/music/etc:ro -v ${WORK_DIR}/logs:/opt/app/music/logs ${TOMCAT_IMG};
+
+# Connect tomcat to host bridge network so that its port can be seen.
+docker network connect bridge music-tomcat;
+
+#
+# add here below the start of all docker containers needed for music CSIT testing
+#
+
+TOMCAT_IP=`docker inspect --format '{{ .NetworkSettings.Networks.bridge.IPAddress}}' music-tomcat`
+echo "TOMCAT_IP=${TOMCAT_IP}"
+
+${WORKSPACE}/test/csit/scripts/optf-has/has/wait_for_port.sh ${TOMCAT_IP} 8080
+
+# wait a while to make sure music is totally up and configured
+sleep 10
+
+echo "inspect docker things for tracing purpose"
+docker inspect music-db
+docker inspect music-zk
+docker inspect music-tomcat
+docker inspect music-war
+docker volume inspect music-vol
+docker network inspect music-net
+
+echo "dump music content just after music is started"
+docker exec music-db /usr/bin/nodetool status
+docker exec music-db /usr/bin/cqlsh -unelson24 -pwinman123 -e 'SELECT * FROM system_schema.keyspaces'
+docker exec music-db /usr/bin/cqlsh -unelson24 -pwinman123 -e 'SELECT * FROM admin.keyspace_master'
+
+
+
+
diff --git a/test/csit/scripts/optf-has/has/music_teardown_script.sh b/test/csit/scripts/optf-has/has/music_teardown_script.sh
new file mode 100755
index 000000000..605ebd4e8
--- /dev/null
+++ b/test/csit/scripts/optf-has/has/music_teardown_script.sh
@@ -0,0 +1,39 @@
+#!/bin/bash
+#
+# Copyright 2016-2017 Huawei Technologies Co., Ltd.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+echo "music scripts docker containers killing";
+docker stop music-tomcat
+docker stop music-war
+docker stop music-zk
+docker stop music-db
+
+docker rm music-zk
+docker rm music-tomcat
+docker rm music-war
+docker rm music-db
+
+docker network rm music-net;
+sleep 5;
+
+docker volume rm music-vol
+
+echo "dump music.log files"
+ls -alF /tmp/music
+ls -alF /tmp/music/properties
+cat /tmp/music/properties/music.properties
+#cat /tmp/music/logs/MUSIC/music.log
+cat /tmp/music/logs/MUSIC/error.log
+
diff --git a/test/csit/scripts/optf-has/has/simulator_script.sh b/test/csit/scripts/optf-has/has/simulator_script.sh
new file mode 100755
index 000000000..2e8a0e6f4
--- /dev/null
+++ b/test/csit/scripts/optf-has/has/simulator_script.sh
@@ -0,0 +1,85 @@
+#!/bin/bash
+#
+# Copyright 2016-2017 Huawei Technologies Co., Ltd.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+echo "### This is ${WORKSPACE}/test/csit/scripts/optf-has/has/simulator_script.sh"
+#
+# add here whatever commands is needed to prepare the optf/has CSIT testing
+#
+
+# assume the base is /tmp dir
+DIR=/tmp
+
+# the directory of the script
+echo ${DIR}
+cd ${DIR}
+
+# the temp directory used, within $DIR
+# omit the -p parameter to create a temporal directory in the default location
+WORK_DIR=`mktemp -d -p "$DIR"`
+echo ${WORK_DIR}
+cd ${WORK_DIR}
+
+# clone optf-has project
+git clone https://gerrit.onap.org/r/optf/has
+
+#echo "i am ${USER} : only non jenkins users may need proxy settings"
+if [ ${USER} != 'jenkins' ]; then
+
+ # add proxy settings into this script when you work behind a proxy
+ ${WORKSPACE}/test/csit/scripts/optf-has/has/has_proxy_settings.sh ${WORK_DIR}
+
+fi
+
+# prepare aaisim
+cd ${WORK_DIR}/has/conductor/conductor/tests/functional/simulators/aaisim/
+
+# check Dockerfile content
+cat ./Dockerfile
+
+# build aaisim
+docker build -t aaisim .
+
+# run aaisim
+docker run -d --name aaisim -p 8081:8081 aaisim
+
+AAISIM_IP=`docker inspect --format '{{ .NetworkSettings.Networks.bridge.IPAddress}}' aaisim`
+echo "AAISIM_IP=${AAISIM_IP}"
+
+${WORKSPACE}/test/csit/scripts/optf-has/has/wait_for_port.sh ${AAISIM_IP} 8081
+
+# prepare multicloudsim
+cd ${WORK_DIR}/has/conductor/conductor/tests/functional/simulators/multicloudsim/
+
+# check Dockerfile content
+cat ./Dockerfile
+
+# build multicloudsim
+docker build -t multicloudsim .
+
+# run multicloudsim
+docker run -d --name multicloudsim -p 8082:8082 multicloudsim
+
+MULTICLOUDSIM_IP=`docker inspect --format '{{ .NetworkSettings.Networks.bridge.IPAddress}}' multicloudsim`
+echo "MULTICLOUDSIM_IP=${MULTICLOUDSIM_IP}"
+
+${WORKSPACE}/test/csit/scripts/optf-has/has/wait_for_port.sh ${MULTICLOUDSIM_IP} 8082
+
+# wait a while before continuing
+sleep 2
+
+echo "inspect docker things for tracing purpose"
+docker inspect aaisim
+docker inspect multicloudsim
diff --git a/test/csit/plans/optf/has/teardown.sh b/test/csit/scripts/optf-has/has/simulator_teardown_script.sh
index b7e6cf075..a2edd3328 100755
--- a/test/csit/plans/optf/has/teardown.sh
+++ b/test/csit/scripts/optf-has/has/simulator_teardown_script.sh
@@ -14,15 +14,9 @@
# See the License for the specific language governing permissions and
# limitations under the License.
#
+echo "optf/has scripts docker containers killing";
+docker stop aaisim
+docker stop multicloudsim
-
-#
-# add here below the killing of all docker containers used for optf/has CSIT testing
-#
-echo "##########################################################";
-echo "#";
-echo "# optf/has scripts docker containers killing";
-echo "#";
-echo "##########################################################";
-# kill-instance.sh <dockercontainername>
-
+docker rm aaisim
+docker rm multicloudsim
diff --git a/test/csit/scripts/optf-has/has/wait_for_port.sh b/test/csit/scripts/optf-has/has/wait_for_port.sh
new file mode 100755
index 000000000..10f08ded1
--- /dev/null
+++ b/test/csit/scripts/optf-has/has/wait_for_port.sh
@@ -0,0 +1,18 @@
+#!/bin/bash
+
+if [[ $# -ne 2 ]]; then
+ echo "Usage: wait-for-port hostname port" >&2
+ exit 1
+fi
+
+host=$1
+port=$2
+
+echo "Waiting for $host port $port open"
+until telnet $host $port </dev/null 2>/dev/null | grep -q '^Connected'; do
+ sleep 1
+done
+
+echo "$host port $port is open"
+
+exit 0
diff --git a/test/csit/scripts/optf/osdf/testsample.txt b/test/csit/scripts/optf-has/osdf/testsample.txt
index 9f4e8d7d6..9f4e8d7d6 100644
--- a/test/csit/scripts/optf/osdf/testsample.txt
+++ b/test/csit/scripts/optf-has/osdf/testsample.txt
diff --git a/test/csit/scripts/policy/script1.sh b/test/csit/scripts/policy/script1.sh
index db5b5155a..0db34f080 100755
--- a/test/csit/scripts/policy/script1.sh
+++ b/test/csit/scripts/policy/script1.sh
@@ -70,19 +70,22 @@ echo $DOCKER_IP
git clone http://gerrit.onap.org/r/oparent
+git clone http://gerrit.onap.org/r/policy/engine
+cd engine/packages/docker
+${WORK_DIR}/maven/apache-maven-3.3.9/bin/mvn prepare-package --settings ${WORK_DIR}/oparent/settings.xml
+docker build -t onap/policy-pe target/policy-pe
+
+cd ${WORK_DIR}
+git clone http://gerrit.onap.org/r/policy/drools-pdp
+cd drools-pdp/packages/docker
+${WORK_DIR}/maven/apache-maven-3.3.9/bin/mvn prepare-package --settings ${WORK_DIR}/oparent/settings.xml
+docker build -t onap/policy-drools target/policy-drools
+
+cd ${WORK_DIR}
git clone http://gerrit.onap.org/r/policy/docker
cd docker
-${WORK_DIR}/maven/apache-maven-3.3.9/bin/mvn clean install prepare-package --settings ../oparent/settings.xml
-cp policy-pe/* target/policy-pe
-cp policy-drools/* target/policy-drools
-
-docker build -t onap/policy/policy-os policy-os
-docker build -t onap/policy/policy-db policy-db
-docker build -t onap/policy/policy-nexus policy-nexus
-docker build -t onap/policy/policy-base policy-base
-docker build -t onap/policy/policy-pe target/policy-pe
-docker build -t onap/policy/policy-drools target/policy-drools
+docker build -t onap/policy-nexus policy-nexus
chmod +x config/drools/drools-tweaks.sh
@@ -102,8 +105,6 @@ fi
docker ps
-#sleep 4m
-
POLICY_IP=`docker inspect --format '{{ .NetworkSettings.Networks.docker_default.IPAddress}}' drools`
echo ${POLICY_IP}
@@ -122,11 +123,26 @@ echo ${NEXUS_IP}
MARIADB_IP=`docker inspect --format '{{ .NetworkSettings.Networks.docker_default.IPAddress}}' mariadb`
echo ${MARIADB_IP}
+sleep 5m
+
+netstat -tnl
+
+docker logs mariadb
${DIR}/wait_for_port.sh ${MARIADB_IP} 3306
+
+docker logs pap
${DIR}/wait_for_port.sh ${PAP_IP} 9091
+
+docker logs pdp
${DIR}/wait_for_port.sh ${PDP_IP} 8081
+
+docker logs brmsgw
${DIR}/wait_for_port.sh ${BRMS_IP} 9989
+
+docker logs nexus
${DIR}/wait_for_port.sh ${NEXUS_IP} 8081
+
+docker logs drools
${DIR}/wait_for_port.sh ${POLICY_IP} 6969
TIME_OUT=600
diff --git a/test/csit/scripts/sdc/clone_and_setup_sdc_data.sh b/test/csit/scripts/sdc/clone_and_setup_sdc_data.sh
deleted file mode 100644
index 1025f405d..000000000
--- a/test/csit/scripts/sdc/clone_and_setup_sdc_data.sh
+++ /dev/null
@@ -1,113 +0,0 @@
-#!/bin/bash
-
-
-set -x
-#
-# ============LICENSE_START=======================================================
-# ONAP CLAMP
-# ================================================================================
-# Copyright (C) 2017 AT&T Intellectual Property. All rights
-# reserved.
-# ================================================================================
-# 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.
-# ============LICENSE_END============================================
-# ===================================================================
-# ECOMP is a trademark and service mark of AT&T Intellectual Property.
-#
-
-echo "This is ${WORKSPACE}/test/csit/scripts/sdc/clone_and_setup_sdc_data.sh"
-
-# Clone sdc enviroment template
-mkdir -p ${WORKSPACE}/data/environments/
-mkdir -p ${WORKSPACE}/data/clone/
-mkdir -p ${WORKSPACE}/data/logs/BE/SDC/SDC-BE
-mkdir -p ${WORKSPACE}/data/logs/FE/SDC/SDC-FE
-chmod -R 777 ${WORKSPACE}/data/logs
-ls -lR ${WORKSPACE}/data/logs/
-
-
-cd ${WORKSPACE}/data/clone
-git clone --depth 1 http://gerrit.onap.org/r/sdc -b ${GERRIT_BRANCH}
-
-chmod -R 777 ${WORKSPACE}/data/clone
-
-# set enviroment variables
-
-export ENV_NAME='CSIT'
-export MR_IP_ADDR='10.0.0.1'
-
-ifconfig
-
-#if [ -e /opt/config/public_ip.txt ]
-# then
-# IP_ADDRESS=$(cat /opt/config/public_ip.txt)
-# else
-# IP_ADDRESS=$(ifconfig ens3 | grep "inet addr" | tr -s ' ' | cut -d' ' -f3 | cut -d':' -f2)
-# fi
-
-IP_ADDRESS=`ip route get 8.8.8.8 | awk '/src/{ print $7 }'`
-export HOST_IP=$IP_ADDRESS
-
-
- cat ${WORKSPACE}/data/clone/sdc/sdc-os-chef/environments/Template.json | sed "s/yyy/"$IP_ADDRESS"/g" > ${WORKSPACE}/data/environments/$ENV_NAME.json
- sed -i "s/xxx/"$ENV_NAME"/g" ${WORKSPACE}/data/environments/$ENV_NAME.json
- sed -i "s/\"ueb_url_list\":.*/\"ueb_url_list\": \""$MR_IP_ADDR","$MR_IP_ADDR"\",/g" ${WORKSPACE}/data/environments/$ENV_NAME.json
- sed -i "s/\"fqdn\":.*/\"fqdn\": [\""$MR_IP_ADDR"\", \""$MR_IP_ADDR"\"]/g" ${WORKSPACE}/data/environments/$ENV_NAME.json
-
-
-source ${WORKSPACE}/data/clone/sdc/version.properties
-export RELEASE=$major.$minor-STAGING-latest
-export DEP_ENV=$ENV_NAME
-
-cp ${WORKSPACE}/data/clone/sdc/sdc-os-chef/scripts/docker_run.sh ${WORKSPACE}/test/csit/scripts/sdc/
-#sed -i "s~/data~${WORKSPACE}\/data~g" ${WORKSPACE}/test/csit/scripts/sdc/docker_run.sh
-#sed -i "s/HOST_IP=\${IP}/HOST_IP=\${HOST_IP}/g" ${WORKSPACE}/test/csit/scripts/sdc/docker_run.sh
-sed -i "s/ENVNAME=\"\${DEP_ENV}\"/ENVNAME=\"\${ENV_NAME}\"/g" ${WORKSPACE}/test/csit/scripts/sdc/docker_run.sh
-
-source ${WORKSPACE}/data/clone/sdc/version.properties
-export RELEASE=$major.$minor-STAGING-latest
-
-
-bash -x ${WORKSPACE}/test/csit/scripts/sdc/docker_run.sh -r ${RELEASE} -p 10001 -t
-
-sleep 120
-
-#monitor sanity process
-
-TIME_OUT=1200
-INTERVAL=20
-TIME=0
-while [ "$TIME" -lt "$TIME_OUT" ]; do
-
-PID=`docker exec -i sdc-sanity ps -ef | grep java | awk '{print $2}'`
-echo sanity PID is -- $PID
-
-if [ -z "$PID" ]
- then
- echo SDC sanity finished in $TIME seconds
- break
- fi
-
- echo Sleep: $INTERVAL seconds before testing if SDC sanity completed. Total wait time up now is: $TIME seconds. Timeout is: $TIME_OUT seconds
- sleep $INTERVAL
- TIME=$(($TIME+$INTERVAL))
-done
-
-if [ "$TIME" -ge "$TIME_OUT" ]
- then
- echo TIME OUT: Sany was NOT completed in $TIME_OUT seconds... Could cause problems for tests...
-fi
-
-
-
-
diff --git a/test/csit/scripts/sdc/kill_containers_and_remove_dataFolders.sh b/test/csit/scripts/sdc/kill_containers_and_remove_dataFolders.sh
index bd5a52214..a4e933fff 100644
--- a/test/csit/scripts/sdc/kill_containers_and_remove_dataFolders.sh
+++ b/test/csit/scripts/sdc/kill_containers_and_remove_dataFolders.sh
@@ -22,8 +22,8 @@ echo "This is ${WORKSPACE}/test/csit/scripts/sdc/kill_and_remove_dataFolder.sh"
# copy logs to archive
cp -rf ${WORKSPACE}/data/logs/ ${WORKSPACE}/archives/
-cp -rf ${WORKSPACE}/data/logs/sdc-sanity/ExtentReport/* ${WORKSPACE}/archives/
-cp -rf ${WORKSPACE}/data/logs/sdc-sanity/target/*.xml ${WORKSPACE}/archives/
+cp -rf ${WORKSPACE}/data/logs/*tests*/ExtentReport/* ${WORKSPACE}/archives/
+cp -rf ${WORKSPACE}/data/logs/*tests*/target/*.xml ${WORKSPACE}/archives/
ls -Rt ${WORKSPACE}/archives/
diff --git a/test/csit/scripts/sdc/setup_sdc_for_apis_sanity.sh b/test/csit/scripts/sdc/setup_sdc_for_apis_sanity.sh
new file mode 100644
index 000000000..41d3d2aab
--- /dev/null
+++ b/test/csit/scripts/sdc/setup_sdc_for_apis_sanity.sh
@@ -0,0 +1,85 @@
+#!/bin/bash
+
+set -x
+
+echo "This is ${WORKSPACE}/test/csit/scripts/sdc/clone_and_setup_sdc_data.sh"
+
+# Clone sdc enviroment template
+mkdir -p ${WORKSPACE}/data/environments/
+mkdir -p ${WORKSPACE}/data/clone/
+#mkdir -p ${WORKSPACE}/data/logs/BE/SDC/SDC-BE
+#mkdir -p ${WORKSPACE}/data/logs/FE/SDC/SDC-FE
+#chmod -R 777 ${WORKSPACE}/data/logs
+#ls -lR ${WORKSPACE}/data/logs/
+
+
+cd ${WORKSPACE}/data/clone
+git clone --depth 1 http://gerrit.onap.org/r/sdc -b ${GERRIT_BRANCH}
+
+chmod -R 777 ${WORKSPACE}/data/clone
+
+# set enviroment variables
+
+export ENV_NAME='CSIT'
+export MR_IP_ADDR='10.0.0.1'
+
+ifconfig
+IP_ADDRESS=`ip route get 8.8.8.8 | awk '/src/{ print $7 }'`
+export HOST_IP=$IP_ADDRESS
+
+# setup enviroment json
+
+cat ${WORKSPACE}/data/clone/sdc/sdc-os-chef/environments/Template.json | sed "s/yyy/"$IP_ADDRESS"/g" > ${WORKSPACE}/data/environments/$ENV_NAME.json
+sed -i "s/xxx/"$ENV_NAME"/g" ${WORKSPACE}/data/environments/$ENV_NAME.json
+sed -i "s/\"ueb_url_list\":.*/\"ueb_url_list\": \""$MR_IP_ADDR","$MR_IP_ADDR"\",/g" ${WORKSPACE}/data/environments/$ENV_NAME.json
+sed -i "s/\"fqdn\":.*/\"fqdn\": [\""$MR_IP_ADDR"\", \""$MR_IP_ADDR"\"]/g" ${WORKSPACE}/data/environments/$ENV_NAME.json
+
+
+source ${WORKSPACE}/data/clone/sdc/version.properties
+export RELEASE=$major.$minor-STAGING-latest
+export DEP_ENV=$ENV_NAME
+
+cp ${WORKSPACE}/data/clone/sdc/sdc-os-chef/scripts/docker_run.sh ${WORKSPACE}/test/csit/scripts/sdc/
+#sed -i "s~/data~${WORKSPACE}\/data~g" ${WORKSPACE}/test/csit/scripts/sdc/docker_run.sh
+#sed -i "s/HOST_IP=\${IP}/HOST_IP=\${HOST_IP}/g" ${WORKSPACE}/test/csit/scripts/sdc/docker_run.sh
+#sed -i "s/ENVNAME=\"\${DEP_ENV}\"/ENVNAME=\"\${ENV_NAME}\"/g" ${WORKSPACE}/test/csit/scripts/sdc/docker_run.sh
+
+source ${WORKSPACE}/data/clone/sdc/version.properties
+export RELEASE=$major.$minor-STAGING-latest
+
+${WORKSPACE}/test/csit/scripts/sdc/docker_run.sh -r ${RELEASE} -e ${ENV_NAME} -p 10001 -tad
+
+sleep 120
+
+#monitor test processes
+
+TIME_OUT=1200
+INTERVAL=20
+TIME=0
+CID=`docker ps | grep tests | awk '{print $1}'`
+
+while [ "$TIME" -lt "$TIME_OUT" ]; do
+
+PID=`docker exec -i $CID ps -ef | grep java | awk '{print $1}'`
+
+echo sanity PID is -- $PID
+
+if [ -z "$PID" ]
+ then
+ echo SDC sanity finished in $TIME seconds
+ break
+ fi
+
+ echo Sleep: $INTERVAL seconds before testing if SDC sanity completed. Total wait time up now is: $TIME seconds. Timeout is: $TIME_OUT seconds
+ sleep $INTERVAL
+ TIME=$(($TIME+$INTERVAL))
+done
+
+if [ "$TIME" -ge "$TIME_OUT" ]
+ then
+ echo TIME OUT: Sany was NOT completed in $TIME_OUT seconds... Could cause problems for tests...
+fi
+
+
+
+
diff --git a/test/csit/scripts/sdc/setup_sdc_for_ui_sanity.sh b/test/csit/scripts/sdc/setup_sdc_for_ui_sanity.sh
new file mode 100644
index 000000000..81b43d216
--- /dev/null
+++ b/test/csit/scripts/sdc/setup_sdc_for_ui_sanity.sh
@@ -0,0 +1,85 @@
+#!/bin/bash
+
+set -x
+
+echo "This is ${WORKSPACE}/test/csit/scripts/sdc/clone_and_setup_sdc_data.sh"
+
+# Clone sdc enviroment template
+mkdir -p ${WORKSPACE}/data/environments/
+mkdir -p ${WORKSPACE}/data/clone/
+#mkdir -p ${WORKSPACE}/data/logs/BE/SDC/SDC-BE
+#mkdir -p ${WORKSPACE}/data/logs/FE/SDC/SDC-FE
+#chmod -R 777 ${WORKSPACE}/data/logs
+#ls -lR ${WORKSPACE}/data/logs/
+
+
+cd ${WORKSPACE}/data/clone
+git clone --depth 1 http://gerrit.onap.org/r/sdc -b ${GERRIT_BRANCH}
+
+chmod -R 777 ${WORKSPACE}/data/clone
+
+# set enviroment variables
+
+export ENV_NAME='CSIT'
+export MR_IP_ADDR='10.0.0.1'
+
+ifconfig
+IP_ADDRESS=`ip route get 8.8.8.8 | awk '/src/{ print $7 }'`
+export HOST_IP=$IP_ADDRESS
+
+# setup enviroment json
+
+cat ${WORKSPACE}/data/clone/sdc/sdc-os-chef/environments/Template.json | sed "s/yyy/"$IP_ADDRESS"/g" > ${WORKSPACE}/data/environments/$ENV_NAME.json
+sed -i "s/xxx/"$ENV_NAME"/g" ${WORKSPACE}/data/environments/$ENV_NAME.json
+sed -i "s/\"ueb_url_list\":.*/\"ueb_url_list\": \""$MR_IP_ADDR","$MR_IP_ADDR"\",/g" ${WORKSPACE}/data/environments/$ENV_NAME.json
+sed -i "s/\"fqdn\":.*/\"fqdn\": [\""$MR_IP_ADDR"\", \""$MR_IP_ADDR"\"]/g" ${WORKSPACE}/data/environments/$ENV_NAME.json
+
+
+source ${WORKSPACE}/data/clone/sdc/version.properties
+export RELEASE=$major.$minor-STAGING-latest
+export DEP_ENV=$ENV_NAME
+
+cp ${WORKSPACE}/data/clone/sdc/sdc-os-chef/scripts/docker_run.sh ${WORKSPACE}/test/csit/scripts/sdc/
+#sed -i "s~/data~${WORKSPACE}\/data~g" ${WORKSPACE}/test/csit/scripts/sdc/docker_run.sh
+#sed -i "s/HOST_IP=\${IP}/HOST_IP=\${HOST_IP}/g" ${WORKSPACE}/test/csit/scripts/sdc/docker_run.sh
+#sed -i "s/ENVNAME=\"\${DEP_ENV}\"/ENVNAME=\"\${ENV_NAME}\"/g" ${WORKSPACE}/test/csit/scripts/sdc/docker_run.sh
+
+source ${WORKSPACE}/data/clone/sdc/version.properties
+export RELEASE=$major.$minor-STAGING-latest
+
+${WORKSPACE}/test/csit/scripts/sdc/docker_run.sh -r ${RELEASE} -e ${ENV_NAME} -p 10001 -tud
+
+sleep 120
+
+#monitor test processes
+
+TIME_OUT=1200
+INTERVAL=20
+TIME=0
+CID=`docker ps | grep tests | awk '{print $1}'`
+
+while [ "$TIME" -lt "$TIME_OUT" ]; do
+
+PID=`docker exec -i $CID ps -ef | grep java | awk '{print $1}'`
+
+echo sanity PID is -- $PID
+
+if [ -z "$PID" ]
+ then
+ echo SDC sanity finished in $TIME seconds
+ break
+ fi
+
+ echo Sleep: $INTERVAL seconds before testing if SDC sanity completed. Total wait time up now is: $TIME seconds. Timeout is: $TIME_OUT seconds
+ sleep $INTERVAL
+ TIME=$(($TIME+$INTERVAL))
+done
+
+if [ "$TIME" -ge "$TIME_OUT" ]
+ then
+ echo TIME OUT: Sany was NOT completed in $TIME_OUT seconds... Could cause problems for tests...
+fi
+
+
+
+
diff --git a/test/csit/tests/aaf/aaf-sms-suite/__init__.robot b/test/csit/tests/aaf/aaf-sms-suite/__init__.robot
new file mode 100644
index 000000000..d1da7f385
--- /dev/null
+++ b/test/csit/tests/aaf/aaf-sms-suite/__init__.robot
@@ -0,0 +1,2 @@
+*** Settings ***
+Documentation Integration - Suite 1 \ No newline at end of file
diff --git a/test/csit/tests/aaf/aaf-sms-suite/aaf-sms-test.robot b/test/csit/tests/aaf/aaf-sms-suite/aaf-sms-test.robot
new file mode 100644
index 000000000..1302abc79
--- /dev/null
+++ b/test/csit/tests/aaf/aaf-sms-suite/aaf-sms-test.robot
@@ -0,0 +1,94 @@
+*** Settings ***
+Library OperatingSystem
+Library RequestsLibrary
+Library json
+
+*** Variables ***
+${MESSAGE} {"ping": "ok"}
+
+#global variables
+${generatedAID}
+
+*** Test Cases ***
+SMS Check SMS API Docker Container
+ [Documentation] Checks if SMS docker container is running
+ ${rc} ${output}= Run and Return RC and Output docker ps
+ Log To Console *********************
+ Log To Console retrurn_code = ${rc}
+ Log To Console output = ${output}
+ Should Be Equal As Integers ${rc} 0
+ Should Contain ${output} nexus3.onap.org:10001/onap/aaf/sms
+
+SMS GetStatus
+ [Documentation] Gets Backend Status
+ Create Session SMS ${SMS_HOSTNAME}:${SMS_PORT}
+ &{headers}= Create Dictionary Content-Type=application/json Accept=application/json
+ ${resp}= Get Request SMS /v1/sms/status headers=${headers}
+ Log To Console *********************
+ Log To Console response = ${resp}
+ Log To Console body = ${resp.text}
+ Should Be Equal As Integers ${resp.status_code} 200
+
+SMS CreateDomain
+ [Documentation] Creates a Secret Domain to hold Secrets
+ Create Session SMS ${SMS_HOSTNAME}:${SMS_PORT}
+ ${data} Get Binary File ${CURDIR}${/}data${/}create_domain.json
+ &{headers}= Create Dictionary Content-Type=application/json Accept=application/json
+ ${resp}= Post Request SMS /v1/sms/domain data=${data} headers=${headers}
+ Log To Console *********************
+ Log To Console response = ${resp}
+ Log To Console body = ${resp.text}
+ Should Be Equal As Integers ${resp.status_code} 201
+
+SMS CreateSecret
+ [Documentation] Create A Secret within the Domain
+ Create Session SMS ${SMS_HOSTNAME}:${SMS_PORT}
+ ${data} Get Binary File ${CURDIR}${/}data${/}create_secret.json
+ &{headers}= Create Dictionary Content-Type=application/json Accept=application/json
+ ${resp}= Post Request SMS /v1/sms/domain/curltestdomain/secret data=${data} headers=${headers}
+ Log To Console *********************
+ Log To Console response = ${resp}
+ Log To Console body = ${resp.text}
+ Should Be Equal As Integers ${resp.status_code} 201
+
+SMS ListSecret
+ [Documentation] Lists all Secret Names within Domain
+ Create Session SMS ${SMS_HOSTNAME}:${SMS_PORT}
+ &{headers}= Create Dictionary Content-Type=application/json Accept=application/json
+ ${resp}= Get Request SMS /v1/sms/domain/curltestdomain/secret headers=${headers}
+ Log To Console *********************
+ Log To Console response = ${resp}
+ Log To Console body = ${resp.text}
+ Should Be Equal As Integers ${resp.status_code} 200
+
+SMS GetSecret
+ [Documentation] Gets a single Secret with Values from Domain
+ Create Session SMS ${SMS_HOSTNAME}:${SMS_PORT}
+ &{headers}= Create Dictionary Content-Type=application/json Accept=application/json
+ ${resp}= Get Request SMS /v1/sms/domain/curltestdomain/secret/curltestsecret1 headers=${headers}
+ Log To Console *********************
+ Log To Console response = ${resp}
+ Log To Console body = ${resp.text}
+ Should Be Equal As Integers ${resp.status_code} 200
+
+SMS DeleteSecret
+ [Documentation] Deletes a Secret referenced by Name from Domain
+ Create Session SMS ${SMS_HOSTNAME}:${SMS_PORT}
+ &{headers}= Create Dictionary Content-Type=application/json Accept=application/json
+ ${resp}= Delete Request SMS /v1/sms/domain/curltestdomain/secret/curltestsecret1 headers=${headers}
+ Log To Console *********************
+ Log To Console response = ${resp}
+ Log To Console body = ${resp.text}
+ Should Be Equal As Integers ${resp.status_code} 204
+
+SMS DeleteDomain
+ [Documentation] Deletes a Domain referenced by Name
+ Create Session SMS ${SMS_HOSTNAME}:${SMS_PORT}
+ &{headers}= Create Dictionary Content-Type=application/json Accept=application/json
+ ${resp}= Delete Request SMS /v1/sms/domain/curltestdomain headers=${headers}
+ Log To Console *********************
+ Log To Console response = ${resp}
+ Log To Console body = ${resp.text}
+ Should Be Equal As Integers ${resp.status_code} 204
+
+*** Keywords ***
diff --git a/test/csit/tests/aaf/aaf-sms-suite/data/create_domain.json b/test/csit/tests/aaf/aaf-sms-suite/data/create_domain.json
new file mode 100644
index 000000000..176f44431
--- /dev/null
+++ b/test/csit/tests/aaf/aaf-sms-suite/data/create_domain.json
@@ -0,0 +1,3 @@
+{
+ "name": "curltestdomain"
+}
diff --git a/test/csit/tests/aaf/aaf-sms-suite/data/create_secret.json b/test/csit/tests/aaf/aaf-sms-suite/data/create_secret.json
new file mode 100644
index 000000000..d99f4e2e0
--- /dev/null
+++ b/test/csit/tests/aaf/aaf-sms-suite/data/create_secret.json
@@ -0,0 +1,12 @@
+{
+ "name": "curltestsecret1",
+ "values": {
+ "name":"rah",
+ "age":35,
+ "map":{
+ "mapkey1": "mapvalue1",
+ "mapkey2": "mapvalue2"
+ },
+ "array":["golang","c++","java","python"]
+ }
+}
diff --git a/test/csit/tests/aai/esr-server/startup/test1.robot b/test/csit/tests/aai/esr-server/startup/test1.robot
index 53afeed27..d1504a1b4 100644
--- a/test/csit/tests/aai/esr-server/startup/test1.robot
+++ b/test/csit/tests/aai/esr-server/startup/test1.robot
@@ -4,7 +4,7 @@ Library RequestsLibrary
*** Test Cases ***
Liveness Test
[Documentation] Check various endpoints for basic liveness check
- Create Session esr-server http://${ESRSERVER_IP}:9518
+ Create Session esr-server https://${ESRSERVER_IP}:9518
CheckUrl esr-server /api/aai-esr-server/v1/test
*** Keywords ***
diff --git a/test/csit/tests/clamp/APIs/01__Create_CL_Holmes.robot b/test/csit/tests/clamp/APIs/01__Create_CL_Holmes.robot
index 86e792313..f820ef632 100644
--- a/test/csit/tests/clamp/APIs/01__Create_CL_Holmes.robot
+++ b/test/csit/tests/clamp/APIs/01__Create_CL_Holmes.robot
@@ -4,6 +4,9 @@ Library RequestsLibrary
Library OperatingSystem
Library json
+*** Variables ***
+${login} admin
+${passw} password
*** Test Cases ***
Get Requests health check ok
@@ -12,7 +15,7 @@ Get Requests health check ok
Should Be Equal As Strings ${resp.status_code} 200
Get Requests verify test template found
- ${auth}= Create List admin 5f4dcc3b5aa765d61d8327deb882cf99
+ ${auth}= Create List ${login} ${passw}
Create Session clamp http://localhost:8080 auth=${auth}
${resp}= Get Request clamp /restservices/clds/v1/cldsTempate/template-names
Should Be Equal As Strings ${resp.status_code} 200
@@ -21,7 +24,7 @@ Get Requests verify test template found
Should Not Contain Match ${resp} *templateHolmes99*
Put Requests to add Close Loop ClHolmes1
- ${auth}= Create List admin 5f4dcc3b5aa765d61d8327deb882cf99
+ ${auth}= Create List ${login} ${passw}
Create Session clamp http://localhost:8080 auth=${auth}
${data}= Get Binary File ${CURDIR}${/}data${/}createClHolmes1.json
&{headers}= Create Dictionary Content-Type=application/json
@@ -29,7 +32,7 @@ Put Requests to add Close Loop ClHolmes1
Should Be Equal As Strings ${resp.status_code} 200
Put Requests to add Close Loop ClHolmes2
- ${auth}= Create List admin 5f4dcc3b5aa765d61d8327deb882cf99
+ ${auth}= Create List ${login} ${passw}
Create Session clamp http://localhost:8080 auth=${auth}
${data}= Get Binary File ${CURDIR}${/}data${/}createClHolmes2.json
&{headers}= Create Dictionary Content-Type=application/json
@@ -37,7 +40,7 @@ Put Requests to add Close Loop ClHolmes2
Should Be Equal As Strings ${resp.status_code} 200
Get Requests verify CL1 found
- ${auth}= Create List admin 5f4dcc3b5aa765d61d8327deb882cf99
+ ${auth}= Create List ${login} ${passw}
Create Session clamp http://localhost:8080 auth=${auth}
${resp}= Get Request clamp /restservices/clds/v1/clds/model-names
Should Be Equal As Strings ${resp.status_code} 200
diff --git a/test/csit/tests/clamp/APIs/02__Create_CL_TCA.robot b/test/csit/tests/clamp/APIs/02__Create_CL_TCA.robot
index 4805ced60..5dfa87904 100644
--- a/test/csit/tests/clamp/APIs/02__Create_CL_TCA.robot
+++ b/test/csit/tests/clamp/APIs/02__Create_CL_TCA.robot
@@ -4,6 +4,9 @@ Library RequestsLibrary
Library OperatingSystem
Library json
+*** Variables ***
+${login} admin
+${passw} password
*** Test Cases ***
Get Requests health check ok
@@ -12,7 +15,7 @@ Get Requests health check ok
Should Be Equal As Strings ${resp.status_code} 200
Get Requests verify test template found
- ${auth}= Create List admin 5f4dcc3b5aa765d61d8327deb882cf99
+ ${auth}= Create List ${login} ${passw}
Create Session clamp http://localhost:8080 auth=${auth}
${resp}= Get Request clamp /restservices/clds/v1/cldsTempate/template-names
Should Be Equal As Strings ${resp.status_code} 200
@@ -21,7 +24,7 @@ Get Requests verify test template found
Should Not Contain Match ${resp} *templateTCA99*
Put Requests to add Close Loop ClHolmes1
- ${auth}= Create List admin 5f4dcc3b5aa765d61d8327deb882cf99
+ ${auth}= Create List ${login} ${passw}
Create Session clamp http://localhost:8080 auth=${auth}
${data}= Get Binary File ${CURDIR}${/}data${/}createClTCA1.json
&{headers}= Create Dictionary Content-Type=application/json
@@ -29,7 +32,7 @@ Put Requests to add Close Loop ClHolmes1
Should Be Equal As Strings ${resp.status_code} 200
Put Requests to add Close Loop ClHolmes2
- ${auth}= Create List admin 5f4dcc3b5aa765d61d8327deb882cf99
+ ${auth}= Create List ${login} ${passw}
Create Session clamp http://localhost:8080 auth=${auth}
${data}= Get Binary File ${CURDIR}${/}data${/}createClTCA2.json
&{headers}= Create Dictionary Content-Type=application/json
@@ -37,7 +40,7 @@ Put Requests to add Close Loop ClHolmes2
Should Be Equal As Strings ${resp.status_code} 200
Get Requests verify CL1 found
- ${auth}= Create List admin 5f4dcc3b5aa765d61d8327deb882cf99
+ ${auth}= Create List ${login} ${passw}
Create Session clamp http://localhost:8080 auth=${auth}
${resp}= Get Request clamp /restservices/clds/v1/clds/model-names
Should Be Equal As Strings ${resp.status_code} 200
diff --git a/test/csit/tests/clamp/APIs/03__VariousApis.robot b/test/csit/tests/clamp/APIs/03__VariousApis.robot
index f875e4c62..fb671ca41 100644
--- a/test/csit/tests/clamp/APIs/03__VariousApis.robot
+++ b/test/csit/tests/clamp/APIs/03__VariousApis.robot
@@ -4,24 +4,27 @@ Library RequestsLibrary
Library OperatingSystem
Library json
+*** Variables ***
+${login} admin
+${passw} password
*** Test Cases ***
Get Clamp properties
- ${auth}= Create List admin 5f4dcc3b5aa765d61d8327deb882cf99
+ ${auth}= Create List ${login} ${passw}
Create Session clamp http://localhost:8080 auth=${auth}
${resp}= Get Request clamp /restservices/clds/v1/clds/properties
Dictionary Should Contain Key ${resp.json()} global
Dictionary Should Contain Key ${resp.json()['global']} location
Get Clamp Info
- ${auth}= Create List admin 5f4dcc3b5aa765d61d8327deb882cf99
+ ${auth}= Create List ${login} ${passw}
Create Session clamp http://localhost:8080 auth=${auth}
${resp}= Get Request clamp /restservices/clds/v1/clds/cldsInfo
Dictionary Should Contain Key ${resp.json()} userName
Dictionary Should Contain Key ${resp.json()} cldsVersion
Get model bpmn by name
- ${auth}= Create List admin 5f4dcc3b5aa765d61d8327deb882cf99
+ ${auth}= Create List ${login} ${passw}
Create Session clamp http://localhost:8080 auth=${auth}
${resp}= Get Request clamp /restservices/clds/v1/clds/model/bpmn/ClHolmes1
Should Contain Match ${resp} *StartEvent_*
@@ -31,7 +34,7 @@ Get model bpmn by name
Should Contain Match ${resp} *EndEvent_*
Get model names
- ${auth}= Create List admin 5f4dcc3b5aa765d61d8327deb882cf99
+ ${auth}= Create List ${login} ${passw}
Create Session clamp http://localhost:8080 auth=${auth}
${resp}= Get Request clamp /restservices/clds/v1/clds/model-names
Should Contain Match ${resp} *ClHolmes1*
diff --git a/test/csit/tests/clamp/APIs/04__Verify_API_Models.robot b/test/csit/tests/clamp/APIs/04__Verify_API_Models.robot
index f4f762690..3ae6aeeb9 100644
--- a/test/csit/tests/clamp/APIs/04__Verify_API_Models.robot
+++ b/test/csit/tests/clamp/APIs/04__Verify_API_Models.robot
@@ -4,9 +4,13 @@ Library RequestsLibrary
Library OperatingSystem
Library json
+*** Variables ***
+${login} admin
+${passw} password
+
*** Test Cases ***
Verify HolmesModel1
- ${auth}= Create List admin 5f4dcc3b5aa765d61d8327deb882cf99
+ ${auth}= Create List ${login} ${passw}
Create Session clamp http://localhost:8080 auth=${auth}
${resp}= Get Request clamp /restservices/clds/v1/clds/model/ClHolmes1
Should Contain Match ${resp} *templateHolmes1*
@@ -19,25 +23,25 @@ Verify HolmesModel1
Should Contain Match ${resp} *Config Policy name1*
Verify HolmesModel2
- ${auth}= Create List admin 5f4dcc3b5aa765d61d8327deb882cf99
+ ${auth}= Create List ${login} ${passw}
Create Session clamp http://localhost:8080 auth=${auth}
${resp}= Get Request clamp /restservices/clds/v1/clds/model/ClHolmes2
Should Contain Match ${resp} *templateHolmes2*
Should Contain Match ${resp} *DC2*
Should Contain Match ${resp} *DC3*
Should Contain Match ${resp} *Policy2*
- Should Contain Match ${resp} *enbRecipe*
- Should Contain Match ${resp} *reset*
+ Should Contain Match ${resp} *vnfRecipe*
+ Should Contain Match ${resp} *migrate*
Should Contain Match ${resp} *360*
Should Contain Match ${resp} *345*
Should Contain Match ${resp} *Config Policy Name2*
Verify TCAModel1
- ${auth}= Create List admin 5f4dcc3b5aa765d61d8327deb882cf99
+ ${auth}= Create List ${login} ${passw}
Create Session clamp http://localhost:8080 auth=${auth}
${resp}= Get Request clamp /restservices/clds/v1/clds/model/ClTCA1
Should Contain Match ${resp} *templateTCA1*
- Should Contain Match ${resp} *vnfRecipe*
+ Should Contain Match ${resp} *enbRecipe*
Should Contain Match ${resp} *DC1*
Should Contain Match ${resp} *DC2*
Should Contain Match ${resp} *Policy3*
@@ -46,11 +50,11 @@ Verify TCAModel1
Should Contain Match ${resp} *ONSET*
Verify TCAModel2
- ${auth}= Create List admin 5f4dcc3b5aa765d61d8327deb882cf99
+ ${auth}= Create List ${login} ${passw}
Create Session clamp http://localhost:8080 auth=${auth}
${resp}= Get Request clamp /restservices/clds/v1/clds/model/ClTCA2
Should Contain Match ${resp} *templateTCA2*
- Should Contain Match ${resp} *vnfRecipe*
+ Should Contain Match ${resp} *enbRecipe*
Should Contain Match ${resp} *DC1*
Should Contain Match ${resp} *DC2*
Should Contain Match ${resp} *DC3*
@@ -61,7 +65,7 @@ Verify TCAModel2
Should Contain Match ${resp} *VM*
Get model names
- ${auth}= Create List admin 5f4dcc3b5aa765d61d8327deb882cf99
+ ${auth}= Create List ${login} ${passw}
Create Session clamp http://localhost:8080 auth=${auth}
${resp}= Get Request clamp /restservices/clds/v1/clds/model-names
Should Contain Match ${resp} *ClHolmes1*
diff --git a/test/csit/tests/clamp/APIs/data/createClHolmes2.json b/test/csit/tests/clamp/APIs/data/createClHolmes2.json
index dc5720809..69055895c 100644
--- a/test/csit/tests/clamp/APIs/data/createClHolmes2.json
+++ b/test/csit/tests/clamp/APIs/data/createClHolmes2.json
@@ -2,7 +2,9 @@
"name":"ClHolmes2",
"controlNamePrefix":"ClosedLoop-",
"bpmnText":"",
- "propText":"{\"Holmes_0bsv00m\":[{\"name\":\"correlationalLogic\",\"value\":\"correlation logic2\"},{\"name\":\"configPolicyName\",\"value\":\"Config Policy Name2\"}],\"global\":[{\"name\":\"service\",\"value\":[\"c95b0e7c-c1f0-4287-9928-7964c5377a46\"]},{\"name\":\"vf\",\"value\":[\"48504e0e-f3d3-411d-a52b-eda1b8fec073\"]},{\"name\":\"actionSet\",\"value\":[\"enbRecipe\"]},{\"name\":\"location\",\"value\":[\"DC2\",\"DC3\"]}],\"Policy_114xo8j\":{\"Policy2\":[{\"name\":\"pname\",\"value\":\"Policy2\"},{\"name\":\"pid\",\"value\":\"0\"},{\"name\":\"timeout\",\"value\":\"345\"},{\"policyConfigurations\":[[{\"name\":\"recipe\",\"value\":[\"reset\"]},{\"name\":\"maxRetries\",\"value\":[\"5\"]},{\"name\":\"retryTimeLimit\",\"value\":[\"360\"]},{\"name\":\"_id\",\"value\":[\"Uw5gftt\"]},{\"name\":\"parentPolicy\",\"value\":[\"\"]},{\"name\":\"targetResourceId\",\"value\":[\"\"]}]]}]}}",
+ "propText":"{\"Holmes_0bsv00m\":[{\"name\":\"correlationalLogic\",\"value\":\"correlation logic2\"},{\"name\":\"configPolicyName\",\"value\":\"Config Policy Name2\"}],\"global\":[{\"name\":\"service\",\"value\":[\"c95b0e7c-c1f0-4287-9928-7964c5377a46\"]},{\"name\":\"vf\",\"value\":[\"48504e0e-f3d3-411d-a52b-eda1b8fec073\"]},{\"name\":\"actionSet\",\"value\":[\"vnfRecipe\"]},{\"name\":\"location\",\"value\":[\"DC2\",\"DC3\"]}],\"Policy_114xo8j\":{\"Policy2\":[{\"name\":\"pname\",\"value\":\"Policy2\"},{\"name\":\"pid\",\"value\":\"0\"},{\"name\":\"timeout\",\"value\":\"345\"},{\"policyConfigurations\":[[{\"name\":\"recipe\",\"value\":[\"migrate\"]},{\"name\":\"maxRetries\",\"value\":[\"3\"]},{\"name\":\"retryTimeLimit\",\"value\":[\"360\"]},{\"name\":\"_id\",\"value\":[\"dHQXiOz\"]},{\"name\":\"parentPolicy\",\"value\":[\"\"]},{\"name\":\"targetResourceId\",\"value\":[\"\"]}]]}]}}",
"imageText":"<svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" version=\"1.1\" viewbox=\"\" width=\"100%\" height=\"100%\"><defs><marker viewBox=\"0 0 20 20\" markerWidth=\"10\" markerHeight=\"10\" orient=\"auto\" refX=\"11\" refY=\"10\" id=\"markerSjdype4kmbu\"><path d=\"M 1 5 L 11 10 L 1 15 Z\" style=\"stroke-width: 1; stroke-linecap: round; stroke-dasharray: 10000, 1;\" fill=\"#000000\"></path></marker><marker viewBox=\"0 0 20 20\" markerWidth=\"20\" markerHeight=\"20\" orient=\"auto\" refX=\"6\" refY=\"6\" id=\"markerSjdype4kmbw\"><circle cx=\"6\" cy=\"6\" r=\"3.5\" style=\"stroke-width: 1; stroke-linecap: round; stroke-dasharray: 10000, 1;\" fill=\"#ffffff\" stroke=\"#000000\"></circle></marker><marker viewBox=\"0 0 20 20\" markerWidth=\"20\" markerHeight=\"20\" orient=\"auto\" refX=\"8.5\" refY=\"5\" id=\"markerSjdype4kmby\"><path d=\"m 1 5 l 0 -3 l 7 3 l -7 3 z\" style=\"stroke-width: 1; stroke-linecap: butt; stroke-dasharray: 10000, 1;\" fill=\"#ffffff\" stroke=\"#000000\"></path></marker><marker viewBox=\"0 0 20 20\" markerWidth=\"10\" markerHeight=\"10\" orient=\"auto\" refX=\"11\" refY=\"10\" id=\"markerSjdype4kmc0\"><path d=\"M 1 5 L 11 10 L 1 15\" style=\"stroke-width: 1; stroke-linecap: round; stroke-dasharray: 10000, 1;\" fill=\"#ffffff\" stroke=\"#000000\"></path></marker><marker viewBox=\"0 0 20 20\" markerWidth=\"10\" markerHeight=\"10\" orient=\"auto\" refX=\"-1\" refY=\"10\" id=\"markerSjdype4kmc2\"><path d=\"M 0 10 L 8 6 L 16 10 L 8 14 Z\" style=\"stroke-width: 1; stroke-linecap: round; stroke-dasharray: 10000, 1;\" fill=\"#ffffff\" stroke=\"#000000\"></path></marker><marker viewBox=\"0 0 20 20\" markerWidth=\"10\" markerHeight=\"10\" orient=\"auto\" refX=\"-5\" refY=\"10\" id=\"markerSjdype4kmc4\"><path d=\"M 1 4 L 5 16\" style=\"stroke-width: 1; stroke-linecap: round; stroke-dasharray: 10000, 1;\" fill=\"#000000\" stroke=\"#000000\"></path></marker></defs><g class=\"djs-group\" xmlns=\"http://www.w3.org/2000/svg\"><g class=\"djs-element djs-shape\" data-element-id=\"StartEvent_1\" transform=\"matrix(1,0,0,1,50,162)\" style=\"display: block;\"><rect fill=\"none\" class=\"djs-outline\" x=\"-6\" y=\"-6\" width=\"48\" height=\"48\"></rect><g class=\"djs-visual\"><circle cx=\"18\" cy=\"18\" r=\"18\" style=\"stroke-width: 2;\" stroke=\"#000000\" fill=\"#ffffff\"></circle></g><rect x=\"0\" y=\"0\" width=\"36\" height=\"36\" style=\"stroke-opacity: 0; stroke-width: 15;\" fill=\"none\" stroke=\"#ffffff\" class=\"djs-hit\"></rect></g></g><g class=\"djs-group\" xmlns=\"http://www.w3.org/2000/svg\"><g class=\"djs-element djs-shape\" data-element-id=\"StartEvent_1_label\" transform=\"matrix(1,0,0,1,23,198)\" style=\"display: none;\"><rect fill=\"none\" class=\"djs-outline\" x=\"-6\" y=\"-6\" width=\"102\" height=\"32\"></rect><g class=\"djs-visual\"><text style=\"font-family: Arial,sans-serif; font-size: 11px;\" class=\" djs-label\"><tspan x=\"45\" y=\"0\"></tspan></text></g><rect x=\"0\" y=\"0\" width=\"90\" height=\"20\" style=\"stroke-opacity: 0; stroke-width: 15;\" fill=\"none\" stroke=\"#ffffff\" class=\"djs-hit\"></rect></g></g><g class=\"djs-group\" xmlns=\"http://www.w3.org/2000/svg\"><g class=\"djs-element djs-shape\" data-element-id=\"Holmes_0bsv00m\" transform=\"matrix(1,0,0,1,438,140)\" style=\"display: block;\"><rect fill=\"none\" class=\"djs-outline\" x=\"-6\" y=\"-6\" width=\"132\" height=\"92\"></rect><g class=\"djs-visual\"><rect x=\"0\" y=\"0\" width=\"120\" height=\"80\" rx=\"0\" ry=\"0\" style=\"stroke-width: 2;\" stroke=\"#000000\" fill=\"#ffffff\"></rect><circle cx=\"15\" cy=\"15\" r=\"10\" style=\"stroke-width: 1;\" stroke=\"#000000\" fill=\"#ffffff\"></circle><text style=\"font-family: Arial,sans-serif; font-size: 12px;\"><tspan x=\"11\" y=\"20\">H</tspan></text><text style=\"font-family: Arial,sans-serif; font-size: 12px;\" class=\" djs-label\"><tspan x=\"39\" y=\"43.5\">Holmes</tspan></text></g><rect x=\"0\" y=\"0\" width=\"120\" height=\"80\" style=\"stroke-opacity: 0; stroke-width: 15;\" fill=\"none\" stroke=\"#ffffff\" class=\"djs-hit\"></rect></g></g><g class=\"djs-group\" xmlns=\"http://www.w3.org/2000/svg\"><g class=\"djs-element djs-shape\" data-element-id=\"VesCollector_1ljyqg8\" transform=\"matrix(1,0,0,1,213,140)\" style=\"display: block;\"><rect fill=\"none\" class=\"djs-outline\" x=\"-6\" y=\"-6\" width=\"132\" height=\"92\"></rect><g class=\"djs-visual\"><rect x=\"0\" y=\"0\" width=\"120\" height=\"80\" rx=\"0\" ry=\"0\" style=\"stroke-width: 2;\" stroke=\"#000000\" fill=\"#ffffff\"></rect><polyline points=\"120,80 120,20 \" style=\"stroke-width: 2;\" fill=\"none\" stroke=\"#000000\"></polyline><polyline points=\"20,0 20,80 \" style=\"stroke-width: 2;\" fill=\"none\" stroke=\"#000000\"></polyline><text style=\"font-family: Arial,sans-serif; font-size: 12px;\"><tspan x=\"5\" y=\"14\">V</tspan></text><text style=\"font-family: Arial,sans-serif; font-size: 12px;\"><tspan x=\"5\" y=\"26\">E</tspan></text><text style=\"font-family: Arial,sans-serif; font-size: 12px;\"><tspan x=\"5\" y=\"38\">S</tspan></text><text style=\"font-family: Arial,sans-serif; font-size: 12px;\" class=\" djs-label\"><tspan x=\"25.5\" y=\"43.5\">VesCollector</tspan></text></g><rect x=\"0\" y=\"0\" width=\"120\" height=\"80\" style=\"stroke-opacity: 0; stroke-width: 15;\" fill=\"none\" stroke=\"#ffffff\" class=\"djs-hit\"></rect></g></g><g class=\"djs-group\" xmlns=\"http://www.w3.org/2000/svg\"><g class=\"djs-element djs-shape\" data-element-id=\"Policy_114xo8j\" transform=\"matrix(1,0,0,1,678,140)\" style=\"display: block;\"><rect fill=\"none\" class=\"djs-outline\" x=\"-6\" y=\"-6\" width=\"132\" height=\"92\"></rect><g class=\"djs-visual\"><rect x=\"0\" y=\"0\" width=\"120\" height=\"80\" rx=\"0\" ry=\"0\" style=\"stroke-width: 2;\" stroke=\"#000000\" fill=\"#ffffff\"></rect><polyline points=\"0,40 60,0 \" style=\"stroke-width: 2;\" fill=\"none\" stroke=\"#000000\"></polyline><text style=\"font-family: Arial,sans-serif; font-size: 12px;\" class=\" djs-label\"><tspan x=\"43.5\" y=\"43.5\">Policy</tspan></text></g><rect x=\"0\" y=\"0\" width=\"120\" height=\"80\" style=\"stroke-opacity: 0; stroke-width: 15;\" fill=\"none\" stroke=\"#ffffff\" class=\"djs-hit\"></rect></g></g><g class=\"djs-group\" xmlns=\"http://www.w3.org/2000/svg\"><g class=\"djs-element djs-shape selected\" data-element-id=\"EndEvent_0b4m6bk\" transform=\"matrix(1,0,0,1,901,162)\" style=\"display: block;\"><rect fill=\"none\" class=\"djs-outline\" x=\"-6\" y=\"-6\" width=\"48\" height=\"48\"></rect><g class=\"djs-visual\"><circle cx=\"18\" cy=\"18\" r=\"18\" style=\"stroke-width: 4;\" stroke=\"#000000\" fill=\"#ffffff\"></circle></g><rect x=\"0\" y=\"0\" width=\"36\" height=\"36\" style=\"stroke-opacity: 0; stroke-width: 15;\" fill=\"none\" stroke=\"#ffffff\" class=\"djs-hit\"></rect><g class=\" djs-resizer djs-resizer-nw\" transform=\"matrix(1,0,0,1,0,0)\"><rect x=\"-7\" y=\"-7\" width=\"5\" height=\"5\" class=\" djs-resizer-visual\"></rect><rect x=\"-7\" y=\"-7\" width=\"20\" height=\"20\" class=\" djs-resizer-hit\"></rect></g><g class=\" djs-resizer djs-resizer-ne\" transform=\"matrix(0,1,-1,0,36,0)\"><rect x=\"-7\" y=\"-7\" width=\"5\" height=\"5\" class=\" djs-resizer-visual\"></rect><rect x=\"-7\" y=\"-7\" width=\"20\" height=\"20\" class=\" djs-resizer-hit\"></rect></g><g class=\" djs-resizer djs-resizer-se\" transform=\"matrix(-1,0,0,-1,36,36)\"><rect x=\"-7\" y=\"-7\" width=\"5\" height=\"5\" class=\" djs-resizer-visual\"></rect><rect x=\"-7\" y=\"-7\" width=\"20\" height=\"20\" class=\" djs-resizer-hit\"></rect></g><g class=\" djs-resizer djs-resizer-sw\" transform=\"matrix(0,-1,1,0,0,36)\"><rect x=\"-7\" y=\"-7\" width=\"5\" height=\"5\" class=\" djs-resizer-visual\"></rect><rect x=\"-7\" y=\"-7\" width=\"20\" height=\"20\" class=\" djs-resizer-hit\"></rect></g></g></g><g class=\"djs-group\" xmlns=\"http://www.w3.org/2000/svg\"><g class=\"djs-element djs-shape\" data-element-id=\"EndEvent_0b4m6bk_label\" transform=\"matrix(1,0,0,1,874,198)\" style=\"display: none;\"><rect fill=\"none\" class=\"djs-outline\" x=\"-6\" y=\"-6\" width=\"102\" height=\"32\"></rect><g class=\"djs-visual\"><text style=\"font-family: Arial,sans-serif; font-size: 11px;\" class=\" djs-label\"><tspan x=\"45\" y=\"0\"></tspan></text></g><rect x=\"0\" y=\"0\" width=\"90\" height=\"20\" style=\"stroke-opacity: 0; stroke-width: 15;\" fill=\"none\" stroke=\"#ffffff\" class=\"djs-hit\"></rect></g></g><g class=\"djs-group\" xmlns=\"http://www.w3.org/2000/svg\"><g class=\"djs-element djs-connection\" data-element-id=\"SequenceFlow_1c9hzec\" style=\"display: block;\"><rect fill=\"none\" class=\"djs-outline\" x=\"80\" y=\"174\" width=\"139\" height=\"12\"></rect><g class=\"djs-visual\"><path d=\"m 86,180L213,180 \" style=\"stroke-width: 2; stroke-linejoin: round; marker-end: url(&quot;#markerSjdype4kmbu&quot;);\" fill=\"none\" stroke=\"#000000\"></path></g><polyline points=\"86,180 213,180 \" style=\"stroke-opacity: 0; stroke-width: 15;\" fill=\"none\" stroke=\"#ffffff\" class=\"djs-hit\"></polyline></g></g><g class=\"djs-group\" xmlns=\"http://www.w3.org/2000/svg\"><g class=\"djs-element djs-shape\" data-element-id=\"SequenceFlow_1c9hzec_label\" transform=\"matrix(1,0,0,1,104.5,170)\" style=\"display: none;\"><rect fill=\"none\" class=\"djs-outline\" x=\"-6\" y=\"-6\" width=\"102\" height=\"32\"></rect><g class=\"djs-visual\"><text style=\"font-family: Arial,sans-serif; font-size: 11px;\" class=\" djs-label\"><tspan x=\"45\" y=\"0\"></tspan></text></g><rect x=\"0\" y=\"0\" width=\"90\" height=\"20\" style=\"stroke-opacity: 0; stroke-width: 15;\" fill=\"none\" stroke=\"#ffffff\" class=\"djs-hit\"></rect></g></g><g class=\"djs-group\" xmlns=\"http://www.w3.org/2000/svg\"><g class=\"djs-element djs-connection\" data-element-id=\"SequenceFlow_1ig3gix\" style=\"display: block;\"><rect fill=\"none\" class=\"djs-outline\" x=\"327\" y=\"174\" width=\"117\" height=\"12\"></rect><g class=\"djs-visual\"><path d=\"m 333,180L438,180 \" style=\"stroke-width: 2; stroke-linejoin: round; marker-end: url(&quot;#markerSjdype4kmbu&quot;);\" fill=\"none\" stroke=\"#000000\"></path></g><polyline points=\"333,180 438,180 \" style=\"stroke-opacity: 0; stroke-width: 15;\" fill=\"none\" stroke=\"#ffffff\" class=\"djs-hit\"></polyline></g></g><g class=\"djs-group\" xmlns=\"http://www.w3.org/2000/svg\"><g class=\"djs-element djs-shape\" data-element-id=\"SequenceFlow_1ig3gix_label\" transform=\"matrix(1,0,0,1,340.5,170)\" style=\"display: none;\"><rect fill=\"none\" class=\"djs-outline\" x=\"-6\" y=\"-6\" width=\"102\" height=\"32\"></rect><g class=\"djs-visual\"><text style=\"font-family: Arial,sans-serif; font-size: 11px;\" class=\" djs-label\"><tspan x=\"45\" y=\"0\"></tspan></text></g><rect x=\"0\" y=\"0\" width=\"90\" height=\"20\" style=\"stroke-opacity: 0; stroke-width: 15;\" fill=\"none\" stroke=\"#ffffff\" class=\"djs-hit\"></rect></g></g><g class=\"djs-group\" xmlns=\"http://www.w3.org/2000/svg\"><g class=\"djs-element djs-connection\" data-element-id=\"SequenceFlow_0zwbn2r\" style=\"display: block;\"><rect fill=\"none\" class=\"djs-outline\" x=\"552\" y=\"174\" width=\"132\" height=\"12\"></rect><g class=\"djs-visual\"><path d=\"m 558,180L678,180 \" style=\"stroke-width: 2; stroke-linejoin: round; marker-end: url(&quot;#markerSjdype4kmbu&quot;);\" fill=\"none\" stroke=\"#000000\"></path></g><polyline points=\"558,180 678,180 \" style=\"stroke-opacity: 0; stroke-width: 15;\" fill=\"none\" stroke=\"#ffffff\" class=\"djs-hit\"></polyline></g></g><g class=\"djs-group\" xmlns=\"http://www.w3.org/2000/svg\"><g class=\"djs-element djs-shape\" data-element-id=\"SequenceFlow_0zwbn2r_label\" transform=\"matrix(1,0,0,1,573,170)\" style=\"display: none;\"><rect fill=\"none\" class=\"djs-outline\" x=\"-6\" y=\"-6\" width=\"102\" height=\"32\"></rect><g class=\"djs-visual\"><text style=\"font-family: Arial,sans-serif; font-size: 11px;\" class=\" djs-label\"><tspan x=\"45\" y=\"0\"></tspan></text></g><rect x=\"0\" y=\"0\" width=\"90\" height=\"20\" style=\"stroke-opacity: 0; stroke-width: 15;\" fill=\"none\" stroke=\"#ffffff\" class=\"djs-hit\"></rect></g></g><g class=\"djs-group\" xmlns=\"http://www.w3.org/2000/svg\"><g class=\"djs-element djs-connection\" data-element-id=\"SequenceFlow_0ox6r95\" style=\"display: block;\"><rect fill=\"none\" class=\"djs-outline\" x=\"792\" y=\"174\" width=\"115\" height=\"12\"></rect><g class=\"djs-visual\"><path d=\"m 798,180L901,180 \" style=\"stroke-width: 2; stroke-linejoin: round; marker-end: url(&quot;#markerSjdype4kmbu&quot;);\" fill=\"none\" stroke=\"#000000\"></path></g><polyline points=\"798,180 901,180 \" style=\"stroke-opacity: 0; stroke-width: 15;\" fill=\"none\" stroke=\"#ffffff\" class=\"djs-hit\"></polyline></g></g><g class=\"djs-group\" xmlns=\"http://www.w3.org/2000/svg\"><g class=\"djs-element djs-shape\" data-element-id=\"SequenceFlow_0ox6r95_label\" transform=\"matrix(1,0,0,1,804.5,170)\" style=\"display: none;\"><rect fill=\"none\" class=\"djs-outline\" x=\"-6\" y=\"-6\" width=\"102\" height=\"32\"></rect><g class=\"djs-visual\"><text style=\"font-family: Arial,sans-serif; font-size: 11px;\" class=\" djs-label\"><tspan x=\"45\" y=\"0\"></tspan></text></g><rect x=\"0\" y=\"0\" width=\"90\" height=\"20\" style=\"stroke-opacity: 0; stroke-width: 15;\" fill=\"none\" stroke=\"#ffffff\" class=\"djs-hit\"></rect></g></g></svg>",
- "templateName":"templateHolmes2"
+ "templateName":"templateHolmes2",
+ "typeId":null,
+ "deploymentId":null
} \ No newline at end of file
diff --git a/test/csit/tests/clamp/APIs/data/createClTCA1.json b/test/csit/tests/clamp/APIs/data/createClTCA1.json
index d72a82ee3..509288b52 100644
--- a/test/csit/tests/clamp/APIs/data/createClTCA1.json
+++ b/test/csit/tests/clamp/APIs/data/createClTCA1.json
@@ -2,7 +2,9 @@
"name":"ClTCA1",
"controlNamePrefix":"ClosedLoop-",
"bpmnText":"",
- "propText":"{\"global\":[{\"name\":\"service\",\"value\":[\"4cc5b45a-1f63-4194-8100-cd8e14248c92\"]},{\"name\":\"vf\",\"value\":[\"023a3f0d-1161-45ff-b4cf-8918a8ccf3ad\"]},{\"name\":\"actionSet\",\"value\":[\"vnfRecipe\"]},{\"name\":\"location\",\"value\":[\"DC1\",\"DC2\"]}],\"TCA_1d13unw\":{\"TCA1\":[{\"name\":\"tname\",\"value\":\"TCA1\"},{\"name\":\"tuuid\",\"value\":\"ce57408b-93ba-td02-1622-165abd6c5ff5\"},{\"name\":\"tcaPol\",\"value\":\"Policy3\"},{\"name\":\"eventName\",\"value\":\"vLoadBalancer\"},{\"name\":\"controlLoopSchemaType\",\"value\":\"VNF\"},{\"name\":\"tcaPolId\",\"value\":\"0\"},{\"serviceConfigurations\":[[\"$.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedDiscardedPacketsDelta\",\"GREATER\",\"5\",\"ONSET\"]]}]},\"Policy_12lup3h\":{\"Policy3\":[{\"name\":\"pname\",\"value\":\"Policy3\"},{\"name\":\"pid\",\"value\":\"0\"},{\"name\":\"timeout\",\"value\":\"345\"},{\"policyConfigurations\":[[{\"name\":\"recipe\",\"value\":[\"restart\"]},{\"name\":\"maxRetries\",\"value\":[\"4\"]},{\"name\":\"retryTimeLimit\",\"value\":[\"200\"]},{\"name\":\"_id\",\"value\":[\"42adC3e\"]},{\"name\":\"parentPolicy\",\"value\":[\"\"]},{\"name\":\"targetResourceId\",\"value\":[\"\"]}]]}]}}",
+ "propText":"{\"global\":[{\"name\":\"service\",\"value\":[\"4cc5b45a-1f63-4194-8100-cd8e14248c92\"]},{\"name\":\"vf\",\"value\":[\"023a3f0d-1161-45ff-b4cf-8918a8ccf3ad\"]},{\"name\":\"actionSet\",\"value\":[\"enbRecipe\"]},{\"name\":\"location\",\"value\":[\"DC1\",\"DC2\"]}],\"TCA_1d13unw\":{\"TCA1\":[{\"name\":\"tname\",\"value\":\"TCA1\"},{\"name\":\"tuuid\",\"value\":\"ce57408b-93ba-td02-1622-165abd6c5ff5\"},{\"name\":\"tcaPol\",\"value\":\"Policy3\"},{\"name\":\"eventName\",\"value\":\"vLoadBalancer\"},{\"name\":\"controlLoopSchemaType\",\"value\":\"VNF\"},{\"name\":\"tcaPolId\",\"value\":\"0\"},{\"serviceConfigurations\":[[\"$.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedDiscardedPacketsDelta\",\"GREATER\",\"5\",\"ONSET\"]]}]},\"Policy_12lup3h\":{\"Policy3\":[{\"name\":\"pname\",\"value\":\"Policy3\"},{\"name\":\"pid\",\"value\":\"0\"},{\"name\":\"timeout\",\"value\":\"345\"},{\"policyConfigurations\":[[{\"name\":\"recipe\",\"value\":[\"reset\"]},{\"name\":\"maxRetries\",\"value\":[\"3\"]},{\"name\":\"retryTimeLimit\",\"value\":[\"200\"]},{\"name\":\"_id\",\"value\":[\"lecrG3I\"]},{\"name\":\"parentPolicy\",\"value\":[\"\"]},{\"name\":\"targetResourceId\",\"value\":[\"\"]}]]}]}}",
"imageText":"<svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" version=\"1.1\" viewbox=\"\" width=\"100%\" height=\"100%\"><defs><marker viewBox=\"0 0 20 20\" markerWidth=\"10\" markerHeight=\"10\" orient=\"auto\" refX=\"11\" refY=\"10\" id=\"markerSjdype4kmnw\"><path d=\"M 1 5 L 11 10 L 1 15 Z\" style=\"stroke-width: 1; stroke-linecap: round; stroke-dasharray: 10000, 1;\" fill=\"#000000\"></path></marker><marker viewBox=\"0 0 20 20\" markerWidth=\"20\" markerHeight=\"20\" orient=\"auto\" refX=\"6\" refY=\"6\" id=\"markerSjdype4kmny\"><circle cx=\"6\" cy=\"6\" r=\"3.5\" style=\"stroke-width: 1; stroke-linecap: round; stroke-dasharray: 10000, 1;\" fill=\"#ffffff\" stroke=\"#000000\"></circle></marker><marker viewBox=\"0 0 20 20\" markerWidth=\"20\" markerHeight=\"20\" orient=\"auto\" refX=\"8.5\" refY=\"5\" id=\"markerSjdype4kmo0\"><path d=\"m 1 5 l 0 -3 l 7 3 l -7 3 z\" style=\"stroke-width: 1; stroke-linecap: butt; stroke-dasharray: 10000, 1;\" fill=\"#ffffff\" stroke=\"#000000\"></path></marker><marker viewBox=\"0 0 20 20\" markerWidth=\"10\" markerHeight=\"10\" orient=\"auto\" refX=\"11\" refY=\"10\" id=\"markerSjdype4kmo2\"><path d=\"M 1 5 L 11 10 L 1 15\" style=\"stroke-width: 1; stroke-linecap: round; stroke-dasharray: 10000, 1;\" fill=\"#ffffff\" stroke=\"#000000\"></path></marker><marker viewBox=\"0 0 20 20\" markerWidth=\"10\" markerHeight=\"10\" orient=\"auto\" refX=\"-1\" refY=\"10\" id=\"markerSjdype4kmo4\"><path d=\"M 0 10 L 8 6 L 16 10 L 8 14 Z\" style=\"stroke-width: 1; stroke-linecap: round; stroke-dasharray: 10000, 1;\" fill=\"#ffffff\" stroke=\"#000000\"></path></marker><marker viewBox=\"0 0 20 20\" markerWidth=\"10\" markerHeight=\"10\" orient=\"auto\" refX=\"-5\" refY=\"10\" id=\"markerSjdype4kmo6\"><path d=\"M 1 4 L 5 16\" style=\"stroke-width: 1; stroke-linecap: round; stroke-dasharray: 10000, 1;\" fill=\"#000000\" stroke=\"#000000\"></path></marker></defs><g class=\"djs-group\" xmlns=\"http://www.w3.org/2000/svg\"><g class=\"djs-element djs-shape\" data-element-id=\"StartEvent_1\" transform=\"matrix(1,0,0,1,50,162)\" style=\"display: block;\"><rect fill=\"none\" class=\"djs-outline\" x=\"-6\" y=\"-6\" width=\"48\" height=\"48\"></rect><g class=\"djs-visual\"><circle cx=\"18\" cy=\"18\" r=\"18\" style=\"stroke-width: 2;\" stroke=\"#000000\" fill=\"#ffffff\"></circle></g><rect x=\"0\" y=\"0\" width=\"36\" height=\"36\" style=\"stroke-opacity: 0; stroke-width: 15;\" fill=\"none\" stroke=\"#ffffff\" class=\"djs-hit\"></rect></g></g><g class=\"djs-group\" xmlns=\"http://www.w3.org/2000/svg\"><g class=\"djs-element djs-shape\" data-element-id=\"StartEvent_1_label\" transform=\"matrix(1,0,0,1,23,198)\" style=\"display: none;\"><rect fill=\"none\" class=\"djs-outline\" x=\"-6\" y=\"-6\" width=\"102\" height=\"32\"></rect><g class=\"djs-visual\"><text style=\"font-family: Arial,sans-serif; font-size: 11px;\" class=\" djs-label\"><tspan x=\"45\" y=\"0\"></tspan></text></g><rect x=\"0\" y=\"0\" width=\"90\" height=\"20\" style=\"stroke-opacity: 0; stroke-width: 15;\" fill=\"none\" stroke=\"#ffffff\" class=\"djs-hit\"></rect></g></g><g class=\"djs-group\" xmlns=\"http://www.w3.org/2000/svg\"><g class=\"djs-element djs-shape\" data-element-id=\"VesCollector_1g9cmz0\" transform=\"matrix(1,0,0,1,207,140)\" style=\"display: block;\"><rect fill=\"none\" class=\"djs-outline\" x=\"-6\" y=\"-6\" width=\"132\" height=\"92\"></rect><g class=\"djs-visual\"><rect x=\"0\" y=\"0\" width=\"120\" height=\"80\" rx=\"0\" ry=\"0\" style=\"stroke-width: 2;\" stroke=\"#000000\" fill=\"#ffffff\"></rect><polyline points=\"120,80 120,20 \" style=\"stroke-width: 2;\" fill=\"none\" stroke=\"#000000\"></polyline><polyline points=\"20,0 20,80 \" style=\"stroke-width: 2;\" fill=\"none\" stroke=\"#000000\"></polyline><text style=\"font-family: Arial,sans-serif; font-size: 12px;\"><tspan x=\"5\" y=\"14\">V</tspan></text><text style=\"font-family: Arial,sans-serif; font-size: 12px;\"><tspan x=\"5\" y=\"26\">E</tspan></text><text style=\"font-family: Arial,sans-serif; font-size: 12px;\"><tspan x=\"5\" y=\"38\">S</tspan></text><text style=\"font-family: Arial,sans-serif; font-size: 12px;\" class=\" djs-label\"><tspan x=\"25.5\" y=\"43.5\">VesCollector</tspan></text></g><rect x=\"0\" y=\"0\" width=\"120\" height=\"80\" style=\"stroke-opacity: 0; stroke-width: 15;\" fill=\"none\" stroke=\"#ffffff\" class=\"djs-hit\"></rect></g></g><g class=\"djs-group\" xmlns=\"http://www.w3.org/2000/svg\"><g class=\"djs-element djs-shape\" data-element-id=\"TCA_1d13unw\" transform=\"matrix(1,0,0,1,453,140)\" style=\"display: block;\"><rect fill=\"none\" class=\"djs-outline\" x=\"-6\" y=\"-6\" width=\"132\" height=\"92\"></rect><g class=\"djs-visual\"><rect x=\"0\" y=\"0\" width=\"120\" height=\"80\" rx=\"0\" ry=\"0\" style=\"stroke-width: 2;\" stroke=\"#000000\" fill=\"#ffffff\"></rect><polyline points=\"0,60 120,60 \" style=\"stroke-width: 2;\" fill=\"none\" stroke=\"#000000\"></polyline><text style=\"font-family: Arial,sans-serif; font-size: 12px;\" class=\" djs-label\"><tspan x=\"48\" y=\"43.5\">TCA</tspan></text></g><rect x=\"0\" y=\"0\" width=\"120\" height=\"80\" style=\"stroke-opacity: 0; stroke-width: 15;\" fill=\"none\" stroke=\"#ffffff\" class=\"djs-hit\"></rect></g></g><g class=\"djs-group\" xmlns=\"http://www.w3.org/2000/svg\"><g class=\"djs-element djs-shape\" data-element-id=\"Policy_12lup3h\" transform=\"matrix(1,0,0,1,687,140)\" style=\"display: block;\"><rect fill=\"none\" class=\"djs-outline\" x=\"-6\" y=\"-6\" width=\"132\" height=\"92\"></rect><g class=\"djs-visual\"><rect x=\"0\" y=\"0\" width=\"120\" height=\"80\" rx=\"0\" ry=\"0\" style=\"stroke-width: 2;\" stroke=\"#000000\" fill=\"#ffffff\"></rect><polyline points=\"0,40 60,0 \" style=\"stroke-width: 2;\" fill=\"none\" stroke=\"#000000\"></polyline><text style=\"font-family: Arial,sans-serif; font-size: 12px;\" class=\" djs-label\"><tspan x=\"43.5\" y=\"43.5\">Policy</tspan></text></g><rect x=\"0\" y=\"0\" width=\"120\" height=\"80\" style=\"stroke-opacity: 0; stroke-width: 15;\" fill=\"none\" stroke=\"#ffffff\" class=\"djs-hit\"></rect></g></g><g class=\"djs-group\" xmlns=\"http://www.w3.org/2000/svg\"><g class=\"djs-element djs-shape selected\" data-element-id=\"EndEvent_16kg9fx\" transform=\"matrix(1,0,0,1,925,162)\" style=\"display: block;\"><rect fill=\"none\" class=\"djs-outline\" x=\"-6\" y=\"-6\" width=\"48\" height=\"48\"></rect><g class=\"djs-visual\"><circle cx=\"18\" cy=\"18\" r=\"18\" style=\"stroke-width: 4;\" stroke=\"#000000\" fill=\"#ffffff\"></circle></g><rect x=\"0\" y=\"0\" width=\"36\" height=\"36\" style=\"stroke-opacity: 0; stroke-width: 15;\" fill=\"none\" stroke=\"#ffffff\" class=\"djs-hit\"></rect><g class=\" djs-resizer djs-resizer-nw\" transform=\"matrix(1,0,0,1,0,0)\"><rect x=\"-7\" y=\"-7\" width=\"5\" height=\"5\" class=\" djs-resizer-visual\"></rect><rect x=\"-7\" y=\"-7\" width=\"20\" height=\"20\" class=\" djs-resizer-hit\"></rect></g><g class=\" djs-resizer djs-resizer-ne\" transform=\"matrix(0,1,-1,0,36,0)\"><rect x=\"-7\" y=\"-7\" width=\"5\" height=\"5\" class=\" djs-resizer-visual\"></rect><rect x=\"-7\" y=\"-7\" width=\"20\" height=\"20\" class=\" djs-resizer-hit\"></rect></g><g class=\" djs-resizer djs-resizer-se\" transform=\"matrix(-1,0,0,-1,36,36)\"><rect x=\"-7\" y=\"-7\" width=\"5\" height=\"5\" class=\" djs-resizer-visual\"></rect><rect x=\"-7\" y=\"-7\" width=\"20\" height=\"20\" class=\" djs-resizer-hit\"></rect></g><g class=\" djs-resizer djs-resizer-sw\" transform=\"matrix(0,-1,1,0,0,36)\"><rect x=\"-7\" y=\"-7\" width=\"5\" height=\"5\" class=\" djs-resizer-visual\"></rect><rect x=\"-7\" y=\"-7\" width=\"20\" height=\"20\" class=\" djs-resizer-hit\"></rect></g></g></g><g class=\"djs-group\" xmlns=\"http://www.w3.org/2000/svg\"><g class=\"djs-element djs-shape\" data-element-id=\"EndEvent_16kg9fx_label\" transform=\"matrix(1,0,0,1,898,198)\" style=\"display: none;\"><rect fill=\"none\" class=\"djs-outline\" x=\"-6\" y=\"-6\" width=\"102\" height=\"32\"></rect><g class=\"djs-visual\"><text style=\"font-family: Arial,sans-serif; font-size: 11px;\" class=\" djs-label\"><tspan x=\"45\" y=\"0\"></tspan></text></g><rect x=\"0\" y=\"0\" width=\"90\" height=\"20\" style=\"stroke-opacity: 0; stroke-width: 15;\" fill=\"none\" stroke=\"#ffffff\" class=\"djs-hit\"></rect></g></g><g class=\"djs-group\" xmlns=\"http://www.w3.org/2000/svg\"><g class=\"djs-element djs-connection\" data-element-id=\"SequenceFlow_1ahk7jg\" style=\"display: block;\"><rect fill=\"none\" class=\"djs-outline\" x=\"80\" y=\"174\" width=\"133\" height=\"12\"></rect><g class=\"djs-visual\"><path d=\"m 86,180L207,180 \" style=\"stroke-width: 2; stroke-linejoin: round; marker-end: url(&quot;#markerSjdype4kmnw&quot;);\" fill=\"none\" stroke=\"#000000\"></path></g><polyline points=\"86,180 207,180 \" style=\"stroke-opacity: 0; stroke-width: 15;\" fill=\"none\" stroke=\"#ffffff\" class=\"djs-hit\"></polyline></g></g><g class=\"djs-group\" xmlns=\"http://www.w3.org/2000/svg\"><g class=\"djs-element djs-shape\" data-element-id=\"SequenceFlow_1ahk7jg_label\" transform=\"matrix(1,0,0,1,101.5,170)\" style=\"display: none;\"><rect fill=\"none\" class=\"djs-outline\" x=\"-6\" y=\"-6\" width=\"102\" height=\"32\"></rect><g class=\"djs-visual\"><text style=\"font-family: Arial,sans-serif; font-size: 11px;\" class=\" djs-label\"><tspan x=\"45\" y=\"0\"></tspan></text></g><rect x=\"0\" y=\"0\" width=\"90\" height=\"20\" style=\"stroke-opacity: 0; stroke-width: 15;\" fill=\"none\" stroke=\"#ffffff\" class=\"djs-hit\"></rect></g></g><g class=\"djs-group\" xmlns=\"http://www.w3.org/2000/svg\"><g class=\"djs-element djs-connection\" data-element-id=\"SequenceFlow_18ahat1\" style=\"display: block;\"><rect fill=\"none\" class=\"djs-outline\" x=\"321\" y=\"174\" width=\"138\" height=\"12\"></rect><g class=\"djs-visual\"><path d=\"m 327,180L453,180 \" style=\"stroke-width: 2; stroke-linejoin: round; marker-end: url(&quot;#markerSjdype4kmnw&quot;);\" fill=\"none\" stroke=\"#000000\"></path></g><polyline points=\"327,180 453,180 \" style=\"stroke-opacity: 0; stroke-width: 15;\" fill=\"none\" stroke=\"#ffffff\" class=\"djs-hit\"></polyline></g></g><g class=\"djs-group\" xmlns=\"http://www.w3.org/2000/svg\"><g class=\"djs-element djs-shape\" data-element-id=\"SequenceFlow_18ahat1_label\" transform=\"matrix(1,0,0,1,345,170)\" style=\"display: none;\"><rect fill=\"none\" class=\"djs-outline\" x=\"-6\" y=\"-6\" width=\"102\" height=\"32\"></rect><g class=\"djs-visual\"><text style=\"font-family: Arial,sans-serif; font-size: 11px;\" class=\" djs-label\"><tspan x=\"45\" y=\"0\"></tspan></text></g><rect x=\"0\" y=\"0\" width=\"90\" height=\"20\" style=\"stroke-opacity: 0; stroke-width: 15;\" fill=\"none\" stroke=\"#ffffff\" class=\"djs-hit\"></rect></g></g><g class=\"djs-group\" xmlns=\"http://www.w3.org/2000/svg\"><g class=\"djs-element djs-connection\" data-element-id=\"SequenceFlow_1mo9gxb\" style=\"display: block;\"><rect fill=\"none\" class=\"djs-outline\" x=\"567\" y=\"174\" width=\"126\" height=\"12\"></rect><g class=\"djs-visual\"><path d=\"m 573,180L687,180 \" style=\"stroke-width: 2; stroke-linejoin: round; marker-end: url(&quot;#markerSjdype4kmnw&quot;);\" fill=\"none\" stroke=\"#000000\"></path></g><polyline points=\"573,180 687,180 \" style=\"stroke-opacity: 0; stroke-width: 15;\" fill=\"none\" stroke=\"#ffffff\" class=\"djs-hit\"></polyline></g></g><g class=\"djs-group\" xmlns=\"http://www.w3.org/2000/svg\"><g class=\"djs-element djs-shape\" data-element-id=\"SequenceFlow_1mo9gxb_label\" transform=\"matrix(1,0,0,1,585,170)\" style=\"display: none;\"><rect fill=\"none\" class=\"djs-outline\" x=\"-6\" y=\"-6\" width=\"102\" height=\"32\"></rect><g class=\"djs-visual\"><text style=\"font-family: Arial,sans-serif; font-size: 11px;\" class=\" djs-label\"><tspan x=\"45\" y=\"0\"></tspan></text></g><rect x=\"0\" y=\"0\" width=\"90\" height=\"20\" style=\"stroke-opacity: 0; stroke-width: 15;\" fill=\"none\" stroke=\"#ffffff\" class=\"djs-hit\"></rect></g></g><g class=\"djs-group\" xmlns=\"http://www.w3.org/2000/svg\"><g class=\"djs-element djs-connection\" data-element-id=\"SequenceFlow_1dgtrrq\" style=\"display: block;\"><rect fill=\"none\" class=\"djs-outline\" x=\"801\" y=\"174\" width=\"130\" height=\"12\"></rect><g class=\"djs-visual\"><path d=\"m 807,180L925,180 \" style=\"stroke-width: 2; stroke-linejoin: round; marker-end: url(&quot;#markerSjdype4kmnw&quot;);\" fill=\"none\" stroke=\"#000000\"></path></g><polyline points=\"807,180 925,180 \" style=\"stroke-opacity: 0; stroke-width: 15;\" fill=\"none\" stroke=\"#ffffff\" class=\"djs-hit\"></polyline></g></g><g class=\"djs-group\" xmlns=\"http://www.w3.org/2000/svg\"><g class=\"djs-element djs-shape\" data-element-id=\"SequenceFlow_1dgtrrq_label\" transform=\"matrix(1,0,0,1,821,170)\" style=\"display: none;\"><rect fill=\"none\" class=\"djs-outline\" x=\"-6\" y=\"-6\" width=\"102\" height=\"32\"></rect><g class=\"djs-visual\"><text style=\"font-family: Arial,sans-serif; font-size: 11px;\" class=\" djs-label\"><tspan x=\"45\" y=\"0\"></tspan></text></g><rect x=\"0\" y=\"0\" width=\"90\" height=\"20\" style=\"stroke-opacity: 0; stroke-width: 15;\" fill=\"none\" stroke=\"#ffffff\" class=\"djs-hit\"></rect></g></g></svg>",
- "templateName":"templateTCA1"
+ "templateName":"templateTCA1",
+ "typeId":null,
+ "deploymentId":null
} \ No newline at end of file
diff --git a/test/csit/tests/clamp/APIs/data/createClTCA2.json b/test/csit/tests/clamp/APIs/data/createClTCA2.json
index 0e47d21b6..5754a8e2d 100644
--- a/test/csit/tests/clamp/APIs/data/createClTCA2.json
+++ b/test/csit/tests/clamp/APIs/data/createClTCA2.json
@@ -2,7 +2,9 @@
"name":"ClTCA2",
"controlNamePrefix":"ClosedLoop-",
"bpmnText":"",
- "propText":"{\"Policy_1r0guma\":{\"Policy4\":[{\"name\":\"pname\",\"value\":\"Policy4\"},{\"name\":\"pid\",\"value\":\"0\"},{\"name\":\"timeout\",\"value\":\"345\"},{\"policyConfigurations\":[[{\"name\":\"recipe\",\"value\":[\"migrate\"]},{\"name\":\"maxRetries\",\"value\":[\"10\"]},{\"name\":\"retryTimeLimit\",\"value\":[\"300\"]},{\"name\":\"_id\",\"value\":[\"m5YLmst\"]},{\"name\":\"parentPolicy\",\"value\":[\"\"]},{\"name\":\"targetResourceId\",\"value\":[\"\"]}]]}]},\"global\":[{\"name\":\"service\",\"value\":[\"4cc5b45a-1f63-4194-8100-cd8e14248c92\"]},{\"name\":\"vf\",\"value\":[\"023a3f0d-1161-45ff-b4cf-8918a8ccf3ad\"]},{\"name\":\"actionSet\",\"value\":[\"vnfRecipe\"]},{\"name\":\"location\",\"value\":[\"DC1\",\"DC2\",\"DC3\"]}],\"TCA_09syovq\":{\"TCA2\":[{\"name\":\"tname\",\"value\":\"TCA2\"},{\"name\":\"tuuid\",\"value\":\"3794f32d-8d95-tf61-444b-0b374cc173b2\"},{\"name\":\"tcaPol\",\"value\":\"Policy4\"},{\"name\":\"eventName\",\"value\":\"vLoadBalancer\"},{\"name\":\"controlLoopSchemaType\",\"value\":\"VM\"},{\"name\":\"tcaPolId\",\"value\":\"0\"},{\"serviceConfigurations\":[[\"$.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedDiscardedPacketsDelta\",\"GREATER\",\"15\",\"ONSET\",\"undefined\"]]}]}}",
+ "propText":"{\"Policy_1r0guma\":{\"Policy4\":[{\"name\":\"pname\",\"value\":\"Policy4\"},{\"name\":\"pid\",\"value\":\"0\"},{\"name\":\"timeout\",\"value\":\"345\"},{\"policyConfigurations\":[[{\"name\":\"recipe\",\"value\":[\"reset\"]},{\"name\":\"maxRetries\",\"value\":[\"3\"]},{\"name\":\"retryTimeLimit\",\"value\":[\"300\"]},{\"name\":\"_id\",\"value\":[\"JoL9ecT\"]},{\"name\":\"parentPolicy\",\"value\":[\"\"]},{\"name\":\"targetResourceId\",\"value\":[\"\"]}]]}]},\"global\":[{\"name\":\"service\",\"value\":[\"4cc5b45a-1f63-4194-8100-cd8e14248c92\"]},{\"name\":\"vf\",\"value\":[\"023a3f0d-1161-45ff-b4cf-8918a8ccf3ad\"]},{\"name\":\"actionSet\",\"value\":[\"enbRecipe\"]},{\"name\":\"location\",\"value\":[\"DC1\",\"DC2\",\"DC3\"]}],\"TCA_09syovq\":{\"TCA2\":[{\"name\":\"tname\",\"value\":\"TCA2\"},{\"name\":\"tuuid\",\"value\":\"3794f32d-8d95-tf61-444b-0b374cc173b2\"},{\"name\":\"tcaPol\",\"value\":\"Policy4\"},{\"name\":\"eventName\",\"value\":\"vLoadBalancer\"},{\"name\":\"controlLoopSchemaType\",\"value\":\"VM\"},{\"name\":\"tcaPolId\",\"value\":\"0\"},{\"serviceConfigurations\":[[\"$.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedDiscardedPacketsDelta\",\"GREATER\",\"15\",\"ONSET\",\"undefined\"]]}]}}",
"imageText":"<svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" version=\"1.1\" viewbox=\"\" width=\"100%\" height=\"100%\"><defs><marker viewBox=\"0 0 20 20\" markerWidth=\"10\" markerHeight=\"10\" orient=\"auto\" refX=\"11\" refY=\"10\" id=\"markerSjdype4kmyk\"><path d=\"M 1 5 L 11 10 L 1 15 Z\" style=\"stroke-width: 1; stroke-linecap: round; stroke-dasharray: 10000, 1;\" fill=\"#000000\"></path></marker><marker viewBox=\"0 0 20 20\" markerWidth=\"20\" markerHeight=\"20\" orient=\"auto\" refX=\"6\" refY=\"6\" id=\"markerSjdype4kmym\"><circle cx=\"6\" cy=\"6\" r=\"3.5\" style=\"stroke-width: 1; stroke-linecap: round; stroke-dasharray: 10000, 1;\" fill=\"#ffffff\" stroke=\"#000000\"></circle></marker><marker viewBox=\"0 0 20 20\" markerWidth=\"20\" markerHeight=\"20\" orient=\"auto\" refX=\"8.5\" refY=\"5\" id=\"markerSjdype4kmyo\"><path d=\"m 1 5 l 0 -3 l 7 3 l -7 3 z\" style=\"stroke-width: 1; stroke-linecap: butt; stroke-dasharray: 10000, 1;\" fill=\"#ffffff\" stroke=\"#000000\"></path></marker><marker viewBox=\"0 0 20 20\" markerWidth=\"10\" markerHeight=\"10\" orient=\"auto\" refX=\"11\" refY=\"10\" id=\"markerSjdype4kmyq\"><path d=\"M 1 5 L 11 10 L 1 15\" style=\"stroke-width: 1; stroke-linecap: round; stroke-dasharray: 10000, 1;\" fill=\"#ffffff\" stroke=\"#000000\"></path></marker><marker viewBox=\"0 0 20 20\" markerWidth=\"10\" markerHeight=\"10\" orient=\"auto\" refX=\"-1\" refY=\"10\" id=\"markerSjdype4kmys\"><path d=\"M 0 10 L 8 6 L 16 10 L 8 14 Z\" style=\"stroke-width: 1; stroke-linecap: round; stroke-dasharray: 10000, 1;\" fill=\"#ffffff\" stroke=\"#000000\"></path></marker><marker viewBox=\"0 0 20 20\" markerWidth=\"10\" markerHeight=\"10\" orient=\"auto\" refX=\"-5\" refY=\"10\" id=\"markerSjdype4kmyu\"><path d=\"M 1 4 L 5 16\" style=\"stroke-width: 1; stroke-linecap: round; stroke-dasharray: 10000, 1;\" fill=\"#000000\" stroke=\"#000000\"></path></marker></defs><g class=\"djs-group\" xmlns=\"http://www.w3.org/2000/svg\"><g class=\"djs-element djs-shape\" data-element-id=\"StartEvent_1\" transform=\"matrix(1,0,0,1,50,162)\" style=\"display: block;\"><rect fill=\"none\" class=\"djs-outline\" x=\"-6\" y=\"-6\" width=\"48\" height=\"48\"></rect><g class=\"djs-visual\"><circle cx=\"18\" cy=\"18\" r=\"18\" style=\"stroke-width: 2;\" stroke=\"#000000\" fill=\"#ffffff\"></circle></g><rect x=\"0\" y=\"0\" width=\"36\" height=\"36\" style=\"stroke-opacity: 0; stroke-width: 15;\" fill=\"none\" stroke=\"#ffffff\" class=\"djs-hit\"></rect></g></g><g class=\"djs-group\" xmlns=\"http://www.w3.org/2000/svg\"><g class=\"djs-element djs-shape\" data-element-id=\"StartEvent_1_label\" transform=\"matrix(1,0,0,1,23,198)\" style=\"display: none;\"><rect fill=\"none\" class=\"djs-outline\" x=\"-6\" y=\"-6\" width=\"102\" height=\"32\"></rect><g class=\"djs-visual\"><text style=\"font-family: Arial,sans-serif; font-size: 11px;\" class=\" djs-label\"><tspan x=\"45\" y=\"0\"></tspan></text></g><rect x=\"0\" y=\"0\" width=\"90\" height=\"20\" style=\"stroke-opacity: 0; stroke-width: 15;\" fill=\"none\" stroke=\"#ffffff\" class=\"djs-hit\"></rect></g></g><g class=\"djs-group\" xmlns=\"http://www.w3.org/2000/svg\"><g class=\"djs-element djs-shape\" data-element-id=\"VesCollector_1u6hupb\" transform=\"matrix(1,0,0,1,231,140)\" style=\"display: block;\"><rect fill=\"none\" class=\"djs-outline\" x=\"-6\" y=\"-6\" width=\"132\" height=\"92\"></rect><g class=\"djs-visual\"><rect x=\"0\" y=\"0\" width=\"120\" height=\"80\" rx=\"0\" ry=\"0\" style=\"stroke-width: 2;\" stroke=\"#000000\" fill=\"#ffffff\"></rect><polyline points=\"120,80 120,20 \" style=\"stroke-width: 2;\" fill=\"none\" stroke=\"#000000\"></polyline><polyline points=\"20,0 20,80 \" style=\"stroke-width: 2;\" fill=\"none\" stroke=\"#000000\"></polyline><text style=\"font-family: Arial,sans-serif; font-size: 12px;\"><tspan x=\"5\" y=\"14\">V</tspan></text><text style=\"font-family: Arial,sans-serif; font-size: 12px;\"><tspan x=\"5\" y=\"26\">E</tspan></text><text style=\"font-family: Arial,sans-serif; font-size: 12px;\"><tspan x=\"5\" y=\"38\">S</tspan></text><text style=\"font-family: Arial,sans-serif; font-size: 12px;\" class=\" djs-label\"><tspan x=\"25.5\" y=\"43.5\">VesCollector</tspan></text></g><rect x=\"0\" y=\"0\" width=\"120\" height=\"80\" style=\"stroke-opacity: 0; stroke-width: 15;\" fill=\"none\" stroke=\"#ffffff\" class=\"djs-hit\"></rect></g></g><g class=\"djs-group\" xmlns=\"http://www.w3.org/2000/svg\"><g class=\"djs-element djs-shape\" data-element-id=\"TCA_09syovq\" transform=\"matrix(1,0,0,1,472,140)\" style=\"display: block;\"><rect fill=\"none\" class=\"djs-outline\" x=\"-6\" y=\"-6\" width=\"132\" height=\"92\"></rect><g class=\"djs-visual\"><rect x=\"0\" y=\"0\" width=\"120\" height=\"80\" rx=\"0\" ry=\"0\" style=\"stroke-width: 2;\" stroke=\"#000000\" fill=\"#ffffff\"></rect><polyline points=\"0,60 120,60 \" style=\"stroke-width: 2;\" fill=\"none\" stroke=\"#000000\"></polyline><text style=\"font-family: Arial,sans-serif; font-size: 12px;\" class=\" djs-label\"><tspan x=\"48\" y=\"43.5\">TCA</tspan></text></g><rect x=\"0\" y=\"0\" width=\"120\" height=\"80\" style=\"stroke-opacity: 0; stroke-width: 15;\" fill=\"none\" stroke=\"#ffffff\" class=\"djs-hit\"></rect></g></g><g class=\"djs-group\" xmlns=\"http://www.w3.org/2000/svg\"><g class=\"djs-element djs-shape\" data-element-id=\"Policy_1r0guma\" transform=\"matrix(1,0,0,1,721,140)\" style=\"display: block;\"><rect fill=\"none\" class=\"djs-outline\" x=\"-6\" y=\"-6\" width=\"132\" height=\"92\"></rect><g class=\"djs-visual\"><rect x=\"0\" y=\"0\" width=\"120\" height=\"80\" rx=\"0\" ry=\"0\" style=\"stroke-width: 2;\" stroke=\"#000000\" fill=\"#ffffff\"></rect><polyline points=\"0,40 60,0 \" style=\"stroke-width: 2;\" fill=\"none\" stroke=\"#000000\"></polyline><text style=\"font-family: Arial,sans-serif; font-size: 12px;\" class=\" djs-label\"><tspan x=\"43.5\" y=\"43.5\">Policy</tspan></text></g><rect x=\"0\" y=\"0\" width=\"120\" height=\"80\" style=\"stroke-opacity: 0; stroke-width: 15;\" fill=\"none\" stroke=\"#ffffff\" class=\"djs-hit\"></rect></g></g><g class=\"djs-group\" xmlns=\"http://www.w3.org/2000/svg\"><g class=\"djs-element djs-shape selected\" data-element-id=\"EndEvent_04x88vg\" transform=\"matrix(1,0,0,1,966,162)\" style=\"display: block;\"><rect fill=\"none\" class=\"djs-outline\" x=\"-6\" y=\"-6\" width=\"48\" height=\"48\"></rect><g class=\"djs-visual\"><circle cx=\"18\" cy=\"18\" r=\"18\" style=\"stroke-width: 4;\" stroke=\"#000000\" fill=\"#ffffff\"></circle></g><rect x=\"0\" y=\"0\" width=\"36\" height=\"36\" style=\"stroke-opacity: 0; stroke-width: 15;\" fill=\"none\" stroke=\"#ffffff\" class=\"djs-hit\"></rect><g class=\" djs-resizer djs-resizer-nw\" transform=\"matrix(1,0,0,1,0,0)\"><rect x=\"-7\" y=\"-7\" width=\"5\" height=\"5\" class=\" djs-resizer-visual\"></rect><rect x=\"-7\" y=\"-7\" width=\"20\" height=\"20\" class=\" djs-resizer-hit\"></rect></g><g class=\" djs-resizer djs-resizer-ne\" transform=\"matrix(0,1,-1,0,36,0)\"><rect x=\"-7\" y=\"-7\" width=\"5\" height=\"5\" class=\" djs-resizer-visual\"></rect><rect x=\"-7\" y=\"-7\" width=\"20\" height=\"20\" class=\" djs-resizer-hit\"></rect></g><g class=\" djs-resizer djs-resizer-se\" transform=\"matrix(-1,0,0,-1,36,36)\"><rect x=\"-7\" y=\"-7\" width=\"5\" height=\"5\" class=\" djs-resizer-visual\"></rect><rect x=\"-7\" y=\"-7\" width=\"20\" height=\"20\" class=\" djs-resizer-hit\"></rect></g><g class=\" djs-resizer djs-resizer-sw\" transform=\"matrix(0,-1,1,0,0,36)\"><rect x=\"-7\" y=\"-7\" width=\"5\" height=\"5\" class=\" djs-resizer-visual\"></rect><rect x=\"-7\" y=\"-7\" width=\"20\" height=\"20\" class=\" djs-resizer-hit\"></rect></g></g></g><g class=\"djs-group\" xmlns=\"http://www.w3.org/2000/svg\"><g class=\"djs-element djs-shape\" data-element-id=\"EndEvent_04x88vg_label\" transform=\"matrix(1,0,0,1,939,198)\" style=\"display: none;\"><rect fill=\"none\" class=\"djs-outline\" x=\"-6\" y=\"-6\" width=\"102\" height=\"32\"></rect><g class=\"djs-visual\"><text style=\"font-family: Arial,sans-serif; font-size: 11px;\" class=\" djs-label\"><tspan x=\"45\" y=\"0\"></tspan></text></g><rect x=\"0\" y=\"0\" width=\"90\" height=\"20\" style=\"stroke-opacity: 0; stroke-width: 15;\" fill=\"none\" stroke=\"#ffffff\" class=\"djs-hit\"></rect></g></g><g class=\"djs-group\" xmlns=\"http://www.w3.org/2000/svg\"><g class=\"djs-element djs-connection\" data-element-id=\"SequenceFlow_0y4m01s\" style=\"display: block;\"><rect fill=\"none\" class=\"djs-outline\" x=\"80\" y=\"174\" width=\"157\" height=\"12\"></rect><g class=\"djs-visual\"><path d=\"m 86,180L231,180 \" style=\"stroke-width: 2; stroke-linejoin: round; marker-end: url(&quot;#markerSjdype4kmyk&quot;);\" fill=\"none\" stroke=\"#000000\"></path></g><polyline points=\"86,180 231,180 \" style=\"stroke-opacity: 0; stroke-width: 15;\" fill=\"none\" stroke=\"#ffffff\" class=\"djs-hit\"></polyline></g></g><g class=\"djs-group\" xmlns=\"http://www.w3.org/2000/svg\"><g class=\"djs-element djs-shape\" data-element-id=\"SequenceFlow_0y4m01s_label\" transform=\"matrix(1,0,0,1,113.5,170)\" style=\"display: none;\"><rect fill=\"none\" class=\"djs-outline\" x=\"-6\" y=\"-6\" width=\"102\" height=\"32\"></rect><g class=\"djs-visual\"><text style=\"font-family: Arial,sans-serif; font-size: 11px;\" class=\" djs-label\"><tspan x=\"45\" y=\"0\"></tspan></text></g><rect x=\"0\" y=\"0\" width=\"90\" height=\"20\" style=\"stroke-opacity: 0; stroke-width: 15;\" fill=\"none\" stroke=\"#ffffff\" class=\"djs-hit\"></rect></g></g><g class=\"djs-group\" xmlns=\"http://www.w3.org/2000/svg\"><g class=\"djs-element djs-connection\" data-element-id=\"SequenceFlow_10vqotq\" style=\"display: block;\"><rect fill=\"none\" class=\"djs-outline\" x=\"345\" y=\"174\" width=\"133\" height=\"12\"></rect><g class=\"djs-visual\"><path d=\"m 351,180L472,180 \" style=\"stroke-width: 2; stroke-linejoin: round; marker-end: url(&quot;#markerSjdype4kmyk&quot;);\" fill=\"none\" stroke=\"#000000\"></path></g><polyline points=\"351,180 472,180 \" style=\"stroke-opacity: 0; stroke-width: 15;\" fill=\"none\" stroke=\"#ffffff\" class=\"djs-hit\"></polyline></g></g><g class=\"djs-group\" xmlns=\"http://www.w3.org/2000/svg\"><g class=\"djs-element djs-shape\" data-element-id=\"SequenceFlow_10vqotq_label\" transform=\"matrix(1,0,0,1,366.5,170)\" style=\"display: none;\"><rect fill=\"none\" class=\"djs-outline\" x=\"-6\" y=\"-6\" width=\"102\" height=\"32\"></rect><g class=\"djs-visual\"><text style=\"font-family: Arial,sans-serif; font-size: 11px;\" class=\" djs-label\"><tspan x=\"45\" y=\"0\"></tspan></text></g><rect x=\"0\" y=\"0\" width=\"90\" height=\"20\" style=\"stroke-opacity: 0; stroke-width: 15;\" fill=\"none\" stroke=\"#ffffff\" class=\"djs-hit\"></rect></g></g><g class=\"djs-group\" xmlns=\"http://www.w3.org/2000/svg\"><g class=\"djs-element djs-connection\" data-element-id=\"SequenceFlow_0fpkygk\" style=\"display: block;\"><rect fill=\"none\" class=\"djs-outline\" x=\"586\" y=\"174\" width=\"141\" height=\"12\"></rect><g class=\"djs-visual\"><path d=\"m 592,180L721,180 \" style=\"stroke-width: 2; stroke-linejoin: round; marker-end: url(&quot;#markerSjdype4kmyk&quot;);\" fill=\"none\" stroke=\"#000000\"></path></g><polyline points=\"592,180 721,180 \" style=\"stroke-opacity: 0; stroke-width: 15;\" fill=\"none\" stroke=\"#ffffff\" class=\"djs-hit\"></polyline></g></g><g class=\"djs-group\" xmlns=\"http://www.w3.org/2000/svg\"><g class=\"djs-element djs-shape\" data-element-id=\"SequenceFlow_0fpkygk_label\" transform=\"matrix(1,0,0,1,611.5,170)\" style=\"display: none;\"><rect fill=\"none\" class=\"djs-outline\" x=\"-6\" y=\"-6\" width=\"102\" height=\"32\"></rect><g class=\"djs-visual\"><text style=\"font-family: Arial,sans-serif; font-size: 11px;\" class=\" djs-label\"><tspan x=\"45\" y=\"0\"></tspan></text></g><rect x=\"0\" y=\"0\" width=\"90\" height=\"20\" style=\"stroke-opacity: 0; stroke-width: 15;\" fill=\"none\" stroke=\"#ffffff\" class=\"djs-hit\"></rect></g></g><g class=\"djs-group\" xmlns=\"http://www.w3.org/2000/svg\"><g class=\"djs-element djs-connection\" data-element-id=\"SequenceFlow_0jsvuvu\" style=\"display: block;\"><rect fill=\"none\" class=\"djs-outline\" x=\"835\" y=\"174\" width=\"137\" height=\"12\"></rect><g class=\"djs-visual\"><path d=\"m 841,180L966,180 \" style=\"stroke-width: 2; stroke-linejoin: round; marker-end: url(&quot;#markerSjdype4kmyk&quot;);\" fill=\"none\" stroke=\"#000000\"></path></g><polyline points=\"841,180 966,180 \" style=\"stroke-opacity: 0; stroke-width: 15;\" fill=\"none\" stroke=\"#ffffff\" class=\"djs-hit\"></polyline></g></g><g class=\"djs-group\" xmlns=\"http://www.w3.org/2000/svg\"><g class=\"djs-element djs-shape\" data-element-id=\"SequenceFlow_0jsvuvu_label\" transform=\"matrix(1,0,0,1,858.5,170)\" style=\"display: none;\"><rect fill=\"none\" class=\"djs-outline\" x=\"-6\" y=\"-6\" width=\"102\" height=\"32\"></rect><g class=\"djs-visual\"><text style=\"font-family: Arial,sans-serif; font-size: 11px;\" class=\" djs-label\"><tspan x=\"45\" y=\"0\"></tspan></text></g><rect x=\"0\" y=\"0\" width=\"90\" height=\"20\" style=\"stroke-opacity: 0; stroke-width: 15;\" fill=\"none\" stroke=\"#ffffff\" class=\"djs-hit\"></rect></g></g></svg>",
- "templateName":"templateTCA2"
+ "templateName":"templateTCA2",
+ "typeId":null,
+ "deploymentId":null
} \ No newline at end of file
diff --git a/test/csit/tests/clamp/UIs/01__Create_Holmes_model.robot b/test/csit/tests/clamp/UIs/01__Create_Holmes_model.robot
index a94255099..3f87179cb 100644
--- a/test/csit/tests/clamp/UIs/01__Create_Holmes_model.robot
+++ b/test/csit/tests/clamp/UIs/01__Create_Holmes_model.robot
@@ -7,6 +7,8 @@ Library Selenium2Library
Library XvfbRobot
*** Variables ***
+${login} admin
+${passw} password
${SELENIUM_SPEED_FAST} .2 seconds
${SELENIUM_SPEED_SLOW} .5 seconds
@@ -26,8 +28,8 @@ Open Browser
Should Be Equal CLDS ${title}
Good Login to Clamp UI and Verify logged in
- Input Text locator=username text=admin
- Input Text locator=password text=password
+ Input Text locator=username text=${login}
+ Input Text locator=password text=${passw}
Press Key locator=password key=\\13
Wait Until Element Is Visible xpath=//*[@class="navbar-brand logo_name ng-binding"] timeout=60
Element Text Should Be xpath=//*[@class="navbar-brand logo_name ng-binding"] expected=Hello:admin
@@ -84,7 +86,7 @@ Close Browser
Close Browser
Verify Holmes CL well created
- ${auth}= Create List admin 5f4dcc3b5aa765d61d8327deb882cf99
+ ${auth}= Create List ${login} ${passw}
Create Session clamp http://localhost:8080 auth=${auth}
${resp}= Get Request clamp /restservices/clds/v1/clds/model-names
Should Contain Match ${resp} *HolmesModel1*
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 caacec36a..99d93c312 100644
--- a/test/csit/tests/clamp/UIs/02__Create_TCA_model.robot
+++ b/test/csit/tests/clamp/UIs/02__Create_TCA_model.robot
@@ -7,6 +7,8 @@ Library Selenium2Library
Library XvfbRobot
*** Variables ***
+${login} admin
+${passw} password
${SELENIUM_SPEED_FAST} .2 seconds
${SELENIUM_SPEED_SLOW} .5 seconds
@@ -26,8 +28,8 @@ Open Browser
Should Be Equal CLDS ${title}
Good Login to Clamp UI and Verify logged in
- Input Text locator=username text=admin
- Input Text locator=password text=password
+ Input Text locator=username text=${login}
+ Input Text locator=password text=${passw}
Press Key locator=password key=\\13
Wait Until Element Is Visible xpath=//*[@class="navbar-brand logo_name ng-binding"] timeout=60
Element Text Should Be xpath=//*[@class="navbar-brand logo_name ng-binding"] expected=Hello:admin
@@ -63,7 +65,19 @@ Set Policy Box properties for TCAModel1
Input Text locator=timeout text=400
Click Button locator=Close
-### Cannot set TCA box attributes due to element not interractable with Selenium
+Set TCA Box properties for TCAModel1
+ Wait Until Element Is Visible xpath=//*[@data-element-id="Policy_12lup3h"] timeout=60
+ Click Element xpath=//*[@data-element-id="TCA_1d13unw"]
+ Input Text xpath=(//input[@id='tname'])[2] text=TCA1
+ Select From List By Label xpath=//*[@id="tcaPol"] Policy2
+ Select From List By Label xpath=//*[@id="eventName"] vCPEvGMUXPacketLoss
+### Cannot set all TCA box attributes due to element not interractable with Selenium
+# Select From List By Label xpath=//*[@id="controlLoopSchemaType"] VNF
+# Select From List By Index xpath=//*[@id="controlLoopSchemaType"] 1
+ Click Element xpath=(//button[@id='createNewThresh'])[2]
+ Input Text xpath=(//input[@id='threshold'])[2] 6
+# Select From List By Label xpath=//*[@id="closedLoopEventStatus"] ONSET
+ Click Button id=savePropsBtn
Save Model from Menu
Wait Until Element Is Visible xpath=//*[@id="navbar"]/ul/li[1]/a timeout=60
@@ -79,7 +93,7 @@ Close Browser
Close Browser
Verify TCA CL well create
- ${auth}= Create List admin 5f4dcc3b5aa765d61d8327deb882cf99
+ ${auth}= Create List ${login} ${passw}
Create Session clamp http://localhost:8080 auth=${auth}
${resp}= Get Request clamp /restservices/clds/v1/clds/model-names
Should Contain Match ${resp} *TCAModel1*
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 c866174f1..70cbf1262 100644
--- a/test/csit/tests/clamp/UIs/03__Verify_UI_Models.robot
+++ b/test/csit/tests/clamp/UIs/03__Verify_UI_Models.robot
@@ -2,11 +2,15 @@
Library Collections
Library RequestsLibrary
Library OperatingSystem
-Library jsons
+Library json
+
+*** Variables ***
+${login} admin
+${passw} password
*** Test Cases ***
Verify HolmesModel1
- ${auth}= Create List admin 5f4dcc3b5aa765d61d8327deb882cf99
+ ${auth}= Create List ${login} ${passw}
Create Session clamp http://localhost:8080 auth=${auth}
${resp}= Get Request clamp /restservices/clds/v1/clds/model/HolmesModel1
Should Contain Match ${resp} *templateHolmes1*
@@ -21,7 +25,7 @@ Verify HolmesModel1
Should Contain Match ${resp} *config Policy Name1*
Verify TCAModel1
- ${auth}= Create List admin 5f4dcc3b5aa765d61d8327deb882cf99
+ ${auth}= Create List ${login} ${passw}
Create Session clamp http://localhost:8080 auth=${auth}
${resp}= Get Request clamp /restservices/clds/v1/clds/model/TCAModel1
Should Contain Match ${resp} *templateTCA1*
@@ -35,7 +39,7 @@ Verify TCAModel1
Should Contain Match ${resp} *400*
Get model names
- ${auth}= Create List admin 5f4dcc3b5aa765d61d8327deb882cf99
+ ${auth}= Create List ${login} ${passw}
Create Session clamp http://localhost:8080 auth=${auth}
${resp}= Get Request clamp /restservices/clds/v1/clds/model-names
Should Contain Match ${resp} *HolmesModel1*
diff --git a/test/csit/tests/clamp/UIs/04__Submit_deploy_chain_Holmes.robot b/test/csit/tests/clamp/UIs/04__Submit_deploy_chain_Holmes.robot
new file mode 100644
index 000000000..f400156d1
--- /dev/null
+++ b/test/csit/tests/clamp/UIs/04__Submit_deploy_chain_Holmes.robot
@@ -0,0 +1,130 @@
+*** Settings ***
+Library Collections
+Library RequestsLibrary
+Library OperatingSystem
+Library json
+Library Selenium2Library
+Library XvfbRobot
+
+*** Variables ***
+${login} admin
+${passw} password
+${SELENIUM_SPEED_FAST} .2 seconds
+${SELENIUM_SPEED_SLOW} .5 seconds
+
+*** Test Cases ***
+Get Requests health check ok
+ CreateSession clamp http://localhost:8080
+ ${resp}= Get Request clamp /restservices/clds/v1/clds/healthcheck
+ Should Be Equal As Strings ${resp.status_code} 200
+
+Open Browser
+# Next line is to be enabled for Headless tests only (jenkins?). To see the tests disable the line.
+ Start Virtual Display 1920 1080
+ Open Browser http://localhost:8080/designer/index.html browser=firefox
+ Set Selenium Speed ${SELENIUM_SPEED_SLOW}
+ Set Window Size 1920 1080
+ ${title}= Get Title
+ Should Be Equal CLDS ${title}
+
+Good Login to Clamp UI and Verify logged in
+ Input Text locator=username text=${login}
+ Input Text locator=password text=${passw}
+ Press Key locator=password key=\\13
+ Wait Until Element Is Visible xpath=//*[@class="navbar-brand logo_name ng-binding"] timeout=60
+ Element Text Should Be xpath=//*[@class="navbar-brand logo_name ng-binding"] expected=Hello:admin
+
+Open Holmes CL
+ Wait Until Element Is Visible xpath=//*[@id="navbar"]/ul/li[1]/a timeout=60
+ Click Element xpath=//*[@id="navbar"]/ul/li[1]/a
+ Wait Until Element Is Visible locator=Open CL timeout=60
+ Click Element locator=Open CL
+ Select From List By Label id=modelName HolmesModel1
+ Click Button locator=OK
+ Element Should Contain xpath=//*[@id="modeler_name"] Closed Loop Modeler - HolmesModel1
+ Element Should Contain xpath=//*[@id="status_clds"] DESIGN
+
+Validate-Test Holmes CL
+ Wait Until Element Is Visible xpath=//*[@id="navbar"]/ul/li[2]/a timeout=60
+ Click Element xpath=//*[@id="navbar"]/ul/li[2]/a
+ Wait Until Element Is Visible locator=Validation Test timeout=60
+ Click Element locator=Validation Test
+ Wait Until Element Is Visible xpath=//*[@id="alert_message_"] timeout=60
+ Element Text Should Be xpath=//*[@id="alert_message_"] expected=Action Successful:TEST
+ Element Should Contain xpath=//*[@id="status_clds"] DESIGN
+
+Submit Holmes CL
+ Wait Until Element Is Visible xpath=//*[@id="navbar"]/ul/li[2]/a timeout=60
+ Click Element xpath=//*[@id="navbar"]/ul/li[2]/a
+ Wait Until Element Is Visible locator=Submit timeout=60
+ Click Element locator=Submit
+ Click Button locator=Yes
+ Wait Until Element Is Visible xpath=//*[@id="alert_message_"] timeout=60
+ Element Text Should Be xpath=//*[@id="alert_message_"] expected=Action Successful:SUBMIT
+ Element Should Contain xpath=//*[@id="status_clds"] DISTRIBUTED
+
+Resubmit Holmes CL
+ Wait Until Element Is Visible xpath=//*[@id="navbar"]/ul/li[2]/a timeout=60
+ Click Element xpath=//*[@id="navbar"]/ul/li[2]/a
+ Wait Until Element Is Visible locator=Resubmit timeout=60
+ Click Element locator=Resubmit
+ Click Button locator=Yes
+ Wait Until Element Is Visible xpath=//*[@id="alert_message_"] timeout=60
+ Element Text Should Be xpath=//*[@id="alert_message_"] expected=Action Successful:RESUBMIT
+ Element Should Contain xpath=//*[@id="status_clds"] DISTRIBUTED
+
+Deploy Holmes CL
+ Wait Until Element Is Visible xpath=//*[@id="navbar"]/ul/li[2]/a timeout=60
+ Click Element xpath=//*[@id="navbar"]/ul/li[2]/a
+ Wait Until Element Is Visible locator=Deploy timeout=60
+ Click Element locator=Deploy
+ Wait Until Element Is Visible xpath=//*[@id="deployProperties"] timeout=60
+ Input Text xpath=//*[@id="deployProperties"] text={}
+ Click Button locator=Deploy
+ Click Button locator=Yes
+ Wait Until Element Is Visible xpath=//*[@id="alert_message_"] timeout=60
+ Element Text Should Be xpath=//*[@id="alert_message_"] expected=Action Successful:deploy
+ Element Should Contain xpath=//*[@id="status_clds"] ACTIVE
+
+Update Holmes CL
+ Wait Until Element Is Visible xpath=//*[@id="navbar"]/ul/li[2]/a timeout=60
+ Click Element xpath=//*[@id="navbar"]/ul/li[2]/a
+ Wait Until Element Is Visible locator=Update timeout=60
+ Click Element locator=Update
+ Click Button locator=Yes
+ Wait Until Element Is Visible xpath=//*[@id="alert_message_"] timeout=60
+ Element Text Should Be xpath=//*[@id="alert_message_"] expected=Action Successful:UPDATE
+ Element Should Contain xpath=//*[@id="status_clds"] ACTIVE
+
+Stop Holmes CL
+ Wait Until Element Is Visible xpath=//*[@id="navbar"]/ul/li[2]/a timeout=60
+ Click Element xpath=//*[@id="navbar"]/ul/li[2]/a
+ Wait Until Element Is Visible locator=Stop timeout=60
+ Click Element locator=Stop
+ Click Button locator=Yes
+ Wait Until Element Is Visible xpath=//*[@id="alert_message_"] timeout=60
+ Element Text Should Be xpath=//*[@id="alert_message_"] expected=Action Successful:STOP
+ Element Should Contain xpath=//*[@id="status_clds"] STOPPED
+
+Restart Holmes CL
+ Wait Until Element Is Visible xpath=//*[@id="navbar"]/ul/li[2]/a timeout=60
+ Click Element xpath=//*[@id="navbar"]/ul/li[2]/a
+ Wait Until Element Is Visible locator=Restart timeout=60
+ Click Element locator=Restart
+ Click Button locator=Yes
+ Wait Until Element Is Visible xpath=//*[@id="alert_message_"] timeout=60
+ Element Text Should Be xpath=//*[@id="alert_message_"] expected=Action Successful:RESTART
+ Element Should Contain xpath=//*[@id="status_clds"] ACTIVE
+
+UnDeploy Holmes CL
+ Wait Until Element Is Visible xpath=//*[@id="navbar"]/ul/li[2]/a timeout=60
+ Click Element xpath=//*[@id="navbar"]/ul/li[2]/a
+ Wait Until Element Is Visible locator=UnDeploy timeout=60
+ Click Element locator=UnDeploy
+ Click Button locator=Yes
+ Wait Until Element Is Visible xpath=//*[@id="alert_message_"] timeout=60
+ Element Text Should Be xpath=//*[@id="alert_message_"] expected=Action Successful:undeploy
+ Element Should Contain xpath=//*[@id="status_clds"] DISTRIBUTED
+
+Close Browser
+ Close Browser
diff --git a/test/csit/tests/clamp/UIs/05__Submit_deploy_chain_TCA.robot b/test/csit/tests/clamp/UIs/05__Submit_deploy_chain_TCA.robot
new file mode 100644
index 000000000..34c1a71ef
--- /dev/null
+++ b/test/csit/tests/clamp/UIs/05__Submit_deploy_chain_TCA.robot
@@ -0,0 +1,130 @@
+*** Settings ***
+Library Collections
+Library RequestsLibrary
+Library OperatingSystem
+Library json
+Library Selenium2Library
+Library XvfbRobot
+
+*** Variables ***
+${login} admin
+${passw} password
+${SELENIUM_SPEED_FAST} .2 seconds
+${SELENIUM_SPEED_SLOW} .5 seconds
+
+*** Test Cases ***
+Get Requests health check ok
+ CreateSession clamp http://localhost:8080
+ ${resp}= Get Request clamp /restservices/clds/v1/clds/healthcheck
+ Should Be Equal As Strings ${resp.status_code} 200
+
+Open Browser
+# Next line is to be enabled for Headless tests only (jenkins?). To see the tests disable the line.
+ Start Virtual Display 1920 1080
+ Open Browser http://localhost:8080/designer/index.html browser=firefox
+ Set Selenium Speed ${SELENIUM_SPEED_SLOW}
+ Set Window Size 1920 1080
+ ${title}= Get Title
+ Should Be Equal CLDS ${title}
+
+Good Login to Clamp UI and Verify logged in
+ Input Text locator=username text=${login}
+ Input Text locator=password text=${passw}
+ Press Key locator=password key=\\13
+ Wait Until Element Is Visible xpath=//*[@class="navbar-brand logo_name ng-binding"] timeout=60
+ Element Text Should Be xpath=//*[@class="navbar-brand logo_name ng-binding"] expected=Hello:admin
+
+Open TCA CL
+ Wait Until Element Is Visible xpath=//*[@id="navbar"]/ul/li[1]/a timeout=60
+ Click Element xpath=//*[@id="navbar"]/ul/li[1]/a
+ Wait Until Element Is Visible locator=Open CL timeout=60
+ Click Element locator=Open CL
+ Select From List By Label id=modelName TCAModel1
+ Click Button locator=OK
+ Element Should Contain xpath=//*[@id="modeler_name"] Closed Loop Modeler - TCAModel1
+ Element Should Contain xpath=//*[@id="status_clds"] DESIGN
+
+Validate-Test TCA CL
+ Wait Until Element Is Visible xpath=//*[@id="navbar"]/ul/li[2]/a timeout=60
+ Click Element xpath=//*[@id="navbar"]/ul/li[2]/a
+ Wait Until Element Is Visible locator=Validation Test timeout=60
+ Click Element locator=Validation Test
+ Wait Until Element Is Visible xpath=//*[@id="alert_message_"] timeout=60
+ Element Text Should Be xpath=//*[@id="alert_message_"] expected=Action Successful:TEST
+ Element Should Contain xpath=//*[@id="status_clds"] DESIGN
+
+Submit TCA CL
+ Wait Until Element Is Visible xpath=//*[@id="navbar"]/ul/li[2]/a timeout=60
+ Click Element xpath=//*[@id="navbar"]/ul/li[2]/a
+ Wait Until Element Is Visible locator=Submit timeout=60
+ Click Element locator=Submit
+ Click Button locator=Yes
+ Wait Until Element Is Visible xpath=//*[@id="alert_message_"] timeout=60
+ Element Text Should Be xpath=//*[@id="alert_message_"] expected=Action Successful:SUBMIT
+ Element Should Contain xpath=//*[@id="status_clds"] DISTRIBUTED
+
+Resubmit TCA CL
+ Wait Until Element Is Visible xpath=//*[@id="navbar"]/ul/li[2]/a timeout=60
+ Click Element xpath=//*[@id="navbar"]/ul/li[2]/a
+ Wait Until Element Is Visible locator=Resubmit timeout=60
+ Click Element locator=Resubmit
+ Click Button locator=Yes
+ Wait Until Element Is Visible xpath=//*[@id="alert_message_"] timeout=60
+ Element Text Should Be xpath=//*[@id="alert_message_"] expected=Action Successful:RESUBMIT
+ Element Should Contain xpath=//*[@id="status_clds"] DISTRIBUTED
+
+Deploy TCA CL
+ Wait Until Element Is Visible xpath=//*[@id="navbar"]/ul/li[2]/a timeout=60
+ Click Element xpath=//*[@id="navbar"]/ul/li[2]/a
+ Wait Until Element Is Visible locator=Deploy timeout=60
+ Click Element locator=Deploy
+ Wait Until Element Is Visible xpath=//*[@id="deployProperties"] timeout=60
+ Input Text xpath=//*[@id="deployProperties"] text={}
+ Click Button locator=Deploy
+ Click Button locator=Yes
+ Wait Until Element Is Visible xpath=//*[@id="alert_message_"] timeout=60
+ Element Text Should Be xpath=//*[@id="alert_message_"] expected=Action Successful:deploy
+ Element Should Contain xpath=//*[@id="status_clds"] ACTIVE
+
+Update TCA CL
+ Wait Until Element Is Visible xpath=//*[@id="navbar"]/ul/li[2]/a timeout=60
+ Click Element xpath=//*[@id="navbar"]/ul/li[2]/a
+ Wait Until Element Is Visible locator=Update timeout=60
+ Click Element locator=Update
+ Click Button locator=Yes
+ Wait Until Element Is Visible xpath=//*[@id="alert_message_"] timeout=60
+ Element Text Should Be xpath=//*[@id="alert_message_"] expected=Action Successful:UPDATE
+ Element Should Contain xpath=//*[@id="status_clds"] ACTIVE
+
+Stop TCA CL
+ Wait Until Element Is Visible xpath=//*[@id="navbar"]/ul/li[2]/a timeout=60
+ Click Element xpath=//*[@id="navbar"]/ul/li[2]/a
+ Wait Until Element Is Visible locator=Stop timeout=60
+ Click Element locator=Stop
+ Click Button locator=Yes
+ Wait Until Element Is Visible xpath=//*[@id="alert_message_"] timeout=60
+ Element Text Should Be xpath=//*[@id="alert_message_"] expected=Action Successful:STOP
+ Element Should Contain xpath=//*[@id="status_clds"] STOPPED
+
+Restart TCA CL
+ Wait Until Element Is Visible xpath=//*[@id="navbar"]/ul/li[2]/a timeout=60
+ Click Element xpath=//*[@id="navbar"]/ul/li[2]/a
+ Wait Until Element Is Visible locator=Restart timeout=60
+ Click Element locator=Restart
+ Click Button locator=Yes
+ Wait Until Element Is Visible xpath=//*[@id="alert_message_"] timeout=60
+ Element Text Should Be xpath=//*[@id="alert_message_"] expected=Action Successful:RESTART
+ Element Should Contain xpath=//*[@id="status_clds"] ACTIVE
+
+UnDeploy TCA CL
+ Wait Until Element Is Visible xpath=//*[@id="navbar"]/ul/li[2]/a timeout=60
+ Click Element xpath=//*[@id="navbar"]/ul/li[2]/a
+ Wait Until Element Is Visible locator=UnDeploy timeout=60
+ Click Element locator=UnDeploy
+ Click Button locator=Yes
+ Wait Until Element Is Visible xpath=//*[@id="alert_message_"] timeout=60
+ Element Text Should Be xpath=//*[@id="alert_message_"] expected=Action Successful:undeploy
+ Element Should Contain xpath=//*[@id="status_clds"] DISTRIBUTED
+
+Close Browser
+ Close Browser
diff --git a/test/csit/tests/dcaegen2/testcases/dcae_ves.robot b/test/csit/tests/dcaegen2/testcases/dcae_ves.robot
index eee6ea569..47ce5f14d 100644
--- a/test/csit/tests/dcaegen2/testcases/dcae_ves.robot
+++ b/test/csit/tests/dcaegen2/testcases/dcae_ves.robot
@@ -75,12 +75,13 @@ Publish Single VES VNF Measurement Event
Publish VES VoLTE Fault Batch Events
[Tags] DCAE-VESC-R1
- [Documentation] Post batched events and expect 202 Response
+ [Documentation] Post batched events and expect 200 Response
${evtdata}= Get Event Data From File ${EVENT_BATCH_DATA_FILE}
${headers}= Create Header From String ${HEADER_STRING}
${resp}= Publish Event To VES Collector No Auth ${VESC_URL} ${VES_BATCH_EVENT_PATH} ${headers} ${evtdata}
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-fb6b9e546016
+ ${ret}= DMaaP Message Receive ab305d54-85b4-a31b-7db2-fb6b9e546025
Should Be Equal As Strings ${ret} true
@@ -118,16 +119,16 @@ Publish VES Event With Invalid URL Path
Should Be Equal As Strings ${resp.status_code} 404
-Enable VESC HTTPS And Basic Auth
- [Tags] DCAE-VESC-R1
- [Documentation] Enable VESC Https and Authentication, Disable Http and Run Health Check
- Enable VESC Https Auth
-
- ${auth}= Create List ${VESC_HTTPS_USER} ${VESC_HTTPS_PD}
- ${session}= Create Session dcaegen2-r1 ${VESC_URL_HTTPS} auth=${auth} disable_warnings=1
- ${headers}= Create Dictionary Accept=*/* X-FromAppId=${GLOBAL_APPLICATION_ID}
- ${resp}= Get Request dcaegen2-r1 /healthcheck headers=${headers}
- Should Be Equal As Strings ${resp.status_code} 200
+#Enable VESC HTTPS And Basic Auth
+ #[Tags] DCAE-VESC-R1
+ #[Documentation] Enable VESC Https and Authentication, Disable Http and Run Health Check
+ #Enable VESC Https Auth
+ #
+ #${auth}= Create List ${VESC_HTTPS_USER} ${VESC_HTTPS_PD}
+ #${session}= Create Session dcaegen2-r1 ${VESC_URL_HTTPS} auth=${auth} disable_warnings=1
+ #${headers}= Create Dictionary Accept=*/* X-FromAppId=${GLOBAL_APPLICATION_ID}
+ #${resp}= Get Request dcaegen2-r1 /healthcheck headers=${headers}
+ #Should Be Equal As Strings ${resp.status_code} 200
Publish Single VES Fault Event Over HTTPS
[Tags] DCAE-VESC-R1
@@ -164,7 +165,8 @@ Publish VES Fault Batch Events Over HTTPS
${headers}= Create Header From String ${HEADER_STRING}
${resp}= Publish Event To VES Collector ${VESC_URL_HTTPS} ${VES_BATCH_EVENT_PATH} ${headers} ${evtdata} ${VESC_HTTPS_USER} ${VESC_HTTPS_PD}
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-fb6b9e546016
+ ${ret}= DMaaP Message Receive ab305d54-85b4-a31b-7db2-fb6b9e546025
Should Be Equal As Strings ${ret} true
diff --git a/test/csit/tests/dcaegen2/testcases/resources/DMaaP.py b/test/csit/tests/dcaegen2/testcases/resources/DMaaP.py
index 63e4e8c6b..db59557db 100644
--- a/test/csit/tests/dcaegen2/testcases/resources/DMaaP.py
+++ b/test/csit/tests/dcaegen2/testcases/resources/DMaaP.py
@@ -1,423 +1,423 @@
-'''
-Created on Aug 15, 2017
-
-@author: sw6830
-'''
-import os
-import posixpath
-import BaseHTTPServer
-import urllib
-import urlparse
-import cgi, sys, shutil, mimetypes
-from jsonschema import validate
-import jsonschema, json
-import DcaeVariables
-import SimpleHTTPServer
-from robot.api import logger
-
-
-try:
- from cStringIO import StringIO
-except ImportError:
- from StringIO import StringIO
-
-EvtSchema = None
-DMaaPHttpd = None
-
-
-def cleanUpEvent():
- sz = DcaeVariables.VESEventQ.qsize()
- for i in range(sz):
- try:
- self.evtQueue.get_nowait()
- except:
- pass
-
-def enqueEvent(evt):
- if DcaeVariables.VESEventQ != None:
- try:
- DcaeVariables.VESEventQ.put(evt)
- if DcaeVariables.IsRobotRun:
- logger.console("DMaaP Event enqued - size=" + str(len(evt)))
- else:
- print ("DMaaP Event enqueued - size=" + str(len(evt)))
- return True
- except Exception as e:
- print (str(e))
- return False
- return False
-
-def dequeEvent(waitSec=25):
- if DcaeVariables.IsRobotRun:
- logger.console("Enter DequeEvent")
- try:
- evt = DcaeVariables.VESEventQ.get(True, waitSec)
- if DcaeVariables.IsRobotRun:
- logger.console("DMaaP Event dequeued - size=" + str(len(evt)))
- else:
- print("DMaaP Event dequeued - size=" + str(len(evt)))
- return evt
- except Exception as e:
- if DcaeVariables.IsRobotRun:
- logger.console(str(e))
- logger.console("DMaaP Event dequeue timeout")
- else:
- print("DMaaP Event dequeue timeout")
- return None
-
-class DMaaPHandler(BaseHTTPServer.BaseHTTPRequestHandler):
-
- def do_PUT(self):
- self.send_response(405)
- return
-
- def do_POST(self):
-
- respCode = 0
- # Parse the form data posted
- '''
- form = cgi.FieldStorage(
- fp=self.rfile,
- headers=self.headers,
- environ={'REQUEST_METHOD':'POST',
- 'CONTENT_TYPE':self.headers['Content-Type'],
- })
-
-
- form = cgi.FieldStorage(
- fp=self.rfile,
- headers=self.headers,
- environ={"REQUEST_METHOD": "POST"})
-
- for item in form.list:
- print "%s=%s" % (item.name, item.value)
-
- '''
-
- if 'POST' not in self.requestline:
- respCode = 405
-
- '''
- if respCode == 0:
- if '/eventlistener/v5' not in self.requestline and '/eventlistener/v5/eventBatch' not in self.requestline and \
- '/eventlistener/v5/clientThrottlingState' not in self.requestline:
- respCode = 404
-
-
- if respCode == 0:
- if 'Y29uc29sZTpaakprWWpsbE1qbGpNVEkyTTJJeg==' not in str(self.headers):
- respCode = 401
- '''
-
- if respCode == 0:
- content_len = int(self.headers.getheader('content-length', 0))
- post_body = self.rfile.read(content_len)
-
- if DcaeVariables.IsRobotRun:
- logger.console("\n" + "DMaaP Receive Event:\n" + post_body)
- else:
- print("\n" + "DMaaP Receive Event:")
- print (post_body)
-
- indx = post_body.index("{")
- if indx != 0:
- post_body = post_body[indx:]
-
- if enqueEvent(post_body) == False:
- print "enque event fails"
-
- global EvtSchema
- try:
- if EvtSchema == None:
- with open(DcaeVariables.CommonEventSchemaV5) as file:
- EvtSchema = json.load(file)
- decoded_body = json.loads(post_body)
- jsonschema.validate(decoded_body, EvtSchema)
- except:
- respCode = 400
-
- # Begin the response
- if DcaeVariables.IsRobotRun == False:
- print ("Response Message:")
-
- '''
- {
- "200" : {
- "description" : "Success",
- "schema" : {
- "$ref" : "#/definitions/DR_Pub"
- }
- }
-
- rspStr = "{'responses' : {'200' : {'description' : 'Success'}}}"
- rspStr1 = "{'count': 1, 'serverTimeMs': 3}"
-
- '''
-
- if respCode == 0:
- if 'clientThrottlingState' in self.requestline:
- self.send_response(204)
- else:
- self.send_response(200)
- self.send_header('Content-Type', 'application/json')
- self.end_headers()
- #self.wfile.write("{'responses' : {'200' : {'description' : 'Success'}}}")
- self.wfile.write("{'count': 1, 'serverTimeMs': 3}")
- self.wfile.close()
- else:
- self.send_response(respCode)
-
- '''
- self.end_headers()
- self.wfile.write('Client: %s\n' % str(self.client_address))
- self.wfile.write('User-agent: %s\n' % str(self.headers['user-agent']))
- self.wfile.write('Path: %s\n' % self.path)
- self.wfile.write('Form data:\n')
- self.wfile.close()
-
- # Echo back information about what was posted in the form
- for field in form.keys():
- field_item = form[field]
- if field_item.filename:
- # The field contains an uploaded file
- file_data = field_item.file.read()
- file_len = len(file_data)
- del file_data
- self.wfile.write('\tUploaded %s as "%s" (%d bytes)\n' % \
- (field, field_item.filename, file_len))
- else:
- # Regular form value
- self.wfile.write('\t%s=%s\n' % (field, form[field].value))
- '''
- return
-
-
- def do_GET(self):
- """Serve a GET request."""
- f = self.send_head()
- if f:
- try:
- self.copyfile(f, self.wfile)
- finally:
- f.close()
-
- def do_HEAD(self):
- """Serve a HEAD request."""
- f = self.send_head()
- if f:
- f.close()
-
- def send_head(self):
- """Common code for GET and HEAD commands.
-
- This sends the response code and MIME headers.
-
- Return value is either a file object (which has to be copied
- to the outputfile by the caller unless the command was HEAD,
- and must be closed by the caller under all circumstances), or
- None, in which case the caller has nothing further to do.
-
- """
- path = self.translate_path(self.path)
- f = None
- if os.path.isdir(path):
- parts = urlparse.urlsplit(self.path)
- if not parts.path.endswith('/'):
- # redirect browser - doing basically what apache does
- self.send_response(301)
- new_parts = (parts[0], parts[1], parts[2] + '/',
- parts[3], parts[4])
- new_url = urlparse.urlunsplit(new_parts)
- self.send_header("Location", new_url)
- self.end_headers()
- return None
- for index in "index.html", "index.htm":
- index = os.path.join(path, index)
- if os.path.exists(index):
- path = index
- break
- else:
- return self.list_directory(path)
- ctype = self.guess_type(path)
- try:
- # Always read in binary mode. Opening files in text mode may cause
- # newline translations, making the actual size of the content
- # transmitted *less* than the content-length!
- f = open(path, 'rb')
- except IOError:
- self.send_error(404, "File not found")
- return None
- try:
- self.send_response(200)
- self.send_header("Content-type", ctype)
- fs = os.fstat(f.fileno())
- self.send_header("Content-Length", str(fs[6]))
- self.send_header("Last-Modified", self.date_time_string(fs.st_mtime))
- self.end_headers()
- return f
- except:
- f.close()
- raise
-
- def list_directory(self, path):
- """Helper to produce a directory listing (absent index.html).
-
- Return value is either a file object, or None (indicating an
- error). In either case, the headers are sent, making the
- interface the same as for send_head().
-
- """
- try:
- list = os.listdir(path)
- except os.error:
- self.send_error(404, "No permission to list directory")
- return None
- list.sort(key=lambda a: a.lower())
- f = StringIO()
- displaypath = cgi.escape(urllib.unquote(self.path))
- f.write('<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">')
- f.write("<html>\n<title>Directory listing for %s</title>\n" % displaypath)
- f.write("<body>\n<h2>Directory listing for %s</h2>\n" % displaypath)
- f.write("<hr>\n<ul>\n")
- for name in list:
- fullname = os.path.join(path, name)
- displayname = linkname = name
- # Append / for directories or @ for symbolic links
- if os.path.isdir(fullname):
- displayname = name + "/"
- linkname = name + "/"
- if os.path.islink(fullname):
- displayname = name + "@"
- # Note: a link to a directory displays with @ and links with /
- f.write('<li><a href="%s">%s</a>\n'
- % (urllib.quote(linkname), cgi.escape(displayname)))
- f.write("</ul>\n<hr>\n</body>\n</html>\n")
- length = f.tell()
- f.seek(0)
- self.send_response(200)
- encoding = sys.getfilesystemencoding()
- self.send_header("Content-type", "text/html; charset=%s" % encoding)
- self.send_header("Content-Length", str(length))
- self.end_headers()
- return f
-
- def translate_path(self, path):
- """Translate a /-separated PATH to the local filename syntax.
-
- Components that mean special things to the local file system
- (e.g. drive or directory names) are ignored. (XXX They should
- probably be diagnosed.)
-
- """
- # abandon query parameters
- path = path.split('?',1)[0]
- path = path.split('#',1)[0]
- # Don't forget explicit trailing slash when normalizing. Issue17324
- trailing_slash = path.rstrip().endswith('/')
- path = posixpath.normpath(urllib.unquote(path))
- words = path.split('/')
- words = filter(None, words)
- path = os.getcwd()
- for word in words:
- if os.path.dirname(word) or word in (os.curdir, os.pardir):
- # Ignore components that are not a simple file/directory name
- continue
- path = os.path.join(path, word)
- if trailing_slash:
- path += '/'
- return path
-
- def copyfile(self, source, outputfile):
- """Copy all data between two file objects.
-
- The SOURCE argument is a file object open for reading
- (or anything with a read() method) and the DESTINATION
- argument is a file object open for writing (or
- anything with a write() method).
-
- The only reason for overriding this would be to change
- the block size or perhaps to replace newlines by CRLF
- -- note however that this the default server uses this
- to copy binary data as well.
-
- """
- shutil.copyfileobj(source, outputfile)
-
- def guess_type(self, path):
- """Guess the type of a file.
-
- Argument is a PATH (a filename).
-
- Return value is a string of the form type/subtype,
- usable for a MIME Content-type header.
-
- The default implementation looks the file's extension
- up in the table self.extensions_map, using application/octet-stream
- as a default; however it would be permissible (if
- slow) to look inside the data to make a better guess.
-
- """
-
- base, ext = posixpath.splitext(path)
- if ext in self.extensions_map:
- return self.extensions_map[ext]
- ext = ext.lower()
- if ext in self.extensions_map:
- return self.extensions_map[ext]
- else:
- return self.extensions_map['']
-
- if not mimetypes.inited:
- mimetypes.init() # try to read system mime.types
- extensions_map = mimetypes.types_map.copy()
- extensions_map.update({
- '': 'application/octet-stream', # Default
- '.py': 'text/plain',
- '.c': 'text/plain',
- '.h': 'text/plain',
- })
-
-def test(HandlerClass = DMaaPHandler,
- ServerClass = BaseHTTPServer.HTTPServer, protocol="HTTP/1.0", port=3904):
- print "Load event schema file: " + DcaeVariables.CommonEventSchemaV5
- with open(DcaeVariables.CommonEventSchemaV5) as file:
- global EvtSchema
- EvtSchema = json.load(file)
-
- server_address = ('', port)
-
- HandlerClass.protocol_version = protocol
- httpd = ServerClass(server_address, HandlerClass)
-
- global DMaaPHttpd
- DMaaPHttpd = httpd
- DcaeVariables.HTTPD = httpd
-
- sa = httpd.socket.getsockname()
- print "Serving HTTP on", sa[0], "port", sa[1], "..."
- #httpd.serve_forever()
-
-def _main_ (HandlerClass = DMaaPHandler,
- ServerClass = BaseHTTPServer.HTTPServer, protocol="HTTP/1.0"):
-
- if sys.argv[1:]:
- port = int(sys.argv[1])
- else:
- port = 3904
-
- print "Load event schema file: " + DcaeVariables.CommonEventSchemaV5
- with open(DcaeVariables.CommonEventSchemaV5) as file:
- global EvtSchema
- EvtSchema = json.load(file)
-
- server_address = ('', port)
-
- HandlerClass.protocol_version = protocol
- httpd = ServerClass(server_address, HandlerClass)
-
- sa = httpd.socket.getsockname()
- print "Serving HTTP on", sa[0], "port", sa[1], "..."
- httpd.serve_forever()
-
-if __name__ == '__main__':
+'''
+Created on Aug 15, 2017
+
+@author: sw6830
+'''
+import os
+import posixpath
+import BaseHTTPServer
+import urllib
+import urlparse
+import cgi, sys, shutil, mimetypes
+from jsonschema import validate
+import jsonschema, json
+import DcaeVariables
+import SimpleHTTPServer
+from robot.api import logger
+
+
+try:
+ from cStringIO import StringIO
+except ImportError:
+ from StringIO import StringIO
+
+EvtSchema = None
+DMaaPHttpd = None
+
+
+def cleanUpEvent():
+ sz = DcaeVariables.VESEventQ.qsize()
+ for i in range(sz):
+ try:
+ self.evtQueue.get_nowait()
+ except:
+ pass
+
+def enqueEvent(evt):
+ if DcaeVariables.VESEventQ != None:
+ try:
+ DcaeVariables.VESEventQ.put(evt)
+ if DcaeVariables.IsRobotRun:
+ logger.console("DMaaP Event enqued - size=" + str(len(evt)))
+ else:
+ print ("DMaaP Event enqueued - size=" + str(len(evt)))
+ return True
+ except Exception as e:
+ print (str(e))
+ return False
+ return False
+
+def dequeEvent(waitSec=25):
+ if DcaeVariables.IsRobotRun:
+ logger.console("Enter DequeEvent")
+ try:
+ evt = DcaeVariables.VESEventQ.get(True, waitSec)
+ if DcaeVariables.IsRobotRun:
+ logger.console("DMaaP Event dequeued - size=" + str(len(evt)))
+ else:
+ print("DMaaP Event dequeued - size=" + str(len(evt)))
+ return evt
+ except Exception as e:
+ if DcaeVariables.IsRobotRun:
+ logger.console(str(e))
+ logger.console("DMaaP Event dequeue timeout")
+ else:
+ print("DMaaP Event dequeue timeout")
+ return None
+
+class DMaaPHandler(BaseHTTPServer.BaseHTTPRequestHandler):
+
+ def do_PUT(self):
+ self.send_response(405)
+ return
+
+ def do_POST(self):
+
+ respCode = 0
+ # Parse the form data posted
+ '''
+ form = cgi.FieldStorage(
+ fp=self.rfile,
+ headers=self.headers,
+ environ={'REQUEST_METHOD':'POST',
+ 'CONTENT_TYPE':self.headers['Content-Type'],
+ })
+
+
+ form = cgi.FieldStorage(
+ fp=self.rfile,
+ headers=self.headers,
+ environ={"REQUEST_METHOD": "POST"})
+
+ for item in form.list:
+ print "%s=%s" % (item.name, item.value)
+
+ '''
+
+ if 'POST' not in self.requestline:
+ respCode = 405
+
+ '''
+ if respCode == 0:
+ if '/eventlistener/v5' not in self.requestline and '/eventlistener/v5/eventBatch' not in self.requestline and \
+ '/eventlistener/v5/clientThrottlingState' not in self.requestline:
+ respCode = 404
+
+
+ if respCode == 0:
+ if 'Y29uc29sZTpaakprWWpsbE1qbGpNVEkyTTJJeg==' not in str(self.headers):
+ respCode = 401
+ '''
+
+ if respCode == 0:
+ content_len = int(self.headers.getheader('content-length', 0))
+ post_body = self.rfile.read(content_len)
+
+ if DcaeVariables.IsRobotRun:
+ logger.console("\n" + "DMaaP Receive Event:\n" + post_body)
+ else:
+ print("\n" + "DMaaP Receive Event:")
+ print (post_body)
+
+ indx = post_body.index("{")
+ if indx != 0:
+ post_body = post_body[indx:]
+
+ if enqueEvent(post_body) == False:
+ print "enque event fails"
+
+ global EvtSchema
+ try:
+ if EvtSchema == None:
+ with open(DcaeVariables.CommonEventSchemaV5) as file:
+ EvtSchema = json.load(file)
+ decoded_body = json.loads(post_body)
+ jsonschema.validate(decoded_body, EvtSchema)
+ except:
+ respCode = 400
+
+ # Begin the response
+ if DcaeVariables.IsRobotRun == False:
+ print ("Response Message:")
+
+ '''
+ {
+ "200" : {
+ "description" : "Success",
+ "schema" : {
+ "$ref" : "#/definitions/DR_Pub"
+ }
+ }
+
+ rspStr = "{'responses' : {'200' : {'description' : 'Success'}}}"
+ rspStr1 = "{'count': 1, 'serverTimeMs': 3}"
+
+ '''
+
+ if respCode == 0:
+ if 'clientThrottlingState' in self.requestline:
+ self.send_response(204)
+ else:
+ self.send_response(200)
+ self.send_header('Content-Type', 'application/json')
+ self.end_headers()
+ #self.wfile.write("{'responses' : {'200' : {'description' : 'Success'}}}")
+ self.wfile.write("{'count': 1, 'serverTimeMs': 3}")
+ self.wfile.close()
+ else:
+ self.send_response(respCode)
+
+ '''
+ self.end_headers()
+ self.wfile.write('Client: %s\n' % str(self.client_address))
+ self.wfile.write('User-agent: %s\n' % str(self.headers['user-agent']))
+ self.wfile.write('Path: %s\n' % self.path)
+ self.wfile.write('Form data:\n')
+ self.wfile.close()
+
+ # Echo back information about what was posted in the form
+ for field in form.keys():
+ field_item = form[field]
+ if field_item.filename:
+ # The field contains an uploaded file
+ file_data = field_item.file.read()
+ file_len = len(file_data)
+ del file_data
+ self.wfile.write('\tUploaded %s as "%s" (%d bytes)\n' % \
+ (field, field_item.filename, file_len))
+ else:
+ # Regular form value
+ self.wfile.write('\t%s=%s\n' % (field, form[field].value))
+ '''
+ return
+
+
+ def do_GET(self):
+ """Serve a GET request."""
+ f = self.send_head()
+ if f:
+ try:
+ self.copyfile(f, self.wfile)
+ finally:
+ f.close()
+
+ def do_HEAD(self):
+ """Serve a HEAD request."""
+ f = self.send_head()
+ if f:
+ f.close()
+
+ def send_head(self):
+ """Common code for GET and HEAD commands.
+
+ This sends the response code and MIME headers.
+
+ Return value is either a file object (which has to be copied
+ to the outputfile by the caller unless the command was HEAD,
+ and must be closed by the caller under all circumstances), or
+ None, in which case the caller has nothing further to do.
+
+ """
+ path = self.translate_path(self.path)
+ f = None
+ if os.path.isdir(path):
+ parts = urlparse.urlsplit(self.path)
+ if not parts.path.endswith('/'):
+ # redirect browser - doing basically what apache does
+ self.send_response(301)
+ new_parts = (parts[0], parts[1], parts[2] + '/',
+ parts[3], parts[4])
+ new_url = urlparse.urlunsplit(new_parts)
+ self.send_header("Location", new_url)
+ self.end_headers()
+ return None
+ for index in "index.html", "index.htm":
+ index = os.path.join(path, index)
+ if os.path.exists(index):
+ path = index
+ break
+ else:
+ return self.list_directory(path)
+ ctype = self.guess_type(path)
+ try:
+ # Always read in binary mode. Opening files in text mode may cause
+ # newline translations, making the actual size of the content
+ # transmitted *less* than the content-length!
+ f = open(path, 'rb')
+ except IOError:
+ self.send_error(404, "File not found")
+ return None
+ try:
+ self.send_response(200)
+ self.send_header("Content-type", ctype)
+ fs = os.fstat(f.fileno())
+ self.send_header("Content-Length", str(fs[6]))
+ self.send_header("Last-Modified", self.date_time_string(fs.st_mtime))
+ self.end_headers()
+ return f
+ except:
+ f.close()
+ raise
+
+ def list_directory(self, path):
+ """Helper to produce a directory listing (absent index.html).
+
+ Return value is either a file object, or None (indicating an
+ error). In either case, the headers are sent, making the
+ interface the same as for send_head().
+
+ """
+ try:
+ list = os.listdir(path)
+ except os.error:
+ self.send_error(404, "No permission to list directory")
+ return None
+ list.sort(key=lambda a: a.lower())
+ f = StringIO()
+ displaypath = cgi.escape(urllib.unquote(self.path))
+ f.write('<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">')
+ f.write("<html>\n<title>Directory listing for %s</title>\n" % displaypath)
+ f.write("<body>\n<h2>Directory listing for %s</h2>\n" % displaypath)
+ f.write("<hr>\n<ul>\n")
+ for name in list:
+ fullname = os.path.join(path, name)
+ displayname = linkname = name
+ # Append / for directories or @ for symbolic links
+ if os.path.isdir(fullname):
+ displayname = name + "/"
+ linkname = name + "/"
+ if os.path.islink(fullname):
+ displayname = name + "@"
+ # Note: a link to a directory displays with @ and links with /
+ f.write('<li><a href="%s">%s</a>\n'
+ % (urllib.quote(linkname), cgi.escape(displayname)))
+ f.write("</ul>\n<hr>\n</body>\n</html>\n")
+ length = f.tell()
+ f.seek(0)
+ self.send_response(200)
+ encoding = sys.getfilesystemencoding()
+ self.send_header("Content-type", "text/html; charset=%s" % encoding)
+ self.send_header("Content-Length", str(length))
+ self.end_headers()
+ return f
+
+ def translate_path(self, path):
+ """Translate a /-separated PATH to the local filename syntax.
+
+ Components that mean special things to the local file system
+ (e.g. drive or directory names) are ignored. (XXX They should
+ probably be diagnosed.)
+
+ """
+ # abandon query parameters
+ path = path.split('?',1)[0]
+ path = path.split('#',1)[0]
+ # Don't forget explicit trailing slash when normalizing. Issue17324
+ trailing_slash = path.rstrip().endswith('/')
+ path = posixpath.normpath(urllib.unquote(path))
+ words = path.split('/')
+ words = filter(None, words)
+ path = os.getcwd()
+ for word in words:
+ if os.path.dirname(word) or word in (os.curdir, os.pardir):
+ # Ignore components that are not a simple file/directory name
+ continue
+ path = os.path.join(path, word)
+ if trailing_slash:
+ path += '/'
+ return path
+
+ def copyfile(self, source, outputfile):
+ """Copy all data between two file objects.
+
+ The SOURCE argument is a file object open for reading
+ (or anything with a read() method) and the DESTINATION
+ argument is a file object open for writing (or
+ anything with a write() method).
+
+ The only reason for overriding this would be to change
+ the block size or perhaps to replace newlines by CRLF
+ -- note however that this the default server uses this
+ to copy binary data as well.
+
+ """
+ shutil.copyfileobj(source, outputfile)
+
+ def guess_type(self, path):
+ """Guess the type of a file.
+
+ Argument is a PATH (a filename).
+
+ Return value is a string of the form type/subtype,
+ usable for a MIME Content-type header.
+
+ The default implementation looks the file's extension
+ up in the table self.extensions_map, using application/octet-stream
+ as a default; however it would be permissible (if
+ slow) to look inside the data to make a better guess.
+
+ """
+
+ base, ext = posixpath.splitext(path)
+ if ext in self.extensions_map:
+ return self.extensions_map[ext]
+ ext = ext.lower()
+ if ext in self.extensions_map:
+ return self.extensions_map[ext]
+ else:
+ return self.extensions_map['']
+
+ if not mimetypes.inited:
+ mimetypes.init() # try to read system mime.types
+ extensions_map = mimetypes.types_map.copy()
+ extensions_map.update({
+ '': 'application/octet-stream', # Default
+ '.py': 'text/plain',
+ '.c': 'text/plain',
+ '.h': 'text/plain',
+ })
+
+def test(HandlerClass = DMaaPHandler,
+ ServerClass = BaseHTTPServer.HTTPServer, protocol="HTTP/1.0", port=3904):
+ print "Load event schema file: " + DcaeVariables.CommonEventSchemaV5
+ with open(DcaeVariables.CommonEventSchemaV5) as file:
+ global EvtSchema
+ EvtSchema = json.load(file)
+
+ server_address = ('', port)
+
+ HandlerClass.protocol_version = protocol
+ httpd = ServerClass(server_address, HandlerClass)
+
+ global DMaaPHttpd
+ DMaaPHttpd = httpd
+ DcaeVariables.HTTPD = httpd
+
+ sa = httpd.socket.getsockname()
+ print "Serving HTTP on", sa[0], "port", sa[1], "..."
+ #httpd.serve_forever()
+
+def _main_ (HandlerClass = DMaaPHandler,
+ ServerClass = BaseHTTPServer.HTTPServer, protocol="HTTP/1.0"):
+
+ if sys.argv[1:]:
+ port = int(sys.argv[1])
+ else:
+ port = 3904
+
+ print "Load event schema file: " + DcaeVariables.CommonEventSchemaV5
+ with open(DcaeVariables.CommonEventSchemaV5) as file:
+ global EvtSchema
+ EvtSchema = json.load(file)
+
+ server_address = ('', port)
+
+ HandlerClass.protocol_version = protocol
+ httpd = ServerClass(server_address, HandlerClass)
+
+ sa = httpd.socket.getsockname()
+ print "Serving HTTP on", sa[0], "port", sa[1], "..."
+ httpd.serve_forever()
+
+if __name__ == '__main__':
_main_() \ No newline at end of file
diff --git a/test/csit/tests/dcaegen2/testcases/resources/DcaeLibrary.py b/test/csit/tests/dcaegen2/testcases/resources/DcaeLibrary.py
index 0242ad7ab..e581f1b2c 100644
--- a/test/csit/tests/dcaegen2/testcases/resources/DcaeLibrary.py
+++ b/test/csit/tests/dcaegen2/testcases/resources/DcaeLibrary.py
@@ -1,159 +1,159 @@
-'''
-Created on Aug 18, 2017
-
-@author: sw6830
-'''
-from robot.api import logger
-from Queue import Queue
-import uuid, time, datetime,json, threading,os, platform, subprocess,paramiko
-import DcaeVariables
-import DMaaP
-
-class DcaeLibrary(object):
-
- def __init__(self):
- pass
-
- def setup_dmaap_server(self, portNum=3904):
- if DcaeVariables.HttpServerThread != None:
- DMaaP.cleanUpEvent()
- logger.console("Clean up event from event queue before test")
- logger.info("DMaaP Server already started")
- return "true"
-
- DcaeVariables.IsRobotRun = True
- DMaaP.test(port=portNum)
- try:
- DcaeVariables.VESEventQ = Queue()
- DcaeVariables.HttpServerThread = threading.Thread(name='DMAAP_HTTPServer', target=DMaaP.DMaaPHttpd.serve_forever)
- DcaeVariables.HttpServerThread.start()
- logger.console("DMaaP Mockup Sever started")
- time.sleep(2)
- return "true"
- except Exception as e:
- print (str(e))
- return "false"
-
- def shutdown_dmaap(self):
- if DcaeVariables.HTTPD != None:
- DcaeVariables.HTTPD.shutdown()
- logger.console("DMaaP Server shut down")
- time.sleep(3)
- return "true"
- else:
- return "false"
-
- def cleanup_ves_events(self):
- if DcaeVariables.HttpServerThread != None:
- DMaaP.cleanUpEvent()
- logger.console("DMaaP event queue is cleaned up")
- return "true"
- logger.console("DMaaP server not started yet")
- return "false"
-
- def enable_vesc_https_auth(self):
- if 'Windows' in platform.system():
- try:
- client = paramiko.SSHClient()
- client.load_system_host_keys()
- #client.set_missing_host_key_policy(paramiko.WarningPolicy)
- client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
-
- client.connect(os.environ['CSIT_IP'], port=22, username=os.environ['CSIT_USER'], password=os.environ['CSIT_PD'])
- stdin, stdout, stderr = client.exec_command('%{WORKSPACE}/test/csit/tests/dcaegen2/testcases/resources/vesc_enable_https_auth.sh')
- logger.console(stdout.read())
- finally:
- client.close()
- return
- ws = os.environ['WORKSPACE']
- script2run = ws + "/test/csit/tests/dcaegen2/testcases/resources/vesc_enable_https_auth.sh"
- logger.info("Running script: " + script2run)
- logger.console("Running script: " + script2run)
- subprocess.call(script2run)
- time.sleep(5)
- return
-
- def dmaap_message_receive(self, evtobj, action='contain'):
-
- evtStr = DMaaP.dequeEvent()
- while evtStr != None:
- logger.console("DMaaP receive VES Event:\n" + evtStr)
- if action == 'contain':
- if evtobj in evtStr:
- logger.info("DMaaP Receive Expected Publish Event:\n" + evtStr)
- return 'true'
- if action == 'sizematch':
- if len(evtobj) == len(evtStr):
- return 'true'
- if action == 'dictmatch':
- evtDict = json.loads(evtStr)
- if cmp(evtobj, evtDict) == 0:
- return 'true'
- evtStr = DMaaP.dequeEvent()
- return 'false'
-
- def create_header_from_string(self, dictStr):
- logger.info("Enter create_header_from_string: dictStr")
- return dict(u.split("=") for u in dictStr.split(","))
-
- def is_json_empty(self, resp):
- logger.info("Enter is_json_empty: resp.text: " + resp.text)
- if resp.text == None or len(resp.text) < 2:
- return 'True'
- return 'False'
-
- def Generate_UUID(self):
- """generate a uuid"""
- return uuid.uuid4()
-
- def get_json_value_list(self, jsonstr, keyval):
- logger.info("Enter Get_Json_Key_Value_List")
- if jsonstr == None or len(jsonstr) < 2:
- logger.info("No Json data found")
- return []
- try:
- data = json.loads(jsonstr)
- nodelist = []
- for item in data:
- nodelist.append(item[keyval])
- return nodelist
- except Exception as e:
- logger.info("Json data parsing fails")
- print str(e)
- return []
-
- def generate_MilliTimestamp_UUID(self):
- """generate a millisecond timestamp uuid"""
- then = datetime.datetime.now()
- return int(time.mktime(then.timetuple())*1e3 + then.microsecond/1e3)
-
- def test (self):
- import json
- from pprint import pprint
-
- with open('robot/assets/dcae/ves_volte_single_fault_event.json') as data_file:
- data = json.load(data_file)
-
- data['event']['commonEventHeader']['version'] = '5.0'
- pprint(data)
-
-
-
-if __name__ == '__main__':
- '''
- dictStr = "action=getTable,Accept=application/json,Content-Type=application/json,X-FromAppId=1234908903284"
- cls = DcaeLibrary()
- #dict = cls.create_header_from_string(dictStr)
- #print str(dict)
- jsonStr = "[{'Node': 'onapfcnsl00', 'CheckID': 'serfHealth', 'Name': 'Serf Health Status', 'ServiceName': '', 'Notes': '', 'ModifyIndex': 6, 'Status': 'passing', 'ServiceID': '', 'ServiceTags': [], 'Output': 'Agent alive and reachable', 'CreateIndex': 6}]"
- lsObj = cls.get_json_value_list(jsonStr, 'Status')
- print lsObj
- '''
-
- lib = DcaeLibrary()
- lib.enable_vesc_https_auth()
-
- ret = lib.setup_dmaap_server()
- print ret
- time.sleep(100000)
-
+'''
+Created on Aug 18, 2017
+
+@author: sw6830
+'''
+from robot.api import logger
+from Queue import Queue
+import uuid, time, datetime,json, threading,os, platform, subprocess,paramiko
+import DcaeVariables
+import DMaaP
+
+class DcaeLibrary(object):
+
+ def __init__(self):
+ pass
+
+ def setup_dmaap_server(self, portNum=3904):
+ if DcaeVariables.HttpServerThread != None:
+ DMaaP.cleanUpEvent()
+ logger.console("Clean up event from event queue before test")
+ logger.info("DMaaP Server already started")
+ return "true"
+
+ DcaeVariables.IsRobotRun = True
+ DMaaP.test(port=portNum)
+ try:
+ DcaeVariables.VESEventQ = Queue()
+ DcaeVariables.HttpServerThread = threading.Thread(name='DMAAP_HTTPServer', target=DMaaP.DMaaPHttpd.serve_forever)
+ DcaeVariables.HttpServerThread.start()
+ logger.console("DMaaP Mockup Sever started")
+ time.sleep(2)
+ return "true"
+ except Exception as e:
+ print (str(e))
+ return "false"
+
+ def shutdown_dmaap(self):
+ if DcaeVariables.HTTPD != None:
+ DcaeVariables.HTTPD.shutdown()
+ logger.console("DMaaP Server shut down")
+ time.sleep(3)
+ return "true"
+ else:
+ return "false"
+
+ def cleanup_ves_events(self):
+ if DcaeVariables.HttpServerThread != None:
+ DMaaP.cleanUpEvent()
+ logger.console("DMaaP event queue is cleaned up")
+ return "true"
+ logger.console("DMaaP server not started yet")
+ return "false"
+
+ def enable_vesc_https_auth(self):
+ if 'Windows' in platform.system():
+ try:
+ client = paramiko.SSHClient()
+ client.load_system_host_keys()
+ #client.set_missing_host_key_policy(paramiko.WarningPolicy)
+ client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
+
+ client.connect(os.environ['CSIT_IP'], port=22, username=os.environ['CSIT_USER'], password=os.environ['CSIT_PD'])
+ stdin, stdout, stderr = client.exec_command('%{WORKSPACE}/test/csit/tests/dcaegen2/testcases/resources/vesc_enable_https_auth.sh')
+ logger.console(stdout.read())
+ finally:
+ client.close()
+ return
+ ws = os.environ['WORKSPACE']
+ script2run = ws + "/test/csit/tests/dcaegen2/testcases/resources/vesc_enable_https_auth.sh"
+ logger.info("Running script: " + script2run)
+ logger.console("Running script: " + script2run)
+ subprocess.call(script2run)
+ time.sleep(5)
+ return
+
+ def dmaap_message_receive(self, evtobj, action='contain'):
+
+ evtStr = DMaaP.dequeEvent()
+ while evtStr != None:
+ logger.console("DMaaP receive VES Event:\n" + evtStr)
+ if action == 'contain':
+ if evtobj in evtStr:
+ logger.info("DMaaP Receive Expected Publish Event:\n" + evtStr)
+ return 'true'
+ if action == 'sizematch':
+ if len(evtobj) == len(evtStr):
+ return 'true'
+ if action == 'dictmatch':
+ evtDict = json.loads(evtStr)
+ if cmp(evtobj, evtDict) == 0:
+ return 'true'
+ evtStr = DMaaP.dequeEvent()
+ return 'false'
+
+ def create_header_from_string(self, dictStr):
+ logger.info("Enter create_header_from_string: dictStr")
+ return dict(u.split("=") for u in dictStr.split(","))
+
+ def is_json_empty(self, resp):
+ logger.info("Enter is_json_empty: resp.text: " + resp.text)
+ if resp.text == None or len(resp.text) < 2:
+ return 'True'
+ return 'False'
+
+ def Generate_UUID(self):
+ """generate a uuid"""
+ return uuid.uuid4()
+
+ def get_json_value_list(self, jsonstr, keyval):
+ logger.info("Enter Get_Json_Key_Value_List")
+ if jsonstr == None or len(jsonstr) < 2:
+ logger.info("No Json data found")
+ return []
+ try:
+ data = json.loads(jsonstr)
+ nodelist = []
+ for item in data:
+ nodelist.append(item[keyval])
+ return nodelist
+ except Exception as e:
+ logger.info("Json data parsing fails")
+ print str(e)
+ return []
+
+ def generate_MilliTimestamp_UUID(self):
+ """generate a millisecond timestamp uuid"""
+ then = datetime.datetime.now()
+ return int(time.mktime(then.timetuple())*1e3 + then.microsecond/1e3)
+
+ def test (self):
+ import json
+ from pprint import pprint
+
+ with open('robot/assets/dcae/ves_volte_single_fault_event.json') as data_file:
+ data = json.load(data_file)
+
+ data['event']['commonEventHeader']['version'] = '5.0'
+ pprint(data)
+
+
+
+if __name__ == '__main__':
+ '''
+ dictStr = "action=getTable,Accept=application/json,Content-Type=application/json,X-FromAppId=1234908903284"
+ cls = DcaeLibrary()
+ #dict = cls.create_header_from_string(dictStr)
+ #print str(dict)
+ jsonStr = "[{'Node': 'onapfcnsl00', 'CheckID': 'serfHealth', 'Name': 'Serf Health Status', 'ServiceName': '', 'Notes': '', 'ModifyIndex': 6, 'Status': 'passing', 'ServiceID': '', 'ServiceTags': [], 'Output': 'Agent alive and reachable', 'CreateIndex': 6}]"
+ lsObj = cls.get_json_value_list(jsonStr, 'Status')
+ print lsObj
+ '''
+
+ lib = DcaeLibrary()
+ lib.enable_vesc_https_auth()
+
+ ret = lib.setup_dmaap_server()
+ print ret
+ time.sleep(100000)
+
diff --git a/test/csit/tests/dcaegen2/testcases/resources/dcae_keywords.robot b/test/csit/tests/dcaegen2/testcases/resources/dcae_keywords.robot
index 59d44e158..98b341529 100644
--- a/test/csit/tests/dcaegen2/testcases/resources/dcae_keywords.robot
+++ b/test/csit/tests/dcaegen2/testcases/resources/dcae_keywords.robot
@@ -1,133 +1,133 @@
- *** Settings ***
-Documentation The main interface for interacting with DCAE. It handles low level stuff like managing the http request library and DCAE required fields
-Library RequestsLibrary
-Library DcaeLibrary
-Library OperatingSystem
-Library Collections
-Variables ../resources/DcaeVariables.py
-Resource ../resources/dcae_properties.robot
-*** Variables ***
-${DCAE_HEALTH_CHECK_BODY} %{WORKSPACE}/test/csit/tests/dcae/testcases/assets/json_events/dcae_healthcheck.json
-*** Keywords ***
-Get DCAE Nodes
- [Documentation] Get DCAE Nodes from Consul Catalog
- #Log Creating session ${GLOBAL_DCAE_CONSUL_URL}
- ${session}= Create Session dcae ${GLOBAL_DCAE_CONSUL_URL}
- ${uuid}= Generate UUID
- ${headers}= Create Dictionary Accept=application/json Content-Type=application/json X-Consul-Token=abcd1234 X-TransactionId=${GLOBAL_APPLICATION_ID}-${uuid} X-FromAppId=${GLOBAL_APPLICATION_ID}
- ${resp}= Get Request dcae /v1/catalog/nodes headers=${headers}
- Log Received response from dcae consul: ${resp.json()}
- Should Be Equal As Strings ${resp.status_code} 200
- ${NodeList}= Get Json Value List ${resp.text} Node
- ${NodeListLength}= Get Length ${NodeList}
- ${len}= Get Length ${NodeList}
- Should Not Be Equal As Integers ${len} 0
- [return] ${NodeList}
-DCAE Node Health Check
- [Documentation] Perform DCAE Node Health Check
- [Arguments] ${NodeName}
- ${session}= Create Session dcae-${NodeName} ${GLOBAL_DCAE_CONSUL_URL}
- ${uuid}= Generate UUID
- ${headers}= Create Dictionary Accept=application/json Content-Type=application/json X-Consul-Token=abcd1234 X-TransactionId=${GLOBAL_APPLICATION_ID}-${uuid} X-FromAppId=${GLOBAL_APPLICATION_ID}
- ${hcpath}= Catenate SEPARATOR= /v1/health/node/ ${NodeName}
- ${resp}= Get Request dcae-${NodeName} ${hcpath} headers=${headers}
- Log Received response from dcae consul: ${resp.json()}
- Should Be Equal As Strings ${resp.status_code} 200
- ${StatusList}= Get Json Value List ${resp.text} Status
- ${len}= Get Length ${StatusList}
- Should Not Be Equal As Integers ${len} 0
- DCAE Check Health Status ${NodeName} ${StatusList[0]} Serf Health Status
- #Run Keyword if ${len} > 1 DCAE Check Health Status ${NodeName} ${StatusList[1]} Serf Health Status
-DCAE Check Health Status
- [Arguments] ${NodeName} ${ItemStatus} ${CheckType}
- Should Be Equal As Strings ${ItemStatus} passing
- Log Node: ${NodeName} ${CheckType} check pass ok
-VES Collector Suite Setup DMaaP
- [Documentation] Start DMaaP Mockup Server
- ${ret}= Setup DMaaP Server
- Should Be Equal As Strings ${ret} true
-VES Collector Suite Shutdown DMaaP
- [Documentation] Shutdown DMaaP Mockup Server
- ${ret}= Shutdown DMaap
- Should Be Equal As Strings ${ret} true
-Check DCAE Results
- [Documentation] Parse DCAE JSON response and make sure all rows have healthTestStatus=GREEN
- [Arguments] ${json}
- @{rows}= Get From Dictionary ${json['returns']} rows
- @{headers}= Get From Dictionary ${json['returns']} columns
- # Retrieve column names from headers
- ${columns}= Create List
- :for ${header} in @{headers}
- \ ${colName}= Get From Dictionary ${header} colName
- \ Append To List ${columns} ${colName}
- # Process each row making sure status=GREEN
- :for ${row} in @{rows}
- \ ${cells}= Get From Dictionary ${row} cells
- \ ${dict}= Make A Dictionary ${cells} ${columns}
- \ Dictionary Should Contain Item ${dict} healthTestStatus GREEN
-Make A Dictionary
- [Documentation] Given a list of column names and a list of dictionaries, map columname=value
- [Arguments] ${columns} ${names} ${valuename}=value
- ${dict}= Create Dictionary
- ${collength}= Get Length ${columns}
- ${namelength}= Get Length ${names}
- :for ${index} in range 0 ${collength}
- \ ${name}= Evaluate ${names}[${index}]
- \ ${valued}= Evaluate ${columns}[${index}]
- \ ${value}= Get From Dictionary ${valued} ${valueName}
- \ Set To Dictionary ${dict} ${name} ${value}
- [Return] ${dict}
-Get Event Data From File
- [Arguments] ${jsonfile}
- ${data}= OperatingSystem.Get File ${jsonfile}
- #Should Not Be_Equal ${data} None
- [return] ${data}
-Json String To Dictionary
- [Arguments] ${json_string}
- ${json_dict}= evaluate json.loads('''${json_string}''') json
- [return] ${json_dict}
-Dictionary To Json String
- [Arguments] ${json_dict}
- ${json_string}= evaluate json.dumps(${json_dict}) json
- [return] ${json_string}
-Get DCAE Service Component Status
- [Documentation] Get the status of a DCAE Service Component
- [Arguments] ${url} ${urlpath} ${usr} ${passwd}
- ${auth}= Create List ${usr} ${passwd}
- ${session}= Create Session dcae-service-component ${url} auth=${auth}
- ${resp}= Get Request dcae-service-component ${urlpath}
- [return] ${resp}
-Publish Event To VES Collector No Auth
- [Documentation] Send an event to VES Collector
- [Arguments] ${url} ${evtpath} ${httpheaders} ${evtdata}
- Log Creating session ${url}
- ${session}= Create Session dcaegen2-d1 ${url}
- ${resp}= Post Request dcaegen2-d1 ${evtpath} data=${evtdata} headers=${httpheaders}
- #Log Received response from dcae ${resp.json()}
- [return] ${resp}
-Publish Event To VES Collector
- [Documentation] Send an event to VES Collector
- [Arguments] ${url} ${evtpath} ${httpheaders} ${evtdata} ${user} ${pd}
- ${auth}= Create List ${user} ${pd}
- Log Creating session ${url}
- ${session}= Create Session dcaegen2-d1 ${url} auth=${auth} disable_warnings=1
- ${resp}= Post Request dcaegen2-d1 ${evtpath} data=${evtdata} headers=${httpheaders}
- #Log Received response from dcae ${resp.json()}
- [return] ${resp}
-Publish Event To VES Collector With Put Method
- [Documentation] Send an event to VES Collector
- [Arguments] ${url} ${evtpath} ${httpheaders} ${evtdata} ${user} ${pd}
- ${auth}= Create List ${user} ${pd}
- Log Creating session ${url}
- ${session}= Create Session dcae-d1 ${url} auth=${auth}
- ${resp}= Put Request dcae-d1 ${evtpath} data=${evtdata} headers=${httpheaders}
- #Log Received response from dcae ${resp.json()}
- [return] ${resp}
-Publish Event To VES Collector With Put Method No Auth
- [Documentation] Send an event to VES Collector
- [Arguments] ${url} ${evtpath} ${httpheaders} ${evtdata}
- Log Creating session ${url}
- ${session}= Create Session dcae-d1 ${url}
- ${resp}= Put Request dcae-d1 ${evtpath} data=${evtdata} headers=${httpheaders}
- #Log Received response from dcae ${resp.json()}
- [return] ${resp}
+ *** Settings ***
+Documentation The main interface for interacting with DCAE. It handles low level stuff like managing the http request library and DCAE required fields
+Library RequestsLibrary
+Library DcaeLibrary
+Library OperatingSystem
+Library Collections
+Variables ../resources/DcaeVariables.py
+Resource ../resources/dcae_properties.robot
+*** Variables ***
+${DCAE_HEALTH_CHECK_BODY} %{WORKSPACE}/test/csit/tests/dcae/testcases/assets/json_events/dcae_healthcheck.json
+*** Keywords ***
+Get DCAE Nodes
+ [Documentation] Get DCAE Nodes from Consul Catalog
+ #Log Creating session ${GLOBAL_DCAE_CONSUL_URL}
+ ${session}= Create Session dcae ${GLOBAL_DCAE_CONSUL_URL}
+ ${uuid}= Generate UUID
+ ${headers}= Create Dictionary Accept=application/json Content-Type=application/json X-Consul-Token=abcd1234 X-TransactionId=${GLOBAL_APPLICATION_ID}-${uuid} X-FromAppId=${GLOBAL_APPLICATION_ID}
+ ${resp}= Get Request dcae /v1/catalog/nodes headers=${headers}
+ Log Received response from dcae consul: ${resp.json()}
+ Should Be Equal As Strings ${resp.status_code} 200
+ ${NodeList}= Get Json Value List ${resp.text} Node
+ ${NodeListLength}= Get Length ${NodeList}
+ ${len}= Get Length ${NodeList}
+ Should Not Be Equal As Integers ${len} 0
+ [return] ${NodeList}
+DCAE Node Health Check
+ [Documentation] Perform DCAE Node Health Check
+ [Arguments] ${NodeName}
+ ${session}= Create Session dcae-${NodeName} ${GLOBAL_DCAE_CONSUL_URL}
+ ${uuid}= Generate UUID
+ ${headers}= Create Dictionary Accept=application/json Content-Type=application/json X-Consul-Token=abcd1234 X-TransactionId=${GLOBAL_APPLICATION_ID}-${uuid} X-FromAppId=${GLOBAL_APPLICATION_ID}
+ ${hcpath}= Catenate SEPARATOR= /v1/health/node/ ${NodeName}
+ ${resp}= Get Request dcae-${NodeName} ${hcpath} headers=${headers}
+ Log Received response from dcae consul: ${resp.json()}
+ Should Be Equal As Strings ${resp.status_code} 200
+ ${StatusList}= Get Json Value List ${resp.text} Status
+ ${len}= Get Length ${StatusList}
+ Should Not Be Equal As Integers ${len} 0
+ DCAE Check Health Status ${NodeName} ${StatusList[0]} Serf Health Status
+ #Run Keyword if ${len} > 1 DCAE Check Health Status ${NodeName} ${StatusList[1]} Serf Health Status
+DCAE Check Health Status
+ [Arguments] ${NodeName} ${ItemStatus} ${CheckType}
+ Should Be Equal As Strings ${ItemStatus} passing
+ Log Node: ${NodeName} ${CheckType} check pass ok
+VES Collector Suite Setup DMaaP
+ [Documentation] Start DMaaP Mockup Server
+ ${ret}= Setup DMaaP Server
+ Should Be Equal As Strings ${ret} true
+VES Collector Suite Shutdown DMaaP
+ [Documentation] Shutdown DMaaP Mockup Server
+ ${ret}= Shutdown DMaap
+ Should Be Equal As Strings ${ret} true
+Check DCAE Results
+ [Documentation] Parse DCAE JSON response and make sure all rows have healthTestStatus=GREEN
+ [Arguments] ${json}
+ @{rows}= Get From Dictionary ${json['returns']} rows
+ @{headers}= Get From Dictionary ${json['returns']} columns
+ # Retrieve column names from headers
+ ${columns}= Create List
+ :for ${header} in @{headers}
+ \ ${colName}= Get From Dictionary ${header} colName
+ \ Append To List ${columns} ${colName}
+ # Process each row making sure status=GREEN
+ :for ${row} in @{rows}
+ \ ${cells}= Get From Dictionary ${row} cells
+ \ ${dict}= Make A Dictionary ${cells} ${columns}
+ \ Dictionary Should Contain Item ${dict} healthTestStatus GREEN
+Make A Dictionary
+ [Documentation] Given a list of column names and a list of dictionaries, map columname=value
+ [Arguments] ${columns} ${names} ${valuename}=value
+ ${dict}= Create Dictionary
+ ${collength}= Get Length ${columns}
+ ${namelength}= Get Length ${names}
+ :for ${index} in range 0 ${collength}
+ \ ${name}= Evaluate ${names}[${index}]
+ \ ${valued}= Evaluate ${columns}[${index}]
+ \ ${value}= Get From Dictionary ${valued} ${valueName}
+ \ Set To Dictionary ${dict} ${name} ${value}
+ [Return] ${dict}
+Get Event Data From File
+ [Arguments] ${jsonfile}
+ ${data}= OperatingSystem.Get File ${jsonfile}
+ #Should Not Be_Equal ${data} None
+ [return] ${data}
+Json String To Dictionary
+ [Arguments] ${json_string}
+ ${json_dict}= evaluate json.loads('''${json_string}''') json
+ [return] ${json_dict}
+Dictionary To Json String
+ [Arguments] ${json_dict}
+ ${json_string}= evaluate json.dumps(${json_dict}) json
+ [return] ${json_string}
+Get DCAE Service Component Status
+ [Documentation] Get the status of a DCAE Service Component
+ [Arguments] ${url} ${urlpath} ${usr} ${passwd}
+ ${auth}= Create List ${usr} ${passwd}
+ ${session}= Create Session dcae-service-component ${url} auth=${auth}
+ ${resp}= Get Request dcae-service-component ${urlpath}
+ [return] ${resp}
+Publish Event To VES Collector No Auth
+ [Documentation] Send an event to VES Collector
+ [Arguments] ${url} ${evtpath} ${httpheaders} ${evtdata}
+ Log Creating session ${url}
+ ${session}= Create Session dcaegen2-d1 ${url}
+ ${resp}= Post Request dcaegen2-d1 ${evtpath} data=${evtdata} headers=${httpheaders}
+ #Log Received response from dcae ${resp.json()}
+ [return] ${resp}
+Publish Event To VES Collector
+ [Documentation] Send an event to VES Collector
+ [Arguments] ${url} ${evtpath} ${httpheaders} ${evtdata} ${user} ${pd}
+ ${auth}= Create List ${user} ${pd}
+ Log Creating session ${url}
+ ${session}= Create Session dcaegen2-d1 ${url} auth=${auth} disable_warnings=1
+ ${resp}= Post Request dcaegen2-d1 ${evtpath} data=${evtdata} headers=${httpheaders}
+ #Log Received response from dcae ${resp.json()}
+ [return] ${resp}
+Publish Event To VES Collector With Put Method
+ [Documentation] Send an event to VES Collector
+ [Arguments] ${url} ${evtpath} ${httpheaders} ${evtdata} ${user} ${pd}
+ ${auth}= Create List ${user} ${pd}
+ Log Creating session ${url}
+ ${session}= Create Session dcae-d1 ${url} auth=${auth}
+ ${resp}= Put Request dcae-d1 ${evtpath} data=${evtdata} headers=${httpheaders}
+ #Log Received response from dcae ${resp.json()}
+ [return] ${resp}
+Publish Event To VES Collector With Put Method No Auth
+ [Documentation] Send an event to VES Collector
+ [Arguments] ${url} ${evtpath} ${httpheaders} ${evtdata}
+ Log Creating session ${url}
+ ${session}= Create Session dcae-d1 ${url}
+ ${resp}= Put Request dcae-d1 ${evtpath} data=${evtdata} headers=${httpheaders}
+ #Log Received response from dcae ${resp.json()}
+ [return] ${resp}
diff --git a/test/csit/tests/dcaegen2/testcases/resources/dcae_properties.robot b/test/csit/tests/dcaegen2/testcases/resources/dcae_properties.robot
index be072d73c..692488814 100644
--- a/test/csit/tests/dcaegen2/testcases/resources/dcae_properties.robot
+++ b/test/csit/tests/dcaegen2/testcases/resources/dcae_properties.robot
@@ -1,15 +1,15 @@
-Documentation store all properties that can change or are used in multiple places here
-... format is all caps with underscores between words and prepended with GLOBAL
-... make sure you prepend them with GLOBAL so that other files can easily see it is from this file.
-
-
-
-*** Variables ***
-${GLOBAL_APPLICATION_ID} robot-dcaegen2
-${GLOBAL_DCAE_CONSUL_URL} http://135.205.228.129:8500
-${GLOBAL_DCAE_CONSUL_URL1} http://135.205.228.170:8500
-${GLOBAL_DCAE_VES_URL} http://localhost:8443/eventlistener/v5
-${GLOBAL_DCAE_USERNAME} console
-${GLOBAL_DCAE_PASSWORD} ZjJkYjllMjljMTI2M2Iz
-${VESC_HTTPS_USER} sample1
-${VESC_HTTPS_PD} sample1
+Documentation store all properties that can change or are used in multiple places here
+... format is all caps with underscores between words and prepended with GLOBAL
+... make sure you prepend them with GLOBAL so that other files can easily see it is from this file.
+
+
+
+*** Variables ***
+${GLOBAL_APPLICATION_ID} robot-dcaegen2
+${GLOBAL_DCAE_CONSUL_URL} http://135.205.228.129:8500
+${GLOBAL_DCAE_CONSUL_URL1} http://135.205.228.170:8500
+${GLOBAL_DCAE_VES_URL} http://localhost:8443/eventlistener/v5
+${GLOBAL_DCAE_USERNAME} console
+${GLOBAL_DCAE_PASSWORD} ZjJkYjllMjljMTI2M2Iz
+${VESC_HTTPS_USER} sample1
+${VESC_HTTPS_PD} sample1
diff --git a/test/csit/tests/holmes/testcase/RuleMgt/Rule-Mgt.robot b/test/csit/tests/holmes/testcase/RuleMgt/Rule-Mgt.robot
index 19d0f74cb..9ec65854b 100644
--- a/test/csit/tests/holmes/testcase/RuleMgt/Rule-Mgt.robot
+++ b/test/csit/tests/holmes/testcase/RuleMgt/Rule-Mgt.robot
@@ -8,7 +8,7 @@ Resource Rule-Keywords.robot
*** Test Cases ***
add_valid_rule
[Documentation] Add a valid rule.
- ${dict2} create dictionary ruleName=you1212121121 description=create a new rule! content=package ruleqwertasd;\n\nimport java.util.Locale; enabled=1 loopControlName=closedControlLoop
+ ${dict2} create dictionary ruleName=youbowu0314 description=create a new rule! content=package ruleqwertasd;\n\nimport java.util.Locale; enabled=1 loopControlName=closedControlLoop
${jsonParams} encode ${dict2}
${response} createRule ${jsonParams}
${respJson} to json ${response.content}
@@ -99,7 +99,6 @@ modify_rule_with_status
${count} get from dictionary ${respJson} totalCount
run keyword if ${count}!=1 fail query rule fails! (can't find the rule modified!) ELSE traversalRuleAttribute ${respJson}
... ${dic}
- log "response:" ${response}
modify_rule_with_invalid_status
[Documentation] modify the rule with an invalid status.
diff --git a/test/csit/tests/multicloud-vmware/hosts/sanity-host.robot b/test/csit/tests/multicloud-vmware/hosts/sanity-host.robot
new file mode 100644
index 000000000..e74a79973
--- /dev/null
+++ b/test/csit/tests/multicloud-vmware/hosts/sanity-host.robot
@@ -0,0 +1,24 @@
+*** settings ***
+Resource ../../common.robot
+Library Collections
+Library RequestsLibrary
+Library OperatingSystem
+Library json
+Library HttpLibrary.HTTP
+
+
+*** Variables ***
+@{return_ok_list}= 200 201 202
+
+
+*** Test Cases ***
+
+TestGetHost
+ [Documentation] Sanity Test - Get Host
+ ${headers} Create Dictionary Content-Type=application/json Accept=application/json
+ Create Session web_session http://${VIO_IP}:9004 headers=${headers}
+ ${resp}= Get Request web_session api/multicloud-vio/v0/vmware_fake/1234/hosts/1
+ ${response_code}= Convert To String ${resp.status_code}
+ List Should Contain Value ${return_ok_list} ${response_code}
+ ${response_json} json.loads ${resp.content}
+ #Log To Console ${response_json}
diff --git a/test/csit/tests/multicloud-vmware/images/sanity-image.robot b/test/csit/tests/multicloud-vmware/images/sanity-image.robot
new file mode 100644
index 000000000..390433d5c
--- /dev/null
+++ b/test/csit/tests/multicloud-vmware/images/sanity-image.robot
@@ -0,0 +1,24 @@
+*** settings ***
+Resource ../../common.robot
+Library Collections
+Library RequestsLibrary
+Library OperatingSystem
+Library json
+Library HttpLibrary.HTTP
+
+
+*** Variables ***
+@{return_ok_list}= 200 201 202
+
+
+*** Test Cases ***
+
+TestGetHost
+ [Documentation] Sanity Test - Get Image
+ ${headers} Create Dictionary Content-Type=application/json Accept=application/json
+ Create Session web_session http://${VIO_IP}:9004 headers=${headers}
+ ${resp}= Get Request web_session api/multicloud-vio/v0/vmware_fake/1234/images/1
+ ${response_code}= Convert To String ${resp.status_code}
+ List Should Contain Value ${return_ok_list} ${response_code}
+ ${response_json} json.loads ${resp.content}
+ #Log To Console ${response_json}
diff --git a/test/csit/tests/multicloud-vmware/networks/sanity-network.robot b/test/csit/tests/multicloud-vmware/networks/sanity-network.robot
new file mode 100644
index 000000000..5433f18cb
--- /dev/null
+++ b/test/csit/tests/multicloud-vmware/networks/sanity-network.robot
@@ -0,0 +1,24 @@
+*** settings ***
+Resource ../../common.robot
+Library Collections
+Library RequestsLibrary
+Library OperatingSystem
+Library json
+Library HttpLibrary.HTTP
+
+
+*** Variables ***
+@{return_ok_list}= 200 201 202
+
+
+*** Test Cases ***
+
+TestGetHost
+ [Documentation] Sanity Test - Get Network
+ ${headers} Create Dictionary Content-Type=application/json Accept=application/json
+ Create Session web_session http://${VIO_IP}:9004 headers=${headers}
+ ${resp}= Get Request web_session api/multicloud-vio/v0/vmware_fake/1234/networks/1
+ ${response_code}= Convert To String ${resp.status_code}
+ List Should Contain Value ${return_ok_list} ${response_code}
+ ${response_json} json.loads ${resp.content}
+ #Log To Console ${response_json}
diff --git a/test/csit/tests/multicloud-vmware/provision/jsoninput/image_file.json b/test/csit/tests/multicloud-vmware/provision/jsoninput/image_file.json
new file mode 100644
index 000000000..1e3cac6f5
--- /dev/null
+++ b/test/csit/tests/multicloud-vmware/provision/jsoninput/image_file.json
@@ -0,0 +1,7 @@
+{
+ "name": "cirros-0.3.2-x86_64-disk",
+ "container_format": "bare",
+ "disk_format": "qcow2",
+ "visibility": "public",
+ "schema": "/v2/schemas/image"
+} \ No newline at end of file
diff --git a/test/csit/tests/multicloud-vmware/provision/sanity_test_image.robot b/test/csit/tests/multicloud-vmware/provision/sanity_test_image.robot
index 0a6f2f5e8..e8e36dc14 100644
--- a/test/csit/tests/multicloud-vmware/provision/sanity_test_image.robot
+++ b/test/csit/tests/multicloud-vmware/provision/sanity_test_image.robot
@@ -13,10 +13,13 @@ Library HttpLibrary.HTTP
${get_token_url} /api/multicloud-vio/v0/vmware_fake/identity/v3/auth/tokens
${get_image_url} /api/multicloud-vio/v0/vmware_fake/glance/v2/images
${get_image_schema_url} /api/multicloud-vio/v0/vmware_fake/glance/v2/schemas/image
+${image_service} /api/multicloud-vio/v0/vmware_fake/glance/v2/image/file
+
#json files
${auth_info_json} ${SCRIPTS}/../tests/multicloud-vmware/provision/jsoninput/auth_info.json
+${image_file} ${SCRIPTS}/../tests/multicloud-vmware/provision/jsoninput/image_file.json
#global vars
${TOKEN}
@@ -42,7 +45,7 @@ GetAuthToken
-TestCaseShoeImageSchema
+TestCaseShowImageSchema
[Documentation] Sanity test - Show Image Schema
${headers} Create Dictionary Content-Type=application/json Accept=application/json X-Auth-Token=${TOKEN}
Create Session web_session http://${VIO_IP}:9004 headers=${headers}
@@ -76,3 +79,32 @@ TestCaseShowImage
List Should Contain Value ${return_ok_list} ${responese_code}
${response_json} json.loads ${resp.content}
Should Be Equal ${response_json['status']} active
+
+
+
+
+TestCaseUploadImage
+ [Documentation] Sanity test - Upload Image
+ ${json_value}= json_from_file ${image_file}
+ ${json_string}= string_from_json ${json_value}
+ ${headers} Create Dictionary Content-Type=application/json Accept=application/json X-Auth-Token=${TOKEN}
+ Create Session web_session http://${VIO_IP}:9004 headers=${headers}
+ ${resp}= POST Request web_session ${image_service} ${json_string}
+ ${responese_code}= Convert To String ${resp.status_code}
+ List Should Contain Value ${return_ok_list} ${responese_code}
+ ${response_json} json.loads ${resp.content}
+ ${IMAGEID}= Convert To String ${response_json['id']}
+ Set Global Variable ${IMAGEID}
+
+
+
+
+TestCaseDownloadImage
+ [Documentation] Sanity test - Download Image
+ ${headers} Create Dictionary Content-Type=application/json Accept=application/json X-Auth-Token=${TOKEN}
+ Create Session web_session http://${VIO_IP}:9004 headers=${headers}
+ ${resp}= Get Request web_session ${image_service}/${IMAGEID}
+ ${responese_code}= Convert To String ${resp.status_code}
+ List Should Contain Value ${return_ok_list} ${responese_code}
+ ${response_json} json.loads ${resp.content}
+ Should Be Equal ${response_json['status']} active \ No newline at end of file
diff --git a/test/csit/tests/multicloud-vmware/samples/sanity-sample.robot b/test/csit/tests/multicloud-vmware/samples/sanity-sample.robot
new file mode 100644
index 000000000..fcb784b27
--- /dev/null
+++ b/test/csit/tests/multicloud-vmware/samples/sanity-sample.robot
@@ -0,0 +1,25 @@
+*** settings ***
+Library Collections
+Library RequestsLibrary
+Library OperatingSystem
+Library json
+
+*** Variables ***
+@{return_ok_list}= 200 201 202
+${querysample_vio_url} /samples
+
+*** Test Cases ***
+VioSwaggerTest
+ [Documentation] query swagger info rest test
+ ${headers} Create Dictionary Content-Type=application/json X-TRANSACTIONID=123456 Accept=application/json
+ Create Session web_session http://${VIO_IP}:9004 headers=${headers}
+ ${resp}= Get Request web_session ${querysample_vio_url}
+ ${responese_code}= Convert To String ${resp.status_code}
+ List Should Contain Value ${return_ok_list} ${responese_code}
+ # verify logging output
+ ${response_json} json.loads ${resp.content}
+ ${logs}= Convert To String ${response_json['logs']}
+ Log To Console ${logs}
+ Should Contain ${logs} 123456
+ Should Contain ${logs} multicloud-vio
+ Should Contain ${logs} vio.samples.views \ No newline at end of file
diff --git a/test/csit/tests/multicloud/provision/data/capacity.json b/test/csit/tests/multicloud/provision/data/capacity.json
new file mode 100644
index 000000000..9b1130d08
--- /dev/null
+++ b/test/csit/tests/multicloud/provision/data/capacity.json
@@ -0,0 +1,6 @@
+{
+ "vCPU": 1,
+ "Memory": 1,
+ "Storage": 1,
+ "VIMs": ["vmware_fake"]
+} \ No newline at end of file
diff --git a/test/csit/tests/multicloud/provision/sanity_test_multivim.robot b/test/csit/tests/multicloud/provision/sanity_test_multivim.robot
index 2c1ec3f9f..4848b7459 100644
--- a/test/csit/tests/multicloud/provision/sanity_test_multivim.robot
+++ b/test/csit/tests/multicloud/provision/sanity_test_multivim.robot
@@ -1,4 +1,5 @@
*** settings ***
+Resource ../../common.robot
Library Collections
Library RequestsLibrary
Library OperatingSystem
@@ -7,6 +8,7 @@ Library json
*** Variables ***
@{return_ok_list}= 200 201 202
${queryswagger_broker_url} /api/multicloud/v0/swagger.json
+${check_capacity_broker_url} /api/multicloud/v0/check_vim_capacity
*** Test Cases ***
@@ -20,3 +22,12 @@ BrokerSwaggerTest
${response_json} json.loads ${resp.content}
${swagger_version}= Convert To String ${response_json['swagger']}
Should Be Equal ${swagger_version} 2.0
+
+BrokerCapacityTest
+ [Documentation] Check VIMs capacity
+ ${data}= Get Binary File ${CURDIR}${/}data${/}capacity.json
+ ${headers} Create Dictionary Content-Type=application/json Accept=application/json
+ Create Session web_session http://${BROKER_IP}:9001 headers=${headers}
+ ${resp}= Post Request web_session ${check_capacity_broker_url} ${data}
+ ${responese_code}= Convert To String ${resp.status_code}
+ List Should Contain Value ${return_ok_list} ${responese_code}
diff --git a/test/csit/tests/music/music-distributed-kv-store-suite/__init__.robot b/test/csit/tests/music/music-distributed-kv-store-suite/__init__.robot
new file mode 100644
index 000000000..d1da7f385
--- /dev/null
+++ b/test/csit/tests/music/music-distributed-kv-store-suite/__init__.robot
@@ -0,0 +1,2 @@
+*** Settings ***
+Documentation Integration - Suite 1 \ No newline at end of file
diff --git a/test/csit/tests/music/music-distributed-kv-store-suite/data/register_domain.json b/test/csit/tests/music/music-distributed-kv-store-suite/data/register_domain.json
new file mode 100644
index 000000000..96811ee97
--- /dev/null
+++ b/test/csit/tests/music/music-distributed-kv-store-suite/data/register_domain.json
@@ -0,0 +1,3 @@
+{
+ "domain":"test_domain"
+} \ No newline at end of file
diff --git a/test/csit/tests/music/music-distributed-kv-store-suite/music-distributed-kv-store-test.robot b/test/csit/tests/music/music-distributed-kv-store-suite/music-distributed-kv-store-test.robot
new file mode 100644
index 000000000..de26e5f6e
--- /dev/null
+++ b/test/csit/tests/music/music-distributed-kv-store-suite/music-distributed-kv-store-test.robot
@@ -0,0 +1,53 @@
+*** Settings ***
+Library OperatingSystem
+Library RequestsLibrary
+Library json
+
+*** Variables ***
+${MESSAGE} {"ping": "ok"}
+
+#global variables
+${generatedAID}
+
+*** Test Cases ***
+DKV Check Distributed KV Store API Docker Container
+ [Documentation] Checks if DKV docker container is running
+ ${rc} ${output}= Run and Return RC and Output docker ps
+ Log To Console *********************
+ Log To Console retrurn_code = ${rc}
+ Log To Console output = ${output}
+ Should Be Equal As Integers ${rc} 0
+ Should Contain ${output} nexus3.onap.org:10001/onap/music/distributed-kv-store
+
+DKV LoadDefaultProperties
+ [Documentation] Loads default configuration files into Consul
+ Create Session dkv ${DKV_HOSTNAME}:${DKV_PORT}
+ &{headers}= Create Dictionary Content-Type=application/json Accept=application/json
+ ${resp}= Get Request dkv /v1/config/load-default headers=${headers}
+ Log To Console *********************
+ Log To Console response = ${resp}
+ Log To Console body = ${resp.text}
+ Should Be Equal As Integers ${resp.status_code} 200
+
+DKV FetchDefaultProperties
+ [Documentation] Fetches all default keys from Consul
+ Create Session dkv ${DKV_HOSTNAME}:${DKV_PORT}
+ &{headers}= Create Dictionary Content-Type=application/json Accept=application/json
+ ${resp}= Get Request dkv /v1/getconfigs headers=${headers}
+ Log To Console *********************
+ Log To Console response = ${resp}
+ Log To Console body = ${resp.text}
+ Should Be Equal As Integers ${resp.status_code} 200
+
+#DKV RegisterDomain
+# [Documentation] Send a POST request to create a domain
+# Create Session dkv ${DKV_HOSTNAME}:${DKV_PORT}
+# ${data}= Get Binary File ${CURDIR}${/}data${/}register_domain.json
+# &{headers}= Create Dictionary Content-Type=application/json Accept=application/json
+# ${resp}= Post Request dkv v1/register data=${data} headers=${headers}
+# Log To Console *********************
+# Log To Console response = ${resp}
+# Log To Console body = ${resp.text}
+# Should Be Equal As Integers ${resp.status_code} 200
+
+*** Keywords ***
diff --git a/test/csit/tests/music/music-suite/music-test.robot b/test/csit/tests/music/music-suite/music-test.robot
index bb94d2955..9f8e435c8 100644
--- a/test/csit/tests/music/music-suite/music-test.robot
+++ b/test/csit/tests/music/music-suite/music-test.robot
@@ -10,6 +10,42 @@ ${MESSAGE} {"ping": "ok"}
${generatedAID}
*** Test Cases ***
+Check Cassandra Docker Container
+ [Documentation] It checks cassandra docker container is running
+ ${rc} ${output}= Run and Return RC and Output docker ps
+ Log To Console *********************
+ Log To Console retrurn_code = ${rc}
+ Log To Console output = ${output}
+ Should Be Equal As Integers ${rc} 0
+ Should Contain ${output} music-db
+
+Check Zookeeper Docker Container
+ [Documentation] It checks zookeeper docker container is running
+ ${rc} ${output}= Run and Return RC and Output docker ps
+ Log To Console *********************
+ Log To Console retrurn_code = ${rc}
+ Log To Console output = ${output}
+ Should Be Equal As Integers ${rc} 0
+ Should Contain ${output} music-zk
+
+Check Tomcat Docker Container
+ [Documentation] It checks tomcat docker container is running
+ ${rc} ${output}= Run and Return RC and Output docker ps
+ Log To Console *********************
+ Log To Console retrurn_code = ${rc}
+ Log To Console output = ${output}
+ Should Be Equal As Integers ${rc} 0
+ Should Contain ${output} music-tomcat
+
+Check Music War Docker Container
+ [Documentation] It checks music.war docker container is running
+ ${rc} ${output}= Run and Return RC and Output docker ps
+ Log To Console *********************
+ Log To Console retrurn_code = ${rc}
+ Log To Console output = ${output}
+ Should Be Equal As Integers ${rc} 0
+ Should Contain ${output} music-war
+
Get Music Version
[Documentation] It sends a REST GET request to retrieve the Music.war version
Create Session musicaas ${MUSIC_HOSTNAME}:${MUSIC_PORT}
@@ -24,7 +60,7 @@ Music AddOnBoarding
[Documentation] It sends a REST POST request to Music to Onboard a new application
Create Session musicaas ${MUSIC_HOSTNAME}:${MUSIC_PORT}
${data}= Get Binary File ${CURDIR}${/}data${/}onboard.json
- &{headers}= Create Dictionary ns=lb7254 userId=music password=music Content-Type=application/json Accept=application/json
+ &{headers}= Create Dictionary ns=lb7254 userId=music password=music Content-Type=application/json Accept=application/json
${resp}= Post Request musicaas /MUSIC/rest/v2/admin/onboardAppWithMusic data=${data} headers=${headers}
Log To Console *********************
Log To Console response = ${resp}
@@ -144,5 +180,6 @@ Music DeleteOnBoarding
Log To Console body = ${resp.text}
Should Be Equal As Integers ${resp.status_code} 200
+
*** Keywords ***
diff --git a/test/csit/tests/optf/has/__init__.robot b/test/csit/tests/optf-has/has/__init__.robot
index fb654d7bb..fb654d7bb 100644
--- a/test/csit/tests/optf/has/__init__.robot
+++ b/test/csit/tests/optf-has/has/__init__.robot
diff --git a/test/csit/tests/optf-has/has/data/healthcheck.json b/test/csit/tests/optf-has/has/data/healthcheck.json
new file mode 100644
index 000000000..926bb2898
--- /dev/null
+++ b/test/csit/tests/optf-has/has/data/healthcheck.json
@@ -0,0 +1,19 @@
+{
+ "consistencyInfo": {
+ "type": "eventual"
+ },
+ "values": {
+ "created": 1479482603641,
+ "message": "",
+ "name": "foo",
+ "recommend_max": 1,
+ "solution": "{\"healthcheck\": \" healthcheck\"}",
+ "status": "solved",
+ "template": "{\"healthcheck\": \"healthcheck\"}",
+ "timeout": 3600,
+ "translation": "{\"healthcheck\": \" healthcheck\"}",
+ "updated": 1484324150629
+ }
+}
+
+
diff --git a/test/csit/tests/optf-has/has/data/onboard.json b/test/csit/tests/optf-has/has/data/onboard.json
new file mode 100644
index 000000000..a4939c459
--- /dev/null
+++ b/test/csit/tests/optf-has/has/data/onboard.json
@@ -0,0 +1,6 @@
+{
+ "appname": "conductor",
+ "userId": "conductor",
+ "isAAF": "false",
+ "password": "c0nduct0r"
+}
diff --git a/test/csit/tests/optf-has/has/data/plan_with_lati_and_longi.json b/test/csit/tests/optf-has/has/data/plan_with_lati_and_longi.json
new file mode 100644
index 000000000..5e35d6abf
--- /dev/null
+++ b/test/csit/tests/optf-has/has/data/plan_with_lati_and_longi.json
@@ -0,0 +1,41 @@
+{
+ "name":"onap template with lati and longi without constraints and without optimizations",
+ "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,
+ "physical_location":"DLLSTX233",
+ "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":{
+
+ },
+ "optimization":{
+
+ }
+ }
+}
+
diff --git a/test/csit/tests/optf-has/has/data/plan_with_short_distance_constraint.json b/test/csit/tests/optf-has/has/data/plan_with_short_distance_constraint.json
new file mode 100644
index 000000000..68a7e119b
--- /dev/null
+++ b/test/csit/tests/optf-has/has/data/plan_with_short_distance_constraint.json
@@ -0,0 +1,64 @@
+{
+ "name":"onap template with short distance constraint",
+ "template":{
+ "homing_template_version":"2017-10-10",
+ "parameters":{
+ "service_name":"Residential vCPE",
+ "service_id":"vcpe_service_id",
+ "customer_lat":25.395968,
+ "customer_long":-51.135344,
+ "physical_location":"DLLSTX233",
+ "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":{
+ "distance-vg":{
+ "type":"distance_to_location",
+ "demands":[
+ "vG"
+ ],
+ "properties":{
+ "distance":"< 1 km",
+ "location":"customer_loc"
+ }
+ }
+ },
+ "optimization":{
+ "minimize": {
+ "sum": [
+ {
+ "distance_between": [
+ "customer_loc",
+ "vG"
+ ]
+ },
+ {
+ "distance_between": [
+ "customer_loc",
+ "vG"
+ ]
+ }
+ ]
+ }
+ }
+ }
+}
diff --git a/test/csit/tests/optf-has/has/data/plan_with_wrong_distance_constraint.json b/test/csit/tests/optf-has/has/data/plan_with_wrong_distance_constraint.json
new file mode 100644
index 000000000..9f25c2dff
--- /dev/null
+++ b/test/csit/tests/optf-has/has/data/plan_with_wrong_distance_constraint.json
@@ -0,0 +1,63 @@
+{
+ "name":"onap template with wrong distance constraint",
+ "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,
+ "physical_location":"DLLSTX233",
+ "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":{
+ "distance-vg":{
+ "demands":[
+ "vG"
+ ],
+ "properties":{
+ "distance":"< 1 km",
+ "location":"customer_loc"
+ }
+ }
+ },
+ "optimization":{
+ "minimize": {
+ "sum": [
+ {
+ "distance_between": [
+ "customer_loc",
+ "vG"
+ ]
+ },
+ {
+ "distance_between": [
+ "customer_loc",
+ "vG"
+ ]
+ }
+ ]
+ }
+ }
+ }
+}
diff --git a/test/csit/tests/optf-has/has/data/plan_with_wrong_version.json b/test/csit/tests/optf-has/has/data/plan_with_wrong_version.json
new file mode 100644
index 000000000..c0618bfbf
--- /dev/null
+++ b/test/csit/tests/optf-has/has/data/plan_with_wrong_version.json
@@ -0,0 +1,41 @@
+{
+ "name":"onap template with wrong version",
+ "template":{
+ "homing_template_version":"xxxx-yy-zz",
+ "parameters":{
+ "service_name":"Residential vCPE",
+ "service_id":"vcpe_service_id",
+ "customer_lat":45.395968,
+ "customer_long":-71.135344,
+ "physical_location":"DLLSTX233",
+ "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":{
+
+ },
+ "optimization":{
+
+ }
+ }
+}
+
diff --git a/test/csit/tests/optf-has/has/data/plan_without_demand_section.json b/test/csit/tests/optf-has/has/data/plan_without_demand_section.json
new file mode 100644
index 000000000..fe5d2fa65
--- /dev/null
+++ b/test/csit/tests/optf-has/has/data/plan_without_demand_section.json
@@ -0,0 +1,33 @@
+{
+ "name":"onap template without demand section",
+ "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,
+ "physical_location":"DLLSTX233",
+ "REQUIRED_MEM":4,
+ "REQUIRED_DISK":100,
+ "pnf_id":"some_pnf_id"
+ },
+ "locations":{
+ "customer_loc":{
+ "latitude":{
+ "get_param":"customer_lat"
+ },
+ "longitude":{
+ "get_param":"customer_long"
+ }
+ }
+ },
+ "constraints":{
+
+ },
+ "optimization":{
+
+ }
+ }
+}
+
diff --git a/test/csit/tests/optf-has/has/optf_has_test.robot b/test/csit/tests/optf-has/has/optf_has_test.robot
new file mode 100644
index 000000000..62db10774
--- /dev/null
+++ b/test/csit/tests/optf-has/has/optf_has_test.robot
@@ -0,0 +1,302 @@
+*** Settings ***
+Library OperatingSystem
+Library RequestsLibrary
+Library json
+
+*** Variables ***
+${MESSAGE} {"ping": "ok"}
+${RESP_STATUS} "error"
+${RESP_MESSAGE_WRONG_VERSION} "conductor_template_version must be one of: 2016-11-01"
+${RESP_MESSAGE_WITHOUT_DEMANDS} Undefined Demand
+
+#global variables
+${generatedPlanId}
+${generatedAID}
+${resultStatus}
+
+*** Test Cases ***
+Check Cassandra Docker Container
+ [Documentation] It checks cassandra docker container is running
+ ${rc} ${output}= Run and Return RC and Output docker ps
+ Log To Console *********************
+ Log To Console retrurn_code = ${rc}
+ Log To Console output = ${output}
+ Should Be Equal As Integers ${rc} 0
+ Should Contain ${output} music-db
+
+Check Zookeeper Docker Container
+ [Documentation] It checks zookeeper docker container is running
+ ${rc} ${output}= Run and Return RC and Output docker ps
+ Log To Console *********************
+ Log To Console retrurn_code = ${rc}
+ Log To Console output = ${output}
+ Should Be Equal As Integers ${rc} 0
+ Should Contain ${output} music-zk
+
+Check Tomcat Docker Container
+ [Documentation] It checks tomcat docker container is running
+ ${rc} ${output}= Run and Return RC and Output docker ps
+ Log To Console *********************
+ Log To Console retrurn_code = ${rc}
+ Log To Console output = ${output}
+ Should Be Equal As Integers ${rc} 0
+ Should Contain ${output} music-tomcat
+
+Check Music War Docker Container
+ [Documentation] It checks music.war docker container is running
+ ${rc} ${output}= Run and Return RC and Output docker ps
+ Log To Console *********************
+ Log To Console retrurn_code = ${rc}
+ Log To Console output = ${output}
+ Should Be Equal As Integers ${rc} 0
+ Should Contain ${output} music-war
+
+Get Music Version
+ [Documentation] It sends a REST GET request to retrieve the Music.war version
+ Create Session musicaas ${MUSIC_HOSTNAME}:${MUSIC_PORT}
+ &{headers}= Create Dictionary Content-Type=application/json Accept=application/json
+ ${resp}= Get Request musicaas /MUSIC/rest/v2/version headers=${headers}
+ Log To Console *********************
+ Log To Console response = ${resp}
+ Log To Console body = ${resp.text}
+ Should Be Equal As Integers ${resp.status_code} 200
+
+Check ConductorApi Docker Container
+ [Documentation] It checks conductor-api docker container is running
+ ${rc} ${output}= Run and Return RC and Output docker ps
+ Log To Console *********************
+ Log To Console retrurn_code = ${rc}
+ Log To Console output = ${output}
+ Should Be Equal As Integers ${rc} 0
+ Should Contain ${output} cond-api
+
+Check ConductorController Docker Container
+ [Documentation] It checks conductor-controller docker container is running
+ ${rc} ${output}= Run and Return RC and Output docker ps
+ Log To Console *********************
+ Log To Console retrurn_code = ${rc}
+ Log To Console output = ${output}
+ Should Be Equal As Integers ${rc} 0
+ Should Contain ${output} cond-cont
+
+Check ConductorSolver Docker Container
+ [Documentation] It checks conductor-solver docker container is running
+ ${rc} ${output}= Run and Return RC and Output docker ps
+ Log To Console *********************
+ Log To Console retrurn_code = ${rc}
+ Log To Console output = ${output}
+ Should Be Equal As Integers ${rc} 0
+ Should Contain ${output} cond-solv
+
+Check ConductorReservation Docker Container
+ [Documentation] It checks conductor-reservation docker container is running
+ ${rc} ${output}= Run and Return RC and Output docker ps
+ Log To Console *********************
+ Log To Console retrurn_code = ${rc}
+ Log To Console output = ${output}
+ Should Be Equal As Integers ${rc} 0
+ Should Contain ${output} cond-resv
+
+Check ConductorData Docker Container
+ [Documentation] It checks conductor-data docker container is running
+ ${rc} ${output}= Run and Return RC and Output docker ps
+ Log To Console *********************
+ Log To Console retrurn_code = ${rc}
+ Log To Console output = ${output}
+ Should Be Equal As Integers ${rc} 0
+ Should Contain ${output} cond-data
+
+Get Root Url
+ [Documentation] It sends a REST GET request to root url
+ Create Session optf-cond ${COND_HOSTNAME}:${COND_PORT}
+ &{headers}= Create Dictionary Content-Type=application/json Accept=application/json
+ ${resp}= Get Request optf-cond / headers=${headers}
+ Log To Console *********************
+ Log To Console response = ${resp}
+ Log To Console body = ${resp.text}
+ Should Be Equal As Integers ${resp.status_code} 200
+
+Conductor AddHealthcheck Row Into Music
+ [Documentation] It sends a REST PUT request to Music to inject healthcheck plan
+ Create Session musicaas ${MUSIC_HOSTNAME}:${MUSIC_PORT}
+ ${data}= Get Binary File ${CURDIR}${/}data${/}healthcheck.json
+ &{headers}= Create Dictionary ns=conductor userId=conductor password=c0nduct0r Content-Type=application/json Accept=application/json
+ ${resp}= Put Request musicaas /MUSIC/rest/v2/keyspaces/conductor/tables/plans/rows?id=healthcheck data=${data} headers=${headers}
+ Log To Console *********************
+ Log To Console response = ${resp}
+ Log To Console body = ${resp.text}
+ ${response_json} json.loads ${resp.content}
+ Should Be Equal As Integers ${resp.status_code} 200
+ Sleep 5s Wait Injection effectiveness
+
+Healthcheck
+ [Documentation] It sends a REST GET request to healthcheck url
+ 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/healthcheck headers=${headers}
+ Log To Console *********************
+ Log To Console response = ${resp}
+ Log To Console body = ${resp.text}
+ Should Be Equal As Integers ${resp.status_code} 200
+
+SendPlanWithWrongVersion
+ [Documentation] It sends a POST request to conductor
+ Create Session optf-cond ${COND_HOSTNAME}:${COND_PORT}
+ ${data}= Get Binary File ${CURDIR}${/}data${/}plan_with_wrong_version.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 10s Wait Plan Resolution
+
+GetPlanWithWrongVersion
+ [Documentation] It sends a REST GET request to capture error
+ 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 error ${resultStatus}
+
+SendPlanWithoutDemandSection
+ [Documentation] It sends a POST request to conductor
+ Create Session optf-cond ${COND_HOSTNAME}:${COND_PORT}
+ ${data}= Get Binary File ${CURDIR}${/}data${/}plan_without_demand_section.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 10s Wait Plan Resolution
+
+GetPlanWithoutDemandSection
+ [Documentation] It sends a REST GET request to capture error
+ 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 error ${resultStatus}
+
+SendPlanWithWrongConstraint
+ [Documentation] It sends a POST request to conductor
+ Create Session optf-cond ${COND_HOSTNAME}:${COND_PORT}
+ ${data}= Get Binary File ${CURDIR}${/}data${/}plan_with_wrong_distance_constraint.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 10s Wait Plan Resolution
+
+GetPlanWithWrongConstraint
+ [Documentation] It sends a REST GET request to capture error
+ 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 error ${resultStatus}
+
+
+SendPlanWithLatiAndLongi
+ [Documentation] It sends a POST request to conductor
+ Create Session optf-cond ${COND_HOSTNAME}:${COND_PORT}
+ ${data}= Get Binary File ${CURDIR}${/}data${/}plan_with_lati_and_longi.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
+
+GetPlanWithLatiAndLongi
+ [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}
+
+SendPlanWithShortDistanceConstraint
+ [Documentation] It sends a POST request to conductor
+ Create Session optf-cond ${COND_HOSTNAME}:${COND_PORT}
+ ${data}= Get Binary File ${CURDIR}${/}data${/}plan_with_short_distance_constraint.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
+
+GetPlanWithShortDistanceConstraint
+ [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/optf/osdf/data/sampletest.txt b/test/csit/tests/optf-has/osdf/data/sampletest.txt
index 9f4e8d7d6..9f4e8d7d6 100644
--- a/test/csit/tests/optf/osdf/data/sampletest.txt
+++ b/test/csit/tests/optf-has/osdf/data/sampletest.txt
diff --git a/test/csit/tests/optf/has/data/plan_with_wrong_version.json b/test/csit/tests/optf/has/data/plan_with_wrong_version.json
deleted file mode 100644
index 9471fbf82..000000000
--- a/test/csit/tests/optf/has/data/plan_with_wrong_version.json
+++ /dev/null
@@ -1,175 +0,0 @@
-{
- "name": "onap optf has plan with wrong version",
- "template": {
- "conductor_template_version": "yyyy-mm-dd",
- "parameters": {
- "UCPEHOST": "chcil129snd",
- "CUSTOMER":"21014aa2-526b-11e6-beb8-9e71128cae77"
- },
- "locations": {
- "customer_loc": {
- "host_name": {
- "get_param": "UCPEHOST"
- }
- }
- },
- "demands": {
- "vHNPortalaaS_PRIMARY_1": [
- {
- "inventory_provider": "aai",
- "inventory_type": "service",
- "service_type": "HNPORTAL",
- "customer_id": {"get_param": "CUSTOMER"}
- },
- {
- "inventory_provider": "aai",
- "inventory_type": "cloud"
- }
- ],
- "vHNPortalaaS_SECONDARY_1": [
- {
- "inventory_provider": "aai",
- "inventory_type": "service",
- "service_type": "HNPORTAL",
- "customer_id": {"get_param": "CUSTOMER"}
- },
- {
- "inventory_provider": "aai",
- "inventory_type": "cloud"
- }
- ],
- "vHNGWaaS_PRIMARY_1": [
- {
- "inventory_provider": "aai",
- "inventory_type": "service",
- "service_type": "HNGATEWAY",
- "customer_id": {"get_param": "CUSTOMER"}
- },
- {
- "inventory_provider": "aai",
- "inventory_type": "cloud"
- }
- ],
- "vHNGWaaS_SECONDARY_1": [
- {
- "inventory_provider": "aai",
- "inventory_type": "service",
- "service_type": "HNGATEWAY",
- "customer_id": {"get_param": "CUSTOMER"}
- },
- {
- "inventory_provider": "aai",
- "inventory_type": "cloud"
- }
- ],
- "vVIGaaS_PRIMARY_1": [
- {
- "inventory_provider": "aai",
- "inventory_type": "service",
- "service_type": "VVIG",
- "customer_id": {"get_param": "CUSTOMER"}
- }
- ],
- "vVIGaaS_SECONDARY_1": [
- {
- "inventory_provider": "aai",
- "inventory_type": "service",
- "service_type": "VVIG",
- "customer_id": {"get_param": "CUSTOMER"}
- }
- ],
- "vVIGaaS_PRIMARY_2": [
- {
- "inventory_provider": "aai",
- "inventory_type": "service",
- "service_type": "VVIG",
- "customer_id": {"get_param": "CUSTOMER"}
- }
- ],
- "vVIGaaS_SECONDARY_2": [
- {
- "inventory_provider": "aai",
- "inventory_type": "service",
- "service_type": "VVIG",
- "customer_id": {"get_param": "CUSTOMER"}
- }
- ]
- },
- "constraints": {
- "distance-vvig": {
- "type": "distance_to_location",
- "demands": [
- "vVIGaaS_SECONDARY_1",
- "vVIGaaS_PRIMARY_1"
- ],
- "properties": {
- "distance": "< 5000 km",
- "location": "customer_loc"
- }
- },
- "distance-vgw": {
- "type": "distance_to_location",
- "demands": [
- "vHNGWaaS_SECONDARY_1",
- "vHNGWaaS_PRIMARY_1"
- ],
- "properties": {
- "distance": "< 5000 km",
- "location": "customer_loc"
- }
- },
- "zone-vhngw": {
- "type": "zone",
- "demands": [
- "vHNGWaaS_SECONDARY_1",
- "vHNGWaaS_PRIMARY_1"
- ],
- "properties": {
- "qualifier": "different",
- "category": "complex"
- }
- },
- "zone-vhnportal": {
- "type": "zone",
- "demands": [
- "vHNPortalaaS_SECONDARY_1",
- "vHNPortalaaS_PRIMARY_1"
- ],
- "properties": {
- "qualifier": "different",
- "category": "complex"
- }
- }
- },
- "optimization": {
- "minimize": {
- "sum": [
- {
- "product": [
- 1,
- {
- "distance_between": [
- "customer_loc",
- "vVIGaaS_PRIMARY_1"
- ]
- }
- ]
- },
- {
- "product": [
- 1,
- {
- "distance_between": [
- "customer_loc",
- "vHNGWaaS_PRIMARY_1"
- ]
- }
- ]
- }
- ]
- }
- }
-},
- "timeout": 5,
- "limit": 3
-}
diff --git a/test/csit/tests/optf/has/data/plan_without_demand_section.json b/test/csit/tests/optf/has/data/plan_without_demand_section.json
deleted file mode 100644
index 87a459d87..000000000
--- a/test/csit/tests/optf/has/data/plan_without_demand_section.json
+++ /dev/null
@@ -1,93 +0,0 @@
-{
- "name": "onap optf has plan with wrong version",
- "template": {
- "conductor_template_version": "2016-11-01",
- "parameters": {
- "UCPEHOST": "chcil129snd",
- "CUSTOMER":"21014aa2-526b-11e6-beb8-9e71128cae77"
- },
- "locations": {
- "customer_loc": {
- "host_name": {
- "get_param": "UCPEHOST"
- }
- }
- },
- "constraints": {
- "distance-vvig": {
- "type": "distance_to_location",
- "demands": [
- "vVIGaaS_SECONDARY_1",
- "vVIGaaS_PRIMARY_1"
- ],
- "properties": {
- "distance": "< 5000 km",
- "location": "customer_loc"
- }
- },
- "distance-vgw": {
- "type": "distance_to_location",
- "demands": [
- "vHNGWaaS_SECONDARY_1",
- "vHNGWaaS_PRIMARY_1"
- ],
- "properties": {
- "distance": "< 5000 km",
- "location": "customer_loc"
- }
- },
- "zone-vhngw": {
- "type": "zone",
- "demands": [
- "vHNGWaaS_SECONDARY_1",
- "vHNGWaaS_PRIMARY_1"
- ],
- "properties": {
- "qualifier": "different",
- "category": "complex"
- }
- },
- "zone-vhnportal": {
- "type": "zone",
- "demands": [
- "vHNPortalaaS_SECONDARY_1",
- "vHNPortalaaS_PRIMARY_1"
- ],
- "properties": {
- "qualifier": "different",
- "category": "complex"
- }
- }
- },
- "optimization": {
- "minimize": {
- "sum": [
- {
- "product": [
- 1,
- {
- "distance_between": [
- "customer_loc",
- "vVIGaaS_PRIMARY_1"
- ]
- }
- ]
- },
- {
- "product": [
- 1,
- {
- "distance_between": [
- "customer_loc",
- "vHNGWaaS_PRIMARY_1"
- ]
- }
- ]
- }
- ]
- }
- }
-},
- "timeout": 5,
- "limit": 3
-}
diff --git a/test/csit/tests/optf/has/optf_has_test.robot b/test/csit/tests/optf/has/optf_has_test.robot
deleted file mode 100644
index 183cb6859..000000000
--- a/test/csit/tests/optf/has/optf_has_test.robot
+++ /dev/null
@@ -1,29 +0,0 @@
-*** Settings ***
-Library OperatingSystem
-Library RequestsLibrary
-Library json
-
-*** Variables ***
-${MESSAGE} {"ping": "ok"}
-${RESP_STATUS} "error"
-${RESP_MESSAGE_WRONG_VERSION} "conductor_template_version must be one of: 2016-11-01"
-${RESP_MESSAGE_WITHOUT_DEMANDS} Undefined Demand
-
-#global variables
-${generatedPlanId}
-
-*** Test Cases ***
-Get Root Url
- [Documentation] It sends a REST GET request to root url
- 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/ headers=${headers}
- Log To Console *********************
- Log To Console response = ${resp}
- Log To Console body = ${resp.text}
- Should Be Equal As Integers ${resp.status_code} 200
-
-
-*** Keywords ***
-
-
diff --git a/test/csit/tests/policy/suite1/Policy-CSIT.robot b/test/csit/tests/policy/suite1/Policy-CSIT.robot
index fd5e23048..5909abd29 100644
--- a/test/csit/tests/policy/suite1/Policy-CSIT.robot
+++ b/test/csit/tests/policy/suite1/Policy-CSIT.robot
@@ -16,10 +16,12 @@ ${CREATE_CONFIG_VFW_TEMPLATE} ${CURDIR}/configpolicy_vFW_R1.template
${CREATE_CONFIG_VDNS_TEMPLATE} ${CURDIR}/configpolicy_vDNS_R1.template
${CREATE_CONFIG_VCPE_TEMPLATE} ${CURDIR}/configpolicy_vCPE_R1.template
${CREATE_OPS_VFW_TEMPLATE} ${CURDIR}/opspolicy_VFW_R1.template
+${CREATE_OOF_HPA_TEMPLATE} ${CURDIR}/oofpolicy_HPA_R1.template
${PUSH_POLICY_TEMPLATE} ${CURDIR}/pushpolicy.template
${CREATE_OPS_VDNS_TEMPLATE} ${CURDIR}/opspolicy_VDNS_R1.template
${DEL_POLICY_TEMPLATE} ${CURDIR}/deletepolicy.template
${GETCONFIG_TEMPLATE} ${CURDIR}/getconfigpolicy.template
+${GETOOF_TEMPLATE} ${CURDIR}/getoofpolicy.template
${CONFIG_POLICY_VFW_NAME} vFirewall
${CONFIG_POLICY_VFW_TYPE} MicroService
${CONFIG_POLICY_VDNS_NAME} vLoadBalancer
@@ -34,6 +36,8 @@ ${OPS_POLICY_VCPE_NAME} vCPE
${OPS_POLICY_VCPE_TYPE} BRMS_PARAM
${OPS_POLICY_VOLTE_NAME} VoLTE
${OPS_POLICY_VOLTE_TYPE} BRMS_PARAM
+${OOF_POLICY_HPA_NAME} HPA
+${OOF_POLICY_HPA_TYPE} Optimization
${file_path} ../testsuite/robot/assets/templates/ControlLoopDemo__closedLoopControlName.drl
${RESOURCE_PATH_UPLOAD} /pdp/api/policyEngineImport?importParametersJson=%7B%22serviceName%22%3A%22Manyu456%22%2C%20%22serviceType%22%3A%22BRMSPARAM%22%7D
${CREATE_OPS_VCPE_TEMPLATE} ${CURDIR}/opspolicy_vCPE_R1.template
@@ -75,6 +79,12 @@ VOLTE Ops Policy
${OPS_POLICY_VOLTE_NAME}= Create Ops VOLTE Policy
Push Ops Policy ${OPS_POLICY_VOLTE_NAME} ${OPS_POLICY_VOLTE_TYPE}
#VOLTE Policy Tests
+
+HPA OOF Policy
+ ${OOF_POLICY_HPA_NAME}= Create OOF HPA Policy
+ Push Config Policy ${OOF_POLICY_HPA_NAME} ${OOF_POLICY_HPA_TYPE}
+ #HPA Policy Tests
+
VFW Get Configs Policy
Sleep 5s
Get Configs VFW Policy
@@ -87,6 +97,10 @@ VCPE Get Configs Policy
Sleep 5s
Get Configs VCPE Policy
+HPA Get OOF Policy
+ Sleep 5s
+ Get OOF HPA Policy
+
*** Keywords ***
VFW Policy Tests
@@ -114,6 +128,11 @@ VOLTE Policy Tests
${OPS_POLICY_VOLTE_NAME}= Create Ops VOLTE Policy
Push Ops Policy ${OPS_POLICY_VOLTE_NAME} ${OPS_POLICY_VOLTE_TYPE}
+HPA Policy Tests
+ ${OOF_POLICY_HPA_NAME}= Create OOF HPA Policy
+ Push Config Policy ${OOF_POLICY_HPA_NAME} ${OOF_POLICY_HPA_TYPE}
+ Get OOF HPA Policy
+
Get Configs VFW Policy
[Documentation] Get Config Policy for VFW
${getconfigpolicy}= Catenate .*${CONFIG_POLICY_VFW_NAME}*
@@ -122,6 +141,26 @@ Get Configs VFW Policy
${get_resp} = Run Policy Get Configs Request ${RESOURCE_PATH_GET_CONFIG} ${output}
Should Be Equal As Strings ${get_resp.status_code} 200
+Create OOF HPA Policy
+ [Documentation] Create OOF Policy
+ ${randompolicyname} = Create Policy Name
+ ${policyname1}= Catenate com.${randompolicyname}_HPA
+ ${OOF_POLICY_HPA_NAME}= Set Test Variable ${policyname1}
+ ${hpapolicy}= Create Dictionary policy_name=${policyname1}
+ ${output} = Fill JSON Template File ${CREATE_OOF_HPA_TEMPLATE} ${hpapolicy}
+ ${put_resp} = Run Policy Put Request ${RESOURCE_PATH_CREATE} ${output}
+ Log ${put_resp}
+ Should Be Equal As Strings ${put_resp.status_code} 200
+ [Return] ${policyname1}
+
+Get OOF HPA Policy
+ [Documentation] Get OOF Policy for HPA
+ ${gethpapolicy}= Catenate .*${OOF_POLICY_HPA_NAME}*
+ ${hpapolicy_name}= Create Dictionary oof_policy_name=${gethpapolicy}
+ ${output} = Fill JSON Template File ${GETOOF_TEMPLATE} ${hpapolicy_name}
+ ${get_resp} = Run Policy Get Configs Request ${RESOURCE_PATH_GET_CONFIG} ${output}
+ Should Be Equal As Strings ${get_resp.status_code} 200
+
Create Config VFW Policy
[Documentation] Create Config Policy
${randompolicyname} = Create Policy Name
@@ -186,6 +225,15 @@ Delete Config Policy
${put_resp} = Run Policy Delete Request ${RESOURCE_PATH_CREATE_DELETE} ${output}
Should Be Equal As Strings ${put_resp.status_code} 200
+Delete OOF Policy
+ [Documentation] Delete OOF Policy
+ [Arguments] ${policy_name}
+ ${policyname3}= Catenate com.Config_OOF_${policy_name}.1.xml
+ ${dict}= Create Dictionary policy_name=${policyname3}
+ ${output} = Fill JSON Template ${DEL_POLICY_TEMPLATE} ${dict}
+ ${put_resp} = Run Policy Delete Request ${RESOURCE_PATH_CREATE_DELETE} ${output}
+ Should Be Equal As Strings ${put_resp.status_code} 200
+
Get Configs VDNS Policy
[Documentation] Get Config Policy for VDNS
${getconfigpolicy}= Catenate .*${CONFIG_POLICY_VDNS_NAME}*
@@ -267,4 +315,4 @@ Upload DRL file
# ${files2} = {'file': open('../testsuite/robot/assets/templates/ControlLoopDemo__closedLoopControlName.drl', 'rb')}
# ${files}= Create Dictionary file ${file_data}
${put_resp} = Run Policy Post form Request ${RESOURCE_PATH_UPLOAD} ${files}
- Should Be Equal As Strings ${put_resp.status_code} 200 \ No newline at end of file
+ Should Be Equal As Strings ${put_resp.status_code} 200
diff --git a/test/csit/tests/policy/suite1/getoofpolicy.template b/test/csit/tests/policy/suite1/getoofpolicy.template
new file mode 100644
index 000000000..37fe0471b
--- /dev/null
+++ b/test/csit/tests/policy/suite1/getoofpolicy.template
@@ -0,0 +1,6 @@
+{
+ "configAttributes" : {
+ },
+ "policyName" : "${oof_policy_name}",
+ "unique" : false
+}
diff --git a/test/csit/tests/policy/suite1/oofpolicy_HPA_R1.template b/test/csit/tests/policy/suite1/oofpolicy_HPA_R1.template
new file mode 100644
index 000000000..3a170b207
--- /dev/null
+++ b/test/csit/tests/policy/suite1/oofpolicy_HPA_R1.template
@@ -0,0 +1,6 @@
+{
+ "configBody": "{\"service\":\"hpaPolicy\",\"policyName\":\"testWorkingTOSCA\",\"description\":\"testing\",\"templateVersion\":\"OpenSource.version.1\",\"version\":\"CSIT\",\"priority\":\"5\",\"riskType\":\"SampleRiskType\",\"riskLevel\":\"3\",\"guard\":\"False\",\"content\":{\"identity\":\"testIdentity\",\"policyScope\":[\"test1\",\"test2\",\"test3\"],\"policyType\":\"hpaPolicy\",\"resources\":\"testResources1\",\"flavorFeatures\":[{\"flavorLabel\":\"testFlavor\",\"flavorProperties\":[{\"score\":\"testScore\",\"featureAttributes\":[{\"unit\":\"testUnit\",\"attribute\":\"teatFeatureAttribute\",\"value\":\"testValue\",\"operator\":\"any\"}],\"mandatory\":\"testMandatory\",\"hpaFeature\":\"testHAPFeature\",\"architecture\":\"testArch\"}]}]}}",
+ "policyConfigType": "Optimization",
+ "policyName": "${policy_name}",
+ "onapName": "OOF"
+}
diff --git a/test/csit/tests/portal-sdk/testsuites/test1.robot b/test/csit/tests/portal-sdk/testsuites/test1.robot
index 84579d017..00714024f 100644
--- a/test/csit/tests/portal-sdk/testsuites/test1.robot
+++ b/test/csit/tests/portal-sdk/testsuites/test1.robot
@@ -6,15 +6,15 @@ Library XvfbRobot
*** Variables ***
-${PORTAL_URL} http://portal.api.simpledemo.onap.org:8989
-${PORTAL_ENV} /ONAPPORTAL
+${PORTAL_URL} http://portal.api.simpledemo.onap.org:8990
+${PORTAL_ENV} /ONAPPORTALSDK
${PORTAL_LOGIN_URL} ${PORTAL_URL}${PORTAL_ENV}/login.htm
-${PORTAL_HOME_PAGE} ${PORTAL_URL}${PORTAL_ENV}/applicationsHome
+${PORTAL_HOME_PAGE} ${PORTAL_URL}${PORTAL_ENV}/welcome
${PORTAL_MICRO_ENDPOINT} ${PORTAL_URL}${PORTAL_ENV}/commonWidgets
${PORTAL_HOME_URL} ${PORTAL_URL}${PORTAL_ENV}/applicationsHome
${GLOBAL_APPLICATION_ID} robot-functional
${GLOBAL_PORTAL_ADMIN_USER} demo
-${GLOBAL_PORTAL_ADMIN_PWD} demo123456!
+${GLOBAL_PORTAL_ADMIN_PWD} demo
${GLOBAL_SELENIUM_BROWSER} chrome
${GLOBAL_SELENIUM_BROWSER_CAPABILITIES} Create Dictionary
${GLOBAL_SELENIUM_DELAY} 0
@@ -36,115 +36,105 @@ Portal admin Login To Portal GUI
Set Selenium Speed ${GLOBAL_SELENIUM_DELAY}
Set Browser Implicit Wait ${GLOBAL_SELENIUM_BROWSER_IMPLICIT_WAIT}
Log Logging in to ${PORTAL_URL}${PORTAL_ENV}
- # Handle Proxy Warning
+ # Handle Proxy Warning
Title Should Be Login
- Input Text xpath=//input[@ng-model='loginId'] ${GLOBAL_PORTAL_ADMIN_USER}
- 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}
+ Input Text xpath=//input[@id='loginId'] ${GLOBAL_PORTAL_ADMIN_USER}
+ Input Password xpath=//input[@id='password'] ${GLOBAL_PORTAL_ADMIN_PWD}
+ Click Element //*[@id="loginBtn"]
+ Wait Until Page Contains Element xpath=//img[@src='app/fusionapp/icons/logo_onap_transbg.png'] ${GLOBAL_SELENIUM_BROWSER_WAIT_TIMEOUT}
Log Logged in to ${PORTAL_URL}${PORTAL_ENV}
-
-Portal Admin Navigation Application Link Tab
- [Documentation] Logs into Portal GUI as Portal admin
- Click Element xpath=.//h3[contains(text(),'xDemo App')]/following::div[1]
- Go To ${PORTAL_HOME_PAGE}
- Dismiss Alert accept=false
- #Scroll Element Into View xpath=//span[@id='tab-Home']
- #Click Element xpath=//span[@id='tab-Home']
+SDKPortalAdmin Navigation Application Link Tab
+ [Documentation] Logs into Portal GUI as Portal admin
+ Comment Click Element xpath=.//h3[contains(text(),'xDemo App')]/following::div[1]
+ Comment Go To ${PORTAL_HOME_PAGE}
+ Comment Dismiss Alert accept=false
+ #Scroll Element Into View xpath=//span[@id='tab-Home']
+ #Click Element xpath=//span[@id='tab-Home']
#Click Element xpath=(//span[@id='tab-xDemo-App']/following::i[@class='ion-close-round'])[1]
- Click Element xpath=.//h3[contains(text(),'xDemo App')]/following::div[1]
-
-
-
-Validate SDK Sub Menu
- [Documentation] Logs into SDK GUI as Portal admin
- Page Should Contain Home
- Page Should Contain Sample Pages
- Page Should Contain Reports
- Page Should Contain Profile
- Page Should Contain Admin
-
-Click Sample Pages and validate sub Menu
- [Documentation] Click Sample Pages
- Select frame xpath=.//*[@id='tabframe-xDemo-App']
- Click Link xpath=//a[@id='parent-item-Sample-Pages']
- Element Text Should Be xpath=//a[@title='Collaboration'] Collaboration
- Element Text Should Be xpath=//a[@title='Notebook'] Notebook
- Click Link xpath=//a[contains(@title,'Collaboration')]
- Page Should Contain User List
- Select frame xpath=.//*[@id='tabframe-xDemo-App']
- Click Link xpath=//a[@id='parent-item-Sample-Pages']
- Click Link xpath=//a[contains(@title,'Notebook')]
- Element Text Should Be xpath=//h1[contains(.,'Notebook')] Notebook
-
-Click Reports and validate sub Menu
- [Documentation] Click Reports Tab
+ Comment Click Element xpath=.//h3[contains(text(),'xDemo App')]/following::div[1]
+
+Validate SDK Sub Menu
+ [Documentation] Logs into SDK GUI as Portal admin
+ Page Should Contain Home
+ Page Should Contain Sample Pages
+ Page Should Contain Reports
+ Page Should Contain Profile
+ Page Should Contain Admin
+
+#Click Sample Pages and validate sub Menu
+ #[Documentation] Click Sample Pages
+ #Comment Select frame xpath=.//*[@id='tabframe-xDemo-App']
+ #Click Link xpath=//a[@id='parent-item-Sample-Pages']
+ #Element Text Should Be xpath=//a[@title='Collaboration'] Collaboration
+ #Element Text Should Be xpath=//a[@title='Notebook'] Notebook
+ #Click Link xpath=//a[contains(@title,'Collaboration')]
+ #Page Should Contain User List
+ #Comment Select frame xpath=.//*[@id='tabframe-xDemo-App']
+ #Click Link xpath=//a[@id='parent-item-Sample-Pages']
+ #Click Link xpath=//a[contains(@title,'Notebook')]
+ #Element Text Should Be xpath=//h1[contains(.,'Notebook')] Notebook
+
+Click Reports and validate sub Menu
+ [Documentation] Click Reports Tab
#Select frame xpath=.//*[@id='tabframe-xDemo-App']
- Click Link xpath=//a[@id='parent-item-Reports']
- Element Text Should Be xpath=//a[@title='All Reports'] All Reports
- Element Text Should Be xpath=//a[@title='Create Reports'] Create Reports
- Click Link xpath=//a[contains(@title,'All Reports')]
- Page Should Contain Report search
- Select frame xpath=.//*[@id='tabframe-xDemo-App']
- Click Link xpath=//a[@id='parent-item-Reports']
- Click Link xpath=//a[contains(@title,'Create Reports')]
- Page Should Contain Report Wizard
-
-Click Profile and validate sub Menu
- [Documentation] Click Profile Tab
- Select frame xpath=.//*[@id='tabframe-xDemo-App']
- Click Link xpath=//a[@id='parent-item-Profile']
- Element Text Should Be xpath=//a[@title='Search'] Search
- Element Text Should Be xpath=//a[@title='Self'] Self
- Click Link xpath=//a[contains(@title,'Search')]
- Page Should Contain Profile Search
- Select frame xpath=.//*[@id='tabframe-xDemo-App']
- Click Link xpath=//a[@id='parent-item-Profile']
- Click Link xpath=//a[contains(@title,'Self')]
- Page Should Contain Self Profile Detail
-
-
-Click Admin and validate sub Menu
- [Documentation] Click Admin Tab
- Select frame xpath=.//*[@id='tabframe-xDemo-App']
- Click Link xpath=//a[@id='parent-item-Admin']
- Element Text Should Be xpath=//a[@title='Roles'] Roles
- Element Text Should Be xpath=//a[@title='Role Functions'] Role Functions
- Element Text Should Be xpath=//a[@title='Cache Admin'] Cache Admin
- Element Text Should Be xpath=//a[@title='Menus'] Menus
- Element Text Should Be xpath=//a[@title='Usage'] Usage
- Click Link xpath=//a[contains(@title,'Roles')]
- Page Should Contain Roles
- Select frame xpath=.//*[@id='tabframe-xDemo-App']
- Click Link xpath=//a[@id='parent-item-Admin']
- Click Link xpath=//a[contains(@title,'Role Function')]
- Page Should Contain Role Function
- Select frame xpath=.//*[@id='tabframe-xDemo-App']
- Click Link xpath=.//a[@id='parent-item-Admin']
- #Select frame xpath=.//*[@id='tabframe-xDemo-App']
- Click Link xpath=//a[@id='parent-item-Admin']
- Click Link xpath=//a[contains(@title,'Cache Admin')]
- Page Should Contain Cache Regions
- Select frame xpath=.//*[@id='tabframe-xDemo-App']
- Click Link xpath=.//a[@id='parent-item-Admin']
- Click Link xpath=//a[@id='parent-item-Admin']
- Click Link xpath=//a[contains(@title,'Menus')]
- Page Should Contain Admin Menu Items
- Select frame xpath=.//*[@id='tabframe-xDemo-App']
- Click Link xpath=//a[@id='parent-item-Admin']
- Click Link xpath=//a[@id='parent-item-Admin']
- Click Link xpath=//a[contains(@title,'Usage')]
- Page Should Contain Current Usage
-
-
-Teardown
- [Documentation] Close All Open browsers
- Close All Browsers
-
+ Click Link xpath=//a[@id='parent-item-Reports']
+ Element Text Should Be xpath=//a[@title='All Reports'] All Reports
+ Element Text Should Be xpath=//a[@title='Create Reports'] Create Reports
+ Click Link xpath=//a[contains(@title,'All Reports')]
+ Page Should Contain Report search
+ Comment Select frame xpath=.//*[@id='tabframe-xDemo-App']
+ Click Link xpath=//a[@id='parent-item-Reports']
+ Click Link xpath=//a[contains(@title,'Create Reports')]
+ Page Should Contain Report Wizard
+
+Click Profile and validate sub Menu
+ [Documentation] Click Profile Tab
+ Comment Select frame xpath=.//*[@id='tabframe-xDemo-App']
+ Click Link xpath=//a[@id='parent-item-Profile']
+ Element Text Should Be xpath=//a[@title='Search'] Search
+ Element Text Should Be xpath=//a[@title='Self'] Self
+ Click Link xpath=//a[contains(@title,'Search')]
+ Page Should Contain Profile Search
+ Comment Select frame xpath=.//*[@id='tabframe-xDemo-App']
+ Click Link xpath=//a[@id='parent-item-Profile']
+ Click Link xpath=//a[contains(@title,'Self')]
+ Page Should Contain Self Profile Detail
-
+Click Admin and validate sub Menu
+ [Documentation] Click Admin Tab
+ Comment Select frame xpath=.//*[@id='tabframe-xDemo-App']
+ Click Link xpath=//a[@id='parent-item-Admin']
+ Element Text Should Be xpath=//a[@title='Roles'] Roles
+ Element Text Should Be xpath=//a[@title='Role Functions'] Role Functions
+ Element Text Should Be xpath=//a[@title='Cache Admin'] Cache Admin
+ Element Text Should Be xpath=//a[@title='Menus'] Menus
+ Element Text Should Be xpath=//a[@title='Usage'] Usage
+ Click Link xpath=//a[contains(@title,'Roles')]
+ Page Should Contain Roles
+ Comment Select frame xpath=.//*[@id='tabframe-xDemo-App']
+ Click Link xpath=//a[@id='parent-item-Admin']
+ Click Link xpath=//a[contains(@title,'Role Function')]
+ Page Should Contain Role Function
+ Comment Select frame xpath=.//*[@id='tabframe-xDemo-App']
+ Click Link xpath=.//a[@id='parent-item-Admin']
+ #Select frame xpath=.//*[@id='tabframe-xDemo-App']
+ Click Link xpath=//a[@id='parent-item-Admin']
+ Click Link xpath=//a[contains(@title,'Cache Admin')]
+ Page Should Contain Cache Regions
+ Comment Select frame xpath=.//*[@id='tabframe-xDemo-App']
+ Click Link xpath=.//a[@id='parent-item-Admin']
+ Click Link xpath=//a[@id='parent-item-Admin']
+ Click Link xpath=//a[contains(@title,'Menus')]
+ Page Should Contain Admin Menu Items
+ Comment Select frame xpath=.//*[@id='tabframe-xDemo-App']
+ Click Link xpath=//a[@id='parent-item-Admin']
+ Click Link xpath=//a[@id='parent-item-Admin']
+ Click Link xpath=//a[contains(@title,'Usage')]
+ Page Should Contain Current Usage
-
+Teardown
+ [Documentation] Close All Open browsers
+ Close All Browsers
*** Keywords ***
diff --git a/test/csit/tests/portal/testsuites/test1.robot b/test/csit/tests/portal/testsuites/test1.robot
index bbbe5172f..90aa10788 100644
--- a/test/csit/tests/portal/testsuites/test1.robot
+++ b/test/csit/tests/portal/testsuites/test1.robot
@@ -62,6 +62,7 @@ ${jira} jira
${RESOURCE_PATH} ONAPPORTAL/auxapi/ticketevent
${portal_Template} ${CURDIR}/portal.template
+${Result} FALSE
*** Test Cases ***
@@ -72,133 +73,128 @@ Portal Health Check
Login into Portal URL
Portal admin Login To Portal GUI
-Portal R1 Release
- [Documentation] ONAP Portal R1 functionality test
- Notification on ONAP Portal
- Portal Application Account Management validation
+# Portal R1 Release
+ # [Documentation] ONAP Portal R1 functionality test
+ # Notification on ONAP Portal
+ # Portal Application Account Management validation
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
-Create Widget for all users
- Portal Admin Create 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
-
-Delete Widget for Application Roles
- Portal Admin Delete Widget for Application Roles
+#Create Widget for all users
+ #Portal Admin Create 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
+
+#Delete Widget for Application Roles
+ #Portal Admin Delete Widget for Application Roles
-Validate Functional Top Menu Get Access
- Functional Top Menu Get Access
+#Validate Functional Top Menu Get Access
+ #Functional Top Menu Get Access
-Validate Functional Top Menu Contact Us
- Functional Top Menu Contact Us
+#Validate Functional Top Menu Contact Us
+ #Functional Top Menu Contact Us
-Edit Functional Menu
- Portal admin Edit Functional menu
+#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}
-
-Create a Test user for Application Admin -Test
- Portal admin Add Application admin User New user -Test
+# 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 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
-
-
-
-
+#Delete Standard User Role for Existing user
+ #Portal admin Delete Standard User Existing user
+
Logout from Portal GUI as Portal Admin
Portal admin Logout from Portal GUI
-
-Login To Portal GUI as APP Admin
- Application admin Login To Portal GUI
-
-
+# Application Admin user Test cases
+
+#Login To Portal GUI as APP Admin
+ #Application admin Login To Portal GUI
+
##Navigate Functional Link as APP Admin
## 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
-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
##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}
Teardown
[Documentation] Close All Open browsers
Close All Browsers
-
-
-
-
-
*** Keywords ***
Setup Browser
@@ -296,6 +292,8 @@ Portal admin Add Application Admin Exiting User
Click Button xpath=//input[@value='Select application']
Scroll Element Into View xpath=(//input[@value='Select application']/following::*[contains(text(),'xDemo App' )])[1]
Click Element xpath=(//li[contains(.,'xDemo App' )])[2]
+# Scroll Element Into View xpath=(//input[@value='Select application']/following::*[contains(text(),'Default' )])[1]
+# Click Element xpath=(//li[contains(.,'Default' )])[2]
#Select From List xpath=(//input[@value='Select application']/following::*[contains(text(),'xDemo App')])[1] xDemo App
Click Button xpath=//button[@id='div-updateAdminAppsRoles']
Click Element xpath=//button[@id='admin-div-ok-button']
@@ -303,6 +301,7 @@ Portal admin Add Application Admin Exiting User
Get Selenium Implicit Wait
Click Link xpath=//a[@aria-label='Admins']
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}
Table Column Should Contain xpath=//*[@table-data='admins.adminsTableData'] 1 ${Existing_User}
@@ -312,9 +311,16 @@ Portal admin Add Application Admin Exiting User
Portal admin Delete Application Admin Existing User
[Documentation] Naviage to Admins tab
+ Wait Until Element Is Visible xpath=//a[@title='Admins'] ${GLOBAL_SELENIUM_BROWSER_WAIT_TIMEOUT}
+ Click Link xpath=//a[@title='Admins']
+ Wait Until Element Is Visible xpath=//h1[contains(.,'Admins')] ${GLOBAL_SELENIUM_BROWSER_WAIT_TIMEOUT}
+ Page Should Contain Admins
+ Click Button xpath=//button[@ng-click='toggleSidebar()']
+ Input Text xpath=//input[@id='input-table-search'] ${Existing_User}
Click Element xpath=(//span[contains(.,'portal')] )[1]
#Click Element xpath=(//span[contains(.,'demo')] )[1]
Click Element xpath=//*[@id='select-app-xDemo-App']/following::i[@id='i-delete-application']
+# Click Element xpath=//*[@id='select-app-Default']/following::i[@id='i-delete-application']
Click Element xpath=//button[@id='div-confirm-ok-button']
Click Button xpath=//button[@id='div-updateAdminAppsRoles']
Click Element xpath=//button[@id='admin-div-ok-button']
@@ -340,6 +346,21 @@ Portal admin Add Application admin User New user
Input Text xpath=//input[@ng-model='searchUsers.newUser.loginPwd'] ${App_Loginpwd}
Input Text xpath=//input[@ng-model='searchUsers.newUser.loginPwdCheck'] ${App_LoginPwdCheck}
Click Button xpath=//button[@ng-click='searchUsers.addNewUserFun()']
+
+ ${Result}= Get Matching XPath Count xpath=//*[contains(text(),'User with same loginId already exists')]
+
+ #log ${Result}
+ #${type_result}= Evaluate type(${Result})
+ #log ${type_result}
+
+ Run Keyword if '${Result}'== 0 AdminUser does not exist already
+ ... ELSE Goto Home Image
+ Set Selenium Implicit Wait 3000
+
+Goto Home Image
+ Click Image xpath=//img[@alt='Onap Logo']
+
+AdminUser does not exist already
Click Button xpath=//button[@id='next-button']
#Scroll Element Into View xpath=//div[@id='div-app-name-dropdown-xDemo-App']
Click Element xpath=//*[@id='div-app-name-dropdown-xDemo-App']
@@ -372,6 +393,18 @@ Portal admin Add Standard User New user
Input Text xpath=//input[@ng-model='searchUsers.newUser.loginPwd'] ${Sta_Loginpwd}
Input Text xpath=//input[@ng-model='searchUsers.newUser.loginPwdCheck'] ${Sta_LoginPwdCheck}
Click Button xpath=//button[@ng-click='searchUsers.addNewUserFun()']
+
+ ${Result}= Get Matching XPath Count xpath=//*[contains(text(),'User with same loginId already exists')]
+
+ #log ${Result}
+ #${type_result}= Evaluate type(${Result})
+ #log ${type_result}
+
+ Run Keyword if '${Result}'== 0 StaUser does not exist already
+ ... ELSE Goto Home Image
+ Set Selenium Implicit Wait 3000
+
+StaUser does not exist already
Click Button xpath=//button[@id='next-button']
#Scroll Element Into View xpath=//div[@id='div-app-name-dropdown-xDemo-App']
Click Element xpath=//*[@id='div-app-name-dropdown-xDemo-App']
@@ -455,13 +488,7 @@ Portal admin Add Application Admin Exiting User -APPDEMO
Table Column Should Contain xpath=//*[@table-data='admins.adminsTableData'] 1 ${App_First_Name}
Click Image xpath=//img[@alt='Onap Logo']
Set Selenium Implicit Wait 3000
-
-
-
-
-
-
-
+
Portal admin Add Standard User Existing user
[Documentation] Naviage to Users tab
Click Link xpath=//a[@title='Users']
@@ -472,10 +499,10 @@ Portal admin Add Standard User 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=//*[@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=//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=//*[@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']
Set Selenium Implicit Wait 3000
Click Button xpath=//button[@id='new-user-save-button']
Set Selenium Implicit Wait 3000
@@ -487,19 +514,24 @@ Portal admin Add Standard User Existing user
Go To ${PORTAL_HOME_PAGE}
Click Link xpath=//a[@title='Users']
Click Element xpath=//input[@id='dropdown1']
- Click Element xpath=//li[contains(.,'xDemo App')]
- #Click Element xpath=//li[contains(.,'XDemo App')]
+# 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] Standard 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
[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-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='System-Administrator-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']
Set Selenium Implicit Wait 3000
Click Button xpath=//button[@id='new-user-save-button']
Set Selenium Implicit Wait 3000
@@ -508,22 +540,24 @@ Portal admin Edit Standard User Existing user
#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] System Administrator
-
+ Set Selenium Implicit Wait 3000
Portal admin Delete Standard User Existing user
[Documentation] Naviage to Users tab
Click Element xpath=(.//*[@id='rowheader_t1_0'])[2]
+# Scroll Element Into View xpath=//*[@id='div-app-name-Default']/following::*[@id='app-item-delete'][1]
+# Click Element xpath=//*[@id='div-app-name-Default']/following::*[@id='app-item-delete'][1]
Scroll Element Into View xpath=//*[@id='div-app-name-xDemo-App']/following::*[@id='app-item-delete'][1]
Click Element xpath=//*[@id='div-app-name-xDemo-App']/following::*[@id='app-item-delete'][1]
+# Scroll Element Into View xpath=//*[@id='div-app-name-SDC']/following::*[@id='app-item-delete'][1]
+# Click Element xpath=//*[@id='div-app-name-SDC']/following::*[@id='app-item-delete'][1]
Click Element xpath=//button[@id='div-confirm-ok-button']
Click Button xpath=//button[@id='new-user-save-button']
#Input Text xpath=//input[@id='input-table-search'] ${Existing_User}
- #Is Element Visible xpath=(//*[contains(.,'Portal')] )[2]
- Element Should Not Contain xpath=//*[@table-data='users.accountUsers'] portal
- #Element Should Not Contain xpath=//*[@table-data='users.accountUsers'] demo
-
-
-
+ #Is Element Visible xpath=(//*[contains(.,'Portal')] )[2]
+ Element Should Not Contain xpath=//*[@table-data='users.accountUsers'] Portal
+ #Element Should Not Contain xpath=//*[@table-data='users.accountUsers'] demo
+ Set Selenium Implicit Wait 3000
Functional Top Menu Get Access
[Documentation] Naviage to Support tab
@@ -531,7 +565,7 @@ Functional Top Menu Get Access
Mouse Over xpath=//*[contains(text(),'Get Access')]
Click Link xpath=//a[contains(.,'Get Access')]
Element Text Should Be xpath=//h1[contains(.,'Get Access')] Get Access
-
+ Set Selenium Implicit Wait 3000
Functional Top Menu Contact Us
[Documentation] Naviage to Support tab
@@ -540,7 +574,7 @@ Functional Top Menu Contact Us
Click Link xpath=//a[contains(.,'Contact Us')]
Element Text Should Be xpath=//h1[contains(.,'Contact Us')] Contact Us
Click Image xpath=//img[@alt='Onap Logo']
-
+ Set Selenium Implicit Wait 3000
Portal admin Edit Functional menu
[Documentation] Naviage to Edit Functional menu tab
@@ -583,7 +617,7 @@ Portal admin Edit Functional menu
Mouse Over xpath=//*[contains(text(),'Design')]
Set Selenium Implicit Wait 3000
Element Should Not Contain xpath=(.//*[contains(.,'Design')]/following::ul[1])[1] ONAP Test
-
+ Set Selenium Implicit Wait 3000
Portal admin Microservice Onboarding
@@ -605,11 +639,32 @@ Portal admin Microservice Onboarding
Click Button xpath=//button[@id='microservice-details-save-button']
Table Column Should Contain xpath=//*[@table-data='serviceList'] 1 Test Microservice
#Element Text Should Be xpath=//*[@table-data='serviceList'] Test Microservice
-
-
-
+ Set Selenium Implicit Wait 3000
+
+Portal admin Microservice Delete
+ [Documentation] Naviage to Edit Functional menu tab
+ Click Link xpath=//a[@title='Microservice Onboarding']
+ Click Button xpath=//button[@id='microservice-onboarding-button-add']
+ Input Text xpath=//input[@name='name'] TestMS
+ Input Text xpath=//*[@name='desc'] TestMS
+ Click Element xpath=//input[@id='microservice-details-input-app']
+ Scroll Element Into View xpath=//li[contains(.,'xDemo App')]
+ Click Element xpath=//li[contains(.,'xDemo App')]
+ Click Element xpath=//*[@name='desc']
+ Input Text xpath=//input[@name='url'] ${PORTAL_MICRO_ENDPOINT}
+ Click Element xpath=//input[@id='microservice-details-input-security-type']
+ Scroll Element Into View xpath=//li[contains(.,'Basic Authentication')]
+ Click Element xpath=//li[contains(.,'Basic Authentication')]
+ 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
+ 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
+
Portal Admin Create Widget for All users
- [Documentation] Naviage to Create Widget menu tab
+ [Documentation] Navigate to Create Widget menu tab
${WidgetAttachment}= Catenate ${PORTAL_ASSETS_DIRECTORY}//news_widget.zip
Click Link xpath=//a[@title='Widget Onboarding']
Click Button xpath=//button[@ng-click='toggleSidebar()']
@@ -647,7 +702,6 @@ Portal Admin Delete Widget for All users
#Table Column Should Contain .//*[@table-data='portalAdmin.portalAdminsTableData'] 0 ONAP-xDemo
#Set Selenium Implicit Wait 3000
-
Portal Admin Create Widget for Application Roles
[Documentation] Naviage to Create Widget menu tab
${WidgetAttachment}= Catenate ${PORTAL_ASSETS_DIRECTORY}//news_widget.zip
@@ -677,10 +731,7 @@ Portal Admin Create Widget for Application Roles
Page Should Contain ONAP-xDemo
Set Selenium Implicit Wait 3000
GO TO ${PORTAL_HOME_PAGE}
-
-
-
-
+
Portal Admin Delete Widget for Application Roles
#Wait Until Page Contains ONAP-xDemo ${GLOBAL_SELENIUM_BROWSER_WAIT_TIMEOUT}
#Page Should Contain ONAP-xDemo
@@ -698,7 +749,7 @@ Portal Admin Delete Widget for Application Roles
Element Should Not Contain xpath=//*[@table-data='portalAdmin.portalAdminsTableData'] ONAP-xDemo
#Is Element Visible xpath=//*[@table-data='portalAdmin.portalAdminsTableData']
#Table Column Should Contain .//*[@table-data='portalAdmin.portalAdminsTableData'] 0 ONAP-xDemo
- #Set Selenium Implicit Wait 3000
+ Set Selenium Implicit Wait 3000
@@ -720,15 +771,14 @@ Portal Admin Edit Widget
Click Element xpath=//div[@id='confirmation-button-next']
Element Should Not Contain xpath=//*[@table-data='ignoredTableData'] ONAP_VID
Click Link xpath=//a[@id='close-button']
-
-
-
+ Set Selenium Implicit Wait 3000
Portal Admin Broadcast Notifications
[Documentation] Portal Test Admin Broadcast Notifications
- ${CurrentDay}= Get Current Date result_format=%m/%d/%Y
- ${NextDay}= Get Current Date increment=24:00:00 result_format=%m/%d/%Y
- ${CurrentDate}= Get Current Date result_format=%m%d%y%H%M
+
+ ${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']
Set Selenium Implicit Wait 3000
@@ -744,15 +794,17 @@ Portal Admin Broadcast Notifications
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}
+ Table Column Should Contain xpath=//*[@id="notification-history-table"] 2 ${AdminBroadCastMsg}
+ Set Selenium Implicit Wait 3000
log ${AdminBroadCastMsg}
[Return] ${AdminBroadCastMsg}
Portal Admin Category Notifications
[Documentation] Portal Admin Broadcast Notifications
- ${CurrentDay}= Get Current Date result_format=%m/%d/%Y
- ${NextDay}= Get Current Date increment=24:00:00 result_format=%m/%d/%Y
- ${CurrentDate}= Get Current Date result_format=%m%d%y%H%M
+ ${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
+# ${CurrentDay}= Get Current Date result_format=%m/%d/%Y
+ ${CurrentDate}= Get Current Date increment=24:00:00 result_format=%m%d%y%H%M
${AdminCategoryMsg}= catenate ONAP VID Category Automation${CurrentDate}
Click Link xpath=//a[@id='parent-item-Home']
Click Link xpath=//*[@id="parent-item-User-Notifications"]
@@ -772,9 +824,10 @@ Portal Admin Category Notifications
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}
+ Table Column Should Contain xpath=//*[@id="notification-history-table"] 2 ${AdminCategoryMsg}
+ Set Selenium Implicit Wait 3000
log ${AdminCategoryMsg}
- [Return] ${AdminCategoryMsg}
+ [Return] ${AdminCategoryMsg}
Portal admin Logout from Portal GUI
@@ -834,6 +887,7 @@ 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 Button xpath=//button[@id='new-user-save-button']
@@ -854,9 +908,12 @@ Application admin Add 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-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='System-Administrator-checkbox']
+ Click Element xpath=//*[@id='div-app-name-xDemo-App']/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
@@ -870,15 +927,17 @@ Application admin Edit Standard User Existing user
Application admin Delete Standard User Existing user
[Documentation] Naviage to Users tab
Click Element xpath=(.//*[@id='rowheader_t1_0'])[2]
+# Scroll Element Into View xpath=//*[@id='div-app-name-Default']/following::*[@id='app-item-delete'][1]
+# Click Element xpath=//*[@id='div-app-name-Default']/following::*[@id='app-item-delete'][1]
Scroll Element Into View xpath=//*[@id='div-app-name-xDemo-App']/following::*[@id='app-item-delete'][1]
Click Element xpath=//*[@id='div-app-name-xDemo-App']/following::*[@id='app-item-delete'][1]
Click Element xpath=//button[@id='div-confirm-ok-button']
Click Button xpath=//button[@id='new-user-save-button']
- #Input Text xpath=//input[@id='input-table-search'] ${Existing_User}
- #Is Element Visible xpath=(//*[contains(.,'Portal')] )[2]
+# Input Text xpath=//input[@id='input-table-search'] ${Existing_User}
+# Is Element Visible xpath=(//*[contains(.,'Portal')] )[2]
Element Should Not Contain xpath=//*[@table-data='users.accountUsers'] Portal
#Click Image xpath=//img[@alt='Onap Logo']
- #Set Selenium Implicit Wait 3000
+ Set Selenium Implicit Wait 3000
@@ -918,16 +977,16 @@ Standared user Navigation Application Link Tab
Click Element xpath=.//h3[contains(text(),'xDemo App')]/following::div[1]
Page Should Contain ONAP Portal
Click Element xpath=(.//span[@id='tab-Home'])[1]
-
+ Set Selenium Implicit Wait 3000
Standared user Navigation Functional Menu
[Documentation] Logs into Portal GUI as application admin
Click Link xpath=//a[contains(.,'Manage')]
- Mouse Over xpath=//*[contains(text(),'Technology Insertion')]
- Click Link xpath= //*[contains(text(),'Infrastructure VNF Provisioning')]
- Page Should Contain Welcome to VID
- Click Element xpath=(.//span[@id='tab-Home'])[1]
-
+ Mouse Over xpath=//*[contains(text(),'Technology Insertion')]
+ Click Link xpath= //*[contains(text(),'Infrastructure VNF Provisioning')]
+ Page Should Contain Welcome to VID
+ Click Element xpath=(.//span[@id='tab-Home'])[1]
+ Set Selenium Implicit Wait 3000
Standared user Broadcast Notifications
diff --git a/test/csit/tests/sdc/uiSanity/__init__.robot b/test/csit/tests/sdc/uiSanity/__init__.robot
new file mode 100644
index 000000000..8ee10d5f6
--- /dev/null
+++ b/test/csit/tests/sdc/uiSanity/__init__.robot
@@ -0,0 +1,2 @@
+*** Settings ***
+Documentation Sdc - HealthCheck
diff --git a/test/csit/tests/sdc/uiSanity/test1.robot b/test/csit/tests/sdc/uiSanity/test1.robot
new file mode 100644
index 000000000..3783e159e
--- /dev/null
+++ b/test/csit/tests/sdc/uiSanity/test1.robot
@@ -0,0 +1,16 @@
+*** Settings ***
+Library Collections
+Library OperatingSystem
+Library RequestsLibrary
+Library json
+
+*** Test Cases ***
+Get Requests health check ok
+ [Tags] get
+ CreateSession sdc-be http://localhost:8080
+ ${headers}= Create Dictionary Accept=application/json Content-Type=application/json
+ ${resp}= Get Request sdc-be /sdc2/rest/healthCheck headers=&{headers}
+ Should Be Equal As Strings ${resp.status_code} 500
+ @{ITEMS}= Copy List ${resp.json()['componentsInfo']}
+ : FOR ${ELEMENT} IN @{ITEMS}
+ \ Log ${ELEMENT['healthCheckComponent']} ${ELEMENT['healthCheckStatus']}
diff --git a/test/csit/tests/vfc/nfvo-multivimproxy/test.robot b/test/csit/tests/vfc/nfvo-multivimproxy/test.robot
new file mode 100644
index 000000000..fab3694e4
--- /dev/null
+++ b/test/csit/tests/vfc/nfvo-multivimproxy/test.robot
@@ -0,0 +1,24 @@
+*** settings ***
+Resource ../../common.robot
+Library Collections
+Library RequestsLibrary
+Library simplejson
+Library OperatingSystem
+Library json
+Library HttpLibrary.HTTP
+
+*** Variables ***
+@{return_ok_list}= 200 201 202
+${queryswagger_url} /api/multivimproxy/v1/swagger.json
+
+*** Test Cases ***
+SwaggerFuncTest
+ [Documentation] query swagger info rest test
+ ${headers} Create Dictionary Content-Type=application/json Accept=application/json
+ Create Session web_session http://${RESMGR_IP}:8481 headers=${headers}
+ ${resp}= Get Request web_session ${queryswagger_url}
+ ${responese_code}= Convert To String ${resp.status_code}
+ List Should Contain Value ${return_ok_list} ${responese_code}
+ ${response_json} json.loads ${resp.content}
+ ${swagger_version}= Convert To String ${response_json['swagger']}
+ Should Be Equal ${swagger_version} 2.0 \ No newline at end of file
diff --git a/test/csit/tests/vfc/nfvo-wfengine/workflow.robot b/test/csit/tests/vfc/nfvo-wfengine/workflow.robot
index 07bfe6979..c9dbe6c46 100644
--- a/test/csit/tests/vfc/nfvo-wfengine/workflow.robot
+++ b/test/csit/tests/vfc/nfvo-wfengine/workflow.robot
@@ -1,113 +1,113 @@
-*** Settings ***
-Resource ../../common.robot
-Library Collections
-Library json
-Library OperatingSystem
-Library RequestsLibrary
-Library HttpLibrary.HTTP
-
-*** Variables ***
-${MSB_IP} 127.0.0.1
-${MSB_PORT} 10550
-${ACTIVITI_IP} 127.0.0.1
-${ACTIVITI_PORT} 8804
-${MGRSERVICE_IP} 127.0.0.1
-${MGRSERVICE_PORT} 8805
-${processId} demo
-${deployid} 0
-${bmpfilepath} ${SCRIPTS}/nfvo-wfengine/demo.bpmn20.xml
-
-*** Test Cases ***
-Deploy BPMN File Test On Activiti
- [Documentation] Check if the test bpmn file can be deployed in activiti engine
- ${auth}= Create List kermit kermit
- ${headers}= Create Dictionary Accept=application/json
- Create Session web_session http://${ACTIVITI_IP}:${ACTIVITI_PORT} headers=${headers} auth=${auth}
- ${files}= evaluate {"file":open('${bmpfilepath}','rb')}
- ${resp}= Post Request web_session /activiti-rest/service/repository/deployments files=${files}
- Should Be Equal ${resp.status_code} ${201}
- Log ${resp.json()}
- ${deployedId}= Set Variable ${resp.json()["id"]}
- Set Global Variable ${deployedId}
-
-Exectue BPMN File Testt On Activiti
- [Documentation] Check if the test bpmn file can be exectued in activiti engine
- ${headers} Create Dictionary Content-Type=application/json Accept=application/json Authorization=Basic a2VybWl0Omtlcm1pdA==
- Create Session web_session http://${ACTIVITI_IP}:${ACTIVITI_PORT} headers=${headers}
- ${body} Create Dictionary processDefinitionKey=${processId}
- ${body} dumps ${body}
- ${resp}= Post Request web_session /activiti-rest/service/runtime/process-instances ${body}
- Should Be Equal ${resp.status_code} ${201}
-
-UnDeploy BPMN File Testt On Activiti
- [Documentation] Check if the test bpmn file can be undeployed in activiti engine
- log ${deployedId}
- ${auth}= Create List kermit kermit
- ${headers} Create Dictionary Content-Type=application/json Accept=application/json
- Create Session web_session http://${ACTIVITI_IP}:${ACTIVITI_PORT} headers=${headers} auth=${auth}
- ${resp}= Delete Request web_session /activiti-rest/service/repository/deployments/${deployedId}?cascade=true
- Should Be Equal ${resp.status_code} ${204}
-
-Deploy BPMN File Test On MgrService
- [Documentation] Check if the test bpmn file can be deployed in Management Service
- ${auth}= Create List kermit kermit
- ${headers}= Create Dictionary Accept=application/json
- Create Session web_session http://${MGRSERVICE_IP}:${MGRSERVICE_PORT} headers=${headers} auth=${auth}
- ${files}= evaluate {"file":open('${bmpfilepath}','rb')}
- ${resp}= Post Request web_session api/workflow/v1/package files=${files}
- Should Be Equal ${resp.status_code} ${200}
- Log ${resp.json()}
- ${deployedId}= Set Variable ${resp.json()["deployedId"]}
- Set Global Variable ${deployedId}
-
-Exectue BPMN File Testt On MgrService
- [Documentation] Check if the test bpmn file can be exectued in Management Service
- ${headers} Create Dictionary Content-Type=application/json Accept=application/json Authorization=Basic a2VybWl0Omtlcm1pdA==
- Create Session web_session http://${MGRSERVICE_IP}:${MGRSERVICE_PORT} headers=${headers}
- ${body} Create Dictionary processDefinitionKey=${processId}
- ${body} dumps ${body}
- ${resp}= Post Request web_session api/workflow/v1/process/instance ${body}
- Should Be Equal ${resp.status_code} ${200}
- Log ${resp.json()}
- Should Be Equal ${resp.json()["processDefinitionKey"]} ${processId}
-
-UnDeploy BPMN File Testt On MgrService
- [Documentation] Check if the test bpmn file can be undeployed in Management Service
- log ${deployedId}
- ${auth}= Create List kermit kermit
- ${headers} Create Dictionary Content-Type=application/json Accept=application/json
- Create Session web_session http://${MGRSERVICE_IP}:${MGRSERVICE_PORT} headers=${headers} auth=${auth}
- ${resp}= Delete Request web_session /api/workflow/v1/package/${deployedId}
- Should Be Equal ${resp.status_code} ${200}
-
-Deploy BPMN File Test On MSB
- [Documentation] Check if the test bpmn file can be deployed in activiti engine
- ${auth}= Create List kermit kermit
- ${headers}= Create Dictionary Accept=application/json
- Create Session web_session http://${MSB_IP}:${MSB_PORT} headers=${headers} auth=${auth}
- ${files}= evaluate {"file":open('${bmpfilepath}','rb')}
- ${resp}= Post Request web_session api/workflow/v1/package files=${files}
- Should Be Equal ${resp.status_code} ${200}
- Log ${resp.json()}
- ${deployedId}= Set Variable ${resp.json()["deployedId"]}
- Set Global Variable ${deployedId}
-
-Exectue BPMN File Testt On MSB
- [Documentation] Check if the test bpmn file can be exectued in MSB
- ${headers} Create Dictionary Content-Type=application/json Accept=application/json Authorization=Basic a2VybWl0Omtlcm1pdA==
- Create Session web_session http://${MSB_IP}:${MSB_PORT} headers=${headers}
- ${body} Create Dictionary processDefinitionKey=${processId}
- ${body} dumps ${body}
- ${resp}= Post Request web_session api/workflow/v1/process/instance ${body}
- Should Be Equal ${resp.status_code} ${200}
- Log ${resp.json()}
- Should Be Equal ${resp.json()["processDefinitionKey"]} ${processId}
-
-UnDeploy BPMN File Testt On MSB
- [Documentation] Check if the test bpmn file can be undeployed in MSB
- log ${deployedId}
- ${auth}= Create List kermit kermit
- ${headers} Create Dictionary Content-Type=application/json Accept=application/json
- Create Session web_session http://${MSB_IP}:${MSB_PORT} headers=${headers} auth=${auth}
- ${resp}= Delete Request web_session /api/workflow/v1/package/${deployedId}
- Should Be Equal ${resp.status_code} ${200}
+*** Settings ***
+Resource ../../common.robot
+Library Collections
+Library json
+Library OperatingSystem
+Library RequestsLibrary
+Library HttpLibrary.HTTP
+
+*** Variables ***
+${MSB_IP} 127.0.0.1
+${MSB_PORT} 10550
+${ACTIVITI_IP} 127.0.0.1
+${ACTIVITI_PORT} 8804
+${MGRSERVICE_IP} 127.0.0.1
+${MGRSERVICE_PORT} 8805
+${processId} demo
+${deployid} 0
+${bmpfilepath} ${SCRIPTS}/nfvo-wfengine/demo.bpmn20.xml
+
+*** Test Cases ***
+Deploy BPMN File Test On Activiti
+ [Documentation] Check if the test bpmn file can be deployed in activiti engine
+ ${auth}= Create List kermit kermit
+ ${headers}= Create Dictionary Accept=application/json
+ Create Session web_session http://${ACTIVITI_IP}:${ACTIVITI_PORT} headers=${headers} auth=${auth}
+ ${files}= evaluate {"file":open('${bmpfilepath}','rb')}
+ ${resp}= Post Request web_session /activiti-rest/service/repository/deployments files=${files}
+ Should Be Equal ${resp.status_code} ${201}
+ Log ${resp.json()}
+ ${deployedId}= Set Variable ${resp.json()["id"]}
+ Set Global Variable ${deployedId}
+
+Exectue BPMN File Testt On Activiti
+ [Documentation] Check if the test bpmn file can be exectued in activiti engine
+ ${headers} Create Dictionary Content-Type=application/json Accept=application/json Authorization=Basic a2VybWl0Omtlcm1pdA==
+ Create Session web_session http://${ACTIVITI_IP}:${ACTIVITI_PORT} headers=${headers}
+ ${body} Create Dictionary processDefinitionKey=${processId}
+ ${body} dumps ${body}
+ ${resp}= Post Request web_session /activiti-rest/service/runtime/process-instances ${body}
+ Should Be Equal ${resp.status_code} ${201}
+
+UnDeploy BPMN File Testt On Activiti
+ [Documentation] Check if the test bpmn file can be undeployed in activiti engine
+ log ${deployedId}
+ ${auth}= Create List kermit kermit
+ ${headers} Create Dictionary Content-Type=application/json Accept=application/json
+ Create Session web_session http://${ACTIVITI_IP}:${ACTIVITI_PORT} headers=${headers} auth=${auth}
+ ${resp}= Delete Request web_session /activiti-rest/service/repository/deployments/${deployedId}?cascade=true
+ Should Be Equal ${resp.status_code} ${204}
+
+Deploy BPMN File Test On MgrService
+ [Documentation] Check if the test bpmn file can be deployed in Management Service
+ ${auth}= Create List kermit kermit
+ ${headers}= Create Dictionary Accept=application/json
+ Create Session web_session http://${MGRSERVICE_IP}:${MGRSERVICE_PORT} headers=${headers} auth=${auth}
+ ${files}= evaluate {"file":open('${bmpfilepath}','rb')}
+ ${resp}= Post Request web_session api/workflow/v1/package files=${files}
+ Should Be Equal ${resp.status_code} ${200}
+ Log ${resp.json()}
+ ${deployedId}= Set Variable ${resp.json()["deployedId"]}
+ Set Global Variable ${deployedId}
+
+Exectue BPMN File Testt On MgrService
+ [Documentation] Check if the test bpmn file can be exectued in Management Service
+ ${headers} Create Dictionary Content-Type=application/json Accept=application/json Authorization=Basic a2VybWl0Omtlcm1pdA==
+ Create Session web_session http://${MGRSERVICE_IP}:${MGRSERVICE_PORT} headers=${headers}
+ ${body} Create Dictionary processDefinitionKey=${processId}
+ ${body} dumps ${body}
+ ${resp}= Post Request web_session api/workflow/v1/process/instance ${body}
+ Should Be Equal ${resp.status_code} ${200}
+ Log ${resp.json()}
+ Should Be Equal ${resp.json()["processDefinitionKey"]} ${processId}
+
+UnDeploy BPMN File Testt On MgrService
+ [Documentation] Check if the test bpmn file can be undeployed in Management Service
+ log ${deployedId}
+ ${auth}= Create List kermit kermit
+ ${headers} Create Dictionary Content-Type=application/json Accept=application/json
+ Create Session web_session http://${MGRSERVICE_IP}:${MGRSERVICE_PORT} headers=${headers} auth=${auth}
+ ${resp}= Delete Request web_session /api/workflow/v1/package/${deployedId}
+ Should Be Equal ${resp.status_code} ${200}
+
+Deploy BPMN File Test On MSB
+ [Documentation] Check if the test bpmn file can be deployed in activiti engine
+ ${auth}= Create List kermit kermit
+ ${headers}= Create Dictionary Accept=application/json
+ Create Session web_session http://${MSB_IP}:${MSB_PORT} headers=${headers} auth=${auth}
+ ${files}= evaluate {"file":open('${bmpfilepath}','rb')}
+ ${resp}= Post Request web_session api/workflow/v1/package files=${files}
+ Should Be Equal ${resp.status_code} ${200}
+ Log ${resp.json()}
+ ${deployedId}= Set Variable ${resp.json()["deployedId"]}
+ Set Global Variable ${deployedId}
+
+Exectue BPMN File Testt On MSB
+ [Documentation] Check if the test bpmn file can be exectued in MSB
+ ${headers} Create Dictionary Content-Type=application/json Accept=application/json Authorization=Basic a2VybWl0Omtlcm1pdA==
+ Create Session web_session http://${MSB_IP}:${MSB_PORT} headers=${headers}
+ ${body} Create Dictionary processDefinitionKey=${processId}
+ ${body} dumps ${body}
+ ${resp}= Post Request web_session api/workflow/v1/process/instance ${body}
+ Should Be Equal ${resp.status_code} ${200}
+ Log ${resp.json()}
+ Should Be Equal ${resp.json()["processDefinitionKey"]} ${processId}
+
+UnDeploy BPMN File Testt On MSB
+ [Documentation] Check if the test bpmn file can be undeployed in MSB
+ log ${deployedId}
+ ${auth}= Create List kermit kermit
+ ${headers} Create Dictionary Content-Type=application/json Accept=application/json
+ Create Session web_session http://${MSB_IP}:${MSB_PORT} headers=${headers} auth=${auth}
+ ${resp}= Delete Request web_session /api/workflow/v1/package/${deployedId}
+ Should Be Equal ${resp.status_code} ${200}
diff --git a/test/csit/tests/vnfsdk-ice/ice-server/heat_template_empty.zip b/test/csit/tests/vnfsdk-ice/ice-server/heat_template_empty.zip
new file mode 100644
index 000000000..d1e6d9970
--- /dev/null
+++ b/test/csit/tests/vnfsdk-ice/ice-server/heat_template_empty.zip
Binary files differ
diff --git a/test/csit/tests/vnfsdk-ice/ice-server/heat_template_ok.zip b/test/csit/tests/vnfsdk-ice/ice-server/heat_template_ok.zip
new file mode 100644
index 000000000..4e89aba3e
--- /dev/null
+++ b/test/csit/tests/vnfsdk-ice/ice-server/heat_template_ok.zip
Binary files differ
diff --git a/test/csit/tests/vnfsdk-ice/ice-server/validation_test.robot b/test/csit/tests/vnfsdk-ice/ice-server/validation_test.robot
new file mode 100644
index 000000000..1a134b017
--- /dev/null
+++ b/test/csit/tests/vnfsdk-ice/ice-server/validation_test.robot
@@ -0,0 +1,69 @@
+*** settings ***
+Library OperatingSystem
+Library Process
+Library String
+Library Collections
+Library RequestsLibrary
+Library json
+
+
+*** Variables ***
+${valid_heat_zip} ${SCRIPTS}/../tests/vnfsdk-ice/ice-server/heat_template_ok.zip
+${empty_heat_zip} ${SCRIPTS}/../tests/vnfsdk-ice/ice-server/heat_template_empty.zip
+${ice_uri} /onapapi/ice/v1/
+
+*** Test Cases ***
+
+ICE health Check
+ [Documentation] Validate that ICE is up
+ Create Session ice_session http://${ICE_IP}:5000
+ &{headers}= Create Dictionary Content-Type=application/json
+
+ ${resp}= Get Request ice_session ${ice_uri} headers=${headers}
+
+ Should Be Equal As Strings ${resp.status_code} 200
+
+Check status code for valid HEAT based VNF package
+ [Documentation] Post a valid VNF package and expect 200 Response
+ ${fileData}= Get Binary File ${valid_heat_zip}
+ ${fileDir} ${fileName}= Split Path ${valid_heat_zip}
+ ${partData}= Create List ${fileName} ${fileData} application/octet-stream
+ &{fileParts}= Create Dictionary
+ Set To Dictionary ${fileParts} file=${partData}
+
+ ${resp}= Post Request ice_session ${ice_uri} files=${fileParts}
+
+ Log Receive HTTP Status code ${resp.status_code}
+ Should Be Equal As Strings ${resp.status_code} 200
+ ${json} = Set Variable ${resp.json()}
+ ${message} = Get From Dictionary ${json} message
+ Should Be Equal ${message} OK
+
+Check status code for empty VNF package
+ [Documentation] Post an empty VNF package and expect 422 Response
+ ${fileData}= Get Binary File ${empty_heat_zip}
+ ${fileDir} ${fileName}= Split Path ${empty_heat_zip}
+ ${partData}= Create List ${fileName} ${fileData} application/octet-stream
+ &{fileParts}= Create Dictionary
+ Set To Dictionary ${fileParts} file=${partData}
+
+ ${resp}= Post Request ice_session ${ice_uri} files=${fileParts}
+
+ Log Receive HTTP Status code ${resp.status_code}
+ Should Be Equal As Strings ${resp.status_code} 422
+ ${json} = Set Variable ${resp.json()}
+ ${message} = Get From Dictionary ${json} message
+ Should Be Equal ${message} Tests failed
+
+Check status code for invalid request
+ [Documentation] Post an invalid request and expect 400 Response
+ ${fileData}= Get Binary File ${empty_heat_zip}
+ ${fileDir} ${fileName}= Split Path ${empty_heat_zip}
+ ${partData}= Create List ${fileName} ${fileData} application/octet-stream
+ &{fileParts}= Create Dictionary
+ Set To Dictionary ${fileParts} foo=${partData}
+
+ ${resp}= Post Request ice_session ${ice_uri} files=${fileParts}
+
+ Log Receive HTTP Status code ${resp.status_code}
+ Should Be Equal As Strings ${resp.status_code} 400
diff --git a/test/csit/tests/vnfsdk-pkgtools/tosca-metadata/csar/test_entry.mf b/test/csit/tests/vnfsdk-pkgtools/tosca-metadata/csar/test_entry.mf
index 710d1a201..4441457e8 100644
--- a/test/csit/tests/vnfsdk-pkgtools/tosca-metadata/csar/test_entry.mf
+++ b/test/csit/tests/vnfsdk-pkgtools/tosca-metadata/csar/test_entry.mf
@@ -1,5 +1,5 @@
metadata:
vnf_product_name: test
vnf_provider_id: test
-vnf_pacakage_version: 1.0
-vnf_release_date_time: 2017.09.15T15:00+8:00
+vnf_package_version: 1.0
+vnf_release_data_time: 2017-09-15T15:00:03+08:00
diff --git a/test/ete/labs/tlab/onap-openstack-template.env b/test/ete/labs/tlab/onap-openstack-template.env
index 52ecae9d8..3da2ca937 100644
--- a/test/ete/labs/tlab/onap-openstack-template.env
+++ b/test/ete/labs/tlab/onap-openstack-template.env
@@ -89,6 +89,10 @@ parameters:
vid_ip_addr: 10.0.8.1
clamp_ip_addr: 10.0.12.1
openo_ip_addr: 10.0.14.1
+ music_ip_addr: 10.0.15.1
+ oof_ip_addr: 10.0.16.1
+ aaf_ip_addr: 10.0.13.1
+ nbi_ip_addr: 10.0.17.1
###########################
# #
@@ -96,6 +100,7 @@ parameters:
# #
###########################
+ dcae_deployment_profile: R2MVP
dnsaas_config_enabled: false
dnsaas_region: RegionOne
dnsaas_keystone_url: https://bdc1tlab01.research.att.com:5000/v3
diff --git a/test/ete/labs/windriver/Integration-SB-06-DNS-openrc b/test/ete/labs/windriver/Integration-SB-06-DNS-openrc
new file mode 100644
index 000000000..5f211585a
--- /dev/null
+++ b/test/ete/labs/windriver/Integration-SB-06-DNS-openrc
@@ -0,0 +1,9 @@
+export OS_PROJECT_ID=2d7c6ec2cf9147fa974fa059b3673d7a
+export OS_PROJECT_NAME=Integration-SB-06
+export OS_USER_DOMAIN_NAME=Default
+export OS_USERNAME=demo
+export OS_PASSWORD=onapdemo
+export OS_AUTH_URL=http://10.12.25.5:5000/v3
+export OS_IDENTITY_API_VERSION=3
+export OS_REGION_NAME=RegionOne
+export OS_INTERFACE=public
diff --git a/test/ete/labs/windriver/Integration-SB-06-openrc b/test/ete/labs/windriver/Integration-SB-06-openrc
new file mode 100644
index 000000000..c7b650e2c
--- /dev/null
+++ b/test/ete/labs/windriver/Integration-SB-06-openrc
@@ -0,0 +1,9 @@
+export OS_PROJECT_ID=7fad299815104c0a8f90a8df80343f03
+export OS_PROJECT_NAME=Integration-SB-06
+export OS_USER_DOMAIN_NAME=Default
+export OS_USERNAME=demo
+export OS_PASSWORD=onapdemo
+export OS_AUTH_URL=http://10.12.25.2:5000/v3
+export OS_IDENTITY_API_VERSION=3
+export OS_REGION_NAME=RegionOne
+export OS_INTERFACE=public
diff --git a/test/ete/labs/windriver/Integration-SB-07-DNS-openrc b/test/ete/labs/windriver/Integration-SB-07-DNS-openrc
new file mode 100644
index 000000000..170859f87
--- /dev/null
+++ b/test/ete/labs/windriver/Integration-SB-07-DNS-openrc
@@ -0,0 +1,9 @@
+export OS_PROJECT_ID=885777d5e9074f31ad7801f9e6876b84
+export OS_PROJECT_NAME=Integration-SB-07
+export OS_USER_DOMAIN_NAME=Default
+export OS_USERNAME=demo
+export OS_PASSWORD=onapdemo
+export OS_AUTH_URL=http://10.12.25.5:5000/v3
+export OS_IDENTITY_API_VERSION=3
+export OS_REGION_NAME=RegionOne
+export OS_INTERFACE=public
diff --git a/test/ete/labs/windriver/Integration-SB-07-openrc b/test/ete/labs/windriver/Integration-SB-07-openrc
new file mode 100644
index 000000000..faf6b4bba
--- /dev/null
+++ b/test/ete/labs/windriver/Integration-SB-07-openrc
@@ -0,0 +1,9 @@
+export OS_PROJECT_ID=1e097c6713e74fd7ac8e4295e605ee1e
+export OS_PROJECT_NAME=Integration-SB-07
+export OS_USER_DOMAIN_NAME=Default
+export OS_USERNAME=demo
+export OS_PASSWORD=onapdemo
+export OS_AUTH_URL=http://10.12.25.2:5000/v3
+export OS_IDENTITY_API_VERSION=3
+export OS_REGION_NAME=RegionOne
+export OS_INTERFACE=public
diff --git a/test/ete/labs/windriver/onap-openstack-template.env b/test/ete/labs/windriver/onap-openstack-template.env
index 27cd0ef62..6f4ea8783 100644
--- a/test/ete/labs/windriver/onap-openstack-template.env
+++ b/test/ete/labs/windriver/onap-openstack-template.env
@@ -89,6 +89,10 @@ parameters:
vid_ip_addr: 10.0.8.1
clamp_ip_addr: 10.0.12.1
openo_ip_addr: 10.0.14.1
+ music_ip_addr: 10.0.15.1
+ oof_ip_addr: 10.0.16.1
+ aaf_ip_addr: 10.0.13.1
+ nbi_ip_addr: 10.0.17.1
###########################
# #
@@ -96,6 +100,7 @@ parameters:
# #
###########################
+ dcae_deployment_profile: R2MVP
dnsaas_config_enabled: true
dnsaas_region: RegionOne
dnsaas_keystone_url: http://10.12.25.5:5000/v3
diff --git a/test/ete/scripts/deploy-onap.sh b/test/ete/scripts/deploy-onap.sh
index 68ca34830..689482c2e 100755
--- a/test/ete/scripts/deploy-onap.sh
+++ b/test/ete/scripts/deploy-onap.sh
@@ -39,13 +39,13 @@ popd
sed "1,/${SENTINEL}/d" ${ENV_SRC} >> ${ENV_FILE}
cat ${ENV_FILE}
-sdiff -w 180 ${ENV_SRC} ${ENV_FILE}
+diff ${ENV_SRC} ${ENV_FILE}
# generate final heat template
# add apt proxy to heat template if applicable
if [ -x $LAB_DIR/apt-proxy.sh ]; then
$LAB_DIR/apt-proxy.sh ${YAML_FILE}
- sdiff -w 180 ${YAML_SRC} ${YAML_FILE}
+ diff ${YAML_SRC} ${YAML_FILE}
fi
@@ -60,7 +60,9 @@ $WORKSPACE/test/ete/scripts/teardown-onap.sh
# create new stack
STACK="ete-$(uuidgen | cut -c-8)"
echo "New Stack Name: ${STACK}"
-openstack stack create -t ${YAML_FILE} -e ${ENV_FILE} $STACK
+if ! openstack stack create -t ${YAML_FILE} -e ${ENV_FILE} $STACK; then
+ exit 1
+fi
while [ "CREATE_IN_PROGRESS" == "$(openstack stack show -c stack_status -f value $STACK)" ]; do
sleep 20
diff --git a/test/s3p/collector/get_resource_stats.py b/test/s3p/collector/get_resource_stats.py
new file mode 100755
index 000000000..8ad22c575
--- /dev/null
+++ b/test/s3p/collector/get_resource_stats.py
@@ -0,0 +1,87 @@
+#!/usr/bin/python
+import subprocess
+import sys
+import json
+import datetime
+import collections
+import re
+import tzlocal
+from decimal import Decimal
+
+sys.path.append('../util')
+import docker_util
+
+AAI1_NAME = "AAI1"
+AAI2_NAME = "AAI2"
+SO_NAME = "SO"
+SDNC_NAME = "SDNC"
+AAI1_IP = "10.0.1.1"
+AAI2_IP = "10.0.1.2"
+SO_IP = "10.0.5.1"
+SDNC_IP = "10.0.7.1"
+
+def aai1():
+ containers = docker_util.get_container_list(AAI1_IP)
+ run(AAI1_NAME, AAI1_IP, containers)
+
+def aai2():
+ containers = docker_util.get_container_list(AAI2_IP)
+ run(AAI2_NAME, AAI2_IP, containers)
+
+def so():
+ containers = docker_util.get_container_list(SO_IP)
+ run(SO_NAME, SO_IP, containers)
+
+def sdnc():
+ containers = docker_util.get_container_list(SDNC_IP)
+ run(SDNC_NAME, SDNC_IP, containers)
+
+def run(component, ip, containers):
+ cmd = ["ssh", "-i", "onap_dev"]
+ cmd.append("ubuntu@" + ip)
+ cmd.append("sudo docker stats --no-stream")
+ for c in containers:
+ cmd.append(c)
+ ssh = subprocess.Popen(cmd, shell=False, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
+
+ result = ssh.stdout.readlines()
+ if result == []:
+ error = ssh.stderr.readlines()
+ print(error)
+ else:
+ result.pop(0)
+ for line in result:
+ token = line.decode('ascii').strip().split()
+ data = collections.OrderedDict()
+ data['datetime'] = datetime.datetime.now(tzlocal.get_localzone()).strftime("%Y-%m-%dT%H:%M:%S%Z")
+ data['component'] = component
+ data['container'] = token[0]
+ data['cpu'] = get_percent_number(token[1])
+ data['memory'] = get_memory_number(token[2])
+ data['physical'] = get_memory_number(token[4])
+ data['mem_percent'] = get_percent_number(token[5])
+ size = docker_util.get_container_volume_size(ip, data['container'])
+ if size is not None:
+ data['volume'] = size
+ file.write(json.dumps(data, default = myconverter) + "\n")
+ file.flush()
+
+def myconverter(o):
+ if isinstance(o, datetime.datetime):
+ return o.__str__()
+
+def get_percent_number(s):
+ return float(re.sub('[^0-9\.]', '', s))
+
+def get_memory_number(s):
+ f = float(re.sub('[^0-9\.]', '', s))
+ if s.endswith("GiB"):
+ f = f*1000
+ return f
+
+file = open("resource.log", "w+")
+while True:
+ so()
+ sdnc()
+ aai1()
+ aai2()
diff --git a/test/s3p/generator/locustfile.py b/test/s3p/generator/locustfile.py
new file mode 100644
index 000000000..63031cd78
--- /dev/null
+++ b/test/s3p/generator/locustfile.py
@@ -0,0 +1,186 @@
+import random
+import string
+import time
+import datetime
+import sys
+import collections
+import json
+import tzlocal
+import os
+import fcntl
+import logging
+from locust import HttpLocust, TaskSet, task
+from decimal import Decimal
+
+
+class UserBehavior(TaskSet):
+ base = "/ecomp/mso/infra/e2eServiceInstances/v3"
+ headers = {"Accept":"application/json","Content-Type":"application/json","Authorization":"Basic SW5mcmFQb3J0YWxDbGllbnQ6cGFzc3dvcmQxJA=="}
+ service_creation_body = "{\"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\" } } },{\"resourceName\": \"VL UNDERLAYVPN\", \"resourceDefId\": \"4f5d692b-4022-43ab-b878-a93deb5b2061\", \"resourceId\": \"b977ec47-45b2-41f6-aa03-bf6554dc9620\", \"nsParameters\": { \"locationConstraints\": [], \"additionalParamForNs\": { \"topology\": \"full-mesh\", \"site2_name\": \"site2\", \"sna2_name\": \"site2_sna\", \"description\": \"underlay\", \"sna1_name\": \"site1_sna\", \"ac1_route\": \"3.3.3.12/30:dc84ce88-99f7\", \"ac2_peer_ip\": \"3.3.3.20/30\", \"technology\": \"mpls\", \"ac2_route\": \"3.3.3.20/30:98928302-3287\", \"ac2_id\": \"84d937a4-b227-375f-a744-2b778f36e04e\", \"ac1_protocol\": \"STATIC\", \"ac2_svlan\": \"4004\", \"serviceType\": \"l3vpn-ipwan\", \"ac2_ip\": \"3.3.3.21/30\", \"pe2_id\": \"4412d3f0-c296-314d-9284-b72fc5d485e8\", \"ac1_id\": \"b4f01ac0-c1e1-3e58-a8be-325e4372c960\", \"af_type\": \"ipv4\", \"ac1_svlan\": \"4002\", \"ac1_peer_ip\": \"3.3.3.12/30\", \"ac1_ip\": \"3.3.3.13/30\", \"version\": \"1.0\", \"name\": \"testunderlay\", \"id\": \"123124141\", \"pe1_id\": \"2ef788f0-407c-3070-b756-3a5cd71fde18\", \"ac2_protocol\": \"STATIC\", \"site1_name\": \"stie1\" } } } ] } } }"
+ # following class variables to make them unique across all users
+ transaction_file= open("transaction.log", "w+")
+ operation_file = open("operation.log", "w+")
+
+ def on_start(self):
+ """ on_start is called when a Locust start before any task is scheduled """
+ self.init()
+
+ def init(self):
+ pass
+
+ def myconverter(self, o):
+ if isinstance(o, datetime.datetime):
+ return o.__str__()
+
+ @task(1)
+ def create_service(self):
+ # Post a E2E service instantiation request to SO
+ method = "POST"
+ url = self.base
+ service_instance_name = ''.join(random.choice(string.ascii_uppercase + string.digits) for _ in range(10))
+ data = self.service_creation_body % service_instance_name
+
+ t1 = datetime.datetime.now(tzlocal.get_localzone())
+ response = self.client.request(method, url, headers=self.headers, data=data)
+ t2 = datetime.datetime.now(tzlocal.get_localzone())
+ delta = t2 - t1
+ data = collections.OrderedDict()
+ data['datetime'] = datetime.datetime.now(tzlocal.get_localzone()).strftime("%Y-%m-%dT%H:%M:%S%Z")
+ data['method'] = method
+ data['url'] = url
+ data['status_code'] = response.status_code
+ data['transaction_time'] = (delta.seconds*10^6 + delta.microseconds)/1000
+ fcntl.flock(self.transaction_file, fcntl.LOCK_EX)
+ self.transaction_file.write(json.dumps(data, default = self.myconverter) + "\n")
+ self.transaction_file.flush()
+ os.fsync(self.transaction_file)
+ fcntl.flock(self.transaction_file, fcntl.LOCK_UN)
+ serviceId = response.json()['service']['serviceId']
+ operationId = response.json()['service']['operationId']
+
+ # Get the request status
+ method = "GET"
+ url = self.base + "/" + serviceId + "/operations/" + operationId
+ url1 = "/ecomp/mso/infra/e2eServiceInstances/v3/{serviceId}/operations/{operationId}"
+ count = 1
+ while count < 50:
+ tt1 = datetime.datetime.now()
+ response = self.client.request(method, url, name=url1, headers=self.headers)
+ tt2 = datetime.datetime.now()
+ delta = tt2 - tt1
+ result = response.json()['operationStatus']['result']
+ progress = response.json()['operationStatus']['progress']
+ data = collections.OrderedDict()
+ data['datetime'] = datetime.datetime.now(tzlocal.get_localzone()).strftime("%Y-%m-%dT%H:%M:%S%Z")
+ data['method'] = method
+ data['url'] = url1
+ data['status_code'] = response.status_code
+ data['count'] = count
+ data['result'] = result
+ data['progress'] = progress
+ data['transaction_time'] = (delta.seconds*10^6 + delta.microseconds)/1000
+ fcntl.flock(self.transaction_file, fcntl.LOCK_EX)
+ self.transaction_file.write(json.dumps(data, default = self.myconverter) + "\n")
+ self.transaction_file.flush()
+ os.fsync(self.transaction_file)
+ fcntl.flock(self.transaction_file, fcntl.LOCK_UN)
+ if result == "finished" or result == "error":
+ break
+ else:
+ time.sleep(1)
+ count = count + 1
+
+ if result == "finished":
+ result = "success"
+ else:
+ result = "failure"
+ t3 = datetime.datetime.now(tzlocal.get_localzone())
+ delta = t3 - t1
+ data = collections.OrderedDict()
+ data['datetime'] = t1.strftime("%Y-%m-%dT%H:%M:%S%Z")
+ data['operation'] = "volte_create"
+ data['result'] = result
+ data['duration'] = round(delta.seconds + Decimal(delta.microseconds/1000000.0), 3)
+ fcntl.flock(self.operation_file, fcntl.LOCK_EX)
+ self.operation_file.write(json.dumps(data, default = self.myconverter) + "\n")
+ self.operation_file.flush()
+ os.fsync(self.operation_file)
+ fcntl.flock(self.operation_file, fcntl.LOCK_UN)
+
+ self.delete_service(serviceId)
+
+ def delete_service(self, serviceId):
+ method = "DELETE"
+ url = self.base + "/" + serviceId
+ data = "{\"globalSubscriberId\":\"Demonstration\", \"serviceType\":\"vIMS\"}"
+ t1 = datetime.datetime.now(tzlocal.get_localzone())
+ response = self.client.request(method, url, name=self.base, headers=self.headers, data=data)
+ t2 = datetime.datetime.now(tzlocal.get_localzone())
+ delta = t2 - t1
+ data = collections.OrderedDict()
+ data['datetime'] = datetime.datetime.now(tzlocal.get_localzone()).strftime("%Y-%m-%dT%H:%M:%S%Z")
+ data['method'] = method
+ data['url'] = self.base
+ data['status_code'] = response.status_code
+ data['transaction_time'] = (delta.seconds*10^6 + delta.microseconds)/1000
+ fcntl.flock(self.transaction_file, fcntl.LOCK_EX)
+ self.transaction_file.write(json.dumps(data, default = self.myconverter) + "\n")
+ self.transaction_file.flush()
+ os.fsync(self.transaction_file)
+ fcntl.flock(self.transaction_file, fcntl.LOCK_UN)
+ operationId = response.json()['operationId']
+
+ # Get the request status
+ method = "GET"
+ url = self.base + "/" + serviceId + "/operations/" + operationId
+ url1 = "/ecomp/mso/infra/e2eServiceInstances/v3/{serviceId}/operations/{operationId}"
+ count = 1
+ while count < 50:
+ tt1 = datetime.datetime.now(tzlocal.get_localzone())
+ response = self.client.request(method, url, name=url1, headers=self.headers)
+ tt2 = datetime.datetime.now(tzlocal.get_localzone())
+ delta = tt2 - tt1
+ result = response.json()['operationStatus']['result']
+ progress = response.json()['operationStatus']['progress']
+ data = collections.OrderedDict()
+ data['datetime'] = datetime.datetime.now(tzlocal.get_localzone()).strftime("%Y-%m-%dT%H:%M:%S%Z")
+ data['method'] = method
+ data['url'] = url1
+ data['status_code'] = response.status_code
+ data['count'] = count
+ data['result'] = result
+ data['progress'] = progress
+ data['transaction_time'] = (delta.seconds*10^6 + delta.microseconds)/1000
+ fcntl.flock(self.transaction_file, fcntl.LOCK_EX)
+ self.transaction_file.write(json.dumps(data, default = self.myconverter) + "\n")
+ self.transaction_file.flush()
+ os.fsync(self.transaction_file)
+ fcntl.flock(self.transaction_file, fcntl.LOCK_UN)
+ if result == "finished" or result == "error":
+ break
+ else:
+ time.sleep(1)
+ count = count + 1
+
+ if result == "finished":
+ result = "success"
+ else:
+ result = "failure"
+ t3 = datetime.datetime.now(tzlocal.get_localzone())
+ delta = t3 - t1
+ data = collections.OrderedDict()
+ data['datetime'] = t1.strftime("%Y-%m-%dT%H:%M:%S%Z")
+ data['operation'] = "volte_delete"
+ data['result'] = result
+ data['duration'] = round(delta.seconds + Decimal(delta.microseconds/1000000.0), 3)
+ fcntl.flock(self.operation_file, fcntl.LOCK_EX)
+ self.operation_file.write(json.dumps(data, default = self.myconverter) + "\n")
+ self.operation_file.flush()
+ os.fsync(self.operation_file)
+ fcntl.flock(self.operation_file, fcntl.LOCK_UN)
+
+
+class WebsiteUser(HttpLocust):
+ task_set = UserBehavior
+ min_wait = 1000
+ max_wait = 3000
diff --git a/test/s3p/mock/set_expectation.sh b/test/s3p/mock/set_expectation.sh
new file mode 100755
index 000000000..e8c2c24b4
--- /dev/null
+++ b/test/s3p/mock/set_expectation.sh
@@ -0,0 +1,249 @@
+curl -v -X PUT "http://localhost:1080/expectation" -d '{
+ "httpRequest": {
+ "method": "GET",
+ "path": "/api/huaweivnfmdriver/v1/swagger.json"
+ },
+ "httpResponse": {
+ "statusCode": 200,
+ "headers": {
+ "content-type": ["application/json"]
+ },
+ "body": {
+ "not": false,
+ "type": "JSON",
+ "json": "{\"errcode\":\"0\",\"errmsg\":\"get token successfully.\",\"data\":{\"expiredDate\":\"2018-11-10 10:03:33\"}}"
+ }
+ },
+ "times" : {
+ "unlimited" : true
+ },
+ "timeToLive" : {
+ "unlimited" : true
+ }
+}'
+
+curl -v -X PUT "http://localhost:1080/expectation" -d '{
+ "httpRequest": {
+ "method": "POST",
+ "path": "/controller/v2/tokens"
+ },
+ "httpResponse": {
+ "statusCode": 200,
+ "headers": {
+ "content-type": ["application/json"]
+ },
+ "body": {
+ "not": false,
+ "type": "JSON",
+ "json": "{\"errcode\":\"0\",\"errmsg\":\"get token successfully.\",\"data\":{\"expiredDate\":\"2018-11-10 10:03:33\",\"token_id\":\"7F06BFDDAC33A989:77DAD6058B1BB81EF1A557745E4D9C78399B31C4DB509704ED8A7DF05A362A59\"}}"
+ }
+ },
+ "times" : {
+ "unlimited" : true
+ },
+ "timeToLive" : {
+ "unlimited" : true
+ }
+}'
+
+curl -v -X PUT "http://localhost:1080/expectation" -d '{
+ "httpRequest": {
+ "method": "POST",
+ "path": "/restconf/data/huawei-ac-net-l3vpn-svc:l3vpn-svc-cfg/vpn-services"
+ },
+ "httpResponse": {
+ "statusCode": 201
+ },
+ "times" : {
+ "unlimited" : true
+ },
+ "timeToLive" : {
+ "unlimited" : true
+ }
+}'
+
+curl -v -X PUT "http://localhost:1080/expectation" -d '{
+ "httpRequest": {
+ "method": "PUT",
+ "path": "/restconf/data/huawei-ac-net-l3vpn-svc:l3vpn-svc-cfg/huawei-ac-net-l3vpn-svc-vfi:vrf-attributes"
+ },
+ "httpResponse": {
+ "statusCode": 204
+ },
+ "times" : {
+ "unlimited" : true
+ },
+ "timeToLive" : {
+ "unlimited" : true
+ }
+}'
+
+curl -v -X PUT "http://localhost:1080/expectation" -d '{
+ "httpRequest": {
+ "method": "POST",
+ "path": "/restconf/data/huawei-ac-net-l3vpn-svc:l3vpn-svc-cfg/sites"
+ },
+ "httpResponse": {
+ "statusCode": 201
+ },
+ "times" : {
+ "unlimited" : true
+ },
+ "timeToLive" : {
+ "unlimited" : true
+ }
+}'
+
+# ZTE DCI
+curl -v -X PUT "http://localhost:1080/expectation" -d '{
+ "httpRequest": {
+ "method": "POST",
+ "path": "/v2.0/l3-dci-connects"
+ },
+ "httpResponse": {
+ "statusCode": 201
+ },
+ "times" : {
+ "unlimited" : true
+ },
+ "timeToLive" : {
+ "unlimited" : true
+ }
+}'
+
+# huaweivnfmdriver
+curl -v -X PUT "http://localhost:1080/expectation" -d '{
+ "httpRequest": {
+ "method": "POST",
+ "path": "/api/huaweivnfmdriver/v1/a0400010-11d7-4875-b4ae-5f42ed5d3a85/vnfs"
+ },
+ "httpResponse": {
+ "statusCode": 200,
+ "headers": {
+ "content-type": ["application/json"]
+ },
+ "body": {
+ "not": false,
+ "type": "JSON",
+ "json": "{\"vnfInstanceId\":\"fa3dca847b054f4eb9d3bc8bb9e5eec9\",\"jobId\":\"fa3dca847b054f4eb9d3bc8bb9e5eec9_post\"}"
+ }
+ },
+ "times" : {
+ "unlimited" : true
+ },
+ "timeToLive" : {
+ "unlimited" : true
+ }
+}'
+
+# huaweivnfmdriver
+curl -v -X PUT "http://localhost:1080/expectation" -d '{
+ "httpRequest": {
+ "method": "GET",
+ "path": "/api/huaweivnfmdriver/v1/a0400010-11d7-4875-b4ae-5f42ed5d3a85/jobs/fa3dca847b054f4eb9d3bc8bb9e5eec9_post",
+ "queryStringParameters": {
+ "responseId": ["0"]
+ }
+ },
+ "httpResponse": {
+ "statusCode": 200,
+ "headers": {
+ "content-type": ["application/json"]
+ },
+ "body": {
+ "not": false,
+ "type": "JSON",
+ "json": "{\"jobId\":\"fa3dca847b054f4eb9d3bc8bb9e5eec9\",\"responsedescriptor\":{\"progress\":\"50\",\"status\":\"processing\",\"errorCode\":null,\"responseId\":\"0\"}}"
+ }
+ },
+ "times" : {
+ "unlimited" : false
+ },
+ "timeToLive" : {
+ "unlimited" : true
+ }
+}'
+
+# huaweivnfmdriver
+curl -v -X PUT "http://localhost:1080/expectation" -d '{
+ "httpRequest": {
+ "method": "GET",
+ "path": "/api/huaweivnfmdriver/v1/a0400010-11d7-4875-b4ae-5f42ed5d3a85/jobs/fa3dca847b054f4eb9d3bc8bb9e5eec9_post",
+ "queryStringParameters": {
+ "responseId": ["0"]
+ }
+ },
+ "httpResponse": {
+ "statusCode": 200,
+ "headers": {
+ "content-type": ["application/json"]
+ },
+ "body": {
+ "not": false,
+ "type": "JSON",
+ "json": "{\"jobId\":\"fa3dca847b054f4eb9d3bc8bb9e5eec9\",\"responsedescriptor\":{\"progress\":\"100\",\"status\":\"processing\",\"errorCode\":null,\"responseId\":\"0\"}}"
+ }
+ },
+ "times" : {
+ "unlimited" : true
+ },
+ "timeToLive" : {
+ "unlimited" : true
+ }
+}'
+
+curl -v -X PUT "http://localhost:1080/expectation" -d '{
+ "httpRequest": {
+ "method": "GET",
+ "path": "/api/huaweivnfmdriver/v1/a0400010-11d7-4875-b4ae-5f42ed5d3a85/jobs/fa3dca847b054f4eb9d3bc8bb9e5eec9_post",
+ "queryStringParameters": {
+ "responseId": ["50"]
+ }
+ },
+ "httpResponse": {
+ "statusCode": 200,
+ "headers": {
+ "content-type": ["application/json"]
+ },
+ "body": {
+ "not": false,
+ "type": "JSON",
+ "json": "{\"jobId\":\"fa3dca847b054f4eb9d3bc8bb9e5eec9\",\"responsedescriptor\":{\"progress\":\"100\",\"status\":\"processing\",\"errorCode\":null,\"responseId\":\"50\"}}"
+ }
+ },
+ "times" : {
+ "unlimited" : true
+ },
+ "timeToLive" : {
+ "unlimited" : true
+ }
+}'
+
+
+curl -v -X PUT "http://localhost:1080/expectation" -d '{
+ "httpRequest": {
+ "method": "GET",
+ "path": "/api/huaweivnfmdriver/v1/a0400010-11d7-4875-b4ae-5f42ed5d3a85/jobs/fa3dca847b054f4eb9d3bc8bb9e5eec9_post",
+ "queryStringParameters": {
+ "responseId": ["2"]
+ }
+ },
+ "httpResponse": {
+ "statusCode": 200,
+ "headers": {
+ "content-type": ["application/json"]
+ },
+ "body": {
+ "not": false,
+ "type": "JSON",
+ "json": "{\"jobId\":\"fa3dca847b054f4eb9d3bc8bb9e5eec9\",\"responsedescriptor\":{\"progress\":\"100\",\"status\":\"processing\",\"errorCode\":null,\"responseId\":\"2\"}}"
+ }
+ },
+ "times" : {
+ "unlimited" : true
+ },
+ "timeToLive" : {
+ "unlimited" : true
+ }
+}'
+
diff --git a/test/s3p/util/docker_util.py b/test/s3p/util/docker_util.py
new file mode 100644
index 000000000..a0e688199
--- /dev/null
+++ b/test/s3p/util/docker_util.py
@@ -0,0 +1,126 @@
+# 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.
+
+import subprocess
+import json
+import re
+from decimal import Decimal
+
+
+def get_container_list(ip):
+ """
+ Get the list of containers running on the host
+ Args:
+ param1 (str): host ip
+
+ Returns:
+ list of containers in string
+ """
+
+ cmd = ['ssh', '-i', 'onap_dev']
+ cmd.append('ubuntu@' + ip)
+ cmd.append("sudo docker ps --format '{{.Names}}'")
+ ssh = subprocess.Popen(cmd, shell=False, stdout=subprocess.PIPE,
+ stderr=subprocess.PIPE)
+ result = ssh.stdout.readlines()
+ containers = []
+ if result == []:
+ error = ssh.stderr.readlines()
+ print error
+ else:
+ for line in result:
+ token = line.decode('ascii').strip()
+ containers.append(token)
+
+ return containers
+
+
+def get_container_volume_size(ip, container):
+ """
+ Get container total volume usage
+ Args:
+ param1 (str): host ip
+ param2 (str): container name
+
+ Returns:
+ float number in GB if the container has volume(s), None otherwise
+ """
+
+ cmd = ['ssh', '-i', 'onap_dev']
+ cmd.append('ubuntu@' + ip)
+ cmd.append("sudo docker inspect -f '{{ json .Mounts }}'")
+ cmd.append(container)
+ ssh = subprocess.Popen(cmd, shell=False, stdout=subprocess.PIPE,
+ stderr=subprocess.PIPE)
+ result = ssh.stdout.readlines()
+ total = None
+ if result == []:
+ error = ssh.stderr.readlines()
+ print error
+ else:
+ data = json.loads(result[0])
+ for entry in data:
+ if entry['Type'] == 'volume':
+ name = entry['Name']
+ size = get_volume_size(ip, name)
+ if total is None:
+ total = size
+ else:
+ total = total + size
+
+ return total
+
+
+def get_volume_size(ip, volume):
+ """
+ Get a volume size
+ Args:
+ param1 (str): host ip
+ param2 (str): volume name
+
+ Returns:
+ float number in GB
+ """
+
+ cmd = ['ssh', '-i', 'onap_dev']
+ cmd.append('ubuntu@' + ip)
+ cmd.append('sudo docker system df -v')
+ p1 = subprocess.Popen(cmd, stdout=subprocess.PIPE)
+ p2 = subprocess.Popen(['grep', volume], stdin=p1.stdout,
+ stdout=subprocess.PIPE)
+ p1.stdout.close()
+ (output, err) = p2.communicate()
+ size = output.split()[2]
+ return convert_to_GB(size)
+
+
+def convert_to_GB(s):
+ """
+ Convert volume size to GB
+ Args:
+ param1 (str): volume size with unit
+
+ Returns:
+ float number representing volume size in GB
+ """
+
+ if s.endswith('GB'):
+ d = float(re.sub('[^0-9\\.]', '', s))
+ if s.endswith('MB'):
+ d = round(Decimal(float(re.sub('[^0-9\\.]', '', s)) / 1000.0),
+ 1)
+ if s.endswith('kB'):
+ d = round(Decimal(float(re.sub('[^0-9\\.]', '', s))
+ / 1000000.0), 1)
+ return d
+
+
diff --git a/test/vcpe/config_sdnc_so.py b/test/vcpe/config_sdnc_so.py
new file mode 100755
index 000000000..660c70eb4
--- /dev/null
+++ b/test/vcpe/config_sdnc_so.py
@@ -0,0 +1,89 @@
+#! /usr/bin/python
+
+import logging
+from vcpecommon import *
+import csar_parser
+
+
+def insert_customer_service_to_sdnc(vcpecommon):
+ """
+ INSERT INTO SERVICE_MODEL (`service_uuid`, `model_yaml`,`invariant_uuid`,`version`,`name`,`description`,`type`,`category`,`ecomp_naming`,`service_instance_name_prefix`,`filename`,`naming_policy`) values ('7e319b6f-e710-440e-bbd2-63c1004949ef', null, 'a99ace8a-6e3b-447d-b2ff-4614e4234eea',null,'vCPEService', 'vCPEService', 'Service','Network L1-3', 'N', 'vCPEService', 'vCpeResCust110701/service-Vcperescust110701-template.yml',null);
+ INSERT INTO ALLOTTED_RESOURCE_MODEL (`customization_uuid`,`model_yaml`,`invariant_uuid`,`uuid`,`version`,`naming_policy`,`ecomp_generated_naming`,`depending_service`,`role`,`type`,`service_dependency`,`allotted_resource_type`) VALUES ( '7e40b664-d7bf-47ad-8f7c-615631d53cd7', NULL, 'f51b0aae-e24a-4cff-b190-fe3daf3d15ee', 'f3137496-1605-40e9-b6df-64aa0f8e91a0', '1.0', NULL,'Y',NULL,NULL,'TunnelXConnect',NULL, 'TunnelXConnect');
+ INSERT INTO ALLOTTED_RESOURCE_MODEL (`customization_uuid`,`model_yaml`,`invariant_uuid`,`uuid`,`version`,`naming_policy`,`ecomp_generated_naming`,`depending_service`,`role`,`type`,`service_dependency`,`allotted_resource_type`) VALUES ( 'e46097e1-6a0c-4cf3-a7e5-c39ed407e65e', NULL, 'aa60f6ba-541b-48d6-a5ff-3b0e1f0ad9bf', '0e157d52-b945-422f-b3a8-ab685c2be079', '1.0', NULL,'Y',NULL,NULL,'BRG',NULL, 'TunnelXConnect');
+ INSERT INTO VF_MODEL (`customization_uuid`,`model_yaml`,`invariant_uuid`,`uuid`,`version`,`name`,`naming_policy`,`ecomp_generated_naming`,`avail_zone_max_count`,`nf_function`,`nf_code`,`nf_type`,`nf_role`,`vendor`,`vendor_version`) VALUES ( '3768afa5-cf9e-4071-bb25-3a2e2628dd87', NULL, '5f56893b-d026-4672-b785-7f5ffeb498c6', '7cf28b23-5719-485b-9ab4-dae1a2fa0e07', '1.0', 'vspvgw111601',NULL,'Y',1,NULL,NULL,NULL,NULL,'vCPE','1.0');
+ INSERT INTO VF_MODULE_MODEL (`customization_uuid`,`model_yaml`,`invariant_uuid`,`uuid`,`version`,`vf_module_type`,`availability_zone_count`,`ecomp_generated_vm_assignments`) VALUES ( '17a9c7d1-6f8e-4930-aa83-0d323585184f', NULL, 'd772ddd1-7623-40b4-a2a5-ec287916cb51', '6e1a0652-f5e9-4caa-bff8-39bf0c8589a3', '1.0', 'Base',NULL,NULL);
+
+ :return:
+ """
+ logger = logging.getLogger('__name__')
+ logger.info('Inserting customer service data to SDNC DB')
+ csar_file = vcpecommon.find_file('rescust', 'csar', 'csar')
+ parser = csar_parser.CsarParser()
+ parser.parse_csar(csar_file)
+ cmds = []
+ cmds.append("INSERT INTO SERVICE_MODEL (`service_uuid`, `model_yaml`,`invariant_uuid`,`version`,`name`," \
+ "`description`,`type`,`category`,`ecomp_naming`,`service_instance_name_prefix`,`filename`," \
+ "`naming_policy`) values ('{0}', null, '{1}',null,'{2}', 'vCPEService', 'Service','Network L1-3'," \
+ "'N', 'vCPEService', '{3}/{4}',null);".format(parser.svc_model['modelVersionId'],
+ parser.svc_model['modelInvariantId'],
+ parser.svc_model['modelName'],
+ parser.svc_model['modelName'],
+ parser.svc_model['modelName']))
+
+ for model in parser.vnf_models:
+ if 'tunnel' in model['modelCustomizationName'].lower() or 'brg' in model['modelCustomizationName'].lower():
+ cmds.append("INSERT INTO ALLOTTED_RESOURCE_MODEL (`customization_uuid`,`model_yaml`,`invariant_uuid`," \
+ "`uuid`,`version`,`naming_policy`,`ecomp_generated_naming`,`depending_service`,`role`,`type`," \
+ "`service_dependency`,`allotted_resource_type`) VALUES ('{0}',NULL,'{1}','{2}','1.0'," \
+ "NULL,'Y', NULL,NULL,'TunnelXConnect'," \
+ "NULL, 'TunnelXConnect');".format(model['modelCustomizationId'], model['modelInvariantId'],
+ model['modelVersionId']))
+ else:
+ cmds.append("INSERT INTO VF_MODEL (`customization_uuid`,`model_yaml`,`invariant_uuid`,`uuid`,`version`," \
+ "`name`,`naming_policy`,`ecomp_generated_naming`,`avail_zone_max_count`,`nf_function`," \
+ "`nf_code`,`nf_type`,`nf_role`,`vendor`,`vendor_version`) VALUES ('{0}',NULL,'{1}','{2}'," \
+ "'1.0', '{3}',NULL,'Y',1,NULL,NULL,NULL,NULL,'vCPE'," \
+ "'1.0');".format(model['modelCustomizationId'], model['modelInvariantId'],
+ model['modelVersionId'], model['modelCustomizationName'].split()[0]))
+
+ model = parser.vfmodule_models[0]
+ cmds.append("INSERT INTO VF_MODULE_MODEL (`customization_uuid`,`model_yaml`,`invariant_uuid`,`uuid`,`version`," \
+ "`vf_module_type`,`availability_zone_count`,`ecomp_generated_vm_assignments`) VALUES ('{0}', NULL," \
+ "'{1}', '{2}', '1.0', 'Base',NULL,NULL)" \
+ ";".format(model['modelCustomizationId'], model['modelInvariantId'], model['modelVersionId']))
+ print('\n'.join(cmds))
+ vcpecommon.insert_into_sdnc_db(cmds)
+
+
+def insert_customer_service_to_so(vcpecommon):
+ logger = logging.getLogger('__name__')
+ logger.info('Inserting neutron HEAT template to SO DB and creating a recipe for customer service')
+ csar_file = vcpecommon.find_file('rescust', 'csar', 'csar')
+ parser = csar_parser.CsarParser()
+ parser.parse_csar(csar_file)
+ cmds = []
+ cmds.append("INSERT INTO `service_recipe` (`ACTION`, `VERSION_STR`, `DESCRIPTION`, `ORCHESTRATION_URI`, " \
+ "`SERVICE_PARAM_XSD`, `RECIPE_TIMEOUT`, `SERVICE_TIMEOUT_INTERIM`, `CREATION_TIMESTAMP`, " \
+ "`SERVICE_MODEL_UUID`) VALUES ('createInstance','1','{0}'," \
+ "'/mso/async/services/CreateVcpeResCustService',NULL,181,NULL, NOW()," \
+ "'{1}');".format(parser.svc_model['modelName'], parser.svc_model['modelVersionId']))
+
+ cmds.append("delete from `heat_template_params` where"
+ "`HEAT_TEMPLATE_ARTIFACT_UUID`='efee1d84-b8ec-11e7-abc4-cec278b6b50a';")
+ cmds.append("delete from `heat_template` where ARTIFACT_UUID='efee1d84-b8ec-11e7-abc4-cec278b6b50a';")
+ network_tempalte_file = vcpecommon.find_file('neutron', 'yaml', 'preload_templates')
+ with open(network_tempalte_file, 'r') as fin:
+ lines = fin.readlines()
+ longtext = '\n'.join(lines)
+ cmds.append("INSERT INTO `heat_template`(`ARTIFACT_UUID`, `NAME`, `VERSION`, `BODY`, `TIMEOUT_MINUTES`, " \
+ "`DESCRIPTION`, `CREATION_TIMESTAMP`, `ARTIFACT_CHECKSUM`) VALUES(" \
+ "'efee1d84-b8ec-11e7-abc4-cec278b6b50a', 'Generic NeutronNet', '1', '{0}', 10, " \
+ "'Generic Neutron Template', NOW(), 'MANUAL RECORD');".format(longtext))
+
+ cmds.append("INSERT INTO `heat_template_params`(`HEAT_TEMPLATE_ARTIFACT_UUID`, `PARAM_NAME`, `IS_REQUIRED`, " \
+ "`PARAM_TYPE`, `PARAM_ALIAS`) VALUES('efee1d84-b8ec-11e7-abc4-cec278b6b50a', 'shared', 0, " \
+ "'string', NULL);")
+
+ print('\n'.join(cmds))
+ vcpecommon.insert_into_so_db(cmds)
+
diff --git a/test/vcpe/csar_parser.py b/test/vcpe/csar_parser.py
new file mode 100755
index 000000000..f101364d5
--- /dev/null
+++ b/test/vcpe/csar_parser.py
@@ -0,0 +1,231 @@
+#! /usr/bin/python
+import os
+import zipfile
+import shutil
+import yaml
+import json
+import logging
+
+
+class CsarParser:
+ def __init__(self):
+ self.logger = logging.getLogger(__name__)
+ self.svc_model = {}
+ self.net_models = [] # there could be multiple networks
+ self.vnf_models = [] # this version only support a single VNF in the service template
+ self.vfmodule_models = [] # this version only support a single VF module in the service template
+
+ def get_service_yaml_from_csar(self, csar_file):
+ """
+ :param csar_file: csar file path name, e.g. 'csar/vgmux.csar'
+ :return:
+ """
+ tmpdir = './__tmp'
+ if os.path.isdir(tmpdir):
+ shutil.rmtree(tmpdir)
+ os.mkdir(tmpdir)
+
+ with zipfile.ZipFile(csar_file, "r") as zip_ref:
+ zip_ref.extractall(tmpdir)
+
+ yamldir = tmpdir + '/Definitions'
+ if os.path.isdir(yamldir):
+ for filename in os.listdir(yamldir):
+ # look for service template like this: service-Vcpesvcbrgemu111601-template.yml
+ if filename.startswith('service-') and filename.endswith('-template.yml'):
+ return os.path.join(yamldir, filename)
+
+ self.logger.error('Invalid file: ' + csar_file)
+ return ''
+
+ def get_service_model_info(self, svc_template):
+ """ extract service model info from yaml and convert to what to be used in SO request
+ Sample from yaml:
+ {
+ "UUID": "aed4fc5e-b871-4e26-8531-ceabd46df85e",
+ "category": "Network L1-3",
+ "description": "Infra service",
+ "ecompGeneratedNaming": true,
+ "invariantUUID": "c806682a-5b3a-44d8-9e88-0708be151296",
+ "name": "vcpesvcinfra111601",
+ "namingPolicy": "",
+ "serviceEcompNaming": true,
+ "serviceRole": "",
+ "serviceType": "",
+ "type": "Service"
+ },
+
+ Convert to
+ {
+ "modelType": "service",
+ "modelInvariantId": "ca4c7a70-06fd-45d8-8b9e-c9745d25bf2b",
+ "modelVersionId": "5d8911b4-e50c-4096-a81e-727a8157193c",
+ "modelName": "vcpesvcbrgemu111601",
+ "modelVersion": "1.0"
+ },
+
+ """
+ if svc_template['metadata']['type'] != 'Service':
+ self.logger.error('csar error: metadata->type is not Service')
+ return
+
+ metadata = svc_template['metadata']
+ self.svc_model = {
+ 'modelType': 'service',
+ 'modelInvariantId': metadata['invariantUUID'],
+ 'modelVersionId': metadata['UUID'],
+ 'modelName': metadata['name']
+ }
+ if 'version' in metadata:
+ self.svc_model['modelVersion'] = metadata['version']
+ else:
+ self.svc_model['modelVersion'] = '1.0'
+
+ def get_vnf_and_network_model_info(self, svc_template):
+ """ extract vnf and network model info from yaml and convert to what to be used in SO request
+ Sample from yaml:
+ "topology_template": {
+ "node_templates": {
+ "CPE_PUBLIC": {
+ "metadata": {
+ "UUID": "33b2c367-a165-4bb3-81c3-0150cd06ceff",
+ "category": "Generic",
+ "customizationUUID": "db1d4ac2-62cd-4e5d-b2dc-300dbd1a5da1",
+ "description": "Generic NeutronNet",
+ "invariantUUID": "3d4c0e47-4794-4e98-a794-baaced668930",
+ "name": "Generic NeutronNet",
+ "resourceVendor": "ATT (Tosca)",
+ "resourceVendorModelNumber": "",
+ "resourceVendorRelease": "1.0.0.wd03",
+ "subcategory": "Network Elements",
+ "type": "VL",
+ "version": "1.0"
+ },
+ "type": "org.openecomp.resource.vl.GenericNeutronNet"
+ },
+ Convert to
+ {
+ "modelType": "network",
+ "modelInvariantId": "3d4c0e47-4794-4e98-a794-baaced668930",
+ "modelVersionId": "33b2c367-a165-4bb3-81c3-0150cd06ceff",
+ "modelName": "Generic NeutronNet",
+ "modelVersion": "1.0",
+ "modelCustomizationId": "db1d4ac2-62cd-4e5d-b2dc-300dbd1a5da1",
+ "modelCustomizationName": "CPE_PUBLIC"
+ },
+ """
+ node_dic = svc_template['topology_template']['node_templates']
+ for node_name, v in node_dic.items():
+ model = {
+ 'modelInvariantId': v['metadata']['invariantUUID'],
+ 'modelVersionId': v['metadata']['UUID'],
+ 'modelName': v['metadata']['name'],
+ 'modelVersion': v['metadata']['version'],
+ 'modelCustomizationId': v['metadata']['customizationUUID'],
+ 'modelCustomizationName': node_name
+ }
+
+ if v['type'].startswith('org.openecomp.resource.vl.GenericNeutronNet'):
+ # a neutron network is found
+ self.logger.info('Parser found a network: ' + node_name)
+ model['modelType'] = 'network'
+ self.net_models.append(model)
+ elif v['type'].startswith('org.openecomp.resource.vf.'):
+ # a VNF is found
+ self.logger.info('Parser found a VNF: ' + node_name)
+ model['modelType'] = 'vnf'
+ self.vnf_models.append(model)
+ else:
+ self.logger.warning('Parser found a node that is neither a network nor a VNF: ' + node_name)
+
+ def get_vfmodule_model_info(self, svc_template):
+ """ extract network model info from yaml and convert to what to be used in SO request
+ Sample from yaml:
+ "topology_template": {
+ "groups": {
+ "vspinfra1116010..Vspinfra111601..base_vcpe_infra..module-0": {
+ "metadata": {
+ "vfModuleModelCustomizationUUID": "11ddac51-30e3-4a3f-92eb-2eb99c2cb288",
+ "vfModuleModelInvariantUUID": "02f70416-581e-4f00-bde1-d65e69af95c5",
+ "vfModuleModelName": "Vspinfra111601..base_vcpe_infra..module-0",
+ "vfModuleModelUUID": "88c78078-f1fd-4f73-bdd9-10420b0f6353",
+ "vfModuleModelVersion": "1"
+ },
+ "properties": {
+ "availability_zone_count": null,
+ "initial_count": 1,
+ "max_vf_module_instances": 1,
+ "min_vf_module_instances": 1,
+ "vf_module_description": null,
+ "vf_module_label": "base_vcpe_infra",
+ "vf_module_type": "Base",
+ "vfc_list": null,
+ "volume_group": false
+ },
+ "type": "org.openecomp.groups.VfModule"
+ }
+ },
+ Convert to
+ {
+ "modelType": "vfModule",
+ "modelInvariantId": "02f70416-581e-4f00-bde1-d65e69af95c5",
+ "modelVersionId": "88c78078-f1fd-4f73-bdd9-10420b0f6353",
+ "modelName": "Vspinfra111601..base_vcpe_infra..module-0",
+ "modelVersion": "1",
+ "modelCustomizationId": "11ddac51-30e3-4a3f-92eb-2eb99c2cb288",
+ "modelCustomizationName": "Vspinfra111601..base_vcpe_infra..module-0"
+ },
+ """
+ node_dic = svc_template['topology_template']['groups']
+ for node_name, v in node_dic.items():
+ if v['type'].startswith('org.openecomp.groups.VfModule'):
+ model = {
+ 'modelType': 'vfModule',
+ 'modelInvariantId': v['metadata']['vfModuleModelInvariantUUID'],
+ 'modelVersionId': v['metadata']['vfModuleModelUUID'],
+ 'modelName': v['metadata']['vfModuleModelName'],
+ 'modelVersion': v['metadata']['vfModuleModelVersion'],
+ 'modelCustomizationId': v['metadata']['vfModuleModelCustomizationUUID'],
+ 'modelCustomizationName': v['metadata']['vfModuleModelName']
+ }
+ self.vfmodule_models.append(model)
+ self.logger.info('Parser found a VF module: ' + model['modelCustomizationName'])
+
+ def parse_service_yaml(self, filename):
+ # clean up
+ self.svc_model = {}
+ self.net_models = [] # there could be multiple networks
+ self.vnf_models = [] # this version only support a single VNF in the service template
+ self.vfmodule_models = [] # this version only support a single VF module in the service template
+
+ svc_template = yaml.load(file(filename, 'r'))
+ self.get_service_model_info(svc_template)
+ self.get_vnf_and_network_model_info(svc_template)
+ self.get_vfmodule_model_info(svc_template)
+
+ return True
+
+ def parse_csar(self, csar_file):
+ yaml_file = self.get_service_yaml_from_csar(csar_file)
+ if yaml_file != '':
+ return self.parse_service_yaml(yaml_file)
+
+ def print_models(self):
+ print('---------Service Model----------')
+ print(json.dumps(self.svc_model, indent=2, sort_keys=True))
+
+ print('---------Network Model(s)----------')
+ for model in self.net_models:
+ print(json.dumps(model, indent=2, sort_keys=True))
+
+ print('---------VNF Model(s)----------')
+ for model in self.vnf_models:
+ print(json.dumps(model, indent=2, sort_keys=True))
+
+ print('---------VF Module Model(s)----------')
+ for model in self.vfmodule_models:
+ print(json.dumps(model, indent=2, sort_keys=True))
+
+ def test(self):
+ self.parse_csar('csar/service-Vcpesvcinfra111601-csar.csar')
+ self.print_models()
diff --git a/test/vcpe/get_info.py b/test/vcpe/get_info.py
new file mode 100755
index 000000000..5b0c6879b
--- /dev/null
+++ b/test/vcpe/get_info.py
@@ -0,0 +1,26 @@
+#! /usr/bin/python
+
+import time
+import logging
+import json
+import mysql.connector
+import ipaddress
+import re
+import sys
+import base64
+from vcpecommon import *
+import preload
+import vcpe_custom_service
+
+
+logging.basicConfig(level=logging.INFO, format='%(message)s')
+
+vcpecommon = VcpeCommon()
+nodes=['brg', 'bng', 'mux', 'dhcp']
+hosts = vcpecommon.get_vm_ip(nodes)
+print(json.dumps(hosts, indent=4, sort_keys=True))
+
+
+
+
+
diff --git a/test/vcpe/healthcheck.py b/test/vcpe/healthcheck.py
new file mode 100755
index 000000000..b94848e13
--- /dev/null
+++ b/test/vcpe/healthcheck.py
@@ -0,0 +1,30 @@
+#! /usr/bin/python
+
+import logging
+import json
+from vcpecommon import *
+import commands
+
+
+logging.basicConfig(level=logging.INFO, format='%(message)s')
+common = VcpeCommon()
+
+print('Checking vGMUX REST API from SDNC')
+cmd = 'curl -u admin:admin -X GET http://10.0.101.21:8183/restconf/config/ietf-interfaces:interfaces'
+ret = commands.getstatusoutput("ssh -i onap_dev root@sdnc '{0}'".format(cmd))
+sz = ret[-1].split('\n')[-1]
+print('\n')
+print(sz)
+
+print('Checking vBRG REST API from SDNC')
+cmd = 'curl -u admin:admin -X GET http://10.3.0.2:8183/restconf/config/ietf-interfaces:interfaces'
+ret = commands.getstatusoutput("ssh -i onap_dev root@sdnc '{0}'".format(cmd))
+sz = ret[-1].split('\n')[-1]
+print('\n')
+print(sz)
+
+print('Checking SDNC DB for vBRG MAC address')
+mac = common.get_brg_mac_from_sdnc()
+print(mac)
+
+
diff --git a/test/vcpe/loop.py b/test/vcpe/loop.py
new file mode 100755
index 000000000..ad5879715
--- /dev/null
+++ b/test/vcpe/loop.py
@@ -0,0 +1,37 @@
+#! /usr/bin/python
+
+import time
+import logging
+import json
+import mysql.connector
+import ipaddress
+import re
+import sys
+import base64
+from vcpecommon import *
+import preload
+import commands
+import vcpe_custom_service
+
+
+logging.basicConfig(level=logging.INFO, format='%(message)s')
+
+cpecommon = VcpeCommon()
+custom = vcpe_custom_service.CustomService(cpecommon)
+
+nodes=['mux']
+hosts = cpecommon.get_vm_ip(nodes)
+
+custom.del_vgmux_ves_mode(hosts['mux'])
+time.sleep(2)
+custom.del_vgmux_ves_collector(hosts['mux'])
+exit()
+
+time.sleep(2)
+logging.info('Setting vGMUX DCAE collector IP address')
+custom.set_vgmux_ves_collector(hosts['mux'])
+time.sleep(2)
+vgmux_vnf_name = cpecommon.load_object('vgmux_vnf_name')
+logging.info('vGMUX VNF instance name is %s', vgmux_vnf_name)
+logging.info('Letting vGMUX report packet loss to DCAE')
+custom.set_vgmux_packet_loss_rate(hosts['mux'], 55, vgmux_vnf_name)
diff --git a/test/vcpe/preload.py b/test/vcpe/preload.py
new file mode 100755
index 000000000..c4efafde6
--- /dev/null
+++ b/test/vcpe/preload.py
@@ -0,0 +1,216 @@
+#! /usr/bin/python
+
+import requests
+import json
+import sys
+from datetime import datetime
+from vcpecommon import *
+import csar_parser
+import logging
+import base64
+
+
+class Preload:
+ def __init__(self, vcpecommon):
+ self.logger = logging.getLogger(__name__)
+ self.vcpecommon = vcpecommon
+
+ def replace(self, sz, replace_dict):
+ for old_string, new_string in replace_dict.items():
+ sz = sz.replace(old_string, new_string)
+ if self.vcpecommon.template_variable_symbol in sz:
+ self.logger.error('Error! Cannot find a value to replace ' + sz)
+ return sz
+
+ def generate_json(self, template_file, replace_dict):
+ with open(template_file) as json_input:
+ json_data = json.load(json_input)
+ stk = [json_data]
+ while len(stk) > 0:
+ data = stk.pop()
+ for k, v in data.items():
+ if type(v) is dict:
+ stk.append(v)
+ elif type(v) is list:
+ stk.extend(v)
+ elif type(v) is str or type(v) is unicode:
+ if self.vcpecommon.template_variable_symbol in v:
+ data[k] = self.replace(v, replace_dict)
+ else:
+ self.logger.warning('Unexpected line in template: %s. Look for value %s', template_file, v)
+ return json_data
+
+ def reset_sniro(self):
+ self.logger.debug('Clearing SNIRO data')
+ r = requests.post(self.vcpecommon.sniro_url + '/reset', headers=self.vcpecommon.sniro_headers)
+ if 2 != r.status_code / 100:
+ self.logger.debug(r.content)
+ self.logger.error('Clearing SNIRO date failed.')
+ sys.exit()
+
+ def preload_sniro(self, template_sniro_data, template_sniro_request, tunnelxconn_ar_name, vgw_name, vbrg_ar_name,
+ vgmux_svc_instance_uuid, vbrg_svc_instance_uuid):
+ self.reset_sniro()
+ self.logger.info('Preloading SNIRO for homing service')
+ replace_dict = {'${tunnelxconn_ar_name}': tunnelxconn_ar_name,
+ '${vgw_name}': vgw_name,
+ '${brg_ar_name}': vbrg_ar_name,
+ '${vgmux_svc_instance_uuid}': vgmux_svc_instance_uuid,
+ '${vbrg_svc_instance_uuid}': vbrg_svc_instance_uuid
+ }
+ sniro_data = self.generate_json(template_sniro_data, replace_dict)
+ self.logger.debug('SNIRO data:')
+ self.logger.debug(json.dumps(sniro_data, indent=4, sort_keys=True))
+
+ base64_sniro_data = base64.b64encode(json.dumps(sniro_data))
+ self.logger.debug('SNIRO data: 64')
+ self.logger.debug(base64_sniro_data)
+ replace_dict = {'${base64_sniro_data}': base64_sniro_data, '${sniro_ip}': self.vcpecommon.hosts['robot']}
+ sniro_request = self.generate_json(template_sniro_request, replace_dict)
+ self.logger.debug('SNIRO request:')
+ self.logger.debug(json.dumps(sniro_request, indent=4, sort_keys=True))
+
+ r = requests.post(self.vcpecommon.sniro_url, headers=self.vcpecommon.sniro_headers, json=sniro_request)
+ if 2 != r.status_code / 100:
+ response = r.json()
+ self.logger.debug(json.dumps(response, indent=4, sort_keys=True))
+ self.logger.error('SNIRO preloading failed.')
+ sys.exit()
+
+ return True
+
+ def preload_network(self, template_file, network_role, subnet_start_ip, subnet_gateway, common_dict, name_suffix):
+ """
+ :param template_file:
+ :param network_role: cpe_signal, cpe_public, brg_bng, bng_mux, mux_gw
+ :param subnet_start_ip:
+ :param subnet_gateway:
+ :param name_suffix: e.g. '201711201311'
+ :return:
+ """
+ network_name = '_'.join([self.vcpecommon.instance_name_prefix['network'], network_role.lower(), name_suffix])
+ subnet_name = self.vcpecommon.network_name_to_subnet_name(network_name)
+ common_dict['${' + network_role+'_net}'] = network_name
+ common_dict['${' + network_role+'_subnet}'] = subnet_name
+ replace_dict = {'${network_role}': network_role,
+ '${service_type}': 'vCPE',
+ '${network_type}': 'Generic NeutronNet',
+ '${network_name}': network_name,
+ '${subnet_start_ip}': subnet_start_ip,
+ '${subnet_gateway}': subnet_gateway
+ }
+ self.logger.info('Preloading network ' + network_role)
+ return self.preload(template_file, replace_dict, self.vcpecommon.sdnc_preload_network_url)
+
+ def preload(self, template_file, replace_dict, url):
+ json_data = self.generate_json(template_file, replace_dict)
+ self.logger.debug(json.dumps(json_data, indent=4, sort_keys=True))
+ r = requests.post(url, headers=self.vcpecommon.sdnc_headers, auth=self.vcpecommon.sdnc_userpass, json=json_data)
+ response = r.json()
+ if int(response.get('output', {}).get('response-code', 0)) != 200:
+ self.logger.debug(json.dumps(response, indent=4, sort_keys=True))
+ self.logger.error('Preloading failed.')
+ return False
+ return True
+
+ def preload_vgw(self, template_file, brg_mac, commont_dict, name_suffix):
+ replace_dict = {'${brg_mac}': brg_mac,
+ '${suffix}': name_suffix
+ }
+ replace_dict.update(commont_dict)
+ self.logger.info('Preloading vGW')
+ return self.preload(template_file, replace_dict, self.vcpecommon.sdnc_preload_vnf_url)
+
+ def preload_vfmodule(self, template_file, service_instance_id, vnf_model, vfmodule_model, common_dict, name_suffix):
+ """
+ :param template_file:
+ :param service_instance_id:
+ :param vnf_model: parsing results from csar_parser
+ :param vfmodule_model: parsing results from csar_parser
+ :param common_dict:
+ :param name_suffix:
+ :return:
+ """
+
+ # examples:
+ # vfmodule_model['modelCustomizationName']: "Vspinfra111601..base_vcpe_infra..module-0",
+ # vnf_model['modelCustomizationName']: "vspinfra111601 0",
+
+ vfmodule_name = '_'.join([self.vcpecommon.instance_name_prefix['vfmodule'],
+ vfmodule_model['modelCustomizationName'].split('..')[0].lower(), name_suffix])
+
+ # vnf_type and generic_vnf_type are identical
+ replace_dict = {'${vnf_type}': vfmodule_model['modelCustomizationName'],
+ '${generic_vnf_type}': vfmodule_model['modelCustomizationName'],
+ '${service_type}': service_instance_id,
+ '${generic_vnf_name}': vnf_model['modelCustomizationName'],
+ '${vnf_name}': vfmodule_name,
+ '${suffix}': name_suffix}
+ replace_dict.update(common_dict)
+ self.logger.info('Preloading VF Module ' + vfmodule_name)
+ return self.preload(template_file, replace_dict, self.vcpecommon.sdnc_preload_vnf_url)
+
+ def preload_all_networks(self, template_file, name_suffix):
+ common_dict = {'${' + k + '}': v for k, v in self.vcpecommon.common_preload_config.items()}
+ for network, v in self.vcpecommon.preload_network_config.items():
+ subnet_start_ip, subnet_gateway_ip = v
+ if not self.preload_network(template_file, network, subnet_start_ip, subnet_gateway_ip,
+ common_dict, name_suffix):
+ return None
+ return common_dict
+
+ def test(self):
+ # this is for testing purpose
+ name_suffix = datetime.now().strftime('%Y%m%d%H%M')
+ vcpecommon = VcpeCommon()
+ preloader = Preload(vcpecommon)
+
+ network_dict = {'${' + k + '}': v for k, v in self.vcpecommon.common_preload_config.items()}
+ template_file = 'preload_templates/template.network.json'
+ for k, v in self.vcpecommon.preload_network_config.items():
+ if not preloader.preload_network(template_file, k, v[0], v[1], network_dict, name_suffix):
+ break
+
+ print('---------------------------------------------------------------')
+ print('Network related replacement dictionary:')
+ print(json.dumps(network_dict, indent=4, sort_keys=True))
+ print('---------------------------------------------------------------')
+
+ keys = ['infra', 'bng', 'gmux', 'brg']
+ for key in keys:
+ csar_file = self.vcpecommon.find_file(key, 'csar', 'csar')
+ template_file = self.vcpecommon.find_file(key, 'json', 'preload_templates')
+ if csar_file and template_file:
+ parser = csar_parser.CsarParser()
+ parser.parse_csar(csar_file)
+ service_instance_id = 'test112233'
+ preloader.preload_vfmodule(template_file, service_instance_id, parser.vnf_models[0],
+ parser.vfmodule_models[0], network_dict, name_suffix)
+
+ def test_sniro(self):
+ template_sniro_data = self.vcpecommon.find_file('sniro_data', 'json', 'preload_templates')
+ template_sniro_request = self.vcpecommon.find_file('sniro_request', 'json', 'preload_templates')
+
+ vcperescust_csar = self.vcpecommon.find_file('rescust', 'csar', 'csar')
+ parser = csar_parser.CsarParser()
+ parser.parse_csar(vcperescust_csar)
+ tunnelxconn_ar_name = None
+ brg_ar_name = None
+ vgw_name = None
+ for model in parser.vnf_models:
+ if 'tunnel' in model['modelCustomizationName']:
+ tunnelxconn_ar_name = model['modelCustomizationName']
+ elif 'brg' in model['modelCustomizationName']:
+ brg_ar_name = model['modelCustomizationName']
+ elif 'vgw' in model['modelCustomizationName']:
+ vgw_name = model['modelCustomizationName']
+
+ if not (tunnelxconn_ar_name and brg_ar_name and vgw_name):
+ self.logger.error('Cannot find all names from %s.', vcperescust_csar)
+ sys.exit()
+
+ vgmux_svc_instance_uuid = '88888888888888'
+ vbrg_svc_instance_uuid = '999999999999999'
+
+ self.preload_sniro(template_sniro_data, template_sniro_request, tunnelxconn_ar_name, vgw_name, brg_ar_name,
+ vgmux_svc_instance_uuid, vbrg_svc_instance_uuid)
diff --git a/test/vcpe/soutils.py b/test/vcpe/soutils.py
new file mode 100755
index 000000000..cc82068a6
--- /dev/null
+++ b/test/vcpe/soutils.py
@@ -0,0 +1,318 @@
+#! /usr/bin/python
+
+import sys
+import logging
+import requests
+import json
+from datetime import datetime
+import progressbar
+import time
+import csar_parser
+import preload
+from vcpecommon import *
+
+
+class SoUtils:
+ def __init__(self, vcpecommon, api_version):
+ """
+ :param vcpecommon:
+ :param api_version: must be 'v4' or 'v5'
+ """
+ self.logger = logging.getLogger(__name__)
+ self.vcpecommon = vcpecommon
+ if api_version not in self.vcpecommon.so_req_api_url:
+ self.logger.error('Incorrect SO API version: %s', api_version)
+ sys.exit()
+ self.service_req_api_url = self.vcpecommon.so_req_api_url[api_version]
+
+ def submit_create_req(self, req_json, req_type, service_instance_id=None, vnf_instance_id=None):
+ """
+ POST {serverRoot}/serviceInstances/v4
+ POST {serverRoot}/serviceInstances/v4/{serviceInstanceId}/vnfs
+ POST {serverRoot}/serviceInstances/v4/{serviceInstanceId}/networks
+ POST {serverRoot}/serviceInstances/v4/{serviceInstanceId}/vnfs/{vnfInstanceId}/vfModules
+ :param req_json:
+ :param service_instance_id: this is required only for networks, vnfs, and vf modules
+ :param req_type:
+ :param vnf_instance_id:
+ :return: req_id, instance_id
+ """
+ if req_type == 'service':
+ url = self.service_req_api_url
+ elif req_type == 'vnf':
+ url = '/'.join([self.service_req_api_url, service_instance_id, 'vnfs'])
+ elif req_type == 'network':
+ url = '/'.join([self.service_req_api_url, service_instance_id, 'networks'])
+ elif req_type == 'vfmodule':
+ url = '/'.join([self.service_req_api_url, service_instance_id, 'vnfs', vnf_instance_id, 'vfModules'])
+ else:
+ self.logger.error('Invalid request type: {0}. Can only be service/vnf/network/vfmodule'.format(req_type))
+ return None, None
+
+ r = requests.post(url, headers=self.vcpecommon.so_headers, auth=self.vcpecommon.so_userpass, json=req_json)
+ response = r.json()
+
+ self.logger.debug('---------------------------------------------------------------')
+ self.logger.debug('------- Creation request submitted to SO, got response --------')
+ self.logger.debug(json.dumps(response, indent=4, sort_keys=True))
+ self.logger.debug('---------------------------------------------------------------')
+ req_id = response.get('requestReferences', {}).get('requestId', '')
+ instance_id = response.get('requestReferences', {}).get('instanceId', '')
+ return req_id, instance_id
+
+ def check_progress(self, req_id, eta=0, interval=5):
+ if not req_id:
+ self.logger.error('Error when checking SO request progress, invalid request ID: ' + req_id)
+ return False
+ duration = 0.0
+ bar = progressbar.ProgressBar(redirect_stdout=True)
+ url = self.vcpecommon.so_check_progress_api_url + '/' + req_id
+
+ while True:
+ time.sleep(interval)
+ r = requests.get(url, headers=self.vcpecommon.so_headers, auth=self.vcpecommon.so_userpass)
+ response = r.json()
+
+ duration += interval
+ if eta > 0:
+ percentage = min(95, 100 * duration / eta)
+ else:
+ percentage = int(response['request']['requestStatus']['percentProgress'])
+
+ if response['request']['requestStatus']['requestState'] == 'IN_PROGRESS':
+ self.logger.debug('------------------Request Status-------------------------------')
+ self.logger.debug(json.dumps(response, indent=4, sort_keys=True))
+ bar.update(percentage)
+ else:
+ self.logger.debug('---------------------------------------------------------------')
+ self.logger.debug('----------------- Creation Request Results --------------------')
+ self.logger.debug(json.dumps(response, indent=4, sort_keys=True))
+ self.logger.debug('---------------------------------------------------------------')
+ flag = response['request']['requestStatus']['requestState'] == 'COMPLETE'
+ if not flag:
+ self.logger.error('Request failed.')
+ self.logger.error(json.dumps(response, indent=4, sort_keys=True))
+ bar.update(100)
+ bar.finish()
+ return flag
+
+ def add_req_info(self, req_details, instance_name, product_family_id=None):
+ req_details['requestInfo'] = {
+ 'instanceName': instance_name,
+ 'source': 'VID',
+ 'suppressRollback': 'true',
+ 'requestorId': 'vCPE-Robot'
+ }
+ if product_family_id:
+ req_details['requestInfo']['productFamilyId'] = product_family_id
+
+ def add_related_instance(self, req_details, instance_id, instance_model):
+ instance = {"instanceId": instance_id, "modelInfo": instance_model}
+ if 'relatedInstanceList' not in req_details:
+ req_details['relatedInstanceList'] = [{"relatedInstance": instance}]
+ else:
+ req_details['relatedInstanceList'].append({"relatedInstance": instance})
+
+ def generate_vnf_or_network_request(self, req_type, instance_name, vnf_or_network_model, service_instance_id,
+ service_model):
+ req_details = {
+ 'modelInfo': vnf_or_network_model,
+ 'cloudConfiguration': {"lcpCloudRegionId": self.vcpecommon.os_region_name,
+ "tenantId": self.vcpecommon.os_tenant_id},
+ 'requestParameters': {"userParams": []}
+ }
+ self.add_req_info(req_details, instance_name, self.vcpecommon.product_family_id)
+ self.add_related_instance(req_details, service_instance_id, service_model)
+ return {'requestDetails': req_details}
+
+ def generate_vfmodule_request(self, instance_name, vfmodule_model, service_instance_id,
+ service_model, vnf_instance_id, vnf_model):
+ req_details = {
+ 'modelInfo': vfmodule_model,
+ 'cloudConfiguration': {"lcpCloudRegionId": self.vcpecommon.os_region_name,
+ "tenantId": self.vcpecommon.os_tenant_id},
+ 'requestParameters': {"usePreload": 'true'}
+ }
+ self.add_req_info(req_details, instance_name, self.vcpecommon.product_family_id)
+ self.add_related_instance(req_details, service_instance_id, service_model)
+ self.add_related_instance(req_details, vnf_instance_id, vnf_model)
+ return {'requestDetails': req_details}
+
+ def generate_service_request(self, instance_name, model):
+ req_details = {
+ 'modelInfo': model,
+ 'subscriberInfo': {'globalSubscriberId': self.vcpecommon.global_subscriber_id},
+ 'requestParameters': {
+ "userParams": [],
+ "subscriptionServiceType": "vCPE",
+ "aLaCarte": 'true'
+ }
+ }
+ self.add_req_info(req_details, instance_name)
+ return {'requestDetails': req_details}
+
+ def generate_custom_service_request(self, instance_name, model, brg_mac):
+ req_details = {
+ 'modelInfo': model,
+ 'subscriberInfo': {'subscriberName': 'Kaneohe',
+ 'globalSubscriberId': self.vcpecommon.global_subscriber_id},
+ 'cloudConfiguration': {"lcpCloudRegionId": self.vcpecommon.os_region_name,
+ "tenantId": self.vcpecommon.os_tenant_id},
+ 'requestParameters': {
+ "userParams": [
+ {
+ 'name': 'BRG_WAN_MAC_Address',
+ 'value': brg_mac
+ }
+ ],
+ "subscriptionServiceType": "vCPE",
+ 'aLaCarte': 'false'
+ }
+ }
+ self.add_req_info(req_details, instance_name, self.vcpecommon.custom_product_family_id)
+ return {'requestDetails': req_details}
+
+ def create_custom_service(self, csar_file, brg_mac, name_suffix=None):
+ parser = csar_parser.CsarParser()
+ if not parser.parse_csar(csar_file):
+ return False
+
+ # yyyymmdd_hhmm
+ if not name_suffix:
+ name_suffix = '_' + datetime.now().strftime('%Y%m%d%H%M')
+
+ # create service
+ instance_name = '_'.join([self.vcpecommon.instance_name_prefix['service'],
+ parser.svc_model['modelName'], name_suffix])
+ instance_name = instance_name.lower()
+ req = self.generate_custom_service_request(instance_name, parser.svc_model, brg_mac)
+ self.logger.debug(json.dumps(req, indent=2, sort_keys=True))
+ self.logger.info('Creating custom service {0}.'.format(instance_name))
+ req_id, svc_instance_id = self.submit_create_req(req, 'service')
+ if not self.check_progress(req_id, 140):
+ return False
+ return True
+
+ def wait_for_aai(self, node_type, uuid):
+ self.logger.info('Waiting for AAI traversal to complete...')
+ bar = progressbar.ProgressBar()
+ for i in range(30):
+ time.sleep(1)
+ bar.update(i*100.0/30)
+ if self.vcpecommon.is_node_in_aai(node_type, uuid):
+ bar.update(100)
+ bar.finish()
+ return
+
+ self.logger.error("AAI traversal didn't finish in 30 seconds. Something is wrong. Type {0}, UUID {1}".format(
+ node_type, uuid))
+ sys.exit()
+
+ def create_entire_service(self, csar_file, vnf_template_file, preload_dict, name_suffix, heatbridge=False):
+ """
+ :param csar_file:
+ :param vnf_template_file:
+ :param preload_dict:
+ :param name_suffix:
+ :return: service instance UUID
+ """
+ self.logger.info('\n----------------------------------------------------------------------------------')
+ self.logger.info('Start to create entire service defined in csar: {0}'.format(csar_file))
+ parser = csar_parser.CsarParser()
+ self.logger.info('Parsing csar ...')
+ if not parser.parse_csar(csar_file):
+ self.logger.error('Cannot parse csar: {0}'.format(csar_file))
+ return None
+
+ # create service
+ instance_name = '_'.join([self.vcpecommon.instance_name_prefix['service'],
+ parser.svc_model['modelName'], name_suffix])
+ instance_name = instance_name.lower()
+ self.logger.info('Creating service instance: {0}.'.format(instance_name))
+ req = self.generate_service_request(instance_name, parser.svc_model)
+ self.logger.debug(json.dumps(req, indent=2, sort_keys=True))
+ req_id, svc_instance_id = self.submit_create_req(req, 'service')
+ if not self.check_progress(req_id, eta=2, interval=1):
+ return None
+
+ # wait for AAI to complete traversal
+ self.wait_for_aai('service', svc_instance_id)
+
+ # create networks
+ for model in parser.net_models:
+ base_name = model['modelCustomizationName'].lower().replace('mux_vg', 'mux_gw')
+ network_name = '_'.join([self.vcpecommon.instance_name_prefix['network'], base_name, name_suffix])
+ network_name = network_name.lower()
+ self.logger.info('Creating network: ' + network_name)
+ req = self.generate_vnf_or_network_request('network', network_name, model, svc_instance_id,
+ parser.svc_model)
+ self.logger.debug(json.dumps(req, indent=2, sort_keys=True))
+ req_id, net_instance_id = self.submit_create_req(req, 'network', svc_instance_id)
+ if not self.check_progress(req_id, eta=20):
+ return None
+
+ self.logger.info('Changing subnet name to ' + self.vcpecommon.network_name_to_subnet_name(network_name))
+ self.vcpecommon.set_network_name(network_name)
+ subnet_name_changed = False
+ for i in range(20):
+ time.sleep(3)
+ if self.vcpecommon.set_subnet_name(network_name):
+ subnet_name_changed = True
+ break
+
+ if not subnet_name_changed:
+ self.logger.error('Failed to change subnet name for ' + network_name)
+ return None
+
+
+ vnf_model = None
+ vnf_instance_id = None
+ # create VNF
+ if len(parser.vnf_models) == 1:
+ vnf_model = parser.vnf_models[0]
+ vnf_instance_name = '_'.join([self.vcpecommon.instance_name_prefix['vnf'],
+ vnf_model['modelCustomizationName'].split(' ')[0], name_suffix])
+ vnf_instance_name = vnf_instance_name.lower()
+ self.logger.info('Creating VNF: ' + vnf_instance_name)
+ req = self.generate_vnf_or_network_request('vnf', vnf_instance_name, vnf_model, svc_instance_id,
+ parser.svc_model)
+ self.logger.debug(json.dumps(req, indent=2, sort_keys=True))
+ req_id, vnf_instance_id = self.submit_create_req(req, 'vnf', svc_instance_id)
+ if not self.check_progress(req_id, eta=2, interval=1):
+ self.logger.error('Failed to create VNF {0}.'.format(vnf_instance_name))
+ return False
+
+ # wait for AAI to complete traversal
+ if not vnf_instance_id:
+ self.logger.error('No VNF instance ID returned!')
+ sys.exit()
+ self.wait_for_aai('vnf', vnf_instance_id)
+
+ preloader = preload.Preload(self.vcpecommon)
+ preloader.preload_vfmodule(vnf_template_file, svc_instance_id, parser.vnf_models[0], parser.vfmodule_models[0],
+ preload_dict, name_suffix)
+ # create VF Module
+ if len(parser.vfmodule_models) == 1:
+ if not vnf_instance_id or not vnf_model:
+ self.logger.error('Invalid VNF instance ID or VNF model!')
+ sys.exit()
+
+ model = parser.vfmodule_models[0]
+ vfmodule_instance_name = '_'.join([self.vcpecommon.instance_name_prefix['vfmodule'],
+ model['modelCustomizationName'].split('..')[0], name_suffix])
+ vfmodule_instance_name = vfmodule_instance_name.lower()
+ self.logger.info('Creating VF Module: ' + vfmodule_instance_name)
+ req = self.generate_vfmodule_request(vfmodule_instance_name, model, svc_instance_id, parser.svc_model,
+ vnf_instance_id, vnf_model)
+ self.logger.debug(json.dumps(req, indent=2, sort_keys=True))
+ req_id, vfmodule_instance_id = self.submit_create_req(req, 'vfmodule', svc_instance_id, vnf_instance_id)
+ if not self.check_progress(req_id, eta=70, interval=5):
+ self.logger.error('Failed to create VF Module {0}.'.format(vfmodule_instance_name))
+ return None
+
+ # run heatbridge
+ if heatbridge:
+ self.vcpecommon.headbridge(vfmodule_instance_name, svc_instance_id)
+ self.vcpecommon.save_vgmux_vnf_name(vnf_instance_name)
+
+ return svc_instance_id
diff --git a/test/vcpe/vcpe.py b/test/vcpe/vcpe.py
new file mode 100755
index 000000000..7de86ae8d
--- /dev/null
+++ b/test/vcpe/vcpe.py
@@ -0,0 +1,207 @@
+#! /usr/bin/python
+import sys
+import logging
+from vcpecommon import *
+import soutils
+from datetime import datetime
+import preload
+import vcpe_custom_service
+import csar_parser
+import config_sdnc_so
+
+
+def config_sniro(vcpecommon, vgmux_svc_instance_uuid, vbrg_svc_instance_uuid):
+ logger = logging.getLogger(__name__)
+
+ logger.info('\n----------------------------------------------------------------------------------')
+ logger.info('Start to config SNIRO homing emulator')
+
+ preloader = preload.Preload(vcpecommon)
+ template_sniro_data = vcpecommon.find_file('sniro_data', 'json', 'preload_templates')
+ template_sniro_request = vcpecommon.find_file('sniro_request', 'json', 'preload_templates')
+
+ vcperescust_csar = vcpecommon.find_file('rescust', 'csar', 'csar')
+ parser = csar_parser.CsarParser()
+ parser.parse_csar(vcperescust_csar)
+ tunnelxconn_ar_name = None
+ brg_ar_name = None
+ vgw_name = None
+ for model in parser.vnf_models:
+ if 'tunnel' in model['modelCustomizationName']:
+ tunnelxconn_ar_name = model['modelCustomizationName']
+ elif 'brg' in model['modelCustomizationName']:
+ brg_ar_name = model['modelCustomizationName']
+ elif 'vgw' in model['modelCustomizationName']:
+ vgw_name = model['modelCustomizationName']
+
+ if not (tunnelxconn_ar_name and brg_ar_name and vgw_name):
+ logger.error('Cannot find all names from %s.', vcperescust_csar)
+ sys.exit()
+
+ preloader.preload_sniro(template_sniro_data, template_sniro_request, tunnelxconn_ar_name, vgw_name, brg_ar_name,
+ vgmux_svc_instance_uuid, vbrg_svc_instance_uuid)
+
+
+def create_one_service(vcpecommon, csar_file, vnf_template_file, preload_dict, suffix, heatbridge=False):
+ """
+ :return: service instance UUID
+ """
+ so = soutils.SoUtils(vcpecommon, 'v4')
+ return so.create_entire_service(csar_file, vnf_template_file, preload_dict, suffix, heatbridge)
+
+def deploy_brg_only():
+ logging.basicConfig(level=logging.INFO, format='%(message)s')
+ logger = logging.getLogger(__name__)
+
+ vcpecommon = VcpeCommon()
+ preload_dict = vcpecommon.load_preload_data()
+ name_suffix = preload_dict['${brg_bng_net}'].split('_')[-1]
+
+ # create multiple services based on the pre-determined order
+ svc_instance_uuid = vcpecommon.load_object(vcpecommon.svc_instance_uuid_file)
+ for keyword in ['brg']:
+ heatbridge = 'gmux' == keyword
+ csar_file = vcpecommon.find_file(keyword, 'csar', 'csar')
+ vnf_template_file = vcpecommon.find_file(keyword, 'json', 'preload_templates')
+ svc_instance_uuid[keyword] = create_one_service(vcpecommon, csar_file, vnf_template_file, preload_dict,
+ name_suffix, heatbridge)
+ if not svc_instance_uuid[keyword]:
+ sys.exit()
+
+ # Setting up SNIRO
+ config_sniro(vcpecommon, svc_instance_uuid['gmux'], svc_instance_uuid['brg'])
+
+def deploy_infra():
+ logging.basicConfig(level=logging.INFO, format='%(message)s')
+ logger = logging.getLogger(__name__)
+
+ vcpecommon = VcpeCommon()
+
+ # preload all networks
+ network_template = vcpecommon.find_file('network', 'json', 'preload_templates')
+ name_suffix = datetime.now().strftime('%Y%m%d%H%M')
+ preloader = preload.Preload(vcpecommon)
+ preload_dict = preloader.preload_all_networks(network_template, name_suffix)
+ logger.debug('Initial preload dictionary:')
+ logger.debug(json.dumps(preload_dict, indent=4, sort_keys=True))
+ if not preload_dict:
+ logger.error("Failed to preload networks.")
+ sys.exit()
+ vcpecommon.save_preload_data(preload_dict)
+
+ # create multiple services based on the pre-determined order
+ svc_instance_uuid = {}
+ for keyword in ['infra', 'bng', 'gmux', 'brg']:
+ heatbridge = 'gmux' == keyword
+ csar_file = vcpecommon.find_file(keyword, 'csar', 'csar')
+ vnf_template_file = vcpecommon.find_file(keyword, 'json', 'preload_templates')
+ svc_instance_uuid[keyword] = create_one_service(vcpecommon, csar_file, vnf_template_file, preload_dict,
+ name_suffix, heatbridge)
+ if not svc_instance_uuid[keyword]:
+ sys.exit()
+
+ vcpecommon.save_object(svc_instance_uuid, vcpecommon.svc_instance_uuid_file)
+ # Setting up SNIRO
+ config_sniro(vcpecommon, svc_instance_uuid['gmux'], svc_instance_uuid['brg'])
+
+ print('----------------------------------------------------------------------------------------------------')
+ print('Congratulations! The following have been completed correctly:')
+ print(' - Infrastructure Service Instantiation: ')
+ print(' * 4 VMs: DHCP, AAA, DNS, Web Server')
+ print(' * 2 Networks: CPE_PUBLIC, CPE_SIGNAL')
+ print(' - vBNG Service Instantiation: ')
+ print(' * 1 VM: vBNG')
+ print(' * 2 Networks: BRG_BNG, BNG_MUX')
+ print(' - vGMUX Service Instantiation: ')
+ print(' * 1 VM: vGMUX')
+ print(' * 1 Network: MUX_GW')
+ print(' - vBRG Service Instantiation: ')
+ print(' * 1 VM: vBRG')
+ print(' - Adding vGMUX vServer information to AAI.')
+ print(' - SNIRO Homing Emulator configuration.')
+
+
+def deploy_custom_service():
+ nodes = ['brg', 'mux']
+ vcpecommon = VcpeCommon(nodes)
+ custom_service = vcpe_custom_service.CustomService(vcpecommon)
+
+ # clean up
+ host_dic = {k: vcpecommon.hosts[k] for k in nodes}
+ if not vcpecommon.delete_vxlan_interfaces(host_dic):
+ sys.exit()
+
+ custom_service.clean_up_sdnc()
+ custom_service.del_all_vgw_stacks(vcpecommon.vgw_name_keyword)
+
+ # create new service
+ csar_file = vcpecommon.find_file('rescust', 'csar', 'csar')
+ vgw_template_file = vcpecommon.find_file('vgw', 'json', 'preload_templates')
+ preload_dict = vcpecommon.load_preload_data()
+ custom_service.create_custom_service(csar_file, vgw_template_file, preload_dict)
+
+
+def closed_loop(lossrate=0):
+ if lossrate > 0:
+ while 'y' != raw_input('Please enter docker container "drools" in Policy VM and type "policy stop". Then enter y here: ').lower():
+ continue
+ nodes = ['brg', 'mux']
+ logger = logging.getLogger('__name__')
+ vcpecommon = VcpeCommon(nodes)
+ logger.info('Cleaning up vGMUX data reporting settings')
+ vcpecommon.del_vgmux_ves_mode()
+ time.sleep(2)
+ vcpecommon.del_vgmux_ves_collector()
+
+ logger.info('Staring vGMUX data reporting to DCAE')
+ time.sleep(2)
+ vcpecommon.set_vgmux_ves_collector()
+
+ logger.info('Setting vGMUX to report packet loss rate: %s', lossrate)
+ time.sleep(2)
+ vcpecommon.set_vgmux_packet_loss_rate(lossrate, vcpecommon.load_vgmux_vnf_name())
+ if lossrate > 0:
+ print('Please enter docker container "drools" in Policy VM and type "policy start". Then observe vGMUX being restarted.')
+
+
+def init_so_sdnc():
+ logger = logging.getLogger('__name__')
+ vcpecommon = VcpeCommon()
+ config_sdnc_so.insert_customer_service_to_so(vcpecommon)
+ config_sdnc_so.insert_customer_service_to_sdnc(vcpecommon)
+
+
+if __name__ == '__main__':
+ logging.basicConfig(level=logging.INFO, format='%(message)s')
+
+ print('----------------------------------------------------------------------------------------------------')
+ print(' vcpe.py: Brief info about this program')
+# print(' vcpe.py sdc: Onboard VNFs, design and distribute vCPE services (under development)')
+ print(' vcpe.py init: Add customer service data to SDNC and SO DBs.')
+ print(' vcpe.py infra: Deploy infrastructure, including DHCP, AAA, DNS, Web Server, vBNG, vGMUX, vBRG.')
+ print(' vcpe.py customer: Deploy customer service, including vGW and VxLANs')
+ print(' vcpe.py loop: Test closed loop control')
+ print('----------------------------------------------------------------------------------------------------')
+
+ if len(sys.argv) != 2:
+ sys.exit()
+
+ if sys.argv[1] == 'sdc':
+ print('Under development')
+ elif sys.argv[1] == 'init':
+ if 'y' == raw_input('Ready to add customer service data to SDNC and SO DBs? This is needed only once.'
+ 'y/n: ').lower():
+ init_so_sdnc()
+ elif sys.argv[1] == 'infra':
+ if 'y' == raw_input('Ready to deploy infrastructure? y/n: ').lower():
+ deploy_infra()
+ elif sys.argv[1] == 'customer':
+ if 'y' == raw_input('Ready to deploy customer service? y/n: ').lower():
+ deploy_custom_service()
+ elif sys.argv[1] == 'loop':
+ closed_loop(22)
+ elif sys.argv[1] == 'noloss':
+ closed_loop(0)
+ elif sys.argv[1] == 'brg':
+ deploy_brg_only()
+
diff --git a/test/vcpe/vcpe_custom_service.py b/test/vcpe/vcpe_custom_service.py
new file mode 100755
index 000000000..d89129eef
--- /dev/null
+++ b/test/vcpe/vcpe_custom_service.py
@@ -0,0 +1,80 @@
+#! /usr/bin/python
+
+import os
+import requests
+import time
+from vcpecommon import *
+from datetime import datetime
+import soutils
+import logging
+import preload
+import json
+
+
+class CustomService:
+ def __init__(self, vcpecommon):
+ self.logger = logging.getLogger(__name__)
+ self.vcpecommon = vcpecommon
+
+ # delete all vgw stacks
+ def del_all_vgw_stacks(self, keyword):
+ param = ' '.join([k + ' ' + v for k, v in self.vcpecommon.cloud.items()])
+ openstackcmd = 'openstack ' + param + ' '
+
+ stacks = os.popen(openstackcmd + 'stack list').read()
+ found = False
+ for stack_description in stacks.split('\n'):
+ if keyword in stack_description:
+ found = True
+ stack_name = stack_description.split('|')[2].strip()
+ cmd = openstackcmd + 'stack delete -y ' + stack_name
+ self.logger.info('Deleting ' + stack_name)
+ os.popen(cmd)
+
+ if not found:
+ self.logger.info('No vGW stack to delete')
+
+ # clean up SDNC
+ def clean_up_sdnc(self):
+ items = ['tunnelxconn-allotted-resources', 'brg-allotted-resources']
+ for res in items:
+ self.logger.info('Cleaning up ' + res + ' from SDNC')
+ requests.delete(self.vcpecommon.sdnc_ar_cleanup_url + res, auth=self.vcpecommon.sdnc_userpass)
+
+ def print_success_info(self, print_instructions=True, nodes=None):
+ if not nodes:
+ nodes = ['brg', 'mux', 'gw', 'web']
+ ip_dict = self.vcpecommon.get_vm_ip(nodes, self.vcpecommon.external_net_addr,
+ self.vcpecommon.external_net_prefix_len)
+
+ print(json.dumps(ip_dict, indent=4, sort_keys=True))
+ for node in ['brg', 'mux']:
+ print('VxLAN config in {0}:'.format(node))
+ self.vcpecommon.get_vxlan_interfaces(ip_dict[node], print_info=True)
+
+ print(json.dumps(ip_dict, indent=4, sort_keys=True))
+
+ if print_instructions:
+ print('----------------------------------------------------------------------------')
+ print('Custom service created successfully. See above for VxLAN configuration info.')
+ print('To test data plane connectivity, following the steps below.')
+ print(' 1. ssh to vGW at {0}'.format(ip_dict['gw']))
+ print(' 2. Restart DHCP: systemctl restart isc-dhcp-server')
+ print(' 3. ssh to vBRG at {0}'.format(ip_dict['brg']))
+ print(' 4. Get IP from vGW: dhclient lstack')
+ print(' 5. Add route to Internet: ip route add 10.2.0.0/24 via 192.168.1.254 dev lstack')
+ print(' 6. ping the web server: ping {0}'.format('10.2.0.10'))
+ print(' 7. wget http://{0}'.format('10.2.0.10'))
+
+ def create_custom_service(self, csar_file, vgw_template_file, preload_dict=None):
+ name_suffix = datetime.now().strftime('%Y%m%d%H%M')
+ brg_mac = self.vcpecommon.get_brg_mac_from_sdnc()
+ # preload vGW
+ if preload_dict:
+ preloader = preload.Preload(self.vcpecommon)
+ preloader.preload_vgw(vgw_template_file, brg_mac, preload_dict, name_suffix)
+
+ # create service
+ so = soutils.SoUtils(self.vcpecommon, 'v5')
+ if so.create_custom_service(csar_file, brg_mac, name_suffix):
+ self.print_success_info()
diff --git a/test/vcpe/vcpecommon.py b/test/vcpe/vcpecommon.py
new file mode 100755
index 000000000..5b3e009a3
--- /dev/null
+++ b/test/vcpe/vcpecommon.py
@@ -0,0 +1,414 @@
+import json
+import logging
+import os
+import pickle
+import re
+import sys
+
+import ipaddress
+import mysql.connector
+import requests
+import commands
+import time
+
+
+class VcpeCommon:
+ #############################################################################################
+ # Start: configurations that you must change for a new ONAP installation
+ external_net_addr = '10.12.0.0'
+ external_net_prefix_len = 16
+ #############################################################################################
+ # set the openstack cloud access credentials here
+ cloud = {
+ '--os-auth-url': 'http://10.12.25.2:5000',
+ '--os-username': 'YOUR ID',
+ '--os-user-domain-id': 'default',
+ '--os-project-domain-id': 'default',
+ '--os-tenant-id': '087050388b204c73a3e418dd2c1fe30b',
+ '--os-region-name': 'RegionOne',
+ '--os-password': 'YOUR PASSWD',
+ '--os-project-domain-name': 'Integration-SB-01',
+ '--os-identity-api-version': '3'
+ }
+
+ common_preload_config = {
+ 'oam_onap_net': 'oam_onap_c4Uw',
+ 'oam_onap_subnet': 'oam_onap_c4Uw',
+ 'public_net': 'external',
+ 'public_net_id': '971040b2-7059-49dc-b220-4fab50cb2ad4'
+ }
+ # End: configurations that you must change for a new ONAP installation
+ #############################################################################################
+
+ template_variable_symbol = '${'
+ #############################################################################################
+ # preloading network config
+ # key=network role
+ # value = [subnet_start_ip, subnet_gateway_ip]
+ preload_network_config = {
+ 'cpe_public': ['10.2.0.2', '10.2.0.1'],
+ 'cpe_signal': ['10.4.0.2', '10.4.0.1'],
+ 'brg_bng': ['10.3.0.2', '10.3.0.1'],
+ 'bng_mux': ['10.1.0.10', '10.1.0.1'],
+ 'mux_gw': ['10.5.0.10', '10.5.0.1']
+ }
+
+ global_subscriber_id = 'SDN-ETHERNET-INTERNET'
+
+ def __init__(self, extra_host_names=None):
+ self.logger = logging.getLogger(__name__)
+ self.logger.info('Initializing configuration')
+
+ self.host_names = ['so', 'sdnc', 'robot', 'aai-inst1', 'dcaedoks00']
+ if extra_host_names:
+ self.host_names.extend(extra_host_names)
+ # get IP addresses
+ self.hosts = self.get_vm_ip(self.host_names, self.external_net_addr, self.external_net_prefix_len)
+ # this is the keyword used to name vgw stack, must not be used in other stacks
+ self.vgw_name_keyword = 'base_vcpe_vgw'
+ self.svc_instance_uuid_file = '__var/svc_instance_uuid'
+ self.preload_dict_file = '__var/preload_dict'
+ self.vgmux_vnf_name_file = '__var/vgmux_vnf_name'
+ self.product_family_id = 'f9457e8c-4afd-45da-9389-46acd9bf5116'
+ self.custom_product_family_id = 'a9a77d5a-123e-4ca2-9eb9-0b015d2ee0fb'
+ self.instance_name_prefix = {
+ 'service': 'vcpe_svc',
+ 'network': 'vcpe_net',
+ 'vnf': 'vcpe_vnf',
+ 'vfmodule': 'vcpe_vfmodule'
+ }
+ self.aai_userpass = 'AAI', 'AAI'
+ self.pub_key = 'ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDKXDgoo3+WOqcUG8/5uUbk81+yczgwC4Y8ywTmuQqbNxlY1oQ0YxdMUqUnhitSXs5S/yRuAVOYHwGg2mCs20oAINrP+mxBI544AMIb9itPjCtgqtE2EWo6MmnFGbHB4Sx3XioE7F4VPsh7japsIwzOjbrQe+Mua1TGQ5d4nfEOQaaglXLLPFfuc7WbhbJbK6Q7rHqZfRcOwAMXgDoBqlyqKeiKwnumddo2RyNT8ljYmvB6buz7KnMinzo7qB0uktVT05FH9Rg0CTWH5norlG5qXgP2aukL0gk1ph8iAt7uYLf1ktp+LJI2gaF6L0/qli9EmVCSLr1uJ38Q8CBflhkh'
+ self.os_tenant_id = self.cloud['--os-tenant-id']
+ self.os_region_name = self.cloud['--os-region-name']
+ self.common_preload_config['pub_key'] = self.pub_key
+ self.sniro_url = 'http://' + self.hosts['robot'] + ':8080/__admin/mappings'
+ self.sniro_headers = {'Content-Type': 'application/json', 'Accept': 'application/json'}
+
+ #############################################################################################
+ # SDNC urls
+ self.sdnc_userpass = 'admin', 'Kp8bJ4SXszM0WXlhak3eHlcse2gAw84vaoGGmJvUy2U'
+ self.sdnc_db_name = 'sdnctl'
+ self.sdnc_db_user = 'sdnctl'
+ self.sdnc_db_pass = 'gamma'
+ self.sdnc_db_port = '32768'
+ self.sdnc_headers = {'Content-Type': 'application/json', 'Accept': 'application/json'}
+ self.sdnc_preload_network_url = 'http://' + self.hosts['sdnc'] + \
+ ':8282/restconf/operations/VNF-API:preload-network-topology-operation'
+ self.sdnc_preload_vnf_url = 'http://' + self.hosts['sdnc'] + \
+ ':8282/restconf/operations/VNF-API:preload-vnf-topology-operation'
+ self.sdnc_ar_cleanup_url = 'http://' + self.hosts['sdnc'] + ':8282/restconf/config/GENERIC-RESOURCE-API:'
+
+ #############################################################################################
+ # SO urls, note: do NOT add a '/' at the end of the url
+ self.so_req_api_url = {'v4': 'http://' + self.hosts['so'] + ':8080/ecomp/mso/infra/serviceInstances/v4',
+ 'v5': 'http://' + self.hosts['so'] + ':8080/ecomp/mso/infra/serviceInstances/v5'}
+ self.so_check_progress_api_url = 'http://' + self.hosts['so'] + ':8080/ecomp/mso/infra/orchestrationRequests/v2'
+ self.so_userpass = 'InfraPortalClient', 'password1$'
+ self.so_headers = {'Content-Type': 'application/json', 'Accept': 'application/json'}
+ self.so_db_name = 'mso_catalog'
+ self.so_db_user = 'root'
+ self.so_db_pass = 'password'
+ self.so_db_port = '32768'
+
+ self.vpp_inf_url = 'http://{0}:8183/restconf/config/ietf-interfaces:interfaces'
+ self.vpp_api_headers = {'Content-Type': 'application/json', 'Accept': 'application/json'}
+ self.vpp_api_userpass = ('admin', 'admin')
+ self.vpp_ves_url= 'http://{0}:8183/restconf/config/vesagent:vesagent'
+
+ def headbridge(self, openstack_stack_name, svc_instance_uuid):
+ """
+ Add vserver information to AAI
+ """
+ self.logger.info('Adding vServer information to AAI for {0}'.format(openstack_stack_name))
+ cmd = '/opt/demo.sh heatbridge {0} {1} vCPE'.format(openstack_stack_name, svc_instance_uuid)
+ ret = commands.getstatusoutput("ssh -i onap_dev root@{0} '{1}'".format(self.hosts['robot'], cmd))
+ self.logger.debug('%s', ret)
+
+ def get_brg_mac_from_sdnc(self):
+ """
+ :return: BRG MAC address. Currently we only support one BRG instance.
+ """
+ cnx = mysql.connector.connect(user=self.sdnc_db_user, password=self.sdnc_db_pass, database=self.sdnc_db_name,
+ host=self.hosts['sdnc'], port=self.sdnc_db_port)
+ cursor = cnx.cursor()
+ query = "SELECT * from DHCP_MAP"
+ cursor.execute(query)
+
+ self.logger.debug('DHCP_MAP table in SDNC')
+ counter = 0
+ mac = None
+ for mac, ip in cursor:
+ counter += 1
+ self.logger.debug(mac + ':' + ip)
+
+ cnx.close()
+
+ if counter != 1:
+ self.logger.error('Found %s MAC addresses in DHCP_MAP', counter)
+ sys.exit()
+ else:
+ self.logger.debug('Found MAC addresses in DHCP_MAP: %s', mac)
+ return mac
+
+ def insert_into_sdnc_db(self, cmds):
+ cnx = mysql.connector.connect(user=self.sdnc_db_user, password=self.sdnc_db_pass, database=self.sdnc_db_name,
+ host=self.hosts['sdnc'], port=self.sdnc_db_port)
+ cursor = cnx.cursor()
+ for cmd in cmds:
+ self.logger.debug(cmd)
+ cursor.execute(cmd)
+ self.logger.debug('%s', cursor)
+ cnx.commit()
+ cursor.close()
+ cnx.close()
+
+ def insert_into_so_db(self, cmds):
+ cnx = mysql.connector.connect(user=self.so_db_user, password=self.so_db_pass, database=self.so_db_name,
+ host=self.hosts['so'], port=self.so_db_port)
+ cursor = cnx.cursor()
+ for cmd in cmds:
+ self.logger.debug(cmd)
+ cursor.execute(cmd)
+ self.logger.debug('%s', cursor)
+ cnx.commit()
+ cursor.close()
+ cnx.close()
+
+ def find_file(self, file_name_keyword, file_ext, search_dir):
+ """
+ :param file_name_keyword: keyword used to look for the csar file, case insensitive matching, e.g, infra
+ :param file_ext: e.g., csar, json
+ :param search_dir path to search
+ :return: path name of the file
+ """
+ file_name_keyword = file_name_keyword.lower()
+ file_ext = file_ext.lower()
+ if not file_ext.startswith('.'):
+ file_ext = '.' + file_ext
+
+ filenamepath = None
+ for file_name in os.listdir(search_dir):
+ file_name_lower = file_name.lower()
+ if file_name_keyword in file_name_lower and file_name_lower.endswith(file_ext):
+ if filenamepath:
+ self.logger.error('Multiple files found for *{0}*.{1} in '
+ 'directory {2}'.format(file_name_keyword, file_ext, search_dir))
+ sys.exit()
+ filenamepath = os.path.abspath(os.path.join(search_dir, file_name))
+
+ if filenamepath:
+ return filenamepath
+ else:
+ self.logger.error("Cannot find *{0}*{1} in directory {2}".format(file_name_keyword, file_ext, search_dir))
+ sys.exit()
+
+ @staticmethod
+ def network_name_to_subnet_name(network_name):
+ """
+ :param network_name: example: vcpe_net_cpe_signal_201711281221
+ :return: vcpe_net_cpe_signal_subnet_201711281221
+ """
+ fields = network_name.split('_')
+ fields.insert(-1, 'subnet')
+ return '_'.join(fields)
+
+ def set_network_name(self, network_name):
+ param = ' '.join([k + ' ' + v for k, v in self.cloud.items()])
+ openstackcmd = 'openstack ' + param
+ cmd = ' '.join([openstackcmd, 'network set --name', network_name, 'ONAP-NW1'])
+ os.popen(cmd)
+
+ def set_subnet_name(self, network_name):
+ """
+ Example: network_name = vcpe_net_cpe_signal_201711281221
+ set subnet name to vcpe_net_cpe_signal_subnet_201711281221
+ :return:
+ """
+ param = ' '.join([k + ' ' + v for k, v in self.cloud.items()])
+ openstackcmd = 'openstack ' + param
+
+ # expected results: | subnets | subnet_id |
+ subnet_info = os.popen(openstackcmd + ' network show ' + network_name + ' |grep subnets').read().split('|')
+ if len(subnet_info) > 2 and subnet_info[1].strip() == 'subnets':
+ subnet_id = subnet_info[2].strip()
+ subnet_name = self.network_name_to_subnet_name(network_name)
+ cmd = ' '.join([openstackcmd, 'subnet set --name', subnet_name, subnet_id])
+ os.popen(cmd)
+ self.logger.info("Subnet name set to: " + subnet_name)
+ return True
+ else:
+ self.logger.error("Can't get subnet info from network name: " + network_name)
+ return False
+
+ def is_node_in_aai(self, node_type, node_uuid):
+ key = None
+ search_node_type = None
+ if node_type == 'service':
+ search_node_type = 'service-instance'
+ key = 'service-instance-id'
+ elif node_type == 'vnf':
+ search_node_type = 'generic-vnf'
+ key = 'vnf-id'
+ else:
+ logging.error('Invalid node_type: ' + node_type)
+ sys.exit()
+
+ url = 'https://{0}:8443/aai/v11/search/nodes-query?search-node-type={1}&filter={2}:EQUALS:{3}'.format(
+ self.hosts['aai-inst1'], search_node_type, key, node_uuid)
+
+ headers = {'Content-Type': 'application/json', 'Accept': 'application/json', 'X-FromAppID': 'vCPE-Robot'}
+ requests.packages.urllib3.disable_warnings()
+ r = requests.get(url, headers=headers, auth=self.aai_userpass, verify=False)
+ response = r.json()
+ self.logger.debug('aai query: ' + url)
+ self.logger.debug('aai response:\n' + json.dumps(response, indent=4, sort_keys=True))
+ return 'result-data' in response
+
+ @staticmethod
+ def extract_ip_from_str(net_addr, net_addr_len, sz):
+ """
+ :param net_addr: e.g. 10.5.12.0
+ :param net_addr_len: e.g. 24
+ :param sz: a string
+ :return: the first IP address matching the network, e.g. 10.5.12.3
+ """
+ network = ipaddress.ip_network(unicode('{0}/{1}'.format(net_addr, net_addr_len)), strict=False)
+ ip_list = re.findall(r'[0-9]+(?:\.[0-9]+){3}', sz)
+ for ip in ip_list:
+ this_net = ipaddress.ip_network(unicode('{0}/{1}'.format(ip, net_addr_len)), strict=False)
+ if this_net == network:
+ return str(ip)
+ return None
+
+ def get_vm_ip(self, keywords, net_addr=None, net_addr_len=None):
+ """
+ :param keywords: list of keywords to search for vm, e.g. ['bng', 'gmux', 'brg']
+ :param net_addr: e.g. 10.12.5.0
+ :param net_addr_len: e.g. 24
+ :return: dictionary {keyword: ip}
+ """
+ if not net_addr:
+ net_addr = self.external_net_addr
+
+ if not net_addr_len:
+ net_addr_len = self.external_net_prefix_len
+
+ param = ' '.join([k + ' ' + v for k, v in self.cloud.items() if 'identity' not in k])
+ openstackcmd = 'nova ' + param + ' list'
+ self.logger.debug(openstackcmd)
+
+ ip_dict = {}
+ results = os.popen(openstackcmd).read()
+ for line in results.split('\n'):
+ fields = line.split('|')
+ if len(fields) == 8:
+ vm_name = fields[2]
+ ip_info = fields[-2]
+ for keyword in keywords:
+ if keyword in vm_name:
+ ip = self.extract_ip_from_str(net_addr, net_addr_len, ip_info)
+ if ip:
+ ip_dict[keyword] = ip
+ if len(ip_dict) != len(keywords):
+ self.logger.error('Cannot find all desired IP addresses for %s.', keywords)
+ self.logger.error(json.dumps(ip_dict, indent=4, sort_keys=True))
+ sys.exit()
+ return ip_dict
+
+ def del_vgmux_ves_mode(self):
+ url = self.vpp_ves_url.format(self.hosts['mux']) + '/mode'
+ r = requests.delete(url, headers=self.vpp_api_headers, auth=self.vpp_api_userpass)
+ self.logger.debug('%s', r)
+
+ def del_vgmux_ves_collector(self):
+ url = self.vpp_ves_url.format(self.hosts['mux']) + '/config'
+ r = requests.delete(url, headers=self.vpp_api_headers, auth=self.vpp_api_userpass)
+ self.logger.debug('%s', r)
+
+ def set_vgmux_ves_collector(self ):
+ url = self.vpp_ves_url.format(self.hosts['mux'])
+ data = {'config':
+ {'server-addr': self.hosts['dcaedoks00'],
+ 'server-port': '8080',
+ 'read-interval': '10',
+ 'is-add':'1'
+ }
+ }
+ r = requests.post(url, headers=self.vpp_api_headers, auth=self.vpp_api_userpass, json=data)
+ self.logger.debug('%s', r)
+
+ def set_vgmux_packet_loss_rate(self, lossrate, vg_vnf_instance_name):
+ url = self.vpp_ves_url.format(self.hosts['mux'])
+ data = {"mode":
+ {"working-mode": "demo",
+ "base-packet-loss": str(lossrate),
+ "source-name": vg_vnf_instance_name
+ }
+ }
+ r = requests.post(url, headers=self.vpp_api_headers, auth=self.vpp_api_userpass, json=data)
+ self.logger.debug('%s', r)
+
+ # return all the VxLAN interface names of BRG or vGMUX based on the IP address
+ def get_vxlan_interfaces(self, ip, print_info=False):
+ url = self.vpp_inf_url.format(ip)
+ self.logger.debug('url is this: %s', url)
+ r = requests.get(url, headers=self.vpp_api_headers, auth=self.vpp_api_userpass)
+ data = r.json()['interfaces']['interface']
+ if print_info:
+ for inf in data:
+ if 'name' in inf and 'type' in inf and inf['type'] == 'v3po:vxlan-tunnel':
+ print(json.dumps(inf, indent=4, sort_keys=True))
+
+ return [inf['name'] for inf in data if 'name' in inf and 'type' in inf and inf['type'] == 'v3po:vxlan-tunnel']
+
+ # delete all VxLAN interfaces of each hosts
+ def delete_vxlan_interfaces(self, host_dic):
+ for host, ip in host_dic.items():
+ deleted = False
+ self.logger.info('{0}: Getting VxLAN interfaces'.format(host))
+ inf_list = self.get_vxlan_interfaces(ip)
+ for inf in inf_list:
+ deleted = True
+ time.sleep(2)
+ self.logger.info("{0}: Deleting VxLAN crossconnect {1}".format(host, inf))
+ url = self.vpp_inf_url.format(ip) + '/interface/' + inf + '/v3po:l2'
+ requests.delete(url, headers=self.vpp_api_headers, auth=self.vpp_api_userpass)
+
+ for inf in inf_list:
+ deleted = True
+ time.sleep(2)
+ self.logger.info("{0}: Deleting VxLAN interface {1}".format(host, inf))
+ url = self.vpp_inf_url.format(ip) + '/interface/' + inf
+ requests.delete(url, headers=self.vpp_api_headers, auth=self.vpp_api_userpass)
+
+ if len(self.get_vxlan_interfaces(ip)) > 0:
+ self.logger.error("Error deleting VxLAN from {0}, try to restart the VM, IP is {1}.".format(host, ip))
+ return False
+
+ if not deleted:
+ self.logger.info("{0}: no VxLAN interface found, nothing to delete".format(host))
+ return True
+
+ @staticmethod
+ def save_object(obj, filepathname):
+ with open(filepathname, 'wb') as fout:
+ pickle.dump(obj, fout)
+
+ @staticmethod
+ def load_object(filepathname):
+ with open(filepathname, 'rb') as fin:
+ return pickle.load(fin)
+
+ def save_preload_data(self, preload_data):
+ self.save_object(preload_data, self.preload_dict_file)
+
+ def load_preload_data(self):
+ return self.load_object(self.preload_dict_file)
+
+ def save_vgmux_vnf_name(self, vgmux_vnf_name):
+ self.save_object(vgmux_vnf_name, self.vgmux_vnf_name_file)
+
+ def load_vgmux_vnf_name(self):
+ return self.load_object(self.vgmux_vnf_name_file)
+
diff --git a/version-manifest/pom.xml b/version-manifest/pom.xml
index 20a7210fb..b2102d5dc 100644
--- a/version-manifest/pom.xml
+++ b/version-manifest/pom.xml
@@ -4,11 +4,11 @@
<parent>
<groupId>org.onap.oparent</groupId>
<artifactId>oparent</artifactId>
- <version>0.1.1</version>
+ <version>1.1.0</version>
</parent>
<groupId>org.onap.integration</groupId>
<artifactId>version-manifest</artifactId>
- <version>1.0.0-SNAPSHOT</version>
+ <version>1.0.1-SNAPSHOT</version>
<packaging>maven-plugin</packaging>
<name>ONAP Version Manifest and Maven Plugin</name>
<url>https://www.onap.org</url>
@@ -92,7 +92,7 @@
<artifactId>exec-maven-plugin</artifactId>
<version>1.6.0</version>
<configuration>
- <executable>sort</executable>
+ <executable>bash</executable>
</configuration>
<executions>
<execution>
@@ -103,7 +103,7 @@
</goals>
<configuration>
<arguments>
- <argument>-c</argument>
+ <argument>${project.basedir}/src/main/scripts/check-sorted.sh</argument>
<argument>${project.basedir}/src/main/resources/docker-manifest.csv</argument>
</arguments>
</configuration>
@@ -116,7 +116,7 @@
</goals>
<configuration>
<arguments>
- <argument>-c</argument>
+ <argument>${project.basedir}/src/main/scripts/check-sorted.sh</argument>
<argument>${project.basedir}/src/main/resources/java-manifest.csv</argument>
</arguments>
</configuration>
diff --git a/version-manifest/src/main/resources/docker-manifest.csv b/version-manifest/src/main/resources/docker-manifest.csv
index ee1bb4e2d..f0dc07849 100644
--- a/version-manifest/src/main/resources/docker-manifest.csv
+++ b/version-manifest/src/main/resources/docker-manifest.csv
@@ -1,74 +1,87 @@
image,tag
-onap/aai/esr-gui,v1.0.0
-onap/aai/esr-server,v1.0.0
+onap/aaf,latest
onap/aai-resources,1.2-STAGING-latest
onap/aai-traversal,1.2-STAGING-latest
-onap/admportal-sdnc-image,v1.2.1
-onap/ccsdk-dgbuilder-image,v0.1.0
-onap/ccsdk-odl-image,v0.1.0
-onap/ccsdk-odlsli-image,v0.1.0
-onap/clamp,v1.1.0
+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/clamp,2.0-STAGING-latest
onap/cli,v1.1.0
onap/data-router,1.2-STAGING-latest
onap/dmaap/dmaap-mr,1.0.1
+onap/externalapi/nbi,latest
onap/holmes/engine-management,v1.0.0
onap/holmes/rule-management,v1.0.0
-onap/modeling/javatoscachecker,v1.0.0
onap/model-loader,1.2-STAGING-latest
-onap/msb/msb_apigateway,1.0.0
-onap/msb/msb_discovery,1.0.0
+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,v1.0.0
-onap/multicloud/openstack-ocata,v1.0.0
-onap/multicloud/openstack-windriver,v1.0.0
-onap/multicloud/vio,v1.0.0
-onap/multicloud/vio-vesagent,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/vio-vesagent,1.0.0
+onap/music,latest
+onap/oof,latest
onap/oom/kube2msb,1.0.0
-onap/org.onap.dcaegen2.collectors.ves.vescollector,v1.1.0
-onap/org.onap.dcaegen2.deployments.bootstrap,v1.1.1
+onap/org.onap.dcaegen2.collectors.snmptrap,latest
+onap/org.onap.dcaegen2.collectors.ves.vescollector,latest
+onap/org.onap.dcaegen2.deployments.bootstrap,1.1.2
+onap/org.onap.dcaegen2.deployments.cm-container,latest
+onap/org.onap.dcaegen2.deployments.k8s-bootstrap-container,latest
+onap/org.onap.dcaegen2.deployments.redis-cluster-container,latest
+onap/org.onap.dcaegen2.deployments.tca-cdap-container,latest
onap/org.onap.dcaegen2.platform.cdapbroker,v4.0.0
-onap/org.onap.dcaegen2.platform.configbinding,v1.2.0
-onap/org.onap.dcaegen2.platform.deployment-handler,v1.1.0
-onap/org.onap.dcaegen2.platform.inventory-api,v1.2.0
-onap/org.onap.dcaegen2.platform.policy-handler,v1.1.0
-onap/org.onap.dcaegen2.platform.servicechange-handler,v1.0.0
-onap/policy/policy-db,v1.1.1
-onap/policy/policy-drools,v1.1.1
-onap/policy/policy-nexus,v1.1.1
-onap/policy/policy-pe,v1.1.1
-onap/portal-apps,v1.3.0
-onap/portal-db,v1.3.0
-onap/portal-wms,v1.3.0
-onap/sdc/sdc-workflow-designer,1.0.0-STAGING-latest
-onap/sdnc-dmaap-listener-image,v1.2.1
-onap/sdnc-image,v1.2.1
-onap/sdnc-ueb-listener-image,v1.2.1
+onap/org.onap.dcaegen2.platform.configbinding,latest
+onap/org.onap.dcaegen2.platform.deployment-handler,latest
+onap/org.onap.dcaegen2.platform.inventory-api,latest
+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/portal-app,2.1-STAGING-latest
+onap/portal-db,2.1-STAGING-latest
+onap/portal-wms,2.1-STAGING-latest
+onap/sdc-backend,1.2-STAGING-latest
+onap/sdc-elasticsearch,1.2-STAGING-latest
+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-dmaap-listener-image,1.3-STAGING-latest
+onap/sdnc-image,1.3-STAGING-latest
+onap/sdnc-ueb-listener-image,1.3-STAGING-latest
onap/search-data-service,1.2-STAGING-latest
onap/sparky-be,1.2-STAGING-latest
-onap/usecase-ui/usecase-ui-server,v1.0.1
-onap/usecase-ui,v1.0.1
-onap/vfc/catalog,v1.0.2
-onap/vfc/emsdriver,v1.0.1
-onap/vfc/gvnfmdriver,v1.0.1
-onap/vfc/jujudriver,v1.0.0
-onap/vfc/nfvo/svnfm/huawei,v1.0.2
-onap/vfc/nfvo/svnfm/nokia,v1.0.2
-onap/vfc/nslcm,v1.0.2
-onap/vfc/resmanagement,v1.0.0
-onap/vfc/vnflcm,v1.0.1
-onap/vfc/vnfmgr,v1.0.1
-onap/vfc/vnfres,v1.0.1
-onap/vfc/wfengine-activiti,v1.0.0
-onap/vfc/wfengine-mgrservice,v1.0.0
-onap/vfc/ztesdncdriver,v1.0.0
-onap/vfc/ztevnfmdriver,v1.0.2
+onap/testsuite,1.2-STAGING-latest
+onap/usecase-ui,1.1.0-SNAPSHOT-STAGING-latest
+onap/usecase-ui/usecase-ui-server,1.1.0-SNAPSHOT-STAGING-latest
+onap/vfc/catalog,1.1.0-STAGING-latest
+onap/vfc/emsdriver,1.1.0-STAGING-latest
+onap/vfc/gvnfmdriver,1.1.0-STAGING-latest
+onap/vfc/jujudriver,1.1.0-STAGING-latest
+onap/vfc/multivimproxy,1.0.0-STAGING-latest
+onap/vfc/nfvo/svnfm/huawei,1.1.0-STAGING-latest
+onap/vfc/nfvo/svnfm/nokia,1.1.0-STAGING-latest
+onap/vfc/nfvo/svnfm/nokiav2,1.1.0-STAGING-latest
+onap/vfc/nslcm,1.1.0-STAGING-latest
+onap/vfc/resmanagement,1.1.0-STAGING-latest
+onap/vfc/vnflcm,1.1.0-STAGING-latest
+onap/vfc/vnfmgr,1.1.0-STAGING-latest
+onap/vfc/vnfres,1.1.0-STAGING-latest
+onap/vfc/wfengine-activiti,latest
+onap/vfc/wfengine-mgrservice,latest
+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
-openecomp/appc-image,v1.2.0
-openecomp/mso,v1.1.1
-openecomp/sdc-backend,v1.1.0
-openecomp/sdc-elasticsearch,v1.1.0
-openecomp/sdc-frontend,v1.1.0
-openecomp/sdc-kibana,v1.1.0
-openecomp/sdc-sanity,v1.1.0
-openecomp/vid,v1.1.1
+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 4dac75c67..4bed11cda 100644
--- a/version-manifest/src/main/resources/java-manifest.csv
+++ b/version-manifest/src/main/resources/java-manifest.csv
@@ -1,10 +1,35 @@
groupId,artifactId,version
-org.onap.aai.aai-common,aai-annotations,1.2.0
-org.onap.aai.aai-common,aai-auth,1.2.0
-org.onap.aai.aai-common,aai-common,1.2.0
-org.onap.aai.aai-common,aai-core,1.2.0
-org.onap.aai.aai-common,aai-schema,1.2.0
-org.onap.aai.aai-common,aai-utils,1.2.0
+org.onap.aaf.authz,aaf-auth-batch,2.1.0
+org.onap.aaf.authz,aaf-auth-cass,2.1.0
+org.onap.aaf.authz,aaf-auth-certman,2.1.0
+org.onap.aaf.authz,aaf-auth-client,2.1.0
+org.onap.aaf.authz,aaf-auth-cmd,2.1.0
+org.onap.aaf.authz,aaf-auth-core,2.1.0
+org.onap.aaf.authz,aaf-auth-deforg,2.1.0
+org.onap.aaf.authz,aaf-auth-fs,2.1.0
+org.onap.aaf.authz,aaf-auth-gui,2.1.0
+org.onap.aaf.authz,aaf-auth-hello,2.1.0
+org.onap.aaf.authz,aaf-auth-locate,2.1.0
+org.onap.aaf.authz,aaf-auth-oauth,2.1.0
+org.onap.aaf.authz,aaf-auth-service,2.1.0
+org.onap.aaf.authz,aaf-cadi-aaf,2.1.0
+org.onap.aaf.authz,aaf-cadi-cass,2.1.0
+org.onap.aaf.authz,aaf-cadi-client,2.1.0
+org.onap.aaf.authz,aaf-cadi-core,2.1.0
+org.onap.aaf.authz,aaf-cadi-oauth-enduser,2.1.0
+org.onap.aaf.authz,aaf-cadi-shiro,2.1.0
+org.onap.aaf.authz,aaf-misc-env,2.1.0
+org.onap.aaf.authz,aaf-misc-log4j,2.1.0
+org.onap.aaf.authz,aaf-misc-rosetta,2.1.0
+org.onap.aaf.authz,aaf-misc-xgen,2.1.0
+org.onap.aai,rest-client,1.2.0
+org.onap.aai,search-data-service,1.2.0
+org.onap.aai.aai-common,aai-annotations,1.2.1
+org.onap.aai.aai-common,aai-auth,1.2.1
+org.onap.aai.aai-common,aai-common,1.2.1
+org.onap.aai.aai-common,aai-core,1.2.1
+org.onap.aai.aai-common,aai-schema,1.2.1
+org.onap.aai.aai-common,aai-utils,1.2.1
org.onap.aai.data-router,data-router,1.2.0
org.onap.aai.esr-gui,aai-esr-gui,1.0.0
org.onap.aai.esr-gui,common,1.0.0
@@ -25,9 +50,7 @@ org.onap.aai.logging-service,logging-service,1.2.0
org.onap.aai.model-loader,model-loader,1.2.0
org.onap.aai.resources,aai-resources,1.2.0
org.onap.aai.resources,resources,1.2.0
-org.onap.aai,rest-client,1.2.0
org.onap.aai.router-core,router-core,1.2.0
-org.onap.aai,search-data-service,1.2.0
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
@@ -39,11 +62,11 @@ 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,sliapi-provider,0.1.2
org.onap.ccsdk.sli.core,sli-common,0.1.2
-org.onap.ccsdk.sli.core,sliPluginUtils-provider,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
@@ -54,7 +77,7 @@ 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.storage.pgaas,pgaas,1.0.0
org.onap.ccsdk.utils,utils,1.0.0
-org.onap.clamp.clds.clamp,clamp,1.1.0
+org.onap.clamp.clds.clamp,clamp,2.0.0
org.onap.cli,cli-framework,1.1.0
org.onap.cli,cli-main,1.1.0
org.onap.cli,cli-plugins-aai,1.1.0
@@ -66,21 +89,25 @@ org.onap.cli,cli-sample-mock-generator,1.1.0
org.onap.cli,cli-sample-yaml-generator,1.1.0
org.onap.cli,cli-validation,1.1.0
org.onap.cli,cli-zip,1.1.0
-org.onap.dcaegen2.analytics.tca,dcae-analytics,2.0.0
-org.onap.dcaegen2.analytics.tca,dcae-analytics-aai,2.0.0
-org.onap.dcaegen2.analytics.tca,dcae-analytics-cdap-common,2.0.0
-org.onap.dcaegen2.analytics.tca,dcae-analytics-cdap-plugins,2.0.0
-org.onap.dcaegen2.analytics.tca,dcae-analytics-cdap-tca,2.0.0
-org.onap.dcaegen2.analytics.tca,dcae-analytics-common,2.0.0
-org.onap.dcaegen2.analytics.tca,dcae-analytics-dmaap,2.0.0
-org.onap.dcaegen2.analytics.tca,dcae-analytics-it,2.0.0
-org.onap.dcaegen2.analytics.tca,dcae-analytics-model,2.0.0
-org.onap.dcaegen2.analytics.tca,dcae-analytics-tca,2.0.0
-org.onap.dcaegen2.analytics.tca,dcae-analytics-test,2.0.0
-org.onap.dcaegen2.collectors.ves,VESCollector,1.1.4
org.onap.dcaegen2,dcaegen2,1.1.0
+org.onap.dcaegen2.analytics.tca,dcae-analytics,2.2.0
+org.onap.dcaegen2.analytics.tca,dcae-analytics-aai,2.2.0
+org.onap.dcaegen2.analytics.tca,dcae-analytics-cdap-common,2.2.0
+org.onap.dcaegen2.analytics.tca,dcae-analytics-cdap-plugins,2.2.0
+org.onap.dcaegen2.analytics.tca,dcae-analytics-cdap-tca,2.2.0
+org.onap.dcaegen2.analytics.tca,dcae-analytics-common,2.2.0
+org.onap.dcaegen2.analytics.tca,dcae-analytics-dmaap,2.2.0
+org.onap.dcaegen2.analytics.tca,dcae-analytics-it,2.2.0
+org.onap.dcaegen2.analytics.tca,dcae-analytics-model,2.2.0
+org.onap.dcaegen2.analytics.tca,dcae-analytics-tca,2.2.0
+org.onap.dcaegen2.analytics.tca,dcae-analytics-test,2.2.0
+org.onap.dcaegen2.collectors.ves,VESCollector,1.2.4
org.onap.dcaegen2.platform,inventory-api,1.0.0
org.onap.dcaegen2.platform,servicechange-handler,1.0.0
+org.onap.dcaegen2.services,prh,1.0.0
+org.onap.dcaegen2.services.prh,prh-aai-client,1.0.0
+org.onap.dcaegen2.services.prh,prh-app-server,1.0.0
+org.onap.dcaegen2.services.prh,prh-dmaap-client,1.0.0
org.onap.dmaap.messagerouter.dmaapclient,dmaapClient,1.0.0
org.onap.dmaap.messagerouter.messageservice,dmaapMR1,1.0.1
org.onap.dmaap.messagerouter.mirroragent,dmaapMMAgent,1.0.0
@@ -90,22 +117,22 @@ org.onap.holmes.dsa,dmaap-dsa,1.0.0
org.onap.holmes.engine-management,holmes-engine-d,1.0.0
org.onap.holmes.rule-management,holmes-rulemgt,1.0.0
org.onap.modeling.toscaparsers,Checker,1.0.0
+org.onap.modeling.toscaparsers,Service,1.0.0
org.onap.modeling.toscaparsers,kwalify,1.0.0
org.onap.modeling.toscaparsers.nfvparser,modeling-toscaparsers-nfvparser,1.0.0
-org.onap.modeling.toscaparsers,Service,1.0.0
org.onap.msb.java-sdk,msb-java-sdk,1.0.0
org.onap.msb.swagger-sdk,swagger-sdk,1.0.0
org.onap.multicloud.framework,multivimbroker,1.0.0
org.onap.multicloud.openstack,newton,1.0.0
org.onap.multicloud.openstack,ocata,1.0.0
+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.multicloud.openstack,windriver,1.0.0
-org.onap.oparent,oparent,0.1.1
-org.onap.policy.common,common-modules,1.1.1
-org.onap.policy.drools-applications,drools-pdp-apps,1.1.1
-org.onap.policy.drools-pdp,drools-pdp,1.1.1
-org.onap.policy.engine,PolicyEngineSuite,1.1.1
+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.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
@@ -116,8 +143,8 @@ 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.usecase-ui.server,usecase-ui-server,1.0.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
org.onap.vfc.gvnfm.vnfmgr.mgr,vfc-gvnfm-vnfmgr-mgr,1.0.1
org.onap.vfc.gvnfm.vnfres.res,vfc-gvnfm-vnfres-res,1.0.1
@@ -125,14 +152,22 @@ org.onap.vfc.nfvo.catalog,vfc-nfvo-catalog,1.0.2
org.onap.vfc.nfvo.driver.ems.ems,emsdriver-standalone,1.0.1
org.onap.vfc.nfvo.driver.sfc.zte.sfc-driver-standalone,vfc-nfvo-driver-sfc-zte-sfc-driver,1.0.0
org.onap.vfc.nfvo.driver.vnfm.gvnfm.gvnfmadapter,vfc-nfvo-driver-vnfm-gvnfm-gvnfmadapter,1.0.1
-org.onap.vfc.nfvo.driver.vnfm.svnfm.huawei.vnfmadapter,hw-vnfmadapter-deployment,1.0.0
org.onap.vfc.nfvo.driver.vnfm.svnfm,vfcadaptor-deployment,1.0.1
+org.onap.vfc.nfvo.driver.vnfm.svnfm.huawei.vnfmadapter,hw-vnfmadapter-deployment,1.0.0
org.onap.vfc.nfvo.driver.vnfm.svnfm.zte.vmanager,vfc-nfvo-driver-vnfm-svnfm-zte-vmanager,1.0.2
org.onap.vfc.nfvo.lcm,vfc-nfvo-lcm,1.0.2
org.onap.vfc.nfvo.resmanagement,vfc-nfvo-resmanagement-deployment,1.0.0
org.onap.vfc.nfvo.wfengine,activiti-extension,1.0.0
org.onap.vfc.nfvo.wfengine,workflow-engine-mgr-service,1.0.0
-org.onap.vnfsdk.refrepo,vnfmarket,1.0.0
+org.onap.vnfsdk.refrepo,vnf-sdk-marketplace,1.1.0
+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.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
org.openecomp.appc,appc-artifact-handler-provider,1.2.0
@@ -184,31 +219,35 @@ org.openecomp.appc,appc-ssh-adapter-tests,1.2.0
org.openecomp.appc,appc-workflow-management-api,1.2.0
org.openecomp.appc,appc-workflow-management-core,1.2.0
org.openecomp.appc,appc-yang-generator,1.2.0
-org.openecomp.appc.client,client-kit,1.2.0
-org.openecomp.appc.client,client-lib,1.2.0
-org.openecomp.appc.client,client-simulator,1.2.0
-org.openecomp.appc.client,code-generator,1.2.0
org.openecomp.appc,execution-queue-management-lib,1.2.0
org.openecomp.appc,lock-manager-api,1.2.0
org.openecomp.appc,lock-manager-impl,1.2.0
-org.openecomp.appc.plugins,dg-loader-provider,1.2.0
org.openecomp.appc,state-machine-lib,1.2.0
org.openecomp.appc,transaction-recorder,1.2.0
+org.openecomp.appc.client,client-kit,1.2.0
+org.openecomp.appc.client,client-lib,1.2.0
+org.openecomp.appc.client,client-simulator,1.2.0
+org.openecomp.appc.client,code-generator,1.2.0
+org.openecomp.appc.plugins,dg-loader-provider,1.2.0
org.openecomp.sdc.jtosca,jtosca,1.1.1
org.openecomp.sdc.sdc-distribution-client,sdc-main-distribution-client,1.1.32
org.openecomp.sdc.sdc-titan-cassandra,sdc-titan-cassandra,1.0.0
org.openecomp.sdc.sdc-tosca,sdc-tosca,1.1.32
-org.openecomp.so.adapters,mso-adapters-rest-interface,1.1.1
+org.openecomp.so,MSOCommonBPMN,1.1.1
+org.openecomp.so,MSOCoreBPMN,1.1.1
+org.openecomp.so,MSOInfrastructureBPMN,1.1.1
+org.openecomp.so,MSORESTClient,1.1.1
+org.openecomp.so,common,1.1.1
+org.openecomp.so,mso-api-handler-common,1.1.1
+org.openecomp.so,mso-catalog-db,1.1.1
+org.openecomp.so,mso-requests-db,1.1.1
+org.openecomp.so,status-control,1.1.1
org.openecomp.so.adapters,mso-adapter-utils,1.1.1
+org.openecomp.so.adapters,mso-adapters-rest-interface,1.1.1
org.openecomp.so.adapters,mso-network-adapter-async-client,1.1.1
org.openecomp.so.adapters,mso-vnf-adapter-async-client,1.1.1
-org.openecomp.so,common,1.1.1
org.openecomp.so.libs.openstack-java-sdk,ceilometer-client,1.1.0
org.openecomp.so.libs.openstack-java-sdk,ceilometer-model,1.1.0
-org.openecomp.so.libs.openstack-java-sdk.client-connectors,http-connector,1.1.0
-org.openecomp.so.libs.openstack-java-sdk.client-connectors,jersey2-connector,1.1.0
-org.openecomp.so.libs.openstack-java-sdk.client-connectors,jersey-connector,1.1.0
-org.openecomp.so.libs.openstack-java-sdk.client-connectors,resteasy-connector,1.1.0
org.openecomp.so.libs.openstack-java-sdk,glance-client,1.1.0
org.openecomp.so.libs.openstack-java-sdk,glance-model,1.1.0
org.openecomp.so.libs.openstack-java-sdk,heat-client,1.1.0
@@ -222,12 +261,8 @@ org.openecomp.so.libs.openstack-java-sdk,quantum-client,1.1.0
org.openecomp.so.libs.openstack-java-sdk,quantum-model,1.1.0
org.openecomp.so.libs.openstack-java-sdk,swift-client,1.1.0
org.openecomp.so.libs.openstack-java-sdk,swift-model,1.1.0
-org.openecomp.so,mso-api-handler-common,1.1.1
-org.openecomp.so,mso-catalog-db,1.1.1
-org.openecomp.so,MSOCommonBPMN,1.1.1
-org.openecomp.so,MSOCoreBPMN,1.1.1
-org.openecomp.so,MSOInfrastructureBPMN,1.1.1
-org.openecomp.so,mso-requests-db,1.1.1
-org.openecomp.so,MSORESTClient,1.1.1
-org.openecomp.so,status-control,1.1.1
+org.openecomp.so.libs.openstack-java-sdk.client-connectors,http-connector,1.1.0
+org.openecomp.so.libs.openstack-java-sdk.client-connectors,jersey-connector,1.1.0
+org.openecomp.so.libs.openstack-java-sdk.client-connectors,jersey2-connector,1.1.0
+org.openecomp.so.libs.openstack-java-sdk.client-connectors,resteasy-connector,1.1.0
org.openecomp.vid,asdcclient,1.0.2
diff --git a/version-manifest/src/main/scripts/check-sorted.sh b/version-manifest/src/main/scripts/check-sorted.sh
new file mode 100755
index 000000000..d926409f4
--- /dev/null
+++ b/version-manifest/src/main/scripts/check-sorted.sh
@@ -0,0 +1,12 @@
+#!/bin/bash
+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
+ echo " LC_ALL=C sort < $1 > $1.tmp"
+ echo " mv $1.tmp $1"
+ echo
+fi
+exit $retval
diff --git a/version.properties b/version.properties
index 49e2720ae..17a717c1c 100644
--- a/version.properties
+++ b/version.properties
@@ -5,7 +5,7 @@
major_version=1
minor_version=0
-patch_version=0
+patch_version=1
base_version=${major_version}.${minor_version}.${patch_version}