Here's the correct rule file as of now. I'll be keep adding other functions.

global java.util.Map partitionCtxts;
global java.lang.String clusterId;

import function
org.apache.stratos.autoscaler.rule.AutoscalerRuleEvaluator.delegateSpawn;
import function
org.apache.stratos.autoscaler.rule.AutoscalerRuleEvaluator.delegateTerminate;

rule "Minimum Rule"
dialect "mvel"
       when
           $ctxt : PartitionContext ()
           eval($ctxt.getCurrentMemberCount() <
$ctxt.getMinimumMemberCount())

       then
           memberContext = delegateSpawn($ctxt.getPartition(),clusterId);
           if(memberContext != null) {
                $ctxt.addPendingMember(memberContext);
           }

end

rule "Terminate Obsoleted Instances"
dialect "mvel"
        when
            $ctxt : PartitionContext ()
            eval($ctxt.getObsoletedMembers().size() > 0)
            memberId : String() from $ctxt.getObsoletedMembers()
            eval($ctxt.removeObsoleteMember(memberId))
        then
            delegateTerminate(memberId);
end




On Tue, Dec 3, 2013 at 9:06 AM, Nirmal Fernando <[email protected]>wrote:

>
>
>
> On Tue, Dec 3, 2013 at 8:13 AM, Lahiru Sandaruwan <[email protected]>wrote:
>
>> Thanks Nirmal and Udara.
>>
>> Just found "minimum-autoscaler-rule.drl" at tests of autoscaler
>> component.
>>
>> It seems this rule([1]) is run against a partition. IMO we should run it
>> against a cluster since rules can be run in loops efficiently as follows,
>>
>
> That doesn't scale, that's the whole point of the refactoring effort I've
> put, last few days.
>
> The idea is, cluster monitor monitors all of its partitions and make sure
> that the minimum instances of that Partition is there, all the time. This
> job is an independent one from partition to partition, hence the idea is to
> run this minimum check parallel. If you embed this in a for loop inside the
> rule, it's sequential processing.
>
>>
>> rule "Minimum Rule"
>> dialect "mvel"
>>     when
>>
>>         $deploymentPolicy : $cluster.getDeploymentPolicy()
>>         $partitionGroup : PartitionGroup () from
>>  $deploymentPolicy.getPartitionGroups()
>>         $partition : Partition () from $partitionGroup.getPartitions()
>>         eval($clusterContext.getMemberCount($partition.getId()) <
>> $partition.getPartitionMembersMin())
>>
>>        then
>>         int memberCountToBeIncreased = 1 ;
>>        if(AutoscalerRuleEvaluator.delegateSpawn($ctxt.getPartition()
>> ,$clusterId)){
>>     $ctxt.incrementCurrentMemberCount(memberCountToBeIncreased);
>>        }
>>
>> end
>>
>> Thanks.
>>
>> [1]
>> rule "Minimum Rule"
>> dialect "mvel"
>>        when
>>        $ctxt : PartitionContext ()
>>        eval($ctxt.getCurrentMemberCount() <
>> $ctxt.getMinimumMemberCount())
>>
>>        then
>>        int memberCountToBeIncreased = 1 ;
>>        if(AutoscalerRuleEvaluator.delegateSpawn($ctxt.getPartition()
>> ,$clusterId)){
>>    $ctxt.incrementCurrentMemberCount(memberCountToBeIncreased);
>>        }
>>
>> end
>>
>>
>> On Tue, Dec 3, 2013 at 7:29 AM, Udara Liyanage <[email protected]> wrote:
>>
>>> The min rule file us updated as I can remember. It is not the one you
>>> have specified in the mail. Not sure updated rule file is added to the
>>> product or not.
>>>
>>> Touched, not typed. Erroneous words are a feature, not a typo.
>>> On Dec 2, 2013 11:42 PM, "Lahiru Sandaruwan" <[email protected]> wrote:
>>>
>>>>
>>>>
>>>>
>>>> On Mon, Dec 2, 2013 at 11:35 PM, Lahiru Sandaruwan <[email protected]>wrote:
>>>>
>>>>> Nirmal,
>>>>>
>>>>> In minimum rule, it runs against all the clusters[1]. But in
>>>>> ClusterMonitor thread is run per cluster which is correct.
>>>>>
>>>>> Didn't you update "Minimum Rule" in the rules file, or is it a
>>>>> separate rules file that you have used?
>>>>>
>>>>>
>>>> I meant whether you have used a different Rules file at deployment time
>>>> of the Stratos, which is different to default one in the
>>>> products/autoscaler at [1].
>>>>
>>>> Thanks.
>>>>
>>>>
>>>>
>>>>>
>>>>> [1]
>>>>>
>>>>> rule "Minimum Rule"
>>>>> dialect "mvel"
>>>>>        when
>>>>>        $service : Service ()
>>>>>        $cluster : Cluster () from  $service.getClusters()
>>>>>        $deploymentPolicy : DeploymentPolicy(id ==
>>>>> $cluster.getDeploymentPolicyName() ) from 
>>>>> $manager.getDeploymentPolicyList()
>>>>>        $partitionGroup : PartitionGroup () from
>>>>>  $deploymentPolicy.getPartitionGroups()
>>>>>        $partition : Partition () from $partitionGroup.getPartitions()
>>>>>        $clusterContext : ClusterContext() from
>>>>> $context.getClusterContext($cluster.getClusterId())
>>>>>        eval($clusterContext.getMemberCount($partition.getId()) <
>>>>> $partition.getPartitionMembersMin())
>>>>>
>>>>>
>>>>>        then
>>>>>        int memberCountToBeIncreased =
>>>>> $partition.getPartitionMembersMin() -
>>>>> $clusterContext.getMemberCount($partition.getId());
>>>>>
>>>>> if($evaluator.delegateSpawn($partition,$cluster.getClusterId(),
>>>>> memberCountToBeIncreased)){
>>>>>
>>>>> $clusterContext.increaseMemberCountInPartitionBy($partition.getId(),
>>>>> memberCountToBeIncreased);
>>>>>        }
>>>>> end
>>>>> --
>>>>> --
>>>>> Lahiru Sandaruwan
>>>>> Software Engineer,
>>>>> Platform Technologies,
>>>>> WSO2 Inc., http://wso2.com
>>>>> lean.enterprise.middleware
>>>>>
>>>>> email: [email protected] cell: (+94) 773 325 954
>>>>> blog: http://lahiruwrites.blogspot.com/
>>>>> twitter: http://twitter.com/lahirus
>>>>> linked-in: http://lk.linkedin.com/pub/lahiru-sandaruwan/16/153/146
>>>>>
>>>>>
>>>>
>>>>
>>>> --
>>>> --
>>>> Lahiru Sandaruwan
>>>> Software Engineer,
>>>> Platform Technologies,
>>>> WSO2 Inc., http://wso2.com
>>>> lean.enterprise.middleware
>>>>
>>>> email: [email protected] cell: (+94) 773 325 954
>>>> blog: http://lahiruwrites.blogspot.com/
>>>> twitter: http://twitter.com/lahirus
>>>> linked-in: http://lk.linkedin.com/pub/lahiru-sandaruwan/16/153/146
>>>>
>>>>
>>
>>
>> --
>> --
>> Lahiru Sandaruwan
>> Software Engineer,
>> Platform Technologies,
>> WSO2 Inc., http://wso2.com
>> lean.enterprise.middleware
>>
>> email: [email protected] cell: (+94) 773 325 954
>> blog: http://lahiruwrites.blogspot.com/
>> twitter: http://twitter.com/lahirus
>> linked-in: http://lk.linkedin.com/pub/lahiru-sandaruwan/16/153/146
>>
>>
>
>
> --
> Best Regards,
> Nirmal
>
> Nirmal Fernando.
> PPMC Member & Committer of Apache Stratos,
> Senior Software Engineer, WSO2 Inc.
>
> Blog: http://nirmalfdo.blogspot.com/
>



-- 
Best Regards,
Nirmal

Nirmal Fernando.
PPMC Member & Committer of Apache Stratos,
Senior Software Engineer, WSO2 Inc.

Blog: http://nirmalfdo.blogspot.com/

Reply via email to