-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
https://reviews.apache.org/r/9165/
-----------------------------------------------------------
(Updated March 1, 2013, 9:07 a.m.)
Review request for cloudstack and Vijay Venkatachalam.
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 0087edc
api/src/com/cloud/network/element/LoadBalancingServiceProvider.java 879ea0e
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 a26b468
api/src/org/apache/cloudstack/api/ResponseGenerator.java 267238a
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 f03e8d5
client/tomcatconf/components.xml.in 7d86a1c
plugins/network-elements/elastic-loadbalancer/src/com/cloud/network/element/ElasticLoadBalancerElement.java
abb36c3
plugins/network-elements/elastic-loadbalancer/src/com/cloud/network/lb/ElasticLoadBalancerManagerImpl.java
81039d1
plugins/network-elements/f5/src/com/cloud/network/element/F5ExternalLoadBalancerElement.java
94c098e
plugins/network-elements/netscaler/src/com/cloud/network/element/NetscalerElement.java
8f902df
plugins/network-elements/netscaler/src/com/cloud/network/resource/NetscalerResource.java
abea464
server/src/com/cloud/api/ApiResponseHelper.java eafee8a
server/src/com/cloud/configuration/Config.java 8a75a96
server/src/com/cloud/network/ExternalLoadBalancerDeviceManager.java d979f07
server/src/com/cloud/network/ExternalLoadBalancerDeviceManagerImpl.java
bcefccc
server/src/com/cloud/network/LBHealthCheckPolicyVO.java PRE-CREATION
server/src/com/cloud/network/NetworkManagerImpl.java f527b73
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/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-CREATION
server/src/com/cloud/network/lb/LoadBalancingRulesManager.java 9d7d22f
server/src/com/cloud/network/lb/LoadBalancingRulesManagerImpl.java 531a428
server/src/com/cloud/network/router/VirtualNetworkApplianceManagerImpl.java
0e2eb63
server/src/com/cloud/server/ManagementServerImpl.java e80d48c
setup/db/db/schema-410to420.sql 4349bd0
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