-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
https://reviews.apache.org/r/9165/
-----------------------------------------------------------

Review request for cloudstack.


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 :
========================
   LB ruleid is the mandatory param to the api.  Remaining params (pingpath, 
responstime, request Healthcheck_interval, Healthy_thresshold, 
Unhealth_thresshold) 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 services 
present in the LB rule.
  NetScaler will take care of monitoring according to the monitor params.
  Monitor name will be (Cloud-Mon-<LB IP>-<port>)

 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:
========================
   LB ruleid is the mandatory param to the api.
   the command will first unbind all the services attached to it and then the 
monitor will be deleted.
   DB entry in load_balancer_healthcheck_policies will be deleted.

3. listLBHealthChecks:
======================
    LB ruleid is the mandatory param to the api.
        this command will list LB HealthChecks created on the LB rule.

LBHealthCheckManager:
=====================
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 fetch 
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 
Settings(healthcheck.update.interval). default value is 600 sec.  
possible values UP, DOWN, UNKNOWN, BUSY, OUT OF SERVICE, GOING OUT OF SERVICE, 
DOWN WHEN GOING OUT OF SERVICE


This addresses bug https://issues.apache.org/jira/browse/CLOUDSTACK-664.


Diffs
-----

  api/src/com/cloud/agent/api/routing/HealthCheckLBConfigAnswer.java 
PRE-CREATION 
  api/src/com/cloud/agent/api/routing/HealthCheckLBConfigCommand.java 
PRE-CREATION 
  api/src/com/cloud/agent/api/to/LoadBalancerTO.java 2d166ea 
  api/src/com/cloud/event/EventTypes.java 63b7cd0 
  api/src/com/cloud/network/element/LoadBalancingServiceProvider.java 879ea0e 
  api/src/com/cloud/network/lb/LBRulesHealthMonitorService.java PRE-CREATION 
  api/src/com/cloud/network/lb/LoadBalancingRule.java b68b9cb 
  api/src/com/cloud/network/lb/LoadBalancingRulesService.java 4081f6e 
  api/src/com/cloud/network/rules/HealthCheckPolicy.java PRE-CREATION 
  api/src/org/apache/cloudstack/api/ApiConstants.java d084271 
  api/src/org/apache/cloudstack/api/ResponseGenerator.java 63df4dc 
  
api/src/org/apache/cloudstack/api/command/user/loadbalancer/CreateLBHealthCheckPolicyCmd.java
 PRE-CREATION 
  
api/src/org/apache/cloudstack/api/command/user/loadbalancer/DeleteLBHealthCheckPolicyCmd.java
 PRE-CREATION 
  
api/src/org/apache/cloudstack/api/command/user/loadbalancer/ListLBHealthCheckPoliciesCmd.java
 PRE-CREATION 
  api/src/org/apache/cloudstack/api/response/LBHealthCheckPolicyResponse.java 
PRE-CREATION 
  api/src/org/apache/cloudstack/api/response/LBHealthCheckResponse.java 
PRE-CREATION 
  client/tomcatconf/commands.properties.in 3740fb0 
  client/tomcatconf/components-nonoss.xml.in fbfc5cc 
  client/tomcatconf/components.xml.in c41d4f4 
  
plugins/network-elements/elastic-loadbalancer/src/com/cloud/network/element/ElasticLoadBalancerElement.java
 201b397 
  
plugins/network-elements/elastic-loadbalancer/src/com/cloud/network/lb/ElasticLoadBalancerManagerImpl.java
 82c6120 
  
plugins/network-elements/f5/src/com/cloud/network/element/F5ExternalLoadBalancerElement.java
 2e6f6e7 
  
plugins/network-elements/netscaler/src/com/cloud/network/element/NetscalerElement.java
 c2dc1e0 
  
plugins/network-elements/netscaler/src/com/cloud/network/resource/NetscalerResource.java
 ca8c8a7 
  server/src/com/cloud/api/ApiResponseHelper.java 1c8849a 
  server/src/com/cloud/configuration/Config.java 5e4996b 
  server/src/com/cloud/configuration/DefaultComponentLibrary.java 98da7ad 
  server/src/com/cloud/network/ExternalLoadBalancerDeviceManager.java 5e7b98a 
  server/src/com/cloud/network/ExternalLoadBalancerDeviceManagerImpl.java 
275401c 
  server/src/com/cloud/network/LBHealthCheckPolicyVO.java PRE-CREATION 
  server/src/com/cloud/network/LoadBalancerVMMapVO.java 3cc66dc 
  server/src/com/cloud/network/NetworkManager.java 546f1bf 
  server/src/com/cloud/network/NetworkManagerImpl.java bb60dcf 
  server/src/com/cloud/network/dao/LBHealthCheckPolicyDao.java PRE-CREATION 
  server/src/com/cloud/network/dao/LBHealthCheckPolicyDaoImpl.java PRE-CREATION 
  server/src/com/cloud/network/element/VirtualRouterElement.java 2b54ae0 
  server/src/com/cloud/network/lb/LBHealthCheckManager.java PRE-CREATION 
  server/src/com/cloud/network/lb/LBHealthCheckManagerImpl.java PRE-CREATION 
  server/src/com/cloud/network/lb/LoadBalancingRulesManager.java c9b3f93 
  server/src/com/cloud/network/lb/LoadBalancingRulesManagerImpl.java dfd5232 
  server/src/com/cloud/network/router/VirtualNetworkApplianceManagerImpl.java 
e1c78e1 
  server/src/com/cloud/server/ConfigurationServerImpl.java b0abd04 
  setup/db/create-schema.sql ead98a5 
  setup/db/db/schema-40to410.sql ed4946e 

Diff: https://reviews.apache.org/r/9165/diff/


Testing
-------

Testing Done:
=============

1. create LB rule of TCP protocol and assing instances, create lb healthcheck 
on lb rule. A TCP monitor is created and it will binded to all the services.
2. create LB rule of HTTP protocol and assing instances, create lb healthcheck 
on lb rule. HTTP monitor is created and it will binded to all the services.
3. create LB rule of HTTP protocol and assing instances, create lb healthcheck 
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 be 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 will 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 deleted. 
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 
LBHealthCheckManager will be updating the service state from the Netscaler.


Thanks,

Rajesh Battala

Reply via email to