本文整理汇总了PHP中resource::update_info方法的典型用法代码示例。如果您正苦于以下问题:PHP resource::update_info方法的具体用法?PHP resource::update_info怎么用?PHP resource::update_info使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类resource
的用法示例。
在下文中一共展示了resource::update_info方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。
示例1: openqrm_hybrid_cloud_monitor
//.........这里部分代码省略.........
$type = $tmp[9];
$date = $tmp[10];
$region = $tmp[11];
$unknown4 = $tmp[12];
$unknown5 = $tmp[13];
$unknown6 = $tmp[14];
$monitoring = $tmp[15];
$public_ip = $hc->format_ip_address($tmp[16]);
$private_ip = $hc->format_ip_address($tmp[17]);
$unknown7 = $tmp[18];
$unknown8 = $tmp[19];
$store = $tmp[20];
$unknown9 = $tmp[21];
$unknown10 = $tmp[22];
$unknown11 = $tmp[23];
$unknown12 = $tmp[24];
$hvm = $tmp[25];
$virt_type = $tmp[26];
$mac = '';
// check for idle instances
$resource = new resource();
if ($state == 'idle') {
$mac = $tmp[30];
$resource->get_instance_by_mac($mac);
$resource_fields["resource_state"] = 'active';
$resource_fields["resource_lastgood"] = $now;
$resource_fields["resource_cpunumber"] = $hc->translate_resource_components('cpu', $type);
$resource_fields["resource_nics"] = $hc->translate_resource_components('net', $type);
$resource_fields["resource_memtotal"] = $hc->translate_resource_components('mem', $type);
$resource_fields["resource_memused"] = "0";
$resource_fields["resource_load"] = "0";
// restore mgmt ip
$resource_fields["resource_ip"] = $resource->network;
$resource->update_info($resource->id, $resource_fields);
} else {
if ($state == 'running') {
// check if existing, if not auto-create resource, image and appliance
if ($resource->exists_by_name($name)) {
// update stats
$resource->get_instance_id_by_hostname($name);
$resource->get_instance_by_id($resource->id);
$resource_fields["resource_state"] = 'active';
$resource_fields["resource_lastgood"] = $now;
$resource_fields["resource_cpunumber"] = $hc->translate_resource_components('cpu', $type);
$resource_fields["resource_nics"] = $hc->translate_resource_components('net', $type);
$resource_fields["resource_memtotal"] = $hc->translate_resource_components('mem', $type);
$resource_fields["resource_memused"] = $resource_fields["resource_memtotal"];
$resource_fields["resource_load"] = "1";
if (strlen($public_ip) && $resource->ip != $public_ip) {
// set public ip, update early and run nagios hook
$resource_fields["resource_ip"] = $public_ip;
$resource->update_info($resource->id, $resource_fields);
// nagios enabled and started ?
if (file_exists($RootDir . "/plugins/nagios3/.running")) {
$virtualization = new virtualization();
$virtualization->get_instance_by_type("hybrid-cloud-vm-local");
$hc_appliance = new appliance();
$hc_appliance->get_instance_by_virtualization_and_resource($virtualization->id, $resource->id);
if (strlen($hc_appliance->name)) {
// special nagios classes
require_once $RootDir . "/plugins/nagios3/class/nagios3_service.class.php";
require_once $RootDir . "/plugins/nagios3/class/nagios3_host.class.php";
// get the nagios service checks
$nagios_host = new nagios3_host();
$nagios_host->get_instance_by_appliance_id($hc_appliance->id);
$active_nagios_services = explode(',', $nagios_host->appliance_services);
示例2: openqrm_cloud_monitor
//.........这里部分代码省略.........
$ca_resource_stop = new resource();
$ca_resource_stop->get_instance_by_id($ca_appliance->resources);
$resource_external_ip = $ca_resource_stop->ip;
$event->log("cloud", $_SERVER['REQUEST_TIME'], 5, "cloud-monitor", "Pausing Appliance {$ca_appliance->name}", "", "", 0, 0, 0);
$openqrm_server->send_command("openqrm_assign_kernel {$ca_resource_stop->id} {$ca_resource_stop->mac} default");
// now stop
$ca_appliance->stop();
// remove resource
$ar_update = array('appliance_resources' => "-1");
// update appliance
$ca_appliance->update($ca_appliance_id, $ar_update);
// reset the cmd field
$ca->set_cmd($ca_id, "noop");
// set state to paused
$ca->set_state($ca_id, "paused");
$phase_five_actions = 1;
break;
case 3:
// restart
$ca_appliance = new appliance();
$ca_appliance->get_instance_by_id($ca_appliance_id);
$ca_resource_id = $ca_appliance->resources;
$ca_resource_restart = new resource();
$ca_resource_restart->get_instance_by_id($ca_resource_id);
$ca_resource_ip = $ca_resource_restart->ip;
$event->log("cloud", $_SERVER['REQUEST_TIME'], 5, "cloud-monitor", "Restarting Appliance {$ca_appliance->name}", "", "", 0, 0, 0);
$ca_resource_restart->send_command("{$ca_resource_ip}", "reboot");
// reset the cmd field
$ca->set_cmd($ca_id, "noop");
sleep(2);
// set state to transition
$resource_fields = array();
$resource_fields["resource_state"] = "transition";
$ca_resource_restart->update_info($ca_resource_id, $resource_fields);
$phase_five_actions = 1;
break;
}
// check if we continue or go on
if ($phase_five_actions == 1) {
$parallel_phase_five_actions++;
if ($max_parallel_phase_five_actions > 0 && $parallel_phase_five_actions >= $max_parallel_phase_five_actions) {
break;
}
}
}
// ###################### end cloudappliance commands ######################
// ##################### start cloudimage-resize-life-cycle ################
// $event->log("cloud", $_SERVER['REQUEST_TIME'], 5, "monitor-hook", "Cloud Phase VI - Cloud Image resize live-cycle", "", "", 0, 0, 0);
$cirlc = new cloudirlc();
$cirlc_list = $cirlc->get_all_ids();
foreach ($cirlc_list as $cdlist) {
$cd_id = $cdlist['cd_id'];
$cd = new cloudirlc();
$cd->get_instance_by_id($cd_id);
$cd_appliance_id = $cd->appliance_id;
$cd_state = $cd->state;
switch ($cd_state) {
case 0:
// remove
$cd->remove($cd_id);
// $event->log("cloud", $_SERVER['REQUEST_TIME'], 5, "cloudirlc", "(REMOVE) Resize life-cycle of Appliance $cd_appliance_id", "", "", 0, 0, 0);
break;
case 1:
// pause
// $event->log("cloud", $_SERVER['REQUEST_TIME'], 5, "cloudirlc", "(PAUSE) Resize life-cycle of Appliance $cd_appliance_id", "", "", 0, 0, 0);
$cloud_app_resize = new cloudappliance();
示例3: resource
$appliance->update($next_appliance_id, $appliance_fields);
// set resource to localboot
$resource = new resource();
$resource->get_instance_by_id($local_server_id);
$openqrm_server->send_command("openqrm_server_set_boot local {$local_server_id} {$resource->mac} 0.0.0.0");
$resource->set_localboot($local_server_id, 1);
// update resource fields with kernel + image
$kernel->get_instance_by_id($kernel_fields["kernel_id"]);
$resource_fields["resource_kernel"] = $kernel->name;
$resource_fields["resource_kernelid"] = $kernel_fields["kernel_id"];
$image->get_instance_by_id($image_fields["image_id"]);
$resource_fields["resource_image"] = $image->name;
$resource_fields["resource_imageid"] = $image_fields["image_id"];
// set capabilites
$resource_fields["resource_capabilities"] = 'TYPE=local-server';
$resource->update_info($local_server_id, $resource_fields);
// add + start hook
$appliance->get_instance_by_id($next_appliance_id);
$now = $_SERVER['REQUEST_TIME'];
$appliance_fields = array();
$appliance_fields['appliance_stoptime'] = $now;
$appliance_fields['appliance_state'] = 'stopped';
// fill in the rest of the appliance info in the array for the plugin hook
$appliance_fields["appliance_id"] = $next_appliance_id;
$appliance_fields["appliance_name"] = $appliance->name;
$appliance_fields["appliance_kernelid"] = $appliance->kernelid;
$appliance_fields["appliance_imageid"] = $appliance->imageid;
$appliance_fields["appliance_cpunumber"] = $appliance->cpunumber;
$appliance_fields["appliance_cpuspeed"] = $appliance->cpuspeed;
$appliance_fields["appliance_cpumodel"] = $appliance->cpumodel;
$appliance_fields["appliance_memtotal"] = $appliance->memtotal;
示例4: resource
// array of resource_fields
// update_info requires :
// resource_id
// array of resource_fields
case 'update_info':
$resource = new resource();
if (strlen($resource_id)) {
$resource->get_instance_by_id($resource_id);
if (!strcmp($resource->event, "reboot")) {
// we do not accept this stats since the resource will be rebooted
// reset the events field
$resource_reboot_fields = array();
$resource_reboot_fields["resource_state"] = "transition";
$resource_reboot_fields["resource_event"] = "reboot1";
$event->log("update_info", $_SERVER['REQUEST_TIME'], 5, "resource-monitor", "Rejecting statistics from rebooting resource {$resource_id} (1)", "", "", 0, 0, $resource_id);
$resource->update_info($resource_id, $resource_reboot_fields);
} else {
if (!strcmp($resource->event, "reboot1")) {
$resource_reboot_fields = array();
$resource_reboot_fields["resource_state"] = "transition";
$resource_reboot_fields["resource_event"] = "reboot2";
$event->log("update_info", $_SERVER['REQUEST_TIME'], 5, "resource-monitor", "Rejecting statistics from rebooting resource {$resource_id} (2)", "", "", 0, 0, $resource_id);
$resource->update_info($resource_id, $resource_reboot_fields);
} else {
if (!strcmp($resource->event, "reboot2")) {
$resource_reboot_fields = array();
$resource_reboot_fields["resource_state"] = "transition";
$resource_reboot_fields["resource_event"] = "reboot3";
$event->log("update_info", $_SERVER['REQUEST_TIME'], 5, "resource-monitor", "Rejecting statistics from rebooting resource {$resource_id} (3)", "", "", 0, 0, $resource_id);
$resource->update_info($resource_id, $resource_reboot_fields);
} else {
示例5: fence_hybrid_cloud_vm_local
function fence_hybrid_cloud_vm_local($host_resource_id, $mac)
{
global $OPENQRM_SERVER_BASE_DIR;
global $OPENQRM_SERVER_IP_ADDRESS;
global $OPENQRM_EXEC_PORT;
global $RESOURCE_INFO_TABLE;
global $event;
$event->log("fence_hybrid_cloud_vm_local", $_SERVER['REQUEST_TIME'], 5, "hybrid-cloud-ha-hook", "Fencing Cloud VM " . $mac, "", "", 0, 0, 0);
$origin_resource = new resource();
$origin_resource->get_instance_by_mac($mac);
// get hybrid-cloud account from origin resource
$hybrid_acl_id = $origin_resource->get_resource_capabilities("HCACL");
$hc = new hybrid_cloud();
$hc->get_instance_by_id($hybrid_acl_id);
$hc_authentication = '';
if ($hc->account_type == 'aws' || $hc->account_type == 'euca') {
$hc_authentication .= ' -O ' . $hc->access_key;
$hc_authentication .= ' -W ' . $hc->secret_key;
}
if ($hc->account_type == 'lc-openstack') {
$hc_authentication .= ' -u ' . $hc->username;
$hc_authentication .= ' -p ' . $hc->password;
$hc_authentication .= ' -q ' . $hc->host;
$hc_authentication .= ' -x ' . $hc->port;
$hc_authentication .= ' -g ' . $hc->tenant;
$hc_authentication .= ' -e ' . $hc->endpoint;
}
$openqrm = new openqrm_server();
$command = $OPENQRM_SERVER_BASE_DIR . "/openqrm/plugins/hybrid-cloud/bin/openqrm-hybrid-cloud-vm fence ";
$command .= ' -i ' . $hc->id;
$command .= ' -n ' . $hc->account_name;
$command .= ' -t ' . $hc->account_type;
$command .= $hc_authentication;
$command .= ' -im ' . $mac;
$command .= ' --openqrm-cmd-mode background';
$event->log("fence_hybrid_cloud_vm_local", $_SERVER['REQUEST_TIME'], 5, "hybrid-cloud-ha-hook", "Running {$command}", "", "", 0, 0, 0);
$openqrm->send_command($command, NULL, true);
$rufields["resource_hostname"] = $hc->account_type . $origin_resource->id;
$origin_resource->update_info($origin_resource->id, $rufields);
// debug
// echo "1:".$command;
}
示例6: create_hybrid_cloud_vm_local
function create_hybrid_cloud_vm_local($host_resource_id, $name, $mac, $memory, $cpu, $swap, $additional_nic_str)
{
global $OPENQRM_SERVER_BASE_DIR;
global $OPENQRM_SERVER_IP_ADDRESS;
global $OPENQRM_EXEC_PORT;
global $RESOURCE_INFO_TABLE;
global $event;
$max_loop = 30;
$ip_wait_loop = 0;
$event->log("create_hybrid_cloud_vm_local", $_SERVER['REQUEST_TIME'], 5, "hybrid-cloud-cloud-hook", "Creating Cloud VM {$name} on Host resource {$host_resource_id}", "", "", 0, 0, 0);
$file = $OPENQRM_SERVER_BASE_DIR . "/openqrm/plugins/hybrid-cloud/etc/openqrm-plugin-hybrid-cloud.conf";
$ini = openqrm_parse_conf($file);
$hc_default_account_id = $ini['OPENQRM_PLUGIN_HYBRID_CLOUD_DEFAULT_ACCOUNT'];
$hc = new hybrid_cloud();
$hc->get_instance_by_id($hc_default_account_id);
$hc_authentication = '';
if ($hc->account_type == 'aws' || $hc->account_type == 'euca') {
$hc_authentication .= ' -O ' . $hc->access_key;
$hc_authentication .= ' -W ' . $hc->secret_key;
$hc_authentication .= ' -iz ' . $ini['OPENQRM_PLUGIN_HYBRID_CLOUD_DEFAULT_AVAILABILITY_ZONE'];
$hc_authentication .= ' -ir ' . $ini['OPENQRM_PLUGIN_HYBRID_CLOUD_DEFAULT_REGION'];
$hc_authentication .= ' -it ' . $hc->translate_resource_components_to_instance_type($cpu, $memory);
}
if ($hc->account_type == 'lc-openstack') {
$hc_authentication .= ' -u ' . $hc->username;
$hc_authentication .= ' -p ' . $hc->password;
$hc_authentication .= ' -q ' . $hc->host;
$hc_authentication .= ' -x ' . $hc->port;
$hc_authentication .= ' -g ' . $hc->tenant;
$hc_authentication .= ' -e ' . $hc->endpoint;
$hc_authentication .= ' -it ' . $hc->translate_resource_components_to_instance_type($cpu, $memory);
}
// set hybrid-cloud account in new resource
$cloud_resource = new resource();
$cloud_resource->get_instance_by_mac($mac);
$cloud_resource->set_resource_capabilities("HCACL", $hc_default_account_id);
// $event->log("create_hybrid_cloud_vm_local", $_SERVER['REQUEST_TIME'], 2, "hybrid-cloud-cloud-hook", "!!! Found new resource ".$cloud_resource->id." and set HC account id", "", "", 0, 0, 0);
// set resource hostname + ip config
// check to have a ip from the dhcpd-resource hook
while ($cloud_resource->ip == "0.0.0.0") {
sleep(1);
clearstatcache();
$cloud_resource->get_instance_by_mac($cloud_resource->mac);
$ip_wait_loop++;
if ($ip_wait_loop > $max_loop) {
break;
}
// $event->log("create_hybrid_cloud_vm_local", $_SERVER['REQUEST_TIME'], 2, "hybrid-cloud-cloud-hook", "!!! Waiting for ip address ".$ip_wait_loop."!", "", "", 0, 0, 0);
}
// save the mgmt ip in the resource network field
$rufields["resource_network"] = $cloud_resource->ip;
$rufields["resource_hostname"] = $hc->account_type . $cloud_resource->id;
$cloud_resource->update_info($cloud_resource->id, $rufields);
// $event->log("create_hybrid_cloud_vm_local", $_SERVER['REQUEST_TIME'], 2, "hybrid-cloud-cloud-hook", "!!! Updated resource with hostname + ip", "", "", 0, 0, 0);
// we need to find the ami name from the appliance->image->root-device
$appliance = new appliance();
$appliance->get_instance_by_name($name);
$image = new image();
$image->get_instance_by_id($appliance->imageid);
// $event->log("create_hybrid_cloud_vm_local", $_SERVER['REQUEST_TIME'], 2, "hybrid-cloud-cloud-hook", "!!! Found AMI ".$image->name." root-dev: ".$image->rootdevice, "", "", 0, 0, 0);
$openqrm = new openqrm_server();
$command = $OPENQRM_SERVER_BASE_DIR . "/openqrm/plugins/hybrid-cloud/bin/openqrm-hybrid-cloud-vm create ";
$command .= ' -i ' . $hc->id;
$command .= ' -n ' . $hc->account_name;
$command .= ' -t ' . $hc->account_type;
$command .= $hc_authentication;
$command .= ' -in ' . $hc->account_type . $cloud_resource->id;
$command .= ' -im ' . $mac;
$command .= ' -a ' . $image->rootdevice;
$command .= ' -ig ' . $ini['OPENQRM_PLUGIN_HYBRID_CLOUD_DEFAULT_SECURITY_GROUP'];
$command .= ' -ik ' . $ini['OPENQRM_PLUGIN_HYBRID_CLOUD_DEFAULT_KEYPAIR'];
$command .= ' --openqrm-cmd-mode background';
// $event->log("create_hybrid_cloud_vm_local", $_SERVER['REQUEST_TIME'], 2, "hybrid-cloud-cloud-hook", "Running $command", "", "", 0, 0, 0);
$openqrm->send_command($command, NULL, true);
}
示例7: openqrm_kvm_resource_virtual_command
function openqrm_kvm_resource_virtual_command($cmd, $resource_fields)
{
global $event;
global $OPENQRM_SERVER_BASE_DIR;
global $OPENQRM_SERVER_IP_ADDRESS;
global $OPENQRM_EXEC_PORT;
$resource_id = $resource_fields["resource_id"];
$resource = new resource();
$resource->get_instance_by_id($resource_id);
$host_resource = new resource();
$host_resource->get_instance_by_id($resource->vhostid);
$virtualization = new virtualization();
$virtualization->get_instance_by_id($resource->vtype);
$openqrm_admin_user = new user("openqrm");
$openqrm_admin_user->set_user();
switch ($cmd) {
case "reboot":
$event->log("openqrm_kvm_resource_virtual_command", $_SERVER['REQUEST_TIME'], 5, "openqrm-kvm-resource-virtual-command-hook.php", "Handling {$cmd} command", "", "", 0, 0, 0);
if ($virtualization->type == "kvm-vm-local") {
$virtual_command = "{$OPENQRM_SERVER_BASE_DIR}/openqrm/plugins/kvm/bin/openqrm-kvm-vm restart_by_mac -m " . $resource->mac . " -u " . $openqrm_admin_user->name . " -p " . $openqrm_admin_user->password . " -d noop --openqrm-cmd-mode background";
$host_resource->send_command($host_resource->ip, $virtual_command);
}
if ($virtualization->type == "kvm-vm-net") {
// simply add to cmd queue. do not use resource->send_command(ip, reboot) since this will re-trigger this hook
$cmd_token = md5(uniqid(rand(), true));
$resource_command = $OPENQRM_SERVER_BASE_DIR . "/openqrm/sbin/openqrm-exec -i " . $resource->ip . " -t " . $cmd_token . " -c reboot";
shell_exec($resource_command);
}
if ($virtualization->type == "kvm") {
$cmd_token = md5(uniqid(rand(), true));
$resource_command = $OPENQRM_SERVER_BASE_DIR . "/openqrm/sbin/openqrm-exec -i " . $resource->ip . " -t " . $cmd_token . " -c reboot";
shell_exec($resource_command);
}
$resource_reboot_fields = array();
$resource_reboot_fields["resource_state"] = "transition";
$resource_reboot_fields["resource_event"] = "reboot";
$resource->update_info($resource->id, $resource_reboot_fields);
break;
case "halt":
$event->log("openqrm_kvm_resource_virtual_command", $_SERVER['REQUEST_TIME'], 5, "openqrm-kvm-resource-virtual-command-hook.php", "Handling {$cmd} command", "", "", 0, 0, 0);
if ($virtualization->type == "kvm-vm-local") {
$virtual_command = "{$OPENQRM_SERVER_BASE_DIR}/openqrm/plugins/kvm/bin/openqrm-kvm-vm stop_by_mac -m " . $resource->mac . " -u " . $openqrm_admin_user->name . " -p " . $openqrm_admin_user->password . " --openqrm-cmd-mode background";
$host_resource->send_command($host_resource->ip, $virtual_command);
}
if ($virtualization->type == "kvm-vm-net") {
// simply add to cmd queue. do not use resource->send_command(ip, reboot) since this will re-trigger this hook
$cmd_token = md5(uniqid(rand(), true));
$resource_command = $OPENQRM_SERVER_BASE_DIR . "/openqrm/sbin/openqrm-exec -i " . $resource->ip . " -t " . $cmd_token . " -c halt";
shell_exec($resource_command);
}
if ($virtualization->type == "kvm") {
// simply add to cmd queue. do not use resource->send_command(ip, reboot) since this will re-trigger this hook
$cmd_token = md5(uniqid(rand(), true));
$resource_command = $OPENQRM_SERVER_BASE_DIR . "/openqrm/sbin/openqrm-exec -i " . $resource->ip . " -t " . $cmd_token . " -c halt";
shell_exec($resource_command);
}
$resource_reboot_fields = array();
$resource_reboot_fields["resource_state"] = "off";
$resource_reboot_fields["resource_event"] = "reboot";
$resource->update_info($resource->id, $resource_reboot_fields);
break;
}
}
示例8: migrate
function migrate()
{
$response = $this->get_response();
if (isset($response->msg)) {
return $response;
}
$form = $response->form;
if (!$form->get_errors() && $this->response->submit()) {
$target = $form->get_request('target');
$vm_resource = new resource();
$vm_resource->get_instance_by_mac($this->mac);
$dest_host_resource = new resource();
$dest_host_resource->get_instance_by_id($target);
$source_host_resource = new resource();
$source_host_resource->get_instance_by_id($vm_resource->vhostid);
// first transfer the VM config from source to destination
$tstatfile = $this->openqrm->get('basedir') . '/plugins/kvm/web/kvm-stat/' . $this->vm . '.transfer_status';
if ($this->file->exists($tstatfile)) {
$this->file->remove($tstatfile);
}
$t_command = $this->openqrm->get('basedir') . '/plugins/kvm/bin/openqrm-kvm-vm transfer_vm_config';
$t_command .= ' -n ' . $this->vm;
$t_command .= ' -k ' . $dest_host_resource->ip;
$t_command .= ' -k1 ' . $source_host_resource->ip;
$t_command .= ' -u ' . $this->openqrm->admin()->name . ' -p ' . $this->openqrm->admin()->password;
$t_command .= ' --openqrm-ui-user ' . $this->user->name;
$t_command .= ' --openqrm-cmd-mode background';
$openqrm = new openqrm_server();
$openqrm->send_command($t_command, NULL, true);
while (!$this->file->exists($tstatfile)) {
usleep(10000);
// sleep 10ms to unload the CPU
clearstatcache();
}
$msg = trim($this->file->get_contents($tstatfile));
if ($msg !== "ok") {
$response->error = $msg;
return $response;
}
// calcuate the migration port
list($o1, $o2, $o3, $o4) = explode(".", $vm_resource->ip, 4);
$kvm_vm_migration_port = $o4 + 6000;
// start as incoming on destination
$s_command = $this->openqrm->get('basedir') . '/plugins/kvm/bin/openqrm-kvm-vm start_as_incoming';
$s_command .= ' -n ' . $this->vm;
$s_command .= ' -j ' . $kvm_vm_migration_port;
$s_command .= ' -u ' . $this->openqrm->admin()->name . ' -p ' . $this->openqrm->admin()->password;
$s_command .= ' --openqrm-ui-user ' . $this->user->name;
$s_command .= ' --openqrm-cmd-mode background';
$statfile = $this->openqrm->get('basedir') . '/plugins/kvm/web/kvm-stat/' . $this->vm . '.vm_migrated_successfully';
if ($this->file->exists($statfile)) {
$this->file->remove($statfile);
}
$dest_host_resource->send_command($dest_host_resource->ip, $s_command);
sleep(5);
$m_command = $this->openqrm->get('basedir') . '/plugins/kvm/bin/openqrm-kvm-vm migrate';
$m_command .= ' -n ' . $this->vm;
$m_command .= ' -k ' . $dest_host_resource->ip;
$m_command .= ' -j ' . $kvm_vm_migration_port;
$m_command .= ' -u ' . $this->openqrm->admin()->name . ' -p ' . $this->openqrm->admin()->password;
$m_command .= ' --openqrm-ui-user ' . $this->user->name;
$m_command .= ' --openqrm-cmd-mode background';
$this->resource->send_command($this->resource->ip, $m_command);
$fields = array();
$fields["resource_vhostid"] = $dest_host_resource->id;
$vm_resource->update_info($vm_resource->id, $fields);
$response->msg = sprintf($this->lang['msg_migrated'], $this->vm, $dest_host_resource->id . ' / ' . $dest_host_resource->ip);
}
return $response;
}
示例9: resource
$resource->get_instance_by_ip($resource_ip);
$resource->update_info($resource->id, $resource_fields);
break;
// halt requires :
// resource_ip
// halt requires :
// resource_ip
case 'halt':
$resource = new resource();
$resource->send_command("{$resource_ip}", "halt");
// set state to off
$resource_fields = array();
$resource_fields["resource_state"] = "off";
$resource = new resource();
$resource->get_instance_by_ip($resource_ip);
$resource->update_info($resource->id, $resource_fields);
break;
// list requires :
// nothing
// list requires :
// nothing
case 'list':
$resource = new resource();
$resource_list = $resource->get_resource_list();
foreach ($resource_list as $resource_l) {
foreach ($resource_l as $key => $val) {
print "{$key}={$val} ";
}
print "\n";
}
exit(0);
示例10: import
function import()
{
$response = '';
$errors = array();
$message = array();
$event = new event();
$instance_command = $this->response->html->request()->get('instance_command');
if ($instance_command !== '') {
switch ($instance_command) {
case 'add':
// instance_command=add
// &instance_name='.$name.'
// &instance_mac='.$mac.'
// &instance_public_ip='.$public_ip.'
// &instance_type='.$type.'
// &instance_keypair='.$keypair.'
// &instance_region='.$region.'
// &instance_ami='.$ami;
$now = $_SERVER['REQUEST_TIME'];
$openqrm = new openqrm_server();
$instance_name = $this->response->html->request()->get('instance_name');
$instance_mac = $this->response->html->request()->get('instance_mac');
$instance_public_ip = $this->response->html->request()->get('instance_public_ip');
$instance_type = $this->response->html->request()->get('instance_type');
$instance_keypair = $this->response->html->request()->get('instance_keypair');
$instance_region = $this->response->html->request()->get('instance_region');
$instance_ami = $this->response->html->request()->get('instance_ami');
// create resource, image and appliance
$event->log("import", $_SERVER['REQUEST_TIME'], 5, "hybrid-cloud-vm-import", "Importing " . $instance_name . " - " . $instance_mac . " - " . $instance_public_ip . " - " . $instance_type . " - " . $instance_keypair . " - " . $instance_region . " - " . $instance_ami . ".", "", "", 0, 0, 0);
$import_resource = new resource();
$deployment = new deployment();
$deployment->get_instance_by_name('ami-deployment');
$virtualization = new virtualization();
$virtualization->get_instance_by_type("hybrid-cloud-vm-local");
// create resource
$resid = (int) str_replace(".", "", str_pad(microtime(true), 15, "0"));
// send command to the openQRM-server
$openqrm->send_command('openqrm_server_add_resource ' . $resid . ' ' . $instance_mac . ' ' . $instance_public_ip);
// add to openQRM database
$resource_fields["resource_id"] = $resid;
$resource_fields["resource_ip"] = $instance_public_ip;
$resource_fields["resource_mac"] = $instance_mac;
$resource_fields["resource_kernel"] = 'local';
$resource_fields["resource_kernelid"] = 0;
$resource_fields["resource_localboot"] = 0;
$resource_fields["resource_hostname"] = $this->hc->account_type . $resid;
$resource_fields["resource_vtype"] = $virtualization->id;
$resource_fields["resource_vhostid"] = 0;
$import_resource->add($resource_fields);
$import_resource->get_instance_by_mac($instance_mac);
// update stats
#if ($state == 'running') {
$rfields["resource_state"] = 'idle';
#$rfields["resource_lastgood"]=$now;
#} else {
# $rfields["resource_state"]='off';
#}
#$import_resource->update_info($import_resource->id, $rfields);
// set account id in resource capabilities
$import_resource->set_resource_capabilities("HCACL", $this->id);
// auto create image object
$storage = new storage();
$storage->get_instance_by_name('ami-image-storage');
$image = new image();
$image->get_instance_by_name($instance_ami);
if (isset($image->id) && $image->id > 0) {
$image_exists = true;
} else {
$image_fields = array();
$vm_image_id = (int) str_replace(".", "", str_pad(microtime(true), 15, "0"));
$image_fields["image_id"] = $vm_image_id;
$image_fields['image_name'] = $instance_ami;
$image_fields['image_type'] = 'ami-deployment';
$image_fields['image_rootfstype'] = 'local';
$image_fields['image_isactive'] = 0;
$image_fields['image_storageid'] = $storage->id;
$image_fields['image_comment'] = "Image Object for AMI {$instance_ami}";
$image_fields['image_rootdevice'] = $instance_ami;
$image->add($image_fields);
# update image object
$image->get_instance_by_id($vm_image_id);
// update resource with image infos
$rfields["resource_id"] = $resid;
$rfields["resource_image"] = $image->name;
$rfields["resource_imageid"] = $image->id;
$import_resource->update_info($import_resource->id, $rfields);
$import_resource->get_instance_by_mac($instance_mac);
}
// create the appliance
$appliance = new appliance();
$appliance->get_instance_by_name($instance_name);
if (isset($appliance->id) && $appliance->id > 0) {
$appliance_exists = true;
} else {
$new_appliance_id = (int) str_replace(".", "", str_pad(microtime(true), 15, "0"));
$afields['appliance_id'] = $new_appliance_id;
$afields['appliance_name'] = $this->hc->account_type . $resid;
$afields['appliance_resources'] = $resid;
$afields['appliance_kernelid'] = '1';
$afields['appliance_imageid'] = $image->id;
//.........这里部分代码省略.........
示例11: add
function add()
{
$response = $this->get_response();
$form = $response->form;
$errors = array();
if (!$form->get_errors() && $this->response->submit()) {
$image_id = $form->get_request('ami_image_id');
$image = new image();
if (isset($image_id) && $image_id !== '') {
$image->get_instance_by_id($image_id);
} else {
$errors[] = $this->lang['error_boot'];
}
if (count($errors) > 0 || $form->get_errors()) {
$response->error = join('<br>', $errors);
} else {
$tables = $this->openqrm->get('table');
$custom_script_parameter = '';
$custom_script = $form->get_request('custom_script');
if (strlen($custom_script)) {
$custom_script_parameter = ' -ic ' . $custom_script;
}
$custom_name = $form->get_request('name');
$resource = new resource();
$id = (int) str_replace(".", "", str_pad(microtime(true), 15, "0"));
if (strlen($custom_name)) {
$name = $custom_name;
} else {
$name = $this->hc->account_type . $id;
}
$ip = "0.0.0.0";
$resource->generate_mac();
$mac = $resource->mac;
// send command to the openQRM-server
$openqrm = new openqrm_server();
$openqrm->send_command('openqrm_server_add_resource ' . $id . ' ' . $mac . ' ' . $ip);
// set resource type
$virtualization = new virtualization();
$virtualization->get_instance_by_type("hybrid-cloud-vm-local");
// add to openQRM database
$fields["resource_id"] = $id;
$fields["resource_ip"] = $ip;
$fields["resource_mac"] = $mac;
$fields["resource_hostname"] = $name;
$fields["resource_localboot"] = 0;
$fields["resource_vtype"] = $virtualization->id;
$fields["resource_vhostid"] = 0;
$fields["resource_image"] = $image->name;
$fields["resource_imageid"] = $image->id;
$rfields["resource_kernel"] = 'default';
$rfields["resource_kernelid"] = 1;
$resource->add($fields);
$resource->get_instance_by_mac($mac);
// set account id in resource capabilities
$resource->set_resource_capabilities("HCACL", $this->hc->id);
$hc_authentication = '';
if ($this->hc->account_type == 'aws' || $this->hc->account_type == 'euca') {
$hc_authentication .= ' -O ' . $this->hc->access_key;
$hc_authentication .= ' -W ' . $this->hc->secret_key;
$hc_authentication .= ' -ir ' . $this->region;
$hc_authentication .= ' -iz ' . $form->get_request('availability_zone');
}
if ($this->hc->account_type == 'lc-openstack') {
$hc_authentication .= ' -u ' . $this->hc->username;
$hc_authentication .= ' -p ' . $this->hc->password;
$hc_authentication .= ' -q ' . $this->hc->host;
$hc_authentication .= ' -x ' . $this->hc->port;
$hc_authentication .= ' -g ' . $this->hc->tenant;
$hc_authentication .= ' -e ' . $this->hc->endpoint;
}
$command = $this->openqrm->get('basedir') . '/plugins/hybrid-cloud/bin/openqrm-hybrid-cloud-vm create';
$command .= ' -i ' . $this->hc->id;
$command .= ' -n ' . $this->hc->account_name;
$command .= ' -t ' . $this->hc->account_type;
$command .= $hc_authentication;
$command .= ' -in ' . $name;
$command .= ' -im ' . $mac;
$command .= ' -a ' . $image->name;
$command .= ' -it ' . $form->get_request('type');
$command .= ' -ik ' . $form->get_request('keypair');
if ($this->hc->account_type == 'aws') {
$command .= ' -subnet ' . $form->get_request('subnet');
} else {
$command .= ' -ig ' . $form->get_request('group');
}
$command .= ' --openqrm-ui-user ' . $this->user->name;
$command .= ' --openqrm-cmd-mode background';
$command .= $custom_script_parameter;
$openqrm->send_command($command, NULL, true);
// check to have a ip from the dhcpd-resource hook
while ($resource->ip == "0.0.0.0") {
sleep(1);
clearstatcache();
$resource->get_instance_by_mac($mac);
}
// save the mgmt ip in the resource network field
$rufields["resource_network"] = $resource->ip;
$resource->update_info($resource->id, $rufields);
$response->resource_id = $id;
$response->msg = sprintf($this->lang['msg_added'], $name);
//.........这里部分代码省略.........
示例12: resource
function resource_new()
{
$response = $this->get_response();
$form = $response->form;
$name = $form->get_request('name');
$ip = $form->get_request('ip');
$mac = $form->get_request('mac');
if (strlen($name)) {
if (!$form->get_errors() && $this->response->submit()) {
// check that mac adress + ip does not yet exists
$resource = new resource();
$resource->get_instance_by_mac($mac);
if (strlen($resource->id)) {
$response->error = sprintf($this->lang['msg_mac_in_use']);
return $response;
}
$resource->get_instance_by_ip($ip);
if (strlen($resource->id)) {
$response->error = sprintf($this->lang['msg_ip_in_use']);
return $response;
}
$tables = $this->openqrm->get('table');
$id = (int) str_replace(".", "", str_pad(microtime(true), 15, "0"));
$mac = strtolower($mac);
// send command to the openQRM-server
$openqrm = new openqrm_server();
$openqrm->send_command('openqrm_server_add_resource ' . $id . ' ' . $mac . ' ' . $ip);
// add to openQRM database
$fields["resource_id"] = $id;
$fields["resource_hostname"] = $name;
$fields["resource_ip"] = $ip;
$fields["resource_mac"] = $mac;
$fields["resource_localboot"] = 0;
$fields["resource_vtype"] = 1;
$fields["resource_vhostid"] = $id;
$fields["resource_state"] = 'unknown';
$fields["resource_lastgood"] = '-1';
$resource->add($fields);
// set lastgood to -1 to prevent automatic checking the state
$resource->update_info($id, $fields);
$response->msg = sprintf($this->lang['msg'], $name);
$response->resource_id = $id;
} else {
$response->error = sprintf($this->lang['msg_add_failed']);
}
}
return $response;
}
示例13: 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();
}
}
}
示例14: 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);
}
示例15: event
global $IMAGE_INFO_TABLE;
global $DEPLOYMENT_INFO_TABLE;
global $OPENQRM_SERVER_BASE_DIR;
// get params
$dhcpd_command = $request->get('dhcpd_command');
$dhcpd_resource_id = $request->get('resource_id');
$dhcpd_resource_ip = $request->get('resource_ip');
// get event + openQRM server
$event = new event();
$openqrm_server = new openqrm_server();
$OPENQRM_SERVER_IP_ADDRESS = $openqrm_server->get_ip_address();
global $OPENQRM_SERVER_IP_ADDRESS;
global $event;
// user/role authentication
if ($OPENQRM_USER->role != "administrator") {
$event->log("authorization", $_SERVER['REQUEST_TIME'], 1, "dhcpd-action", "Un-Authorized access to dhcpd-actions from {$OPENQRM_USER->name}", "", "", 0, 0, 0);
exit;
}
$event->log("{$dhcpd_command}", $_SERVER['REQUEST_TIME'], 5, "dhcpd-action", "Processing dhcpd command {$dhcpd_command}", "", "", 0, 0, 0);
switch ($dhcpd_command) {
case 'post_ip':
$event->log("{$dhcpd_command}", $_SERVER['REQUEST_TIME'], 5, "dhcpd-action", "Updateing resource {$dhcpd_resource_id} with ip {$dhcpd_resource_ip}", "", "", 0, 0, 0);
$dhcpd_resource = new resource();
$dhcpd_resource->get_instance_by_id($dhcpd_resource_id);
$dhcpd_resource_fields["resource_ip"] = $dhcpd_resource_ip;
$dhcpd_resource->update_info($dhcpd_resource_id, $dhcpd_resource_fields);
break;
default:
$event->log("{$dhcpd_command}", $_SERVER['REQUEST_TIME'], 3, "dhcpd-action", "No such dhcpd command ({$dhcpd_command})", "", "", 0, 0, 0);
break;
}