aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--scripts/optf-has/has/has-properties/AAF_RootCA.cer31
-rw-r--r--scripts/optf-has/has/has-properties/cert.cer36
-rw-r--r--scripts/optf-has/has/has-properties/cert.key28
-rw-r--r--scripts/optf-has/has/has-properties/cert.pem36
-rw-r--r--scripts/optf-has/has/has-properties/conductor.conf.onap340
-rwxr-xr-xscripts/optf-has/has/has_script.sh30
-rwxr-xr-xscripts/optf-has/has/music_script.sh100
-rwxr-xr-xscripts/optf-has/has/music_teardown_script.sh38
-rwxr-xr-xscripts/optf-has/has/simulator_script.sh25
-rwxr-xr-xscripts/optf-has/has/simulator_teardown_script.sh2
-rw-r--r--tests/optf-has/has/optf_has_test.robot61
11 files changed, 499 insertions, 228 deletions
diff --git a/scripts/optf-has/has/has-properties/AAF_RootCA.cer b/scripts/optf-has/has/has-properties/AAF_RootCA.cer
new file mode 100644
index 00000000..e9a50d7e
--- /dev/null
+++ b/scripts/optf-has/has/has-properties/AAF_RootCA.cer
@@ -0,0 +1,31 @@
+-----BEGIN CERTIFICATE-----
+MIIFPjCCAyagAwIBAgIJAJ6u7cCnzrWdMA0GCSqGSIb3DQEBCwUAMCwxDjAMBgNV
+BAsMBU9TQUFGMQ0wCwYDVQQKDARPTkFQMQswCQYDVQQGEwJVUzAeFw0xODA0MDUx
+NDE1MjhaFw0zODAzMzExNDE1MjhaMCwxDjAMBgNVBAsMBU9TQUFGMQ0wCwYDVQQK
+DARPTkFQMQswCQYDVQQGEwJVUzCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoC
+ggIBAMA5pkgRs7NhGG4ew5JouhyYakgYUyFaG121+/h8qbSdt0hVQv56+EA41Yq7
+XGie7RYDQK9NmAFF3gruE+6X7wvJiChp+Cyd7sFMnb65uWhxEdxWTM2BJFrgfzUn
+H8ZCxgaCo3XH4PzlKRy2LQQJEJECwl/RZmRCXijMt5e9h8XoZY/fKkKcZZUsWNCM
+pTo266wjvA9MXLmdgReRj0+vrCjrNqy+htwJDztoiHWiYPqT6o8EvGcgjNqjlZx7
+NUNf8MfLDByqKF6+wRbHv1GKjn3/Vijd45Fv8riyRYROiFanvbV6jIfBkv8PZbXg
+2VDWsYsgp8NAvMxK+iV8cO+Ck3lBI2GOPZbCEqpPVTYbLUz6sczAlCXwQoPzDIZY
+wYa3eR/gYLY1gP2iEVHORag3bLPap9ZX5E8DZkzTNTjovvLk8KaCmfcaUMJsBtDd
+ApcUitz10cnRyZc1sX3gE1f3DpzQM6t9C5sOVyRhDcSrKqqwb9m0Ss04XAS9FsqM
+P3UWYQyqDXSxlUAYaX892u8mV1hxnt2gjb22RloXMM6TovM3sSrJS0wH+l1nznd6
+aFXftS/G4ZVIVZ/LfT1is4StoyPWZCwwwly1z8qJQ/zhip5NgZTxQw4mi7ww35DY
+PdAQOCoajfSvFjqslQ/cPRi/MRCu079heVb5fQnnzVtnpFQRAgMBAAGjYzBhMB0G
+A1UdDgQWBBRTVTPyS+vQUbHBeJrBKDF77+rtSTAfBgNVHSMEGDAWgBRTVTPyS+vQ
+UbHBeJrBKDF77+rtSTAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBhjAN
+BgkqhkiG9w0BAQsFAAOCAgEAPx/IaK94n02wPxpnYTy+LVLIxwdq/kawNd6IbiMz
+L87zmNMDmHcGbfoRCj8OkhuggX9Lx1/CkhpXimuYsZOFQi5blr/u+v4mIbsgbmi9
+7j+cUHDP0zLycvSvxKHty51LwmaX9a4wkJl5zBU4O1sd/H9tWcEmwJ39ltKoBKBx
+c94Zc3iMm5ytRWGj+0rKzLDAXEWpoZ5bE5PLJauA6UDCxDLfs3FwhbS7uDggxYvf
+jySF5FCNET94oJ+m8s7VeHvoa8iPGKvXrIqdd7XDHnqJJlVKr7m9S0fMbyEB8ci2
+RtOXDt93ifY1uhoEtEykn4dqBSp8ezvNMnwoXdYPDvTd9uCAFeWFLVreBAWxd25h
+PsBTkZA5hpa/rA+mKv6Af4VBViYr8cz4dZCsFChuioVebe9ighrfjB//qKepFjPF
+CyjzKN1u0JKm/2x/ORqxkTONG8p3uDwoIOyimUcTtTMv42bfYD88RKakqSFXE9G+
+Z0LlaKABqfjK49o/tsAp+c5LoNlYllKhnetO3QAdraHwdmC36BhoghzR1jpX751A
+cZn2VH3Q4XKyp01cJNCJIrua+A+bx6zh3RyW6zIIkbRCbET+UD+4mr8WIcSE3mtR
+ZVlnhUDO4z9//WKMVzwS9Rh8/kuszrGFI1KQozXCHLrce3YP6RYZfOed79LXaRwX
+dYY=
+-----END CERTIFICATE-----
diff --git a/scripts/optf-has/has/has-properties/cert.cer b/scripts/optf-has/has/has-properties/cert.cer
deleted file mode 100644
index 67bb1303..00000000
--- a/scripts/optf-has/has/has-properties/cert.cer
+++ /dev/null
@@ -1,36 +0,0 @@
------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/scripts/optf-has/has/has-properties/cert.key b/scripts/optf-has/has/has-properties/cert.key
deleted file mode 100644
index b8a957ff..00000000
--- a/scripts/optf-has/has/has-properties/cert.key
+++ /dev/null
@@ -1,28 +0,0 @@
------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/scripts/optf-has/has/has-properties/cert.pem b/scripts/optf-has/has/has-properties/cert.pem
deleted file mode 100644
index 5ecf3823..00000000
--- a/scripts/optf-has/has/has-properties/cert.pem
+++ /dev/null
@@ -1,36 +0,0 @@
-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/scripts/optf-has/has/has-properties/conductor.conf.onap b/scripts/optf-has/has/has-properties/conductor.conf.onap
index 2c5b8d6c..c000248c 100644
--- a/scripts/optf-has/has/has-properties/conductor.conf.onap
+++ b/scripts/optf-has/has/has-properties/conductor.conf.onap
@@ -1,4 +1,3 @@
-
[DEFAULT]
#
@@ -9,7 +8,14 @@
#api_paste_config = api_paste.ini
# Music keyspace for content (string value)
-keyspace = conductor
+#keyspace = conductor
+
+# Delay time (Seconds) for MUSIC requests. Set it to 2 seconds by default.
+# (integer value)
+#delay_time = 2
+
+# (boolean value)
+#HPA_enabled = true
#
# From oslo.log
@@ -20,12 +26,6 @@ keyspace = conductor
# 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
@@ -39,7 +39,7 @@ 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
+#log_date_format = %Y-%m-%d %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
@@ -47,15 +47,11 @@ log_date_format = %d-%m-%Y %H:%M:%S
# 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
@@ -68,10 +64,20 @@ log_dir = /var/log
# is set. (boolean value)
#use_syslog = false
+# Enable journald for logging. If running in a systemd environment you may wish
+# to enable journal support. Doing so will use the journal native protocol
+# which includes structured metadata in addition to log messages.This option is
+# ignored if log_config_append is set. (boolean value)
+#use_journal = false
+
# Syslog facility to receive log lines. This option is ignored if
# log_config_append is set. (string value)
#syslog_log_facility = LOG_USER
+# Use JSON formatting for logging. This option is ignored if log_config_append
+# is set. (boolean value)
+#use_json = false
+
# Log output to standard error. This option is ignored if log_config_append is
# set. (boolean value)
#use_stderr = false
@@ -96,7 +102,7 @@ log_dir = /var/log
# 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
+#default_log_levels = amqp=WARN,amqplib=WARN,boto=WARN,qpid=WARN,sqlalchemy=WARN,suds=INFO,oslo.messaging=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
@@ -125,6 +131,53 @@ log_dir = /var/log
#fatal_deprecations = false
+[aaf_authentication]
+
+#
+# From conductor
+#
+
+# is_aaf_enabled. (boolean value)
+#is_aaf_enabled = true
+
+# aaf_cache_expiry_hrs. (integer value)
+#aaf_cache_expiry_hrs = 3
+
+# aaf_url. (string value)
+aaf_url = http://localhost:8100/authz/perms/user/
+
+# aaf_retries. (integer value)
+#aaf_retries = 3
+
+# aaf_timeout. (integer value)
+#aaf_timeout = 100
+
+# aaf_user_roles. (list value)
+#aaf_user_roles = {"type": "org.onap.oof","instance": "plans","action": "GET"},{"type": "org.onap.oof","instance": "plans","action": "POST"}
+
+
+[aaf_sms]
+
+#
+# From conductor
+#
+
+# Base URL for SMS, up to and not including the version, and without a trailing
+# slash. (string value)
+#aaf_sms_url = https://aaf-sms.onap:10443
+
+# Timeout for SMS API Call (integer value)
+#aaf_sms_timeout = 30
+
+# Path to the cacert that will be used to verify If this is None, verify will
+# be False and the server certis not verified by the client. (string value)
+#aaf_ca_certs = AAF_RootCA.cer
+
+# Domain UUID - A unique UUID generated when the domainfor HAS is created by
+# administrator during deployment (string value)
+#secret_domain = has
+
+
[aai]
#
@@ -132,29 +185,51 @@ log_dir = /var/log
#
# Interval with which to refresh the local cache, in minutes. (integer value)
+#cache_refresh_interval = 1440
cache_refresh_interval = 1
+
+# Interval with which to refresh the local complex cache, in minutes. (integer
+# value)
+#complex_cache_refresh_interval = 1440
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)
+# Base URL for A&AI, up to and not including the version, and without a
+# trailing slash. (string value)
+#server_url = https://controller:8443/aai
server_url = http://localhost:8081/aai/
+# Timeout for A&AI Rest Call (string value)
+#aai_rest_timeout = 30
-# The version of A&AI (string value)
-server_url_version = v13
+# Number of retry for A&AI Rest Call (string value)
+#aai_retries = 3
+
+# The version of A&AI in v# format. (string value)
+server_url_version = v14
# 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
+#certificate_file = certificate.pem
+certificate_file =
# Private Certificate Key file in pem format. (string value)
-certificate_key_file = /usr/local/bin/cert.key
+#certificate_key_file = certificate_key.pem
+certificate_key_file =
# 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
+# trust chain for the Certificate file. (string value)
+#certificate_authority_bundle_file = certificate_authority_bundle.pem
+certificate_authority_bundle_file = /usr/local/bin/AAF_RootCA.cer
+
+# Username for AAI. (string value)
+username = OOF
+
+# Password for AAI. (string value)
+password = OOF
+
[api]
@@ -169,19 +244,28 @@ certificate_authority_bundle_file = /usr/local/bin/cert.pem
# Minimum value: 1
#default_api_return_limit = 100
+
[conductor_api]
-# Basic Authentication Username (string value)
+#
+# From conductor
+#
+
+# Base URL for plans. (string value)
+#server_url =
+
+# username for plans. (string value)
+#username =
username = admin1
-# Basic Authentication Password (string value)
+# password for plans. (string value)
+#password =
password = plan.15
-# To disable basic_auth_secure = false and to enable basic_auth_secure = true
+# auth toggling. (boolean value)
basic_auth_secure = false
-
[controller]
#
@@ -200,6 +284,47 @@ basic_auth_secure = false
# Minimum value: 1
#workers = 1
+# Set to True when controller will run in active-active mode. When set to
+# False, controller will flush any abandoned messages at startup. The
+# controller always restarts abandoned template translations at startup.
+# (boolean value)
+#concurrent = false
+concurrent = true
+
+# Time between checking for new plans. Default value is 1. (integer value)
+# Minimum value: 1
+#polling_interval = 1
+
+# (integer value)
+# Minimum value: 1
+#max_translation_counter = 1
+
+
+[data]
+
+#
+# From conductor
+#
+
+# Number of workers for data service. Default value is 1. (integer value)
+# Minimum value: 1
+#workers = 1
+
+# Set to True when data will run in active-active mode. When set to False, data
+# will flush any abandoned messages at startup. (boolean value)
+#concurrent = false
+concurrent = true
+
+# Default value is -8000, which is the diameter of the earth. The distance
+# cannot larger than this value (floating point value)
+#existing_placement_cost = -8000.0
+
+# (floating point value)
+#cloud_candidate_cost = 2.0
+
+# (floating point value)
+#service_candidate_cost = 1.0
+
[inventory_provider]
@@ -208,7 +333,7 @@ basic_auth_secure = false
#
# Extensions list to use (list value)
-# extensions = aai
+#extensions = aai
[messaging_server]
@@ -218,17 +343,22 @@ basic_auth_secure = false
#
# Music keyspace for messages (string value)
-keyspace = conductor_rpc
+#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
+# Overall message response timeout. Default value is 120 seconds. (integer
# value)
# Minimum value: 1
-timeout = 3600
+#response_timeout = 120
+
+# Timeout for detecting a VM is down, and other VMs can pick the plan up.
+# Default value is 5 minutes. (integer value) (integer value)
+# Minimum value: 1
+#timeout = 300
# Number of workers for messaging service. Default value is 1. (integer value)
# Minimum value: 1
@@ -242,25 +372,40 @@ timeout = 3600
#debug = false
+[multicloud]
+
+#
+# From conductor
+#
+
+# Base URL for Multicloud without a trailing slash. (string value)
+server_url = http://msb.onap.org:8082/api/multicloud
+
+# Timeout for Multicloud Rest Call (string value)
+#multicloud_rest_timeout = 30
+
+# Number of retry for Multicloud Rest Call (string value)
+#multicloud_retries = 3
+
+# The version of Multicloud API. (string value)
+#server_url_version = v0
+
+
[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.5.3"
-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
+#hostnames = <None>
# DEPRECATED: Port (integer value)
# This option is deprecated for removal.
@@ -274,13 +419,74 @@ aafns = conductor
# Reason: Use server_url instead
#path = <None>
+# Socket connection timeout (floating point value)
+#connect_timeout = 3.05
+
+# Socket read timeout (floating point value)
+#read_timeout = 12.05
+
# Lock timeout (integer value)
#lock_timeout = 10
# Replication factor (integer value)
#replication_factor = 1
-# debug = false
+# Use mock API (boolean value)
+#mock = false
+
+# (string value)
+#music_topology = SimpleStrategy
+
+# Name of the first data center (string value)
+#first_datacenter_name = <None>
+
+# Number of replicas in first data center (integer value)
+#first_datacenter_replicas = <None>
+
+# Name of the second data center (string value)
+#second_datacenter_name = <None>
+
+# Number of replicas in second data center (integer value)
+#second_datacenter_replicas = <None>
+
+# Name of the third data center (string value)
+#third_datacenter_name = <None>
+
+# Number of replicas in third data center (integer value)
+#third_datacenter_replicas = <None>
+
+# new or old version (boolean value)
+#music_new_version = <None>
+music_new_version = True
+
+# for version (string value)
+#music_version = <None>
+music_version = "3.0.21"
+
+# username value that used for creating basic authorization header (string
+# value)
+#aafuser = <None>
+aafuser = conductor
+
+# password value that used for creating basic authorization header (string
+# value)
+#aafpass = <None>
+aafpass = c0nduct0r
+
+# AAF namespace field used in MUSIC request header (string value)
+#aafns = <None>
+aafns = conductor
+
+
+[prometheus]
+
+#
+# From conductor
+#
+
+# Prometheus Metrics Endpoint (list value)
+#metrics_port = 8000,8001,8002,8003,8004
+
[reservation]
@@ -294,12 +500,23 @@ aafns = conductor
#workers = 1
# Number of times reservation/release should be attempted. (integer value)
-#reserve_retries = 3
+#reserve_retries = 1
+
+# Timeout for detecting a VM is down, and other VMs can pick the plan up and
+# resereve. Default value is 600 seconds. (integer value) (integer value)
+# Minimum value: 1
+#timeout = 600
# 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
+concurrent = true
+
+# (integer value)
+# Minimum value: 1
+#max_reservation_counter = 1
+
[sdnc]
@@ -313,14 +530,23 @@ aafns = conductor
# Data Store table prefix. (string value)
#table_prefix = sdnc
-# Base URL for SDN-C. (string value)
+# Base URL for SDN-C, up to and including the version. (string value)
+#server_url = https://controller:8443/restconf/
server_url = http://localhost:8083/restconf/
# Basic Authentication Username (string value)
+#username = <None>
username = admin
# Basic Authentication Password (string value)
-password = admin
+#password = <None>
+password = Kp8bJ4SXszM0WXlhak3eHlcse2gAw84vaoGGmJvUy2U
+
+# Timeout for SDNC Rest Call (string value)
+#sdnc_rest_timeout = 30
+
+# Retry Numbers for SDNC Rest Call (string value)
+#sdnc_retries = 3
[service_controller]
@@ -330,7 +556,8 @@ password = admin
#
# Extensions list to use (list value)
-extensions = sdnc
+#extensions = sdnc
+
[solver]
@@ -342,29 +569,25 @@ extensions = sdnc
# Minimum value: 1
#workers = 1
+# The timeout value for solver service. Default value is 480 seconds. (integer
+# value)
+# Minimum value: 1
+#solver_timeout = 480
+
# 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
+concurrent = true
+# Timeout for detecting a VM is down, and other VMs can pick the plan up. This
+# value should be larger than solver_timeoutDefault value is 10 minutes.
+# (integer value) (integer value)
+# Minimum value: 1
+#timeout = 600
-[multicloud]
-
-#
-# From conductor
-#
-
-# Base URL for Multicloud without a trailing slash. (string value)
-server_url = http://msb.onap.org:8082/api/multicloud
-
-# Timeout for Multicloud Rest Call (string value)
-multicloud_rest_timeout = 30
-
-# Number of retry for Multicloud Rest Call (string value)
-multicloud_retries = 3
-
-# The version of Multicloud API. (string value)
-server_url_version = v0
-
+# (integer value)
+# Minimum value: 1
+#max_solver_counter = 1
[vim_controller]
@@ -374,5 +597,4 @@ server_url_version = v0
#
# Extensions list to use (list value)
-extensions = multicloud
-
+#extensions = multicloud
diff --git a/scripts/optf-has/has/has_script.sh b/scripts/optf-has/has/has_script.sh
index 24ecc063..7f77dbbb 100755
--- a/scripts/optf-has/has/has_script.sh
+++ b/scripts/optf-has/has/has_script.sh
@@ -32,17 +32,13 @@ COND_CONF=/tmp/conductor/properties/conductor.conf
LOG_CONF=/tmp/conductor/properties/log.conf
IMAGE_NAME=nexus3.onap.org:10001/onap/optf-has
IMAGE_VER=1.2.1-SNAPSHOT-latest
-CERT=/tmp/conductor/properties/cert.cer
-KEY=/tmp/conductor/properties/cert.key
-BUNDLE=/tmp/conductor/properties/cert.pem
+BUNDLE=/tmp/conductor/properties/AAF_RootCA.cer
mkdir -p /tmp/conductor/properties
mkdir -p /tmp/conductor/logs
cp ${WORKSPACE}/scripts/optf-has/has/has-properties/conductor.conf.onap /tmp/conductor/properties/conductor.conf
cp ${WORKSPACE}/scripts/optf-has/has/has-properties/log.conf.onap /tmp/conductor/properties/log.conf
-cp ${WORKSPACE}/scripts/optf-has/has/has-properties/cert.cer /tmp/conductor/properties/cert.cer
-cp ${WORKSPACE}/scripts/optf-has/has/has-properties/cert.key /tmp/conductor/properties/cert.key
-cp ${WORKSPACE}/scripts/optf-has/has/has-properties/cert.pem /tmp/conductor/properties/cert.pem
+cp ${WORKSPACE}/scripts/optf-has/has/has-properties/AAF_RootCA.cer /tmp/conductor/properties/AAF_RootCA.cer
#chmod -R 777 /tmp/conductor/properties
MUSIC_IP=`docker inspect --format '{{ .NetworkSettings.Networks.bridge.IPAddress}}' music-tomcat`
@@ -63,23 +59,29 @@ echo "MULTICLOUDSIM_IP=${MULTICLOUDSIM_IP}"
# change MULTICLOUD reference to the local instance
sed -i -e "s%msb.onap.org:8082/%${MULTICLOUDSIM_IP}:8082/%g" /tmp/conductor/properties/conductor.conf
+AAFSIM_IP=`docker inspect --format '{{ .NetworkSettings.Networks.bridge.IPAddress}}' aafsim`
+echo "AAFSIM_IP=${AAFSIM_IP}"
+
+# change AAF reference to the local instance
+sed -i -e "s%localhost:8100/%${AAFSIM_IP}:8100/%g" /tmp/conductor/properties/conductor.conf
+
#onboard conductor into music
echo "Query MUSIC to check for reachability. Query Version"
curl -vvvvv --noproxy "*" --request GET http://${MUSIC_IP}:8080/MUSIC/rest/v2/version -H "Content-Type: application/json"
-
+
echo "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}/tests/optf-has/has/data/onboard.json
+curl -vvvvv --noproxy "*" --request POST http://${MUSIC_IP}:8080/MUSIC/rest/v2/admin/onboardAppWithMusic -H "Content-Type: application/json" -H "Authorization: Basic Y29uZHVjdG9yOmMwbmR1Y3Qwcg==" --data @${WORKSPACE}/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}:${IMAGE_VER} python /usr/local/bin/conductor-controller --config-file=/usr/local/bin/conductor.conf
-sleep 20
+sleep 15
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}:${IMAGE_VER} python /usr/local/bin/conductor-api --port=8091 -- --config-file=/usr/local/bin/conductor.conf
-sleep 20
+sleep 15
docker run -d --name cond-solv -v ${COND_CONF}:/usr/local/bin/conductor.conf -v ${LOG_CONF}:/usr/local/bin/log.conf ${IMAGE_NAME}:${IMAGE_VER} python /usr/local/bin/conductor-solver --config-file=/usr/local/bin/conductor.conf
-sleep 20
+sleep 15
docker run -d --name cond-resv -v ${COND_CONF}:/usr/local/bin/conductor.conf -v ${LOG_CONF}:/usr/local/bin/log.conf ${IMAGE_NAME}:${IMAGE_VER} python /usr/local/bin/conductor-reservation --config-file=/usr/local/bin/conductor.conf
-sleep 20
-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}:${IMAGE_VER} python /usr/local/bin/conductor-data --config-file=/usr/local/bin/conductor.conf
-sleep 20
+sleep 5
+docker run -d --name cond-data -v ${COND_CONF}:/usr/local/bin/conductor.conf -v ${LOG_CONF}:/usr/local/bin/log.conf -v ${BUNDLE}:/usr/local/bin/AAF_RootCA.cer ${IMAGE_NAME}:${IMAGE_VER} python /usr/local/bin/conductor-data --config-file=/usr/local/bin/conductor.conf
+sleep 15
COND_IP=`docker inspect --format '{{ .NetworkSettings.Networks.bridge.IPAddress}}' cond-api`
${WORKSPACE}/scripts/optf-has/has/wait_for_port.sh ${COND_IP} 8091
diff --git a/scripts/optf-has/has/music_script.sh b/scripts/optf-has/has/music_script.sh
index 811a39c2..2a4f178d 100755
--- a/scripts/optf-has/has/music_script.sh
+++ b/scripts/optf-has/has/music_script.sh
@@ -22,67 +22,120 @@ echo "### This is ${WORKSPACE}/scripts/optf-has/has/music_script.sh"
#
# 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
+echo "########## music configuration step ##########";
+CASS_IMG=nexus3.onap.org:10001/onap/music/cassandra_3_11:latest
+CASS_IMG_JOB=nexus3.onap.org:10001/onap/music/cassandra_job:latest
+TOMCAT_IMG=nexus3.onap.org:10001/library/tomcat:8.5
ZK_IMG=nexus3.onap.org:10001/library/zookeeper:3.4
-MUSIC_IMG=nexus3.onap.org:10001/onap/music/music:2.5.3
+BUSYBOX_IMG=nexus3.onap.org:10001/library/busybox:latest
+MUSIC_IMG=nexus3.onap.org:10001/onap/music/music:latest
+TT=10
WORK_DIR=/tmp/music
CASS_USERNAME=nelson24
CASS_PASSWORD=winman123
MUSIC_SOURCE_PROPERTIES=${WORKSPACE}/scripts/optf-has/has/music-properties
MUSIC_PROPERTIES=/tmp/music/properties
MUSIC_LOGS=/tmp/music/logs
+CQL_FILES=${WORKSPACE}/scripts/music/cql
+MUSIC_TRIGGER_DIR=/tmp/triggers
+TRIGGER_JAR=musictrigger-0.1.0.jar
+TRIGGER_JAR_URL=https://nexus.onap.org/service/local/repositories/autorelease-72298/content/org/onap/music/musictrigger/0.1.0/musictrigger-0.1.0.jar
+
mkdir -p ${MUSIC_PROPERTIES}
mkdir -p ${MUSIC_LOGS}
+mkdir -p ${MUSIC_LOGS}/MUSIC
+mkdir -p /tmp/triggers
+
+# Get Trigger
+echo "########## Get Trigger Jar ##########"
+curl -o $MUSIC_TRIGGER_DIR/$TRIGGER_JAR $TRIGGER_JAR_URL
cp ${MUSIC_SOURCE_PROPERTIES}/* ${WORK_DIR}/properties
# Create Volume for mapping war file and tomcat
+echo "########## create music-vol ##########"
docker volume create --name music-vol;
# Create a network for all the containers to run in.
+echo "########## create music-net ##########"
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`
+echo "########## Start Cassandra (music-db) ##########"
+docker run -d --name music-db --network music-net -p "7000:7000" -p "7001:7001" -p "7199:7199" -p "9042:9042" -p "9160:9160" \
+-v $MUSIC_TRIGGER_DIR/$TRIGGER_JAR:/etc/cassandra/triggers/$TRIGGER_JAR \
+${CASS_IMG};
+
CASSA_IP=`docker inspect -f '{{ $network := index .NetworkSettings.Networks "music-net" }}{{ $network.IPAddress}}' music-db`
echo "CASSANDRA_IP=${CASSA_IP}"
${WORKSPACE}/scripts/optf-has/has/wait_for_port.sh ${CASSA_IP} 9042
-sleep 150
+
+# See if cassandra is up.
+echo "########## Running Test to see if Cassandra is up ##########"
+docker run --name music-casstest --network music-net \
+$BUSYBOX_IMG sh -c "until nc -z music-db 9042 && echo "success"; do echo 'No connection .. Sleeping for $TT seconds';sleep $TT; done;"
+
+# Check to see if Keyspaces are there.
+docker exec music-db cqlsh -u cassandra -p cassandra -e "DESCRIBE keyspaces;"
+
+sleep 10;
+
+# Load data into Cassandra via Cassandra Job
+echo "########## Running Cassandra Job (music-job) to load cql files ##########"
+docker run -d --name music-job --network music-net \
+-v $CQL_FILES/admin.cql:/cql/admin.cql \
+-v $CQL_FILES/admin_pw.cql:/cql/admin_pw.cql \
+-v $CQL_FILES/extra:/cql/extra \
+-e PORT=9042 \
+-e CASS_HOSTNAME=music-db \
+-e USERNAME=$CASS_USERNAME \
+-e PASSWORD=$CASS_PASSWORD \
+$CASS_IMG_JOB
+# Logs
+echo "########## Cassandra Job logs ##########"
+docker logs music-job
+
# Start Music war
+echo "########## Start music-war ##########"
docker run -d --name music-war -v music-vol:/app ${MUSIC_IMG};
-sleep 30
+
# Start Zookeeper
+echo "########## Start zookeeper (music-zk) ##########"
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 120
+sleep 10;
# Start Up tomcat - Needs to have properties,logs dir and war file volume mapped.
+echo "########## Start Tomcat (music-tomcat) ##########"
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.
+echo "########## Create Bridge for Tomcat ##########"
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}/scripts/optf-has/has/wait_for_port.sh ${TOMCAT_IP} 8080
-# wait a while to make sure music is totally up and configured
-sleep 90
+sleep 20;
+echo "########## TOMCAT Logs ##########"
+docker logs music-tomcat
+# Needed only if we need to look at localhost logs.
+echo "########## MUSIC localhost Log ##########"
+docker exec music-tomcat /bin/bash -c "cat /usr/local/tomcat/logs/localhost*"
+
+echo "########## MUSIC Log ##########"
+ls -al $MUSIC_LOGS/MUSIC
+docker exec music-tomcat /bin/bash -c "cat /opt/app/music/logs/MUSIC/music.log"
+#echo "########## MUSIC error log ##########"
+#docker exec music-tomcat /bin/bash -c "cat /opt/app/music/logs/MUSIC/error.log"
-echo "inspect docker things for tracing purpose"
+echo "########## inspect docker things for tracing purpose ##########"
docker inspect music-db
docker inspect music-zk
docker inspect music-tomcat
@@ -90,11 +143,20 @@ docker inspect music-war
docker volume inspect music-vol
docker network inspect music-net
-echo "dump music content just after music is started"
+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 'DESCRIBE keyspace admin'
docker exec music-db /usr/bin/cqlsh -unelson24 -pwinman123 -e 'SELECT * FROM admin.keyspace_master'
+#
+# add here all ROBOT_VARIABLES settings
+#
+echo "########## music robot variables settings ##########";
+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/scripts/optf-has/has/music_teardown_script.sh b/scripts/optf-has/has/music_teardown_script.sh
index 605ebd4e..e05ef9d1 100755
--- a/scripts/optf-has/has/music_teardown_script.sh
+++ b/scripts/optf-has/has/music_teardown_script.sh
@@ -14,15 +14,40 @@
# See the License for the specific language governing permissions and
# limitations under the License.
#
-echo "music scripts docker containers killing";
+
+
+#
+# add here below the killing of all docker containers used for music CSIT testing
+#
+echo "dump music.log files"
+ls -alF /tmp/music
+ls -alFR /tmp/music
+ls -alF /tmp/music/properties
+cat /tmp/music/properties/music.properties
+echo "===== MUSIC log =================="
+docker exec music-tomcat /bin/bash -c "cat /opt/app/music/logs/MUSIC/music.log"
+#cat /tmp/music/logs/MUSIC/music.log
+echo "===== MUSIC error log =================="
+docker exec music-tomcat /bin/bash -c "cat /opt/app/music/logs/MUSIC/error.log"
+#cat /tmp/music/logs/MUSIC/error.log
+
+echo "##########################################################";
+echo "#";
+echo "# music scripts docker containers killing";
+echo "#";
+echo "##########################################################";
docker stop music-tomcat
docker stop music-war
docker stop music-zk
+docker stop music-job
+docker stop music-casstest
docker stop music-db
docker rm music-zk
docker rm music-tomcat
docker rm music-war
+docker rm music-job
+docker rm music-casstest
docker rm music-db
docker network rm music-net;
@@ -30,10 +55,9 @@ 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/scripts/optf-has/has/simulator_script.sh b/scripts/optf-has/has/simulator_script.sh
index 42dcd57f..ccb479b2 100755
--- a/scripts/optf-has/has/simulator_script.sh
+++ b/scripts/optf-has/has/simulator_script.sh
@@ -53,7 +53,7 @@ cat ./Dockerfile
docker build -t aaisim .
# run aaisim
-docker run -d --name aaisim -p 8081:8081 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}"
@@ -77,9 +77,32 @@ echo "MULTICLOUDSIM_IP=${MULTICLOUDSIM_IP}"
${WORKSPACE}/scripts/optf-has/has/wait_for_port.sh ${MULTICLOUDSIM_IP} 8082
+# prepare aafsim
+echo "simulator_script: prepare aafsim "
+cd ${WORK_DIR}/has/conductor/conductor/tests/functional/simulators/aafsim/
+
+# check Dockerfile content
+echo "simulator_script: Dockerfile "
+cat ./Dockerfile
+
+# build aafsim
+echo "simulator_script: build docker "
+docker build -t aafsim .
+
+# run aafsim
+echo "simulator_script: run docker "
+docker run -d --name aafsim -p 8100:8100 aafsim
+
+AAFSIM_IP=`docker inspect --format '{{ .NetworkSettings.Networks.bridge.IPAddress}}' aafsim`
+echo "simulator_script: AAFSIM_IP=${AAFSIM_IP}"
+
+#echo "simulator_script: wait_for_port"
+${WORKSPACE}/scripts/optf-has/has/wait_for_port.sh ${AAFSIM_IP} 8100
+
# wait a while before continuing
sleep 2
echo "inspect docker things for tracing purpose"
docker inspect aaisim
docker inspect multicloudsim
+docker inspect aafsim
diff --git a/scripts/optf-has/has/simulator_teardown_script.sh b/scripts/optf-has/has/simulator_teardown_script.sh
index a2edd332..eb29445a 100755
--- a/scripts/optf-has/has/simulator_teardown_script.sh
+++ b/scripts/optf-has/has/simulator_teardown_script.sh
@@ -17,6 +17,8 @@
echo "optf/has scripts docker containers killing";
docker stop aaisim
docker stop multicloudsim
+docker stop aafsim
docker rm aaisim
docker rm multicloudsim
+docker rm aafsim
diff --git a/tests/optf-has/has/optf_has_test.robot b/tests/optf-has/has/optf_has_test.robot
index 3b3ee7a0..8bd313a9 100644
--- a/tests/optf-has/has/optf_has_test.robot
+++ b/tests/optf-has/has/optf_has_test.robot
@@ -5,6 +5,11 @@ Library json
*** Variables ***
${MESSAGE} {"ping": "ok"}
+${BASIC} Basic
+${Music_AUTHVALUE} Y29uZHVjdG9yOmMwbmR1Y3Qwcg==
+${HAS_AUTHVALUE} YWRtaW4xOnBsYW4uMTU=
+${Music_Auth} ${BASIC} ${Music_AUTHVALUE}
+${HAS_Auth} ${BASIC} ${HAS_AUTHVALUE}
${RESP_STATUS} "error"
${RESP_MESSAGE_WRONG_VERSION} "conductor_template_version must be one of: 2016-11-01"
${RESP_MESSAGE_WITHOUT_DEMANDS} Undefined Demand
@@ -54,7 +59,7 @@ Check Music War Docker Container
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
+ &{headers}= Create Dictionary Authorization=${HAS_Auth} 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}
@@ -109,7 +114,7 @@ Check ConductorData Docker Container
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
+ &{headers}= Create Dictionary Authorization=${HAS_Auth} Content-Type=application/json Accept=application/json
${resp}= Get Request optf-cond / headers=${headers}
Log To Console *********************
Log To Console response = ${resp}
@@ -121,7 +126,7 @@ 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
+ &{headers}= Create Dictionary ns=conductor Authorization=${Music_Auth} 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}
@@ -133,7 +138,7 @@ Conductor AddHealthcheck Row Into Music
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
+ &{headers}= Create Dictionary Authorization=${HAS_Auth} 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}
@@ -144,7 +149,7 @@ 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
+ &{headers}= Create Dictionary Authorization=${HAS_Auth} 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}
@@ -159,7 +164,7 @@ SendPlanWithWrongVersion
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
+ &{headers}= Create Dictionary Authorization=${HAS_Auth} 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}
@@ -175,7 +180,7 @@ 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
+ &{headers}= Create Dictionary Authorization=${HAS_Auth} 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}
@@ -190,7 +195,7 @@ SendPlanWithoutDemandSection
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
+ &{headers}= Create Dictionary Authorization=${HAS_Auth} 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}
@@ -206,7 +211,7 @@ 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
+ &{headers}= Create Dictionary Authorization=${HAS_Auth} 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}
@@ -221,7 +226,7 @@ SendPlanWithWrongConstraint
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
+ &{headers}= Create Dictionary Authorization=${HAS_Auth} 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}
@@ -238,7 +243,7 @@ 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
+ &{headers}= Create Dictionary Authorization=${HAS_Auth} 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}
@@ -253,7 +258,7 @@ SendPlanWithLatiAndLongi
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
+ &{headers}= Create Dictionary Authorization=${HAS_Auth} 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}
@@ -269,7 +274,7 @@ 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
+ &{headers}= Create Dictionary Authorization=${HAS_Auth} 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}
@@ -284,7 +289,7 @@ SendPlanWithShortDistanceConstraint
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
+ &{headers}= Create Dictionary Authorization=${HAS_Auth} 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}
@@ -300,7 +305,7 @@ SendPlanWithVimFit
[Documentation] It sends a POST request to conductor
Create Session optf-cond ${COND_HOSTNAME}:${COND_PORT}
${data}= Get Binary File ${CURDIR}${/}data${/}plan_with_vim_fit.json
- &{headers}= Create Dictionary Content-Type=application/json Accept=application/json
+ &{headers}= Create Dictionary Authorization=${HAS_Auth} 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}
@@ -315,7 +320,7 @@ SendPlanWithVimFit
GetPlanWithVimFit
[Documentation] It sends a REST GET request to capture recommendations
Create Session optf-cond ${COND_HOSTNAME}:${COND_PORT}
- &{headers}= Create Dictionary Content-Type=application/json Accept=application/json
+ &{headers}= Create Dictionary Authorization=${HAS_Auth} 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}
@@ -331,7 +336,7 @@ SendPlanWithHpa
[Documentation] It sends a POST request to conductor
Create Session optf-cond ${COND_HOSTNAME}:${COND_PORT}
${data}= Get Binary File ${CURDIR}${/}data${/}plan_with_hpa.json
- &{headers}= Create Dictionary Content-Type=application/json Accept=application/json
+ &{headers}= Create Dictionary Authorization=${HAS_Auth} 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}
@@ -346,7 +351,7 @@ SendPlanWithHpa
GetPlanWithHpa
[Documentation] It sends a REST GET request to capture recommendations
Create Session optf-cond ${COND_HOSTNAME}:${COND_PORT}
- &{headers}= Create Dictionary Content-Type=application/json Accept=application/json
+ &{headers}= Create Dictionary Authorization=${HAS_Auth} 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}
@@ -362,7 +367,7 @@ SendPlanWithHpaSimple
[Documentation] It sends a POST request to conductor
Create Session optf-cond ${COND_HOSTNAME}:${COND_PORT}
${data}= Get Binary File ${CURDIR}${/}data${/}plan_with_hpa_simple.json
- &{headers}= Create Dictionary Content-Type=application/json Accept=application/json
+ &{headers}= Create Dictionary Authorization=${HAS_Auth} 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}
@@ -377,7 +382,7 @@ SendPlanWithHpaSimple
GetPlanWithHpaSimple
[Documentation] It sends a REST GET request to capture recommendations
Create Session optf-cond ${COND_HOSTNAME}:${COND_PORT}
- &{headers}= Create Dictionary Content-Type=application/json Accept=application/json
+ &{headers}= Create Dictionary Authorization=${HAS_Auth} 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}
@@ -393,7 +398,7 @@ SendPlanWithHpaMandatory
[Documentation] It sends a POST request to conductor
Create Session optf-cond ${COND_HOSTNAME}:${COND_PORT}
${data}= Get Binary File ${CURDIR}${/}data${/}plan_with_hpa_requirements_mandatory.json
- &{headers}= Create Dictionary Content-Type=application/json Accept=application/json
+ &{headers}= Create Dictionary Authorization=${HAS_Auth} 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}
@@ -408,7 +413,7 @@ SendPlanWithHpaMandatory
GetPlanWithHpaMandatory
[Documentation] It sends a REST GET request to capture recommendations
Create Session optf-cond ${COND_HOSTNAME}:${COND_PORT}
- &{headers}= Create Dictionary Content-Type=application/json Accept=application/json
+ &{headers}= Create Dictionary Authorization=${HAS_Auth} 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}
@@ -424,7 +429,7 @@ SendPlanWithHpaOptionals
[Documentation] It sends a POST request to conductor
Create Session optf-cond ${COND_HOSTNAME}:${COND_PORT}
${data}= Get Binary File ${CURDIR}${/}data${/}plan_with_hpa_requirements_optionals.json
- &{headers}= Create Dictionary Content-Type=application/json Accept=application/json
+ &{headers}= Create Dictionary Authorization=${HAS_Auth} 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}
@@ -439,7 +444,7 @@ SendPlanWithHpaOptionals
GetPlanWithHpaOptionals
[Documentation] It sends a REST GET request to capture recommendations
Create Session optf-cond ${COND_HOSTNAME}:${COND_PORT}
- &{headers}= Create Dictionary Content-Type=application/json Accept=application/json
+ &{headers}= Create Dictionary Authorization=${HAS_Auth} 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}
@@ -455,7 +460,7 @@ SendPlanWithHpaUnmatched
[Documentation] It sends a POST request to conductor
Create Session optf-cond ${COND_HOSTNAME}:${COND_PORT}
${data}= Get Binary File ${CURDIR}${/}data${/}plan_with_hpa_unmatched.json
- &{headers}= Create Dictionary Content-Type=application/json Accept=application/json
+ &{headers}= Create Dictionary Authorization=${HAS_Auth} 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}
@@ -470,7 +475,7 @@ SendPlanWithHpaUnmatched
GetPlanWithHpaUnmatched
[Documentation] It sends a REST GET request to capture recommendations
Create Session optf-cond ${COND_HOSTNAME}:${COND_PORT}
- &{headers}= Create Dictionary Content-Type=application/json Accept=application/json
+ &{headers}= Create Dictionary Authorization=${HAS_Auth} 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}
@@ -487,7 +492,7 @@ SendPlanWithHpaScoreMultiObj
[Documentation] It sends a POST request to conductor
Create Session optf-cond ${COND_HOSTNAME}:${COND_PORT}
${data}= Get Binary File ${CURDIR}${/}data${/}plan_with_hpa_score_multi_objective.json
- &{headers}= Create Dictionary Content-Type=application/json Accept=application/json
+ &{headers}= Create Dictionary Authorization=${HAS_Auth} 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}
@@ -502,7 +507,7 @@ SendPlanWithHpaScoreMultiObj
GetPlanWithHpaScoreMultiObj
[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
+ &{headers}= Create Dictionary Authorization=${HAS_Auth} 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}