projects/cobbler-frontend/src/app/actions/build-iso/build-iso.component.ts
OnDestroy
selector | cobbler-build-iso |
standalone | true |
imports |
MatListModule
FormsModule
MatButton
MatFormField
MatInput
MatLabel
ReactiveFormsModule
MatCheckbox
|
styleUrls | ./build-iso.component.scss |
templateUrl | ./build-iso.component.html |
Properties |
|
Methods |
constructor(userService: UserService, cobblerApiService: CobblerApiService, _snackBar: MatSnackBar)
|
||||||||||||
Parameters :
|
ngOnDestroy |
ngOnDestroy()
|
Returns :
void
|
runBuildiso |
runBuildiso()
|
Returns :
void
|
Private Readonly _formBuilder |
Default value : inject(FormBuilder)
|
Private ngUnsubscribe |
Default value : new Subject<void>()
|
Public userService |
Type : UserService
|
import { Component, inject, OnDestroy } from '@angular/core';
import { FormBuilder, FormsModule, ReactiveFormsModule } from '@angular/forms';
import { MatButton } from '@angular/material/button';
import { MatCheckbox } from '@angular/material/checkbox';
import { MatFormField, MatLabel } from '@angular/material/form-field';
import { MatInput } from '@angular/material/input';
import { MatListModule } from '@angular/material/list';
import { MatSnackBar } from '@angular/material/snack-bar';
import { BackgroundBuildisoOptions, CobblerApiService } from 'cobbler-api';
import { Subject } from 'rxjs';
import { takeUntil } from 'rxjs/operators';
import { UserService } from '../../services/user.service';
import Utils from '../../utils';
@Component({
selector: 'cobbler-build-iso',
templateUrl: './build-iso.component.html',
styleUrls: ['./build-iso.component.scss'],
standalone: true,
imports: [
MatListModule,
FormsModule,
MatButton,
MatFormField,
MatInput,
MatLabel,
ReactiveFormsModule,
MatCheckbox,
],
})
export class BuildISOComponent implements OnDestroy {
// Unsubscribe
private ngUnsubscribe = new Subject<void>();
// Form
private readonly _formBuilder = inject(FormBuilder);
buildisoFormGroup = this._formBuilder.group({
iso: '',
profiles: '',
systems: '',
buildisodir: '',
distro: '',
standalone: false,
airgapped: false,
source: '',
excludeDNS: false,
xorrisofsOpts: '',
});
constructor(
public userService: UserService,
private cobblerApiService: CobblerApiService,
private _snackBar: MatSnackBar,
) {}
ngOnDestroy(): void {
this.ngUnsubscribe.next();
this.ngUnsubscribe.complete();
}
runBuildiso(): void {
const buildisoOptions: BackgroundBuildisoOptions = {
iso: this.buildisoFormGroup.controls.iso.value,
profiles: this.buildisoFormGroup.controls.profiles.value,
systems: this.buildisoFormGroup.controls.systems.value,
buildisodir: this.buildisoFormGroup.controls.buildisodir.value,
distro: this.buildisoFormGroup.controls.distro.value,
standalone: this.buildisoFormGroup.controls.standalone.value,
airgapped: this.buildisoFormGroup.controls.airgapped.value,
source: this.buildisoFormGroup.controls.source.value,
excludeDNS: this.buildisoFormGroup.controls.excludeDNS.value,
xorrisofsOpts: this.buildisoFormGroup.controls.xorrisofsOpts.value,
};
if (this.buildisoFormGroup.invalid) {
this._snackBar.open('Please fill out all required inputs!', 'Close', {
duration: 2000,
});
return;
}
this.cobblerApiService
.background_buildiso(buildisoOptions, this.userService.token)
.pipe(takeUntil(this.ngUnsubscribe))
.subscribe(
(value) => {
// TODO
},
(error) => {
// HTML encode the error message since it originates from XML
this._snackBar.open(Utils.toHTML(error.message), 'Close');
},
);
}
}
<h1 class="title">BUILD ISO IMAGES</h1>
<form class="form-replicate" [formGroup]="buildisoFormGroup">
<mat-form-field class="form-field-full-width">
<mat-label>Distro</mat-label>
<input
matInput
required
type="text"
formControlName="distro"
placeholder="leap-x86_64"
/>
</mat-form-field>
<mat-form-field class="form-field-full-width">
<mat-label>ISO</mat-label>
<input
matInput
type="text"
formControlName="iso"
placeholder="/var/lib/cobbler/isos/autoinstall.iso"
/>
</mat-form-field>
<mat-form-field class="form-field-full-width">
<mat-label>Profiles</mat-label>
<input matInput type="text" formControlName="profiles" placeholder="" />
</mat-form-field>
<mat-form-field class="form-field-full-width">
<mat-label>Systems</mat-label>
<input matInput type="text" formControlName="systems" placeholder="" />
</mat-form-field>
<mat-form-field class="form-field-full-width">
<mat-label>Buildiso directory</mat-label>
<input
matInput
type="text"
formControlName="buildisodir"
placeholder="/var/cache/cobbler/buildiso"
/>
</mat-form-field>
<mat-form-field class="form-field-full-width">
<mat-label>Source</mat-label>
<input
matInput
type="text"
formControlName="source"
placeholder="/var/lib/cobbler/iso-source/leap-x86_64"
/>
</mat-form-field>
<mat-form-field class="form-field-full-width">
<mat-label>xorrisofs Options</mat-label>
<input
matInput
type="text"
formControlName="xorrisofsOpts"
placeholder="-v"
/>
</mat-form-field>
<mat-checkbox class="form-field-full-width" formControlName="standalone"
>Standalone</mat-checkbox
>
<mat-checkbox class="form-field-full-width" formControlName="airgapped"
>Airgapped</mat-checkbox
>
<mat-checkbox class="form-field-full-width" formControlName="excludeDNS"
>Exclude DNS</mat-checkbox
>
<button mat-button (click)="runBuildiso()">Run</button>
</form>
./build-iso.component.scss
.form-replicate {
min-width: 150px;
max-width: 600px;
width: 100%;
}
.form-field-full-width {
width: 100%;
}