docs: def set_bootdev(self,
                      bootdev,
                      persist=False,
                      uefiboot=False):
          """Set boot device to use on next reboot (helper)
  
          :param bootdev:
                          *network -- Request network boot
                          *hd -- Boot from hard drive
                          *safe -- Boot from hard drive, requesting 'safe mode'
                          *optical -- boot from CD/DVD/BD drive
                          *setup -- Boot into setup utility
                          *default -- remove any IPMI directed boot device
                                      request
          :param persist: If true, ask that system firmware use this device
                          beyond next boot.  Be aware many systems do not honor
                          this
          :param uefiboot: If true, request UEFI boot explicitly.  Strictly
                           speaking, the spec sugests that if not set, the system
                           should BIOS boot and offers no "don't care" option.
                           In practice, this flag not being set does not preclude
                           UEFI boot on any system I've encountered.
          :raises: IpmiException on an error.
          :returns: dict or True -- If callback is not provided, the response
          """
          if bootdev not in boot_devices:
              return {'error': "Unknown bootdevice %s requested" % bootdev}
          bootdevnum = boot_devices[bootdev]
          # first, we disable timer by way of set system boot options,
          # then move on to set chassis capabilities
          # Set System Boot Options is netfn=0, command=8, data
          response = self.raw_command(netfn=0, command=8, data=(3, 8))
          if 'error' in response:
              raise exc.IpmiException(response['error'])
          bootflags = 0x80
          if uefiboot:
              bootflags |= 1 << 5
          if persist:
              bootflags |= 1 << 6
          if bootdevnum == 0:
              bootflags = 0
          data = (5, bootflags, bootdevnum, 0, 0, 0)
          response = self.raw_command(netfn=0, command=8, data=data)
          if 'error' in response:
              raise exc.IpmiException(response['error'])
          return {'bootdev': bootdev}