mirror of
https://github.com/GNS3/gns3-web-ui.git
synced 2025-02-21 02:01:19 +00:00
Configuration services for templates
This commit is contained in:
parent
c15b00a6bf
commit
6ec6dfe866
@ -133,6 +133,10 @@ import { PlatformService } from './services/platform.service';
|
||||
import { IosTemplateDetailsComponent } from './components/preferences/dynamips/ios-template-details/ios-template-details.component';
|
||||
import { AddIosTemplateComponent } from './components/preferences/dynamips/add-ios-template/add-ios-template.component';
|
||||
import { IosConfigurationService } from './services/ios-configuration.service';
|
||||
import { QemuConfigurationService } from './services/qemu-configuration.service';
|
||||
import { VirtualBoxConfigurationService } from './services/virtual-box-configuration.service';
|
||||
import { VpcsConfigurationService } from './services/vpcs-configuration.service';
|
||||
import { BuiltInTemplatesConfigurationService } from './services/built-in-templates-configuration.service';
|
||||
|
||||
if (environment.production) {
|
||||
Raven.config('https://b2b1cfd9b043491eb6b566fd8acee358@sentry.io/842726', {
|
||||
@ -272,7 +276,11 @@ if (environment.production) {
|
||||
InstalledSoftwareService,
|
||||
ExternalSoftwareDefinitionService,
|
||||
PlatformService,
|
||||
IosConfigurationService
|
||||
IosConfigurationService,
|
||||
QemuConfigurationService,
|
||||
VirtualBoxConfigurationService,
|
||||
VpcsConfigurationService,,
|
||||
BuiltInTemplatesConfigurationService
|
||||
],
|
||||
entryComponents: [
|
||||
AddServerDialogComponent,
|
||||
|
@ -16,6 +16,7 @@ import { FormsModule, ReactiveFormsModule } from '@angular/forms';
|
||||
import { ServerService } from '../../../../../services/server.service';
|
||||
import { ToasterService } from '../../../../../services/toaster.service';
|
||||
import { BuiltInTemplatesService } from '../../../../../services/built-in-templates.service';
|
||||
import { BuiltInTemplatesConfigurationService } from '../../../../../services/built-in-templates-configuration.service';
|
||||
|
||||
export class MockedBuiltInTemplatesService {
|
||||
public getTemplate(server: Server, template_id: string) {
|
||||
@ -45,7 +46,8 @@ describe('CloudNodesTemplateDetailsComponent', () => {
|
||||
},
|
||||
{ provide: ServerService, useValue: mockedServerService },
|
||||
{ provide: BuiltInTemplatesService, useValue: mockedBuiltInTemplatesService },
|
||||
{ provide: ToasterService, useValue: mockedToasterService}
|
||||
{ provide: ToasterService, useValue: mockedToasterService },
|
||||
{ provide: BuiltInTemplatesConfigurationService, useClass: BuiltInTemplatesConfigurationService }
|
||||
],
|
||||
declarations: [
|
||||
CloudNodesTemplateDetailsComponent
|
||||
|
@ -6,6 +6,7 @@ import { ToasterService } from '../../../../../services/toaster.service';
|
||||
import { BuiltInTemplatesService } from '../../../../../services/built-in-templates.service';
|
||||
import { CloudTemplate } from '../../../../../models/templates/cloud-template';
|
||||
import { PortsMappingEntity } from '../../../../../models/ethernetHub/ports-mapping-enity';
|
||||
import { BuiltInTemplatesConfigurationService } from '../../../../../services/built-in-templates-configuration.service';
|
||||
|
||||
|
||||
@Component({
|
||||
@ -19,12 +20,8 @@ export class CloudNodesTemplateDetailsComponent implements OnInit {
|
||||
|
||||
isSymbolSelectionOpened: boolean = false;
|
||||
|
||||
categories = [["Default", "guest"],
|
||||
["Routers", "router"],
|
||||
["Switches", "switch"],
|
||||
["End devices", "end_device"],
|
||||
["Security devices", "security_device"]];
|
||||
consoleTypes: string[] = ['telnet', 'none'];
|
||||
categories = [];
|
||||
consoleTypes: string[] = [];
|
||||
|
||||
tapInterface: string = '';
|
||||
ethernetInterface: string = '';
|
||||
@ -40,7 +37,8 @@ export class CloudNodesTemplateDetailsComponent implements OnInit {
|
||||
private route: ActivatedRoute,
|
||||
private serverService: ServerService,
|
||||
private builtInTemplatesService: BuiltInTemplatesService,
|
||||
private toasterService: ToasterService
|
||||
private toasterService: ToasterService,
|
||||
private builtInTemplatesConfigurationService: BuiltInTemplatesConfigurationService
|
||||
) {
|
||||
this.newPort = {
|
||||
name: '',
|
||||
@ -54,6 +52,7 @@ export class CloudNodesTemplateDetailsComponent implements OnInit {
|
||||
this.serverService.get(parseInt(server_id, 10)).then((server: Server) => {
|
||||
this.server = server;
|
||||
|
||||
this.getConfiguration();
|
||||
this.builtInTemplatesService.getTemplate(this.server, template_id).subscribe((cloudNodeTemplate: CloudTemplate) => {
|
||||
this.cloudNodeTemplate = cloudNodeTemplate;
|
||||
|
||||
@ -71,6 +70,11 @@ export class CloudNodesTemplateDetailsComponent implements OnInit {
|
||||
});
|
||||
}
|
||||
|
||||
getConfiguration() {
|
||||
this.categories = this.builtInTemplatesConfigurationService.getCategoriesForCloudNodes();
|
||||
this.consoleTypes = this.builtInTemplatesConfigurationService.getConsoleTypesForCloudNodes();
|
||||
}
|
||||
|
||||
onAddEthernetInterface() {
|
||||
if (this.ethernetInterface) {
|
||||
this.ports_mapping_ethernet.push({
|
||||
|
@ -16,6 +16,7 @@ import { ToasterService } from '../../../../../services/toaster.service';
|
||||
import { BuiltInTemplatesService } from '../../../../../services/built-in-templates.service';
|
||||
import { EthernetHubTemplate } from '../../../../../models/templates/ethernet-hub-template';
|
||||
import { EthernetHubsTemplateDetailsComponent } from './ethernet-hubs-template-details.component';
|
||||
import { BuiltInTemplatesConfigurationService } from '../../../../../services/built-in-templates-configuration.service';
|
||||
|
||||
export class MockedBuiltInTemplatesService {
|
||||
public getTemplate(server: Server, template_id: string) {
|
||||
@ -45,7 +46,8 @@ describe('EthernetHubsTemplateDetailsComponent', () => {
|
||||
},
|
||||
{ provide: ServerService, useValue: mockedServerService },
|
||||
{ provide: BuiltInTemplatesService, useValue: mockedBuiltInTemplatesService },
|
||||
{ provide: ToasterService, useValue: mockedToasterService}
|
||||
{ provide: ToasterService, useValue: mockedToasterService},
|
||||
{ provide: BuiltInTemplatesConfigurationService, useClass: BuiltInTemplatesConfigurationService }
|
||||
],
|
||||
declarations: [
|
||||
EthernetHubsTemplateDetailsComponent
|
||||
|
@ -6,6 +6,7 @@ import { ToasterService } from '../../../../../services/toaster.service';
|
||||
import { FormBuilder, FormGroup, Validators, FormControl } from '@angular/forms';
|
||||
import { EthernetHubTemplate } from '../../../../../models/templates/ethernet-hub-template';
|
||||
import { BuiltInTemplatesService } from '../../../../../services/built-in-templates.service';
|
||||
import { BuiltInTemplatesConfigurationService } from '../../../../../services/built-in-templates-configuration.service';
|
||||
|
||||
|
||||
@Component({
|
||||
@ -21,18 +22,15 @@ export class EthernetHubsTemplateDetailsComponent implements OnInit {
|
||||
|
||||
isSymbolSelectionOpened: boolean = false;
|
||||
|
||||
categories = [["Default", "guest"],
|
||||
["Routers", "router"],
|
||||
["Switches", "switch"],
|
||||
["End devices", "end_device"],
|
||||
["Security devices", "security_device"]];
|
||||
categories = [];
|
||||
|
||||
constructor(
|
||||
private route: ActivatedRoute,
|
||||
private serverService: ServerService,
|
||||
private builtInTemplatesService: BuiltInTemplatesService,
|
||||
private toasterService: ToasterService,
|
||||
private formBuilder: FormBuilder
|
||||
private formBuilder: FormBuilder,
|
||||
private builtInTemplatesConfigurationService: BuiltInTemplatesConfigurationService
|
||||
) {
|
||||
this.inputForm = this.formBuilder.group({
|
||||
templateName: new FormControl('', Validators.required),
|
||||
@ -47,6 +45,7 @@ export class EthernetHubsTemplateDetailsComponent implements OnInit {
|
||||
this.serverService.get(parseInt(server_id, 10)).then((server: Server) => {
|
||||
this.server = server;
|
||||
|
||||
this.categories = this.builtInTemplatesConfigurationService.getCategoriesForEthernetHubs();
|
||||
this.builtInTemplatesService.getTemplate(this.server, template_id).subscribe((ethernetHubTemplate: EthernetHubTemplate) => {
|
||||
this.ethernetHubTemplate = ethernetHubTemplate;
|
||||
this.numberOfPorts = this.ethernetHubTemplate.ports_mapping.length;
|
||||
|
@ -16,6 +16,7 @@ import { ToasterService } from '../../../../../services/toaster.service';
|
||||
import { BuiltInTemplatesService } from '../../../../../services/built-in-templates.service';
|
||||
import { EthernetSwitchTemplate } from '../../../../../models/templates/ethernet-switch-template';
|
||||
import { EthernetSwitchesTemplateDetailsComponent } from './ethernet-switches-template-details.component';
|
||||
import { BuiltInTemplatesConfigurationService } from '../../../../../services/built-in-templates-configuration.service';
|
||||
|
||||
export class MockedBuiltInTemplatesService {
|
||||
public getTemplate(server: Server, template_id: string) {
|
||||
@ -45,7 +46,8 @@ describe('EthernetSwitchesTemplateDetailsComponent', () => {
|
||||
},
|
||||
{ provide: ServerService, useValue: mockedServerService },
|
||||
{ provide: BuiltInTemplatesService, useValue: mockedBuiltInTemplatesService },
|
||||
{ provide: ToasterService, useValue: mockedToasterService}
|
||||
{ provide: ToasterService, useValue: mockedToasterService},
|
||||
{ provide: BuiltInTemplatesConfigurationService, useClass: BuiltInTemplatesConfigurationService }
|
||||
],
|
||||
declarations: [
|
||||
EthernetSwitchesTemplateDetailsComponent
|
||||
|
@ -7,6 +7,7 @@ import { FormBuilder, FormGroup, Validators, FormControl } from '@angular/forms'
|
||||
import { BuiltInTemplatesService } from '../../../../../services/built-in-templates.service';
|
||||
import { EthernetSwitchTemplate } from '../../../../../models/templates/ethernet-switch-template';
|
||||
import { PortsMappingEntity } from '../../../../../models/ethernetHub/ports-mapping-enity';
|
||||
import { BuiltInTemplatesConfigurationService } from '../../../../../services/built-in-templates-configuration.service';
|
||||
|
||||
|
||||
@Component({
|
||||
@ -24,14 +25,10 @@ export class EthernetSwitchesTemplateDetailsComponent implements OnInit {
|
||||
|
||||
isSymbolSelectionOpened: boolean = false;
|
||||
|
||||
categories = [["Default", "guest"],
|
||||
["Routers", "router"],
|
||||
["Switches", "switch"],
|
||||
["End devices", "end_device"],
|
||||
["Security devices", "security_device"]];
|
||||
consoleTypes: string[] = ['telnet', 'none'];
|
||||
portTypes: string[] = ['access', 'dot1q', 'qinq'];
|
||||
etherTypes: string[] = ['0x8100', '0x88A8', '0x9100', '0x9200'];
|
||||
categories = [];
|
||||
consoleTypes: string[] = [];
|
||||
portTypes: string[] = [];
|
||||
etherTypes: string[] = [];
|
||||
displayedColumns: string[] = ['port_number', 'vlan', 'type', 'ethertype'];
|
||||
|
||||
constructor(
|
||||
@ -39,7 +36,8 @@ export class EthernetSwitchesTemplateDetailsComponent implements OnInit {
|
||||
private serverService: ServerService,
|
||||
private builtInTemplatesService: BuiltInTemplatesService,
|
||||
private toasterService: ToasterService,
|
||||
private formBuilder: FormBuilder
|
||||
private formBuilder: FormBuilder,
|
||||
private builtInTemplatesConfigurationService: BuiltInTemplatesConfigurationService
|
||||
){
|
||||
this.inputForm = this.formBuilder.group({
|
||||
templateName: new FormControl('', Validators.required),
|
||||
@ -59,6 +57,7 @@ export class EthernetSwitchesTemplateDetailsComponent implements OnInit {
|
||||
this.serverService.get(parseInt(server_id, 10)).then((server: Server) => {
|
||||
this.server = server;
|
||||
|
||||
this.getConfiguration();
|
||||
this.builtInTemplatesService.getTemplate(this.server, template_id).subscribe((ethernetSwitchTemplate: EthernetSwitchTemplate) => {
|
||||
this.ethernetSwitchTemplate = ethernetSwitchTemplate;
|
||||
this.ethernetPorts = this.ethernetSwitchTemplate.ports_mapping;
|
||||
@ -67,6 +66,13 @@ export class EthernetSwitchesTemplateDetailsComponent implements OnInit {
|
||||
});
|
||||
}
|
||||
|
||||
getConfiguration() {
|
||||
this.categories = this.builtInTemplatesConfigurationService.getCategoriesForEthernetSwitches();
|
||||
this.consoleTypes = this.builtInTemplatesConfigurationService.getConsoleTypesForEthernetSwitches();
|
||||
this.portTypes = this.builtInTemplatesConfigurationService.getPortTypesForEthernetSwitches();
|
||||
this.etherTypes = this.builtInTemplatesConfigurationService.getEtherTypesForEthernetSwitches();
|
||||
}
|
||||
|
||||
onAdd() {
|
||||
this.ethernetPorts.push(this.newPort);
|
||||
this.dataSource = [...this.ethernetPorts];
|
||||
|
@ -46,22 +46,26 @@ export class IosTemplateDetailsComponent implements OnInit {
|
||||
this.serverService.get(parseInt(server_id, 10)).then((server: Server) => {
|
||||
this.server = server;
|
||||
|
||||
this.getConfiguration();
|
||||
this.iosService.getTemplate(this.server, template_id).subscribe((iosTemplate: IosTemplate) => {
|
||||
this.iosTemplate = iosTemplate;
|
||||
|
||||
this.networkModules = this.iosConfigurationService.getNetworkModules();
|
||||
this.networkAdaptersForPlatform = this.iosConfigurationService.getNetworkAdaptersForPlatform();
|
||||
this.networkAdapters = this.iosConfigurationService.getNetworkAdapters();
|
||||
this.platforms = this.iosConfigurationService.getAvailablePlatforms();
|
||||
this.platformsWithEtherSwitchRouterOption = this.iosConfigurationService.getPlatformsWithEtherSwitchRouterOption();
|
||||
this.platformsWithChassis = this.iosConfigurationService.getPlatformsWithChassis();
|
||||
this.chassis = this.iosConfigurationService.getChassis();
|
||||
this.defaultRam = this.iosConfigurationService.getDefaultRamSettings();
|
||||
this.fillAdaptersData();
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
getConfiguration() {
|
||||
this.networkModules = this.iosConfigurationService.getNetworkModules();
|
||||
this.networkAdaptersForPlatform = this.iosConfigurationService.getNetworkAdaptersForPlatform();
|
||||
this.networkAdapters = this.iosConfigurationService.getNetworkAdapters();
|
||||
this.platforms = this.iosConfigurationService.getAvailablePlatforms();
|
||||
this.platformsWithEtherSwitchRouterOption = this.iosConfigurationService.getPlatformsWithEtherSwitchRouterOption();
|
||||
this.platformsWithChassis = this.iosConfigurationService.getPlatformsWithChassis();
|
||||
this.chassis = this.iosConfigurationService.getChassis();
|
||||
this.defaultRam = this.iosConfigurationService.getDefaultRamSettings();
|
||||
}
|
||||
|
||||
fillAdaptersData() {
|
||||
if (this.iosTemplate.slot0) this.networkAdaptersForTemplate[0] = this.iosTemplate.slot0;
|
||||
if (this.iosTemplate.slot1) this.networkAdaptersForTemplate[1] = this.iosTemplate.slot1;
|
||||
|
@ -17,6 +17,7 @@ import { QemuTemplate } from '../../../../models/templates/qemu-template';
|
||||
import { AddQemuVmTemplateComponent } from './add-qemu-vm-template.component';
|
||||
import { QemuService } from '../../../../services/qemu.service';
|
||||
import { FormsModule, ReactiveFormsModule } from '@angular/forms';
|
||||
import { QemuConfigurationService } from '../../../../services/qemu-configuration.service';
|
||||
|
||||
export class MockedQemuService {
|
||||
public addTemplate(server: Server, qemuTemplate: QemuTemplate) {
|
||||
@ -56,7 +57,8 @@ describe('AddQemuVmTemplateComponent', () => {
|
||||
{ provide: ServerService, useValue: mockedServerService },
|
||||
{ provide: QemuService, useValue: mockedQemuService },
|
||||
{ provide: ToasterService, useValue: mockedToasterService},
|
||||
{ provide: TemplateMocksService, useClass: TemplateMocksService }
|
||||
{ provide: TemplateMocksService, useClass: TemplateMocksService },
|
||||
{ provide: QemuConfigurationService, useClass: QemuConfigurationService }
|
||||
],
|
||||
declarations: [
|
||||
AddQemuVmTemplateComponent
|
||||
|
@ -10,6 +10,7 @@ import { QemuTemplate } from '../../../../models/templates/qemu-template';
|
||||
import { FormGroup, FormBuilder, FormControl, Validators } from '@angular/forms';
|
||||
import { v4 as uuid } from 'uuid';
|
||||
import { TemplateMocksService } from '../../../../services/template-mocks.service';
|
||||
import { QemuConfigurationService } from '../../../../services/qemu-configuration.service';
|
||||
|
||||
|
||||
@Component({
|
||||
@ -22,7 +23,7 @@ export class AddQemuVmTemplateComponent implements OnInit {
|
||||
qemuBinaries: QemuBinary[] = [];
|
||||
selectedBinary: QemuBinary;
|
||||
ramMemory: number;
|
||||
consoleTypes: string[] = ['telnet', 'vnc', 'spice', 'spice+agent', 'none'];
|
||||
consoleTypes: string[] = [];
|
||||
newImageSelected: boolean = false;;
|
||||
qemuImages: QemuImage[] = [];
|
||||
selectedImage: QemuImage;
|
||||
@ -40,7 +41,8 @@ export class AddQemuVmTemplateComponent implements OnInit {
|
||||
private toasterService: ToasterService,
|
||||
private router: Router,
|
||||
private formBuilder: FormBuilder,
|
||||
private templateMocksService: TemplateMocksService
|
||||
private templateMocksService: TemplateMocksService,
|
||||
private configurationService: QemuConfigurationService
|
||||
) {
|
||||
this.qemuTemplate = new QemuTemplate();
|
||||
|
||||
@ -73,6 +75,8 @@ export class AddQemuVmTemplateComponent implements OnInit {
|
||||
this.qemuService.getImages(server).subscribe((qemuImages: QemuImage[]) => {
|
||||
this.qemuImages = qemuImages;
|
||||
});
|
||||
|
||||
this.consoleTypes = this.configurationService.getConsoleTypes();
|
||||
});
|
||||
}
|
||||
|
||||
|
@ -16,6 +16,7 @@ import { MockedActivatedRoute } from '../../preferences.component.spec';
|
||||
import { QemuTemplate } from '../../../../models/templates/qemu-template';
|
||||
import { QemuVmTemplateDetailsComponent } from './qemu-vm-template-details.component';
|
||||
import { QemuService } from '../../../../services/qemu.service';
|
||||
import { QemuConfigurationService } from '../../../../services/qemu-configuration.service';
|
||||
|
||||
export class MockedQemuService {
|
||||
public getTemplate(server: Server, template_id: string) {
|
||||
@ -53,7 +54,8 @@ describe('QemuVmTemplateDetailsComponent', () => {
|
||||
},
|
||||
{ provide: ServerService, useValue: mockedServerService },
|
||||
{ provide: QemuService, useValue: mockedQemuService },
|
||||
{ provide: ToasterService, useValue: mockedToasterService}
|
||||
{ provide: ToasterService, useValue: mockedToasterService},
|
||||
{ provide: QemuConfigurationService, useClass: QemuConfigurationService }
|
||||
],
|
||||
declarations: [
|
||||
QemuVmTemplateDetailsComponent
|
||||
|
@ -7,6 +7,7 @@ import { QemuTemplate } from '../../../../models/templates/qemu-template';
|
||||
import { QemuBinary } from '../../../../models/qemu/qemu-binary';
|
||||
import { ToasterService } from '../../../../services/toaster.service';
|
||||
import { CustomAdapter } from '../../../../models/qemu/qemu-custom-adapter';
|
||||
import { QemuConfigurationService } from '../../../../services/qemu-configuration.service';
|
||||
|
||||
|
||||
@Component({
|
||||
@ -20,47 +21,13 @@ export class QemuVmTemplateDetailsComponent implements OnInit {
|
||||
|
||||
isSymbolSelectionOpened: boolean = false;
|
||||
|
||||
consoleTypes: string[] = ['telnet', 'vnc', 'spice', 'spice+agent', 'none'];
|
||||
diskInterfaces: string[] = ['ide', 'sata', 'scsi', 'sd', 'mtd', 'floppy', 'pflash', 'virtio', 'none'];
|
||||
networkTypes = [["e1000", "Intel Gigabit Ethernet"],
|
||||
["i82550", "Intel i82550 Ethernet"],
|
||||
["i82551", "Intel i82551 Ethernet"],
|
||||
["i82557a", "Intel i82557A Ethernet"],
|
||||
["i82557b", "Intel i82557B Ethernet"],
|
||||
["i82557c", "Intel i82557C Ethernet"],
|
||||
["i82558a", "Intel i82558A Ethernet"],
|
||||
["i82558b", "Intel i82558B Ethernet"],
|
||||
["i82559a", "Intel i82559A Ethernet"],
|
||||
["i82559b", "Intel i82559B Ethernet"],
|
||||
["i82559c", "Intel i82559C Ethernet"],
|
||||
["i82559er", "Intel i82559ER Ethernet"],
|
||||
["i82562", "Intel i82562 Ethernet"],
|
||||
["i82801", "Intel i82801 Ethernet"],
|
||||
["ne2k_pci", "NE2000 Ethernet"],
|
||||
["pcnet", "AMD PCNet Ethernet"],
|
||||
["rtl8139", "Realtek 8139 Ethernet"],
|
||||
["virtio", "Legacy paravirtualized Network I/O"],
|
||||
["virtio-net-pci", "Paravirtualized Network I/O"],
|
||||
["vmxnet3", "VMWare Paravirtualized Ethernet v3"]];
|
||||
bootPriorities = [["HDD", "c"],
|
||||
["CD/DVD-ROM", "d"],
|
||||
["Network", "n"],
|
||||
["HDD or Network", "cn"],
|
||||
["HDD or CD/DVD-ROM", "cd"]];
|
||||
onCloseOptions = [["Power off the VM", "power_off"],
|
||||
["Send the shutdown signal (ACPI)", "shutdown_signal"],
|
||||
["Save the VM state", "save_vm_state"]];
|
||||
categories = [["Default", "guest"],
|
||||
["Routers", "routers"],
|
||||
["Switches", "switches"],
|
||||
["End devices", "end_devices"],
|
||||
["Security devices", "security_devices"]];
|
||||
priorities = ["realtime",
|
||||
"very high",
|
||||
"high",
|
||||
"normal",
|
||||
"low",
|
||||
"very low"];
|
||||
consoleTypes: string[] = [];
|
||||
diskInterfaces: string[] = [];
|
||||
networkTypes = [];
|
||||
bootPriorities = [];
|
||||
onCloseOptions = [];
|
||||
categories = [];
|
||||
priorities: string[] = [];
|
||||
binaries: QemuBinary[] = [];
|
||||
activateCpuThrottling: boolean = true;
|
||||
isConfiguratorOpened: boolean = false;
|
||||
@ -71,7 +38,8 @@ export class QemuVmTemplateDetailsComponent implements OnInit {
|
||||
private route: ActivatedRoute,
|
||||
private serverService: ServerService,
|
||||
private qemuService: QemuService,
|
||||
private toasterService: ToasterService
|
||||
private toasterService: ToasterService,
|
||||
private configurationService: QemuConfigurationService
|
||||
){}
|
||||
|
||||
ngOnInit(){
|
||||
@ -80,6 +48,7 @@ export class QemuVmTemplateDetailsComponent implements OnInit {
|
||||
this.serverService.get(parseInt(server_id, 10)).then((server: Server) => {
|
||||
this.server = server;
|
||||
|
||||
this.getConfiguration();
|
||||
this.qemuService.getTemplate(this.server, template_id).subscribe((qemuTemplate: QemuTemplate) => {
|
||||
this.qemuTemplate = qemuTemplate;
|
||||
|
||||
@ -102,6 +71,16 @@ export class QemuVmTemplateDetailsComponent implements OnInit {
|
||||
});
|
||||
}
|
||||
|
||||
getConfiguration(){
|
||||
this.consoleTypes = this.configurationService.getConsoleTypes();
|
||||
this.diskInterfaces = this.configurationService.getDiskInterfaces();
|
||||
this.networkTypes = this.configurationService.getNetworkTypes();
|
||||
this.bootPriorities = this.configurationService.getBootPriorities();
|
||||
this.onCloseOptions = this.configurationService.getOnCloseOptions();
|
||||
this.categories = this.configurationService.getCategories();
|
||||
this.priorities = this.configurationService.getPriorities();
|
||||
}
|
||||
|
||||
uploadCdromImageFile(event){
|
||||
this.qemuTemplate.cdrom_image = event.target.files[0].name;
|
||||
}
|
||||
|
@ -16,6 +16,7 @@ import { VirtualBoxTemplate } from '../../../../models/templates/virtualbox-temp
|
||||
import { VirtualBoxTemplateDetailsComponent } from './virtual-box-template-details.component';
|
||||
import { VirtualBoxService } from '../../../../services/virtual-box.service';
|
||||
import { MockedActivatedRoute } from '../../preferences.component.spec';
|
||||
import { VirtualBoxConfigurationService } from '../../../../services/virtual-box-configuration.service';
|
||||
|
||||
export class MockedVirtualBoxService {
|
||||
public getTemplate(server: Server, template_id: string) {
|
||||
@ -45,7 +46,8 @@ describe('VirtualBoxTemplateDetailsComponent', () => {
|
||||
},
|
||||
{ provide: ServerService, useValue: mockedServerService },
|
||||
{ provide: VirtualBoxService, useValue: mockedVirtualBoxService },
|
||||
{ provide: ToasterService, useValue: mockedToasterService}
|
||||
{ provide: ToasterService, useValue: mockedToasterService },
|
||||
{ provide: VirtualBoxConfigurationService, useClass: VirtualBoxConfigurationService }
|
||||
],
|
||||
declarations: [
|
||||
VirtualBoxTemplateDetailsComponent
|
||||
|
@ -7,6 +7,7 @@ import { FormBuilder, FormGroup, Validators, FormControl } from '@angular/forms'
|
||||
import { VirtualBoxService } from '../../../../services/virtual-box.service';
|
||||
import { VirtualBoxTemplate } from '../../../../models/templates/virtualbox-template';
|
||||
import { CustomAdapter } from '../../../../models/qemu/qemu-custom-adapter';
|
||||
import { VirtualBoxConfigurationService } from '../../../../services/virtual-box-configuration.service';
|
||||
|
||||
|
||||
@Component({
|
||||
@ -20,21 +21,10 @@ export class VirtualBoxTemplateDetailsComponent implements OnInit {
|
||||
|
||||
isSymbolSelectionOpened: boolean = false;
|
||||
|
||||
consoleTypes: string[] = ['telnet', 'none'];
|
||||
onCloseOptions = [["Power off the VM", "power_off"],
|
||||
["Send the shutdown signal (ACPI)", "shutdown_signal"],
|
||||
["Save the VM state", "save_vm_state"]];
|
||||
categories = [["Default", "guest"],
|
||||
["Routers", "routers"],
|
||||
["Switches", "switches"],
|
||||
["End devices", "end_devices"],
|
||||
["Security devices", "security_devices"]];
|
||||
networkTypes = ["PCnet-PCI II (Am79C970A)",
|
||||
"PCNet-FAST III (Am79C973)",
|
||||
"Intel PRO/1000 MT Desktop (82540EM)",
|
||||
"Intel PRO/1000 T Server (82543GC)",
|
||||
"Intel PRO/1000 MT Server (82545EM)",
|
||||
"Paravirtualized Network (virtio-net)"];
|
||||
consoleTypes: string[] = [];
|
||||
onCloseOptions = [];
|
||||
categories = [];
|
||||
networkTypes = [];
|
||||
adapters: CustomAdapter[] = [];
|
||||
displayedColumns: string[] = ['adapter_number', 'port_name', 'adapter_type'];
|
||||
isConfiguratorOpened: boolean = false;
|
||||
@ -44,7 +34,8 @@ export class VirtualBoxTemplateDetailsComponent implements OnInit {
|
||||
private serverService: ServerService,
|
||||
private virtualBoxService: VirtualBoxService,
|
||||
private toasterService: ToasterService,
|
||||
private formBuilder: FormBuilder
|
||||
private formBuilder: FormBuilder,
|
||||
private virtualBoxConfigurationService: VirtualBoxConfigurationService
|
||||
) {}
|
||||
|
||||
ngOnInit() {
|
||||
@ -53,6 +44,7 @@ export class VirtualBoxTemplateDetailsComponent implements OnInit {
|
||||
this.serverService.get(parseInt(server_id, 10)).then((server: Server) => {
|
||||
this.server = server;
|
||||
|
||||
this.getConfiguration();
|
||||
this.virtualBoxService.getTemplate(this.server, template_id).subscribe((virtualBoxTemplate: VirtualBoxTemplate) => {
|
||||
this.virtualBoxTemplate = virtualBoxTemplate;
|
||||
|
||||
@ -71,6 +63,13 @@ export class VirtualBoxTemplateDetailsComponent implements OnInit {
|
||||
});
|
||||
}
|
||||
|
||||
getConfiguration(){
|
||||
this.consoleTypes = this.virtualBoxConfigurationService.getConsoleTypes();
|
||||
this.onCloseOptions = this.virtualBoxConfigurationService.getOnCloseoptions();
|
||||
this.categories = this.virtualBoxConfigurationService.getCategories();
|
||||
this.networkTypes = this.virtualBoxConfigurationService.getNetworkTypes();
|
||||
}
|
||||
|
||||
configureCustomAdapters(){
|
||||
this.isConfiguratorOpened = !this.isConfiguratorOpened;
|
||||
this.virtualBoxTemplate.custom_adapters = this.adapters;
|
||||
|
@ -16,6 +16,7 @@ import { VpcsService } from '../../../../services/vpcs.service';
|
||||
import { ToasterService } from '../../../../services/toaster.service';
|
||||
import { FormsModule, ReactiveFormsModule } from '@angular/forms';
|
||||
import { MockedActivatedRoute } from '../../preferences.component.spec';
|
||||
import { VpcsConfigurationService } from '../../../../services/vpcs-configuration.service';
|
||||
|
||||
export class MockedVpcsService {
|
||||
public getTemplate(server: Server, template_id: string) {
|
||||
@ -45,7 +46,8 @@ describe('VpcsTemplateDetailsComponent', () => {
|
||||
},
|
||||
{ provide: ServerService, useValue: mockedServerService },
|
||||
{ provide: VpcsService, useValue: mockedVpcsService },
|
||||
{ provide: ToasterService, useValue: mockedToasterService}
|
||||
{ provide: ToasterService, useValue: mockedToasterService},
|
||||
{ provide: VpcsConfigurationService, useClass: VpcsConfigurationService }
|
||||
],
|
||||
declarations: [
|
||||
VpcsTemplateDetailsComponent
|
||||
|
@ -6,6 +6,7 @@ import { ToasterService } from '../../../../services/toaster.service';
|
||||
import { VpcsService } from '../../../../services/vpcs.service';
|
||||
import { VpcsTemplate } from '../../../../models/templates/vpcs-template';
|
||||
import { FormBuilder, FormGroup, Validators, FormControl } from '@angular/forms';
|
||||
import { VpcsConfigurationService } from '../../../../services/vpcs-configuration.service';
|
||||
|
||||
|
||||
@Component({
|
||||
@ -20,19 +21,16 @@ export class VpcsTemplateDetailsComponent implements OnInit {
|
||||
|
||||
isSymbolSelectionOpened: boolean = false;
|
||||
|
||||
consoleTypes: string[] = ['telnet', 'none'];
|
||||
categories = [["Default", "guest"],
|
||||
["Routers", "routers"],
|
||||
["Switches", "switches"],
|
||||
["End devices", "end_devices"],
|
||||
["Security devices", "security_devices"]];
|
||||
consoleTypes: string[] = [];
|
||||
categories = [];
|
||||
|
||||
constructor(
|
||||
private route: ActivatedRoute,
|
||||
private serverService: ServerService,
|
||||
private vpcsService: VpcsService,
|
||||
private toasterService: ToasterService,
|
||||
private formBuilder: FormBuilder
|
||||
private formBuilder: FormBuilder,
|
||||
private vpcsConfigurationService: VpcsConfigurationService
|
||||
) {
|
||||
this.inputForm = this.formBuilder.group({
|
||||
templateName: new FormControl('', Validators.required),
|
||||
@ -48,12 +46,18 @@ export class VpcsTemplateDetailsComponent implements OnInit {
|
||||
this.serverService.get(parseInt(server_id, 10)).then((server: Server) => {
|
||||
this.server = server;
|
||||
|
||||
this.getConfiguration();
|
||||
this.vpcsService.getTemplate(this.server, template_id).subscribe((vpcsTemplate: VpcsTemplate) => {
|
||||
this.vpcsTemplate = vpcsTemplate;
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
getConfiguration() {
|
||||
this.consoleTypes = this.vpcsConfigurationService.getConsoleTypes();
|
||||
this.categories = this.vpcsConfigurationService.getCategories();
|
||||
}
|
||||
|
||||
onSave() {
|
||||
if (this.inputForm.invalid) {
|
||||
this.toasterService.error(`Fill all required fields`);
|
||||
|
50
src/app/services/built-in-templates-configuration.service.ts
Normal file
50
src/app/services/built-in-templates-configuration.service.ts
Normal file
@ -0,0 +1,50 @@
|
||||
import { Injectable } from "@angular/core";
|
||||
|
||||
@Injectable()
|
||||
export class BuiltInTemplatesConfigurationService {
|
||||
getCategoriesForCloudNodes() {
|
||||
let categories = [["Default", "guest"],
|
||||
["Routers", "router"],
|
||||
["Switches", "switch"],
|
||||
["End devices", "end_device"],
|
||||
["Security devices", "security_device"]];
|
||||
|
||||
return categories;
|
||||
}
|
||||
|
||||
getConsoleTypesForCloudNodes() {
|
||||
return ['telnet', 'none'];
|
||||
}
|
||||
|
||||
getCategoriesForEthernetHubs() {
|
||||
let categories = [["Default", "guest"],
|
||||
["Routers", "router"],
|
||||
["Switches", "switch"],
|
||||
["End devices", "end_device"],
|
||||
["Security devices", "security_device"]];
|
||||
|
||||
return categories;
|
||||
}
|
||||
|
||||
getCategoriesForEthernetSwitches() {
|
||||
let categories = [["Default", "guest"],
|
||||
["Routers", "router"],
|
||||
["Switches", "switch"],
|
||||
["End devices", "end_device"],
|
||||
["Security devices", "security_device"]];
|
||||
|
||||
return categories;
|
||||
}
|
||||
|
||||
getConsoleTypesForEthernetSwitches() {
|
||||
return ['telnet', 'none'];
|
||||
}
|
||||
|
||||
getPortTypesForEthernetSwitches() {
|
||||
return ['access', 'dot1q', 'qinq'];
|
||||
}
|
||||
|
||||
getEtherTypesForEthernetSwitches() {
|
||||
return ['0x8100', '0x88A8', '0x9100', '0x9200'];
|
||||
}
|
||||
}
|
0
src/app/services/qemu-configuration.service.spec.ts
Normal file
0
src/app/services/qemu-configuration.service.spec.ts
Normal file
76
src/app/services/qemu-configuration.service.ts
Normal file
76
src/app/services/qemu-configuration.service.ts
Normal file
@ -0,0 +1,76 @@
|
||||
import { Injectable } from "@angular/core";
|
||||
|
||||
@Injectable()
|
||||
export class QemuConfigurationService {
|
||||
getConsoleTypes(){
|
||||
return ['telnet', 'vnc', 'spice', 'spice+agent', 'none'];
|
||||
}
|
||||
|
||||
getDiskInterfaces() {
|
||||
return ['ide', 'sata', 'scsi', 'sd', 'mtd', 'floppy', 'pflash', 'virtio', 'none'];
|
||||
}
|
||||
|
||||
getNetworkTypes() {
|
||||
let networkTypes = [["e1000", "Intel Gigabit Ethernet"],
|
||||
["i82550", "Intel i82550 Ethernet"],
|
||||
["i82551", "Intel i82551 Ethernet"],
|
||||
["i82557a", "Intel i82557A Ethernet"],
|
||||
["i82557b", "Intel i82557B Ethernet"],
|
||||
["i82557c", "Intel i82557C Ethernet"],
|
||||
["i82558a", "Intel i82558A Ethernet"],
|
||||
["i82558b", "Intel i82558B Ethernet"],
|
||||
["i82559a", "Intel i82559A Ethernet"],
|
||||
["i82559b", "Intel i82559B Ethernet"],
|
||||
["i82559c", "Intel i82559C Ethernet"],
|
||||
["i82559er", "Intel i82559ER Ethernet"],
|
||||
["i82562", "Intel i82562 Ethernet"],
|
||||
["i82801", "Intel i82801 Ethernet"],
|
||||
["ne2k_pci", "NE2000 Ethernet"],
|
||||
["pcnet", "AMD PCNet Ethernet"],
|
||||
["rtl8139", "Realtek 8139 Ethernet"],
|
||||
["virtio", "Legacy paravirtualized Network I/O"],
|
||||
["virtio-net-pci", "Paravirtualized Network I/O"],
|
||||
["vmxnet3", "VMWare Paravirtualized Ethernet v3"]];
|
||||
|
||||
return networkTypes;
|
||||
}
|
||||
|
||||
getBootPriorities() {
|
||||
let bootPriorities = [["HDD", "c"],
|
||||
["CD/DVD-ROM", "d"],
|
||||
["Network", "n"],
|
||||
["HDD or Network", "cn"],
|
||||
["HDD or CD/DVD-ROM", "cd"]];
|
||||
|
||||
return bootPriorities;
|
||||
}
|
||||
|
||||
getOnCloseOptions() {
|
||||
let onCloseOptions = [["Power off the VM", "power_off"],
|
||||
["Send the shutdown signal (ACPI)", "shutdown_signal"],
|
||||
["Save the VM state", "save_vm_state"]];
|
||||
|
||||
return onCloseOptions;
|
||||
}
|
||||
|
||||
getCategories() {
|
||||
let categories = [["Default", "guest"],
|
||||
["Routers", "routers"],
|
||||
["Switches", "switches"],
|
||||
["End devices", "end_devices"],
|
||||
["Security devices", "security_devices"]];
|
||||
|
||||
return categories;
|
||||
}
|
||||
|
||||
getPriorities() {
|
||||
let priorities = ["realtime",
|
||||
"very high",
|
||||
"high",
|
||||
"normal",
|
||||
"low",
|
||||
"very low"];
|
||||
|
||||
return priorities;
|
||||
}
|
||||
}
|
37
src/app/services/virtual-box-configuration.service.ts
Normal file
37
src/app/services/virtual-box-configuration.service.ts
Normal file
@ -0,0 +1,37 @@
|
||||
import { Injectable } from "@angular/core";
|
||||
|
||||
@Injectable()
|
||||
export class VirtualBoxConfigurationService{
|
||||
getConsoleTypes() {
|
||||
return ['telnet', 'none'];
|
||||
}
|
||||
|
||||
getOnCloseoptions() {
|
||||
let onCloseOptions = [["Power off the VM", "power_off"],
|
||||
["Send the shutdown signal (ACPI)", "shutdown_signal"],
|
||||
["Save the VM state", "save_vm_state"]];
|
||||
|
||||
return onCloseOptions;
|
||||
}
|
||||
|
||||
getCategories() {
|
||||
let categories = [["Default", "guest"],
|
||||
["Routers", "routers"],
|
||||
["Switches", "switches"],
|
||||
["End devices", "end_devices"],
|
||||
["Security devices", "security_devices"]];
|
||||
|
||||
return categories;
|
||||
}
|
||||
|
||||
getNetworkTypes() {
|
||||
let networkTypes = ["PCnet-PCI II (Am79C970A)",
|
||||
"PCNet-FAST III (Am79C973)",
|
||||
"Intel PRO/1000 MT Desktop (82540EM)",
|
||||
"Intel PRO/1000 T Server (82543GC)",
|
||||
"Intel PRO/1000 MT Server (82545EM)",
|
||||
"Paravirtualized Network (virtio-net)"];
|
||||
|
||||
return networkTypes;
|
||||
}
|
||||
}
|
0
src/app/services/vpcs-configuration.service.spec.ts
Normal file
0
src/app/services/vpcs-configuration.service.spec.ts
Normal file
18
src/app/services/vpcs-configuration.service.ts
Normal file
18
src/app/services/vpcs-configuration.service.ts
Normal file
@ -0,0 +1,18 @@
|
||||
import { Injectable } from "@angular/core";
|
||||
|
||||
@Injectable()
|
||||
export class VpcsConfigurationService {
|
||||
getConsoleTypes(){
|
||||
return ['telnet', 'none'];
|
||||
}
|
||||
|
||||
getCategories(){
|
||||
let categories = [["Default", "guest"],
|
||||
["Routers", "routers"],
|
||||
["Switches", "switches"],
|
||||
["End devices", "end_devices"],
|
||||
["Security devices", "security_devices"]];
|
||||
|
||||
return categories;
|
||||
}
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user