routes) throws ResourceUnavailableException;
boolean applyACLItemsToPrivateGw(PrivateGateway gateway, List extends NetworkACLItem> rules) throws ResourceUnavailableException;
+
+ boolean updateVpcSourceNatIp(Vpc vpc, IpAddress address);
}
diff --git a/api/src/main/java/com/cloud/network/guru/NetworkGuru.java b/api/src/main/java/com/cloud/network/guru/NetworkGuru.java
index c4f2beba63ee..7b81c75ed845 100644
--- a/api/src/main/java/com/cloud/network/guru/NetworkGuru.java
+++ b/api/src/main/java/com/cloud/network/guru/NetworkGuru.java
@@ -79,20 +79,24 @@ public interface NetworkGuru extends Adapter {
* be used to make determination can be isolation methods, services
* provided on the guest network and the service provider that's on the
* guest network.
- *
+ *
* If a network is already fully substantiated with the necessary resources
* during this design phase, then the state should be set to Setup. If
* the resources are not allocated at this point, the state should be set
* to Allocated.
*
- * @param offering network offering that contains the package of services
- * the end user intends to use on that network.
- * @param plan where is this network being deployed.
+ * @param offering network offering that contains the package of services
+ * the end user intends to use on that network.
+ * @param plan where is this network being deployed.
* @param userSpecified user specified parameters for this network.
- * @param owner owner of this network.
+ * @param name
+ * @param vpcId
+ * @param owner owner of this network.
* @return Network
*/
- Network design(NetworkOffering offering, DeploymentPlan plan, Network userSpecified, Account owner);
+ Network design(NetworkOffering offering, DeploymentPlan plan, Network userSpecified, String name, Long vpcId, Account owner);
+
+ void setup(Network network, long networkId);
/**
* For guest networks that are in Allocated state after the design stage,
diff --git a/api/src/main/java/com/cloud/network/nsx/NsxProvider.java b/api/src/main/java/com/cloud/network/nsx/NsxProvider.java
new file mode 100644
index 000000000000..19cb3b4b939e
--- /dev/null
+++ b/api/src/main/java/com/cloud/network/nsx/NsxProvider.java
@@ -0,0 +1,34 @@
+// Licensed to the Apache Software Foundation (ASF) under one
+// or more contributor license agreements. See the NOTICE file
+// distributed with this work for additional information
+// regarding copyright ownership. The ASF licenses this file
+// to you under the Apache License, Version 2.0 (the
+// "License"); you may not use this file except in compliance
+// with the License. You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing,
+// software distributed under the License is distributed on an
+// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+// KIND, either express or implied. See the License for the
+// specific language governing permissions and limitations
+// under the License.
+package com.cloud.network.nsx;
+
+import org.apache.cloudstack.api.Identity;
+import org.apache.cloudstack.api.InternalIdentity;
+
+public interface NsxProvider extends InternalIdentity, Identity {
+ String getHostname();
+
+ String getPort();
+ String getProviderName();
+ String getUsername();
+ long getZoneId();
+
+ String getTier0Gateway();
+ String getEdgeCluster();
+
+ String getTransportZone();
+}
diff --git a/api/src/main/java/com/cloud/network/nsx/NsxService.java b/api/src/main/java/com/cloud/network/nsx/NsxService.java
new file mode 100644
index 000000000000..bc4e6aafbfec
--- /dev/null
+++ b/api/src/main/java/com/cloud/network/nsx/NsxService.java
@@ -0,0 +1,36 @@
+// Licensed to the Apache Software Foundation (ASF) under one
+// or more contributor license agreements. See the NOTICE file
+// distributed with this work for additional information
+// regarding copyright ownership. The ASF licenses this file
+// to you under the Apache License, Version 2.0 (the
+// "License"); you may not use this file except in compliance
+// with the License. You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing,
+// software distributed under the License is distributed on an
+// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+// KIND, either express or implied. See the License for the
+// specific language governing permissions and limitations
+// under the License.
+package com.cloud.network.nsx;
+
+import com.cloud.network.IpAddress;
+import com.cloud.network.vpc.Vpc;
+import org.apache.cloudstack.framework.config.ConfigKey;
+
+public interface NsxService {
+
+ ConfigKey NSX_API_FAILURE_RETRIES = new ConfigKey<>("Advanced", Integer.class,
+ "nsx.api.failure.retries", "30",
+ "Number of retries for NSX API operations in case of failures",
+ true, ConfigKey.Scope.Zone);
+ ConfigKey NSX_API_FAILURE_INTERVAL = new ConfigKey<>("Advanced", Integer.class,
+ "nsx.api.failure.interval", "60",
+ "Waiting time (in seconds) before retrying an NSX API operation in case of failure",
+ true, ConfigKey.Scope.Zone);
+
+ boolean createVpcNetwork(Long zoneId, long accountId, long domainId, Long vpcId, String vpcName, boolean sourceNatEnabled);
+ boolean updateVpcSourceNatIp(Vpc vpc, IpAddress address);
+}
diff --git a/api/src/main/java/com/cloud/network/vpc/VpcOffering.java b/api/src/main/java/com/cloud/network/vpc/VpcOffering.java
index b4df8e38dbac..38263f59667c 100644
--- a/api/src/main/java/com/cloud/network/vpc/VpcOffering.java
+++ b/api/src/main/java/com/cloud/network/vpc/VpcOffering.java
@@ -18,6 +18,7 @@
import java.util.Date;
+import com.cloud.offering.NetworkOffering;
import org.apache.cloudstack.api.Identity;
import org.apache.cloudstack.api.InternalIdentity;
@@ -29,6 +30,8 @@ public enum State {
public static final String defaultVPCOfferingName = "Default VPC offering";
public static final String defaultVPCNSOfferingName = "Default VPC offering with Netscaler";
public static final String redundantVPCOfferingName = "Redundant VPC offering";
+ public static final String DEFAULT_VPC_NAT_NSX_OFFERING_NAME = "VPC offering with NSX - NAT Mode";
+ public static final String DEFAULT_VPC_ROUTE_NSX_OFFERING_NAME = "VPC offering with NSX - Route Mode";
/**
*
@@ -53,6 +56,10 @@ public enum State {
*/
boolean isDefault();
+ boolean isForNsx();
+
+ NetworkOffering.NetworkMode getNetworkMode();
+
/**
* @return service offering id used by VPC virtual router
*/
@@ -73,4 +80,8 @@ public enum State {
Date getRemoved();
Date getCreated();
+
+ NetworkOffering.RoutingMode getRoutingMode();
+
+ Boolean isSpecifyAsNumber();
}
diff --git a/api/src/main/java/com/cloud/network/vpc/VpcProvisioningService.java b/api/src/main/java/com/cloud/network/vpc/VpcProvisioningService.java
index 5cccd6c5a823..10f1ddcc12d6 100644
--- a/api/src/main/java/com/cloud/network/vpc/VpcProvisioningService.java
+++ b/api/src/main/java/com/cloud/network/vpc/VpcProvisioningService.java
@@ -24,6 +24,7 @@
import org.apache.cloudstack.api.command.admin.vpc.UpdateVPCOfferingCmd;
import org.apache.cloudstack.api.command.user.vpc.ListVPCOfferingsCmd;
+import com.cloud.offering.NetworkOffering;
import com.cloud.utils.Pair;
import com.cloud.utils.net.NetUtils;
@@ -36,7 +37,10 @@ public interface VpcProvisioningService {
VpcOffering createVpcOffering(String name, String displayText, List supportedServices,
Map> serviceProviders,
Map serviceCapabilitystList, NetUtils.InternetProtocol internetProtocol,
- Long serviceOfferingId, List domainIds, List zoneIds, VpcOffering.State state);
+ Long serviceOfferingId, Boolean forNsx, NetworkOffering.NetworkMode networkMode,
+ List domainIds, List zoneIds, VpcOffering.State state,
+ NetworkOffering.RoutingMode routingMode, boolean specifyAsNumber);
+
Pair,Integer> listVpcOfferings(ListVPCOfferingsCmd cmd);
diff --git a/api/src/main/java/com/cloud/network/vpc/VpcService.java b/api/src/main/java/com/cloud/network/vpc/VpcService.java
index 0f0d29f4082c..af2a9847a62d 100644
--- a/api/src/main/java/com/cloud/network/vpc/VpcService.java
+++ b/api/src/main/java/com/cloud/network/vpc/VpcService.java
@@ -56,7 +56,8 @@ public interface VpcService {
* @throws ResourceAllocationException TODO
*/
Vpc createVpc(long zoneId, long vpcOffId, long vpcOwnerId, String vpcName, String displayText, String cidr, String networkDomain,
- String ip4Dns1, String ip4Dns2, String ip6Dns1, String ip6Dns2, Boolean displayVpc, Integer publicMtu)
+ String ip4Dns1, String ip4Dns2, String ip6Dns1, String ip6Dns2, Boolean displayVpc, Integer publicMtu, Integer cidrSize,
+ Long asNumber, List bgpPeerIds)
throws ResourceAllocationException;
/**
diff --git a/api/src/main/java/com/cloud/offering/NetworkOffering.java b/api/src/main/java/com/cloud/offering/NetworkOffering.java
index 207880ea28c0..7011aea679ee 100644
--- a/api/src/main/java/com/cloud/offering/NetworkOffering.java
+++ b/api/src/main/java/com/cloud/offering/NetworkOffering.java
@@ -43,6 +43,15 @@ public enum Detail {
InternalLbProvider, PublicLbProvider, servicepackageuuid, servicepackagedescription, PromiscuousMode, MacAddressChanges, ForgedTransmits, MacLearning, RelatedNetworkOffering, domainid, zoneid, pvlanType, internetProtocol
}
+ public enum NetworkMode {
+ NATTED,
+ ROUTED
+ }
+
+ enum RoutingMode {
+ Static, Dynamic
+ }
+
public final static String SystemPublicNetwork = "System-Public-Network";
public final static String SystemControlNetwork = "System-Control-Network";
public final static String SystemManagementNetwork = "System-Management-Network";
@@ -52,6 +61,11 @@ public enum Detail {
public final static String DefaultSharedNetworkOfferingWithSGService = "DefaultSharedNetworkOfferingWithSGService";
public static final String DEFAULT_TUNGSTEN_SHARED_NETWORK_OFFERING_WITH_SGSERVICE = "DefaultTungstenSharedNetworkOfferingWithSGService";
+ public static final String DEFAULT_NAT_NSX_OFFERING_FOR_VPC = "DefaultNATNSXNetworkOfferingForVpc";
+ public static final String DEFAULT_NAT_NSX_OFFERING_FOR_VPC_WITH_ILB = "DefaultNATNSXNetworkOfferingForVpcWithInternalLB";
+ public static final String DEFAULT_ROUTED_NSX_OFFERING_FOR_VPC = "DefaultRoutedNSXNetworkOfferingForVpc";
+ public static final String DEFAULT_NAT_NSX_OFFERING = "DefaultNATNSXNetworkOffering";
+ public static final String DEFAULT_ROUTED_NSX_OFFERING = "DefaultRoutedNSXNetworkOffering";
public final static String QuickCloudNoServices = "QuickCloudNoServices";
public final static String DefaultIsolatedNetworkOfferingWithSourceNatService = "DefaultIsolatedNetworkOfferingWithSourceNatService";
public final static String OvsIsolatedNetworkOfferingWithSourceNatService = "OvsIsolatedNetworkOfferingWithSourceNatService";
@@ -90,6 +104,10 @@ public enum Detail {
boolean isForTungsten();
+ boolean isForNsx();
+
+ NetworkMode getNetworkMode();
+
TrafficType getTrafficType();
boolean isSpecifyVlan();
@@ -151,4 +169,8 @@ public enum Detail {
String getServicePackage();
Date getCreated();
+
+ RoutingMode getRoutingMode();
+
+ Boolean isSpecifyAsNumber();
}
diff --git a/api/src/main/java/com/cloud/offering/ServiceOffering.java b/api/src/main/java/com/cloud/offering/ServiceOffering.java
index 58c7b0dbaf96..acb7a9f1cf91 100644
--- a/api/src/main/java/com/cloud/offering/ServiceOffering.java
+++ b/api/src/main/java/com/cloud/offering/ServiceOffering.java
@@ -33,6 +33,9 @@ public interface ServiceOffering extends InfrastructureEntity, InternalIdentity,
static final String internalLbVmDefaultOffUniqueName = "Cloud.Com-InternalLBVm";
// leaving cloud.com references as these are identifyers and no real world addresses (check against DB)
+
+ static final String PURGE_DB_ENTITIES_KEY = "purge.db.entities";
+
enum State {
Inactive, Active,
}
diff --git a/api/src/main/java/com/cloud/org/Cluster.java b/api/src/main/java/com/cloud/org/Cluster.java
index 4079c88dfde3..5124168084c6 100644
--- a/api/src/main/java/com/cloud/org/Cluster.java
+++ b/api/src/main/java/com/cloud/org/Cluster.java
@@ -16,6 +16,7 @@
// under the License.
package com.cloud.org;
+import com.cloud.cpu.CPU;
import com.cloud.hypervisor.Hypervisor.HypervisorType;
import com.cloud.org.Managed.ManagedState;
import org.apache.cloudstack.kernel.Partition;
@@ -38,4 +39,6 @@ public static enum ClusterType {
AllocationState getAllocationState();
ManagedState getManagedState();
+
+ CPU.CPUArch getArch();
}
diff --git a/api/src/main/java/com/cloud/storage/DataStoreRole.java b/api/src/main/java/com/cloud/storage/DataStoreRole.java
index 185e370159ca..d9af495ab00d 100644
--- a/api/src/main/java/com/cloud/storage/DataStoreRole.java
+++ b/api/src/main/java/com/cloud/storage/DataStoreRole.java
@@ -20,6 +20,7 @@
import com.cloud.utils.exception.CloudRuntimeException;
+
public enum DataStoreRole {
Primary("primary"), Image("image"), ImageCache("imagecache"), Backup("backup"), Object("object");
diff --git a/api/src/main/java/com/cloud/storage/Storage.java b/api/src/main/java/com/cloud/storage/Storage.java
index 1163fcc892fa..c997f5e1dbfd 100644
--- a/api/src/main/java/com/cloud/storage/Storage.java
+++ b/api/src/main/java/com/cloud/storage/Storage.java
@@ -16,10 +16,14 @@
// under the License.
package com.cloud.storage;
-import org.apache.commons.lang.NotImplementedException;
-
import java.util.ArrayList;
+import java.util.LinkedHashMap;
import java.util.List;
+import java.util.Map;
+import java.util.Objects;
+
+import org.apache.commons.lang.NotImplementedException;
+import org.apache.commons.lang3.StringUtils;
public class Storage {
public static enum ImageFormat {
@@ -135,37 +139,72 @@ public static enum TemplateType {
ISODISK /* Template corresponding to a iso (non root disk) present in an OVA */
}
- public static enum StoragePoolType {
- Filesystem(false, true, true), // local directory
- NetworkFilesystem(true, true, true), // NFS
- IscsiLUN(true, false, false), // shared LUN, with a clusterfs overlay
- Iscsi(true, false, false), // for e.g., ZFS Comstar
- ISO(false, false, false), // for iso image
- LVM(false, false, false), // XenServer local LVM SR
- CLVM(true, false, false),
- RBD(true, true, false), // http://libvirt.org/storage.html#StorageBackendRBD
- SharedMountPoint(true, true, true),
- VMFS(true, true, false), // VMware VMFS storage
- PreSetup(true, true, false), // for XenServer, Storage Pool is set up by customers.
- EXT(false, true, false), // XenServer local EXT SR
- OCFS2(true, false, false),
- SMB(true, false, false),
- Gluster(true, false, false),
- PowerFlex(true, true, true), // Dell EMC PowerFlex/ScaleIO (formerly VxFlexOS)
- ManagedNFS(true, false, false),
- Linstor(true, true, false),
- DatastoreCluster(true, true, false), // for VMware, to abstract pool of clusters
- StorPool(true, true, true),
- FiberChannel(true, true, false); // Fiber Channel Pool for KVM hypervisors is used to find the volume by WWN value (/dev/disk/by-id/wwn-)
-
+ /**
+ * StoragePoolTypes carry some details about the format and capabilities of a storage pool. While not necessarily a
+ * 1:1 with PrimaryDataStoreDriver (and for KVM agent, KVMStoragePool and StorageAdaptor) implementations, it is
+ * often used to decide which storage plugin or storage command to call, so it may be necessary for new storage
+ * plugins to add a StoragePoolType. This can be done by adding it below, or by creating a new public static final
+ * instance of StoragePoolType in the plugin itself, which registers it with the map.
+ *
+ * Note that if the StoragePoolType is for KVM and defined in plugin code rather than below, care must be taken to
+ * ensure this is available on the agent side as well. This is best done by defining the StoragePoolType in a common
+ * package available on both management server and agent plugin jars.
+ */
+ public static class StoragePoolType {
+ private static final Map map = new LinkedHashMap<>();
+
+ public static final StoragePoolType Filesystem = new StoragePoolType("Filesystem", false, true, true);
+ public static final StoragePoolType NetworkFilesystem = new StoragePoolType("NetworkFilesystem", true, true, true);
+ public static final StoragePoolType IscsiLUN = new StoragePoolType("IscsiLUN", true, false, false);
+ public static final StoragePoolType Iscsi = new StoragePoolType("Iscsi", true, false, false);
+ public static final StoragePoolType ISO = new StoragePoolType("ISO", false, false, false);
+ public static final StoragePoolType LVM = new StoragePoolType("LVM", false, false, false);
+ public static final StoragePoolType CLVM = new StoragePoolType("CLVM", true, false, false);
+ public static final StoragePoolType RBD = new StoragePoolType("RBD", true, true, false);
+ public static final StoragePoolType SharedMountPoint = new StoragePoolType("SharedMountPoint", true, true, true);
+ public static final StoragePoolType VMFS = new StoragePoolType("VMFS", true, true, false);
+ public static final StoragePoolType PreSetup = new StoragePoolType("PreSetup", true, true, false);
+ public static final StoragePoolType EXT = new StoragePoolType("EXT", false, true, false);
+ public static final StoragePoolType OCFS2 = new StoragePoolType("OCFS2", true, false, false);
+ public static final StoragePoolType SMB = new StoragePoolType("SMB", true, false, false);
+ public static final StoragePoolType Gluster = new StoragePoolType("Gluster", true, false, false);
+ public static final StoragePoolType PowerFlex = new StoragePoolType("PowerFlex", true, true, true);
+ public static final StoragePoolType ManagedNFS = new StoragePoolType("ManagedNFS", true, false, false);
+ public static final StoragePoolType Linstor = new StoragePoolType("Linstor", true, true, false);
+ public static final StoragePoolType DatastoreCluster = new StoragePoolType("DatastoreCluster", true, true, false);
+ public static final StoragePoolType StorPool = new StoragePoolType("StorPool", true,true,true);
+ public static final StoragePoolType FiberChannel = new StoragePoolType("FiberChannel", true,true,false);
+
+
+ private final String name;
private final boolean shared;
private final boolean overProvisioning;
private final boolean encryption;
- StoragePoolType(boolean shared, boolean overProvisioning, boolean encryption) {
+ /**
+ * New StoragePoolType, set the name to check with it in Dao (Note: Do not register it into the map of pool types).
+ * @param name name of the StoragePoolType.
+ */
+ public StoragePoolType(String name) {
+ this.name = name;
+ this.shared = false;
+ this.overProvisioning = false;
+ this.encryption = false;
+ }
+
+ /**
+ * Define a new StoragePoolType, and register it into the map of pool types known to the management server.
+ * @param name Simple unique name of the StoragePoolType.
+ * @param shared Storage pool is shared/accessible to multiple hypervisors
+ * @param overProvisioning Storage pool supports overProvisioning
+ * @param encryption Storage pool supports encrypted volumes
+ */
+ public StoragePoolType(String name, boolean shared, boolean overProvisioning, boolean encryption) {
+ this.name = name;
this.shared = shared;
this.overProvisioning = overProvisioning;
this.encryption = encryption;
+ addStoragePoolType(this);
}
public boolean isShared() {
@@ -179,6 +218,48 @@ public boolean supportsOverProvisioning() {
public boolean supportsEncryption() {
return encryption;
}
+
+ private static void addStoragePoolType(StoragePoolType storagePoolType) {
+ map.putIfAbsent(storagePoolType.name, storagePoolType);
+ }
+
+ public static StoragePoolType[] values() {
+ return map.values().toArray(StoragePoolType[]::new).clone();
+ }
+
+ public static StoragePoolType valueOf(String name) {
+ if (StringUtils.isBlank(name)) {
+ return null;
+ }
+
+ StoragePoolType storage = map.get(name);
+ if (storage == null) {
+ throw new IllegalArgumentException("StoragePoolType '" + name + "' not found");
+ }
+ return storage;
+ }
+
+ @Override
+ public String toString() {
+ return name;
+ }
+
+ public String name() {
+ return name;
+ }
+
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) return true;
+ if (o == null || getClass() != o.getClass()) return false;
+ StoragePoolType that = (StoragePoolType) o;
+ return Objects.equals(name, that.name);
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(name);
+ }
}
public static List getNonSharedStoragePoolTypes() {
diff --git a/api/src/main/java/com/cloud/storage/StorageService.java b/api/src/main/java/com/cloud/storage/StorageService.java
index 1ce335b01153..b8df75cd3e4c 100644
--- a/api/src/main/java/com/cloud/storage/StorageService.java
+++ b/api/src/main/java/com/cloud/storage/StorageService.java
@@ -95,6 +95,10 @@ public interface StorageService {
StoragePool updateStoragePool(UpdateStoragePoolCmd cmd) throws IllegalArgumentException;
+ StoragePool enablePrimaryStoragePool(Long id);
+
+ StoragePool disablePrimaryStoragePool(Long id);
+
StoragePool getStoragePool(long id);
boolean deleteImageStore(DeleteImageStoreCmd cmd);
diff --git a/api/src/main/java/com/cloud/storage/Upload.java b/api/src/main/java/com/cloud/storage/Upload.java
index 59d203ac73ae..4e696e877cc8 100644
--- a/api/src/main/java/com/cloud/storage/Upload.java
+++ b/api/src/main/java/com/cloud/storage/Upload.java
@@ -40,7 +40,7 @@ public static enum Status {
}
public static enum Type {
- VOLUME, TEMPLATE, ISO
+ VOLUME, SNAPSHOT, TEMPLATE, ISO
}
public static enum Mode {
diff --git a/api/src/main/java/com/cloud/storage/Volume.java b/api/src/main/java/com/cloud/storage/Volume.java
index 308ed2544ed0..c7fbdb0a5445 100644
--- a/api/src/main/java/com/cloud/storage/Volume.java
+++ b/api/src/main/java/com/cloud/storage/Volume.java
@@ -30,6 +30,8 @@
public interface Volume extends ControlledEntity, Identity, InternalIdentity, BasedOn, StateObject, Displayable {
+ static final long DISK_OFFERING_SUITABILITY_CHECK_VOLUME_ID = -1;
+
// Managed storage volume parameters (specified in the compute/disk offering for PowerFlex)
String BANDWIDTH_LIMIT_IN_MBPS = "bandwidthLimitInMbps";
String IOPS_LIMIT = "iopsLimit";
@@ -269,11 +271,13 @@ enum Event {
void setExternalUuid(String externalUuid);
- public Long getPassphraseId();
+ Long getPassphraseId();
+
+ void setPassphraseId(Long id);
- public void setPassphraseId(Long id);
+ String getEncryptFormat();
- public String getEncryptFormat();
+ void setEncryptFormat(String encryptFormat);
- public void setEncryptFormat(String encryptFormat);
+ boolean isDeleteProtection();
}
diff --git a/api/src/main/java/com/cloud/storage/VolumeApiService.java b/api/src/main/java/com/cloud/storage/VolumeApiService.java
index 4f09702b7dba..6f4c7aa09e26 100644
--- a/api/src/main/java/com/cloud/storage/VolumeApiService.java
+++ b/api/src/main/java/com/cloud/storage/VolumeApiService.java
@@ -102,8 +102,12 @@ public interface VolumeApiService {
boolean deleteVolume(long volumeId, Account caller);
+ Volume changeDiskOfferingForVolumeInternal(Long volumeId, Long newDiskOfferingId, Long newSize, Long newMinIops, Long newMaxIops, boolean autoMigrateVolume, boolean shrinkOk) throws ResourceAllocationException;
+
Volume attachVolumeToVM(AttachVolumeCmd command);
+ Volume attachVolumeToVM(Long vmId, Long volumeId, Long deviceId, Boolean allowAttachForSharedFS);
+
Volume detachVolumeViaDestroyVM(long vmId, long volumeId);
Volume detachVolumeFromVM(DetachVolumeCmd cmd);
@@ -113,7 +117,9 @@ Snapshot takeSnapshot(Long volumeId, Long policyId, Long snapshotId, Account acc
Snapshot allocSnapshot(Long volumeId, Long policyId, String snapshotName, Snapshot.LocationType locationType, List zoneIds) throws ResourceAllocationException;
- Volume updateVolume(long volumeId, String path, String state, Long storageId, Boolean displayVolume, String customId, long owner, String chainInfo, String name);
+ Volume updateVolume(long volumeId, String path, String state, Long storageId,
+ Boolean displayVolume, Boolean deleteProtection,
+ String customId, long owner, String chainInfo, String name);
/**
* Extracts the volume to a particular location.
diff --git a/api/src/main/java/com/cloud/storage/snapshot/SnapshotApiService.java b/api/src/main/java/com/cloud/storage/snapshot/SnapshotApiService.java
index 0893f337ce2f..67afd6aa4e24 100644
--- a/api/src/main/java/com/cloud/storage/snapshot/SnapshotApiService.java
+++ b/api/src/main/java/com/cloud/storage/snapshot/SnapshotApiService.java
@@ -21,6 +21,7 @@
import org.apache.cloudstack.api.command.user.snapshot.CopySnapshotCmd;
import org.apache.cloudstack.api.command.user.snapshot.CreateSnapshotPolicyCmd;
import org.apache.cloudstack.api.command.user.snapshot.DeleteSnapshotPoliciesCmd;
+import org.apache.cloudstack.api.command.user.snapshot.ExtractSnapshotCmd;
import org.apache.cloudstack.api.command.user.snapshot.ListSnapshotPoliciesCmd;
import org.apache.cloudstack.api.command.user.snapshot.ListSnapshotsCmd;
import org.apache.cloudstack.api.command.user.snapshot.UpdateSnapshotPolicyCmd;
@@ -106,6 +107,16 @@ Snapshot allocSnapshot(Long volumeId, Long policyId, String snapshotName, Snapsh
*/
Snapshot createSnapshot(Long volumeId, Long policyId, Long snapshotId, Account snapshotOwner);
+ /**
+ * Extracts the snapshot to a particular location.
+ *
+ * @param cmd
+ * the command specifying url (where the snapshot needs to be extracted to), zoneId (zone where the snapshot exists) and
+ * id (the id of the snapshot)
+ *
+ */
+ String extractSnapshot(ExtractSnapshotCmd cmd);
+
/**
* Archives a snapshot from primary storage to secondary storage.
* @param id Snapshot ID
diff --git a/api/src/main/java/com/cloud/template/VirtualMachineTemplate.java b/api/src/main/java/com/cloud/template/VirtualMachineTemplate.java
index 1f8cef0365b1..d8872d5fe724 100644
--- a/api/src/main/java/com/cloud/template/VirtualMachineTemplate.java
+++ b/api/src/main/java/com/cloud/template/VirtualMachineTemplate.java
@@ -19,6 +19,7 @@
import java.util.Date;
import java.util.Map;
+import com.cloud.cpu.CPU;
import com.cloud.user.UserData;
import org.apache.cloudstack.acl.ControlledEntity;
import org.apache.cloudstack.api.Identity;
@@ -148,4 +149,6 @@ public enum TemplateFilter {
UserData.UserDataOverridePolicy getUserDataOverridePolicy();
+ CPU.CPUArch getArch();
+
}
diff --git a/api/src/main/java/com/cloud/user/ResourceLimitService.java b/api/src/main/java/com/cloud/user/ResourceLimitService.java
index f2d87a4390df..2f4ad1347be5 100644
--- a/api/src/main/java/com/cloud/user/ResourceLimitService.java
+++ b/api/src/main/java/com/cloud/user/ResourceLimitService.java
@@ -18,13 +18,18 @@
import java.util.List;
+import org.apache.cloudstack.api.response.AccountResponse;
+import org.apache.cloudstack.api.response.DomainResponse;
+import org.apache.cloudstack.framework.config.ConfigKey;
+
import com.cloud.configuration.Resource.ResourceType;
import com.cloud.configuration.ResourceCount;
import com.cloud.configuration.ResourceLimit;
import com.cloud.domain.Domain;
import com.cloud.exception.ResourceAllocationException;
-import org.apache.cloudstack.framework.config.ConfigKey;
-import org.apache.cloudstack.user.ResourceReservation;
+import com.cloud.offering.DiskOffering;
+import com.cloud.offering.ServiceOffering;
+import com.cloud.template.VirtualMachineTemplate;
public interface ResourceLimitService {
@@ -33,7 +38,21 @@ public interface ResourceLimitService {
static final ConfigKey MaxProjectSecondaryStorage = new ConfigKey<>("Project Defaults", Long.class, "max.project.secondary.storage", "400",
"The default maximum secondary storage space (in GiB) that can be used for a project", false);
static final ConfigKey ResourceCountCheckInterval = new ConfigKey<>("Advanced", Long.class, "resourcecount.check.interval", "300",
- "Time (in seconds) to wait before running resource recalculation and fixing task. Default is 300 seconds, Setting this to 0 disables execution of the task", false);
+ "Time (in seconds) to wait before running resource recalculation and fixing tasks like stale resource reservation cleanup" +
+ ". Default is 300 seconds, Setting this to 0 disables execution of the task", true);
+ static final ConfigKey ResourceReservationCleanupDelay = new ConfigKey<>("Advanced", Long.class, "resource.reservation.cleanup.delay", "3600",
+ "Time (in seconds) after which a resource reservation gets deleted. Default is 3600 seconds, Setting this to 0 disables execution of the task", true);
+ static final ConfigKey ResourceLimitHostTags = new ConfigKey<>("Advanced", String.class, "resource.limit.host.tags", "",
+ "A comma-separated list of tags for host resource limits", true);
+ static final ConfigKey ResourceLimitStorageTags = new ConfigKey<>("Advanced", String.class, "resource.limit.storage.tags", "",
+ "A comma-separated list of tags for storage resource limits", true);
+ static final ConfigKey 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 DefaultMaxDomainProjects = new ConfigKey<>("Domain Defaults",Long.class,"max.domain.projects","50",
+ "The default maximum number of projects that can be created for a domain",false);
+
+ static final List HostTagsSupportingTypes = List.of(ResourceType.user_vm, ResourceType.cpu, ResourceType.memory);
+ static final List StorageTagsSupportingTypes = List.of(ResourceType.volume, ResourceType.primary_storage);
/**
* Updates an existing resource limit with the specified details. If a limit doesn't exist, will create one.
@@ -46,22 +65,27 @@ public interface ResourceLimitService {
* TODO
* @param max
* TODO
+ * @param tag
+ * tag for the resource type
*
* @return the updated/created resource limit
*/
- ResourceLimit updateResourceLimit(Long accountId, Long domainId, Integer resourceType, Long max);
+ ResourceLimit updateResourceLimit(Long accountId, Long domainId, Integer resourceType, Long max, String tag);
/**
* Updates an existing resource count details for the account/domain
*
* @param accountId
- * TODO
+ * Id of the account for which resource recalculation to be done
* @param domainId
- * TODO
+ * Id of the domain for which resource recalculation to be doneDO
* @param typeId
- * TODO
+ * type of the resource for which recalculation to be done
+ * @param tag
+ * tag for the resource type for which recalculation to be done
* @return the updated/created resource counts
*/
+ List extends ResourceCount> recalculateResourceCount(Long accountId, Long domainId, Integer typeId, String tag);
List extends ResourceCount> recalculateResourceCount(Long accountId, Long domainId, Integer typeId);
/**
@@ -77,7 +101,7 @@ public interface ResourceLimitService {
* TODO
* @return a list of limits that match the criteria
*/
- public List extends ResourceLimit> searchForLimits(Long id, Long accountId, Long domainId, ResourceType resourceType, Long startIndex, Long pageSizeVal);
+ public List extends ResourceLimit> searchForLimits(Long id, Long accountId, Long domainId, ResourceType resourceType, String tag, Long startIndex, Long pageSizeVal);
/**
* Finds the resource limit for a specified account and type. If the account has an infinite limit, will check
@@ -85,9 +109,10 @@ public interface ResourceLimitService {
*
* @param account
* @param type
+ * @param tag
* @return resource limit
*/
- public long findCorrectResourceLimitForAccount(Account account, ResourceType type);
+ public long findCorrectResourceLimitForAccount(Account account, ResourceType type, String tag);
/**
* This call should be used when we have already queried resource limit for an account. This is to handle
@@ -105,9 +130,10 @@ public interface ResourceLimitService {
*
* @param domain
* @param type
+ * @param tag
* @return resource limit
*/
- public long findCorrectResourceLimitForDomain(Domain domain, ResourceType type);
+ public long findCorrectResourceLimitForDomain(Domain domain, ResourceType type, String tag);
/**
* Finds the default resource limit for a specified type.
@@ -122,9 +148,10 @@ public interface ResourceLimitService {
*
* @param domain
* @param type
+ * @param tag
* @return resource limit
*/
- public long findCorrectResourceLimitForAccountAndDomain(Account account, Domain domain, ResourceType type);
+ public long findCorrectResourceLimitForAccountAndDomain(Account account, Domain domain, ResourceType type, String tag);
/**
* Increments the resource count
@@ -134,6 +161,7 @@ public interface ResourceLimitService {
* @param delta
*/
public void incrementResourceCount(long accountId, ResourceType type, Long... delta);
+ public void incrementResourceCountWithTag(long accountId, ResourceType type, String tag, Long... delta);
/**
* Decrements the resource count
@@ -143,6 +171,7 @@ public interface ResourceLimitService {
* @param delta
*/
public void decrementResourceCount(long accountId, ResourceType type, Long... delta);
+ public void decrementResourceCountWithTag(long accountId, ResourceType type, String tag, Long... delta);
/**
* Checks if a limit has been exceeded for an account
@@ -155,15 +184,17 @@ public interface ResourceLimitService {
* @throws ResourceAllocationException
*/
public void checkResourceLimit(Account account, ResourceCount.ResourceType type, long... count) throws ResourceAllocationException;
+ public void checkResourceLimitWithTag(Account account, ResourceCount.ResourceType type, String tag, long... count) throws ResourceAllocationException;
/**
* Gets the count of resources for a resource type and account
*
* @param account
* @param type
+ * @param tag
* @return count of resources
*/
- public long getResourceCount(Account account, ResourceType type);
+ public long getResourceCount(Account account, ResourceType type, String tag);
/**
* Checks if a limit has been exceeded for an account if displayResource flag is on
@@ -208,15 +239,49 @@ public interface ResourceLimitService {
*/
void decrementResourceCount(long accountId, ResourceType type, Boolean displayResource, Long... delta);
- /**
- * Adds a reservation that will be counted in subsequent calls to {count}getResourceCount{code} until {code}this[code}
- * is closed. It will create a reservation record that will be counted when resource limits are checked.
- * @param account The account for which the reservation is.
- * @param displayResource whether this resource is shown to users at all (if not it is not counted to limits)
- * @param type resource type
- * @param delta amount to reserve (will not be <+ 0)
- * @return a {code}AutoClosable{Code} object representing the resource the user needs
- */
- ResourceReservation getReservation(Account account, Boolean displayResource, ResourceType type, Long delta) throws ResourceAllocationException;
+ List getResourceLimitHostTags();
+ List getResourceLimitHostTags(ServiceOffering serviceOffering, VirtualMachineTemplate template);
+ List getResourceLimitStorageTags();
+ List getResourceLimitStorageTags(DiskOffering diskOffering);
+ void updateTaggedResourceLimitsAndCountsForAccounts(List responses, String tag);
+ void updateTaggedResourceLimitsAndCountsForDomains(List responses, String tag);
+ void checkVolumeResourceLimit(Account owner, Boolean display, Long size, DiskOffering diskOffering) throws ResourceAllocationException;
+
+ void checkVolumeResourceLimitForDiskOfferingChange(Account owner, Boolean display, Long currentSize, Long newSize,
+ DiskOffering currentOffering, DiskOffering newOffering) throws ResourceAllocationException;
+
+ void checkPrimaryStorageResourceLimit(Account owner, Boolean display, Long size, DiskOffering diskOffering) throws ResourceAllocationException;
+
+ void incrementVolumeResourceCount(long accountId, Boolean display, Long size, DiskOffering diskOffering);
+ void decrementVolumeResourceCount(long accountId, Boolean display, Long size, DiskOffering diskOffering);
+
+ void updateVmResourceCountForTemplateChange(long accountId, Boolean display, ServiceOffering offering, VirtualMachineTemplate currentTemplate, VirtualMachineTemplate newTemplate);
+
+ void updateVmResourceCountForServiceOfferingChange(long accountId, Boolean display, Long currentCpu, Long newCpu, Long currentMemory,
+ Long newMemory,
+ ServiceOffering currentOffering, ServiceOffering newOffering,
+ VirtualMachineTemplate template);
+
+ void updateVolumeResourceCountForDiskOfferingChange(long accountId, Boolean display, Long currentSize, Long newSize,
+ DiskOffering currentDiskOffering, DiskOffering newDiskOffering);
+
+ void incrementVolumePrimaryStorageResourceCount(long accountId, Boolean display, Long size, DiskOffering diskOffering);
+ void decrementVolumePrimaryStorageResourceCount(long accountId, Boolean display, Long size, DiskOffering diskOffering);
+ void checkVmResourceLimit(Account owner, Boolean display, ServiceOffering serviceOffering, VirtualMachineTemplate template) throws ResourceAllocationException;
+ void incrementVmResourceCount(long accountId, Boolean display, ServiceOffering serviceOffering, VirtualMachineTemplate template);
+ void decrementVmResourceCount(long accountId, Boolean display, ServiceOffering serviceOffering, VirtualMachineTemplate template);
+
+ void checkVmResourceLimitsForServiceOfferingChange(Account owner, Boolean display, Long currentCpu, Long newCpu,
+ Long currentMemory, Long newMemory, ServiceOffering currentOffering, ServiceOffering newOffering, VirtualMachineTemplate template) throws ResourceAllocationException;
+
+ void checkVmResourceLimitsForTemplateChange(Account owner, Boolean display, ServiceOffering offering,
+ VirtualMachineTemplate currentTemplate, VirtualMachineTemplate newTemplate) throws ResourceAllocationException;
+
+ void checkVmCpuResourceLimit(Account owner, Boolean display, ServiceOffering serviceOffering, VirtualMachineTemplate template, Long cpu) throws ResourceAllocationException;
+ void incrementVmCpuResourceCount(long accountId, Boolean display, ServiceOffering serviceOffering, VirtualMachineTemplate template, Long cpu);
+ void decrementVmCpuResourceCount(long accountId, Boolean display, ServiceOffering serviceOffering, VirtualMachineTemplate template, Long cpu);
+ void checkVmMemoryResourceLimit(Account owner, Boolean display, ServiceOffering serviceOffering, VirtualMachineTemplate template, Long memory) throws ResourceAllocationException;
+ void incrementVmMemoryResourceCount(long accountId, Boolean display, ServiceOffering serviceOffering, VirtualMachineTemplate template, Long memory);
+ void decrementVmMemoryResourceCount(long accountId, Boolean display, ServiceOffering serviceOffering, VirtualMachineTemplate template, Long memory);
}
diff --git a/api/src/main/java/com/cloud/vm/UserVmService.java b/api/src/main/java/com/cloud/vm/UserVmService.java
index 2fdd25924831..5a9301eef7fa 100644
--- a/api/src/main/java/com/cloud/vm/UserVmService.java
+++ b/api/src/main/java/com/cloud/vm/UserVmService.java
@@ -68,10 +68,7 @@ public interface UserVmService {
/**
* Destroys one virtual machine
*
- * @param userId
- * the id of the user performing the action
- * @param vmId
- * the id of the virtual machine.
+ * @param cmd the API Command Object containg the parameters to use for this service action
* @throws ConcurrentOperationException
* @throws ResourceUnavailableException
*/
@@ -112,14 +109,14 @@ public interface UserVmService {
UserVm startVirtualMachine(StartVMCmd cmd) throws StorageUnavailableException, ExecutionException, ConcurrentOperationException, ResourceUnavailableException,
InsufficientCapacityException, ResourceAllocationException;
+ UserVm rebootVirtualMachine(RebootVMCmd cmd) throws InsufficientCapacityException, ResourceUnavailableException, ResourceAllocationException;
+
void startVirtualMachine(UserVm vm) throws OperationTimedoutException, ResourceUnavailableException, InsufficientCapacityException;
void startVirtualMachineForHA(VirtualMachine vm, Map params,
DeploymentPlanner planner) throws InsufficientCapacityException, ResourceUnavailableException,
ConcurrentOperationException, OperationTimedoutException;
- UserVm rebootVirtualMachine(RebootVMCmd cmd) throws InsufficientCapacityException, ResourceUnavailableException;
-
UserVm updateVirtualMachine(UpdateVMCmd cmd) throws ResourceUnavailableException, InsufficientCapacityException;
/**
@@ -156,14 +153,6 @@ void startVirtualMachineForHA(VirtualMachine vm, Map volumeToPool);
- UserVm restoreVM(RestoreVMCmd cmd) throws InsufficientCapacityException, ResourceUnavailableException;
+ UserVm restoreVM(RestoreVMCmd cmd) throws InsufficientCapacityException, ResourceUnavailableException, ResourceAllocationException;
UserVm restoreVirtualMachine(Account caller, long vmId, Long newTemplateId, Long rootDiskOfferingId, boolean expunge, Map details) throws InsufficientCapacityException, ResourceUnavailableException;
diff --git a/api/src/main/java/com/cloud/vm/VirtualMachine.java b/api/src/main/java/com/cloud/vm/VirtualMachine.java
index e7c5efb773b1..e2ea408e7b8c 100644
--- a/api/src/main/java/com/cloud/vm/VirtualMachine.java
+++ b/api/src/main/java/com/cloud/vm/VirtualMachine.java
@@ -333,6 +333,8 @@ public boolean isUsedBySystem() {
*/
Date getCreated();
+ Date getRemoved();
+
long getServiceOfferingId();
Long getBackupOfferingId();
diff --git a/api/src/main/java/com/cloud/vm/VmDetailConstants.java b/api/src/main/java/com/cloud/vm/VmDetailConstants.java
index 9338cc11cd4d..603948d76cfc 100644
--- a/api/src/main/java/com/cloud/vm/VmDetailConstants.java
+++ b/api/src/main/java/com/cloud/vm/VmDetailConstants.java
@@ -19,6 +19,7 @@
public interface VmDetailConstants {
String KEYBOARD = "keyboard";
String CPU_CORE_PER_SOCKET = "cpu.corespersocket";
+ String CPU_THREAD_PER_CORE = "cpu.threadspercore";
String ROOT_DISK_SIZE = "rootdisksize";
String BOOT_MODE = "boot.mode";
String NAME_ON_HYPERVISOR= "nameonhypervisor";
diff --git a/api/src/main/java/org/apache/cloudstack/acl/Role.java b/api/src/main/java/org/apache/cloudstack/acl/Role.java
index 5e5ffd583d87..ce4166ef4c81 100644
--- a/api/src/main/java/org/apache/cloudstack/acl/Role.java
+++ b/api/src/main/java/org/apache/cloudstack/acl/Role.java
@@ -21,7 +21,18 @@
import org.apache.cloudstack.api.InternalIdentity;
public interface Role extends RoleEntity, InternalIdentity, Identity {
+
+ enum State {
+ ENABLED, DISABLED;
+
+ @Override
+ public String toString(){
+ return super.toString().toLowerCase();
+ }
+ }
+
RoleType getRoleType();
boolean isDefault();
boolean isPublicRole();
+ State getState();
}
diff --git a/api/src/main/java/org/apache/cloudstack/acl/RoleService.java b/api/src/main/java/org/apache/cloudstack/acl/RoleService.java
index 07f62a7e7f8f..68204d432534 100644
--- a/api/src/main/java/org/apache/cloudstack/acl/RoleService.java
+++ b/api/src/main/java/org/apache/cloudstack/acl/RoleService.java
@@ -54,6 +54,10 @@ public interface RoleService {
boolean deleteRole(Role role);
+ boolean enableRole(Role role);
+
+ boolean disableRole(Role role);
+
RolePermission findRolePermission(Long id);
RolePermission findRolePermissionByRoleIdAndRule(Long roleId, String rule);
@@ -76,7 +80,7 @@ public interface RoleService {
*/
List listRoles();
- Pair, Integer> listRoles(Long startIndex, Long limit);
+ Pair, Integer> listRoles(String state, Long startIndex, Long limit);
/**
* Find all roles that have the giving {@link String} as part of their name.
@@ -84,14 +88,14 @@ public interface RoleService {
*/
List findRolesByName(String name);
- Pair, Integer> findRolesByName(String name, String keyword, Long startIndex, Long limit);
+ Pair, Integer> findRolesByName(String name, String keyword, String state, Long startIndex, Long limit);
/**
* Find all roles by {@link RoleType}. If the role type is {@link RoleType#Admin}, the calling account must be a root admin, otherwise we return an empty list.
*/
List findRolesByType(RoleType roleType);
- Pair, Integer> findRolesByType(RoleType roleType, Long startIndex, Long limit);
+ Pair, Integer> findRolesByType(RoleType roleType, String state, Long startIndex, Long limit);
List findAllPermissionsBy(Long roleId);
diff --git a/api/src/main/java/org/apache/cloudstack/acl/RoleType.java b/api/src/main/java/org/apache/cloudstack/acl/RoleType.java
index ec82cd6605bb..005d47c85bc2 100644
--- a/api/src/main/java/org/apache/cloudstack/acl/RoleType.java
+++ b/api/src/main/java/org/apache/cloudstack/acl/RoleType.java
@@ -20,7 +20,8 @@
import com.cloud.user.Account;
import com.google.common.base.Enums;
-import org.apache.log4j.Logger;
+import org.apache.logging.log4j.Logger;
+import org.apache.logging.log4j.LogManager;
import java.util.HashMap;
import java.util.Map;
@@ -37,7 +38,7 @@ public enum RoleType {
private Account.Type accountType;
private int mask;
- private static Logger logger = Logger.getLogger(RoleType.class.getName());
+ private static Logger LOGGER = LogManager.getLogger(RoleType.class.getName());
private static Map ACCOUNT_TYPE_MAP = new HashMap<>();
static {
@@ -104,10 +105,10 @@ public static Long getRoleByAccountType(final Long roleId, final Account.Type ac
* */
public static Account.Type getAccountTypeByRole(final Role role, final Account.Type defautAccountType) {
if (role != null) {
- logger.debug(String.format("Role [%s] is not null; therefore, we use its account type [%s].", role, defautAccountType));
+ LOGGER.debug(String.format("Role [%s] is not null; therefore, we use its account type [%s].", role, defautAccountType));
return role.getRoleType().getAccountType();
}
- logger.debug(String.format("Role is null; therefore, we use the default account type [%s] value.", defautAccountType));
+ LOGGER.debug(String.format("Role is null; therefore, we use the default account type [%s] value.", defautAccountType));
return defautAccountType;
}
}
diff --git a/api/src/main/java/org/apache/cloudstack/affinity/AffinityGroupResponse.java b/api/src/main/java/org/apache/cloudstack/affinity/AffinityGroupResponse.java
index 6cda8d07bd86..69f391a5656a 100644
--- a/api/src/main/java/org/apache/cloudstack/affinity/AffinityGroupResponse.java
+++ b/api/src/main/java/org/apache/cloudstack/affinity/AffinityGroupResponse.java
@@ -25,6 +25,7 @@
import org.apache.cloudstack.api.BaseResponse;
import org.apache.cloudstack.api.EntityReference;
import org.apache.cloudstack.api.response.ControlledViewEntityResponse;
+import org.apache.cloudstack.dedicated.DedicatedResourceResponse;
import com.cloud.serializer.Param;
@@ -76,6 +77,10 @@ public class AffinityGroupResponse extends BaseResponse implements ControlledVie
@Param(description = "virtual machine IDs associated with this affinity group")
private List vmIdList;
+ @SerializedName("dedicatedresources")
+ @Param(description = "dedicated resources associated with this affinity group")
+ private List dedicatedResources;
+
public AffinityGroupResponse() {
}
@@ -171,4 +176,12 @@ public void addVMId(String vmId) {
this.vmIdList.add(vmId);
}
+ public void addDedicatedResource(DedicatedResourceResponse dedicatedResourceResponse) {
+ if (this.dedicatedResources == null) {
+ this.dedicatedResources = new ArrayList<>();
+ }
+
+ this.dedicatedResources.add(dedicatedResourceResponse);
+ }
+
}
diff --git a/api/src/main/java/org/apache/cloudstack/api/AbstractGetUploadParamsCmd.java b/api/src/main/java/org/apache/cloudstack/api/AbstractGetUploadParamsCmd.java
index ed3381ae97c0..083a1be00f56 100644
--- a/api/src/main/java/org/apache/cloudstack/api/AbstractGetUploadParamsCmd.java
+++ b/api/src/main/java/org/apache/cloudstack/api/AbstractGetUploadParamsCmd.java
@@ -25,11 +25,9 @@
import org.apache.cloudstack.api.response.GetUploadParamsResponse;
import org.apache.cloudstack.api.response.ProjectResponse;
import org.apache.cloudstack.api.response.ZoneResponse;
-import org.apache.log4j.Logger;
public abstract class AbstractGetUploadParamsCmd extends BaseCmd {
- public static final Logger s_logger = Logger.getLogger(AbstractGetUploadParamsCmd.class.getName());
@Parameter(name = ApiConstants.NAME, type = CommandType.STRING, required = true, description = "the name of the volume/template/iso")
private String name;
diff --git a/api/src/main/java/org/apache/cloudstack/api/ApiArgValidator.java b/api/src/main/java/org/apache/cloudstack/api/ApiArgValidator.java
index 3e06fc0e44eb..380472352735 100644
--- a/api/src/main/java/org/apache/cloudstack/api/ApiArgValidator.java
+++ b/api/src/main/java/org/apache/cloudstack/api/ApiArgValidator.java
@@ -32,4 +32,9 @@ public enum ApiArgValidator {
* Validates if the parameter is an UUID with the method {@link UuidUtils#isUuid(String)}.
*/
UuidString,
+
+ /**
+ * Validates if the parameter is a valid RFC Compliance domain name.
+ */
+ RFCComplianceDomainName,
}
diff --git a/api/src/main/java/org/apache/cloudstack/api/ApiCommandResourceType.java b/api/src/main/java/org/apache/cloudstack/api/ApiCommandResourceType.java
index 938936765167..f2f52cec9697 100644
--- a/api/src/main/java/org/apache/cloudstack/api/ApiCommandResourceType.java
+++ b/api/src/main/java/org/apache/cloudstack/api/ApiCommandResourceType.java
@@ -85,7 +85,8 @@ public enum ApiCommandResourceType {
Bucket(org.apache.cloudstack.storage.object.Bucket.class),
QuotaTariff(org.apache.cloudstack.quota.QuotaTariff.class),
KubernetesCluster(null),
- KubernetesSupportedVersion(null);
+ KubernetesSupportedVersion(null),
+ SharedFS(org.apache.cloudstack.storage.sharedfs.SharedFS.class);
private final Class> clazz;
diff --git a/api/src/main/java/org/apache/cloudstack/api/ApiConstants.java b/api/src/main/java/org/apache/cloudstack/api/ApiConstants.java
index d6099ac47178..bb16b0ff90de 100644
--- a/api/src/main/java/org/apache/cloudstack/api/ApiConstants.java
+++ b/api/src/main/java/org/apache/cloudstack/api/ApiConstants.java
@@ -29,10 +29,18 @@ public class ApiConstants {
public static final String ADDRESS = "address";
public static final String ALGORITHM = "algorithm";
public static final String ALIAS = "alias";
+ public static final String ALLOCATED_DATE = "allocateddate";
public static final String ALLOCATED_ONLY = "allocatedonly";
+ public static final String ALLOCATED_TIME = "allocated";
+ public static final String ALLOW_USER_FORCE_STOP_VM = "allowuserforcestopvm";
public static final String ANNOTATION = "annotation";
public static final String API_KEY = "apikey";
public static final String ARCHIVED = "archived";
+ public static final String ARCH = "arch";
+ public static final String AS_NUMBER = "asnumber";
+ public static final String AS_NUMBER_ID = "asnumberid";
+ public static final String ASN_RANGE = "asnrange";
+ public static final String ASN_RANGE_ID = "asnrangeid";
public static final String ASYNC_BACKUP = "asyncbackup";
public static final String AUTO_SELECT = "autoselect";
public static final String USER_API_KEY = "userapikey";
@@ -46,6 +54,8 @@ public class ApiConstants {
public static final String BACKUP_OFFERING_NAME = "backupofferingname";
public static final String BACKUP_OFFERING_ID = "backupofferingid";
public static final String BASE64_IMAGE = "base64image";
+ public static final String BGP_PEERS = "bgppeers";
+ public static final String BGP_PEER_IDS = "bgppeerids";
public static final String BITS = "bits";
public static final String BOOTABLE = "bootable";
public static final String BIND_DN = "binddn";
@@ -87,6 +97,8 @@ public class ApiConstants {
public static final String DNS_SEARCH_ORDER = "dnssearchorder";
public static final String CHAIN_INFO = "chaininfo";
public static final String CIDR = "cidr";
+ public static final String CIDR_SIZE = "cidrsize";
+
public static final String IP6_CIDR = "ip6cidr";
public static final String CIDR_LIST = "cidrlist";
public static final String DEST_CIDR_LIST = "destcidrlist";
@@ -126,6 +138,7 @@ public class ApiConstants {
public static final String DATACENTER_NAME = "datacentername";
public static final String DATADISK_OFFERING_LIST = "datadiskofferinglist";
public static final String DEFAULT_VALUE = "defaultvalue";
+ public static final String DELETE_PROTECTION = "deleteprotection";
public static final String DESCRIPTION = "description";
public static final String DESTINATION = "destination";
public static final String DESTINATION_ZONE_ID = "destzoneid";
@@ -170,11 +183,14 @@ public class ApiConstants {
public static final String DURATION = "duration";
public static final String ELIGIBLE = "eligible";
public static final String EMAIL = "email";
+ public static final String END_ASN = "endasn";
public static final String END_DATE = "enddate";
public static final String END_IP = "endip";
public static final String END_IPV6 = "endipv6";
public static final String END_PORT = "endport";
public static final String ENTRY_TIME = "entrytime";
+ public static final String EVENT_ID = "eventid";
+ public static final String EVENT_TYPE = "eventtype";
public static final String EXPIRES = "expires";
public static final String EXTRA_CONFIG = "extraconfig";
public static final String EXTRA_DHCP_OPTION = "extradhcpoption";
@@ -185,6 +201,7 @@ public class ApiConstants {
public static final String EXTERNAL_UUID = "externaluuid";
public static final String FENCE = "fence";
public static final String FETCH_LATEST = "fetchlatest";
+ public static final String FILESYSTEM = "filesystem";
public static final String FIRSTNAME = "firstname";
public static final String FORCED = "forced";
public static final String FORCED_DESTROY_LOCAL_STORAGE = "forcedestroylocalstorage";
@@ -210,6 +227,7 @@ public class ApiConstants {
public static final String HA_PROVIDER = "haprovider";
public static final String HA_STATE = "hastate";
public static final String HEALTH = "health";
+ public static final String HEADERS = "headers";
public static final String HIDE_IP_ADDRESS_USAGE = "hideipaddressusage";
public static final String HOST_ID = "hostid";
public static final String HOST_IDS = "hostids";
@@ -268,6 +286,7 @@ public class ApiConstants {
public static final String IS_ENCRYPTED = "isencrypted";
public static final String IS_EXTRACTABLE = "isextractable";
public static final String IS_FEATURED = "isfeatured";
+ public static final String IS_IMPLICIT = "isimplicit";
public static final String IS_PORTABLE = "isportable";
public static final String IS_PUBLIC = "ispublic";
public static final String IS_PERSISTENT = "ispersistent";
@@ -283,6 +302,7 @@ public class ApiConstants {
public static final String JOB_STATUS = "jobstatus";
public static final String KEEPALIVE_ENABLED = "keepaliveenabled";
public static final String KERNEL_VERSION = "kernelversion";
+ public static final String KEY = "key";
public static final String LABEL = "label";
public static final String LASTNAME = "lastname";
public static final String LAST_BOOT = "lastboottime";
@@ -290,6 +310,7 @@ public class ApiConstants {
public static final String LAST_SERVER_STOP = "lastserverstop";
public static final String LEVEL = "level";
public static final String LENGTH = "length";
+ public static final String LIMIT = "limit";
public static final String LIMIT_CPU_USE = "limitcpuuse";
public static final String LIST_HOSTS = "listhosts";
public static final String LOCK = "lock";
@@ -307,6 +328,10 @@ public class ApiConstants {
public static final String MIGRATIONS = "migrations";
public static final String MEMORY = "memory";
public static final String MODE = "mode";
+ public static final String MULTI_ARCH = "ismultiarch";
+ public static final String NSX_MODE = "nsxmode";
+ public static final String NETWORK_MODE = "networkmode";
+ public static final String NSX_ENABLED = "isnsxenabled";
public static final String NAME = "name";
public static final String METHOD_NAME = "methodname";
public static final String NETWORK_DOMAIN = "networkdomain";
@@ -326,6 +351,7 @@ public class ApiConstants {
public static final String IS_DEFAULT_USE = "defaultuse";
public static final String OLD_FORMAT = "oldformat";
public static final String OP = "op";
+ public static final String OPTION = "option";
public static final String OPTIONS = "options";
public static final String OS_CATEGORY_ID = "oscategoryid";
public static final String OS_CATEGORY_NAME = "oscategoryname";
@@ -345,6 +371,7 @@ public class ApiConstants {
public static final String PARENT = "parent";
public static final String PARENT_ID = "parentid";
public static final String PARENT_DOMAIN_ID = "parentdomainid";
+ public static final String PARENT_SUBNET = "parentsubnet";
public static final String PARENT_TEMPLATE_ID = "parenttemplateid";
public static final String PASSWORD = "password";
public static final String CURRENT_PASSWORD = "currentpassword";
@@ -353,6 +380,7 @@ public class ApiConstants {
public static final String SSHKEY_ENABLED = "sshkeyenabled";
public static final String PATH = "path";
public static final String PAYLOAD = "payload";
+ public static final String PAYLOAD_URL = "payloadurl";
public static final String POD_ID = "podid";
public static final String POD_NAME = "podname";
public static final String POD_IDS = "podids";
@@ -380,11 +408,13 @@ public class ApiConstants {
public static final String PUBLIC_START_PORT = "publicport";
public static final String PUBLIC_END_PORT = "publicendport";
public static final String PUBLIC_ZONE = "publiczone";
+ public static final String PURGE_RESOURCES = "purgeresources";
public static final String RECEIVED_BYTES = "receivedbytes";
public static final String RECONNECT = "reconnect";
public static final String RECOVER = "recover";
public static final String REPAIR = "repair";
public static final String REQUIRES_HVM = "requireshvm";
+ public static final String RESOURCE_COUNT = "resourcecount";
public static final String RESOURCE_NAME = "resourcename";
public static final String RESOURCE_TYPE = "resourcetype";
public static final String RESOURCE_TYPE_NAME = "resourcetypename";
@@ -397,11 +427,9 @@ public class ApiConstants {
public static final String QUERY_FILTER = "queryfilter";
public static final String SCHEDULE = "schedule";
public static final String SCOPE = "scope";
- public static final String SECRET_KEY = "usersecretkey";
- public static final String SECONDARY_IP = "secondaryip";
- public static final String SINCE = "since";
- public static final String KEY = "key";
public static final String SEARCH_BASE = "searchbase";
+ public static final String SECONDARY_IP = "secondaryip";
+ public static final String SECRET_KEY = "secretkey";
public static final String SECURITY_GROUP_IDS = "securitygroupids";
public static final String SECURITY_GROUP_NAMES = "securitygroupnames";
public static final String SECURITY_GROUP_NAME = "securitygroupname";
@@ -419,14 +447,17 @@ public class ApiConstants {
public static final String SHOW_UNIQUE = "showunique";
public static final String SIGNATURE = "signature";
public static final String SIGNATURE_VERSION = "signatureversion";
+ public static final String SINCE = "since";
public static final String SIZE = "size";
+ public static final String SIZEGB = "sizegb";
public static final String SNAPSHOT = "snapshot";
public static final String SNAPSHOT_ID = "snapshotid";
public static final String SNAPSHOT_POLICY_ID = "snapshotpolicyid";
public static final String SNAPSHOT_TYPE = "snapshottype";
public static final String SNAPSHOT_QUIESCEVM = "quiescevm";
- public static final String SUPPORTS_STORAGE_SNAPSHOT = "supportsstoragesnapshot";
public static final String SOURCE_ZONE_ID = "sourcezoneid";
+ public static final String SSL_VERIFICATION = "sslverification";
+ public static final String START_ASN = "startasn";
public static final String START_DATE = "startdate";
public static final String START_ID = "startid";
public static final String START_IP = "startip";
@@ -446,6 +477,9 @@ public class ApiConstants {
public static final String SYSTEM_VM_TYPE = "systemvmtype";
public static final String TAGS = "tags";
public static final String STORAGE_TAGS = "storagetags";
+ public static final String SUCCESS = "success";
+ public static final String SUITABLE_FOR_VM = "suitableforvirtualmachine";
+ public static final String SUPPORTS_STORAGE_SNAPSHOT = "supportsstoragesnapshot";
public static final String TARGET_IQN = "targetiqn";
public static final String TEMPLATE_FILTER = "templatefilter";
public static final String TEMPLATE_ID = "templateid";
@@ -456,6 +490,7 @@ public class ApiConstants {
public static final String TIMEOUT = "timeout";
public static final String TIMEZONE = "timezone";
public static final String TIMEZONEOFFSET = "timezoneoffset";
+ public static final String TOTAL = "total";
public static final String TOTAL_SUBNETS = "totalsubnets";
public static final String TYPE = "type";
public static final String TRUST_STORE = "truststore";
@@ -478,6 +513,7 @@ public class ApiConstants {
public static final String USERNAME = "username";
public static final String USER_CONFIGURABLE = "userconfigurable";
public static final String USER_SECURITY_GROUP_LIST = "usersecuritygrouplist";
+ public static final String USER_SECRET_KEY = "usersecretkey";
public static final String USE_VIRTUAL_NETWORK = "usevirtualnetwork";
public static final String UPDATE_IN_SEQUENCE = "updateinsequence";
public static final String VALUE = "value";
@@ -487,6 +523,7 @@ public class ApiConstants {
public static final String VIRTUAL_MACHINE_ID_IP = "vmidipmap";
public static final String VIRTUAL_MACHINE_COUNT = "virtualmachinecount";
public static final String VIRTUAL_MACHINE_TYPE = "virtualmachinetype";
+ public static final String VIRTUAL_MACHINE_STATE = "vmstate";
public static final String VIRTUAL_MACHINES = "virtualmachines";
public static final String USAGE_ID = "usageid";
public static final String USAGE_TYPE = "usagetype";
@@ -499,6 +536,7 @@ public class ApiConstants {
public static final String ISOLATED_PVLAN = "isolatedpvlan";
public static final String ISOLATED_PVLAN_TYPE = "isolatedpvlantype";
public static final String ISOLATION_URI = "isolationuri";
+ public static final String IS_ALLOCATED = "isallocated";
public static final String IS_DEDICATED = "isdedicated";
public static final String TAKEN = "taken";
public static final String VM_AVAILABLE = "vmavailable";
@@ -527,6 +565,7 @@ public class ApiConstants {
public static final String NETWORK_ID = "networkid";
public static final String NETWORK_FILTER = "networkfilter";
public static final String NIC_ID = "nicid";
+ public static final String SPECIFY_AS_NUMBER = "specifyasnumber";
public static final String SPECIFY_VLAN = "specifyvlan";
public static final String IS_DEFAULT = "isdefault";
public static final String IS_SYSTEM = "issystem";
@@ -557,6 +596,7 @@ public class ApiConstants {
public static final String ALLOCATION_STATE = "allocationstate";
public static final String MANAGED_STATE = "managedstate";
public static final String MANAGEMENT_SERVER_ID = "managementserverid";
+ public static final String MANAGEMENT_SERVER_NAME = "managementservername";
public static final String STORAGE = "storage";
public static final String STORAGE_ID = "storageid";
public static final String PING_STORAGE_SERVER_IP = "pingstorageserverip";
@@ -667,6 +707,8 @@ public class ApiConstants {
public static final String ASSOCIATED_NETWORK = "associatednetwork";
public static final String ASSOCIATED_NETWORK_ID = "associatednetworkid";
public static final String ASSOCIATED_NETWORK_NAME = "associatednetworkname";
+ public static final String ASSOCIATED_VPC_ID = "associatedvpcid";
+ public static final String ASSOCIATED_VPC_NAME = "associatedvpcname";
public static final String SOURCE_NAT_SUPPORTED = "sourcenatsupported";
public static final String RESOURCE_STATE = "resourcestate";
public static final String PROJECT_INVITE_REQUIRED = "projectinviterequired";
@@ -679,8 +721,11 @@ public class ApiConstants {
public static final String TRAFFIC_TYPE_IMPLEMENTOR = "traffictypeimplementor";
public static final String KEYWORD = "keyword";
public static final String LIST_ALL = "listall";
+ public static final String LIST_ONLY_REMOVED = "listonlyremoved";
public static final String LIST_SYSTEM_VMS = "listsystemvms";
public static final String IP_RANGES = "ipranges";
+ public static final String IPV4_ROUTING = "ip4routing";
+ public static final String IPV4_ROUTES = "ip4routes";
public static final String IPV6_ROUTING = "ip6routing";
public static final String IPV6_ROUTES = "ip6routes";
public static final String SPECIFY_IP_RANGES = "specifyipranges";
@@ -708,6 +753,12 @@ public class ApiConstants {
public static final String VSWITCH_TYPE_PUBLIC_TRAFFIC = "publicvswitchtype";
public static final String VSWITCH_NAME_GUEST_TRAFFIC = "guestvswitchname";
public static final String VSWITCH_NAME_PUBLIC_TRAFFIC = "publicvswitchname";
+
+ // NSX
+ public static final String EDGE_CLUSTER = "edgecluster";
+ public static final String TIER0_GATEWAY = "tier0gateway";
+
+ public static final String TRANSPORT_ZONE = "transportzone";
// Tungsten-Fabric
public static final String TUNGSTEN_VIRTUAL_ROUTER_UUID = "tungstenvirtualrouteruuid";
public static final String TUNGSTEN_PROVIDER_HOSTNAME = "tungstenproviderhostname";
@@ -731,6 +782,7 @@ public class ApiConstants {
public static final String POLICY_UUID = "policyuuid";
public static final String RULE_UUID = "ruleuuid";
public static final String DIRECTION = "direction";
+ public static final String TAGGED_RESOURCES = "taggedresources";
public static final String TAG_UUID = "taguuid";
public static final String TAG_TYPE = "tagtype";
public static final String TAG_VALUE = "tagvalue";
@@ -828,6 +880,9 @@ public class ApiConstants {
public static final String FORCE_ENCAP = "forceencap";
public static final String SPLIT_CONNECTIONS = "splitconnections";
public static final String FOR_VPC = "forvpc";
+ public static final String FOR_NSX = "fornsx";
+ public static final String NSX_SUPPORT_LB = "nsxsupportlb";
+ public static final String NSX_SUPPORTS_INTERNAL_LB = "nsxsupportsinternallb";
public static final String FOR_TUNGSTEN = "fortungsten";
public static final String SHRINK_OK = "shrinkok";
public static final String NICIRA_NVP_DEVICE_ID = "nvpdeviceid";
@@ -837,6 +892,11 @@ public class ApiConstants {
public static final String NICIRA_NVP_L2_GATEWAYSERVICE_UUID = "l2gatewayserviceuuid";
public static final String NSX_LOGICAL_SWITCH = "nsxlogicalswitch";
public static final String NSX_LOGICAL_SWITCH_PORT = "nsxlogicalswitchport";
+ public static final String NSX_PROVIDER_UUID = "nsxprovideruuid";
+ public static final String NSX_PROVIDER_HOSTNAME = "nsxproviderhostname";
+
+ public static final String NSX_PROVIDER_PORT = "nsxproviderport";
+ public static final String NSX_CONTROLLER_ID = "nsxcontrollerid";
public static final String S3_ACCESS_KEY = "accesskey";
public static final String S3_SECRET_KEY = "secretkey";
public static final String S3_END_POINT = "endpoint";
@@ -882,6 +942,7 @@ public class ApiConstants {
public static final String AUTOSCALE_VMGROUP_NAME = "autoscalevmgroupname";
public static final String BAREMETAL_DISCOVER_NAME = "baremetaldiscovername";
public static final String BAREMETAL_RCT_URL = "baremetalrcturl";
+ public static final String BATCH_SIZE = "batchsize";
public static final String UCS_DN = "ucsdn";
public static final String GSLB_PROVIDER = "gslbprovider";
public static final String EXCLUSIVE_GSLB_PROVIDER = "isexclusivegslbprovider";
@@ -926,6 +987,7 @@ public class ApiConstants {
public static final String NUMBER = "number";
public static final String IS_DYNAMICALLY_SCALABLE = "isdynamicallyscalable";
public static final String ROUTING = "isrouting";
+ public static final String ROUTING_MODE = "routingmode";
public static final String MAX_CONNECTIONS = "maxconnections";
public static final String SERVICE_STATE = "servicestate";
@@ -961,6 +1023,7 @@ public class ApiConstants {
public static final String SUPPORTS_REGION_LEVEL_VPC = "supportsregionLevelvpc";
public static final String SUPPORTS_STRECHED_L2_SUBNET = "supportsstrechedl2subnet";
public static final String SUPPORTS_PUBLIC_ACCESS = "supportspublicaccess";
+ public static final String SUPPORTS_INTERNAL_LB = "supportsinternallb";
public static final String SUPPORTS_VM_AUTOSCALING = "supportsvmautoscaling";
public static final String REGION_LEVEL_VPC = "regionlevelvpc";
public static final String STRECHED_L2_SUBNET = "strechedl2subnet";
@@ -1079,14 +1142,13 @@ public class ApiConstants {
public static final String SOURCE_NAT_IP = "sourcenatipaddress";
public static final String SOURCE_NAT_IP_ID = "sourcenatipaddressid";
public static final String HAS_RULES = "hasrules";
+ public static final String NSX_DETAIL_KEY = "forNsx";
public static final String DISK_PATH = "diskpath";
public static final String IMPORT_SOURCE = "importsource";
public static final String TEMP_PATH = "temppath";
public static final String OBJECT_STORAGE = "objectstore";
-
public static final String HEURISTIC_RULE = "heuristicrule";
public static final String HEURISTIC_TYPE_VALID_OPTIONS = "Valid options are: ISO, SNAPSHOT, TEMPLATE and VOLUME.";
-
public static final String MANAGEMENT = "management";
public static final String IS_VNF = "isvnf";
public static final String VNF_NICS = "vnfnics";
@@ -1103,7 +1165,19 @@ public class ApiConstants {
public static final String PARAMETER_DESCRIPTION_IS_TAG_A_RULE = "Whether the informed tag is a JS interpretable rule or not.";
+ public static final String WEBHOOK_ID = "webhookid";
+ public static final String WEBHOOK_NAME = "webhookname";
+
public static final String NFS_MOUNT_OPTIONS = "nfsmountopts";
+ public static final String MOUNT_OPTIONS = "mountopts";
+
+ public static final String SHAREDFSVM_MIN_CPU_COUNT = "sharedfsvmmincpucount";
+ public static final String SHAREDFSVM_MIN_RAM_SIZE = "sharedfsvmminramsize";
+
+ public static final String PARAMETER_DESCRIPTION_ACTIVATION_RULE = "Quota tariff's activation rule. It can receive a JS script that results in either " +
+ "a boolean or a numeric value: if it results in a boolean value, the tariff value will be applied according to the result; if it results in a numeric value, the " +
+ "numeric value will be applied; if the result is neither a boolean nor a numeric value, the tariff will not be applied. If the rule is not informed, the tariff " +
+ "value will be applied.";
/**
* This enum specifies IO Drivers, each option controls specific policies on I/O.
@@ -1127,6 +1201,14 @@ public String toString() {
}
}
+ public static final String PARAMETER_DESCRIPTION_START_DATE_POSSIBLE_FORMATS = "The recommended format is \"yyyy-MM-dd'T'HH:mm:ssZ\" (e.g.: \"2023-01-01T12:00:00+0100\"); " +
+ "however, the following formats are also accepted: \"yyyy-MM-dd HH:mm:ss\" (e.g.: \"2023-01-01 12:00:00\") and \"yyyy-MM-dd\" (e.g.: \"2023-01-01\" - if the time is not " +
+ "added, it will be interpreted as \"00:00:00\"). If the recommended format is not used, the date will be considered in the server timezone.";
+
+ public static final String PARAMETER_DESCRIPTION_END_DATE_POSSIBLE_FORMATS = "The recommended format is \"yyyy-MM-dd'T'HH:mm:ssZ\" (e.g.: \"2023-01-01T12:00:00+0100\"); " +
+ "however, the following formats are also accepted: \"yyyy-MM-dd HH:mm:ss\" (e.g.: \"2023-01-01 12:00:00\") and \"yyyy-MM-dd\" (e.g.: \"2023-01-01\" - if the time is not " +
+ "added, it will be interpreted as \"23:59:59\"). If the recommended format is not used, the date will be considered in the server timezone.";
+
public enum BootType {
UEFI, BIOS;
diff --git a/api/src/main/java/org/apache/cloudstack/api/ApiServerService.java b/api/src/main/java/org/apache/cloudstack/api/ApiServerService.java
index 54fda7e36b82..cbbcdc3bda42 100644
--- a/api/src/main/java/org/apache/cloudstack/api/ApiServerService.java
+++ b/api/src/main/java/org/apache/cloudstack/api/ApiServerService.java
@@ -21,7 +21,9 @@
import javax.servlet.http.HttpSession;
+import com.cloud.domain.Domain;
import com.cloud.exception.CloudAuthenticationException;
+import com.cloud.user.UserAccount;
public interface ApiServerService {
public boolean verifyRequest(Map requestParameters, Long userId, InetAddress remoteAddress) throws ServerApiException;
@@ -42,4 +44,8 @@ public ResponseObject loginUser(HttpSession session, String username, String pas
public String handleRequest(Map params, String responseType, StringBuilder auditTrailSb) throws ServerApiException;
public Class> getCmdClass(String cmdName);
+
+ boolean forgotPassword(UserAccount userAccount, Domain domain);
+
+ boolean resetPassword(UserAccount userAccount, String token, String password);
}
diff --git a/api/src/main/java/org/apache/cloudstack/api/BaseAsyncCmd.java b/api/src/main/java/org/apache/cloudstack/api/BaseAsyncCmd.java
index 865ec7456409..6859b0a7f406 100644
--- a/api/src/main/java/org/apache/cloudstack/api/BaseAsyncCmd.java
+++ b/api/src/main/java/org/apache/cloudstack/api/BaseAsyncCmd.java
@@ -17,7 +17,6 @@
package org.apache.cloudstack.api;
-import org.apache.log4j.Logger;
/**
* queryAsyncJobResult API command.
@@ -30,7 +29,6 @@ public abstract class BaseAsyncCmd extends BaseCmd {
public static final String migrationSyncObject = "migration";
public static final String snapshotHostSyncObject = "snapshothost";
public static final String gslbSyncObject = "globalserverloadbalancer";
- private static final Logger s_logger = Logger.getLogger(BaseAsyncCmd.class.getName());
private Object job;
diff --git a/api/src/main/java/org/apache/cloudstack/api/BaseCmd.java b/api/src/main/java/org/apache/cloudstack/api/BaseCmd.java
index f32922819b01..457afdc88478 100644
--- a/api/src/main/java/org/apache/cloudstack/api/BaseCmd.java
+++ b/api/src/main/java/org/apache/cloudstack/api/BaseCmd.java
@@ -31,6 +31,7 @@
import javax.inject.Inject;
+import com.cloud.bgp.BGPService;
import org.apache.cloudstack.acl.ProjectRoleService;
import org.apache.cloudstack.acl.RoleService;
import org.apache.cloudstack.acl.RoleType;
@@ -38,7 +39,7 @@
import org.apache.cloudstack.alert.AlertService;
import org.apache.cloudstack.annotation.AnnotationService;
import org.apache.cloudstack.context.CallContext;
-import org.apache.cloudstack.network.element.InternalLoadBalancerElementService;
+import org.apache.cloudstack.network.RoutedIpv4Manager;
import org.apache.cloudstack.network.lb.ApplicationLoadBalancerService;
import org.apache.cloudstack.network.lb.InternalLoadBalancerVMService;
import org.apache.cloudstack.query.QueryService;
@@ -47,7 +48,8 @@
import org.apache.cloudstack.storage.template.VnfTemplateManager;
import org.apache.cloudstack.usage.UsageService;
import org.apache.commons.collections.MapUtils;
-import org.apache.log4j.Logger;
+import org.apache.logging.log4j.Logger;
+import org.apache.logging.log4j.LogManager;
import com.cloud.configuration.ConfigurationService;
import com.cloud.exception.ConcurrentOperationException;
@@ -95,7 +97,7 @@
import com.cloud.vm.snapshot.VMSnapshotService;
public abstract class BaseCmd {
- private static final Logger s_logger = Logger.getLogger(BaseCmd.class.getName());
+ protected transient Logger logger = LogManager.getLogger(getClass());
public static final String RESPONSE_SUFFIX = "response";
public static final String RESPONSE_TYPE_XML = HttpUtils.RESPONSE_TYPE_XML;
public static final String RESPONSE_TYPE_JSON = HttpUtils.RESPONSE_TYPE_JSON;
@@ -200,8 +202,6 @@ public static enum CommandType {
@Inject
public AffinityGroupService _affinityGroupService;
@Inject
- public InternalLoadBalancerElementService _internalLbElementSvc;
- @Inject
public InternalLoadBalancerVMService _internalLbSvc;
@Inject
public NetworkModel _ntwkModel;
@@ -219,7 +219,11 @@ public static enum CommandType {
public VnfTemplateManager vnfTemplateManager;
@Inject
public BucketApiService _bucketService;
+ @Inject
+ public BGPService bgpService;
+ @Inject
+ public RoutedIpv4Manager routedIpv4Manager;
public abstract void execute() throws ResourceUnavailableException, InsufficientCapacityException, ServerApiException, ConcurrentOperationException,
ResourceAllocationException, NetworkRuleConflictException;
@@ -374,7 +378,7 @@ public List getParamFields() {
if (roleIsAllowed) {
validFields.add(field);
} else {
- s_logger.debug("Ignoring parameter " + parameterAnnotation.name() + " as the caller is not authorized to pass it in");
+ logger.debug("Ignoring parameter " + parameterAnnotation.name() + " as the caller is not authorized to pass it in");
}
}
@@ -419,7 +423,7 @@ public boolean isDisplay(){
if(!isDisplay)
break;
} catch (Exception e){
- s_logger.trace("Caught exception while checking first class entities for display property, continuing on", e);
+ logger.trace("Caught exception while checking first class entities for display property, continuing on", e);
}
}
diff --git a/api/src/main/java/org/apache/cloudstack/api/BaseListTemplateOrIsoPermissionsCmd.java b/api/src/main/java/org/apache/cloudstack/api/BaseListTemplateOrIsoPermissionsCmd.java
index 052d7d1e8b72..be95547a8a73 100644
--- a/api/src/main/java/org/apache/cloudstack/api/BaseListTemplateOrIsoPermissionsCmd.java
+++ b/api/src/main/java/org/apache/cloudstack/api/BaseListTemplateOrIsoPermissionsCmd.java
@@ -18,7 +18,6 @@
import java.util.List;
-import org.apache.log4j.Logger;
import org.apache.cloudstack.api.ResponseObject.ResponseView;
import org.apache.cloudstack.api.command.ResponseViewProvider;
@@ -28,7 +27,6 @@
import com.cloud.user.Account;
public abstract class BaseListTemplateOrIsoPermissionsCmd extends BaseCmd implements ResponseViewProvider {
- public Logger logger = getLogger();
protected static final String s_name = "listtemplatepermissionsresponse";
/////////////////////////////////////////////////////
@@ -59,9 +57,6 @@ public long getEntityOwnerId() {
return Account.ACCOUNT_ID_SYSTEM; // no account info given, parent this command to SYSTEM so ERROR events are tracked
}
- protected Logger getLogger() {
- return Logger.getLogger(BaseListTemplateOrIsoPermissionsCmd.class);
- }
@Override
public String getCommandName() {
diff --git a/api/src/main/java/org/apache/cloudstack/api/BaseUpdateTemplateOrIsoCmd.java b/api/src/main/java/org/apache/cloudstack/api/BaseUpdateTemplateOrIsoCmd.java
index 08f390f19724..9a8282df1121 100644
--- a/api/src/main/java/org/apache/cloudstack/api/BaseUpdateTemplateOrIsoCmd.java
+++ b/api/src/main/java/org/apache/cloudstack/api/BaseUpdateTemplateOrIsoCmd.java
@@ -16,15 +16,15 @@
// under the License.
package org.apache.cloudstack.api;
-import org.apache.log4j.Logger;
+import com.cloud.cpu.CPU;
import org.apache.cloudstack.api.response.GuestOSResponse;
import org.apache.cloudstack.api.response.TemplateResponse;
+import org.apache.commons.lang3.StringUtils;
import java.util.Collection;
import java.util.Map;
public abstract class BaseUpdateTemplateOrIsoCmd extends BaseCmd {
- public static final Logger s_logger = Logger.getLogger(BaseUpdateTemplateOrIsoCmd.class.getName());
/////////////////////////////////////////////////////
//////////////// API parameters /////////////////////
@@ -79,6 +79,11 @@ public abstract class BaseUpdateTemplateOrIsoCmd extends BaseCmd {
description = "optional boolean field, which indicates if details should be cleaned up or not (if set to true, details removed for this resource, details field ignored; if false or not set, no action)")
private Boolean cleanupDetails;
+ @Parameter(name = ApiConstants.ARCH, type = CommandType.STRING,
+ description = "the CPU arch of the template/ISO. Valid options are: x86_64, aarch64",
+ since = "4.20")
+ private String arch;
+
/////////////////////////////////////////////////////
/////////////////// Accessors ///////////////////////
/////////////////////////////////////////////////////
@@ -143,4 +148,11 @@ public Map getDetails() {
public boolean isCleanupDetails(){
return cleanupDetails == null ? false : cleanupDetails.booleanValue();
}
+
+ public CPU.CPUArch getCPUArch() {
+ if (StringUtils.isBlank(arch)) {
+ return null;
+ }
+ return CPU.CPUArch.fromType(arch);
+ }
}
diff --git a/api/src/main/java/org/apache/cloudstack/api/BaseUpdateTemplateOrIsoPermissionsCmd.java b/api/src/main/java/org/apache/cloudstack/api/BaseUpdateTemplateOrIsoPermissionsCmd.java
index 410ffefb00dd..e6ee0897db02 100644
--- a/api/src/main/java/org/apache/cloudstack/api/BaseUpdateTemplateOrIsoPermissionsCmd.java
+++ b/api/src/main/java/org/apache/cloudstack/api/BaseUpdateTemplateOrIsoPermissionsCmd.java
@@ -18,7 +18,6 @@
import java.util.List;
-import org.apache.log4j.Logger;
import org.apache.cloudstack.api.response.ProjectResponse;
import org.apache.cloudstack.api.response.SuccessResponse;
@@ -27,16 +26,12 @@
import com.cloud.exception.InvalidParameterValueException;
public abstract class BaseUpdateTemplateOrIsoPermissionsCmd extends BaseCmd {
- public Logger _logger = getLogger();
protected String _name = getResponseName();
// ///////////////////////////////////////////////////
// ////////////// API parameters /////////////////////
// ///////////////////////////////////////////////////
- protected Logger getLogger() {
- return Logger.getLogger(BaseUpdateTemplateOrIsoPermissionsCmd.class);
- }
protected String getResponseName() {
return "updatetemplateorisopermissionsresponse";
diff --git a/api/src/main/java/org/apache/cloudstack/api/ResponseGenerator.java b/api/src/main/java/org/apache/cloudstack/api/ResponseGenerator.java
index ef759aaf9c3e..ea0d946ee417 100644
--- a/api/src/main/java/org/apache/cloudstack/api/ResponseGenerator.java
+++ b/api/src/main/java/org/apache/cloudstack/api/ResponseGenerator.java
@@ -22,6 +22,9 @@
import java.util.Map;
import java.util.Set;
+import com.cloud.bgp.ASNumber;
+import com.cloud.bgp.ASNumberRange;
+
import org.apache.cloudstack.storage.object.Bucket;
import org.apache.cloudstack.affinity.AffinityGroup;
import org.apache.cloudstack.affinity.AffinityGroupResponse;
@@ -31,11 +34,14 @@
import org.apache.cloudstack.api.command.user.job.QueryAsyncJobResultCmd;
import org.apache.cloudstack.api.response.AccountResponse;
import org.apache.cloudstack.api.response.ApplicationLoadBalancerResponse;
+import org.apache.cloudstack.api.response.ASNRangeResponse;
+import org.apache.cloudstack.api.response.ASNumberResponse;
import org.apache.cloudstack.api.response.AsyncJobResponse;
import org.apache.cloudstack.api.response.AutoScalePolicyResponse;
import org.apache.cloudstack.api.response.AutoScaleVmGroupResponse;
import org.apache.cloudstack.api.response.AutoScaleVmProfileResponse;
import org.apache.cloudstack.api.response.BackupOfferingResponse;
+import org.apache.cloudstack.api.response.BackupRepositoryResponse;
import org.apache.cloudstack.api.response.BackupResponse;
import org.apache.cloudstack.api.response.BackupScheduleResponse;
import org.apache.cloudstack.api.response.BucketResponse;
@@ -54,6 +60,7 @@
import org.apache.cloudstack.api.response.DomainRouterResponse;
import org.apache.cloudstack.api.response.EventResponse;
import org.apache.cloudstack.api.response.ExtractResponse;
+import org.apache.cloudstack.api.response.SharedFSResponse;
import org.apache.cloudstack.api.response.FirewallResponse;
import org.apache.cloudstack.api.response.FirewallRuleResponse;
import org.apache.cloudstack.api.response.GlobalLoadBalancerResponse;
@@ -139,6 +146,7 @@
import org.apache.cloudstack.api.response.ZoneResponse;
import org.apache.cloudstack.backup.Backup;
import org.apache.cloudstack.backup.BackupOffering;
+import org.apache.cloudstack.backup.BackupRepository;
import org.apache.cloudstack.backup.BackupSchedule;
import org.apache.cloudstack.config.Configuration;
import org.apache.cloudstack.config.ConfigurationGroup;
@@ -151,6 +159,7 @@
import org.apache.cloudstack.region.PortableIpRange;
import org.apache.cloudstack.region.Region;
import org.apache.cloudstack.secstorage.heuristics.Heuristic;
+import org.apache.cloudstack.storage.sharedfs.SharedFS;
import org.apache.cloudstack.storage.object.ObjectStore;
import org.apache.cloudstack.usage.Usage;
@@ -345,9 +354,11 @@ public interface ResponseGenerator {
SecurityGroupResponse createSecurityGroupResponse(SecurityGroup group);
- ExtractResponse createExtractResponse(Long uploadId, Long id, Long zoneId, Long accountId, String mode, String url);
+ ExtractResponse createImageExtractResponse(Long id, Long zoneId, Long accountId, String mode, String url);
+
+ ExtractResponse createVolumeExtractResponse(Long id, Long zoneId, Long accountId, String mode, String url);
- ExtractResponse createExtractResponse(Long id, Long zoneId, Long accountId, String mode, String url);
+ ExtractResponse createSnapshotExtractResponse(Long id, Long zoneId, Long accountId, String url);
String toSerializedString(CreateCmdResponse response, String responseType);
@@ -549,4 +560,12 @@ List createTemplateResponses(ResponseView view, VirtualMachine
ObjectStoreResponse createObjectStoreResponse(ObjectStore os);
BucketResponse createBucketResponse(Bucket bucket);
+
+ ASNRangeResponse createASNumberRangeResponse(ASNumberRange asnRange);
+
+ ASNumberResponse createASNumberResponse(ASNumber asn);
+
+ BackupRepositoryResponse createBackupRepositoryResponse(BackupRepository repository);
+
+ SharedFSResponse createSharedFSResponse(ResponseView view, SharedFS sharedFS);
}
diff --git a/api/src/main/java/org/apache/cloudstack/api/auth/APIAuthenticationType.java b/api/src/main/java/org/apache/cloudstack/api/auth/APIAuthenticationType.java
index 5ba9d182daa0..1f78708f7e58 100644
--- a/api/src/main/java/org/apache/cloudstack/api/auth/APIAuthenticationType.java
+++ b/api/src/main/java/org/apache/cloudstack/api/auth/APIAuthenticationType.java
@@ -17,5 +17,5 @@
package org.apache.cloudstack.api.auth;
public enum APIAuthenticationType {
- LOGIN_API, LOGOUT_API, READONLY_API, LOGIN_2FA_API
+ LOGIN_API, LOGOUT_API, READONLY_API, LOGIN_2FA_API, PASSWORD_RESET
}
diff --git a/api/src/main/java/org/apache/cloudstack/api/command/admin/account/CreateAccountCmd.java b/api/src/main/java/org/apache/cloudstack/api/command/admin/account/CreateAccountCmd.java
index 945bb956c3eb..6dbc6acc59a9 100644
--- a/api/src/main/java/org/apache/cloudstack/api/command/admin/account/CreateAccountCmd.java
+++ b/api/src/main/java/org/apache/cloudstack/api/command/admin/account/CreateAccountCmd.java
@@ -21,7 +21,6 @@
import org.apache.cloudstack.api.ApiCommandResourceType;
import org.apache.commons.lang3.StringUtils;
-import org.apache.log4j.Logger;
import org.apache.cloudstack.acl.RoleType;
import org.apache.cloudstack.api.APICommand;
@@ -43,7 +42,6 @@
@APICommand(name = "createAccount", description = "Creates an account", responseObject = AccountResponse.class, entityType = {Account.class},
requestHasSensitiveInfo = true, responseHasSensitiveInfo = true)
public class CreateAccountCmd extends BaseCmd {
- public static final Logger s_logger = Logger.getLogger(CreateAccountCmd.class.getName());
/////////////////////////////////////////////////////
diff --git a/api/src/main/java/org/apache/cloudstack/api/command/admin/account/DeleteAccountCmd.java b/api/src/main/java/org/apache/cloudstack/api/command/admin/account/DeleteAccountCmd.java
index 9a0ea4e9ec0e..a90fc4aebe9c 100644
--- a/api/src/main/java/org/apache/cloudstack/api/command/admin/account/DeleteAccountCmd.java
+++ b/api/src/main/java/org/apache/cloudstack/api/command/admin/account/DeleteAccountCmd.java
@@ -31,7 +31,6 @@
import org.apache.cloudstack.api.response.SuccessResponse;
import org.apache.cloudstack.context.CallContext;
import org.apache.cloudstack.region.RegionService;
-import org.apache.log4j.Logger;
import com.cloud.event.EventTypes;
import com.cloud.user.Account;
@@ -39,7 +38,6 @@
@APICommand(name = "deleteAccount", description = "Deletes a account, and all users associated with this account", responseObject = SuccessResponse.class, entityType = {Account.class},
requestHasSensitiveInfo = false, responseHasSensitiveInfo = false)
public class DeleteAccountCmd extends BaseAsyncCmd {
- public static final Logger s_logger = Logger.getLogger(DeleteAccountCmd.class.getName());
/////////////////////////////////////////////////////
//////////////// API parameters /////////////////////
@@ -91,12 +89,11 @@ public void execute() {
CallContext.current().setEventDetails("Account ID: " + (account != null ? account.getUuid() : getId())); // Account not found is already handled by service
boolean result = _regionService.deleteUserAccount(this);
- if (result) {
- SuccessResponse response = new SuccessResponse(getCommandName());
- setResponseObject(response);
- } else {
+ if (!result) {
throw new ServerApiException(ApiErrorCode.INTERNAL_ERROR, "Failed to delete user account and all corresponding users");
}
+ SuccessResponse response = new SuccessResponse(getCommandName());
+ setResponseObject(response);
}
@Override
diff --git a/api/src/main/java/org/apache/cloudstack/api/command/admin/account/DisableAccountCmd.java b/api/src/main/java/org/apache/cloudstack/api/command/admin/account/DisableAccountCmd.java
index 91b0673e186e..55293eca619e 100644
--- a/api/src/main/java/org/apache/cloudstack/api/command/admin/account/DisableAccountCmd.java
+++ b/api/src/main/java/org/apache/cloudstack/api/command/admin/account/DisableAccountCmd.java
@@ -18,7 +18,6 @@
import javax.inject.Inject;
-import org.apache.log4j.Logger;
import org.apache.cloudstack.acl.SecurityChecker.AccessType;
import org.apache.cloudstack.api.ACL;
@@ -43,7 +42,6 @@
@APICommand(name = "disableAccount", description = "Disables an account", responseObject = AccountResponse.class, entityType = {Account.class},
requestHasSensitiveInfo = false, responseHasSensitiveInfo = true)
public class DisableAccountCmd extends BaseAsyncCmd {
- public static final Logger s_logger = Logger.getLogger(DisableAccountCmd.class.getName());
/////////////////////////////////////////////////////
//////////////// API parameters /////////////////////
diff --git a/api/src/main/java/org/apache/cloudstack/api/command/admin/account/EnableAccountCmd.java b/api/src/main/java/org/apache/cloudstack/api/command/admin/account/EnableAccountCmd.java
index cc37dc237134..da96383f1345 100644
--- a/api/src/main/java/org/apache/cloudstack/api/command/admin/account/EnableAccountCmd.java
+++ b/api/src/main/java/org/apache/cloudstack/api/command/admin/account/EnableAccountCmd.java
@@ -19,7 +19,6 @@
import javax.inject.Inject;
import org.apache.cloudstack.api.ApiCommandResourceType;
-import org.apache.log4j.Logger;
import org.apache.cloudstack.acl.SecurityChecker.AccessType;
import org.apache.cloudstack.api.ACL;
@@ -39,7 +38,6 @@
@APICommand(name = "enableAccount", description = "Enables an account", responseObject = AccountResponse.class, entityType = {Account.class},
requestHasSensitiveInfo = false, responseHasSensitiveInfo = true)
public class EnableAccountCmd extends BaseCmd {
- public static final Logger s_logger = Logger.getLogger(EnableAccountCmd.class.getName());
/////////////////////////////////////////////////////
//////////////// API parameters /////////////////////
diff --git a/api/src/main/java/org/apache/cloudstack/api/command/admin/account/LockAccountCmd.java b/api/src/main/java/org/apache/cloudstack/api/command/admin/account/LockAccountCmd.java
index a430914a25a1..d7847373e927 100644
--- a/api/src/main/java/org/apache/cloudstack/api/command/admin/account/LockAccountCmd.java
+++ b/api/src/main/java/org/apache/cloudstack/api/command/admin/account/LockAccountCmd.java
@@ -16,7 +16,6 @@
// under the License.
package org.apache.cloudstack.api.command.admin.account;
-import org.apache.log4j.Logger;
import org.apache.cloudstack.api.APICommand;
import org.apache.cloudstack.api.ApiConstants;
@@ -35,7 +34,6 @@
requestHasSensitiveInfo = false,
responseHasSensitiveInfo = true)
public class LockAccountCmd extends BaseCmd {
- public static final Logger s_logger = Logger.getLogger(LockAccountCmd.class.getName());
/////////////////////////////////////////////////////
diff --git a/api/src/main/java/org/apache/cloudstack/api/command/admin/account/UpdateAccountCmd.java b/api/src/main/java/org/apache/cloudstack/api/command/admin/account/UpdateAccountCmd.java
index 36d299bcfc85..91cbb90e4da4 100644
--- a/api/src/main/java/org/apache/cloudstack/api/command/admin/account/UpdateAccountCmd.java
+++ b/api/src/main/java/org/apache/cloudstack/api/command/admin/account/UpdateAccountCmd.java
@@ -23,7 +23,6 @@
import org.apache.cloudstack.api.ApiCommandResourceType;
import org.apache.cloudstack.api.response.RoleResponse;
-import org.apache.log4j.Logger;
import org.apache.cloudstack.acl.SecurityChecker.AccessType;
import org.apache.cloudstack.api.ACL;
@@ -43,7 +42,6 @@
@APICommand(name = "updateAccount", description = "Updates account information for the authenticated user", responseObject = AccountResponse.class, entityType = {Account.class},
requestHasSensitiveInfo = false, responseHasSensitiveInfo = true)
public class UpdateAccountCmd extends BaseCmd {
- public static final Logger s_logger = Logger.getLogger(UpdateAccountCmd.class.getName());
/////////////////////////////////////////////////////
//////////////// API parameters /////////////////////
diff --git a/api/src/main/java/org/apache/cloudstack/api/command/admin/acl/DisableRoleCmd.java b/api/src/main/java/org/apache/cloudstack/api/command/admin/acl/DisableRoleCmd.java
new file mode 100644
index 000000000000..80cb92c8362f
--- /dev/null
+++ b/api/src/main/java/org/apache/cloudstack/api/command/admin/acl/DisableRoleCmd.java
@@ -0,0 +1,69 @@
+// Licensed to the Apache Software Foundation (ASF) under one
+// or more contributor license agreements. See the NOTICE file
+// distributed with this work for additional information
+// regarding copyright ownership. The ASF licenses this file
+// to you under the Apache License, Version 2.0 (the
+// "License"); you may not use this file except in compliance
+// with the License. You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing,
+// software distributed under the License is distributed on an
+// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+// KIND, either express or implied. See the License for the
+// specific language governing permissions and limitations
+// under the License.
+package org.apache.cloudstack.api.command.admin.acl;
+
+import com.cloud.exception.ConcurrentOperationException;
+import com.cloud.exception.InsufficientCapacityException;
+import com.cloud.exception.NetworkRuleConflictException;
+import com.cloud.exception.ResourceAllocationException;
+import com.cloud.exception.ResourceUnavailableException;
+import com.cloud.user.Account;
+import org.apache.cloudstack.acl.Role;
+import org.apache.cloudstack.acl.RoleType;
+import org.apache.cloudstack.api.APICommand;
+import org.apache.cloudstack.api.ApiArgValidator;
+import org.apache.cloudstack.api.ApiConstants;
+import org.apache.cloudstack.api.ApiErrorCode;
+import org.apache.cloudstack.api.BaseCmd;
+import org.apache.cloudstack.api.Parameter;
+import org.apache.cloudstack.api.ServerApiException;
+import org.apache.cloudstack.api.response.RoleResponse;
+import org.apache.cloudstack.api.response.SuccessResponse;
+import org.apache.cloudstack.context.CallContext;
+
+@APICommand(name = "disableRole", description = "Disables a role", responseObject = SuccessResponse.class,
+ requestHasSensitiveInfo = false, responseHasSensitiveInfo = false,
+ since = "4.20.0",
+ authorized = {RoleType.Admin})
+public class DisableRoleCmd extends BaseCmd {
+
+ @Parameter(name = ApiConstants.ID, type = BaseCmd.CommandType.UUID, required = true, entityType = RoleResponse.class,
+ description = "ID of the role", validations = {ApiArgValidator.PositiveNumber})
+ private Long roleId;
+
+ public Long getRoleId() {
+ return roleId;
+ }
+
+ @Override
+ public void execute() throws ResourceUnavailableException, InsufficientCapacityException, ServerApiException, ConcurrentOperationException, ResourceAllocationException, NetworkRuleConflictException {
+ Role role = roleService.findRole(getRoleId());
+ if (role == null) {
+ throw new ServerApiException(ApiErrorCode.PARAM_ERROR, "Cannot find the role with provided id");
+ }
+ CallContext.current().setEventDetails("Role id: " + role.getId());
+ boolean result = roleService.disableRole(role);
+ SuccessResponse response = new SuccessResponse(getCommandName());
+ response.setSuccess(result);
+ setResponseObject(response);
+ }
+
+ @Override
+ public long getEntityOwnerId() {
+ return Account.ACCOUNT_ID_SYSTEM;
+ }
+}
diff --git a/api/src/main/java/org/apache/cloudstack/api/command/admin/acl/EnableRoleCmd.java b/api/src/main/java/org/apache/cloudstack/api/command/admin/acl/EnableRoleCmd.java
new file mode 100644
index 000000000000..c4a6505d52f6
--- /dev/null
+++ b/api/src/main/java/org/apache/cloudstack/api/command/admin/acl/EnableRoleCmd.java
@@ -0,0 +1,69 @@
+// Licensed to the Apache Software Foundation (ASF) under one
+// or more contributor license agreements. See the NOTICE file
+// distributed with this work for additional information
+// regarding copyright ownership. The ASF licenses this file
+// to you under the Apache License, Version 2.0 (the
+// "License"); you may not use this file except in compliance
+// with the License. You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing,
+// software distributed under the License is distributed on an
+// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+// KIND, either express or implied. See the License for the
+// specific language governing permissions and limitations
+// under the License.
+package org.apache.cloudstack.api.command.admin.acl;
+
+import com.cloud.exception.ConcurrentOperationException;
+import com.cloud.exception.InsufficientCapacityException;
+import com.cloud.exception.NetworkRuleConflictException;
+import com.cloud.exception.ResourceAllocationException;
+import com.cloud.exception.ResourceUnavailableException;
+import com.cloud.user.Account;
+import org.apache.cloudstack.acl.Role;
+import org.apache.cloudstack.acl.RoleType;
+import org.apache.cloudstack.api.APICommand;
+import org.apache.cloudstack.api.ApiArgValidator;
+import org.apache.cloudstack.api.ApiConstants;
+import org.apache.cloudstack.api.ApiErrorCode;
+import org.apache.cloudstack.api.BaseCmd;
+import org.apache.cloudstack.api.Parameter;
+import org.apache.cloudstack.api.ServerApiException;
+import org.apache.cloudstack.api.response.RoleResponse;
+import org.apache.cloudstack.api.response.SuccessResponse;
+import org.apache.cloudstack.context.CallContext;
+
+@APICommand(name = "enableRole", description = "Enables a role", responseObject = SuccessResponse.class,
+ requestHasSensitiveInfo = false, responseHasSensitiveInfo = false,
+ since = "4.20.0",
+ authorized = {RoleType.Admin})
+public class EnableRoleCmd extends BaseCmd {
+
+ @Parameter(name = ApiConstants.ID, type = BaseCmd.CommandType.UUID, required = true, entityType = RoleResponse.class,
+ description = "ID of the role", validations = {ApiArgValidator.PositiveNumber})
+ private Long roleId;
+
+ public Long getRoleId() {
+ return roleId;
+ }
+
+ @Override
+ public void execute() throws ResourceUnavailableException, InsufficientCapacityException, ServerApiException, ConcurrentOperationException, ResourceAllocationException, NetworkRuleConflictException {
+ Role role = roleService.findRole(getRoleId());
+ if (role == null) {
+ throw new ServerApiException(ApiErrorCode.PARAM_ERROR, "Cannot find the role with provided id");
+ }
+ CallContext.current().setEventDetails("Role id: " + role.getId());
+ boolean result = roleService.enableRole(role);
+ SuccessResponse response = new SuccessResponse(getCommandName());
+ response.setSuccess(result);
+ setResponseObject(response);
+ }
+
+ @Override
+ public long getEntityOwnerId() {
+ return Account.ACCOUNT_ID_SYSTEM;
+ }
+}
diff --git a/api/src/main/java/org/apache/cloudstack/api/command/admin/acl/ListRolesCmd.java b/api/src/main/java/org/apache/cloudstack/api/command/admin/acl/ListRolesCmd.java
index fef2b27eaa5a..d82cc852e4ff 100644
--- a/api/src/main/java/org/apache/cloudstack/api/command/admin/acl/ListRolesCmd.java
+++ b/api/src/main/java/org/apache/cloudstack/api/command/admin/acl/ListRolesCmd.java
@@ -21,6 +21,7 @@
import java.util.Collections;
import java.util.List;
+import com.cloud.exception.InvalidParameterValueException;
import org.apache.cloudstack.acl.Role;
import org.apache.cloudstack.acl.RoleType;
import org.apache.cloudstack.api.APICommand;
@@ -51,6 +52,9 @@ public class ListRolesCmd extends BaseListCmd {
@Parameter(name = ApiConstants.TYPE, type = CommandType.STRING, description = "List role by role type, valid options are: Admin, ResourceAdmin, DomainAdmin, User.")
private String roleType;
+ @Parameter(name = ApiConstants.STATE, type = CommandType.STRING, description = "List role by role type status, valid options are: enabled, disabled")
+ private String roleState;
+
/////////////////////////////////////////////////////
/////////////////// Accessors ///////////////////////
/////////////////////////////////////////////////////
@@ -70,6 +74,17 @@ public RoleType getRoleType() {
return null;
}
+ public Role.State getRoleState() {
+ if (roleState == null) {
+ return null;
+ }
+ try {
+ return Role.State.valueOf(roleState.toUpperCase());
+ } catch (IllegalArgumentException e) {
+ throw new InvalidParameterValueException("Unrecognized role state value");
+ }
+ }
+
/////////////////////////////////////////////////////
/////////////// API Implementation///////////////////
/////////////////////////////////////////////////////
@@ -93,6 +108,7 @@ private void setupResponse(final Pair, Integer> roles) {
roleResponse.setDescription(role.getDescription());
roleResponse.setIsDefault(role.isDefault());
roleResponse.setPublicRole(role.isPublicRole());
+ roleResponse.setState(role.getState().toString());
roleResponse.setObjectName("role");
roleResponses.add(roleResponse);
}
@@ -104,14 +120,16 @@ private void setupResponse(final Pair, Integer> roles) {
@Override
public void execute() {
Pair, Integer> roles;
+ Role.State state = getRoleState();
+ String roleStateStr = state != null ? state.toString() : null;
if (getId() != null && getId() > 0L) {
roles = new Pair<>(Collections.singletonList(roleService.findRole(getId(), true)), 1);
} else if (StringUtils.isNotBlank(getName()) || StringUtils.isNotBlank(getKeyword())) {
- roles = roleService.findRolesByName(getName(), getKeyword(), getStartIndex(), getPageSizeVal());
+ roles = roleService.findRolesByName(getName(), getKeyword(), roleStateStr, getStartIndex(), getPageSizeVal());
} else if (getRoleType() != null) {
- roles = roleService.findRolesByType(getRoleType(), getStartIndex(), getPageSizeVal());
+ roles = roleService.findRolesByType(getRoleType(), roleStateStr, getStartIndex(), getPageSizeVal());
} else {
- roles = roleService.listRoles(getStartIndex(), getPageSizeVal());
+ roles = roleService.listRoles(roleStateStr, getStartIndex(), getPageSizeVal());
}
setupResponse(roles);
}
diff --git a/api/src/main/java/org/apache/cloudstack/api/command/admin/acl/RoleCmd.java b/api/src/main/java/org/apache/cloudstack/api/command/admin/acl/RoleCmd.java
index 4c317d06b136..b3d816adc3fb 100644
--- a/api/src/main/java/org/apache/cloudstack/api/command/admin/acl/RoleCmd.java
+++ b/api/src/main/java/org/apache/cloudstack/api/command/admin/acl/RoleCmd.java
@@ -59,6 +59,7 @@ protected void setupResponse(final Role role) {
response.setRoleType(role.getRoleType());
response.setDescription(role.getDescription());
response.setPublicRole(role.isPublicRole());
+ response.setState(role.getState().toString());
response.setResponseName(getCommandName());
response.setObjectName("role");
setResponseObject(response);
diff --git a/api/src/main/java/org/apache/cloudstack/api/command/admin/address/AcquirePodIpCmdByAdmin.java b/api/src/main/java/org/apache/cloudstack/api/command/admin/address/AcquirePodIpCmdByAdmin.java
index a965624a2a94..7397697bd2cc 100644
--- a/api/src/main/java/org/apache/cloudstack/api/command/admin/address/AcquirePodIpCmdByAdmin.java
+++ b/api/src/main/java/org/apache/cloudstack/api/command/admin/address/AcquirePodIpCmdByAdmin.java
@@ -16,7 +16,6 @@
// under the License.
package org.apache.cloudstack.api.command.admin.address;
-import org.apache.log4j.Logger;
import org.apache.cloudstack.api.APICommand;
import org.apache.cloudstack.api.ApiConstants;
@@ -35,7 +34,6 @@
@APICommand(name = "acquirePodIpAddress", description = "Allocates IP addresses in respective Pod of a Zone", responseObject = AcquirePodIpCmdResponse.class, requestHasSensitiveInfo = false, responseHasSensitiveInfo = false)
public class AcquirePodIpCmdByAdmin extends BaseCmd {
- public static final Logger s_logger = Logger.getLogger(AcquirePodIpCmdByAdmin.class.getName());
private static final String s_name = "acquirepodipaddress";
/////////////////////////////////////////////////////
diff --git a/api/src/main/java/org/apache/cloudstack/api/command/admin/address/AssociateIPAddrCmdByAdmin.java b/api/src/main/java/org/apache/cloudstack/api/command/admin/address/AssociateIPAddrCmdByAdmin.java
index 56f41b5f58ed..672691ffbd8f 100644
--- a/api/src/main/java/org/apache/cloudstack/api/command/admin/address/AssociateIPAddrCmdByAdmin.java
+++ b/api/src/main/java/org/apache/cloudstack/api/command/admin/address/AssociateIPAddrCmdByAdmin.java
@@ -16,7 +16,6 @@
// under the License.
package org.apache.cloudstack.api.command.admin.address;
-import org.apache.log4j.Logger;
import org.apache.cloudstack.api.APICommand;
import org.apache.cloudstack.api.ResponseObject.ResponseView;
@@ -27,5 +26,4 @@
@APICommand(name = "associateIpAddress", description = "Acquires and associates a public IP to an account.", responseObject = IPAddressResponse.class, responseView = ResponseView.Full,
requestHasSensitiveInfo = false, responseHasSensitiveInfo = false)
public class AssociateIPAddrCmdByAdmin extends AssociateIPAddrCmd implements AdminCmd {
- public static final Logger s_logger = Logger.getLogger(AssociateIPAddrCmdByAdmin.class.getName());
}
diff --git a/api/src/main/java/org/apache/cloudstack/api/command/admin/address/ReleasePodIpCmdByAdmin.java b/api/src/main/java/org/apache/cloudstack/api/command/admin/address/ReleasePodIpCmdByAdmin.java
index b6bfbcaa1e22..7d4cab6a0ac4 100644
--- a/api/src/main/java/org/apache/cloudstack/api/command/admin/address/ReleasePodIpCmdByAdmin.java
+++ b/api/src/main/java/org/apache/cloudstack/api/command/admin/address/ReleasePodIpCmdByAdmin.java
@@ -16,7 +16,6 @@
//under the License.
package org.apache.cloudstack.api.command.admin.address;
-import org.apache.log4j.Logger;
import org.apache.cloudstack.api.APICommand;
import org.apache.cloudstack.api.ApiConstants;
@@ -31,7 +30,6 @@
@APICommand(name = "releasePodIpAddress", description = "Releases a Pod IP back to the Pod", responseObject = SuccessResponse.class, requestHasSensitiveInfo = false, responseHasSensitiveInfo = false)
public class ReleasePodIpCmdByAdmin extends BaseCmd {
- public static final Logger s_logger = Logger.getLogger(ReleasePodIpCmdByAdmin.class.getName());
private static final String s_name = "releasepodipresponse";
diff --git a/api/src/main/java/org/apache/cloudstack/api/command/admin/affinitygroup/UpdateVMAffinityGroupCmdByAdmin.java b/api/src/main/java/org/apache/cloudstack/api/command/admin/affinitygroup/UpdateVMAffinityGroupCmdByAdmin.java
index 7bf9b64481b3..43e70838e18f 100644
--- a/api/src/main/java/org/apache/cloudstack/api/command/admin/affinitygroup/UpdateVMAffinityGroupCmdByAdmin.java
+++ b/api/src/main/java/org/apache/cloudstack/api/command/admin/affinitygroup/UpdateVMAffinityGroupCmdByAdmin.java
@@ -16,7 +16,6 @@
// under the License.
package org.apache.cloudstack.api.command.admin.affinitygroup;
-import org.apache.log4j.Logger;
import org.apache.cloudstack.api.APICommand;
import org.apache.cloudstack.api.ResponseObject.ResponseView;
@@ -33,5 +32,4 @@
requestHasSensitiveInfo = false,
responseHasSensitiveInfo = true)
public class UpdateVMAffinityGroupCmdByAdmin extends UpdateVMAffinityGroupCmd implements AdminCmd {
- public static final Logger s_logger = Logger.getLogger(UpdateVMAffinityGroupCmdByAdmin.class.getName());
}
diff --git a/api/src/main/java/org/apache/cloudstack/api/command/admin/alert/GenerateAlertCmd.java b/api/src/main/java/org/apache/cloudstack/api/command/admin/alert/GenerateAlertCmd.java
index 9446272df6e6..30f3bbbec1b2 100644
--- a/api/src/main/java/org/apache/cloudstack/api/command/admin/alert/GenerateAlertCmd.java
+++ b/api/src/main/java/org/apache/cloudstack/api/command/admin/alert/GenerateAlertCmd.java
@@ -27,7 +27,6 @@
import org.apache.cloudstack.api.response.PodResponse;
import org.apache.cloudstack.api.response.SuccessResponse;
import org.apache.cloudstack.api.response.ZoneResponse;
-import org.apache.log4j.Logger;
import com.cloud.event.EventTypes;
@@ -35,7 +34,6 @@
requestHasSensitiveInfo = false, responseHasSensitiveInfo = false)
public class GenerateAlertCmd extends BaseAsyncCmd {
- public static final Logger s_logger = Logger.getLogger(GenerateAlertCmd.class.getName());
// ///////////////////////////////////////////////////
diff --git a/api/src/main/java/org/apache/cloudstack/api/command/admin/autoscale/CreateCounterCmd.java b/api/src/main/java/org/apache/cloudstack/api/command/admin/autoscale/CreateCounterCmd.java
index 617d1104eda5..7fa66ffff1f4 100644
--- a/api/src/main/java/org/apache/cloudstack/api/command/admin/autoscale/CreateCounterCmd.java
+++ b/api/src/main/java/org/apache/cloudstack/api/command/admin/autoscale/CreateCounterCmd.java
@@ -17,7 +17,6 @@
package org.apache.cloudstack.api.command.admin.autoscale;
-import org.apache.log4j.Logger;
import org.apache.cloudstack.api.APICommand;
import org.apache.cloudstack.api.ApiCommandResourceType;
@@ -35,7 +34,6 @@
@APICommand(name = "createCounter", description = "Adds metric counter for VM auto scaling", responseObject = CounterResponse.class,
requestHasSensitiveInfo = false, responseHasSensitiveInfo = false)
public class CreateCounterCmd extends BaseAsyncCreateCmd {
- public static final Logger s_logger = Logger.getLogger(CreateCounterCmd.class.getName());
private static final String s_name = "counterresponse";
// ///////////////////////////////////////////////////
diff --git a/api/src/main/java/org/apache/cloudstack/api/command/admin/autoscale/DeleteCounterCmd.java b/api/src/main/java/org/apache/cloudstack/api/command/admin/autoscale/DeleteCounterCmd.java
index e1f7859a56b5..b7b2ce5cb70d 100644
--- a/api/src/main/java/org/apache/cloudstack/api/command/admin/autoscale/DeleteCounterCmd.java
+++ b/api/src/main/java/org/apache/cloudstack/api/command/admin/autoscale/DeleteCounterCmd.java
@@ -17,7 +17,6 @@
package org.apache.cloudstack.api.command.admin.autoscale;
-import org.apache.log4j.Logger;
import org.apache.cloudstack.api.APICommand;
import org.apache.cloudstack.api.ApiCommandResourceType;
@@ -36,7 +35,6 @@
@APICommand(name = "deleteCounter", description = "Deletes a counter for VM auto scaling", responseObject = SuccessResponse.class,
requestHasSensitiveInfo = false, responseHasSensitiveInfo = false)
public class DeleteCounterCmd extends BaseAsyncCmd {
- public static final Logger s_logger = Logger.getLogger(DeleteCounterCmd.class.getName());
// ///////////////////////////////////////////////////
// ////////////// API parameters /////////////////////
@@ -55,7 +53,7 @@ public void execute() {
try {
result = _autoScaleService.deleteCounter(getId());
} catch (ResourceInUseException ex) {
- s_logger.warn("Exception: ", ex);
+ logger.warn("Exception: ", ex);
throw new ServerApiException(ApiErrorCode.RESOURCE_IN_USE_ERROR, ex.getMessage());
}
@@ -63,7 +61,7 @@ public void execute() {
SuccessResponse response = new SuccessResponse(getCommandName());
this.setResponseObject(response);
} else {
- s_logger.warn("Failed to delete counter with Id: " + getId());
+ logger.warn("Failed to delete counter with Id: " + getId());
throw new ServerApiException(ApiErrorCode.INTERNAL_ERROR, "Failed to delete counter.");
}
}
diff --git a/api/src/main/java/org/apache/cloudstack/api/command/admin/backup/UpdateBackupOfferingCmd.java b/api/src/main/java/org/apache/cloudstack/api/command/admin/backup/UpdateBackupOfferingCmd.java
index 1cd6f4a83280..9de06715ee74 100644
--- a/api/src/main/java/org/apache/cloudstack/api/command/admin/backup/UpdateBackupOfferingCmd.java
+++ b/api/src/main/java/org/apache/cloudstack/api/command/admin/backup/UpdateBackupOfferingCmd.java
@@ -30,7 +30,6 @@
import org.apache.cloudstack.backup.BackupOffering;
import org.apache.cloudstack.utils.reflectiontostringbuilderutils.ReflectionToStringBuilderUtils;
import org.apache.commons.lang3.StringUtils;
-import org.apache.log4j.Logger;
import com.cloud.exception.InvalidParameterValueException;
import com.cloud.user.Account;
@@ -39,7 +38,6 @@
@APICommand(name = "updateBackupOffering", description = "Updates a backup offering.", responseObject = BackupOfferingResponse.class,
requestHasSensitiveInfo = false, responseHasSensitiveInfo = false, since = "4.16.0")
public class UpdateBackupOfferingCmd extends BaseCmd {
- private static final Logger LOGGER = Logger.getLogger(UpdateBackupOfferingCmd.class.getName());
@Inject
private BackupManager backupManager;
@@ -100,7 +98,7 @@ public void execute() {
this.setResponseObject(response);
} catch (CloudRuntimeException e) {
ApiErrorCode paramError = e instanceof InvalidParameterValueException ? ApiErrorCode.PARAM_ERROR : ApiErrorCode.INTERNAL_ERROR;
- LOGGER.error(String.format("Failed to update Backup Offering [id: %s] due to: [%s].", id, e.getMessage()), e);
+ logger.error(String.format("Failed to update Backup Offering [id: %s] due to: [%s].", id, e.getMessage()), e);
throw new ServerApiException(paramError, e.getMessage());
}
}
diff --git a/api/src/main/java/org/apache/cloudstack/api/command/admin/bgp/CreateASNRangeCmd.java b/api/src/main/java/org/apache/cloudstack/api/command/admin/bgp/CreateASNRangeCmd.java
new file mode 100644
index 000000000000..beacba850c3f
--- /dev/null
+++ b/api/src/main/java/org/apache/cloudstack/api/command/admin/bgp/CreateASNRangeCmd.java
@@ -0,0 +1,83 @@
+// Licensed to the Apache Software Foundation (ASF) under one
+// or more contributor license agreements. See the NOTICE file
+// distributed with this work for additional information
+// regarding copyright ownership. The ASF licenses this file
+// to you under the Apache License, Version 2.0 (the
+// "License"); you may not use this file except in compliance
+// with the License. You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing,
+// software distributed under the License is distributed on an
+// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+// KIND, either express or implied. See the License for the
+// specific language governing permissions and limitations
+// under the License.
+package org.apache.cloudstack.api.command.admin.bgp;
+
+import com.cloud.bgp.ASNumberRange;
+import com.cloud.exception.ConcurrentOperationException;
+import com.cloud.exception.InsufficientCapacityException;
+import com.cloud.exception.NetworkRuleConflictException;
+import com.cloud.exception.ResourceAllocationException;
+import com.cloud.exception.ResourceUnavailableException;
+import com.cloud.user.Account;
+import org.apache.cloudstack.acl.RoleType;
+import org.apache.cloudstack.api.APICommand;
+import org.apache.cloudstack.api.ApiConstants;
+import org.apache.cloudstack.api.ApiErrorCode;
+import org.apache.cloudstack.api.BaseCmd;
+import org.apache.cloudstack.api.Parameter;
+import org.apache.cloudstack.api.ServerApiException;
+import org.apache.cloudstack.api.response.ASNRangeResponse;
+import org.apache.cloudstack.api.response.ZoneResponse;
+
+@APICommand(name = "createASNRange",
+ description = "Creates a range of Autonomous Systems for BGP Dynamic Routing",
+ responseObject = ASNRangeResponse.class,
+ entityType = {ASNumberRange.class},
+ since = "4.20.0",
+ authorized = {RoleType.Admin})
+public class CreateASNRangeCmd extends BaseCmd {
+
+ @Parameter(name = ApiConstants.ZONE_ID, type = BaseCmd.CommandType.UUID, entityType = ZoneResponse.class,
+ description = "the zone ID", required = true)
+ private Long zoneId;
+
+ @Parameter(name = ApiConstants.START_ASN, type = CommandType.LONG, required=true, description = "the start AS Number")
+ private Long startASNumber;
+
+ @Parameter(name = ApiConstants.END_ASN, type = CommandType.LONG, required=true, description = "the end AS Number")
+ private Long endASNumber;
+
+ @Override
+ public void execute() throws ResourceUnavailableException, InsufficientCapacityException, ServerApiException, ConcurrentOperationException, ResourceAllocationException, NetworkRuleConflictException {
+ try {
+ ASNumberRange asnRange = bgpService.createASNumberRange(zoneId, startASNumber, endASNumber);
+ ASNRangeResponse response = _responseGenerator.createASNumberRangeResponse(asnRange);
+ response.setResponseName(getCommandName());
+ setResponseObject(response);
+ } catch (Exception e) {
+ String msg = String.format("Cannot create AS Number Range %s-%s for zone %s: %s", startASNumber, endASNumber, zoneId, e.getMessage());
+ throw new ServerApiException(ApiErrorCode.INTERNAL_ERROR, msg);
+ }
+ }
+
+ public Long getZoneId() {
+ return zoneId;
+ }
+
+ public Long getStartASNumber() {
+ return startASNumber;
+ }
+
+ public Long getEndASNumber() {
+ return endASNumber;
+ }
+
+ @Override
+ public long getEntityOwnerId() {
+ return Account.ACCOUNT_ID_SYSTEM;
+ }
+}
diff --git a/api/src/main/java/org/apache/cloudstack/api/command/admin/bgp/DeleteASNRangeCmd.java b/api/src/main/java/org/apache/cloudstack/api/command/admin/bgp/DeleteASNRangeCmd.java
new file mode 100644
index 000000000000..33e139315bf6
--- /dev/null
+++ b/api/src/main/java/org/apache/cloudstack/api/command/admin/bgp/DeleteASNRangeCmd.java
@@ -0,0 +1,79 @@
+// Licensed to the Apache Software Foundation (ASF) under one
+// or more contributor license agreements. See the NOTICE file
+// distributed with this work for additional information
+// regarding copyright ownership. The ASF licenses this file
+// to you under the Apache License, Version 2.0 (the
+// "License"); you may not use this file except in compliance
+// with the License. You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing,
+// software distributed under the License is distributed on an
+// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+// KIND, either express or implied. See the License for the
+// specific language governing permissions and limitations
+// under the License.
+package org.apache.cloudstack.api.command.admin.bgp;
+
+import com.cloud.exception.ConcurrentOperationException;
+import com.cloud.exception.InsufficientCapacityException;
+import com.cloud.exception.NetworkRuleConflictException;
+import com.cloud.exception.ResourceAllocationException;
+import com.cloud.exception.ResourceUnavailableException;
+import org.apache.cloudstack.acl.RoleType;
+import org.apache.cloudstack.api.APICommand;
+import org.apache.cloudstack.api.ApiConstants;
+import org.apache.cloudstack.api.ApiErrorCode;
+import org.apache.cloudstack.api.BaseCmd;
+import org.apache.cloudstack.api.Parameter;
+import org.apache.cloudstack.api.ServerApiException;
+import org.apache.cloudstack.api.response.ASNRangeResponse;
+import org.apache.cloudstack.api.response.SuccessResponse;
+import org.apache.cloudstack.context.CallContext;
+
+@APICommand(name = "deleteASNRange",
+ description = "deletes a range of Autonomous Systems for BGP Dynamic Routing",
+ responseObject = SuccessResponse.class,
+ since = "4.20.0",
+ authorized = {RoleType.Admin})
+public class DeleteASNRangeCmd extends BaseCmd {
+
+ /////////////////////////////////////////////////////
+ //////////////// API parameters /////////////////////
+ ////////////////////////////////////////////////////
+
+ @Parameter(name = ApiConstants.ID,
+ type = CommandType.UUID,
+ entityType = ASNRangeResponse.class,
+ required = true,
+ description = "ID of the AS range")
+ private Long id;
+
+ /////////////////////////////////////////////////////
+ /////////////////// Accessors ///////////////////////
+ /////////////////////////////////////////////////////
+
+ public Long getId() {
+ return id;
+ }
+
+ /////////////////////////////////////////////////////
+ /////////////// API Implementation///////////////////
+ /////////////////////////////////////////////////////
+
+ @Override
+ public void execute() throws ResourceUnavailableException, InsufficientCapacityException, ServerApiException, ConcurrentOperationException, ResourceAllocationException, NetworkRuleConflictException {
+ if (bgpService.deleteASRange(getId())) {
+ SuccessResponse response = new SuccessResponse(getCommandName());
+ setResponseObject(response);
+ } else {
+ throw new ServerApiException(ApiErrorCode.INTERNAL_ERROR, "Failed to remove AS range: " + getId());
+ }
+ }
+
+ @Override
+ public long getEntityOwnerId() {
+ return CallContext.current().getCallingAccount().getId();
+ }
+}
diff --git a/api/src/main/java/org/apache/cloudstack/api/command/admin/bgp/ListASNRangesCmd.java b/api/src/main/java/org/apache/cloudstack/api/command/admin/bgp/ListASNRangesCmd.java
new file mode 100644
index 000000000000..82e545811029
--- /dev/null
+++ b/api/src/main/java/org/apache/cloudstack/api/command/admin/bgp/ListASNRangesCmd.java
@@ -0,0 +1,79 @@
+// Licensed to the Apache Software Foundation (ASF) under one
+// or more contributor license agreements. See the NOTICE file
+// distributed with this work for additional information
+// regarding copyright ownership. The ASF licenses this file
+// to you under the Apache License, Version 2.0 (the
+// "License"); you may not use this file except in compliance
+// with the License. You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing,
+// software distributed under the License is distributed on an
+// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+// KIND, either express or implied. See the License for the
+// specific language governing permissions and limitations
+// under the License.
+package org.apache.cloudstack.api.command.admin.bgp;
+
+import com.cloud.bgp.ASNumberRange;
+import com.cloud.exception.ConcurrentOperationException;
+import com.cloud.exception.InsufficientCapacityException;
+import com.cloud.exception.NetworkRuleConflictException;
+import com.cloud.exception.ResourceAllocationException;
+import com.cloud.exception.ResourceUnavailableException;
+import com.cloud.user.Account;
+import org.apache.cloudstack.acl.RoleType;
+import org.apache.cloudstack.api.APICommand;
+import org.apache.cloudstack.api.ApiConstants;
+import org.apache.cloudstack.api.ApiErrorCode;
+import org.apache.cloudstack.api.BaseCmd;
+import org.apache.cloudstack.api.BaseListCmd;
+import org.apache.cloudstack.api.Parameter;
+import org.apache.cloudstack.api.ServerApiException;
+import org.apache.cloudstack.api.response.ASNRangeResponse;
+import org.apache.cloudstack.api.response.ListResponse;
+import org.apache.cloudstack.api.response.ZoneResponse;
+
+import java.util.ArrayList;
+import java.util.List;
+
+@APICommand(name = "listASNRanges",
+ description = "List Autonomous Systems Number Ranges",
+ responseObject = ASNRangeResponse.class,
+ entityType = {ASNumberRange.class},
+ since = "4.20.0",
+ authorized = {RoleType.Admin})
+public class ListASNRangesCmd extends BaseListCmd {
+
+ @Parameter(name = ApiConstants.ZONE_ID, type = BaseCmd.CommandType.UUID, entityType = ZoneResponse.class,
+ description = "the zone ID")
+ private Long zoneId;
+
+ @Override
+ public void execute() throws ResourceUnavailableException, InsufficientCapacityException, ServerApiException, ConcurrentOperationException, ResourceAllocationException, NetworkRuleConflictException {
+ try {
+ List ranges = bgpService.listASNumberRanges(zoneId);
+ ListResponse response = new ListResponse<>();
+ List responses = new ArrayList<>();
+ for (ASNumberRange asnRange : ranges) {
+ responses.add(_responseGenerator.createASNumberRangeResponse(asnRange));
+ }
+ response.setResponses(responses);
+ response.setResponseName(getCommandName());
+ setResponseObject(response);
+ } catch (Exception e) {
+ String msg = String.format("Error listing AS Number Ranges: %s", e.getMessage());
+ throw new ServerApiException(ApiErrorCode.INTERNAL_ERROR, msg);
+ }
+ }
+
+ public Long getZoneId() {
+ return zoneId;
+ }
+
+ @Override
+ public long getEntityOwnerId() {
+ return Account.ACCOUNT_ID_SYSTEM;
+ }
+}
diff --git a/api/src/main/java/org/apache/cloudstack/api/command/admin/bgp/ReleaseASNumberCmd.java b/api/src/main/java/org/apache/cloudstack/api/command/admin/bgp/ReleaseASNumberCmd.java
new file mode 100644
index 000000000000..687f60dc6da8
--- /dev/null
+++ b/api/src/main/java/org/apache/cloudstack/api/command/admin/bgp/ReleaseASNumberCmd.java
@@ -0,0 +1,83 @@
+// Licensed to the Apache Software Foundation (ASF) under one
+// or more contributor license agreements. See the NOTICE file
+// distributed with this work for additional information
+// regarding copyright ownership. The ASF licenses this file
+// to you under the Apache License, Version 2.0 (the
+// "License"); you may not use this file except in compliance
+// with the License. You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing,
+// software distributed under the License is distributed on an
+// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+// KIND, either express or implied. See the License for the
+// specific language governing permissions and limitations
+// under the License.
+package org.apache.cloudstack.api.command.admin.bgp;
+
+import com.cloud.exception.ConcurrentOperationException;
+import com.cloud.exception.InsufficientCapacityException;
+import com.cloud.exception.NetworkRuleConflictException;
+import com.cloud.exception.ResourceAllocationException;
+import com.cloud.exception.ResourceUnavailableException;
+import com.cloud.user.Account;
+import com.cloud.utils.Pair;
+import org.apache.cloudstack.acl.RoleType;
+import org.apache.cloudstack.api.APICommand;
+import org.apache.cloudstack.api.ApiConstants;
+import org.apache.cloudstack.api.ApiErrorCode;
+import org.apache.cloudstack.api.BaseCmd;
+import org.apache.cloudstack.api.Parameter;
+import org.apache.cloudstack.api.ServerApiException;
+import org.apache.cloudstack.api.response.SuccessResponse;
+import org.apache.cloudstack.api.response.ZoneResponse;
+
+@APICommand(name = "releaseASNumber",
+ description = "Releases an AS Number back to the pool",
+ since = "4.20.0",
+ authorized = {RoleType.Admin},
+ responseObject = SuccessResponse.class,
+ requestHasSensitiveInfo = false,
+ responseHasSensitiveInfo = false)
+public class ReleaseASNumberCmd extends BaseCmd {
+
+ @Parameter(name = ApiConstants.ZONE_ID, type = BaseCmd.CommandType.UUID, entityType = ZoneResponse.class,
+ description = "the zone ID", required = true)
+ private Long zoneId;
+
+ @Parameter(name= ApiConstants.AS_NUMBER, type=CommandType.LONG, description="the AS Number to be released",
+ required = true)
+ private Long asNumber;
+
+ @Override
+ public void execute() throws ResourceUnavailableException, InsufficientCapacityException, ServerApiException, ConcurrentOperationException, ResourceAllocationException, NetworkRuleConflictException {
+ try {
+ Pair resultPair = bgpService.releaseASNumber(zoneId, asNumber, false);
+ Boolean result = resultPair.first();
+ if (!result) {
+ String details = resultPair.second();
+ throw new ServerApiException(ApiErrorCode.INTERNAL_ERROR, String.format("Cannot release AS Number %s: %s", asNumber, details));
+ }
+ SuccessResponse response = new SuccessResponse(getCommandName());
+ response.setDisplayText(String.format("AS Number %s is released successfully", asNumber));
+ setResponseObject(response);
+ } catch (Exception e) {
+ String msg = String.format("Error releasing AS Number %s: %s", asNumber, e.getMessage());
+ throw new ServerApiException(ApiErrorCode.INTERNAL_ERROR, msg);
+ }
+ }
+
+ public Long getZoneId() {
+ return zoneId;
+ }
+
+ public Long getAsNumber() {
+ return asNumber;
+ }
+
+ @Override
+ public long getEntityOwnerId() {
+ return Account.ACCOUNT_ID_SYSTEM;
+ }
+}
diff --git a/api/src/main/java/org/apache/cloudstack/api/command/admin/ca/IssueCertificateCmd.java b/api/src/main/java/org/apache/cloudstack/api/command/admin/ca/IssueCertificateCmd.java
index 4c543fdb6a89..463af000f58b 100644
--- a/api/src/main/java/org/apache/cloudstack/api/command/admin/ca/IssueCertificateCmd.java
+++ b/api/src/main/java/org/apache/cloudstack/api/command/admin/ca/IssueCertificateCmd.java
@@ -37,7 +37,6 @@
import org.apache.cloudstack.framework.ca.Certificate;
import org.apache.cloudstack.utils.security.CertUtils;
import org.apache.commons.lang3.StringUtils;
-import org.apache.log4j.Logger;
import com.cloud.event.EventTypes;
@@ -49,7 +48,6 @@
since = "4.11.0",
authorized = {RoleType.Admin})
public class IssueCertificateCmd extends BaseAsyncCmd {
- private static final Logger LOG = Logger.getLogger(IssueCertificateCmd.class);
@Inject
@@ -132,7 +130,7 @@ public void execute() {
certificateResponse.setCaCertificate(CertUtils.x509CertificatesToPem(certificate.getCaCertificates()));
}
} catch (final IOException e) {
- LOG.error("Failed to generate and convert client certificate(s) to PEM due to error: ", e);
+ logger.error("Failed to generate and convert client certificate(s) to PEM due to error: ", e);
throw new ServerApiException(ApiErrorCode.INTERNAL_ERROR, "Failed to process and return client certificate");
}
certificateResponse.setResponseName(getCommandName());
diff --git a/api/src/main/java/org/apache/cloudstack/api/command/admin/cluster/AddClusterCmd.java b/api/src/main/java/org/apache/cloudstack/api/command/admin/cluster/AddClusterCmd.java
index df48b2511b60..69cb43ce40ec 100644
--- a/api/src/main/java/org/apache/cloudstack/api/command/admin/cluster/AddClusterCmd.java
+++ b/api/src/main/java/org/apache/cloudstack/api/command/admin/cluster/AddClusterCmd.java
@@ -20,8 +20,8 @@
import java.util.ArrayList;
import java.util.List;
+import com.cloud.cpu.CPU;
import org.apache.cloudstack.api.ApiCommandResourceType;
-import org.apache.log4j.Logger;
import org.apache.cloudstack.api.APICommand;
import org.apache.cloudstack.api.ApiConstants;
@@ -42,7 +42,6 @@
@APICommand(name = "addCluster", description = "Adds a new cluster", responseObject = ClusterResponse.class,
requestHasSensitiveInfo = true, responseHasSensitiveInfo = false)
public class AddClusterCmd extends BaseCmd {
- public static final Logger s_logger = Logger.getLogger(AddClusterCmd.class.getName());
@Parameter(name = ApiConstants.CLUSTER_NAME, type = CommandType.STRING, required = true, description = "the cluster name")
@@ -69,6 +68,11 @@ public class AddClusterCmd extends BaseCmd {
description = "hypervisor type of the cluster: XenServer,KVM,VMware,Hyperv,BareMetal,Simulator,Ovm3")
private String hypervisor;
+ @Parameter(name = ApiConstants.ARCH, type = CommandType.STRING,
+ description = "the CPU arch of the cluster. Valid options are: x86_64, aarch64",
+ since = "4.20")
+ private String arch;
+
@Parameter(name = ApiConstants.CLUSTER_TYPE, type = CommandType.STRING, required = true, description = "type of the cluster: CloudManaged, ExternalManaged")
private String clusterType;
@@ -206,6 +210,10 @@ public ApiCommandResourceType getApiResourceType() {
return ApiCommandResourceType.Cluster;
}
+ public CPU.CPUArch getArch() {
+ return CPU.CPUArch.fromType(arch);
+ }
+
@Override
public void execute() {
try {
@@ -226,10 +234,10 @@ public void execute() {
this.setResponseObject(response);
} catch (DiscoveryException ex) {
- s_logger.warn("Exception: ", ex);
+ logger.warn("Exception: ", ex);
throw new ServerApiException(ApiErrorCode.INTERNAL_ERROR, ex.getMessage());
} catch (ResourceInUseException ex) {
- s_logger.warn("Exception: ", ex);
+ logger.warn("Exception: ", ex);
ServerApiException e = new ServerApiException(ApiErrorCode.INTERNAL_ERROR, ex.getMessage());
for (String proxyObj : ex.getIdProxyList()) {
e.addProxyObject(proxyObj);
diff --git a/api/src/main/java/org/apache/cloudstack/api/command/admin/cluster/DeleteClusterCmd.java b/api/src/main/java/org/apache/cloudstack/api/command/admin/cluster/DeleteClusterCmd.java
index 497cef4c3eca..2b1cfe8bcb58 100644
--- a/api/src/main/java/org/apache/cloudstack/api/command/admin/cluster/DeleteClusterCmd.java
+++ b/api/src/main/java/org/apache/cloudstack/api/command/admin/cluster/DeleteClusterCmd.java
@@ -17,7 +17,6 @@
package org.apache.cloudstack.api.command.admin.cluster;
import org.apache.cloudstack.api.ApiCommandResourceType;
-import org.apache.log4j.Logger;
import org.apache.cloudstack.api.APICommand;
import org.apache.cloudstack.api.ApiConstants;
@@ -33,7 +32,6 @@
@APICommand(name = "deleteCluster", description = "Deletes a cluster.", responseObject = SuccessResponse.class,
requestHasSensitiveInfo = false, responseHasSensitiveInfo = false)
public class DeleteClusterCmd extends BaseCmd {
- public static final Logger s_logger = Logger.getLogger(DeleteClusterCmd.class.getName());
/////////////////////////////////////////////////////
diff --git a/api/src/main/java/org/apache/cloudstack/api/command/admin/cluster/ListClustersCmd.java b/api/src/main/java/org/apache/cloudstack/api/command/admin/cluster/ListClustersCmd.java
index d83330c664a9..67d0678410cf 100644
--- a/api/src/main/java/org/apache/cloudstack/api/command/admin/cluster/ListClustersCmd.java
+++ b/api/src/main/java/org/apache/cloudstack/api/command/admin/cluster/ListClustersCmd.java
@@ -19,7 +19,6 @@
import java.util.ArrayList;
import java.util.List;
-import org.apache.log4j.Logger;
import org.apache.cloudstack.api.APICommand;
import org.apache.cloudstack.api.ApiConstants;
@@ -36,7 +35,6 @@
@APICommand(name = "listClusters", description = "Lists clusters.", responseObject = ClusterResponse.class,
requestHasSensitiveInfo = false, responseHasSensitiveInfo = false)
public class ListClustersCmd extends BaseListCmd {
- public static final Logger s_logger = Logger.getLogger(ListClustersCmd.class.getName());
/////////////////////////////////////////////////////
diff --git a/api/src/main/java/org/apache/cloudstack/api/command/admin/cluster/UpdateClusterCmd.java b/api/src/main/java/org/apache/cloudstack/api/command/admin/cluster/UpdateClusterCmd.java
index dd527fb409af..c4ee87380ed9 100644
--- a/api/src/main/java/org/apache/cloudstack/api/command/admin/cluster/UpdateClusterCmd.java
+++ b/api/src/main/java/org/apache/cloudstack/api/command/admin/cluster/UpdateClusterCmd.java
@@ -16,8 +16,8 @@
// under the License.
package org.apache.cloudstack.api.command.admin.cluster;
+import com.cloud.cpu.CPU;
import org.apache.cloudstack.api.ApiCommandResourceType;
-import org.apache.log4j.Logger;
import org.apache.cloudstack.api.APICommand;
import org.apache.cloudstack.api.ApiConstants;
@@ -30,11 +30,11 @@
import com.cloud.exception.InvalidParameterValueException;
import com.cloud.org.Cluster;
import com.cloud.user.Account;
+import org.apache.commons.lang3.StringUtils;
@APICommand(name = "updateCluster", description = "Updates an existing cluster", responseObject = ClusterResponse.class,
requestHasSensitiveInfo = false, responseHasSensitiveInfo = false)
public class UpdateClusterCmd extends BaseCmd {
- public static final Logger s_logger = Logger.getLogger(AddClusterCmd.class.getName());
@Parameter(name = ApiConstants.ID, type = CommandType.UUID, entityType = ClusterResponse.class, required = true, description = "the ID of the Cluster")
@@ -55,6 +55,11 @@ public class UpdateClusterCmd extends BaseCmd {
@Parameter(name = ApiConstants.MANAGED_STATE, type = CommandType.STRING, description = "whether this cluster is managed by cloudstack")
private String managedState;
+ @Parameter(name = ApiConstants.ARCH, type = CommandType.STRING,
+ description = "the CPU arch of the cluster. Valid options are: x86_64, aarch64",
+ since = "4.20")
+ private String arch;
+
public String getClusterName() {
return clusterName;
}
@@ -110,6 +115,13 @@ public ApiCommandResourceType getApiResourceType() {
return ApiCommandResourceType.Cluster;
}
+ public CPU.CPUArch getArch() {
+ if (StringUtils.isBlank(arch)) {
+ return null;
+ }
+ return CPU.CPUArch.fromType(arch);
+ }
+
@Override
public void execute() {
Cluster cluster = _resourceService.getCluster(getId());
diff --git a/api/src/main/java/org/apache/cloudstack/api/command/admin/config/ListCfgGroupsByCmd.java b/api/src/main/java/org/apache/cloudstack/api/command/admin/config/ListCfgGroupsByCmd.java
index 46ab10cb2bcd..d735218169d6 100644
--- a/api/src/main/java/org/apache/cloudstack/api/command/admin/config/ListCfgGroupsByCmd.java
+++ b/api/src/main/java/org/apache/cloudstack/api/command/admin/config/ListCfgGroupsByCmd.java
@@ -27,14 +27,12 @@
import org.apache.cloudstack.api.response.ConfigurationGroupResponse;
import org.apache.cloudstack.api.response.ListResponse;
import org.apache.cloudstack.config.ConfigurationGroup;
-import org.apache.log4j.Logger;
import com.cloud.utils.Pair;
@APICommand(name = ListCfgGroupsByCmd.APINAME, description = "Lists all configuration groups (primarily used for UI).", responseObject = ConfigurationGroupResponse.class,
requestHasSensitiveInfo = false, responseHasSensitiveInfo = false, since = "4.18.0")
public class ListCfgGroupsByCmd extends BaseListCmd {
- public static final Logger s_logger = Logger.getLogger(ListCfgGroupsByCmd.class.getName());
public static final String APINAME = "listConfigurationGroups";
diff --git a/api/src/main/java/org/apache/cloudstack/api/command/admin/config/ListCfgsByCmd.java b/api/src/main/java/org/apache/cloudstack/api/command/admin/config/ListCfgsByCmd.java
index 80abe5d3e8ff..e365d8bc2dc7 100644
--- a/api/src/main/java/org/apache/cloudstack/api/command/admin/config/ListCfgsByCmd.java
+++ b/api/src/main/java/org/apache/cloudstack/api/command/admin/config/ListCfgsByCmd.java
@@ -23,7 +23,6 @@
import org.apache.cloudstack.api.ServerApiException;
import org.apache.cloudstack.api.response.DomainResponse;
import org.apache.commons.lang3.StringUtils;
-import org.apache.log4j.Logger;
import org.apache.cloudstack.api.APICommand;
import org.apache.cloudstack.api.ApiConstants;
@@ -47,7 +46,6 @@
public class ListCfgsByCmd extends BaseListCmd {
public static final String APINAME = "listConfigurations";
- public static final Logger s_logger = Logger.getLogger(ListCfgsByCmd.class.getName());
// ///////////////////////////////////////////////////
diff --git a/api/src/main/java/org/apache/cloudstack/api/command/admin/config/ListDeploymentPlannersCmd.java b/api/src/main/java/org/apache/cloudstack/api/command/admin/config/ListDeploymentPlannersCmd.java
index 4f5186a6df69..78fa31beeb48 100644
--- a/api/src/main/java/org/apache/cloudstack/api/command/admin/config/ListDeploymentPlannersCmd.java
+++ b/api/src/main/java/org/apache/cloudstack/api/command/admin/config/ListDeploymentPlannersCmd.java
@@ -19,7 +19,6 @@
import java.util.ArrayList;
import java.util.List;
-import org.apache.log4j.Logger;
import org.apache.cloudstack.api.APICommand;
import org.apache.cloudstack.api.BaseListCmd;
@@ -29,7 +28,6 @@
@APICommand(name = "listDeploymentPlanners", description = "Lists all DeploymentPlanners available.", responseObject = DeploymentPlannersResponse.class,
requestHasSensitiveInfo = false, responseHasSensitiveInfo = false)
public class ListDeploymentPlannersCmd extends BaseListCmd {
- public static final Logger s_logger = Logger.getLogger(ListDeploymentPlannersCmd.class.getName());
/////////////////////////////////////////////////////
diff --git a/api/src/main/java/org/apache/cloudstack/api/command/admin/config/ListHypervisorCapabilitiesCmd.java b/api/src/main/java/org/apache/cloudstack/api/command/admin/config/ListHypervisorCapabilitiesCmd.java
index 64f1c19b70cd..e7cc9e0234e2 100644
--- a/api/src/main/java/org/apache/cloudstack/api/command/admin/config/ListHypervisorCapabilitiesCmd.java
+++ b/api/src/main/java/org/apache/cloudstack/api/command/admin/config/ListHypervisorCapabilitiesCmd.java
@@ -19,7 +19,6 @@
import java.util.ArrayList;
import java.util.List;
-import org.apache.log4j.Logger;
import org.apache.cloudstack.api.APICommand;
import org.apache.cloudstack.api.ApiConstants;
@@ -39,7 +38,6 @@
requestHasSensitiveInfo = false,
responseHasSensitiveInfo = false)
public class ListHypervisorCapabilitiesCmd extends BaseListCmd {
- public static final Logger s_logger = Logger.getLogger(ListHypervisorCapabilitiesCmd.class.getName());
/////////////////////////////////////////////////////
diff --git a/api/src/main/java/org/apache/cloudstack/api/command/admin/config/ResetCfgCmd.java b/api/src/main/java/org/apache/cloudstack/api/command/admin/config/ResetCfgCmd.java
index ada389e00930..f114b263b634 100644
--- a/api/src/main/java/org/apache/cloudstack/api/command/admin/config/ResetCfgCmd.java
+++ b/api/src/main/java/org/apache/cloudstack/api/command/admin/config/ResetCfgCmd.java
@@ -25,7 +25,6 @@
import org.apache.cloudstack.api.ServerApiException;
import org.apache.cloudstack.api.response.ImageStoreResponse;
import org.apache.cloudstack.framework.config.ConfigKey;
-import org.apache.log4j.Logger;
import org.apache.cloudstack.api.response.AccountResponse;
import org.apache.cloudstack.api.response.ClusterResponse;
@@ -41,7 +40,6 @@
@APICommand(name = "resetConfiguration", description = "Resets a configuration. The configuration will be set to default value for global setting, and removed from account_details or domain_details for Account/Domain settings", responseObject = ConfigurationResponse.class,
requestHasSensitiveInfo = false, responseHasSensitiveInfo = false, since = "4.16.0")
public class ResetCfgCmd extends BaseCmd {
- public static final Logger s_logger = Logger.getLogger(ResetCfgCmd.class.getName());
/////////////////////////////////////////////////////
//////////////// API parameters /////////////////////
diff --git a/api/src/main/java/org/apache/cloudstack/api/command/admin/config/UpdateCfgCmd.java b/api/src/main/java/org/apache/cloudstack/api/command/admin/config/UpdateCfgCmd.java
index 63dc51452f0f..dbf478df7012 100644
--- a/api/src/main/java/org/apache/cloudstack/api/command/admin/config/UpdateCfgCmd.java
+++ b/api/src/main/java/org/apache/cloudstack/api/command/admin/config/UpdateCfgCmd.java
@@ -19,7 +19,6 @@
import com.cloud.utils.crypt.DBEncryptionUtil;
import org.apache.cloudstack.acl.RoleService;
import org.apache.cloudstack.api.response.DomainResponse;
-import org.apache.log4j.Logger;
import org.apache.cloudstack.api.APICommand;
import org.apache.cloudstack.api.ApiArgValidator;
import org.apache.cloudstack.api.ApiConstants;
@@ -41,7 +40,6 @@
@APICommand(name = "updateConfiguration", description = "Updates a configuration.", responseObject = ConfigurationResponse.class,
requestHasSensitiveInfo = false, responseHasSensitiveInfo = false)
public class UpdateCfgCmd extends BaseCmd {
- public static final Logger s_logger = Logger.getLogger(UpdateCfgCmd.class.getName());
/////////////////////////////////////////////////////
//////////////// API parameters /////////////////////
diff --git a/api/src/main/java/org/apache/cloudstack/api/command/admin/config/UpdateHypervisorCapabilitiesCmd.java b/api/src/main/java/org/apache/cloudstack/api/command/admin/config/UpdateHypervisorCapabilitiesCmd.java
index 6c70b24653d8..01f7af108416 100644
--- a/api/src/main/java/org/apache/cloudstack/api/command/admin/config/UpdateHypervisorCapabilitiesCmd.java
+++ b/api/src/main/java/org/apache/cloudstack/api/command/admin/config/UpdateHypervisorCapabilitiesCmd.java
@@ -16,7 +16,6 @@
// under the License.
package org.apache.cloudstack.api.command.admin.config;
-import org.apache.log4j.Logger;
import org.apache.cloudstack.api.APICommand;
import org.apache.cloudstack.api.ApiConstants;
@@ -36,7 +35,6 @@
requestHasSensitiveInfo = false,
responseHasSensitiveInfo = false)
public class UpdateHypervisorCapabilitiesCmd extends BaseCmd {
- public static final Logger s_logger = Logger.getLogger(UpdateHypervisorCapabilitiesCmd.class.getName());
/////////////////////////////////////////////////////
//////////////// API parameters /////////////////////
diff --git a/api/src/main/java/org/apache/cloudstack/api/command/admin/diagnostics/RunDiagnosticsCmd.java b/api/src/main/java/org/apache/cloudstack/api/command/admin/diagnostics/RunDiagnosticsCmd.java
index 3d3c7410dc58..4537eb6f215c 100644
--- a/api/src/main/java/org/apache/cloudstack/api/command/admin/diagnostics/RunDiagnosticsCmd.java
+++ b/api/src/main/java/org/apache/cloudstack/api/command/admin/diagnostics/RunDiagnosticsCmd.java
@@ -38,7 +38,6 @@
import org.apache.cloudstack.diagnostics.DiagnosticsService;
import org.apache.cloudstack.diagnostics.DiagnosticsType;
import org.apache.commons.collections.CollectionUtils;
-import org.apache.log4j.Logger;
import com.cloud.event.EventTypes;
import com.cloud.exception.InsufficientCapacityException;
@@ -53,7 +52,6 @@
authorized = {RoleType.Admin},
since = "4.12.0.0")
public class RunDiagnosticsCmd extends BaseAsyncCmd {
- private static final Logger LOGGER = Logger.getLogger(RunDiagnosticsCmd.class);
@Inject
private DiagnosticsService diagnosticsService;
diff --git a/api/src/main/java/org/apache/cloudstack/api/command/admin/direct/download/ListTemplateDirectDownloadCertificatesCmd.java b/api/src/main/java/org/apache/cloudstack/api/command/admin/direct/download/ListTemplateDirectDownloadCertificatesCmd.java
index 53b29a37f8f1..145ff6ba7823 100644
--- a/api/src/main/java/org/apache/cloudstack/api/command/admin/direct/download/ListTemplateDirectDownloadCertificatesCmd.java
+++ b/api/src/main/java/org/apache/cloudstack/api/command/admin/direct/download/ListTemplateDirectDownloadCertificatesCmd.java
@@ -35,7 +35,6 @@
import org.apache.cloudstack.direct.download.DirectDownloadCertificate;
import org.apache.cloudstack.direct.download.DirectDownloadCertificateHostMap;
import org.apache.cloudstack.direct.download.DirectDownloadManager;
-import org.apache.log4j.Logger;
import javax.inject.Inject;
import java.util.ArrayList;
@@ -63,7 +62,6 @@ public class ListTemplateDirectDownloadCertificatesCmd extends BaseListCmd {
description = "if set to true: include the hosts where the certificate is uploaded to")
private Boolean listHosts;
- private static final Logger LOG = Logger.getLogger(ListTemplateDirectDownloadCertificatesCmd.class);
public boolean isListHosts() {
return listHosts != null && listHosts;
diff --git a/api/src/main/java/org/apache/cloudstack/api/command/admin/direct/download/RevokeTemplateDirectDownloadCertificateCmd.java b/api/src/main/java/org/apache/cloudstack/api/command/admin/direct/download/RevokeTemplateDirectDownloadCertificateCmd.java
index e44ebd312742..eb9031cbc587 100644
--- a/api/src/main/java/org/apache/cloudstack/api/command/admin/direct/download/RevokeTemplateDirectDownloadCertificateCmd.java
+++ b/api/src/main/java/org/apache/cloudstack/api/command/admin/direct/download/RevokeTemplateDirectDownloadCertificateCmd.java
@@ -41,7 +41,6 @@
import org.apache.cloudstack.direct.download.DirectDownloadManager.HostCertificateStatus;
import org.apache.commons.lang3.ObjectUtils;
import org.apache.commons.lang3.StringUtils;
-import org.apache.log4j.Logger;
import javax.inject.Inject;
import java.util.ArrayList;
@@ -57,7 +56,6 @@ public class RevokeTemplateDirectDownloadCertificateCmd extends BaseCmd {
@Inject
DirectDownloadManager directDownloadManager;
- private static final Logger LOG = Logger.getLogger(RevokeTemplateDirectDownloadCertificateCmd.class);
@Parameter(name = ApiConstants.ID, type = CommandType.UUID,
entityType = DirectDownloadCertificateResponse.class,
diff --git a/api/src/main/java/org/apache/cloudstack/api/command/admin/direct/download/UploadTemplateDirectDownloadCertificateCmd.java b/api/src/main/java/org/apache/cloudstack/api/command/admin/direct/download/UploadTemplateDirectDownloadCertificateCmd.java
index 0fa1797c7fe8..c5c102be56d6 100644
--- a/api/src/main/java/org/apache/cloudstack/api/command/admin/direct/download/UploadTemplateDirectDownloadCertificateCmd.java
+++ b/api/src/main/java/org/apache/cloudstack/api/command/admin/direct/download/UploadTemplateDirectDownloadCertificateCmd.java
@@ -33,7 +33,6 @@
import org.apache.cloudstack.direct.download.DirectDownloadCertificate;
import org.apache.cloudstack.direct.download.DirectDownloadManager;
import org.apache.cloudstack.direct.download.DirectDownloadManager.HostCertificateStatus;
-import org.apache.log4j.Logger;
import javax.inject.Inject;
import java.util.ArrayList;
@@ -49,7 +48,6 @@ public class UploadTemplateDirectDownloadCertificateCmd extends BaseCmd {
@Inject
DirectDownloadManager directDownloadManager;
- private static final Logger LOG = Logger.getLogger(UploadTemplateDirectDownloadCertificateCmd.class);
@Parameter(name = ApiConstants.CERTIFICATE, type = BaseCmd.CommandType.STRING, required = true, length = 65535,
description = "SSL certificate")
@@ -97,7 +95,7 @@ public void execute() {
}
try {
- LOG.debug("Uploading certificate " + name + " to agents for Direct Download");
+ logger.debug("Uploading certificate " + name + " to agents for Direct Download");
Pair> uploadStatus =
directDownloadManager.uploadCertificateToHosts(certificate, name, hypervisor, zoneId, hostId);
DirectDownloadCertificate certificate = uploadStatus.first();
diff --git a/api/src/main/java/org/apache/cloudstack/api/command/admin/domain/CreateDomainCmd.java b/api/src/main/java/org/apache/cloudstack/api/command/admin/domain/CreateDomainCmd.java
index f6e09695f88b..c7f06920bb8d 100644
--- a/api/src/main/java/org/apache/cloudstack/api/command/admin/domain/CreateDomainCmd.java
+++ b/api/src/main/java/org/apache/cloudstack/api/command/admin/domain/CreateDomainCmd.java
@@ -17,7 +17,6 @@
package org.apache.cloudstack.api.command.admin.domain;
import org.apache.cloudstack.api.ApiCommandResourceType;
-import org.apache.log4j.Logger;
import org.apache.cloudstack.acl.RoleType;
import org.apache.cloudstack.api.APICommand;
import org.apache.cloudstack.api.ApiConstants;
@@ -35,7 +34,6 @@
requestHasSensitiveInfo = false, responseHasSensitiveInfo = false, authorized = {
RoleType.Admin, RoleType.DomainAdmin })
public class CreateDomainCmd extends BaseCmd {
- public static final Logger s_logger = Logger.getLogger(CreateDomainCmd.class.getName());
/////////////////////////////////////////////////////
diff --git a/api/src/main/java/org/apache/cloudstack/api/command/admin/domain/DeleteDomainCmd.java b/api/src/main/java/org/apache/cloudstack/api/command/admin/domain/DeleteDomainCmd.java
index e0783b63098f..db3bae25e399 100644
--- a/api/src/main/java/org/apache/cloudstack/api/command/admin/domain/DeleteDomainCmd.java
+++ b/api/src/main/java/org/apache/cloudstack/api/command/admin/domain/DeleteDomainCmd.java
@@ -30,7 +30,6 @@
import org.apache.cloudstack.api.response.SuccessResponse;
import org.apache.cloudstack.context.CallContext;
import org.apache.cloudstack.region.RegionService;
-import org.apache.log4j.Logger;
import com.cloud.domain.Domain;
import com.cloud.event.EventTypes;
@@ -40,7 +39,6 @@
requestHasSensitiveInfo = false, responseHasSensitiveInfo = false, authorized = {
RoleType.Admin, RoleType.DomainAdmin })
public class DeleteDomainCmd extends BaseAsyncCmd {
- public static final Logger s_logger = Logger.getLogger(DeleteDomainCmd.class.getName());
/////////////////////////////////////////////////////
//////////////// API parameters /////////////////////
diff --git a/api/src/main/java/org/apache/cloudstack/api/command/admin/domain/ListDomainChildrenCmd.java b/api/src/main/java/org/apache/cloudstack/api/command/admin/domain/ListDomainChildrenCmd.java
index 72614627f31f..8514bb6dda56 100644
--- a/api/src/main/java/org/apache/cloudstack/api/command/admin/domain/ListDomainChildrenCmd.java
+++ b/api/src/main/java/org/apache/cloudstack/api/command/admin/domain/ListDomainChildrenCmd.java
@@ -22,7 +22,6 @@
import com.cloud.server.ResourceIcon;
import com.cloud.server.ResourceTag;
import org.apache.cloudstack.api.response.ResourceIconResponse;
-import org.apache.log4j.Logger;
import org.apache.cloudstack.api.APICommand;
import org.apache.cloudstack.api.ApiConstants;
@@ -37,7 +36,6 @@
@APICommand(name = "listDomainChildren", description = "Lists all children domains belonging to a specified domain", responseObject = DomainResponse.class,
requestHasSensitiveInfo = false, responseHasSensitiveInfo = false)
public class ListDomainChildrenCmd extends BaseListCmd {
- public static final Logger s_logger = Logger.getLogger(ListDomainChildrenCmd.class.getName());
/////////////////////////////////////////////////////
diff --git a/api/src/main/java/org/apache/cloudstack/api/command/admin/domain/ListDomainsCmd.java b/api/src/main/java/org/apache/cloudstack/api/command/admin/domain/ListDomainsCmd.java
index 8b6661f27ff2..b91e56dcaef0 100644
--- a/api/src/main/java/org/apache/cloudstack/api/command/admin/domain/ListDomainsCmd.java
+++ b/api/src/main/java/org/apache/cloudstack/api/command/admin/domain/ListDomainsCmd.java
@@ -20,11 +20,6 @@
import java.util.EnumSet;
import java.util.List;
-import com.cloud.server.ResourceIcon;
-import com.cloud.server.ResourceTag;
-import org.apache.cloudstack.api.response.ResourceIconResponse;
-import org.apache.log4j.Logger;
-
import org.apache.cloudstack.api.APICommand;
import org.apache.cloudstack.api.ApiConstants;
import org.apache.cloudstack.api.ApiConstants.DomainDetails;
@@ -34,14 +29,17 @@
import org.apache.cloudstack.api.command.user.UserCmd;
import org.apache.cloudstack.api.response.DomainResponse;
import org.apache.cloudstack.api.response.ListResponse;
+import org.apache.cloudstack.api.response.ResourceIconResponse;
+import org.apache.commons.collections.CollectionUtils;
import com.cloud.domain.Domain;
import com.cloud.exception.InvalidParameterValueException;
+import com.cloud.server.ResourceIcon;
+import com.cloud.server.ResourceTag;
@APICommand(name = "listDomains", description = "Lists domains and provides detailed information for listed domains", responseObject = DomainResponse.class, responseView = ResponseView.Restricted, entityType = {Domain.class},
requestHasSensitiveInfo = false, responseHasSensitiveInfo = false)
public class ListDomainsCmd extends BaseListCmd implements UserCmd {
- public static final Logger s_logger = Logger.getLogger(ListDomainsCmd.class.getName());
private static final String s_name = "listdomainsresponse";
@@ -73,6 +71,9 @@ public class ListDomainsCmd extends BaseListCmd implements UserCmd {
description = "flag to display the resource icon for domains")
private Boolean showIcon;
+ @Parameter(name = ApiConstants.TAG, type = CommandType.STRING, description = "Tag for resource type to return usage", since = "4.20.0")
+ private String tag;
+
/////////////////////////////////////////////////////
/////////////////// Accessors ///////////////////////
/////////////////////////////////////////////////////
@@ -112,10 +113,14 @@ public EnumSet getDetails() throws InvalidParameterValueException
return dv;
}
- public Boolean getShowIcon() {
+ public boolean getShowIcon() {
return showIcon != null ? showIcon : false;
}
+ public String getTag() {
+ return tag;
+ }
+
/////////////////////////////////////////////////////
/////////////// API Implementation///////////////////
/////////////////////////////////////////////////////
@@ -130,12 +135,17 @@ public void execute() {
ListResponse response = _queryService.searchForDomains(this);
response.setResponseName(getCommandName());
this.setResponseObject(response);
- if (response != null && response.getCount() > 0 && getShowIcon()) {
- updateDomainResponse(response.getResponses());
- }
+ updateDomainResponse(response.getResponses());
}
- private void updateDomainResponse(List response) {
+ protected void updateDomainResponse(List response) {
+ if (CollectionUtils.isEmpty(response)) {
+ return;
+ }
+ _resourceLimitService.updateTaggedResourceLimitsAndCountsForDomains(response, getTag());
+ if (!getShowIcon()) {
+ return;
+ }
for (DomainResponse domainResponse : response) {
ResourceIcon resourceIcon = resourceIconManager.getByResourceTypeAndUuid(ResourceTag.ResourceObjectType.Domain, domainResponse.getId());
if (resourceIcon == null) {
diff --git a/api/src/main/java/org/apache/cloudstack/api/command/admin/domain/UpdateDomainCmd.java b/api/src/main/java/org/apache/cloudstack/api/command/admin/domain/UpdateDomainCmd.java
index db4030da7726..353cb852bfdf 100644
--- a/api/src/main/java/org/apache/cloudstack/api/command/admin/domain/UpdateDomainCmd.java
+++ b/api/src/main/java/org/apache/cloudstack/api/command/admin/domain/UpdateDomainCmd.java
@@ -19,7 +19,6 @@
import javax.inject.Inject;
import org.apache.cloudstack.api.ApiCommandResourceType;
-import org.apache.log4j.Logger;
import org.apache.cloudstack.api.APICommand;
import org.apache.cloudstack.api.ApiConstants;
@@ -37,7 +36,6 @@
@APICommand(name = "updateDomain", description = "Updates a domain with a new name", responseObject = DomainResponse.class,
requestHasSensitiveInfo = false, responseHasSensitiveInfo = false)
public class UpdateDomainCmd extends BaseCmd {
- public static final Logger s_logger = Logger.getLogger(UpdateDomainCmd.class.getName());
/////////////////////////////////////////////////////
//////////////// API parameters /////////////////////
diff --git a/api/src/main/java/org/apache/cloudstack/api/command/admin/guest/AddGuestOsCmd.java b/api/src/main/java/org/apache/cloudstack/api/command/admin/guest/AddGuestOsCmd.java
index 0ad500712878..b854e8389c4f 100644
--- a/api/src/main/java/org/apache/cloudstack/api/command/admin/guest/AddGuestOsCmd.java
+++ b/api/src/main/java/org/apache/cloudstack/api/command/admin/guest/AddGuestOsCmd.java
@@ -17,7 +17,6 @@
package org.apache.cloudstack.api.command.admin.guest;
import org.apache.commons.collections.MapUtils;
-import org.apache.log4j.Logger;
import org.apache.cloudstack.api.APICommand;
import org.apache.cloudstack.api.ApiCommandResourceType;
@@ -43,7 +42,6 @@
@APICommand(name = "addGuestOs", description = "Add a new guest OS type", responseObject = GuestOSResponse.class,
since = "4.4.0", requestHasSensitiveInfo = false, responseHasSensitiveInfo = false)
public class AddGuestOsCmd extends BaseAsyncCreateCmd {
- public static final Logger s_logger = Logger.getLogger(AddGuestOsCmd.class.getName());
/////////////////////////////////////////////////////
diff --git a/api/src/main/java/org/apache/cloudstack/api/command/admin/guest/AddGuestOsMappingCmd.java b/api/src/main/java/org/apache/cloudstack/api/command/admin/guest/AddGuestOsMappingCmd.java
index 0ddd21994e3e..3fdfebb54bf5 100644
--- a/api/src/main/java/org/apache/cloudstack/api/command/admin/guest/AddGuestOsMappingCmd.java
+++ b/api/src/main/java/org/apache/cloudstack/api/command/admin/guest/AddGuestOsMappingCmd.java
@@ -17,7 +17,6 @@
package org.apache.cloudstack.api.command.admin.guest;
import org.apache.commons.lang3.BooleanUtils;
-import org.apache.log4j.Logger;
import org.apache.cloudstack.api.APICommand;
import org.apache.cloudstack.api.ApiCommandResourceType;
@@ -36,7 +35,6 @@
@APICommand(name = "addGuestOsMapping", description = "Adds a guest OS name to hypervisor OS name mapping", responseObject = GuestOsMappingResponse.class,
since = "4.4.0", requestHasSensitiveInfo = false, responseHasSensitiveInfo = false)
public class AddGuestOsMappingCmd extends BaseAsyncCreateCmd {
- public static final Logger s_logger = Logger.getLogger(AddGuestOsMappingCmd.class.getName());
/////////////////////////////////////////////////////
diff --git a/api/src/main/java/org/apache/cloudstack/api/command/admin/guest/GetHypervisorGuestOsNamesCmd.java b/api/src/main/java/org/apache/cloudstack/api/command/admin/guest/GetHypervisorGuestOsNamesCmd.java
index 795177082900..da920a2ec2d0 100644
--- a/api/src/main/java/org/apache/cloudstack/api/command/admin/guest/GetHypervisorGuestOsNamesCmd.java
+++ b/api/src/main/java/org/apache/cloudstack/api/command/admin/guest/GetHypervisorGuestOsNamesCmd.java
@@ -26,7 +26,6 @@
import org.apache.cloudstack.api.BaseCmd;
import org.apache.cloudstack.api.Parameter;
import org.apache.cloudstack.api.response.HypervisorGuestOsNamesResponse;
-import org.apache.log4j.Logger;
import com.cloud.event.EventTypes;
import com.cloud.user.Account;
@@ -35,8 +34,6 @@
@APICommand(name = GetHypervisorGuestOsNamesCmd.APINAME, description = "Gets the guest OS names in the hypervisor", responseObject = HypervisorGuestOsNamesResponse.class,
requestHasSensitiveInfo = false, responseHasSensitiveInfo = false, since = "4.19.0", authorized = {RoleType.Admin})
public class GetHypervisorGuestOsNamesCmd extends BaseAsyncCmd {
- public static final Logger s_logger = Logger.getLogger(GetHypervisorGuestOsNamesCmd.class.getName());
-
public static final String APINAME = "getHypervisorGuestOsNames";
/////////////////////////////////////////////////////
diff --git a/api/src/main/java/org/apache/cloudstack/api/command/admin/guest/ListGuestOsMappingCmd.java b/api/src/main/java/org/apache/cloudstack/api/command/admin/guest/ListGuestOsMappingCmd.java
index 29ae0b4f1884..23e62cdc7810 100644
--- a/api/src/main/java/org/apache/cloudstack/api/command/admin/guest/ListGuestOsMappingCmd.java
+++ b/api/src/main/java/org/apache/cloudstack/api/command/admin/guest/ListGuestOsMappingCmd.java
@@ -19,7 +19,6 @@
import java.util.ArrayList;
import java.util.List;
-import org.apache.log4j.Logger;
import org.apache.cloudstack.api.APICommand;
import org.apache.cloudstack.api.ApiConstants;
@@ -35,7 +34,6 @@
@APICommand(name = "listGuestOsMapping", description = "Lists all available OS mappings for given hypervisor", responseObject = GuestOsMappingResponse.class,
since = "4.4.0", requestHasSensitiveInfo = false, responseHasSensitiveInfo = false)
public class ListGuestOsMappingCmd extends BaseListCmd {
- public static final Logger s_logger = Logger.getLogger(ListGuestOsMappingCmd.class.getName());
/////////////////////////////////////////////////////
diff --git a/api/src/main/java/org/apache/cloudstack/api/command/admin/guest/RemoveGuestOsCmd.java b/api/src/main/java/org/apache/cloudstack/api/command/admin/guest/RemoveGuestOsCmd.java
index 14beb83e073f..d38682ce5bb4 100644
--- a/api/src/main/java/org/apache/cloudstack/api/command/admin/guest/RemoveGuestOsCmd.java
+++ b/api/src/main/java/org/apache/cloudstack/api/command/admin/guest/RemoveGuestOsCmd.java
@@ -16,7 +16,6 @@
// under the License.
package org.apache.cloudstack.api.command.admin.guest;
-import org.apache.log4j.Logger;
import org.apache.cloudstack.api.APICommand;
import org.apache.cloudstack.api.ApiCommandResourceType;
@@ -36,7 +35,6 @@
requestHasSensitiveInfo = false, responseHasSensitiveInfo = false)
public class RemoveGuestOsCmd extends BaseAsyncCmd {
- public static final Logger s_logger = Logger.getLogger(RemoveGuestOsCmd.class.getName());
/////////////////////////////////////////////////////
//////////////// API parameters /////////////////////
diff --git a/api/src/main/java/org/apache/cloudstack/api/command/admin/guest/RemoveGuestOsMappingCmd.java b/api/src/main/java/org/apache/cloudstack/api/command/admin/guest/RemoveGuestOsMappingCmd.java
index 0a72b7e04515..a472ab672c55 100644
--- a/api/src/main/java/org/apache/cloudstack/api/command/admin/guest/RemoveGuestOsMappingCmd.java
+++ b/api/src/main/java/org/apache/cloudstack/api/command/admin/guest/RemoveGuestOsMappingCmd.java
@@ -16,7 +16,6 @@
// under the License.
package org.apache.cloudstack.api.command.admin.guest;
-import org.apache.log4j.Logger;
import org.apache.cloudstack.api.APICommand;
import org.apache.cloudstack.api.ApiCommandResourceType;
@@ -36,7 +35,6 @@
requestHasSensitiveInfo = false, responseHasSensitiveInfo = false)
public class RemoveGuestOsMappingCmd extends BaseAsyncCmd {
- public static final Logger s_logger = Logger.getLogger(RemoveGuestOsMappingCmd.class.getName());
/////////////////////////////////////////////////////
//////////////// API parameters /////////////////////
diff --git a/api/src/main/java/org/apache/cloudstack/api/command/admin/guest/UpdateGuestOsCmd.java b/api/src/main/java/org/apache/cloudstack/api/command/admin/guest/UpdateGuestOsCmd.java
index 25f022b3b515..c98cd149ef30 100644
--- a/api/src/main/java/org/apache/cloudstack/api/command/admin/guest/UpdateGuestOsCmd.java
+++ b/api/src/main/java/org/apache/cloudstack/api/command/admin/guest/UpdateGuestOsCmd.java
@@ -17,7 +17,6 @@
package org.apache.cloudstack.api.command.admin.guest;
import org.apache.commons.collections.MapUtils;
-import org.apache.log4j.Logger;
import org.apache.cloudstack.api.APICommand;
import org.apache.cloudstack.api.ApiCommandResourceType;
@@ -42,7 +41,6 @@
since = "4.4.0", requestHasSensitiveInfo = false, responseHasSensitiveInfo = false)
public class UpdateGuestOsCmd extends BaseAsyncCmd {
- public static final Logger s_logger = Logger.getLogger(UpdateGuestOsCmd.class.getName());
/////////////////////////////////////////////////////
diff --git a/api/src/main/java/org/apache/cloudstack/api/command/admin/guest/UpdateGuestOsMappingCmd.java b/api/src/main/java/org/apache/cloudstack/api/command/admin/guest/UpdateGuestOsMappingCmd.java
index c83be131b4fd..fc67ef0a7e76 100644
--- a/api/src/main/java/org/apache/cloudstack/api/command/admin/guest/UpdateGuestOsMappingCmd.java
+++ b/api/src/main/java/org/apache/cloudstack/api/command/admin/guest/UpdateGuestOsMappingCmd.java
@@ -17,7 +17,6 @@
package org.apache.cloudstack.api.command.admin.guest;
import org.apache.commons.lang3.BooleanUtils;
-import org.apache.log4j.Logger;
import org.apache.cloudstack.api.APICommand;
import org.apache.cloudstack.api.ApiCommandResourceType;
@@ -35,7 +34,6 @@
@APICommand(name = "updateGuestOsMapping", description = "Updates the information about Guest OS to Hypervisor specific name mapping", responseObject = GuestOsMappingResponse.class,
since = "4.4.0", requestHasSensitiveInfo = false, responseHasSensitiveInfo = false)
public class UpdateGuestOsMappingCmd extends BaseAsyncCmd {
- public static final Logger s_logger = Logger.getLogger(UpdateGuestOsMappingCmd.class.getName());
/////////////////////////////////////////////////////
diff --git a/api/src/main/java/org/apache/cloudstack/api/command/admin/host/AddHostCmd.java b/api/src/main/java/org/apache/cloudstack/api/command/admin/host/AddHostCmd.java
index 15955b9f0a85..ca27837aa881 100644
--- a/api/src/main/java/org/apache/cloudstack/api/command/admin/host/AddHostCmd.java
+++ b/api/src/main/java/org/apache/cloudstack/api/command/admin/host/AddHostCmd.java
@@ -19,7 +19,6 @@
import java.util.ArrayList;
import java.util.List;
-import org.apache.log4j.Logger;
import org.apache.cloudstack.api.APICommand;
import org.apache.cloudstack.api.ApiConstants;
@@ -40,7 +39,6 @@
@APICommand(name = "addHost", description = "Adds a new host.", responseObject = HostResponse.class,
requestHasSensitiveInfo = true, responseHasSensitiveInfo = false)
public class AddHostCmd extends BaseCmd {
- public static final Logger s_logger = Logger.getLogger(AddHostCmd.class.getName());
/////////////////////////////////////////////////////
@@ -150,7 +148,7 @@ public void execute() {
this.setResponseObject(response);
} catch (DiscoveryException ex) {
- s_logger.warn("Exception: ", ex);
+ logger.warn("Exception: ", ex);
throw new ServerApiException(ApiErrorCode.INTERNAL_ERROR, ex.getMessage());
}
}
diff --git a/api/src/main/java/org/apache/cloudstack/api/command/admin/host/AddSecondaryStorageCmd.java b/api/src/main/java/org/apache/cloudstack/api/command/admin/host/AddSecondaryStorageCmd.java
index 225eb1dfecdc..c965a39450bd 100644
--- a/api/src/main/java/org/apache/cloudstack/api/command/admin/host/AddSecondaryStorageCmd.java
+++ b/api/src/main/java/org/apache/cloudstack/api/command/admin/host/AddSecondaryStorageCmd.java
@@ -16,7 +16,6 @@
// under the License.
package org.apache.cloudstack.api.command.admin.host;
-import org.apache.log4j.Logger;
import org.apache.cloudstack.api.APICommand;
import org.apache.cloudstack.api.ApiConstants;
@@ -34,7 +33,6 @@
@APICommand(name = "addSecondaryStorage", description = "Adds secondary storage.", responseObject = ImageStoreResponse.class,
requestHasSensitiveInfo = false, responseHasSensitiveInfo = false)
public class AddSecondaryStorageCmd extends BaseCmd {
- public static final Logger s_logger = Logger.getLogger(AddSecondaryStorageCmd.class.getName());
/////////////////////////////////////////////////////
//////////////// API parameters /////////////////////
@@ -81,7 +79,7 @@ public void execute(){
throw new ServerApiException(ApiErrorCode.INTERNAL_ERROR, "Failed to add secondary storage");
}
} catch (DiscoveryException ex) {
- s_logger.warn("Exception: ", ex);
+ logger.warn("Exception: ", ex);
throw new ServerApiException(ApiErrorCode.INTERNAL_ERROR, ex.getMessage());
}
}
diff --git a/api/src/main/java/org/apache/cloudstack/api/command/admin/host/CancelMaintenanceCmd.java b/api/src/main/java/org/apache/cloudstack/api/command/admin/host/CancelMaintenanceCmd.java
index cca449f570b2..a514a61b8a41 100644
--- a/api/src/main/java/org/apache/cloudstack/api/command/admin/host/CancelMaintenanceCmd.java
+++ b/api/src/main/java/org/apache/cloudstack/api/command/admin/host/CancelMaintenanceCmd.java
@@ -16,7 +16,6 @@
// under the License.
package org.apache.cloudstack.api.command.admin.host;
-import org.apache.log4j.Logger;
import org.apache.cloudstack.api.APICommand;
import org.apache.cloudstack.api.ApiCommandResourceType;
@@ -35,7 +34,6 @@
@APICommand(name = "cancelHostMaintenance", description = "Cancels host maintenance.", responseObject = HostResponse.class,
requestHasSensitiveInfo = false, responseHasSensitiveInfo = false)
public class CancelMaintenanceCmd extends BaseAsyncCmd {
- public static final Logger s_logger = Logger.getLogger(CancelMaintenanceCmd.class.getName());
/////////////////////////////////////////////////////
diff --git a/api/src/main/java/org/apache/cloudstack/api/command/admin/host/DeleteHostCmd.java b/api/src/main/java/org/apache/cloudstack/api/command/admin/host/DeleteHostCmd.java
index 934965cd24cc..38325c2f072d 100644
--- a/api/src/main/java/org/apache/cloudstack/api/command/admin/host/DeleteHostCmd.java
+++ b/api/src/main/java/org/apache/cloudstack/api/command/admin/host/DeleteHostCmd.java
@@ -16,7 +16,6 @@
// under the License.
package org.apache.cloudstack.api.command.admin.host;
-import org.apache.log4j.Logger;
import org.apache.cloudstack.api.APICommand;
import org.apache.cloudstack.api.ApiConstants;
@@ -32,7 +31,6 @@
@APICommand(name = "deleteHost", description = "Deletes a host.", responseObject = SuccessResponse.class,
requestHasSensitiveInfo = false, responseHasSensitiveInfo = false)
public class DeleteHostCmd extends BaseCmd {
- public static final Logger s_logger = Logger.getLogger(DeleteHostCmd.class.getName());
// ///////////////////////////////////////////////////
diff --git a/api/src/main/java/org/apache/cloudstack/api/command/admin/host/FindHostsForMigrationCmd.java b/api/src/main/java/org/apache/cloudstack/api/command/admin/host/FindHostsForMigrationCmd.java
index 2b6ccb68eea7..db30e4f4c02f 100644
--- a/api/src/main/java/org/apache/cloudstack/api/command/admin/host/FindHostsForMigrationCmd.java
+++ b/api/src/main/java/org/apache/cloudstack/api/command/admin/host/FindHostsForMigrationCmd.java
@@ -20,7 +20,6 @@
import java.util.List;
import java.util.Map;
-import org.apache.log4j.Logger;
import org.apache.cloudstack.api.APICommand;
import org.apache.cloudstack.api.ApiConstants;
@@ -37,7 +36,6 @@
@APICommand(name = "findHostsForMigration", description = "Find hosts suitable for migrating a virtual machine.", responseObject = HostForMigrationResponse.class,
requestHasSensitiveInfo = false, responseHasSensitiveInfo = false)
public class FindHostsForMigrationCmd extends BaseListCmd {
- public static final Logger s_logger = Logger.getLogger(FindHostsForMigrationCmd.class.getName());
/////////////////////////////////////////////////////
diff --git a/api/src/main/java/org/apache/cloudstack/api/command/admin/host/ListHostTagsCmd.java b/api/src/main/java/org/apache/cloudstack/api/command/admin/host/ListHostTagsCmd.java
index ed4f9a09bc5f..9ea2b2a7fbb5 100644
--- a/api/src/main/java/org/apache/cloudstack/api/command/admin/host/ListHostTagsCmd.java
+++ b/api/src/main/java/org/apache/cloudstack/api/command/admin/host/ListHostTagsCmd.java
@@ -18,7 +18,6 @@
*/
package org.apache.cloudstack.api.command.admin.host;
-import org.apache.log4j.Logger;
import org.apache.cloudstack.api.APICommand;
import org.apache.cloudstack.api.ApiCommandResourceType;
import org.apache.cloudstack.api.BaseListCmd;
@@ -27,7 +26,6 @@
@APICommand(name = "listHostTags", description = "Lists host tags", responseObject = HostTagResponse.class, requestHasSensitiveInfo = false, responseHasSensitiveInfo = false)
public class ListHostTagsCmd extends BaseListCmd {
- public static final Logger s_logger = Logger.getLogger(ListHostTagsCmd.class.getName());
// ///////////////////////////////////////////////////
diff --git a/api/src/main/java/org/apache/cloudstack/api/command/admin/host/ListHostsCmd.java b/api/src/main/java/org/apache/cloudstack/api/command/admin/host/ListHostsCmd.java
index b8668f61ca46..af87bbf33bb0 100644
--- a/api/src/main/java/org/apache/cloudstack/api/command/admin/host/ListHostsCmd.java
+++ b/api/src/main/java/org/apache/cloudstack/api/command/admin/host/ListHostsCmd.java
@@ -21,7 +21,6 @@
import java.util.List;
import java.util.Map;
-import org.apache.log4j.Logger;
import org.apache.cloudstack.api.APICommand;
import org.apache.cloudstack.api.ApiCommandResourceType;
@@ -45,7 +44,6 @@
@APICommand(name = "listHosts", description = "Lists hosts.", responseObject = HostResponse.class,
requestHasSensitiveInfo = false, responseHasSensitiveInfo = false)
public class ListHostsCmd extends BaseListCmd {
- public static final Logger s_logger = Logger.getLogger(ListHostsCmd.class.getName());
/////////////////////////////////////////////////////
diff --git a/api/src/main/java/org/apache/cloudstack/api/command/admin/host/PrepareForMaintenanceCmd.java b/api/src/main/java/org/apache/cloudstack/api/command/admin/host/PrepareForMaintenanceCmd.java
index a89965e822ee..2641c54364ee 100644
--- a/api/src/main/java/org/apache/cloudstack/api/command/admin/host/PrepareForMaintenanceCmd.java
+++ b/api/src/main/java/org/apache/cloudstack/api/command/admin/host/PrepareForMaintenanceCmd.java
@@ -25,7 +25,6 @@
import org.apache.cloudstack.api.ServerApiException;
import org.apache.cloudstack.api.response.HostResponse;
import org.apache.cloudstack.context.CallContext;
-import org.apache.log4j.Logger;
import com.cloud.event.EventTypes;
import com.cloud.host.Host;
@@ -35,7 +34,6 @@
@APICommand(name = "prepareHostForMaintenance", description = "Prepares a host for maintenance.", responseObject = HostResponse.class,
requestHasSensitiveInfo = false, responseHasSensitiveInfo = false)
public class PrepareForMaintenanceCmd extends BaseAsyncCmd {
- public static final Logger s_logger = Logger.getLogger(PrepareForMaintenanceCmd.class.getName());
/////////////////////////////////////////////////////
diff --git a/api/src/main/java/org/apache/cloudstack/api/command/admin/host/ReconnectHostCmd.java b/api/src/main/java/org/apache/cloudstack/api/command/admin/host/ReconnectHostCmd.java
index 7439d9da514b..3550d61fdb97 100644
--- a/api/src/main/java/org/apache/cloudstack/api/command/admin/host/ReconnectHostCmd.java
+++ b/api/src/main/java/org/apache/cloudstack/api/command/admin/host/ReconnectHostCmd.java
@@ -25,7 +25,6 @@
import org.apache.cloudstack.api.ServerApiException;
import org.apache.cloudstack.api.response.HostResponse;
import org.apache.cloudstack.context.CallContext;
-import org.apache.log4j.Logger;
import com.cloud.event.EventTypes;
import com.cloud.exception.AgentUnavailableException;
@@ -36,7 +35,6 @@
@APICommand(name = "reconnectHost", description = "Reconnects a host.", responseObject = HostResponse.class, requestHasSensitiveInfo = false, responseHasSensitiveInfo = false)
public class ReconnectHostCmd extends BaseAsyncCmd {
- public static final Logger s_logger = Logger.getLogger(ReconnectHostCmd.class.getName());
/////////////////////////////////////////////////////
diff --git a/api/src/main/java/org/apache/cloudstack/api/command/admin/host/ReleaseHostReservationCmd.java b/api/src/main/java/org/apache/cloudstack/api/command/admin/host/ReleaseHostReservationCmd.java
index 90c388bc7dc7..7fee0684c781 100644
--- a/api/src/main/java/org/apache/cloudstack/api/command/admin/host/ReleaseHostReservationCmd.java
+++ b/api/src/main/java/org/apache/cloudstack/api/command/admin/host/ReleaseHostReservationCmd.java
@@ -16,7 +16,6 @@
// under the License.
package org.apache.cloudstack.api.command.admin.host;
-import org.apache.log4j.Logger;
import org.apache.cloudstack.api.APICommand;
import org.apache.cloudstack.api.ApiCommandResourceType;
@@ -35,7 +34,6 @@
@APICommand(name = "releaseHostReservation", description = "Releases host reservation.", responseObject = SuccessResponse.class,
requestHasSensitiveInfo = false, responseHasSensitiveInfo = false)
public class ReleaseHostReservationCmd extends BaseAsyncCmd {
- public static final Logger s_logger = Logger.getLogger(ReleaseHostReservationCmd.class.getName());
/////////////////////////////////////////////////////
diff --git a/api/src/main/java/org/apache/cloudstack/api/command/admin/host/UpdateHostCmd.java b/api/src/main/java/org/apache/cloudstack/api/command/admin/host/UpdateHostCmd.java
index 9cf47a9c4b96..88eeadb9b139 100644
--- a/api/src/main/java/org/apache/cloudstack/api/command/admin/host/UpdateHostCmd.java
+++ b/api/src/main/java/org/apache/cloudstack/api/command/admin/host/UpdateHostCmd.java
@@ -27,14 +27,12 @@
import org.apache.cloudstack.api.ServerApiException;
import org.apache.cloudstack.api.response.GuestOSCategoryResponse;
import org.apache.cloudstack.api.response.HostResponse;
-import org.apache.log4j.Logger;
import java.util.List;
@APICommand(name = "updateHost", description = "Updates a host.", responseObject = HostResponse.class,
requestHasSensitiveInfo = false, responseHasSensitiveInfo = false)
public class UpdateHostCmd extends BaseCmd {
- public static final Logger s_logger = Logger.getLogger(UpdateHostCmd.class.getName());
/////////////////////////////////////////////////////
//////////////// API parameters /////////////////////
@@ -127,7 +125,7 @@ public void execute() {
hostResponse.setResponseName(getCommandName());
this.setResponseObject(hostResponse);
} catch (Exception e) {
- s_logger.debug("Failed to update host:" + getId(), e);
+ logger.debug("Failed to update host:" + getId(), e);
throw new ServerApiException(ApiErrorCode.INTERNAL_ERROR, "Failed to update host:" + getId() + "," + e.getMessage());
}
}
diff --git a/api/src/main/java/org/apache/cloudstack/api/command/admin/host/UpdateHostPasswordCmd.java b/api/src/main/java/org/apache/cloudstack/api/command/admin/host/UpdateHostPasswordCmd.java
index 2e05ad144756..c94fe2c58656 100644
--- a/api/src/main/java/org/apache/cloudstack/api/command/admin/host/UpdateHostPasswordCmd.java
+++ b/api/src/main/java/org/apache/cloudstack/api/command/admin/host/UpdateHostPasswordCmd.java
@@ -24,14 +24,12 @@
import org.apache.cloudstack.api.response.HostResponse;
import org.apache.cloudstack.api.response.SuccessResponse;
import org.apache.commons.lang3.BooleanUtils;
-import org.apache.log4j.Logger;
import com.cloud.user.Account;
@APICommand(name = "updateHostPassword", description = "Update password of a host/pool on management server.", responseObject = SuccessResponse.class,
requestHasSensitiveInfo = true, responseHasSensitiveInfo = false)
public class UpdateHostPasswordCmd extends BaseCmd {
- public static final Logger s_logger = Logger.getLogger(UpdateHostPasswordCmd.class.getName());
// ///////////////////////////////////////////////////
diff --git a/api/src/main/java/org/apache/cloudstack/api/command/admin/internallb/ConfigureInternalLoadBalancerElementCmd.java b/api/src/main/java/org/apache/cloudstack/api/command/admin/internallb/ConfigureInternalLoadBalancerElementCmd.java
index 1c7e4a0ce214..c94d326ee622 100644
--- a/api/src/main/java/org/apache/cloudstack/api/command/admin/internallb/ConfigureInternalLoadBalancerElementCmd.java
+++ b/api/src/main/java/org/apache/cloudstack/api/command/admin/internallb/ConfigureInternalLoadBalancerElementCmd.java
@@ -17,12 +17,6 @@
package org.apache.cloudstack.api.command.admin.internallb;
-import java.util.List;
-
-import javax.inject.Inject;
-
-import org.apache.log4j.Logger;
-
import org.apache.cloudstack.api.APICommand;
import org.apache.cloudstack.api.ApiConstants;
import org.apache.cloudstack.api.ApiErrorCode;
@@ -47,10 +41,6 @@
requestHasSensitiveInfo = false,
responseHasSensitiveInfo = false)
public class ConfigureInternalLoadBalancerElementCmd extends BaseAsyncCmd {
- public static final Logger s_logger = Logger.getLogger(ConfigureInternalLoadBalancerElementCmd.class.getName());
-
- @Inject
- private List _service;
/////////////////////////////////////////////////////
//////////////// API parameters /////////////////////
@@ -100,7 +90,8 @@ public String getEventDescription() {
@Override
public void execute() throws ConcurrentOperationException, ResourceUnavailableException, InsufficientCapacityException {
CallContext.current().setEventDetails("Internal load balancer element: " + id);
- VirtualRouterProvider result = _service.get(0).configureInternalLoadBalancerElement(getId(), getEnabled());
+ InternalLoadBalancerElementService service = _networkService.getInternalLoadBalancerElementById(id);
+ VirtualRouterProvider result = service.configureInternalLoadBalancerElement(getId(), getEnabled());
if (result != null) {
InternalLoadBalancerElementResponse routerResponse = _responseGenerator.createInternalLbElementResponse(result);
routerResponse.setResponseName(getCommandName());
diff --git a/api/src/main/java/org/apache/cloudstack/api/command/admin/internallb/CreateInternalLoadBalancerElementCmd.java b/api/src/main/java/org/apache/cloudstack/api/command/admin/internallb/CreateInternalLoadBalancerElementCmd.java
index f11f081031a0..924287b673ba 100644
--- a/api/src/main/java/org/apache/cloudstack/api/command/admin/internallb/CreateInternalLoadBalancerElementCmd.java
+++ b/api/src/main/java/org/apache/cloudstack/api/command/admin/internallb/CreateInternalLoadBalancerElementCmd.java
@@ -16,12 +16,6 @@
// under the License.
package org.apache.cloudstack.api.command.admin.internallb;
-import java.util.List;
-
-import javax.inject.Inject;
-
-import org.apache.log4j.Logger;
-
import org.apache.cloudstack.api.APICommand;
import org.apache.cloudstack.api.ApiConstants;
import org.apache.cloudstack.api.ApiErrorCode;
@@ -45,10 +39,6 @@
requestHasSensitiveInfo = false,
responseHasSensitiveInfo = false)
public class CreateInternalLoadBalancerElementCmd extends BaseAsyncCreateCmd {
- public static final Logger s_logger = Logger.getLogger(CreateInternalLoadBalancerElementCmd.class.getName());
-
- @Inject
- private List _service;
/////////////////////////////////////////////////////
//////////////// API parameters /////////////////////
@@ -85,7 +75,8 @@ public long getEntityOwnerId() {
@Override
public void execute() {
CallContext.current().setEventDetails("Virtual router element Id: " + getEntityId());
- VirtualRouterProvider result = _service.get(0).getInternalLoadBalancerElement(getEntityId());
+ InternalLoadBalancerElementService service = _networkService.getInternalLoadBalancerElementByNetworkServiceProviderId(getNspId());
+ VirtualRouterProvider result = service.getInternalLoadBalancerElement(getEntityId());
if (result != null) {
InternalLoadBalancerElementResponse response = _responseGenerator.createInternalLbElementResponse(result);
response.setResponseName(getCommandName());
@@ -97,7 +88,8 @@ public void execute() {
@Override
public void create() throws ResourceAllocationException {
- VirtualRouterProvider result = _service.get(0).addInternalLoadBalancerElement(getNspId());
+ InternalLoadBalancerElementService service = _networkService.getInternalLoadBalancerElementByNetworkServiceProviderId(getNspId());
+ VirtualRouterProvider result = service.addInternalLoadBalancerElement(getNspId());
if (result != null) {
setEntityId(result.getId());
setEntityUuid(result.getUuid());
diff --git a/api/src/main/java/org/apache/cloudstack/api/command/admin/internallb/ListInternalLBVMsCmd.java b/api/src/main/java/org/apache/cloudstack/api/command/admin/internallb/ListInternalLBVMsCmd.java
index f57569097062..0eb00234382d 100644
--- a/api/src/main/java/org/apache/cloudstack/api/command/admin/internallb/ListInternalLBVMsCmd.java
+++ b/api/src/main/java/org/apache/cloudstack/api/command/admin/internallb/ListInternalLBVMsCmd.java
@@ -17,7 +17,6 @@
package org.apache.cloudstack.api.command.admin.internallb;
import org.apache.commons.lang.BooleanUtils;
-import org.apache.log4j.Logger;
import org.apache.cloudstack.api.APICommand;
import org.apache.cloudstack.api.ApiCommandResourceType;
@@ -39,7 +38,6 @@
@APICommand(name = "listInternalLoadBalancerVMs", description = "List internal LB VMs.", responseObject = DomainRouterResponse.class, entityType = {VirtualMachine.class},
requestHasSensitiveInfo = false, responseHasSensitiveInfo = false)
public class ListInternalLBVMsCmd extends BaseListProjectAndAccountResourcesCmd {
- public static final Logger s_logger = Logger.getLogger(ListInternalLBVMsCmd.class.getName());
private static final String s_name = "listinternallbvmsresponse";
diff --git a/api/src/main/java/org/apache/cloudstack/api/command/admin/internallb/ListInternalLoadBalancerElementsCmd.java b/api/src/main/java/org/apache/cloudstack/api/command/admin/internallb/ListInternalLoadBalancerElementsCmd.java
index 82d373e31192..b17cc22e7466 100644
--- a/api/src/main/java/org/apache/cloudstack/api/command/admin/internallb/ListInternalLoadBalancerElementsCmd.java
+++ b/api/src/main/java/org/apache/cloudstack/api/command/admin/internallb/ListInternalLoadBalancerElementsCmd.java
@@ -17,12 +17,9 @@
package org.apache.cloudstack.api.command.admin.internallb;
import java.util.ArrayList;
+import java.util.Collections;
import java.util.List;
-import javax.inject.Inject;
-
-import org.apache.log4j.Logger;
-
import org.apache.cloudstack.api.APICommand;
import org.apache.cloudstack.api.ApiConstants;
import org.apache.cloudstack.api.BaseListCmd;
@@ -46,10 +43,6 @@
requestHasSensitiveInfo = false,
responseHasSensitiveInfo = false)
public class ListInternalLoadBalancerElementsCmd extends BaseListCmd {
- public static final Logger s_logger = Logger.getLogger(ListInternalLoadBalancerElementsCmd.class.getName());
-
- @Inject
- private InternalLoadBalancerElementService _service;
/////////////////////////////////////////////////////
//////////////// API parameters /////////////////////
@@ -88,12 +81,21 @@ public Boolean getEnabled() {
@Override
public void execute() throws ResourceUnavailableException, InsufficientCapacityException, ServerApiException, ConcurrentOperationException,
ResourceAllocationException {
- List extends VirtualRouterProvider> providers = _service.searchForInternalLoadBalancerElements(getId(), getNspId(), getEnabled());
+ List services;
+ if (id == null && nspId == null) {
+ services = _networkService.getInternalLoadBalancerElements();
+ } else {
+ InternalLoadBalancerElementService elementService = id != null ? _networkService.getInternalLoadBalancerElementById(id) : _networkService.getInternalLoadBalancerElementByNetworkServiceProviderId(nspId);
+ services = Collections.singletonList(elementService);
+ }
ListResponse response = new ListResponse();
List providerResponses = new ArrayList();
- for (VirtualRouterProvider provider : providers) {
- InternalLoadBalancerElementResponse providerResponse = _responseGenerator.createInternalLbElementResponse(provider);
- providerResponses.add(providerResponse);
+ for (InternalLoadBalancerElementService service : services) {
+ List extends VirtualRouterProvider> providers = service.searchForInternalLoadBalancerElements(getId(), getNspId(), getEnabled());
+ for (VirtualRouterProvider provider : providers) {
+ InternalLoadBalancerElementResponse providerResponse = _responseGenerator.createInternalLbElementResponse(provider);
+ providerResponses.add(providerResponse);
+ }
}
response.setResponses(providerResponses);
response.setResponseName(getCommandName());
diff --git a/api/src/main/java/org/apache/cloudstack/api/command/admin/internallb/StartInternalLBVMCmd.java b/api/src/main/java/org/apache/cloudstack/api/command/admin/internallb/StartInternalLBVMCmd.java
index fdec79478538..3dd7d2adf378 100644
--- a/api/src/main/java/org/apache/cloudstack/api/command/admin/internallb/StartInternalLBVMCmd.java
+++ b/api/src/main/java/org/apache/cloudstack/api/command/admin/internallb/StartInternalLBVMCmd.java
@@ -16,7 +16,6 @@
// under the License.
package org.apache.cloudstack.api.command.admin.internallb;
-import org.apache.log4j.Logger;
import org.apache.cloudstack.acl.SecurityChecker.AccessType;
import org.apache.cloudstack.api.ACL;
@@ -42,7 +41,6 @@
@APICommand(name = "startInternalLoadBalancerVM", responseObject = DomainRouterResponse.class, description = "Starts an existing internal lb vm.", entityType = {VirtualMachine.class},
requestHasSensitiveInfo = false, responseHasSensitiveInfo = false)
public class StartInternalLBVMCmd extends BaseAsyncCmd {
- public static final Logger s_logger = Logger.getLogger(StartInternalLBVMCmd.class.getName());
private static final String s_name = "startinternallbvmresponse";
/////////////////////////////////////////////////////
diff --git a/api/src/main/java/org/apache/cloudstack/api/command/admin/internallb/StopInternalLBVMCmd.java b/api/src/main/java/org/apache/cloudstack/api/command/admin/internallb/StopInternalLBVMCmd.java
index 76ad4d438d28..a746e5d906d6 100644
--- a/api/src/main/java/org/apache/cloudstack/api/command/admin/internallb/StopInternalLBVMCmd.java
+++ b/api/src/main/java/org/apache/cloudstack/api/command/admin/internallb/StopInternalLBVMCmd.java
@@ -16,7 +16,6 @@
// under the License.
package org.apache.cloudstack.api.command.admin.internallb;
-import org.apache.log4j.Logger;
import org.apache.cloudstack.acl.SecurityChecker.AccessType;
import org.apache.cloudstack.api.ACL;
@@ -41,7 +40,6 @@
@APICommand(name = "stopInternalLoadBalancerVM", description = "Stops an Internal LB vm.", responseObject = DomainRouterResponse.class, entityType = {VirtualMachine.class},
requestHasSensitiveInfo = false, responseHasSensitiveInfo = false)
public class StopInternalLBVMCmd extends BaseAsyncCmd {
- public static final Logger s_logger = Logger.getLogger(StopInternalLBVMCmd.class.getName());
private static final String s_name = "stopinternallbvmresponse";
// ///////////////////////////////////////////////////
diff --git a/api/src/main/java/org/apache/cloudstack/api/command/admin/management/ListMgmtsCmd.java b/api/src/main/java/org/apache/cloudstack/api/command/admin/management/ListMgmtsCmd.java
index 3af772d332f1..a68ed62857ac 100644
--- a/api/src/main/java/org/apache/cloudstack/api/command/admin/management/ListMgmtsCmd.java
+++ b/api/src/main/java/org/apache/cloudstack/api/command/admin/management/ListMgmtsCmd.java
@@ -23,12 +23,10 @@
import org.apache.cloudstack.api.Parameter;
import org.apache.cloudstack.api.response.ListResponse;
import org.apache.cloudstack.api.response.ManagementServerResponse;
-import org.apache.log4j.Logger;
@APICommand(name = "listManagementServers", description = "Lists management servers.", responseObject = ManagementServerResponse.class,
requestHasSensitiveInfo = false, responseHasSensitiveInfo = false)
public class ListMgmtsCmd extends BaseListCmd {
- public static final Logger s_logger = Logger.getLogger(ListMgmtsCmd.class.getName());
/////////////////////////////////////////////////////
diff --git a/api/src/main/java/org/apache/cloudstack/api/command/admin/network/AddNetworkDeviceCmd.java b/api/src/main/java/org/apache/cloudstack/api/command/admin/network/AddNetworkDeviceCmd.java
index be0cd9f2fa74..334772970431 100644
--- a/api/src/main/java/org/apache/cloudstack/api/command/admin/network/AddNetworkDeviceCmd.java
+++ b/api/src/main/java/org/apache/cloudstack/api/command/admin/network/AddNetworkDeviceCmd.java
@@ -20,7 +20,6 @@
import javax.inject.Inject;
-import org.apache.log4j.Logger;
import org.apache.cloudstack.api.APICommand;
import org.apache.cloudstack.api.ApiConstants;
@@ -44,7 +43,6 @@
responseObject = NetworkDeviceResponse.class,
requestHasSensitiveInfo = false, responseHasSensitiveInfo = false)
public class AddNetworkDeviceCmd extends BaseCmd {
- public static final Logger s_logger = Logger.getLogger(AddNetworkDeviceCmd.class);
// ///////////////////////////////////////////////////
// ////////////// API parameters /////////////////////
diff --git a/api/src/main/java/org/apache/cloudstack/api/command/admin/network/AddNetworkServiceProviderCmd.java b/api/src/main/java/org/apache/cloudstack/api/command/admin/network/AddNetworkServiceProviderCmd.java
index 176375ce1812..40a822393452 100644
--- a/api/src/main/java/org/apache/cloudstack/api/command/admin/network/AddNetworkServiceProviderCmd.java
+++ b/api/src/main/java/org/apache/cloudstack/api/command/admin/network/AddNetworkServiceProviderCmd.java
@@ -18,7 +18,6 @@
import java.util.List;
-import org.apache.log4j.Logger;
import org.apache.cloudstack.api.APICommand;
import org.apache.cloudstack.api.ApiCommandResourceType;
@@ -43,7 +42,6 @@
requestHasSensitiveInfo = false,
responseHasSensitiveInfo = false)
public class AddNetworkServiceProviderCmd extends BaseAsyncCreateCmd {
- public static final Logger s_logger = Logger.getLogger(AddNetworkServiceProviderCmd.class.getName());
/////////////////////////////////////////////////////
diff --git a/api/src/main/java/org/apache/cloudstack/api/command/admin/network/CreateGuestNetworkIpv6PrefixCmd.java b/api/src/main/java/org/apache/cloudstack/api/command/admin/network/CreateGuestNetworkIpv6PrefixCmd.java
index d7c7bec99f9e..f6b035c57837 100644
--- a/api/src/main/java/org/apache/cloudstack/api/command/admin/network/CreateGuestNetworkIpv6PrefixCmd.java
+++ b/api/src/main/java/org/apache/cloudstack/api/command/admin/network/CreateGuestNetworkIpv6PrefixCmd.java
@@ -27,7 +27,6 @@
import org.apache.cloudstack.api.ServerApiException;
import org.apache.cloudstack.api.response.DataCenterGuestIpv6PrefixResponse;
import org.apache.cloudstack.api.response.ZoneResponse;
-import org.apache.log4j.Logger;
import com.cloud.dc.DataCenterGuestIpv6Prefix;
import com.cloud.event.EventTypes;
@@ -45,7 +44,6 @@
responseHasSensitiveInfo = false,
authorized = {RoleType.Admin})
public class CreateGuestNetworkIpv6PrefixCmd extends BaseAsyncCmd {
- public static final Logger s_logger = Logger.getLogger(CreateGuestNetworkIpv6PrefixCmd.class);
/////////////////////////////////////////////////////
diff --git a/api/src/main/java/org/apache/cloudstack/api/command/admin/network/CreateIpv4SubnetForGuestNetworkCmd.java b/api/src/main/java/org/apache/cloudstack/api/command/admin/network/CreateIpv4SubnetForGuestNetworkCmd.java
new file mode 100644
index 000000000000..a482cb1d4f27
--- /dev/null
+++ b/api/src/main/java/org/apache/cloudstack/api/command/admin/network/CreateIpv4SubnetForGuestNetworkCmd.java
@@ -0,0 +1,108 @@
+// Licensed to the Apache Software Foundation (ASF) under one
+// or more contributor license agreements. See the NOTICE file
+// distributed with this work for additional information
+// regarding copyright ownership. The ASF licenses this file
+// to you under the Apache License, Version 2.0 (the
+// "License"); you may not use this file except in compliance
+// with the License. You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing,
+// software distributed under the License is distributed on an
+// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+// KIND, either express or implied. See the License for the
+// specific language governing permissions and limitations
+// under the License.
+
+package org.apache.cloudstack.api.command.admin.network;
+
+import org.apache.cloudstack.acl.RoleType;
+import org.apache.cloudstack.api.APICommand;
+import org.apache.cloudstack.api.ApiConstants;
+import org.apache.cloudstack.api.ApiErrorCode;
+import org.apache.cloudstack.api.BaseAsyncCmd;
+import org.apache.cloudstack.api.Parameter;
+import org.apache.cloudstack.api.ServerApiException;
+import org.apache.cloudstack.api.response.DataCenterIpv4SubnetResponse;
+import org.apache.cloudstack.api.response.Ipv4SubnetForGuestNetworkResponse;
+
+import com.cloud.event.EventTypes;
+import com.cloud.user.Account;
+import org.apache.cloudstack.network.Ipv4GuestSubnetNetworkMap;
+
+@APICommand(name = "createIpv4SubnetForGuestNetwork",
+ description = "Creates a IPv4 subnet for guest networks.",
+ responseObject = Ipv4SubnetForGuestNetworkResponse.class,
+ since = "4.20.0",
+ requestHasSensitiveInfo = false,
+ responseHasSensitiveInfo = false,
+ authorized = {RoleType.Admin})
+public class CreateIpv4SubnetForGuestNetworkCmd extends BaseAsyncCmd {
+
+
+ /////////////////////////////////////////////////////
+ //////////////// API parameters /////////////////////
+ /////////////////////////////////////////////////////
+ @Parameter(name = ApiConstants.PARENT_ID,
+ type = CommandType.UUID,
+ entityType = DataCenterIpv4SubnetResponse.class,
+ required = true,
+ description = "The zone Ipv4 subnet which the IPv4 subnet belongs to.")
+ private Long parentId;
+
+ @Parameter(name = ApiConstants.SUBNET,
+ type = CommandType.STRING,
+ description = "The CIDR of this Ipv4 subnet.")
+ private String subnet;
+
+ @Parameter(name = ApiConstants.CIDR_SIZE,
+ type = CommandType.INTEGER,
+ description = "the CIDR size of IPv4 network. This is mutually exclusive with subnet.")
+ private Integer cidrSize;
+
+ /////////////////////////////////////////////////////
+ /////////////////// Accessors ///////////////////////
+ /////////////////////////////////////////////////////
+
+
+ public Long getParentId() {
+ return parentId;
+ }
+
+ public String getSubnet() {
+ return subnet;
+ }
+
+ public Integer getCidrSize() {
+ return cidrSize;
+ }
+
+ @Override
+ public String getEventType() {
+ return EventTypes.EVENT_IP4_GUEST_SUBNET_CREATE;
+ }
+
+ @Override
+ public String getEventDescription() {
+ return "Creating guest IPv4 subnet " + getSubnet() + " in zone subnet=" + getParentId();
+ }
+
+ @Override
+ public void execute() {
+ Ipv4GuestSubnetNetworkMap result = routedIpv4Manager.createIpv4SubnetForGuestNetwork(this);
+ if (result != null) {
+ Ipv4SubnetForGuestNetworkResponse response = routedIpv4Manager.createIpv4SubnetForGuestNetworkResponse(result);
+ response.setResponseName(getCommandName());
+ this.setResponseObject(response);
+ } else {
+ throw new ServerApiException(ApiErrorCode.INTERNAL_ERROR, "Failed to create zone guest IPv4 subnet.");
+ }
+ }
+
+ @Override
+ public long getEntityOwnerId() {
+ return Account.ACCOUNT_ID_SYSTEM;
+ }
+
+}
diff --git a/api/src/main/java/org/apache/cloudstack/api/command/admin/network/CreateIpv4SubnetForZoneCmd.java b/api/src/main/java/org/apache/cloudstack/api/command/admin/network/CreateIpv4SubnetForZoneCmd.java
new file mode 100644
index 000000000000..5f48cf9c6327
--- /dev/null
+++ b/api/src/main/java/org/apache/cloudstack/api/command/admin/network/CreateIpv4SubnetForZoneCmd.java
@@ -0,0 +1,125 @@
+// Licensed to the Apache Software Foundation (ASF) under one
+// or more contributor license agreements. See the NOTICE file
+// distributed with this work for additional information
+// regarding copyright ownership. The ASF licenses this file
+// to you under the Apache License, Version 2.0 (the
+// "License"); you may not use this file except in compliance
+// with the License. You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing,
+// software distributed under the License is distributed on an
+// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+// KIND, either express or implied. See the License for the
+// specific language governing permissions and limitations
+// under the License.
+
+package org.apache.cloudstack.api.command.admin.network;
+
+import org.apache.cloudstack.acl.RoleType;
+import org.apache.cloudstack.api.APICommand;
+import org.apache.cloudstack.api.ApiArgValidator;
+import org.apache.cloudstack.api.ApiConstants;
+import org.apache.cloudstack.api.ApiErrorCode;
+import org.apache.cloudstack.api.BaseAsyncCmd;
+import org.apache.cloudstack.api.Parameter;
+import org.apache.cloudstack.api.ServerApiException;
+import org.apache.cloudstack.api.response.DataCenterIpv4SubnetResponse;
+import org.apache.cloudstack.api.response.DomainResponse;
+import org.apache.cloudstack.api.response.ProjectResponse;
+import org.apache.cloudstack.api.response.ZoneResponse;
+import org.apache.cloudstack.datacenter.DataCenterIpv4GuestSubnet;
+
+import com.cloud.event.EventTypes;
+import com.cloud.user.Account;
+
+@APICommand(name = "createIpv4SubnetForZone",
+ description = "Creates a IPv4 subnet for a zone.",
+ responseObject = DataCenterIpv4SubnetResponse.class,
+ since = "4.20.0",
+ requestHasSensitiveInfo = false,
+ responseHasSensitiveInfo = false,
+ authorized = {RoleType.Admin})
+public class CreateIpv4SubnetForZoneCmd extends BaseAsyncCmd {
+
+
+ /////////////////////////////////////////////////////
+ //////////////// API parameters /////////////////////
+ /////////////////////////////////////////////////////
+ @Parameter(name = ApiConstants.ZONE_ID,
+ type = CommandType.UUID,
+ entityType = ZoneResponse.class,
+ required = true,
+ description = "UUID of the zone which the IPv4 subnet belongs to.",
+ validations = {ApiArgValidator.PositiveNumber})
+ private Long zoneId;
+
+ @Parameter(name = ApiConstants.SUBNET,
+ type = CommandType.STRING,
+ required = true,
+ description = "The CIDR of the IPv4 subnet.")
+ private String subnet;
+
+ @Parameter(name = ApiConstants.ACCOUNT, type = CommandType.STRING, description = "account who will own the IPv4 subnet")
+ private String accountName;
+
+ @Parameter(name = ApiConstants.PROJECT_ID, type = CommandType.UUID, entityType = ProjectResponse.class, description = "project who will own the IPv4 subnet")
+ private Long projectId;
+
+ @Parameter(name = ApiConstants.DOMAIN_ID, type = CommandType.UUID, entityType = DomainResponse.class, description = "domain ID of the account owning the IPv4 subnet")
+ private Long domainId;
+
+ /////////////////////////////////////////////////////
+ /////////////////// Accessors ///////////////////////
+ /////////////////////////////////////////////////////
+
+
+ public Long getZoneId() {
+ return zoneId;
+ }
+
+ public String getSubnet() {
+ return subnet;
+ }
+
+ public String getAccountName() {
+ return accountName;
+ }
+
+ public Long getProjectId() {
+ return projectId;
+ }
+
+ public Long getDomainId() {
+ return domainId;
+ }
+
+ @Override
+ public String getEventType() {
+ return EventTypes.EVENT_ZONE_IP4_SUBNET_CREATE;
+ }
+
+ @Override
+ public String getEventDescription() {
+ return "Creating guest IPv4 subnet " + getSubnet() + " for zone=" + getZoneId();
+ }
+
+ @Override
+ public void execute() {
+ DataCenterIpv4GuestSubnet result = routedIpv4Manager.createDataCenterIpv4GuestSubnet(this);
+ if (result != null) {
+ DataCenterIpv4SubnetResponse response = routedIpv4Manager.createDataCenterIpv4SubnetResponse(result);
+ response.setResponseName(getCommandName());
+ this.setResponseObject(response);
+ } else {
+ throw new ServerApiException(ApiErrorCode.INTERNAL_ERROR, "Failed to create zone guest IPv4 subnet.");
+ }
+ }
+
+ @Override
+ public long getEntityOwnerId() {
+ return Account.ACCOUNT_ID_SYSTEM;
+ }
+
+}
diff --git a/api/src/main/java/org/apache/cloudstack/api/command/admin/network/CreateManagementNetworkIpRangeCmd.java b/api/src/main/java/org/apache/cloudstack/api/command/admin/network/CreateManagementNetworkIpRangeCmd.java
index 2bab4f053523..85cfddfb714f 100644
--- a/api/src/main/java/org/apache/cloudstack/api/command/admin/network/CreateManagementNetworkIpRangeCmd.java
+++ b/api/src/main/java/org/apache/cloudstack/api/command/admin/network/CreateManagementNetworkIpRangeCmd.java
@@ -16,7 +16,6 @@
// under the License.
package org.apache.cloudstack.api.command.admin.network;
-import org.apache.log4j.Logger;
import org.apache.cloudstack.acl.RoleType;
import org.apache.cloudstack.api.ApiArgValidator;
@@ -44,7 +43,6 @@
responseHasSensitiveInfo = false,
authorized = {RoleType.Admin})
public class CreateManagementNetworkIpRangeCmd extends BaseAsyncCmd {
- public static final Logger s_logger = Logger.getLogger(CreateManagementNetworkIpRangeCmd.class);
/////////////////////////////////////////////////////
diff --git a/api/src/main/java/org/apache/cloudstack/api/command/admin/network/CreateNetworkCmdByAdmin.java b/api/src/main/java/org/apache/cloudstack/api/command/admin/network/CreateNetworkCmdByAdmin.java
index 53b02718ea35..d8b57f79528c 100644
--- a/api/src/main/java/org/apache/cloudstack/api/command/admin/network/CreateNetworkCmdByAdmin.java
+++ b/api/src/main/java/org/apache/cloudstack/api/command/admin/network/CreateNetworkCmdByAdmin.java
@@ -17,7 +17,6 @@
package org.apache.cloudstack.api.command.admin.network;
import org.apache.cloudstack.api.ApiArgValidator;
-import org.apache.log4j.Logger;
import org.apache.cloudstack.api.APICommand;
import org.apache.cloudstack.api.ApiConstants;
@@ -25,14 +24,16 @@
import org.apache.cloudstack.api.ResponseObject.ResponseView;
import org.apache.cloudstack.api.command.admin.AdminCmd;
import org.apache.cloudstack.api.command.user.network.CreateNetworkCmd;
+import org.apache.cloudstack.api.response.BgpPeerResponse;
import org.apache.cloudstack.api.response.NetworkResponse;
import com.cloud.network.Network;
+import java.util.List;
+
@APICommand(name = "createNetwork", description = "Creates a network", responseObject = NetworkResponse.class, responseView = ResponseView.Full, entityType = {Network.class},
requestHasSensitiveInfo = false, responseHasSensitiveInfo = false)
public class CreateNetworkCmdByAdmin extends CreateNetworkCmd implements AdminCmd {
- public static final Logger s_logger = Logger.getLogger(CreateNetworkCmdByAdmin.class.getName());
@Parameter(name=ApiConstants.VLAN, type=CommandType.STRING, description="the ID or VID of the network")
private String vlan;
@@ -51,6 +52,14 @@ public class CreateNetworkCmdByAdmin extends CreateNetworkCmd implements AdminCm
validations = {ApiArgValidator.NotNullOrEmpty})
private String routerIpv6;
+ @Parameter(name = ApiConstants.BGP_PEER_IDS,
+ type = CommandType.LIST,
+ collectionType = CommandType.UUID,
+ entityType = BgpPeerResponse.class,
+ description = "Ids of the Bgp Peer for the network",
+ since = "4.20.0")
+ private List bgpPeerIds;
+
/////////////////////////////////////////////////////
/////////////////// Accessors ///////////////////////
/////////////////////////////////////////////////////
@@ -80,4 +89,8 @@ public String getRouterIp() {
public String getRouterIpv6() {
return routerIpv6;
}
+
+ public List getBgpPeerIds() {
+ return bgpPeerIds;
+ }
}
diff --git a/api/src/main/java/org/apache/cloudstack/api/command/admin/network/CreateNetworkOfferingCmd.java b/api/src/main/java/org/apache/cloudstack/api/command/admin/network/CreateNetworkOfferingCmd.java
index 2112be34543e..af3db374a7c9 100644
--- a/api/src/main/java/org/apache/cloudstack/api/command/admin/network/CreateNetworkOfferingCmd.java
+++ b/api/src/main/java/org/apache/cloudstack/api/command/admin/network/CreateNetworkOfferingCmd.java
@@ -24,12 +24,15 @@
import java.util.List;
import java.util.Map;
import java.util.Set;
+import java.util.stream.Collectors;
+import com.cloud.network.Network;
+import com.cloud.network.VirtualRouterProvider;
import org.apache.cloudstack.api.response.DomainResponse;
import org.apache.cloudstack.api.response.ZoneResponse;
import org.apache.commons.collections.CollectionUtils;
+import org.apache.commons.lang3.BooleanUtils;
import org.apache.commons.lang3.StringUtils;
-import org.apache.log4j.Logger;
import org.apache.cloudstack.api.APICommand;
import org.apache.cloudstack.api.ApiConstants;
@@ -47,10 +50,19 @@
import com.cloud.offering.NetworkOffering.Availability;
import com.cloud.user.Account;
+import static com.cloud.network.Network.Service.Dhcp;
+import static com.cloud.network.Network.Service.Dns;
+import static com.cloud.network.Network.Service.Lb;
+import static com.cloud.network.Network.Service.StaticNat;
+import static com.cloud.network.Network.Service.SourceNat;
+import static com.cloud.network.Network.Service.PortForwarding;
+import static com.cloud.network.Network.Service.NetworkACL;
+import static com.cloud.network.Network.Service.UserData;
+import static com.cloud.network.Network.Service.Firewall;
+
@APICommand(name = "createNetworkOffering", description = "Creates a network offering.", responseObject = NetworkOfferingResponse.class, since = "3.0.0",
requestHasSensitiveInfo = false, responseHasSensitiveInfo = false)
public class CreateNetworkOfferingCmd extends BaseCmd {
- public static final Logger s_logger = Logger.getLogger(CreateNetworkOfferingCmd.class.getName());
/////////////////////////////////////////////////////
//////////////// API parameters /////////////////////
@@ -128,6 +140,30 @@ public class CreateNetworkOfferingCmd extends BaseCmd {
description = "true if network offering is meant to be used for VPC, false otherwise.")
private Boolean forVpc;
+ @Parameter(name = ApiConstants.FOR_NSX,
+ type = CommandType.BOOLEAN,
+ description = "true if network offering is meant to be used for NSX, false otherwise.",
+ since = "4.20.0")
+ private Boolean forNsx;
+
+ @Parameter(name = ApiConstants.NSX_SUPPORT_LB,
+ type = CommandType.BOOLEAN,
+ description = "true if network offering for NSX network offering supports Load balancer service.",
+ since = "4.20.0")
+ private Boolean nsxSupportsLbService;
+
+ @Parameter(name = ApiConstants.NSX_SUPPORTS_INTERNAL_LB,
+ type = CommandType.BOOLEAN,
+ description = "true if network offering for NSX network offering supports Internal Load balancer service.",
+ since = "4.20.0")
+ private Boolean nsxSupportsInternalLbService;
+
+ @Parameter(name = ApiConstants.NETWORK_MODE,
+ type = CommandType.STRING,
+ description = "Indicates the mode with which the network will operate. Valid option: NATTED or ROUTED",
+ since = "4.20.0")
+ private String networkMode;
+
@Parameter(name = ApiConstants.FOR_TUNGSTEN,
type = CommandType.BOOLEAN,
description = "true if network offering is meant to be used for Tungsten-Fabric, false otherwise.")
@@ -175,6 +211,16 @@ public class CreateNetworkOfferingCmd extends BaseCmd {
since = "4.16")
private Boolean enable;
+ @Parameter(name = ApiConstants.SPECIFY_AS_NUMBER, type = CommandType.BOOLEAN, since = "4.20.0",
+ description = "true if network offering supports choosing AS number")
+ private Boolean specifyAsNumber;
+
+ @Parameter(name = ApiConstants.ROUTING_MODE,
+ type = CommandType.STRING,
+ since = "4.20.0",
+ description = "the routing mode for the network offering. Supported types are: Static or Dynamic.")
+ private String routingMode;
+
/////////////////////////////////////////////////////
/////////////////// Accessors ///////////////////////
/////////////////////////////////////////////////////
@@ -212,7 +258,27 @@ public Long getServiceOfferingId() {
}
public List getSupportedServices() {
- return supportedServices == null ? new ArrayList() : supportedServices;
+ if (!isForNsx()) {
+ return supportedServices == null ? new ArrayList() : supportedServices;
+ } else {
+ List services = new ArrayList<>(List.of(
+ Dhcp.getName(),
+ Dns.getName(),
+ StaticNat.getName(),
+ SourceNat.getName(),
+ PortForwarding.getName(),
+ UserData.getName()
+ ));
+ if (getNsxSupportsLbService()) {
+ services.add(Lb.getName());
+ }
+ if (Boolean.TRUE.equals(forVpc)) {
+ services.add(NetworkACL.getName());
+ } else {
+ services.add(Firewall.getName());
+ }
+ return services;
+ }
}
public String getGuestIpType() {
@@ -242,6 +308,22 @@ public Boolean getForVpc() {
return forVpc;
}
+ public boolean isForNsx() {
+ return BooleanUtils.isTrue(forNsx);
+ }
+
+ public String getNetworkMode() {
+ return networkMode;
+ }
+
+ public boolean getNsxSupportsLbService() {
+ return BooleanUtils.isTrue(nsxSupportsLbService);
+ }
+
+ public boolean getNsxSupportsInternalLbService() {
+ return BooleanUtils.isTrue(nsxSupportsInternalLbService);
+ }
+
public Boolean getForTungsten() {
return forTungsten;
}
@@ -262,9 +344,8 @@ public Integer getMaxconnections() {
}
public Map> getServiceProviders() {
- Map> serviceProviderMap = null;
- if (serviceProviderList != null && !serviceProviderList.isEmpty()) {
- serviceProviderMap = new HashMap>();
+ Map> serviceProviderMap = new HashMap<>();
+ if (serviceProviderList != null && !serviceProviderList.isEmpty() && !isForNsx()) {
Collection servicesCollection = serviceProviderList.values();
Iterator iter = servicesCollection.iterator();
while (iter.hasNext()) {
@@ -280,11 +361,37 @@ public Map> getServiceProviders() {
providerList.add(provider);
serviceProviderMap.put(service, providerList);
}
+ } else if (Boolean.TRUE.equals(forNsx)) {
+ getServiceProviderMapForNsx(serviceProviderMap);
}
-
return serviceProviderMap;
}
+ private void getServiceProviderMapForNsx(Map> serviceProviderMap) {
+ String routerProvider = Boolean.TRUE.equals(getForVpc()) ? VirtualRouterProvider.Type.VPCVirtualRouter.name() :
+ VirtualRouterProvider.Type.VirtualRouter.name();
+ List unsupportedServices = new ArrayList<>(List.of("Vpn", "SecurityGroup", "Connectivity",
+ "Gateway", "BaremetalPxeService"));
+ List routerSupported = List.of("Dhcp", "Dns", "UserData");
+ List allServices = Service.listAllServices().stream().map(Service::getName).collect(Collectors.toList());
+ if (routerProvider.equals(VirtualRouterProvider.Type.VPCVirtualRouter.name())) {
+ unsupportedServices.add("Firewall");
+ } else {
+ unsupportedServices.add("NetworkACL");
+ }
+ for (String service : allServices) {
+ if (unsupportedServices.contains(service))
+ continue;
+ if (routerSupported.contains(service))
+ serviceProviderMap.put(service, List.of(routerProvider));
+ else
+ serviceProviderMap.put(service, List.of(Network.Provider.Nsx.getName()));
+ if (!getNsxSupportsLbService()) {
+ serviceProviderMap.remove(Lb.getName());
+ }
+ }
+ }
+
public Map getServiceCapabilities(Service service) {
Map capabilityMap = null;
@@ -365,6 +472,14 @@ public Boolean getEnable() {
return false;
}
+ public boolean getSpecifyAsNumber() {
+ return BooleanUtils.toBoolean(specifyAsNumber);
+ }
+
+ public String getRoutingMode() {
+ return routingMode;
+ }
+
/////////////////////////////////////////////////////
/////////////// API Implementation///////////////////
/////////////////////////////////////////////////////
diff --git a/api/src/main/java/org/apache/cloudstack/api/command/admin/network/CreatePhysicalNetworkCmd.java b/api/src/main/java/org/apache/cloudstack/api/command/admin/network/CreatePhysicalNetworkCmd.java
index 294ee047fe68..7eb52b92456c 100644
--- a/api/src/main/java/org/apache/cloudstack/api/command/admin/network/CreatePhysicalNetworkCmd.java
+++ b/api/src/main/java/org/apache/cloudstack/api/command/admin/network/CreatePhysicalNetworkCmd.java
@@ -18,7 +18,6 @@
import java.util.List;
-import org.apache.log4j.Logger;
import org.apache.cloudstack.api.APICommand;
import org.apache.cloudstack.api.ApiCommandResourceType;
@@ -40,7 +39,6 @@
@APICommand(name = "createPhysicalNetwork", description = "Creates a physical network", responseObject = PhysicalNetworkResponse.class, since = "3.0.0",
requestHasSensitiveInfo = false, responseHasSensitiveInfo = false)
public class CreatePhysicalNetworkCmd extends BaseAsyncCreateCmd {
- public static final Logger s_logger = Logger.getLogger(CreatePhysicalNetworkCmd.class.getName());
/////////////////////////////////////////////////////
diff --git a/api/src/main/java/org/apache/cloudstack/api/command/admin/network/CreateStorageNetworkIpRangeCmd.java b/api/src/main/java/org/apache/cloudstack/api/command/admin/network/CreateStorageNetworkIpRangeCmd.java
index d2dc3d8688fa..42262cc2bf15 100644
--- a/api/src/main/java/org/apache/cloudstack/api/command/admin/network/CreateStorageNetworkIpRangeCmd.java
+++ b/api/src/main/java/org/apache/cloudstack/api/command/admin/network/CreateStorageNetworkIpRangeCmd.java
@@ -16,7 +16,6 @@
// under the License.
package org.apache.cloudstack.api.command.admin.network;
-import org.apache.log4j.Logger;
import org.apache.cloudstack.api.APICommand;
import org.apache.cloudstack.api.ApiConstants;
@@ -42,7 +41,6 @@
requestHasSensitiveInfo = false,
responseHasSensitiveInfo = false)
public class CreateStorageNetworkIpRangeCmd extends BaseAsyncCmd {
- public static final Logger s_logger = Logger.getLogger(CreateStorageNetworkIpRangeCmd.class);
/////////////////////////////////////////////////////
@@ -119,7 +117,7 @@ public void execute() throws ResourceUnavailableException, InsufficientCapacityE
response.setResponseName(getCommandName());
this.setResponseObject(response);
} catch (Exception e) {
- s_logger.warn("Create storage network IP range failed", e);
+ logger.warn("Create storage network IP range failed", e);
throw new ServerApiException(ApiErrorCode.INTERNAL_ERROR, e.getMessage());
}
}
diff --git a/api/src/main/java/org/apache/cloudstack/api/command/admin/network/DedicateGuestVlanRangeCmd.java b/api/src/main/java/org/apache/cloudstack/api/command/admin/network/DedicateGuestVlanRangeCmd.java
index e6a289d096b7..355f738679e0 100644
--- a/api/src/main/java/org/apache/cloudstack/api/command/admin/network/DedicateGuestVlanRangeCmd.java
+++ b/api/src/main/java/org/apache/cloudstack/api/command/admin/network/DedicateGuestVlanRangeCmd.java
@@ -18,7 +18,6 @@
*/
package org.apache.cloudstack.api.command.admin.network;
-import org.apache.log4j.Logger;
import org.apache.cloudstack.api.APICommand;
import org.apache.cloudstack.api.ApiConstants;
@@ -39,7 +38,6 @@
@APICommand(name = "dedicateGuestVlanRange", description = "Dedicates a guest vlan range to an account", responseObject = GuestVlanRangeResponse.class,
requestHasSensitiveInfo = false, responseHasSensitiveInfo = false)
public class DedicateGuestVlanRangeCmd extends BaseCmd {
- public static final Logger s_logger = Logger.getLogger(DedicateGuestVlanRangeCmd.class.getName());
/////////////////////////////////////////////////////
diff --git a/api/src/main/java/org/apache/cloudstack/api/command/admin/network/DedicateIpv4SubnetForZoneCmd.java b/api/src/main/java/org/apache/cloudstack/api/command/admin/network/DedicateIpv4SubnetForZoneCmd.java
new file mode 100644
index 000000000000..2df032c559c5
--- /dev/null
+++ b/api/src/main/java/org/apache/cloudstack/api/command/admin/network/DedicateIpv4SubnetForZoneCmd.java
@@ -0,0 +1,111 @@
+// Licensed to the Apache Software Foundation (ASF) under one
+// or more contributor license agreements. See the NOTICE file
+// distributed with this work for additional information
+// regarding copyright ownership. The ASF licenses this file
+// to you under the Apache License, Version 2.0 (the
+// "License"); you may not use this file except in compliance
+// with the License. You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing,
+// software distributed under the License is distributed on an
+// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+// KIND, either express or implied. See the License for the
+// specific language governing permissions and limitations
+// under the License.
+
+package org.apache.cloudstack.api.command.admin.network;
+
+import org.apache.cloudstack.acl.RoleType;
+import org.apache.cloudstack.api.APICommand;
+import org.apache.cloudstack.api.ApiConstants;
+import org.apache.cloudstack.api.ApiErrorCode;
+import org.apache.cloudstack.api.BaseAsyncCmd;
+import org.apache.cloudstack.api.Parameter;
+import org.apache.cloudstack.api.ServerApiException;
+import org.apache.cloudstack.api.response.DataCenterIpv4SubnetResponse;
+import org.apache.cloudstack.api.response.DomainResponse;
+import org.apache.cloudstack.api.response.ProjectResponse;
+import org.apache.cloudstack.datacenter.DataCenterIpv4GuestSubnet;
+
+import com.cloud.event.EventTypes;
+import com.cloud.exception.InvalidParameterValueException;
+import com.cloud.user.Account;
+import com.cloud.utils.exception.CloudRuntimeException;
+
+@APICommand(name = "dedicateIpv4SubnetForZone",
+ description = "Dedicates an existing IPv4 subnet for a zone to an account or a domain.",
+ responseObject = DataCenterIpv4SubnetResponse.class,
+ since = "4.20.0",
+ requestHasSensitiveInfo = false,
+ responseHasSensitiveInfo = false,
+ authorized = {RoleType.Admin})
+public class DedicateIpv4SubnetForZoneCmd extends BaseAsyncCmd {
+
+ /////////////////////////////////////////////////////
+ //////////////// API parameters /////////////////////
+ /////////////////////////////////////////////////////
+
+ @Parameter(name = ApiConstants.ID, type = CommandType.UUID, entityType = DataCenterIpv4SubnetResponse.class, required = true, description = "Id of the guest network IPv4 subnet")
+ private Long id;
+
+ @Parameter(name = ApiConstants.ACCOUNT, type = CommandType.STRING, description = "account who will own the IPv4 subnet")
+ private String accountName;
+
+ @Parameter(name = ApiConstants.PROJECT_ID, type = CommandType.UUID, entityType = ProjectResponse.class, description = "project who will own the IPv4 subnet")
+ private Long projectId;
+
+ @Parameter(name = ApiConstants.DOMAIN_ID, type = CommandType.UUID, entityType = DomainResponse.class, description = "domain ID of the account owning the IPv4 subnet")
+ private Long domainId;
+
+ public Long getId() {
+ return id;
+ }
+
+ public String getAccountName() {
+ return accountName;
+ }
+
+ public Long getProjectId() {
+ return projectId;
+ }
+
+ public Long getDomainId() {
+ return domainId;
+ }
+
+ @Override
+ public String getEventType() {
+ return EventTypes.EVENT_ZONE_IP4_SUBNET_DEDICATE;
+ }
+
+ @Override
+ public String getEventDescription() {
+ return "Dedicating zone IPv4 subnet " + getId();
+ }
+
+ @Override
+ public void execute() {
+ try {
+ DataCenterIpv4GuestSubnet result = routedIpv4Manager.dedicateDataCenterIpv4GuestSubnet(this);
+ if (result != null) {
+ DataCenterIpv4SubnetResponse response = routedIpv4Manager.createDataCenterIpv4SubnetResponse(result);
+ response.setResponseName(getCommandName());
+ this.setResponseObject(response);
+ } else {
+ throw new ServerApiException(ApiErrorCode.INTERNAL_ERROR, "Failed to dedicate guest network IPv4 subnet:" + getId());
+ }
+ } catch (InvalidParameterValueException ex) {
+ throw new ServerApiException(ApiErrorCode.PARAM_ERROR, ex.getMessage());
+ } catch (CloudRuntimeException ex) {
+ throw new ServerApiException(ApiErrorCode.INTERNAL_ERROR, ex.getMessage());
+ }
+
+ }
+
+ @Override
+ public long getEntityOwnerId() {
+ return Account.ACCOUNT_ID_SYSTEM;
+ }
+}
diff --git a/api/src/main/java/org/apache/cloudstack/api/command/admin/network/DeleteGuestNetworkIpv6PrefixCmd.java b/api/src/main/java/org/apache/cloudstack/api/command/admin/network/DeleteGuestNetworkIpv6PrefixCmd.java
index 67d309456d6a..e2ada4191a82 100644
--- a/api/src/main/java/org/apache/cloudstack/api/command/admin/network/DeleteGuestNetworkIpv6PrefixCmd.java
+++ b/api/src/main/java/org/apache/cloudstack/api/command/admin/network/DeleteGuestNetworkIpv6PrefixCmd.java
@@ -26,7 +26,6 @@
import org.apache.cloudstack.api.ServerApiException;
import org.apache.cloudstack.api.response.DataCenterGuestIpv6PrefixResponse;
import org.apache.cloudstack.api.response.SuccessResponse;
-import org.apache.log4j.Logger;
import com.cloud.event.EventTypes;
import com.cloud.exception.ConcurrentOperationException;
@@ -45,7 +44,6 @@
responseHasSensitiveInfo = false,
authorized = {RoleType.Admin})
public class DeleteGuestNetworkIpv6PrefixCmd extends BaseAsyncCmd {
- public static final Logger s_logger = Logger.getLogger(DeleteGuestNetworkIpv6PrefixCmd.class);
/////////////////////////////////////////////////////
//////////////// API parameters /////////////////////
diff --git a/api/src/main/java/org/apache/cloudstack/api/command/admin/network/DeleteIpv4SubnetForGuestNetworkCmd.java b/api/src/main/java/org/apache/cloudstack/api/command/admin/network/DeleteIpv4SubnetForGuestNetworkCmd.java
new file mode 100644
index 000000000000..28a646f9d036
--- /dev/null
+++ b/api/src/main/java/org/apache/cloudstack/api/command/admin/network/DeleteIpv4SubnetForGuestNetworkCmd.java
@@ -0,0 +1,88 @@
+// Licensed to the Apache Software Foundation (ASF) under one
+// or more contributor license agreements. See the NOTICE file
+// distributed with this work for additional information
+// regarding copyright ownership. The ASF licenses this file
+// to you under the Apache License, Version 2.0 (the
+// "License"); you may not use this file except in compliance
+// with the License. You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing,
+// software distributed under the License is distributed on an
+// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+// KIND, either express or implied. See the License for the
+// specific language governing permissions and limitations
+// under the License.
+
+package org.apache.cloudstack.api.command.admin.network;
+
+import org.apache.cloudstack.acl.RoleType;
+import org.apache.cloudstack.api.APICommand;
+import org.apache.cloudstack.api.ApiConstants;
+import org.apache.cloudstack.api.ApiErrorCode;
+import org.apache.cloudstack.api.BaseAsyncCmd;
+import org.apache.cloudstack.api.Parameter;
+import org.apache.cloudstack.api.ServerApiException;
+import org.apache.cloudstack.api.response.Ipv4SubnetForGuestNetworkResponse;
+import org.apache.cloudstack.api.response.SuccessResponse;
+
+import com.cloud.event.EventTypes;
+import com.cloud.exception.InvalidParameterValueException;
+import com.cloud.user.Account;
+import com.cloud.utils.exception.CloudRuntimeException;
+
+@APICommand(name = "deleteIpv4SubnetForGuestNetwork",
+ description = "Deletes an existing IPv4 subnet for guest network.",
+ responseObject = SuccessResponse.class,
+ since = "4.20.0",
+ requestHasSensitiveInfo = false,
+ responseHasSensitiveInfo = false,
+ authorized = {RoleType.Admin})
+public class DeleteIpv4SubnetForGuestNetworkCmd extends BaseAsyncCmd {
+
+ /////////////////////////////////////////////////////
+ //////////////// API parameters /////////////////////
+ /////////////////////////////////////////////////////
+
+ @Parameter(name = ApiConstants.ID, type = CommandType.UUID, entityType = Ipv4SubnetForGuestNetworkResponse.class, required = true, description = "Id of the guest network IPv4 subnet")
+ private Long id;
+
+ public Long getId() {
+ return id;
+ }
+
+ @Override
+ public String getEventType() {
+ return EventTypes.EVENT_IP4_GUEST_SUBNET_DELETE;
+ }
+
+ @Override
+ public String getEventDescription() {
+ return "Deleting guest IPv4 subnet " + getId();
+ }
+
+ @Override
+ public void execute() {
+ try {
+ boolean result = routedIpv4Manager.deleteIpv4SubnetForGuestNetwork(this);
+ if (result) {
+ SuccessResponse response = new SuccessResponse(getCommandName());
+ response.setResponseName(getCommandName());
+ this.setResponseObject(response);
+ } else {
+ throw new ServerApiException(ApiErrorCode.INTERNAL_ERROR, "Failed to delete guest network IPv4 subnet:" + getId());
+ }
+ } catch (InvalidParameterValueException ex) {
+ throw new ServerApiException(ApiErrorCode.PARAM_ERROR, ex.getMessage());
+ } catch (CloudRuntimeException ex) {
+ throw new ServerApiException(ApiErrorCode.INTERNAL_ERROR, ex.getMessage());
+ }
+
+ }
+
+ @Override
+ public long getEntityOwnerId() {
+ return Account.ACCOUNT_ID_SYSTEM;
+ }
+}
diff --git a/api/src/main/java/org/apache/cloudstack/api/command/admin/network/DeleteIpv4SubnetForZoneCmd.java b/api/src/main/java/org/apache/cloudstack/api/command/admin/network/DeleteIpv4SubnetForZoneCmd.java
new file mode 100644
index 000000000000..222bc1bad98d
--- /dev/null
+++ b/api/src/main/java/org/apache/cloudstack/api/command/admin/network/DeleteIpv4SubnetForZoneCmd.java
@@ -0,0 +1,88 @@
+// Licensed to the Apache Software Foundation (ASF) under one
+// or more contributor license agreements. See the NOTICE file
+// distributed with this work for additional information
+// regarding copyright ownership. The ASF licenses this file
+// to you under the Apache License, Version 2.0 (the
+// "License"); you may not use this file except in compliance
+// with the License. You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing,
+// software distributed under the License is distributed on an
+// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+// KIND, either express or implied. See the License for the
+// specific language governing permissions and limitations
+// under the License.
+
+package org.apache.cloudstack.api.command.admin.network;
+
+import org.apache.cloudstack.acl.RoleType;
+import org.apache.cloudstack.api.APICommand;
+import org.apache.cloudstack.api.ApiConstants;
+import org.apache.cloudstack.api.ApiErrorCode;
+import org.apache.cloudstack.api.BaseAsyncCmd;
+import org.apache.cloudstack.api.Parameter;
+import org.apache.cloudstack.api.ServerApiException;
+import org.apache.cloudstack.api.response.DataCenterIpv4SubnetResponse;
+import org.apache.cloudstack.api.response.SuccessResponse;
+
+import com.cloud.event.EventTypes;
+import com.cloud.exception.InvalidParameterValueException;
+import com.cloud.user.Account;
+import com.cloud.utils.exception.CloudRuntimeException;
+
+@APICommand(name = "deleteIpv4SubnetForZone",
+ description = "Deletes an existing IPv4 subnet for a zone.",
+ responseObject = SuccessResponse.class,
+ since = "4.20.0",
+ requestHasSensitiveInfo = false,
+ responseHasSensitiveInfo = false,
+ authorized = {RoleType.Admin})
+public class DeleteIpv4SubnetForZoneCmd extends BaseAsyncCmd {
+
+ /////////////////////////////////////////////////////
+ //////////////// API parameters /////////////////////
+ /////////////////////////////////////////////////////
+
+ @Parameter(name = ApiConstants.ID, type = CommandType.UUID, entityType = DataCenterIpv4SubnetResponse.class, required = true, description = "Id of the guest network IPv4 subnet")
+ private Long id;
+
+ public Long getId() {
+ return id;
+ }
+
+ @Override
+ public String getEventType() {
+ return EventTypes.EVENT_ZONE_IP4_SUBNET_DELETE;
+ }
+
+ @Override
+ public String getEventDescription() {
+ return "Deleting zone IPv4 subnet " + getId();
+ }
+
+ @Override
+ public void execute() {
+ try {
+ boolean result = routedIpv4Manager.deleteDataCenterIpv4GuestSubnet(this);
+ if (result) {
+ SuccessResponse response = new SuccessResponse(getCommandName());
+ response.setResponseName(getCommandName());
+ this.setResponseObject(response);
+ } else {
+ throw new ServerApiException(ApiErrorCode.INTERNAL_ERROR, "Failed to delete guest network IPv4 subnet:" + getId());
+ }
+ } catch (InvalidParameterValueException ex) {
+ throw new ServerApiException(ApiErrorCode.PARAM_ERROR, ex.getMessage());
+ } catch (CloudRuntimeException ex) {
+ throw new ServerApiException(ApiErrorCode.INTERNAL_ERROR, ex.getMessage());
+ }
+
+ }
+
+ @Override
+ public long getEntityOwnerId() {
+ return Account.ACCOUNT_ID_SYSTEM;
+ }
+}
diff --git a/api/src/main/java/org/apache/cloudstack/api/command/admin/network/DeleteManagementNetworkIpRangeCmd.java b/api/src/main/java/org/apache/cloudstack/api/command/admin/network/DeleteManagementNetworkIpRangeCmd.java
index abb72eb27244..41cf5e518b34 100644
--- a/api/src/main/java/org/apache/cloudstack/api/command/admin/network/DeleteManagementNetworkIpRangeCmd.java
+++ b/api/src/main/java/org/apache/cloudstack/api/command/admin/network/DeleteManagementNetworkIpRangeCmd.java
@@ -16,7 +16,6 @@
// under the License.
package org.apache.cloudstack.api.command.admin.network;
-import org.apache.log4j.Logger;
import org.apache.cloudstack.acl.RoleType;
import org.apache.cloudstack.api.ApiArgValidator;
@@ -42,7 +41,6 @@
responseHasSensitiveInfo = false,
authorized = {RoleType.Admin})
public class DeleteManagementNetworkIpRangeCmd extends BaseAsyncCmd {
- public static final Logger s_logger = Logger.getLogger(DeleteManagementNetworkIpRangeCmd.class);
/////////////////////////////////////////////////////
@@ -112,13 +110,13 @@ public void execute() {
SuccessResponse response = new SuccessResponse(getCommandName());
this.setResponseObject(response);
} catch (ResourceUnavailableException ex) {
- s_logger.warn("Exception: ", ex);
+ logger.warn("Exception: ", ex);
throw new ServerApiException(ApiErrorCode.RESOURCE_UNAVAILABLE_ERROR, ex.getMessage());
} catch (ConcurrentOperationException ex) {
- s_logger.warn("Exception: ", ex);
+ logger.warn("Exception: ", ex);
throw new ServerApiException(ApiErrorCode.INTERNAL_ERROR, ex.getMessage());
} catch (Exception e) {
- s_logger.warn("Failed to delete management ip range from " + getStartIp() + " to " + getEndIp() + " of Pod: " + getPodId(), e);
+ logger.warn("Failed to delete management ip range from " + getStartIp() + " to " + getEndIp() + " of Pod: " + getPodId(), e);
throw new ServerApiException(ApiErrorCode.INTERNAL_ERROR, e.getMessage());
}
}
diff --git a/api/src/main/java/org/apache/cloudstack/api/command/admin/network/DeleteNetworkDeviceCmd.java b/api/src/main/java/org/apache/cloudstack/api/command/admin/network/DeleteNetworkDeviceCmd.java
index d7e8744d6b72..89a36d0b94f5 100644
--- a/api/src/main/java/org/apache/cloudstack/api/command/admin/network/DeleteNetworkDeviceCmd.java
+++ b/api/src/main/java/org/apache/cloudstack/api/command/admin/network/DeleteNetworkDeviceCmd.java
@@ -18,7 +18,6 @@
import javax.inject.Inject;
-import org.apache.log4j.Logger;
import org.apache.cloudstack.api.APICommand;
import org.apache.cloudstack.api.ApiConstants;
@@ -40,7 +39,6 @@
@APICommand(name = "deleteNetworkDevice", description = "Deletes network device.", responseObject = SuccessResponse.class,
requestHasSensitiveInfo = false, responseHasSensitiveInfo = false)
public class DeleteNetworkDeviceCmd extends BaseCmd {
- public static final Logger s_logger = Logger.getLogger(DeleteNetworkDeviceCmd.class);
@Inject
ExternalNetworkDeviceManager nwDeviceMgr;
diff --git a/api/src/main/java/org/apache/cloudstack/api/command/admin/network/DeleteNetworkOfferingCmd.java b/api/src/main/java/org/apache/cloudstack/api/command/admin/network/DeleteNetworkOfferingCmd.java
index 80ce48cc7d98..e0598b71ea17 100644
--- a/api/src/main/java/org/apache/cloudstack/api/command/admin/network/DeleteNetworkOfferingCmd.java
+++ b/api/src/main/java/org/apache/cloudstack/api/command/admin/network/DeleteNetworkOfferingCmd.java
@@ -16,7 +16,6 @@
// under the License.
package org.apache.cloudstack.api.command.admin.network;
-import org.apache.log4j.Logger;
import org.apache.cloudstack.api.APICommand;
import org.apache.cloudstack.api.ApiConstants;
@@ -32,7 +31,6 @@
@APICommand(name = "deleteNetworkOffering", description = "Deletes a network offering.", responseObject = SuccessResponse.class, since = "3.0.0",
requestHasSensitiveInfo = false, responseHasSensitiveInfo = false)
public class DeleteNetworkOfferingCmd extends BaseCmd {
- public static final Logger s_logger = Logger.getLogger(DeleteNetworkOfferingCmd.class.getName());
/////////////////////////////////////////////////////
//////////////// API parameters /////////////////////
diff --git a/api/src/main/java/org/apache/cloudstack/api/command/admin/network/DeleteNetworkServiceProviderCmd.java b/api/src/main/java/org/apache/cloudstack/api/command/admin/network/DeleteNetworkServiceProviderCmd.java
index 1ccfff5d7ba2..4b56612fddaa 100644
--- a/api/src/main/java/org/apache/cloudstack/api/command/admin/network/DeleteNetworkServiceProviderCmd.java
+++ b/api/src/main/java/org/apache/cloudstack/api/command/admin/network/DeleteNetworkServiceProviderCmd.java
@@ -16,7 +16,6 @@
// under the License.
package org.apache.cloudstack.api.command.admin.network;
-import org.apache.log4j.Logger;
import org.apache.cloudstack.api.APICommand;
import org.apache.cloudstack.api.ApiCommandResourceType;
@@ -36,7 +35,6 @@
@APICommand(name = "deleteNetworkServiceProvider", description = "Deletes a Network Service Provider.", responseObject = SuccessResponse.class, since = "3.0.0",
requestHasSensitiveInfo = false, responseHasSensitiveInfo = false)
public class DeleteNetworkServiceProviderCmd extends BaseAsyncCmd {
- public static final Logger s_logger = Logger.getLogger(DeleteNetworkServiceProviderCmd.class.getName());
/////////////////////////////////////////////////////
@@ -78,10 +76,10 @@ public void execute() {
throw new ServerApiException(ApiErrorCode.INTERNAL_ERROR, "Failed to delete network service provider");
}
} catch (ResourceUnavailableException ex) {
- s_logger.warn("Exception: ", ex);
+ logger.warn("Exception: ", ex);
throw new ServerApiException(ApiErrorCode.RESOURCE_UNAVAILABLE_ERROR, ex.getMessage());
} catch (ConcurrentOperationException ex) {
- s_logger.warn("Exception: ", ex);
+ logger.warn("Exception: ", ex);
throw new ServerApiException(ApiErrorCode.INTERNAL_ERROR, ex.getMessage());
}
}
diff --git a/api/src/main/java/org/apache/cloudstack/api/command/admin/network/DeletePhysicalNetworkCmd.java b/api/src/main/java/org/apache/cloudstack/api/command/admin/network/DeletePhysicalNetworkCmd.java
index 79f0685c6c65..3233130211c4 100644
--- a/api/src/main/java/org/apache/cloudstack/api/command/admin/network/DeletePhysicalNetworkCmd.java
+++ b/api/src/main/java/org/apache/cloudstack/api/command/admin/network/DeletePhysicalNetworkCmd.java
@@ -16,7 +16,6 @@
// under the License.
package org.apache.cloudstack.api.command.admin.network;
-import org.apache.log4j.Logger;
import org.apache.cloudstack.api.APICommand;
import org.apache.cloudstack.api.ApiCommandResourceType;
@@ -35,7 +34,6 @@
@APICommand(name = "deletePhysicalNetwork", description = "Deletes a Physical Network.", responseObject = SuccessResponse.class, since = "3.0.0",
requestHasSensitiveInfo = false, responseHasSensitiveInfo = false)
public class DeletePhysicalNetworkCmd extends BaseAsyncCmd {
- public static final Logger s_logger = Logger.getLogger(DeletePhysicalNetworkCmd.class.getName());
/////////////////////////////////////////////////////
diff --git a/api/src/main/java/org/apache/cloudstack/api/command/admin/network/DeleteStorageNetworkIpRangeCmd.java b/api/src/main/java/org/apache/cloudstack/api/command/admin/network/DeleteStorageNetworkIpRangeCmd.java
index b5de43dc5e24..454dfba92f20 100644
--- a/api/src/main/java/org/apache/cloudstack/api/command/admin/network/DeleteStorageNetworkIpRangeCmd.java
+++ b/api/src/main/java/org/apache/cloudstack/api/command/admin/network/DeleteStorageNetworkIpRangeCmd.java
@@ -16,7 +16,6 @@
// under the License.
package org.apache.cloudstack.api.command.admin.network;
-import org.apache.log4j.Logger;
import org.apache.cloudstack.api.APICommand;
import org.apache.cloudstack.api.ApiConstants;
@@ -37,7 +36,6 @@
@APICommand(name = "deleteStorageNetworkIpRange", description = "Deletes a storage network IP Range.", responseObject = SuccessResponse.class, since = "3.0.0",
requestHasSensitiveInfo = false, responseHasSensitiveInfo = false)
public class DeleteStorageNetworkIpRangeCmd extends BaseAsyncCmd {
- public static final Logger s_logger = Logger.getLogger(DeleteStorageNetworkIpRangeCmd.class);
/////////////////////////////////////////////////////
@@ -77,7 +75,7 @@ public void execute() throws ResourceUnavailableException, InsufficientCapacityE
SuccessResponse response = new SuccessResponse(getCommandName());
this.setResponseObject(response);
} catch (Exception e) {
- s_logger.warn("Failed to delete storage network ip range " + getId(), e);
+ logger.warn("Failed to delete storage network ip range " + getId(), e);
throw new ServerApiException(ApiErrorCode.INTERNAL_ERROR, e.getMessage());
}
}
diff --git a/api/src/main/java/org/apache/cloudstack/api/command/admin/network/ListDedicatedGuestVlanRangesCmd.java b/api/src/main/java/org/apache/cloudstack/api/command/admin/network/ListDedicatedGuestVlanRangesCmd.java
index 67324d819272..0247a3069212 100644
--- a/api/src/main/java/org/apache/cloudstack/api/command/admin/network/ListDedicatedGuestVlanRangesCmd.java
+++ b/api/src/main/java/org/apache/cloudstack/api/command/admin/network/ListDedicatedGuestVlanRangesCmd.java
@@ -19,7 +19,6 @@
import java.util.ArrayList;
import java.util.List;
-import org.apache.log4j.Logger;
import org.apache.cloudstack.api.APICommand;
import org.apache.cloudstack.api.ApiConstants;
@@ -39,7 +38,6 @@
@APICommand(name = "listDedicatedGuestVlanRanges", description = "Lists dedicated guest vlan ranges", responseObject = GuestVlanRangeResponse.class,
requestHasSensitiveInfo = false, responseHasSensitiveInfo = false)
public class ListDedicatedGuestVlanRangesCmd extends BaseListCmd {
- public static final Logger s_logger = Logger.getLogger(ListDedicatedGuestVlanRangesCmd.class.getName());
/////////////////////////////////////////////////////
diff --git a/api/src/main/java/org/apache/cloudstack/api/command/admin/network/ListGuestVlansCmd.java b/api/src/main/java/org/apache/cloudstack/api/command/admin/network/ListGuestVlansCmd.java
index 1daeac9c53d0..4b368f5e0341 100644
--- a/api/src/main/java/org/apache/cloudstack/api/command/admin/network/ListGuestVlansCmd.java
+++ b/api/src/main/java/org/apache/cloudstack/api/command/admin/network/ListGuestVlansCmd.java
@@ -22,7 +22,6 @@
import org.apache.cloudstack.acl.RoleType;
import org.apache.cloudstack.api.response.PhysicalNetworkResponse;
import org.apache.cloudstack.api.response.ZoneResponse;
-import org.apache.log4j.Logger;
import org.apache.cloudstack.api.APICommand;
import org.apache.cloudstack.api.ApiConstants;
@@ -39,7 +38,6 @@
since = "4.17.0",
authorized = {RoleType.Admin})
public class ListGuestVlansCmd extends BaseListCmd {
- public static final Logger s_logger = Logger.getLogger(ListGuestVlansCmd.class.getName());
/////////////////////////////////////////////////////
diff --git a/api/src/main/java/org/apache/cloudstack/api/command/admin/network/ListIpv4SubnetsForGuestNetworkCmd.java b/api/src/main/java/org/apache/cloudstack/api/command/admin/network/ListIpv4SubnetsForGuestNetworkCmd.java
new file mode 100644
index 000000000000..9761f6e89ebc
--- /dev/null
+++ b/api/src/main/java/org/apache/cloudstack/api/command/admin/network/ListIpv4SubnetsForGuestNetworkCmd.java
@@ -0,0 +1,123 @@
+// Licensed to the Apache Software Foundation (ASF) under one
+// or more contributor license agreements. See the NOTICE file
+// distributed with this work for additional information
+// regarding copyright ownership. The ASF licenses this file
+// to you under the Apache License, Version 2.0 (the
+// "License"); you may not use this file except in compliance
+// with the License. You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing,
+// software distributed under the License is distributed on an
+// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+// KIND, either express or implied. See the License for the
+// specific language governing permissions and limitations
+// under the License.
+package org.apache.cloudstack.api.command.admin.network;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.apache.cloudstack.acl.RoleType;
+import org.apache.cloudstack.api.APICommand;
+import org.apache.cloudstack.api.ApiConstants;
+import org.apache.cloudstack.api.BaseListCmd;
+import org.apache.cloudstack.api.Parameter;
+import org.apache.cloudstack.api.response.DataCenterIpv4SubnetResponse;
+import org.apache.cloudstack.api.response.Ipv4SubnetForGuestNetworkResponse;
+import org.apache.cloudstack.api.response.ListResponse;
+import org.apache.cloudstack.api.response.NetworkResponse;
+import org.apache.cloudstack.api.response.VpcResponse;
+import org.apache.cloudstack.api.response.ZoneResponse;
+import org.apache.cloudstack.network.Ipv4GuestSubnetNetworkMap;
+
+@APICommand(name = "listIpv4SubnetsForGuestNetwork",
+ description = "Lists IPv4 subnets for guest networks.",
+ responseObject = Ipv4SubnetForGuestNetworkResponse.class,
+ since = "4.20.0",
+ requestHasSensitiveInfo = false,
+ responseHasSensitiveInfo = false,
+ authorized = {RoleType.Admin})
+public class ListIpv4SubnetsForGuestNetworkCmd extends BaseListCmd {
+
+ @Parameter(name = ApiConstants.ID,
+ type = CommandType.UUID,
+ entityType = Ipv4SubnetForGuestNetworkResponse.class,
+ description = "UUID of the IPv4 subnet for guest network.")
+ private Long id;
+
+ @Parameter(name = ApiConstants.PARENT_ID,
+ type = CommandType.UUID,
+ entityType = DataCenterIpv4SubnetResponse.class,
+ description = "UUID of zone Ipv4 subnet which the IPv4 subnet belongs to.")
+ private Long parentId;
+
+ @Parameter(name = ApiConstants.SUBNET,
+ type = CommandType.STRING,
+ description = "The CIDR of the Ipv4 subnet.")
+ private String subnet;
+
+ @Parameter(name = ApiConstants.ZONE_ID,
+ type = CommandType.UUID,
+ entityType = ZoneResponse.class,
+ description = "UUID of zone to which the IPv4 subnet belongs to.")
+ private Long zoneId;
+
+ @Parameter(name = ApiConstants.NETWORK_ID,
+ type = CommandType.UUID,
+ entityType = NetworkResponse.class,
+ description = "UUID of network to which the IPv4 subnet is associated to.")
+ private Long networkId;
+
+ @Parameter(name = ApiConstants.VPC_ID,
+ type = CommandType.UUID,
+ entityType = VpcResponse.class,
+ description = "UUID of VPC to which the IPv4 subnet is associated to.")
+ private Long vpcId;
+
+
+ /////////////////////////////////////////////////////
+ /////////////////// Accessors ///////////////////////
+ /////////////////////////////////////////////////////
+
+ public Long getId() {
+ return id;
+ }
+
+ public Long getParentId() {
+ return parentId;
+ }
+
+ public Long getZoneId() {
+ return zoneId;
+ }
+
+ public String getSubnet() {
+ return subnet;
+ }
+
+ public Long getNetworkId() {
+ return networkId;
+ }
+
+ public Long getVpcId() {
+ return vpcId;
+ }
+
+ @Override
+ public void execute() {
+ List extends Ipv4GuestSubnetNetworkMap> subnets = routedIpv4Manager.listIpv4GuestSubnetsForGuestNetwork(this);
+ ListResponse response = new ListResponse<>();
+ List subnetResponses = new ArrayList<>();
+ for (Ipv4GuestSubnetNetworkMap subnet : subnets) {
+ Ipv4SubnetForGuestNetworkResponse subnetResponse = routedIpv4Manager.createIpv4SubnetForGuestNetworkResponse(subnet);
+ subnetResponses.add(subnetResponse);
+ }
+
+ response.setResponses(subnetResponses, subnets.size());
+ response.setResponseName(getCommandName());
+ this.setResponseObject(response);
+ }
+
+}
diff --git a/api/src/main/java/org/apache/cloudstack/api/command/admin/network/ListIpv4SubnetsForZoneCmd.java b/api/src/main/java/org/apache/cloudstack/api/command/admin/network/ListIpv4SubnetsForZoneCmd.java
new file mode 100644
index 000000000000..2c2182250edb
--- /dev/null
+++ b/api/src/main/java/org/apache/cloudstack/api/command/admin/network/ListIpv4SubnetsForZoneCmd.java
@@ -0,0 +1,120 @@
+// Licensed to the Apache Software Foundation (ASF) under one
+// or more contributor license agreements. See the NOTICE file
+// distributed with this work for additional information
+// regarding copyright ownership. The ASF licenses this file
+// to you under the Apache License, Version 2.0 (the
+// "License"); you may not use this file except in compliance
+// with the License. You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing,
+// software distributed under the License is distributed on an
+// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+// KIND, either express or implied. See the License for the
+// specific language governing permissions and limitations
+// under the License.
+package org.apache.cloudstack.api.command.admin.network;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.apache.cloudstack.acl.RoleType;
+import org.apache.cloudstack.api.APICommand;
+import org.apache.cloudstack.api.ApiConstants;
+import org.apache.cloudstack.api.BaseListCmd;
+import org.apache.cloudstack.api.Parameter;
+import org.apache.cloudstack.api.response.DataCenterIpv4SubnetResponse;
+import org.apache.cloudstack.api.response.DomainResponse;
+import org.apache.cloudstack.api.response.ListResponse;
+import org.apache.cloudstack.api.response.ProjectResponse;
+import org.apache.cloudstack.api.response.ZoneResponse;
+import org.apache.cloudstack.datacenter.DataCenterIpv4GuestSubnet;
+
+@APICommand(name = "listIpv4SubnetsForZone",
+ description = "Lists IPv4 subnets for zone.",
+ responseObject = DataCenterIpv4SubnetResponse.class,
+ since = "4.20.0",
+ requestHasSensitiveInfo = false,
+ responseHasSensitiveInfo = false,
+ authorized = {RoleType.Admin})
+public class ListIpv4SubnetsForZoneCmd extends BaseListCmd {
+
+ @Parameter(name = ApiConstants.ID,
+ type = CommandType.UUID,
+ entityType = DataCenterIpv4SubnetResponse.class,
+ description = "UUID of the IPv4 subnet.")
+ private Long id;
+
+ @Parameter(name = ApiConstants.ZONE_ID,
+ type = CommandType.UUID,
+ entityType = ZoneResponse.class,
+ description = "UUID of zone to which the IPv4 subnet belongs to.")
+ private Long zoneId;
+
+ @Parameter(name = ApiConstants.SUBNET,
+ type = CommandType.STRING,
+ description = "CIDR of the IPv4 subnet.")
+ private String subnet;
+
+ @Parameter(name = ApiConstants.ACCOUNT,
+ type = CommandType.STRING,
+ description = "the account which the IPv4 subnet is dedicated to. Must be used with the domainId parameter.")
+ private String accountName;
+
+ @Parameter(name = ApiConstants.PROJECT_ID,
+ type = CommandType.UUID,
+ entityType = ProjectResponse.class,
+ description = "project who which the IPv4 subnet is dedicated to")
+ private Long projectId;
+
+ @Parameter(name = ApiConstants.DOMAIN_ID,
+ type = CommandType.UUID,
+ entityType = DomainResponse.class,
+ description = "the domain ID which the IPv4 subnet is dedicated to.")
+ private Long domainId;
+
+ /////////////////////////////////////////////////////
+ /////////////////// Accessors ///////////////////////
+ /////////////////////////////////////////////////////
+
+ public Long getId() {
+ return id;
+ }
+
+ public Long getZoneId() {
+ return zoneId;
+ }
+
+ public String getSubnet() {
+ return subnet;
+ }
+
+ public String getAccountName() {
+ return accountName;
+ }
+
+ public Long getProjectId() {
+ return projectId;
+ }
+
+ public Long getDomainId() {
+ return domainId;
+ }
+
+ @Override
+ public void execute() {
+ List extends DataCenterIpv4GuestSubnet> subnets = routedIpv4Manager.listDataCenterIpv4GuestSubnets(this);
+ ListResponse response = new ListResponse<>();
+ List subnetResponses = new ArrayList<>();
+ for (DataCenterIpv4GuestSubnet subnet : subnets) {
+ DataCenterIpv4SubnetResponse subnetResponse = routedIpv4Manager.createDataCenterIpv4SubnetResponse(subnet);
+ subnetResponses.add(subnetResponse);
+ }
+
+ response.setResponses(subnetResponses, subnets.size());
+ response.setResponseName(getCommandName());
+ this.setResponseObject(response);
+ }
+
+}
diff --git a/api/src/main/java/org/apache/cloudstack/api/command/admin/network/ListNetworkDeviceCmd.java b/api/src/main/java/org/apache/cloudstack/api/command/admin/network/ListNetworkDeviceCmd.java
index 405c2654bdf1..768bab641087 100644
--- a/api/src/main/java/org/apache/cloudstack/api/command/admin/network/ListNetworkDeviceCmd.java
+++ b/api/src/main/java/org/apache/cloudstack/api/command/admin/network/ListNetworkDeviceCmd.java
@@ -22,7 +22,6 @@
import javax.inject.Inject;
-import org.apache.log4j.Logger;
import org.apache.cloudstack.api.APICommand;
import org.apache.cloudstack.api.ApiConstants;
@@ -45,7 +44,6 @@
@APICommand(name = "listNetworkDevice", description = "List network devices", responseObject = NetworkDeviceResponse.class,
requestHasSensitiveInfo = false, responseHasSensitiveInfo = false)
public class ListNetworkDeviceCmd extends BaseListCmd {
- public static final Logger s_logger = Logger.getLogger(ListNetworkDeviceCmd.class);
private static final String s_name = "listnetworkdevice";
@Inject
diff --git a/api/src/main/java/org/apache/cloudstack/api/command/admin/network/ListNetworkServiceProvidersCmd.java b/api/src/main/java/org/apache/cloudstack/api/command/admin/network/ListNetworkServiceProvidersCmd.java
index 67fc8292a938..68495a62215f 100644
--- a/api/src/main/java/org/apache/cloudstack/api/command/admin/network/ListNetworkServiceProvidersCmd.java
+++ b/api/src/main/java/org/apache/cloudstack/api/command/admin/network/ListNetworkServiceProvidersCmd.java
@@ -19,7 +19,6 @@
import java.util.ArrayList;
import java.util.List;
-import org.apache.log4j.Logger;
import org.apache.cloudstack.api.APICommand;
import org.apache.cloudstack.api.ApiConstants;
@@ -40,7 +39,6 @@
requestHasSensitiveInfo = false,
responseHasSensitiveInfo = false)
public class ListNetworkServiceProvidersCmd extends BaseListCmd {
- public static final Logger s_logger = Logger.getLogger(ListNetworkServiceProvidersCmd.class.getName());
/////////////////////////////////////////////////////
//////////////// API parameters /////////////////////
diff --git a/api/src/main/java/org/apache/cloudstack/api/command/admin/network/ListPhysicalNetworksCmd.java b/api/src/main/java/org/apache/cloudstack/api/command/admin/network/ListPhysicalNetworksCmd.java
index b8f30d3f7a11..51a6ddabd9f1 100644
--- a/api/src/main/java/org/apache/cloudstack/api/command/admin/network/ListPhysicalNetworksCmd.java
+++ b/api/src/main/java/org/apache/cloudstack/api/command/admin/network/ListPhysicalNetworksCmd.java
@@ -19,7 +19,6 @@
import java.util.ArrayList;
import java.util.List;
-import org.apache.log4j.Logger;
import org.apache.cloudstack.api.APICommand;
import org.apache.cloudstack.api.ApiConstants;
@@ -38,7 +37,6 @@
@APICommand(name = "listPhysicalNetworks", description = "Lists physical networks", responseObject = PhysicalNetworkResponse.class, since = "3.0.0",
requestHasSensitiveInfo = false, responseHasSensitiveInfo = false)
public class ListPhysicalNetworksCmd extends BaseListCmd {
- public static final Logger s_logger = Logger.getLogger(ListPhysicalNetworksCmd.class.getName());
/////////////////////////////////////////////////////
diff --git a/api/src/main/java/org/apache/cloudstack/api/command/admin/network/ListStorageNetworkIpRangeCmd.java b/api/src/main/java/org/apache/cloudstack/api/command/admin/network/ListStorageNetworkIpRangeCmd.java
index c22ec8ee19b8..556162ca360d 100644
--- a/api/src/main/java/org/apache/cloudstack/api/command/admin/network/ListStorageNetworkIpRangeCmd.java
+++ b/api/src/main/java/org/apache/cloudstack/api/command/admin/network/ListStorageNetworkIpRangeCmd.java
@@ -19,7 +19,6 @@
import java.util.ArrayList;
import java.util.List;
-import org.apache.log4j.Logger;
import org.apache.cloudstack.api.APICommand;
import org.apache.cloudstack.api.ApiConstants;
@@ -42,7 +41,6 @@
@APICommand(name = "listStorageNetworkIpRange", description = "List a storage network IP range.", responseObject = StorageNetworkIpRangeResponse.class, since = "3.0.0",
requestHasSensitiveInfo = false, responseHasSensitiveInfo = false)
public class ListStorageNetworkIpRangeCmd extends BaseListCmd {
- public static final Logger s_logger = Logger.getLogger(ListStorageNetworkIpRangeCmd.class);
String _name = "liststoragenetworkiprangeresponse";
@@ -99,7 +97,7 @@ public void execute() throws ResourceUnavailableException, InsufficientCapacityE
response.setResponseName(getCommandName());
this.setResponseObject(response);
} catch (Exception e) {
- s_logger.warn("Failed to list storage network ip range for rangeId=" + getRangeId() + " podId=" + getPodId() + " zoneId=" + getZoneId());
+ logger.warn("Failed to list storage network ip range for rangeId=" + getRangeId() + " podId=" + getPodId() + " zoneId=" + getZoneId());
throw new ServerApiException(ApiErrorCode.INTERNAL_ERROR, e.getMessage());
}
}
diff --git a/api/src/main/java/org/apache/cloudstack/api/command/admin/network/ListSupportedNetworkServicesCmd.java b/api/src/main/java/org/apache/cloudstack/api/command/admin/network/ListSupportedNetworkServicesCmd.java
index 361da2d0db44..120c6af41ad6 100644
--- a/api/src/main/java/org/apache/cloudstack/api/command/admin/network/ListSupportedNetworkServicesCmd.java
+++ b/api/src/main/java/org/apache/cloudstack/api/command/admin/network/ListSupportedNetworkServicesCmd.java
@@ -19,7 +19,6 @@
import java.util.ArrayList;
import java.util.List;
-import org.apache.log4j.Logger;
import org.apache.cloudstack.api.APICommand;
import org.apache.cloudstack.api.ApiConstants;
@@ -40,7 +39,6 @@
requestHasSensitiveInfo = false,
responseHasSensitiveInfo = false)
public class ListSupportedNetworkServicesCmd extends BaseListCmd {
- public static final Logger s_logger = Logger.getLogger(ListSupportedNetworkServicesCmd.class.getName());
@Parameter(name = ApiConstants.PROVIDER, type = CommandType.STRING, description = "network service provider name")
private String providerName;
diff --git a/api/src/main/java/org/apache/cloudstack/api/command/admin/network/MigrateNetworkCmd.java b/api/src/main/java/org/apache/cloudstack/api/command/admin/network/MigrateNetworkCmd.java
index b38e8f453b0e..8ef853b99da8 100644
--- a/api/src/main/java/org/apache/cloudstack/api/command/admin/network/MigrateNetworkCmd.java
+++ b/api/src/main/java/org/apache/cloudstack/api/command/admin/network/MigrateNetworkCmd.java
@@ -16,7 +16,6 @@
// under the License.
package org.apache.cloudstack.api.command.admin.network;
-import org.apache.log4j.Logger;
import org.apache.cloudstack.acl.RoleType;
import org.apache.cloudstack.acl.SecurityChecker.AccessType;
@@ -48,7 +47,6 @@
since = "4.11.0",
authorized = {RoleType.Admin})
public class MigrateNetworkCmd extends BaseAsyncCmd {
- public static final Logger s_logger = Logger.getLogger(MigrateNetworkCmd.class.getName());
/////////////////////////////////////////////////////
diff --git a/api/src/main/java/org/apache/cloudstack/api/command/admin/network/MigrateVPCCmd.java b/api/src/main/java/org/apache/cloudstack/api/command/admin/network/MigrateVPCCmd.java
index cca367ce7506..3e0801be40b1 100644
--- a/api/src/main/java/org/apache/cloudstack/api/command/admin/network/MigrateVPCCmd.java
+++ b/api/src/main/java/org/apache/cloudstack/api/command/admin/network/MigrateVPCCmd.java
@@ -19,7 +19,6 @@
import java.util.HashMap;
import java.util.Map;
-import org.apache.log4j.Logger;
import org.apache.cloudstack.acl.RoleType;
import org.apache.cloudstack.acl.SecurityChecker;
@@ -50,7 +49,6 @@
since = "4.11.0",
authorized = {RoleType.Admin})
public class MigrateVPCCmd extends BaseAsyncCmd {
- public static final Logger s_logger = Logger.getLogger(MigrateVPCCmd.class.getName());
/////////////////////////////////////////////////////
diff --git a/api/src/main/java/org/apache/cloudstack/api/command/admin/network/ReleaseDedicatedGuestVlanRangeCmd.java b/api/src/main/java/org/apache/cloudstack/api/command/admin/network/ReleaseDedicatedGuestVlanRangeCmd.java
index 916357920a16..b3125ec36680 100644
--- a/api/src/main/java/org/apache/cloudstack/api/command/admin/network/ReleaseDedicatedGuestVlanRangeCmd.java
+++ b/api/src/main/java/org/apache/cloudstack/api/command/admin/network/ReleaseDedicatedGuestVlanRangeCmd.java
@@ -17,7 +17,6 @@
package org.apache.cloudstack.api.command.admin.network;
-import org.apache.log4j.Logger;
import org.apache.cloudstack.api.APICommand;
import org.apache.cloudstack.api.ApiCommandResourceType;
@@ -36,7 +35,6 @@
@APICommand(name = "releaseDedicatedGuestVlanRange", description = "Releases a dedicated guest vlan range to the system", responseObject = SuccessResponse.class,
requestHasSensitiveInfo = false, responseHasSensitiveInfo = false)
public class ReleaseDedicatedGuestVlanRangeCmd extends BaseAsyncCmd {
- public static final Logger s_logger = Logger.getLogger(ReleaseDedicatedGuestVlanRangeCmd.class.getName());
// ///////////////////////////////////////////////////
// ////////////// API parameters /////////////////////
diff --git a/api/src/main/java/org/apache/cloudstack/api/command/admin/network/ReleaseDedicatedIpv4SubnetForZoneCmd.java b/api/src/main/java/org/apache/cloudstack/api/command/admin/network/ReleaseDedicatedIpv4SubnetForZoneCmd.java
new file mode 100644
index 000000000000..3e151b9b58f4
--- /dev/null
+++ b/api/src/main/java/org/apache/cloudstack/api/command/admin/network/ReleaseDedicatedIpv4SubnetForZoneCmd.java
@@ -0,0 +1,88 @@
+// Licensed to the Apache Software Foundation (ASF) under one
+// or more contributor license agreements. See the NOTICE file
+// distributed with this work for additional information
+// regarding copyright ownership. The ASF licenses this file
+// to you under the Apache License, Version 2.0 (the
+// "License"); you may not use this file except in compliance
+// with the License. You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing,
+// software distributed under the License is distributed on an
+// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+// KIND, either express or implied. See the License for the
+// specific language governing permissions and limitations
+// under the License.
+
+package org.apache.cloudstack.api.command.admin.network;
+
+import org.apache.cloudstack.acl.RoleType;
+import org.apache.cloudstack.api.APICommand;
+import org.apache.cloudstack.api.ApiConstants;
+import org.apache.cloudstack.api.ApiErrorCode;
+import org.apache.cloudstack.api.BaseAsyncCmd;
+import org.apache.cloudstack.api.Parameter;
+import org.apache.cloudstack.api.ServerApiException;
+import org.apache.cloudstack.api.response.DataCenterIpv4SubnetResponse;
+import org.apache.cloudstack.datacenter.DataCenterIpv4GuestSubnet;
+
+import com.cloud.event.EventTypes;
+import com.cloud.exception.InvalidParameterValueException;
+import com.cloud.user.Account;
+import com.cloud.utils.exception.CloudRuntimeException;
+
+@APICommand(name = "releaseIpv4SubnetForZone",
+ description = "Releases an existing dedicated IPv4 subnet for a zone.",
+ responseObject = DataCenterIpv4SubnetResponse.class,
+ since = "4.20.0",
+ requestHasSensitiveInfo = false,
+ responseHasSensitiveInfo = false,
+ authorized = {RoleType.Admin})
+public class ReleaseDedicatedIpv4SubnetForZoneCmd extends BaseAsyncCmd {
+
+ /////////////////////////////////////////////////////
+ //////////////// API parameters /////////////////////
+ /////////////////////////////////////////////////////
+
+ @Parameter(name = ApiConstants.ID, type = CommandType.UUID, entityType = DataCenterIpv4SubnetResponse.class, required = true, description = "Id of the guest network IPv4 subnet")
+ private Long id;
+
+ public Long getId() {
+ return id;
+ }
+
+ @Override
+ public String getEventType() {
+ return EventTypes.EVENT_ZONE_IP4_SUBNET_RELEASE;
+ }
+
+ @Override
+ public String getEventDescription() {
+ return "Releasing a dedicated zone IPv4 subnet " + getId();
+ }
+
+ @Override
+ public void execute() {
+ try {
+ DataCenterIpv4GuestSubnet result = routedIpv4Manager.releaseDedicatedDataCenterIpv4GuestSubnet(this);
+ if (result != null) {
+ DataCenterIpv4SubnetResponse response = routedIpv4Manager.createDataCenterIpv4SubnetResponse(result);
+ response.setResponseName(getCommandName());
+ this.setResponseObject(response);
+ } else {
+ throw new ServerApiException(ApiErrorCode.INTERNAL_ERROR, "Failed to release guest network IPv4 subnet:" + getId());
+ }
+ } catch (InvalidParameterValueException ex) {
+ throw new ServerApiException(ApiErrorCode.PARAM_ERROR, ex.getMessage());
+ } catch (CloudRuntimeException ex) {
+ throw new ServerApiException(ApiErrorCode.INTERNAL_ERROR, ex.getMessage());
+ }
+
+ }
+
+ @Override
+ public long getEntityOwnerId() {
+ return Account.ACCOUNT_ID_SYSTEM;
+ }
+}
diff --git a/api/src/main/java/org/apache/cloudstack/api/command/admin/network/UpdateIpv4SubnetForZoneCmd.java b/api/src/main/java/org/apache/cloudstack/api/command/admin/network/UpdateIpv4SubnetForZoneCmd.java
new file mode 100644
index 000000000000..da7a23f50d9c
--- /dev/null
+++ b/api/src/main/java/org/apache/cloudstack/api/command/admin/network/UpdateIpv4SubnetForZoneCmd.java
@@ -0,0 +1,98 @@
+// Licensed to the Apache Software Foundation (ASF) under one
+// or more contributor license agreements. See the NOTICE file
+// distributed with this work for additional information
+// regarding copyright ownership. The ASF licenses this file
+// to you under the Apache License, Version 2.0 (the
+// "License"); you may not use this file except in compliance
+// with the License. You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing,
+// software distributed under the License is distributed on an
+// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+// KIND, either express or implied. See the License for the
+// specific language governing permissions and limitations
+// under the License.
+
+package org.apache.cloudstack.api.command.admin.network;
+
+import org.apache.cloudstack.acl.RoleType;
+import org.apache.cloudstack.api.APICommand;
+import org.apache.cloudstack.api.ApiConstants;
+import org.apache.cloudstack.api.ApiErrorCode;
+import org.apache.cloudstack.api.BaseAsyncCmd;
+import org.apache.cloudstack.api.Parameter;
+import org.apache.cloudstack.api.ServerApiException;
+import org.apache.cloudstack.api.response.DataCenterIpv4SubnetResponse;
+import org.apache.cloudstack.datacenter.DataCenterIpv4GuestSubnet;
+
+import com.cloud.event.EventTypes;
+import com.cloud.exception.InvalidParameterValueException;
+import com.cloud.user.Account;
+import com.cloud.utils.exception.CloudRuntimeException;
+
+@APICommand(name = "updateIpv4SubnetForZone",
+ description = "Updates an existing IPv4 subnet for a zone.",
+ responseObject = DataCenterIpv4SubnetResponse.class,
+ since = "4.20.0",
+ requestHasSensitiveInfo = false,
+ responseHasSensitiveInfo = false,
+ authorized = {RoleType.Admin})
+public class UpdateIpv4SubnetForZoneCmd extends BaseAsyncCmd {
+
+ /////////////////////////////////////////////////////
+ //////////////// API parameters /////////////////////
+ /////////////////////////////////////////////////////
+
+ @Parameter(name = ApiConstants.ID, type = CommandType.UUID, entityType = DataCenterIpv4SubnetResponse.class, required = true, description = "Id of the guest network IPv4 subnet")
+ private Long id;
+
+ @Parameter(name = ApiConstants.SUBNET,
+ type = CommandType.STRING,
+ required = true,
+ description = "The new CIDR of the IPv4 subnet.")
+ private String subnet;
+
+ public Long getId() {
+ return id;
+ }
+
+ public String getSubnet() {
+ return subnet;
+ }
+
+ @Override
+ public String getEventType() {
+ return EventTypes.EVENT_ZONE_IP4_SUBNET_UPDATE;
+ }
+
+ @Override
+ public String getEventDescription() {
+ return "Updating zone IPv4 subnet " + getId();
+ }
+
+ @Override
+ public void execute() {
+ try {
+ DataCenterIpv4GuestSubnet result = routedIpv4Manager.updateDataCenterIpv4GuestSubnet(this);
+ if (result != null) {
+ DataCenterIpv4SubnetResponse response = routedIpv4Manager.createDataCenterIpv4SubnetResponse(result);
+ response.setResponseName(getCommandName());
+ this.setResponseObject(response);
+ } else {
+ throw new ServerApiException(ApiErrorCode.INTERNAL_ERROR, "Failed to update guest network IPv4 subnet:" + getId());
+ }
+ } catch (InvalidParameterValueException ex) {
+ throw new ServerApiException(ApiErrorCode.PARAM_ERROR, ex.getMessage());
+ } catch (CloudRuntimeException ex) {
+ throw new ServerApiException(ApiErrorCode.INTERNAL_ERROR, ex.getMessage());
+ }
+
+ }
+
+ @Override
+ public long getEntityOwnerId() {
+ return Account.ACCOUNT_ID_SYSTEM;
+ }
+}
diff --git a/api/src/main/java/org/apache/cloudstack/api/command/admin/network/UpdateNetworkOfferingCmd.java b/api/src/main/java/org/apache/cloudstack/api/command/admin/network/UpdateNetworkOfferingCmd.java
index e8f9e5f8cfe7..75fb45e1f115 100644
--- a/api/src/main/java/org/apache/cloudstack/api/command/admin/network/UpdateNetworkOfferingCmd.java
+++ b/api/src/main/java/org/apache/cloudstack/api/command/admin/network/UpdateNetworkOfferingCmd.java
@@ -28,7 +28,6 @@
import org.apache.cloudstack.api.ServerApiException;
import org.apache.cloudstack.api.response.NetworkOfferingResponse;
import org.apache.commons.lang3.StringUtils;
-import org.apache.log4j.Logger;
import com.cloud.dc.DataCenter;
import com.cloud.domain.Domain;
@@ -39,7 +38,6 @@
@APICommand(name = "updateNetworkOffering", description = "Updates a network offering.", responseObject = NetworkOfferingResponse.class,
requestHasSensitiveInfo = false, responseHasSensitiveInfo = false)
public class UpdateNetworkOfferingCmd extends BaseCmd {
- public static final Logger s_logger = Logger.getLogger(UpdateNetworkOfferingCmd.class.getName());
/////////////////////////////////////////////////////
//////////////// API parameters /////////////////////
diff --git a/api/src/main/java/org/apache/cloudstack/api/command/admin/network/UpdateNetworkServiceProviderCmd.java b/api/src/main/java/org/apache/cloudstack/api/command/admin/network/UpdateNetworkServiceProviderCmd.java
index 1bbf21b85ed4..b4801d9368eb 100644
--- a/api/src/main/java/org/apache/cloudstack/api/command/admin/network/UpdateNetworkServiceProviderCmd.java
+++ b/api/src/main/java/org/apache/cloudstack/api/command/admin/network/UpdateNetworkServiceProviderCmd.java
@@ -18,7 +18,6 @@
import java.util.List;
-import org.apache.log4j.Logger;
import org.apache.cloudstack.api.APICommand;
import org.apache.cloudstack.api.ApiCommandResourceType;
@@ -40,7 +39,6 @@
requestHasSensitiveInfo = false,
responseHasSensitiveInfo = false)
public class UpdateNetworkServiceProviderCmd extends BaseAsyncCmd {
- public static final Logger s_logger = Logger.getLogger(UpdateNetworkServiceProviderCmd.class.getName());
/////////////////////////////////////////////////////
diff --git a/api/src/main/java/org/apache/cloudstack/api/command/admin/network/UpdatePhysicalNetworkCmd.java b/api/src/main/java/org/apache/cloudstack/api/command/admin/network/UpdatePhysicalNetworkCmd.java
index 24fd93f49d1e..162116470bd5 100644
--- a/api/src/main/java/org/apache/cloudstack/api/command/admin/network/UpdatePhysicalNetworkCmd.java
+++ b/api/src/main/java/org/apache/cloudstack/api/command/admin/network/UpdatePhysicalNetworkCmd.java
@@ -18,7 +18,6 @@
import java.util.List;
-import org.apache.log4j.Logger;
import org.apache.cloudstack.api.APICommand;
import org.apache.cloudstack.api.ApiCommandResourceType;
@@ -34,7 +33,6 @@
@APICommand(name = "updatePhysicalNetwork", description = "Updates a physical network", responseObject = PhysicalNetworkResponse.class, since = "3.0.0",
requestHasSensitiveInfo = false, responseHasSensitiveInfo = false)
public class UpdatePhysicalNetworkCmd extends BaseAsyncCmd {
- public static final Logger s_logger = Logger.getLogger(UpdatePhysicalNetworkCmd.class.getName());
/////////////////////////////////////////////////////
diff --git a/api/src/main/java/org/apache/cloudstack/api/command/admin/network/UpdatePodManagementNetworkIpRangeCmd.java b/api/src/main/java/org/apache/cloudstack/api/command/admin/network/UpdatePodManagementNetworkIpRangeCmd.java
index 4e880f122d85..6f90a070f0d1 100644
--- a/api/src/main/java/org/apache/cloudstack/api/command/admin/network/UpdatePodManagementNetworkIpRangeCmd.java
+++ b/api/src/main/java/org/apache/cloudstack/api/command/admin/network/UpdatePodManagementNetworkIpRangeCmd.java
@@ -26,7 +26,6 @@
import org.apache.cloudstack.api.ServerApiException;
import org.apache.cloudstack.api.response.PodResponse;
import org.apache.cloudstack.api.response.SuccessResponse;
-import org.apache.log4j.Logger;
import com.cloud.event.EventTypes;
import com.cloud.exception.ConcurrentOperationException;
@@ -42,7 +41,6 @@
authorized = {RoleType.Admin})
public class UpdatePodManagementNetworkIpRangeCmd extends BaseAsyncCmd {
- public static final Logger s_logger = Logger.getLogger(UpdatePodManagementNetworkIpRangeCmd.class);
/////////////////////////////////////////////////////
@@ -138,10 +136,10 @@ public void execute() {
SuccessResponse response = new SuccessResponse(getCommandName());
this.setResponseObject(response);
} catch (ConcurrentOperationException ex) {
- s_logger.warn("Exception: ", ex);
+ logger.warn("Exception: ", ex);
throw new ServerApiException(ApiErrorCode.INTERNAL_ERROR, ex.getMessage());
} catch (Exception e) {
- s_logger.warn("Failed to update pod management IP range " + getNewStartIP() + "-" + getNewEndIP() + " of Pod: " + getPodId(), e);
+ logger.warn("Failed to update pod management IP range " + getNewStartIP() + "-" + getNewEndIP() + " of Pod: " + getPodId(), e);
throw new ServerApiException(ApiErrorCode.INTERNAL_ERROR, e.getMessage());
}
}
diff --git a/api/src/main/java/org/apache/cloudstack/api/command/admin/network/UpdateStorageNetworkIpRangeCmd.java b/api/src/main/java/org/apache/cloudstack/api/command/admin/network/UpdateStorageNetworkIpRangeCmd.java
index 459c89debc9a..65e2437417de 100644
--- a/api/src/main/java/org/apache/cloudstack/api/command/admin/network/UpdateStorageNetworkIpRangeCmd.java
+++ b/api/src/main/java/org/apache/cloudstack/api/command/admin/network/UpdateStorageNetworkIpRangeCmd.java
@@ -16,7 +16,6 @@
// under the License.
package org.apache.cloudstack.api.command.admin.network;
-import org.apache.log4j.Logger;
import org.apache.cloudstack.api.APICommand;
import org.apache.cloudstack.api.ApiConstants;
@@ -41,7 +40,6 @@
requestHasSensitiveInfo = false,
responseHasSensitiveInfo = false)
public class UpdateStorageNetworkIpRangeCmd extends BaseAsyncCmd {
- public static final Logger s_logger = Logger.getLogger(UpdateStorageNetworkIpRangeCmd.class);
/////////////////////////////////////////////////////
//////////////// API parameters /////////////////////
@@ -107,7 +105,7 @@ public void execute() throws ResourceUnavailableException, InsufficientCapacityE
response.setResponseName(getCommandName());
this.setResponseObject(response);
} catch (Exception e) {
- s_logger.warn("Update storage network IP range failed", e);
+ logger.warn("Update storage network IP range failed", e);
throw new ServerApiException(ApiErrorCode.INTERNAL_ERROR, e.getMessage());
}
diff --git a/api/src/main/java/org/apache/cloudstack/api/command/admin/network/bgp/ChangeBgpPeersForNetworkCmd.java b/api/src/main/java/org/apache/cloudstack/api/command/admin/network/bgp/ChangeBgpPeersForNetworkCmd.java
new file mode 100644
index 000000000000..1d6bffca342e
--- /dev/null
+++ b/api/src/main/java/org/apache/cloudstack/api/command/admin/network/bgp/ChangeBgpPeersForNetworkCmd.java
@@ -0,0 +1,109 @@
+// Licensed to the Apache Software Foundation (ASF) under one
+// or more contributor license agreements. See the NOTICE file
+// distributed with this work for additional information
+// regarding copyright ownership. The ASF licenses this file
+// to you under the Apache License, Version 2.0 (the
+// "License"); you may not use this file except in compliance
+// with the License. You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing,
+// software distributed under the License is distributed on an
+// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+// KIND, either express or implied. See the License for the
+// specific language governing permissions and limitations
+// under the License.
+
+package org.apache.cloudstack.api.command.admin.network.bgp;
+
+import org.apache.cloudstack.acl.RoleType;
+import org.apache.cloudstack.api.APICommand;
+import org.apache.cloudstack.api.ApiArgValidator;
+import org.apache.cloudstack.api.ApiConstants;
+import org.apache.cloudstack.api.ApiErrorCode;
+import org.apache.cloudstack.api.BaseAsyncCmd;
+import org.apache.cloudstack.api.Parameter;
+import org.apache.cloudstack.api.ServerApiException;
+import org.apache.cloudstack.api.command.admin.AdminCmd;
+import org.apache.cloudstack.api.response.BgpPeerResponse;
+import org.apache.cloudstack.api.response.NetworkResponse;
+
+import com.cloud.event.EventTypes;
+import com.cloud.exception.InvalidParameterValueException;
+import com.cloud.network.Network;
+import com.cloud.user.Account;
+import com.cloud.utils.exception.CloudRuntimeException;
+
+import java.util.List;
+
+@APICommand(name = "changeBgpPeersForNetwork",
+ description = "Change the BGP peers for a network.",
+ responseObject = BgpPeerResponse.class,
+ since = "4.20.0",
+ requestHasSensitiveInfo = false,
+ responseHasSensitiveInfo = false,
+ authorized = {RoleType.Admin})
+public class ChangeBgpPeersForNetworkCmd extends BaseAsyncCmd implements AdminCmd {
+
+ /////////////////////////////////////////////////////
+ //////////////// API parameters /////////////////////
+ /////////////////////////////////////////////////////
+
+ @Parameter(name = ApiConstants.NETWORK_ID,
+ type = CommandType.UUID,
+ entityType = NetworkResponse.class,
+ required = true,
+ description = "UUID of the network which the Bgp Peers are associated to.",
+ validations = {ApiArgValidator.PositiveNumber})
+ private Long networkId;
+
+ @Parameter(name = ApiConstants.BGP_PEER_IDS,
+ type = CommandType.LIST,
+ collectionType = CommandType.UUID,
+ entityType = BgpPeerResponse.class,
+ description = "Ids of the Bgp Peer. If it is empty, all BGP peers will be unlinked.")
+ private List bgpPeerIds;
+
+ public Long getNetworkId() {
+ return networkId;
+ }
+
+ public List getBgpPeerIds() {
+ return bgpPeerIds;
+ }
+
+ @Override
+ public String getEventType() {
+ return EventTypes.EVENT_NETWORK_BGP_PEER_UPDATE;
+ }
+
+ @Override
+ public String getEventDescription() {
+ return "Changing Bgp Peers for network " + getNetworkId();
+ }
+
+ @Override
+ public void execute() {
+ try {
+ Network result = routedIpv4Manager.changeBgpPeersForNetwork(this);
+ if (result != null) {
+ NetworkResponse response = _responseGenerator.createNetworkResponse(getResponseView(), result);
+ response.setResponseName(getCommandName());
+ setResponseObject(response);
+ } else {
+ throw new ServerApiException(ApiErrorCode.INTERNAL_ERROR, "Failed to change BGP Peers for network");
+ }
+ } catch (InvalidParameterValueException ex) {
+ throw new ServerApiException(ApiErrorCode.PARAM_ERROR, ex.getMessage());
+ } catch (CloudRuntimeException ex) {
+ throw new ServerApiException(ApiErrorCode.INTERNAL_ERROR, ex.getMessage());
+ }
+
+ }
+
+ @Override
+ public long getEntityOwnerId() {
+ return Account.ACCOUNT_ID_SYSTEM;
+ }
+}
diff --git a/api/src/main/java/org/apache/cloudstack/api/command/admin/network/bgp/ChangeBgpPeersForVpcCmd.java b/api/src/main/java/org/apache/cloudstack/api/command/admin/network/bgp/ChangeBgpPeersForVpcCmd.java
new file mode 100644
index 000000000000..0c89f3f1d43c
--- /dev/null
+++ b/api/src/main/java/org/apache/cloudstack/api/command/admin/network/bgp/ChangeBgpPeersForVpcCmd.java
@@ -0,0 +1,109 @@
+// Licensed to the Apache Software Foundation (ASF) under one
+// or more contributor license agreements. See the NOTICE file
+// distributed with this work for additional information
+// regarding copyright ownership. The ASF licenses this file
+// to you under the Apache License, Version 2.0 (the
+// "License"); you may not use this file except in compliance
+// with the License. You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing,
+// software distributed under the License is distributed on an
+// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+// KIND, either express or implied. See the License for the
+// specific language governing permissions and limitations
+// under the License.
+
+package org.apache.cloudstack.api.command.admin.network.bgp;
+
+import org.apache.cloudstack.acl.RoleType;
+import org.apache.cloudstack.api.APICommand;
+import org.apache.cloudstack.api.ApiArgValidator;
+import org.apache.cloudstack.api.ApiConstants;
+import org.apache.cloudstack.api.ApiErrorCode;
+import org.apache.cloudstack.api.BaseAsyncCmd;
+import org.apache.cloudstack.api.Parameter;
+import org.apache.cloudstack.api.ServerApiException;
+import org.apache.cloudstack.api.command.admin.AdminCmd;
+import org.apache.cloudstack.api.response.BgpPeerResponse;
+import org.apache.cloudstack.api.response.VpcResponse;
+
+import com.cloud.event.EventTypes;
+import com.cloud.exception.InvalidParameterValueException;
+import com.cloud.network.vpc.Vpc;
+import com.cloud.user.Account;
+import com.cloud.utils.exception.CloudRuntimeException;
+
+import java.util.List;
+
+@APICommand(name = "changeBgpPeersForVpc",
+ description = "Change the BGP peers for a VPC.",
+ responseObject = BgpPeerResponse.class,
+ since = "4.20.0",
+ requestHasSensitiveInfo = false,
+ responseHasSensitiveInfo = false,
+ authorized = {RoleType.Admin})
+public class ChangeBgpPeersForVpcCmd extends BaseAsyncCmd implements AdminCmd {
+
+ /////////////////////////////////////////////////////
+ //////////////// API parameters /////////////////////
+ /////////////////////////////////////////////////////
+
+ @Parameter(name = ApiConstants.VPC_ID,
+ type = CommandType.UUID,
+ entityType = VpcResponse.class,
+ required = true,
+ description = "UUID of the VPC which the Bgp Peers are associated to.",
+ validations = {ApiArgValidator.PositiveNumber})
+ private Long vpcId;
+
+ @Parameter(name = ApiConstants.BGP_PEER_IDS,
+ type = CommandType.LIST,
+ collectionType = CommandType.UUID,
+ entityType = BgpPeerResponse.class,
+ description = "Ids of the Bgp Peer. If it is empty, all BGP peers will be unlinked.")
+ private List bgpPeerIds;
+
+ public Long getVpcId() {
+ return vpcId;
+ }
+
+ public List getBgpPeerIds() {
+ return bgpPeerIds;
+ }
+
+ @Override
+ public String getEventType() {
+ return EventTypes.EVENT_VPC_BGP_PEER_UPDATE;
+ }
+
+ @Override
+ public String getEventDescription() {
+ return "Changing Bgp Peers for VPC " + getVpcId();
+ }
+
+ @Override
+ public void execute() {
+ try {
+ Vpc result = routedIpv4Manager.changeBgpPeersForVpc(this);
+ if (result != null) {
+ VpcResponse response = _responseGenerator.createVpcResponse(getResponseView(), result);
+ response.setResponseName(getCommandName());
+ setResponseObject(response);
+ } else {
+ throw new ServerApiException(ApiErrorCode.INTERNAL_ERROR, "Failed to change BGP Peers for vpc");
+ }
+ } catch (InvalidParameterValueException ex) {
+ throw new ServerApiException(ApiErrorCode.PARAM_ERROR, ex.getMessage());
+ } catch (CloudRuntimeException ex) {
+ throw new ServerApiException(ApiErrorCode.INTERNAL_ERROR, ex.getMessage());
+ }
+
+ }
+
+ @Override
+ public long getEntityOwnerId() {
+ return Account.ACCOUNT_ID_SYSTEM;
+ }
+}
diff --git a/api/src/main/java/org/apache/cloudstack/api/command/admin/network/bgp/CreateBgpPeerCmd.java b/api/src/main/java/org/apache/cloudstack/api/command/admin/network/bgp/CreateBgpPeerCmd.java
new file mode 100644
index 000000000000..80642124938a
--- /dev/null
+++ b/api/src/main/java/org/apache/cloudstack/api/command/admin/network/bgp/CreateBgpPeerCmd.java
@@ -0,0 +1,168 @@
+// Licensed to the Apache Software Foundation (ASF) under one
+// or more contributor license agreements. See the NOTICE file
+// distributed with this work for additional information
+// regarding copyright ownership. The ASF licenses this file
+// to you under the Apache License, Version 2.0 (the
+// "License"); you may not use this file except in compliance
+// with the License. You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing,
+// software distributed under the License is distributed on an
+// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+// KIND, either express or implied. See the License for the
+// specific language governing permissions and limitations
+// under the License.
+
+package org.apache.cloudstack.api.command.admin.network.bgp;
+
+import org.apache.cloudstack.acl.RoleType;
+import org.apache.cloudstack.api.APICommand;
+import org.apache.cloudstack.api.ApiArgValidator;
+import org.apache.cloudstack.api.ApiConstants;
+import org.apache.cloudstack.api.ApiErrorCode;
+import org.apache.cloudstack.api.BaseAsyncCmd;
+import org.apache.cloudstack.api.Parameter;
+import org.apache.cloudstack.api.ServerApiException;
+import org.apache.cloudstack.api.response.BgpPeerResponse;
+import org.apache.cloudstack.api.response.DomainResponse;
+import org.apache.cloudstack.api.response.ProjectResponse;
+import org.apache.cloudstack.api.response.ZoneResponse;
+import org.apache.cloudstack.network.BgpPeer;
+import org.apache.commons.collections.MapUtils;
+
+import com.cloud.event.EventTypes;
+import com.cloud.user.Account;
+
+import java.util.Collection;
+import java.util.Map;
+
+@APICommand(name = "createBgpPeer",
+ description = "Creates a Bgp Peer for a zone.",
+ responseObject = BgpPeerResponse.class,
+ since = "4.20.0",
+ requestHasSensitiveInfo = true,
+ responseHasSensitiveInfo = false,
+ authorized = {RoleType.Admin})
+public class CreateBgpPeerCmd extends BaseAsyncCmd {
+
+
+ /////////////////////////////////////////////////////
+ //////////////// API parameters /////////////////////
+ /////////////////////////////////////////////////////
+ @Parameter(name = ApiConstants.ZONE_ID,
+ type = CommandType.UUID,
+ entityType = ZoneResponse.class,
+ required = true,
+ description = "UUID of the zone which the Bgp Peer belongs to.",
+ validations = {ApiArgValidator.PositiveNumber})
+ private Long zoneId;
+
+ @Parameter(name = ApiConstants.IP_ADDRESS,
+ type = CommandType.STRING,
+ description = "The IPv4 address of the Bgp Peer.")
+ private String ip4Address;
+
+ @Parameter(name = ApiConstants.IP6_ADDRESS,
+ type = CommandType.STRING,
+ description = "The IPv6 address of the Bgp Peer.")
+ private String ip6Address;
+
+ @Parameter(name = ApiConstants.AS_NUMBER,
+ type = CommandType.LONG,
+ required = true,
+ description = "The AS number of the Bgp Peer.")
+ private Long asNumber;
+
+ @Parameter(name = ApiConstants.PASSWORD,
+ type = CommandType.STRING,
+ description = "The password of the Bgp Peer.")
+ private String password;
+
+ @Parameter(name = ApiConstants.ACCOUNT, type = CommandType.STRING, description = "account who will own the Bgp Peer")
+ private String accountName;
+
+ @Parameter(name = ApiConstants.PROJECT_ID, type = CommandType.UUID, entityType = ProjectResponse.class, description = "project who will own the Bgp Peer")
+ private Long projectId;
+
+ @Parameter(name = ApiConstants.DOMAIN_ID, type = CommandType.UUID, entityType = DomainResponse.class, description = "domain ID of the account owning the Bgp Peer")
+ private Long domainId;
+
+ @Parameter(name = ApiConstants.DETAILS, type = CommandType.MAP,
+ description = "BGP peer details in key/value pairs.")
+ protected Map details;
+
+ /////////////////////////////////////////////////////
+ /////////////////// Accessors ///////////////////////
+ /////////////////////////////////////////////////////
+
+
+ public Long getZoneId() {
+ return zoneId;
+ }
+
+ public String getIp4Address() {
+ return ip4Address;
+ }
+
+ public String getIp6Address() {
+ return ip6Address;
+ }
+
+ public String getPassword() {
+ return password;
+ }
+
+ public Long getAsNumber() {
+ return asNumber;
+ }
+
+ public String getAccountName() {
+ return accountName;
+ }
+
+ public Long getProjectId() {
+ return projectId;
+ }
+
+ public Long getDomainId() {
+ return domainId;
+ }
+
+ public Map getDetails() {
+ if (MapUtils.isEmpty(details)) {
+ return null;
+ }
+ Collection paramsCollection = this.details.values();
+ return (Map) (paramsCollection.toArray())[0];
+ }
+
+ @Override
+ public String getEventType() {
+ return EventTypes.EVENT_BGP_PEER_CREATE;
+ }
+
+ @Override
+ public String getEventDescription() {
+ return "Creating Bgp Peer " + getAsNumber() + " for zone=" + getZoneId();
+ }
+
+ @Override
+ public void execute() {
+ BgpPeer result = routedIpv4Manager.createBgpPeer(this);
+ if (result != null) {
+ BgpPeerResponse response = routedIpv4Manager.createBgpPeerResponse(result);
+ response.setResponseName(getCommandName());
+ this.setResponseObject(response);
+ } else {
+ throw new ServerApiException(ApiErrorCode.INTERNAL_ERROR, "Failed to create Bgp Peer.");
+ }
+ }
+
+ @Override
+ public long getEntityOwnerId() {
+ return Account.ACCOUNT_ID_SYSTEM;
+ }
+
+}
diff --git a/api/src/main/java/org/apache/cloudstack/api/command/admin/network/bgp/DedicateBgpPeerCmd.java b/api/src/main/java/org/apache/cloudstack/api/command/admin/network/bgp/DedicateBgpPeerCmd.java
new file mode 100644
index 000000000000..ec3d0ea11629
--- /dev/null
+++ b/api/src/main/java/org/apache/cloudstack/api/command/admin/network/bgp/DedicateBgpPeerCmd.java
@@ -0,0 +1,111 @@
+// Licensed to the Apache Software Foundation (ASF) under one
+// or more contributor license agreements. See the NOTICE file
+// distributed with this work for additional information
+// regarding copyright ownership. The ASF licenses this file
+// to you under the Apache License, Version 2.0 (the
+// "License"); you may not use this file except in compliance
+// with the License. You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing,
+// software distributed under the License is distributed on an
+// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+// KIND, either express or implied. See the License for the
+// specific language governing permissions and limitations
+// under the License.
+
+package org.apache.cloudstack.api.command.admin.network.bgp;
+
+import org.apache.cloudstack.acl.RoleType;
+import org.apache.cloudstack.api.APICommand;
+import org.apache.cloudstack.api.ApiConstants;
+import org.apache.cloudstack.api.ApiErrorCode;
+import org.apache.cloudstack.api.BaseAsyncCmd;
+import org.apache.cloudstack.api.Parameter;
+import org.apache.cloudstack.api.ServerApiException;
+import org.apache.cloudstack.api.response.BgpPeerResponse;
+import org.apache.cloudstack.api.response.DomainResponse;
+import org.apache.cloudstack.api.response.ProjectResponse;
+import org.apache.cloudstack.network.BgpPeer;
+
+import com.cloud.event.EventTypes;
+import com.cloud.exception.InvalidParameterValueException;
+import com.cloud.user.Account;
+import com.cloud.utils.exception.CloudRuntimeException;
+
+@APICommand(name = "dedicateBgpPeer",
+ description = "Dedicates an existing Bgp Peer to an account or a domain.",
+ responseObject = BgpPeerResponse.class,
+ since = "4.20.0",
+ requestHasSensitiveInfo = false,
+ responseHasSensitiveInfo = false,
+ authorized = {RoleType.Admin})
+public class DedicateBgpPeerCmd extends BaseAsyncCmd {
+
+ /////////////////////////////////////////////////////
+ //////////////// API parameters /////////////////////
+ /////////////////////////////////////////////////////
+
+ @Parameter(name = ApiConstants.ID, type = CommandType.UUID, entityType = BgpPeerResponse.class, required = true, description = "Id of the Bgp Peer")
+ private Long id;
+
+ @Parameter(name = ApiConstants.ACCOUNT, type = CommandType.STRING, description = "account who will own the Bgp Peer")
+ private String accountName;
+
+ @Parameter(name = ApiConstants.PROJECT_ID, type = CommandType.UUID, entityType = ProjectResponse.class, description = "project who will own the Bgp Peer")
+ private Long projectId;
+
+ @Parameter(name = ApiConstants.DOMAIN_ID, type = CommandType.UUID, entityType = DomainResponse.class, description = "domain ID of the account owning the Bgp Peer")
+ private Long domainId;
+
+ public Long getId() {
+ return id;
+ }
+
+ public String getAccountName() {
+ return accountName;
+ }
+
+ public Long getProjectId() {
+ return projectId;
+ }
+
+ public Long getDomainId() {
+ return domainId;
+ }
+
+ @Override
+ public String getEventType() {
+ return EventTypes.EVENT_BGP_PEER_DEDICATE;
+ }
+
+ @Override
+ public String getEventDescription() {
+ return "Dedicating Bgp Peer " + getId();
+ }
+
+ @Override
+ public void execute() {
+ try {
+ BgpPeer result = routedIpv4Manager.dedicateBgpPeer(this);
+ if (result != null) {
+ BgpPeerResponse response = routedIpv4Manager.createBgpPeerResponse(result);
+ response.setResponseName(getCommandName());
+ this.setResponseObject(response);
+ } else {
+ throw new ServerApiException(ApiErrorCode.INTERNAL_ERROR, "Failed to dedicate Bgp Peer:" + getId());
+ }
+ } catch (InvalidParameterValueException ex) {
+ throw new ServerApiException(ApiErrorCode.PARAM_ERROR, ex.getMessage());
+ } catch (CloudRuntimeException ex) {
+ throw new ServerApiException(ApiErrorCode.INTERNAL_ERROR, ex.getMessage());
+ }
+
+ }
+
+ @Override
+ public long getEntityOwnerId() {
+ return Account.ACCOUNT_ID_SYSTEM;
+ }
+}
diff --git a/api/src/main/java/org/apache/cloudstack/api/command/admin/network/bgp/DeleteBgpPeerCmd.java b/api/src/main/java/org/apache/cloudstack/api/command/admin/network/bgp/DeleteBgpPeerCmd.java
new file mode 100644
index 000000000000..a01711efa44f
--- /dev/null
+++ b/api/src/main/java/org/apache/cloudstack/api/command/admin/network/bgp/DeleteBgpPeerCmd.java
@@ -0,0 +1,88 @@
+// Licensed to the Apache Software Foundation (ASF) under one
+// or more contributor license agreements. See the NOTICE file
+// distributed with this work for additional information
+// regarding copyright ownership. The ASF licenses this file
+// to you under the Apache License, Version 2.0 (the
+// "License"); you may not use this file except in compliance
+// with the License. You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing,
+// software distributed under the License is distributed on an
+// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+// KIND, either express or implied. See the License for the
+// specific language governing permissions and limitations
+// under the License.
+
+package org.apache.cloudstack.api.command.admin.network.bgp;
+
+import org.apache.cloudstack.acl.RoleType;
+import org.apache.cloudstack.api.APICommand;
+import org.apache.cloudstack.api.ApiConstants;
+import org.apache.cloudstack.api.ApiErrorCode;
+import org.apache.cloudstack.api.BaseAsyncCmd;
+import org.apache.cloudstack.api.Parameter;
+import org.apache.cloudstack.api.ServerApiException;
+import org.apache.cloudstack.api.response.BgpPeerResponse;
+import org.apache.cloudstack.api.response.SuccessResponse;
+
+import com.cloud.event.EventTypes;
+import com.cloud.exception.InvalidParameterValueException;
+import com.cloud.user.Account;
+import com.cloud.utils.exception.CloudRuntimeException;
+
+@APICommand(name = "deleteBgpPeer",
+ description = "Deletes an existing Bgp Peer.",
+ responseObject = SuccessResponse.class,
+ since = "4.20.0",
+ requestHasSensitiveInfo = false,
+ responseHasSensitiveInfo = false,
+ authorized = {RoleType.Admin})
+public class DeleteBgpPeerCmd extends BaseAsyncCmd {
+
+ /////////////////////////////////////////////////////
+ //////////////// API parameters /////////////////////
+ /////////////////////////////////////////////////////
+
+ @Parameter(name = ApiConstants.ID, type = CommandType.UUID, entityType = BgpPeerResponse.class, required = true, description = "Id of the Bgp Peer")
+ private Long id;
+
+ public Long getId() {
+ return id;
+ }
+
+ @Override
+ public String getEventType() {
+ return EventTypes.EVENT_BGP_PEER_DELETE;
+ }
+
+ @Override
+ public String getEventDescription() {
+ return "Deleting Bgp Peer " + getId();
+ }
+
+ @Override
+ public void execute() {
+ try {
+ boolean result = routedIpv4Manager.deleteBgpPeer(this);
+ if (result) {
+ SuccessResponse response = new SuccessResponse(getCommandName());
+ response.setResponseName(getCommandName());
+ this.setResponseObject(response);
+ } else {
+ throw new ServerApiException(ApiErrorCode.INTERNAL_ERROR, "Failed to delete Bgp Peer:" + getId());
+ }
+ } catch (InvalidParameterValueException ex) {
+ throw new ServerApiException(ApiErrorCode.PARAM_ERROR, ex.getMessage());
+ } catch (CloudRuntimeException ex) {
+ throw new ServerApiException(ApiErrorCode.INTERNAL_ERROR, ex.getMessage());
+ }
+
+ }
+
+ @Override
+ public long getEntityOwnerId() {
+ return Account.ACCOUNT_ID_SYSTEM;
+ }
+}
diff --git a/api/src/main/java/org/apache/cloudstack/api/command/admin/network/bgp/ListBgpPeersCmd.java b/api/src/main/java/org/apache/cloudstack/api/command/admin/network/bgp/ListBgpPeersCmd.java
new file mode 100644
index 000000000000..ea15f0970e87
--- /dev/null
+++ b/api/src/main/java/org/apache/cloudstack/api/command/admin/network/bgp/ListBgpPeersCmd.java
@@ -0,0 +1,130 @@
+// Licensed to the Apache Software Foundation (ASF) under one
+// or more contributor license agreements. See the NOTICE file
+// distributed with this work for additional information
+// regarding copyright ownership. The ASF licenses this file
+// to you under the Apache License, Version 2.0 (the
+// "License"); you may not use this file except in compliance
+// with the License. You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing,
+// software distributed under the License is distributed on an
+// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+// KIND, either express or implied. See the License for the
+// specific language governing permissions and limitations
+// under the License.
+package org.apache.cloudstack.api.command.admin.network.bgp;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.apache.cloudstack.acl.RoleType;
+import org.apache.cloudstack.api.APICommand;
+import org.apache.cloudstack.api.ApiConstants;
+import org.apache.cloudstack.api.BaseListCmd;
+import org.apache.cloudstack.api.Parameter;
+import org.apache.cloudstack.api.response.BgpPeerResponse;
+import org.apache.cloudstack.api.response.DomainResponse;
+import org.apache.cloudstack.api.response.ListResponse;
+import org.apache.cloudstack.api.response.ProjectResponse;
+import org.apache.cloudstack.api.response.ZoneResponse;
+import org.apache.cloudstack.network.BgpPeer;
+
+@APICommand(name = "listBgpPeers",
+ description = "Lists Bgp Peers.",
+ responseObject = BgpPeerResponse.class,
+ since = "4.20.0",
+ requestHasSensitiveInfo = false,
+ responseHasSensitiveInfo = false,
+ authorized = {RoleType.Admin})
+public class ListBgpPeersCmd extends BaseListCmd {
+
+ @Parameter(name = ApiConstants.ID,
+ type = CommandType.UUID,
+ entityType = BgpPeerResponse.class,
+ description = "UUID of the Bgp Peer.")
+ private Long id;
+
+ @Parameter(name = ApiConstants.ZONE_ID,
+ type = CommandType.UUID,
+ entityType = ZoneResponse.class,
+ description = "UUID of zone to which the Bgp Peer belongs to.")
+ private Long zoneId;
+
+ @Parameter(name = ApiConstants.AS_NUMBER,
+ type = CommandType.LONG,
+ description = "AS number of the Bgp Peer.")
+ private Long asNumber;
+
+ @Parameter(name = ApiConstants.ACCOUNT,
+ type = CommandType.STRING,
+ description = "the account which the Bgp Peer is dedicated to. Must be used with the domainId parameter.")
+ private String accountName;
+
+ @Parameter(name = ApiConstants.PROJECT_ID,
+ type = CommandType.UUID,
+ entityType = ProjectResponse.class,
+ description = "project who which the Bgp Peer is dedicated to")
+ private Long projectId;
+
+ @Parameter(name = ApiConstants.DOMAIN_ID,
+ type = CommandType.UUID,
+ entityType = DomainResponse.class,
+ description = "the domain ID which the Bgp Peer is dedicated to.")
+ private Long domainId;
+
+ @Parameter(name = ApiConstants.IS_DEDICATED,
+ type = CommandType.BOOLEAN,
+ description = "Lists only dedicated or non-dedicated Bgp Peers. If not set, lists all dedicated and non-dedicated BGP peers the domain/account can access.")
+ private Boolean isDedicated;
+
+ /////////////////////////////////////////////////////
+ /////////////////// Accessors ///////////////////////
+ /////////////////////////////////////////////////////
+
+ public Long getId() {
+ return id;
+ }
+
+ public Long getZoneId() {
+ return zoneId;
+ }
+
+ public Long getAsNumber() {
+ return asNumber;
+ }
+
+ public String getAccountName() {
+ return accountName;
+ }
+
+ public Long getProjectId() {
+ return projectId;
+ }
+
+ public Long getDomainId() {
+ return domainId;
+ }
+
+ public Boolean getDedicated() {
+ return isDedicated;
+ }
+
+ @Override
+ public void execute() {
+ List extends BgpPeer> subnets = routedIpv4Manager.listBgpPeers(this);
+ ListResponse response = new ListResponse<>();
+ List subnetResponses = new ArrayList<>();
+ for (BgpPeer subnet : subnets) {
+ BgpPeerResponse subnetResponse = routedIpv4Manager.createBgpPeerResponse(subnet);
+ subnetResponse.setObjectName("bgppeer");
+ subnetResponses.add(subnetResponse);
+ }
+
+ response.setResponses(subnetResponses, subnets.size());
+ response.setResponseName(getCommandName());
+ this.setResponseObject(response);
+ }
+
+}
diff --git a/api/src/main/java/org/apache/cloudstack/api/command/admin/network/bgp/ReleaseDedicatedBgpPeerCmd.java b/api/src/main/java/org/apache/cloudstack/api/command/admin/network/bgp/ReleaseDedicatedBgpPeerCmd.java
new file mode 100644
index 000000000000..92610c233ef0
--- /dev/null
+++ b/api/src/main/java/org/apache/cloudstack/api/command/admin/network/bgp/ReleaseDedicatedBgpPeerCmd.java
@@ -0,0 +1,88 @@
+// Licensed to the Apache Software Foundation (ASF) under one
+// or more contributor license agreements. See the NOTICE file
+// distributed with this work for additional information
+// regarding copyright ownership. The ASF licenses this file
+// to you under the Apache License, Version 2.0 (the
+// "License"); you may not use this file except in compliance
+// with the License. You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing,
+// software distributed under the License is distributed on an
+// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+// KIND, either express or implied. See the License for the
+// specific language governing permissions and limitations
+// under the License.
+
+package org.apache.cloudstack.api.command.admin.network.bgp;
+
+import org.apache.cloudstack.acl.RoleType;
+import org.apache.cloudstack.api.APICommand;
+import org.apache.cloudstack.api.ApiConstants;
+import org.apache.cloudstack.api.ApiErrorCode;
+import org.apache.cloudstack.api.BaseAsyncCmd;
+import org.apache.cloudstack.api.Parameter;
+import org.apache.cloudstack.api.ServerApiException;
+import org.apache.cloudstack.api.response.BgpPeerResponse;
+import org.apache.cloudstack.network.BgpPeer;
+
+import com.cloud.event.EventTypes;
+import com.cloud.exception.InvalidParameterValueException;
+import com.cloud.user.Account;
+import com.cloud.utils.exception.CloudRuntimeException;
+
+@APICommand(name = "releaseBgpPeer",
+ description = "Releases an existing dedicated Bgp Peer.",
+ responseObject = BgpPeerResponse.class,
+ since = "4.20.0",
+ requestHasSensitiveInfo = false,
+ responseHasSensitiveInfo = false,
+ authorized = {RoleType.Admin})
+public class ReleaseDedicatedBgpPeerCmd extends BaseAsyncCmd {
+
+ /////////////////////////////////////////////////////
+ //////////////// API parameters /////////////////////
+ /////////////////////////////////////////////////////
+
+ @Parameter(name = ApiConstants.ID, type = CommandType.UUID, entityType = BgpPeerResponse.class, required = true, description = "Id of the Bgp Peer")
+ private Long id;
+
+ public Long getId() {
+ return id;
+ }
+
+ @Override
+ public String getEventType() {
+ return EventTypes.EVENT_BGP_PEER_RELEASE;
+ }
+
+ @Override
+ public String getEventDescription() {
+ return "Releasing a dedicated Bgp Peer " + getId();
+ }
+
+ @Override
+ public void execute() {
+ try {
+ BgpPeer result = routedIpv4Manager.releaseDedicatedBgpPeer(this);
+ if (result != null) {
+ BgpPeerResponse response = routedIpv4Manager.createBgpPeerResponse(result);
+ response.setResponseName(getCommandName());
+ this.setResponseObject(response);
+ } else {
+ throw new ServerApiException(ApiErrorCode.INTERNAL_ERROR, "Failed to release Bgp Peer:" + getId());
+ }
+ } catch (InvalidParameterValueException ex) {
+ throw new ServerApiException(ApiErrorCode.PARAM_ERROR, ex.getMessage());
+ } catch (CloudRuntimeException ex) {
+ throw new ServerApiException(ApiErrorCode.INTERNAL_ERROR, ex.getMessage());
+ }
+
+ }
+
+ @Override
+ public long getEntityOwnerId() {
+ return Account.ACCOUNT_ID_SYSTEM;
+ }
+}
diff --git a/api/src/main/java/org/apache/cloudstack/api/command/admin/network/bgp/UpdateBgpPeerCmd.java b/api/src/main/java/org/apache/cloudstack/api/command/admin/network/bgp/UpdateBgpPeerCmd.java
new file mode 100644
index 000000000000..ae44330ea033
--- /dev/null
+++ b/api/src/main/java/org/apache/cloudstack/api/command/admin/network/bgp/UpdateBgpPeerCmd.java
@@ -0,0 +1,149 @@
+// Licensed to the Apache Software Foundation (ASF) under one
+// or more contributor license agreements. See the NOTICE file
+// distributed with this work for additional information
+// regarding copyright ownership. The ASF licenses this file
+// to you under the Apache License, Version 2.0 (the
+// "License"); you may not use this file except in compliance
+// with the License. You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing,
+// software distributed under the License is distributed on an
+// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+// KIND, either express or implied. See the License for the
+// specific language governing permissions and limitations
+// under the License.
+
+package org.apache.cloudstack.api.command.admin.network.bgp;
+
+import org.apache.cloudstack.acl.RoleType;
+import org.apache.cloudstack.api.APICommand;
+import org.apache.cloudstack.api.ApiConstants;
+import org.apache.cloudstack.api.ApiErrorCode;
+import org.apache.cloudstack.api.BaseAsyncCmd;
+import org.apache.cloudstack.api.Parameter;
+import org.apache.cloudstack.api.ServerApiException;
+import org.apache.cloudstack.api.response.BgpPeerResponse;
+import org.apache.cloudstack.network.BgpPeer;
+
+import com.cloud.event.EventTypes;
+import com.cloud.exception.InvalidParameterValueException;
+import com.cloud.user.Account;
+import com.cloud.utils.exception.CloudRuntimeException;
+import org.apache.commons.collections.MapUtils;
+
+import java.util.Collection;
+import java.util.Map;
+
+@APICommand(name = "updateBgpPeer",
+ description = "Updates an existing Bgp Peer.",
+ responseObject = BgpPeerResponse.class,
+ since = "4.20.0",
+ requestHasSensitiveInfo = true,
+ responseHasSensitiveInfo = false,
+ authorized = {RoleType.Admin})
+public class UpdateBgpPeerCmd extends BaseAsyncCmd {
+
+ /////////////////////////////////////////////////////
+ //////////////// API parameters /////////////////////
+ /////////////////////////////////////////////////////
+
+ @Parameter(name = ApiConstants.ID, type = CommandType.UUID, entityType = BgpPeerResponse.class, required = true, description = "Id of the Bgp Peer")
+ private Long id;
+
+ @Parameter(name = ApiConstants.IP_ADDRESS,
+ type = CommandType.STRING,
+ description = "The IPv4 address of the Bgp Peer.")
+ private String ip4Address;
+
+ @Parameter(name = ApiConstants.IP6_ADDRESS,
+ type = CommandType.STRING,
+ description = "The IPv6 address of the Bgp Peer.")
+ private String ip6Address;
+
+ @Parameter(name = ApiConstants.AS_NUMBER,
+ type = CommandType.LONG,
+ description = "The AS number of the Bgp Peer.")
+ private Long asNumber;
+
+ @Parameter(name = ApiConstants.PASSWORD,
+ type = CommandType.STRING,
+ description = "The password of the Bgp Peer.")
+ private String password;
+
+ @Parameter(name = ApiConstants.DETAILS, type = CommandType.MAP,
+ description = "BGP peer details in key/value pairs.")
+ protected Map details;
+
+ @Parameter(name = ApiConstants.CLEAN_UP_DETAILS,
+ type = CommandType.BOOLEAN,
+ description = "optional boolean field, which indicates if details should be cleaned up or not (if set to true, details are removed for this resource; if false or not set, no action)")
+ private Boolean cleanupDetails;
+
+ public Long getId() {
+ return id;
+ }
+
+ public String getIp4Address() {
+ return ip4Address;
+ }
+
+ public String getIp6Address() {
+ return ip6Address;
+ }
+
+ public Long getAsNumber() {
+ return asNumber;
+ }
+
+ public String getPassword() {
+ return password;
+ }
+
+ public Map getDetails() {
+ if (MapUtils.isEmpty(details)) {
+ return null;
+ }
+ Collection paramsCollection = this.details.values();
+ return (Map) (paramsCollection.toArray())[0];
+ }
+
+ public boolean isCleanupDetails(){
+ return cleanupDetails == null ? false : cleanupDetails.booleanValue();
+ }
+
+ @Override
+ public String getEventType() {
+ return EventTypes.EVENT_BGP_PEER_UPDATE;
+ }
+
+ @Override
+ public String getEventDescription() {
+ return "Updating Bgp Peer " + getId();
+ }
+
+ @Override
+ public void execute() {
+ try {
+ BgpPeer result = routedIpv4Manager.updateBgpPeer(this);
+ if (result != null) {
+ BgpPeerResponse response = routedIpv4Manager.createBgpPeerResponse(result);
+ response.setResponseName(getCommandName());
+ this.setResponseObject(response);
+ } else {
+ throw new ServerApiException(ApiErrorCode.INTERNAL_ERROR, "Failed to update Bgp Peer:" + getId());
+ }
+ } catch (InvalidParameterValueException ex) {
+ throw new ServerApiException(ApiErrorCode.PARAM_ERROR, ex.getMessage());
+ } catch (CloudRuntimeException ex) {
+ throw new ServerApiException(ApiErrorCode.INTERNAL_ERROR, ex.getMessage());
+ }
+
+ }
+
+ @Override
+ public long getEntityOwnerId() {
+ return Account.ACCOUNT_ID_SYSTEM;
+ }
+}
diff --git a/api/src/main/java/org/apache/cloudstack/api/command/admin/offering/CreateDiskOfferingCmd.java b/api/src/main/java/org/apache/cloudstack/api/command/admin/offering/CreateDiskOfferingCmd.java
index c2d8b3b6839f..c46e4cd6b445 100644
--- a/api/src/main/java/org/apache/cloudstack/api/command/admin/offering/CreateDiskOfferingCmd.java
+++ b/api/src/main/java/org/apache/cloudstack/api/command/admin/offering/CreateDiskOfferingCmd.java
@@ -37,7 +37,6 @@
import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.collections.MapUtils;
import org.apache.commons.lang3.StringUtils;
-import org.apache.log4j.Logger;
import com.cloud.offering.DiskOffering;
import com.cloud.offering.ServiceOffering;
@@ -47,7 +46,6 @@
@APICommand(name = "createDiskOffering", description = "Creates a disk offering.", responseObject = DiskOfferingResponse.class,
requestHasSensitiveInfo = false, responseHasSensitiveInfo = false)
public class CreateDiskOfferingCmd extends BaseCmd {
- public static final Logger s_logger = Logger.getLogger(CreateDiskOfferingCmd.class.getName());
/////////////////////////////////////////////////////
diff --git a/api/src/main/java/org/apache/cloudstack/api/command/admin/offering/CreateServiceOfferingCmd.java b/api/src/main/java/org/apache/cloudstack/api/command/admin/offering/CreateServiceOfferingCmd.java
index e3b2887ad338..8f6d5413d72d 100644
--- a/api/src/main/java/org/apache/cloudstack/api/command/admin/offering/CreateServiceOfferingCmd.java
+++ b/api/src/main/java/org/apache/cloudstack/api/command/admin/offering/CreateServiceOfferingCmd.java
@@ -37,7 +37,6 @@
import org.apache.commons.collections.MapUtils;
import org.apache.commons.lang3.StringUtils;
import org.apache.commons.collections.CollectionUtils;
-import org.apache.log4j.Logger;
import com.cloud.exception.InvalidParameterValueException;
import com.cloud.offering.ServiceOffering;
@@ -47,7 +46,6 @@
@APICommand(name = "createServiceOffering", description = "Creates a service offering.", responseObject = ServiceOfferingResponse.class,
requestHasSensitiveInfo = false, responseHasSensitiveInfo = false)
public class CreateServiceOfferingCmd extends BaseCmd {
- public static final Logger s_logger = Logger.getLogger(CreateServiceOfferingCmd.class.getName());
/////////////////////////////////////////////////////
//////////////// API parameters /////////////////////
@@ -248,6 +246,12 @@ public class CreateServiceOfferingCmd extends BaseCmd {
@Parameter(name = ApiConstants.ENCRYPT_ROOT, type = CommandType.BOOLEAN, description = "VMs using this offering require root volume encryption", since="4.18")
private Boolean encryptRoot;
+ @Parameter(name = ApiConstants.PURGE_RESOURCES, type = CommandType.BOOLEAN,
+ description = "Whether to cleanup instance and its associated resource from database upon expunge of the instance",
+ since="4.20")
+ private Boolean purgeResources;
+
+
/////////////////////////////////////////////////////
/////////////////// Accessors ///////////////////////
@@ -275,7 +279,7 @@ public Integer getMemory() {
public String getServiceOfferingName() {
if (StringUtils.isEmpty(serviceOfferingName)) {
- throw new InvalidParameterValueException("Failed to create service offering because offering name has not been spified.");
+ throw new InvalidParameterValueException("Failed to create service offering because offering name has not been specified.");
}
return serviceOfferingName;
}
@@ -483,6 +487,10 @@ public boolean getEncryptRoot() {
return false;
}
+ public boolean isPurgeResources() {
+ return Boolean.TRUE.equals(purgeResources);
+ }
+
/////////////////////////////////////////////////////
/////////////// API Implementation///////////////////
/////////////////////////////////////////////////////
diff --git a/api/src/main/java/org/apache/cloudstack/api/command/admin/offering/DeleteDiskOfferingCmd.java b/api/src/main/java/org/apache/cloudstack/api/command/admin/offering/DeleteDiskOfferingCmd.java
index 0159cd297f9c..591b09c60a5d 100644
--- a/api/src/main/java/org/apache/cloudstack/api/command/admin/offering/DeleteDiskOfferingCmd.java
+++ b/api/src/main/java/org/apache/cloudstack/api/command/admin/offering/DeleteDiskOfferingCmd.java
@@ -16,7 +16,6 @@
// under the License.
package org.apache.cloudstack.api.command.admin.offering;
-import org.apache.log4j.Logger;
import org.apache.cloudstack.api.APICommand;
import org.apache.cloudstack.api.ApiConstants;
@@ -32,7 +31,6 @@
@APICommand(name = "deleteDiskOffering", description = "Updates a disk offering.", responseObject = SuccessResponse.class,
requestHasSensitiveInfo = false, responseHasSensitiveInfo = false)
public class DeleteDiskOfferingCmd extends BaseCmd {
- public static final Logger s_logger = Logger.getLogger(DeleteDiskOfferingCmd.class.getName());
/////////////////////////////////////////////////////
//////////////// API parameters /////////////////////
diff --git a/api/src/main/java/org/apache/cloudstack/api/command/admin/offering/DeleteServiceOfferingCmd.java b/api/src/main/java/org/apache/cloudstack/api/command/admin/offering/DeleteServiceOfferingCmd.java
index 9b7f9d48e30a..19203289d104 100644
--- a/api/src/main/java/org/apache/cloudstack/api/command/admin/offering/DeleteServiceOfferingCmd.java
+++ b/api/src/main/java/org/apache/cloudstack/api/command/admin/offering/DeleteServiceOfferingCmd.java
@@ -16,7 +16,6 @@
// under the License.
package org.apache.cloudstack.api.command.admin.offering;
-import org.apache.log4j.Logger;
import org.apache.cloudstack.api.APICommand;
import org.apache.cloudstack.api.ApiConstants;
@@ -32,7 +31,6 @@
@APICommand(name = "deleteServiceOffering", description = "Deletes a service offering.", responseObject = SuccessResponse.class,
requestHasSensitiveInfo = false, responseHasSensitiveInfo = false)
public class DeleteServiceOfferingCmd extends BaseCmd {
- public static final Logger s_logger = Logger.getLogger(DeleteServiceOfferingCmd.class.getName());
/////////////////////////////////////////////////////
//////////////// API parameters /////////////////////
diff --git a/api/src/main/java/org/apache/cloudstack/api/command/admin/offering/UpdateDiskOfferingCmd.java b/api/src/main/java/org/apache/cloudstack/api/command/admin/offering/UpdateDiskOfferingCmd.java
index 424ee1609ad8..370453804cfc 100644
--- a/api/src/main/java/org/apache/cloudstack/api/command/admin/offering/UpdateDiskOfferingCmd.java
+++ b/api/src/main/java/org/apache/cloudstack/api/command/admin/offering/UpdateDiskOfferingCmd.java
@@ -30,7 +30,6 @@
import org.apache.cloudstack.api.response.DiskOfferingResponse;
import org.apache.commons.lang3.EnumUtils;
import org.apache.commons.lang3.StringUtils;
-import org.apache.log4j.Logger;
import com.cloud.dc.DataCenter;
import com.cloud.domain.Domain;
@@ -41,7 +40,6 @@
@APICommand(name = "updateDiskOffering", description = "Updates a disk offering.", responseObject = DiskOfferingResponse.class,
requestHasSensitiveInfo = false, responseHasSensitiveInfo = false)
public class UpdateDiskOfferingCmd extends BaseCmd {
- public static final Logger s_logger = Logger.getLogger(UpdateDiskOfferingCmd.class.getName());
/////////////////////////////////////////////////////
//////////////// API parameters /////////////////////
diff --git a/api/src/main/java/org/apache/cloudstack/api/command/admin/offering/UpdateServiceOfferingCmd.java b/api/src/main/java/org/apache/cloudstack/api/command/admin/offering/UpdateServiceOfferingCmd.java
index 2f3dba4d9c52..e580f0d9f41a 100644
--- a/api/src/main/java/org/apache/cloudstack/api/command/admin/offering/UpdateServiceOfferingCmd.java
+++ b/api/src/main/java/org/apache/cloudstack/api/command/admin/offering/UpdateServiceOfferingCmd.java
@@ -30,7 +30,6 @@
import org.apache.cloudstack.api.response.ServiceOfferingResponse;
import org.apache.commons.lang3.EnumUtils;
import org.apache.commons.lang3.StringUtils;
-import org.apache.log4j.Logger;
import com.cloud.dc.DataCenter;
import com.cloud.domain.Domain;
@@ -41,7 +40,6 @@
@APICommand(name = "updateServiceOffering", description = "Updates a service offering.", responseObject = ServiceOfferingResponse.class,
requestHasSensitiveInfo = false, responseHasSensitiveInfo = false)
public class UpdateServiceOfferingCmd extends BaseCmd {
- public static final Logger s_logger = Logger.getLogger(UpdateServiceOfferingCmd.class.getName());
/////////////////////////////////////////////////////
//////////////// API parameters /////////////////////
@@ -91,6 +89,11 @@ public class UpdateServiceOfferingCmd extends BaseCmd {
description = "state of the service offering")
private String serviceOfferingState;
+ @Parameter(name = ApiConstants.PURGE_RESOURCES, type = CommandType.BOOLEAN,
+ description = "Whether to cleanup VM and its associated resource upon expunge",
+ since="4.20")
+ private Boolean purgeResources;
+
/////////////////////////////////////////////////////
/////////////////// Accessors ///////////////////////
/////////////////////////////////////////////////////
@@ -187,6 +190,10 @@ public State getState() {
return state;
}
+ public boolean isPurgeResources() {
+ return Boolean.TRUE.equals(purgeResources);
+ }
+
/////////////////////////////////////////////////////
/////////////// API Implementation///////////////////
/////////////////////////////////////////////////////
diff --git a/api/src/main/java/org/apache/cloudstack/api/command/admin/pod/CreatePodCmd.java b/api/src/main/java/org/apache/cloudstack/api/command/admin/pod/CreatePodCmd.java
index b15854ca875f..c1d9a6db4296 100644
--- a/api/src/main/java/org/apache/cloudstack/api/command/admin/pod/CreatePodCmd.java
+++ b/api/src/main/java/org/apache/cloudstack/api/command/admin/pod/CreatePodCmd.java
@@ -17,7 +17,6 @@
package org.apache.cloudstack.api.command.admin.pod;
import org.apache.cloudstack.api.ApiCommandResourceType;
-import org.apache.log4j.Logger;
import org.apache.cloudstack.api.APICommand;
import org.apache.cloudstack.api.ApiConstants;
@@ -34,7 +33,6 @@
@APICommand(name = "createPod", description = "Creates a new Pod.", responseObject = PodResponse.class,
requestHasSensitiveInfo = false, responseHasSensitiveInfo = false)
public class CreatePodCmd extends BaseCmd {
- public static final Logger s_logger = Logger.getLogger(CreatePodCmd.class.getName());
/////////////////////////////////////////////////////
diff --git a/api/src/main/java/org/apache/cloudstack/api/command/admin/pod/DeletePodCmd.java b/api/src/main/java/org/apache/cloudstack/api/command/admin/pod/DeletePodCmd.java
index bdb9ef266944..c1de800d745b 100644
--- a/api/src/main/java/org/apache/cloudstack/api/command/admin/pod/DeletePodCmd.java
+++ b/api/src/main/java/org/apache/cloudstack/api/command/admin/pod/DeletePodCmd.java
@@ -17,7 +17,6 @@
package org.apache.cloudstack.api.command.admin.pod;
import org.apache.cloudstack.api.ApiCommandResourceType;
-import org.apache.log4j.Logger;
import org.apache.cloudstack.api.APICommand;
import org.apache.cloudstack.api.ApiConstants;
@@ -33,7 +32,6 @@
@APICommand(name = "deletePod", description = "Deletes a Pod.", responseObject = SuccessResponse.class,
requestHasSensitiveInfo = false, responseHasSensitiveInfo = false)
public class DeletePodCmd extends BaseCmd {
- public static final Logger s_logger = Logger.getLogger(DeletePodCmd.class.getName());
/////////////////////////////////////////////////////
diff --git a/api/src/main/java/org/apache/cloudstack/api/command/admin/pod/ListPodsByCmd.java b/api/src/main/java/org/apache/cloudstack/api/command/admin/pod/ListPodsByCmd.java
index c0e26a32eee9..5ad0b457ced7 100644
--- a/api/src/main/java/org/apache/cloudstack/api/command/admin/pod/ListPodsByCmd.java
+++ b/api/src/main/java/org/apache/cloudstack/api/command/admin/pod/ListPodsByCmd.java
@@ -19,7 +19,6 @@
import java.util.ArrayList;
import java.util.List;
-import org.apache.log4j.Logger;
import org.apache.cloudstack.api.APICommand;
import org.apache.cloudstack.api.ApiConstants;
@@ -35,7 +34,6 @@
@APICommand(name = "listPods", description = "Lists all Pods.", responseObject = PodResponse.class,
requestHasSensitiveInfo = false, responseHasSensitiveInfo = false)
public class ListPodsByCmd extends BaseListCmd {
- public static final Logger s_logger = Logger.getLogger(ListPodsByCmd.class.getName());
/////////////////////////////////////////////////////
diff --git a/api/src/main/java/org/apache/cloudstack/api/command/admin/pod/UpdatePodCmd.java b/api/src/main/java/org/apache/cloudstack/api/command/admin/pod/UpdatePodCmd.java
index 99ab5e1cee4a..7dae6f4c7cf0 100644
--- a/api/src/main/java/org/apache/cloudstack/api/command/admin/pod/UpdatePodCmd.java
+++ b/api/src/main/java/org/apache/cloudstack/api/command/admin/pod/UpdatePodCmd.java
@@ -17,7 +17,6 @@
package org.apache.cloudstack.api.command.admin.pod;
import org.apache.cloudstack.api.ApiCommandResourceType;
-import org.apache.log4j.Logger;
import org.apache.cloudstack.api.APICommand;
import org.apache.cloudstack.api.ApiConstants;
@@ -33,7 +32,6 @@
@APICommand(name = "updatePod", description = "Updates a Pod.", responseObject = PodResponse.class,
requestHasSensitiveInfo = false, responseHasSensitiveInfo = false)
public class UpdatePodCmd extends BaseCmd {
- public static final Logger s_logger = Logger.getLogger(UpdatePodCmd.class.getName());
/////////////////////////////////////////////////////
diff --git a/api/src/main/java/org/apache/cloudstack/api/command/admin/region/AddRegionCmd.java b/api/src/main/java/org/apache/cloudstack/api/command/admin/region/AddRegionCmd.java
index 61bf32ab822c..3a93a2750429 100644
--- a/api/src/main/java/org/apache/cloudstack/api/command/admin/region/AddRegionCmd.java
+++ b/api/src/main/java/org/apache/cloudstack/api/command/admin/region/AddRegionCmd.java
@@ -18,7 +18,6 @@
import javax.inject.Inject;
-import org.apache.log4j.Logger;
import org.apache.cloudstack.api.APICommand;
import org.apache.cloudstack.api.ApiConstants;
@@ -35,7 +34,6 @@
@APICommand(name = "addRegion", description = "Adds a Region", responseObject = RegionResponse.class,
requestHasSensitiveInfo = false, responseHasSensitiveInfo = false)
public class AddRegionCmd extends BaseCmd {
- public static final Logger s_logger = Logger.getLogger(AddRegionCmd.class.getName());
/////////////////////////////////////////////////////
diff --git a/api/src/main/java/org/apache/cloudstack/api/command/admin/region/CreatePortableIpRangeCmd.java b/api/src/main/java/org/apache/cloudstack/api/command/admin/region/CreatePortableIpRangeCmd.java
index 61deceb06913..fd103c838309 100644
--- a/api/src/main/java/org/apache/cloudstack/api/command/admin/region/CreatePortableIpRangeCmd.java
+++ b/api/src/main/java/org/apache/cloudstack/api/command/admin/region/CreatePortableIpRangeCmd.java
@@ -17,7 +17,6 @@
package org.apache.cloudstack.api.command.admin.region;
-import org.apache.log4j.Logger;
import org.apache.cloudstack.api.APICommand;
import org.apache.cloudstack.api.ApiCommandResourceType;
@@ -43,7 +42,6 @@
responseHasSensitiveInfo = false)
public class CreatePortableIpRangeCmd extends BaseAsyncCreateCmd {
- public static final Logger s_logger = Logger.getLogger(CreatePortableIpRangeCmd.class.getName());
/////////////////////////////////////////////////////
@@ -126,7 +124,7 @@ public void create() throws ResourceAllocationException {
throw new ServerApiException(ApiErrorCode.INTERNAL_ERROR, "Failed to create portable public IP range");
}
} catch (ConcurrentOperationException ex) {
- s_logger.warn("Exception: ", ex);
+ logger.warn("Exception: ", ex);
throw new ServerApiException(ApiErrorCode.INTERNAL_ERROR, ex.getMessage());
}
}
diff --git a/api/src/main/java/org/apache/cloudstack/api/command/admin/region/DeletePortableIpRangeCmd.java b/api/src/main/java/org/apache/cloudstack/api/command/admin/region/DeletePortableIpRangeCmd.java
index 6cc884645e9c..3ff46fcc94d5 100644
--- a/api/src/main/java/org/apache/cloudstack/api/command/admin/region/DeletePortableIpRangeCmd.java
+++ b/api/src/main/java/org/apache/cloudstack/api/command/admin/region/DeletePortableIpRangeCmd.java
@@ -17,7 +17,6 @@
package org.apache.cloudstack.api.command.admin.region;
-import org.apache.log4j.Logger;
import org.apache.cloudstack.api.APICommand;
import org.apache.cloudstack.api.ApiCommandResourceType;
@@ -35,7 +34,6 @@
@APICommand(name = "deletePortableIpRange", description = "deletes a range of portable public IP's associated with a region", responseObject = SuccessResponse.class,
requestHasSensitiveInfo = false, responseHasSensitiveInfo = false)
public class DeletePortableIpRangeCmd extends BaseAsyncCmd {
- public static final Logger s_logger = Logger.getLogger(DeletePortableIpRangeCmd.class.getName());
private static final String s_name = "deleteportablepublicipresponse";
diff --git a/api/src/main/java/org/apache/cloudstack/api/command/admin/region/ListPortableIpRangesCmd.java b/api/src/main/java/org/apache/cloudstack/api/command/admin/region/ListPortableIpRangesCmd.java
index ed0ddd68aca2..e654da6df449 100644
--- a/api/src/main/java/org/apache/cloudstack/api/command/admin/region/ListPortableIpRangesCmd.java
+++ b/api/src/main/java/org/apache/cloudstack/api/command/admin/region/ListPortableIpRangesCmd.java
@@ -19,7 +19,6 @@
import java.util.ArrayList;
import java.util.List;
-import org.apache.log4j.Logger;
import org.apache.cloudstack.api.APICommand;
import org.apache.cloudstack.api.ApiConstants;
@@ -37,7 +36,6 @@
requestHasSensitiveInfo = false, responseHasSensitiveInfo = false)
public class ListPortableIpRangesCmd extends BaseListCmd {
- public static final Logger s_logger = Logger.getLogger(ListPortableIpRangesCmd.class.getName());
private static final String s_name = "listportableipresponse";
diff --git a/api/src/main/java/org/apache/cloudstack/api/command/admin/region/RemoveRegionCmd.java b/api/src/main/java/org/apache/cloudstack/api/command/admin/region/RemoveRegionCmd.java
index 180e34c7a8f0..3ea323eebfba 100644
--- a/api/src/main/java/org/apache/cloudstack/api/command/admin/region/RemoveRegionCmd.java
+++ b/api/src/main/java/org/apache/cloudstack/api/command/admin/region/RemoveRegionCmd.java
@@ -18,7 +18,6 @@
import javax.inject.Inject;
-import org.apache.log4j.Logger;
import org.apache.cloudstack.api.APICommand;
import org.apache.cloudstack.api.ApiConstants;
@@ -34,7 +33,6 @@
@APICommand(name = "removeRegion", description = "Removes specified region", responseObject = SuccessResponse.class,
requestHasSensitiveInfo = false, responseHasSensitiveInfo = false)
public class RemoveRegionCmd extends BaseCmd {
- public static final Logger s_logger = Logger.getLogger(RemoveRegionCmd.class.getName());
/////////////////////////////////////////////////////
//////////////// API parameters /////////////////////
diff --git a/api/src/main/java/org/apache/cloudstack/api/command/admin/region/UpdateRegionCmd.java b/api/src/main/java/org/apache/cloudstack/api/command/admin/region/UpdateRegionCmd.java
index c772efd5e1fe..4267f6a2c286 100644
--- a/api/src/main/java/org/apache/cloudstack/api/command/admin/region/UpdateRegionCmd.java
+++ b/api/src/main/java/org/apache/cloudstack/api/command/admin/region/UpdateRegionCmd.java
@@ -18,7 +18,6 @@
import javax.inject.Inject;
-import org.apache.log4j.Logger;
import org.apache.cloudstack.api.APICommand;
import org.apache.cloudstack.api.ApiConstants;
@@ -35,7 +34,6 @@
@APICommand(name = "updateRegion", description = "Updates a region", responseObject = RegionResponse.class,
requestHasSensitiveInfo = false, responseHasSensitiveInfo = false)
public class UpdateRegionCmd extends BaseCmd {
- public static final Logger s_logger = Logger.getLogger(UpdateRegionCmd.class.getName());
/////////////////////////////////////////////////////
//////////////// API parameters /////////////////////
diff --git a/api/src/main/java/org/apache/cloudstack/api/command/admin/resource/ArchiveAlertsCmd.java b/api/src/main/java/org/apache/cloudstack/api/command/admin/resource/ArchiveAlertsCmd.java
index 003b823e106e..dc8c15cf09df 100644
--- a/api/src/main/java/org/apache/cloudstack/api/command/admin/resource/ArchiveAlertsCmd.java
+++ b/api/src/main/java/org/apache/cloudstack/api/command/admin/resource/ArchiveAlertsCmd.java
@@ -19,7 +19,6 @@
import java.util.Date;
import java.util.List;
-import org.apache.log4j.Logger;
import org.apache.cloudstack.api.APICommand;
import org.apache.cloudstack.api.ApiConstants;
@@ -37,7 +36,6 @@
requestHasSensitiveInfo = false, responseHasSensitiveInfo = false)
public class ArchiveAlertsCmd extends BaseCmd {
- public static final Logger s_logger = Logger.getLogger(ArchiveAlertsCmd.class.getName());
// ///////////////////////////////////////////////////
diff --git a/api/src/main/java/org/apache/cloudstack/api/command/admin/resource/CleanVMReservationsCmd.java b/api/src/main/java/org/apache/cloudstack/api/command/admin/resource/CleanVMReservationsCmd.java
index 9acc71ce6930..1ae8c9441233 100644
--- a/api/src/main/java/org/apache/cloudstack/api/command/admin/resource/CleanVMReservationsCmd.java
+++ b/api/src/main/java/org/apache/cloudstack/api/command/admin/resource/CleanVMReservationsCmd.java
@@ -16,7 +16,6 @@
// under the License.
package org.apache.cloudstack.api.command.admin.resource;
-import org.apache.log4j.Logger;
import org.apache.cloudstack.api.APICommand;
import org.apache.cloudstack.api.ApiErrorCode;
@@ -31,7 +30,6 @@
@APICommand(name = "cleanVMReservations", description = "Cleanups VM reservations in the database.", responseObject = SuccessResponse.class,
requestHasSensitiveInfo = false, responseHasSensitiveInfo = false)
public class CleanVMReservationsCmd extends BaseAsyncCmd {
- public static final Logger s_logger = Logger.getLogger(CleanVMReservationsCmd.class.getName());
private static final String s_name = "cleanvmreservationresponse";
diff --git a/api/src/main/java/org/apache/cloudstack/api/command/admin/resource/DeleteAlertsCmd.java b/api/src/main/java/org/apache/cloudstack/api/command/admin/resource/DeleteAlertsCmd.java
index eb3848927583..9262a120f72c 100644
--- a/api/src/main/java/org/apache/cloudstack/api/command/admin/resource/DeleteAlertsCmd.java
+++ b/api/src/main/java/org/apache/cloudstack/api/command/admin/resource/DeleteAlertsCmd.java
@@ -19,7 +19,6 @@
import java.util.Date;
import java.util.List;
-import org.apache.log4j.Logger;
import org.apache.cloudstack.api.APICommand;
import org.apache.cloudstack.api.ApiConstants;
@@ -37,7 +36,6 @@
requestHasSensitiveInfo = false, responseHasSensitiveInfo = false)
public class DeleteAlertsCmd extends BaseCmd {
- public static final Logger s_logger = Logger.getLogger(DeleteAlertsCmd.class.getName());
// ///////////////////////////////////////////////////
diff --git a/api/src/main/java/org/apache/cloudstack/api/command/admin/resource/ListAlertsCmd.java b/api/src/main/java/org/apache/cloudstack/api/command/admin/resource/ListAlertsCmd.java
index 3471ab60837a..64cf691e6a73 100644
--- a/api/src/main/java/org/apache/cloudstack/api/command/admin/resource/ListAlertsCmd.java
+++ b/api/src/main/java/org/apache/cloudstack/api/command/admin/resource/ListAlertsCmd.java
@@ -25,7 +25,6 @@
import org.apache.cloudstack.api.Parameter;
import org.apache.cloudstack.api.response.AlertResponse;
import org.apache.cloudstack.api.response.ListResponse;
-import org.apache.log4j.Logger;
import com.cloud.alert.Alert;
import com.cloud.utils.Pair;
@@ -34,7 +33,6 @@
requestHasSensitiveInfo = false, responseHasSensitiveInfo = false)
public class ListAlertsCmd extends BaseListCmd {
- public static final Logger s_logger = Logger.getLogger(ListAlertsCmd.class.getName());
// ///////////////////////////////////////////////////
diff --git a/api/src/main/java/org/apache/cloudstack/api/command/admin/resource/ListCapacityCmd.java b/api/src/main/java/org/apache/cloudstack/api/command/admin/resource/ListCapacityCmd.java
index 253677616f03..6b31c4cc43cd 100644
--- a/api/src/main/java/org/apache/cloudstack/api/command/admin/resource/ListCapacityCmd.java
+++ b/api/src/main/java/org/apache/cloudstack/api/command/admin/resource/ListCapacityCmd.java
@@ -21,7 +21,6 @@
import java.util.Comparator;
import java.util.List;
-import org.apache.log4j.Logger;
import org.apache.cloudstack.api.APICommand;
import org.apache.cloudstack.api.ApiConstants;
@@ -40,7 +39,6 @@
requestHasSensitiveInfo = false, responseHasSensitiveInfo = false)
public class ListCapacityCmd extends BaseListCmd {
- public static final Logger s_logger = Logger.getLogger(ListCapacityCmd.class.getName());
private static final DecimalFormat s_percentFormat = new DecimalFormat("##.##");
@@ -73,6 +71,9 @@ public class ListCapacityCmd extends BaseListCmd {
@Parameter(name = ApiConstants.SORT_BY, type = CommandType.STRING, since = "3.0.0", description = "Sort the results. Available values: Usage")
private String sortBy;
+ @Parameter(name = ApiConstants.TAG, type = CommandType.STRING, description = "Tag for the resource type", since = "4.20.0")
+ private String tag;
+
/////////////////////////////////////////////////////
/////////////////// Accessors ///////////////////////
/////////////////////////////////////////////////////
@@ -109,6 +110,10 @@ public String getSortBy() {
return null;
}
+ public String getTag() {
+ return tag;
+ }
+
/////////////////////////////////////////////////////
/////////////// API Implementation///////////////////
/////////////////////////////////////////////////////
diff --git a/api/src/main/java/org/apache/cloudstack/api/command/admin/resource/PurgeExpungedResourcesCmd.java b/api/src/main/java/org/apache/cloudstack/api/command/admin/resource/PurgeExpungedResourcesCmd.java
new file mode 100644
index 000000000000..b6833f097336
--- /dev/null
+++ b/api/src/main/java/org/apache/cloudstack/api/command/admin/resource/PurgeExpungedResourcesCmd.java
@@ -0,0 +1,131 @@
+// Licensed to the Apache Software Foundation (ASF) under one
+// or more contributor license agreements. See the NOTICE file
+// distributed with this work for additional information
+// regarding copyright ownership. The ASF licenses this file
+// to you under the Apache License, Version 2.0 (the
+// "License"); you may not use this file except in compliance
+// with the License. You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing,
+// software distributed under the License is distributed on an
+// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+// KIND, either express or implied. See the License for the
+// specific language governing permissions and limitations
+// under the License.
+
+package org.apache.cloudstack.api.command.admin.resource;
+
+
+import java.util.Date;
+
+import javax.inject.Inject;
+
+import org.apache.cloudstack.acl.RoleType;
+import org.apache.cloudstack.api.APICommand;
+import org.apache.cloudstack.api.ApiConstants;
+import org.apache.cloudstack.api.ApiErrorCode;
+import org.apache.cloudstack.api.BaseAsyncCmd;
+import org.apache.cloudstack.api.BaseCmd;
+import org.apache.cloudstack.api.Parameter;
+import org.apache.cloudstack.api.ResponseObject;
+import org.apache.cloudstack.api.ServerApiException;
+import org.apache.cloudstack.api.response.PurgeExpungedResourcesResponse;
+import org.apache.cloudstack.api.response.SuccessResponse;
+import org.apache.cloudstack.context.CallContext;
+import org.apache.cloudstack.resource.ResourceCleanupService;
+
+import com.cloud.event.EventTypes;
+
+@APICommand(name = "purgeExpungedResources",
+ description = "Purge expunged resources",
+ responseObject = SuccessResponse.class,
+ responseView = ResponseObject.ResponseView.Full,
+ requestHasSensitiveInfo = false,
+ responseHasSensitiveInfo = false,
+ authorized = {RoleType.Admin},
+ since = "4.20")
+public class PurgeExpungedResourcesCmd extends BaseAsyncCmd {
+
+ @Inject
+ ResourceCleanupService resourceCleanupService;
+
+ /////////////////////////////////////////////////////
+ //////////////// API parameters /////////////////////
+ /////////////////////////////////////////////////////
+
+ @Parameter(name = ApiConstants.RESOURCE_TYPE, type = BaseCmd.CommandType.STRING,
+ description = "The type of the resource which need to be purged. Supported types: " +
+ "VirtualMachine")
+ private String resourceType;
+
+ @Parameter(name = ApiConstants.BATCH_SIZE, type = CommandType.LONG,
+ description = "The size of batch used during purging")
+ private Long batchSize;
+
+ @Parameter(name = ApiConstants.START_DATE,
+ type = CommandType.DATE,
+ description = "The start date range of the expunged resources used for purging " +
+ "(use format \"yyyy-MM-dd\" or \"yyyy-MM-dd HH:mm:ss\")")
+ private Date startDate;
+
+ @Parameter(name = ApiConstants.END_DATE,
+ type = CommandType.DATE,
+ description = "The end date range of the expunged resources used for purging " +
+ "(use format \"yyyy-MM-dd\" or \"yyyy-MM-dd HH:mm:ss\")")
+ private Date endDate;
+
+ /////////////////////////////////////////////////////
+ /////////////////// Accessors ///////////////////////
+ /////////////////////////////////////////////////////
+
+
+ public String getResourceType() {
+ return resourceType;
+ }
+
+ public Long getBatchSize() {
+ return batchSize;
+ }
+
+ public Date getStartDate() {
+ return startDate;
+ }
+
+ public Date getEndDate() {
+ return endDate;
+ }
+
+ @Override
+ public long getEntityOwnerId() {
+ return CallContext.current().getCallingAccount().getId();
+ }
+
+ @Override
+ public String getEventType() {
+ return EventTypes.EVENT_PURGE_EXPUNGED_RESOURCES;
+ }
+
+ @Override
+ public String getEventDescription() {
+ return "Purging expunged resources";
+ }
+
+ /////////////////////////////////////////////////////
+ /////////////// API Implementation///////////////////
+ /////////////////////////////////////////////////////
+
+ @Override
+ public void execute() {
+ try {
+ long result = resourceCleanupService.purgeExpungedResources(this);
+ PurgeExpungedResourcesResponse response = new PurgeExpungedResourcesResponse();
+ response.setResourceCount(result);
+ response.setObjectName(getCommandName().toLowerCase());
+ setResponseObject(response);
+ } catch (Exception e) {
+ throw new ServerApiException(ApiErrorCode.INTERNAL_ERROR, e.getLocalizedMessage());
+ }
+ }
+}
diff --git a/api/src/main/java/org/apache/cloudstack/api/command/admin/resource/StartRollingMaintenanceCmd.java b/api/src/main/java/org/apache/cloudstack/api/command/admin/resource/StartRollingMaintenanceCmd.java
index 7ee3e50e0cd9..04fa1002611c 100644
--- a/api/src/main/java/org/apache/cloudstack/api/command/admin/resource/StartRollingMaintenanceCmd.java
+++ b/api/src/main/java/org/apache/cloudstack/api/command/admin/resource/StartRollingMaintenanceCmd.java
@@ -34,7 +34,6 @@
import org.apache.cloudstack.api.response.RollingMaintenanceResponse;
import org.apache.cloudstack.api.response.ZoneResponse;
import org.apache.cloudstack.context.CallContext;
-import org.apache.log4j.Logger;
import com.cloud.event.EventTypes;
import com.cloud.exception.ConcurrentOperationException;
@@ -55,7 +54,6 @@ public class StartRollingMaintenanceCmd extends BaseAsyncCmd {
@Inject
RollingMaintenanceManager manager;
- public static final Logger s_logger = Logger.getLogger(StartRollingMaintenanceCmd.class.getName());
/////////////////////////////////////////////////////
diff --git a/api/src/main/java/org/apache/cloudstack/api/command/admin/resource/UploadCustomCertificateCmd.java b/api/src/main/java/org/apache/cloudstack/api/command/admin/resource/UploadCustomCertificateCmd.java
index 5dfada572162..c5ae6890c3e5 100644
--- a/api/src/main/java/org/apache/cloudstack/api/command/admin/resource/UploadCustomCertificateCmd.java
+++ b/api/src/main/java/org/apache/cloudstack/api/command/admin/resource/UploadCustomCertificateCmd.java
@@ -16,7 +16,6 @@
// under the License.
package org.apache.cloudstack.api.command.admin.resource;
-import org.apache.log4j.Logger;
import org.apache.cloudstack.api.APICommand;
import org.apache.cloudstack.api.ApiConstants;
@@ -34,7 +33,6 @@
description = "Uploads a custom certificate for the console proxy VMs to use for SSL. Can be used to upload a single certificate signed by a known CA. Can also be used, through multiple calls, to upload a chain of certificates from CA to the custom certificate itself.",
requestHasSensitiveInfo = true, responseHasSensitiveInfo = false)
public class UploadCustomCertificateCmd extends BaseAsyncCmd {
- public static final Logger s_logger = Logger.getLogger(UploadCustomCertificateCmd.class.getName());
@Parameter(name = ApiConstants.CERTIFICATE, type = CommandType.STRING, required = true, description = "The certificate to be uploaded.", length = 65535)
diff --git a/api/src/main/java/org/apache/cloudstack/api/command/admin/resource/icon/DeleteResourceIconCmd.java b/api/src/main/java/org/apache/cloudstack/api/command/admin/resource/icon/DeleteResourceIconCmd.java
index 8fb02ea70542..e97a68bddcb6 100644
--- a/api/src/main/java/org/apache/cloudstack/api/command/admin/resource/icon/DeleteResourceIconCmd.java
+++ b/api/src/main/java/org/apache/cloudstack/api/command/admin/resource/icon/DeleteResourceIconCmd.java
@@ -28,7 +28,6 @@
import org.apache.cloudstack.api.ServerApiException;
import org.apache.cloudstack.api.response.SuccessResponse;
import org.apache.cloudstack.context.CallContext;
-import org.apache.log4j.Logger;
import java.util.List;
@@ -37,7 +36,6 @@
requestHasSensitiveInfo = false, responseHasSensitiveInfo = false,
authorized = {RoleType.Admin, RoleType.DomainAdmin, RoleType.ResourceAdmin, RoleType.User})
public class DeleteResourceIconCmd extends BaseCmd {
- public static final Logger s_logger = Logger.getLogger(DeleteResourceIconCmd.class.getName());
/////////////////////////////////////////////////////
//////////////// API parameters /////////////////////
diff --git a/api/src/main/java/org/apache/cloudstack/api/command/admin/resource/icon/ListResourceIconCmd.java b/api/src/main/java/org/apache/cloudstack/api/command/admin/resource/icon/ListResourceIconCmd.java
index 0af11ceec220..6cc3173cf155 100644
--- a/api/src/main/java/org/apache/cloudstack/api/command/admin/resource/icon/ListResourceIconCmd.java
+++ b/api/src/main/java/org/apache/cloudstack/api/command/admin/resource/icon/ListResourceIconCmd.java
@@ -26,7 +26,6 @@
import org.apache.cloudstack.api.Parameter;
import org.apache.cloudstack.api.response.ListResponse;
import org.apache.cloudstack.api.response.ResourceIconResponse;
-import org.apache.log4j.Logger;
import java.util.List;
@@ -35,7 +34,6 @@
requestHasSensitiveInfo = false, responseHasSensitiveInfo = false,
authorized = {RoleType.Admin, RoleType.DomainAdmin, RoleType.ResourceAdmin, RoleType.User})
public class ListResourceIconCmd extends BaseCmd {
- public static final Logger s_logger = Logger.getLogger(ListResourceIconCmd.class.getName());
/////////////////////////////////////////////////////
//////////////// API parameters /////////////////////
diff --git a/api/src/main/java/org/apache/cloudstack/api/command/admin/resource/icon/UploadResourceIconCmd.java b/api/src/main/java/org/apache/cloudstack/api/command/admin/resource/icon/UploadResourceIconCmd.java
index ea5d8995a2af..5a6acd961bf5 100644
--- a/api/src/main/java/org/apache/cloudstack/api/command/admin/resource/icon/UploadResourceIconCmd.java
+++ b/api/src/main/java/org/apache/cloudstack/api/command/admin/resource/icon/UploadResourceIconCmd.java
@@ -31,7 +31,6 @@
import org.apache.cloudstack.api.response.SuccessResponse;
import org.apache.cloudstack.context.CallContext;
import org.apache.commons.lang3.StringUtils;
-import org.apache.log4j.Logger;
import java.awt.image.BufferedImage;
@@ -46,7 +45,6 @@
requestHasSensitiveInfo = false, responseHasSensitiveInfo = false,
authorized = {RoleType.Admin, RoleType.DomainAdmin, RoleType.ResourceAdmin, RoleType.User})
public class UploadResourceIconCmd extends BaseCmd {
- public static final Logger LOGGER = Logger.getLogger(UploadResourceIconCmd.class.getName());
/////////////////////////////////////////////////////
@@ -120,7 +118,7 @@ private boolean imageValidator (String base64Image) {
return false;
}
} catch (Exception e) {
- LOGGER.warn("Data uploaded not a valid image");
+ logger.warn("Data uploaded not a valid image");
return false;
}
return true;
diff --git a/api/src/main/java/org/apache/cloudstack/api/command/admin/router/ConfigureOvsElementCmd.java b/api/src/main/java/org/apache/cloudstack/api/command/admin/router/ConfigureOvsElementCmd.java
index a1b01a1c04fb..4a8c0bc3a3b9 100644
--- a/api/src/main/java/org/apache/cloudstack/api/command/admin/router/ConfigureOvsElementCmd.java
+++ b/api/src/main/java/org/apache/cloudstack/api/command/admin/router/ConfigureOvsElementCmd.java
@@ -29,7 +29,6 @@
import org.apache.cloudstack.api.ServerApiException;
import org.apache.cloudstack.api.response.OvsProviderResponse;
import org.apache.cloudstack.context.CallContext;
-import org.apache.log4j.Logger;
import com.cloud.event.EventTypes;
import com.cloud.exception.ConcurrentOperationException;
@@ -42,8 +41,6 @@
@APICommand(name = "configureOvsElement", responseObject = OvsProviderResponse.class, description = "Configures an ovs element.",
requestHasSensitiveInfo = false, responseHasSensitiveInfo = false)
public class ConfigureOvsElementCmd extends BaseAsyncCmd {
- public static final Logger s_logger = Logger
- .getLogger(ConfigureOvsElementCmd.class.getName());
@Inject
private List _service;
diff --git a/api/src/main/java/org/apache/cloudstack/api/command/admin/router/ConfigureVirtualRouterElementCmd.java b/api/src/main/java/org/apache/cloudstack/api/command/admin/router/ConfigureVirtualRouterElementCmd.java
index b7f7a050d07d..aa119f3aca75 100644
--- a/api/src/main/java/org/apache/cloudstack/api/command/admin/router/ConfigureVirtualRouterElementCmd.java
+++ b/api/src/main/java/org/apache/cloudstack/api/command/admin/router/ConfigureVirtualRouterElementCmd.java
@@ -20,7 +20,6 @@
import javax.inject.Inject;
-import org.apache.log4j.Logger;
import org.apache.cloudstack.api.APICommand;
import org.apache.cloudstack.api.ApiCommandResourceType;
@@ -43,7 +42,6 @@
@APICommand(name = "configureVirtualRouterElement", responseObject = VirtualRouterProviderResponse.class, description = "Configures a virtual router element.",
requestHasSensitiveInfo = false, responseHasSensitiveInfo = false)
public class ConfigureVirtualRouterElementCmd extends BaseAsyncCmd {
- public static final Logger s_logger = Logger.getLogger(ConfigureVirtualRouterElementCmd.class.getName());
@Inject
private List _service;
diff --git a/api/src/main/java/org/apache/cloudstack/api/command/admin/router/CreateVirtualRouterElementCmd.java b/api/src/main/java/org/apache/cloudstack/api/command/admin/router/CreateVirtualRouterElementCmd.java
index f93ca35a06a7..e85531c83c4d 100644
--- a/api/src/main/java/org/apache/cloudstack/api/command/admin/router/CreateVirtualRouterElementCmd.java
+++ b/api/src/main/java/org/apache/cloudstack/api/command/admin/router/CreateVirtualRouterElementCmd.java
@@ -20,7 +20,6 @@
import javax.inject.Inject;
-import org.apache.log4j.Logger;
import org.apache.cloudstack.api.APICommand;
import org.apache.cloudstack.api.ApiConstants;
@@ -43,7 +42,6 @@
@APICommand(name = "createVirtualRouterElement", responseObject = VirtualRouterProviderResponse.class, description = "Create a virtual router element.",
requestHasSensitiveInfo = false, responseHasSensitiveInfo = false)
public class CreateVirtualRouterElementCmd extends BaseAsyncCreateCmd {
- public static final Logger s_logger = Logger.getLogger(CreateVirtualRouterElementCmd.class.getName());
@Inject
private List _service;
diff --git a/api/src/main/java/org/apache/cloudstack/api/command/admin/router/DestroyRouterCmd.java b/api/src/main/java/org/apache/cloudstack/api/command/admin/router/DestroyRouterCmd.java
index d2dce6b9ff34..39ccee47fbeb 100644
--- a/api/src/main/java/org/apache/cloudstack/api/command/admin/router/DestroyRouterCmd.java
+++ b/api/src/main/java/org/apache/cloudstack/api/command/admin/router/DestroyRouterCmd.java
@@ -16,7 +16,6 @@
// under the License.
package org.apache.cloudstack.api.command.admin.router;
-import org.apache.log4j.Logger;
import org.apache.cloudstack.api.APICommand;
import org.apache.cloudstack.api.ApiCommandResourceType;
@@ -38,7 +37,6 @@
@APICommand(name = "destroyRouter", description = "Destroys a router.", responseObject = DomainRouterResponse.class, entityType = {VirtualMachine.class},
requestHasSensitiveInfo = false, responseHasSensitiveInfo = false)
public class DestroyRouterCmd extends BaseAsyncCmd {
- public static final Logger s_logger = Logger.getLogger(DestroyRouterCmd.class.getName());
// ///////////////////////////////////////////////////
// ////////////// API parameters /////////////////////
diff --git a/api/src/main/java/org/apache/cloudstack/api/command/admin/router/GetRouterHealthCheckResultsCmd.java b/api/src/main/java/org/apache/cloudstack/api/command/admin/router/GetRouterHealthCheckResultsCmd.java
index 93a48eba49cc..4bef26e05550 100644
--- a/api/src/main/java/org/apache/cloudstack/api/command/admin/router/GetRouterHealthCheckResultsCmd.java
+++ b/api/src/main/java/org/apache/cloudstack/api/command/admin/router/GetRouterHealthCheckResultsCmd.java
@@ -30,7 +30,6 @@
import org.apache.cloudstack.api.response.RouterHealthCheckResultsListResponse;
import org.apache.cloudstack.context.CallContext;
import org.apache.commons.lang.BooleanUtils;
-import org.apache.log4j.Logger;
import com.cloud.exception.InvalidParameterValueException;
import com.cloud.exception.ResourceUnavailableException;
@@ -47,7 +46,6 @@
responseHasSensitiveInfo = false,
since = "4.14.0")
public class GetRouterHealthCheckResultsCmd extends BaseCmd {
- public static final Logger s_logger = Logger.getLogger(GetRouterHealthCheckResultsCmd.class.getName());
/////////////////////////////////////////////////////
//////////////// API parameters /////////////////////
diff --git a/api/src/main/java/org/apache/cloudstack/api/command/admin/router/ListOvsElementsCmd.java b/api/src/main/java/org/apache/cloudstack/api/command/admin/router/ListOvsElementsCmd.java
index 89b39f87e446..a267aa526691 100644
--- a/api/src/main/java/org/apache/cloudstack/api/command/admin/router/ListOvsElementsCmd.java
+++ b/api/src/main/java/org/apache/cloudstack/api/command/admin/router/ListOvsElementsCmd.java
@@ -26,11 +26,9 @@
import org.apache.cloudstack.api.BaseListCmd;
import org.apache.cloudstack.api.Parameter;
import org.apache.cloudstack.api.ServerApiException;
-import org.apache.cloudstack.api.command.user.network.ListNetworkOfferingsCmd;
import org.apache.cloudstack.api.response.ListResponse;
import org.apache.cloudstack.api.response.OvsProviderResponse;
import org.apache.cloudstack.api.response.ProviderResponse;
-import org.apache.log4j.Logger;
import com.cloud.exception.ConcurrentOperationException;
import com.cloud.exception.InsufficientCapacityException;
@@ -42,8 +40,7 @@
@APICommand(name = "listOvsElements", description = "Lists all available ovs elements.", responseObject = OvsProviderResponse.class,
requestHasSensitiveInfo = false, responseHasSensitiveInfo = false)
public class ListOvsElementsCmd extends BaseListCmd {
- public static final Logger s_logger = Logger
- .getLogger(ListNetworkOfferingsCmd.class.getName());
+
@Inject
private List _service;
// ///////////////////////////////////////////////////
diff --git a/api/src/main/java/org/apache/cloudstack/api/command/admin/router/ListRoutersCmd.java b/api/src/main/java/org/apache/cloudstack/api/command/admin/router/ListRoutersCmd.java
index 6e955e462121..e0cdc0dcf807 100644
--- a/api/src/main/java/org/apache/cloudstack/api/command/admin/router/ListRoutersCmd.java
+++ b/api/src/main/java/org/apache/cloudstack/api/command/admin/router/ListRoutersCmd.java
@@ -17,7 +17,6 @@
package org.apache.cloudstack.api.command.admin.router;
import org.apache.commons.lang.BooleanUtils;
-import org.apache.log4j.Logger;
import org.apache.cloudstack.api.APICommand;
import org.apache.cloudstack.api.ApiCommandResourceType;
@@ -40,7 +39,6 @@
@APICommand(name = "listRouters", description = "List routers.", responseObject = DomainRouterResponse.class, entityType = {VirtualMachine.class},
requestHasSensitiveInfo = false, responseHasSensitiveInfo = false)
public class ListRoutersCmd extends BaseListProjectAndAccountResourcesCmd {
- public static final Logger s_logger = Logger.getLogger(ListRoutersCmd.class.getName());
/////////////////////////////////////////////////////
diff --git a/api/src/main/java/org/apache/cloudstack/api/command/admin/router/ListVirtualRouterElementsCmd.java b/api/src/main/java/org/apache/cloudstack/api/command/admin/router/ListVirtualRouterElementsCmd.java
index 6eb24dce0747..424b8c29d041 100644
--- a/api/src/main/java/org/apache/cloudstack/api/command/admin/router/ListVirtualRouterElementsCmd.java
+++ b/api/src/main/java/org/apache/cloudstack/api/command/admin/router/ListVirtualRouterElementsCmd.java
@@ -21,7 +21,6 @@
import javax.inject.Inject;
-import org.apache.log4j.Logger;
import org.apache.cloudstack.api.APICommand;
import org.apache.cloudstack.api.ApiConstants;
@@ -42,7 +41,6 @@
@APICommand(name = "listVirtualRouterElements", description = "Lists all available virtual router elements.", responseObject = VirtualRouterProviderResponse.class,
requestHasSensitiveInfo = false, responseHasSensitiveInfo = false)
public class ListVirtualRouterElementsCmd extends BaseListCmd {
- public static final Logger s_logger = Logger.getLogger(ListVirtualRouterElementsCmd.class.getName());
// TODO, VirtualRouterElementServer is not singleton in system!
@Inject
diff --git a/api/src/main/java/org/apache/cloudstack/api/command/admin/router/RebootRouterCmd.java b/api/src/main/java/org/apache/cloudstack/api/command/admin/router/RebootRouterCmd.java
index 6e334d7e4422..1d97dd803098 100644
--- a/api/src/main/java/org/apache/cloudstack/api/command/admin/router/RebootRouterCmd.java
+++ b/api/src/main/java/org/apache/cloudstack/api/command/admin/router/RebootRouterCmd.java
@@ -16,7 +16,6 @@
// under the License.
package org.apache.cloudstack.api.command.admin.router;
-import org.apache.log4j.Logger;
import org.apache.cloudstack.api.APICommand;
import org.apache.cloudstack.api.ApiCommandResourceType;
@@ -39,7 +38,6 @@
@APICommand(name = "rebootRouter", description = "Starts a router.", responseObject = DomainRouterResponse.class, entityType = {VirtualMachine.class},
requestHasSensitiveInfo = false, responseHasSensitiveInfo = false)
public class RebootRouterCmd extends BaseAsyncCmd {
- public static final Logger s_logger = Logger.getLogger(RebootRouterCmd.class.getName());
/////////////////////////////////////////////////////
//////////////// API parameters /////////////////////
diff --git a/api/src/main/java/org/apache/cloudstack/api/command/admin/router/StartRouterCmd.java b/api/src/main/java/org/apache/cloudstack/api/command/admin/router/StartRouterCmd.java
index 121b2a1bd11f..24ab78810374 100644
--- a/api/src/main/java/org/apache/cloudstack/api/command/admin/router/StartRouterCmd.java
+++ b/api/src/main/java/org/apache/cloudstack/api/command/admin/router/StartRouterCmd.java
@@ -16,7 +16,6 @@
// under the License.
package org.apache.cloudstack.api.command.admin.router;
-import org.apache.log4j.Logger;
import org.apache.cloudstack.api.APICommand;
import org.apache.cloudstack.api.ApiCommandResourceType;
@@ -41,7 +40,6 @@
@APICommand(name = "startRouter", responseObject = DomainRouterResponse.class, description = "Starts a router.", entityType = {VirtualMachine.class},
requestHasSensitiveInfo = false, responseHasSensitiveInfo = false)
public class StartRouterCmd extends BaseAsyncCmd {
- public static final Logger s_logger = Logger.getLogger(StartRouterCmd.class.getName());
/////////////////////////////////////////////////////
//////////////// API parameters /////////////////////
diff --git a/api/src/main/java/org/apache/cloudstack/api/command/admin/router/StopRouterCmd.java b/api/src/main/java/org/apache/cloudstack/api/command/admin/router/StopRouterCmd.java
index 2da38d904264..971086a57cff 100644
--- a/api/src/main/java/org/apache/cloudstack/api/command/admin/router/StopRouterCmd.java
+++ b/api/src/main/java/org/apache/cloudstack/api/command/admin/router/StopRouterCmd.java
@@ -16,7 +16,6 @@
// under the License.
package org.apache.cloudstack.api.command.admin.router;
-import org.apache.log4j.Logger;
import org.apache.cloudstack.api.APICommand;
import org.apache.cloudstack.api.ApiCommandResourceType;
@@ -40,7 +39,6 @@
@APICommand(name = "stopRouter", description = "Stops a router.", responseObject = DomainRouterResponse.class, entityType = {VirtualMachine.class},
requestHasSensitiveInfo = false, responseHasSensitiveInfo = false)
public class StopRouterCmd extends BaseAsyncCmd {
- public static final Logger s_logger = Logger.getLogger(StopRouterCmd.class.getName());
// ///////////////////////////////////////////////////
// ////////////// API parameters /////////////////////
diff --git a/api/src/main/java/org/apache/cloudstack/api/command/admin/router/UpgradeRouterCmd.java b/api/src/main/java/org/apache/cloudstack/api/command/admin/router/UpgradeRouterCmd.java
index 2d5255614c6e..3265a089d672 100644
--- a/api/src/main/java/org/apache/cloudstack/api/command/admin/router/UpgradeRouterCmd.java
+++ b/api/src/main/java/org/apache/cloudstack/api/command/admin/router/UpgradeRouterCmd.java
@@ -16,7 +16,6 @@
// under the License.
package org.apache.cloudstack.api.command.admin.router;
-import org.apache.log4j.Logger;
import org.apache.cloudstack.api.APICommand;
import org.apache.cloudstack.api.ApiConstants;
@@ -34,7 +33,6 @@
@APICommand(name = "changeServiceForRouter", description = "Upgrades domain router to a new service offering", responseObject = DomainRouterResponse.class, entityType = {VirtualMachine.class},
requestHasSensitiveInfo = false, responseHasSensitiveInfo = false)
public class UpgradeRouterCmd extends BaseCmd {
- public static final Logger s_logger = Logger.getLogger(UpgradeRouterCmd.class.getName());
/////////////////////////////////////////////////////
//////////////// API parameters /////////////////////
diff --git a/api/src/main/java/org/apache/cloudstack/api/command/admin/router/UpgradeRouterTemplateCmd.java b/api/src/main/java/org/apache/cloudstack/api/command/admin/router/UpgradeRouterTemplateCmd.java
index fa0fe5800eeb..74464cab3150 100644
--- a/api/src/main/java/org/apache/cloudstack/api/command/admin/router/UpgradeRouterTemplateCmd.java
+++ b/api/src/main/java/org/apache/cloudstack/api/command/admin/router/UpgradeRouterTemplateCmd.java
@@ -17,7 +17,6 @@
package org.apache.cloudstack.api.command.admin.router;
import java.util.List;
-import org.apache.log4j.Logger;
import org.apache.cloudstack.api.APICommand;
import org.apache.cloudstack.api.ApiCommandResourceType;
@@ -43,7 +42,6 @@
@APICommand(name = "upgradeRouterTemplate", description = "Upgrades router to use newer template", responseObject = BaseResponse.class,
requestHasSensitiveInfo = false, responseHasSensitiveInfo = false)
public class UpgradeRouterTemplateCmd extends org.apache.cloudstack.api.BaseCmd {
- public static final Logger s_logger = Logger.getLogger(UpgradeRouterTemplateCmd.class.getName());
/////////////////////////////////////////////////////
//////////////// API parameters /////////////////////
diff --git a/api/src/main/java/org/apache/cloudstack/api/command/admin/storage/AddImageStoreCmd.java b/api/src/main/java/org/apache/cloudstack/api/command/admin/storage/AddImageStoreCmd.java
index b8ab1461a2ba..7c8f0e21afbb 100644
--- a/api/src/main/java/org/apache/cloudstack/api/command/admin/storage/AddImageStoreCmd.java
+++ b/api/src/main/java/org/apache/cloudstack/api/command/admin/storage/AddImageStoreCmd.java
@@ -21,7 +21,6 @@
import java.util.Iterator;
import java.util.Map;
-import org.apache.log4j.Logger;
import org.apache.cloudstack.api.APICommand;
import org.apache.cloudstack.api.ApiConstants;
@@ -39,7 +38,6 @@
@APICommand(name = "addImageStore", description = "Adds backup image store.", responseObject = ImageStoreResponse.class, since = "4.2.0",
requestHasSensitiveInfo = false, responseHasSensitiveInfo = false)
public class AddImageStoreCmd extends BaseCmd {
- public static final Logger s_logger = Logger.getLogger(AddImageStoreCmd.class.getName());
/////////////////////////////////////////////////////
//////////////// API parameters /////////////////////
@@ -137,7 +135,7 @@ public void execute(){
throw new ServerApiException(ApiErrorCode.INTERNAL_ERROR, "Failed to add secondary storage");
}
} catch (DiscoveryException ex) {
- s_logger.warn("Exception: ", ex);
+ logger.warn("Exception: ", ex);
throw new ServerApiException(ApiErrorCode.INTERNAL_ERROR, ex.getMessage());
}
}
diff --git a/api/src/main/java/org/apache/cloudstack/api/command/admin/storage/AddImageStoreS3CMD.java b/api/src/main/java/org/apache/cloudstack/api/command/admin/storage/AddImageStoreS3CMD.java
index 34ff171b91fa..2fe3c7cd106a 100644
--- a/api/src/main/java/org/apache/cloudstack/api/command/admin/storage/AddImageStoreS3CMD.java
+++ b/api/src/main/java/org/apache/cloudstack/api/command/admin/storage/AddImageStoreS3CMD.java
@@ -38,7 +38,6 @@
import java.util.Map;
import com.cloud.utils.storage.S3.ClientOptions;
-import org.apache.log4j.Logger;
import org.apache.cloudstack.api.APICommand;
import org.apache.cloudstack.api.ApiConstants;
@@ -59,7 +58,6 @@
@APICommand(name = "addImageStoreS3", description = "Adds S3 Image Store", responseObject = ImageStoreResponse.class, since = "4.7.0",
requestHasSensitiveInfo = true, responseHasSensitiveInfo = false)
public final class AddImageStoreS3CMD extends BaseCmd implements ClientOptions {
- public static final Logger s_logger = Logger.getLogger(AddImageStoreS3CMD.class.getName());
private static final String s_name = "addImageStoreS3Response";
@@ -141,7 +139,7 @@ public void execute() throws ResourceUnavailableException, InsufficientCapacityE
throw new ServerApiException(ApiErrorCode.INTERNAL_ERROR, "Failed to add S3 Image Store.");
}
} catch (DiscoveryException ex) {
- s_logger.warn("Exception: ", ex);
+ logger.warn("Exception: ", ex);
throw new ServerApiException(ApiErrorCode.INTERNAL_ERROR, ex.getMessage());
}
}
diff --git a/api/src/main/java/org/apache/cloudstack/api/command/admin/storage/AddObjectStoragePoolCmd.java b/api/src/main/java/org/apache/cloudstack/api/command/admin/storage/AddObjectStoragePoolCmd.java
index a538962e076b..b779ba2a2b47 100644
--- a/api/src/main/java/org/apache/cloudstack/api/command/admin/storage/AddObjectStoragePoolCmd.java
+++ b/api/src/main/java/org/apache/cloudstack/api/command/admin/storage/AddObjectStoragePoolCmd.java
@@ -25,7 +25,6 @@
import org.apache.cloudstack.api.Parameter;
import org.apache.cloudstack.api.ServerApiException;
import org.apache.cloudstack.api.response.ObjectStoreResponse;
-import org.apache.log4j.Logger;
import java.util.Collection;
import java.util.HashMap;
@@ -35,7 +34,6 @@
@APICommand(name = "addObjectStoragePool", description = "Adds a object storage pool", responseObject = ObjectStoreResponse.class, since = "4.19.0",
requestHasSensitiveInfo = false, responseHasSensitiveInfo = false)
public class AddObjectStoragePoolCmd extends BaseCmd {
- public static final Logger s_logger = Logger.getLogger(AddObjectStoragePoolCmd.class.getName());
/////////////////////////////////////////////////////
//////////////// API parameters /////////////////////
@@ -125,7 +123,7 @@ public void execute(){
throw new ServerApiException(ApiErrorCode.INTERNAL_ERROR, "Failed to add object storage");
}
} catch (Exception ex) {
- s_logger.error("Exception: ", ex);
+ logger.error("Exception: ", ex);
throw new ServerApiException(ApiErrorCode.INTERNAL_ERROR, ex.getMessage());
}
}
diff --git a/api/src/main/java/org/apache/cloudstack/api/command/admin/storage/CancelPrimaryStorageMaintenanceCmd.java b/api/src/main/java/org/apache/cloudstack/api/command/admin/storage/CancelPrimaryStorageMaintenanceCmd.java
index a694aba30fbe..7e925f286d09 100644
--- a/api/src/main/java/org/apache/cloudstack/api/command/admin/storage/CancelPrimaryStorageMaintenanceCmd.java
+++ b/api/src/main/java/org/apache/cloudstack/api/command/admin/storage/CancelPrimaryStorageMaintenanceCmd.java
@@ -16,7 +16,6 @@
// under the License.
package org.apache.cloudstack.api.command.admin.storage;
-import org.apache.log4j.Logger;
import org.apache.cloudstack.api.APICommand;
import org.apache.cloudstack.api.ApiCommandResourceType;
@@ -36,7 +35,6 @@
@APICommand(name = "cancelStorageMaintenance", description = "Cancels maintenance for primary storage", responseObject = StoragePoolResponse.class,
requestHasSensitiveInfo = false, responseHasSensitiveInfo = false)
public class CancelPrimaryStorageMaintenanceCmd extends BaseAsyncCmd {
- public static final Logger s_logger = Logger.getLogger(CancelPrimaryStorageMaintenanceCmd.class.getName());
private static final String s_name = "cancelprimarystoragemaintenanceresponse";
diff --git a/api/src/main/java/org/apache/cloudstack/api/command/admin/storage/CreateSecondaryStagingStoreCmd.java b/api/src/main/java/org/apache/cloudstack/api/command/admin/storage/CreateSecondaryStagingStoreCmd.java
index 08069446893b..5776eb6464cf 100644
--- a/api/src/main/java/org/apache/cloudstack/api/command/admin/storage/CreateSecondaryStagingStoreCmd.java
+++ b/api/src/main/java/org/apache/cloudstack/api/command/admin/storage/CreateSecondaryStagingStoreCmd.java
@@ -21,7 +21,6 @@
import java.util.HashMap;
import java.util.Map;
-import org.apache.log4j.Logger;
import org.apache.cloudstack.api.APICommand;
import org.apache.cloudstack.api.ApiConstants;
@@ -38,7 +37,6 @@
@APICommand(name = "createSecondaryStagingStore", description = "create secondary staging store.", responseObject = ImageStoreResponse.class,
requestHasSensitiveInfo = false, responseHasSensitiveInfo = false)
public class CreateSecondaryStagingStoreCmd extends BaseCmd {
- public static final Logger s_logger = Logger.getLogger(CreateSecondaryStagingStoreCmd.class.getName());
/////////////////////////////////////////////////////
//////////////// API parameters /////////////////////
@@ -113,7 +111,7 @@ public void execute() {
throw new ServerApiException(ApiErrorCode.INTERNAL_ERROR, "Failed to add secondary storage");
}
} catch (Exception ex) {
- s_logger.warn("Exception: ", ex);
+ logger.warn("Exception: ", ex);
throw new ServerApiException(ApiErrorCode.INTERNAL_ERROR, ex.getMessage());
}
}
diff --git a/api/src/main/java/org/apache/cloudstack/api/command/admin/storage/CreateStoragePoolCmd.java b/api/src/main/java/org/apache/cloudstack/api/command/admin/storage/CreateStoragePoolCmd.java
index 477d7570dfad..75813a7aabf5 100644
--- a/api/src/main/java/org/apache/cloudstack/api/command/admin/storage/CreateStoragePoolCmd.java
+++ b/api/src/main/java/org/apache/cloudstack/api/command/admin/storage/CreateStoragePoolCmd.java
@@ -19,7 +19,6 @@
import java.net.UnknownHostException;
import java.util.Map;
-import org.apache.log4j.Logger;
import org.apache.cloudstack.api.APICommand;
import org.apache.cloudstack.api.ApiConstants;
@@ -41,7 +40,6 @@
@APICommand(name = "createStoragePool", description = "Creates a storage pool.", responseObject = StoragePoolResponse.class,
requestHasSensitiveInfo = false, responseHasSensitiveInfo = false)
public class CreateStoragePoolCmd extends BaseCmd {
- public static final Logger s_logger = Logger.getLogger(CreateStoragePoolCmd.class.getName());
/////////////////////////////////////////////////////
@@ -170,13 +168,13 @@ public void execute() {
throw new ServerApiException(ApiErrorCode.INTERNAL_ERROR, "Failed to add storage pool");
}
} catch (ResourceUnavailableException ex1) {
- s_logger.warn("Exception: ", ex1);
+ logger.warn("Exception: ", ex1);
throw new ServerApiException(ApiErrorCode.RESOURCE_UNAVAILABLE_ERROR, ex1.getMessage());
} catch (ResourceInUseException ex2) {
- s_logger.warn("Exception: ", ex2);
+ logger.warn("Exception: ", ex2);
throw new ServerApiException(ApiErrorCode.RESOURCE_IN_USE_ERROR, ex2.getMessage());
} catch (UnknownHostException ex3) {
- s_logger.warn("Exception: ", ex3);
+ logger.warn("Exception: ", ex3);
throw new ServerApiException(ApiErrorCode.INTERNAL_ERROR, ex3.getMessage());
} catch (Exception ex4) {
throw new ServerApiException(ApiErrorCode.INTERNAL_ERROR, ex4.getMessage());
diff --git a/api/src/main/java/org/apache/cloudstack/api/command/admin/storage/DeleteImageStoreCmd.java b/api/src/main/java/org/apache/cloudstack/api/command/admin/storage/DeleteImageStoreCmd.java
index 194f0baf603e..50a9d9a6f397 100644
--- a/api/src/main/java/org/apache/cloudstack/api/command/admin/storage/DeleteImageStoreCmd.java
+++ b/api/src/main/java/org/apache/cloudstack/api/command/admin/storage/DeleteImageStoreCmd.java
@@ -16,7 +16,6 @@
// under the License.
package org.apache.cloudstack.api.command.admin.storage;
-import org.apache.log4j.Logger;
import org.apache.cloudstack.api.APICommand;
import org.apache.cloudstack.api.ApiConstants;
@@ -32,7 +31,6 @@
@APICommand(name = "deleteImageStore", description = "Deletes an image store or Secondary Storage.", responseObject = SuccessResponse.class, since = "4.2.0",
requestHasSensitiveInfo = false, responseHasSensitiveInfo = false)
public class DeleteImageStoreCmd extends BaseCmd {
- public static final Logger s_logger = Logger.getLogger(DeleteImageStoreCmd.class.getName());
// ///////////////////////////////////////////////////
diff --git a/api/src/main/java/org/apache/cloudstack/api/command/admin/storage/DeleteObjectStoragePoolCmd.java b/api/src/main/java/org/apache/cloudstack/api/command/admin/storage/DeleteObjectStoragePoolCmd.java
index ed305d9689d5..6cb38d4c862c 100644
--- a/api/src/main/java/org/apache/cloudstack/api/command/admin/storage/DeleteObjectStoragePoolCmd.java
+++ b/api/src/main/java/org/apache/cloudstack/api/command/admin/storage/DeleteObjectStoragePoolCmd.java
@@ -25,12 +25,10 @@
import org.apache.cloudstack.api.ServerApiException;
import org.apache.cloudstack.api.response.ObjectStoreResponse;
import org.apache.cloudstack.api.response.SuccessResponse;
-import org.apache.log4j.Logger;
@APICommand(name = "deleteObjectStoragePool", description = "Deletes an Object Storage Pool", responseObject = SuccessResponse.class, since = "4.19.0",
requestHasSensitiveInfo = false, responseHasSensitiveInfo = false)
public class DeleteObjectStoragePoolCmd extends BaseCmd {
- public static final Logger s_logger = Logger.getLogger(DeleteObjectStoragePoolCmd.class.getName());
// ///////////////////////////////////////////////////
// ////////////// API parameters /////////////////////
diff --git a/api/src/main/java/org/apache/cloudstack/api/command/admin/storage/DeletePoolCmd.java b/api/src/main/java/org/apache/cloudstack/api/command/admin/storage/DeletePoolCmd.java
index d87768e7f393..28f71e0740f7 100644
--- a/api/src/main/java/org/apache/cloudstack/api/command/admin/storage/DeletePoolCmd.java
+++ b/api/src/main/java/org/apache/cloudstack/api/command/admin/storage/DeletePoolCmd.java
@@ -16,7 +16,6 @@
// under the License.
package org.apache.cloudstack.api.command.admin.storage;
-import org.apache.log4j.Logger;
import org.apache.cloudstack.api.APICommand;
import org.apache.cloudstack.api.ApiConstants;
@@ -34,7 +33,6 @@
@APICommand(name = "deleteStoragePool", description = "Deletes a storage pool.", responseObject = SuccessResponse.class,
requestHasSensitiveInfo = false, responseHasSensitiveInfo = false)
public class DeletePoolCmd extends BaseCmd {
- public static final Logger s_logger = Logger.getLogger(DeletePoolCmd.class.getName());
// ///////////////////////////////////////////////////
// ////////////// API parameters /////////////////////
diff --git a/api/src/main/java/org/apache/cloudstack/api/command/admin/storage/DeleteSecondaryStagingStoreCmd.java b/api/src/main/java/org/apache/cloudstack/api/command/admin/storage/DeleteSecondaryStagingStoreCmd.java
index 34a26461fa82..a0c2731ccdaf 100644
--- a/api/src/main/java/org/apache/cloudstack/api/command/admin/storage/DeleteSecondaryStagingStoreCmd.java
+++ b/api/src/main/java/org/apache/cloudstack/api/command/admin/storage/DeleteSecondaryStagingStoreCmd.java
@@ -16,7 +16,6 @@
// under the License.
package org.apache.cloudstack.api.command.admin.storage;
-import org.apache.log4j.Logger;
import org.apache.cloudstack.api.APICommand;
import org.apache.cloudstack.api.ApiConstants;
@@ -32,7 +31,6 @@
@APICommand(name = "deleteSecondaryStagingStore", description = "Deletes a secondary staging store .", responseObject = SuccessResponse.class, since = "4.2.0",
requestHasSensitiveInfo = false, responseHasSensitiveInfo = false)
public class DeleteSecondaryStagingStoreCmd extends BaseCmd {
- public static final Logger s_logger = Logger.getLogger(DeleteSecondaryStagingStoreCmd.class.getName());
// ///////////////////////////////////////////////////
diff --git a/api/src/main/java/org/apache/cloudstack/api/command/admin/storage/FindStoragePoolsForMigrationCmd.java b/api/src/main/java/org/apache/cloudstack/api/command/admin/storage/FindStoragePoolsForMigrationCmd.java
index b19fa78bdd48..a45f72766dc6 100644
--- a/api/src/main/java/org/apache/cloudstack/api/command/admin/storage/FindStoragePoolsForMigrationCmd.java
+++ b/api/src/main/java/org/apache/cloudstack/api/command/admin/storage/FindStoragePoolsForMigrationCmd.java
@@ -30,7 +30,6 @@
import org.apache.cloudstack.api.response.StoragePoolResponse;
import org.apache.cloudstack.api.response.VolumeResponse;
import org.apache.commons.lang3.StringUtils;
-import org.apache.log4j.Logger;
import com.cloud.storage.StoragePool;
import com.cloud.utils.Pair;
@@ -38,7 +37,6 @@
@APICommand(name = "findStoragePoolsForMigration", description = "Lists storage pools available for migration of a volume.", responseObject = StoragePoolResponse.class,
requestHasSensitiveInfo = false, responseHasSensitiveInfo = false)
public class FindStoragePoolsForMigrationCmd extends BaseListCmd {
- public static final Logger s_logger = Logger.getLogger(FindStoragePoolsForMigrationCmd.class.getName());
/////////////////////////////////////////////////////
diff --git a/api/src/main/java/org/apache/cloudstack/api/command/admin/storage/ListImageStoresCmd.java b/api/src/main/java/org/apache/cloudstack/api/command/admin/storage/ListImageStoresCmd.java
index a9eac3ed76d0..5270569de44e 100644
--- a/api/src/main/java/org/apache/cloudstack/api/command/admin/storage/ListImageStoresCmd.java
+++ b/api/src/main/java/org/apache/cloudstack/api/command/admin/storage/ListImageStoresCmd.java
@@ -23,12 +23,10 @@
import org.apache.cloudstack.api.response.ImageStoreResponse;
import org.apache.cloudstack.api.response.ListResponse;
import org.apache.cloudstack.api.response.ZoneResponse;
-import org.apache.log4j.Logger;
@APICommand(name = "listImageStores", description = "Lists image stores.", responseObject = ImageStoreResponse.class, since = "4.2.0",
requestHasSensitiveInfo = false, responseHasSensitiveInfo = false)
public class ListImageStoresCmd extends BaseListCmd {
- public static final Logger s_logger = Logger.getLogger(ListImageStoresCmd.class.getName());
/////////////////////////////////////////////////////
diff --git a/api/src/main/java/org/apache/cloudstack/api/command/admin/storage/ListObjectStoragePoolsCmd.java b/api/src/main/java/org/apache/cloudstack/api/command/admin/storage/ListObjectStoragePoolsCmd.java
index 9d8d8eccc3ce..005a1a54444d 100644
--- a/api/src/main/java/org/apache/cloudstack/api/command/admin/storage/ListObjectStoragePoolsCmd.java
+++ b/api/src/main/java/org/apache/cloudstack/api/command/admin/storage/ListObjectStoragePoolsCmd.java
@@ -23,13 +23,11 @@
import org.apache.cloudstack.api.Parameter;
import org.apache.cloudstack.api.response.ListResponse;
import org.apache.cloudstack.api.response.ObjectStoreResponse;
-import org.apache.log4j.Logger;
@APICommand(name = "listObjectStoragePools", description = "Lists object storage pools.", responseObject = ObjectStoreResponse.class, since = "4.19.0",
requestHasSensitiveInfo = false, responseHasSensitiveInfo = false,
authorized = {RoleType.Admin, RoleType.ResourceAdmin, RoleType.DomainAdmin, RoleType.User})
public class ListObjectStoragePoolsCmd extends BaseListCmd {
- public static final Logger s_logger = Logger.getLogger(ListObjectStoragePoolsCmd.class.getName());
/////////////////////////////////////////////////////
diff --git a/api/src/main/java/org/apache/cloudstack/api/command/admin/storage/ListSecondaryStagingStoresCmd.java b/api/src/main/java/org/apache/cloudstack/api/command/admin/storage/ListSecondaryStagingStoresCmd.java
index e315c8a6d47d..0cad16a247fd 100644
--- a/api/src/main/java/org/apache/cloudstack/api/command/admin/storage/ListSecondaryStagingStoresCmd.java
+++ b/api/src/main/java/org/apache/cloudstack/api/command/admin/storage/ListSecondaryStagingStoresCmd.java
@@ -16,7 +16,6 @@
// under the License.
package org.apache.cloudstack.api.command.admin.storage;
-import org.apache.log4j.Logger;
import org.apache.cloudstack.api.APICommand;
import org.apache.cloudstack.api.ApiConstants;
@@ -29,7 +28,6 @@
@APICommand(name = "listSecondaryStagingStores", description = "Lists secondary staging stores.", responseObject = ImageStoreResponse.class, since = "4.2.0",
requestHasSensitiveInfo = false, responseHasSensitiveInfo = false)
public class ListSecondaryStagingStoresCmd extends BaseListCmd {
- public static final Logger s_logger = Logger.getLogger(ListSecondaryStagingStoresCmd.class.getName());
private static final String s_name = "listsecondarystagingstoreresponse";
diff --git a/api/src/main/java/org/apache/cloudstack/api/command/admin/storage/ListStoragePoolsCmd.java b/api/src/main/java/org/apache/cloudstack/api/command/admin/storage/ListStoragePoolsCmd.java
index 3da99de050b1..57a87939b6bd 100644
--- a/api/src/main/java/org/apache/cloudstack/api/command/admin/storage/ListStoragePoolsCmd.java
+++ b/api/src/main/java/org/apache/cloudstack/api/command/admin/storage/ListStoragePoolsCmd.java
@@ -16,7 +16,6 @@
// under the License.
package org.apache.cloudstack.api.command.admin.storage;
-import org.apache.log4j.Logger;
import org.apache.cloudstack.api.APICommand;
import org.apache.cloudstack.api.ApiCommandResourceType;
@@ -33,7 +32,6 @@
@APICommand(name = "listStoragePools", description = "Lists storage pools.", responseObject = StoragePoolResponse.class,
requestHasSensitiveInfo = false, responseHasSensitiveInfo = false)
public class ListStoragePoolsCmd extends BaseListCmd {
- public static final Logger s_logger = Logger.getLogger(ListStoragePoolsCmd.class.getName());
/////////////////////////////////////////////////////
diff --git a/api/src/main/java/org/apache/cloudstack/api/command/admin/storage/ListStorageProvidersCmd.java b/api/src/main/java/org/apache/cloudstack/api/command/admin/storage/ListStorageProvidersCmd.java
index 347b66061f6e..efe7a23b5cb4 100644
--- a/api/src/main/java/org/apache/cloudstack/api/command/admin/storage/ListStorageProvidersCmd.java
+++ b/api/src/main/java/org/apache/cloudstack/api/command/admin/storage/ListStorageProvidersCmd.java
@@ -20,7 +20,6 @@
import java.util.List;
-import org.apache.log4j.Logger;
import org.apache.cloudstack.api.APICommand;
import org.apache.cloudstack.api.ApiConstants;
@@ -40,7 +39,6 @@
@APICommand(name = "listStorageProviders", description = "Lists storage providers.", responseObject = StorageProviderResponse.class,
requestHasSensitiveInfo = false, responseHasSensitiveInfo = false)
public class ListStorageProvidersCmd extends BaseListCmd {
- public static final Logger s_logger = Logger.getLogger(ListStorageProvidersCmd.class.getName());
@Parameter(name = ApiConstants.TYPE, type = CommandType.STRING, description = "the type of storage provider: either primary or image", required = true)
private String type;
diff --git a/api/src/main/java/org/apache/cloudstack/api/command/admin/storage/ListStorageTagsCmd.java b/api/src/main/java/org/apache/cloudstack/api/command/admin/storage/ListStorageTagsCmd.java
index 43981ee1a3dc..d9bb5d4cd930 100644
--- a/api/src/main/java/org/apache/cloudstack/api/command/admin/storage/ListStorageTagsCmd.java
+++ b/api/src/main/java/org/apache/cloudstack/api/command/admin/storage/ListStorageTagsCmd.java
@@ -18,7 +18,6 @@
*/
package org.apache.cloudstack.api.command.admin.storage;
-import org.apache.log4j.Logger;
import org.apache.cloudstack.api.APICommand;
import org.apache.cloudstack.api.ApiCommandResourceType;
import org.apache.cloudstack.api.BaseListCmd;
@@ -27,7 +26,6 @@
@APICommand(name = "listStorageTags", description = "Lists storage tags", responseObject = StorageTagResponse.class, requestHasSensitiveInfo = false, responseHasSensitiveInfo = false)
public class ListStorageTagsCmd extends BaseListCmd {
- public static final Logger s_logger = Logger.getLogger(ListStorageTagsCmd.class.getName());
// ///////////////////////////////////////////////////
diff --git a/api/src/main/java/org/apache/cloudstack/api/command/admin/storage/MigrateSecondaryStorageDataCmd.java b/api/src/main/java/org/apache/cloudstack/api/command/admin/storage/MigrateSecondaryStorageDataCmd.java
index de9b55a9ff12..8f5a7aced3fe 100644
--- a/api/src/main/java/org/apache/cloudstack/api/command/admin/storage/MigrateSecondaryStorageDataCmd.java
+++ b/api/src/main/java/org/apache/cloudstack/api/command/admin/storage/MigrateSecondaryStorageDataCmd.java
@@ -28,7 +28,6 @@
import org.apache.cloudstack.api.response.ImageStoreResponse;
import org.apache.cloudstack.api.response.MigrationResponse;
import org.apache.cloudstack.context.CallContext;
-import org.apache.log4j.Logger;
import com.cloud.event.EventTypes;
@@ -41,7 +40,6 @@
authorized = {RoleType.Admin})
public class MigrateSecondaryStorageDataCmd extends BaseAsyncCmd {
- public static final Logger LOGGER = Logger.getLogger(MigrateSecondaryStorageDataCmd.class.getName());
/////////////////////////////////////////////////////
diff --git a/api/src/main/java/org/apache/cloudstack/api/command/admin/storage/PreparePrimaryStorageForMaintenanceCmd.java b/api/src/main/java/org/apache/cloudstack/api/command/admin/storage/PreparePrimaryStorageForMaintenanceCmd.java
index ddabefb14c86..818b3a5bbeab 100644
--- a/api/src/main/java/org/apache/cloudstack/api/command/admin/storage/PreparePrimaryStorageForMaintenanceCmd.java
+++ b/api/src/main/java/org/apache/cloudstack/api/command/admin/storage/PreparePrimaryStorageForMaintenanceCmd.java
@@ -16,7 +16,6 @@
// under the License.
package org.apache.cloudstack.api.command.admin.storage;
-import org.apache.log4j.Logger;
import org.apache.cloudstack.api.APICommand;
import org.apache.cloudstack.api.ApiCommandResourceType;
@@ -37,7 +36,6 @@
@APICommand(name = "enableStorageMaintenance", description = "Puts storage pool into maintenance state", responseObject = StoragePoolResponse.class,
requestHasSensitiveInfo = false, responseHasSensitiveInfo = false)
public class PreparePrimaryStorageForMaintenanceCmd extends BaseAsyncCmd {
- public static final Logger s_logger = Logger.getLogger(PreparePrimaryStorageForMaintenanceCmd.class.getName());
private static final String s_name = "prepareprimarystorageformaintenanceresponse";
/////////////////////////////////////////////////////
diff --git a/api/src/main/java/org/apache/cloudstack/api/command/admin/storage/SyncStoragePoolCmd.java b/api/src/main/java/org/apache/cloudstack/api/command/admin/storage/SyncStoragePoolCmd.java
index d7a783a4ff43..9f81f2f6c86c 100644
--- a/api/src/main/java/org/apache/cloudstack/api/command/admin/storage/SyncStoragePoolCmd.java
+++ b/api/src/main/java/org/apache/cloudstack/api/command/admin/storage/SyncStoragePoolCmd.java
@@ -33,7 +33,6 @@
import org.apache.cloudstack.api.ApiErrorCode;
import org.apache.cloudstack.context.CallContext;
-import java.util.logging.Logger;
@APICommand(name = "syncStoragePool",
description = "Sync storage pool with management server (currently supported for Datastore Cluster in VMware and syncs the datastores in it)",
@@ -45,7 +44,6 @@
)
public class SyncStoragePoolCmd extends BaseAsyncCmd {
- public static final Logger LOGGER = Logger.getLogger(SyncStoragePoolCmd.class.getName());
/////////////////////////////////////////////////////
//////////////// API parameters /////////////////////
diff --git a/api/src/main/java/org/apache/cloudstack/api/command/admin/storage/UpdateCloudToUseObjectStoreCmd.java b/api/src/main/java/org/apache/cloudstack/api/command/admin/storage/UpdateCloudToUseObjectStoreCmd.java
index 3351d389c6f6..5ac34f27bada 100644
--- a/api/src/main/java/org/apache/cloudstack/api/command/admin/storage/UpdateCloudToUseObjectStoreCmd.java
+++ b/api/src/main/java/org/apache/cloudstack/api/command/admin/storage/UpdateCloudToUseObjectStoreCmd.java
@@ -21,7 +21,6 @@
import java.util.Iterator;
import java.util.Map;
-import org.apache.log4j.Logger;
import org.apache.cloudstack.api.APICommand;
import org.apache.cloudstack.api.ApiConstants;
@@ -38,7 +37,6 @@
@APICommand(name = "updateCloudToUseObjectStore", description = "Migrate current NFS secondary storages to use object store.", responseObject = ImageStoreResponse.class, since = "4.3.0",
requestHasSensitiveInfo = false, responseHasSensitiveInfo = false)
public class UpdateCloudToUseObjectStoreCmd extends BaseCmd {
- public static final Logger s_logger = Logger.getLogger(UpdateCloudToUseObjectStoreCmd.class.getName());
/////////////////////////////////////////////////////
//////////////// API parameters /////////////////////
@@ -130,7 +128,7 @@ public void execute(){
throw new ServerApiException(ApiErrorCode.INTERNAL_ERROR, "Failed to add secondary storage");
}
} catch (DiscoveryException ex) {
- s_logger.warn("Exception: ", ex);
+ logger.warn("Exception: ", ex);
throw new ServerApiException(ApiErrorCode.INTERNAL_ERROR, ex.getMessage());
}
}
diff --git a/api/src/main/java/org/apache/cloudstack/api/command/admin/storage/UpdateImageStoreCmd.java b/api/src/main/java/org/apache/cloudstack/api/command/admin/storage/UpdateImageStoreCmd.java
index 87d056cabf7b..0e1631a46ba2 100644
--- a/api/src/main/java/org/apache/cloudstack/api/command/admin/storage/UpdateImageStoreCmd.java
+++ b/api/src/main/java/org/apache/cloudstack/api/command/admin/storage/UpdateImageStoreCmd.java
@@ -25,14 +25,12 @@
import org.apache.cloudstack.api.ServerApiException;
import org.apache.cloudstack.api.response.ImageStoreResponse;
import org.apache.cloudstack.context.CallContext;
-import org.apache.log4j.Logger;
import com.cloud.storage.ImageStore;
@APICommand(name = UpdateImageStoreCmd.APINAME, description = "Updates image store read-only status", responseObject = ImageStoreResponse.class, entityType = {ImageStore.class},
requestHasSensitiveInfo = false, responseHasSensitiveInfo = false, since = "4.15.0")
public class UpdateImageStoreCmd extends BaseCmd {
- private static final Logger LOG = Logger.getLogger(UpdateImageStoreCmd.class.getName());
public static final String APINAME = "updateImageStore";
/////////////////////////////////////////////////////
diff --git a/api/src/main/java/org/apache/cloudstack/api/command/admin/storage/UpdateStorageCapabilitiesCmd.java b/api/src/main/java/org/apache/cloudstack/api/command/admin/storage/UpdateStorageCapabilitiesCmd.java
index 8403d3c62418..716c95b45c3e 100644
--- a/api/src/main/java/org/apache/cloudstack/api/command/admin/storage/UpdateStorageCapabilitiesCmd.java
+++ b/api/src/main/java/org/apache/cloudstack/api/command/admin/storage/UpdateStorageCapabilitiesCmd.java
@@ -29,14 +29,12 @@
import org.apache.cloudstack.api.response.ListResponse;
import org.apache.cloudstack.api.response.StoragePoolResponse;
import org.apache.cloudstack.context.CallContext;
-import org.apache.log4j.Logger;
@APICommand(name = "updateStorageCapabilities", description = "Syncs capabilities of storage pools",
responseObject = StoragePoolResponse.class,
requestHasSensitiveInfo = false, responseHasSensitiveInfo = false, since = "4.16.0")
public class UpdateStorageCapabilitiesCmd extends BaseCmd {
- private static final Logger LOG = Logger.getLogger(UpdateStorageCapabilitiesCmd.class.getName());
/////////////////////////////////////////////////////
//////////////// API parameters /////////////////////
diff --git a/api/src/main/java/org/apache/cloudstack/api/command/admin/storage/UpdateStoragePoolCmd.java b/api/src/main/java/org/apache/cloudstack/api/command/admin/storage/UpdateStoragePoolCmd.java
index 7a907e0f76a7..f2d7bbeb189e 100644
--- a/api/src/main/java/org/apache/cloudstack/api/command/admin/storage/UpdateStoragePoolCmd.java
+++ b/api/src/main/java/org/apache/cloudstack/api/command/admin/storage/UpdateStoragePoolCmd.java
@@ -20,7 +20,6 @@
import java.util.Map;
import org.apache.cloudstack.api.ApiCommandResourceType;
-import org.apache.log4j.Logger;
import org.apache.cloudstack.api.APICommand;
import org.apache.cloudstack.api.ApiConstants;
@@ -32,12 +31,13 @@
import com.cloud.storage.StoragePool;
import com.cloud.user.Account;
+import org.apache.commons.collections.MapUtils;
+import org.apache.commons.lang3.ObjectUtils;
@SuppressWarnings("rawtypes")
@APICommand(name = "updateStoragePool", description = "Updates a storage pool.", responseObject = StoragePoolResponse.class, since = "3.0.0",
requestHasSensitiveInfo = false, responseHasSensitiveInfo = false)
public class UpdateStoragePoolCmd extends BaseCmd {
- public static final Logger s_logger = Logger.getLogger(UpdateStoragePoolCmd.class.getName());
/////////////////////////////////////////////////////
@@ -149,7 +149,17 @@ public void setUrl(String url) {
@Override
public void execute() {
- StoragePool result = _storageService.updateStoragePool(this);
+ StoragePool result = null;
+ if (ObjectUtils.anyNotNull(name, capacityIops, capacityBytes, url, isTagARule, tags) ||
+ MapUtils.isNotEmpty(details)) {
+ result = _storageService.updateStoragePool(this);
+ }
+
+ if (enabled != null) {
+ result = enabled ? _storageService.enablePrimaryStoragePool(id)
+ : _storageService.disablePrimaryStoragePool(id);
+ }
+
if (result != null) {
StoragePoolResponse response = _responseGenerator.createStoragePoolResponse(result);
response.setResponseName(getCommandName());
diff --git a/api/src/main/java/org/apache/cloudstack/api/command/admin/storage/heuristics/RemoveSecondaryStorageSelectorCmd.java b/api/src/main/java/org/apache/cloudstack/api/command/admin/storage/heuristics/RemoveSecondaryStorageSelectorCmd.java
index 79554f44782a..468c87d4d995 100644
--- a/api/src/main/java/org/apache/cloudstack/api/command/admin/storage/heuristics/RemoveSecondaryStorageSelectorCmd.java
+++ b/api/src/main/java/org/apache/cloudstack/api/command/admin/storage/heuristics/RemoveSecondaryStorageSelectorCmd.java
@@ -27,7 +27,7 @@
import org.apache.cloudstack.secstorage.heuristics.Heuristic;
@APICommand(name = "removeSecondaryStorageSelector", description = "Removes an existing secondary storage selector.", since = "4.19.0", responseObject =
- SecondaryStorageHeuristicsResponse.class, requestHasSensitiveInfo = false, entityType = {Heuristic.class}, responseHasSensitiveInfo = false, authorized = {RoleType.Admin})
+ SuccessResponse.class, requestHasSensitiveInfo = false, entityType = {Heuristic.class}, responseHasSensitiveInfo = false, authorized = {RoleType.Admin})
public class RemoveSecondaryStorageSelectorCmd extends BaseCmd {
@Parameter(name = ApiConstants.ID, type = BaseCmd.CommandType.UUID, entityType = SecondaryStorageHeuristicsResponse.class, required = true,
description = "The unique identifier of the secondary storage selector to be removed.")
diff --git a/api/src/main/java/org/apache/cloudstack/api/command/admin/swift/AddSwiftCmd.java b/api/src/main/java/org/apache/cloudstack/api/command/admin/swift/AddSwiftCmd.java
index 7eb87006d0d6..bd72f3213de1 100644
--- a/api/src/main/java/org/apache/cloudstack/api/command/admin/swift/AddSwiftCmd.java
+++ b/api/src/main/java/org/apache/cloudstack/api/command/admin/swift/AddSwiftCmd.java
@@ -19,7 +19,6 @@
import java.util.HashMap;
import java.util.Map;
-import org.apache.log4j.Logger;
import org.apache.cloudstack.api.APICommand;
import org.apache.cloudstack.api.ApiConstants;
@@ -36,7 +35,6 @@
@APICommand(name = "addSwift", description = "Adds Swift.", responseObject = ImageStoreResponse.class, since = "3.0.0",
requestHasSensitiveInfo = false, responseHasSensitiveInfo = false)
public class AddSwiftCmd extends BaseCmd {
- public static final Logger s_logger = Logger.getLogger(AddSwiftCmd.class.getName());
/////////////////////////////////////////////////////
//////////////// API parameters /////////////////////
@@ -102,7 +100,7 @@ public void execute() {
throw new ServerApiException(ApiErrorCode.INTERNAL_ERROR, "Failed to add Swift secondary storage");
}
} catch (DiscoveryException ex) {
- s_logger.warn("Exception: ", ex);
+ logger.warn("Exception: ", ex);
throw new ServerApiException(ApiErrorCode.INTERNAL_ERROR, ex.getMessage());
}
}
diff --git a/api/src/main/java/org/apache/cloudstack/api/command/admin/swift/ListSwiftsCmd.java b/api/src/main/java/org/apache/cloudstack/api/command/admin/swift/ListSwiftsCmd.java
index 6d7bfbaf1b10..e21a23349bb5 100644
--- a/api/src/main/java/org/apache/cloudstack/api/command/admin/swift/ListSwiftsCmd.java
+++ b/api/src/main/java/org/apache/cloudstack/api/command/admin/swift/ListSwiftsCmd.java
@@ -16,7 +16,6 @@
// under the License.
package org.apache.cloudstack.api.command.admin.swift;
-import org.apache.log4j.Logger;
import org.apache.cloudstack.api.APICommand;
import org.apache.cloudstack.api.ApiConstants;
@@ -31,7 +30,6 @@
@APICommand(name = "listSwifts", description = "List Swift.", responseObject = ImageStoreResponse.class, since = "3.0.0",
requestHasSensitiveInfo = false, responseHasSensitiveInfo = false)
public class ListSwiftsCmd extends BaseListCmd {
- public static final Logger s_logger = Logger.getLogger(ListSwiftsCmd.class.getName());
/////////////////////////////////////////////////////
//////////////// API parameters /////////////////////
diff --git a/api/src/main/java/org/apache/cloudstack/api/command/admin/systemvm/DestroySystemVmCmd.java b/api/src/main/java/org/apache/cloudstack/api/command/admin/systemvm/DestroySystemVmCmd.java
index 7ed536f6d4cb..7e0faab2fb50 100644
--- a/api/src/main/java/org/apache/cloudstack/api/command/admin/systemvm/DestroySystemVmCmd.java
+++ b/api/src/main/java/org/apache/cloudstack/api/command/admin/systemvm/DestroySystemVmCmd.java
@@ -16,7 +16,6 @@
// under the License.
package org.apache.cloudstack.api.command.admin.systemvm;
-import org.apache.log4j.Logger;
import org.apache.cloudstack.acl.SecurityChecker.AccessType;
import org.apache.cloudstack.api.ACL;
@@ -37,7 +36,6 @@
@APICommand(name = "destroySystemVm", responseObject = SystemVmResponse.class, description = "Destroys a system virtual machine.", entityType = {VirtualMachine.class},
requestHasSensitiveInfo = false, responseHasSensitiveInfo = false)
public class DestroySystemVmCmd extends BaseAsyncCmd {
- public static final Logger s_logger = Logger.getLogger(DestroySystemVmCmd.class.getName());
@ACL(accessType = AccessType.OperateEntry)
diff --git a/api/src/main/java/org/apache/cloudstack/api/command/admin/systemvm/ListSystemVMsCmd.java b/api/src/main/java/org/apache/cloudstack/api/command/admin/systemvm/ListSystemVMsCmd.java
index b6f8c92fa178..e8e5ee0ebad6 100644
--- a/api/src/main/java/org/apache/cloudstack/api/command/admin/systemvm/ListSystemVMsCmd.java
+++ b/api/src/main/java/org/apache/cloudstack/api/command/admin/systemvm/ListSystemVMsCmd.java
@@ -19,7 +19,6 @@
import java.util.ArrayList;
import java.util.List;
-import org.apache.log4j.Logger;
import org.apache.cloudstack.api.APICommand;
import org.apache.cloudstack.api.ApiCommandResourceType;
@@ -39,7 +38,6 @@
@APICommand(name = "listSystemVms", description = "List system virtual machines.", responseObject = SystemVmResponse.class, entityType = {VirtualMachine.class},
requestHasSensitiveInfo = false, responseHasSensitiveInfo = false)
public class ListSystemVMsCmd extends BaseListCmd {
- public static final Logger s_logger = Logger.getLogger(ListSystemVMsCmd.class.getName());
/////////////////////////////////////////////////////
diff --git a/api/src/main/java/org/apache/cloudstack/api/command/admin/systemvm/MigrateSystemVMCmd.java b/api/src/main/java/org/apache/cloudstack/api/command/admin/systemvm/MigrateSystemVMCmd.java
index f0f7aca16c8d..ccc6093aa834 100644
--- a/api/src/main/java/org/apache/cloudstack/api/command/admin/systemvm/MigrateSystemVMCmd.java
+++ b/api/src/main/java/org/apache/cloudstack/api/command/admin/systemvm/MigrateSystemVMCmd.java
@@ -31,7 +31,6 @@
import org.apache.cloudstack.api.response.SystemVmResponse;
import org.apache.cloudstack.context.CallContext;
import org.apache.commons.lang.BooleanUtils;
-import org.apache.log4j.Logger;
import com.cloud.event.EventTypes;
import com.cloud.exception.ConcurrentOperationException;
@@ -47,7 +46,6 @@
@APICommand(name = "migrateSystemVm", description = "Attempts Migration of a system virtual machine to the host specified.", responseObject = SystemVmResponse.class, entityType = {VirtualMachine.class},
requestHasSensitiveInfo = false, responseHasSensitiveInfo = false)
public class MigrateSystemVMCmd extends BaseAsyncCmd {
- public static final Logger s_logger = Logger.getLogger(MigrateSystemVMCmd.class.getName());
/////////////////////////////////////////////////////
@@ -171,16 +169,16 @@ public void execute() {
throw new ServerApiException(ApiErrorCode.INTERNAL_ERROR, "Failed to migrate the system vm");
}
} catch (ResourceUnavailableException ex) {
- s_logger.warn("Exception: ", ex);
+ logger.warn("Exception: ", ex);
throw new ServerApiException(ApiErrorCode.RESOURCE_UNAVAILABLE_ERROR, ex.getMessage());
} catch (ConcurrentOperationException e) {
- s_logger.warn("Exception: ", e);
+ logger.warn("Exception: ", e);
throw new ServerApiException(ApiErrorCode.INTERNAL_ERROR, e.getMessage());
} catch (ManagementServerException e) {
- s_logger.warn("Exception: ", e);
+ logger.warn("Exception: ", e);
throw new ServerApiException(ApiErrorCode.INTERNAL_ERROR, e.getMessage());
} catch (VirtualMachineMigrationException e) {
- s_logger.warn("Exception: ", e);
+ logger.warn("Exception: ", e);
throw new ServerApiException(ApiErrorCode.INTERNAL_ERROR, e.getMessage());
}
}
diff --git a/api/src/main/java/org/apache/cloudstack/api/command/admin/systemvm/PatchSystemVMCmd.java b/api/src/main/java/org/apache/cloudstack/api/command/admin/systemvm/PatchSystemVMCmd.java
index ae3c36b4948e..4f4b26316673 100644
--- a/api/src/main/java/org/apache/cloudstack/api/command/admin/systemvm/PatchSystemVMCmd.java
+++ b/api/src/main/java/org/apache/cloudstack/api/command/admin/systemvm/PatchSystemVMCmd.java
@@ -30,13 +30,11 @@
import org.apache.cloudstack.api.response.SuccessResponse;
import org.apache.cloudstack.api.response.SystemVmResponse;
import org.apache.cloudstack.context.CallContext;
-import org.apache.log4j.Logger;
@APICommand(name = "patchSystemVm", description = "Attempts to live patch systemVMs - CPVM, SSVM ",
responseObject = SuccessResponse.class, requestHasSensitiveInfo = false,
responseHasSensitiveInfo = false, authorized = { RoleType.Admin }, since = "4.17.0")
public class PatchSystemVMCmd extends BaseAsyncCmd {
- public static final Logger s_logger = Logger.getLogger(PatchSystemVMCmd.class.getName());
/////////////////////////////////////////////////////
//////////////// API parameters /////////////////////
diff --git a/api/src/main/java/org/apache/cloudstack/api/command/admin/systemvm/RebootSystemVmCmd.java b/api/src/main/java/org/apache/cloudstack/api/command/admin/systemvm/RebootSystemVmCmd.java
index 0ba7e0c2edf5..30bd51184ac3 100644
--- a/api/src/main/java/org/apache/cloudstack/api/command/admin/systemvm/RebootSystemVmCmd.java
+++ b/api/src/main/java/org/apache/cloudstack/api/command/admin/systemvm/RebootSystemVmCmd.java
@@ -16,7 +16,6 @@
// under the License.
package org.apache.cloudstack.api.command.admin.systemvm;
-import org.apache.log4j.Logger;
import org.apache.cloudstack.acl.SecurityChecker.AccessType;
import org.apache.cloudstack.api.ACL;
@@ -37,7 +36,6 @@
@APICommand(name = "rebootSystemVm", description = "Reboots a system VM.", responseObject = SystemVmResponse.class, entityType = {VirtualMachine.class},
requestHasSensitiveInfo = false, responseHasSensitiveInfo = false)
public class RebootSystemVmCmd extends BaseAsyncCmd {
- public static final Logger s_logger = Logger.getLogger(RebootSystemVmCmd.class.getName());
/////////////////////////////////////////////////////
diff --git a/api/src/main/java/org/apache/cloudstack/api/command/admin/systemvm/ScaleSystemVMCmd.java b/api/src/main/java/org/apache/cloudstack/api/command/admin/systemvm/ScaleSystemVMCmd.java
index f694988efa05..06e57674c537 100644
--- a/api/src/main/java/org/apache/cloudstack/api/command/admin/systemvm/ScaleSystemVMCmd.java
+++ b/api/src/main/java/org/apache/cloudstack/api/command/admin/systemvm/ScaleSystemVMCmd.java
@@ -18,7 +18,6 @@
import java.util.Map;
-import org.apache.log4j.Logger;
import org.apache.cloudstack.acl.SecurityChecker.AccessType;
import org.apache.cloudstack.api.ACL;
@@ -46,7 +45,6 @@
+ "The system vm must be in a \"Stopped\" state for " + "this command to take effect.", entityType = {VirtualMachine.class},
requestHasSensitiveInfo = false, responseHasSensitiveInfo = false)
public class ScaleSystemVMCmd extends BaseAsyncCmd {
- public static final Logger s_logger = Logger.getLogger(ScaleSystemVMCmd.class.getName());
private static final String s_name = "changeserviceforsystemvmresponse";
/////////////////////////////////////////////////////
@@ -111,16 +109,16 @@ public void execute() {
try {
result = _mgr.upgradeSystemVM(this);
} catch (ResourceUnavailableException ex) {
- s_logger.warn("Exception: ", ex);
+ logger.warn("Exception: ", ex);
throw new ServerApiException(ApiErrorCode.RESOURCE_UNAVAILABLE_ERROR, ex.getMessage());
} catch (ConcurrentOperationException ex) {
- s_logger.warn("Exception: ", ex);
+ logger.warn("Exception: ", ex);
throw new ServerApiException(ApiErrorCode.INTERNAL_ERROR, ex.getMessage());
} catch (ManagementServerException ex) {
- s_logger.warn("Exception: ", ex);
+ logger.warn("Exception: ", ex);
throw new ServerApiException(ApiErrorCode.INTERNAL_ERROR, ex.getMessage());
} catch (VirtualMachineMigrationException ex) {
- s_logger.warn("Exception: ", ex);
+ logger.warn("Exception: ", ex);
throw new ServerApiException(ApiErrorCode.INTERNAL_ERROR, ex.getMessage());
}
if (result != null) {
diff --git a/api/src/main/java/org/apache/cloudstack/api/command/admin/systemvm/StartSystemVMCmd.java b/api/src/main/java/org/apache/cloudstack/api/command/admin/systemvm/StartSystemVMCmd.java
index 0cb517f40585..eac3d64ab59e 100644
--- a/api/src/main/java/org/apache/cloudstack/api/command/admin/systemvm/StartSystemVMCmd.java
+++ b/api/src/main/java/org/apache/cloudstack/api/command/admin/systemvm/StartSystemVMCmd.java
@@ -16,7 +16,6 @@
// under the License.
package org.apache.cloudstack.api.command.admin.systemvm;
-import org.apache.log4j.Logger;
import org.apache.cloudstack.acl.SecurityChecker.AccessType;
import org.apache.cloudstack.api.ACL;
@@ -37,7 +36,6 @@
@APICommand(name = "startSystemVm", responseObject = SystemVmResponse.class, description = "Starts a system virtual machine.", entityType = {VirtualMachine.class},
requestHasSensitiveInfo = false, responseHasSensitiveInfo = false)
public class StartSystemVMCmd extends BaseAsyncCmd {
- public static final Logger s_logger = Logger.getLogger(StartSystemVMCmd.class.getName());
/////////////////////////////////////////////////////
diff --git a/api/src/main/java/org/apache/cloudstack/api/command/admin/systemvm/StopSystemVmCmd.java b/api/src/main/java/org/apache/cloudstack/api/command/admin/systemvm/StopSystemVmCmd.java
index 4bb533ce5b6a..1d84382f5d22 100644
--- a/api/src/main/java/org/apache/cloudstack/api/command/admin/systemvm/StopSystemVmCmd.java
+++ b/api/src/main/java/org/apache/cloudstack/api/command/admin/systemvm/StopSystemVmCmd.java
@@ -16,7 +16,6 @@
// under the License.
package org.apache.cloudstack.api.command.admin.systemvm;
-import org.apache.log4j.Logger;
import org.apache.cloudstack.acl.SecurityChecker.AccessType;
import org.apache.cloudstack.api.ACL;
@@ -39,7 +38,6 @@
@APICommand(name = "stopSystemVm", description = "Stops a system VM.", responseObject = SystemVmResponse.class, entityType = {VirtualMachine.class},
requestHasSensitiveInfo = false, responseHasSensitiveInfo = false)
public class StopSystemVmCmd extends BaseAsyncCmd {
- public static final Logger s_logger = Logger.getLogger(StopSystemVmCmd.class.getName());
/////////////////////////////////////////////////////
diff --git a/api/src/main/java/org/apache/cloudstack/api/command/admin/systemvm/UpgradeSystemVMCmd.java b/api/src/main/java/org/apache/cloudstack/api/command/admin/systemvm/UpgradeSystemVMCmd.java
index 12f80f32b069..5abe90e3f589 100644
--- a/api/src/main/java/org/apache/cloudstack/api/command/admin/systemvm/UpgradeSystemVMCmd.java
+++ b/api/src/main/java/org/apache/cloudstack/api/command/admin/systemvm/UpgradeSystemVMCmd.java
@@ -18,7 +18,6 @@
import java.util.Map;
-import org.apache.log4j.Logger;
import org.apache.cloudstack.acl.SecurityChecker.AccessType;
import org.apache.cloudstack.api.ACL;
@@ -41,7 +40,6 @@
+ "The system vm must be in a \"Stopped\" state for " + "this command to take effect.", entityType = {VirtualMachine.class},
requestHasSensitiveInfo = false, responseHasSensitiveInfo = false)
public class UpgradeSystemVMCmd extends BaseCmd {
- public static final Logger s_logger = Logger.getLogger(UpgradeSystemVMCmd.class.getName());
/////////////////////////////////////////////////////
//////////////// API parameters /////////////////////
diff --git a/api/src/main/java/org/apache/cloudstack/api/command/admin/template/PrepareTemplateCmd.java b/api/src/main/java/org/apache/cloudstack/api/command/admin/template/PrepareTemplateCmd.java
index 9b8d402864a8..9a59efb19f2a 100644
--- a/api/src/main/java/org/apache/cloudstack/api/command/admin/template/PrepareTemplateCmd.java
+++ b/api/src/main/java/org/apache/cloudstack/api/command/admin/template/PrepareTemplateCmd.java
@@ -18,7 +18,6 @@
import java.util.List;
-import org.apache.log4j.Logger;
import org.apache.cloudstack.acl.SecurityChecker.AccessType;
import org.apache.cloudstack.api.ACL;
@@ -38,7 +37,6 @@
@APICommand(name = "prepareTemplate", responseObject = TemplateResponse.class, description = "load template into primary storage", entityType = {VirtualMachineTemplate.class},
requestHasSensitiveInfo = false, responseHasSensitiveInfo = false)
public class PrepareTemplateCmd extends BaseCmd {
- public static final Logger s_logger = Logger.getLogger(PrepareTemplateCmd.class.getName());
/////////////////////////////////////////////////////
diff --git a/api/src/main/java/org/apache/cloudstack/api/command/admin/usage/AddTrafficMonitorCmd.java b/api/src/main/java/org/apache/cloudstack/api/command/admin/usage/AddTrafficMonitorCmd.java
index 95593714feb0..5c0f1fc1cd21 100644
--- a/api/src/main/java/org/apache/cloudstack/api/command/admin/usage/AddTrafficMonitorCmd.java
+++ b/api/src/main/java/org/apache/cloudstack/api/command/admin/usage/AddTrafficMonitorCmd.java
@@ -16,7 +16,6 @@
// under the License.
package org.apache.cloudstack.api.command.admin.usage;
-import org.apache.log4j.Logger;
import org.apache.cloudstack.api.APICommand;
import org.apache.cloudstack.api.ApiConstants;
@@ -35,7 +34,6 @@
@APICommand(name = "addTrafficMonitor", description = "Adds Traffic Monitor Host for Direct Network Usage", responseObject = TrafficMonitorResponse.class,
requestHasSensitiveInfo = false, responseHasSensitiveInfo = false)
public class AddTrafficMonitorCmd extends BaseCmd {
- public static final Logger s_logger = Logger.getLogger(AddTrafficMonitorCmd.class.getName());
/////////////////////////////////////////////////////
//////////////// API parameters /////////////////////
diff --git a/api/src/main/java/org/apache/cloudstack/api/command/admin/usage/AddTrafficTypeCmd.java b/api/src/main/java/org/apache/cloudstack/api/command/admin/usage/AddTrafficTypeCmd.java
index 809129402a87..b1810676b744 100644
--- a/api/src/main/java/org/apache/cloudstack/api/command/admin/usage/AddTrafficTypeCmd.java
+++ b/api/src/main/java/org/apache/cloudstack/api/command/admin/usage/AddTrafficTypeCmd.java
@@ -16,7 +16,6 @@
// under the License.
package org.apache.cloudstack.api.command.admin.usage;
-import org.apache.log4j.Logger;
import org.apache.cloudstack.api.APICommand;
import org.apache.cloudstack.api.ApiCommandResourceType;
@@ -37,7 +36,6 @@
@APICommand(name = "addTrafficType", description = "Adds traffic type to a physical network", responseObject = TrafficTypeResponse.class, since = "3.0.0",
requestHasSensitiveInfo = false, responseHasSensitiveInfo = false)
public class AddTrafficTypeCmd extends BaseAsyncCreateCmd {
- public static final Logger s_logger = Logger.getLogger(AddTrafficTypeCmd.class.getName());
/////////////////////////////////////////////////////
diff --git a/api/src/main/java/org/apache/cloudstack/api/command/admin/usage/DeleteTrafficMonitorCmd.java b/api/src/main/java/org/apache/cloudstack/api/command/admin/usage/DeleteTrafficMonitorCmd.java
index ff371d6e83d9..8fdb3af399c1 100644
--- a/api/src/main/java/org/apache/cloudstack/api/command/admin/usage/DeleteTrafficMonitorCmd.java
+++ b/api/src/main/java/org/apache/cloudstack/api/command/admin/usage/DeleteTrafficMonitorCmd.java
@@ -16,7 +16,6 @@
// under the License.
package org.apache.cloudstack.api.command.admin.usage;
-import org.apache.log4j.Logger;
import org.apache.cloudstack.api.APICommand;
import org.apache.cloudstack.api.ApiConstants;
@@ -33,7 +32,6 @@
@APICommand(name = "deleteTrafficMonitor", description = "Deletes an traffic monitor host.", responseObject = SuccessResponse.class,
requestHasSensitiveInfo = false, responseHasSensitiveInfo = false)
public class DeleteTrafficMonitorCmd extends BaseCmd {
- public static final Logger s_logger = Logger.getLogger(DeleteTrafficMonitorCmd.class.getName());
/////////////////////////////////////////////////////
//////////////// API parameters /////////////////////
diff --git a/api/src/main/java/org/apache/cloudstack/api/command/admin/usage/DeleteTrafficTypeCmd.java b/api/src/main/java/org/apache/cloudstack/api/command/admin/usage/DeleteTrafficTypeCmd.java
index a728690a09d6..a1e4ebda09a3 100644
--- a/api/src/main/java/org/apache/cloudstack/api/command/admin/usage/DeleteTrafficTypeCmd.java
+++ b/api/src/main/java/org/apache/cloudstack/api/command/admin/usage/DeleteTrafficTypeCmd.java
@@ -16,7 +16,6 @@
// under the License.
package org.apache.cloudstack.api.command.admin.usage;
-import org.apache.log4j.Logger;
import org.apache.cloudstack.api.APICommand;
import org.apache.cloudstack.api.ApiCommandResourceType;
@@ -34,7 +33,6 @@
@APICommand(name = "deleteTrafficType", description = "Deletes traffic type of a physical network", responseObject = SuccessResponse.class, since = "3.0.0",
requestHasSensitiveInfo = false, responseHasSensitiveInfo = false)
public class DeleteTrafficTypeCmd extends BaseAsyncCmd {
- public static final Logger s_logger = Logger.getLogger(DeleteTrafficTypeCmd.class.getName());
/////////////////////////////////////////////////////
diff --git a/api/src/main/java/org/apache/cloudstack/api/command/admin/usage/GenerateUsageRecordsCmd.java b/api/src/main/java/org/apache/cloudstack/api/command/admin/usage/GenerateUsageRecordsCmd.java
index 65b864f2ab6e..a0314586d92d 100644
--- a/api/src/main/java/org/apache/cloudstack/api/command/admin/usage/GenerateUsageRecordsCmd.java
+++ b/api/src/main/java/org/apache/cloudstack/api/command/admin/usage/GenerateUsageRecordsCmd.java
@@ -18,7 +18,6 @@
import java.util.Date;
-import org.apache.log4j.Logger;
import org.apache.cloudstack.api.APICommand;
import org.apache.cloudstack.api.ApiConstants;
@@ -37,7 +36,6 @@
requestHasSensitiveInfo = false,
responseHasSensitiveInfo = false)
public class GenerateUsageRecordsCmd extends BaseCmd {
- public static final Logger s_logger = Logger.getLogger(GenerateUsageRecordsCmd.class.getName());
/////////////////////////////////////////////////////
@@ -49,13 +47,13 @@ public class GenerateUsageRecordsCmd extends BaseCmd {
@Parameter(name = ApiConstants.END_DATE,
type = CommandType.DATE,
- required = true,
+ required = false,
description = "End date range for usage record query. Use yyyy-MM-dd as the date format, e.g. startDate=2009-06-03.")
private Date endDate;
@Parameter(name = ApiConstants.START_DATE,
type = CommandType.DATE,
- required = true,
+ required = false,
description = "Start date range for usage record query. Use yyyy-MM-dd as the date format, e.g. startDate=2009-06-01.")
private Date startDate;
diff --git a/api/src/main/java/org/apache/cloudstack/api/command/admin/usage/ListTrafficMonitorsCmd.java b/api/src/main/java/org/apache/cloudstack/api/command/admin/usage/ListTrafficMonitorsCmd.java
index f3a65bbfffd8..ed42bc42dbd1 100644
--- a/api/src/main/java/org/apache/cloudstack/api/command/admin/usage/ListTrafficMonitorsCmd.java
+++ b/api/src/main/java/org/apache/cloudstack/api/command/admin/usage/ListTrafficMonitorsCmd.java
@@ -19,7 +19,6 @@
import java.util.ArrayList;
import java.util.List;
-import org.apache.log4j.Logger;
import org.apache.cloudstack.api.APICommand;
import org.apache.cloudstack.api.ApiConstants;
@@ -34,7 +33,6 @@
@APICommand(name = "listTrafficMonitors", description = "List traffic monitor Hosts.", responseObject = TrafficMonitorResponse.class,
requestHasSensitiveInfo = false, responseHasSensitiveInfo = false)
public class ListTrafficMonitorsCmd extends BaseListCmd {
- public static final Logger s_logger = Logger.getLogger(ListTrafficMonitorsCmd.class.getName());
/////////////////////////////////////////////////////
//////////////// API parameters /////////////////////
diff --git a/api/src/main/java/org/apache/cloudstack/api/command/admin/usage/ListTrafficTypeImplementorsCmd.java b/api/src/main/java/org/apache/cloudstack/api/command/admin/usage/ListTrafficTypeImplementorsCmd.java
index 97f43155be67..1ad8872db962 100644
--- a/api/src/main/java/org/apache/cloudstack/api/command/admin/usage/ListTrafficTypeImplementorsCmd.java
+++ b/api/src/main/java/org/apache/cloudstack/api/command/admin/usage/ListTrafficTypeImplementorsCmd.java
@@ -19,7 +19,6 @@
import java.util.ArrayList;
import java.util.List;
-import org.apache.log4j.Logger;
import org.apache.cloudstack.api.APICommand;
import org.apache.cloudstack.api.ApiConstants;
@@ -44,7 +43,6 @@
requestHasSensitiveInfo = false,
responseHasSensitiveInfo = false)
public class ListTrafficTypeImplementorsCmd extends BaseListCmd {
- public static final Logger s_logger = Logger.getLogger(ListTrafficTypeImplementorsCmd.class);
/////////////////////////////////////////////////////
//////////////// API parameters /////////////////////
diff --git a/api/src/main/java/org/apache/cloudstack/api/command/admin/usage/ListTrafficTypesCmd.java b/api/src/main/java/org/apache/cloudstack/api/command/admin/usage/ListTrafficTypesCmd.java
index 6e36ca3bd8d1..d106a736fcab 100644
--- a/api/src/main/java/org/apache/cloudstack/api/command/admin/usage/ListTrafficTypesCmd.java
+++ b/api/src/main/java/org/apache/cloudstack/api/command/admin/usage/ListTrafficTypesCmd.java
@@ -19,7 +19,6 @@
import java.util.ArrayList;
import java.util.List;
-import org.apache.log4j.Logger;
import org.apache.cloudstack.api.APICommand;
import org.apache.cloudstack.api.ApiConstants;
@@ -37,7 +36,6 @@
@APICommand(name = "listTrafficTypes", description = "Lists traffic types of a given physical network.", responseObject = ProviderResponse.class, since = "3.0.0",
requestHasSensitiveInfo = false, responseHasSensitiveInfo = false)
public class ListTrafficTypesCmd extends BaseListCmd {
- public static final Logger s_logger = Logger.getLogger(ListTrafficTypesCmd.class.getName());
/////////////////////////////////////////////////////
//////////////// API parameters /////////////////////
diff --git a/api/src/main/java/org/apache/cloudstack/api/command/admin/usage/ListUsageRecordsCmd.java b/api/src/main/java/org/apache/cloudstack/api/command/admin/usage/ListUsageRecordsCmd.java
index 3cb148c2af03..9ce1fcb2bc99 100644
--- a/api/src/main/java/org/apache/cloudstack/api/command/admin/usage/ListUsageRecordsCmd.java
+++ b/api/src/main/java/org/apache/cloudstack/api/command/admin/usage/ListUsageRecordsCmd.java
@@ -53,16 +53,12 @@ public class ListUsageRecordsCmd extends BaseListCmd {
@Parameter(name = ApiConstants.DOMAIN_ID, type = CommandType.UUID, entityType = DomainResponse.class, description = "List usage records for the specified domain.")
private Long domainId;
- @Parameter(name = ApiConstants.END_DATE,
- type = CommandType.DATE,
- required = true,
- description = "End date range for usage record query (use format \"yyyy-MM-dd\" or the new format \"yyyy-MM-dd HH:mm:ss\", e.g. startDate=2015-01-01 or startdate=2015-01-01 10:30:00).")
+ @Parameter(name = ApiConstants.END_DATE, type = CommandType.DATE, required = true, description = "End date range for usage record query. " +
+ ApiConstants.PARAMETER_DESCRIPTION_END_DATE_POSSIBLE_FORMATS)
private Date endDate;
- @Parameter(name = ApiConstants.START_DATE,
- type = CommandType.DATE,
- required = true,
- description = "Start date range for usage record query (use format \"yyyy-MM-dd\" or the new format \"yyyy-MM-dd HH:mm:ss\", e.g. startDate=2015-01-01 or startdate=2015-01-01 11:00:00).")
+ @Parameter(name = ApiConstants.START_DATE, type = CommandType.DATE, required = true, description = "Start date range for usage record query. " +
+ ApiConstants.PARAMETER_DESCRIPTION_START_DATE_POSSIBLE_FORMATS)
private Date startDate;
@Parameter(name = ApiConstants.ACCOUNT_ID, type = CommandType.UUID, entityType = AccountResponse.class, description = "List usage records for the specified account")
@@ -137,11 +133,11 @@ public void setDomainId(Long domainId) {
}
public void setEndDate(Date endDate) {
- this.endDate = endDate == null ? null : new Date(endDate.getTime());
+ this.endDate = endDate;
}
public void setStartDate(Date startDate) {
- this.startDate = startDate == null ? null : new Date(startDate.getTime());
+ this.startDate = startDate;
}
public void setAccountId(Long accountId) {
@@ -167,8 +163,8 @@ public Boolean isRecursive() {
@Override
public void execute() {
Pair, Integer> usageRecords = _usageService.getUsageRecords(this);
- ListResponse response = new ListResponse();
- List usageResponses = new ArrayList();
+ ListResponse response = new ListResponse<>();
+ List usageResponses = new ArrayList<>();
Map> resourceTagResponseMap = null;
if (usageRecords != null) {
//read the resource tags details for all the resources in usage data and store in Map
diff --git a/api/src/main/java/org/apache/cloudstack/api/command/admin/usage/ListUsageTypesCmd.java b/api/src/main/java/org/apache/cloudstack/api/command/admin/usage/ListUsageTypesCmd.java
index 15f9dd20e29f..b993735dba76 100644
--- a/api/src/main/java/org/apache/cloudstack/api/command/admin/usage/ListUsageTypesCmd.java
+++ b/api/src/main/java/org/apache/cloudstack/api/command/admin/usage/ListUsageTypesCmd.java
@@ -18,19 +18,18 @@
import java.util.List;
-import org.apache.log4j.Logger;
import org.apache.cloudstack.api.APICommand;
import org.apache.cloudstack.api.BaseCmd;
import org.apache.cloudstack.api.response.ListResponse;
import org.apache.cloudstack.api.response.UsageTypeResponse;
+import org.apache.cloudstack.usage.UsageTypes;
import com.cloud.user.Account;
@APICommand(name = "listUsageTypes", description = "List Usage Types", responseObject = UsageTypeResponse.class,
requestHasSensitiveInfo = false, responseHasSensitiveInfo = false)
public class ListUsageTypesCmd extends BaseCmd {
- public static final Logger s_logger = Logger.getLogger(ListUsageTypesCmd.class.getName());
@Override
public long getEntityOwnerId() {
@@ -39,8 +38,8 @@ public long getEntityOwnerId() {
@Override
public void execute() {
- List result = _usageService.listUsageTypes();
- ListResponse response = new ListResponse();
+ List result = UsageTypes.listUsageTypes();
+ ListResponse response = new ListResponse<>();
response.setResponses(result);
response.setResponseName(getCommandName());
this.setResponseObject(response);
diff --git a/api/src/main/java/org/apache/cloudstack/api/command/admin/usage/RemoveRawUsageRecordsCmd.java b/api/src/main/java/org/apache/cloudstack/api/command/admin/usage/RemoveRawUsageRecordsCmd.java
index 710a11c0d7f2..3e698e614423 100644
--- a/api/src/main/java/org/apache/cloudstack/api/command/admin/usage/RemoveRawUsageRecordsCmd.java
+++ b/api/src/main/java/org/apache/cloudstack/api/command/admin/usage/RemoveRawUsageRecordsCmd.java
@@ -29,11 +29,9 @@
import org.apache.cloudstack.api.Parameter;
import org.apache.cloudstack.api.ServerApiException;
import org.apache.cloudstack.api.response.SuccessResponse;
-import org.apache.log4j.Logger;
@APICommand(name = "removeRawUsageRecords", description = "Safely removes raw records from cloud_usage table", responseObject = SuccessResponse.class, since = "4.6.0", requestHasSensitiveInfo = false, responseHasSensitiveInfo = false)
public class RemoveRawUsageRecordsCmd extends BaseCmd {
- public static final Logger s_logger = Logger.getLogger(RemoveRawUsageRecordsCmd.class.getName());
/////////////////////////////////////////////////////
diff --git a/api/src/main/java/org/apache/cloudstack/api/command/admin/usage/UpdateTrafficTypeCmd.java b/api/src/main/java/org/apache/cloudstack/api/command/admin/usage/UpdateTrafficTypeCmd.java
index 103e58c4e038..c7b3c2b433b4 100644
--- a/api/src/main/java/org/apache/cloudstack/api/command/admin/usage/UpdateTrafficTypeCmd.java
+++ b/api/src/main/java/org/apache/cloudstack/api/command/admin/usage/UpdateTrafficTypeCmd.java
@@ -16,7 +16,6 @@
// under the License.
package org.apache.cloudstack.api.command.admin.usage;
-import org.apache.log4j.Logger;
import org.apache.cloudstack.api.APICommand;
import org.apache.cloudstack.api.ApiCommandResourceType;
@@ -34,7 +33,6 @@
@APICommand(name = "updateTrafficType", description = "Updates traffic type of a physical network", responseObject = TrafficTypeResponse.class, since = "3.0.0",
requestHasSensitiveInfo = false, responseHasSensitiveInfo = false)
public class UpdateTrafficTypeCmd extends BaseAsyncCmd {
- public static final Logger s_logger = Logger.getLogger(UpdateTrafficTypeCmd.class.getName());
/////////////////////////////////////////////////////
diff --git a/api/src/main/java/org/apache/cloudstack/api/command/admin/user/CreateUserCmd.java b/api/src/main/java/org/apache/cloudstack/api/command/admin/user/CreateUserCmd.java
index e8f5944e4079..e2a2baecc866 100644
--- a/api/src/main/java/org/apache/cloudstack/api/command/admin/user/CreateUserCmd.java
+++ b/api/src/main/java/org/apache/cloudstack/api/command/admin/user/CreateUserCmd.java
@@ -27,7 +27,6 @@
import org.apache.cloudstack.api.response.UserResponse;
import org.apache.cloudstack.context.CallContext;
import org.apache.commons.lang3.StringUtils;
-import org.apache.log4j.Logger;
import com.cloud.user.Account;
import com.cloud.user.User;
@@ -35,7 +34,6 @@
@APICommand(name = "createUser", description = "Creates a user for an account that already exists", responseObject = UserResponse.class,
requestHasSensitiveInfo = true, responseHasSensitiveInfo = true)
public class CreateUserCmd extends BaseCmd {
- public static final Logger s_logger = Logger.getLogger(CreateUserCmd.class.getName());
/////////////////////////////////////////////////////
diff --git a/api/src/main/java/org/apache/cloudstack/api/command/admin/user/DeleteUserCmd.java b/api/src/main/java/org/apache/cloudstack/api/command/admin/user/DeleteUserCmd.java
index a4f13d5e9c7e..ddf21affb535 100644
--- a/api/src/main/java/org/apache/cloudstack/api/command/admin/user/DeleteUserCmd.java
+++ b/api/src/main/java/org/apache/cloudstack/api/command/admin/user/DeleteUserCmd.java
@@ -19,7 +19,6 @@
import javax.inject.Inject;
import org.apache.cloudstack.api.ApiCommandResourceType;
-import org.apache.log4j.Logger;
import org.apache.cloudstack.api.APICommand;
import org.apache.cloudstack.api.ApiConstants;
@@ -38,7 +37,6 @@
@APICommand(name = "deleteUser", description = "Deletes a user for an account", responseObject = SuccessResponse.class,
requestHasSensitiveInfo = false, responseHasSensitiveInfo = false)
public class DeleteUserCmd extends BaseCmd {
- public static final Logger s_logger = Logger.getLogger(DeleteUserCmd.class.getName());
/////////////////////////////////////////////////////
@@ -86,11 +84,10 @@ public ApiCommandResourceType getApiResourceType() {
public void execute() {
CallContext.current().setEventDetails("UserId: " + getId());
boolean result = _regionService.deleteUser(this);
- if (result) {
- SuccessResponse response = new SuccessResponse(getCommandName());
- this.setResponseObject(response);
- } else {
+ if (!result) {
throw new ServerApiException(ApiErrorCode.INTERNAL_ERROR, "Failed to delete user");
}
+ SuccessResponse response = new SuccessResponse(getCommandName());
+ this.setResponseObject(response);
}
}
diff --git a/api/src/main/java/org/apache/cloudstack/api/command/admin/user/DisableUserCmd.java b/api/src/main/java/org/apache/cloudstack/api/command/admin/user/DisableUserCmd.java
index f7a51d0b1d3b..974c1c7bebed 100644
--- a/api/src/main/java/org/apache/cloudstack/api/command/admin/user/DisableUserCmd.java
+++ b/api/src/main/java/org/apache/cloudstack/api/command/admin/user/DisableUserCmd.java
@@ -18,7 +18,6 @@
import javax.inject.Inject;
-import org.apache.log4j.Logger;
import org.apache.cloudstack.api.APICommand;
import org.apache.cloudstack.api.ApiCommandResourceType;
@@ -39,7 +38,6 @@
@APICommand(name = "disableUser", description = "Disables a user account", responseObject = UserResponse.class,
requestHasSensitiveInfo = false, responseHasSensitiveInfo = true)
public class DisableUserCmd extends BaseAsyncCmd {
- public static final Logger s_logger = Logger.getLogger(DisableUserCmd.class.getName());
/////////////////////////////////////////////////////
//////////////// API parameters /////////////////////
diff --git a/api/src/main/java/org/apache/cloudstack/api/command/admin/user/EnableUserCmd.java b/api/src/main/java/org/apache/cloudstack/api/command/admin/user/EnableUserCmd.java
index f13eac8f2a90..77d8d530daf2 100644
--- a/api/src/main/java/org/apache/cloudstack/api/command/admin/user/EnableUserCmd.java
+++ b/api/src/main/java/org/apache/cloudstack/api/command/admin/user/EnableUserCmd.java
@@ -18,7 +18,6 @@
import javax.inject.Inject;
-import org.apache.log4j.Logger;
import org.apache.cloudstack.api.APICommand;
import org.apache.cloudstack.api.ApiConstants;
@@ -37,7 +36,6 @@
@APICommand(name = "enableUser", description = "Enables a user account", responseObject = UserResponse.class,
requestHasSensitiveInfo = false, responseHasSensitiveInfo = true)
public class EnableUserCmd extends BaseCmd {
- public static final Logger s_logger = Logger.getLogger(EnableUserCmd.class.getName());
/////////////////////////////////////////////////////
//////////////// API parameters /////////////////////
diff --git a/api/src/main/java/org/apache/cloudstack/api/command/admin/user/GetUserCmd.java b/api/src/main/java/org/apache/cloudstack/api/command/admin/user/GetUserCmd.java
index 5fcad8068b12..3427cef33661 100644
--- a/api/src/main/java/org/apache/cloudstack/api/command/admin/user/GetUserCmd.java
+++ b/api/src/main/java/org/apache/cloudstack/api/command/admin/user/GetUserCmd.java
@@ -16,7 +16,6 @@
// under the License.
package org.apache.cloudstack.api.command.admin.user;
-import org.apache.log4j.Logger;
import org.apache.cloudstack.api.APICommand;
import org.apache.cloudstack.api.ApiConstants;
@@ -30,7 +29,6 @@
@APICommand(name = "getUser", description = "Find user account by API key", responseObject = UserResponse.class,
requestHasSensitiveInfo = false, responseHasSensitiveInfo = true)
public class GetUserCmd extends BaseCmd {
- public static final Logger s_logger = Logger.getLogger(GetUserCmd.class.getName());
/////////////////////////////////////////////////////
diff --git a/api/src/main/java/org/apache/cloudstack/api/command/admin/user/GetUserKeysCmd.java b/api/src/main/java/org/apache/cloudstack/api/command/admin/user/GetUserKeysCmd.java
index 253a55652ead..3a3414d95d8a 100644
--- a/api/src/main/java/org/apache/cloudstack/api/command/admin/user/GetUserKeysCmd.java
+++ b/api/src/main/java/org/apache/cloudstack/api/command/admin/user/GetUserKeysCmd.java
@@ -29,7 +29,6 @@
import org.apache.cloudstack.api.response.UserResponse;
import java.util.Map;
-import org.apache.log4j.Logger;
@APICommand(name = "getUserKeys",
description = "This command allows the user to query the seceret and API keys for the account",
@@ -44,7 +43,6 @@ public class GetUserKeysCmd extends BaseCmd{
@Parameter(name= ApiConstants.ID, type = CommandType.UUID, entityType = UserResponse.class, required = true, description = "ID of the user whose keys are required")
private Long id;
- public static final Logger s_logger = Logger.getLogger(GetUserKeysCmd.class.getName());
public Long getID(){
return id;
diff --git a/api/src/main/java/org/apache/cloudstack/api/command/admin/user/ListUsersCmd.java b/api/src/main/java/org/apache/cloudstack/api/command/admin/user/ListUsersCmd.java
index a516a30e769b..ef9e3fa22405 100644
--- a/api/src/main/java/org/apache/cloudstack/api/command/admin/user/ListUsersCmd.java
+++ b/api/src/main/java/org/apache/cloudstack/api/command/admin/user/ListUsersCmd.java
@@ -20,7 +20,6 @@
import com.cloud.server.ResourceTag;
import com.cloud.user.Account;
import org.apache.cloudstack.api.response.ResourceIconResponse;
-import org.apache.log4j.Logger;
import org.apache.cloudstack.api.APICommand;
import org.apache.cloudstack.api.ApiConstants;
@@ -34,7 +33,6 @@
@APICommand(name = "listUsers", description = "Lists user accounts", responseObject = UserResponse.class,
requestHasSensitiveInfo = false, responseHasSensitiveInfo = true)
public class ListUsersCmd extends BaseListAccountResourcesCmd {
- public static final Logger s_logger = Logger.getLogger(ListUsersCmd.class.getName());
/////////////////////////////////////////////////////
diff --git a/api/src/main/java/org/apache/cloudstack/api/command/admin/user/LockUserCmd.java b/api/src/main/java/org/apache/cloudstack/api/command/admin/user/LockUserCmd.java
index df6ef4f7b0b0..5c8bff0732ad 100644
--- a/api/src/main/java/org/apache/cloudstack/api/command/admin/user/LockUserCmd.java
+++ b/api/src/main/java/org/apache/cloudstack/api/command/admin/user/LockUserCmd.java
@@ -16,7 +16,6 @@
// under the License.
package org.apache.cloudstack.api.command.admin.user;
-import org.apache.log4j.Logger;
import org.apache.cloudstack.api.APICommand;
import org.apache.cloudstack.api.ApiConstants;
@@ -33,7 +32,6 @@
@APICommand(name = "lockUser", description = "Locks a user account", responseObject = UserResponse.class,
requestHasSensitiveInfo = false, responseHasSensitiveInfo = true)
public class LockUserCmd extends BaseCmd {
- public static final Logger s_logger = Logger.getLogger(LockUserCmd.class.getName());
/////////////////////////////////////////////////////
diff --git a/api/src/main/java/org/apache/cloudstack/api/command/admin/user/MoveUserCmd.java b/api/src/main/java/org/apache/cloudstack/api/command/admin/user/MoveUserCmd.java
index b7090977d96f..e57258a45711 100644
--- a/api/src/main/java/org/apache/cloudstack/api/command/admin/user/MoveUserCmd.java
+++ b/api/src/main/java/org/apache/cloudstack/api/command/admin/user/MoveUserCmd.java
@@ -32,7 +32,6 @@
import org.apache.cloudstack.context.CallContext;
import org.apache.cloudstack.region.RegionService;
import org.apache.commons.lang3.ObjectUtils;
-import org.apache.log4j.Logger;
import com.cloud.user.Account;
import com.cloud.user.User;
@@ -46,7 +45,6 @@
since = "4.11",
authorized = {RoleType.Admin})
public class MoveUserCmd extends BaseCmd {
- public static final Logger s_logger = Logger.getLogger(MoveUserCmd.class.getName());
/////////////////////////////////////////////////////
diff --git a/api/src/main/java/org/apache/cloudstack/api/command/admin/user/RegisterCmd.java b/api/src/main/java/org/apache/cloudstack/api/command/admin/user/RegisterCmd.java
index 4199015b9ca4..b3e7d2bec821 100644
--- a/api/src/main/java/org/apache/cloudstack/api/command/admin/user/RegisterCmd.java
+++ b/api/src/main/java/org/apache/cloudstack/api/command/admin/user/RegisterCmd.java
@@ -17,7 +17,6 @@
package org.apache.cloudstack.api.command.admin.user;
import org.apache.cloudstack.api.ApiCommandResourceType;
-import org.apache.log4j.Logger;
import org.apache.cloudstack.api.APICommand;
import org.apache.cloudstack.api.ApiConstants;
@@ -34,7 +33,6 @@
description = "This command allows a user to register for the developer API, returning a secret key and an API key. This request is made through the integration API port, so it is a privileged command and must be made on behalf of a user. It is up to the implementer just how the username and password are entered, and then how that translates to an integration API request. Both secret key and API key should be returned to the user",
requestHasSensitiveInfo = false, responseHasSensitiveInfo = true)
public class RegisterCmd extends BaseCmd {
- public static final Logger s_logger = Logger.getLogger(RegisterCmd.class.getName());
/////////////////////////////////////////////////////
diff --git a/api/src/main/java/org/apache/cloudstack/api/command/admin/user/UpdateUserCmd.java b/api/src/main/java/org/apache/cloudstack/api/command/admin/user/UpdateUserCmd.java
index cb9f6e189f03..c9e1e934152d 100644
--- a/api/src/main/java/org/apache/cloudstack/api/command/admin/user/UpdateUserCmd.java
+++ b/api/src/main/java/org/apache/cloudstack/api/command/admin/user/UpdateUserCmd.java
@@ -28,7 +28,6 @@
import org.apache.cloudstack.api.response.UserResponse;
import org.apache.cloudstack.context.CallContext;
import org.apache.cloudstack.region.RegionService;
-import org.apache.log4j.Logger;
import com.cloud.user.Account;
import com.cloud.user.User;
@@ -37,7 +36,6 @@
@APICommand(name = "updateUser", description = "Updates a user account", responseObject = UserResponse.class,
requestHasSensitiveInfo = true, responseHasSensitiveInfo = true)
public class UpdateUserCmd extends BaseCmd {
- public static final Logger s_logger = Logger.getLogger(UpdateUserCmd.class.getName());
/////////////////////////////////////////////////////
@@ -68,7 +66,7 @@ public class UpdateUserCmd extends BaseCmd {
@Parameter(name = ApiConstants.CURRENT_PASSWORD, type = CommandType.STRING, description = "Current password that was being used by the user. You must inform the current password when updating the password.", acceptedOnAdminPort = false)
private String currentPassword;
- @Parameter(name = ApiConstants.SECRET_KEY, type = CommandType.STRING, description = "The secret key for the user. Must be specified with userApiKey")
+ @Parameter(name = ApiConstants.USER_SECRET_KEY, type = CommandType.STRING, description = "The secret key for the user. Must be specified with userApiKey")
private String secretKey;
@Parameter(name = ApiConstants.TIMEZONE,
diff --git a/api/src/main/java/org/apache/cloudstack/api/command/admin/vlan/CreateVlanIpRangeCmd.java b/api/src/main/java/org/apache/cloudstack/api/command/admin/vlan/CreateVlanIpRangeCmd.java
index 66aefd46966b..c0ba99a82333 100644
--- a/api/src/main/java/org/apache/cloudstack/api/command/admin/vlan/CreateVlanIpRangeCmd.java
+++ b/api/src/main/java/org/apache/cloudstack/api/command/admin/vlan/CreateVlanIpRangeCmd.java
@@ -17,7 +17,6 @@
package org.apache.cloudstack.api.command.admin.vlan;
import com.cloud.utils.net.NetUtils;
-import org.apache.log4j.Logger;
import org.apache.cloudstack.api.APICommand;
import org.apache.cloudstack.api.ApiConstants;
@@ -40,10 +39,11 @@
import com.cloud.exception.ResourceUnavailableException;
import com.cloud.user.Account;
+import java.util.Objects;
+
@APICommand(name = "createVlanIpRange", description = "Creates a VLAN IP range.", responseObject = VlanIpRangeResponse.class,
requestHasSensitiveInfo = false, responseHasSensitiveInfo = false)
public class CreateVlanIpRangeCmd extends BaseCmd {
- public static final Logger s_logger = Logger.getLogger(CreateVlanIpRangeCmd.class.getName());
/////////////////////////////////////////////////////
@@ -114,6 +114,9 @@ public class CreateVlanIpRangeCmd extends BaseCmd {
@Parameter(name = ApiConstants.FOR_SYSTEM_VMS, type = CommandType.BOOLEAN, description = "true if IP range is set to system vms, false if not")
private Boolean forSystemVms;
+ @Parameter(name = ApiConstants.FOR_NSX, type = CommandType.BOOLEAN, description = "true if the IP range is used for NSX resource", since = "4.20.0")
+ private boolean forNsx;
+
/////////////////////////////////////////////////////
/////////////////// Accessors ///////////////////////
/////////////////////////////////////////////////////
@@ -154,8 +157,12 @@ public String getStartIp() {
return startIp;
}
+ public boolean isForNsx() {
+ return !Objects.isNull(forNsx) && forNsx;
+ }
+
public String getVlan() {
- if (vlan == null || vlan.isEmpty()) {
+ if ((vlan == null || vlan.isEmpty()) && !isForNsx()) {
vlan = "untagged";
}
return vlan;
@@ -226,10 +233,10 @@ public void execute() throws ResourceUnavailableException, ResourceAllocationExc
throw new ServerApiException(ApiErrorCode.INTERNAL_ERROR, "Failed to create vlan ip range");
}
} catch (ConcurrentOperationException ex) {
- s_logger.warn("Exception: ", ex);
+ logger.warn("Exception: ", ex);
throw new ServerApiException(ApiErrorCode.INTERNAL_ERROR, ex.getMessage());
} catch (InsufficientCapacityException ex) {
- s_logger.info(ex);
+ logger.info(ex);
throw new ServerApiException(ApiErrorCode.INSUFFICIENT_CAPACITY_ERROR, ex.getMessage());
}
}
diff --git a/api/src/main/java/org/apache/cloudstack/api/command/admin/vlan/DedicatePublicIpRangeCmd.java b/api/src/main/java/org/apache/cloudstack/api/command/admin/vlan/DedicatePublicIpRangeCmd.java
index 7c122dfc22e6..cac029f3aa12 100644
--- a/api/src/main/java/org/apache/cloudstack/api/command/admin/vlan/DedicatePublicIpRangeCmd.java
+++ b/api/src/main/java/org/apache/cloudstack/api/command/admin/vlan/DedicatePublicIpRangeCmd.java
@@ -16,7 +16,6 @@
// under the License.
package org.apache.cloudstack.api.command.admin.vlan;
-import org.apache.log4j.Logger;
import org.apache.cloudstack.api.APICommand;
import org.apache.cloudstack.api.ApiConstants;
@@ -36,7 +35,6 @@
@APICommand(name = "dedicatePublicIpRange", description = "Dedicates a Public IP range to an account", responseObject = VlanIpRangeResponse.class,
requestHasSensitiveInfo = false, responseHasSensitiveInfo = false)
public class DedicatePublicIpRangeCmd extends BaseCmd {
- public static final Logger s_logger = Logger.getLogger(DedicatePublicIpRangeCmd.class.getName());
/////////////////////////////////////////////////////
diff --git a/api/src/main/java/org/apache/cloudstack/api/command/admin/vlan/DeleteVlanIpRangeCmd.java b/api/src/main/java/org/apache/cloudstack/api/command/admin/vlan/DeleteVlanIpRangeCmd.java
index 390759c2c066..7ab0b053004c 100644
--- a/api/src/main/java/org/apache/cloudstack/api/command/admin/vlan/DeleteVlanIpRangeCmd.java
+++ b/api/src/main/java/org/apache/cloudstack/api/command/admin/vlan/DeleteVlanIpRangeCmd.java
@@ -16,7 +16,6 @@
// under the License.
package org.apache.cloudstack.api.command.admin.vlan;
-import org.apache.log4j.Logger;
import org.apache.cloudstack.api.APICommand;
import org.apache.cloudstack.api.ApiConstants;
@@ -32,7 +31,6 @@
@APICommand(name = "deleteVlanIpRange", description = "Deletes a VLAN IP range.", responseObject = SuccessResponse.class,
requestHasSensitiveInfo = false, responseHasSensitiveInfo = false)
public class DeleteVlanIpRangeCmd extends BaseCmd {
- public static final Logger s_logger = Logger.getLogger(DeleteVlanIpRangeCmd.class.getName());
/////////////////////////////////////////////////////
diff --git a/api/src/main/java/org/apache/cloudstack/api/command/admin/vlan/ListVlanIpRangesCmd.java b/api/src/main/java/org/apache/cloudstack/api/command/admin/vlan/ListVlanIpRangesCmd.java
index 3b5370e3f15d..c11b505c684d 100644
--- a/api/src/main/java/org/apache/cloudstack/api/command/admin/vlan/ListVlanIpRangesCmd.java
+++ b/api/src/main/java/org/apache/cloudstack/api/command/admin/vlan/ListVlanIpRangesCmd.java
@@ -19,7 +19,6 @@
import java.util.ArrayList;
import java.util.List;
-import org.apache.log4j.Logger;
import org.apache.cloudstack.api.APICommand;
import org.apache.cloudstack.api.ApiConstants;
@@ -40,7 +39,6 @@
@APICommand(name = "listVlanIpRanges", description = "Lists all VLAN IP ranges.", responseObject = VlanIpRangeResponse.class,
requestHasSensitiveInfo = false, responseHasSensitiveInfo = false)
public class ListVlanIpRangesCmd extends BaseListCmd {
- public static final Logger s_logger = Logger.getLogger(ListVlanIpRangesCmd.class.getName());
/////////////////////////////////////////////////////
diff --git a/api/src/main/java/org/apache/cloudstack/api/command/admin/vlan/ReleasePublicIpRangeCmd.java b/api/src/main/java/org/apache/cloudstack/api/command/admin/vlan/ReleasePublicIpRangeCmd.java
index 846433a60fc9..be4cea41cd89 100644
--- a/api/src/main/java/org/apache/cloudstack/api/command/admin/vlan/ReleasePublicIpRangeCmd.java
+++ b/api/src/main/java/org/apache/cloudstack/api/command/admin/vlan/ReleasePublicIpRangeCmd.java
@@ -16,7 +16,6 @@
// under the License.
package org.apache.cloudstack.api.command.admin.vlan;
-import org.apache.log4j.Logger;
import org.apache.cloudstack.api.APICommand;
import org.apache.cloudstack.api.ApiConstants;
@@ -32,7 +31,6 @@
@APICommand(name = "releasePublicIpRange", description = "Releases a Public IP range back to the system pool", responseObject = SuccessResponse.class,
requestHasSensitiveInfo = false, responseHasSensitiveInfo = false)
public class ReleasePublicIpRangeCmd extends BaseCmd {
- public static final Logger s_logger = Logger.getLogger(ReleasePublicIpRangeCmd.class.getName());
/////////////////////////////////////////////////////
diff --git a/api/src/main/java/org/apache/cloudstack/api/command/admin/vlan/UpdateVlanIpRangeCmd.java b/api/src/main/java/org/apache/cloudstack/api/command/admin/vlan/UpdateVlanIpRangeCmd.java
index caaf4c5ae016..df6d99f8e2af 100644
--- a/api/src/main/java/org/apache/cloudstack/api/command/admin/vlan/UpdateVlanIpRangeCmd.java
+++ b/api/src/main/java/org/apache/cloudstack/api/command/admin/vlan/UpdateVlanIpRangeCmd.java
@@ -24,7 +24,6 @@
import org.apache.cloudstack.api.Parameter;
import org.apache.cloudstack.api.ServerApiException;
import org.apache.cloudstack.api.response.VlanIpRangeResponse;
-import org.apache.log4j.Logger;
import com.cloud.dc.Vlan;
import com.cloud.exception.ConcurrentOperationException;
@@ -39,7 +38,6 @@
authorized = {RoleType.Admin})
public class UpdateVlanIpRangeCmd extends BaseCmd {
- public static final Logger s_logger = Logger.getLogger(UpdateVlanIpRangeCmd.class.getName());
/////////////////////////////////////////////////////
//////////////// API parameters /////////////////////
@@ -149,7 +147,7 @@ public void execute() throws ResourceUnavailableException, ResourceAllocationExc
throw new ServerApiException(ApiErrorCode.INTERNAL_ERROR, "Failed to Update vlan ip range");
}
} catch (ConcurrentOperationException ex) {
- s_logger.warn("Exception: ", ex);
+ logger.warn("Exception: ", ex);
throw new ServerApiException(ApiErrorCode.INTERNAL_ERROR, ex.getMessage());
}
}
diff --git a/api/src/main/java/org/apache/cloudstack/api/command/admin/vm/AssignVMCmd.java b/api/src/main/java/org/apache/cloudstack/api/command/admin/vm/AssignVMCmd.java
index 1d53bbb39ad7..ac63a5efac37 100644
--- a/api/src/main/java/org/apache/cloudstack/api/command/admin/vm/AssignVMCmd.java
+++ b/api/src/main/java/org/apache/cloudstack/api/command/admin/vm/AssignVMCmd.java
@@ -19,7 +19,6 @@
import java.util.List;
import org.apache.cloudstack.api.ApiCommandResourceType;
-import org.apache.log4j.Logger;
import org.apache.cloudstack.api.APICommand;
import org.apache.cloudstack.api.ApiConstants;
@@ -46,7 +45,6 @@
requestHasSensitiveInfo = false,
responseHasSensitiveInfo = true)
public class AssignVMCmd extends BaseCmd {
- public static final Logger s_logger = Logger.getLogger(AssignVMCmd.class.getName());
/////////////////////////////////////////////////////
@@ -133,7 +131,7 @@ public void execute() {
e.printStackTrace();
throw new ServerApiException(ApiErrorCode.INTERNAL_ERROR, e.getMessage());
} catch (Exception e) {
- s_logger.error("Failed to move vm due to: " + e.getStackTrace());
+ logger.error("Failed to move vm due to: " + e.getStackTrace());
if (e.getMessage() != null) {
throw new ServerApiException(ApiErrorCode.INTERNAL_ERROR, "Failed to move vm due to " + e.getMessage());
} else if (e.getCause() != null) {
diff --git a/api/src/main/java/org/apache/cloudstack/api/command/admin/vm/DeployVMCmdByAdmin.java b/api/src/main/java/org/apache/cloudstack/api/command/admin/vm/DeployVMCmdByAdmin.java
index acdc0e074278..6bb7657b86ba 100644
--- a/api/src/main/java/org/apache/cloudstack/api/command/admin/vm/DeployVMCmdByAdmin.java
+++ b/api/src/main/java/org/apache/cloudstack/api/command/admin/vm/DeployVMCmdByAdmin.java
@@ -20,7 +20,6 @@
import org.apache.cloudstack.api.Parameter;
import org.apache.cloudstack.api.response.ClusterResponse;
import org.apache.cloudstack.api.response.PodResponse;
-import org.apache.log4j.Logger;
import org.apache.cloudstack.api.APICommand;
import org.apache.cloudstack.api.ResponseObject.ResponseView;
@@ -34,7 +33,6 @@
@APICommand(name = "deployVirtualMachine", description = "Creates and automatically starts a virtual machine based on a service offering, disk offering, and template.", responseObject = UserVmResponse.class, responseView = ResponseView.Full, entityType = {VirtualMachine.class},
requestHasSensitiveInfo = false, responseHasSensitiveInfo = true)
public class DeployVMCmdByAdmin extends DeployVMCmd implements AdminCmd {
- public static final Logger s_logger = Logger.getLogger(DeployVMCmdByAdmin.class.getName());
@Parameter(name = ApiConstants.POD_ID, type = CommandType.UUID, entityType = PodResponse.class, description = "destination Pod ID to deploy the VM to - parameter available for root admin only", since = "4.13")
diff --git a/api/src/main/java/org/apache/cloudstack/api/command/admin/vm/ExpungeVMCmd.java b/api/src/main/java/org/apache/cloudstack/api/command/admin/vm/ExpungeVMCmd.java
index 4cd7f541c4ef..a964e873bad1 100644
--- a/api/src/main/java/org/apache/cloudstack/api/command/admin/vm/ExpungeVMCmd.java
+++ b/api/src/main/java/org/apache/cloudstack/api/command/admin/vm/ExpungeVMCmd.java
@@ -16,7 +16,6 @@
// under the License.
package org.apache.cloudstack.api.command.admin.vm;
-import org.apache.log4j.Logger;
import org.apache.cloudstack.acl.SecurityChecker.AccessType;
import org.apache.cloudstack.api.ACL;
@@ -43,7 +42,6 @@
@APICommand(name = "expungeVirtualMachine", description = "Expunge a virtual machine. Once expunged, it cannot be recoverd.", responseObject = SuccessResponse.class, entityType = {VirtualMachine.class},
requestHasSensitiveInfo = false, responseHasSensitiveInfo = false)
public class ExpungeVMCmd extends BaseAsyncCmd {
- public static final Logger s_logger = Logger.getLogger(ExpungeVMCmd.class.getName());
/////////////////////////////////////////////////////
diff --git a/api/src/main/java/org/apache/cloudstack/api/command/admin/vm/GetVMUserDataCmd.java b/api/src/main/java/org/apache/cloudstack/api/command/admin/vm/GetVMUserDataCmd.java
index 98af820201c3..8745ef12ce44 100644
--- a/api/src/main/java/org/apache/cloudstack/api/command/admin/vm/GetVMUserDataCmd.java
+++ b/api/src/main/java/org/apache/cloudstack/api/command/admin/vm/GetVMUserDataCmd.java
@@ -24,7 +24,6 @@
import org.apache.cloudstack.api.Parameter;
import org.apache.cloudstack.api.response.UserVmResponse;
import org.apache.cloudstack.api.response.VMUserDataResponse;
-import org.apache.log4j.Logger;
import com.cloud.user.Account;
import com.cloud.uservm.UserVm;
@@ -32,7 +31,6 @@
@APICommand(name = "getVirtualMachineUserData", description = "Returns user data associated with the VM", responseObject = VMUserDataResponse.class, since = "4.4",
requestHasSensitiveInfo = false, responseHasSensitiveInfo = false)
public class GetVMUserDataCmd extends BaseCmd {
- public static final Logger s_logger = Logger.getLogger(GetVMUserDataCmd.class);
/////////////////////////////////////////////////////
//////////////// API parameters /////////////////////
diff --git a/api/src/main/java/org/apache/cloudstack/api/command/admin/vm/ImportUnmanagedInstanceCmd.java b/api/src/main/java/org/apache/cloudstack/api/command/admin/vm/ImportUnmanagedInstanceCmd.java
index 3d8b23318ddd..ae6ceff26c7d 100644
--- a/api/src/main/java/org/apache/cloudstack/api/command/admin/vm/ImportUnmanagedInstanceCmd.java
+++ b/api/src/main/java/org/apache/cloudstack/api/command/admin/vm/ImportUnmanagedInstanceCmd.java
@@ -41,7 +41,6 @@
import org.apache.commons.collections.MapUtils;
import org.apache.commons.lang.BooleanUtils;
import org.apache.commons.lang3.StringUtils;
-import org.apache.log4j.Logger;
import com.cloud.event.EventTypes;
import com.cloud.exception.ConcurrentOperationException;
@@ -65,7 +64,6 @@
authorized = {RoleType.Admin},
since = "4.14.0")
public class ImportUnmanagedInstanceCmd extends BaseAsyncCmd {
- public static final Logger LOGGER = Logger.getLogger(ImportUnmanagedInstanceCmd.class);
@Inject
public VmImportService vmImportService;
@@ -203,8 +201,8 @@ public Map getNicNetworkList() {
for (Map entry : (Collection