code: def temporary_eject_device(self, name, controller_port, device, temporary_eject):
          
          if not isinstance(name, basestring):
              raise TypeError("name can only be an instance of type basestring")
          if not isinstance(controller_port, baseinteger):
              raise TypeError("controller_port can only be an instance of type baseinteger")
          if not isinstance(device, baseinteger):
              raise TypeError("device can only be an instance of type baseinteger")
          if not isinstance(temporary_eject, bool):
              raise TypeError("temporary_eject can only be an instance of type bool")
          self._call("temporaryEjectDevice",
                       in_p=[name, controller_port, device, temporary_eject])
docs: Sets the behavior for guest-triggered medium eject. In some situations
          it is desirable that such ejects update the VM configuration, and in
          others the eject should keep the VM configuration. The device must
          already exist; see :py:func:`IMachine.attach_device`  for how to
          attach a new device.
          
          The @a controllerPort and @a device parameters specify the device slot and
          have have the same meaning as with :py:func:`IMachine.attach_device` .
  
          in name of type str
              Name of the storage controller.
  
          in controller_port of type int
              Storage controller port.
  
          in device of type int
              Device slot in the given port.
  
          in temporary_eject of type bool
              New value for the eject behavior.
  
          raises :class:`OleErrorInvalidarg`
              SATA device, SATA port, IDE port or IDE slot out of range.
          
          raises :class:`VBoxErrorInvalidObjectState`
              Attempt to modify an unregistered virtual machine.
          
          raises :class:`VBoxErrorInvalidVmState`
              Invalid machine state.