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


PHP image::get_instance_by_name方法代码示例

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


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

示例1: image

 function image()
 {
     $response = '';
     $errors = array();
     $message = array();
     $image_command = $this->response->html->request()->get('image_command');
     if ($image_command !== '') {
         switch ($image_command) {
             case 'add':
                 $root_device = $this->response->html->request()->get('root_device');
                 if ($this->deployment->type == 'kvm-gluster-deployment') {
                     $image_name = $this->response->html->request()->get('image_name');
                 } else {
                     $image_name = basename($root_device);
                 }
                 // check if image name is not in use yet
                 $image = new image();
                 $image->get_instance_by_name($image_name);
                 if (strlen($image->id)) {
                     $errors[] = sprintf($this->lang['error_exists'], $image_name);
                 } else {
                     $tables = $this->openqrm->get('table');
                     $image_fields = array();
                     $image_fields["image_id"] = (int) str_replace(".", "", str_pad(microtime(true), 15, "0"));
                     $image_fields['image_name'] = $image_name;
                     $image_fields['image_type'] = $this->deployment->type;
                     $image_fields['image_rootfstype'] = 'local';
                     $image_fields['image_storageid'] = $this->storage->id;
                     $image_fields['image_comment'] = "Image Object for volume {$image_name}";
                     $image_fields['image_rootdevice'] = $root_device;
                     $image = new image();
                     $image->add($image_fields);
                     $message[] = sprintf($this->lang['msg_added_image'], $image_name);
                 }
                 break;
             case 'remove':
                 $image_id = $this->response->html->request()->get('image_id');
                 // check if image is not in use any more before removing
                 $remove_error = 0;
                 $appliance = new appliance();
                 $appliance_id_list = $appliance->get_all_ids();
                 foreach ($appliance_id_list as $appliance_list) {
                     $appliance_id = $appliance_list['appliance_id'];
                     $app_image_remove_check = new appliance();
                     $app_image_remove_check->get_instance_by_id($appliance_id);
                     if ($app_image_remove_check->imageid == $image_id) {
                         $image_is_used_by_appliance .= $appliance_id . " ";
                         $remove_error = 1;
                     }
                 }
                 if ($remove_error == 1) {
                     $errors[] = sprintf($this->lang['error_image_still_in_use'], $image_id, $image_is_used_by_appliance);
                 } else {
                     $image_remove = new image();
                     $image_remove->remove($image_id);
                     $message[] = sprintf($this->lang['msg_removed_image'], $image_id);
                 }
                 break;
         }
         if (count($errors) === 0) {
             $response = join('<br>', $message);
         } else {
             $msg = array_merge($errors, $message);
             $response = join('<br>', $msg);
         }
     } else {
         $response = '';
     }
     return $response;
 }
开发者ID:kelubo,项目名称:OpenQRM,代码行数:70,代码来源:kvm.image.class.php

示例2: add

 function add()
 {
     $response = $this->get_response();
     $form = $response->form;
     if (!$form->get_errors() && $this->response->submit()) {
         if ($form->get_request('size') > $this->max) {
             $form->set_error('size', sprintf($this->lang['error_size_exeeded'], $this->max));
         }
         if (!$form->get_errors()) {
             $name = $form->get_request('name');
             $command = $this->openqrm->get('basedir') . '/plugins/kvm/bin/openqrm-kvm add';
             $command .= ' -n ' . $name . ' -m ' . $form->get_request('size');
             $command .= ' -o ' . $form->get_request('type');
             $command .= ' -t ' . $this->deployment->type . ' -v ' . $this->volgroup;
             $command .= ' -u ' . $this->openqrm->admin()->name . ' -p ' . $this->openqrm->admin()->password;
             $command .= ' --openqrm-ui-user ' . $this->user->name;
             $command .= ' --openqrm-cmd-mode background';
             $statfile = $this->openqrm->get('basedir') . '/plugins/kvm/web/storage/' . $this->resource->id . '.' . $this->volgroup . '.lv.stat';
             if ($this->file->exists($statfile)) {
                 $lines = explode("\n", $this->file->get_contents($statfile));
                 if (count($lines) >= 1) {
                     foreach ($lines as $line) {
                         if ($line !== '') {
                             $line = explode('@', $line);
                             $check = $line[1];
                             if ($name === $check) {
                                 $error = sprintf($this->lang['error_exists'], $name);
                             }
                         }
                     }
                 }
             }
             // check for image name
             $image = new image();
             $image->get_instance_by_name($name);
             if (isset($image->id) && $image->id > 1) {
                 $error = sprintf($this->lang['error_exists'], $name);
             }
             if (isset($error)) {
                 $response->error = $error;
             } else {
                 if ($this->file->exists($statfile)) {
                     $this->file->remove($statfile);
                 }
                 $this->resource->send_command($this->resource->ip, $command);
                 while (!$this->file->exists($statfile)) {
                     usleep(10000);
                     // sleep 10ms to unload the CPU
                     clearstatcache();
                 }
                 // add check that volume $name is now in the statfile
                 $created = false;
                 $bf_volume_path = "";
                 $lines = explode("\n", $this->file->get_contents($statfile));
                 if (count($lines) >= 1) {
                     foreach ($lines as $line) {
                         if ($line !== '') {
                             $line = explode('@', $line);
                             $check = $line[1];
                             if ($name === $check) {
                                 $created = true;
                                 $bf_volume_path = $line[2];
                                 break;
                             }
                         }
                     }
                 }
                 if ($created) {
                     $tables = $this->openqrm->get('table');
                     $image_fields = array();
                     $image_fields["image_id"] = (int) str_replace(".", "", str_pad(microtime(true), 15, "0"));
                     $image_fields['image_name'] = $name;
                     $image_fields['image_type'] = $this->deployment->type;
                     $image_fields['image_rootfstype'] = 'local';
                     $image_fields['image_storageid'] = $this->storage->id;
                     $image_fields['image_comment'] = "Image Object for volume {$name}";
                     switch ($this->deployment->type) {
                         case 'kvm-lvm-deployment':
                             $image_fields['image_rootdevice'] = '/dev/' . $this->volgroup . '/' . $name;
                             break;
                         case 'kvm-bf-deployment':
                             $image_fields['image_rootdevice'] = $bf_volume_path;
                             break;
                         case 'kvm-gluster-deployment':
                             $image_fields['image_rootdevice'] = "gluster://" . $this->resource->ip . "/" . $this->volgroup . "/" . $name;
                             break;
                     }
                     $image = new image();
                     $image->add($image_fields);
                     $response->msg = sprintf($this->lang['msg_added'], $name);
                     // save image id in response for the wizard
                     $response->image_id = $image_fields["image_id"];
                 } else {
                     $response->msg = sprintf($this->lang['msg_add_failed'], $name);
                 }
             }
         }
     }
     return $response;
 }
