VirtualBox

Ignore:
Timestamp:
Feb 3, 2009 9:20:36 PM (16 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
42399
Message:

OVF: VBoxManage import implementation (to be continued), back-end fixes, documentation updates

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/Frontends/VBoxManage/VBoxManageImport.cpp

    r16491 r16495  
    2525*   Header Files                                                               *
    2626*******************************************************************************/
     27#ifndef VBOX_ONLY_DOCS
     28#include <VBox/com/com.h>
     29#include <VBox/com/string.h>
     30#include <VBox/com/Guid.h>
     31#include <VBox/com/array.h>
     32#include <VBox/com/ErrorInfo.h>
     33#include <VBox/com/EventQueue.h>
     34
     35#include <VBox/com/VirtualBox.h>
     36
     37#include <list>
     38#endif /* !VBOX_ONLY_DOCS */
     39
     40#include <iprt/stream.h>
     41
     42#include <VBox/log.h>
     43
    2744#include "VBoxManage.h"
    2845using namespace com;
     
    3148// funcs
    3249///////////////////////////////////////////////////////////////////////////////
    33 
    34 
    3550
    3651int handleImportAppliance(HandlerArg *a)
     
    3853    HRESULT rc = S_OK;
    3954
     55    Utf8Str strOvfFilename;
     56
     57    for (int i = 0; i < a->argc; i++)
     58    {
     59        if (!strOvfFilename)
     60            strOvfFilename = a->argv[i];
     61        else
     62            return errorSyntax(USAGE_IMPORTAPPLIANCE, "Too many arguments for \"import\" command.");
     63    }
     64
     65    if (!strOvfFilename)
     66        return errorSyntax(USAGE_IMPORTAPPLIANCE, "Not enough arguments for \"import\" command.");
     67
     68    do
     69    {
     70        Bstr bstrOvfFilename(strOvfFilename);
     71        ComPtr<IAppliance> appliance;
     72        CHECK_ERROR_BREAK(a->virtualBox, OpenAppliance(bstrOvfFilename, appliance.asOutParam()));
     73
     74        RTPrintf("Interpreting...\n");
     75        CHECK_ERROR_BREAK(appliance, Interpret());
     76        RTPrintf("OK.\n");
     77
     78        // fetch all disks
     79        com::SafeArray<BSTR> retDisks;
     80        CHECK_ERROR_BREAK(appliance,
     81                          COMGETTER(Disks)(ComSafeArrayAsOutParam(retDisks)));
     82        if (retDisks.size() > 0)
     83        {
     84            RTPrintf("Disks:");
     85            for (unsigned i = 0; i < retDisks.size(); i++)
     86                RTPrintf("  %ls", retDisks[i]);
     87            RTPrintf("\n");
     88        }
     89
     90        // fetch virtual system descriptions
     91        com::SafeIfaceArray<IVirtualSystemDescription> aVirtualSystemDescriptions;
     92        CHECK_ERROR_BREAK(appliance,
     93                          COMGETTER(VirtualSystemDescriptions)(ComSafeArrayAsOutParam(aVirtualSystemDescriptions)));
     94        if (aVirtualSystemDescriptions.size() > 0)
     95        {
     96            for (unsigned i = 0; i < aVirtualSystemDescriptions.size(); ++i)
     97            {
     98                com::SafeArray<VirtualSystemDescriptionType_T> retTypes;
     99                com::SafeArray<ULONG> aRefs;
     100                com::SafeArray<BSTR> aOrigValues;
     101                com::SafeArray<BSTR> aConfigValues;
     102                com::SafeArray<BSTR> aExtraConfigValues;
     103                CHECK_ERROR_BREAK(aVirtualSystemDescriptions[i],
     104                                  GetDescription(ComSafeArrayAsOutParam(retTypes),
     105                                                 ComSafeArrayAsOutParam(aRefs),
     106                                                 ComSafeArrayAsOutParam(aOrigValues),
     107                                                 ComSafeArrayAsOutParam(aConfigValues),
     108                                                 ComSafeArrayAsOutParam(aExtraConfigValues)));
     109
     110                RTPrintf("Virtual system %i:\n", i);
     111                for (unsigned a = 0; a < retTypes.size(); ++a)
     112                {
     113                    VirtualSystemDescriptionType_T t = retTypes[a];
     114
     115                    Bstr bstrVMname;
     116                    Bstr bstrOstype;
     117                    uint32_t ulMemMB;
     118                    bool fUSB = false;
     119
     120                    switch (t)
     121                    {
     122                        case VirtualSystemDescriptionType_Name:
     123                            bstrVMname = aConfigValues[a];
     124                            RTPrintf("%2d: Suggested VM name \"%ls\""
     125                                     "\n    (change with \"-vsys %d -vmname <name>\")\n",
     126                                     a, bstrVMname.raw(), i);
     127                        break;
     128
     129                        case VirtualSystemDescriptionType_OS:
     130                            bstrOstype = aConfigValues[a];
     131                            RTPrintf("%2d: Suggested OS type: \"%ls\""
     132                                     "\n    (change with \"-vsys %d -ostype <type>\"; use \"list ostypes\" to list all)\n",
     133                                     a, bstrOstype.raw(), i);
     134                        break;
     135
     136                        case VirtualSystemDescriptionType_CPU:
     137                            RTPrintf("%2d: Number of CPUs (ignored): %ls\n",
     138                                     a, aConfigValues[a]);
     139                        break;
     140
     141                        case VirtualSystemDescriptionType_Memory:
     142                            Utf8Str(Bstr(aConfigValues[a])).toInt(ulMemMB);
     143                            ulMemMB /= 1024 * 1024;
     144                            RTPrintf("%2d: Guest memory: %u MB\n    (change with \"-vsys %d -memory <MB>\")\n",
     145                                     a, ulMemMB, i);
     146                        break;
     147
     148                        case VirtualSystemDescriptionType_HardDiskControllerIDE:
     149                            RTPrintf("%2d: IDE controller: reference ID %d"
     150                                     "\n    (disable with \"-vsys %d -ignore %d\")\n",
     151                                     a,
     152                                     aRefs[a],
     153                                     i, a);
     154                        break;
     155
     156                        case VirtualSystemDescriptionType_HardDiskControllerSATA:
     157                            RTPrintf("%2d: SATA controller: reference ID %d"
     158                                     "\n    (disable with \"-vsys %d -ignore %d\")\n",
     159                                     a,
     160                                     aRefs[a],
     161                                     i, a);
     162                        break;
     163
     164                        case VirtualSystemDescriptionType_HardDiskControllerSCSI:
     165                            RTPrintf("%2d: SCSI controller: reference ID %d, type %ls"
     166                                     "\n    (change with \"-vsys %d -scsitype%d={BusLogic|LsiLogic}\";"
     167                                     "\n    disable with \"-vsys %d -ignore %d\")\n",
     168                                     a,
     169                                     aRefs[a],
     170                                     aConfigValues[a],
     171                                     i, a, i, a);
     172                        break;
     173
     174                        case VirtualSystemDescriptionType_HardDiskImage:
     175                            RTPrintf("%2d: Hard disk image: controller %d, source image \"%ls\", target image \"%ls\""
     176                                     "\n    (change controller with \"-vsys %d -controller%d=<id>\";"
     177                                     "\n    disable with \"-vsys %d -ignore %d\")\n",
     178                                     a,
     179                                     aRefs[a],
     180                                     aOrigValues[a],
     181                                     aConfigValues[a],
     182                                     i, a, i, a);
     183                        break;
     184
     185                        case VirtualSystemDescriptionType_CDROM:
     186                            RTPrintf("%2d: CD-ROM"
     187                                     "\n    (disable with \"-vsys %d -ignore %d\")\n",
     188                                     a, i, a);
     189                        break;
     190
     191                        case VirtualSystemDescriptionType_Floppy:
     192                            RTPrintf("%2d: Floppy"
     193                                     "\n    (disable with \"-vsys %d -ignore %d\")\n",
     194                                     a, i, a);
     195                        break;
     196
     197                        case VirtualSystemDescriptionType_NetworkAdapter:
     198                            RTPrintf("%2d: Network adapter: orig %ls, auto %ls, conf %ls\n",
     199                                     a,
     200                                     aOrigValues[a],
     201                                     aConfigValues[a],
     202                                     aExtraConfigValues[a]);
     203                        break;
     204
     205                        case VirtualSystemDescriptionType_USBController:
     206                            RTPrintf("%2d: USB controller"
     207                                     "\n    (disable with \"-vsys %d -ignore %d\")\n",
     208                                     a, i, a);
     209                        break;
     210
     211                        case VirtualSystemDescriptionType_SoundCard:
     212                            RTPrintf("%2d: Sound card (appliance expects \"%ls\", can change on import)"
     213                                     "\n    (disable with \"-vsys %d -ignore %d\")\n",
     214                                     a,
     215                                     aOrigValues[a],
     216                                     i,
     217                                     a);
     218                        break;
     219                    }
     220                }
     221            }
     222            RTPrintf("\n");
     223        }
     224    } while (0);
     225
    40226    return SUCCEEDED(rc) ? 0 : 1;
    41227}
Note: See TracChangeset for help on using the changeset viewer.

© 2025 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette