From d61eb05c5471180b2b0a7e89dea80c5f2f1df468 Mon Sep 17 00:00:00 2001 From: Pranav Saxena Date: Tue, 14 Aug 2012 16:27:32 +0530 Subject: [PATCH 01/31] CS-15981:Add Load Balancer page inside Guest networks is blank --- ui/scripts/ui/widgets/multiEdit.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ui/scripts/ui/widgets/multiEdit.js b/ui/scripts/ui/widgets/multiEdit.js index d0b73ad4d32..28b3317911e 100644 --- a/ui/scripts/ui/widgets/multiEdit.js +++ b/ui/scripts/ui/widgets/multiEdit.js @@ -840,7 +840,7 @@ }).appendTo($td); } else if (field.addButton) { $addVM = $('
').addClass('button add-vm').html( - _l(args.add.label) + _l('label.add.vms') ).appendTo($td); } From d9b843ed9db8d7b3d65f1bbbd6cad91c919af702 Mon Sep 17 00:00:00 2001 From: Vijay Date: Tue, 14 Aug 2012 16:30:44 +0530 Subject: [PATCH 02/31] CS-15938. Support for multiple guest networks with autoscale The loadbalancers network and the VM's network are the same. Hence not getting the input from user and passing the loadbalancers network for the AutoScale VMs (for advanced network). --- .../cloud/agent/api/to/LoadBalancerTO.java | 15 ++++++++---- .../cloud/network/lb/LoadBalancingRule.java | 8 ++++++- .../network/resource/NetscalerResource.java | 1 + .../network/as/AutoScaleManagerImpl.java | 3 +++ .../lb/LoadBalancingRulesManagerImpl.java | 24 +++++++++++++++---- 5 files changed, 42 insertions(+), 9 deletions(-) diff --git a/api/src/com/cloud/agent/api/to/LoadBalancerTO.java b/api/src/com/cloud/agent/api/to/LoadBalancerTO.java index 2f3fcdce237..64c85c035a3 100644 --- a/api/src/com/cloud/agent/api/to/LoadBalancerTO.java +++ b/api/src/com/cloud/agent/api/to/LoadBalancerTO.java @@ -287,9 +287,10 @@ public class LoadBalancerTO implements Serializable { private final String cloudStackApiUrl; private final String autoScaleUserApiKey; private final String autoScaleUserSecretKey; + private final String networkId; - public AutoScaleVmProfileTO(String zoneId, String domainId, String cloudStackApiUrl, String autoScaleUserApiKey, String autoScaleUserSecretKey, String serviceOfferingId, String templateId, - String otherDeployParams, String snmpCommunity, Integer snmpPort, Integer destroyVmGraceperiod) { + public AutoScaleVmProfileTO(String zoneId, String domainId, String cloudStackApiUrl, String autoScaleUserApiKey, String autoScaleUserSecretKey, String serviceOfferingId, + String templateId, String networkId, String otherDeployParams, String snmpCommunity, Integer snmpPort, Integer destroyVmGraceperiod) { this.zoneId = zoneId; this.domainId = domainId; this.serviceOfferingId = serviceOfferingId; @@ -301,6 +302,7 @@ public class LoadBalancerTO implements Serializable { this.cloudStackApiUrl = cloudStackApiUrl; this.autoScaleUserApiKey = autoScaleUserApiKey; this.autoScaleUserSecretKey = autoScaleUserSecretKey; + this.networkId = networkId; } public String getZoneId() { @@ -346,6 +348,10 @@ public class LoadBalancerTO implements Serializable { public String getAutoScaleUserSecretKey() { return autoScaleUserSecretKey; } + + public String getNetworkId() { + return networkId; + } } public static class AutoScaleVmGroupTO implements Serializable { @@ -427,8 +433,9 @@ public class LoadBalancerTO implements Serializable { AutoScaleVmProfileTO autoScaleVmProfileTO = new AutoScaleVmProfileTO(lbAutoScaleVmProfile.getZoneId(), lbAutoScaleVmProfile.getDomainId(), lbAutoScaleVmProfile.getCsUrl(), lbAutoScaleVmProfile.getAutoScaleUserApiKey(), lbAutoScaleVmProfile.getAutoScaleUserSecretKey(), - lbAutoScaleVmProfile.getServiceOfferingId(), lbAutoScaleVmProfile.getTemplateId(), autoScaleVmProfile.getOtherDeployParams(), - autoScaleVmProfile.getSnmpCommunity(), autoScaleVmProfile.getSnmpPort(), autoScaleVmProfile.getDestroyVmGraceperiod()); + lbAutoScaleVmProfile.getServiceOfferingId(), lbAutoScaleVmProfile.getTemplateId(), lbAutoScaleVmProfile.getNetworkId(), + autoScaleVmProfile.getOtherDeployParams(), autoScaleVmProfile.getSnmpCommunity(), autoScaleVmProfile.getSnmpPort(), + autoScaleVmProfile.getDestroyVmGraceperiod()); AutoScaleVmGroup autoScaleVmGroup = lbAutoScaleVmGroup.getVmGroup(); autoScaleVmGroupTO = new AutoScaleVmGroupTO(autoScaleVmGroup.getMinMembers(), autoScaleVmGroup.getMaxMembers(), autoScaleVmGroup.getMemberPort(), diff --git a/api/src/com/cloud/network/lb/LoadBalancingRule.java b/api/src/com/cloud/network/lb/LoadBalancingRule.java index a2471fe1dd5..9d9caec097b 100644 --- a/api/src/com/cloud/network/lb/LoadBalancingRule.java +++ b/api/src/com/cloud/network/lb/LoadBalancingRule.java @@ -307,8 +307,9 @@ public class LoadBalancingRule implements FirewallRule, LoadBalancer { private final String domainId; private final String serviceOfferingId; private final String templateId; + private final String networkId; - public LbAutoScaleVmProfile(AutoScaleVmProfile profile, String autoScaleUserApiKey, String autoScaleUserSecretKey, String csUrl, String zoneId, String domainId, String serviceOfferingId, String templateId) { + public LbAutoScaleVmProfile(AutoScaleVmProfile profile, String autoScaleUserApiKey, String autoScaleUserSecretKey, String csUrl, String zoneId, String domainId, String serviceOfferingId, String templateId, String networkId) { this.profile = profile; this.autoScaleUserApiKey = autoScaleUserApiKey; this.autoScaleUserSecretKey = autoScaleUserSecretKey; @@ -317,6 +318,7 @@ public class LoadBalancingRule implements FirewallRule, LoadBalancer { this.domainId = domainId; this.serviceOfferingId = serviceOfferingId; this.templateId = templateId; + this.networkId = networkId; } public AutoScaleVmProfile getProfile() { @@ -350,6 +352,10 @@ public class LoadBalancingRule implements FirewallRule, LoadBalancer { public String getTemplateId() { return templateId; } + + public String getNetworkId() { + return networkId; + } } public static class LbAutoScaleVmGroup { diff --git a/core/src/com/cloud/network/resource/NetscalerResource.java b/core/src/com/cloud/network/resource/NetscalerResource.java index a42b7074537..ee8555475c5 100644 --- a/core/src/com/cloud/network/resource/NetscalerResource.java +++ b/core/src/com/cloud/network/resource/NetscalerResource.java @@ -1717,6 +1717,7 @@ public class NetscalerResource implements ServerResource { ApiConstants.ZONE_ID + "=" + profileTO.getZoneId()+ "&" + ApiConstants.SERVICE_OFFERING_ID + "=" + profileTO.getServiceOfferingId()+ "&" + ApiConstants.TEMPLATE_ID + "=" + profileTO.getTemplateId()+ "&" + + ((profileTO.getNetworkId() == null)? "" : (ApiConstants.NETWORK_IDS + "=" + profileTO.getNetworkId()+ "&")) + ((profileTO.getOtherDeployParams() == null)? "" : (profileTO.getOtherDeployParams() + "&")) + "lbruleid=" + loadBalancerTO.getUuid(); scaleUpAction.set_parameters(scaleUpParameters); diff --git a/server/src/com/cloud/network/as/AutoScaleManagerImpl.java b/server/src/com/cloud/network/as/AutoScaleManagerImpl.java index 0eefca09a6d..460e8a4e159 100644 --- a/server/src/com/cloud/network/as/AutoScaleManagerImpl.java +++ b/server/src/com/cloud/network/as/AutoScaleManagerImpl.java @@ -315,6 +315,9 @@ public class AutoScaleManagerImpl implements AutoScaleService, Manager { // validations HashMap deployParams = cmd.getDeployParamMap(); + if(deployParams.containsKey("networks") && deployParams.get("networks").length() > 0) { + throw new InvalidParameterValueException("'networks' is not a valid parameter, network for an AutoScaled VM is chosen automatically. An autoscaled VM is deployed in the loadbalancer's network", null); + } /* * Just for making sure the values are right in other deploy params. * For ex. if projectId is given as a string instead of an long value, this diff --git a/server/src/com/cloud/network/lb/LoadBalancingRulesManagerImpl.java b/server/src/com/cloud/network/lb/LoadBalancingRulesManagerImpl.java index d1e03203cfe..e2fce3d2d81 100755 --- a/server/src/com/cloud/network/lb/LoadBalancingRulesManagerImpl.java +++ b/server/src/com/cloud/network/lb/LoadBalancingRulesManagerImpl.java @@ -38,6 +38,8 @@ import com.cloud.api.response.ServiceResponse; import com.cloud.configuration.Config; import com.cloud.configuration.ConfigurationManager; import com.cloud.configuration.dao.ConfigurationDao; +import com.cloud.dc.DataCenter; +import com.cloud.dc.DataCenter.NetworkType; import com.cloud.dc.dao.DataCenterDao; import com.cloud.dc.dao.VlanDao; import com.cloud.domain.dao.DomainDao; @@ -248,7 +250,7 @@ public class LoadBalancingRulesManagerImpl implements LoadBalancingRulesMa return null; } - private LbAutoScaleVmGroup getLbAutoScaleVmGroup(AutoScaleVmGroup vmGroup, String currentState) { + private LbAutoScaleVmGroup getLbAutoScaleVmGroup(AutoScaleVmGroupVO vmGroup, String currentState, long networkId) { List vmGroupPolicyMapList = _autoScaleVmGroupPolicyMapDao.listByVmGroupId(vmGroup.getId()); List autoScalePolicies = new ArrayList(); for (AutoScaleVmGroupPolicyMapVO vmGroupPolicyMap : vmGroupPolicyMapList) { @@ -272,6 +274,18 @@ public class LoadBalancingRulesManagerImpl implements LoadBalancingRulesMa String domainId = _domainDao.findById(autoScaleVmProfile.getDomainId()).getUuid(); String serviceOfferingId = _offeringsDao.findById(autoScaleVmProfile.getServiceOfferingId()).getUuid(); String templateId = _templateDao.findById(autoScaleVmProfile.getTemplateId()).getUuid(); + String lbNetworkUuid = null; + + DataCenter zone = _configMgr.getZone(vmGroup.getZoneId()); + if (zone == null) { + throw new InvalidParameterValueException("Unable to find zone by id", null); + } else { + if (zone.getNetworkType() == NetworkType.Advanced) { + NetworkVO lbNetwork = _networkDao.findById(networkId); + lbNetworkUuid = lbNetwork.getUuid(); + } + } + if (apiKey == null) { throw new InvalidParameterValueException("apiKey for user: " + user.getUsername() + " is empty. Please generate it", null); @@ -285,18 +299,19 @@ public class LoadBalancingRulesManagerImpl implements LoadBalancingRulesMa throw new InvalidParameterValueException("Global setting endpointe.url has to be set to the Management Server's API end point", null); } - LbAutoScaleVmProfile lbAutoScaleVmProfile = new LbAutoScaleVmProfile(autoScaleVmProfile, apiKey, secretKey, csUrl, zoneId, domainId, serviceOfferingId, templateId); + + LbAutoScaleVmProfile lbAutoScaleVmProfile = new LbAutoScaleVmProfile(autoScaleVmProfile, apiKey, secretKey, csUrl, zoneId, domainId, serviceOfferingId, templateId, lbNetworkUuid); return new LbAutoScaleVmGroup(vmGroup, autoScalePolicies, lbAutoScaleVmProfile, currentState); } private boolean applyAutoScaleConfig(LoadBalancerVO lb, AutoScaleVmGroupVO vmGroup, String currentState) throws ResourceUnavailableException { - LbAutoScaleVmGroup lbAutoScaleVmGroup = getLbAutoScaleVmGroup(vmGroup, currentState); + LbAutoScaleVmGroup lbAutoScaleVmGroup = getLbAutoScaleVmGroup(vmGroup, currentState, lb.getNetworkId()); /* Regular config like destinations need not be packed for applying autoscale config as of today.*/ LoadBalancingRule rule = new LoadBalancingRule(lb, null, null); rule.setAutoScaleVmGroup(lbAutoScaleVmGroup); if (!isRollBackAllowedForProvider(lb)) { - // this is for Netscalar type of devices. if their is failure the db entries will be rollbacked. + // this is for Netscaler type of devices. if their is failure the db entries will be rollbacked. return false; } @@ -714,6 +729,7 @@ public class LoadBalancingRulesManagerImpl implements LoadBalancingRulesMa if (_autoScaleVmGroupDao.isAutoScaleLoadBalancer(loadBalancerId)) { // Nothing needs to be done for an autoscaled loadbalancer, // just persist and proceed. + _lb2VmMapDao.remove(loadBalancer.getId(), instanceIds, null); return true; } From ddc50606d72113472e8a9222d690f79333a72341 Mon Sep 17 00:00:00 2001 From: kishan Date: Tue, 14 Aug 2012 16:34:39 +0530 Subject: [PATCH 03/31] bug CS-15982: corrected order of sent and rcvd usage rules status CS-15982: resolved fixed --- .../systemvm/debian/config/opt/cloud/bin/vpc_netusage.sh | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/patches/systemvm/debian/config/opt/cloud/bin/vpc_netusage.sh b/patches/systemvm/debian/config/opt/cloud/bin/vpc_netusage.sh index 4d423fc2334..71deec0ea07 100755 --- a/patches/systemvm/debian/config/opt/cloud/bin/vpc_netusage.sh +++ b/patches/systemvm/debian/config/opt/cloud/bin/vpc_netusage.sh @@ -34,8 +34,8 @@ create_usage_rules () { then iptables -N NETWORK_STATS_$ethDev > /dev/null; iptables -I FORWARD -j NETWORK_STATS_$ethDev > /dev/null; - iptables -A NETWORK_STATS_$ethDev -i $ethDev -d $vcidr > /dev/null; iptables -A NETWORK_STATS_$ethDev -o $ethDev -s $vcidr > /dev/null; + iptables -A NETWORK_STATS_$ethDev -i $ethDev -d $vcidr > /dev/null; fi return $? } @@ -46,8 +46,8 @@ create_vpn_usage_rules () { then iptables -t mangle -N VPN_STATS_$ethDev > /dev/null; iptables -t mangle -I FORWARD -j VPN_STATS_$ethDev > /dev/null; - iptables -t mangle -A VPN_STATS_$ethDev -i $ethDev -m mark --mark $vpninmark > /dev/null; iptables -t mangle -A VPN_STATS_$ethDev -o $ethDev -m mark --mark $vpnoutmark > /dev/null; + iptables -t mangle -A VPN_STATS_$ethDev -i $ethDev -m mark --mark $vpninmark > /dev/null; fi return $? } @@ -69,8 +69,10 @@ get_usage () { then # flush rules and remove chain iptables -F NETWORK_STATS_$i > /dev/null; + iptables -D FORWARD -j NETWORK_STATS_$i > /dev/null; iptables -X NETWORK_STATS_$i > /dev/null; iptables -t mangle -F VPN_STATS_$i > /dev/null; + iptables -t mangle -D FORWARD -j VPN_STATS_$i > /dev/null; iptables -t mangle -X VPN_STATS_$i > /dev/null; fi done From 50c6bd77a0a25caa83c4d2e3fc452d1062bd66a6 Mon Sep 17 00:00:00 2001 From: kishan Date: Tue, 14 Aug 2012 16:36:29 +0530 Subject: [PATCH 04/31] bug CS-15984: parse and return stats for network usage command with vpn option status CS-15984: resolved fixed --- .../com/cloud/hypervisor/vmware/resource/VmwareResource.java | 2 +- .../com/cloud/hypervisor/xen/resource/XenServer56Resource.java | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/core/src/com/cloud/hypervisor/vmware/resource/VmwareResource.java b/core/src/com/cloud/hypervisor/vmware/resource/VmwareResource.java index d7b0e9bf236..80458e13256 100755 --- a/core/src/com/cloud/hypervisor/vmware/resource/VmwareResource.java +++ b/core/src/com/cloud/hypervisor/vmware/resource/VmwareResource.java @@ -548,7 +548,7 @@ public class VmwareResource implements StoragePoolResource, ServerResource, Vmwa throw new Exception(" vpc network usage plugin call failed "); } - if (option.equals("get")) { + if (option.equals("get") || option.equals("vpn")) { String result = resultPair.second(); if (result == null || result.isEmpty()) { throw new Exception(" vpc network usage get returns empty "); diff --git a/core/src/com/cloud/hypervisor/xen/resource/XenServer56Resource.java b/core/src/com/cloud/hypervisor/xen/resource/XenServer56Resource.java index bf486376f2a..fb1a1362942 100644 --- a/core/src/com/cloud/hypervisor/xen/resource/XenServer56Resource.java +++ b/core/src/com/cloud/hypervisor/xen/resource/XenServer56Resource.java @@ -189,7 +189,7 @@ public class XenServer56Resource extends CitrixResourceBase { } String result = callHostPlugin(conn, "vmops", "routerProxy", "args", args); - if (option.equals("get")) { + if (option.equals("get") || option.equals("vpn")) { long[] stats = new long[2]; if (result != null) { String[] splitResult = result.split(":"); From 15fe4e80acb3936cf55a50da45f2a00d02be1c15 Mon Sep 17 00:00:00 2001 From: Pranav Saxena Date: Tue, 14 Aug 2012 17:20:27 +0530 Subject: [PATCH 05/31] CS-15976:when vpc fails to create, UI keeps on showing that the creation is in progress --- ui/scripts/network.js | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/ui/scripts/network.js b/ui/scripts/network.js index d4d24d5e09f..6beb2fe1777 100644 --- a/ui/scripts/network.js +++ b/ui/scripts/network.js @@ -3731,7 +3731,10 @@ } } ); - } + }, + error: function(data) { + args.response.error(parseXMLHttpResponse(data)); + } }); }, From a52925bec03f5dddb0e3925528a108547f8fec00 Mon Sep 17 00:00:00 2001 From: Pranav Saxena Date: Tue, 14 Aug 2012 18:10:58 +0530 Subject: [PATCH 06/31] Changing addvms label --- ui/scripts/ui/widgets/multiEdit.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ui/scripts/ui/widgets/multiEdit.js b/ui/scripts/ui/widgets/multiEdit.js index 28b3317911e..3768f9fc7ef 100644 --- a/ui/scripts/ui/widgets/multiEdit.js +++ b/ui/scripts/ui/widgets/multiEdit.js @@ -147,7 +147,7 @@ _medit.vmList($multi, options.listView, options.context, - options.multipleAdd, _l('label.add.vms'), + options.multipleAdd, _l('label.add'), addItemAction, { multiRule: multiRule From f253fcdddf32958a4a6f3b03e5f3add4b85780a8 Mon Sep 17 00:00:00 2001 From: Pranav Saxena Date: Tue, 14 Aug 2012 21:00:44 +0530 Subject: [PATCH 07/31] multiEdit widget add VM labels --- ui/scripts/ui/widgets/multiEdit.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ui/scripts/ui/widgets/multiEdit.js b/ui/scripts/ui/widgets/multiEdit.js index 3768f9fc7ef..a3d8daf7e56 100644 --- a/ui/scripts/ui/widgets/multiEdit.js +++ b/ui/scripts/ui/widgets/multiEdit.js @@ -840,7 +840,7 @@ }).appendTo($td); } else if (field.addButton) { $addVM = $('
').addClass('button add-vm').html( - _l('label.add.vms') + _l('label.add') ).appendTo($td); } From 07fc5ab3b0f11f7d45dc9a6491275ea318a32b6e Mon Sep 17 00:00:00 2001 From: Pranav Saxena Date: Tue, 14 Aug 2012 21:01:52 +0530 Subject: [PATCH 08/31] multiEdit widget add VM labels --- ui/scripts/ui/widgets/multiEdit.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ui/scripts/ui/widgets/multiEdit.js b/ui/scripts/ui/widgets/multiEdit.js index a3d8daf7e56..eafec673175 100644 --- a/ui/scripts/ui/widgets/multiEdit.js +++ b/ui/scripts/ui/widgets/multiEdit.js @@ -147,7 +147,7 @@ _medit.vmList($multi, options.listView, options.context, - options.multipleAdd, _l('label.add'), + options.multipleAdd, _l('label.add.vms'), addItemAction, { multiRule: multiRule From e947d1cf67bbf500ed918b5830043c8170b94c8b Mon Sep 17 00:00:00 2001 From: Sheng Yang Date: Tue, 14 Aug 2012 09:45:36 -0700 Subject: [PATCH 09/31] S2S VPN: Fix wrong response name --- api/src/com/cloud/api/commands/DeleteVpnCustomerGatewayCmd.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/api/src/com/cloud/api/commands/DeleteVpnCustomerGatewayCmd.java b/api/src/com/cloud/api/commands/DeleteVpnCustomerGatewayCmd.java index 2e133f0fba2..fb7fe4655fc 100644 --- a/api/src/com/cloud/api/commands/DeleteVpnCustomerGatewayCmd.java +++ b/api/src/com/cloud/api/commands/DeleteVpnCustomerGatewayCmd.java @@ -30,7 +30,7 @@ import com.cloud.user.Account; public class DeleteVpnCustomerGatewayCmd extends BaseAsyncCmd { public static final Logger s_logger = Logger.getLogger(DeleteVpnCustomerGatewayCmd.class.getName()); - private static final String s_name = "deletecustomergatewayresponse"; + private static final String s_name = "deletevpncustomergatewayresponse"; ///////////////////////////////////////////////////// //////////////// API parameters ///////////////////// From ba05fa55643a5d5e03582cf17a4c73025d5cf111 Mon Sep 17 00:00:00 2001 From: Sheng Yang Date: Tue, 14 Aug 2012 09:50:36 -0700 Subject: [PATCH 10/31] S2S VPN: Fix license headers --- .../agent/api/CheckS2SVpnConnectionsAnswer.java | 16 ++++++++++++++++ .../agent/api/CheckS2SVpnConnectionsCommand.java | 16 ++++++++++++++++ .../api/routing/Site2SiteVpnCfgCommand.java | 16 ++++++++++++++++ .../cloud/network/Site2SiteCustomerGateway.java | 16 ++++++++++++++++ .../cloud/network/Site2SiteVpnConnection.java | 16 ++++++++++++++++ .../com/cloud/network/Site2SiteVpnGateway.java | 16 ++++++++++++++++ .../element/Site2SiteVpnServiceProvider.java | 16 ++++++++++++++++ 7 files changed, 112 insertions(+) diff --git a/api/src/com/cloud/agent/api/CheckS2SVpnConnectionsAnswer.java b/api/src/com/cloud/agent/api/CheckS2SVpnConnectionsAnswer.java index b9e9a6638ab..ef3be811870 100644 --- a/api/src/com/cloud/agent/api/CheckS2SVpnConnectionsAnswer.java +++ b/api/src/com/cloud/agent/api/CheckS2SVpnConnectionsAnswer.java @@ -1,3 +1,19 @@ +// 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.agent.api; import java.util.HashMap; diff --git a/api/src/com/cloud/agent/api/CheckS2SVpnConnectionsCommand.java b/api/src/com/cloud/agent/api/CheckS2SVpnConnectionsCommand.java index 9401b47be65..a736eab35ea 100644 --- a/api/src/com/cloud/agent/api/CheckS2SVpnConnectionsCommand.java +++ b/api/src/com/cloud/agent/api/CheckS2SVpnConnectionsCommand.java @@ -1,3 +1,19 @@ +// 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.agent.api; import java.util.List; diff --git a/api/src/com/cloud/agent/api/routing/Site2SiteVpnCfgCommand.java b/api/src/com/cloud/agent/api/routing/Site2SiteVpnCfgCommand.java index f9ec641ff15..97db2f96cc3 100644 --- a/api/src/com/cloud/agent/api/routing/Site2SiteVpnCfgCommand.java +++ b/api/src/com/cloud/agent/api/routing/Site2SiteVpnCfgCommand.java @@ -1,3 +1,19 @@ +// 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.agent.api.routing; public class Site2SiteVpnCfgCommand extends NetworkElementCommand { diff --git a/api/src/com/cloud/network/Site2SiteCustomerGateway.java b/api/src/com/cloud/network/Site2SiteCustomerGateway.java index 623721b0f82..8950c771705 100644 --- a/api/src/com/cloud/network/Site2SiteCustomerGateway.java +++ b/api/src/com/cloud/network/Site2SiteCustomerGateway.java @@ -1,3 +1,19 @@ +// 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; import java.util.Date; diff --git a/api/src/com/cloud/network/Site2SiteVpnConnection.java b/api/src/com/cloud/network/Site2SiteVpnConnection.java index d613203e90d..6cf52a94943 100644 --- a/api/src/com/cloud/network/Site2SiteVpnConnection.java +++ b/api/src/com/cloud/network/Site2SiteVpnConnection.java @@ -1,3 +1,19 @@ +// 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; import java.util.Date; diff --git a/api/src/com/cloud/network/Site2SiteVpnGateway.java b/api/src/com/cloud/network/Site2SiteVpnGateway.java index f435f07ee6f..52ec5971c14 100644 --- a/api/src/com/cloud/network/Site2SiteVpnGateway.java +++ b/api/src/com/cloud/network/Site2SiteVpnGateway.java @@ -1,3 +1,19 @@ +// 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; import java.util.Date; diff --git a/api/src/com/cloud/network/element/Site2SiteVpnServiceProvider.java b/api/src/com/cloud/network/element/Site2SiteVpnServiceProvider.java index 0dc4a5ad190..8063cbb5642 100644 --- a/api/src/com/cloud/network/element/Site2SiteVpnServiceProvider.java +++ b/api/src/com/cloud/network/element/Site2SiteVpnServiceProvider.java @@ -1,3 +1,19 @@ +// 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.element; import com.cloud.exception.ResourceUnavailableException; From b6e401b1faf0b62cb7e300a4396b7c09d5808c79 Mon Sep 17 00:00:00 2001 From: Jessica Wang Date: Tue, 14 Aug 2012 10:07:18 -0700 Subject: [PATCH 11/31] cloudstack 3.0 UI - DeleteVpnCustomerGateway API response name has been changed, here is corresponding UI change. --- ui/scripts/network.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ui/scripts/network.js b/ui/scripts/network.js index 6beb2fe1777..52b2b5d4d44 100644 --- a/ui/scripts/network.js +++ b/ui/scripts/network.js @@ -4244,7 +4244,7 @@ id: args.context.vpnCustomerGateway[0].id }, success: function(json) { - var jid = json.deletecustomergatewayresponse.jobid; + var jid = json.deletevpncustomergatewayresponse.jobid; args.response.success( {_custom: { From 945edac370d45a1f31e7dcbc56073a8e36226e4c Mon Sep 17 00:00:00 2001 From: Brian Federle Date: Tue, 14 Aug 2012 11:08:48 -0700 Subject: [PATCH 12/31] CS-15796: Disable security group dropdown when in advanced zone --- ui/css/cloudstack3.css | 8 +++++ ui/scripts/autoscaler.js | 47 ++++++++++++++++++++++++++++++ ui/scripts/ui-custom/autoscaler.js | 20 ++++--------- 3 files changed, 61 insertions(+), 14 deletions(-) diff --git a/ui/css/cloudstack3.css b/ui/css/cloudstack3.css index 1e92aa20907..f046d55bdb4 100644 --- a/ui/css/cloudstack3.css +++ b/ui/css/cloudstack3.css @@ -9743,6 +9743,14 @@ div.ui-dialog div.acl div.multi-edit div.data div.data-body div.data-item table max-height: 600px; } +.ui-dialog div.autoscaler div.form-container div.form-item.disabled { + /*+opacity:50%;*/ + filter: alpha(opacity=50); + -ms-filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=50); + -moz-opacity: 0.5; + opacity: 0.5; +} + .ui-dialog div.autoscaler .detail-actions { } diff --git a/ui/scripts/autoscaler.js b/ui/scripts/autoscaler.js index a039fca2109..d90605d7c1e 100644 --- a/ui/scripts/autoscaler.js +++ b/ui/scripts/autoscaler.js @@ -17,6 +17,53 @@ var totalScaleDownCondition = 0; cloudStack.autoscaler = { + preFilter: function(args) { + var $autoscaler = args.$autoscaler; + var isAdvancedZone = false; + + // Hide fields for advanced zone + $.ajax({ + url: createURL('listZones'), + data: { + id: args.context.networks[0].zoneid, + listAll: true + }, + async: false, + success: function(json) { + var zone = json.listzonesresponse.zone[0]; + + if (zone.networktype == 'Advanced') { + isAdvancedZone = true; + } + else + isAdvancedZone = false; + } + }); + + // Run pre-filter + if (args.data == null) { //from a new LB rule + $autoscaler.find('select[name=serviceOfferingId]').removeAttr('disabled'); + $autoscaler.find('select[name=securityGroups]').removeAttr('disabled'); + $autoscaler.find('select[name=diskOfferingId]').removeAttr('disabled'); + } else { //from an existing LB rule + $autoscaler.find('select[name=serviceOfferingId]').attr('disabled', true); + $autoscaler.find('select[name=securityGroups]').attr('disabled', true); + $autoscaler.find('select[name=diskOfferingId]').attr('disabled', true); + + if(args.data.isAdvanced != null) { + $autoscaler.find('input[type=checkbox]').trigger('click'); + $autoscaler.find('input[type=checkbox]').attr('checked', 'checked'); + } + } + + if (isAdvancedZone) { + $autoscaler.find('.form-item[rel=securityGroups]') + .addClass('disabled') + .attr('title', 'Security groups are only selectable for Basic zones'); + $autoscaler.find('select[name=securityGroups]').attr('disabled', true); + } + }, + // UI actions to appear in dialog autoscaleActions: { enable: { diff --git a/ui/scripts/ui-custom/autoscaler.js b/ui/scripts/ui-custom/autoscaler.js index 881c0dcff56..3afc8b3414e 100644 --- a/ui/scripts/ui-custom/autoscaler.js +++ b/ui/scripts/ui-custom/autoscaler.js @@ -366,20 +366,12 @@ $loading.remove(); renderDialogContent(args); - if (args.data == null) { //from a new LB rule - $autoscalerDialog.find('select[name=serviceOfferingId]').removeAttr('disabled'); - $autoscalerDialog.find('select[name=securityGroups]').removeAttr('disabled'); - $autoscalerDialog.find('select[name=diskOfferingId]').removeAttr('disabled'); - } - else { //from an existing LB rule - $autoscalerDialog.find('select[name=serviceOfferingId]').attr('disabled', true); - $autoscalerDialog.find('select[name=securityGroups]').attr('disabled', true); - $autoscalerDialog.find('select[name=diskOfferingId]').attr('disabled', true); - - if(args.data.isAdvanced != null) { - $autoscalerDialog.find('input[type=checkbox]').trigger('click'); - $autoscalerDialog.find('input[type=checkbox]').attr('checked', 'checked'); - } + if (cloudStack.autoscaler.preFilter) { + cloudStack.autoscaler.preFilter({ + data: args.data, + $autoscaler: $autoscalerDialog, + context: context + }); } } } From 428c61dbc913ece401a55def0f31c40f147efc27 Mon Sep 17 00:00:00 2001 From: Jessica Wang Date: Tue, 14 Aug 2012 11:35:11 -0700 Subject: [PATCH 13/31] CS-15985: cloudstack 3.0 UI - IP Address page - should use associatednetworkid instead of networkid when trying to grep an IP Address' parent network. --- ui/scripts/network.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ui/scripts/network.js b/ui/scripts/network.js index 52b2b5d4d44..803ea9ecb96 100644 --- a/ui/scripts/network.js +++ b/ui/scripts/network.js @@ -1701,7 +1701,7 @@ args.context.vpc ? args.context.vpc[0].network : args.context.networks, function(network) { - return network.id = ipObj.networkid; + return network.id = ipObj.associatednetworkid; })[0]; args.response.success({ From 5acc99c774ff43c4a02e1dcdc1e93e13337b7881 Mon Sep 17 00:00:00 2001 From: Alena Prokharchyk Date: Tue, 14 Aug 2012 13:44:51 -0700 Subject: [PATCH 14/31] Fixed unittest for VPC - added missing implementation for some methods in Mock classes used by the test --- .../test/com/cloud/vpc/MockNetworkManagerImpl.java | 12 ++++++++---- server/test/com/cloud/vpc/MockVpcManagerImpl.java | 10 ++++++++++ 2 files changed, 18 insertions(+), 4 deletions(-) diff --git a/server/test/com/cloud/vpc/MockNetworkManagerImpl.java b/server/test/com/cloud/vpc/MockNetworkManagerImpl.java index 7dde2ccfa1c..985b2ca58da 100644 --- a/server/test/com/cloud/vpc/MockNetworkManagerImpl.java +++ b/server/test/com/cloud/vpc/MockNetworkManagerImpl.java @@ -1133,8 +1133,11 @@ public class MockNetworkManagerImpl implements NetworkManager, Manager{ */ @Override public List listNetworkOfferingServices(long networkOfferingId) { - // TODO Auto-generated method stub - return null; + List supportedSvcs = new ArrayList(); + if (networkOfferingId != 2) { + supportedSvcs.add(Service.SourceNat); + } + return supportedSvcs; } /* (non-Javadoc) @@ -1313,8 +1316,9 @@ public class MockNetworkManagerImpl implements NetworkManager, Manager{ */ @Override public List getNtwkOffDistinctProviders(long ntwkOffId) { - // TODO Auto-generated method stub - return null; + List providers = new ArrayList(); + providers.add(Provider.VPCVirtualRouter); + return providers; } /* (non-Javadoc) diff --git a/server/test/com/cloud/vpc/MockVpcManagerImpl.java b/server/test/com/cloud/vpc/MockVpcManagerImpl.java index 8fb2aee7c74..575ed2b1042 100644 --- a/server/test/com/cloud/vpc/MockVpcManagerImpl.java +++ b/server/test/com/cloud/vpc/MockVpcManagerImpl.java @@ -41,6 +41,7 @@ import com.cloud.network.vpc.VpcGateway; import com.cloud.network.vpc.VpcManager; import com.cloud.network.vpc.VpcOffering; import com.cloud.network.vpc.VpcService; +import com.cloud.offering.NetworkOffering; import com.cloud.user.Account; import com.cloud.user.User; import com.cloud.utils.component.ComponentLocator; @@ -442,4 +443,13 @@ public class MockVpcManagerImpl implements VpcManager, Manager{ return null; } + /* (non-Javadoc) + * @see com.cloud.network.vpc.VpcManager#validateNtwkOffForVpc(com.cloud.offering.NetworkOffering, java.util.List) + */ + @Override + public void validateNtwkOffForVpc(NetworkOffering guestNtwkOff, List supportedSvcs) { + // TODO Auto-generated method stub + + } + } From 09bd57cff2a2977adc55255528e60b5fe339b0a3 Mon Sep 17 00:00:00 2001 From: Jessica Wang Date: Tue, 14 Aug 2012 15:50:20 -0700 Subject: [PATCH 15/31] CS-15977: cloudstack 3.0 UI - VM Wizard - select network step (5th step) - if there is no visible network in Existing Networks Area, check checkbox in Add Network Area. --- ui/scripts/ui-custom/instanceWizard.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ui/scripts/ui-custom/instanceWizard.js b/ui/scripts/ui-custom/instanceWizard.js index 990747d8c0d..07fc78cf054 100644 --- a/ui/scripts/ui-custom/instanceWizard.js +++ b/ui/scripts/ui-custom/instanceWizard.js @@ -480,7 +480,7 @@ var $checkbox = $step.find('.new-network input[type=checkbox]'); var $newNetwork = $checkbox.closest('.new-network'); - if ($step.find('.select.my-networks .select-container .select').size()) { + if ($step.find('.select.my-networks .select-container .select:visible').size()) { $checkbox.attr('checked', false); $newNetwork.addClass('unselected'); } else { From c516325688afb97d327be84d5ff896117d7b1819 Mon Sep 17 00:00:00 2001 From: Jessica Wang Date: Tue, 14 Aug 2012 18:04:36 -0700 Subject: [PATCH 16/31] CS-15956: cloudstack 3.0 UI - autoscale - create/update autoscale vm profile - change how data is passed to API. --- ui/scripts/autoscaler.js | 168 ++++++++++++++++++++++++--------------- 1 file changed, 104 insertions(+), 64 deletions(-) diff --git a/ui/scripts/autoscaler.js b/ui/scripts/autoscaler.js index d90605d7c1e..352386537c7 100644 --- a/ui/scripts/autoscaler.js +++ b/ui/scripts/autoscaler.js @@ -1110,77 +1110,117 @@ var array1 = []; var apiCmd, apiCmdRes; if(!('multiRules' in args.context)) { //from a new LB - apiCmd = 'createAutoScaleVmProfile'; - apiCmdRes = 'autoscalevmprofileresponse'; - - array1.push("&zoneid=" + args.context.networks[0].zoneid); - array1.push("&serviceofferingid=" + args.data.serviceOfferingId); - var array2 = []; - if(args.data.diskOfferingId != "") + var data = { + zoneid: args.context.networks[0].zoneid, + serviceofferingid: args.data.serviceOfferingId, + templateid: args.data.templateNames, + destroyvmgraceperiod: args.data.destroyVMgracePeriod, + snmpcommunity: args.data.snmpCommunity, + snmpport: args.data.snmpPort + }; + + if(args.data.username != null && args.data.username.length > 0) { + $.extend(data, { + autoscaleuserid: args.data.username + }); + } + + var array2 = []; + if(args.data.diskOfferingId != null && args.data.diskOfferingId.length > 0) array2.push("diskofferingid=" + args.data.diskOfferingId); - if(args.data.securityGroups != ""){ - if(array2.join("") != "") + if(args.data.securityGroups != null && args.data.securityGroups.length > 0){ + if(array2.length > 0) array2.push("&securitygroupids=" + args.data.securityGroups); else array2.push("securitygroupids=" + args.data.securityGroups); + } + if(array2.length > 0) { + $.extend(data, { + otherdeployparams: array2.join("") + }); } - array2 = array2.join(""); - if(array2 != "") - array1.push("&otherdeployparams=" + encodeURIComponent(array2)); - } - else { //from an existing LB - apiCmd = 'updateAutoScaleVmProfile'; - apiCmdRes = 'updateautoscalevmprofileresponse'; - - array1.push("&id=" + args.context.originalAutoscaleData.context.autoscaleVmProfile.id); - } - - //apply to both create and update - array1.push("&templateid=" + args.data.templateNames); - array1.push("&destroyvmgraceperiod=" + args.data.destroyVMgracePeriod); - array1.push("&snmpcommunity=" + args.data.snmpCommunity); - array1.push("&snmpport=" + args.data.snmpPort); - if(args.data.username != null && args.data.username.length > 0) - array1.push("&autoscaleuserid=" + args.data.username); - - $.ajax({ - url: createURL(apiCmd + array1.join("")), - dataType: 'json', - async: true, - success: function(json) { - var jobId = json[apiCmdRes].jobid; - var autoscaleVmProfileTimer = setInterval(function(){ - $.ajax({ - url: createURL("queryAsyncJobResult&jobId="+jobId), - dataType: "json", - success: function(json) { - var result = json.queryasyncjobresultresponse; - if (result.jobstatus == 0) { - return; //Job has not completed - } - else { - clearInterval(autoscaleVmProfileTimer); - if (result.jobstatus == 1) { - scaleVmProfileResponse = result.jobresult.autoscalevmprofile; - if(!('multiRules' in args.context)) { //from a new LB - loadBalancer(args); //create a load balancer rule + + $.ajax({ + url: createURL('createAutoScaleVmProfile'), + data: data, + success: function(json) { + var jobId = json.autoscalevmprofileresponse.jobid; + var autoscaleVmProfileTimer = setInterval(function(){ + $.ajax({ + url: createURL("queryAsyncJobResult&jobId="+jobId), + dataType: "json", + success: function(json) { + var result = json.queryasyncjobresultresponse; + if (result.jobstatus == 0) { + return; //Job has not completed + } + else { + clearInterval(autoscaleVmProfileTimer); + if (result.jobstatus == 1) { + scaleVmProfileResponse = result.jobresult.autoscalevmprofile; + loadBalancer(args); //create a load balancer rule } - else { //from an existing LB - autoScaleVmGroup(args); //update autoScaleVmGroup + else if (result.jobstatus == 2) { + args.response.error(_s(result.jobresult.errortext)); } - } - else if (result.jobstatus == 2) { - args.response.error(_s(result.jobresult.errortext)); - } - } - } - }); - }, 3000); - }, - error: function(XMLHttpResponse) { - args.response.error(parseXMLHttpResponse(XMLHttpResponse)); - } - }); + } + } + }); + }, 3000); + }, + error: function(XMLHttpResponse) { + args.response.error(parseXMLHttpResponse(XMLHttpResponse)); + } + }); + } + else { //from an existing LB + var data = { + id: args.context.originalAutoscaleData.context.autoscaleVmProfile.id, + templateid: args.data.templateNames, + destroyvmgraceperiod: args.data.destroyVMgracePeriod, + snmpcommunity: args.data.snmpCommunity, + snmpport: args.data.snmpPort + }; + + if(args.data.username != null && args.data.username.length > 0) { + $.extend(data, { + autoscaleuserid: args.data.username + }); + } + + $.ajax({ + url: createURL('updateAutoScaleVmProfile'), + data: data, + success: function(json) { + var jobId = json.updateautoscalevmprofileresponse.jobid; + var autoscaleVmProfileTimer = setInterval(function(){ + $.ajax({ + url: createURL("queryAsyncJobResult&jobId="+jobId), + dataType: "json", + success: function(json) { + var result = json.queryasyncjobresultresponse; + if (result.jobstatus == 0) { + return; //Job has not completed + } + else { + clearInterval(autoscaleVmProfileTimer); + if (result.jobstatus == 1) { + scaleVmProfileResponse = result.jobresult.autoscalevmprofile; + autoScaleVmGroup(args); //update autoScaleVmGroup + } + else if (result.jobstatus == 2) { + args.response.error(_s(result.jobresult.errortext)); + } + } + } + }); + }, 3000); + }, + error: function(XMLHttpResponse) { + args.response.error(parseXMLHttpResponse(XMLHttpResponse)); + } + }); + } }; var loadBalancer = function(args){ From 1532428ac383e0128a23ac2b73d85e2ab9e7f900 Mon Sep 17 00:00:00 2001 From: Brian Federle Date: Wed, 15 Aug 2012 10:13:49 -0700 Subject: [PATCH 17/31] VPC UI: Hide tier dropdown if viewing from tier detail view --- ui/scripts/vpc.js | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/ui/scripts/vpc.js b/ui/scripts/vpc.js index 66a5437654f..564d2f3d2b1 100644 --- a/ui/scripts/vpc.js +++ b/ui/scripts/vpc.js @@ -11,6 +11,16 @@ (function($, cloudStack) { var aclMultiEdit = { noSelect: true, + fieldPreFilter: function(args) { + var context = args.context; + var hiddenFields = []; + + if (context.networks) { // from tier detail view + hiddenFields.push('networkid'); + } + + return hiddenFields; // Returns fields to be hidden + }, fields: { 'cidrlist': { edit: true, label: 'label.cidr' }, 'protocol': { @@ -124,7 +134,8 @@ $.ajax({ url: createURL('createNetworkACL'), data: $.extend(args.data, { - networkid: args.data.networkid + networkid: args.context.networks ? + args.context.networks[0].id : args.data.networkid }), dataType: 'json', success: function(data) { From 2628382b4801a72c6dee46cfb849ddee754c880a Mon Sep 17 00:00:00 2001 From: Brian Federle Date: Wed, 15 Aug 2012 10:25:02 -0700 Subject: [PATCH 18/31] VPC UI: Fix IP details when no network is present --- ui/scripts/network.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ui/scripts/network.js b/ui/scripts/network.js index 803ea9ecb96..60b1ab0a2a3 100644 --- a/ui/scripts/network.js +++ b/ui/scripts/network.js @@ -1707,7 +1707,7 @@ args.response.success({ actionFilter: actionFilters.ipAddress, data: $.extend(ipObj, { - networkname: network.name + networkname: network ? network.name : '' }) }); }, From 3fd7b8eb6b1f2aff69f6149b74c3b8935b22a685 Mon Sep 17 00:00:00 2001 From: Jessica Wang Date: Wed, 15 Aug 2012 11:25:39 -0700 Subject: [PATCH 19/31] cloudstack 3.0 UI - IP Address page - detailView - Network Name is referring to name of associated network. --- ui/scripts/network.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/ui/scripts/network.js b/ui/scripts/network.js index 60b1ab0a2a3..f1d293ffa03 100644 --- a/ui/scripts/network.js +++ b/ui/scripts/network.js @@ -1662,11 +1662,11 @@ ipaddress: { label: 'IP' } }, { - id: { label: 'label.id' }, - networkname: { label: 'label.network.name' }, - networkid: { label: 'label.network.id' }, + id: { label: 'label.id' }, associatednetworkid: { label: 'label.associated.network.id' }, + networkname: { label: 'Associated Network' }, state: { label: 'label.state' }, + networkid: { label: 'label.network.id' }, issourcenat: { label: 'label.source.nat', converter: cloudStack.converters.toBooleanText }, isstaticnat: { label: 'label.static.nat', converter: cloudStack.converters.toBooleanText }, issystem: { label: 'label.is.system', converter: cloudStack.converters.toBooleanText }, //(basic zone only) From d3977220a34b6ab8d220f0298eb567fef48e9a4c Mon Sep 17 00:00:00 2001 From: Sheng Yang Date: Wed, 15 Aug 2012 10:44:29 -0700 Subject: [PATCH 20/31] S2S VPN: CS-15998: Fix wrong vpc id in Site2SiteVpnGatewayResponse --- .../com/cloud/api/response/Site2SiteVpnGatewayResponse.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/api/src/com/cloud/api/response/Site2SiteVpnGatewayResponse.java b/api/src/com/cloud/api/response/Site2SiteVpnGatewayResponse.java index 20a596a4af6..2c9d13b921f 100644 --- a/api/src/com/cloud/api/response/Site2SiteVpnGatewayResponse.java +++ b/api/src/com/cloud/api/response/Site2SiteVpnGatewayResponse.java @@ -28,7 +28,7 @@ public class Site2SiteVpnGatewayResponse extends BaseResponse implements Control private String ip; @SerializedName(ApiConstants.VPC_ID) @Param(description="the vpc id of this gateway") - private Long vpcId; + private IdentityProxy vpcId = new IdentityProxy("vpc"); @SerializedName(ApiConstants.ACCOUNT) @Param(description="the owner") private String accountName; @@ -57,7 +57,7 @@ public class Site2SiteVpnGatewayResponse extends BaseResponse implements Control } public void setVpcId(Long vpcId) { - this.vpcId = vpcId; + this.id.setValue(vpcId); } public void setRemoved(Date removed) { From 1f61216686a08c62f702ba0bee930bfd510a93c0 Mon Sep 17 00:00:00 2001 From: Sheng Yang Date: Wed, 15 Aug 2012 12:04:19 -0700 Subject: [PATCH 21/31] S2S VPN: Fix typo --- api/src/com/cloud/api/response/Site2SiteVpnGatewayResponse.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/api/src/com/cloud/api/response/Site2SiteVpnGatewayResponse.java b/api/src/com/cloud/api/response/Site2SiteVpnGatewayResponse.java index 2c9d13b921f..601bf2ce0e2 100644 --- a/api/src/com/cloud/api/response/Site2SiteVpnGatewayResponse.java +++ b/api/src/com/cloud/api/response/Site2SiteVpnGatewayResponse.java @@ -57,7 +57,7 @@ public class Site2SiteVpnGatewayResponse extends BaseResponse implements Control } public void setVpcId(Long vpcId) { - this.id.setValue(vpcId); + this.vpcId.setValue(vpcId); } public void setRemoved(Date removed) { From 3e0689fcf15a466a7c62d045a216b31314352932 Mon Sep 17 00:00:00 2001 From: anthony Date: Wed, 15 Aug 2012 12:34:42 -0700 Subject: [PATCH 22/31] bug 13734: allow dhcp traffic by default status 13734: resolved fixed --- scripts/vm/hypervisor/xenserver/vmops | 11 ++--------- 1 file changed, 2 insertions(+), 9 deletions(-) diff --git a/scripts/vm/hypervisor/xenserver/vmops b/scripts/vm/hypervisor/xenserver/vmops index d089e46b9f1..bf9077c390a 100755 --- a/scripts/vm/hypervisor/xenserver/vmops +++ b/scripts/vm/hypervisor/xenserver/vmops @@ -828,12 +828,7 @@ def default_network_rules(session, args): try: for v in vifs: util.pread2(['iptables', '-A', 'BRIDGE-FIREWALL', '-m', 'physdev', '--physdev-is-bridged', '--physdev-out', v, '-j', vmchain_default]) - util.pread2(['iptables', '-I', 'BRIDGE-FIREWALL', '2', '-m', 'physdev', '--physdev-is-bridged', '--physdev-in', v, '-j', vmchain_default]) - util.pread2(['iptables', '-A', vmchain_default, '-m', 'state', '--state', 'RELATED,ESTABLISHED', '-j', 'ACCEPT']) - #allow dhcp - for v in vifs: - util.pread2(['iptables', '-A', vmchain_default, '-m', 'physdev', '--physdev-is-bridged', '--physdev-in', v, '-p', 'udp', '--dport', '67', '--sport', '68', '-j', 'ACCEPT']) - util.pread2(['iptables', '-A', vmchain_default, '-m', 'physdev', '--physdev-is-bridged', '--physdev-out', v, '-p', 'udp', '--dport', '68', '--sport', '67', '-j', 'ACCEPT']) + util.pread2(['iptables', '-I', 'BRIDGE-FIREWALL', '4', '-m', 'physdev', '--physdev-is-bridged', '--physdev-in', v, '-j', vmchain_default]) #don't let vm spoof its ip address for v in vifs: @@ -841,8 +836,6 @@ def default_network_rules(session, args): util.pread2(['iptables', '-A', vmchain_default, '-m', 'physdev', '--physdev-is-bridged', '--physdev-in', v, '--source', '!', vm_ip, '-j', 'DROP']) util.pread2(['iptables', '-A', vmchain_default, '-m', 'physdev', '--physdev-is-bridged', '--physdev-out', v, '--destination', '!', vm_ip, '-j', 'DROP']) util.pread2(['iptables', '-A', vmchain_default, '-m', 'physdev', '--physdev-is-bridged', '--physdev-in', v, '--source', vm_ip, '-j', vmchain_egress]) - - for v in vifs: util.pread2(['iptables', '-A', vmchain_default, '-m', 'physdev', '--physdev-is-bridged', '--physdev-out', v, '-j', vmchain]) except: util.SMlog("Failed to program default rules for vm " + vm_name) @@ -939,7 +932,7 @@ def network_rules_for_rebooted_vm(session, vmName): for v in vifs: util.pread2(['iptables', '-A', 'BRIDGE-FIREWALL', '-m', 'physdev', '--physdev-is-bridged', '--physdev-out', v, '-j', vmchain_default]) - util.pread2(['iptables', '-I', 'BRIDGE-FIREWALL', '2', '-m', 'physdev', '--physdev-is-bridged', '--physdev-in', v, '-j', vmchain_default]) + util.pread2(['iptables', '-I', 'BRIDGE-FIREWALL', '4', '-m', 'physdev', '--physdev-is-bridged', '--physdev-in', v, '-j', vmchain_default]) #change antispoof rule in vmchain try: From ab13f0669ffa798792ab9fbf32845763802501b2 Mon Sep 17 00:00:00 2001 From: Jessica Wang Date: Wed, 15 Aug 2012 13:57:08 -0700 Subject: [PATCH 23/31] cloudstack 3.0 UI - VPN Customer Gateway - IKE DH field, Perfect Forward Secrecy field - change option description of to 'Group 2(modp1024)', 'Group 5(modp1536)'. --- ui/scripts/network.js | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/ui/scripts/network.js b/ui/scripts/network.js index f1d293ffa03..829a1946f0f 100644 --- a/ui/scripts/network.js +++ b/ui/scripts/network.js @@ -4062,8 +4062,8 @@ select: function(args) { var items = []; items.push({id: '', description: ''}); - items.push({id: 'modp1024', description: 'modp1024'}); - items.push({id: 'modp1536', description: 'modp1536'}); + items.push({id: 'modp1024', description: 'Group 2(modp1024)'}); + items.push({id: 'modp1536', description: 'Group 5(modp1536)'}); args.response.success({data: items}); } }, @@ -4094,8 +4094,8 @@ select: function(args) { var items = []; items.push({id: '', description: ''}); - items.push({id: 'modp1024', description: 'modp1024'}); - items.push({id: 'modp1536', description: 'modp1536'}); + items.push({id: 'modp1024', description: 'Group 2(modp1024)'}); + items.push({id: 'modp1536', description: 'Group 5(modp1536)'}); args.response.success({data: items}); } }, @@ -4318,8 +4318,8 @@ select: function(args) { var items = []; items.push({id: '', description: ''}); - items.push({id: 'modp1024', description: 'modp1024'}); - items.push({id: 'modp1536', description: 'modp1536'}); + items.push({id: 'modp1024', description: 'Group 2(modp1024)'}); + items.push({id: 'modp1536', description: 'Group 5(modp1536)'}); args.response.success({data: items}); } }, @@ -4353,8 +4353,8 @@ select: function(args) { var items = []; items.push({id: '', description: ''}); - items.push({id: 'modp1024', description: 'modp1024'}); - items.push({id: 'modp1536', description: 'modp1536'}); + items.push({id: 'modp1024', description: 'Group 2(modp1024)'}); + items.push({id: 'modp1536', description: 'Group 5(modp1536)'}); args.response.success({data: items}); } }, From ef5fa3897e9530b6bc9d3542394304d09f3fa760 Mon Sep 17 00:00:00 2001 From: Anthony Xu Date: Wed, 15 Aug 2012 14:15:48 -0700 Subject: [PATCH 24/31] typo fix --- .../com/cloud/agent/api/{ => routing}/SetSourceNatAnswer.java | 4 ++-- .../com/cloud/hypervisor/vmware/resource/VmwareResource.java | 2 +- .../com/cloud/hypervisor/xen/resource/CitrixResourceBase.java | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) rename api/src/com/cloud/agent/api/{ => routing}/SetSourceNatAnswer.java (92%) diff --git a/api/src/com/cloud/agent/api/SetSourceNatAnswer.java b/api/src/com/cloud/agent/api/routing/SetSourceNatAnswer.java similarity index 92% rename from api/src/com/cloud/agent/api/SetSourceNatAnswer.java rename to api/src/com/cloud/agent/api/routing/SetSourceNatAnswer.java index b8837e20aa0..bea44b73f7c 100644 --- a/api/src/com/cloud/agent/api/SetSourceNatAnswer.java +++ b/api/src/com/cloud/agent/api/routing/SetSourceNatAnswer.java @@ -10,9 +10,9 @@ // limitations under the License. // // Automatically generated by addcopyright.py at 04/03/2012 -package com.cloud.agent.api; +package com.cloud.agent.api.routing; -import com.cloud.agent.api.routing.SetSourceNatCommand; +import com.cloud.agent.api.Answer; /** * @author Alena Prokharchyk diff --git a/core/src/com/cloud/hypervisor/vmware/resource/VmwareResource.java b/core/src/com/cloud/hypervisor/vmware/resource/VmwareResource.java index 80458e13256..d2ba4d3d083 100755 --- a/core/src/com/cloud/hypervisor/vmware/resource/VmwareResource.java +++ b/core/src/com/cloud/hypervisor/vmware/resource/VmwareResource.java @@ -99,7 +99,6 @@ import com.cloud.agent.api.ReadyCommand; import com.cloud.agent.api.RebootAnswer; import com.cloud.agent.api.RebootCommand; import com.cloud.agent.api.RebootRouterCommand; -import com.cloud.agent.api.SetSourceNatAnswer; import com.cloud.agent.api.SetupAnswer; import com.cloud.agent.api.SetupCommand; import com.cloud.agent.api.SetupGuestNetworkAnswer; @@ -135,6 +134,7 @@ import com.cloud.agent.api.routing.SetNetworkACLCommand; import com.cloud.agent.api.routing.SetPortForwardingRulesAnswer; import com.cloud.agent.api.routing.SetPortForwardingRulesCommand; import com.cloud.agent.api.routing.SetPortForwardingRulesVpcCommand; +import com.cloud.agent.api.routing.SetSourceNatAnswer; import com.cloud.agent.api.routing.SetSourceNatCommand; import com.cloud.agent.api.routing.SetStaticNatRulesAnswer; import com.cloud.agent.api.routing.SetStaticNatRulesCommand; diff --git a/core/src/com/cloud/hypervisor/xen/resource/CitrixResourceBase.java b/core/src/com/cloud/hypervisor/xen/resource/CitrixResourceBase.java index db50d1ee1ae..e9c132e9957 100644 --- a/core/src/com/cloud/hypervisor/xen/resource/CitrixResourceBase.java +++ b/core/src/com/cloud/hypervisor/xen/resource/CitrixResourceBase.java @@ -118,7 +118,6 @@ import com.cloud.agent.api.RebootCommand; import com.cloud.agent.api.RebootRouterCommand; import com.cloud.agent.api.SecurityGroupRuleAnswer; import com.cloud.agent.api.SecurityGroupRulesCmd; -import com.cloud.agent.api.SetSourceNatAnswer; import com.cloud.agent.api.SetupAnswer; import com.cloud.agent.api.SetupCommand; import com.cloud.agent.api.SetupGuestNetworkAnswer; @@ -156,6 +155,7 @@ import com.cloud.agent.api.routing.SetNetworkACLCommand; import com.cloud.agent.api.routing.SetPortForwardingRulesAnswer; import com.cloud.agent.api.routing.SetPortForwardingRulesCommand; import com.cloud.agent.api.routing.SetPortForwardingRulesVpcCommand; +import com.cloud.agent.api.routing.SetSourceNatAnswer; import com.cloud.agent.api.routing.SetSourceNatCommand; import com.cloud.agent.api.routing.SetStaticNatRulesAnswer; import com.cloud.agent.api.routing.SetStaticNatRulesCommand; From 6ea6c662c77892a603e1d0400f41987f38270fa6 Mon Sep 17 00:00:00 2001 From: Jessica Wang Date: Wed, 15 Aug 2012 14:58:20 -0700 Subject: [PATCH 25/31] cloudstack 3.0 UI - Instances page - VM Wizard - select network step - VPC filter - list only VPCs belonging to the current login (i.e. If the current login is root-admin, do not show VPCs belonging to regular-user/domain-admin in Instances page's VM Wizard.) --- ui/scripts/instanceWizard.js | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/ui/scripts/instanceWizard.js b/ui/scripts/instanceWizard.js index f4e43adca29..0598fb6f39d 100644 --- a/ui/scripts/instanceWizard.js +++ b/ui/scripts/instanceWizard.js @@ -315,12 +315,10 @@ var networkObjs, vpcObjs; - // Get VPCs + //listVPCs without account/domainid/listAll parameter will return only VPCs belonging to the current login. That's what should happen in Instances page's VM Wizard. + //i.e. If the current login is root-admin, do not show VPCs belonging to regular-user/domain-admin in Instances page's VM Wizard. $.ajax({ - url: createURL('listVPCs'), - data: isDomainAdmin() ? - { account: args.context.users[0].account, domainid: args.context.users[0].domainid } : - { listAll: true }, + url: createURL('listVPCs'), async: false, success: function(json) { vpcObjs = json.listvpcsresponse.vpc ? json.listvpcsresponse.vpc : []; From 17941d9d649ed6f82cb5dadaf0b37fd9d9760904 Mon Sep 17 00:00:00 2001 From: Sheng Yang Date: Wed, 15 Aug 2012 15:04:40 -0700 Subject: [PATCH 26/31] Revert "bug 14484: Apply existed firewall rules when associating IP" This reverts commit d80b58fe1d41955f6f69f929375c07d40ddbf1e2. --- .../src/com/cloud/network/NetworkManagerImpl.java | 15 --------------- 1 file changed, 15 deletions(-) diff --git a/server/src/com/cloud/network/NetworkManagerImpl.java b/server/src/com/cloud/network/NetworkManagerImpl.java index 6ccfe9f226c..02b1086c72d 100755 --- a/server/src/com/cloud/network/NetworkManagerImpl.java +++ b/server/src/com/cloud/network/NetworkManagerImpl.java @@ -257,8 +257,6 @@ public class NetworkManagerImpl implements NetworkManager, NetworkService, Manag @Inject NicDao _nicDao = null; @Inject - FirewallRulesDao _fwRulesDao = null; - @Inject RulesManager _rulesMgr; @Inject LoadBalancingRulesManager _lbMgr; @@ -948,27 +946,14 @@ public class NetworkManagerImpl implements NetworkManager, NetworkService, Manag } else { throw new CloudRuntimeException("Fail to get ip deployer for element: " + element); } - //We would apply all the existed firewall rules for this IP, since the rule maybe discard by revoke PF/LB rules - List firewallRules = new ArrayList(); - boolean applyFirewallRules = false; - if (element instanceof FirewallServiceProvider && - isProviderSupportServiceInNetwork(network.getId(), Service.Firewall, provider)) { - applyFirewallRules = true; - } Set services = new HashSet(); for (PublicIp ip : ips) { if (!ipToServices.containsKey(ip)) { continue; } services.addAll(ipToServices.get(ip)); - if (applyFirewallRules) { - firewallRules.addAll(_fwRulesDao.listByIpAndPurpose(ip.getId(), Purpose.Firewall)); - } } deployer.applyIps(network, ips, services); - if (applyFirewallRules && !firewallRules.isEmpty()) { - ((FirewallServiceProvider) element).applyFWRules(network, firewallRules); - } } catch (ResourceUnavailableException e) { success = false; if (!continueOnError) { From eaddb44c8a05370fc4d1a571bb47b21ca5ccdf7c Mon Sep 17 00:00:00 2001 From: Sheng Yang Date: Wed, 15 Aug 2012 15:06:36 -0700 Subject: [PATCH 27/31] CS-14253: Apply IP when firewall rule is in place --- server/src/com/cloud/network/NetworkManagerImpl.java | 2 +- .../network/router/VirtualNetworkApplianceManagerImpl.java | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/server/src/com/cloud/network/NetworkManagerImpl.java b/server/src/com/cloud/network/NetworkManagerImpl.java index 02b1086c72d..a1784bc6e82 100755 --- a/server/src/com/cloud/network/NetworkManagerImpl.java +++ b/server/src/com/cloud/network/NetworkManagerImpl.java @@ -922,7 +922,7 @@ public class NetworkManagerImpl implements NetworkManager, NetworkService, Manag List publicIps) throws ResourceUnavailableException { boolean success = true; - Map> ipToServices = getIpToServices(publicIps, rulesRevoked, false); + Map> ipToServices = getIpToServices(publicIps, rulesRevoked, true); Map> providerToIpList = getProviderToIpList(network, ipToServices); for (Provider provider : providerToIpList.keySet()) { diff --git a/server/src/com/cloud/network/router/VirtualNetworkApplianceManagerImpl.java b/server/src/com/cloud/network/router/VirtualNetworkApplianceManagerImpl.java index bf57bc794ed..f332192275b 100755 --- a/server/src/com/cloud/network/router/VirtualNetworkApplianceManagerImpl.java +++ b/server/src/com/cloud/network/router/VirtualNetworkApplianceManagerImpl.java @@ -2234,7 +2234,7 @@ public class VirtualNetworkApplianceManagerImpl implements VirtualNetworkApplian // Get public Ips that should be handled by router Network network = _networkDao.findById(guestNetworkId); - Map> ipToServices = _networkMgr.getIpToServices(allPublicIps, false, false); + Map> ipToServices = _networkMgr.getIpToServices(allPublicIps, false, true); Map> providerToIpList = _networkMgr.getProviderToIpList(network, ipToServices); // Only cover virtual router for now, if ELB use it this need to be modified From 68c1fe0899698a2facb1bd48ab3bca3fd2bd3ec4 Mon Sep 17 00:00:00 2001 From: Prachi Damle Date: Wed, 15 Aug 2012 17:56:18 -0700 Subject: [PATCH 28/31] CS-16022: If host connection fails due to some DB error, host disconnect does not happen and mgmt_server_id is not removed. Making sure host disconnect is called. --- .../src/com/cloud/resource/ResourceManagerImpl.java | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/server/src/com/cloud/resource/ResourceManagerImpl.java b/server/src/com/cloud/resource/ResourceManagerImpl.java index cfc3a1dbbd5..255488a4b75 100755 --- a/server/src/com/cloud/resource/ResourceManagerImpl.java +++ b/server/src/com/cloud/resource/ResourceManagerImpl.java @@ -1720,7 +1720,16 @@ public class ResourceManagerImpl implements ResourceManager, ResourceService, Ma if (cmds != null) { resource.disconnected(); } - + if(host == null){ + if (cmds != null) { + StartupCommand firstCmd = cmds[0]; + host = findHostByGuid(firstCmd.getGuid()); + if (host == null) { + host = findHostByGuid(firstCmd.getGuidWithoutResource()); + } + } + } + if (host != null) { /* Change agent status to Alert */ _agentMgr.agentStatusTransitTo(host, Status.Event.AgentDisconnected, _nodeId); From 8683857c6c5d7dd25c2676494fc54faa0ae469ac Mon Sep 17 00:00:00 2001 From: anthony Date: Wed, 15 Aug 2012 19:50:07 -0700 Subject: [PATCH 29/31] in network_rules_for_rebooted_vm, if tap doesn't exist, don't setup rules for tap device --- scripts/vm/hypervisor/xenserver/vmops | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/scripts/vm/hypervisor/xenserver/vmops b/scripts/vm/hypervisor/xenserver/vmops index bf9077c390a..314284d77df 100755 --- a/scripts/vm/hypervisor/xenserver/vmops +++ b/scripts/vm/hypervisor/xenserver/vmops @@ -926,6 +926,7 @@ def network_rules_for_rebooted_vm(session, vmName): util.pread2(['ifconfig', tap]) vifs.append(tap) except: + tap = 'none' pass vmchain = chain_name(vm_name) vmchain_default = chain_name_def(vm_name) @@ -939,9 +940,13 @@ def network_rules_for_rebooted_vm(session, vmName): delcmd = "iptables-save | grep '\-A " + vmchain_default + "' | grep physdev-in | sed 's/-A/-D/'" delcmd2 = "iptables-save | grep '\-A " + vmchain_default + "' | grep physdev-out | sed 's/-A/-D/'" inscmd = "iptables-save | grep '\-A " + vmchain_default + "' | grep physdev-in | grep vif | sed -r 's/vif[0-9]+.0/" + vif + "/' " - inscmd2 = "iptables-save| grep '\-A " + vmchain_default + "' | grep physdev-in | grep tap | sed -r 's/tap[0-9]+.0/" + tap + "/' " inscmd3 = "iptables-save | grep '\-A " + vmchain_default + "' | grep physdev-out | grep vif | sed -r 's/vif[0-9]+.0/" + vif + "/' " - inscmd4 = "iptables-save| grep '\-A " + vmchain_default + "' | grep physdev-out | grep tap | sed -r 's/tap[0-9]+.0/" + tap + "/' " + if tap == 'none'; + inscmd2 = '' + inscmd4 = '' + else: + inscmd2 = "iptables-save| grep '\-A " + vmchain_default + "' | grep physdev-in | grep tap | sed -r 's/tap[0-9]+.0/" + tap + "/' " + inscmd4 = "iptables-save| grep '\-A " + vmchain_default + "' | grep physdev-out | grep tap | sed -r 's/tap[0-9]+.0/" + tap + "/' " ipts = [] for cmd in [delcmd, delcmd2, inscmd, inscmd2, inscmd3, inscmd4]: From 9dc685cefbd512778dc8043d6d83f5b115e420d2 Mon Sep 17 00:00:00 2001 From: kishan Date: Thu, 16 Aug 2012 12:15:14 +0530 Subject: [PATCH 30/31] bug CS-16027: fixed typo. regression due to 8683857c6c5d7dd25c2676494fc54faa0ae469ac status CS-16027: resolved fixed --- scripts/vm/hypervisor/xenserver/vmops | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/vm/hypervisor/xenserver/vmops b/scripts/vm/hypervisor/xenserver/vmops index 314284d77df..d9ea3945a91 100755 --- a/scripts/vm/hypervisor/xenserver/vmops +++ b/scripts/vm/hypervisor/xenserver/vmops @@ -941,7 +941,7 @@ def network_rules_for_rebooted_vm(session, vmName): delcmd2 = "iptables-save | grep '\-A " + vmchain_default + "' | grep physdev-out | sed 's/-A/-D/'" inscmd = "iptables-save | grep '\-A " + vmchain_default + "' | grep physdev-in | grep vif | sed -r 's/vif[0-9]+.0/" + vif + "/' " inscmd3 = "iptables-save | grep '\-A " + vmchain_default + "' | grep physdev-out | grep vif | sed -r 's/vif[0-9]+.0/" + vif + "/' " - if tap == 'none'; + if tap == 'none': inscmd2 = '' inscmd4 = '' else: From 718c281a8792425bcb8af6ff7a3a91042c2ccff9 Mon Sep 17 00:00:00 2001 From: Rohit Yadav Date: Tue, 14 Aug 2012 19:33:27 +0530 Subject: [PATCH 31/31] CS-15970: Fix Redundant Router status for master and backup routers Bug found when host is XenServer Fixes path from /root to /opt/cloud/bin for both XenServer and VMWare hosts Signed-off-by: Rohit Yadav Signed-off-by: unknown --- .../com/cloud/hypervisor/vmware/resource/VmwareResource.java | 2 +- patches/systemvm/debian/config/etc/init.d/cloud-early-config | 4 ++-- patches/systemvm/debian/config/opt/cloud/bin/ipassoc.sh | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/core/src/com/cloud/hypervisor/vmware/resource/VmwareResource.java b/core/src/com/cloud/hypervisor/vmware/resource/VmwareResource.java index d2ba4d3d083..4d612b18e3e 100755 --- a/core/src/com/cloud/hypervisor/vmware/resource/VmwareResource.java +++ b/core/src/com/cloud/hypervisor/vmware/resource/VmwareResource.java @@ -1880,7 +1880,7 @@ public class VmwareResource implements StoragePoolResource, ServerResource, Vmwa VmwareManager mgr = getServiceContext().getStockObject(VmwareManager.CONTEXT_STOCK_NAME); String controlIp = getRouterSshControlIp(cmd); result = SshHelper.sshExecute(controlIp, DEFAULT_DOMR_SSHPORT, "root", mgr.getSystemVMKeyFile(), null, - "/root/checkrouter.sh "); + "/opt/cloud/bin/checkrouter.sh "); if (!result.first()) { s_logger.error("check router command on domR " + cmd.getAccessDetail(NetworkElementCommand.ROUTER_IP) + " failed, message: " + result.second()); diff --git a/patches/systemvm/debian/config/etc/init.d/cloud-early-config b/patches/systemvm/debian/config/etc/init.d/cloud-early-config index 0adcef37c89..a5ef37c5eac 100755 --- a/patches/systemvm/debian/config/etc/init.d/cloud-early-config +++ b/patches/systemvm/debian/config/etc/init.d/cloud-early-config @@ -452,7 +452,7 @@ setup_redundant_router() { cp /root/redundant_router/arping_gateways.sh.templ $rrouter_bin_path/arping_gateways.sh cp /root/redundant_router/check_bumpup.sh $rrouter_bin_path/ cp /root/redundant_router/disable_pubip.sh $rrouter_bin_path/ - cp /root/redundant_router/checkrouter.sh.templ /root/checkrouter.sh + cp /root/redundant_router/checkrouter.sh.templ /opt/cloud/bin/checkrouter.sh sed -i "s/\[ROUTER_ID\]/$NAME/g" /etc/keepalived/keepalived.conf sed -i "s/\[ROUTER_IP\]/$GUEST_GW\/$GUEST_CIDR_SIZE/g" /etc/keepalived/keepalived.conf sed -i "s/\[BOARDCAST\]/$GUEST_BRD/g" /etc/keepalived/keepalived.conf @@ -479,7 +479,7 @@ setup_redundant_router() { sed -i "s/\[RROUTER_LOG\]/$rrouter_log_str/g" $rrouter_bin_path/primary-backup.sh sed -i "s/\[RROUTER_LOG\]/$rrouter_log_str/g" $rrouter_bin_path/check_heartbeat.sh sed -i "s/\[RROUTER_LOG\]/$rrouter_log_str/g" $rrouter_bin_path/arping_gateways.sh - sed -i "s/\[RROUTER_LOG\]/$rrouter_log_str/g" /root/checkrouter.sh + sed -i "s/\[RROUTER_LOG\]/$rrouter_log_str/g" /opt/cloud/bin/checkrouter.sh chmod a+x $rrouter_bin_path/*.sh sed -i "s/--exec\ \$DAEMON;/--exec\ \$DAEMON\ --\ --vrrp;/g" /etc/init.d/keepalived diff --git a/patches/systemvm/debian/config/opt/cloud/bin/ipassoc.sh b/patches/systemvm/debian/config/opt/cloud/bin/ipassoc.sh index 61c729d105d..5ec95526dcd 100755 --- a/patches/systemvm/debian/config/opt/cloud/bin/ipassoc.sh +++ b/patches/systemvm/debian/config/opt/cloud/bin/ipassoc.sh @@ -313,7 +313,7 @@ grep "redundant_router=1" /var/cache/cloud/cmdline > /dev/null if [ $? -eq 0 ] then is_redundant=1 - sudo /root/checkrouter.sh --no-lock|grep "Status: MASTER" > /dev/null 2>&1 + sudo /opt/cloud/bin/checkrouter.sh --no-lock|grep "Status: MASTER" > /dev/null 2>&1 if [ $? -eq 0 ] then is_master=1