예제 #1
0
 function CloudRequestGetDetails($method_parameters)
 {
     global $event;
     $parameter_array = explode(',', $method_parameters);
     $mode = $parameter_array[0];
     $username = $parameter_array[1];
     $password = $parameter_array[2];
     $cr_id = $parameter_array[3];
     // check all user input
     for ($i = 0; $i <= 3; $i++) {
         if (!$this->check_param($parameter_array[$i])) {
             $event->log("cloudsoap->CloudRequestGetDetails", $_SERVER['REQUEST_TIME'], 2, "cloud-soap-server.php", "Not allowing user-intput with special-characters : {$parameter_array[$i]}", "", "", 0, 0, 0);
             return;
         }
     }
     // check parameter count
     $parameter_count = count($parameter_array);
     if ($parameter_count != 4) {
         $event->log("cloudsoap->CloudRequestGetDetails", $_SERVER['REQUEST_TIME'], 2, "cloud-soap-server.php", "Wrong parameter count {$parameter_count} ! Exiting.", "", "", 0, 0, 0);
         return;
     }
     // check authentication
     if (!$this->check_user($mode, $username, $password)) {
         $event->log("cloudsoap->CloudRequestGetDetails", $_SERVER['REQUEST_TIME'], 2, "cloud-soap-server.php", "User authentication failed (mode {$mode})", "", "", 0, 0, 0);
         return;
     }
     $cr_request = new cloudrequest();
     $cr_request->get_instance_by_id($cr_id);
     $cl_user = new clouduser();
     $cl_user->get_instance_by_id($cr_request->cu_id);
     switch ($mode) {
         case 'user':
             if (strcmp($username, $cl_user->name)) {
                 $event->log("cloudsoap->CloudRequestGetDetails", $_SERVER['REQUEST_TIME'], 2, "cloud-soap-server.php", "Cloud User {$username} is trying to get Details of Cloud User {$cl_user->name}!", "", "", 0, 0, 0);
                 return;
             }
             break;
     }
     $event->log("cloudsoap->CloudRequestGetDetails", $_SERVER['REQUEST_TIME'], 5, "cloud-soap-server.php", "Providing details for Cloud request {$cr_id}", "", "", 0, 0, 0);
     $cloudrequest_details = array();
     // create the array to return
     $cloudrequest_details['id'] = $cr_id;
     // translate user_id to user_name
     $cloudrequest_details['cu_id'] = $cl_user->id;
     // translate status
     $cloudrequest_details['status'] = $cr_request->getstatus($cr_id);
     $cloudrequest_details['request_time'] = date("d-m-Y H-i", $cr_request->request_time);
     $cloudrequest_details['start'] = date("d-m-Y H-i", $cr_request->start);
     $cloudrequest_details['stop'] = date("d-m-Y H-i", $cr_request->stop);
     // translate kernel_id to kernel_name
     $kernel_id = $cr_request->kernel_id;
     $kernel = new kernel();
     $kernel->get_instance_by_id($kernel_id);
     $cloudrequest_details['kernel_name'] = $kernel->name;
     // translate image_id to image_name
     $image_id = $cr_request->image_id;
     $image = new image();
     $image->get_instance_by_id($image_id);
     $cloudrequest_details['image_name'] = $image->name;
     $cloudrequest_details['ram_req'] = $cr_request->ram_req;
     $cloudrequest_details['cpu_req'] = $cr_request->cpu_req;
     $cloudrequest_details['disk_req'] = $cr_request->disk_req;
     $cloudrequest_details['network_req'] = $cr_request->network_req;
     $cloudrequest_details['resource_quantity'] = $cr_request->resource_quantity;
     // translate virtualization type
     $virtualization = new virtualization();
     $virtualization->get_instance_by_id($cr_request->resource_type_req);
     $cloudrequest_details['resource_type_req'] = $virtualization->name;
     $cloudrequest_details['deployment_type_req'] = $cr_request->deployment_type_req;
     $cloudrequest_details['ha_req'] = $cr_request->ha_req;
     $cloudrequest_details['shared_req'] = $cr_request->shared_req;
     $cloudrequest_details['puppet_groups'] = $cr_request->puppet_groups;
     $cloudrequest_details['appliance_id'] = $cr_request->appliance_id;
     $appliance_id_array = explode(",", $cr_request->appliance_id);
     foreach ($appliance_id_array as $appliance_id) {
         $cloudappliance = new cloudappliance();
         $cloudappliance->get_instance_by_appliance_id($appliance_id);
         $cloudappliance_id_array[$appliance_id] = $cloudappliance->id;
     }
     $cloudrequest_details['cloudappliance_id'] = $cloudappliance->id;
     $cloudrequest_details['lastbill'] = $cr_request->lastbill;
     return $cloudrequest_details;
 }
