diff --git a/db/update17.6.1.sql b/db/update17.6.1.sql index 382c149fbe..9884b3e4dd 100644 --- a/db/update17.6.1.sql +++ b/db/update17.6.1.sql @@ -5,3 +5,8 @@ ALTER TABLE `zt_host` ADD `expiredDate` datetime NOT NULL AFTER `type`; ALTER TABLE `zt_host` ADD `virtualSoftware` varchar(30) NOT NULL DEFAULT '' AFTER `secret`; ALTER TABLE `zt_asset` ADD `registerDate` datetime NOT NULL AFTER `editedDate`; ALTER TABLE `zt_vmtemplate` ADD `type` varchar(30) NOT NULL DEFAULT 'normal' AFTER `hostID`; +ALTER TABLE `zt_vmtemplate` ADD `imageFile` varchar(300) NOT NULL; +ALTER TABLE `zt_vmtemplate` ADD `createdBy` varchar(30) NOT NULL; +ALTER TABLE `zt_vmtemplate` ADD `createdDate` datetime NOT NULL; +ALTER TABLE `zt_vmtemplate` ADD `editedBy` varchar(30) NOT NULL; +ALTER TABLE `zt_vmtemplate` ADD `editedDate` datetime NOT NULL; diff --git a/module/zahost/control.php b/module/zahost/control.php index 716dbaf3ea..855345aefe 100644 --- a/module/zahost/control.php +++ b/module/zahost/control.php @@ -150,17 +150,22 @@ class zahost extends control * @access public * @return void */ - public function createTemplate() + public function createTemplate($hostID) { + $host = $this->zahost->getById($hostID); if($_POST) { - $this->zahost->createTemplate(); + $this->zahost->createTemplate($host); if(dao::isError()) return $this->send(array('result' => 'fail', 'message' => dao::getError())); - return $this->send(array('result' => 'success', 'message' => $this->lang->saveSuccess, 'locate' => inLink('browse'))); + return $this->send(array('result' => 'success', 'message' => $this->lang->saveSuccess, 'locate' => inLink('browseTemplate', "id={$hostID}"))); } + $imageFiles = $this->zahost->imageFiles($host); + $imageFilesOptions = array_combine(array_column($imageFiles, 'macAddress'), array_column($imageFiles, 'name')); + $this->view->title = $this->lang->zahost->createTemplate; + $this->view->imageFiles = $imageFilesOptions; $this->display(); } diff --git a/module/zahost/lang/de.php b/module/zahost/lang/de.php index f173618569..d82303e831 100644 --- a/module/zahost/lang/de.php +++ b/module/zahost/lang/de.php @@ -49,10 +49,10 @@ $lang->zahost->vmTemplate->osVersion = $lang->zahost->osVersion; $lang->zahost->vmTemplate->osLang = $lang->zahost->osLang; $lang->zahost->vmTemplate->imageFile = $lang->zahost->imageFile; -$lang->vm->langList = array(); -$lang->vm->langList['zh_cn'] = 'Simplified Chinese'; -$lang->vm->langList['zh_tw'] = 'Traditional Chinese'; -$lang->vm->langList['en_us'] = 'American English'; +$lang->zahost->langList = array(); +$lang->zahost->langList['zh_cn'] = 'Simplified Chinese'; +$lang->zahost->langList['zh_tw'] = 'Traditional Chinese'; +$lang->zahost->langList['en_us'] = 'American English'; $lang->zahost->empty = 'No Host'; $lang->zahost->templateEmpty = 'No Template'; @@ -71,33 +71,33 @@ $lang->zahost->zaHostTypeList['physical'] = 'Physical'; $lang->zahost->confirmDelete = 'Do you want to delete this host?'; -$lang->vm->versionList = array(); -$lang->vm->versionList['winxp']['all'] = 'Windows XP'; -$lang->vm->versionList['win7']['home'] = 'Home Basic'; -$lang->vm->versionList['win7']['professional'] = 'Professional'; -$lang->vm->versionList['win7']['enterprise'] = 'Enterprise'; -$lang->vm->versionList['win7']['ultimate'] = 'Ultimate'; -$lang->vm->versionList['win10']['home'] = 'Home Basic'; -$lang->vm->versionList['win10']['professional'] = 'Professional'; -$lang->vm->versionList['win10']['enterprise'] = 'Enterprise'; -$lang->vm->versionList['win10']['ultimate'] = 'Ultimate'; -$lang->vm->versionList['win11']['home'] = 'Home Basic'; -$lang->vm->versionList['win11']['professional'] = 'Professional'; -$lang->vm->versionList['win11']['enterprise'] = 'Enterprise'; -$lang->vm->versionList['win11']['ultimate'] = 'Ultimate'; -$lang->vm->versionList['winServer']['2008'] = '2008'; -$lang->vm->versionList['winServer']['2012'] = '2012'; -$lang->vm->versionList['winServer']['2016'] = '2016'; -$lang->vm->versionList['winServer']['2019'] = '2019'; -$lang->vm->versionList['debian']['9'] = '9'; -$lang->vm->versionList['debian']['10'] = '10'; -$lang->vm->versionList['debian']['11'] = '11'; -$lang->vm->versionList['ubuntu']['16'] = '16'; -$lang->vm->versionList['ubuntu']['18'] = '18'; -$lang->vm->versionList['ubuntu']['20'] = '20'; -$lang->vm->versionList['centos']['6'] = '6'; -$lang->vm->versionList['centos']['7'] = '7'; -$lang->vm->versionList['centos']['8'] = '8'; +$lang->zahost->versionList = array(); +$lang->zahost->versionList['winxp']['all'] = 'Windows XP'; +$lang->zahost->versionList['win7']['home'] = 'Home Basic'; +$lang->zahost->versionList['win7']['professional'] = 'Professional'; +$lang->zahost->versionList['win7']['enterprise'] = 'Enterprise'; +$lang->zahost->versionList['win7']['ultimate'] = 'Ultimate'; +$lang->zahost->versionList['win10']['home'] = 'Home Basic'; +$lang->zahost->versionList['win10']['professional'] = 'Professional'; +$lang->zahost->versionList['win10']['enterprise'] = 'Enterprise'; +$lang->zahost->versionList['win10']['ultimate'] = 'Ultimate'; +$lang->zahost->versionList['win11']['home'] = 'Home Basic'; +$lang->zahost->versionList['win11']['professional'] = 'Professional'; +$lang->zahost->versionList['win11']['enterprise'] = 'Enterprise'; +$lang->zahost->versionList['win11']['ultimate'] = 'Ultimate'; +$lang->zahost->versionList['winServer']['2008'] = '2008'; +$lang->zahost->versionList['winServer']['2012'] = '2012'; +$lang->zahost->versionList['winServer']['2016'] = '2016'; +$lang->zahost->versionList['winServer']['2019'] = '2019'; +$lang->zahost->versionList['debian']['9'] = '9'; +$lang->zahost->versionList['debian']['10'] = '10'; +$lang->zahost->versionList['debian']['11'] = '11'; +$lang->zahost->versionList['ubuntu']['16'] = '16'; +$lang->zahost->versionList['ubuntu']['18'] = '18'; +$lang->zahost->versionList['ubuntu']['20'] = '20'; +$lang->zahost->versionList['centos']['6'] = '6'; +$lang->zahost->versionList['centos']['7'] = '7'; +$lang->zahost->versionList['centos']['8'] = '8'; $lang->zahost->notice = new stdclass(); $lang->zahost->notice->ip = '『%s』incorrect format!'; diff --git a/module/zahost/lang/en.php b/module/zahost/lang/en.php index f173618569..d82303e831 100644 --- a/module/zahost/lang/en.php +++ b/module/zahost/lang/en.php @@ -49,10 +49,10 @@ $lang->zahost->vmTemplate->osVersion = $lang->zahost->osVersion; $lang->zahost->vmTemplate->osLang = $lang->zahost->osLang; $lang->zahost->vmTemplate->imageFile = $lang->zahost->imageFile; -$lang->vm->langList = array(); -$lang->vm->langList['zh_cn'] = 'Simplified Chinese'; -$lang->vm->langList['zh_tw'] = 'Traditional Chinese'; -$lang->vm->langList['en_us'] = 'American English'; +$lang->zahost->langList = array(); +$lang->zahost->langList['zh_cn'] = 'Simplified Chinese'; +$lang->zahost->langList['zh_tw'] = 'Traditional Chinese'; +$lang->zahost->langList['en_us'] = 'American English'; $lang->zahost->empty = 'No Host'; $lang->zahost->templateEmpty = 'No Template'; @@ -71,33 +71,33 @@ $lang->zahost->zaHostTypeList['physical'] = 'Physical'; $lang->zahost->confirmDelete = 'Do you want to delete this host?'; -$lang->vm->versionList = array(); -$lang->vm->versionList['winxp']['all'] = 'Windows XP'; -$lang->vm->versionList['win7']['home'] = 'Home Basic'; -$lang->vm->versionList['win7']['professional'] = 'Professional'; -$lang->vm->versionList['win7']['enterprise'] = 'Enterprise'; -$lang->vm->versionList['win7']['ultimate'] = 'Ultimate'; -$lang->vm->versionList['win10']['home'] = 'Home Basic'; -$lang->vm->versionList['win10']['professional'] = 'Professional'; -$lang->vm->versionList['win10']['enterprise'] = 'Enterprise'; -$lang->vm->versionList['win10']['ultimate'] = 'Ultimate'; -$lang->vm->versionList['win11']['home'] = 'Home Basic'; -$lang->vm->versionList['win11']['professional'] = 'Professional'; -$lang->vm->versionList['win11']['enterprise'] = 'Enterprise'; -$lang->vm->versionList['win11']['ultimate'] = 'Ultimate'; -$lang->vm->versionList['winServer']['2008'] = '2008'; -$lang->vm->versionList['winServer']['2012'] = '2012'; -$lang->vm->versionList['winServer']['2016'] = '2016'; -$lang->vm->versionList['winServer']['2019'] = '2019'; -$lang->vm->versionList['debian']['9'] = '9'; -$lang->vm->versionList['debian']['10'] = '10'; -$lang->vm->versionList['debian']['11'] = '11'; -$lang->vm->versionList['ubuntu']['16'] = '16'; -$lang->vm->versionList['ubuntu']['18'] = '18'; -$lang->vm->versionList['ubuntu']['20'] = '20'; -$lang->vm->versionList['centos']['6'] = '6'; -$lang->vm->versionList['centos']['7'] = '7'; -$lang->vm->versionList['centos']['8'] = '8'; +$lang->zahost->versionList = array(); +$lang->zahost->versionList['winxp']['all'] = 'Windows XP'; +$lang->zahost->versionList['win7']['home'] = 'Home Basic'; +$lang->zahost->versionList['win7']['professional'] = 'Professional'; +$lang->zahost->versionList['win7']['enterprise'] = 'Enterprise'; +$lang->zahost->versionList['win7']['ultimate'] = 'Ultimate'; +$lang->zahost->versionList['win10']['home'] = 'Home Basic'; +$lang->zahost->versionList['win10']['professional'] = 'Professional'; +$lang->zahost->versionList['win10']['enterprise'] = 'Enterprise'; +$lang->zahost->versionList['win10']['ultimate'] = 'Ultimate'; +$lang->zahost->versionList['win11']['home'] = 'Home Basic'; +$lang->zahost->versionList['win11']['professional'] = 'Professional'; +$lang->zahost->versionList['win11']['enterprise'] = 'Enterprise'; +$lang->zahost->versionList['win11']['ultimate'] = 'Ultimate'; +$lang->zahost->versionList['winServer']['2008'] = '2008'; +$lang->zahost->versionList['winServer']['2012'] = '2012'; +$lang->zahost->versionList['winServer']['2016'] = '2016'; +$lang->zahost->versionList['winServer']['2019'] = '2019'; +$lang->zahost->versionList['debian']['9'] = '9'; +$lang->zahost->versionList['debian']['10'] = '10'; +$lang->zahost->versionList['debian']['11'] = '11'; +$lang->zahost->versionList['ubuntu']['16'] = '16'; +$lang->zahost->versionList['ubuntu']['18'] = '18'; +$lang->zahost->versionList['ubuntu']['20'] = '20'; +$lang->zahost->versionList['centos']['6'] = '6'; +$lang->zahost->versionList['centos']['7'] = '7'; +$lang->zahost->versionList['centos']['8'] = '8'; $lang->zahost->notice = new stdclass(); $lang->zahost->notice->ip = '『%s』incorrect format!'; diff --git a/module/zahost/lang/fr.php b/module/zahost/lang/fr.php index f173618569..d82303e831 100644 --- a/module/zahost/lang/fr.php +++ b/module/zahost/lang/fr.php @@ -49,10 +49,10 @@ $lang->zahost->vmTemplate->osVersion = $lang->zahost->osVersion; $lang->zahost->vmTemplate->osLang = $lang->zahost->osLang; $lang->zahost->vmTemplate->imageFile = $lang->zahost->imageFile; -$lang->vm->langList = array(); -$lang->vm->langList['zh_cn'] = 'Simplified Chinese'; -$lang->vm->langList['zh_tw'] = 'Traditional Chinese'; -$lang->vm->langList['en_us'] = 'American English'; +$lang->zahost->langList = array(); +$lang->zahost->langList['zh_cn'] = 'Simplified Chinese'; +$lang->zahost->langList['zh_tw'] = 'Traditional Chinese'; +$lang->zahost->langList['en_us'] = 'American English'; $lang->zahost->empty = 'No Host'; $lang->zahost->templateEmpty = 'No Template'; @@ -71,33 +71,33 @@ $lang->zahost->zaHostTypeList['physical'] = 'Physical'; $lang->zahost->confirmDelete = 'Do you want to delete this host?'; -$lang->vm->versionList = array(); -$lang->vm->versionList['winxp']['all'] = 'Windows XP'; -$lang->vm->versionList['win7']['home'] = 'Home Basic'; -$lang->vm->versionList['win7']['professional'] = 'Professional'; -$lang->vm->versionList['win7']['enterprise'] = 'Enterprise'; -$lang->vm->versionList['win7']['ultimate'] = 'Ultimate'; -$lang->vm->versionList['win10']['home'] = 'Home Basic'; -$lang->vm->versionList['win10']['professional'] = 'Professional'; -$lang->vm->versionList['win10']['enterprise'] = 'Enterprise'; -$lang->vm->versionList['win10']['ultimate'] = 'Ultimate'; -$lang->vm->versionList['win11']['home'] = 'Home Basic'; -$lang->vm->versionList['win11']['professional'] = 'Professional'; -$lang->vm->versionList['win11']['enterprise'] = 'Enterprise'; -$lang->vm->versionList['win11']['ultimate'] = 'Ultimate'; -$lang->vm->versionList['winServer']['2008'] = '2008'; -$lang->vm->versionList['winServer']['2012'] = '2012'; -$lang->vm->versionList['winServer']['2016'] = '2016'; -$lang->vm->versionList['winServer']['2019'] = '2019'; -$lang->vm->versionList['debian']['9'] = '9'; -$lang->vm->versionList['debian']['10'] = '10'; -$lang->vm->versionList['debian']['11'] = '11'; -$lang->vm->versionList['ubuntu']['16'] = '16'; -$lang->vm->versionList['ubuntu']['18'] = '18'; -$lang->vm->versionList['ubuntu']['20'] = '20'; -$lang->vm->versionList['centos']['6'] = '6'; -$lang->vm->versionList['centos']['7'] = '7'; -$lang->vm->versionList['centos']['8'] = '8'; +$lang->zahost->versionList = array(); +$lang->zahost->versionList['winxp']['all'] = 'Windows XP'; +$lang->zahost->versionList['win7']['home'] = 'Home Basic'; +$lang->zahost->versionList['win7']['professional'] = 'Professional'; +$lang->zahost->versionList['win7']['enterprise'] = 'Enterprise'; +$lang->zahost->versionList['win7']['ultimate'] = 'Ultimate'; +$lang->zahost->versionList['win10']['home'] = 'Home Basic'; +$lang->zahost->versionList['win10']['professional'] = 'Professional'; +$lang->zahost->versionList['win10']['enterprise'] = 'Enterprise'; +$lang->zahost->versionList['win10']['ultimate'] = 'Ultimate'; +$lang->zahost->versionList['win11']['home'] = 'Home Basic'; +$lang->zahost->versionList['win11']['professional'] = 'Professional'; +$lang->zahost->versionList['win11']['enterprise'] = 'Enterprise'; +$lang->zahost->versionList['win11']['ultimate'] = 'Ultimate'; +$lang->zahost->versionList['winServer']['2008'] = '2008'; +$lang->zahost->versionList['winServer']['2012'] = '2012'; +$lang->zahost->versionList['winServer']['2016'] = '2016'; +$lang->zahost->versionList['winServer']['2019'] = '2019'; +$lang->zahost->versionList['debian']['9'] = '9'; +$lang->zahost->versionList['debian']['10'] = '10'; +$lang->zahost->versionList['debian']['11'] = '11'; +$lang->zahost->versionList['ubuntu']['16'] = '16'; +$lang->zahost->versionList['ubuntu']['18'] = '18'; +$lang->zahost->versionList['ubuntu']['20'] = '20'; +$lang->zahost->versionList['centos']['6'] = '6'; +$lang->zahost->versionList['centos']['7'] = '7'; +$lang->zahost->versionList['centos']['8'] = '8'; $lang->zahost->notice = new stdclass(); $lang->zahost->notice->ip = '『%s』incorrect format!'; diff --git a/module/zahost/lang/vi.php b/module/zahost/lang/vi.php index 195ba46634..477119b99e 100644 --- a/module/zahost/lang/vi.php +++ b/module/zahost/lang/vi.php @@ -52,10 +52,10 @@ $lang->zahost->vmTemplate->imageFile = $lang->zahost->imageFile; $lang->zahost->empty = 'No Host'; $lang->zahost->templateEmpty = 'No Template'; -$lang->vm->langList = array(); -$lang->vm->langList['zh_cn'] = 'Simplified Chinese'; -$lang->vm->langList['zh_tw'] = 'Traditional Chinese'; -$lang->vm->langList['en_us'] = 'American English'; +$lang->zahost->langList = array(); +$lang->zahost->langList['zh_cn'] = 'Simplified Chinese'; +$lang->zahost->langList['zh_tw'] = 'Traditional Chinese'; +$lang->zahost->langList['en_us'] = 'American English'; $lang->zahost->statusList['online'] = 'Online'; @@ -71,33 +71,33 @@ $lang->zahost->zaHostTypeList['physical'] = 'Physical'; $lang->zahost->confirmDelete = 'Do you want to delete this host?'; -$lang->vm->versionList = array(); -$lang->vm->versionList['winxp']['all'] = 'Windows XP'; -$lang->vm->versionList['win7']['home'] = 'Home Basic'; -$lang->vm->versionList['win7']['professional'] = 'Professional'; -$lang->vm->versionList['win7']['enterprise'] = 'Enterprise'; -$lang->vm->versionList['win7']['ultimate'] = 'Ultimate'; -$lang->vm->versionList['win10']['home'] = 'Home Basic'; -$lang->vm->versionList['win10']['professional'] = 'Professional'; -$lang->vm->versionList['win10']['enterprise'] = 'Enterprise'; -$lang->vm->versionList['win10']['ultimate'] = 'Ultimate'; -$lang->vm->versionList['win11']['home'] = 'Home Basic'; -$lang->vm->versionList['win11']['professional'] = 'Professional'; -$lang->vm->versionList['win11']['enterprise'] = 'Enterprise'; -$lang->vm->versionList['win11']['ultimate'] = 'Ultimate'; -$lang->vm->versionList['winServer']['2008'] = '2008'; -$lang->vm->versionList['winServer']['2012'] = '2012'; -$lang->vm->versionList['winServer']['2016'] = '2016'; -$lang->vm->versionList['winServer']['2019'] = '2019'; -$lang->vm->versionList['debian']['9'] = '9'; -$lang->vm->versionList['debian']['10'] = '10'; -$lang->vm->versionList['debian']['11'] = '11'; -$lang->vm->versionList['ubuntu']['16'] = '16'; -$lang->vm->versionList['ubuntu']['18'] = '18'; -$lang->vm->versionList['ubuntu']['20'] = '20'; -$lang->vm->versionList['centos']['6'] = '6'; -$lang->vm->versionList['centos']['7'] = '7'; -$lang->vm->versionList['centos']['8'] = '8'; +$lang->zahost->versionList = array(); +$lang->zahost->versionList['winxp']['all'] = 'Windows XP'; +$lang->zahost->versionList['win7']['home'] = 'Home Basic'; +$lang->zahost->versionList['win7']['professional'] = 'Professional'; +$lang->zahost->versionList['win7']['enterprise'] = 'Enterprise'; +$lang->zahost->versionList['win7']['ultimate'] = 'Ultimate'; +$lang->zahost->versionList['win10']['home'] = 'Home Basic'; +$lang->zahost->versionList['win10']['professional'] = 'Professional'; +$lang->zahost->versionList['win10']['enterprise'] = 'Enterprise'; +$lang->zahost->versionList['win10']['ultimate'] = 'Ultimate'; +$lang->zahost->versionList['win11']['home'] = 'Home Basic'; +$lang->zahost->versionList['win11']['professional'] = 'Professional'; +$lang->zahost->versionList['win11']['enterprise'] = 'Enterprise'; +$lang->zahost->versionList['win11']['ultimate'] = 'Ultimate'; +$lang->zahost->versionList['winServer']['2008'] = '2008'; +$lang->zahost->versionList['winServer']['2012'] = '2012'; +$lang->zahost->versionList['winServer']['2016'] = '2016'; +$lang->zahost->versionList['winServer']['2019'] = '2019'; +$lang->zahost->versionList['debian']['9'] = '9'; +$lang->zahost->versionList['debian']['10'] = '10'; +$lang->zahost->versionList['debian']['11'] = '11'; +$lang->zahost->versionList['ubuntu']['16'] = '16'; +$lang->zahost->versionList['ubuntu']['18'] = '18'; +$lang->zahost->versionList['ubuntu']['20'] = '20'; +$lang->zahost->versionList['centos']['6'] = '6'; +$lang->zahost->versionList['centos']['7'] = '7'; +$lang->zahost->versionList['centos']['8'] = '8'; $lang->zahost->notice = new stdclass(); $lang->zahost->notice->ip = '『%s』incorrect format!'; diff --git a/module/zahost/model.php b/module/zahost/model.php index 3110c3a2f0..356288497e 100644 --- a/module/zahost/model.php +++ b/module/zahost/model.php @@ -110,10 +110,11 @@ class zahostModel extends model /** * Create vm template. * + * @param Object $host * @access public * @return void */ - public function createTemplate() + public function createTemplate($host) { $template = fixer::input('post') ->setIF($this->post->diskSize > 0, 'diskSize', $this->post->diskSize * 1024) @@ -122,14 +123,45 @@ class zahostModel extends model $this->dao->insert(TABLE_VMTEMPLATE)->data($template) ->batchCheck($this->config->zahost->createTemplate->requiredFields, 'notempty') ->batchCheck('cpuCoreNum,diskSize,memorySize', 'gt', 0) - ->autoCheck() - ->exec(); + ->autoCheck(); + if(dao::isError()) return false; + + $vmTemplateList = $this->imageFiles($host); + foreach($vmTemplateList as $vmTemp) + { + if($vmTemp->macAddress == $template->macAddress) + { + $template->imageFile = $vmTemp->diskFile; + unset($template->macAddress); + break; + } + } + + $template->createdBy = $this->app->user->account; + $template->createdDate = helper::now(); + + $this->dao->insert(TABLE_VMTEMPLATE)->data($template) ->autoCheck()->exec(); if(dao::isError()) return false; $templateID = $this->dao->lastInsertID(); $this->loadModel('action')->create('vmtemplate', $templateID, 'Created'); } + /** + * Get image files from ZAgent server. + * + * @param object $host + * @access public + * @return array + */ + public function imageFiles($host) + { + $result = json_decode(commonModel::http("http://{$host->publicIP}:8086/api/v1/kvm/listTmpl?token={$host->secret}")); + if(empty($result) || $result->code != 200) return array(); + + return $result->data; + } + /** * Get host by id. * diff --git a/module/zahost/view/browsetemplate.html.php b/module/zahost/view/browsetemplate.html.php index 3fc3e99193..8532571c5e 100755 --- a/module/zahost/view/browsetemplate.html.php +++ b/module/zahost/view/browsetemplate.html.php @@ -19,7 +19,7 @@
@@ -32,7 +32,7 @@zahost->templateEmpty;?> - ' . $lang->zahost->createTemplate, '', 'class="btn btn-info"');?> + ' . $lang->zahost->createTemplate, '', 'class="btn btn-info"');?>