Create VPD tool utility file

Changes:
Move the vpd-tool specific keywords to independent
resource file.

Tested:
Executed test_vpd_tool.robot on BMC environment.

Change-Id: Icc578f80c4de171339cb37e606daff334d1c8a21
Signed-off-by: Sridevi Ramesh <sridevra@in.ibm.com>
diff --git a/openpower/vpd/test_vpd_tool.robot b/openpower/vpd/test_vpd_tool.robot
index 862cbb7..e9467df 100644
--- a/openpower/vpd/test_vpd_tool.robot
+++ b/openpower/vpd/test_vpd_tool.robot
@@ -3,21 +3,18 @@
 
 Library         ../../lib/vpd_utils.py
 Variables       ../../data/vpd_variables.py
+
 Resource        ../../lib/openbmc_ffdc.robot
 Resource        ../../lib/boot_utils.robot
+Resource        ../../lib/vpd_tool_resource.robot
 
 Test Teardown   FFDC On Test Case Fail
 
-Test Tags      VPD_Tool
+Test Tags       VPD_Tool
 
 *** Variables ***
 
 ${CMD_GET_PROPERTY_INVENTORY}  busctl get-property xyz.openbmc_project.Inventory.Manager
-${DR_WRITE_VALUE}              XYZ Component
-${PN_WRITE_VALUE}              XYZ1234
-${SN_WRITE_VALUE}              ABCD12345678
-@{fields}                      PN  SN  LocationCode
-@{vpd_fields}                  PN  SN
 
 *** Test Cases ***
 
@@ -74,172 +71,3 @@
         ${field}=  Evaluate  random.choice($vpd_fields)  random
         Verify VPD Field Write Operation  ${component}  ${field}
     END
