} // create a reference to the vim server $vimRefs = $sdkExt->getVimServerRefs($vimName); if (0 == count($vimRefs)) { exit("No vim server with {$vimName} is found!\n"); } $vimRef = $vimRefs[0]; $vimRef = VMware_VCloud_SDK_Helper::createReferenceTypeObj($vimRef->get_href()); // create a reference to the portgroup $vmPGRef = new VMware_VCloud_API_Extension_VimObjectRefType(); $vmPGRef->setVimServerRef($vimRef); $vmPGRef->setMoRef($netMoRef); $vmPGRef->setVimObjectType('DV_PORTGROUP'); // set IP range $ipRange = new VMware_VCloud_API_IpRangeType(); $ipRange->setStartAddress($startAddr); $ipRange->setEndAddress($endAddr); $ipRanges = new VMware_VCloud_API_IpRangesType(); $ipRanges->setIpRange(array($ipRange)); // set network configuration $ipScope = new VMware_VCloud_API_IpScopeType(); $ipScope->setIsInherited(false); $ipScope->setGateway($gateway); $ipScope->setNetmask($netmask); $ipScope->setDns1($dns1); $ipScope->setDns2($dns2); $ipScope->setDnsSuffix($dnsSuffix); $ipScope->setIpRanges($ipRanges); $config = new VMware_VCloud_API_NetworkConfigurationType(); $config->setIpScope($ipScope); $config->setFenceMode($fenceMode);
/** * create an edge Gateway * @param String $edgeGatewayName * @param VMware_VCloud_API_ReferenceType $extNetRef * * @return array VMware_VCloud_API_ReferenceType object array */ function createEdgeGatewayParams($edgeGatewayName, $extNetRef) { global $gateway, $netmask, $startAddress, $endAddress, $adminVdcObj; $params = new VMware_VCloud_API_GatewayType(); $params->set_Name($edgeGatewayName); $gatcon = new VMware_VCloud_API_GatewayConfigurationType(); $gatcon->setGatewayBackingConfig("compact"); $gatinter = new VMware_VCloud_API_GatewayInterfaceType(); $gatinter->setDisplayName("gateway interface"); $gatinter->setNetwork($extNetRef); $gatinter->setInterfaceType("uplink"); $subnetparttype = new VMware_VCloud_API_SubnetParticipationType(); $subnetparttype->setGateway($gateway); $subnetparttype->setNetmask($netmask); $ipRanges = new VMware_VCloud_API_IpRangesType(); $ipRange = new VMware_VCloud_API_IpRangeType(); $ipRange->setStartAddress($startAddress); $ipRange->setEndAddress($endAddress); $ipRanges->addIpRange($ipRange); $subnetparttype->setIpRanges($ipRanges); $gatinter->addSubnetParticipation($subnetparttype); $gatinter->setUseForDefaultRoute(true); $gatinfaces = new VMware_VCloud_API_GatewayInterfacesType(); $gatinfaces->addGatewayInterface($gatinter); $gatcon->setGatewayInterfaces($gatinfaces); $gatcon->setHaEnabled(true); $gatcon->setUseDefaultRouteForDnsRelay(true); // Firewall Service $gatewayFeatures = new VMware_VCloud_API_GatewayFeaturesType(); $firewallService = new VMware_VCloud_API_FirewallServiceType(); $firewallService->setIsEnabled(true); $firewallService->setDefaultAction("drop"); $firewallService->setLogDefaultAction(false); $gatewayFeatures->addNetworkService($firewallService); // NAT Service $natService = new VMware_VCloud_API_NatServiceType(); $substr = substr(strrchr($endAddress, "."), 1); $intval = intval($substr) + 3; $strpos = strpos($endAddress, $substr); $substring = substr($endAddress, 0, $strpos); $externalIp = $substring . $intval; $natService->setExternalIp($externalIp); $natService->setIsEnabled(false); $gatewayFeatures->addNetworkService($natService); // DHCP Service $dhcpService = new VMware_VCloud_API_DhcpServiceType(); $dhcpService->setIpRange($ipRange); $dhcpService->setIsEnabled(true); $dhcpService->setPrimaryNameServer("r2"); $dhcpService->setSubMask($netmask); $dhcpService->setDefaultLeaseTime(3600); $dhcpService->setMaxLeaseTime(7200); $gatewayFeatures->addNetworkService($dhcpService); // LoadBalancer Service $loadBalancer = new VMware_VCloud_API_LoadBalancerServiceType(); $pool = new VMware_VCloud_API_LoadBalancerPoolType(); $pool->setDescription("Pool Desc"); $pool->setName("PoolName"); $pool->setOperational(true); $lBPoolHealthCheck = new VMware_VCloud_API_LBPoolHealthCheckType(); $lBPoolHealthCheck->setHealthThreshold("2"); $lBPoolHealthCheck->setUnhealthThreshold("3"); $lBPoolHealthCheck->setInterval("5"); $lBPoolHealthCheck->setMode("HTTP"); $lBPoolHealthCheck->setTimeout("15"); $lBPoolMember = new VMware_VCloud_API_LBPoolMemberType(); $substr = substr(strrchr($startAddress, "."), 1); $intval = intval($substr) + 3; $strpos = strpos($startAddress, $substr); $substring = substr($startAddress, 0, $strpos); $lbPoolIp = $substring . $intval; $lBPoolMember->setIpAddress($lbPoolIp); $lBPoolMember->setWeight("1"); $lBPoolServicePort = new VMware_VCloud_API_LBPoolServicePortType(); $lBPoolServicePort->setIsEnabled(true); $lBPoolServicePort->setAlgorithm("ROUND_ROBIN"); $lBPoolServicePort->setHealthCheckPort("80"); $lBPoolServicePort->addHealthCheck($lBPoolHealthCheck); $lBPoolServicePort->setProtocol("HTTP"); $lBPoolServicePort->setPort("80"); $pool->addServicePort($lBPoolServicePort); $pool->addMember($lBPoolMember); $loadBalancer->addPool($pool); $loadBalancerVirtualServer = new VMware_VCloud_API_LoadBalancerVirtualServerType(); $loadBalancerVirtualServer->setDescription("desc"); $loadBalancerVirtualServer->setIsEnabled(true); $substr = substr(strrchr($startAddress, "."), 1); $intval = intval($substr) + 4; $strpos = strpos($startAddress, $substr); $substring = substr($startAddress, 0, $strpos); $lbvirtualServerIp = $substring . $intval; $loadBalancerVirtualServer->setIpAddress($lbvirtualServerIp); $loadBalancerVirtualServer->setName("VirtualServerName"); $loadBalancerVirtualServer->setPool("PoolName"); $loadBalancerVirtualServer->setLogging(true); $loadBalancerVirtualServer->setInterface($extNetRef); $lBVirtualServerServiceProfile = new VMware_VCloud_API_LBVirtualServerServiceProfileType(); $lBVirtualServerServiceProfile->setProtocol("HTTP"); $lBVirtualServerServiceProfile->setPort("80"); $lBVirtualServerServiceProfile->setIsEnabled(true); $lBPersistence = new VMware_VCloud_API_LBPersistenceType(); $lBPersistence->setCookieMode("INSERT"); $lBPersistence->setCookieName("CookieName"); $lBPersistence->setMethod("COOKIE"); $lBVirtualServerServiceProfile->setPersistence($lBPersistence); $loadBalancerVirtualServer->addServiceProfile($lBVirtualServerServiceProfile); $loadBalancer->addVirtualServer($loadBalancerVirtualServer); $loadBalancer->setIsEnabled(true); $gatewayFeatures->addNetworkService($loadBalancer); // Static Routing Service $staticRouting = new VMware_VCloud_API_StaticRoutingServiceType(); $staticRouting->setIsEnabled(true); $staticRoute = new VMware_VCloud_API_StaticRouteType(); $substr = substr(strrchr($endAddress, "."), 1); $intval = intval($substr) + 2; $strpos = strpos($endAddress, $substr); $substring = substr($endAddress, 0, $strpos); $nextHopeIp = $substring . $intval; $staticRoute->setName("RouteName"); $subStringArray = explode('.', $endAddress); $networkIp = $subStringArray[0] . '.' . $subStringArray[1] . ".2.0/24"; $staticRoute->setNetwork($networkIp); $staticRoute->setNextHopIp($nextHopeIp); $staticRoute->setGatewayInterface($extNetRef); $staticRoute->setInterface("External"); $staticRouting->addStaticRoute($staticRoute); $gatewayFeatures->addNetworkService($staticRouting); $gatcon->setEdgeGatewayServiceConfiguration($gatewayFeatures); $params->setConfiguration($gatcon); return $params; }