public function getDefinition()
{
$roleDefinition = new stdClass();
$roleDefinition->roleId = $this->RoleID;
$roleDefinition->platform = $this->Platform;
$roleDefinition->cloudLocation = $this->CloudLocation;
$roleDefinition->alias = $this->Alias;
$roleDefinition->launchIndex = $this->LaunchIndex;
// Settings
$roleDefinition->settings = array();
foreach ($this->GetAllSettings() as $k => $v) {
$roleDefinition->settings[$k] = $v;
}
//Farm Global Variables
$variables = new Scalr_Scripting_GlobalVariables($this->GetFarmObject()->ClientID, $this->GetFarmObject()->EnvID, ScopeInterface::SCOPE_FARMROLE);
$roleDefinition->globalVariables = $variables->getValues($this->RoleID, $this->FarmID, $this->ID);
//Storage
$storage = $this->getStorage();
$configs = $storage->getConfigs();
if (!empty($configs)) {
foreach ($configs as $cfg) {
$cfg = (array) $cfg;
unset($cfg['id']);
unset($cfg['status']);
$roleDefinition->storage[] = $cfg;
}
}
// Scripts
$scripts = $this->DB->GetAll("SELECT * FROM farm_role_scripts WHERE farm_roleid=? AND issystem='1'", array($this->ID));
$roleDefinition->scripts = array();
foreach ($scripts as $script) {
$itm = new stdClass();
$itm->event = $script['event_name'];
$itm->scriptId = (int) $script['scriptid'];
$itm->params = unserialize($script['params']);
$itm->target = $script['target'];
$itm->version = (int) $script['version'];
$itm->timeout = $script['timeout'];
$itm->isSync = $script['issync'];
$itm->isMenuItem = $script['ismenuitem'];
$itm->orderIndex = $script['order_index'];
$itm->scriptPath = $script['script_path'];
$itm->scriptType = $script['script_type'];
$itm->runAs = $script['run_as'];
switch ($script['target']) {
case $script['target'] == Script::TARGET_ROLES:
$varName = 'targetRoles';
break;
case $script['target'] == Script::TARGET_FARMROLES:
$varName = 'targetFarmroles';
break;
case $script['target'] == Script::TARGET_BEHAVIORS:
$varName = 'targetBehaviors';
break;
}
$targets = $this->DB->GetAll("SELECT target FROM `farm_role_scripting_targets` WHERE farm_role_script_id = ?", array($script['id']));
foreach ($targets as $target) {
$itm->{$varName}[] = $target['target'];
}
$roleDefinition->scripts[] = $itm;
}
// Scaling times
$scalingTimes = $this->DB->GetAll("SELECT * FROM farm_role_scaling_times WHERE farm_roleid = ?", array($this->ID));
$roleDefinition->scalingTimes = array();
foreach ($scalingTimes as $time) {
$itm = new stdClass();
$itm->startTime = $time['start_time'];
$itm->endTime = $time['end_time'];
$itm->daysOfWeek = $time['days_of_week'];
$itm->instanceCount = $time['instances_count'];
$roleDefinition->scalingTimes[] = $itm;
}
// Scaling metrics
$scalingMetrics = $this->DB->GetAll("SELECT * FROM farm_role_scaling_metrics WHERE farm_roleid = ?", array($this->ID));
$roleDefinition->scalingMetrics = array();
foreach ($scalingMetrics as $metric) {
$itm = new stdClass();
$itm->metricId = $metric['metric_id'];
$itm->settings = unserialize($metric['settings']);
$roleDefinition->scalingMetrics[] = $itm;
}
return $roleDefinition;
}