I am implementing Vlan Selection on purchasing a virtual machine using Softlayer java API. The code below is what I have tested to list available vlans in a specific data center. It returns more available vlan list than "control.softlayer.com" does. Please find my test code below and let me know if you find any doubt.
Thanks
com.softlayer.api.service.Account.Service svc =
com.softlayer.api.service.Account.service(client);
com.softlayer.api.service.network.Vlan.Mask networkVlansMask = new com.softlayer.api.service.network.Vlan.Mask();
// Router
networkVlansMask.attachedNetworkGatewayVlan().bypassFlag();
networkVlansMask.attachedNetworkGatewayFlag();
networkVlansMask.networkSpace();
networkVlansMask.primaryRouter().datacenter().id();
networkVlansMask.primaryRouter().datacenter().name();
networkVlansMask.subnets().id();
networkVlansMask.subnets().subnetType();
networkVlansMask.subnets().networkIdentifier();
networkVlansMask.subnets().cidr();
networkVlansMask.subnets().totalIpAddresses();
networkVlansMask.subnets().usableIpAddressCount();
networkVlansMask.subnets().ipAddresses().ipAddress();
networkVlansMask.subnets().ipAddresses().isReserved();
networkVlansMask.subnets().ipAddresses().virtualGuest();
networkVlansMask.subnets().ipAddresses().hardware();
svc.setMask(networkVlansMask);
Filter filter = new Filter();
filter.addFilter("networkVlans").
addFilter("primaryRouter").
addFilter("datacenter").
addProperty("id", Long.toString(3l));
svc.addFilter(filter);
List<Vlan> vlans = svc.getNetworkVlans(); // All
The following example can help you to get available VLANS
during ordering: SoftLayer_Product_Order::getVlans
This is a Rest example:
https://[username]:[apikey]@api.softlayer.com/rest/v3/SoftLayer_Product_Order/getVlans
Method: POST
Json Payload:
{
"parameters": [
265592,
46,
"port_speed=100"
]
}
Where:
“265592” is the” loactionId”
“46” is the“PackageId”