1*** Settings *** 2Documentation This module provides general keywords for dump. 3 4Library bmc_ssh_utils.py 5 6*** Variables *** 7 8*** Keywords *** 9 10Create User Initiated Dump 11 [Documentation] Generate user initiated dump and return 12 ... dump id (e.g 1, 2 etc). 13 14 ${data}= Create Dictionary data=@{EMPTY} 15 ${resp}= OpenBMC Post Request 16 ... ${DUMP_URI}/action/CreateDump data=${data} 17 18 Should Be Equal As Strings ${resp.status_code} ${HTTP_OK} 19 ${json}= To JSON ${resp.content} 20 21 # REST "CreateDump" JSON response. 22 # { 23 # "data": null, 24 # "message": "200 OK", 25 # "status": "ok" 26 # } 27 Run Keyword If ${json["data"]} == ${None} 28 ... Fail Dump id returned null. 29 30 ${dump_id}= Set Variable ${json["data"]} 31 32 Wait Until Keyword Succeeds 3 min 15 sec Check Dump Existence 33 ... ${dump_id} 34 35 [Return] ${dump_id} 36 37 38Verify No Dump In Progress 39 [Documentation] Verify no dump in progress. 40 41 ${dump_progress} ${stderr} ${rc}= BMC Execute Command ls /tmp 42 Should Not Contain ${dump_progress} obmcdump 43 44 45Check Dump Existence 46 [Documentation] Verify if given dump exist. 47 [Arguments] ${dump_id} 48 49 # Description of Argument(s): 50 # dump_id An integer value that identifies a particular dump 51 # object(e.g. 1, 3, 5). 52 53 ${resp}= OpenBMC Get Request ${DUMP_ENTRY_URI}/${dump_id} 54 Should Be Equal As Strings ${resp.status_code} ${HTTP_OK} 55 56 57Delete BMC Dump 58 [Documentation] Deletes a given bmc dump. 59 [Arguments] ${dump_id} 60 61 # Description of Argument(s): 62 # dump_id An integer value that identifies a particular dump (e.g. 1, 3). 63 64 ${data}= Create Dictionary data=@{EMPTY} 65 ${resp}= OpenBMC Post Request 66 ... ${DUMP_ENTRY_URI}/${dump_id}/action/Delete data=${data} 67 68 Should Be Equal As Strings ${resp.status_code} ${HTTP_OK} 69 70Delete All Dumps 71 [Documentation] Delete all dumps. 72 73 # Check if dump entries exist, if not return. 74 ${resp}= OpenBMC Get Request ${DUMP_ENTRY_URI}list quiet=${1} 75 Return From Keyword If ${resp.status_code} == ${HTTP_NOT_FOUND} 76 77 # Get the list of dump entries and delete them all. 78 ${dump_entries}= Get URL List ${DUMP_ENTRY_URI} 79 :FOR ${entry} IN @{dump_entries} 80 \ ${dump_id}= Fetch From Right ${entry} / 81 \ Delete BMC Dump ${dump_id} 82 83 84Delete All BMC Dump 85 [Documentation] Delete all BMC dump entries using "DeleteAll" interface. 86 87 ${data}= Create Dictionary data=@{EMPTY} 88 ${resp}= Openbmc Post Request ${DUMP_URI}action/DeleteAll data=${data} 89 Should Be Equal As Strings ${resp.status_code} ${HTTP_OK} 90 91Dump Should Not Exist 92 [Documentation] Verify that BMC dumps do not exist. 93 94 ${resp}= OpenBMC Get Request ${DUMP_ENTRY_URI}/list quiet=${1} 95 Should Be Equal As Strings ${resp.status_code} ${HTTP_NOT_FOUND} 96 97Check Existence of BMC Dump file 98 [Documentation] Verify existence of BMC dump file. 99 [Arguments] ${dump_id} 100 101 # Description of argument(s): 102 # dump_id BMC dump identifier 103 104 ${dump_check_cmd}= Set Variable 105 ... ls /var/lib/phosphor-debug-collector/dumps 106 107 # Output of sample BMC Execute command with '2' as dump id is as follows 108 # ls /var/lib/phosphor-debug-collector/dumps/2 109 # obmcdump_2_XXXXXXXXXX.tar.xz 110 ${file_there} ${stderr} ${rc}= BMC Execute Command 111 ... ${dump_check_cmd}/${dump_id} 112 Should End With ${file_there} tar.xz msg=BMC dump file not found. 113 114Get Dump Entries 115 [Documentation] Return dump entries list. 116 117 ${dump_entries}= Get URL List ${DUMP_ENTRY_URI} 118 [Return] ${dump_entries} 119 120 121Trigger Core Dump 122 [Documentation] Trigger core dump. 123 124 # Find the pid of the active ipmid and kill it. 125 ${cmd_buf}= Catenate kill -s SEGV $(ps | egrep ' ipmid$' | 126 ... egrep -v grep | \ cut -c1-6) 127 128 ${cmd_output} ${stderr} ${rc}= BMC Execute Command ${cmd_buf} 129 Should Be Empty ${stderr} msg=BMC execute command error. 130 Should Be Equal As Integers ${rc} ${0} 131 ... msg=BMC execute command return code is not zero. 132