当前位置: 首页>>代码示例>>PHP>>正文


PHP image::get_instance_by_id方法代码示例

本文整理汇总了PHP中image::get_instance_by_id方法的典型用法代码示例。如果您正苦于以下问题:PHP image::get_instance_by_id方法的具体用法?PHP image::get_instance_by_id怎么用?PHP image::get_instance_by_id使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在image的用法示例。


在下文中一共展示了image::get_instance_by_id方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。

示例1: get_ami_deployment_image_rootdevice_identifier

function get_ami_deployment_image_rootdevice_identifier($id)
{
    global $OPENQRM_SERVER_BASE_DIR;
    global $OPENQRM_ADMIN;
    global $event;
    $rootdevice_identifier_array = array();
    $image = new image();
    $image_id_list = $image->get_ids();
    foreach ($image_id_list as $id => $ikey) {
        $image_tmp = new image();
        $image_tmp->get_instance_by_id($id);
        if ($image_tmp->type === "ami-deployment") {
            $rootdevice_identifier_array[] = array("value" => $image_tmp->rootdevice, "label" => $image_tmp->name);
        }
    }
    return $rootdevice_identifier_array;
}
开发者ID:kelubo,项目名称:OpenQRM,代码行数:17,代码来源:image.ami-deployment.php

示例2: switch

 function send_command($resource_ip, $resource_command, $command_timeout = NULL)
 {
     global $OPENQRM_EXEC_PORT;
     global $OPENQRM_SERVER_BASE_DIR;
     global $OPENQRM_EXECUTION_LAYER;
     global $event;
     global $RootDir;
     // here we assume that we are the resource
     // plugin hook in case a resource gets rebooted or halted
     switch ($resource_command) {
         case 'reboot':
             // start the hook
             $plugin = new plugin();
             $enabled_plugins = $plugin->enabled();
             foreach ($enabled_plugins as $index => $plugin_name) {
                 $plugin_start_resource_hook = "{$RootDir}/plugins/{$plugin_name}/openqrm-{$plugin_name}-resource-hook.php";
                 if (file_exists($plugin_start_resource_hook)) {
                     $event->log("start", $_SERVER['REQUEST_TIME'], 5, "resource.class.php", "Found plugin {$plugin_name} handling start-resource event.", "", "", 0, 0, $this->id);
                     // prepare resource_fields array
                     $resource_fields = array();
                     $resource_fields = $this->get_fields($this->id);
                     // include the plugin function file and run it
                     require_once "{$plugin_start_resource_hook}";
                     $resource_function = "openqrm_" . "{$plugin_name}" . "_resource";
                     $resource_function = str_replace("-", "_", $resource_function);
                     $resource_function("start", $resource_fields);
                 }
             }
             // here we check if the resource is virtual or a host and if
             // the virtualization plugin wants to reboot it via the host
             $virtualization = new virtualization();
             $virtualization->get_instance_by_id($this->vtype);
             $virtualization_plugin_name = $virtualization->get_plugin_name();
             $plugin_resource_virtual_command_hook_vm_type = "{$RootDir}/plugins/{$virtualization_plugin_name}/openqrm-{$virtualization_plugin_name}-resource-virtual-command-hook.php";
             // we also give the deployment type a chance to implement virtual commands
             $deployment_plugin_name = '';
             if ($this->imageid != 1) {
                 $image = new image();
                 $image->get_instance_by_id($this->imageid);
                 $storage = new storage();
                 $storage->get_instance_by_id($image->storageid);
                 $deployment = new deployment();
                 $deployment->get_instance_by_id($storage->type);
                 $deployment_plugin_name = $deployment->storagetype;
             }
             $plugin_resource_virtual_command_hook = '';
             $plugin_resource_virtual_command_hook_image_type = "{$RootDir}/plugins/{$deployment_plugin_name}/openqrm-{$deployment_plugin_name}-resource-virtual-command-hook.php";
             //            $plugin_resource_virtual_command_hook_image_type = "$RootDir/plugins/sanboot-storage/openqrm-sanboot-storage-resource-virtual-command-hook.php";
             if (file_exists($plugin_resource_virtual_command_hook_vm_type)) {
                 $event->log("start", $_SERVER['REQUEST_TIME'], 5, "resource.class.php", "Found virtualization {$virtualization_plugin_name} managing virtual command.", "", "", 0, 0, $this->id);
                 $plugin_resource_virtual_command_hook = $plugin_resource_virtual_command_hook_vm_type;
             } else {
                 if (file_exists($plugin_resource_virtual_command_hook_image_type)) {
                     // check if IMAGE_VIRTUAL_RESOURCE_COMMAND=true
                     $event->log("start", $_SERVER['REQUEST_TIME'], 5, "resource.class.php", "Found deploymetn {$deployment_plugin_name} managing virtual command.", "", "", 0, 0, $this->id);
                     $image = new image();
                     $image->get_instance_by_id($this->imageid);
                     $virtual_command_enabled = $image->get_deployment_parameter("IMAGE_VIRTUAL_RESOURCE_COMMAND");
                     if (!strcmp($virtual_command_enabled, "true")) {
                         $event->log("start", $_SERVER['REQUEST_TIME'], 5, "resource.class.php", "Found IMAGE_VIRTUAL_RESOURCE_COMMAND enabled, using virtual command.", "", "", 0, 0, $this->id);
                         $plugin_resource_virtual_command_hook = $plugin_resource_virtual_command_hook_image_type;
                         $virtualization_plugin_name = $deployment_plugin_name;
                     } else {
                         $event->log("start", $_SERVER['REQUEST_TIME'], 5, "resource.class.php", "Found IMAGE_VIRTUAL_RESOURCE_COMMAND disabled, using regular command.", "", "", 0, 0, $this->id);
                     }
                 }
             }
             if (strlen($plugin_resource_virtual_command_hook)) {
                 $event->log("start", $_SERVER['REQUEST_TIME'], 5, "resource.class.php", "Found plugin {$virtualization_plugin_name} virtually handling the reboot command.", "", "", 0, 0, $this->id);
                 // prepare resource_fields array
                 $resource_fields = array();
                 $resource_fields = $this->get_fields($this->id);
                 // include the plugin function file and run it
                 require_once "{$plugin_resource_virtual_command_hook}";
                 $resource_function = "openqrm_" . "{$virtualization_plugin_name}" . "_resource_virtual_command";
                 $resource_function = str_replace("-", "_", $resource_function);
                 $resource_function("reboot", $resource_fields);
                 // the virtual reboot function can only be
                 // implemented by a single plugin depending on the
                 // resource type. So we return after that and
                 // do not try to reboot the resource via its ip
                 return;
             }
             break;
         case 'halt':
             // stop hook
             $plugin = new plugin();
             $enabled_plugins = $plugin->enabled();
             foreach ($enabled_plugins as $index => $plugin_name) {
                 $plugin_start_resource_hook = "{$RootDir}/plugins/{$plugin_name}/openqrm-{$plugin_name}-resource-hook.php";
                 if (file_exists($plugin_start_resource_hook)) {
                     $event->log("stop", $_SERVER['REQUEST_TIME'], 5, "resource.class.php", "Found plugin {$plugin_name} handling start-resource event.", "", "", 0, 0, $this->id);
                     // prepare resource_fields array
                     $resource_fields = array();
                     $resource_fields = $this->get_fields($this->id);
                     // include the plugin function file and run it
                     require_once "{$plugin_start_resource_hook}";
                     $resource_function = "openqrm_" . "{$plugin_name}" . "_resource";
                     $resource_function = str_replace("-", "_", $resource_function);
                     $resource_function("stop", $resource_fields);
//.........这里部分代码省略.........
开发者ID:kelubo,项目名称:OpenQRM,代码行数:101,代码来源:resource.class.php

示例3: image

 function get_response()
 {
     $response = $this->response;
     $form = $response->get_form($this->actions_name, 'install2');
     $id = $this->response->html->request()->get('image_id');
     $install_server = $this->response->html->request()->get('install_server');
     $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');
     $image = new image();
     $image->get_instance_by_id($id);
     $storage = new storage();
     $storage->get_instance_by_id($install_server);
     $deployment = new deployment();
     $deployment->get_instance_by_id($storage->type);
     // require template-deployment file
     $local_deployment_templates_identifier_hook = $this->openqrm->get('basedir') . "/web/boot-service/template." . $deployment->type . ".php";
     if ($this->file->exists($local_deployment_templates_identifier_hook)) {
         require_once "{$local_deployment_templates_identifier_hook}";
         $get_deployment_templates_function = "get_" . "{$deployment->type}" . "_templates";
         $get_deployment_templates_function = str_replace("-", "_", $get_deployment_templates_function);
         $local_deployment_templates_arr = $get_deployment_templates_function($install_server);
         // get additional optional local-deployment parameters from the template hook
         $get_additional_parameters_function = "get_" . "{$deployment->type}" . "_additional_parameters";
         $get_additional_parameters_function = str_replace("-", "_", $get_additional_parameters_function);
         $additional_local_deployment_parameter = $get_additional_parameters_function();
     }
     // persistent deployment ?
     $local_deployment_persistent_arr = array();
     $local_deployment_persistent_arr[] = array("value" => "0", "label" => "First boot");
     $local_deployment_persistent_arr[] = array("value" => "1", "label" => "Persistent");
     $d['template']['label'] = $this->lang['form_install_template'];
     $d['template']['required'] = false;
     $d['template']['object']['type'] = 'htmlobject_select';
     $d['template']['object']['attrib']['index'] = array('value', 'label');
     $d['template']['object']['attrib']['id'] = 'template';
     $d['template']['object']['attrib']['name'] = 'template';
     $d['template']['object']['attrib']['options'] = $local_deployment_templates_arr;
     $d['persistent']['label'] = $this->lang['form_install_persistent'];
     $d['persistent']['required'] = false;
     $d['persistent']['object']['type'] = 'htmlobject_select';
     $d['persistent']['object']['attrib']['index'] = array('value', 'label');
     $d['persistent']['object']['attrib']['id'] = 'persistent';
     $d['persistent']['object']['attrib']['name'] = 'persistent';
     $d['persistent']['object']['attrib']['options'] = $local_deployment_persistent_arr;
     $n = 1;
     foreach ($additional_local_deployment_parameter as $paramters) {
         if (!isset($paramters['label'])) {
             continue;
         }
         $d['parameter' . $n]['label'] = $paramters['label'];
         $d['parameter' . $n]['required'] = false;
         $d['parameter' . $n]['object']['type'] = 'htmlobject_input';
         $d['parameter' . $n]['object']['attrib']['id'] = 'parameter' . $n;
         $d['parameter' . $n]['object']['attrib']['name'] = 'parameter' . $n;
         $n++;
     }
     for ($j = $n; $j <= 4; $j++) {
         $d['parameter' . $j] = '';
     }
     $form->add($d);
     $response->form = $form;
     return $response;
 }
开发者ID:kelubo,项目名称:OpenQRM,代码行数:67,代码来源:image.install2.class.php

示例4: imtarget

 function imtarget()
 {
     $h = array();
     $h['image_icon']['title'] = '&#160;';
     $h['image_icon']['sortable'] = false;
     $h['image_id']['title'] = $this->lang['table_id'];
     $h['image_name']['title'] = $this->lang['table_name'];
     $h['image_version']['title'] = $this->lang['table_version'];
     $h['image_type']['title'] = $this->lang['table_deployment'];
     $h['image_isactive']['title'] = $this->lang['table_isactive'];
     $h['image_comment']['title'] = $this->lang['table_comment'];
     $h['image_comment']['sortable'] = false;
     $h['edit']['title'] = '&#160;';
     $h['edit']['sortable'] = false;
     $image = new image();
     $params = $this->response->get_array($this->actions_name, 'target');
     $b = array();
     $table = $this->response->html->tablebuilder('hybridcloud_imtarget', $params);
     $table->offset = 0;
     $table->sort = 'image_id';
     $table->limit = 10;
     $table->order = 'ASC';
     $table->max = $image->get_count();
     $table->init();
     $image_arr = $image->display_overview(0, 10000, $table->sort, $table->order);
     $image_icon = "/openqrm/base/img/image.png";
     foreach ($image_arr as $index => $image_db) {
         // prepare the values for the array
         $image = new image();
         $image->get_instance_by_id($image_db["image_id"]);
         if ($image->type === 'lvm-nfs-deployment' || $image->type === 'nfs-deployment') {
             $image_comment = $image_db["image_comment"];
             if (!strlen($image_comment)) {
                 $image_comment = "-";
             }
             $image_version = $image_db["image_version"];
             if (!strlen($image_version)) {
                 $image_version = "&#160;";
             }
             // edit
             $a = $this->response->html->a();
             $a->title = $this->lang['action_import'];
             $a->label = $this->lang['action_import'];
             $a->handler = 'onclick="wait();"';
             $a->css = 'edit';
             $a->href = $this->response->get_url($this->actions_name, 'imparams') . '&image_id=' . $image->id;
             $image_edit = $a->get_string();
             // set the active icon
             $isactive_icon = "/openqrm/base/img/enable.png";
             if ($image_db["image_isactive"] == 1) {
                 $isactive_icon = "/openqrm/base/img/disable.png";
             }
             $image_isactive_icon = "<img src=" . $isactive_icon . " width='24' height='24' alt='State'>";
             $b[] = array('image_icon' => "<img width='24' height='24' src='" . $image_icon . "'>", 'image_id' => $image_db["image_id"], 'image_name' => $image_db["image_name"], 'image_version' => $image_version, 'image_type' => $image_db["image_type"], 'image_isactive' => $image_isactive_icon, 'image_comment' => $image_comment, 'edit' => $image_edit);
         }
     }
     $table->id = 'Tabelle';
     $table->css = 'htmlobject_table';
     $table->border = 1;
     $table->cellspacing = 0;
     $table->cellpadding = 3;
     $table->autosort = false;
     $table->sort_link = false;
     $table->max = count($b);
     $table->head = $h;
     $table->body = $b;
     $table->limit_select = array(array("value" => 10, "text" => 10), array("value" => 20, "text" => 20), array("value" => 30, "text" => 30), array("value" => 50, "text" => 50), array("value" => 100, "text" => 100));
     require_once $this->openqrm->get('basedir') . '/plugins/hybrid-cloud/web/class/hybrid-cloud.class.php';
     $hc = new hybrid_cloud();
     $hc->get_instance_by_id($this->id);
     $d['name'] = $hc->account_name;
     $d['form'] = $this->response->get_form($this->actions_name, 'target', false)->get_elements();
     $d['table'] = $table;
     return $d;
 }
开发者ID:kelubo,项目名称:OpenQRM,代码行数:75,代码来源:hybrid-cloud.imtarget.class.php

示例5: select

 function select()
 {
     $head['cr_status']['title'] = $this->lang['cloud_ui_request_status'];
     $head['cr_id']['title'] = $this->lang['cloud_ui_request_id'];
     $head['cr_id']['hidden'] = true;
     $head['cr_appliance_hostname']['title'] = $this->lang['cloud_ui_request_appliance_name'];
     $head['cr_appliance_hostname']['hidden'] = true;
     #$head['cr_start']['title'] = $this->lang['cloud_ui_request_start'];
     #$head['cr_stop']['title'] = $this->lang['cloud_ui_request_stop'];
     #$head['cr_kernel_id']['title'] = $this->lang['cloud_ui_request_os'];
     #$head['cr_image_id']['title'] = $this->lang['cloud_ui_request_template'];
     #$head['cr_resource_type_req']['title'] = $this->lang['cloud_ui_request_system_type'];
     $head['cr_req']['title'] = '&#160;';
     $head['cr_req']['sortable'] = false;
     #$head['cr_appliance_id']['title'] = $this->lang['cloud_ui_request_appliance_id'];
     $head['cr_details']['title'] = $this->lang['cloud_ui_request_details'];
     $head['cr_details']['sortable'] = false;
     $table = $this->response->html->tablebuilder('cloud_request_table', $this->response->get_array($this->actions_name, 'requests'));
     $table->css = 'htmlobject_table';
     $table->border = 0;
     $table->id = 'cloud_requests';
     $table->head = $head;
     $table->sort = 'cr_id';
     $table->order = 'DESC';
     $table->limit = 5;
     $table->sort_link = false;
     $table->autosort = false;
     $table->max = $this->cloudrequest->get_count_per_user($this->clouduser->id);
     $table->identifier = 'cr_id';
     $table->identifier_name = $this->identifier_name;
     $table->actions = array('deprovision');
     $table->actions_name = $this->actions_name;
     $table->form_action = $this->response->html->thisfile;
     $table->limit_select = array(array("value" => 5, "text" => 5), array("value" => 10, "text" => 10), array("value" => 20, "text" => 20), array("value" => 30, "text" => 30), array("value" => 40, "text" => 40), array("value" => 50, "text" => 50));
     // $table->form_action     = $this->response->html->thisfile;
     $table->init();
     $kernel = new kernel();
     $image = new image();
     $virtualization = new virtualization();
     $cloud_request_array = $this->cloudrequest->display_overview_per_user($this->clouduser->id, $table->offset, $table->limit, $table->sort, $table->order);
     $ta = '';
     foreach ($cloud_request_array as $index => $cz) {
         $this->cloudrequest->get_instance_by_id($cz['cr_id']);
         $cr_status = $this->cloudrequest->getstatus($this->cloudrequest->id);
         if (isset($this->cloudrequest->kernel_id)) {
             $kernel->get_instance_by_id($this->cloudrequest->kernel_id);
         }
         if (isset($this->cloudrequest->image_id)) {
             $image->get_instance_by_id($this->cloudrequest->image_id);
         }
         if (isset($this->cloudrequest->resource_type_req)) {
             $virtualization->get_instance_by_id($this->cloudrequest->resource_type_req);
         }
         #echo '<pre>';
         #print_r($this->cloudrequest);
         #echo '</pre>';
         // hostname
         $appliance_hostname = '-';
         if (strlen($this->cloudrequest->appliance_hostname)) {
             $appliance_hostname = $this->cloudrequest->appliance_hostname;
         }
         $cr_req = '<b>' . $this->lang['cloud_ui_request_id'] . '</b>: ' . $this->cloudrequest->id . "<br>";
         $cr_req .= '<b>' . $this->lang['cloud_ui_request_appliance_name'] . '</b>: ' . $appliance_hostname . "<br>";
         $cr_req .= '<b>' . $this->lang['cloud_ui_request_start'] . '</b>: ' . date("d-m-Y H:i", $this->cloudrequest->start) . "<br>";
         $cr_req .= '<b>' . $this->lang['cloud_ui_request_stop'] . '</b>: ' . date("d-m-Y H:i", $this->cloudrequest->stop) . "<br>";
         $cr_req .= '<b>' . $this->lang['cloud_ui_request_cpu'] . '</b>: ' . $this->cloudrequest->cpu_req . "<br>";
         $cr_req .= '<b>' . $this->lang['cloud_ui_request_memory'] . '</b>: ' . $this->cloudrequest->ram_req . " MB<br>";
         $cr_req .= '<b>' . $this->lang['cloud_ui_request_disk'] . '</b>: ' . $this->cloudrequest->disk_req . " MB<br>";
         $cr_req .= '<b>' . $this->lang['cloud_ui_request_network'] . '</b>: ' . $this->cloudrequest->network_req . "<br>";
         // details action
         $a = $this->response->html->a();
         $a->title = $this->lang['cloud_ui_request_components_details'];
         $a->label = $this->lang['cloud_ui_request_components_details'];
         $a->handler = 'onclick="javascript:cloudopenPopup(' . $this->cloudrequest->id . ');"';
         $a->css = 'edit';
         $a->href = '#';
         $ta[] = array('cr_status' => $cr_status, 'cr_id' => $this->cloudrequest->id, 'cr_appliance_hostname' => $appliance_hostname, 'cr_req' => $cr_req, 'cr_details' => $a->get_string());
     }
     $table->body = $ta;
     return $table;
 }
开发者ID:kelubo,项目名称:OpenQRM,代码行数:81,代码来源:cloud-ui.requests.class.php

示例6: remove_nfs_deployment

function remove_nfs_deployment($cloud_image_id)
{
    global $OPENQRM_SERVER_BASE_DIR;
    global $OPENQRM_SERVER_IP_ADDRESS;
    global $OPENQRM_EXEC_PORT;
    global $RESOURCE_INFO_TABLE;
    global $event;
    $event->log("remove_nfs_deployment", $_SERVER['REQUEST_TIME'], 5, "nfs-deployment-cloud-hook", "Removing image on storage", "", "", 0, 0, 0);
    $cloudimage = new cloudimage();
    $cloudimage->get_instance_by_id($cloud_image_id);
    // get image
    $image = new image();
    $image->get_instance_by_id($cloudimage->image_id);
    $image_id = $image->id;
    $image_name = $image->name;
    $image_type = $image->type;
    $image_version = $image->version;
    $image_rootdevice = $image->rootdevice;
    $image_rootfstype = $image->rootfstype;
    $image_storageid = $image->storageid;
    $image_isshared = $image->isshared;
    $image_comment = $image->comment;
    $image_capabilities = $image->capabilities;
    $image_deployment_parameter = $image->deployment_parameter;
    // get image storage
    $storage = new storage();
    $storage->get_instance_by_id($image_storageid);
    $storage_resource_id = $storage->resource_id;
    // get storage resource
    $resource = new resource();
    $resource->get_instance_by_id($storage_resource_id);
    $resource_id = $resource->id;
    $resource_ip = $resource->ip;
    // nfs-storage
    $image_location_name = basename($image_rootdevice);
    $image_remove_clone_cmd = $OPENQRM_SERVER_BASE_DIR . "/openqrm/plugins/nfs-storage/bin/openqrm-nfs-storage remove -n " . $image_location_name . " --openqrm-cmd-mode background";
    $event->log("remove_nfs_deployment", $_SERVER['REQUEST_TIME'], 5, "nfs-deployment-cloud-hook", "Running : {$image_remove_clone_cmd}", "", "", 0, 0, 0);
    $resource->send_command($resource_ip, $image_remove_clone_cmd);
}
开发者ID:kelubo,项目名称:OpenQRM,代码行数:39,代码来源:openqrm-nfs-deployment-cloud-hook.php

示例7: create

 function create($cu_id, $virtualization_type, $name, $mac, $additional_nics, $cpu, $memory, $disk, $timeout, $vncpassword, $source_image_id = null)
 {
     global $OPENQRM_SERVER_BASE_DIR;
     global $OPENQRM_SERVER_IP_ADDRESS;
     global $OPENQRM_EXEC_PORT;
     global $RESOURCE_INFO_TABLE;
     global $host_start_from_off_timeout;
     global $RootDir;
     $this->init($timeout);
     global $event;
     $vmware_mac_address_space = "00:50:56";
     $vtype = new virtualization();
     $vtype->get_instance_by_id($virtualization_type);
     $virtualization_plugin_name = $vtype->get_plugin_name();
     $event->log("create", $_SERVER['REQUEST_TIME'], 5, "cloudvm.class.php", "Trying to create new VM type {$virtualization_type} ({$virtualization_plugin_name}) {$mac}/{$cpu}/{$memory}/{$disk}", "", "", 0, 0, 0);
     // here we need to find out if we have a virtualization host providing the type of VMs as requested
     // find out the host virtualization type via the plugin name
     $vhost_type = new virtualization();
     $vhost_type->get_instance_by_type($virtualization_plugin_name);
     $event->log("create", $_SERVER['REQUEST_TIME'], 5, "cloudvm.class.php", "Trying to find a virtualization host from type {$vhost_type->type} {$vhost_type->name}", "", "", 0, 0, 0);
     // check if resource-pooling is enabled
     $cp_conf = new cloudconfig();
     $show_resource_pools = $cp_conf->get_value(25);
     // resource_pools enabled ?
     $vm_provision_delay = $cp_conf->get_value(40);
     // delay provisioning of VMs ?
     $vm_loadbalance_algorithm = $cp_conf->get_value(41);
     // which LB to select ?
     // for all in appliance list, find virtualization host appliances
     $appliance_tmp = new appliance();
     $appliance_id_list = $appliance_tmp->get_all_ids();
     $active_appliance_list = array();
     $active_appliance_resource_list = array();
     foreach ($appliance_id_list as $id_arr) {
         foreach ($id_arr as $id) {
             $appliance = new appliance();
             $appliance->get_instance_by_id($id);
             // active ?
             if ($appliance->stoptime == 0 || $appliance->resources == 0) {
                 if ($appliance->virtualization == $vhost_type->id) {
                     // we have found an active appliance from the right virtualization type
                     // Now we check that its resource is active and not in error
                     $cvm_resource = new resource();
                     $cvm_resource->get_instance_by_id($appliance->resources);
                     if (strcmp($cvm_resource->state, "active")) {
                         continue;
                     }
                     // here we check if there is still enough space
                     // to create the new VM -> max_vm setting per resource
                     $res_hostlimit = new cloudhostlimit();
                     $res_hostlimit->get_instance_by_resource($appliance->resources);
                     if (strlen($res_hostlimit->id)) {
                         if ($res_hostlimit->max_vms >= 0) {
                             $new_current_vms = $res_hostlimit->current_vms + 1;
                             if ($new_current_vms > $res_hostlimit->max_vms) {
                                 $event->log("create", $_SERVER['REQUEST_TIME'], 2, "cloudvm.class.php", "Hostlimit max_vm is reached for resource {$appliance->resources}", "", "", 0, 0, $appliance->resources);
                                 continue;
                             }
                         }
                     }
                     // resource pooling enabled ?
                     if (strcmp($show_resource_pools, "true")) {
                         // disabled, add any appliance from the right virtualization type
                         $active_appliance_list[] .= $id;
                         $active_appliance_resource_list[] .= $appliance->resources;
                         //$event->log("create", $_SERVER['REQUEST_TIME'], 2, "cloudvm.class.php", "------- resource pooling is disabled", "", "", 0, 0, 0);
                     } else {
                         //$event->log("create", $_SERVER['REQUEST_TIME'], 2, "cloudvm.class.php", "------- resource pooling is enabled $appliance->resources", "", "", 0, 0, 0);
                         // resource pooling enabled, check to which user group the resource belongs to
                         $private_resource = new cloudrespool();
                         $private_resource->get_instance_by_resource($appliance->resources);
                         // is this resource configured in the resource pools ?
                         //$event->log("create", $_SERVER['REQUEST_TIME'], 2, "cloudvm.class.php", "------- resource pool id $private_resource->id !", "", "", 0, 0, 0);
                         if (strlen($private_resource->id)) {
                             //$event->log("create", $_SERVER['REQUEST_TIME'], 2, "cloudvm.class.php", "------- resource $appliance->resources is in a resource pool", "", "", 0, 0, 0);
                             // is it hidden ?
                             if ($private_resource->cg_id >= 0) {
                                 //$event->log("create", $_SERVER['REQUEST_TIME'], 2, "cloudvm.class.php", "------- resource $appliance->resources is also configured in resource pool (not hidden)", "", "", 0, 0, 0);
                                 $cloud_user = new clouduser();
                                 $cloud_user->get_instance_by_id($cu_id);
                                 $cloud_user_group = new cloudusergroup();
                                 $cloud_user_group->get_instance_by_id($cloud_user->cg_id);
                                 //$event->log("create", $_SERVER['REQUEST_TIME'], 2, "cloudvm.class.php", "------- we have found the users group $cloud_user_group->id", "", "", 0, 0, 0);
                                 // does it really belongs to the users group ?
                                 if ($private_resource->cg_id == $cloud_user_group->id) {
                                     // resource belongs to the users group, add appliance to list
                                     //$event->log("create", $_SERVER['REQUEST_TIME'], 2, "cloudvm.class.php", "------- adding appliance $id   ", "", "", 0, 0, 0);
                                     $active_appliance_list[] .= $id;
                                     $active_appliance_resource_list[] .= $appliance->resources;
                                     //} else {
                                     //    $event->log("create", $_SERVER['REQUEST_TIME'], 2, "cloudvm.class.php", "Appliance $id (resource $appliance->resources) is NOT in dedicated for the users group", "", "", 0, 0, 0);
                                 }
                                 //} else {
                                 //    $event->log("create", $_SERVER['REQUEST_TIME'], 2, "cloudvm.class.php", "Appliance $id (resource $appliance->resources) is marked as hidden", "", "", 0, 0, 0);
                             }
                         }
                     }
                 }
             }
         }
//.........这里部分代码省略.........
开发者ID:kelubo,项目名称:OpenQRM,代码行数:101,代码来源:cloudvm.class.php

示例8: create_private_template_deployment

function create_private_template_deployment($cloud_image_id, $private_disk, $private_image_name)
{
    global $OPENQRM_SERVER_BASE_DIR;
    global $OPENQRM_SERVER_IP_ADDRESS;
    global $OPENQRM_EXEC_PORT;
    global $RESOURCE_INFO_TABLE;
    global $event;
    $event->log("create_private_template_deployment", $_SERVER['REQUEST_TIME'], 5, "template_deployment-cloud-hook", "Creating private image on storage", "", "", 0, 0, 0);
    // we got the cloudimage id here, get the image out of it
    $cloudimage = new cloudimage();
    $cloudimage->get_instance_by_id($cloud_image_id);
    // get image
    $image = new image();
    $image->get_instance_by_id($cloudimage->image_id);
    $image_id = $image->id;
    $image_name = $image->name;
    $image_type = $image->type;
    $image_version = $image->version;
    $image_rootdevice = $image->rootdevice;
    $image_rootfstype = $image->rootfstype;
    $image_storageid = $image->storageid;
    $image_isshared = $image->isshared;
    $image_comment = $image->comment;
    $image_capabilities = $image->capabilities;
    $image_deployment_parameter = $image->deployment_parameter;
    // get image storage
    $storage = new storage();
    $storage->get_instance_by_id($image_storageid);
    $storage_resource_id = $storage->resource_id;
    // get storage resource
    $resource = new resource();
    $resource->get_instance_by_id($storage_resource_id);
    $resource_id = $resource->id;
    $resource_ip = $resource->ip;
    // create an admin user to post when cloning has finished
    $openqrm_admin_user = new user("openqrm");
    $openqrm_admin_user->set_user();
    // parse the volume group info in the identifier
    $volume_group_location = dirname($image_rootdevice);
    $volume_group = basename($volume_group_location);
    $image_location_name = basename($image_rootdevice);
    // For template vms we assume that the image is located on the vm-host
    // so we send the auth command to the vm-host instead of the image storage.
    // This enables using a SAN backend with dedicated volumes per vm-host which all
    // contain all "golden-images" which are used for snapshotting.
    // We do this to overcome the current lvm limitation of not supporting cluster-wide snapshots
    //
    // Still we need to send the remove command to the storage resource since the
    // create-phase automatically adapted the image->storageid, we cannot use the vm-resource here
    // because cloudimage->resource_id will be set to -1 when the cloudapp is in paused/resize/private state
    //
    if ($cloudimage->resource_id > 0) {
        $vm_resource = new resource();
        $vm_resource->get_instance_by_id($cloudimage->resource_id);
        // get the openvz host
        $vm_host_resource = new resource();
        $vm_host_resource->get_instance_by_id($vm_resource->vhostid);
        // san backend ?
        if ($vm_host_resource->id != $resource->id) {
            $event->log("create_private_template_deployment", $_SERVER['REQUEST_TIME'], 5, "template_deployment-cloud-hook", "Image {$image_id} IS NOT available on this template host, {$resource->id} not equal {$vm_host_resource->id} !! Assuming SAN Backend", "", "", 0, 0, $appliance_id);
        } else {
            $event->log("create_private_template_deployment", $_SERVER['REQUEST_TIME'], 5, "template_deployment-cloud-hook", "Image {$image_id} IS available on this template host, {$resource->id} equal {$vm_host_resource->id}", "", "", 0, 0, $appliance_id);
        }
    }
    $image_resize_cmd = $OPENQRM_SERVER_BASE_DIR . "/openqrm/plugins/template/bin/openqrm-template clone -n " . $image_location_name . " -s " . $private_image_name . " -v " . $volume_group . " -m " . $private_disk . " -u " . $openqrm_admin_user->name . " -p " . $openqrm_admin_user->password . " --openqrm-cmd-mode background";
    $event->log("create_private_template_deployment", $_SERVER['REQUEST_TIME'], 5, "template_deployment-cloud-hook", "Running : {$image_resize_cmd}", "", "", 0, 0, 0);
    $resource->send_command($resource_ip, $image_resize_cmd);
    // set the storage specific image root_device parameter
    $new_rootdevice = str_replace($image_location_name, $private_image_name, $image->rootdevice);
    return $new_rootdevice;
}
开发者ID:kelubo,项目名称:OpenQRM,代码行数:71,代码来源:openqrm-template-deployment-cloud-hook.php

示例9: openqrm_kvm_appliance

function openqrm_kvm_appliance($cmd, $appliance_fields)
{
    global $event;
    global $OPENQRM_SERVER_BASE_DIR;
    global $OPENQRM_SERVER_IP_ADDRESS;
    global $OPENQRM_EXEC_PORT;
    $appliance_id = $appliance_fields["appliance_id"];
    $appliance_name = $appliance_fields["appliance_name"];
    $resource = new resource();
    $resource->get_instance_by_id($appliance_fields["appliance_resources"]);
    $appliance_ip = $resource->ip;
    $appliance = new appliance();
    $appliance->get_instance_by_id($appliance_id);
    // check appliance values, maybe we are in update and they are incomplete
    if ($appliance->imageid == 1) {
        return;
    }
    if ($resource->id == "-1" || $resource->id == "" || !isset($resource->vtype)) {
        return;
    }
    $openqrm_admin_user = new user("openqrm");
    $openqrm_admin_user->set_user();
    $event->log("openqrm_kvm_appliance", $_SERVER['REQUEST_TIME'], 5, "openqrm-kvm-appliance-hook.php", "Handling {$cmd} event {$appliance_id}/{$appliance_name}/{$appliance_ip}", "", "", 0, 0, $appliance_id);
    switch ($cmd) {
        case "start":
            // send command to assign image and start vm
            // NOTICE : please enable this hook only if you are using the ip-mgmt plugin with vlans
            // check if resource type -> kvm-vm-net
            //			$virtualization = new virtualization();
            //			$virtualization->get_instance_by_type("kvm-vm-net");
            //			$kvm_host_resource = new resource();
            //			$kvm_host_resource->get_instance_by_id($resource->vhostid);
            //			if ($resource->vtype != $virtualization->id) {
            //				$kvm_command="$OPENQRM_SERVER_BASE_DIR/openqrm/plugins/kvm/bin/openqrm-kvm-vm reset_vlans_by_mac -b start -m $resource->mac";
            //				$kvm_host_resource->send_command($kvm_host_resource->ip, $kvm_command);
            //				return;
            //			}
            // check resource type -> kvm-vm-local
            $virtualization = new virtualization();
            $virtualization->get_instance_by_type("kvm-vm-local");
            if ($resource->vtype != $virtualization->id) {
                $event->log("openqrm_kvm_appliance", $_SERVER['REQUEST_TIME'], 5, "openqrm-kvm-appliance-hook.php", "{$appliance_id} is not from type kvm-vm, skipping .. {$appliance_name}/{$appliance_ip}", "", "", 0, 0, $appliance_id);
                return;
            }
            // check image is on the same storage server
            // get the kvm host resource
            $kvm_host_resource = new resource();
            $kvm_host_resource->get_instance_by_id($resource->vhostid);
            // get the kvm resource
            $image = new image();
            $image->get_instance_by_id($appliance->imageid);
            $storage = new storage();
            $storage->get_instance_by_id($image->storageid);
            $kvm_resource = new resource();
            $kvm_resource->get_instance_by_id($storage->resource_id);
            if ($kvm_host_resource->id != $kvm_resource->id) {
                $event->log("openqrm_kvm_appliance", $_SERVER['REQUEST_TIME'], 5, "openqrm-kvm-appliance-hook.php", "Appliance {$appliance_id} image is not available on this kvm host. Assuming SAN-Backend", "", "", 0, 0, $appliance_id);
            }
            $kvm_command = $OPENQRM_SERVER_BASE_DIR . "/openqrm/plugins/kvm/bin/openqrm-kvm-vm start_by_mac -m " . $resource->mac . " -d " . $image->rootdevice . " -u " . $openqrm_admin_user->name . " -p " . $openqrm_admin_user->password;
            $kvm_host_resource->send_command($kvm_host_resource->ip, $kvm_command);
            break;
        case "stop":
            // send command to stop the vm and deassign image
            // NOTICE : please enable this hook only if you are using the ip-mgmt plugin with vlans
            // check if resource type -> kvm-vm-net
            //			$virtualization = new virtualization();
            //			$virtualization->get_instance_by_type("kvm-vm-net");
            //			$kvm_host_resource = new resource();
            //			$kvm_host_resource->get_instance_by_id($resource->vhostid);
            //			if ($resource->vtype != $virtualization->id) {
            //				$kvm_command="$OPENQRM_SERVER_BASE_DIR/openqrm/plugins/kvm/bin/openqrm-kvm reset_vlans_by_mac -b stop -m $resource->mac";
            //				$kvm_host_resource->send_command($kvm_host_resource->ip, $kvm_command);
            //				return;
            //			}
            // check resource type -> kvm-vm-local
            $virtualization = new virtualization();
            $virtualization->get_instance_by_type("kvm-vm-local");
            if ($resource->vtype != $virtualization->id) {
                $event->log("openqrm_kvm_appliance", $_SERVER['REQUEST_TIME'], 5, "openqrm-kvm-appliance-hook.php", "{$appliance_id} is not from type kvm-vm, skipping .. {$appliance_name}/{$appliance_ip}", "", "", 0, 0, $appliance_id);
                return;
            }
            // check image is on the same storage server
            // get the kvm host resource
            $kvm_host_resource = new resource();
            $kvm_host_resource->get_instance_by_id($resource->vhostid);
            // get the kvm resource
            $image = new image();
            $image->get_instance_by_id($appliance->imageid);
            $storage = new storage();
            $storage->get_instance_by_id($image->storageid);
            $kvm_resource = new resource();
            $kvm_resource->get_instance_by_id($storage->resource_id);
            if ($kvm_host_resource->id != $kvm_resource->id) {
                $event->log("openqrm_kvm_appliance", $_SERVER['REQUEST_TIME'], 5, "openqrm-kvm-appliance-hook.php", "Appliance {$appliance_id} image is not available on this kvm host. Assuming SAN-Backend", "", "", 0, 0, $appliance_id);
            }
            $kvm_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 . " --openqrm-cmd-mode background";
            $kvm_host_resource->send_command($kvm_host_resource->ip, $kvm_command);
            break;
        case "update":
            // check if the appliance was set to a kvm Host, if yes, auto-create the storage objects
//.........这里部分代码省略.........
开发者ID:kelubo,项目名称:OpenQRM,代码行数:101,代码来源:openqrm-kvm-appliance-hook.php

示例10: array

 function get_response()
 {
     $size_select_arr = array();
     $availability_zones_select_arr = array();
     $security_group_select_arr = array();
     $subnet_select_arr = array();
     $keypair_select_arr = array();
     // get the datastore and vswitchlist for the selects
     if (file_exists($this->statfile)) {
         $lines = explode("\n", file_get_contents($this->statfile));
         if (count($lines) >= 1) {
             foreach ($lines as $line) {
                 if ($line !== '') {
                     $line = explode('@', $line);
                     switch ($line[0]) {
                         case 'SIZES':
                             $size_select_arr[] = array($line[1], $line[1]);
                             break;
                         case 'KEYPAIR':
                             $keypair_select_arr[] = array($line[1], $line[1]);
                             break;
                         case 'GROUP':
                             $security_group_select_arr[] = array($line[1], $line[1]);
                             break;
                         case 'ZONES':
                             $availability_zones_select_arr[] = array($line[1], $line[1]);
                             break;
                         case 'SUBNET':
                             $subnet_select_arr[] = array($line[1], $line[2] . " (" . $line[3] . ")");
                             break;
                     }
                 }
             }
         }
     }
     if ($this->hc->account_type == 'aws' || $this->hc->account_type == 'euca') {
         $instance_types[] = array("t1.micro", "t1.micro");
         $instance_types[] = array("m1.small", "m1.small");
         $instance_types[] = array("m1.medium", "m1.medium");
         $instance_types[] = array("m1.large", "m1.large");
         $instance_types[] = array("m1.xlarge", "m1.xlarge");
         $instance_types[] = array("m3.xlarge", "m3.xlarge");
         $instance_types[] = array("m3.2xlarge", "m3.2xlarge");
         $instance_types[] = array("c1.medium", "c1.medium");
         $instance_types[] = array("c1.xlarge", "c1.xlarge");
         $instance_types[] = array("m2.xlarge", "m2.xlarge");
         $instance_types[] = array("m2.2xlarge", "m2.2xlarge");
         $instance_types[] = array("m2.4xlarge", "m2.4xlarge");
         $instance_types[] = array("cr1.8xlarge", "cr1.8xlarge");
         $instance_types[] = array("hi1.4xlarge", "hi1.4xlarge");
         $instance_types[] = array("hs1.8xlarge", "hs1.8xlarge");
         $instance_types[] = array("cc1.4xlarge", "cc1.4xlarge");
         $instance_types[] = array("cc2.8xlarge", "cc2.8xlarge");
         $instance_types[] = array("cg1.4xlarge", "cg1.4xlarge");
         $instance_type_selected = "t1.micro";
     }
     if ($this->hc->account_type == 'lc-openstack') {
         $instance_types = $size_select_arr;
         $instance_type_selected = "m1.nano";
     }
     // AMIs
     $ami_select_arr = array();
     $image = new image();
     $image_id_list = $image->get_ids();
     foreach ($image_id_list as $id => $ikey) {
         $image_tmp = new image();
         $image_tmp->get_instance_by_id($ikey['image_id']);
         if ($image_tmp->type === "ami-deployment") {
             $ami_select_arr[] = array($image_tmp->id, $image_tmp->comment);
         }
     }
     $response = $this->response;
     $form = $response->get_form($this->actions_name, 'add');
     $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');
     if ($this->hc->account_type == 'lc-openstack') {
         $d['name']['label'] = $this->lang['form_name'];
         $d['name']['required'] = false;
         $d['name']['validate']['regex'] = '/^[a-z0-9._:\\/-]+$/i';
         $d['name']['validate']['errormsg'] = sprintf($this->lang['error_name'], 'a-z0-9._:\\/-');
         $d['name']['object']['type'] = 'htmlobject_input';
         $d['name']['object']['attrib']['id'] = 'name';
         $d['name']['object']['attrib']['name'] = 'name';
         $d['name']['object']['attrib']['type'] = 'text';
         $d['name']['object']['attrib']['value'] = '';
         $d['name']['object']['attrib']['maxlength'] = 255;
     }
     if ($this->hc->account_type == 'aws' || $this->hc->account_type == 'euca') {
         $d['name'] = '';
     }
     $d['instance_type']['label'] = $this->lang['form_instance_type'];
     $d['instance_type']['required'] = true;
     $d['instance_type']['object']['type'] = 'htmlobject_select';
     $d['instance_type']['object']['attrib']['name'] = 'type';
     $d['instance_type']['object']['attrib']['index'] = array(0, 1);
     $d['instance_type']['object']['attrib']['options'] = $instance_types;
//.........这里部分代码省略.........
开发者ID:kelubo,项目名称:OpenQRM,代码行数:101,代码来源:hybrid-cloud-vm.add.class.php

示例11: select

    function select()
    {
        $h = array();
        $h['appliance_state']['title'] = '&#160;';
        $h['appliance_state']['sortable'] = false;
        /*
        		$h['appliance_icon']['title'] ='&#160;';
        		$h['appliance_icon']['sortable'] = false;
        */
        $h['appliance_id']['title'] = $this->lang['table_id'];
        $h['appliance_name']['title'] = $this->lang['table_name'];
        $h['appliance_values']['title'] = '&#160;';
        $h['appliance_values']['sortable'] = false;
        $h['login']['title'] = '&#160;';
        $h['login']['sortable'] = false;
        // use the appliance link hook
        require_once $this->openqrm->get('webdir') . "/plugins/sshterm/openqrm-sshterm-appliance-link-hook.php";
        $appliance = new appliance();
        $params = $this->response->get_array($this->actions_name, 'select');
        $b = array();
        $table = $this->response->html->tablebuilder('login', $params);
        $table->offset = 0;
        $table->sort = 'appliance_id';
        $table->limit = 10;
        $table->order = 'ASC';
        $table->init();
        $appliances = $appliance->display_overview($table->offset, 100000, $table->sort, $table->order);
        foreach ($appliances as $index => $appliance_db) {
            $appliance = new appliance();
            $appliance->get_instance_by_id($appliance_db["appliance_id"]);
            $resource = new resource();
            $resource->get_instance_by_id($appliance->resources);
            $kernel = new kernel();
            $kernel->get_instance_by_id($appliance_db["appliance_kernelid"]);
            $image = new image();
            $image->get_instance_by_id($appliance_db["appliance_imageid"]);
            $virtualization = new virtualization();
            $virtualization->get_instance_by_id($appliance_db["appliance_virtualization"]);
            $resource_icon_default = "/openqrm/base/img/appliance.png";
            $active_state_icon = "active";
            $inactive_state_icon = "inactive";
            $login = '';
            if ($appliance->stoptime == 0 || $appliance->resources == 0) {
                $state_icon = $active_state_icon;
                // login
                $login = get_sshterm_appliance_link($appliance->id);
                if (is_object($login)) {
                    $login = $login->get_string();
                }
            } else {
                $state_icon = $inactive_state_icon;
                $login = '';
            }
            $str = '<strong>Kernel:</strong> ' . $kernel->name . '<br>
					<strong>Image:</strong> ' . $image->name . '<br>
					<strong>Resource:</strong> ' . $resource->id . " / " . $resource->ip . '<br>
					<strong>Type:</strong> <span class="pill">' . $virtualization->name . "</span>";
            $state_pill = $this->response->html->span();
            $state_pill->css = "pill";
            $state_pill->add($state_icon);
            $b[] = array('appliance_state' => $state_pill->get_string(), 'appliance_id' => $appliance->id, 'appliance_name' => $appliance->name, 'appliance_values' => $str, 'login' => $login);
        }
        $table->id = 'Tabelle';
        $table->css = 'htmlobject_table';
        $table->border = 1;
        $table->cellspacing = 0;
        $table->cellpadding = 3;
        $table->form_action = $this->response->html->thisfile;
        $table->autosort = true;
        $table->sort_link = false;
        $table->max = count($b);
        $table->head = $h;
        $table->body = $b;
        $table->limit_select = array(array("value" => 5, "text" => 5), array("value" => 10, "text" => 10), array("value" => 20, "text" => 20), array("value" => 30, "text" => 30), array("value" => 50, "text" => 50), array("value" => 100, "text" => 100));
        $d = array();
        $d['table'] = $table;
        return $d;
    }
开发者ID:kelubo,项目名称:OpenQRM,代码行数:78,代码来源:sshterm.select.class.php

示例12: 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;
//.........这里部分代码省略.........
开发者ID:kelubo,项目名称:OpenQRM,代码行数:101,代码来源:hybrid-cloud-vm.import.class.php

示例13: create_private_kvm_bf_deployment

function create_private_kvm_bf_deployment($cloud_image_id, $private_disk, $private_image_name)
{
    global $OPENQRM_SERVER_BASE_DIR;
    global $OPENQRM_SERVER_IP_ADDRESS;
    global $OPENQRM_EXEC_PORT;
    global $RESOURCE_INFO_TABLE;
    global $event;
    $cloudimage = new cloudimage();
    $cloudimage->get_instance_by_id($cloud_image_id);
    $event->log("create_private_kvm_bf_deployment", $_SERVER['REQUEST_TIME'], 5, "openqrm-kvm-bf-deployment-cloud-hook.php", "Creating private image " . $cloudimage->image_id . " on storage.", "", "", 0, 0, 0);
    // get image
    $image = new image();
    $image->get_instance_by_id($cloudimage->image_id);
    $image_id = $image->id;
    $image_name = $image->name;
    $image_type = $image->type;
    $image_version = $image->version;
    $image_rootdevice = $image->rootdevice;
    $image_rootfstype = $image->rootfstype;
    $imageid = $image->storageid;
    $image_isshared = $image->isshared;
    $image_comment = $image->comment;
    $image_capabilities = $image->capabilities;
    $image_deployment_parameter = $image->deployment_parameter;
    // get image storage
    $storage = new storage();
    $storage->get_instance_by_id($imageid);
    $storage_resource_id = $storage->resource_id;
    // get deployment type
    $deployment = new deployment();
    $deployment->get_instance_by_id($storage->type);
    // get storage resource
    $resource = new resource();
    $resource->get_instance_by_id($storage_resource_id);
    $resource_id = $resource->id;
    $resource_ip = $resource->ip;
    // create an admin user to post when cloning has finished
    $openqrm_admin_user = new user("openqrm");
    $openqrm_admin_user->set_user();
    // parse the identifiers
    // origin image volume name
    $origin_volume_name = basename($image_rootdevice);
    // location of the volume (path)
    $image_location_name = dirname($image_rootdevice);
    // For kvm vms we assume that the image is located on the vm-host
    // so we send the auth command to the vm-host instead of the image storage.
    // This enables using a NAS/Glusterfs backend with all volumes accessible for all hosts
    //
    // Still we need to send the remove command to the storage resource since the
    // create-phase automatically adapted the image->storageid, we cannot use the vm-resource here
    // because cloudimage->resource_id will be set to -1 when the cloudapp is in paused/resize/private state
    //
    if ($cloudimage->resource_id > 0) {
        // try to get the vm resource
        $vm_resource = new resource();
        $vm_resource->get_instance_by_id($cloudimage->resource_id);
        // get the lxc host
        $vm_host_resource = new resource();
        $vm_host_resource->get_instance_by_id($vm_resource->vhostid);
        // san backend ?
        if ($vm_host_resource->id != $resource->id) {
            $event->log("create_private_kvm_bf_deployment", $_SERVER['REQUEST_TIME'], 5, "openqrm-kvm-bf-deployment-cloud-hook.php", "Image " . $image_id . " IS NOT available on this kvm host, " . $resource->id . " not equal " . $vm_host_resource->id . " !! Assuming SAN Backend", "", "", 0, 0, 0);
        } else {
            $event->log("create_private_kvm_bf_deployment", $_SERVER['REQUEST_TIME'], 5, "openqrm-kvm-bf-deployment-cloud-hook.php", "Image " . $image_id . " IS available on this kvm host, " . $resource->id . " equal " . $vm_host_resource->id . ".", "", "", 0, 0, 0);
        }
    }
    $image_resize_cmd = $OPENQRM_SERVER_BASE_DIR . "/openqrm/plugins/kvm/bin/openqrm-kvm clone -n " . $origin_volume_name . " -s " . $private_image_name . " -v " . $image_location_name . " -m " . $private_disk . " -u " . $openqrm_admin_user->name . " -p " . $openqrm_admin_user->password . " -t " . $deployment->type . " --openqrm-cmd-mode background";
    $event->log("create_private_kvm_bf_deployment", $_SERVER['REQUEST_TIME'], 5, "openqrm-kvm-bf-deployment-cloud-hook.php", "Running : {$image_resize_cmd}", "", "", 0, 0, 0);
    $resource->send_command($resource_ip, $image_resize_cmd);
    // set the storage specific image root_device parameter
    $new_rootdevice = str_replace($origin_volume_name, $private_image_name, $image->rootdevice);
    return $new_rootdevice;
}
开发者ID:kelubo,项目名称:OpenQRM,代码行数:73,代码来源:openqrm-kvm-bf-deployment-cloud-hook.php

示例14: image

 function get_response()
 {
     $response = $this->response;
     $form = $response->get_form($this->actions_name, 'install1');
     $id = $this->response->html->request()->get('image_id');
     $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');
     $image = new image();
     $image->get_instance_by_id($id);
     $storage = new storage();
     $deployment = new deployment();
     $install_template_type = $this->response->html->request()->get('install_from_template');
     if (strlen($install_template_type)) {
         $deployment->get_instance_by_type($install_template_type);
         $storage_select_arr = $storage->get_ids_by_storage_type($deployment->id);
     } else {
         $storage_select_arr = array();
     }
     $storage_select = array();
     foreach ($storage_select_arr as $storage_db) {
         $storage_id = $storage_db['storage_id'];
         $storage->get_instance_by_id($storage_id);
         $storage_select[] = array("value" => $storage_id, "label" => $storage_id . " - " . $storage->name);
     }
     $d['install_server']['label'] = $this->lang['form_install_server'];
     $d['install_server']['required'] = true;
     $d['install_server']['object']['type'] = 'htmlobject_select';
     $d['install_server']['object']['attrib']['index'] = array('value', 'label');
     $d['install_server']['object']['attrib']['id'] = 'install_server';
     $d['install_server']['object']['attrib']['name'] = 'install_server';
     $d['install_server']['object']['attrib']['options'] = $storage_select;
     $form->add($d);
     $response->form = $form;
     return $response;
 }
开发者ID:kelubo,项目名称:OpenQRM,代码行数:39,代码来源:image.install1.class.php

示例15: select

 function select()
 {
     $d = array();
     $id = $this->response->html->request()->get('image_id');
     if ($id !== '') {
         $image = new image();
         $image->get_instance_by_id($id);
         $storage = new storage();
         $storage->get_instance_by_id($image->storageid);
         $resource = new resource();
         $resource->get_instance_by_id($storage->resource_id);
         require_once $this->openqrm->get('basedir') . '/plugins/image-shelf/web/class/imageshelf.class.php';
         $imageshelf = new imageshelf();
         $imageshelf->get_instance_by_id($this->id);
         $file = $this->openqrm->get('basedir') . '/plugins/image-shelf/web/image-lists/' . $imageshelf->name . '/image-shelf.conf';
         if ($this->file->exists($file)) {
             $this->file->remove($file);
         }
         $command = $this->openqrm->get('basedir') . '/plugins/image-shelf/bin/openqrm-image-shelf list';
         $command .= ' -n ' . $imageshelf->name;
         $command .= ' -i ' . $imageshelf->uri;
         $command .= ' -u ' . $imageshelf->user;
         $command .= ' -p ' . $imageshelf->password;
         $command .= ' --openqrm-ui-user ' . $this->user->name;
         $command .= ' --openqrm-cmd-mode background';
         $openqrm_server = new openqrm_server();
         $openqrm_server->send_command($command);
         while (!$this->file->exists($file)) {
             usleep(10000);
             // sleep 10ms to unload the CPU
             clearstatcache();
         }
         sleep(1);
         $distribution = '';
         $lines = explode("\n", $this->file->get_contents($file));
         foreach ($lines as $line) {
             $tmp = explode('|', $line);
             if (isset($tmp[0]) && $tmp[0] === $this->image) {
                 $distribution = $tmp[1];
                 break;
             }
         }
         $command = $this->openqrm->get('basedir') . '/plugins/image-shelf/bin/openqrm-image-shelf get';
         $command .= ' -n ' . $imageshelf->name;
         $command .= ' -i ' . $imageshelf->uri;
         $command .= ' -f ' . $this->image;
         $command .= ' -s ' . $resource->ip . ':' . $image->rootdevice;
         $command .= ' -d ' . $distribution;
         $command .= ' -u ' . $imageshelf->user;
         $command .= ' -p ' . $imageshelf->password;
         $command .= ' -o ' . $this->openqrm->admin()->name . ' -q ' . $this->openqrm->admin()->password;
         $command .= ' --openqrm-ui-user ' . $this->user->name;
         $command .= ' --openqrm-cmd-mode background';
         $openqrm_server->send_command($command);
         $d = sprintf($this->lang['msg'], $image->name, $this->image);
     } else {
         $h = array();
         $h['image_icon']['title'] = '&#160;';
         $h['image_icon']['sortable'] = false;
         $h['image_id']['title'] = $this->lang['table_id'];
         $h['image_name']['title'] = $this->lang['table_name'];
         $h['image_version']['title'] = $this->lang['table_version'];
         $h['image_type']['title'] = $this->lang['table_deployment'];
         $h['image_isactive']['title'] = $this->lang['table_isactive'];
         $h['image_comment']['title'] = $this->lang['table_comment'];
         $h['image_comment']['sortable'] = false;
         $h['edit']['title'] = '&#160;';
         $h['edit']['sortable'] = false;
         $image = new image();
         $params = $this->response->get_array($this->actions_name, 'target');
         $b = array();
         $table = $this->response->html->tablebuilder('imageshelf_target', $params);
         $table->offset = 0;
         $table->sort = 'image_id';
         $table->limit = 10;
         $table->order = 'ASC';
         $table->max = $image->get_count();
         $table->init();
         $image_arr = $image->display_overview(0, 10000, $table->sort, $table->order);
         $image_icon = "/openqrm/base/img/image.png";
         foreach ($image_arr as $index => $image_db) {
             // prepare the values for the array
             $image = new image();
             $image->get_instance_by_id($image_db["image_id"]);
             if ($image->type === 'lvm-nfs-deployment' || $image->type === 'nfs-deployment') {
                 $image_comment = $image_db["image_comment"];
                 if (!strlen($image_comment)) {
                     $image_comment = "-";
                 }
                 $image_version = $image_db["image_version"];
                 if (!strlen($image_version)) {
                     $image_version = "-";
                 }
                 // edit
                 $a = $this->response->html->a();
                 $a->title = $this->lang['action_edit'];
                 $a->handler = 'onclick="wait();"';
                 $a->css = 'edit';
                 $a->href = $this->response->get_url($this->actions_name, 'target') . '&image_id=' . $image->id;
                 $image_edit = $a->get_string();
//.........这里部分代码省略.........
开发者ID:kelubo,项目名称:OpenQRM,代码行数:101,代码来源:image-shelf.target.class.php


注:本文中的image::get_instance_by_id方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。