From 1a403f1a9d23395b413ff2adb2e5307dccb9773b Mon Sep 17 00:00:00 2001 From: dahn Date: Wed, 21 Aug 2024 23:54:35 -0700 Subject: [PATCH 1/5] open up extra-config to all users (#9422) --- .../org/apache/cloudstack/api/command/user/vm/UpdateVMCmd.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/api/src/main/java/org/apache/cloudstack/api/command/user/vm/UpdateVMCmd.java b/api/src/main/java/org/apache/cloudstack/api/command/user/vm/UpdateVMCmd.java index 4527e152f18..1660255979a 100644 --- a/api/src/main/java/org/apache/cloudstack/api/command/user/vm/UpdateVMCmd.java +++ b/api/src/main/java/org/apache/cloudstack/api/command/user/vm/UpdateVMCmd.java @@ -143,7 +143,7 @@ public class UpdateVMCmd extends BaseCustomIdCmd implements SecurityGroupAction, + " Example: dhcpoptionsnetworklist[0].dhcp:114=url&dhcpoptionsetworklist[0].networkid=networkid&dhcpoptionsetworklist[0].dhcp:66=www.test.com") private Map dhcpOptionsNetworkList; - @Parameter(name = ApiConstants.EXTRA_CONFIG, type = CommandType.STRING, since = "4.12", description = "an optional URL encoded string that can be passed to the virtual machine upon successful deployment", authorized = { RoleType.Admin }, length = 5120) + @Parameter(name = ApiConstants.EXTRA_CONFIG, type = CommandType.STRING, since = "4.12", description = "an optional URL encoded string that can be passed to the virtual machine upon successful deployment", length = 5120) private String extraConfig; ///////////////////////////////////////////////////// From 0597def630eb6cfaeaf2b2b0ac00a49036bab10e Mon Sep 17 00:00:00 2001 From: Wei Zhou Date: Fri, 23 Aug 2024 19:27:11 +0200 Subject: [PATCH 2/5] test: fix component tests test_acl_isolatednetwork and test_acl_isolatednetwork_delete (#9571) * test: fix component tests test_acl_isolatednetwork and test_acl_isolatednetwork_delete * Update test/integration/component/test_acl_isolatednetwork.py --- .../component/test_acl_isolatednetwork.py | 12 ++++++------ .../component/test_acl_isolatednetwork_delete.py | 6 +++--- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/test/integration/component/test_acl_isolatednetwork.py b/test/integration/component/test_acl_isolatednetwork.py index 038fd358972..8397171bcc6 100644 --- a/test/integration/component/test_acl_isolatednetwork.py +++ b/test/integration/component/test_acl_isolatednetwork.py @@ -799,7 +799,7 @@ class TestIsolatedNetwork(cloudstackTestCase): self.fail("Domain admin is allowed to deploy vm for users not in hos domain ") except Exception as e: self.debug("When Domain admin tries to deploy vm for users in their sub domain %s" % e) - if not CloudstackAclException.verifyMsginException(e, CloudstackAclException.NO_PERMISSION_TO_OPERATE_DOMAIN): + if not CloudstackAclException.verifyMsginException(e, CloudstackAclException.NO_PERMISSION_TO_OPERATE_SOURCE): self.fail("Error message validation failed when Domain admin tries to deploy vm for users not in hos domain ") @attr("simulator_only", tags=["advanced"], required_hardware="false") @@ -876,7 +876,7 @@ class TestIsolatedNetwork(cloudstackTestCase): self.fail("Regular user is allowed to deploy vm for other users in their domain ") except Exception as e: self.debug("When user tries to deploy vm for users in their domain %s" % e) - if not CloudstackAclException.verifyMsginException(e, CloudstackAclException.NO_PERMISSION_TO_OPERATE_ACCOUNT): + if not CloudstackAclException.verifyMsginException(e, CloudstackAclException.NO_PERMISSION_TO_OPERATE_SOURCE): self.fail("Error message validation failed when Regular user tries to deploy vm for other users in their domain ") @attr("simulator_only", tags=["advanced"], required_hardware="false") @@ -903,7 +903,7 @@ class TestIsolatedNetwork(cloudstackTestCase): self.fail("Regular user is allowed to deploy vm for users not in their domain ") except Exception as e: self.debug("When user tries to deploy vm for users n different domain %s" % e) - if not CloudstackAclException.verifyMsginException(e, CloudstackAclException.NO_PERMISSION_TO_OPERATE_ACCOUNT): + if not CloudstackAclException.verifyMsginException(e, CloudstackAclException.NO_PERMISSION_TO_OPERATE_SOURCE): self.fail("Error message validation failed when Regular user tries to deploy vm for users not in their domain ") @attr("simulator_only", tags=["advanced"], required_hardware="false") @@ -1030,7 +1030,7 @@ class TestIsolatedNetwork(cloudstackTestCase): self.fail("Domain admin is allowed to restart network for users not in their domain ") except Exception as e: self.debug("When Domain admin tries to restart network for users in their sub domain %s" % e) - if not CloudstackAclException.verifyMsginException(e, CloudstackAclException.NO_PERMISSION_TO_OPERATE_DOMAIN): + if not CloudstackAclException.verifyMsginException(e, CloudstackAclException.NO_PERMISSION_TO_OPERATE_SOURCE): self.fail("Error message validation failed when Domain admin tries to restart network for users not in their domain ") ## Test cases relating restart network as regular user @@ -1061,7 +1061,7 @@ class TestIsolatedNetwork(cloudstackTestCase): self.fail("Regular user is allowed to restart network for users in their domain ") except Exception as e: self.debug("When user tries to restart network for users in their domain %s" % e) - if not CloudstackAclException.verifyMsginException(e, CloudstackAclException.NO_PERMISSION_TO_OPERATE_ACCOUNT): + if not CloudstackAclException.verifyMsginException(e, CloudstackAclException.NO_PERMISSION_TO_OPERATE_SOURCE): self.fail("Error message validation failed when Regular user tries to restart network for users in their domain ") @attr("simulator_only", tags=["advanced"], required_hardware="false") @@ -1077,7 +1077,7 @@ class TestIsolatedNetwork(cloudstackTestCase): self.fail("Regular user is allowed to restart network for users not in their domain ") except Exception as e: self.debug("When user tries to restart network for users in other domain %s" % e) - if not CloudstackAclException.verifyMsginException(e, CloudstackAclException.NO_PERMISSION_TO_OPERATE_ACCOUNT): + if not CloudstackAclException.verifyMsginException(e, CloudstackAclException.NO_PERMISSION_TO_OPERATE_SOURCE): self.fail("Error message validation failed when Regular user is allowed to restart network for users not in their domain ") @staticmethod diff --git a/test/integration/component/test_acl_isolatednetwork_delete.py b/test/integration/component/test_acl_isolatednetwork_delete.py index a8c4b67557e..6781dccad66 100644 --- a/test/integration/component/test_acl_isolatednetwork_delete.py +++ b/test/integration/component/test_acl_isolatednetwork_delete.py @@ -455,7 +455,7 @@ class TestIsolatedNetworkDelete(cloudstackTestCase): self.fail("Domain admin is allowed to delete network for users not in their domain ") except Exception as e: self.debug ("When Domain admin tries to delete network for user in a different domain %s" %e) - if not CloudstackAclException.verifyMsginException(e,CloudstackAclException.NO_PERMISSION_TO_OPERATE_DOMAIN): + if not CloudstackAclException.verifyMsginException(e,CloudstackAclException.NO_PERMISSION_TO_OPERATE_SOURCE): self.fail("Error message validation failed when Domain admin tries to delete network for users not in their domain ") ## Test cases relating deleting network as regular user @@ -490,7 +490,7 @@ class TestIsolatedNetworkDelete(cloudstackTestCase): self.fail("Regular user is allowed to delete network for users in their domain ") except Exception as e: self.debug ("When user tries to delete network for users in their domain %s" %e) - if not CloudstackAclException.verifyMsginException(e,CloudstackAclException.NO_PERMISSION_TO_OPERATE_ACCOUNT): + if not CloudstackAclException.verifyMsginException(e,CloudstackAclException.NO_PERMISSION_TO_OPERATE_SOURCE): self.fail("Regular user is allowed to delete network for users in their domain ") @attr("simulator_only",tags=["advanced"],required_hardware="false") @@ -508,7 +508,7 @@ class TestIsolatedNetworkDelete(cloudstackTestCase): self.fail("Regular user is allowed to delete network for users not in their domain ") except Exception as e: self.debug ("When user tries to delete network for users in other domain %s" %e) - if not CloudstackAclException.verifyMsginException(e,CloudstackAclException.NO_PERMISSION_TO_OPERATE_ACCOUNT): + if not CloudstackAclException.verifyMsginException(e,CloudstackAclException.NO_PERMISSION_TO_OPERATE_SOURCE): self.fail("Error message validation failed when Regular user tries to delete network for users not in their domain ") @staticmethod From de3537c98a3d479ad6715255a80a391c08cef908 Mon Sep 17 00:00:00 2001 From: Harikrishna Date: Mon, 26 Aug 2024 14:34:00 +0530 Subject: [PATCH 3/5] Added domain path to all entities (#9540) --- .../cloudstack/affinity/AffinityGroupResponse.java | 9 +++++++++ .../cloudstack/api/command/user/vpn/AddVpnUserCmd.java | 1 + .../api/response/AcquireIPAddressResponse.java | 9 +++++++++ .../api/response/ApplicationLoadBalancerResponse.java | 9 +++++++++ .../cloudstack/api/response/AutoScalePolicyResponse.java | 9 +++++++++ .../api/response/AutoScaleVmGroupResponse.java | 9 +++++++++ .../api/response/AutoScaleVmProfileResponse.java | 8 ++++++++ .../apache/cloudstack/api/response/BucketResponse.java | 9 +++++++++ .../cloudstack/api/response/ConditionResponse.java | 9 +++++++++ .../api/response/ControlledEntityResponse.java | 2 ++ .../api/response/ControlledViewEntityResponse.java | 2 ++ .../cloudstack/api/response/DomainRouterResponse.java | 8 ++++++++ .../apache/cloudstack/api/response/EventResponse.java | 9 +++++++++ .../api/response/GlobalLoadBalancerResponse.java | 9 +++++++++ .../cloudstack/api/response/GuestVlanRangeResponse.java | 8 ++++++++ .../cloudstack/api/response/GuestVlanResponse.java | 8 ++++++++ .../cloudstack/api/response/IPAddressResponse.java | 8 ++++++++ .../cloudstack/api/response/InstanceGroupResponse.java | 9 +++++++++ .../cloudstack/api/response/LoadBalancerResponse.java | 9 +++++++++ .../apache/cloudstack/api/response/NetworkResponse.java | 1 + .../cloudstack/api/response/OvsProviderResponse.java | 8 ++++++++ .../cloudstack/api/response/PrivateGatewayResponse.java | 8 ++++++++ .../cloudstack/api/response/ProjectAccountResponse.java | 9 +++++++++ .../api/response/ProjectInvitationResponse.java | 9 +++++++++ .../cloudstack/api/response/RemoteAccessVpnResponse.java | 8 ++++++++ .../cloudstack/api/response/ResourceCountResponse.java | 9 +++++++++ .../cloudstack/api/response/ResourceLimitResponse.java | 8 ++++++++ .../cloudstack/api/response/ResourceTagResponse.java | 9 +++++++++ .../cloudstack/api/response/SecurityGroupResponse.java | 9 +++++++++ .../api/response/Site2SiteCustomerGatewayResponse.java | 9 +++++++++ .../api/response/Site2SiteVpnConnectionResponse.java | 9 +++++++++ .../api/response/Site2SiteVpnGatewayResponse.java | 8 ++++++++ .../apache/cloudstack/api/response/SnapshotResponse.java | 9 +++++++++ .../cloudstack/api/response/StaticRouteResponse.java | 8 ++++++++ .../apache/cloudstack/api/response/TemplateResponse.java | 9 +++++++++ .../cloudstack/api/response/UsageRecordResponse.java | 8 ++++++++ .../apache/cloudstack/api/response/UserDataResponse.java | 9 +++++++++ .../apache/cloudstack/api/response/UserVmResponse.java | 8 ++++++++ .../cloudstack/api/response/VMSnapshotResponse.java | 9 +++++++++ .../api/response/VirtualRouterProviderResponse.java | 8 ++++++++ .../cloudstack/api/response/VlanIpRangeResponse.java | 9 +++++++++ .../apache/cloudstack/api/response/VolumeResponse.java | 9 +++++++++ .../org/apache/cloudstack/api/response/VpcResponse.java | 9 +++++++++ .../apache/cloudstack/api/response/VpnUsersResponse.java | 9 +++++++++ .../kubernetes/cluster/KubernetesClusterManagerImpl.java | 1 + .../api/response/KubernetesClusterResponse.java | 8 ++++++++ .../contrail/api/response/ServiceInstanceResponse.java | 8 ++++++++ .../src/main/java/com/cloud/api/ApiResponseHelper.java | 9 +++++++++ .../com/cloud/api/query/dao/DomainRouterJoinDaoImpl.java | 1 + .../cloud/api/query/dao/ProjectAccountJoinDaoImpl.java | 1 + .../api/query/dao/ProjectInvitationJoinDaoImpl.java | 1 + .../com/cloud/api/query/dao/ResourceTagJoinDaoImpl.java | 1 + .../com/cloud/api/query/dao/TemplateJoinDaoImpl.java | 3 +++ .../java/com/cloud/api/query/dao/UserVmJoinDaoImpl.java | 1 + 54 files changed, 386 insertions(+) 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 22842b834fe..6cda8d07bd8 100644 --- a/api/src/main/java/org/apache/cloudstack/affinity/AffinityGroupResponse.java +++ b/api/src/main/java/org/apache/cloudstack/affinity/AffinityGroupResponse.java @@ -56,6 +56,10 @@ public class AffinityGroupResponse extends BaseResponse implements ControlledVie @Param(description = "the domain name of the affinity group") private String domainName; + @SerializedName(ApiConstants.DOMAIN_PATH) + @Param(description = "path of the Domain the affinity group belongs to", since = "4.19.2.0") + private String domainPath; + @SerializedName(ApiConstants.PROJECT_ID) @Param(description = "the project ID of the affinity group") private String projectId; @@ -115,6 +119,11 @@ public class AffinityGroupResponse extends BaseResponse implements ControlledVie this.domainName = domainName; } + @Override + public void setDomainPath(String domainPath) { + this.domainPath = domainPath; + } + @Override public int hashCode() { final int prime = 31; diff --git a/api/src/main/java/org/apache/cloudstack/api/command/user/vpn/AddVpnUserCmd.java b/api/src/main/java/org/apache/cloudstack/api/command/user/vpn/AddVpnUserCmd.java index f3b452008c9..8f0fb7bc096 100644 --- a/api/src/main/java/org/apache/cloudstack/api/command/user/vpn/AddVpnUserCmd.java +++ b/api/src/main/java/org/apache/cloudstack/api/command/user/vpn/AddVpnUserCmd.java @@ -133,6 +133,7 @@ public class AddVpnUserCmd extends BaseAsyncCreateCmd { if (domain != null) { vpnResponse.setDomainId(domain.getUuid()); vpnResponse.setDomainName(domain.getName()); + vpnResponse.setDomainPath(domain.getPath()); } vpnResponse.setResponseName(getCommandName()); diff --git a/api/src/main/java/org/apache/cloudstack/api/response/AcquireIPAddressResponse.java b/api/src/main/java/org/apache/cloudstack/api/response/AcquireIPAddressResponse.java index 7270fa949c8..06351a40d9d 100644 --- a/api/src/main/java/org/apache/cloudstack/api/response/AcquireIPAddressResponse.java +++ b/api/src/main/java/org/apache/cloudstack/api/response/AcquireIPAddressResponse.java @@ -75,6 +75,10 @@ public class AcquireIPAddressResponse extends BaseResponse implements Controlle @Param(description = "the domain the public IP address is associated with") private String domainName; + @SerializedName(ApiConstants.DOMAIN_PATH) + @Param(description = "path of the domain to which the public IP address belongs", since = "4.19.2.0") + private String domainPath; + @SerializedName(ApiConstants.FOR_VIRTUAL_NETWORK) @Param(description = "the virtual network for the IP address") private Boolean forVirtualNetwork; @@ -190,6 +194,11 @@ public class AcquireIPAddressResponse extends BaseResponse implements Controlle this.domainName = domainName; } + @Override + public void setDomainPath(String domainPath) { + this.domainPath = domainPath; + } + public void setForVirtualNetwork(Boolean forVirtualNetwork) { this.forVirtualNetwork = forVirtualNetwork; } diff --git a/api/src/main/java/org/apache/cloudstack/api/response/ApplicationLoadBalancerResponse.java b/api/src/main/java/org/apache/cloudstack/api/response/ApplicationLoadBalancerResponse.java index 53e3f868a3b..0b6485bfc14 100644 --- a/api/src/main/java/org/apache/cloudstack/api/response/ApplicationLoadBalancerResponse.java +++ b/api/src/main/java/org/apache/cloudstack/api/response/ApplicationLoadBalancerResponse.java @@ -76,6 +76,10 @@ public class ApplicationLoadBalancerResponse extends BaseResponse implements Con @Param(description = "the domain of the Load Balancer") private String domainName; + @SerializedName(ApiConstants.DOMAIN_PATH) + @Param(description = "path of the domain to which the Load Balancer belongs", since = "4.19.2.0") + private String domainPath; + @SerializedName("loadbalancerrule") @Param(description = "the list of rules associated with the Load Balancer", responseObject = ApplicationLoadBalancerRuleResponse.class) private List lbRules; @@ -107,6 +111,11 @@ public class ApplicationLoadBalancerResponse extends BaseResponse implements Con this.domainName = domainName; } + @Override + public void setDomainPath(String domainPath) { + this.domainPath = domainPath; + } + @Override public void setProjectId(String projectId) { this.projectId = projectId; diff --git a/api/src/main/java/org/apache/cloudstack/api/response/AutoScalePolicyResponse.java b/api/src/main/java/org/apache/cloudstack/api/response/AutoScalePolicyResponse.java index ae3462f1fec..e3f9902dec6 100644 --- a/api/src/main/java/org/apache/cloudstack/api/response/AutoScalePolicyResponse.java +++ b/api/src/main/java/org/apache/cloudstack/api/response/AutoScalePolicyResponse.java @@ -74,6 +74,10 @@ public class AutoScalePolicyResponse extends BaseResponse implements ControlledE @Param(description = "the domain name of the autoscale policy") private String domainName; + @SerializedName(ApiConstants.DOMAIN_PATH) + @Param(description = "path of the domain to which the autoscale policy belongs", since = "4.19.2.0") + private String domainPath; + @Override public String getObjectId() { return this.id; @@ -118,6 +122,11 @@ public class AutoScalePolicyResponse extends BaseResponse implements ControlledE this.domainName = domainName; } + @Override + public void setDomainPath(String domainPath) { + this.domainPath = domainPath; + } + @Override public void setProjectId(String projectId) { this.projectId = projectId; diff --git a/api/src/main/java/org/apache/cloudstack/api/response/AutoScaleVmGroupResponse.java b/api/src/main/java/org/apache/cloudstack/api/response/AutoScaleVmGroupResponse.java index 656a62ddda3..b1389acdecb 100644 --- a/api/src/main/java/org/apache/cloudstack/api/response/AutoScaleVmGroupResponse.java +++ b/api/src/main/java/org/apache/cloudstack/api/response/AutoScaleVmGroupResponse.java @@ -123,6 +123,10 @@ public class AutoScaleVmGroupResponse extends BaseResponseWithAnnotations implem @Param(description = "the domain name of the vm group") private String domainName; + @SerializedName(ApiConstants.DOMAIN_PATH) + @Param(description = "path of the domain to which the vm group belongs", since = "4.19.2.0") + private String domainPath; + @SerializedName(ApiConstants.FOR_DISPLAY) @Param(description = "is group for display to the regular user", since = "4.4", authorized = {RoleType.Admin}) private Boolean forDisplay; @@ -227,6 +231,11 @@ public class AutoScaleVmGroupResponse extends BaseResponseWithAnnotations implem this.domainName = domainName; } + @Override + public void setDomainPath(String domainPath) { + this.domainPath = domainPath; + } + @Override public void setProjectId(String projectId) { this.projectId = projectId; diff --git a/api/src/main/java/org/apache/cloudstack/api/response/AutoScaleVmProfileResponse.java b/api/src/main/java/org/apache/cloudstack/api/response/AutoScaleVmProfileResponse.java index 678c4fcaaca..22e4eb2288b 100644 --- a/api/src/main/java/org/apache/cloudstack/api/response/AutoScaleVmProfileResponse.java +++ b/api/src/main/java/org/apache/cloudstack/api/response/AutoScaleVmProfileResponse.java @@ -114,6 +114,10 @@ public class AutoScaleVmProfileResponse extends BaseResponse implements Controll @Param(description = "the domain name of the vm profile") private String domainName; + @SerializedName(ApiConstants.DOMAIN_PATH) + @Param(description = "path of the domain to which the vm profile belongs", since = "4.19.2.0") + private String domainPath; + @SerializedName(ApiConstants.FOR_DISPLAY) @Param(description = "is profile for display to the regular user", since = "4.4", authorized = {RoleType.Admin}) private Boolean forDisplay; @@ -196,6 +200,10 @@ public class AutoScaleVmProfileResponse extends BaseResponse implements Controll this.domainName = domainName; } + @Override + public void setDomainPath(String domainPath) { + this.domainPath = domainPath; + } @Override public void setProjectId(String projectId) { this.projectId = projectId; diff --git a/api/src/main/java/org/apache/cloudstack/api/response/BucketResponse.java b/api/src/main/java/org/apache/cloudstack/api/response/BucketResponse.java index b75f3604324..c66629c8e13 100644 --- a/api/src/main/java/org/apache/cloudstack/api/response/BucketResponse.java +++ b/api/src/main/java/org/apache/cloudstack/api/response/BucketResponse.java @@ -54,6 +54,10 @@ public class BucketResponse extends BaseResponseWithTagInformation implements Co @SerializedName(ApiConstants.DOMAIN) @Param(description = "the domain associated with the bucket") private String domainName; + + @SerializedName(ApiConstants.DOMAIN_PATH) + @Param(description = "path of the domain to which the bucket belongs", since = "4.19.2.0") + private String domainPath; @SerializedName(ApiConstants.OBJECT_STORAGE_ID) @Param(description = "id of the object storage hosting the Bucket; returned to admin user only") private String objectStoragePoolId; @@ -146,6 +150,11 @@ public class BucketResponse extends BaseResponseWithTagInformation implements Co this.domainName = domainName; } + @Override + public void setDomainPath(String domainPath) { + this.domainPath = domainPath; + } + @Override public void setProjectId(String projectId) { this.projectId = projectId; diff --git a/api/src/main/java/org/apache/cloudstack/api/response/ConditionResponse.java b/api/src/main/java/org/apache/cloudstack/api/response/ConditionResponse.java index 15671430bf1..1038177cb86 100644 --- a/api/src/main/java/org/apache/cloudstack/api/response/ConditionResponse.java +++ b/api/src/main/java/org/apache/cloudstack/api/response/ConditionResponse.java @@ -61,6 +61,10 @@ public class ConditionResponse extends BaseResponse implements ControlledEntityR @Param(description = "the domain name of the owner.") private String domain; + @SerializedName(ApiConstants.DOMAIN_PATH) + @Param(description = "path of the domain to which the Condition owner belongs", since = "4.19.2.0") + private String domainPath; + @SerializedName(ApiConstants.ZONE_ID) @Param(description = "zone id of counter") private String zoneId; @@ -138,4 +142,9 @@ public class ConditionResponse extends BaseResponse implements ControlledEntityR public void setDomainName(String domainName) { this.domain = domainName; } + + @Override + public void setDomainPath(String domainPath) { + this.domainPath = domainPath; + } } diff --git a/api/src/main/java/org/apache/cloudstack/api/response/ControlledEntityResponse.java b/api/src/main/java/org/apache/cloudstack/api/response/ControlledEntityResponse.java index 598ef082253..dc021705d78 100644 --- a/api/src/main/java/org/apache/cloudstack/api/response/ControlledEntityResponse.java +++ b/api/src/main/java/org/apache/cloudstack/api/response/ControlledEntityResponse.java @@ -27,4 +27,6 @@ public interface ControlledEntityResponse { public void setDomainId(String domainId); public void setDomainName(String domainName); + + public void setDomainPath(String domainPath); } diff --git a/api/src/main/java/org/apache/cloudstack/api/response/ControlledViewEntityResponse.java b/api/src/main/java/org/apache/cloudstack/api/response/ControlledViewEntityResponse.java index abe4dd77143..730c2c38fc5 100644 --- a/api/src/main/java/org/apache/cloudstack/api/response/ControlledViewEntityResponse.java +++ b/api/src/main/java/org/apache/cloudstack/api/response/ControlledViewEntityResponse.java @@ -27,4 +27,6 @@ public interface ControlledViewEntityResponse { public void setDomainId(String domainId); public void setDomainName(String domainName); + + public void setDomainPath(String domainPath); } diff --git a/api/src/main/java/org/apache/cloudstack/api/response/DomainRouterResponse.java b/api/src/main/java/org/apache/cloudstack/api/response/DomainRouterResponse.java index 99e5f6ccdfa..b23d0f4b527 100644 --- a/api/src/main/java/org/apache/cloudstack/api/response/DomainRouterResponse.java +++ b/api/src/main/java/org/apache/cloudstack/api/response/DomainRouterResponse.java @@ -185,6 +185,10 @@ public class DomainRouterResponse extends BaseResponseWithAnnotations implements @Param(description = "the domain associated with the router") private String domainName; + @SerializedName(ApiConstants.DOMAIN_PATH) + @Param(description = "path of the Domain the router belongs to", since = "4.19.2.0") + private String domainPath; + @SerializedName(ApiConstants.SERVICE_OFFERING_ID) @Param(description = "the ID of the service offering of the virtual machine") private String serviceOfferingId; @@ -381,6 +385,10 @@ public class DomainRouterResponse extends BaseResponseWithAnnotations implements this.domainName = domainName; } + @Override + public void setDomainPath(String domainPath) { + this.domainPath = domainPath; + } public void setPublicNetworkId(String publicNetworkId) { this.publicNetworkId = publicNetworkId; } diff --git a/api/src/main/java/org/apache/cloudstack/api/response/EventResponse.java b/api/src/main/java/org/apache/cloudstack/api/response/EventResponse.java index 8f65492cb70..751d00922f1 100644 --- a/api/src/main/java/org/apache/cloudstack/api/response/EventResponse.java +++ b/api/src/main/java/org/apache/cloudstack/api/response/EventResponse.java @@ -69,6 +69,10 @@ public class EventResponse extends BaseResponse implements ControlledViewEntityR @Param(description = "the name of the account's domain") private String domainName; + @SerializedName(ApiConstants.DOMAIN_PATH) + @Param(description = "path of the Domain the account's domain belongs to", since = "4.19.2.0") + private String domainPath; + @SerializedName(ApiConstants.RESOURCE_ID) @Param(description = "the id of the resource", since = "4.17.0") private String resourceId; @@ -132,6 +136,11 @@ public class EventResponse extends BaseResponse implements ControlledViewEntityR this.domainName = domainName; } + @Override + public void setDomainPath(String domainPath) { + this.domainPath = domainPath; + } + public void setResourceId(String resourceId) { this.resourceId = resourceId; } diff --git a/api/src/main/java/org/apache/cloudstack/api/response/GlobalLoadBalancerResponse.java b/api/src/main/java/org/apache/cloudstack/api/response/GlobalLoadBalancerResponse.java index aac7e29a173..d41e4d2ab34 100644 --- a/api/src/main/java/org/apache/cloudstack/api/response/GlobalLoadBalancerResponse.java +++ b/api/src/main/java/org/apache/cloudstack/api/response/GlobalLoadBalancerResponse.java @@ -82,6 +82,10 @@ public class GlobalLoadBalancerResponse extends BaseResponse implements Controll @Param(description = "the domain of the load balancer rule") private String domainName; + @SerializedName(ApiConstants.DOMAIN_PATH) + @Param(description = "path of the domain to which the load balancer rule belongs", since = "4.19.2.0") + private String domainPath; + @SerializedName(ApiConstants.LOAD_BALANCER_RULE) @Param(description = "List of load balancer rules that are part of GSLB rule", responseObject = LoadBalancerResponse.class) private List siteLoadBalancers; @@ -143,6 +147,11 @@ public class GlobalLoadBalancerResponse extends BaseResponse implements Controll this.domainName = domainName; } + @Override + public void setDomainPath(String domainPath) { + this.domainPath = domainPath; + } + public void setSiteLoadBalancers(List siteLoadBalancers) { this.siteLoadBalancers = siteLoadBalancers; } diff --git a/api/src/main/java/org/apache/cloudstack/api/response/GuestVlanRangeResponse.java b/api/src/main/java/org/apache/cloudstack/api/response/GuestVlanRangeResponse.java index fab2a2cb4ce..133338d27ae 100644 --- a/api/src/main/java/org/apache/cloudstack/api/response/GuestVlanRangeResponse.java +++ b/api/src/main/java/org/apache/cloudstack/api/response/GuestVlanRangeResponse.java @@ -44,6 +44,10 @@ public class GuestVlanRangeResponse extends BaseResponse implements ControlledEn @Param(description = "the domain name of the guest VLAN range") private String domainName; + @SerializedName(ApiConstants.DOMAIN_PATH) + @Param(description = "path of the domain to which the guest VLAN range belongs", since = "4.19.2.0") + private String domainPath; + @SerializedName(ApiConstants.GUEST_VLAN_RANGE) @Param(description = "the guest VLAN range") private String guestVlanRange; @@ -83,6 +87,10 @@ public class GuestVlanRangeResponse extends BaseResponse implements ControlledEn this.domainName = domainName; } + @Override + public void setDomainPath(String domainPath) { + this.domainPath = domainPath; + } public void setGuestVlanRange(String guestVlanRange) { this.guestVlanRange = guestVlanRange; } diff --git a/api/src/main/java/org/apache/cloudstack/api/response/GuestVlanResponse.java b/api/src/main/java/org/apache/cloudstack/api/response/GuestVlanResponse.java index 6bcc1d35cb1..6716911ab82 100644 --- a/api/src/main/java/org/apache/cloudstack/api/response/GuestVlanResponse.java +++ b/api/src/main/java/org/apache/cloudstack/api/response/GuestVlanResponse.java @@ -49,6 +49,10 @@ public class GuestVlanResponse extends BaseResponse implements ControlledEntityR @Param(description = "the domain name of the guest VLAN range") private String domainName; + @SerializedName(ApiConstants.DOMAIN_PATH) + @Param(description = "path of the domain to which the guest VLAN range belongs", since = "4.19.2.0") + private String domainPath; + @SerializedName(ApiConstants.PROJECT_ID) @Param(description = "the project id of the guest VLAN range") private String projectId; @@ -108,6 +112,10 @@ public class GuestVlanResponse extends BaseResponse implements ControlledEntityR this.domainName = domainName; } + @Override + public void setDomainPath(String domainPath) { + this.domainPath = domainPath; + } @Override public void setProjectId(String projectId) { this.projectId = projectId; diff --git a/api/src/main/java/org/apache/cloudstack/api/response/IPAddressResponse.java b/api/src/main/java/org/apache/cloudstack/api/response/IPAddressResponse.java index e2bf6ef5c60..fe7a6c14d73 100644 --- a/api/src/main/java/org/apache/cloudstack/api/response/IPAddressResponse.java +++ b/api/src/main/java/org/apache/cloudstack/api/response/IPAddressResponse.java @@ -75,6 +75,10 @@ public class IPAddressResponse extends BaseResponseWithAnnotations implements Co @Param(description = "the domain the public IP address is associated with") private String domainName; + @SerializedName(ApiConstants.DOMAIN_PATH) + @Param(description = "path of the domain to which the public IP address belongs", since = "4.19.2.0") + private String domainPath; + @SerializedName(ApiConstants.FOR_VIRTUAL_NETWORK) @Param(description = "the virtual network for the IP address") private Boolean forVirtualNetwork; @@ -207,6 +211,10 @@ public class IPAddressResponse extends BaseResponseWithAnnotations implements Co this.domainName = domainName; } + @Override + public void setDomainPath(String domainPath) { + this.domainPath = domainPath; + } public void setForVirtualNetwork(Boolean forVirtualNetwork) { this.forVirtualNetwork = forVirtualNetwork; } diff --git a/api/src/main/java/org/apache/cloudstack/api/response/InstanceGroupResponse.java b/api/src/main/java/org/apache/cloudstack/api/response/InstanceGroupResponse.java index e1241cc19bc..9c7a4fc09a1 100644 --- a/api/src/main/java/org/apache/cloudstack/api/response/InstanceGroupResponse.java +++ b/api/src/main/java/org/apache/cloudstack/api/response/InstanceGroupResponse.java @@ -63,6 +63,10 @@ public class InstanceGroupResponse extends BaseResponseWithAnnotations implement @Param(description = "the domain name of the instance group") private String domainName; + @SerializedName(ApiConstants.DOMAIN_PATH) + @Param(description = "path of the Domain the instance group belongs to", since = "4.19.2.0") + private String domainPath; + public void setId(String id) { this.id = id; } @@ -90,6 +94,11 @@ public class InstanceGroupResponse extends BaseResponseWithAnnotations implement this.domainName = domainName; } + @Override + public void setDomainPath(String domainPath) { + this.domainPath = domainPath; + } + @Override public void setProjectId(String projectId) { this.projectId = projectId; diff --git a/api/src/main/java/org/apache/cloudstack/api/response/LoadBalancerResponse.java b/api/src/main/java/org/apache/cloudstack/api/response/LoadBalancerResponse.java index 32748269587..e520dec09e7 100644 --- a/api/src/main/java/org/apache/cloudstack/api/response/LoadBalancerResponse.java +++ b/api/src/main/java/org/apache/cloudstack/api/response/LoadBalancerResponse.java @@ -87,6 +87,10 @@ public class LoadBalancerResponse extends BaseResponse implements ControlledEnti @Param(description = "the domain of the load balancer rule") private String domainName; + @SerializedName(ApiConstants.DOMAIN_PATH) + @Param(description = "path of the domain to which the load balancer rule belongs", since = "4.19.2.0") + private String domainPath; + @SerializedName(ApiConstants.STATE) @Param(description = "the state of the rule") private String state; @@ -158,6 +162,11 @@ public class LoadBalancerResponse extends BaseResponse implements ControlledEnti this.domainName = domainName; } + @Override + public void setDomainPath(String domainPath) { + this.domainPath = domainPath; + } + public void setState(String state) { this.state = state; } 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 d34f949372a..1049740bf55 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 @@ -424,6 +424,7 @@ public class NetworkResponse extends BaseResponseWithAssociatedNetwork implement this.domain = domain; } + @Override public void setDomainPath(String domainPath) { this.domainPath = domainPath; } diff --git a/api/src/main/java/org/apache/cloudstack/api/response/OvsProviderResponse.java b/api/src/main/java/org/apache/cloudstack/api/response/OvsProviderResponse.java index ac5b9e309c8..2b67e1618dc 100644 --- a/api/src/main/java/org/apache/cloudstack/api/response/OvsProviderResponse.java +++ b/api/src/main/java/org/apache/cloudstack/api/response/OvsProviderResponse.java @@ -54,6 +54,10 @@ public class OvsProviderResponse extends BaseResponse implements @Param(description = "the domain associated with the provider") private String domainName; + @SerializedName(ApiConstants.DOMAIN_PATH) + @Param(description = "path of the domain to which the provider belongs", since = "4.19.2.0") + private String domainPath; + @Override public void setAccountName(String accountName) { this.accountName = accountName; @@ -73,6 +77,10 @@ public class OvsProviderResponse extends BaseResponse implements this.domainName = domainName; } + @Override + public void setDomainPath(String domainPath) { + this.domainPath = domainPath; + } @Override public void setProjectId(String projectId) { this.projectId = projectId; diff --git a/api/src/main/java/org/apache/cloudstack/api/response/PrivateGatewayResponse.java b/api/src/main/java/org/apache/cloudstack/api/response/PrivateGatewayResponse.java index 65401eb2a02..414aed94bad 100644 --- a/api/src/main/java/org/apache/cloudstack/api/response/PrivateGatewayResponse.java +++ b/api/src/main/java/org/apache/cloudstack/api/response/PrivateGatewayResponse.java @@ -89,6 +89,10 @@ public class PrivateGatewayResponse extends BaseResponseWithAssociatedNetwork im @Param(description = "the domain associated with the private gateway") private String domainName; + @SerializedName(ApiConstants.DOMAIN_PATH) + @Param(description = "path of the domain to which the private gateway belongs", since = "4.19.2.0") + private String domainPath; + @SerializedName(ApiConstants.STATE) @Param(description = "State of the gateway, can be Creating, Ready, Deleting") private String state; @@ -165,6 +169,10 @@ public class PrivateGatewayResponse extends BaseResponseWithAssociatedNetwork im this.domainName = domainName; } + @Override + public void setDomainPath(String domainPath) { + this.domainPath = domainPath; + } @Override public void setProjectId(String projectId) { this.projectId = projectId; diff --git a/api/src/main/java/org/apache/cloudstack/api/response/ProjectAccountResponse.java b/api/src/main/java/org/apache/cloudstack/api/response/ProjectAccountResponse.java index aab03074155..d035622f65f 100644 --- a/api/src/main/java/org/apache/cloudstack/api/response/ProjectAccountResponse.java +++ b/api/src/main/java/org/apache/cloudstack/api/response/ProjectAccountResponse.java @@ -73,6 +73,10 @@ public class ProjectAccountResponse extends BaseResponse implements ControlledVi @Param(description = "name of the Domain the account belongs too") private String domainName; + @SerializedName(ApiConstants.DOMAIN_PATH) + @Param(description = "path of the Domain the account belongs to", since = "4.19.2.0") + private String domainPath; + @SerializedName(ApiConstants.USER) @Param(description = "the list of users associated with account", responseObject = UserResponse.class) private List users; @@ -110,6 +114,11 @@ public class ProjectAccountResponse extends BaseResponse implements ControlledVi this.domainName = domainName; } + @Override + public void setDomainPath(String domainPath) { + this.domainPath = domainPath; + } + public void setUserId(String userId) { this.userId = userId; } public void setProjectRoleId(String projectRoleId) { diff --git a/api/src/main/java/org/apache/cloudstack/api/response/ProjectInvitationResponse.java b/api/src/main/java/org/apache/cloudstack/api/response/ProjectInvitationResponse.java index 4462ea91568..ad3f99f6b3f 100644 --- a/api/src/main/java/org/apache/cloudstack/api/response/ProjectInvitationResponse.java +++ b/api/src/main/java/org/apache/cloudstack/api/response/ProjectInvitationResponse.java @@ -51,6 +51,10 @@ public class ProjectInvitationResponse extends BaseResponse implements Controlle @Param(description = "the domain name where the project belongs to") private String domainName; + @SerializedName(ApiConstants.DOMAIN_PATH) + @Param(description = "path of the Domain the project belongs to", since = "4.19.2.0") + private String domainPath; + @SerializedName(ApiConstants.ACCOUNT) @Param(description = "the account name of the project's owner") private String accountName; @@ -87,6 +91,11 @@ public class ProjectInvitationResponse extends BaseResponse implements Controlle this.domainName = domain; } + @Override + public void setDomainPath(String domainPath) { + this.domainPath = domainPath; + } + @Override public void setAccountName(String accountName) { this.accountName = accountName; diff --git a/api/src/main/java/org/apache/cloudstack/api/response/RemoteAccessVpnResponse.java b/api/src/main/java/org/apache/cloudstack/api/response/RemoteAccessVpnResponse.java index 0e078bea5bd..54164e3ac34 100644 --- a/api/src/main/java/org/apache/cloudstack/api/response/RemoteAccessVpnResponse.java +++ b/api/src/main/java/org/apache/cloudstack/api/response/RemoteAccessVpnResponse.java @@ -65,6 +65,10 @@ public class RemoteAccessVpnResponse extends BaseResponse implements ControlledE @Param(description = "the domain name of the account of the remote access vpn") private String domainName; + @SerializedName(ApiConstants.DOMAIN_PATH) + @Param(description = "path of the domain to which the remote access vpn belongs", since = "4.19.2.0") + private String domainPath; + @SerializedName(ApiConstants.STATE) @Param(description = "the state of the rule") private String state; @@ -104,6 +108,10 @@ public class RemoteAccessVpnResponse extends BaseResponse implements ControlledE this.domainName = name; } + @Override + public void setDomainPath(String domainPath) { + this.domainPath = domainPath; + } public void setState(String state) { this.state = state; } diff --git a/api/src/main/java/org/apache/cloudstack/api/response/ResourceCountResponse.java b/api/src/main/java/org/apache/cloudstack/api/response/ResourceCountResponse.java index d0a4982f872..d7081884daf 100644 --- a/api/src/main/java/org/apache/cloudstack/api/response/ResourceCountResponse.java +++ b/api/src/main/java/org/apache/cloudstack/api/response/ResourceCountResponse.java @@ -46,6 +46,10 @@ public class ResourceCountResponse extends BaseResponse implements ControlledEnt @Param(description = "the domain name for which resource count's are updated") private String domainName; + @SerializedName(ApiConstants.DOMAIN_PATH) + @Param(description = "path of the domain to which the resource counts are updated", since = "4.19.2.0") + private String domainPath; + @SerializedName(ApiConstants.RESOURCE_TYPE) @Param(description = "resource type. Values include 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11. See the resourceType parameter for more information on these values.") private String resourceType; @@ -73,6 +77,11 @@ public class ResourceCountResponse extends BaseResponse implements ControlledEnt this.domainName = domainName; } + @Override + public void setDomainPath(String domainPath) { + this.domainPath = domainPath; + } + public void setResourceType(Resource.ResourceType resourceType) { this.resourceType = Integer.valueOf(resourceType.getOrdinal()).toString(); this.resourceTypeName = resourceType.getName(); diff --git a/api/src/main/java/org/apache/cloudstack/api/response/ResourceLimitResponse.java b/api/src/main/java/org/apache/cloudstack/api/response/ResourceLimitResponse.java index 13e1198177d..7780d46f7f6 100644 --- a/api/src/main/java/org/apache/cloudstack/api/response/ResourceLimitResponse.java +++ b/api/src/main/java/org/apache/cloudstack/api/response/ResourceLimitResponse.java @@ -41,6 +41,10 @@ public class ResourceLimitResponse extends BaseResponse implements ControlledEnt @Param(description = "the domain name of the resource limit") private String domainName; + @SerializedName(ApiConstants.DOMAIN_PATH) + @Param(description = "path of the domain to which the resource limit belongs", since = "4.19.2.0") + private String domainPath; + @SerializedName(ApiConstants.RESOURCE_TYPE) @Param(description = "resource type. Values include 0, 1, 2, 3, 4, 6, 7, 8, 9, 10, 11. See the resourceType parameter for more information on these values.") private String resourceType; @@ -81,6 +85,10 @@ public class ResourceLimitResponse extends BaseResponse implements ControlledEnt this.domainName = domainName; } + @Override + public void setDomainPath(String domainPath) { + this.domainPath = domainPath; + } public void setResourceType(Resource.ResourceType resourceType) { this.resourceType = Integer.valueOf(resourceType.getOrdinal()).toString(); this.resourceTypeName = resourceType.getName(); diff --git a/api/src/main/java/org/apache/cloudstack/api/response/ResourceTagResponse.java b/api/src/main/java/org/apache/cloudstack/api/response/ResourceTagResponse.java index 44325560534..26e4d19cdba 100644 --- a/api/src/main/java/org/apache/cloudstack/api/response/ResourceTagResponse.java +++ b/api/src/main/java/org/apache/cloudstack/api/response/ResourceTagResponse.java @@ -61,6 +61,10 @@ public class ResourceTagResponse extends BaseResponse implements ControlledViewE @Param(description = "the domain associated with the tag") private String domainName; + @SerializedName(ApiConstants.DOMAIN_PATH) + @Param(description = "path of the Domain associated with the tag", since = "4.19.2.0") + private String domainPath; + @SerializedName(ApiConstants.CUSTOMER) @Param(description = "customer associated with the tag") private String customer; @@ -96,6 +100,11 @@ public class ResourceTagResponse extends BaseResponse implements ControlledViewE this.domainName = domainName; } + @Override + public void setDomainPath(String domainPath) { + this.domainPath = domainPath; + } + @Override public void setProjectId(String projectId) { this.projectId = projectId; diff --git a/api/src/main/java/org/apache/cloudstack/api/response/SecurityGroupResponse.java b/api/src/main/java/org/apache/cloudstack/api/response/SecurityGroupResponse.java index c96421b0a40..de486b5a374 100644 --- a/api/src/main/java/org/apache/cloudstack/api/response/SecurityGroupResponse.java +++ b/api/src/main/java/org/apache/cloudstack/api/response/SecurityGroupResponse.java @@ -63,6 +63,10 @@ public class SecurityGroupResponse extends BaseResponse implements ControlledVie @Param(description = "the domain name of the security group") private String domainName; + @SerializedName(ApiConstants.DOMAIN_PATH) + @Param(description = "path of the Domain the security group belongs to", since = "4.19.2.0") + private String domainPath; + @SerializedName("ingressrule") @Param(description = "the list of ingress rules associated with the security group", responseObject = SecurityGroupRuleResponse.class) private Set ingressRules; @@ -126,6 +130,11 @@ public class SecurityGroupResponse extends BaseResponse implements ControlledVie this.domainName = domainName; } + @Override + public void setDomainPath(String domainPath) { + this.domainPath = domainPath; + } + public void setSecurityGroupIngressRules(Set securityGroupRules) { this.ingressRules = securityGroupRules; } diff --git a/api/src/main/java/org/apache/cloudstack/api/response/Site2SiteCustomerGatewayResponse.java b/api/src/main/java/org/apache/cloudstack/api/response/Site2SiteCustomerGatewayResponse.java index babc9bf4432..4ae140ec573 100644 --- a/api/src/main/java/org/apache/cloudstack/api/response/Site2SiteCustomerGatewayResponse.java +++ b/api/src/main/java/org/apache/cloudstack/api/response/Site2SiteCustomerGatewayResponse.java @@ -98,6 +98,10 @@ public class Site2SiteCustomerGatewayResponse extends BaseResponseWithAnnotation @Param(description = "the domain name of the owner") private String domain; + @SerializedName(ApiConstants.DOMAIN_PATH) + @Param(description = "the domain path of the owner", since = "4.19.2.0") + private String domainPath; + @SerializedName(ApiConstants.REMOVED) @Param(description = "the date and time the host was removed") private Date removed; @@ -193,4 +197,9 @@ public class Site2SiteCustomerGatewayResponse extends BaseResponseWithAnnotation this.domain = domainName; } + @Override + public void setDomainPath(String domainPath) { + this.domainPath = domainPath; + } + } diff --git a/api/src/main/java/org/apache/cloudstack/api/response/Site2SiteVpnConnectionResponse.java b/api/src/main/java/org/apache/cloudstack/api/response/Site2SiteVpnConnectionResponse.java index 1f7509239d1..a9fd0f9703c 100644 --- a/api/src/main/java/org/apache/cloudstack/api/response/Site2SiteVpnConnectionResponse.java +++ b/api/src/main/java/org/apache/cloudstack/api/response/Site2SiteVpnConnectionResponse.java @@ -120,6 +120,10 @@ public class Site2SiteVpnConnectionResponse extends BaseResponse implements Cont @Param(description = "the domain name of the owner") private String domain; + @SerializedName(ApiConstants.DOMAIN_PATH) + @Param(description = "the domain path of the owner", since = "4.19.2.0") + private String domainPath; + @SerializedName(ApiConstants.CREATED) @Param(description = "the date and time the host was created") private Date created; @@ -241,6 +245,11 @@ public class Site2SiteVpnConnectionResponse extends BaseResponse implements Cont this.domain = domainName; } + @Override + public void setDomainPath(String domainPath) { + this.domainPath = domainPath; + } + public void setForDisplay(Boolean forDisplay) { this.forDisplay = forDisplay; } diff --git a/api/src/main/java/org/apache/cloudstack/api/response/Site2SiteVpnGatewayResponse.java b/api/src/main/java/org/apache/cloudstack/api/response/Site2SiteVpnGatewayResponse.java index cdd8e4f3d87..1e63ba896c7 100644 --- a/api/src/main/java/org/apache/cloudstack/api/response/Site2SiteVpnGatewayResponse.java +++ b/api/src/main/java/org/apache/cloudstack/api/response/Site2SiteVpnGatewayResponse.java @@ -66,6 +66,10 @@ public class Site2SiteVpnGatewayResponse extends BaseResponse implements Control @Param(description = "the domain name of the owner") private String domain; + @SerializedName(ApiConstants.DOMAIN_PATH) + @Param(description = "the domain path of the owner", since = "4.19.2.0") + private String domainPath; + @SerializedName(ApiConstants.REMOVED) @Param(description = "the date and time the host was removed") private Date removed; @@ -119,6 +123,10 @@ public class Site2SiteVpnGatewayResponse extends BaseResponse implements Control this.domain = domainName; } + @Override + public void setDomainPath(String domainPath) { + this.domainPath = domainPath; + } public void setForDisplay(Boolean forDisplay) { this.forDisplay = forDisplay; } diff --git a/api/src/main/java/org/apache/cloudstack/api/response/SnapshotResponse.java b/api/src/main/java/org/apache/cloudstack/api/response/SnapshotResponse.java index 02132416b8a..9f7a7f42dec 100644 --- a/api/src/main/java/org/apache/cloudstack/api/response/SnapshotResponse.java +++ b/api/src/main/java/org/apache/cloudstack/api/response/SnapshotResponse.java @@ -47,6 +47,10 @@ public class SnapshotResponse extends BaseResponseWithTagInformation implements @Param(description = "the domain name of the snapshot's account") private String domainName; + @SerializedName(ApiConstants.DOMAIN_PATH) + @Param(description = "path of the Domain the snapshot's account belongs to", since = "4.19.2.0") + private String domainPath; + @SerializedName(ApiConstants.PROJECT_ID) @Param(description = "the project id of the snapshot") private String projectId; @@ -187,6 +191,11 @@ public class SnapshotResponse extends BaseResponseWithTagInformation implements this.domainName = domainName; } + @Override + public void setDomainPath(String domainPath) { + this.domainPath = domainPath; + } + public void setSnapshotType(String snapshotType) { this.snapshotType = snapshotType; } diff --git a/api/src/main/java/org/apache/cloudstack/api/response/StaticRouteResponse.java b/api/src/main/java/org/apache/cloudstack/api/response/StaticRouteResponse.java index 79c7f9040a1..51f8a130383 100644 --- a/api/src/main/java/org/apache/cloudstack/api/response/StaticRouteResponse.java +++ b/api/src/main/java/org/apache/cloudstack/api/response/StaticRouteResponse.java @@ -70,6 +70,10 @@ public class StaticRouteResponse extends BaseResponse implements ControlledEntit @Param(description = "the domain associated with the static route") private String domainName; + @SerializedName(ApiConstants.DOMAIN_PATH) + @Param(description = "the domain path associated with the static route", since = "4.19.2.0") + private String domainPath; + @SerializedName(ApiConstants.TAGS) @Param(description = "the list of resource tags associated with static route", responseObject = ResourceTagResponse.class) private List tags; @@ -114,6 +118,10 @@ public class StaticRouteResponse extends BaseResponse implements ControlledEntit this.domainName = domainName; } + @Override + public void setDomainPath(String domainPath) { + this.domainPath = domainPath; + } @Override public void setProjectId(String projectId) { this.projectId = projectId; diff --git a/api/src/main/java/org/apache/cloudstack/api/response/TemplateResponse.java b/api/src/main/java/org/apache/cloudstack/api/response/TemplateResponse.java index 3abd44941d9..604c9f0955f 100644 --- a/api/src/main/java/org/apache/cloudstack/api/response/TemplateResponse.java +++ b/api/src/main/java/org/apache/cloudstack/api/response/TemplateResponse.java @@ -135,6 +135,10 @@ public class TemplateResponse extends BaseResponseWithTagInformation implements @Param(description = "the name of the domain to which the template belongs") private String domainName; + @SerializedName(ApiConstants.DOMAIN_PATH) + @Param(description = "path of the Domain the template belongs to", since = "4.19.2.0") + private String domainPath; + @SerializedName(ApiConstants.DOMAIN_ID) @Param(description = "the ID of the domain to which the template belongs") private String domainId; @@ -354,6 +358,11 @@ public class TemplateResponse extends BaseResponseWithTagInformation implements this.domainName = domainName; } + @Override + public void setDomainPath(String domainPath) { + this.domainPath = domainPath; + } + @Override public void setDomainId(String domainId) { this.domainId = domainId; diff --git a/api/src/main/java/org/apache/cloudstack/api/response/UsageRecordResponse.java b/api/src/main/java/org/apache/cloudstack/api/response/UsageRecordResponse.java index 7bcb1afd2d2..25382f3aaf9 100644 --- a/api/src/main/java/org/apache/cloudstack/api/response/UsageRecordResponse.java +++ b/api/src/main/java/org/apache/cloudstack/api/response/UsageRecordResponse.java @@ -51,6 +51,10 @@ public class UsageRecordResponse extends BaseResponseWithTagInformation implemen @Param(description = "the domain the resource is associated with") private String domainName; + @SerializedName(ApiConstants.DOMAIN_PATH) + @Param(description = "path of the domain to which the usage reocrd belongs", since = "4.19.2.0") + private String domainPath; + @SerializedName(ApiConstants.ZONE_ID) @Param(description = "the zone ID") private String zoneId; @@ -276,6 +280,10 @@ public class UsageRecordResponse extends BaseResponseWithTagInformation implemen this.domainName = domainName; } + @Override + public void setDomainPath(String domainPath) { + this.domainPath = domainPath; + } public void setNetworkId(String networkId) { this.networkId = networkId; } diff --git a/api/src/main/java/org/apache/cloudstack/api/response/UserDataResponse.java b/api/src/main/java/org/apache/cloudstack/api/response/UserDataResponse.java index e69094c8f80..2dfc66fa7d5 100644 --- a/api/src/main/java/org/apache/cloudstack/api/response/UserDataResponse.java +++ b/api/src/main/java/org/apache/cloudstack/api/response/UserDataResponse.java @@ -54,6 +54,10 @@ public class UserDataResponse extends BaseResponseWithAnnotations implements Con @SerializedName(ApiConstants.DOMAIN) @Param(description="the domain name of the userdata owner") private String domain; + @SerializedName(ApiConstants.DOMAIN_PATH) + @Param(description = "path of the domain to which the userdata owner belongs", since = "4.19.2.0") + private String domainPath; + @SerializedName(ApiConstants.USER_DATA) @Param(description="base64 encoded userdata content") private String userData; @@ -143,4 +147,9 @@ public class UserDataResponse extends BaseResponseWithAnnotations implements Con public void setDomainName(String domain) { this.domain = domain; } + + @Override + public void setDomainPath(String domainPath) { + this.domainPath = domainPath; + } } diff --git a/api/src/main/java/org/apache/cloudstack/api/response/UserVmResponse.java b/api/src/main/java/org/apache/cloudstack/api/response/UserVmResponse.java index 8a259225578..a9e4587169c 100644 --- a/api/src/main/java/org/apache/cloudstack/api/response/UserVmResponse.java +++ b/api/src/main/java/org/apache/cloudstack/api/response/UserVmResponse.java @@ -82,6 +82,10 @@ public class UserVmResponse extends BaseResponseWithTagInformation implements Co @Param(description = "the name of the domain in which the virtual machine exists") private String domainName; + @SerializedName(ApiConstants.DOMAIN_PATH) + @Param(description = "path of the domain in which the virtual machine exists", since = "4.19.2.0") + private String domainPath; + @SerializedName(ApiConstants.CREATED) @Param(description = "the date when this virtual machine was created") private Date created; @@ -703,6 +707,10 @@ public class UserVmResponse extends BaseResponseWithTagInformation implements Co this.domainName = domainName; } + @Override + public void setDomainPath(String domainPath) { + this.domainPath = domainPath; + } public void setCreated(Date created) { this.created = created; } diff --git a/api/src/main/java/org/apache/cloudstack/api/response/VMSnapshotResponse.java b/api/src/main/java/org/apache/cloudstack/api/response/VMSnapshotResponse.java index 9b553ed0744..703f27b537c 100644 --- a/api/src/main/java/org/apache/cloudstack/api/response/VMSnapshotResponse.java +++ b/api/src/main/java/org/apache/cloudstack/api/response/VMSnapshotResponse.java @@ -108,6 +108,10 @@ public class VMSnapshotResponse extends BaseResponseWithTagInformation implement @Param(description = "the domain associated with the disk volume") private String domainName; + @SerializedName(ApiConstants.DOMAIN_PATH) + @Param(description = "path of the domain to which the disk volume belongs", since = "4.19.2.0") + private String domainPath; + @SerializedName(ApiConstants.HYPERVISOR) @Param(description = "the type of hypervisor on which snapshot is stored") private String hypervisor; @@ -261,6 +265,11 @@ public class VMSnapshotResponse extends BaseResponseWithTagInformation implement this.domainName = domainName; } + @Override + public void setDomainPath(String domainPath) { + this.domainPath = domainPath; + } + public void setTags(Set tags) { this.tags = tags; } diff --git a/api/src/main/java/org/apache/cloudstack/api/response/VirtualRouterProviderResponse.java b/api/src/main/java/org/apache/cloudstack/api/response/VirtualRouterProviderResponse.java index c3b46710f6f..b9d18e23810 100644 --- a/api/src/main/java/org/apache/cloudstack/api/response/VirtualRouterProviderResponse.java +++ b/api/src/main/java/org/apache/cloudstack/api/response/VirtualRouterProviderResponse.java @@ -60,6 +60,10 @@ public class VirtualRouterProviderResponse extends BaseResponse implements Contr @Param(description = "the domain associated with the provider") private String domainName; + @SerializedName(ApiConstants.DOMAIN_PATH) + @Param(description = "path of the domain to which the provider belongs", since = "4.19.2.0") + private String domainPath; + @Override public void setAccountName(String accountName) { this.accountName = accountName; @@ -79,6 +83,10 @@ public class VirtualRouterProviderResponse extends BaseResponse implements Contr this.domainName = domainName; } + @Override + public void setDomainPath(String domainPath) { + this.domainPath = domainPath; + } @Override public void setProjectId(String projectId) { this.projectId = projectId; diff --git a/api/src/main/java/org/apache/cloudstack/api/response/VlanIpRangeResponse.java b/api/src/main/java/org/apache/cloudstack/api/response/VlanIpRangeResponse.java index a22e2eb7024..5f5af69f6a9 100644 --- a/api/src/main/java/org/apache/cloudstack/api/response/VlanIpRangeResponse.java +++ b/api/src/main/java/org/apache/cloudstack/api/response/VlanIpRangeResponse.java @@ -55,6 +55,10 @@ public class VlanIpRangeResponse extends BaseResponse implements ControlledEntit @Param(description = "the domain name of the VLAN IP range") private String domainName; + @SerializedName(ApiConstants.DOMAIN_PATH) + @Param(description = "path of the domain to which the VLAN IP range belongs", since = "4.19.2.0") + private String domainPath; + @SerializedName(ApiConstants.POD_ID) @Param(description = "the Pod ID for the VLAN IP range") private String podId; @@ -162,6 +166,11 @@ public class VlanIpRangeResponse extends BaseResponse implements ControlledEntit this.domainName = domainName; } + @Override + public void setDomainPath(String domainPath) { + this.domainPath = domainPath; + } + public void setPodId(String podId) { this.podId = podId; } diff --git a/api/src/main/java/org/apache/cloudstack/api/response/VolumeResponse.java b/api/src/main/java/org/apache/cloudstack/api/response/VolumeResponse.java index f3683473e45..623499822cb 100644 --- a/api/src/main/java/org/apache/cloudstack/api/response/VolumeResponse.java +++ b/api/src/main/java/org/apache/cloudstack/api/response/VolumeResponse.java @@ -145,6 +145,10 @@ public class VolumeResponse extends BaseResponseWithTagInformation implements Co @Param(description = "the domain associated with the disk volume") private String domainName; + @SerializedName(ApiConstants.DOMAIN_PATH) + @Param(description = "path of the Domain the disk volume belongs to", since = "4.19.2.0") + private String domainPath; + @SerializedName("storagetype") @Param(description = "shared or local storage") private String storageType; @@ -409,6 +413,11 @@ public class VolumeResponse extends BaseResponseWithTagInformation implements Co this.domainName = domainName; } + @Override + public void setDomainPath(String domainPath) { + this.domainPath = domainPath; + } + public void setStorageType(String storageType) { this.storageType = storageType; } diff --git a/api/src/main/java/org/apache/cloudstack/api/response/VpcResponse.java b/api/src/main/java/org/apache/cloudstack/api/response/VpcResponse.java index 610416d7b0e..6f91da7d2d7 100644 --- a/api/src/main/java/org/apache/cloudstack/api/response/VpcResponse.java +++ b/api/src/main/java/org/apache/cloudstack/api/response/VpcResponse.java @@ -96,6 +96,10 @@ public class VpcResponse extends BaseResponseWithAnnotations implements Controll @Param(description = "the domain name of the owner") private String domain; + @SerializedName(ApiConstants.DOMAIN_PATH) + @Param(description = "the domain path of the owner", since = "4.19.2.0") + private String domainPath; + @SerializedName(ApiConstants.NETWORK) @Param(description = "the list of networks belongign to the VPC", responseObject = NetworkResponse.class) private List networks; @@ -209,6 +213,11 @@ public class VpcResponse extends BaseResponseWithAnnotations implements Controll domain = domainName; } + @Override + public void setDomainPath(String path) { + this.domainPath = path; + } + public void setZoneId(final String zoneId) { this.zoneId = zoneId; } diff --git a/api/src/main/java/org/apache/cloudstack/api/response/VpnUsersResponse.java b/api/src/main/java/org/apache/cloudstack/api/response/VpnUsersResponse.java index d3e4d941678..3247f534133 100644 --- a/api/src/main/java/org/apache/cloudstack/api/response/VpnUsersResponse.java +++ b/api/src/main/java/org/apache/cloudstack/api/response/VpnUsersResponse.java @@ -48,6 +48,10 @@ public class VpnUsersResponse extends BaseResponse implements ControlledEntityRe @Param(description = "the domain name of the account of the remote access vpn") private String domainName; + @SerializedName(ApiConstants.DOMAIN_PATH) + @Param(description = "path of the domain to which the remote access vpn belongs", since = "4.19.2.0") + private String domainPath; + @SerializedName(ApiConstants.PROJECT_ID) @Param(description = "the project id of the vpn") private String projectId; @@ -83,6 +87,11 @@ public class VpnUsersResponse extends BaseResponse implements ControlledEntityRe this.domainName = name; } + @Override + public void setDomainPath(String path) { + this.domainPath = path; + } + @Override public void setProjectId(String projectId) { this.projectId = projectId; diff --git a/plugins/integrations/kubernetes-service/src/main/java/com/cloud/kubernetes/cluster/KubernetesClusterManagerImpl.java b/plugins/integrations/kubernetes-service/src/main/java/com/cloud/kubernetes/cluster/KubernetesClusterManagerImpl.java index 2e65c980437..b0e44316190 100644 --- a/plugins/integrations/kubernetes-service/src/main/java/com/cloud/kubernetes/cluster/KubernetesClusterManagerImpl.java +++ b/plugins/integrations/kubernetes-service/src/main/java/com/cloud/kubernetes/cluster/KubernetesClusterManagerImpl.java @@ -581,6 +581,7 @@ public class KubernetesClusterManagerImpl extends ManagerBase implements Kuberne Domain domain = ApiDBUtils.findDomainById(kubernetesCluster.getDomainId()); response.setDomainId(domain.getUuid()); response.setDomainName(domain.getName()); + response.setDomainPath(domain.getPath()); response.setKeypair(kubernetesCluster.getKeyPair()); response.setState(kubernetesCluster.getState().toString()); response.setCores(String.valueOf(kubernetesCluster.getCores())); diff --git a/plugins/integrations/kubernetes-service/src/main/java/org/apache/cloudstack/api/response/KubernetesClusterResponse.java b/plugins/integrations/kubernetes-service/src/main/java/org/apache/cloudstack/api/response/KubernetesClusterResponse.java index 168dfaf6091..8074aef9eff 100644 --- a/plugins/integrations/kubernetes-service/src/main/java/org/apache/cloudstack/api/response/KubernetesClusterResponse.java +++ b/plugins/integrations/kubernetes-service/src/main/java/org/apache/cloudstack/api/response/KubernetesClusterResponse.java @@ -98,6 +98,10 @@ public class KubernetesClusterResponse extends BaseResponseWithAnnotations imple @Param(description = "the name of the domain in which the Kubernetes cluster exists") private String domainName; + @SerializedName(ApiConstants.DOMAIN_PATH) + @Param(description = "path of the domain to which the Kubernetes cluster belongs", since = "4.19.2.0") + private String domainPath; + @SerializedName(ApiConstants.SSH_KEYPAIR) @Param(description = "keypair details") private String keypair; @@ -279,6 +283,10 @@ public class KubernetesClusterResponse extends BaseResponseWithAnnotations imple this.domainName = domainName; } + @Override + public void setDomainPath(String domainPath) { + this.domainPath = domainPath; + } public String getKeypair() { return keypair; } diff --git a/plugins/network-elements/juniper-contrail/src/main/java/org/apache/cloudstack/network/contrail/api/response/ServiceInstanceResponse.java b/plugins/network-elements/juniper-contrail/src/main/java/org/apache/cloudstack/network/contrail/api/response/ServiceInstanceResponse.java index 00eb7f3098b..a4fa713ee00 100644 --- a/plugins/network-elements/juniper-contrail/src/main/java/org/apache/cloudstack/network/contrail/api/response/ServiceInstanceResponse.java +++ b/plugins/network-elements/juniper-contrail/src/main/java/org/apache/cloudstack/network/contrail/api/response/ServiceInstanceResponse.java @@ -59,6 +59,10 @@ public class ServiceInstanceResponse extends BaseResponse implements ControlledE @Param(description = "the name of the domain in which the virtual machine exists") private String domainName; + @SerializedName(ApiConstants.DOMAIN_PATH) + @Param(description = "path of the Domain in which the virtual machine exists", since = "4.19.2.0") + private String domainPath; + public void setId(String id) { this.id = id; } @@ -88,4 +92,8 @@ public class ServiceInstanceResponse extends BaseResponse implements ControlledE this.domainName = domainName; } + @Override + public void setDomainPath(String domainPath) { + this.domainPath = domainPath; + } } diff --git a/server/src/main/java/com/cloud/api/ApiResponseHelper.java b/server/src/main/java/com/cloud/api/ApiResponseHelper.java index 732df581bff..68761f6eed5 100644 --- a/server/src/main/java/com/cloud/api/ApiResponseHelper.java +++ b/server/src/main/java/com/cloud/api/ApiResponseHelper.java @@ -786,6 +786,7 @@ public class ApiResponseHelper implements ResponseGenerator { if (domain != null) { vmSnapshotResponse.setDomainId(domain.getUuid()); vmSnapshotResponse.setDomainName(domain.getName()); + vmSnapshotResponse.setDomainPath(domain.getPath()); } List tags = _resourceTagDao.listBy(vmSnapshot.getId(), ResourceObjectType.VMSnapshot); @@ -2220,6 +2221,7 @@ public class ApiResponseHelper implements ResponseGenerator { response.setDomainId(securityGroup.getDomainUuid()); response.setDomainName(securityGroup.getDomainName()); + response.setDomainPath(securityGroup.getDomainPath()); for (SecurityRule securityRule : securityRules) { SecurityGroupRuleResponse securityGroupData = new SecurityGroupRuleResponse(); @@ -2622,6 +2624,7 @@ public class ApiResponseHelper implements ResponseGenerator { if (domain != null) { response.setDomainId(domain.getUuid()); response.setDomainName(domain.getName()); + response.setDomainPath(domain.getPath()); } } @@ -2870,6 +2873,7 @@ public class ApiResponseHelper implements ResponseGenerator { Domain domain = ApiDBUtils.findDomainById(object.getDomainId()); response.setDomainId(domain.getUuid()); response.setDomainName(domain.getName()); + response.setDomainPath(domain.getPath()); } private void populateOwner(ControlledViewEntityResponse response, ControlledEntity object) { @@ -2887,6 +2891,7 @@ public class ApiResponseHelper implements ResponseGenerator { Domain domain = ApiDBUtils.findDomainById(object.getDomainId()); response.setDomainId(domain.getUuid()); response.setDomainName(domain.getName()); + response.setDomainPath(domain.getPath()); } public static void populateOwner(ControlledViewEntityResponse response, ControlledViewEntity object) { @@ -2900,6 +2905,7 @@ public class ApiResponseHelper implements ResponseGenerator { response.setDomainId(object.getDomainUuid()); response.setDomainName(object.getDomainName()); + response.setDomainPath(object.getDomainPath()); } private void populateAccount(ControlledEntityResponse response, long accountId) { @@ -2926,6 +2932,7 @@ public class ApiResponseHelper implements ResponseGenerator { response.setDomainId(domain.getUuid()); response.setDomainName(domain.getName()); + response.setDomainPath(domain.getPath()); } @Override @@ -3864,6 +3871,7 @@ public class ApiResponseHelper implements ResponseGenerator { if (domain != null) { usageRecResponse.setDomainId(domain.getUuid()); usageRecResponse.setDomainName(domain.getName()); + usageRecResponse.setDomainPath(domain.getPath()); } if (usageRecord.getZoneId() != null) { @@ -4661,6 +4669,7 @@ public class ApiResponseHelper implements ResponseGenerator { if (domain != null) { response.setDomainId(domain.getUuid()); response.setDomainName(domain.getName()); + response.setDomainPath(domain.getPath()); } response.setObjectName("affinitygroup"); diff --git a/server/src/main/java/com/cloud/api/query/dao/DomainRouterJoinDaoImpl.java b/server/src/main/java/com/cloud/api/query/dao/DomainRouterJoinDaoImpl.java index e3011bc4d66..4609d30e4a4 100644 --- a/server/src/main/java/com/cloud/api/query/dao/DomainRouterJoinDaoImpl.java +++ b/server/src/main/java/com/cloud/api/query/dao/DomainRouterJoinDaoImpl.java @@ -210,6 +210,7 @@ public class DomainRouterJoinDaoImpl extends GenericDaoBase Date: Mon, 26 Aug 2024 09:41:49 -0300 Subject: [PATCH 4/5] Fix usage volume size after resizing (#9459) Co-authored-by: Henrique Sato --- .../java/com/cloud/storage/VolumeApiServiceImpl.java | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/server/src/main/java/com/cloud/storage/VolumeApiServiceImpl.java b/server/src/main/java/com/cloud/storage/VolumeApiServiceImpl.java index 553f72b719b..e6092223f01 100644 --- a/server/src/main/java/com/cloud/storage/VolumeApiServiceImpl.java +++ b/server/src/main/java/com/cloud/storage/VolumeApiServiceImpl.java @@ -1431,7 +1431,7 @@ public class VolumeApiServiceImpl extends ManagerBase implements VolumeApiServic private VolumeVO orchestrateResizeVolume(long volumeId, long currentSize, long newSize, Long newMinIops, Long newMaxIops, Integer newHypervisorSnapshotReserve, Long newDiskOfferingId, boolean shrinkOk) { - final VolumeVO volume = _volsDao.findById(volumeId); + VolumeVO volume = _volsDao.findById(volumeId); UserVmVO userVm = _userVmDao.findById(volume.getInstanceId()); StoragePoolVO storagePool = _storagePoolDao.findById(volume.getPoolId()); boolean isManaged = storagePool.isManaged(); @@ -1538,12 +1538,12 @@ public class VolumeApiServiceImpl extends ManagerBase implements VolumeApiServic } // Update size if volume has same size as before, else it is already updated - final VolumeVO volumeNow = _volsDao.findById(volumeId); - if (currentSize == volumeNow.getSize() && currentSize != newSize) { + volume = _volsDao.findById(volumeId); + if (currentSize == volume.getSize() && currentSize != newSize) { volume.setSize(newSize); - } else if (volumeNow.getSize() != newSize) { + } else if (volume.getSize() != newSize) { // consider the updated size as the new size - newSize = volumeNow.getSize(); + newSize = volume.getSize(); } _volsDao.update(volume.getId(), volume); From 9148701285fa39f17313cb408c888febd4e43904 Mon Sep 17 00:00:00 2001 From: Suresh Kumar Anaparti Date: Mon, 26 Aug 2024 18:40:55 +0530 Subject: [PATCH 5/5] [UI] Add project toggle for buckets (#9589) --- ui/src/views/AutogenView.vue | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ui/src/views/AutogenView.vue b/ui/src/views/AutogenView.vue index 40b2db28aba..2b0eccf08d4 100644 --- a/ui/src/views/AutogenView.vue +++ b/ui/src/views/AutogenView.vue @@ -799,7 +799,7 @@ export default { } this.projectView = Boolean(store.getters.project && store.getters.project.id) - this.hasProjectId = ['vm', 'vmgroup', 'ssh', 'affinitygroup', 'userdata', 'volume', 'snapshot', 'vmsnapshot', 'guestnetwork', + this.hasProjectId = ['vm', 'vmgroup', 'ssh', 'affinitygroup', 'userdata', 'volume', 'snapshot', 'buckets', 'vmsnapshot', 'guestnetwork', 'vpc', 'securitygroups', 'publicip', 'vpncustomergateway', 'template', 'iso', 'event', 'kubernetes', 'autoscalevmgroup', 'vnfapp'].includes(this.$route.name)