Return-Path: X-Original-To: apmail-incubator-cloudstack-dev-archive@minotaur.apache.org Delivered-To: apmail-incubator-cloudstack-dev-archive@minotaur.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id 2538CEACB for ; Thu, 14 Mar 2013 12:36:44 +0000 (UTC) Received: (qmail 39891 invoked by uid 500); 14 Mar 2013 12:36:43 -0000 Delivered-To: apmail-incubator-cloudstack-dev-archive@incubator.apache.org Received: (qmail 39740 invoked by uid 500); 14 Mar 2013 12:36:43 -0000 Mailing-List: contact cloudstack-dev-help@incubator.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: cloudstack-dev@incubator.apache.org Delivered-To: mailing list cloudstack-dev@incubator.apache.org Received: (qmail 39725 invoked by uid 99); 14 Mar 2013 12:36:43 -0000 Received: from reviews-vm.apache.org (HELO reviews.apache.org) (140.211.11.40) by apache.org (qpsmtpd/0.29) with ESMTP; Thu, 14 Mar 2013 12:36:43 +0000 Received: from reviews.apache.org (localhost [127.0.0.1]) by reviews.apache.org (Postfix) with ESMTP id 1D2AA1C1976; Thu, 14 Mar 2013 12:36:43 +0000 (UTC) Content-Type: multipart/alternative; boundary="===============5014492632502366600==" MIME-Version: 1.0 Subject: Re: Review Request: AWS Style HealthCheck feature BugID : 664 From: "Rajesh Battala" To: "Vijay Venkatachalam" Cc: "Rajesh Battala" , "cloudstack" , "Chiradeep Vittal" Date: Thu, 14 Mar 2013 12:36:43 -0000 Message-ID: <20130314123643.1180.85446@reviews.apache.org> X-ReviewBoard-URL: https://reviews.apache.org Auto-Submitted: auto-generated Sender: "Rajesh Battala" X-ReviewGroup: cloudstack X-ReviewRequest-URL: https://reviews.apache.org/r/9165/ X-Sender: "Rajesh Battala" References: <20130313094921.1181.71580@reviews.apache.org> In-Reply-To: <20130313094921.1181.71580@reviews.apache.org> Reply-To: "Rajesh Battala" --===============5014492632502366600== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable ----------------------------------------------------------- This is an automatically generated e-mail. To reply, visit: https://reviews.apache.org/r/9165/ ----------------------------------------------------------- (Updated March 14, 2013, 12:36 p.m.) Review request for cloudstack and Vijay Venkatachalam. Changes ------- Rebased with latest master and modified according to the review comments Description ------- Code Review for AWS Style Health Check Feature : Added API commands : 1. createLBHealthCheck 2. deleteLBHealthCheck 3. listLBHealthCheck load_balancer_healthcheck_policies table will hold the data for healthcheck= polices. = commands will take the lbrule id as mandatory param and execute the action. 1. createLBHealthCheck : =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D LB ruleid is the mandatory param to the api. Remaining params (pingpath= , responstime, request Healthcheck_interval, Healthy_thresshold, Unhealth_t= hresshold) have default values. if not specified in the command. It will create monitor (tcp/http) depending upon the LB protocol. after creating the LB Monitor, it will bind the monitor to all the servic= es present in the LB rule. NetScaler will take care of monitoring according to the monitor params. Monitor name will be (Cloud-Hc--) Initially only one monitor is supported for an LB rule. if createLBHealthCheck returns an error, it will cleanup the entry created= in db. = 2. deleteLBHealthCheck: =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D LB ruleid is the mandatory param to the api. the command will first unbind all the services attached to it and then t= he monitor will be deleted. DB entry in load_balancer_healthcheck_policies will be deleted. 3. listLBHealthChecks: =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D LB ruleid is the mandatory param to the api. this command will list LB HealthChecks created on the LB rule. LBHealthCheckManager: =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D A new field is introduce in the table load_balancer_vm_map (state of string= type) The task of the LBHealthCheckManager is at every period of time, it will fe= tch the service status of LB rules and update them in the load_balancer_vm_= map. The time interval fo the LBHealthManager can be configured from Global Sett= ings(healthcheck.update.interval). default value is 600 sec. = possible values UP, DOWN, UNKNOWN, BUSY, OUT OF SERVICE, GOING OUT OF SERVI= CE, DOWN WHEN GOING OUT OF SERVICE This addresses bug https://issues.apache.org/jira/browse/CLOUDSTACK-664. Diffs (updated) ----- api/src/com/cloud/agent/api/routing/HealthCheckLBConfigAnswer.java PRE-CR= EATION = api/src/com/cloud/agent/api/routing/HealthCheckLBConfigCommand.java PRE-C= REATION = api/src/com/cloud/agent/api/to/LoadBalancerTO.java 2d166ea = api/src/com/cloud/event/EventTypes.java 0087edc = api/src/com/cloud/network/Network.java efed5cd = api/src/com/cloud/network/element/LoadBalancingServiceProvider.java 879ea= 0e = api/src/com/cloud/network/lb/LoadBalancingRule.java fb1d988 = api/src/com/cloud/network/lb/LoadBalancingRulesService.java 3743aae = api/src/com/cloud/network/rules/HealthCheckPolicy.java PRE-CREATION = api/src/org/apache/cloudstack/api/ApiConstants.java b40b26c = api/src/org/apache/cloudstack/api/ResponseGenerator.java a602514 = api/src/org/apache/cloudstack/api/command/user/loadbalancer/CreateLBHealt= hCheckPolicyCmd.java PRE-CREATION = api/src/org/apache/cloudstack/api/command/user/loadbalancer/DeleteLBHealt= hCheckPolicyCmd.java PRE-CREATION = api/src/org/apache/cloudstack/api/command/user/loadbalancer/ListLBHealthC= heckPoliciesCmd.java PRE-CREATION = api/src/org/apache/cloudstack/api/response/LBHealthCheckPolicyResponse.ja= va PRE-CREATION = api/src/org/apache/cloudstack/api/response/LBHealthCheckResponse.java PRE= -CREATION = client/tomcatconf/commands.properties.in 5018236 = plugins/network-elements/dns-notifier/resources/components-example.xml 36= 441bd = plugins/network-elements/elastic-loadbalancer/src/com/cloud/network/eleme= nt/ElasticLoadBalancerElement.java abb36c3 = plugins/network-elements/elastic-loadbalancer/src/com/cloud/network/lb/El= asticLoadBalancerManagerImpl.java 81039d1 = plugins/network-elements/f5/src/com/cloud/network/element/F5ExternalLoadB= alancerElement.java 94c098e = plugins/network-elements/netscaler/src/com/cloud/network/element/Netscale= rElement.java c1c735a = plugins/network-elements/netscaler/src/com/cloud/network/resource/Netscal= erResource.java abea464 = server/src/com/cloud/api/ApiResponseHelper.java 2546f29 = server/src/com/cloud/configuration/Config.java 64465a2 = server/src/com/cloud/network/ExternalLoadBalancerDeviceManager.java d979f= 07 = server/src/com/cloud/network/ExternalLoadBalancerDeviceManagerImpl.java d= 7b6d78 = server/src/com/cloud/network/LBHealthCheckPolicyVO.java PRE-CREATION = server/src/com/cloud/network/NetworkManagerImpl.java 3220c91 = server/src/com/cloud/network/dao/LBHealthCheckPolicyDao.java PRE-CREATION = server/src/com/cloud/network/dao/LBHealthCheckPolicyDaoImpl.java PRE-CREA= TION = server/src/com/cloud/network/dao/LoadBalancerVMMapVO.java 8856993 = server/src/com/cloud/network/element/VirtualRouterElement.java 500d0b6 = server/src/com/cloud/network/lb/LBHealthCheckManager.java PRE-CREATION = server/src/com/cloud/network/lb/LBHealthCheckManagerImpl.java PRE-CREATIO= N = server/src/com/cloud/network/lb/LoadBalancingRulesManager.java 9d7d22f = server/src/com/cloud/network/lb/LoadBalancingRulesManagerImpl.java 531a42= 8 = server/src/com/cloud/network/router/VirtualNetworkApplianceManagerImpl.ja= va 3cbd51d = server/src/com/cloud/server/ManagementServerImpl.java d70c45f = setup/db/db/schema-410to420.sql ca15bda = Diff: https://reviews.apache.org/r/9165/diff/ Testing ------- Testing Done: =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D 1. create LB rule of TCP protocol and assing instances, create lb healthche= ck on lb rule. A TCP monitor is created and it will binded to all the servi= ces. 2. create LB rule of HTTP protocol and assing instances, create lb healthch= eck on lb rule. HTTP monitor is created and it will binded to all the servi= ces. 3. create LB rule of HTTP protocol and assing instances, create lb healthch= eck on lb rule with pingpath and other params, HTTP monitor is created and = it will binded to all the services and its properties pingpath value will b= e present. 4.for an existing LB with an Monitor, add a new service to LB, monitor will= be binded to the newly added service. 5.for an existing LB with an Monitor, delete a service from LB, monitor wil= l be unbinded and service will be removed. 6.delete an monitor for LB rule, all the service binded to the monitor will= be unbinded and monitor will get removed. 7.delete LB rule, lb vserver will be deleted and the monitor will be delete= d. = 8. list the LB rules giving the lb rule id, healtcheckpolicy created on the= LB rule will be returned. if not it will return empty list 9.Modify the healthcheck.update.interval to 1 min, at every one minute LBHe= althCheckManager will be updating the service state from the Netscaler. Thanks, Rajesh Battala --===============5014492632502366600==--