HP Software HP Matrix Operating Environment Manual del usuario

Página 232

Advertising
background image

funciones

consultas

reglas

El orden en que se declaran los elementos no es importante, excepto el nombre del paquete. Si
se declara, el nombre del paquete debe ser el primer elemento del archivo de reglas.
Ejemplo: regla para comprobar los criterios de memoria del servidor

package com.hp.hpio.controller.policy;

import java.util.List;
import java.lang.Integer;

import com.hp._2007.ess.sw.model.infrastructureutilityschema.LogicalServer;
import com.hp._2007.ess.sw.model.infrastructureutilityschema.ComputeServer;

import com.hp.hpio.controller.wrapper.LogicalServerWrapper;

import com.hp.hpio.common.messages.HPIOBundleKey;
import com.hp.hpio.common.messages.HPIOMessage;

dialect "java" // Since we are using Java syntax with drools

/*
* INIT should be the first rule in a drl file which inserts service
* entity, resource list and result map into working memory by reading
* from PolicyExecutionVO passed to rule engine.
*
*/

/* DO NOT MODIFY */
rule "INIT"
salience 1000
when
pVO : PolicyExecutionVO();
then
insert(pVO.getAllocationEntry().getServiceEntity());
insert(pVO.getResultMap());
insert(pVO.getResourceList());
end

/*
* Rule to check memory criteria for a given service entity
* (LogicalServer) compared to list of physical resources available
* (ComputeServer)
*
*/

rule "MemorySizeCriteria"

when

$pVO : PolicyExecutionVO( );
$resLst : List();

$logicalServer : LogicalServer();
$computeServer : ComputeServer() from $resLst;

eval(memorySizeCriteria($logicalServer, $computeServer, $pVO));

then

$pVO.match($computeServer, HPIOMessage.get(HPIOBundleKey.ALLOCATION_CRITERIA_MEMORY));

end

function boolean memorySizeCriteria(
LogicalServer logicalServer,
ComputeServer computeServer,
PolicyExecutionVO pVO) {

pVO.doesNotMatch(computeServer,HPIOMessage.get(HPIOBundleKey.ALLOCATION_CRITERIA_MEMORY));

/* -------------- CUSTOM LOGIC ----------------------*/
Integer logicalMemorySizeMB = LogicalServerWrapper.getMemorySizeMi(logicalServer);

if (computeServer.getMemoryConsumedMB() == null) {
computeServer.setMemoryConsumedMB(0);
}
Integer resourceMemorySizeMB = computeServer.getMemorySizeMB() - computeServer.getMemoryConsumedMB();

if(logicalMemorySizeMB.doubleValue() <= resourceMemorySizeMB.doubleValue()){
return true;
}else{
return false;
}
/* -------------- CUSTOM LOGIC ----------------------*/

232 Proceso de asignación personalizable

Advertising