예제 #2
0
 function select()
 {
     $response = $this->response;
     $form = $response->get_form($this->actions_name, 'select');
     $response->form = $form;
     require_once $this->webdir . "/plugins/cloud/class/clouduser.class.php";
     $cloud_user = new clouduser();
     require_once $this->webdir . "/plugins/cloud/class/cloudusergroup.class.php";
     $cloud_group = new cloudusergroup();
     require_once $this->webdir . "/plugins/cloud/class/cloudrequest.class.php";
     $cloud_request = new cloudrequest();
     $active_state_icon = "/openqrm/base/img/active.png";
     $inactive_state_icon = "/openqrm/base/img/idle.png";
     $a = $this->response->html->a();
     $a->label = $this->lang['cloud_request_clean'];
     $a->css = 'add';
     $a->handler = 'onclick="wait();"';
     $a->href = $this->response->get_url($this->actions_name, "clean");
     $clean_up_button = $a->get_string();
     $head['cr_status']['title'] = '&#160;';
     $head['cr_status']['sortable'] = false;
     $head['cr_id']['title'] = $this->lang['cloud_request_id'];
     $head['cr_id']['hidden'] = true;
     $head['cr_cu_id']['title'] = $this->lang['cloud_request_user'];
     $head['cr_cu_id']['hidden'] = true;
     $head['cr_request_time']['title'] = $this->lang['cloud_request_time'];
     $head['cr_request_time']['hidden'] = true;
     $head['cr_start']['title'] = $this->lang['cloud_request_start_time'];
     $head['cr_start']['hidden'] = true;
     $head['cr_stop']['title'] = $this->lang['cloud_request_stop_time'];
     $head['cr_stop']['hidden'] = true;
     $head['cr_appliance_id']['title'] = $this->lang['cloud_request_app_id'];
     $head['cr_appliance_id']['hidden'] = true;
     $head['info']['title'] = '&#160;';
     $head['info']['sortable'] = false;
     $head['cr_details']['title'] = '&#160;';
     $head['cr_details']['sortable'] = false;
     $table = $response->html->tablebuilder('cloud_request_table', $response->get_array($this->actions_name, 'select'));
     $table->css = 'htmlobject_table';
     $table->id = 'cloud_requests';
     $table->head = $head;
     $table->sort = 'cr_id';
     $table->order = 'DESC';
     $table->sort_link = false;
     $table->autosort = false;
     $table->limit = 10;
     $table->max = $cloud_request->get_count();
     $table->identifier = 'cr_id';
     $table->identifier_name = $this->identifier_name;
     $table->actions = array('approve', 'cancel', 'delete', 'deny', 'deprovision');
     $table->actions_name = $this->actions_name;
     $table->init();
     $cloud_request_array = $cloud_request->display_overview(0, 10000, $table->sort, $table->order);
     $ta = '';
     foreach ($cloud_request_array as $index => $cz) {
         $cloud_request->get_instance_by_id($cz['cr_id']);
         if ($this->response->html->request()->get('requests_filter') === '' || $this->response->html->request()->get('requests_filter') == $cloud_request->status) {
             $cloud_user->get_instance_by_id($cloud_request->cu_id);
             $cr_status = '<span class="pill">' . $cloud_request->getstatus($cloud_request->id) . '</span>';
             // details action
             $a = $this->response->html->a();
             $a->title = $this->lang['cloud_request_details'];
             $a->label = $this->lang['cloud_request_details'];
             $a->handler = 'onclick="javascript:cloudopenPopup(' . $cloud_request->id . '); return false;"';
             $a->css = 'edit_nojs';
             $a->href = $this->response->get_url($this->actions_name, 'details') . "&" . $this->identifier_name . "=" . $cloud_request->id;
             $request_details = $a->get_string();
             // server pause action
             $request_pause = '';
             $appliance_state = '';
             if ($cloud_request->status == 3 && $cloud_request->appliance_id != '') {
                 $appliance = new appliance();
                 $appliance->get_instance_by_id($cloud_request->appliance_id);
                 if ($appliance->state == 'active') {
                     $a = $this->response->html->a();
                     $a->title = $this->lang['cloud_request_pause'];
                     $a->label = $this->lang['cloud_request_pause'];
                     $a->css = 'edit';
                     $a->href = $this->response->get_url($this->actions_name, 'pause') . "&" . $this->identifier_name . "=" . $cloud_request->id;
                     $request_pause = $a->get_string();
                     $appliance_state = $cloud_request->appliance_id . ' - <span class="pill">' . $appliance->state . '</span>';
                 } else {
                     if ($appliance->state == 'stopped') {
                         $a = $this->response->html->a();
                         $a->title = $this->lang['cloud_request_unpause'];
                         $a->label = $this->lang['cloud_request_unpause'];
                         $a->css = 'edit';
                         $a->href = $this->response->get_url($this->actions_name, 'unpause') . "&" . $this->identifier_name . "=" . $cloud_request->id;
                         $request_pause = $a->get_string();
                         $appliance_state = $cloud_request->appliance_id . ' - <span class="pill">' . $appliance->state . '</span>';
                     }
                 }
             }
             $request_details = $request_pause . $request_details;
             $info = '<b>' . $this->lang['cloud_request_id'] . '</b>: ' . $cloud_request->id . '<br>';
             $info .= '<b>' . $this->lang['cloud_request_user'] . '</b>: ' . $cloud_user->name . '<br>';
             $info .= '<b>' . $this->lang['cloud_request_time'] . '</b>: ' . date("Y-m-d H:i:s", $cloud_request->request_time) . '<br>';
             $info .= '<b>' . $this->lang['cloud_request_start_time'] . '</b>: ' . date("Y-m-d H:i:s", $cloud_request->start) . '<br>';
             $info .= '<b>' . $this->lang['cloud_request_stop_time'] . '</b>: ' . date("Y-m-d H:i:s", $cloud_request->stop) . '<br>';
             $info .= '<b>' . $this->lang['cloud_request_app_id'] . '</b>: ' . $appliance_state . '<br>';
             $ta[] = array('cr_status' => $cr_status, 'cr_id' => $cloud_request->id, 'cr_cu_id' => $cloud_user->name, 'cr_request_time' => date("Y-m-d H:i:s", $cloud_request->request_time), 'cr_start' => date("Y-m-d H:i:s", $cloud_request->start), 'cr_stop' => date("Y-m-d H:i:s", $cloud_request->stop), 'info' => $info, 'cr_appliance_id' => $appliance_state, 'cr_details' => $request_details);
         }
     }
     // Filter
     $list = $cloud_request->getstates();
     $filter = array();
     $filter[] = array('', '');
     foreach ($list as $l) {
         $filter[] = array($l[0], $l[1]);
     }
     $select = $this->response->html->select();
     $select->add($filter, array(0, 1));
     $select->name = 'requests_filter';
     $select->handler = 'onchange="wait();this.form.submit();return false;"';
     $select->selected = array($this->response->html->request()->get('requests_filter'));
     $box = $this->response->html->box();
     $box->add($select);
     $box->id = 'requests_filter';
     $box->css = 'htmlobject_box';
     $box->label = $this->lang['cloud_request_state_filter'];
     $table->body = $ta;
     $table->max = count($ta);
     $response->clean = $clean_up_button;
     $response->table = $table;
     $response->filter = $box;
     return $response;
 }