-
-
-*** Keywords ***
-
-Verify VPD Component Read Operation
-    [Documentation]  Verify reading VPD details of given component via vpdtool.
-    [Arguments]  ${component}
-    # Description of arguments:
-    # component       VDP component (e.g. /system/chassis/motherboard/vdd_vrm1).
-
-    ${vpd_records}=  Vpdtool  -o -O ${component}
-
-    # Example output from 'Vpdtool  -o -O /system/chassis/motherboard/vdd_vrm1':
-    #  [/system/chassis/motherboard/vdd_vrm1]:
-    #    [DR]:                                         CPU POWER CARD
-    #    [type]:                                       xyz.openbmc_project.Inventory.Item.Vrm
-    #    [CC]:                                         E123
-    #    [FN]:                                         F123456
-    #    [LocationCode]:                               ABCD.XY1.1234567-P0
-    #    [SN]:                                         YL2E32010000
-    #    [PN]:                                         PN12345
-
-    ${vpdtool_res}=  Set To Dictionary  ${vpd_records}[${component}]
-    FOR  ${vpd_field}  IN  @{fields}
-        ${match_key_exists}=  Run Keyword And Return Status
-        ...  Dictionary Should Contain Key  ${vpdtool_res}  ${vpd_field}
-          IF  '${match_key_exists}' == 'True'
-              #  drive components busctl field response in ascii due to that checking only locationcode.
-              IF  'drive' in '${component}'
-                  ${vpd_field}=  Set Variable  LocationCode
-              END
-              # Skip check if VPD field is empty.
-              IF  '${vpd_records['${component}']['${vpd_field}']}' == ''  CONTINUE
-
-              # Get VPD field values via busctl.
-              ${busctl_field}=  Set Variable If
-              ...  '${vpd_field}' == 'LocationCode'  com.ibm.ipzvpd.Location LocationCode
-              ...  '${vpd_field}' == 'PN'  xyz.openbmc_project.Inventory.Decorator.Asset PartNumber
-              ...  '${vpd_field}' == 'SN'  xyz.openbmc_project.Inventory.Decorator.Asset SerialNumber
-              ${cmd}=  Catenate  ${CMD_GET_PROPERTY_INVENTORY}
-              ...  /xyz/openbmc_project/inventory${component} ${busctl_field}
-              ${cmd_output}=  BMC Execute Command  ${cmd}
-              # Check whether the vpdtool response and busctl response matching.
-              Valid Value  vpd_records['${component}']['${vpd_field}']
-              ...  ['${cmd_output[0].split('"')[1].strip('"')}']
-          ELSE
-             CONTINUE
-          END
-    END
-
-
-Verify VPD Field Read Operation
-    [Documentation]  Verify reading all VPD fields for given component via vpdtool.
-    [Arguments]  ${component}
-    # Description of arguments:
-    # component       VDP component (e.g. /system/chassis/motherboard/vdd_vrm1).
-
-    ${vpd_records}=  Vpdtool  -o -O ${component}
-    ${vpdtool_res}=  Set To Dictionary  ${vpd_records}[${component}]
-    FOR  ${field}  IN  @{vpd_fields}
-         ${match_key_exists}=  Run Keyword And Return Status
-         ...  Dictionary Should Contain Key  ${vpdtool_res}  ${field}
-         IF  '${match_key_exists}' == 'True'
-             ${vpd_records}=  Vpdtool  -r -O ${component} -R VINI -K ${field}
-             # Skip check if field value is empty.
-             IF  '${vpd_records['${component}']['${field}']}' == ''  CONTINUE
-
-             ${busctl_field}=  Set Variable If
-             ...  '${field}' == 'PN'  xyz.openbmc_project.Inventory.Decorator.Asset PartNumber
-             ...  '${field}' == 'SN'  xyz.openbmc_project.Inventory.Decorator.Asset SerialNumber
-             ${cmd}=  Catenate  ${CMD_GET_PROPERTY_INVENTORY}
-             ...  /xyz/openbmc_project/inventory${component} ${busctl_field}
-             ${cmd_output}=  BMC Execute Command  ${cmd}
-
-             # Check vpdtool response and busctl response for the component field.
-             Valid Value  vpd_records['${component}']['${field}']
-             ...  ['${cmd_output[0].split('"')[1].strip('"')}']
-         ELSE
-            CONTINUE
-         END
-    END
-
-
-Verify VPD Field Write Operation
-    [Documentation]  Verify writing VPD fields for given component via vpdtool.
-    [Arguments]  ${component}  ${field}
-    [Teardown]  Restore VPD Value  ${component}  ${field}  ${old_field_value}
-
-    # Description of arguments:
-    # component       VPD component (e.g. /system/chassis/motherboard/vdd_vrm1).
-    # field           VPD component field (e.g. PN, SN)
-
-    ${vpd_records}=  Vpdtool  -r -O ${component} -R VINI -K ${field}
-    Set Test Variable  ${old_field_value}  ${vpd_records['${component}']['${field}']}
-
-    ${write_value}=  Set Variable If
-    ...  '${field}' == 'DR'  ${DR_WRITE_VALUE}
-    ...  '${field}' == 'PN'  ${PN_WRITE_VALUE}
-    ...  '${field}' == 'SN'  ${SN_WRITE_VALUE}
-
-    Vpdtool  -w -O ${component} -R VINI -K ${field} --value ${write_value}
-
-    Verify VPD Field Value  ${component}  ${field}
-
-
-Restore VPD Value
-    [Documentation]  Restore VPD's field value of given component.
-    [Arguments]  ${component}  ${field}  ${value}
-    # Description of arguments:
-    # component       VPD component (e.g. /system/chassis/motherboard/vdd_vrm1).
-    # field           VPD component field (e.g. PN, SN)
-    # value           VPD value to be restore.
-
-    Vpdtool  -w -O ${component} -R VINI -K ${field} --value ${value}
-
-
-Verify VPD Field Value
-    [Documentation]  Verify VPD field value via vpdtool.
-    [Arguments]  ${component}  ${field}
-    # Description of arguments:
-    # component       VDP component (e.g. /system/chassis/motherboard/vdd_vrm1).
-    # field           VPD field (e.g. DR, SN, PN)
-
-    Redfish OBMC Reboot (off)  stack_mode=normal
-    ${vpd_records}=  Vpdtool  -r -O ${component} -R VINI -K ${field}
-
-    ${busctl_field}=  Set Variable If
-    ...  '${field}' == 'DR'  xyz.openbmc_project.Inventory.Item PrettyName
-    ...  '${field}' == 'PN'  xyz.openbmc_project.Inventory.Decorator.Asset PartNumber
-    ...  '${field}' == 'SN'  xyz.openbmc_project.Inventory.Decorator.Asset SerialNumber
-
-    ${cmd}=  Catenate  ${CMD_GET_PROPERTY_INVENTORY} /xyz/openbmc_project/inventory${component}
-    ...  ${busctl_field}
-    ${cmd_output}=  BMC Execute Command  ${cmd}
-
-    Valid Value  vpd_records['${component}']['${field}']  ['${cmd_output[0].split('"')[1].strip('"')}']
-
-
-Verify VPD Data Via Vpdtool
-    [Documentation]  Get VPD details of given component via vpdtool and verify it
-    ...              using busctl command.
-    [Arguments]  ${component}  ${field}
-    # Description of arguments:
-    # component       VPD component (e.g. System,Chassis etc).
-    # field           VPD field (e.g. Serialnumber,LocationCode etc).
-
-    ${component_url}=  Set Variable If
-    ...  '${component}' == 'System'  /system
-
-    # Get VPD details of given component via vpd-tool.
-    ${vpd_records}=  Vpdtool  -o -O ${component_url}
-
-    # Get VPD details of given component via busctl command.
-    ${busctl_field}=  Set Variable If
-    ...  '${field}' == 'LocationCode'  com.ibm.ipzvpd.Location LocationCode
-    ...  '${field}' == 'Model'  xyz.openbmc_project.Inventory.Decorator.Asset Model
-    ...  '${field}' == 'SerialNumber'  xyz.openbmc_project.Inventory.Decorator.Asset SerialNumber
-
-    ${cmd}=  Catenate  ${CMD_GET_PROPERTY_INVENTORY} /xyz/openbmc_project/inventory/system
-    ...  ${busctl_field}
-    ${cmd_output}=  BMC Execute Command  ${cmd}
-    # Example of cmd_output:
-    #   [0]:                                            s "ABCD.XY1.1234567-P0"
-    #   [1]:
-    #   [2]:                                            0
-
-    # Cross check vpdtool output with busctl response.
-    Should Be Equal As Strings  ${vpd_records["/system"]["${field}"]}
-    ...  ${cmd_output[0].split('"')[1].strip('"')}