DUE TO SPAM, SIGN-UP IS DISABLED. Goto Selfserve wiki signup and request an account.

DUE TO SPAM, SIGN-UP IS DISABLED. Goto Selfserve wiki signup and request an account.
There is a need to provide admin some parameters with more granularity so that values can be customized at each granular level.
Here are some global config parameters and their proposed granularity.
Here are 8 parameters need to be changed to 'per Zone' level.
1) pool.storage.allocated.capacity.disablethreshold
2) pool.storage.capacity.disablethreshold
3) VM Allocation Algorithm
4) network.throttling.rate
5) router.template.id
6) Guest Domain Prefix
7) External DNS Usage
8) storage.cleanup.interval
Instead of over loading the present createZone API and updateZone API a new API is introduced say "UpdateZoneLevelParamters API".
During the creation of zone default values for these parameters are set in the data_center_details table. These can be updated using the "updateZoneLevelParamters" API.
API Name |
API Parameters |
API response |
|---|---|---|
updateZoneLevelParamters |
|
id : UUID of the zone |
poolstoragecapacitydisablethreshold: Percentage (as a value between 0 and 1) of storage utilization above which allocators will disable using the pool for low storage available |
||
vmallocationalgorithm: 'random', 'firstfit', 'userdispersing', 'userconcentratedpod_random', 'userconcentratedpod_firstfit' : Order in which hosts within a cluster will be considered for VM/volume allocation |
||
networkthrottlingrate: Default data transfer rate in megabits per second allowed in network. |
||
xenroutertemplateid: UUID of the router template incase of xenserver |
||
guestdomainsuffix: Default domain name for vms inside virtualized networks fronted by router |
||
externaldnsusage: Bypass internal dns, use external dns1 and dns2 |
||
storagecleanupinterval: The interval (in seconds) to wait before running the storage cleanup thread |
|
id: UUID of the zone |
|
|
|
|
|
|
Global Parameter |
API paramter |
|
|---|---|---|
pool.storage.allocated.capacity.disablethreshold |
poolstorageallocatedcapacitydisablethreshold |
|
pool.storage.capacity.disablethreshold |
poolstoragecapacitydisablethreshold |
|
VM Allocation Algorithm |
vmallocationalgorithm |
|
network.throttling.rate |
networkthrottlingrate |
|
router.template.id |
routertemplateid |
|
Guest Domain suffix |
guestdomainsuffix |
|
External DNS Usage |
externaldnsusage |
|
storage.cleanup.interval |
storagecleanupinterval |
|
Global Parameter |
Description |
Proposed change |
Development |
Comments or clarifications needed |
|---|---|---|---|---|
allow.public.user.templates |
If false, users will not be able to create public templates. |
Per Account, overrides the global, e.g. for resellers not end customers |
The implementation goes like adding value in the account_details table. Whenever public template is created we need to check in the account details table and then proceed. |
|
max.account.snapshots |
The default maximum number of snapshots that can be created for an account |
Offer additional parameter, link to sec storage capacity, per account |
This is already been maintained and checked with account id, we need to take the value while creating an account. |
Offer additional parameter, link to sec storage capacity: What this actually mean? |
max.account.templates |
The default maximum number of templates that can be deployed for an account |
As per snapshots, ensure it includes ISOs |
This is already been maintained and checked with account id, we need to take the value while creating an account. |
|
max.account.user.vms |
The default maximum number of user VMs that can be deployed for an account |
n/a |
|
Does this mean to skip the parameter? |
max.account.volumes |
The default maximum number of volumes that can be created for an account |
This should refer to data vols, sys vols should be inherent from user VMs |
|
will this change comes under this feature. This more like a bug. |
max.template.iso.size |
The maximum size for a downloaded template or ISO (in GB). |
per account, also limited by sec storage - see snapshots, templates. So perhaps a new global/per account setting for max sec storage |
|
Same as the max.account.snapshots/templates |
mem.overprovisioning.factor |
Used for memory overprovisioning calculation |
per cluster, overrides global |
|
This is done as part of cpu and ram overcommit feature |
cpu.overprovisioning.factor |
Used for CPU overprovisioning calculation; available CPU will be (actualCpuCapacity * cpu.overprovisioning.factor) |
per cluster, overrides global |
|
This is done as part of cpu and ram overcommit feature |
storage.overprovisioning.factor |
Used for storage overprovisioning calculation; available storage will be (actualStorageSize * storage.overprovisioning.factor) |
per storage (per sysvol/datavol usage), overrides global |
storage_pool_table will hold the key value pair of storage overprovisioning factor. During the check whether the storage pool has enough space for the volume we need to consider per storage level overprovisioning factor and while creating and updating the capacity entry in the for the storage. An optional parameter is added to the createStoragePoolCmd and updateStoragePoolCmd. |
|
remote.access.vpn.client.iprange |
The range of ips to be allocated to remote access vpn clients. The first ip in the range is used by the VPN server |
Per Account, overrides the global |
account_details table will hold the key, value pair. In RemoteAccessVPNManager we need to take the value from the account_details table, validate it and then use. |
|
storage.cleanup.interval |
The interval (in seconds) to wait before running the storage cleanup thread. |
Per AZ, eg for Private/Reseller AZ to offer differing storage service |
|
Do we need to run different storage GC threads for different zones? |
CPU/Memory/Storage Notification and Capacity Thresholds: |
|
Per cluster |
CPU and Memory notification and capacity threshold values per cluster can be stored in the cluster_details table and these values can be used during capacity checking and raising alerts. Since as part of CPU and RAM overcommit feature cpu and ram are made at cluster level, so changing the notifications and capacity thresholds per cluster seems to be relevant. |
1) Storage Notification and Capacity Thresholds ---- per CLUSTER |
Storage Limit per Pool: |
1) Percentage (as a value between 0 and 1) of allocated storage utilization above which allocators will disable using the pool for low allocated storage available. |
Per Zone |
data_center_details table holds the 'name, value' pairs of these parameters. In Storagemanager, while checking the storage pool whether it has enough space for the vm's root disk or data disk, we need to consider the zone in which pool exists and get the details from the data_center_details table accordingly. |
|
Oversubscription Ratio |
|
Per Zone |
|
Does this mean overprovisioning factors? |
Local Storage support |
|
Per Zone |
|
Currently this support is there for zone level. |
VM Allocation Algorithm |
If 'random', hosts within a pod will be randomly considered for VM/volume allocation. If 'firstfit', they will be considered on a first-fit basis. |
Per Zone |
data_center_details table holds the 'name, value' pairs of these parameters. |
|
VR Network Throttling Rate: |
Default data transfer rate in megabits per second allowed in network |
Per Zone |
For the domRs Guest and Public networks we take network throttling from the corresponding Guest Virtual networkOffering. In case the value is not specified in the network offering it should consider the value from the global parameter network.throttling.rate. But right now there is a bug that noticed, guest and public networks are always considering network rate from the global parameter. |
n case of user VMs for non default network the throttling rate is considered from the network offering, if this is not specified it considers the value from global value network.throttling.rate. |
Router Template ID: router.template.id |
Default ID for template |
Per Zone |
In the current implementation, the details of the templates are stored in the vm_templates table. These include all systemVM templates for all hypervisors, During the router vm deployment it gets the list of templates based on the hypervisor type and takes the 1st template from the list. Otherwise we are not using this parameter to select the template. |
|
Guest Domain Suffix : guest.domain.suffix |
Default domain name for vms inside virtualized networks fronted by router |
Per Zone |
The value can be stored in the data_center_details_table and during guest network and vpc creation we can consider the value per zone level from the data_center_details table. |
In the PRD the parameter mentioned is guest.domain.prefix. |
External DNS Usage: use.external.dns |
Bypass internal dns, use external dns1 and dns2 |
Per Zone |
The value can be stored in the data_center_details table and during finalizing the virtual machine's profile this value can be taken per zone corresponding to the deploy destination of the vm. |
|
|
|
|
|
|
Some other redundant parameters:
Global Parameter |
Description |
Proposed change |
Development |
|
|---|---|---|---|---|
capacity.skipcounting.hours |
Time (in seconds) to wait before release VM's cpu and memory when VM in stopped state |
per cluster, overrides global |
Need to maintain the value in cluster_details table and while updating the capacity for host the value in the cluster_details need to be checked with time since vm is stopped |
|
cpu.capacity.threshold |
Percentage (as a value between 0 and 1) of cpu utilization above which alerts will be sent about low cpu available. |
per cluster, overrides global |
|
This is a bit ambiguous, if we change this to cluster level then CPUCapacityDisableThreshold value also need to be changed to cluster level as they are relevant to each other. |
network.gc.interval |
Seconds to wait before checking for networks to shutdown |
per cluster, overrides global |
|
This doesn't make sense |
network.gc.wait |
Time (in seconds) to wait before shutting down a network that's not in used |
per cluster, overrides global |
|
This doesn't make sense |
network.redundantrouter |
Per Account (also per project?), overrides the global or via network offering |
|
|
Redundant router has been deprecated. |
vm.allocation.algorithm |
If 'random', hosts within a pod will be randomly considered for VM/volume allocation. If 'firstfit', they will be considered on a first-fit basis. |
per cluster, per account additional granularity to override global |
The value will be stored in the cluster_details table and account_details table. APIs need to be changed are addCluster, updateCluster, addAccount and updateAccount. |
Which one is more granular cluster or account? Who will get priority while both are set to different values? Why is this at cluster/account level, why not zone level? I want to know the impact of changing this parameter ? |
remote.access.vpn.psk.length |
The length of the ipsec preshared key (minimum 8, maximum 256) |
Per Account, overrides the global |
account_details table will hold the key, value pair. In RemoteAccessVPNManagerImpl we need to take the value from the account_details table, validate it and then use. |
|
remote.access.vpn.user.limit |
The maximum number of VPN users that can be created per account |
Per Account, overrides the global |
account_details table will hold the key, value pair. In RemoteAccessVPNManagerImpl we need to take the value from the account_details table, validate it and then use. |
|
capacity.skipcounting.hours |
Time (in seconds) to wait before release VM's cpu and memory when VM in stopped state |
per cluster, overrides global |
cluster_details table will hold the value and in the capacityManagerImpl while updating the host's capacity we can get the cluster in which host is there and get the capacity.skipcounting.hours value per cluster. |
|