开发者ID:kelubo,项目名称:OpenQRM,代码行数:100,代码来源:kvm.add.class.php

示例3: remove

 function remove()
 {
     $response = $this->get_response();
     $lvols = $response->html->request()->get($this->identifier_name);
     $form = $response->form;
     if ($lvols !== '') {
         $submit = $form->get_elements('submit');
         $submit->handler = 'onclick="wait();"';
         $form->add($submit, 'submit');
         $submit = $form->get_elements('cancel');
         $submit->handler = 'onclick="cancel();"';
         $form->add($submit, 'cancel');
         $i = 0;
         foreach ($lvols as $ex) {
             $d['param_f' . $i]['label'] = $ex;
             $d['param_f' . $i]['object']['type'] = 'htmlobject_input';
             $d['param_f' . $i]['object']['attrib']['type'] = 'checkbox';
             $d['param_f' . $i]['object']['attrib']['name'] = $this->identifier_name . '[' . $i . ']';
             $d['param_f' . $i]['object']['attrib']['value'] = $ex;
             $d['param_f' . $i]['object']['attrib']['checked'] = true;
             $i++;
         }
         $form->add($d);
         if (!$form->get_errors() && $response->submit()) {
             $name = $this->openqrm->admin()->name;
             $pass = $this->openqrm->admin()->password;
             $storage = new storage();
             $resource = new resource();
             $deployment = new deployment();
             $storage->get_instance_by_id($this->response->html->request()->get('storage_id'));
             $resource->get_instance_by_id($storage->resource_id);
             $deployment->get_instance_by_id($storage->type);
             $errors = array();
             $message = array();
             foreach ($lvols as $key => $lvol) {
                 // check if an appliance is still using the volume as an image
                 $image = new image();
                 $image->get_instance_by_name($lvol);
                 // check if it is still in use
                 $appliance = new appliance();
                 $appliances_using_resource = $appliance->get_ids_per_image($image->id);
                 if (count($appliances_using_resource) > 0) {
                     $appliances_using_resource_str = implode(",", $appliances_using_resource[0]);
                     $errors[] = sprintf($this->lang['msg_vm_image_still_in_use'], $lvol, $image->id, $appliances_using_resource_str);
                 } else {
                     $command = $this->openqrm->get('basedir') . '/plugins/kvm/bin/openqrm-kvm remove';
                     $command .= ' -n ' . $lvol;
                     $command .= ' -v ' . $this->volgroup;
                     $command .= ' -t ' . $deployment->type;
                     $command .= ' -u ' . $name . ' -p ' . $pass;
                     $command .= ' --openqrm-ui-user ' . $this->user->name;
                     $command .= ' --openqrm-cmd-mode background';
                     $file = $this->openqrm->get('basedir') . '/plugins/kvm/web/storage/' . $resource->id . '.' . $this->volgroup . '.lv.stat';
                     if ($this->file->exists($file)) {
                         $this->file->remove($file);
                     }
                     $resource->send_command($resource->ip, $command);
                     while (!$this->file->exists($file)) {
                         usleep(10000);
                         // sleep 10ms to unload the CPU
                         clearstatcache();
                     }
                     $form->remove($this->identifier_name . '[' . $key . ']');
                     $message[] = sprintf($this->lang['msg_removed'], $lvol);
                     // remove the image of the volume
                     $image->remove_by_name($lvol);
                 }
             }
             if (count($errors) === 0) {
                 $response->msg = join('<br>', $message);
             } else {
                 $msg = array_merge($errors, $message);
                 $response->error = join('<br>', $msg);
             }
         }
     } else {
         $response->msg = '';
     }
     return $response;
 }
开发者ID:kelubo,项目名称:OpenQRM,代码行数:80,代码来源:kvm.remove.class.php

