HP Logiciel HP Matrix Operating Environment Manuel d'utilisation

Page 214

Advertising
background image

fonctions

requêtes

règles

L'ordre dans lequel ces éléments sont déclarés n'est pas important, sauf le nom du package. S'il
est déclaré, le nom du package doit être le premier élément du fichier de règles.
Exemple : Règles permettant de vérifier le critère de mémoire du serveur

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 ----------------------*/

214

Processus d'allocation personnalisable

Advertising