VirtualBox

Changeset 49190 in vbox


Ignore:
Timestamp:
Oct 18, 2013 3:26:52 PM (12 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
90067
Message:

Main,VBoxManage: Implement hotpluggable setting stubs

Location:
trunk
Files:
6 edited

Legend:

Unmodified
Added
Removed
  • trunk/include/VBox/settings.h

    r49058 r49190  
    959959          fTempEject(false),
    960960          fNonRotational(false),
     961          fDiscard(false),
     962          fHotPluggable(false),
    961963          lPort(0),
    962964          lDevice(0)
  • trunk/src/VBox/Frontends/VBoxManage/VBoxManageHelp.cpp

    r49103 r49190  
    535535                     "                            [--nonrotational on|off]\n"
    536536                     "                            [--discard on|off]\n"
     537                     "                            [--hotpluggable on|off]\n"
    537538                     "                            [--bandwidthgroup <name>]\n"
    538539                     "                            [--forceunmount]\n"
  • trunk/src/VBox/Frontends/VBoxManage/VBoxManageStorageController.cpp

    r48985 r49190  
    5555    { "--nonrotational",    'n', RTGETOPT_REQ_STRING },
    5656    { "--discard",          'u', RTGETOPT_REQ_STRING },
     57    { "--hotpluggable",     'o', RTGETOPT_REQ_STRING },
    5758    { "--bandwidthgroup",   'b', RTGETOPT_REQ_STRING },
    5859    { "--forceunmount",     'f', RTGETOPT_REQ_NOTHING },
     
    9192    const char *pszNonRotational = NULL;
    9293    const char *pszDiscard = NULL;
     94    const char *pszHotPluggable = NULL;
    9395    const char *pszBandwidthGroup = NULL;
    9496    Bstr bstrNewUuid;
     
    199201                if (ValueUnion.psz)
    200202                    pszDiscard = ValueUnion.psz;
     203                else
     204                    rc = E_FAIL;
     205                break;
     206            }
     207
     208            case 'o':   // hotpluggable <on|off>
     209            {
     210                if (ValueUnion.psz)
     211                    pszHotPluggable = ValueUnion.psz;
    201212                else
    202213                    rc = E_FAIL;
     
    853864        }
    854865
     866        if (   pszHotPluggable
     867            && (SUCCEEDED(rc)))
     868        {
     869            ComPtr<IMediumAttachment> mattach;
     870            CHECK_ERROR(machine, GetMediumAttachment(Bstr(pszCtl).raw(), port,
     871                                                     device, mattach.asOutParam()));
     872
     873            if (SUCCEEDED(rc))
     874            {
     875                if (!RTStrICmp(pszHotPluggable, "on"))
     876                {
     877                    CHECK_ERROR(machine, SetHotPluggableForDevice(Bstr(pszCtl).raw(),
     878                                                                  port, device, TRUE));
     879                }
     880                else if (!RTStrICmp(pszHotPluggable, "off"))
     881                {
     882                    CHECK_ERROR(machine, SetHotPluggableForDevice(Bstr(pszCtl).raw(),
     883                                                                  port, device, FALSE));
     884                }
     885                else
     886                    throw Utf8StrFmt("Invalid --hotpluggable argument '%s'", pszHotPluggable);
     887            }
     888            else
     889                throw Utf8StrFmt("Couldn't find the controller attachment for the controller '%s'\n", pszCtl);
     890        }
    855891
    856892        if (   pszBandwidthGroup
  • trunk/src/VBox/Main/src-client/ConsoleImpl2.cpp

    r49069 r49190  
    19471947                                    lPortUsed[u32HDSataPortCount++] = lPortNum;
    19481948                                    LogFlowFunc(("HD Sata port Count=%d\n", u32HDSataPortCount));
     1949                                }
     1950
     1951                                /* Configure the hotpluggable flag for the port. */
     1952                                BOOL fHotPluggable = FALSE;
     1953                                hrc = pMediumAtt->COMGETTER(HotPluggable)(&fHotPluggable); H();
     1954                                if (SUCCEEDED(hrc))
     1955                                {
     1956                                    PCFGMNODE pPortCfg;
     1957                                    char szName[24];
     1958                                    RTStrPrintf(szName, sizeof(szName), "Port%d", lPortNum);
     1959
     1960                                    InsertConfigNode(pCfg, szName, &pPortCfg);
     1961                                    InsertConfigInteger(pPortCfg, "Hotpluggable", fHotPluggable ? 1 : 0);
    19491962                                }
    19501963                             }
  • trunk/src/VBox/Main/src-server/MachineImpl.cpp

    r49058 r49190  
    45124512                          false /* fNonRotational */,
    45134513                          false /* fDiscard */,
    4514                           false /* fHotPluggable */,
     4514                          fHotplug /* fHotPluggable */,
    45154515                          Utf8Str::Empty);
    45164516    if (FAILED(rc)) return rc;
     
    46414641                        aDevice, aControllerPort, aControllerName);
    46424642
     4643    if (fHotplug && !pAttach->getHotPluggable())
     4644        return setError(VBOX_E_NOT_SUPPORTED,
     4645                        tr("The device slot %d on port %d of controller '%ls' does not support hotplugging"),
     4646                        aDevice, aControllerPort, aControllerName);
     4647
    46434648    /*
    46444649     * The VM has to detach the device before we delete any implicit diffs.
     
    48764881                        aDevice, aControllerPort, aControllerName);
    48774882
    4878     /** @todo remove this blocker and add the missing code to support this
    4879      * flag properly in all code areas, with proper support checks below. */
     4883    /* Check for an existing controller. */
     4884    ComObjPtr<StorageController> ctl;
     4885    rc = getStorageControllerByName(aControllerName, ctl, true /* aSetError */);
     4886    if (FAILED(rc)) return rc;
     4887
     4888    StorageControllerType_T ctrlType;
     4889    rc = ctl->COMGETTER(ControllerType)(&ctrlType);
     4890    if (FAILED(rc))
     4891        return setError(E_FAIL,
     4892                        tr("Could not get type of controller '%ls'"),
     4893                        aControllerName);
     4894
     4895    if (!isControllerHotplugCapable(ctrlType))
    48804896    return setError(VBOX_E_NOT_SUPPORTED,
    48814897                    tr("Controller '%ls' does not support changing the hot-pluggable device flag"),
     
    97819797                               dev.fNonRotational,
    97829798                               dev.fDiscard,
    9783         /// @todo load setting once the hot-pluggable flag works
    9784                                false /*dev.fHotPluggable*/,
     9799                               dev.fHotPluggable,
    97859800                               pBwGroup.isNull() ? Utf8Str::Empty : pBwGroup->getName());
    97869801        if (FAILED(rc)) break;
     
    1088710902        dev.lDevice = pAttach->getDevice();
    1088810903        dev.fPassThrough = pAttach->getPassthrough();
    10889         /// @todo save setting once the hot-pluggable flag works
    10890         dev.fHotPluggable = false /* pAttach->getHotPluggable()*/;
     10904        dev.fHotPluggable = pAttach->getHotPluggable();
    1089110905        if (pMedium)
    1089210906        {
  • trunk/src/VBox/Main/xml/Settings.cpp

    r49066 r49190  
    34423442            att.fDiscard = false;
    34433443            att.fNonRotational = false;
     3444            att.fHotPluggable = false;
    34443445
    34453446            if (strTemp == "HardDisk")
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