Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 6 additions & 0 deletions api/src/main/java/com/cloud/network/NetworkModel.java
Original file line number Diff line number Diff line change
Expand Up @@ -97,6 +97,12 @@ public interface NetworkModel {
static final ConfigKey<Boolean> AdminIsAllowedToDeployAnywhere = new ConfigKey<>("Advanced",Boolean.class, "admin.is.allowed.to.deploy.anywhere", "false",
"This will determine if the root admin is allowed to deploy in networks in subdomains.", true, ConfigKey.Scope.Global);

ConfigKey<Boolean> SecurityGroupDefaultAdding = new ConfigKey<>("Network", Boolean.class, "network.securitygroups.defaultadding", "true",
"If true, the user VM would be added to the default security group by default", true);

ConfigKey<String> CloudIdentifier = new ConfigKey<>("Hidden", String.class, "cloud.identifier", null,
"A unique identifier for the cloud.", true);

/**
* Lists IP addresses that belong to VirtualNetwork VLANs
*
Expand Down
27 changes: 27 additions & 0 deletions api/src/main/java/com/cloud/network/NetworkService.java
Original file line number Diff line number Diff line change
Expand Up @@ -84,6 +84,33 @@
"allow.end.users.to.specify.vr.mtu", "false", "Allow end Users to specify VR MTU",
true, ConfigKey.Scope.Zone);

ConfigKey<Integer> GuestVlanBits = new ConfigKey<>("Network", Integer.class, "guest.vlan.bits", "12",
"The number of bits to reserve for the VLAN identifier in the guest subnet.", true);

ConfigKey<Integer> MaxNumberOfSecondaryIPsPerNIC = new ConfigKey<>("Network", Integer.class,
"vm.network.nic.max.secondary.ipaddresses", "10",
"Specify the number of secondary ip addresses per nic per vm. Default value 10 is used, if not specified.", true);

ConfigKey<String> XenServerPublicNetwork = new ConfigKey<>("Hidden", String.class,

Check failure on line 94 in api/src/main/java/com/cloud/network/NetworkService.java

View check run for this annotation

SonarQubeCloud / SonarCloud Code Analysis

Define a constant instead of duplicating this literal "Hidden" 5 times.

See more on https://sonarcloud.io/project/issues?id=apache_cloudstack&issues=AaAFdVvZqJXQQ7HDE9R6&open=AaAFdVvZqJXQQ7HDE9R6&pullRequest=13884
"xenserver.public.network.device", null,
"[ONLY IF THE PUBLIC NETWORK IS ON A DEDICATED NIC]:The network name label of the physical device dedicated to the public network on a XenServer host", true);

ConfigKey<String> XenServerGuestNetwork = new ConfigKey<>("Hidden", String.class,
"xenserver.guest.network.device", null,
"Specify for guest network name label", true);

ConfigKey<String> XenServerStorageNetwork1 = new ConfigKey<>("Hidden", String.class,
"xenserver.storage.network.device1", null,
"Specify when there are storage networks", true);

ConfigKey<String> XenServerStorageNetwork2 = new ConfigKey<>("Hidden", String.class,
"xenserver.storage.network.device2", null,
"Specify when there are storage networks", true);

ConfigKey<String> XenServerPrivateNetwork = new ConfigKey<>("Hidden", String.class,
"xenserver.private.network.device", null,
"Specify when the private network name is different", true);

List<? extends Network> getIsolatedNetworksOwnedByAccountInZone(long zoneId, Account owner);

IpAddress allocateIP(Account ipOwner, long zoneId, Long networkId, Boolean displayIp, String ipaddress) throws ResourceAllocationException, InsufficientAddressCapacityException,
Expand Down
10 changes: 10 additions & 0 deletions api/src/main/java/com/cloud/network/NetworkUsageService.java
Original file line number Diff line number Diff line change
Expand Up @@ -21,12 +21,22 @@
import org.apache.cloudstack.api.command.admin.usage.AddTrafficMonitorCmd;
import org.apache.cloudstack.api.command.admin.usage.DeleteTrafficMonitorCmd;
import org.apache.cloudstack.api.command.admin.usage.ListTrafficMonitorsCmd;
import org.apache.cloudstack.framework.config.ConfigKey;

import com.cloud.host.Host;
import com.cloud.utils.component.Manager;

public interface NetworkUsageService extends Manager {

ConfigKey<Integer> DirectNetworkStatsInterval = new ConfigKey<>("Usage", Integer.class, "direct.network.stats.interval", "86400",

Check failure on line 31 in api/src/main/java/com/cloud/network/NetworkUsageService.java

View check run for this annotation

SonarQubeCloud / SonarCloud Code Analysis

Define a constant instead of duplicating this literal "Usage" 3 times.

See more on https://sonarcloud.io/project/issues?id=apache_cloudstack&issues=AaAFdVuaqJXQQ7HDE9R5&open=AaAFdVuaqJXQQ7HDE9R5&pullRequest=13884
"Interval (in seconds) to collect stats from Traffic Monitor", true);

ConfigKey<String> TrafficSentinelIncludeZones = new ConfigKey<>("Usage", String.class, "traffic.sentinel.include.zones", "EXTERNAL",
"Traffic going into specified list of zones is metered. For metering all traffic leave this parameter empty", true);

ConfigKey<String> TrafficSentinelExcludeZones = new ConfigKey<>("Usage", String.class, "traffic.sentinel.exclude.zones", "",
"Traffic going into specified list of zones is not metered.", true);

Host addTrafficMonitor(AddTrafficMonitorCmd cmd);

boolean deleteTrafficMonitor(DeleteTrafficMonitorCmd cmd);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@

import org.apache.cloudstack.api.command.user.vpn.ListRemoteAccessVpnsCmd;
import org.apache.cloudstack.api.command.user.vpn.ListVpnUsersCmd;
import org.apache.cloudstack.framework.config.ConfigKey;

import com.cloud.exception.NetworkRuleConflictException;
import com.cloud.exception.ResourceUnavailableException;
Expand All @@ -31,6 +32,12 @@
public interface RemoteAccessVpnService {
static final String RemoteAccessVpnClientIpRangeCK = "remote.access.vpn.client.iprange";

ConfigKey<Integer> RemoteAccessVpnPskLength = new ConfigKey<>("Network", Integer.class, "remote.access.vpn.psk.length", "24",
"The length of the ipsec preshared key (minimum 8, maximum 256)", true);

ConfigKey<Integer> RemoteAccessVpnUserLimit = new ConfigKey<>("Network", Integer.class, "remote.access.vpn.user.limit", "8",
"The maximum number of VPN users that can be created per account", true);

RemoteAccessVpn createRemoteAccessVpn(long vpnServerAddressId, String ipRange, boolean openFirewall, Boolean forDisplay) throws NetworkRuleConflictException;

boolean destroyRemoteAccessVpnForIp(long ipId, Account caller, boolean forceCleanup) throws ResourceUnavailableException;
Expand Down
12 changes: 12 additions & 0 deletions api/src/main/java/com/cloud/storage/VolumeApiService.java
Original file line number Diff line number Diff line change
Expand Up @@ -61,6 +61,18 @@
true,
ConfigKey.Scope.Zone);

ConfigKey<Integer> CopyVolumeWait = new ConfigKey<>("Storage", Integer.class, "copy.volume.wait", "10800",

Check failure on line 64 in api/src/main/java/com/cloud/storage/VolumeApiService.java

View check run for this annotation

SonarQubeCloud / SonarCloud Code Analysis

Define a constant instead of duplicating this literal "Storage" 4 times.

See more on https://sonarcloud.io/project/issues?id=apache_cloudstack&issues=AaAFdVuAqJXQQ7HDE9R4&open=AaAFdVuAqJXQQ7HDE9R4&pullRequest=13884
"In second, timeout for copy volume command", true);

ConfigKey<Integer> CreateVolumeFromSnapshotWait = new ConfigKey<>("Storage", Integer.class, "create.volume.from.snapshot.wait", "10800",
"In second, timeout for creating volume from snapshot", true);

ConfigKey<Long> MaxUploadVolumeSize = new ConfigKey<>("Storage", Long.class, "storage.max.volume.upload.size", "500",
"The maximum size for a uploaded volume(in GB).", true);

ConfigKey<Integer> StoragePoolMaxWaitSeconds = new ConfigKey<>("Storage", Integer.class, "storage.pool.max.waitseconds", "3600",
"Timeout (in seconds) to synchronize storage pool operations.", true);

/**
* Creates the database object for a volume based on the given criteria
*
Expand Down
65 changes: 65 additions & 0 deletions api/src/main/java/com/cloud/user/ResourceLimitService.java
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@

static final ConfigKey<Long> MaxAccountSecondaryStorage = new ConfigKey<>("Account Defaults", Long.class, "max.account.secondary.storage", "400",
"The default maximum secondary storage space (in GiB) that can be used for an Account", false);
static final ConfigKey<Long> MaxProjectSecondaryStorage = new ConfigKey<>("Project Defaults", Long.class, "max.project.secondary.storage", "400",

Check failure on line 39 in api/src/main/java/com/cloud/user/ResourceLimitService.java

View check run for this annotation

SonarQubeCloud / SonarCloud Code Analysis

Define a constant instead of duplicating this literal "Project Defaults" 12 times.

See more on https://sonarcloud.io/project/issues?id=apache_cloudstack&issues=AaAFdVv5qJXQQ7HDE9R8&open=AaAFdVv5qJXQQ7HDE9R8&pullRequest=13884
"The default maximum secondary storage space (in GiB) that can be used for a project", false);
static final ConfigKey<Long> ResourceCountCheckInterval = new ConfigKey<>("Advanced", Long.class, "resourcecount.check.interval", "300",
"Time (in seconds) to wait before running resource recalculation and fixing tasks like stale resource reservation cleanup" +
Expand All @@ -49,7 +49,7 @@
"A comma-separated list of tags for storage resource limits", true);
static final ConfigKey<Long> DefaultMaxAccountProjects = new ConfigKey<>("Account Defaults",Long.class,"max.account.projects","10",
"The default maximum number of projects that can be created for an account",false);
static final ConfigKey<Long> DefaultMaxDomainProjects = new ConfigKey<>("Domain Defaults",Long.class,"max.domain.projects","50",

Check failure on line 52 in api/src/main/java/com/cloud/user/ResourceLimitService.java

View check run for this annotation

SonarQubeCloud / SonarCloud Code Analysis

Define a constant instead of duplicating this literal "Domain Defaults" 13 times.

See more on https://sonarcloud.io/project/issues?id=apache_cloudstack&issues=AaAFdVv5qJXQQ7HDE9R7&open=AaAFdVv5qJXQQ7HDE9R7&pullRequest=13884
"The default maximum number of projects that can be created for a domain",false);
static final ConfigKey<Long> DefaultMaxAccountGpus = new ConfigKey<>("Account Defaults",Long.class,"max.account.gpus","20",
"The default maximum number of GPU devices that can be used for an account", false);
Expand All @@ -58,6 +58,71 @@
static final ConfigKey<Long> DefaultMaxProjectGpus = new ConfigKey<>("Project Defaults",Long.class,"max.project.gpus","20",
"The default maximum number of GPU devices that can be used for a project", false);

static final ConfigKey<Long> DefaultMaxAccountUserVms = new ConfigKey<>("Account Defaults", Long.class, "max.account.user.vms", "20",
"The default maximum number of user VMs that can be deployed for an account", false);
static final ConfigKey<Long> DefaultMaxAccountPublicIPs = new ConfigKey<>("Account Defaults", Long.class, "max.account.public.ips", "20",
"The default maximum number of public IPs that can be consumed by an account", false);
static final ConfigKey<Long> DefaultMaxAccountTemplates = new ConfigKey<>("Account Defaults", Long.class, "max.account.templates", "20",
"The default maximum number of Templates that can be deployed for an account", false);
static final ConfigKey<Long> DefaultMaxAccountSnapshots = new ConfigKey<>("Account Defaults", Long.class, "max.account.snapshots", "20",
"The default maximum number of snapshots that can be created for an account", false);
static final ConfigKey<Long> DefaultMaxAccountVolumes = new ConfigKey<>("Account Defaults", Long.class, "max.account.volumes", "20",
"The default maximum number of volumes that can be created for an account", false);
static final ConfigKey<Long> DefaultMaxAccountNetworks = new ConfigKey<>("Account Defaults", Long.class, "max.account.networks", "20",
"The default maximum number of networks that can be created for an account", false);
static final ConfigKey<Long> DefaultMaxAccountVpcs = new ConfigKey<>("Account Defaults", Long.class, "max.account.vpcs", "20",
"The default maximum number of vpcs that can be created for an account", false);
static final ConfigKey<Long> DefaultMaxAccountCpus = new ConfigKey<>("Account Defaults", Long.class, "max.account.cpus", "40",
"The default maximum number of cpu cores that can be used for an account", false);
static final ConfigKey<Long> DefaultMaxAccountMemory = new ConfigKey<>("Account Defaults", Long.class, "max.account.memory", "40960",
"The default maximum memory (in MB) that can be used for an account", false);
static final ConfigKey<Long> DefaultMaxAccountPrimaryStorage = new ConfigKey<>("Account Defaults", Long.class, "max.account.primary.storage", "200",
"The default maximum primary storage space (in GiB) that can be used for an account", false);

static final ConfigKey<Long> DefaultMaxDomainUserVms = new ConfigKey<>("Domain Defaults", Long.class, "max.domain.user.vms", "40",
"The default maximum number of user Instances that can be deployed for a domain", false);
static final ConfigKey<Long> DefaultMaxDomainPublicIPs = new ConfigKey<>("Domain Defaults", Long.class, "max.domain.public.ips", "40",
"The default maximum number of public IPs that can be consumed by a domain", false);
static final ConfigKey<Long> DefaultMaxDomainTemplates = new ConfigKey<>("Domain Defaults", Long.class, "max.domain.templates", "40",
"The default maximum number of Templates that can be deployed for a domain", false);
static final ConfigKey<Long> DefaultMaxDomainSnapshots = new ConfigKey<>("Domain Defaults", Long.class, "max.domain.snapshots", "40",
"The default maximum number of Snapshots that can be created for a domain", false);
static final ConfigKey<Long> DefaultMaxDomainVolumes = new ConfigKey<>("Domain Defaults", Long.class, "max.domain.volumes", "40",
"The default maximum number of Volumes that can be created for a domain", false);
static final ConfigKey<Long> DefaultMaxDomainNetworks = new ConfigKey<>("Domain Defaults", Long.class, "max.domain.networks", "40",
"The default maximum number of Networks that can be created for a domain", false);
static final ConfigKey<Long> DefaultMaxDomainVpcs = new ConfigKey<>("Domain Defaults", Long.class, "max.domain.vpcs", "40",
"The default maximum number of VPCs that can be created for a domain", false);
static final ConfigKey<Long> DefaultMaxDomainCpus = new ConfigKey<>("Domain Defaults", Long.class, "max.domain.cpus", "80",
"The default maximum number of CPU cores that can be used for a domain", false);
static final ConfigKey<Long> DefaultMaxDomainMemory = new ConfigKey<>("Domain Defaults", Long.class, "max.domain.memory", "81920",
"The default maximum memory (in MB) that can be used for a domain", false);
static final ConfigKey<Long> DefaultMaxDomainPrimaryStorage = new ConfigKey<>("Domain Defaults", Long.class, "max.domain.primary.storage", "400",
"The default maximum primary storage space (in GiB) that can be used for a domain", false);
static final ConfigKey<Long> DefaultMaxDomainSecondaryStorage = new ConfigKey<>("Domain Defaults", Long.class, "max.domain.secondary.storage", "800",
"The default maximum secondary storage space (in GiB) that can be used for a domain", false);

static final ConfigKey<Long> DefaultMaxProjectUserVms = new ConfigKey<>("Project Defaults", Long.class, "max.project.user.vms", "20",
"The default maximum number of user VMs that can be deployed for a project", false);
static final ConfigKey<Long> DefaultMaxProjectPublicIPs = new ConfigKey<>("Project Defaults", Long.class, "max.project.public.ips", "20",
"The default maximum number of public IPs that can be consumed by a project", false);
static final ConfigKey<Long> DefaultMaxProjectTemplates = new ConfigKey<>("Project Defaults", Long.class, "max.project.templates", "20",
"The default maximum number of Templates that can be deployed for a project", false);
static final ConfigKey<Long> DefaultMaxProjectSnapshots = new ConfigKey<>("Project Defaults", Long.class, "max.project.snapshots", "20",
"The default maximum number of snapshots that can be created for a project", false);
static final ConfigKey<Long> DefaultMaxProjectVolumes = new ConfigKey<>("Project Defaults", Long.class, "max.project.volumes", "20",
"The default maximum number of volumes that can be created for a project", false);
static final ConfigKey<Long> DefaultMaxProjectNetworks = new ConfigKey<>("Project Defaults", Long.class, "max.project.networks", "20",
"The default maximum number of networks that can be created for a project", false);
static final ConfigKey<Long> DefaultMaxProjectVpcs = new ConfigKey<>("Project Defaults", Long.class, "max.project.vpcs", "20",
"The default maximum number of vpcs that can be created for a project", false);
static final ConfigKey<Long> DefaultMaxProjectCpus = new ConfigKey<>("Project Defaults", Long.class, "max.project.cpus", "40",
"The default maximum number of cpu cores that can be used for a project", false);
static final ConfigKey<Long> DefaultMaxProjectMemory = new ConfigKey<>("Project Defaults", Long.class, "max.project.memory", "40960",
"The default maximum memory (in MB) that can be used for a project", false);
static final ConfigKey<Long> DefaultMaxProjectPrimaryStorage = new ConfigKey<>("Project Defaults", Long.class, "max.project.primary.storage", "200",
"The default maximum primary storage space (in GiB) that can be used for a project", false);

static final List<ResourceType> HostTagsSupportingTypes = List.of(ResourceType.user_vm, ResourceType.cpu, ResourceType.memory, ResourceType.gpu);
static final List<ResourceType> StorageTagsSupportingTypes = List.of(ResourceType.volume, ResourceType.primary_storage);

Expand Down
20 changes: 20 additions & 0 deletions api/src/main/java/org/apache/cloudstack/usage/UsageService.java
Original file line number Diff line number Diff line change
Expand Up @@ -20,11 +20,31 @@
import org.apache.cloudstack.api.command.admin.usage.GenerateUsageRecordsCmd;
import org.apache.cloudstack.api.command.admin.usage.ListUsageRecordsCmd;
import org.apache.cloudstack.api.command.admin.usage.RemoveRawUsageRecordsCmd;
import org.apache.cloudstack.framework.config.ConfigKey;

import java.util.List;
import java.util.TimeZone;

public interface UsageService {

ConfigKey<String> UsageAggregationTimezone = new ConfigKey<>("Usage", String.class, "usage.aggregation.timezone", "GMT",

Check failure on line 30 in api/src/main/java/org/apache/cloudstack/usage/UsageService.java

View check run for this annotation

SonarQubeCloud / SonarCloud Code Analysis

Define a constant instead of duplicating this literal "Usage" 6 times.

See more on https://sonarcloud.io/project/issues?id=apache_cloudstack&issues=AaAFdVtkqJXQQ7HDE9R3&open=AaAFdVtkqJXQQ7HDE9R3&pullRequest=13884
"The timezone to use for usage stats aggregation", true);

ConfigKey<String> UsageExecutionTimezone = new ConfigKey<>("Usage", String.class, "usage.execution.timezone", null,
"The timezone to use for usage job execution time", true);

ConfigKey<Integer> UsageSanityCheckInterval = new ConfigKey<>("Usage", Integer.class, "usage.sanity.check.interval", null,
"Interval (in days) to check sanity of usage data. To disable set it to 0 or negative.", true);

ConfigKey<Integer> UsageStatsJobAggregationRange = new ConfigKey<>("Usage", Integer.class, "usage.stats.job.aggregation.range", "1440",
"The range of time for aggregating the user statistics specified in minutes (e.g. 1440 for daily, 60 for hourly.", true);

ConfigKey<String> UsageStatsJobExecTime = new ConfigKey<>("Usage", String.class, "usage.stats.job.exec.time", "00:15",
"The time at which the usage statistics aggregation job will run as an HH24:MM time, e.g. 00:30 to run at 12:30am.", true);

ConfigKey<Boolean> EnableUsageServer = new ConfigKey<>("Usage", Boolean.class, "enable.usage.server", "true",
"Flag for enabling usage", true);

/**
* Generate Billing Records from the last time it was generated to the
* time specified.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -138,6 +138,23 @@ public interface NetworkOrchestrationService {
ConfigKey<Integer> VmNetworkThrottlingRate = new ConfigKey<Integer>("Network", Integer.class, "vm.network.throttling.rate", "200",
"Default data transfer rate in megabits per second allowed in User vm's default network.", true, ConfigKey.Scope.Zone);

ConfigKey<String> NetworkLBHaproxyStatsVisbility = new ConfigKey<>("Network", String.class,
"network.loadbalancer.haproxy.stats.visibility", "global",
"Load Balancer(haproxy) stats visibility, the value can be one of the following six parameters : global,guest-network,link-local,disabled,all,default",
true, ConfigKey.Kind.Select, "global,guest-network,link-local,disabled,all,default");

ConfigKey<String> NetworkLBHaproxyStatsUri = new ConfigKey<>("Network", String.class,
"network.loadbalancer.haproxy.stats.uri", "/admin?stats",
"Load Balancer(haproxy) uri.", true);

ConfigKey<String> NetworkLBHaproxyStatsAuth = new ConfigKey<>("Secure", String.class,
"network.loadbalancer.haproxy.stats.auth", "admin1:AdMiN123",
"Load Balancer(haproxy) authentication string in the format username:password", true);

ConfigKey<String> NetworkLBHaproxyStatsPort = new ConfigKey<>("Network", String.class,
"network.loadbalancer.haproxy.stats.port", "8081",
"Load Balancer(haproxy) stats port number.", true);

List<? extends Network> setupNetwork(Account owner, NetworkOffering offering, DeploymentPlan plan, String name, String displayText, boolean isDefault)
throws ConcurrentOperationException;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,22 @@
*/
package org.apache.cloudstack.engine.subsystem.api.storage;

import org.apache.cloudstack.framework.config.ConfigKey;

public interface StorageCacheManager {

ConfigKey<Boolean> StorageCacheReplacementEnabled = new ConfigKey<>("Storage", Boolean.class,

Check failure on line 25 in engine/api/src/main/java/org/apache/cloudstack/engine/subsystem/api/storage/StorageCacheManager.java

View check run for this annotation

SonarQubeCloud / SonarCloud Code Analysis

Define a constant instead of duplicating this literal "Storage" 3 times.

See more on https://sonarcloud.io/project/issues?id=apache_cloudstack&issues=AaAFdVpfqJXQQ7HDE9R1&open=AaAFdVpfqJXQQ7HDE9R1&pullRequest=13884
"storage.cache.replacement.enabled", "true",
"enable or disable cache storage replacement algorithm.", true);

ConfigKey<Integer> StorageCacheReplacementInterval = new ConfigKey<>("Storage", Integer.class,
"storage.cache.replacement.interval", "86400",
"time interval between cache replacement threads (in seconds).", true);

ConfigKey<Integer> StorageCacheReplacementLRUTimeInterval = new ConfigKey<>("Storage", Integer.class,
"storage.cache.replacement.lru.interval", "30",
"time interval for unused data on cache storage (in days).", true);

DataStore getCacheStorage(Scope scope);

DataStore getCacheStorage(DataObject data, Scope scope);
Expand Down
Loading
Loading