Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

There may be cases where some part of the subnet is allocated for some other purpose and the admin wants to use the rest of the ip range or admin may want to add more ip address once the old ones are exhausted. Admin may want to add the ip ranges form the same subnet or from different one. Currently in cloudstack there is no flexibility to do this for management and guest ip ranges (ip ranges from different subnets).

Design description:

Addition of guest IPs in Basic zone guest IPs.
presently the createVlanIpRange api is used to add the guest ip range to a network (shared) in basic zone. The ips mentioned in this range are assigned to the guest VMs. These are public ips and allow guest to communicate with the internet. Presently we can add multiple ranges form the same subnet but not from a different one. This feature will extend the createVlanIpRange to add guest ips from a different subnet to a shared network in basic zone.

...

for description of existing parameters please refer this page. http://incubator.apache.org/cloudstack/docs/api/apidocs-4.0.0/root_admin/createVlanIpRange.htmlImage Added

Validation.
#1 Will fail if the zone is not a basic zone or if forvirtual network is true.
#2 if the ip is from a different subnet, netmask and gateway should be provided.

...

Note. The admin should manually configure the gateway of the new subnet before adding the ip range.For Basic and Advanced Zone

Addition of Management (pod)

...

Ips in both Advance and Basic zone.

Currently there is no way to add additional pod ip ranges. This feature will enable adding pod IP ranges from same subnet or different subnet. The pod ipranges (private Ips) are assigned to router vms and systemvms. The ip configuration is passed in as boot args. So in this case we need not configure the DHCP server.

...

API Name

API parameters

API response

Available only for root admin

AddPodIpRangeeditpod

*podId, *IpaddressStart, IpaddressEnd, *Netmask, *Gateway. remove

returns the IP ranges of the pod that are added or removed

yes

Description of parameters.

Parameter Name

Description

required

podID

specifies the id of the pod to which the new range is added

true

IpaddressStart

starting address of the IP range

true

IpaddressEnd

ending address of the IP range. use the entire cidr if not specified.

false

Netmask

Netmask of the subnet

true

Gateway

Gateway of the subnet

true

allocation state

allocation state of the pod

false

remove

if remove is set to true it will try to remove the given IP range or subnet. this defaults to false.

false

validation.
#1 We modify the use checkpodAttributes function in configurationManagerImpl by removing the check for IP ranges which do not belong to the same cidr (cidr of the pod.)

execution flow.
#1 validate the input.(This will be done using the checkpodAttributes function of the configureationManagerImpl).
#2 Add the new range.

removing the the guest IPs from the Basic zone.

we intend to use the deleteVlanRange API to delete the ip ranges. The operations will be atomic. this will fail if any IP form the remove range is being used.

Removing of Management (pod) IPs for Advanced and Basic Zone.

The Pod IPs can be removed only when they are not in use. We intend to do this by modifying edit pod API.
Currently the edit pod api can be used to change the gateway, netmask and private ip range of a pod. We will extend this api to support removal of a particular private ip range or an entire subnet. The edit pod API will make atomic changes (all or nothing )ie if the remove ip range contains any IPs that are in use the edit api will throw an error and will not succeed partially.

We do this by setting the remove parameter of the editpod API to true.

example
Existing: 10.147.28.20 to 10.147.28.147.40 used: 10.147.28.22
Remove: 10.10.147.28.20 to 10.147.28.147.40
this will fail as 10.147.28.22 is in use.

DB changes:

No Database changes are required.