示例4: image

 function image()
 {
     $response = '';
     $errors = array();
     $message = array();
     $image_command = $this->response->html->request()->get('image_command');
     if ($image_command !== '') {
         switch ($image_command) {
             case 'add':
                 $root_device = $this->response->html->request()->get('root_device');
                 $image_name = $this->response->html->request()->get('image_name');
                 // check if image name is not in use yet
                 $image = new image();
                 $image->get_instance_by_name($image_name);
                 if (strlen($image->id)) {
                     $errors[] = sprintf($this->lang['error_exists'], $image_name);
                 } else {
                     $image_rootfstype = '';
                     // for lvm-aoe deployment we need to get the shelf + slot from get_root_identifiert
                     $ident_file = $this->openqrm->get('basedir') . '/plugins/lvm-storage/web/storage/' . $this->resource->id . '.lvm.' . $image_name . '.adapt';
                     $get_ident_command = $this->openqrm->get('basedir') . '/plugins/lvm-storage/bin/openqrm-lvm-storage adapt';
                     $get_ident_command .= ' -n ' . $image_name;
                     $get_ident_command .= ' -t ' . $this->deployment->type . ' -v ' . $this->volgroup;
                     $get_ident_command .= ' -u ' . $this->openqrm->admin()->name . ' -p ' . $this->openqrm->admin()->password;
                     $get_ident_command .= ' --openqrm-ui-user ' . $this->user->name;
                     $get_ident_command .= ' --openqrm-cmd-mode background';
                     if (file_exists($ident_file)) {
                         unlink($ident_file);
                     }
                     $this->resource->send_command($this->resource->ip, $get_ident_command);
                     while (!file_exists($ident_file)) {
                         usleep(10000);
                         // sleep 10ms to unload the CPU
                         clearstatcache();
                     }
                     $found = false;
                     if ($this->deployment->type == 'lvm-aoe-deployment') {
                         $name = $root_device;
                         $root_device = '';
                         $ident_lines = explode("\n", file_get_contents($ident_file));
                         if (count($ident_lines) >= 1) {
                             foreach ($ident_lines as $ident_line) {
                                 if ($ident_line !== '') {
                                     $ident_line = explode(',', $ident_line);
                                     $ident_root_path = explode(':', $ident_line[1]);
                                     $ident_check = $ident_root_path[1];
                                     if ($name === $ident_check) {
                                         $root_device = $ident_line[1];
                                         $image_rootfstype = 'ext3';
                                         $found = true;
                                         break;
                                     }
                                 }
                             }
                         }
                     } else {
                         if ($this->deployment->type == 'lvm-iscsi-deployment') {
                             $image_rootfstype = 'ext3';
                             $found = true;
                         } else {
                             if ($this->deployment->type == 'lvm-nfs-deployment') {
                                 $image_rootfstype = 'nfs';
                                 $found = true;
                             }
                         }
                     }
                     if ($found) {
                         $tables = $this->openqrm->get('table');
                         $image_fields = array();
                         $image_fields["image_id"] = (int) str_replace(".", "", str_pad(microtime(true), 15, "0"));
                         $image_fields['image_name'] = $image_name;
                         $image_fields['image_type'] = $this->deployment->type;
                         $image_fields['image_rootfstype'] = $image_rootfstype;
                         $image_fields['image_storageid'] = $this->storage->id;
                         $image_fields['image_comment'] = "Image Object for volume {$image_name}";
                         $image_fields['image_rootdevice'] = $root_device;
                         $image = new image();
                         $image->add($image_fields);
                         $message[] = sprintf($this->lang['msg_added_image'], $image_name);
                     } else {
                         $message[] = sprintf($this->lang['msg_add_failed'], $image_name);
                     }
                 }
                 break;
             case 'remove':
                 $image_id = $this->response->html->request()->get('image_id');
                 // check if image is not in use any more before removing
                 $remove_error = 0;
                 $appliance = new appliance();
                 $appliance_id_list = $appliance->get_all_ids();
                 foreach ($appliance_id_list as $appliance_list) {
                     $appliance_id = $appliance_list['appliance_id'];
                     $app_image_remove_check = new appliance();
                     $app_image_remove_check->get_instance_by_id($appliance_id);
                     if ($app_image_remove_check->imageid == $image_id) {
                         $image_is_used_by_appliance .= $appliance_id . " ";
                         $remove_error = 1;
                     }
                 }
                 if ($remove_error == 1) {
//.........这里部分代码省略.........
开发者ID:kelubo,项目名称:OpenQRM,代码行数:101,代码来源:lvm-storage.image.class.php

示例5: openqrm_cloud_monitor


//.........这里部分代码省略.........
            $tmp_cloud_app = new cloudappliance();
            $tmp_cloud_app_id = $capp['ca_id'];
            $tmp_cloud_app->get_instance_by_id($tmp_cloud_app_id);
            // active ?
            if ($tmp_cloud_app->state == 0) {
                continue;
            }
            // check if the cr is ours
            $rc_tmp_cr = new cloudrequest();
            $rc_tmp_cr->get_instance_by_id($tmp_cloud_app->cr_id);
            if ($rc_tmp_cr->cu_id != $cr_cu_id) {
                continue;
            }
            $users_appliance_count++;
        }
        // $event->log("cloud", $_SERVER['REQUEST_TIME'], 5, "cloud-monitor", "User $cr_cu_id has already $users_appliance_count appliance(s) running.", "", "", 0, 0, 0);
        $cc_max_app = new cloudconfig();
        $max_apps_per_user = $cc_max_app->get_value(13);
        // 13 is max_apps_per_user
        if ($users_appliance_count + $resource_quantity > $max_apps_per_user) {
            $event->log("cloud", $_SERVER['REQUEST_TIME'], 2, "cloud-monitor", "Not provisining CR {$cr_id} from user {$cr_cu_id} who has already {$users_appliance_count} appliance(s) running.", "", "", 0, 0, 0);
            $cr->setstatus($cr_id, 'deny');
            continue;
        }
        $cr_resource_number = 1;
        // ################################## create appliance ###############################
        // set hostname
        $appliance_name = "cloud-" . $cr_id . "-" . $cr_resource_number . "-x";
        if (!strcmp($cloud_appliance_hostname_enabled, "true")) {
            if (strlen($cr->appliance_hostname)) {
                $appliance_requested_hostname = $cr->appliance_hostname;
                // check if the hostname is free, if not return to regular naming convention
                $appliance_chk_hostname = new appliance();
                $appliance_chk_hostname->get_instance_by_name($appliance_requested_hostname);
                if ($appliance_chk_hostname->id > 0) {
                    $event->log("cloud", $_SERVER['REQUEST_TIME'], 2, "cloud-monitor", "Requested hostname " . $appliance_requested_hostname . " already in use. Reverting to " . $appliance_name . " (CR ID " . $cr_id . ").", "", "", 0, 0, 0);
                } else {
                    // set requested hostname
                    $appliance_name = $appliance_requested_hostname;
                }
            }
        }
        // update cr with new hostname
        $cr_update_hostname_fields = array();
        $cr_update_hostname_fields["cr_appliance_hostname"] = $appliance_name;
        $cr->update($cr->id, $cr_update_hostname_fields);
        $cr->get_instance_by_id($cr->id);
        // get new appliance id
        $appliance_id = (int) str_replace(".", "", str_pad(microtime(true), 15, "0"));
        // we
        $user_network_cards = $cr->network_req + 1;
        // prepare array to add appliance
        $ar_request = array('appliance_id' => $appliance_id, 'appliance_resources' => "-1", 'appliance_name' => $appliance_name, 'appliance_kernelid' => $cr->kernel_id, 'appliance_imageid' => $cr->image_id, 'appliance_virtualization' => $cr->resource_type_req, 'appliance_cpunumber' => $cr->cpu_req, 'appliance_memtotal' => $cr->ram_req, 'appliance_nics' => $user_network_cards, 'appliance_comment' => "Requested by user {$cu_name}", 'appliance_ssi' => $cr->shared_req, 'appliance_highavailable' => $cr->ha_req, 'appliance_capabilities' => $cr->appliance_capabilities);
        // create + start the appliance :)
        $appliance = new appliance();
        $appliance->add($ar_request);
        // first get admin email
        $cc_acr_conf = new cloudconfig();
        $cc_acr_admin_email = $cc_acr_conf->get_value(1);
        // 1 is admin_email
        // and the user details
        $cu_name = $cu->name;
        $cu_forename = $cu->forename;
        $cu_lastname = $cu->lastname;
        $cu_email = $cu->email;
        // now lets find a resource for this new appliance
开发者ID:kelubo,项目名称:OpenQRM,代码行数:67,代码来源:openqrm-cloud-monitor-hook.php

示例6: edit


//.........这里部分代码省略.........
         $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;
         $hc_authentication .= ' -f ' . $this->filter;
         #$d['ami_type_switch']   = '';
     }
     $command = $this->openqrm->get('basedir') . '/plugins/hybrid-cloud/bin/openqrm-hybrid-cloud-ami describe_images';
     $command .= ' -i ' . $this->hc->id;
     $command .= ' -t ' . $this->hc->account_type;
     $command .= ' -n ' . $this->hc->account_name;
     $command .= $hc_authentication;
     $command .= ' --openqrm-ui-user ' . $this->user->name;
     $command .= ' --openqrm-cmd-mode background';
     $server = new openqrm_server();
     $server->send_command($command, NULL, true);
     while (!$this->file->exists($file)) {
         usleep(10000);
         // sleep 10ms to unload the CPU
         clearstatcache();
     }
     $content = $this->file->get_contents($file);
     $content = explode("\n", $content);
     $b = array();
     foreach ($content as $k => $v) {
         if ($v !== '') {
             // e.g. IMAGE@ami-25f9c051@021471307000/ami_hapx_ubuntu_10_04@021471307000@available@public@@i386@machine@aki-4deec439@@@ebs@paravirtual@xen
             $tmp = explode('@', $v);
             $ami = $tmp[1];
             $path = $tmp[2];
             if ($this->hc->account_type == 'aws' || $this->hc->account_type == 'euca') {
                 $state = $tmp[4];
                 $perm = $tmp[5];
                 $arch = $tmp[7];
                 $type = $tmp[13];
                 $virt = $tmp[14];
             }
             if ($this->hc->account_type == 'lc-openstack') {
                 $state = '';
                 $perm = '';
                 $arch = '';
                 $type = '';
                 $virt = '';
             }
             if ($arch != "i386" && $arch != "x86_64") {
                 $arch = '';
             }
             $image_add_remove = '';
             $deployment_type = '';
             $image = new image();
             $image->get_instance_by_name($ami);
             if (strlen($image->id)) {
                 if ($image->type != $this->deployment->type) {
                     $deployment_type = $image->type;
                     $disabled[] = $ami;
                 } else {
                     $i = $this->response->html->a();
                     $i->title = $this->lang['action_remove_image'];
                     $i->label = $this->lang['action_remove_image'];
                     $i->handler = 'onclick="wait();"';
                     $i->css = 'edit';
                     $i->href = $this->response->get_url($this->actions_name, "image") . '&image_id=' . $image->id . '&image_command=remove';
                     $image_add_remove = $i;
                 }
             } else {
                 $i = $this->response->html->a();
                 $i->title = $this->lang['action_add_image'];
                 $i->label = $this->lang['action_add_image'];
                 $i->handler = 'onclick="wait();"';
                 $i->css = 'edit';
                 $i->href = $this->response->get_url($this->actions_name, "image") . '&image_name=' . $ami . '&image_rootdevice=' . $ami . '&image_comment=' . basename($path) . '&image_command=add';
                 $disabled[] = $ami;
                 $image_add_remove = $i;
             }
             $b[] = array('ami' => $ami, 'path' => basename($path), 'perm' => $perm, 'arch' => $arch, 'type' => $type, 'virt' => $virt, 'state' => $arch, 'image' => $image_add_remove);
         }
     }
     $params = $this->response->get_array($this->actions_name, 'edit');
     $table = $this->response->html->tablebuilder('hybridcloud_ami_edit', $params);
     $table->offset = 0;
     $table->sort = 'ami';
     $table->limit = 200;
     $table->order = 'ASC';
     $table->id = 'Tabelle';
     $table->css = 'htmlobject_table';
     $table->border = 1;
     $table->cellspacing = 0;
     $table->cellpadding = 3;
     $table->autosort = true;
     $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), array("value" => 200, "text" => 200));
     $d['name'] = $this->hc->account_name;
     $d['form'] = $this->response->get_form($this->actions_name, 'edit', false)->get_elements();
     $d['table'] = $table;
     return $d;
 }
