VirtualBox

Ignore:
Timestamp:
May 29, 2020 6:43:11 PM (5 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
138352
Message:

OCI: (bugref:9469) cloud network integration code moved from Machine to Console, cloud network environment setup (cloud part).

File:
1 edited

Legend:

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

    r83279 r84618  
    20842084
    20852085
     2086static RTEXITCODE setupCloudNetworkEnv(HandlerArg *a, int iFirst, PCLOUDCOMMONOPT pCommonOpts)
     2087{
     2088    RT_NOREF(pCommonOpts);
     2089    HRESULT hrc = S_OK;
     2090    static const RTGETOPTDEF s_aOptions[] =
     2091    {
     2092        { "--gateway-os-name",      'n', RTGETOPT_REQ_STRING },
     2093        { "--gateway-os-version",   'v', RTGETOPT_REQ_STRING },
     2094        { "--gateway-shape",        's', RTGETOPT_REQ_STRING },
     2095        { "--tunnel-network-name",  't', RTGETOPT_REQ_STRING },
     2096        { "--tunnel-network-range", 'r', RTGETOPT_REQ_STRING },
     2097    };
     2098    RTGETOPTSTATE GetState;
     2099    RTGETOPTUNION ValueUnion;
     2100    int vrc = RTGetOptInit(&GetState, a->argc, a->argv, s_aOptions, RT_ELEMENTS(s_aOptions), iFirst, 0);
     2101    AssertRCReturn(vrc, RTEXITCODE_FAILURE);
     2102
     2103    Bstr strGatewayOsName;
     2104    Bstr strGatewayOsVersion;
     2105    Bstr strGatewayShape;
     2106    Bstr strTunnelNetworkName;
     2107    Bstr strTunnelNetworkRange;
     2108
     2109    int c;
     2110    while ((c = RTGetOpt(&GetState, &ValueUnion)) != 0)
     2111    {
     2112        switch (c)
     2113        {
     2114            case 'n':
     2115                strGatewayOsName=ValueUnion.psz;
     2116                break;
     2117            case 'v':
     2118                strGatewayOsVersion=ValueUnion.psz;
     2119                break;
     2120            case 's':
     2121                strGatewayShape=ValueUnion.psz;
     2122                break;
     2123            case 't':
     2124                strTunnelNetworkName=ValueUnion.psz;
     2125                break;
     2126            case 'r':
     2127                strTunnelNetworkRange=ValueUnion.psz;
     2128                break;
     2129            case VINF_GETOPT_NOT_OPTION:
     2130                return errorUnknownSubcommand(ValueUnion.psz);
     2131            default:
     2132                return errorGetOpt(c, &ValueUnion);
     2133        }
     2134    }
     2135
     2136    /* Delayed check. It allows us to print help information.*/
     2137    hrc = checkAndSetCommonOptions(a, pCommonOpts);
     2138    if (FAILED(hrc))
     2139        return RTEXITCODE_FAILURE;
     2140
     2141    // if (strGatewayOsName.isEmpty())
     2142    //     return errorArgument("Missing --gateway-os-name parameter");
     2143    // if (strGatewayOsVersion.isEmpty())
     2144    //     return errorArgument("Missing --gateway-os-version parameter");
     2145    // if (strGatewayShape.isEmpty())
     2146    //     return errorArgument("Missing --gateway-shape parameter");
     2147    // if (strTunnelNetworkName.isEmpty())
     2148    //     strTunnelNetworkName = "VirtualBox Tunneling Network";
     2149
     2150    ComPtr<ICloudProfile> pCloudProfile = pCommonOpts->profile.pCloudProfile;
     2151
     2152    ComObjPtr<ICloudClient> oCloudClient;
     2153    CHECK_ERROR2_RET(hrc, pCloudProfile,
     2154                     CreateCloudClient(oCloudClient.asOutParam()),
     2155                     RTEXITCODE_FAILURE);
     2156
     2157    ComPtr<IVirtualBox> pVirtualBox = a->virtualBox;
     2158    ComPtr<ICloudNetworkEnvironmentInfo> cloudNetworkEnv;
     2159    ComPtr<IProgress> progress;
     2160    CHECK_ERROR2_RET(hrc, oCloudClient,
     2161                     SetupCloudNetworkEnvironment(strTunnelNetworkName.raw(), strTunnelNetworkRange.raw(),
     2162                                                  strGatewayOsName.raw(), strGatewayOsVersion.raw(), strGatewayShape.raw(),
     2163                                                  cloudNetworkEnv.asOutParam(), progress.asOutParam()),
     2164                     RTEXITCODE_FAILURE);
     2165
     2166    hrc = showProgress(progress);
     2167    CHECK_PROGRESS_ERROR_RET(progress, ("Setting up cloud network environment failed"), RTEXITCODE_FAILURE);
     2168
     2169    Bstr tunnelNetworkId;
     2170    hrc = cloudNetworkEnv->COMGETTER(TunnelNetworkId)(tunnelNetworkId.asOutParam());
     2171    RTPrintf("Cloud network environment was set up successfully. Tunnel network id is: %ls\n", tunnelNetworkId.raw());
     2172
     2173    return SUCCEEDED(hrc) ? RTEXITCODE_SUCCESS : RTEXITCODE_FAILURE;
     2174}
     2175
     2176
    20862177static RTEXITCODE handleCloudNetwork(HandlerArg *a, int iFirst, PCLOUDCOMMONOPT pCommonOpts)
    20872178{
     
    20942185        { "info",           1001, RTGETOPT_REQ_NOTHING },
    20952186        { "update",         1002, RTGETOPT_REQ_NOTHING },
    2096         { "delete",         1003, RTGETOPT_REQ_NOTHING }
     2187        { "delete",         1003, RTGETOPT_REQ_NOTHING },
     2188        { "setup",          1004, RTGETOPT_REQ_NOTHING }
    20972189    };
    20982190
     
    21162208            case 1003:
    21172209                return deleteCloudNetwork(a, GetState.iNext, pCommonOpts);
     2210            case 1004:
     2211                return setupCloudNetworkEnv(a, GetState.iNext, pCommonOpts);
    21182212            case VINF_GETOPT_NOT_OPTION:
    21192213                return errorUnknownSubcommand(ValueUnion.psz);
Note: See TracChangeset for help on using the changeset viewer.

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