OOF HAS CSIT with MUSIC v3 integration 58/69958/2
authorDileep Ranganathan <dileep.ranganathan@intel.com>
Sat, 6 Oct 2018 23:35:11 +0000 (16:35 -0700)
committerDileep Ranganathan <dileep.ranganathan@intel.com>
Mon, 8 Oct 2018 18:13:45 +0000 (18:13 +0000)
Updated HAS setup and teardown scripts
Added MUSIC v3 support, AAF support, Basic Authorization for MUSIC.
Used AAF_RootCA for A&AI simulator.
Sync conductor.conf based on generated latest conf.

Change-Id: Id1a6c8a4e524a6ade5b60277a6cb538724902d11
Issue-ID: OPTFRA-366
Signed-off-by: Dileep Ranganathan <dileep.ranganathan@intel.com>
scripts/optf-has/has/has-properties/AAF_RootCA.cer [new file with mode: 0644]
scripts/optf-has/has/has-properties/cert.cer [deleted file]
scripts/optf-has/has/has-properties/cert.key [deleted file]
scripts/optf-has/has/has-properties/cert.pem [deleted file]
scripts/optf-has/has/has-properties/conductor.conf.onap
scripts/optf-has/has/has_script.sh
scripts/optf-has/has/music_script.sh
scripts/optf-has/has/music_teardown_script.sh
scripts/optf-has/has/simulator_script.sh
scripts/optf-has/has/simulator_teardown_script.sh
tests/optf-has/has/optf_has_test.robot

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 (file)
index 0000000..e9a50d7
--- /dev/null
@@ -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 (file)
index 67bb130..0000000
+++ /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 (file)
index b8a957f..0000000
+++ /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 (file)
index 5ecf382..0000000
+++ /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-----
index 2c5b8d6..c000248 100644 (file)
@@ -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
index 24ecc06..7f77dbb 100755 (executable)
@@ -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
index 811a39c..2a4f178 100755 (executable)
@@ -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}
+
 
 
index 605ebd4..e05ef9d 100755 (executable)
 # 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
+
+
+
+
 
index 42dcd57..ccb479b 100755 (executable)
@@ -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
index a2edd33..eb29445 100755 (executable)
@@ -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
index 3b3ee7a..8bd313a 100644 (file)
@@ -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}