| applicationError |
Type : MethodFault
|
Default value : {
faultCode: -1,
faultString: 'Problem while processing data.',
}
|
| BASE_URL |
Type : unknown
|
Default value : process.env['PLAYWRIGHT_TEST_BASE_URL'] ?? 'http://localhost:4200'
|
| BODY |
Type : string
|
Default value : 'body'
|
| TEXT |
Type : string
|
Default value : 'text'
|
| COBBLER_API_URL |
Type : unknown
|
Default value : process.env['COBBLER_TEST_API_URL'] ?? 'http://localhost/cobbler_api'
|
| COBBLER_PASSWORD |
Type : unknown
|
Default value : process.env['COBBLER_TEST_PASSWORD'] ?? 'cobbler'
|
| COBBLER_USERNAME |
Type : unknown
|
Default value : process.env['COBBLER_TEST_USERNAME'] ?? 'cobbler'
|
| COBBLER_DARKMODE_KEY_NAME |
Type : string
|
Default value : 'DARK_MODE'
|
| COBBLER_TOKEN_KEY_NAME |
Type : string
|
Default value : 'token'
|
| COBBLER_URL_KEY_NAME |
Type : string
|
Default value : 'COBBLER_URL'
|
| COBBLER_USER_KEY_NAME |
Type : string
|
Default value : 'REMEMBERED_USERNAME'
|
| SSO_SUPPRESSED_ONCE_KEY_NAME |
Type : string
|
Default value : 'SSO_SUPPRESSED_ONCE'
|
| COBBLER_URL |
Type : unknown
|
Default value : new InjectionToken<URL>('COBBLER_URL')
|
| cobblerUrlFactory |
Type : unknown
|
Default value : () => {
const value = localStorage.getItem('COBBLER_URL');
if (value) {
return new URL(value);
}
return new URL('http://localhost/cobbler_api');
}
|
| cobblerItemEditableData |
Type : Array<CobblerInputData>
|
Default value : [
{
formControlName: 'comment',
inputType: CobblerInputChoices.TEXT,
label: $localize`:@@item.edit.label.comment:Comment`,
disabled: true,
readonly: false,
defaultValue: '',
inherited: false,
hint: $localize`:@@item.edit.hint.comment:A free-text note or description to associate with this item.`,
},
]
|
| cobblerItemReadonlyData |
Type : Array<CobblerInputData>
|
Default value : [
{
formControlName: 'name',
inputType: CobblerInputChoices.TEXT,
label: $localize`:@@item.edit.label.name:Name`,
disabled: false,
readonly: true,
defaultValue: '',
inherited: false,
hint: $localize`:@@item.edit.hint.name:The item's name. Used as the primary identifier across the Cobbler API and CLI.`,
},
{
formControlName: 'uid',
inputType: CobblerInputChoices.TEXT,
label: $localize`:@@item.edit.label.uid:UID`,
disabled: false,
readonly: true,
defaultValue: '',
inherited: false,
hint: $localize`:@@item.edit.hint.uid:The internal unique identifier assigned by Cobbler. Never reused, even after deletion.`,
},
{
formControlName: 'mtime',
inputType: CobblerInputChoices.TEXT,
label: $localize`:@@item.edit.label.mtime:Last modified time`,
disabled: false,
readonly: true,
defaultValue: '',
inherited: false,
hint: $localize`:@@item.edit.hint.mtime:Timestamp of the last change to this item via the Cobbler API.`,
},
{
formControlName: 'ctime',
inputType: CobblerInputChoices.TEXT,
label: $localize`:@@item.edit.label.ctime:Creation time`,
disabled: false,
readonly: true,
defaultValue: '',
inherited: false,
hint: $localize`:@@item.edit.hint.ctime:Timestamp of when this item was first created in Cobbler.`,
},
{
formControlName: 'depth',
inputType: CobblerInputChoices.NUMBER,
label: $localize`:@@item.edit.label.depth:Depth`,
disabled: false,
readonly: true,
defaultValue: 0,
inherited: false,
hint: $localize`:@@item.edit.hint.depth:Logical depth of this item in the hierarchy. Controls load order and sorting.`,
},
{
formControlName: 'is_subobject',
inputType: CobblerInputChoices.CHECKBOX,
label: $localize`:@@item.edit.label.is_subobject:Is Subobject?`,
disabled: false,
readonly: true,
defaultValue: false,
inherited: false,
hint: $localize`:@@item.edit.hint.is_subobject:Whether this item is a sub-object of another item (e.g. a sub-profile or sub-system).`,
},
]
|
| distroConfig |
Type : ItemConfig
|
Default value : {
type: 'distro',
xmlrpcType: 'distro',
label: 'Distro',
overviewRoute: '/items/distro',
createFields: ({ name }) => ({
name,
kernel:
process.env['COBBLER_TEST_KERNEL_PATH'] ??
'/code/system-tests/images/fake/vmlinuz',
initrd:
process.env['COBBLER_TEST_INITRD_PATH'] ??
'/code/system-tests/images/fake/initramfs',
}),
editableField: { label: 'Comment', value: 'e2e edited comment' },
}
|
| E2E_PREFIX |
Type : string
|
Default value : 'e2e'
|
|
Prefix every e2e-created backend object gets, so a sweep can find and delete leftovers. |
| EMPTY_CONFIG |
Type : AppConfig
|
Default value : {
cobblerUrls: [],
}
|
| environment |
Type : object
|
Default value : {
production: true,
}
|
| environment |
Type : object
|
Default value : {
production: false,
}
|
| fileConfig |
Type : ItemConfig
|
Default value : {
type: 'file',
xmlrpcType: 'file',
label: 'File',
overviewRoute: '/items/file',
createFields: ({ name }) => ({
name,
path: '/etc/e2e-test.conf',
owner: 'root',
group: 'root',
mode: '0644',
template: 'default.ks',
}),
editableField: { label: 'Comment', value: 'e2e edited comment' },
}
|
| imageConfig |
Type : ItemConfig
|
Default value : {
type: 'image',
xmlrpcType: 'image',
label: 'Image',
overviewRoute: '/items/image',
createFields: ({ name }) => ({ name }),
editableField: { label: 'Comment', value: 'e2e edited comment' },
}
|
| ITEM_CONFIGS_BY_TYPE |
Type : Record<string, ItemConfig>
|
Default value : Object.fromEntries(
STANDARD_ITEM_CONFIGS.map((config) => [config.type, config]),
)
|
| managementClassConfig |
Type : ItemConfig
|
Default value : {
type: 'management-class',
xmlrpcType: 'mgmtclass',
label: 'ManagementClass',
overviewRoute: '/items/management-class',
createFields: ({ name }) => ({ name }),
editableField: { label: 'Comment', value: 'e2e edited comment' },
}
|
| menuConfig |
Type : ItemConfig
|
Default value : {
type: 'menu',
xmlrpcType: 'menu',
label: 'Menu',
overviewRoute: '/items/menu',
createFields: ({ name }) => ({ name }),
editableField: { label: 'Comment', value: 'e2e edited comment' },
}
|
| packageConfig |
Type : ItemConfig
|
Default value : {
type: 'package',
xmlrpcType: 'package',
label: 'Package',
overviewRoute: '/items/package',
createFields: ({ name }) => ({ name }),
editableField: { label: 'Comment', value: 'e2e edited comment' },
}
|
| profileConfig |
Type : ItemConfig
|
Default value : {
type: 'profile',
xmlrpcType: 'profile',
label: 'Profile',
overviewRoute: '/items/profile',
createFields: ({ name, parentName }) => ({
name,
distro: parentName!,
}),
editableField: { label: 'Comment', value: 'e2e edited comment' },
requiresParent: { type: 'distro', formControlName: 'distro' },
}
|
| repositoryConfig |
Type : ItemConfig
|
Default value : {
type: 'repository',
xmlrpcType: 'repo',
label: 'Repository',
overviewRoute: '/items/repository',
createFields: ({ name }) => ({ name }),
editableField: { label: 'Comment', value: 'e2e edited comment' },
}
|
| routes |
Type : Routes
|
Default value : [
{ path: 'login', component: LogInFormComponent },
{
path: 'user/:name/preferences',
component: PreferencesComponent,
canActivate: [AuthGuardService],
data: { breadcrumb: { skip: true } },
},
{ path: '', pathMatch: 'full', redirectTo: '/login' },
{
path: 'unauthorized',
component: UnauthorizedComponent,
data: { breadcrumb: { skip: true } },
},
{
path: 'manage',
component: AppManageComponent,
canActivate: [AuthGuardService],
pathMatch: 'full',
data: { breadcrumb: { skip: true } },
},
{
path: 'actions',
children: [
{
path: 'import',
component: ImportDVDComponent,
canActivate: [AuthGuardService],
data: {
breadcrumb: $localize`:@@breadcrumb.actions.import:Import DVD`,
},
},
{
path: 'sync',
component: SyncComponent,
canActivate: [AuthGuardService],
data: { breadcrumb: $localize`:@@breadcrumb.actions.sync:Sync` },
},
{
path: 'reposync',
component: RepoSyncComponent,
canActivate: [AuthGuardService],
data: {
breadcrumb: $localize`:@@breadcrumb.actions.reposync:Sync Repository`,
},
},
{
path: 'buildiso',
component: BuildISOComponent,
canActivate: [AuthGuardService],
data: {
breadcrumb: $localize`:@@breadcrumb.actions.buildiso:Build ISO`,
},
},
{
path: 'check',
component: CheckSysComponent,
canActivate: [AuthGuardService],
data: { breadcrumb: $localize`:@@breadcrumb.actions.check:Check` },
},
{
path: 'status',
component: StatusComponent,
canActivate: [AuthGuardService],
data: { breadcrumb: $localize`:@@breadcrumb.actions.status:Status` },
},
{
path: 'hardlink',
component: HardlinkComponent,
canActivate: [AuthGuardService],
data: {
breadcrumb: $localize`:@@breadcrumb.actions.hardlink:Headlink`,
},
},
{
path: 'mkloaders',
component: MkloadersComponent,
canActivate: [AuthGuardService],
data: {
breadcrumb: $localize`:@@breadcrumb.actions.mkloaders:Mkloaders`,
},
},
{
path: 'validate-autoinstalls',
component: ValidateAutoinstallsComponent,
canActivate: [AuthGuardService],
},
{
path: 'replicate',
component: ReplicateComponent,
canActivate: [AuthGuardService],
data: {
breadcrumb: $localize`:@@breadcrumb.actions.replicate:Replicate`,
},
},
],
data: {
breadcrumb: {
label: $localize`:@@breadcrumb.actions:Actions`,
skip: false,
disable: true,
},
},
},
{
path: 'items',
children: [
{
path: 'distro',
component: DistroShellComponent, // Shell
children: [
{
path: '',
component: DistrosOverviewComponent,
canActivate: [AuthGuardService],
data: { breadcrumb: $localize`:@@breadcrumb.items.distro:Distros` },
},
{
path: ':name',
component: DistroEditComponent,
canActivate: [AuthGuardService],
data: { breadcrumb: { alias: 'itemName' } },
},
],
},
{
path: 'profile',
component: ProfileShellComponent, // Shell
canActivate: [AuthGuardService],
children: [
{
path: '',
component: ProfileOverviewComponent,
canActivate: [AuthGuardService],
data: {
breadcrumb: $localize`:@@breadcrumb.items.profile:Profiles`,
},
},
{
path: ':name',
component: ProfileShellEditComponent, // Shell
canActivate: [AuthGuardService],
children: [
{
path: '',
component: ProfileEditComponent,
canActivate: [AuthGuardService],
data: { breadcrumb: { alias: 'itemName' } },
},
{
path: 'autoinstall',
component: ViewAutoinstallComponent,
canActivate: [AuthGuardService],
data: {
breadcrumb: $localize`:@@breadcrumb.autoinstall:Autoinstall`,
},
},
],
},
],
},
{
path: 'system',
component: SystemShellComponent, // Shell
canActivate: [AuthGuardService],
children: [
{
path: '',
component: SystemOverviewComponent,
canActivate: [AuthGuardService],
data: { breadcrumb: $localize`:@@breadcrumb.items.system:Systems` },
},
{
path: ':name',
component: SystemShellEditComponent, // Shell
canActivate: [AuthGuardService],
children: [
{
path: '',
component: SystemEditComponent,
canActivate: [AuthGuardService],
data: { breadcrumb: { alias: 'itemName' } },
},
{
path: 'interface',
component: NetworkInterfaceShellComponent, // Shell
canActivate: [AuthGuardService],
children: [
{
path: '',
component: NetworkInterfaceOverviewComponent,
canActivate: [AuthGuardService],
data: {
breadcrumb: $localize`:@@breadcrumb.items.interface:Interfaces`,
},
},
{
path: ':interface',
component: NetworkInterfaceEditComponent,
canActivate: [AuthGuardService],
data: { breadcrumb: { alias: 'itemName' } },
},
],
},
{
path: 'autoinstall',
component: ViewAutoinstallComponent,
canActivate: [AuthGuardService],
data: {
breadcrumb: $localize`:@@breadcrumb.autoinstall:Autoinstall`,
},
},
],
},
],
},
{
path: 'repository',
component: RepositoryShellComponent, // Shell
canActivate: [AuthGuardService],
children: [
{
path: '',
component: RepositoryOverviewComponent,
canActivate: [AuthGuardService],
data: {
breadcrumb: $localize`:@@breadcrumb.items.repository:Repositories`,
},
},
{
path: ':name',
component: RepositoryEditComponent,
canActivate: [AuthGuardService],
data: { breadcrumb: { alias: 'itemName' } },
},
],
},
{
path: 'image',
component: ImageShellComponent, // Shell
canActivate: [AuthGuardService],
children: [
{
path: '',
component: ImageOverviewComponent,
canActivate: [AuthGuardService],
data: { breadcrumb: $localize`:@@breadcrumb.items.image:Images` },
},
{
path: ':name',
component: ImageEditComponent,
canActivate: [AuthGuardService],
data: { breadcrumb: { alias: 'itemName' } },
},
],
},
{
path: 'template',
component: TemplateShellComponent, // Shell
canActivate: [AuthGuardService],
children: [
{
path: '',
component: TemplateOverviewComponent,
canActivate: [AuthGuardService],
data: {
breadcrumb: $localize`:@@breadcrumb.items.template:Templates`,
},
},
{
path: ':name',
component: TemplateEditComponent,
canActivate: [AuthGuardService],
data: { breadcrumb: { alias: 'itemName' } },
},
],
},
{
path: 'snippet',
component: SnippetShellComponent, // Shell
canActivate: [AuthGuardService],
children: [
{
path: '',
component: SnippetOverviewComponent,
canActivate: [AuthGuardService],
data: {
breadcrumb: $localize`:@@breadcrumb.items.snippet:Snippets`,
},
},
{
path: ':name',
component: SnippetEditComponent,
canActivate: [AuthGuardService],
data: { breadcrumb: { alias: 'itemName' } },
},
],
},
{
path: 'management-class',
component: ManagementClassShellComponent, // Shell
canActivate: [AuthGuardService],
children: [
{
path: '',
component: ManagementClassOverviewComponent,
canActivate: [AuthGuardService],
data: {
breadcrumb: $localize`:@@breadcrumb.items.management-class:Management Classes`,
},
},
{
path: ':name',
component: ManagementClassEditComponent,
canActivate: [AuthGuardService],
data: { breadcrumb: { alias: 'itemName' } },
},
],
},
{
path: 'package',
component: PackageShellComponent, // Shell
canActivate: [AuthGuardService],
children: [
{
path: '',
component: PackageOverviewComponent,
canActivate: [AuthGuardService],
data: {
breadcrumb: $localize`:@@breadcrumb.items.package:Packages`,
},
},
{
path: ':name',
component: PackageEditComponent,
canActivate: [AuthGuardService],
data: { breadcrumb: { alias: 'itemname' } },
},
],
},
{
path: 'file',
component: FileShellComponent, // Shell
canActivate: [AuthGuardService],
children: [
{
path: '',
component: FileOverviewComponent,
canActivate: [AuthGuardService],
data: { breadcrumb: $localize`:@@breadcrumb.items.file:Files` },
},
{
path: ':name',
component: FileEditComponent,
canActivate: [AuthGuardService],
data: { breadcrumb: { alias: 'itemName' } },
},
],
},
{
path: 'menu',
component: MenuShellComponent, // Shell
canActivate: [AuthGuardService],
children: [
{
path: '',
component: MenuOverviewComponent,
canActivate: [AuthGuardService],
data: { breadcrumb: $localize`:@@breadcrumb.items.menu:Menus` },
},
{
path: ':name',
component: MenuEditComponent,
canActivate: [AuthGuardService],
data: { breadcrumb: { alias: 'itemName' } },
},
],
},
],
data: {
breadcrumb: {
label: $localize`:@@breadcrumb.items:Items`,
skip: false,
disable: true,
},
},
},
{
path: 'settings',
component: SettingsViewComponent,
canActivate: [AuthGuardService],
data: { breadcrumb: { skip: true } },
},
{
path: 'events',
component: AppEventsComponent,
canActivate: [AuthGuardService],
data: { breadcrumb: { skip: true } },
},
{
path: 'signatures',
component: SignaturesComponent,
canActivate: [AuthGuardService],
data: { breadcrumb: { skip: true } },
},
{
path: '404',
component: NotFoundComponent,
data: { breadcrumb: { skip: true } },
},
{ path: '**', redirectTo: '/404' },
]
|
| SERVER_CHECK_DEBOUNCE_MS |
Type : number
|
Default value : 300
|
| SERVER_CHECK_TIMEOUT_MS |
Type : number
|
Default value : 5000
|
| setup |
Type : unknown
|
Default value : () => {
process.env.TZ = 'Europe/Berlin';
}
|
| systemConfig |
Type : ItemConfig
|
Default value : {
type: 'system',
xmlrpcType: 'system',
label: 'System',
overviewRoute: '/items/system',
createFields: ({ name, parentName }) => ({
name,
profile: parentName!,
}),
editableField: { label: 'Comment', value: 'e2e edited comment' },
requiresParent: { type: 'profile', formControlName: 'profile' },
}
|