diff --git a/api/src/main/java/com/cloud/network/Network.java b/api/src/main/java/com/cloud/network/Network.java index 37b8f332d0a9..111b85a6d96d 100644 --- a/api/src/main/java/com/cloud/network/Network.java +++ b/api/src/main/java/com/cloud/network/Network.java @@ -19,6 +19,7 @@ import java.io.Serializable; import java.net.URI; import java.util.ArrayList; +import java.util.Date; import java.util.List; import com.cloud.exception.InvalidParameterValueException; @@ -456,4 +457,6 @@ public void setIp6Address(String ip6Address) { String getRouterIp(); String getRouterIpv6(); + + Date getCreated(); } diff --git a/api/src/main/java/com/cloud/network/NetworkProfile.java b/api/src/main/java/com/cloud/network/NetworkProfile.java index 08a420a1b20f..f3c178767e85 100644 --- a/api/src/main/java/com/cloud/network/NetworkProfile.java +++ b/api/src/main/java/com/cloud/network/NetworkProfile.java @@ -17,6 +17,7 @@ package com.cloud.network; import java.net.URI; +import java.util.Date; import com.cloud.network.Networks.BroadcastDomainType; import com.cloud.network.Networks.Mode; @@ -329,4 +330,9 @@ public String getRouterIpv6() { return null; } + @Override + public Date getCreated() { + return null; + } + } diff --git a/api/src/main/java/com/cloud/network/vpc/Vpc.java b/api/src/main/java/com/cloud/network/vpc/Vpc.java index 9f40562423d8..432c8839ad89 100644 --- a/api/src/main/java/com/cloud/network/vpc/Vpc.java +++ b/api/src/main/java/com/cloud/network/vpc/Vpc.java @@ -20,6 +20,8 @@ import org.apache.cloudstack.api.Identity; import org.apache.cloudstack.api.InternalIdentity; +import java.util.Date; + public interface Vpc extends ControlledEntity, Identity, InternalIdentity { public enum State { @@ -91,4 +93,6 @@ public enum State { boolean isRollingRestart(); void setRollingRestart(boolean rollingRestart); + + Date getCreated(); } diff --git a/api/src/main/java/com/cloud/offering/NetworkOffering.java b/api/src/main/java/com/cloud/offering/NetworkOffering.java index 8ae90c574224..f01c58542e3e 100644 --- a/api/src/main/java/com/cloud/offering/NetworkOffering.java +++ b/api/src/main/java/com/cloud/offering/NetworkOffering.java @@ -23,6 +23,8 @@ import com.cloud.network.Network.GuestType; import com.cloud.network.Networks.TrafficType; +import java.util.Date; + /** * Describes network offering * @@ -141,4 +143,6 @@ public enum Detail { boolean isSupportingPublicAccess(); String getServicePackage(); + + Date getCreated(); } diff --git a/api/src/main/java/org/apache/cloudstack/api/response/NetworkResponse.java b/api/src/main/java/org/apache/cloudstack/api/response/NetworkResponse.java index a1337144a6ca..9464317f779b 100644 --- a/api/src/main/java/org/apache/cloudstack/api/response/NetworkResponse.java +++ b/api/src/main/java/org/apache/cloudstack/api/response/NetworkResponse.java @@ -16,6 +16,7 @@ // under the License. package org.apache.cloudstack.api.response; +import java.util.Date; import java.util.List; import java.util.Map; import java.util.Set; @@ -246,6 +247,10 @@ public class NetworkResponse extends BaseResponse implements ControlledEntityRes @Param(description = "If the network has redundant routers enabled", since = "4.11.1") private Boolean redundantRouter; + @SerializedName(ApiConstants.CREATED) + @Param(description = "the date this network was created", since = "4.16.0") + private Date created; + public Boolean getDisplayNetwork() { return displayNetwork; } @@ -482,4 +487,12 @@ public String getVpcName() { public void setVpcName(String vpcName) { this.vpcName = vpcName; } + + public Date getCreated() { + return created; + } + + public void setCreated(Date created) { + this.created = created; + } } diff --git a/api/src/main/java/org/apache/cloudstack/api/response/ProjectResponse.java b/api/src/main/java/org/apache/cloudstack/api/response/ProjectResponse.java index 47ebab8756fc..7f14fce30078 100644 --- a/api/src/main/java/org/apache/cloudstack/api/response/ProjectResponse.java +++ b/api/src/main/java/org/apache/cloudstack/api/response/ProjectResponse.java @@ -17,6 +17,7 @@ package org.apache.cloudstack.api.response; import java.util.ArrayList; +import java.util.Date; import java.util.List; import java.util.Map; @@ -207,6 +208,10 @@ public class ProjectResponse extends BaseResponse implements ResourceLimitAndCou @Param(description = "the total number of virtual machines running for this project", since = "4.2.0") private Integer vmRunning; + @SerializedName(ApiConstants.CREATED) + @Param(description = "the date this project was created", since = "4.16.0") + private Date created; + public void setId(String id) { this.id = id; } @@ -421,4 +426,12 @@ public void setSecondaryStorageAvailable(String secondaryStorageAvailable) { public void setOwners(List> owners) { this.owners = owners; } + + public Date getCreated() { + return created; + } + + public void setCreated(Date created) { + this.created = created; + } } diff --git a/engine/schema/src/main/java/com/cloud/network/vpc/VpcVO.java b/engine/schema/src/main/java/com/cloud/network/vpc/VpcVO.java index 3061d305d05b..83034b3fdbe0 100644 --- a/engine/schema/src/main/java/com/cloud/network/vpc/VpcVO.java +++ b/engine/schema/src/main/java/com/cloud/network/vpc/VpcVO.java @@ -241,6 +241,11 @@ public void setRollingRestart(boolean rollingRestart) { this.rollingRestart = rollingRestart; } + @Override + public Date getCreated() { + return created; + } + @Override public Class getEntityType() { return Vpc.class; diff --git a/server/src/main/java/com/cloud/api/ApiResponseHelper.java b/server/src/main/java/com/cloud/api/ApiResponseHelper.java index b84e10d35a04..d72d9405b6e2 100644 --- a/server/src/main/java/com/cloud/api/ApiResponseHelper.java +++ b/server/src/main/java/com/cloud/api/ApiResponseHelper.java @@ -2354,6 +2354,7 @@ public NetworkResponse createNetworkResponse(ResponseView view, Network network) } response.setExternalId(network.getExternalId()); response.setRedundantRouter(network.isRedundant()); + response.setCreated(network.getCreated()); response.setObjectName("network"); return response; } @@ -2963,6 +2964,7 @@ public VpcResponse createVpcResponse(ResponseView view, Vpc vpc) { response.setId(vpc.getUuid()); response.setName(vpc.getName()); response.setDisplayText(vpc.getDisplayText()); + response.setCreated(vpc.getCreated()); response.setState(vpc.getState().name()); VpcOffering voff = ApiDBUtils.findVpcOfferingById(vpc.getVpcOfferingId()); if (voff != null) { diff --git a/server/src/main/java/com/cloud/api/query/dao/NetworkOfferingJoinDaoImpl.java b/server/src/main/java/com/cloud/api/query/dao/NetworkOfferingJoinDaoImpl.java index 0c258d1966a4..ee3e0f21829d 100644 --- a/server/src/main/java/com/cloud/api/query/dao/NetworkOfferingJoinDaoImpl.java +++ b/server/src/main/java/com/cloud/api/query/dao/NetworkOfferingJoinDaoImpl.java @@ -88,6 +88,7 @@ public NetworkOfferingResponse newNetworkOfferingResponse(NetworkOffering offeri networkOfferingResponse.setConcurrentConnections(offering.getConcurrentConnections()); networkOfferingResponse.setSupportsStrechedL2Subnet(offering.isSupportingStrechedL2()); networkOfferingResponse.setSupportsPublicAccess(offering.isSupportingPublicAccess()); + networkOfferingResponse.setCreated(offering.getCreated()); if (offering.getGuestType() != null) { networkOfferingResponse.setGuestIpType(offering.getGuestType().toString()); } diff --git a/server/src/main/java/com/cloud/api/query/dao/ProjectJoinDaoImpl.java b/server/src/main/java/com/cloud/api/query/dao/ProjectJoinDaoImpl.java index 3f384f3c0451..d893a5ca37a9 100644 --- a/server/src/main/java/com/cloud/api/query/dao/ProjectJoinDaoImpl.java +++ b/server/src/main/java/com/cloud/api/query/dao/ProjectJoinDaoImpl.java @@ -110,6 +110,7 @@ public ProjectResponse newProjectResponse(EnumSet details, Projec ownersList.add(ownerDetails); } response.setOwners(ownersList); + response.setCreated(proj.getCreated()); // update tag information List tags = ApiDBUtils.listResourceTagViewByResourceUUID(proj.getUuid(), ResourceObjectType.Project);