sethmlarson / virtualbox-python

Complete implementation of VirtualBox's COM API with a Pythonic interface.
https://pypi.org/project/virtualbox
Apache License 2.0
354 stars 75 forks source link

VirtualBox 5.2.0 Beta #88

Closed sethmlarson closed 6 years ago

sethmlarson commented 7 years ago

VirtualBox just announced the 5.2.0 Beta release. Will need to take a look to see if there are any changes to the API that we can implement before the beta release becomes finalized.

mjdorma commented 7 years ago

Quick test to build library.py against latest master VirtualBox.xidl (python build.py --build-against-master --force-download) broke build.py's output of library.py ...

Added forked issue to #89

mjdorma commented 7 years ago

An exciting new interface has been added to the main VirtualBox interface:

class IVirtualBox(Interface):

   ...

    def create_unattended_installer(self):
        """Creates a new :py:class:`IUnattended`  guest installation object.  This can be used to
        analyze an installation ISO to create and configure a new machine for it to be installed
        on.  It can also be used to (re)install an existing machine.

        return unattended of type :class:`IUnattended`
            New unattended object.

        """

class IUnattended(Interface):
    """
    The IUnattended interface represents the pipeline for preparing
    the Guest OS for fully automated install.

    The typical workflow is:

    Call :py:func:`IVirtualBox.create_unattended_installer`  to create the object
    Set :py:func:`IUnattended.iso_path`  and call :py:func:`IUnattended.detect_iso_os` 
    Create, configure and register a machine according to :py:func:`IUnattended.detected_os_type_id` 
    and the other detectedOS* attributes.
    Set :py:func:`IUnattended.machine`  to the new IMachine instance.
    Set the other IUnattended attributes as desired.
    Call :py:func:`IUnattended.prepare`  for the object to check the
    attribute values and create an internal installer instance.
    Call :py:func:`IUnattended.construct_media`  to create additional
    media files (ISO/floppy) needed.
    Call :py:func:`IUnattended.reconfigure_vm`  to reconfigure the VM
    with the installation ISO, additional media files and whatnot
    Optionally call :py:func:`IUnattended.done`  to destroy the internal
    installer and allow restarting from the second step.

    Note! Steps one is currently not implemented.
    """
mjdorma commented 7 years ago

A new property has been included under the HostNetworkInterface:

    @property
    def wireless(self):
        """Get bool value for 'wireless'
        Specifies whether the interface is wireless.
        """ 
mjdorma commented 7 years ago

I haven't spun up a beta virtualbox to test (yet). To test the bleeding edge it is possible to ask the builder to download and build against the virtualbox master VirtualBox.xidl file.

python build.py --build-against-master --force-download

Note: build.py does not yet support py3 (and it only just got some new updates in #89 resolution which allow it to work under win10).

sethmlarson commented 7 years ago

This is great news!!! I'm especially excited for the IUnattended interface. Perhaps we can have an beta release of pyvbox 1.3.0? (1.3.0b1?) and upload to PyPI? I'm pretty sure that anything that has a beta semver won't be downloaded unless you specifically request it? Correct me if I'm wrong.

sethmlarson commented 7 years ago

Also we should work on getting build.py to support Python 3.x. That would be pretty nice :D Maybe also setup a build for running it against the latest virtualbox.xidl?

mjdorma commented 7 years ago

Sounds like a good plan. I'll create a branch with a beta library build.

sethmlarson commented 7 years ago

I went ahead and made build.py compatible with Python 3.x. Tested it using 3.5 and it seems to work.