Fix for redfishtool certificate, snmp and session management

Changes:
  - Set cert_id as test variable
  - Remove colon in snmp destination when the snmp port is empty
  - Fix redfish_delete_sessions assign location
  - Set REDFISH_DELETE_SESSIONS to 0 in suite setup
  - Set REDFISH_DELETE_SESSIONS back to 1 in suite teardown

Tested:
  - redfish/service_root/test_sessions_management.robot
  - redfish/dmtf_tools/test_redfishtool_certificate.robot
  - redfish/events/test_bmc_snmp_trap.robot

Change-Id: Ibb16d52b5874484f8cf169456e2feb4ba7593e71
Signed-off-by: Wilson Suen <wilsons@supermicro.com>
diff --git a/lib/bmc_redfish_utils.robot b/lib/bmc_redfish_utils.robot
index 6cb7526..fbac104 100644
--- a/lib/bmc_redfish_utils.robot
+++ b/lib/bmc_redfish_utils.robot
@@ -64,6 +64,16 @@
     Redfish.Post  ${target}  valid_status_codes=[${HTTP_OK}]
 
 
+Set Redfish Delete Session Flag
+    [Documentation]  Disable or enable delete redfish while performing the power operation keyword.
+    [Arguments]  ${set_flag}
+
+    # Description of argument(s):
+    # set_flag    Set user specified enable(1) or disable(0).
+
+    Set Suite Variable  ${REDFISH_DELETE_SESSIONS}  ${set_flag}
+
+
 Redfish Delete Session
     [Documentation]  Redfish delete session.
     [Arguments]  ${session_info}
diff --git a/lib/obmc_boot_test.py b/lib/obmc_boot_test.py
index 8e0c17e..5b3d7de 100755
--- a/lib/obmc_boot_test.py
+++ b/lib/obmc_boot_test.py
@@ -1077,6 +1077,11 @@
     global boot_success
     global boot_end_time
 
+    # The flag can be enabled or disabled on the go
+    redfish_delete_sessions = int(
+        BuiltIn().get_variable_value("${REDFISH_DELETE_SESSIONS}", default=1)
+    )
+
     gp.qprintn()
 
     next_boot = select_boot()
diff --git a/lib/snmp/redfish_snmp_utils.robot b/lib/snmp/redfish_snmp_utils.robot
index 109a971..57424aa 100644
--- a/lib/snmp/redfish_snmp_utils.robot
+++ b/lib/snmp/redfish_snmp_utils.robot
@@ -72,7 +72,8 @@
     # snmp_port  SNMP manager port
     # valid_status_code  expected code
 
-    ${snmp_mgr_data}=  Create Dictionary  Destination=snmp://${snmp_mgr_ip}:${snmp_port}
+    ${colon}=  Set Variable If  '${snmp_port}' == '${EMPTY}'  ${EMPTY}  :
+    ${snmp_mgr_data}=  Create Dictionary  Destination=snmp://${snmp_mgr_ip}${colon}${snmp_port}
     ...  SubscriptionType=${snmp_function}  Protocol=${snmp_version}
 
     Redfish.Post  ${subscription_uri}  body=&{snmp_mgr_data}