开发者ID:kelubo,项目名称:OpenQRM,代码行数:101,代码来源:hybrid-cloud-ami.edit.class.php

示例7: add

 function add()
 {
     $response = $this->get_response();
     $form = $response->form;
     if (!$form->get_errors() && $this->response->submit()) {
         $config = $form->get_request('config');
         $storage_id = $this->response->html->request()->get('storage_id');
         $storage = new storage();
         $resource = new resource();
         $storage->get_instance_by_id($storage_id);
         $resource->get_instance_by_id($storage->resource_id);
         $file = $this->openqrm->get('basedir') . "/plugins/nfs-storage/web/storage/" . $resource->id . ".nfs.stat.manual";
         $image = new image();
         $error = '';
         // get old data
         $old = array();
         if ($this->file->exists($file)) {
             $old = $this->file->get_contents($file);
             $old = str_replace("\r\n", "\n", $old);
             $old = explode("\n", $old);
         }
         if (isset($config) && $config !== '') {
             $new = str_replace("\r\n", "\n", $config);
             $new = explode("\n", $new);
             $new = array_unique($new);
             // sync old and new values
             foreach ($old as $v) {
                 if (!in_array($v, $new)) {
                     $name = substr($v, strrpos($v, '/') + 1);
                     if (isset($name) && $name !== '' && $name !== false) {
                         $current = $image->get_instance_by_name($name);
                         if (isset($current) && $current->name === $name) {
                             $image->remove($current->id);
                         }
                     }
                 } else {
                     if (in_array($v, $new)) {
                         unset($new[array_search($v, $new)]);
                     }
                 }
             }
             // add new values to images
             foreach ($new as $v) {
                 $name = substr($v, strrpos($v, '/') + 1);
                 if (isset($name) && $name !== '' && $name !== false) {
                     $current = $image->get_instance_by_name($name);
                     if (isset($current) && $current->name === $name) {
                         $error[] = sprintf($this->lang['error_image_in_use'], $name, $v);
                     } else {
                         if ($v !== '') {
                             $tables = $this->openqrm->get('table');
                             $f['image_id'] = (int) str_replace(".", "", str_pad(microtime(true), 15, "0"));
                             $f['image_name'] = $name;
                             $f['image_type'] = 'nfs-deployment';
                             $f['image_rootfstype'] = 'nfs';
                             $f['image_rootdevice'] = $v;
                             $f['image_storageid'] = $this->storage;
                             $f['image_comment'] = 'Manually added nfs export';
                             $image->add($f);
                         }
                     }
                 } else {
                     if ((!isset($name) || $name === '' || $name === false) && $v !== '') {
                         $error[] = $this->lang['error_name_empty'];
                     }
                 }
             }
             // handle config file
             if ($error === '') {
                 if (!($handle = fopen($file, 'w+'))) {
                     $error = "Cannot open file ({$file})";
                 }
                 if (fwrite($handle, $config) === FALSE) {
                     $error = "Cannot write to file ({$file})";
                 }
                 if ($error !== '') {
                     $response->error = $error;
                 } else {
                     $response->msg = $this->lang['saved'];
                 }
             } else {
                 if (is_array($error)) {
                     $response->error = implode('<br>', $error);
                 } else {
                     if (is_string($error)) {
                         $response->error = $error;
                     }
                 }
             }
         } else {
             // remove old values from image table
             foreach ($old as $v) {
                 if (!in_array($v, $new)) {
                     $name = substr($v, strrpos($v, '/') + 1);
                     if (isset($name) && $name !== '' && $name !== false) {
                         $current = $image->get_instance_by_name($name);
                         if (isset($current) && $current->name === $name) {
                             $image->remove($current->id);
                         }
                     }
//.........这里部分代码省略.........
开发者ID:kelubo,项目名称:OpenQRM,代码行数:101,代码来源:nfs-storage.manual.class.php

示例8: edit

 function edit()
 {
     if (strpos($this->deployment->type, 'lvm') !== false) {
         $resource_icon_default = "/img/resource.png";
         $storage_icon = "/plugins/lvm-storage/img/plugin.png";
         $state_icon = '<span class="pill">' . $this->resource->state . '</span>';
         if ($this->file->exists($this->openqrm->get('webdir') . $storage_icon)) {
             $resource_icon_default = $storage_icon;
         }
         $resource_icon_default = $this->openqrm->get('baseurl') . $resource_icon_default;
         // Storage info
         $d['state'] = $state_icon;
         //	$d['icon'] = "<img width=24 height=24 src=$resource_icon_default>";
         $d['resource'] = $this->resource->id . ' / ' . $this->resource->ip;
         $d['name'] = $this->storage->name;
         $d['deployment'] = $this->deployment->type;
         $d['id'] = $this->storage->id;
         // Volgroup info
         $lines = explode("\n", file_get_contents($this->openqrm->get('basedir') . '/plugins/lvm-storage/web/storage/' . $this->resource->id . '.vg.stat'));
         foreach ($lines as $line) {
             $line = explode("@", $line);
             if (isset($line[0]) && $line[0] === $this->volgroup) {
                 $vsize = number_format(substr($line[5], 0, strpos($line[5], '.')), 0, '', '') . ' MB';
                 $vfree = str_replace('m', '', $line[6]);
                 if ($vfree !== '0') {
                     $vfree = substr($line[6], 0, strpos($line[6], '.'));
                 }
                 $d['volgroup_name'] = $line[0];
                 $d['volgroup_pv'] = $line[1];
                 $d['volgroup_lv'] = $line[2];
                 $d['volgroup_sn'] = $line[3];
                 $d['volgroup_attr'] = $line[4];
                 $d['volgroup_vsize'] = $vsize;
                 $d['volgroup_vfree'] = number_format($vfree, 0, '', '') . ' MB';
             }
         }
         $a = '&#160';
         if ($d['volgroup_vfree'] !== '0 MB') {
             $a = $this->response->html->a();
             $a->label = $this->lang['action_add'];
             $a->css = 'add';
             $a->href = $this->response->get_url($this->actions_name, "add");
         }
         $d['add'] = $a;
         $body = array();
         $file = $this->statfile;
         if (file_exists($file)) {
             $lines = explode("\n", file_get_contents($file));
             if (count($lines) >= 1) {
                 $disabled = array();
                 $t = $this->response->html->template($this->openqrm->get('webdir') . '/js/openqrm-progressbar.js');
                 foreach ($lines as $line) {
                     if ($line !== '') {
                         $s = '&#160;';
                         $c = '&#160;';
                         $r = '&#160;';
                         $src = '&#160;';
                         $line = explode('@', $line);
                         $name = $line[1];
                         $mode = substr($line[3], 0, 1);
                         if ($line[4] == "clone_in_progress") {
                             // add to disabled identifier
                             $disabled[] = $name;
                             // progressbar
                             $t->add(uniqid('b'), 'id');
                             $t->add($this->openqrm->get('baseurl') . '/api.php?action=plugin&plugin=lvm-storage&lvm_storage_action=progress&name=' . $this->resource->id . '.lvm.' . $name . '.sync_progress', 'url');
                             $t->add($this->lang['action_clone_in_progress'], 'lang_in_progress');
                             $t->add($this->lang['action_clone_finished'], 'lang_finished');
                             $volume_size = $t->get_string();
                         } else {
                             if ($line[4] == "sync_in_progress") {
                                 $volume_size = $this->lang['action_sync_in_progress'];
                                 $disabled[] = $name;
                             } else {
                                 $volume_size = number_format(substr($line[4], 0, strpos($line[4], '.')), 0, '', '') . ' MB';
                                 $image_add_remove = '';
                                 $deployment_type = '';
                                 $image = new image();
                                 $image->get_instance_by_name($name);
                                 if (strlen($image->id)) {
                                     if ($image->type == $this->deployment->type) {
                                         if ($line[0] === $this->deployment->type) {
                                             if ($d['volgroup_vfree'] !== '0 MB') {
                                                 if ($mode !== 's') {
                                                     $s = $this->response->html->a();
                                                     $s->title = $this->lang['action_snap'];
                                                     $s->label = $this->lang['action_snap'];
                                                     $s->handler = 'onclick="wait();"';
                                                     $s->css = 'snap';
                                                     $s->href = $this->response->get_url($this->actions_name, "snap") . '&lvol=' . $line[1];
                                                 } else {
                                                     $disabled[] = $line[5];
                                                     $src = $line[5];
                                                 }
                                                 if ($vfree >= (int) substr($line[4], 0, strpos($line[4], '.'))) {
                                                     $c = $this->response->html->a();
                                                     $c->title = $this->lang['action_clone'];
                                                     $c->label = $this->lang['action_clone'];
                                                     $c->handler = 'onclick="wait();"';
                                                     $c->css = 'clone';
//.........这里部分代码省略.........
开发者ID:kelubo,项目名称:OpenQRM,代码行数:101,代码来源:lvm-storage.volgroup.class.php

示例9: CloudProvision

 function CloudProvision($method_parameters)
 {
     global $CLOUD_REQUEST_TABLE;
     global $event;
     $parameter_array = explode(',', $method_parameters);
     $mode = $parameter_array[0];
     $username = $parameter_array[1];
     $password = $parameter_array[2];
     $cloud_username = $parameter_array[3];
     $start = $parameter_array[4];
     $stop = $parameter_array[5];
     $kernel_id = $parameter_array[6];
     $image_name = $parameter_array[7];
     $ram_req = $parameter_array[8];
     $cpu_req = $parameter_array[9];
     $disk_req = $parameter_array[10];
     $network_req = $parameter_array[11];
     $resource_quantity = $parameter_array[12];
     $virtualization_id = $parameter_array[13];
     $ha_req = $parameter_array[14];
     $application_groups = $parameter_array[15];
     $ip_mgmt = $parameter_array[16];
     $app_hostname = $parameter_array[17];
     $app_hostname = preg_replace('/\\s\\s+/', ' ', trim($app_hostname));
     // check all user input
     for ($i = 0; $i <= 17; $i++) {
         if (!$this->check_param($parameter_array[$i])) {
             $event->log("cloudsoap->CloudProvision", $_SERVER['REQUEST_TIME'], 2, "cloud-soap-server.php", "Not allowing user-intput with special-characters : {$parameter_array[$i]}", "", "", 0, 0, 0);
             return -1;
         }
     }
     // check parameter count
     $parameter_count = count($parameter_array);
     if ($parameter_count != 18) {
         $event->log("cloudsoap->CloudProvision", $_SERVER['REQUEST_TIME'], 2, "cloud-soap-server.php", "Wrong parameter count {$parameter_count} ! Exiting.", "", "", 0, 0, 0);
         return -2;
     }
     // check authentication
     if (!$this->check_user($mode, $username, $password)) {
         $event->log("cloudsoap->CloudProvision", $_SERVER['REQUEST_TIME'], 2, "cloud-soap-server.php", "User authentication failed (mode {$mode})", "", "", 0, 0, 0);
         return -3;
     }
     $cc_conf = new cloudconfig();
     $cl_user = new clouduser();
     // check that the user exists in the Cloud
     if ($cl_user->is_name_free($cloud_username)) {
         $event->log("cloudsoap->CloudProvision", $_SERVER['REQUEST_TIME'], 2, "cloud-soap-server.php", "Cloud User name {$cloud_username} does not exists in the Cloud. Not adding the request !", "", "", 0, 0, 0);
         return -4;
     }
     // check that in user mode the username is the same as the cloud_username
     switch ($mode) {
         case 'user':
             if (strcmp($username, $cloud_username)) {
                 $event->log("cloudsoap->CloudProvision", $_SERVER['REQUEST_TIME'], 2, "cloud-soap-server.php", "Cloud User {$username} is trying to submit a Provsion request as Cloud User {$cloud_username}  !", "", "", 0, 0, 0);
                 return -5;
             }
             break;
     }
     // check if billing is enabled
     $cl_user->get_instance_by_name($cloud_username);
     $cloud_billing_enabled = $cc_conf->get_value(16);
     // 16 is cloud_billing_enabled
     if ($cloud_billing_enabled == 'true') {
         if ($cl_user->ccunits < 1) {
             $event->log("cloudsoap->CloudProvision", $_SERVER['REQUEST_TIME'], 2, "cloud-soap-server.php", "Cloud for user {$cloud_username} does not have any CCUs! Not adding the request.", "", "", 0, 0, 0);
             return -6;
         }
     }
     // check valid hostname
     if (!$this->check_hostname($app_hostname)) {
         $event->log("cloudsoap->CloudProvision", $_SERVER['REQUEST_TIME'], 2, "cloud-soap-server.php", "Not allowing user hostname intput with special-characters : " . $app_hostname, "", "", 0, 0, 0);
         return -1;
     }
     // check global limits
     // max disk size
     $max_disk_size = $cc_conf->get_value(8);
     // 8 is max_disk_size config
     if ($disk_req > $max_disk_size) {
         $event->log("cloudsoap->CloudProvision", $_SERVER['REQUEST_TIME'], 2, "cloud-soap-server.php", "Cloud User {$cloud_username} Disk must be <= {$max_disk_size}.", "", "", 0, 0, 0);
         return -7;
     }
     // max network interfaces
     $max_network_infterfaces = $cc_conf->get_value(9);
     // 9 is max_network_interfaces
     if ($network_req > $max_network_infterfaces) {
         $event->log("cloudsoap->CloudProvision", $_SERVER['REQUEST_TIME'], 2, "cloud-soap-server.php", "Cloud User {$cloud_username} Network must be <= {$max_network_infterfaces}.", "", "", 0, 0, 0);
         return -8;
     }
     // max resource per cr
     $max_res_per_cr = $cc_conf->get_value(6);
     // 6 is max_resources_per_cr
     if ($resource_quantity > $max_res_per_cr) {
         $event->log("cloudsoap->CloudProvision", $_SERVER['REQUEST_TIME'], 2, "cloud-soap-server.php", "Cloud User {$cloud_username} Resource quantity must be <= {$max_res_per_cr}.", "", "", 0, 0, 0);
         return -9;
     }
     // check user limits
     $cloud_user_limit = new clouduserlimits();
     $cloud_user_limit->get_instance_by_cu_id($cl_user->id);
     if (!$cloud_user_limit->check_limits($resource_quantity, $ram_req, $disk_req, $cpu_req, $network_req)) {
         $event->log("cloudsoap->CloudProvision", $_SERVER['REQUEST_TIME'], 2, "cloud-soap-server.php", "Cloud User {$cloud_username} exceeds its Cloud-Limits ! Not adding the request.", "", "", 0, 0, 0);
//.........这里部分代码省略.........
开发者ID:kelubo,项目名称:OpenQRM,代码行数:101,代码来源:cloudsoap.class.php

示例10: duplicate

 function duplicate()
 {
     $response = $this->get_response();
     $form = $response->form;
     if (!$form->get_errors() && $this->response->submit()) {
         $storage_id = $this->response->html->request()->get('storage_id');
         $storage = new storage();
         $resource = new resource();
         $deployment = new deployment();
         $storage->get_instance_by_id($storage_id);
         $resource->get_instance_by_id($storage->resource_id);
         $deployment->get_instance_by_id($storage->type);
         $name = $form->get_request('name');
         // check if volume / image name is aleady existing
         $image_check = new image();
         $image_check->get_instance_by_name($name);
         if (isset($image_check->id) && $image_check->id > 0) {
             $error = sprintf($this->lang['error_image_exists'], $name);
         }
         $linuxcoe_volume = new linuxcoe_volume();
         $linuxcoe_volume->get_instance_by_name($name);
         if (isset($linuxcoe_volume->id) && $linuxcoe_volume->id > 0) {
             $error = sprintf($this->lang['error_exists'], $name);
         }
         if (isset($error)) {
             $response->error = $error;
         } else {
             // add volume
             $linuxcoe_volume->get_instance_by_name($this->volume);
             $volume_fields = array();
             $volume_fields["linuxcoe_volume_id"] = (int) str_replace(".", "", str_pad(microtime(true), 15, "0"));
             $volume_fields['linuxcoe_volume_name'] = $name;
             $volume_fields['linuxcoe_volume_root'] = $linuxcoe_volume->root;
             $volume_fields['linuxcoe_volume_description'] = $linuxcoe_volume->description;
             $linuxcoe_volume->add($volume_fields);
             // add image
             $tables = $this->openqrm->get('table');
             $image_fields = array();
             $image_fields["image_id"] = (int) str_replace(".", "", str_pad(microtime(true), 15, "0"));
             $image_fields['image_name'] = $name;
             $image_fields['image_type'] = $deployment->type;
             $image_fields['image_rootfstype'] = 'local';
             $image_fields['image_storageid'] = $storage->id;
             $image_fields['image_comment'] = "Image Object for volume {$name}";
             $image_fields['image_rootdevice'] = 'local';
             $image = new image();
             $image->add($image_fields);
             $response->msg = sprintf($this->lang['msg_cloned'], $this->volume, $name);
             // save image id in response for the wizard
             $response->image_id = $image_fields["image_id"];
         }
     }
     return $response;
 }
开发者ID:kelubo,项目名称:OpenQRM,代码行数:54,代码来源:linuxcoe.clone.class.php

示例11: edit

 function edit()
 {
     if ($this->deployment->type === 'iscsi-deployment') {
         $resource_icon_default = "/img/resource.png";
         $storage_icon = "/plugins/iscsi-storage/img/plugin.png";
         $state_icon = $this->openqrm->get('baseurl') . "/img/" . $this->resource->state . ".png";
         if ($this->file->exists($this->openqrm->get('webdir') . $storage_icon)) {
             $resource_icon_default = $storage_icon;
         }
         $resource_icon_default = $this->openqrm->get('baseurl') . $resource_icon_default;
         $d['state'] = "<img width=24 height=24 src={$state_icon}>";
         $d['icon'] = "<img width=24 height=24 src={$resource_icon_default}>";
         $d['resource'] = $this->resource->id . ' / ' . $this->resource->ip;
         $d['name'] = $this->storage->name;
         $d['id'] = $this->storage->id;
         $a = $this->response->html->a();
         $a->label = $this->lang['action_add'];
         $a->css = 'add';
         $a->handler = 'onclick="wait();"';
         $a->href = $this->response->get_url($this->actions_name, "add");
         $d['add'] = $a->get_string();
         $body = array();
         $identifier_disabled = array();
         $file = $this->statfile;
         if (file_exists($file)) {
             $lines = explode("\n", file_get_contents($file));
             if (count($lines) >= 1) {
                 $i = 0;
                 $t = $this->response->html->template($this->openqrm->get('webdir') . '/js/openqrm-progressbar.js');
                 foreach ($lines as $line) {
                     if ($line !== '') {
                         $line = explode('@', $line);
                         if ($i === 0) {
                             $d['vsize'] = number_format($line[0], 0, '', '') . ' MB';
                             $d['vfree'] = number_format($line[1], 0, '', '') . ' MB';
                         } else {
                             $name = $line[2];
                             $volume_size = $line[5];
                             $auth_link = '&#160;';
                             $clone_link = '&#160;';
                             // create/remove image object, check if image exists
                             $image_add_remove = '';
                             $deployment_type = '';
                             $image = new image();
                             $image->get_instance_by_name($name);
                             if (strlen($image->id)) {
                                 if ($image->type == $this->deployment->type) {
                                     if ($line[0] === $this->deployment->type) {
                                         if ($d['vfree'] !== '0 MB') {
                                             $a = $this->response->html->a();
                                             $a->title = $this->lang['action_clone'];
                                             $a->label = $this->lang['action_clone'];
                                             $a->handler = 'onclick="wait();"';
                                             $a->css = 'clone';
                                             $a->href = $this->response->get_url($this->actions_name, "clone") . '&volume=' . $name;
                                             $clone_link = $a->get_string();
                                         }
                                         $a = $this->response->html->a();
                                         $a->title = $this->lang['action_auth'];
                                         $a->label = $this->lang['action_auth'];
                                         $a->handler = 'onclick="wait();"';
                                         $a->css = 'edit';
                                         $a->href = $this->response->get_url($this->actions_name, "auth") . '&volume=' . $name;
                                         $auth_link = $a->get_string();
                                     } else {
                                         $identifier_disabled[] = $name;
                                     }
                                 }
                             }
                             // create/remove image object, check if image exists
                             $deployment_type = $this->deployment->type;
                             if (strlen($image->id)) {
                                 if ($image->type != $this->deployment->type) {
                                     $deployment_type = $image->type;
                                     $identifier_disabled[] = $name;
                                 } else {
                                     $i = $this->response->html->a();
                                     $i->title = $this->lang['action_remove_image'];
                                     $i->label = $this->lang['action_remove_image'];
                                     $i->handler = 'onclick="wait();"';
                                     $i->css = 'edit';
                                     $i->href = $this->response->get_url($this->actions_name, "image") . '&image_id=' . $image->id . '&image_command=remove';
                                     $image_add_remove = $i;
                                 }
                             } else {
                                 $i = $this->response->html->a();
                                 $i->title = $this->lang['action_add_image'];
                                 $i->label = $this->lang['action_add_image'];
                                 $i->handler = 'onclick="wait();"';
                                 $i->css = 'edit';
                                 if ($this->deployment->type === 'iscsi-deployment') {
                                     $image_root_device = '/dev/' . $name . '/1';
                                     $i->href = $this->response->get_url($this->actions_name, "image") . '&root_device=' . $image_root_device . '&image_name=' . $name . '&image_command=add';
                                 }
                                 $identifier_disabled[] = $name;
                                 $image_add_remove = $i;
                             }
                             if ($volume_size == "clone_in_progress") {
                                 // add to disabled identifier
                                 $identifier_disabled[] = $name;
//.........这里部分代码省略.........
开发者ID:kelubo,项目名称:OpenQRM,代码行数:101,代码来源:iscsi-storage.edit.class.php

示例12: remove

 function remove()
 {
     $response = $this->get_response();
     $volume_names = $response->html->request()->get($this->identifier_name);
     $form = $response->form;
     if ($volume_names !== '') {
         $submit = $form->get_elements('submit');
         $submit->handler = 'onclick="wait();"';
         $form->add($submit, 'submit');
         $submit = $form->get_elements('cancel');
         $submit->handler = 'onclick="cancel();"';
         $form->add($submit, 'cancel');
         $i = 0;
         foreach ($volume_names as $ex) {
             $d['param_f' . $i]['label'] = $ex;
             $d['param_f' . $i]['object']['type'] = 'htmlobject_input';
             $d['param_f' . $i]['object']['attrib']['type'] = 'checkbox';
             $d['param_f' . $i]['object']['attrib']['name'] = $this->identifier_name . '[' . $i . ']';
             $d['param_f' . $i]['object']['attrib']['value'] = $ex;
             $d['param_f' . $i]['object']['attrib']['checked'] = true;
             $i++;
         }
         $form->add($d);
         if (!$form->get_errors() && $response->submit()) {
             $storage_id = $this->response->html->request()->get('storage_id');
             $storage = new storage();
             $resource = new resource();
             $errors = array();
             $message = array();
             foreach ($volume_names as $key => $volume_name) {
                 // check if an appliance is still using the volume as an image
                 $image = new image();
                 $image->get_instance_by_name($volume_name);
                 // check if it is still in use
                 $appliance = new appliance();
                 $appliances_using_resource = $appliance->get_ids_per_image($image->id);
                 if (count($appliances_using_resource) > 0) {
                     $appliances_using_resource_str = implode(",", $appliances_using_resource[0]);
                     $errors[] = sprintf($this->lang['msg_image_still_in_use'], $volume_name, $image->id, $appliances_using_resource_str);
                 } else {
                     // remove volume
                     $linuxcoe_volume = new linuxcoe_volume();
                     $linuxcoe_volume->remove_by_name($volume_name);
                     // remove the image of the volume
                     $image->remove_by_name($volume_name);
                     $form->remove($this->identifier_name . '[' . $key . ']');
                     $message[] = sprintf($this->lang['msg_removed'], $volume_name);
                 }
             }
             if (count($errors) === 0) {
                 $response->msg = join('<br>', $message);
             } else {
                 $msg = array_merge($errors, $message);
                 $response->error = join('<br>', $msg);
             }
         }
     } else {
         $response->msg = '';
     }
     return $response;
 }
开发者ID:kelubo,项目名称:OpenQRM,代码行数:61,代码来源:linuxcoe.remove.class.php

示例13: image

 function remove_by_name($image_name)
 {
     // do not remove the idle + openqrm image
     if ($image_name == "openqrm" || $image_name == "idle") {
         return;
     }
     // remove auth file
     $rem_image = new image();
     $rem_image->get_instance_by_name($image_name);
     $rem_image_id = $rem_image->id;
     $CMD = "rm -f {$this->_base_dir}/openqrm/web/action/image-auth/iauth.{$rem_image_id}";
     exec($CMD);
     // remove from db
     $db = openqrm_get_db_connection();
     $rs = $db->Execute("delete from {$this->_db_table} where image_name='{$image_name}'");
 }
开发者ID:kelubo,项目名称:OpenQRM,代码行数:16,代码来源:image.class.php

示例14: 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

示例15: duplicate

 function duplicate()
 {
     $response = $this->get_response();
     $form = $response->form;
     if (!$form->get_errors() && $this->response->submit()) {
         $name = $form->get_request('name');
         $command = $this->openqrm->get('basedir') . '/plugins/kvm/bin/openqrm-kvm clone';
         $command .= ' -t ' . $this->deployment->type;
         $command .= ' -v ' . $this->volgroup;
         $command .= ' -n ' . $this->lvol;
         $command .= ' -s ' . $name;
         $command .= ' -u ' . $this->openqrm->admin()->name . ' -p ' . $this->openqrm->admin()->password;
         $command .= ' --caching false';
         $command .= ' --openqrm-ui-user ' . $this->user->name;
         $command .= ' --openqrm-cmd-mode background';
         $statfile = $this->openqrm->get('basedir') . '/plugins/kvm/web/storage/' . $this->resource->id . '.' . $this->volgroup . '.lv.stat';
         if ($this->file->exists($statfile)) {
             $lines = explode("\n", $this->file->get_contents($statfile));
             if (count($lines) >= 1) {
                 foreach ($lines as $line) {
                     if ($line !== '') {
                         $line = explode('@', $line);
                         $check = $line[1];
                         if ($name === $check) {
                             $error = sprintf($this->lang['error_exists'], $name);
                         }
                     }
                 }
             }
         }
         // check for image name
         $image = new image();
         $image->get_instance_by_name($name);
         if (isset($image->id) && $image->id > 1) {
             $error = sprintf($this->lang['error_exists'], $name);
         }
         if (isset($error)) {
             $response->error = $error;
         } else {
             $file = $this->openqrm->get('basedir') . '/plugins/kvm/web/storage/' . $this->resource->id . '.lvm.' . $name . '.sync_progress';
             if ($this->file->exists($file)) {
                 $this->file->remove($file);
             }
             $root_device_ident = $this->openqrm->get('basedir') . '/plugins/kvm/web/storage/' . $this->resource->id . '.' . $name . '.root_device';
             if ($this->file->exists($root_device_ident)) {
                 $this->file->remove($root_device_ident);
             }
             $this->resource->send_command($this->resource->ip, $command);
             while (!$this->file->exists($file)) {
                 usleep(10000);
                 clearstatcache();
             }
             // wait for the root-device identifier
             while (!$this->file->exists($root_device_ident)) {
                 usleep(10000);
                 clearstatcache();
             }
             $root_device = trim($this->file->get_contents($root_device_ident));
             $this->file->remove($root_device_ident);
             $tables = $this->openqrm->get('table');
             $image_fields = array();
             $image_fields["image_id"] = (int) str_replace(".", "", str_pad(microtime(true), 15, "0"));
             $image_fields['image_name'] = $name;
             $image_fields['image_type'] = $this->deployment->type;
             $image_fields['image_rootfstype'] = 'local';
             $image_fields['image_storageid'] = $this->storage->id;
             $image_fields['image_comment'] = "Image Object for volume {$name}";
             $image_fields['image_rootdevice'] = $root_device;
             $image = new image();
             $image->add($image_fields);
             $response->image_id = $image_fields["image_id"];
             $response->msg = sprintf($this->lang['msg_cloned'], $this->lvol, $name);
         }
     }
     return $response;
 }
开发者ID:kelubo,项目名称:OpenQRM,代码行数:76,代码来源:kvm.clone.class.php


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