File

projects/cobbler-frontend/src/app/actions/replicate/replicate.component.ts

Implements

OnDestroy

Metadata

Index

Properties
Methods

Constructor

constructor(userService: UserService, cobblerApiService: CobblerApiService, _snackBar: MatSnackBar)
Parameters :
Name Type Optional
userService UserService No
cobblerApiService CobblerApiService No
_snackBar MatSnackBar No

Methods

ngOnDestroy
ngOnDestroy()
Returns : void
runReplicate
runReplicate()
Returns : void

Properties

Private Readonly _formBuilder
Default value : inject(FormBuilder)
Private ngUnsubscribe
Default value : new Subject<void>()
replicateFormGroup
Default value : this._formBuilder.group({ master: '', port: '', distro_patterns: '', profile_patterns: '', system_patterns: '', repo_patterns: '', image_patterns: '', mgmtclass_patterns: '', package_patterns: '', file_patterns: '', prune: false, omit_data: false, sync_all: false, use_ssl: false, })
Public userService
Type : UserService
import { Component, inject, OnDestroy } from '@angular/core';
import { FormBuilder, ReactiveFormsModule } from '@angular/forms';
import { MatButton } from '@angular/material/button';
import { MatFormFieldModule, MatLabel } from '@angular/material/form-field';
import { MatFormField, MatInput } from '@angular/material/input';
import { MatSlideToggle } from '@angular/material/slide-toggle';
import { MatSnackBar } from '@angular/material/snack-bar';
import { BackgroundReplicateOptions, 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-replicate',
  standalone: true,
  imports: [
    MatFormField,
    ReactiveFormsModule,
    MatLabel,
    MatFormFieldModule,
    MatInput,
    MatSlideToggle,
    MatButton,
  ],
  templateUrl: './replicate.component.html',
  styleUrl: './replicate.component.scss',
})
export class ReplicateComponent implements OnDestroy {
  // Unsubscribe
  private ngUnsubscribe = new Subject<void>();

  // Form
  private readonly _formBuilder = inject(FormBuilder);
  replicateFormGroup = this._formBuilder.group({
    master: '',
    port: '',
    distro_patterns: '',
    profile_patterns: '',
    system_patterns: '',
    repo_patterns: '',
    image_patterns: '',
    mgmtclass_patterns: '',
    package_patterns: '',
    file_patterns: '',
    prune: false,
    omit_data: false,
    sync_all: false,
    use_ssl: false,
  });

  constructor(
    public userService: UserService,
    private cobblerApiService: CobblerApiService,
    private _snackBar: MatSnackBar,
  ) {}

  ngOnDestroy(): void {
    this.ngUnsubscribe.next();
    this.ngUnsubscribe.complete();
  }

  runReplicate(): void {
    const replicateOptions: BackgroundReplicateOptions = {
      master: this.replicateFormGroup.controls.master.value,
      port: this.replicateFormGroup.controls.port.value,
      distro_patterns: this.replicateFormGroup.controls.distro_patterns.value,
      profile_patterns: this.replicateFormGroup.controls.profile_patterns.value,
      system_patterns: this.replicateFormGroup.controls.system_patterns.value,
      repo_patterns: this.replicateFormGroup.controls.repo_patterns.value,
      image_patterns: this.replicateFormGroup.controls.image_patterns.value,
      mgmtclass_patterns:
        this.replicateFormGroup.controls.mgmtclass_patterns.value,
      package_patterns: this.replicateFormGroup.controls.package_patterns.value,
      file_patterns: this.replicateFormGroup.controls.file_patterns.value,
      prune: this.replicateFormGroup.controls.prune.value,
      omit_data: this.replicateFormGroup.controls.omit_data.value,
      sync_all: this.replicateFormGroup.controls.sync_all.value,
      use_ssl: this.replicateFormGroup.controls.use_ssl.value,
    };
    this.cobblerApiService
      .background_replicate(replicateOptions, 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>REPLICATE</h1>

<form class="form-replicate" [formGroup]="replicateFormGroup">
  <mat-form-field class="form-field-full-width">
    <mat-label>Master</mat-label>
    <input
      matInput
      type="text"
      formControlName="master"
      placeholder="cobbler-master.example.org"
    />
  </mat-form-field>
  <mat-form-field class="form-field-full-width">
    <mat-label>Port</mat-label>
    <input matInput type="number" formControlName="port" placeholder="80" />
  </mat-form-field>
  <mat-form-field class="form-field-full-width">
    <mat-label>Distro Pattern</mat-label>
    <input
      matInput
      type="text"
      formControlName="distro_patterns"
      placeholder="leap-15-*"
    />
  </mat-form-field>
  <mat-form-field class="form-field-full-width">
    <mat-label>Profile Pattern</mat-label>
    <input
      matInput
      type="text"
      formControlName="profile_patterns"
      placeholder="leap-15-*-autoinstall"
    />
  </mat-form-field>
  <mat-form-field class="form-field-full-width">
    <mat-label>System Pattern</mat-label>
    <input
      matInput
      type="text"
      formControlName="system_patterns"
      placeholder="*-staging.example.org"
    />
  </mat-form-field>
  <mat-form-field class="form-field-full-width">
    <mat-label>Repository Pattern</mat-label>
    <input
      matInput
      type="text"
      formControlName="repo_patterns"
      placeholder="opensuse-*"
    />
  </mat-form-field>
  <mat-form-field class="form-field-full-width">
    <mat-label>Image Pattern</mat-label>
    <input
      matInput
      type="text"
      formControlName="image_patterns"
      placeholder="sles-15-sp*"
    />
  </mat-form-field>
  <mat-form-field class="form-field-full-width">
    <mat-label>Management-Class Pattern</mat-label>
    <input
      matInput
      type="text"
      formControlName="mgmtclass_patterns"
      placeholder="example-pattern-*"
    />
  </mat-form-field>
  <mat-form-field class="form-field-full-width">
    <mat-label>File Pattern</mat-label>
    <input
      matInput
      type="text"
      formControlName="file_patterns"
      placeholder="ssh-configs-*"
    />
  </mat-form-field>
  <mat-slide-toggle
    labelPosition="before"
    formControlName="prune"
    class="form-field-full-width"
    >Prune</mat-slide-toggle
  >
  <mat-slide-toggle
    labelPosition="before"
    formControlName="omit_data"
    class="form-field-full-width"
    >Omit data</mat-slide-toggle
  >
  <mat-slide-toggle
    labelPosition="before"
    formControlName="sync_all"
    class="form-field-full-width"
    >Sync all</mat-slide-toggle
  >
  <mat-slide-toggle
    labelPosition="before"
    formControlName="use_ssl"
    class="form-field-full-width"
    >Use SSL</mat-slide-toggle
  >
  <button mat-button (click)="runReplicate()">Run</button>
</form>
Legend
Html element
Component
Html element with directive

results matching ""

    No results matching ""