本文整理汇总了PHP中plugin::enabled方法的典型用法代码示例。如果您正苦于以下问题:PHP plugin::enabled方法的具体用法?PHP plugin::enabled怎么用?PHP plugin::enabled使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类plugin
的用法示例。
在下文中一共展示了plugin::enabled方法的13个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。
示例1: action
function action()
{
$msg = '';
$event = new event();
$server = new openqrm_server();
$plugin = new plugin();
$identifier = $this->response->html->request()->get($this->identifier_name);
$enabled = $plugin->enabled();
if ($identifier !== '') {
foreach ($identifier as $id) {
if (in_array($id, $enabled)) {
$return = $server->send_command("openqrm_server_plugin_command {$id} start");
if ($return === true) {
if ($this->__check($id)) {
$msg .= sprintf($this->lang['msg'], $id) . '<br>';
} else {
$msg .= sprintf($this->lang['error_timeout'], $id) . '<br>';
}
} else {
$msg .= sprintf($this->lang['error_start'], $id) . '<br>';
}
}
}
}
$this->response->redirect($this->response->get_url($this->actions_name, 'select', $this->message_param, $msg));
}
示例2: action
function action()
{
$msg = '';
$event = new event();
$server = new openqrm_server();
$plugin = new plugin();
$identifier = $this->response->html->request()->get($this->identifier_name);
$enabled = $plugin->enabled();
if ($identifier !== '') {
foreach ($identifier as $id) {
if (in_array($id, $enabled)) {
$error = false;
// check dependencies
foreach ($enabled as $v) {
if ($v !== $id) {
$tmp = $plugin->get_dependencies($v);
if ($tmp !== '' && isset($tmp['dependencies']) && $tmp['dependencies'] !== '') {
if (strpos($tmp['dependencies'], $id) !== false) {
$msg .= sprintf($this->lang['error_dependencies'], $id, $v) . '<br>';
$error = true;
}
}
}
}
// handle plugin type
if ($error === false) {
$tmp = $plugin->get_config($id);
switch ($tmp['type']) {
case 'storage':
$storage = new storage();
$types = $storage->get_storage_types();
$deployment = new deployment();
$dep = $deployment->get_id_by_storagetype($id);
foreach ($dep as $val) {
if (in_array($val['value'], $types)) {
$msg .= sprintf($this->lang['error_in_use'], $id) . '<br>';
$error = true;
}
}
break;
}
}
if ($error === false) {
$return = $server->send_command("openqrm_server_plugin_command " . $id . " uninstall " . $GLOBALS['OPENQRM_ADMIN']->name . ' ' . $GLOBALS['OPENQRM_ADMIN']->password);
if ($return === true) {
if ($this->__check($id)) {
$msg .= sprintf($this->lang['msg'], $id) . '<br>';
} else {
$msg .= sprintf($this->lang['error_timeout'], $id) . '<br>';
}
} else {
$msg .= sprintf($this->lang['error_disable'], $id) . '<br>';
}
}
}
}
}
$this->response->redirect($this->response->get_url($this->actions_name, 'select', $this->message_param, $msg));
}
示例3: array
function get_application_list()
{
$application_list = array();
$plugin = new plugin();
$enabled_plugins = $plugin->enabled();
foreach ($enabled_plugins as $index => $plugin_name) {
$plugin_cloud_application_hook = $this->webdir . "/plugins/" . $plugin_name . "/openqrm-" . $plugin_name . "-cloud-application-hook.php";
if (file_exists($plugin_cloud_application_hook)) {
$this->event->log("get_application_list", $_SERVER['REQUEST_TIME'], 5, "cloudapplication.class.php", "Found plugin " . $plugin_name . " providing a Cloud-application hook.", "", "", 0, 0, 0);
require_once $plugin_cloud_application_hook;
$application_function = "openqrm_" . "{$plugin_name}" . "_get_cloud_applications";
$application_function = str_replace("-", "_", $application_function);
$application_array = $application_function();
foreach ($application_array as $index => $app) {
$application_list[] .= $app;
}
}
}
return $application_list;
}
示例4: plugin
$appliance_fields["appliance_cpumodel"] = $app_resource_remove_check->cpumodel;
$appliance_fields["appliance_memtotal"] = $app_resource_remove_check->memtotal;
$appliance_fields["appliance_swaptotal"] = $app_resource_remove_check->swaptotal;
$appliance_fields["appliance_nics"] = $app_resource_remove_check->nics;
$appliance_fields["appliance_capabilities"] = $app_resource_remove_check->capabilities;
$appliance_fields["appliance_cluster"] = $app_resource_remove_check->cluster;
$appliance_fields["appliance_ssi"] = $app_resource_remove_check->ssi;
$appliance_fields["appliance_resources"] = $app_resource_remove_check->resources;
$appliance_fields["appliance_highavailable"] = $app_resource_remove_check->highavailable;
$appliance_fields["appliance_virtual"] = $app_resource_remove_check->virtual;
$appliance_fields["appliance_virtualization"] = $app_resource_remove_check->virtualization;
$appliance_fields["appliance_virtualization_host"] = $app_resource_remove_check->virtualization_host;
$appliance_fields["appliance_comment"] = $app_resource_remove_check->comment;
$appliance_fields["appliance_event"] = $app_resource_remove_check->event;
$plugin = new plugin();
$enabled_plugins = $plugin->enabled();
foreach ($enabled_plugins as $index => $plugin_name) {
$plugin_start_appliance_hook = "{$RootDir}/plugins/{$plugin_name}/openqrm-{$plugin_name}-appliance-hook.php";
if (file_exists($plugin_start_appliance_hook)) {
$event->log("remove", $_SERVER['REQUEST_TIME'], 5, "local-server-action", "Found plugin {$plugin_name} handling add-appliance event.", "", "", 0, 0, $app_resource_remove_check->resources);
require_once "{$plugin_start_appliance_hook}";
$appliance_function = "openqrm_" . "{$plugin_name}" . "_appliance";
$appliance_function = str_replace("-", "_", $appliance_function);
// stop
$appliance_function("stop", $appliance_fields);
// remove
$appliance_function("remove", $appliance_fields);
}
}
// remove appliance
$appliance->remove($appliance_id);
示例5: edit
function edit()
{
$resource_icon_default = "/img/resource.png";
$storage_icon = "/plugins/kvm/img/plugin.png";
//$state_icon = $this->openqrm->get('baseurl')."/img/".$this->resource->state.".png";
if ($this->file->exists($this->openqrm->get('webdir') . $storage_icon)) {
$resource_icon_default = $storage_icon;
}
$resource_icon_default = $this->openqrm->get('baseurl') . $resource_icon_default;
// check if we have a plugin implementing the remote console
$remote_console = false;
$plugin = new plugin();
$enabled_plugins = $plugin->enabled();
foreach ($enabled_plugins as $index => $plugin_name) {
//$plugin_remote_console_running = $this->openqrm->get('webdir')."/plugins/".$plugin_name."/.running";
$plugin_remote_console_hook = $this->openqrm->get('webdir') . "/plugins/" . $plugin_name . "/openqrm-" . $plugin_name . "-remote-console-hook.php";
if ($this->file->exists($plugin_remote_console_hook)) {
require_once "{$plugin_remote_console_hook}";
$link_function = str_replace("-", "_", "openqrm_" . "{$plugin_name}" . "_remote_console");
if (function_exists($link_function)) {
$remote_functions[] = $link_function;
$remote_console = true;
}
}
}
// prepare list of all Host resource id for the migration select
// we need a select with the ids/ips from all resources which
// are used by appliances with kvm capabilities
$kvm_hosts = array();
$appliance_list = new appliance();
$appliance_list_array = $appliance_list->get_list();
foreach ($appliance_list_array as $index => $app) {
$appliance_kvm_host_check = new appliance();
$appliance_kvm_host_check->get_instance_by_id($app["value"]);
// only active appliances
if (!strcmp($appliance_kvm_host_check->state, "active") || $appliance_kvm_host_check->resources == 0) {
$virtualization = new virtualization();
$virtualization->get_instance_by_id($appliance_kvm_host_check->virtualization);
if (!strcmp($virtualization->type, "kvm") && !strstr($virtualization->type, "kvm-vm")) {
$kvm_host_resource = new resource();
$kvm_host_resource->get_instance_by_id($appliance_kvm_host_check->resources);
// exclude source host
#if ($kvm_host_resource->id == $this->resource->id) {
# continue;
#}
// only active appliances
if (!strcmp($kvm_host_resource->state, "active")) {
$migration_select_label = "Res. " . $kvm_host_resource->id . "/" . $kvm_host_resource->ip;
$kvm_hosts[] = array("value" => $kvm_host_resource->id, "label" => $migration_select_label);
}
}
}
}
$d['state'] = '<span class="pill ' . $this->resource->state . '">' . $this->resource->state . '</span>';
$d['resource'] = $this->resource->id . ' / ' . $this->resource->ip;
$d['name'] = $this->appliance->name;
$d['id'] = $this->appliance->id;
$a = $this->response->html->a();
$a->label = $this->lang['action_add_local_vm'];
$a->css = 'add';
$a->handler = 'onclick="wait();"';
$a->href = $this->response->get_url($this->actions_name, "add") . '&vmtype=kvm-vm-local';
$d['add_local_vm'] = $a->get_string();
$a = $this->response->html->a();
$a->label = $this->lang['action_add_network_vm'];
$a->css = 'add';
$a->handler = 'onclick="wait();"';
$a->href = $this->response->get_url($this->actions_name, "add") . '&vmtype=kvm-vm-net';
$d['add_network_vm'] = $a->get_string();
$body = array();
$identifier_disabled = array();
$file = $this->statfile;
if ($this->file->exists($file)) {
$lines = explode("\n", $this->file->get_contents($file));
if (count($lines) >= 1) {
$i = 0;
foreach ($lines as $line) {
if ($line !== '') {
$line = explode('@', $line);
$state = $line[0];
$name = $line[1];
$mac = $line[2];
$resource = new resource();
$resource->get_instance_by_mac($mac);
if ($resource->vhostid != $this->resource->id) {
continue;
}
$res_virtualization = new virtualization();
$res_virtualization->get_instance_by_id($resource->vtype);
$update = '';
$a = $this->response->html->a();
$a->title = $this->lang['action_update'];
$a->label = $this->lang['action_update'];
$a->handler = 'onclick="wait();"';
$a->css = 'edit';
$a->href = $this->response->get_url($this->actions_name, "update") . '&vm=' . $name . '&vmtype=' . $res_virtualization->type;
$update_link = $a->get_string();
$clone = '';
$a = $this->response->html->a();
$a->title = $this->lang['action_clone'];
//.........这里部分代码省略.........
示例6: plugin
function trigger_event_hook($action, $id)
{
// add event hook for plugins
$plugin = new plugin();
$enabled_plugins = $plugin->enabled();
foreach ($enabled_plugins as $index => $plugin_name) {
$plugin_event_hook = $this->RootDir . "/plugins/" . $plugin_name . "/openqrm-" . $plugin_name . "-event-hook.php";
if (file_exists($plugin_event_hook)) {
require_once "{$plugin_event_hook}";
$event_hook_function = "openqrm_" . "{$plugin_name}" . "_event";
$event_hook_function = str_replace("-", "_", $event_hook_function);
$event_hook_function($action, $id);
}
}
}
示例7: stop
function stop()
{
$response = '';
$vms = $this->response->html->request()->get($this->identifier_name);
if ($vms !== '') {
$appliance_id = $this->response->html->request()->get('appliance_id');
$appliance = new appliance();
$resource = new resource();
$errors = array();
$message = array();
foreach ($vms as $key => $vm) {
$appliance->get_instance_by_id($appliance_id);
$resource->get_instance_by_id($appliance->resources);
$file = $this->openqrm->get('basedir') . '/plugins/kvm/web/kvm-stat/' . $resource->id . '.vm_list';
$command = $this->openqrm->get('basedir') . '/plugins/kvm/bin/openqrm-kvm-vm stop -n ' . $vm;
$command .= ' -u ' . $this->openqrm->admin()->name . ' -p ' . $this->openqrm->admin()->password;
$command .= ' --openqrm-ui-user ' . $this->user->name;
$command .= ' --openqrm-cmd-mode background';
$resource->send_command($resource->ip, $command);
$message[] = sprintf($this->lang['msg_stoped'], $vm);
$file = $this->openqrm->get('basedir') . '/plugins/kvm/web/kvm-stat/' . $resource->id . '.vm_list';
if ($this->file->exists($file)) {
$lines = explode("\n", $this->file->get_contents($file));
foreach ($lines as $line) {
if ($line !== '') {
$line = explode('@', $line);
if ($line[1] === $vm) {
$tmp = explode(':', $line[5]);
$server = $tmp[0];
$port = $tmp[1];
$mac = $line[2];
$resource->get_instance_by_mac($mac);
$rid = $resource->id;
}
}
$event = new event();
$plugin = new plugin();
$enabled = $plugin->enabled();
foreach ($enabled as $index => $name) {
$running = $this->openqrm->get('webdir') . '/plugins/' . $name . '/.running';
$hook = $this->openqrm->get('webdir') . '/plugins/' . $name . '/openqrm-' . $name . '-remote-console-hook.php';
if (file_exists($hook)) {
if (file_exists($running)) {
$event->log("console", $_SERVER['REQUEST_TIME'], 5, "kvm-vm.console.class.php", 'Found plugin ' . $name . ' providing a remote console.', "", "", 0, 0, $resource->id);
require_once $hook;
$console_function = 'openqrm_' . $name . '_disable_remote_console';
$console_function = str_replace("-", "_", $console_function);
$console_function($server, $port, $rid, $mac, $vm);
}
}
}
}
}
}
if (count($errors) === 0) {
$response = join('<br>', $message);
} else {
$msg = array_merge($errors, $message);
$response = join('<br>', $msg);
}
} else {
$response = '';
}
return $response;
}
示例8: select
function select()
{
$icon_started = $this->lang['action_stop'];
$icon_stopped = $this->lang['action_start'];
$icon_enabled = $this->lang['action_disable'];
$icon_disabled = $this->lang['action_enable'];
$plugin = new plugin();
$plugins_available = $plugin->available();
$plugins_enabled = $plugin->enabled();
$plugins_started = $plugin->started();
$h = array();
$h['name']['title'] = $this->lang['table_name'];
$h['type']['title'] = ' ';
$h['type']['sortable'] = ' ';
$h['type_n']['title'] = $this->lang['table_type'];
$h['type_n']['hidden'] = true;
$h['description']['title'] = $this->lang['table_description'];
$h['description']['sortable'] = false;
$h['configure']['title'] = " ";
$h['configure']['sortable'] = false;
$h['enabled']['title'] = " ";
$h['enabled']['sortable'] = false;
$h['enabled_n']['title'] = $this->lang['table_enabled'];
$h['enabled_n']['hidden'] = true;
$h['started']['title'] = " ";
$h['started']['sortable'] = false;
$h['started_n']['title'] = $this->lang['table_started'];
$h['started_n']['hidden'] = true;
$table = $this->response->html->tablebuilder('plugins', $this->response->get_array($this->actions_name, 'select'));
$table->max = count($plugins_available);
$table->sort = 'name';
$table->limit = 0;
$table->order = 'ASC';
$table->init();
$tps = $table->get_params();
$tp = '';
foreach ($tps['plugins'] as $k => $v) {
$tp .= '&plugins[' . $k . ']=' . $v;
}
$RootDir = $_SERVER["DOCUMENT_ROOT"] . '/openqrm/base/';
$thisfile = $this->response->html->thisfile;
$b = array();
$plugtype = array();
$i = 0;
$openqrm_version = $this->openqrm->get('config', 'SERVER_VERSION');
foreach ($plugins_available as $index => $plugin_name) {
$tmp = $plugin->get_config($plugin_name);
$plugin_description = $tmp['description'];
$plugin_type = $tmp['type'];
$plugtype[] = $plugin_type;
$plugin_version = $tmp['version'];
$plugin_major = substr($plugin_version, 0, strpos($plugin_version, '.'));
$plugin_minor = substr($plugin_version, strpos($plugin_version, '.') + 1);
$plugin_minor = substr($plugin_minor, 0, strpos($plugin_minor, '.'));
$plugin_base_version = $plugin_major . "." . $plugin_minor;
if (!strlen($this->response->html->request()->get('plugin_filter')) || strstr($this->response->html->request()->get('plugin_filter'), $plugin_type)) {
//
$b[$i] = array();
// plugin version mismatch
if ($openqrm_version != $plugin_base_version) {
$b[$i]['name'] = $plugin_name;
$b[$i]['type'] = '<span class="pill ' . strtolower($plugin_type) . '">' . $plugin_type . '</span>';
$b[$i]['type_n'] = $plugin_type;
$b[$i]['description'] = $plugin_description;
$b[$i]['enabled'] = $this->lang['version_mismatch'];
$b[$i]['enabled_n'] = 'b';
$b[$i]['started'] = ' ';
$b[$i]['started_n'] = 'c';
$b[$i]['configure'] = '';
} else {
// plugin not enabled!
if (!in_array($plugin_name, $plugins_enabled)) {
$a = $this->response->html->a();
$a->label = $icon_disabled;
$a->href = $this->response->get_url($this->actions_name, "enable");
$a->href .= '&' . $this->identifier_name . '[]=' . $plugin_name;
$a->href .= '&plugin_filter=' . $this->response->html->request()->get('plugin_filter');
$a->href .= $tp;
$a->href .= '#' . $plugin_name;
// anchor
$a->name = $plugin_name;
$a->handler = 'onclick="wait();"';
$a->css = 'enable';
$a->title = sprintf($this->lang['title_enable'], $plugin_name);
$b[$i]['name'] = $plugin_name;
$b[$i]['type'] = '<span class="pill ' . strtolower($plugin_type) . '">' . $plugin_type . '</span>';
$b[$i]['type_n'] = $plugin_type;
$b[$i]['description'] = $plugin_description;
$b[$i]['enabled'] = $a->get_string();
$b[$i]['enabled_n'] = 'b';
$b[$i]['started'] = ' ';
$b[$i]['started_n'] = 'c';
} else {
$plugin_icon_path = "{$RootDir}/plugins/{$plugin_name}/img/plugin.png";
$plugin_icon = "/openqrm/base/plugins/{$plugin_name}/img/plugin.png";
$plugin_icon_default = "/openqrm/base/plugins/aa_plugins/img/plugin.png";
if ($this->file->exists($plugin_icon_path)) {
$plugin_icon_default = $plugin_icon;
}
$a = $this->response->html->a();
//.........这里部分代码省略.........
示例9: key
function check_permission($object = null, $bool = false)
{
$controller = get_class($object);
$action = $this->response->html->request()->get($object->actions_name);
$user = $this->openqrm->user();
if (is_array($action)) {
$action = key($action);
}
if (!$user->isAdmin() && $controller !== 'datacenter_controller' && $controller !== 'user_controller' && $controller !== 'documentation_controller' && strripos($controller, 'about') === false && substr($action, 0, 4) !== 'load') {
// check for plugin implementing the role hook
$plugin = new plugin();
$enabled_plugins = $plugin->enabled();
foreach ($enabled_plugins as $index => $plugin_name) {
$plugin_role_hook = $this->openqrm->get('webdir') . "/plugins/" . $plugin_name . "/openqrm-" . $plugin_name . "-role-hook.class.php";
if (file_exists($plugin_role_hook)) {
require_once $plugin_role_hook;
$plugin_role_hook_class = "openqrm-" . $plugin_name . "-role-hook";
$plugin_role_hook_class = str_replace("-", "_", $plugin_role_hook_class);
$plugin_role_hook_method = $plugin_name . "-check_permission";
$plugin_role_hook_method = str_replace("-", "_", $plugin_role_hook_method);
$plugin_role_hook = new $plugin_role_hook_class($this->openqrm, $object);
return $plugin_role_hook->{$plugin_role_hook_method}($bool);
}
}
// no plugin implemented the role hook, go on with basic role permission check
// is_not_admin -> tab menu with global error permission msg
$response = $object->response;
$html = $response->html;
// handle empty action
if ($action === '') {
// try select as first action
if (method_exists($object, 'select')) {
$action = 'select';
} else {
// pick first method as action
$m = get_class_methods($object);
foreach ($m as $a) {
if (!in_array($a, array('api', 'action')) && strpos($a, '__') === false && strripos($a, 'reload') === false) {
$action = $a;
break;
}
}
}
}
if ($bool === true) {
return false;
} else {
$controller = str_replace('_controller', '', get_class($object));
$controller = str_replace('aa_', '', $controller);
$t = $html->template($this->openqrm->get('webdir') . '/tpl/permission_denied.tpl.php');
$t->add($action, 'action');
$t->add($controller, 'controller');
$t->add($this->openqrm->get('baseurl'), 'baseurl');
$content['label'] = 'Permissions';
$content['value'] = $t;
$content['target'] = $html->thisfile;
$content['request'] = $response->get_array($object->actions_name, '');
$content['onclick'] = false;
$content['active'] = true;
$tab = $html->tabmenu('permissions');
$tab->css = 'htmlobject_tabs';
$tab->add(array($content));
return $tab;
}
} else {
if ($bool === true) {
return true;
} else {
return $object->action();
}
}
}
示例10: array
function check_all_states()
{
global $RESOURCE_INFO_TABLE;
global $RESOURCE_TIME_OUT;
global $RootDir;
global $event;
$resource_list = array();
$db = openqrm_get_db_connection();
$rs = $db->Execute("select resource_id, resource_lastgood, resource_state from {$RESOURCE_INFO_TABLE}");
if (!$rs) {
$event->log("check_all_states", $_SERVER['REQUEST_TIME'], 2, "resource.class.php", $db->ErrorMsg(), "", "", 0, 0, 0);
} else {
while (!$rs->EOF) {
$resource_id = $rs->fields['resource_id'];
$resource_lastgood = $rs->fields['resource_lastgood'];
$resource_state = $rs->fields['resource_state'];
$check_time = $_SERVER['REQUEST_TIME'];
// get the HA-timeout per resource from the capabilites
$custom_resource_ha_timeout = "";
$resource_hat = new resource();
$resource_hat->get_instance_by_id($resource_id);
$custom_resource_ha_timeout = $resource_hat->get_resource_capabilities("HAT");
if (strlen($custom_resource_ha_timeout)) {
$RESOURCE_TIME_OUT = $custom_resource_ha_timeout;
}
// resolve errors for all active resources
if ("{$resource_state}" == "active" && $resource_id != 0) {
if ($check_time - $resource_lastgood < $RESOURCE_TIME_OUT) {
// resolve error event
$event->resolve_by_resource("check_all_states", $resource_id);
}
}
// check for statistics (errors) for all resources which are not offline
// exclude manual added resources from the check !
if ("{$resource_state}" != "off" && "{$resource_lastgood}" != "-1") {
if ($check_time - $resource_lastgood > $RESOURCE_TIME_OUT) {
$resource_fields = array();
$resource_fields["resource_state"] = "error";
$resource_error = new resource();
$resource_error->update_info($resource_id, $resource_fields);
// log error event
$event->log("check_all_states", $_SERVER['REQUEST_TIME'], 1, "resource.class.php", "Resource {$resource_id} is in error state", "", "", 0, 0, $resource_id);
// check for plugin which may want to handle the error event
$plugin = new plugin();
$enabled_plugins = $plugin->enabled();
foreach ($enabled_plugins as $index => $plugin_name) {
$plugin_ha_hook = "{$RootDir}/plugins/{$plugin_name}/openqrm-{$plugin_name}-ha-hook.php";
if (file_exists($plugin_ha_hook)) {
$event->log("check_all_states", $_SERVER['REQUEST_TIME'], 1, "resource.class.php", "Found {$plugin_name} handling the resource error.", "", "", 0, 0, $resource_id);
require_once "{$plugin_ha_hook}";
$ha_function = "openqrm_" . "{$plugin_name}" . "_ha_hook";
$ha_function = str_replace("-", "_", $ha_function);
$ha_function($resource_id);
}
}
}
}
$rs->MoveNext();
}
}
}
示例11: stop
function stop()
{
global $event;
global $RootDir;
$resource = new resource();
$resource->get_instance_by_id($this->resources);
$resource->assign($resource->id, "1", "default", "1", "idle");
// update stoptime + state
$now = $_SERVER['REQUEST_TIME'];
$appliance_fields = array();
$appliance_fields['appliance_stoptime'] = $now;
$appliance_fields['appliance_state'] = 'stopped';
$this->update($this->id, $appliance_fields);
// update resource state to transition
$resource_fields = array();
$resource_fields["resource_state"] = "transition";
$resource_fields["resource_event"] = "reboot";
$resource->update_info($resource->id, $resource_fields);
// stop appliance hook
// fill in the rest of the appliance info in the array for the plugin hook
$appliance_fields["appliance_id"] = $this->id;
$appliance_fields["appliance_name"] = $this->name;
$appliance_fields["appliance_kernelid"] = $this->kernelid;
$appliance_fields["appliance_imageid"] = $this->imageid;
$appliance_fields["appliance_cpunumber"] = $this->cpunumber;
$appliance_fields["appliance_cpuspeed"] = $this->cpuspeed;
$appliance_fields["appliance_cpumodel"] = $this->cpumodel;
$appliance_fields["appliance_memtotal"] = $this->memtotal;
$appliance_fields["appliance_swaptotal"] = $this->swaptotal;
$appliance_fields["appliance_nics"] = $this->nics;
$appliance_fields["appliance_capabilities"] = $this->capabilities;
$appliance_fields["appliance_cluster"] = $this->cluster;
$appliance_fields["appliance_ssi"] = $this->ssi;
$appliance_fields["appliance_resources"] = $this->resources;
$appliance_fields["appliance_highavailable"] = $this->highavailable;
$appliance_fields["appliance_virtual"] = $this->virtual;
$appliance_fields["appliance_virtualization"] = $this->virtualization;
$appliance_fields["appliance_virtualization_host"] = $this->virtualization_host;
$appliance_fields["appliance_comment"] = $this->comment;
$appliance_fields["appliance_wizard"] = $this->wizard;
$appliance_fields["appliance_event"] = $this->event;
// stop the hook
$plugin = new plugin();
$enabled_plugins = $plugin->enabled();
foreach ($enabled_plugins as $index => $plugin_name) {
$plugin_stop_appliance_hook = "{$RootDir}/plugins/{$plugin_name}/openqrm-{$plugin_name}-appliance-hook.php";
if (file_exists($plugin_stop_appliance_hook)) {
$event->log("stop", $_SERVER['REQUEST_TIME'], 5, "appliance.class.php", "Found plugin {$plugin_name} handling stop-appliance event.", "", "", 0, 0, $this->resources);
require_once "{$plugin_stop_appliance_hook}";
$appliance_function = "openqrm_" . "{$plugin_name}" . "_appliance";
$appliance_function = str_replace("-", "_", $appliance_function);
$appliance_function("stop", $appliance_fields);
}
}
// delay a bit to make sure all appliance hooks have been executed or at least arrived in the queue
sleep(2);
$resource->send_command("{$resource->ip}", "reboot");
// storage authentication hook
$image = new image();
$image->get_instance_by_id($this->imageid);
$deployment = new deployment();
$deployment->get_instance_by_type($image->type);
$deployment_type = $deployment->type;
$deployment_plugin_name = $deployment->storagetype;
$storage_auth_hook = "{$RootDir}/plugins/{$deployment_plugin_name}/openqrm-{$deployment_type}-auth-hook.php";
if (file_exists($storage_auth_hook)) {
$event->log("stop", $_SERVER['REQUEST_TIME'], 5, "appliance.class.php", "Found deployment type {$deployment_type} handling the stop auth hook.", "", "", 0, 0, $this->resources);
require_once "{$storage_auth_hook}";
storage_auth_function("stop", $this->id);
}
// set image to deactive
$image->set_active(0);
}
示例12: remove
function remove()
{
$response = $this->get_response();
$vms = $response->html->request()->get($this->identifier_name);
$form = $response->form;
if ($vms !== '') {
$submit = $form->get_elements('submit');
$submit->handler = 'onclick="wait();"';
$form->add($submit, 'submit');
$submit = $form->get_elements('cancel');
$submit->handler = 'onclick="cancel();"';
$form->add($submit, 'cancel');
$i = 0;
foreach ($vms as $ex) {
$d['param_f' . $i]['label'] = $ex;
$d['param_f' . $i]['object']['type'] = 'htmlobject_input';
$d['param_f' . $i]['object']['attrib']['type'] = 'checkbox';
$d['param_f' . $i]['object']['attrib']['name'] = $this->identifier_name . '[' . $i . ']';
$d['param_f' . $i]['object']['attrib']['value'] = $ex;
$d['param_f' . $i]['object']['attrib']['checked'] = true;
$i++;
}
$form->add($d);
if (!$form->get_errors() && $response->submit()) {
$appliance_id = $this->response->html->request()->get('appliance_id');
$appliance = new appliance();
$resource = new resource();
$errors = array();
$message = array();
foreach ($vms as $key => $vm) {
$appliance->get_instance_by_id($appliance_id);
$resource->get_instance_by_id($appliance->resources);
$file = $this->openqrm->get('basedir') . '/plugins/kvm/web/kvm-stat/' . $resource->id . '.vm_list';
if ($this->file->exists($file)) {
$lines = explode("\n", $this->file->get_contents($file));
if (count($lines) >= 1) {
foreach ($lines as $line) {
if ($line !== '') {
$line = explode('@', $line);
if ($vm === $line[1]) {
$kvm = new resource();
$kvm->get_instance_by_mac($line[2]);
// check if it is still in use
$appliances_using_resource = $appliance->get_ids_per_resource($kvm->id);
if (count($appliances_using_resource) > 0) {
$appliances_using_resource_str = implode(",", $appliances_using_resource[0]);
$errors[] = sprintf($this->lang['msg_vm_resource_still_in_use'], $vm, $kvm->id, $appliances_using_resource_str);
} else {
$kvm->remove($kvm->id, $line[2]);
$command = $this->openqrm->get('basedir') . '/plugins/kvm/bin/openqrm-kvm-vm delete -n ' . $vm;
$command .= ' -u ' . $this->openqrm->admin()->name . ' -p ' . $this->openqrm->admin()->password;
$command .= ' --openqrm-ui-user ' . $this->user->name;
$command .= ' --openqrm-cmd-mode background';
$resource->send_command($resource->ip, $command);
$form->remove($this->identifier_name . '[' . $key . ']');
$message[] = sprintf($this->lang['msg_removed'], $vm);
// stop remote console
$tmp = explode(':', $line[5]);
$server = $tmp[0];
$port = $tmp[1];
$mac = $line[2];
$rid = $kvm->id;
$event = new event();
$plugin = new plugin();
$enabled = $plugin->enabled();
foreach ($enabled as $index => $name) {
$running = $this->openqrm->get('webdir') . '/plugins/' . $name . '/.running';
$hook = $this->openqrm->get('webdir') . '/plugins/' . $name . '/openqrm-' . $name . '-remote-console-hook.php';
if (file_exists($hook)) {
if (file_exists($running)) {
$event->log("console", $_SERVER['REQUEST_TIME'], 5, "kvm-storge-vm.remove.class.php", 'Stopping ' . $name . ' remote console.', "", "", 0, 0, $kvm->id);
require_once $hook;
$console_function = 'openqrm_' . $name . '_disable_remote_console';
$console_function = str_replace("-", "_", $console_function);
$console_function($server, $port, $rid, $mac, $vm);
}
}
}
}
}
}
}
}
}
}
if (count($errors) === 0) {
$response->msg = join('<br>', $message);
} else {
$msg = array_merge($errors, $message);
$response->error = join('<br>', $msg);
}
}
} else {
$response->msg = '';
}
return $response;
}
示例13: select
//.........这里部分代码省略.........
$a->css = 'enable';
$a->href = $this->response->get_url($this->actions_name, 'start') . '&' . $this->identifier_name . '[]=' . $appliance->id . '' . $tp;
}
$strStart = $a->get_string();
}
// build the plugin link section
$appliance_link_section = '';
// add link to continue if appliance has unfinished wizard
$disabled = array();
if (isset($appliance->wizard) && strpos($appliance->wizard, 'wizard') !== false) {
$params = explode(',', $appliance->wizard);
$wizard_step = explode('=', $params[0]);
$wizard_user = explode('=', $params[1]);
if ($wizard_user[1] === $this->user->name) {
// continue button
$a = $this->response->html->a();
$a->title = $this->lang['action_continue'];
$a->label = $this->lang['action_continue'];
$a->handler = 'onclick="wait();"';
$a->css = 'badge continue';
$a->href = $this->response->get_url($this->actions_name, $wizard_step[1]) . '&appliance_wizard_id=' . $appliance->id . '' . $tp;
$appliance_comment = $a->get_string();
} else {
$appliance_comment = sprintf($this->lang['appliance_create_in_progress'], $wizard_user[1]);
}
// disable all buttons
$disabled[] = $appliance->id;
$strEdit = '';
$strStart = '';
$strStop = '';
$release_resource = '';
} else {
$plugin = new plugin();
$enabled_plugins = $plugin->enabled();
foreach ($enabled_plugins as $index => $plugin_name) {
$plugin_appliance_link_section_hook = $this->openqrm->get('webdir') . "/plugins/" . $plugin_name . "/openqrm-" . $plugin_name . "-appliance-link-hook.php";
if (file_exists($plugin_appliance_link_section_hook)) {
require_once "{$plugin_appliance_link_section_hook}";
$appliance_get_link_function = str_replace("-", "_", "get_" . "{$plugin_name}" . "_appliance_link");
if (function_exists($appliance_get_link_function)) {
$p = $plugin->get_config($plugin_name);
$alink = $appliance_get_link_function($appliance->id);
if (is_object($alink)) {
// $alink->handler = $alink->handler.' onclick="wait();"';
$alink->css = 'enable';
$alink->title = preg_replace('~(.*?)<a.*>(.*?)</a>(.*?)~i', '$1$2$3', $p['description']);
$alink = $alink->get_string();
}
$appliance_link_section .= $alink;
}
}
}
if ($appliance_db["appliance_comment"] !== '') {
$appliance_comment = $appliance_db["appliance_comment"];
$appliance_comment .= "<hr>";
$appliance_comment .= $appliance_link_section;
} else {
$appliance_comment = $appliance_link_section;
}
}
$b[] = array('appliance_state' => $state_icon, 'appliance_id' => $appliance_db["appliance_id"], 'appliance_name' => $appliance_db["appliance_name"], 'appliance_values' => $str, 'appliance_comment' => $appliance_comment, 'appliance_virtualization' => $appliance_db["appliance_virtualization"], 'appliance_edit' => $strEdit . '' . $strStart . '' . $release_resource);
}
}
// Filter
$virtulization_types = new virtualization();
$list = $virtulization_types->get_list();