From 0ee45261e7e4b2f6a42e3e054923ec41aa294360 Mon Sep 17 00:00:00 2001 From: Chiradeep Vittal Date: Wed, 27 Jul 2011 16:00:59 -0700 Subject: [PATCH] set a flag so that api clients know whether to use the elb api --- .../com/cloud/api/commands/ListCapabilitiesCmd.java | 1 + .../com/cloud/api/response/CapabilitiesResponse.java | 12 ++++++++++++ server/src/com/cloud/configuration/Config.java | 4 ++++ .../src/com/cloud/server/ManagementServerImpl.java | 4 ++++ 4 files changed, 21 insertions(+) diff --git a/api/src/com/cloud/api/commands/ListCapabilitiesCmd.java b/api/src/com/cloud/api/commands/ListCapabilitiesCmd.java index 22d44848484..be9ad1b329d 100644 --- a/api/src/com/cloud/api/commands/ListCapabilitiesCmd.java +++ b/api/src/com/cloud/api/commands/ListCapabilitiesCmd.java @@ -49,6 +49,7 @@ public class ListCapabilitiesCmd extends BaseCmd { response.setSecurityGroupsEnabled((Boolean)capabilities.get("securityGroupsEnabled")); response.setCloudStackVersion((String)capabilities.get("cloudStackVersion")); response.setUserPublicTemplateEnabled((Boolean)capabilities.get("userPublicTemplateEnabled")); + response.setSupportELB((Boolean)capabilities.get("supportELB")); response.setObjectName("capability"); response.setResponseName(getCommandName()); this.setResponseObject(response); diff --git a/api/src/com/cloud/api/response/CapabilitiesResponse.java b/api/src/com/cloud/api/response/CapabilitiesResponse.java index 808770b3edc..33dd5145d29 100644 --- a/api/src/com/cloud/api/response/CapabilitiesResponse.java +++ b/api/src/com/cloud/api/response/CapabilitiesResponse.java @@ -30,6 +30,10 @@ public class CapabilitiesResponse extends BaseResponse { @SerializedName("userpublictemplateenabled") @Param(description="true if user and domain admins can set templates to be shared, false otherwise") private boolean userPublicTemplateEnabled; + + + @SerializedName("supportELB") @Param(description="true if region supports elastic load balancer on basic zones") + private boolean supportELB; public boolean getSecurityGroupsEnabled() { return securityGroupsEnabled; @@ -54,4 +58,12 @@ public class CapabilitiesResponse extends BaseResponse { public void setUserPublicTemplateEnabled(boolean userPublicTemplateEnabled) { this.userPublicTemplateEnabled = userPublicTemplateEnabled; } + + public void setSupportELB(boolean supportELB) { + this.supportELB = supportELB; + } + + public boolean isSupportELB() { + return supportELB; + } } diff --git a/server/src/com/cloud/configuration/Config.java b/server/src/com/cloud/configuration/Config.java index f80c90560b8..3bac354aede 100755 --- a/server/src/com/cloud/configuration/Config.java +++ b/server/src/com/cloud/configuration/Config.java @@ -171,6 +171,10 @@ public enum Config { UseUserConcentratedPodAllocation("Advanced", ManagementServer.class, Boolean.class, "use.user.concentrated.pod.allocation", "true", "If true, deployment planner applies the user concentration heuristic during VM resource allocation", "true,false"), HostCapacityTypeToOrderClusters("Advanced", ManagementServer.class, String.class, "host.capacityType.to.order.clusters", "CPU", "The host capacity type (CPU or RAM) is used by deployment planner to order clusters during VM resource allocation", "CPU,RAM"), EndpointeUrl("Advanced", ManagementServer.class, String.class, "endpointe.url", "http://localhost:8080/client/api", "Endpointe Url", "The endpoint callback URL"), + ElasticLoadBalancerEnabled("Advanced", ManagementServer.class, String.class, "network.loadbalancer.basiczone.elb.enabled", "true", "Whether the load balancing service is enabled for basic zones", "true,false"), + ElasticLoadBalancerNetwork("Advanced", ManagementServer.class, String.class, "network.loadbalancer.basiczone.elb.network", "guest", "Whether the elastic load balancing service public ips are taken from the public or guest network", "guest,public"), + + // XenServer VmAllocationAlgorithm("Advanced", ManagementServer.class, String.class, "vm.allocation.algorithm", "random", "If 'random', hosts within a pod will be randomly considered for VM/volume allocation. If 'firstfit', they will be considered on a first-fit basis.", null), diff --git a/server/src/com/cloud/server/ManagementServerImpl.java b/server/src/com/cloud/server/ManagementServerImpl.java index 04c53d278d5..f0b9cc07520 100755 --- a/server/src/com/cloud/server/ManagementServerImpl.java +++ b/server/src/com/cloud/server/ManagementServerImpl.java @@ -4179,9 +4179,12 @@ public class ManagementServerImpl implements ManagementServer { Map capabilities = new HashMap(); boolean securityGroupsEnabled = false; + boolean elasticLoadBalancerEnabled = false; List dc = _dcDao.listSecurityGroupEnabledZones(); if (dc != null && !dc.isEmpty()) { securityGroupsEnabled = true; + String elbEnabled = _configDao.getValue(Config.ElasticLoadBalancerEnabled.key()); + elasticLoadBalancerEnabled = elbEnabled==null?false:Boolean.parseBoolean(elbEnabled); } String userPublicTemplateEnabled = _configs.get(Config.AllowPublicUserTemplates.key()); @@ -4189,6 +4192,7 @@ public class ManagementServerImpl implements ManagementServer { capabilities.put("securityGroupsEnabled", securityGroupsEnabled); capabilities.put("userPublicTemplateEnabled", (userPublicTemplateEnabled == null || userPublicTemplateEnabled.equals("false") ? false : true)); capabilities.put("cloudStackVersion", getVersion()); + capabilities.put("supportELB", elasticLoadBalancerEnabled); return capabilities; }