*** Settings *** Library SSHLibrary Library Process Library String Resource linux_services.resource *** Variables *** ${Rascsi_Host} rascsi.local ${Rascsi_Username} pi ${Rascsi_Password} raspberry *** Keywords *** Open Connection to Rascsi and Log In Open Connection ${Rascsi_Host} Login ${Rascsi_Username} ${Rascsi_Password} Create Blank Rascsi Drive Image of Size ${drive_size} megabytes named ${file_name} [Documentation] Creates an empty drive image on the Rascsi host of the specified size and file name Execute Command dd if=/dev/zero of=/home/pi/images/${file_name} bs=1M count=${drive_size} Delete drive image ${file_name} [Documentation] Delete a disk drive image that was created on the raspberry pi Remove File /home/pi/images/${file_name} Delete all RaSCSI drive images [Documentation] Delete all of the temporary drive images that were created on the RaSCSI host Remove File /home/pi/images/tmp_* Drive image ${drive_image_file} is attached as SCSI ID ${scsi_id} [Documentation] Attaches an existing drive image to the RaSCSI ${rasctl_output}= Execute Command rasctl -i ${scsi_id} -c attach -f /home/pi/images/${drive_image_file} log ${rasctl_output} ${rasctl_output}= Execute Command rasctl -l log ${rasctl_output} Rescan SCSI Bus CD-ROM drive is attached as SCSI ID ${scsi_id} [Documentation] Attaches a CD-ROM device (without any media) to the RaSCSI ${rasctl_output}= Execute Command rasctl -i ${scsi_id} -c attach -t cd log ${rasctl_output} ${rasctl_output}= Execute Command rasctl -l log ${rasctl_output} Rescan SCSI Bus Magneto Optical drive is attached as SCSI ID ${scsi_id} [Documentation] Attaches a Magneto Optical device (without any media) to the RaSCSI Execute Command rasctl -i ${scsi_id} -c attach -t mo ${rasctl_output}= Execute Command rasctl -l log ${rasctl_output} Rescan SCSI Bus Detach all RaSCSI SCSI Devices [Documentation] Send detach commands for all of the SCSI IDs to make sure that there ... aren't any left over before/after a test FOR ${scsi_id} IN RANGE 0 7 Detach RaSCSI SCSI ID ${scsi_id} END Detach RaSCSI SCSI ID ${scsi_id:\d+} [Documentation] Detaches the specified SCSI ID from Rascsi Execute Command rasctl -c detach -i ${scsi_id} Rasctl reports SCSI ID ${scsi_id} of type ${type:CD|MO|HD} [Documentation] Executes rasctl and verifies that the drive is configured as the specified type ${rasctl_output}= Execute Command rasctl -l log ${rasctl_output} Should Contain ${rasctl_output} |${SPACE*2}${scsi_id}${SPACE}|${SPACE*2}0${SPACE}|${SPACE}SC${type}${SPACE}| # Create a ${iso_size} megabyte ISO named ${image_name} with random data # [Documentation] Creates a file on the RaSCSI with random data (from /dev/urandom), # ... then creates an ISO image with that data # Execute Command mkdir /tmp/new_iso # Execute Command dd if=/dev/urandom of=/tmp/new_iso/data.dat bs=1M count=${iso_size} # Execute Command genisoimage -o /home/pi/images/${image_name} /tmp/new_iso/ Insert Removable Media ${image} into SCSI ID ${scsi_id} Execute Command rasctl -c insert -i ${scsi_id} -f /home/pi/images/${image} ${result}= Execute Command rasctl -l Log ${result} Removable media ${image} is inserted into SCSI ID ${scsi_id:/d+} [Documentation] Inserts the sepecified image name into the removable media drive Execute Command rasctl -c insert -i ${scsi_id} -f /home/pi/images/${image} # Insert removable media ${image_name} into SCSI ID ${scsi_id:/d+} # [Documentation] Inserts the sepecified image name into the removable media drive # Execute Command rasctl -c insert -i ${scsi_id} -f /home/pi/images/${image_name} Eject removable media from SCSI ID ${scsi_id:/d+} [Documentation] Inserts the sepecified image name into the removable media drive Execute Command rasctl -c eject -i ${scsi_id} Checksum of Random Data File from RaSCSI [Documentation] Calcualte the SHA signature of the random data that was generated ... on the RaSCSI host ${sha_output}= Execute Command sha512sum /tmp/new_iso/data.dat | cut -f 1 Log Checksum of the file was ${sha_output} [Return] ${sha_output} Get checksum of RaSCSI Image ${image_name} [Documentation] Calculate the checksum of the disk image on the RaSCSI host ${checksum}= Execute Command md5sum /home/pi/images/${image_name} | cut -f 1 --delimiter=" " [Return] ${checksum} Get Size of RaSCSI Image ${image_name} in bytes [Documentation] Return the size of the specified disk image in bytes ${size_output}= Execute Command du -b /home/pi/images/${image_name} | cut -f 1 [Return] ${size_output} Get checksum of ${filename} from ISO ${image_name} on the RaSCSI Host [Documentation] Extracts the specified file from the ISO, calculates the checksum ... then returns that value ${temp_dirname}= Generate Random String 10 [LETTERS] Execute Command mkdir /tmp/${temp_dirname} sudo=True sudo_password=${Rascsi_Password} Execute Command mount /home/pi/images/${image_name} /tmp/${temp_dirname} sudo=True sudo_password=${Rascsi_Password} ${checksum}= Execute Command md5sum /tmp/${temp_dirname}/${filename} | cut -f 1 --delimiter=" " Execute Command umount /tmp/${temp_dirname} sudo=True sudo_password=${Rascsi_Password} Execute Command rm -rf /tmp/${temp_dirname} sudo=True sudo_password=${Rascsi_Password} [Return] ${checksum}