VirtualBox

Changeset 46290 in vbox for trunk/src


Ignore:
Timestamp:
May 27, 2013 3:26:15 PM (12 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
86035
Message:

Main/ApplianceImplExport.cpp: rearrange handling of appliance description lists, always allow the user to override (especially important for the description of a VM, as it defaults to the VM description which some people might not want to export)
Frontends/VBoxManage: finally implement changing the VM description from command line, and also add a way to provide a VM description on export

Location:
trunk/src/VBox
Files:
4 edited

Legend:

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

    r45068 r46290  
    801801        { "--product",            'p', RTGETOPT_REQ_STRING },
    802802        { "--producturl",         'P', RTGETOPT_REQ_STRING },
    803         { "--vendor",             'd', RTGETOPT_REQ_STRING },
    804         { "--vendorurl",          'D', RTGETOPT_REQ_STRING },
     803        { "--vendor",             'n', RTGETOPT_REQ_STRING },
     804        { "--vendorurl",          'N', RTGETOPT_REQ_STRING },
    805805        { "--version",            'v', RTGETOPT_REQ_STRING },
     806        { "--description",        'd', RTGETOPT_REQ_STRING },
    806807        { "--eula",               'e', RTGETOPT_REQ_STRING },
    807808        { "--eulafile",           'E', RTGETOPT_REQ_STRING },
     
    874875                     break;
    875876
    876                 case 'd':   // --vendor
     877                case 'n':   // --vendor
    877878                     if (ulCurVsys == (uint32_t)-1)
    878879                         return errorSyntax(USAGE_EXPORTAPPLIANCE, "Option \"%s\" requires preceding --vsys argument.", GetState.pDef->pszLong);
     
    880881                     break;
    881882
    882                 case 'D':   // --vendorurl
     883                case 'N':   // --vendorurl
    883884                     if (ulCurVsys == (uint32_t)-1)
    884885                         return errorSyntax(USAGE_EXPORTAPPLIANCE, "Option \"%s\" requires preceding --vsys argument.", GetState.pDef->pszLong);
     
    890891                         return errorSyntax(USAGE_EXPORTAPPLIANCE, "Option \"%s\" requires preceding --vsys argument.", GetState.pDef->pszLong);
    891892                     mapArgsMapsPerVsys[ulCurVsys]["version"] = ValueUnion.psz;
     893                     break;
     894
     895                case 'd':   // --description
     896                     if (ulCurVsys == (uint32_t)-1)
     897                         return errorSyntax(USAGE_EXPORTAPPLIANCE, "Option \"%s\" requires preceding --vsys argument.", GetState.pDef->pszLong);
     898                     mapArgsMapsPerVsys[ulCurVsys]["description"] = ValueUnion.psz;
    892899                     break;
    893900
     
    10101017                                             Bstr(itD->second).raw(),
    10111018                                             Bstr(itD->second).raw());
     1019                    else if (itD->first == "description")
     1020                        pVSD->AddDescription(VirtualSystemDescriptionType_Description,
     1021                                             Bstr(itD->second).raw(),
     1022                                             Bstr(itD->second).raw());
    10121023                    else if (itD->first == "eula")
    10131024                        pVSD->AddDescription(VirtualSystemDescriptionType_License,
  • trunk/src/VBox/Frontends/VBoxManage/VBoxManageHelp.cpp

    r46123 r46290  
    416416                     "                                    [--vendorurl <vendor url>]\n"
    417417                     "                                    [--version <version info>]\n"
     418                     "                                    [--description <description info>]\n"
    418419                     "                                    [--eula <license text>]\n"
    419420                     "                                    [--eulafile <filename>]\n"
  • trunk/src/VBox/Frontends/VBoxManage/VBoxManageModifyVM.cpp

    r46123 r46290  
    5151    MODIFYVM_NAME = 1000,
    5252    MODIFYVM_GROUPS,
     53    MODIFYVM_DESCRIPTION,
    5354    MODIFYVM_OSTYPE,
    5455    MODIFYVM_MEMORY,
     
    211212    { "--name",                     MODIFYVM_NAME,                      RTGETOPT_REQ_STRING },
    212213    { "--groups",                   MODIFYVM_GROUPS,                    RTGETOPT_REQ_STRING },
     214    { "--description",              MODIFYVM_DESCRIPTION,               RTGETOPT_REQ_STRING },
    213215    { "--ostype",                   MODIFYVM_OSTYPE,                    RTGETOPT_REQ_STRING },
    214216    { "--memory",                   MODIFYVM_MEMORY,                    RTGETOPT_REQ_UINT32 },
     
    487489                break;
    488490            }
     491            case MODIFYVM_DESCRIPTION:
     492            {
     493                CHECK_ERROR(machine, COMSETTER(Description)(Bstr(ValueUnion.psz).raw()));
     494                break;
     495            }
    489496            case MODIFYVM_OSTYPE:
    490497            {
  • trunk/src/VBox/Main/src-server/ApplianceImplExport.cpp

    r46169 r46290  
    995995
    996996    std::list<VirtualSystemDescriptionEntry*> llName = vsdescThis->findByType(VirtualSystemDescriptionType_Name);
    997     if (llName.size() != 1)
    998         throw setError(VBOX_E_NOT_SUPPORTED,
    999                         tr("Missing VM name"));
    1000     Utf8Str &strVMName = llName.front()->strVboxCurrent;
     997    if (!llName.size())
     998        throw setError(VBOX_E_NOT_SUPPORTED, tr("Missing VM name"));
     999    Utf8Str &strVMName = llName.back()->strVboxCurrent;
    10011000    pelmVirtualSystem->setAttribute("ovf:id", strVMName);
    10021001
     
    10071006    std::list<VirtualSystemDescriptionEntry*> llVendorUrl = vsdescThis->findByType(VirtualSystemDescriptionType_VendorUrl);
    10081007    std::list<VirtualSystemDescriptionEntry*> llVersion = vsdescThis->findByType(VirtualSystemDescriptionType_Version);
    1009     bool fProduct = llProduct.size() && !llProduct.front()->strVboxCurrent.isEmpty();
    1010     bool fProductUrl = llProductUrl.size() && !llProductUrl.front()->strVboxCurrent.isEmpty();
    1011     bool fVendor = llVendor.size() && !llVendor.front()->strVboxCurrent.isEmpty();
    1012     bool fVendorUrl = llVendorUrl.size() && !llVendorUrl.front()->strVboxCurrent.isEmpty();
    1013     bool fVersion = llVersion.size() && !llVersion.front()->strVboxCurrent.isEmpty();
     1008    bool fProduct = llProduct.size() && !llProduct.back()->strVboxCurrent.isEmpty();
     1009    bool fProductUrl = llProductUrl.size() && !llProductUrl.back()->strVboxCurrent.isEmpty();
     1010    bool fVendor = llVendor.size() && !llVendor.back()->strVboxCurrent.isEmpty();
     1011    bool fVendorUrl = llVendorUrl.size() && !llVendorUrl.back()->strVboxCurrent.isEmpty();
     1012    bool fVersion = llVersion.size() && !llVersion.back()->strVboxCurrent.isEmpty();
    10141013    if (fProduct ||
    10151014        fProductUrl ||
     
    10381037        pelmAnnotationSection->createChild("Info")->addContent("Meta-information about the installed software");
    10391038        if (fProduct)
    1040             pelmAnnotationSection->createChild("Product")->addContent(llProduct.front()->strVboxCurrent);
     1039            pelmAnnotationSection->createChild("Product")->addContent(llProduct.back()->strVboxCurrent);
    10411040        if (fVendor)
    1042             pelmAnnotationSection->createChild("Vendor")->addContent(llVendor.front()->strVboxCurrent);
     1041            pelmAnnotationSection->createChild("Vendor")->addContent(llVendor.back()->strVboxCurrent);
    10431042        if (fVersion)
    1044             pelmAnnotationSection->createChild("Version")->addContent(llVersion.front()->strVboxCurrent);
     1043            pelmAnnotationSection->createChild("Version")->addContent(llVersion.back()->strVboxCurrent);
    10451044        if (fProductUrl)
    1046             pelmAnnotationSection->createChild("ProductUrl")->addContent(llProductUrl.front()->strVboxCurrent);
     1045            pelmAnnotationSection->createChild("ProductUrl")->addContent(llProductUrl.back()->strVboxCurrent);
    10471046        if (fVendorUrl)
    1048             pelmAnnotationSection->createChild("VendorUrl")->addContent(llVendorUrl.front()->strVboxCurrent);
     1047            pelmAnnotationSection->createChild("VendorUrl")->addContent(llVendorUrl.back()->strVboxCurrent);
    10491048    }
    10501049
     
    10521051    std::list<VirtualSystemDescriptionEntry*> llDescription = vsdescThis->findByType(VirtualSystemDescriptionType_Description);
    10531052    if (llDescription.size() &&
    1054         !llDescription.front()->strVboxCurrent.isEmpty())
     1053        !llDescription.back()->strVboxCurrent.isEmpty())
    10551054    {
    10561055        /*  <Section ovf:required="false" xsi:type="ovf:AnnotationSection_Type">
     
    10691068
    10701069        pelmAnnotationSection->createChild("Info")->addContent("A human-readable annotation");
    1071         pelmAnnotationSection->createChild("Annotation")->addContent(llDescription.front()->strVboxCurrent);
     1070        pelmAnnotationSection->createChild("Annotation")->addContent(llDescription.back()->strVboxCurrent);
    10721071    }
    10731072
     
    10751074    std::list<VirtualSystemDescriptionEntry*> llLicense = vsdescThis->findByType(VirtualSystemDescriptionType_License);
    10761075    if (llLicense.size() &&
    1077         !llLicense.front()->strVboxCurrent.isEmpty())
     1076        !llLicense.back()->strVboxCurrent.isEmpty())
    10781077    {
    10791078        /* <EulaSection>
     
    10911090
    10921091        pelmEulaSection->createChild("Info")->addContent("License agreement for the virtual system");
    1093         pelmEulaSection->createChild("License")->addContent(llLicense.front()->strVboxCurrent);
     1092        pelmEulaSection->createChild("License")->addContent(llLicense.back()->strVboxCurrent);
    10941093    }
    10951094
    10961095    // operating system
    10971096    std::list<VirtualSystemDescriptionEntry*> llOS = vsdescThis->findByType(VirtualSystemDescriptionType_OS);
    1098     if (llOS.size() != 1)
    1099         throw setError(VBOX_E_NOT_SUPPORTED,
    1100                         tr("Missing OS type"));
     1097    if (!llOS.size())
     1098        throw setError(VBOX_E_NOT_SUPPORTED, tr("Missing OS type"));
    11011099    /*  <OperatingSystemSection ovf:id="82">
    11021100            <Info>Guest Operating System</Info>
    11031101            <Description>Linux 2.6.x</Description>
    11041102        </OperatingSystemSection> */
    1105     VirtualSystemDescriptionEntry *pvsdeOS = llOS.front();
     1103    VirtualSystemDescriptionEntry *pvsdeOS = llOS.back();
    11061104    xml::ElementNode *pelmOperatingSystemSection;
    11071105    if (enFormat == ovf::OVFVersion_0_9)
     
    19591957                if (pDiskEntry->type == VirtualSystemDescriptionType_HardDiskImage)
    19601958                {
    1961                     rc = pSourceDisk->exportFile(strTargetFilePath.c_str(), 
    1962                                                  format, 
    1963                                                  MediumVariant_VmdkStreamOptimized, 
     1959                    rc = pSourceDisk->exportFile(strTargetFilePath.c_str(),
     1960                                                 format,
     1961                                                 MediumVariant_VmdkStreamOptimized,
    19641962                                                 pIfIo,
    1965                                                  pStorage, 
     1963                                                 pStorage,
    19661964                                                 pProgress2);
    19671965                    if (FAILED(rc)) throw rc;
     
    19721970                    rc = pSourceDisk->exportFile(strTargetFilePath.c_str(),
    19731971                                                 formatTemp,
    1974                                                  MediumVariant_Standard, 
     1972                                                 MediumVariant_Standard,
    19751973                                                 pIfIo,
    1976                                                  pStorage, 
     1974                                                 pStorage,
    19771975                                                 pProgress2);
    19781976                    if (FAILED(rc)) throw rc;
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