Giter VIP home page Giter VIP logo

cobbler-web's Introduction

Cobbler-Web

Gitter codecov

Our new separate Angular based web interface for Cobbler!

Initial developer: @nelliesnoodles & @SchoolGuy @ https://github.com/nelliesnoodles/Angular-CBBLR

Prerequisites

  • Node.js and npm
  • install Node.js dependencies with npm install
  • build required projects
npm run build typescript-xmlrpc
npm run build cobbler-api

Development server

Run ng serve for a dev server. Navigate to http://localhost:4200/. The app will automatically reload if you change any of the source files.

Note: Since this is a multi-project repo you need to add the project name. The only project which is a frontend is currently cobbler-frontend though. Serving will only work if you have built our two libraries as described above.

Code scaffolding

Run ng generate component component-name to generate a new component. You can also use ng generate directive|pipe|service|class|guard|interface|enum|module.

Build

Run ng build to build the project. The build artifacts will be stored in the dist/ directory. Use the --prod flag for a production build.

Running unit tests

Run ng test to execute the unit tests via Karma.

Running end-to-end tests

Run ng e2e to execute the end-to-end tests via Protractor.

Further help

To get more help on the Angular CLI use ng help or go check out the Angular CLI Overview and Command Reference page.

cobbler-web's People

Contributors

00kadie00 avatar bowlerct avatar jsowers13 avatar nodeg avatar schoolguy avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

cobbler-web's Issues

Implement page for `cobbler sync`

Is your feature request related to a problem? Please describe.

At the moment the page for Cobbler Sync is a placeholder.

Describe the solution you'd like

It should be possible to run cobbler sync in the following ways:

  • Complete sync
  • DHCP sync
  • DNS sync
  • Systems sync
    • The list of systems should be pre-populated
    • If no systems are present in Cobbler this should be disabled and an information should be present why this is disabled

After the sync is executed there should be a notification or information for the user where he is taken to the Events page. There he should be able to see the log after the task has finished. A real-time implementation is not needed for the initial concept.

Describe alternatives you've considered

None

Additional context

None

Issue and PR Templates

At the moment we don't have a way to structure the bug reports and feature requests. GitHub Issue and PR templates are the right thing to do this.

Add custom cobbler prefix to components

Is your feature request related to a problem? Please describe.

Currently we use the default app- prefix for components. Let's use a custom prefix that suits our project more.

Describe the solution you'd like

Use the custom cobbler- prefix for all components as it shows that the components is belonging to the Cobbler project.

Describe alternatives you've considered

None

Additional context

See https://blogkashif.medium.com/change-prefix-of-component-in-angular-application-34c8d8a86dbf how to do it.

Implement Create, Update and Delete for Cobbler Settings

Is your feature request related to a problem? Please describe.

Currently it is not possible to edit, add optional or reset values to their defaults.

Describe the solution you'd like

Implement Create, Update and Delete for Cobbler Settings.

Describe alternatives you've considered

None

Additional context

This is dependant on cobbler/cobbler#3163

Push notifications for completed tasks

Is your feature request related to a problem? Please describe.

The frontend should send a push notification if a background action is completed.

Describe the solution you'd like

See above.

Describe alternatives you've considered

None

Additional context

None

Implement page to view `cobbler setting`

Is your feature request related to a problem? Please describe.

At the moment the page for Cobbler Settings is a placeholder with mock data. We should display the real data instead.

Describe the solution you'd like

The page should show the current settings and enable a user to edit them if desired.

Describe alternatives you've considered

None

Additional context

None

Login-Page: Server field should be optional

Is your feature request related to a problem? Please describe.

If a user only has one Cobbler instance it should be possible to have a config file on the server that is optionally present that hardcodes the URL for the access. The server field should be invisible then.

Describe the solution you'd like

See above. Additionally it should be possible to set a list of servers and have a dropdown to choose from.

Describe alternatives you've considered

None

Additional context

None

Remove the need for a XmlrpcStruct

This is currently looking like:

serializeMethodCall('function_name', [{'members': [{name: "data1", value: 0}, {name: 'data2', value: 0}]}])

my proposal to solve this issue is to allow objects of type map. However we need to ensure that the map is flat. It is allowed according to the XML-RPC Spec that you have a Map with different types. Thus something similar to the following should be possible:

const myMap = new Map<string, string|number|boolean|Date|ArrayBuffer>()
myMap.set("key", "value")
// More code...
serializeMethodCall('function_name', [myMap])

Create page to read event logs

Is your feature request related to a problem? Please describe.

Currently when an action is triggered, it is not possible to read the event logs.

Describe the solution you'd like

A page in the UI where the events are listed and if chosen the logs for a single event are shown.

Describe alternatives you've considered

None

Additional context

None.

Implement `cobbler status` UI

Is your feature request related to a problem? Please describe.

At the moment it is not possible to see the output of cobbler status in the UI.

Describe the solution you'd like

cobbler status output should be nicely rendered for a user to analyse.

Describe alternatives you've considered

None

Additional context

None

GUI Confirmations

I'd love it if I could turn off the GUI's confirmation boxes. Maybe make them so we can disable them by user or something.

After you're familiar with the system they're just speed bumps.

Copied from cobbler/#1185

Edit view for specific items

Is your feature request related to a problem? Please describe.

At the moment it is not possible to edit Items because we just have mock tables present.

Describe the solution you'd like

If you view a specific item, the view should be reused to edit the item. The edit mode should be only enabled after a specific radio button is triggered. The radio button should be on the top right corner.

Describe alternatives you've considered

None

Additional context

None

Implement page for `cobbler import`

Is your feature request related to a problem? Please describe.
A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]

Describe the solution you'd like
A clear and concise description of what you want to happen.

Describe alternatives you've considered
A clear and concise description of any alternative solutions or features you've considered.

Additional context
Add any other context or screenshots about the feature request here.

Enable e2e tests again

Is your feature request related to a problem? Please describe.

At the moment the e2e tests are disabled because they would need to much adjustments. This should change.

Describe the solution you'd like

Before the 1.0.0 release we should enable and fix the e2e tests to guarantee stability as good as possible.

Describe alternatives you've considered

None

Additional context

None

Implement page for `cobbler buildiso`

Is your feature request related to a problem? Please describe.
A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]

Describe the solution you'd like
A clear and concise description of what you want to happen.

Describe alternatives you've considered
A clear and concise description of any alternative solutions or features you've considered.

Additional context
Add any other context or screenshots about the feature request here.

Looking for a dedicated maintainer

Currently the whole Cobbler-Project is maintained by too few people.

I am looking for a maintainer to do the following tasks in this repository:

  • Maintain all three projects
  • Manage all issues
  • Review Pull Requests
  • Lead discussions
  • Maintain the CI
  • Manage raised security issues by bots or people
  • Maintain the documentation (developer & user)
  • Keep up with the LTS Angular Releases
  • Take care of preventing downstream from getting lazy in the packaging area (JS/TS is a nightmare to package in all eco systems I am aware of)
  • Creating releases

Additionally off-repository tasks are the following:

  • Sync meetings with maintainers of other Repository Admins
  • Take care of beginners which are interested in doing first time contributions

Benefits: I will be honest. Except writing your GitHub Username into the README there is not much I can do for you. For me it is the satisfaction of making people happy which drives me to support this whole GitHub Organization.

Abstract access to resources

Is your feature request related to a problem? Please describe.

Since in the future we hopefully have a HTTP REST API at some point we should abstract access to the "raw" API we currently offer.

Describe the solution you'd like

Access to the API should be abstracted by functionality.

Describe alternatives you've considered

None

Additional context

Related to cobbler/cobblerclient#12

Remove the need for XmlrpcArray

Currently when passing an array as a parameter to a method call we need to do the following:

serializeMethodCall('function_name', [{'data': ['elem1', 'elem2']}]);

This should be abstracted for a consumer and look instead like the following when this issue is closed:

serializeMethodCall('function_name', [['elem1', 'elem2']]);

Implement page for `cobbler replicate`

Is your feature request related to a problem? Please describe.
A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]

Describe the solution you'd like
A clear and concise description of what you want to happen.

Describe alternatives you've considered
A clear and concise description of any alternative solutions or features you've considered.

Additional context
Add any other context or screenshots about the feature request here.

After install and configure I cannot do login

ng serve --port 5900 --host 10.50.2.241 --disable-host-check --verbose
Warning: Running a server with --disable-host-check is a security risk. See https://medium.com/webpack/webpack-dev-server-middleware-security-issues-1489d950874a for more information.
⠋ Generating browser application bundles (phase: setup)...<i> [webpack-dev-server] [HPM] Proxy created: /cobbler_api  -> http://localhost:80/cobbler_api
<i> [webpack-dev-server] Project is running at:
<i> [webpack-dev-server] On Your Network (IPv4): http://10.50.2.241:5900/
<i> [webpack-dev-server] 404s will fallback to '/index.html'
⠙ Generating browser application bundles (phase: setup)...<t> [webpack.cache.PackFileCacheStrategy] restore cache container: 258.650087 ms
⠹ Generating browser application bundles (phase: building)...<t> [webpack.cache.PackFileCacheStrategy] check build dependencies: 2843.3190130000003 ms
<t> [webpack.cache.PackFileCacheStrategy] restore cache content metadata: 8.243684 ms
    [webpack.cache.PackFileCacheStrategy] starting to restore cache content 1 (7.99 MiB) because of request to: ProgressPlugin|counts
    [webpack.cache.PackFileCacheStrategy] starting to restore cache content 0 (94 MiB) because of request to: ResolverCachePlugin|normal|default|dependencyType=|esm|path=|/root/cobbler-web|request=|/root/cobbler-web/projects/cobbler-frontend/src/main.ts
    [webpack.cache.PackFileCacheStrategy] Deserialization of 'Compilation/modules|/root/cobbler-web/node_modules/@angular-devkit/build-angular/src/babel/webpack-loader.js??ruleSet[1].rules[2].use[0]!/root/cobbler-web/node_modules/@ngtools/webpack/src/ivy/index.js!/root/cobbler-web/projects/cobbler-frontend/src/app/app.component.ts': 2.370179 ms
<i> [webpack.cache.PackFileCacheStrategy] Deserialization of 'Compilation/modules|javascript/esm|/root/cobbler-web/node_modules/@angular-devkit/build-angular/src/babel/webpack-loader.js??ruleSet[1].rules[2].use[0]!/root/cobbler-web/node_modules/source-map-loader/dist/cjs.js??ruleSet[1].rules[3]!/root/cobbler-web/dist/cobbler-api/fesm2015/cobbler-api.mjs': 5.233122 ms
<t> [webpack.cache.PackFileCacheStrategy] restore cache content 1 (7.99 MiB): 57.74018 ms
⠸ Generating browser application bundles (phase: building)...    [webpack.cache.PackFileCacheStrategy] Deserialization of 'Compilation/modules|javascript/esm|/root/cobbler-web/node_modules/@angular-devkit/build-angular/src/babel/webpack-loader.js??ruleSet[1].rules[2].use[0]!/root/cobbler-web/node_modules/source-map-loader/dist/cjs.js??ruleSet[1].rules[3]!/root/cobbler-web/node_modules/@angular/platform-browser/fesm2015/platform-browser.mjs': 2.04796 ms
    [webpack.cache.PackFileCacheStrategy] Deserialization of 'Compilation/modules|javascript/esm|/root/cobbler-web/node_modules/@angular-devkit/build-angular/src/babel/webpack-loader.js??ruleSet[1].rules[2].use[0]!/root/cobbler-web/node_modules/source-map-loader/dist/cjs.js??ruleSet[1].rules[3]!/root/cobbler-web/node_modules/@angular/core/fesm2015/core.mjs': 2.473967 ms
    [webpack.cache.PackFileCacheStrategy] Deserialization of 'Compilation/modules|javascript/esm|/root/cobbler-web/node_modules/@angular-devkit/build-angular/src/babel/webpack-loader.js??ruleSet[1].rules[2].use[0]!/root/cobbler-web/node_modules/source-map-loader/dist/cjs.js??ruleSet[1].rules[3]!/root/cobbler-web/node_modules/@angular/common/fesm2015/common.mjs': 2.638353 ms
    [webpack.cache.PackFileCacheStrategy] Deserialization of 'Compilation/modules|javascript/esm|/root/cobbler-web/node_modules/@angular-devkit/build-angular/src/babel/webpack-loader.js??ruleSet[1].rules[2].use[0]!/root/cobbler-web/node_modules/source-map-loader/dist/cjs.js??ruleSet[1].rules[3]!/root/cobbler-web/node_modules/@angular/forms/fesm2015/forms.mjs': 3.429315 ms
<i> [webpack.cache.PackFileCacheStrategy] Deserialization of 'Compilation/modules|/root/cobbler-web/node_modules/@angular-devkit/build-angular/src/babel/webpack-loader.js??ruleSet[1].rules[2].use[0]!/root/cobbler-web/node_modules/source-map-loader/dist/cjs.js??ruleSet[1].rules[3]!/root/cobbler-web/node_modules/rxjs/_esm2015/internal/operators/concatAll.js': 13.198824 ms
<t> [webpack.cache.PackFileCacheStrategy] restore cache content 0 (94 MiB): 283.243328 ms
⠏ Generating browser application bundles (phase: emitting)...    [IdleFileCachePlugin] Initial cache was generated and cache will be persisted in 5s.
✔ Browser application bundle generation complete.
    [webpack-dev-middleware] Compilation finished
asset vendor.js 3.4 MiB {vendor} [emitted] (name: vendor) (id hint: defaultVendors) 1 related asset
asset main.js 389 KiB {main} [emitted] (name: main) 1 related asset
asset polyfills.js 300 KiB {polyfills} [emitted] (name: polyfills) 1 related asset
asset styles.css 202 KiB {styles} [emitted] (name: styles) 1 related asset
asset styles.js 173 KiB {styles} [emitted] (name: styles) 1 related asset
asset scripts.js 164 KiB {scripts} [emitted] (name: scripts) 1 related asset
asset assets/images/logo_img_light.png 12.1 KiB [emitted] [from: projects/cobbler-frontend/src/assets/images/logo_img_light.png] [copied]
asset assets/images/logo_img.png 11.9 KiB [emitted] [from: projects/cobbler-frontend/src/assets/images/logo_img.png] [copied]
asset assets/images/logo2.png 10.3 KiB [emitted] [from: projects/cobbler-frontend/src/assets/images/logo2.png] [copied]
asset runtime.js 6.53 KiB {runtime} [emitted] (name: runtime) 1 related asset
asset assets/images/userIN.png 5.59 KiB [emitted] [from: projects/cobbler-frontend/src/assets/images/userIN.png] [copied]
asset assets/images/userOUT.png 5.27 KiB [emitted] [from: projects/cobbler-frontend/src/assets/images/userOUT.png] [copied]
asset index.html 1.29 KiB [emitted]
asset favicon.ico 948 bytes [emitted] [from: projects/cobbler-frontend/src/favicon.ico] [copied]
Entrypoint main 3.78 MiB (5.71 MiB) = runtime.js 6.53 KiB vendor.js 3.4 MiB main.js 389 KiB 3 auxiliary assets
Entrypoint polyfills 307 KiB (371 KiB) = runtime.js 6.53 KiB polyfills.js 300 KiB 2 auxiliary assets
Entrypoint styles 381 KiB (737 KiB) = runtime.js 6.53 KiB styles.css 202 KiB styles.js 173 KiB 3 auxiliary assets
Entrypoint scripts 164 KiB (194 KiB) = scripts.js 1 auxiliary asset
chunk {main} (runtime: runtime) main.js (main) 280 KiB [initial]
  cached modules 280 KiB [cached] 43 modules
chunk {polyfills} (runtime: runtime) polyfills.js (polyfills) 285 KiB [initial]
  cached modules 285 KiB [cached] 22 modules
chunk {runtime} (runtime: runtime) runtime.js (runtime) 3.37 KiB [entry]
  cached modules 3.37 KiB [cached] 7 modules
chunk {scripts} scripts.js (scripts) [initial] [rendered]
chunk {styles} (runtime: runtime) styles.css, styles.js (styles) 158 KiB (javascript) 201 KiB (css/mini-extract) [initial]
  cached modules 158 KiB (javascript) 201 KiB (css/mini-extract) [cached] 22 modules
chunk {vendor} (runtime: runtime) vendor.js (vendor) (id hint: defaultVendors) 3.22 MiB [initial] split chunk (cache group: defaultVendors) (name: vendor)
  cached modules 3.22 MiB [cached] 105 modules


LOG from webpack.Compiler
<t> make hook: 985.684292 ms
<t> finish make hook: 0.100612 ms
<t> finish compilation: 469.190746 ms
<t> seal compilation: 120.137075 ms
<t> afterCompile hook: 0.092812 ms
<t> emitAssets: 20.529418 ms
<t> emitRecords: 0.08999 ms

LOG from webpack.Compilation
<t> compute affected modules: 0.002989 ms
<t> finish modules: 459.652473 ms
<t> report dependency errors and warnings: 9.498907 ms
<t> optimize dependencies: 8.686146 ms
<t> create chunks: 5.75823 ms
<t> compute affected modules with chunk graph: 0.00301 ms
<t> optimize: 12.257883 ms
    152 modules hashed, 0 from cache (0.55 variants per module in average)
<t> module hashing: 8.390298 ms
    0% code generated (0 generated, 152 from cache)
<t> code generation: 1.31403 ms
<t> runtime requirements.modules: 0.755237 ms
<t> runtime requirements.chunks: 1.587363 ms
<t> runtime requirements.entries: 1.993506 ms
<t> runtime requirements: 4.403287 ms
<t> hashing: initialize hash: 0.010265 ms
<t> hashing: sort chunks: 0.090977 ms
<t> hashing: hash runtime modules: 1.694495 ms
<t> hashing: hash chunks: 1.920426 ms
<t> hashing: hash digest: 0.020103 ms
<t> hashing: process full hash modules: 0.130717 ms
<t> hashing: 3.985916 ms
    0% code generated (0 generated, 7 from cache)
<t> record hash: 0.073776 ms
<t> module assets: 0.212453 ms
<t> create chunk assets: 1.888056 ms
<t> process assets: 71.157819 ms

LOG from webpack.ResolverCachePlugin
    0% really resolved (0 real resolves with 0 cached but invalid, 2253 cached valid, 0 concurrent)

LOG from webpack.FlagDependencyExportsPlugin
<t> restore cached provided exports: 3.887994 ms
<t> figure out provided exports: 4.999845 ms
    1% of exports of modules have been determined (10 no declared exports, 4 not cached, 0 flagged uncacheable, 263 from cache, 0 from mem cache, 0 additional calculations due to dependencies)
<t> store provided exports into cache: 0.007132 ms

LOG from webpack.SideEffectsFlagPlugin
<t> update dependencies: 8.376829 ms

LOG from webpack.buildChunkGraph
<t> visitModules: prepare: 3.687132 ms
<t> visitModules: visiting: 4.711681 ms
    437 queue items processed (192 blocks)
    0 chunk groups connected
    0 chunk groups processed for merging (0 module sets, 0 forked, 0 + 0 modules forked, 0 + 0 modules merged into fork, 0 resulting modules)
    0 chunk group info updated (0 already connected chunk groups reconnected)
<t> visitModules: 4.747782 ms
<t> connectChunkGroups: 0.003718 ms
<t> cleanup: 0.001745 ms

LOG from webpack.SplitChunksPlugin
<t> prepare: 0.036156 ms
<t> modules: 4.162253 ms
<t> queue: 0.390437 ms
<t> maxSize: 0.014438 ms

LOG from copy-webpack-plugin
    starting to add additional assets...
    starting to process a pattern from 'favicon.ico' using '/root/cobbler-web/projects/cobbler-frontend/src/' context
    starting to process a pattern from '**/*' using '/root/cobbler-web/projects/cobbler-frontend/src/assets/' context
    begin globbing '/root/cobbler-web/projects/cobbler-frontend/src/favicon.ico'...
    begin globbing '/root/cobbler-web/projects/cobbler-frontend/src/assets/**/*'...
    'to' option 'assets/' determinated as 'dir'
    determined that '/root/cobbler-web/projects/cobbler-frontend/src/assets/images/logo2.png' should write to 'assets/images/logo2.png'
    'to' option 'assets/' determinated as 'dir'
    determined that '/root/cobbler-web/projects/cobbler-frontend/src/assets/images/logo_img.png' should write to 'assets/images/logo_img.png'
    'to' option 'assets/' determinated as 'dir'
    determined that '/root/cobbler-web/projects/cobbler-frontend/src/assets/images/logo_img_light.png' should write to 'assets/images/logo_img_light.png'
    'to' option 'assets/' determinated as 'dir'
    determined that '/root/cobbler-web/projects/cobbler-frontend/src/assets/images/userIN.png' should write to 'assets/images/userIN.png'
    'to' option 'assets/' determinated as 'dir'
    determined that '/root/cobbler-web/projects/cobbler-frontend/src/assets/images/userOUT.png' should write to 'assets/images/userOUT.png'
    'to' option '.' determinated as 'dir'
    determined that '/root/cobbler-web/projects/cobbler-frontend/src/favicon.ico' should write to 'favicon.ico'
    finished to process a pattern from '**/*' using '/root/cobbler-web/projects/cobbler-frontend/src/assets/' context
    finished to process a pattern from 'favicon.ico' using '/root/cobbler-web/projects/cobbler-frontend/src' context
    writing 'favicon.ico' from '/root/cobbler-web/projects/cobbler-frontend/src/favicon.ico' to compilation assets...
    written 'favicon.ico' from '/root/cobbler-web/projects/cobbler-frontend/src/favicon.ico' to compilation assets
    writing 'assets/images/logo2.png' from '/root/cobbler-web/projects/cobbler-frontend/src/assets/images/logo2.png' to compilation assets...
    written 'assets/images/logo2.png' from '/root/cobbler-web/projects/cobbler-frontend/src/assets/images/logo2.png' to compilation assets
    writing 'assets/images/logo_img.png' from '/root/cobbler-web/projects/cobbler-frontend/src/assets/images/logo_img.png' to compilation assets...
    written 'assets/images/logo_img.png' from '/root/cobbler-web/projects/cobbler-frontend/src/assets/images/logo_img.png' to compilation assets
    writing 'assets/images/logo_img_light.png' from '/root/cobbler-web/projects/cobbler-frontend/src/assets/images/logo_img_light.png' to compilation assets...
    written 'assets/images/logo_img_light.png' from '/root/cobbler-web/projects/cobbler-frontend/src/assets/images/logo_img_light.png' to compilation assets
    writing 'assets/images/userIN.png' from '/root/cobbler-web/projects/cobbler-frontend/src/assets/images/userIN.png' to compilation assets...
    written 'assets/images/userIN.png' from '/root/cobbler-web/projects/cobbler-frontend/src/assets/images/userIN.png' to compilation assets
    writing 'assets/images/userOUT.png' from '/root/cobbler-web/projects/cobbler-frontend/src/assets/images/userOUT.png' to compilation assets...
    written 'assets/images/userOUT.png' from '/root/cobbler-web/projects/cobbler-frontend/src/assets/images/userOUT.png' to compilation assets
    finished to adding additional assets
+ 41 hidden lines

LOG from webpack.FileSystemInfo
    0 new snapshots created
    32% root snapshot uncached (808 / 2535)
    13% children snapshot uncached (283 / 2183)
    3392 entries tested
    File info in cache: 547 timestamps 0 hashes 0 timestamp hash combinations
    Directory info in cache: 0 timestamps 0 hashes 0 timestamp hash combinations
    Managed items info in cache: 101 items

2022-04-22 03:19:08: webpack 5.70.0 compiled in 4404 ms (71438736c0d7f3df)

Initial Chunk Files   | Names         |  Raw Size
vendor.js             | vendor        |   3.40 MB |
main.js               | main          | 388.76 kB |
styles.css, styles.js | styles        | 374.72 kB |
polyfills.js          | polyfills     | 300.00 kB |
scripts.js            | scripts       | 163.74 kB |
runtime.js            | runtime       |   6.53 kB |

| Initial Total |   4.60 MB

Build at: 2022-04-22T10:19:09.032Z - Hash: 71438736c0d7f3df - Time: 4475ms

** Angular Live Development Server is listening on 10.50.2.241:5900, open your browser on http://10.50.2.241:5900/ **


✔ Compiled successfully.
    [webpack-dev-server] [connect-history-api-fallback] Rewriting GET /index to /index.html

image

Many thanks

Container

As a: sysadmin

I want to: be able to deploy the Cobbler Web Frontend in a container based environment.

So that: The footprint of the application on the OS is minimal and I can easily move the service around in my infrastructure.

Shouldn't lose work when logged out

If I am using cobbler_web, say, editing a kickstart template, and hit Save and then walk away for a while and then come back and add more edits to the already open template, I should not lose them all because I have been timed out and am taken back to the login screen.

When this happens, after I have given the login screen my credentials, my edits should be applied, not lost. This is a common paradigm in the web world. That is, having to provide credentials again continues with the action that required them, it does not lose the results of the action.

Internationalization for Cobbler-Web

Is your feature request related to a problem? Please describe.

At the moment we hardcode English strings in the code. It should be possible to switch to a different language.

Describe the solution you'd like

The UI should be easily translatable to other languages via a service we use. The service should commit the translations automatically via a PR back to the main branch.

Describe alternatives you've considered

None

Additional context

None

Replace deprecated @angular/http

The project uses @angular/http which is deprecated according to npmjs. It should be replaced with @anguler/common.

As far as I can see, projects/cobbler-frontend/src/app/app.module.ts has to be adjusted for that, too.

Implement page for `cobbler reposync`

Is your feature request related to a problem? Please describe.
A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]

Describe the solution you'd like
A clear and concise description of what you want to happen.

Describe alternatives you've considered
A clear and concise description of any alternative solutions or features you've considered.

Additional context
Add any other context or screenshots about the feature request here.

Optimize UI for right-bound text

Is your feature request related to a problem? Please describe.

Not every language is written from left to right. We should consider this once resources for this are available.

Describe the solution you'd like

The UI should be able to handle a right to left and a left to right layout.

Describe alternatives you've considered

None

Additional context

None

Compability to older Cobbler versions

Is your feature request related to a problem? Please describe.

During development of the WebUI we found that it is not possible to provide a meaningful experience with older versions of Cobbler.

Describe the solution you'd like

After we have made this compatible with V3.4.0 (before it was released), we should try to have a look how easy it is to make this at least compatible with version 3.3.x.

Describe alternatives you've considered

None

Additional context

None.

Getting blank page

Hello. I am getting a blank page.
Here is what I get from telnet:

$ telnet 127.0.0.1 4200
Trying 127.0.0.1...
Connected to 127.0.0.1.
Escape character is '^]'.
GET / HTTP/1.1
Host: 127.0.0.1
Connection: close

HTTP/1.1 200 OK
X-Powered-By: Express
Access-Control-Allow-Origin: *
Content-Type: text/html; charset=utf-8
Accept-Ranges: bytes
Content-Length: 1283
ETag: W/"503-Zf1+jMqOzjnqRDOvItB+qXoZhl8"
Date: Thu, 21 Jul 2022 20:19:35 GMT
Connection: close

<!doctype html>
<html lang="en">
<head>
  <meta charset="utf-8">
  <title>Cobbler</title>
  <base href="/">
  <meta name="viewport" content="width=device-width, initial-scale=1">
  <meta name="description" content="Cobbler helps you manage your installations.">
  <meta name="theme-color" content="#317EFB"/>
  <link rel="shortcut icon" href="#">
  <link rel="preconnect" href="https://fonts.gstatic.com">
  <link href="https://fonts.googleapis.com/css2?family=Roboto:wght@300;400;500&amp;display=swap" rel="stylesheet">
  <link href="https://fonts.googleapis.com/icon?family=Material+Icons" rel="stylesheet">
  <link href="https://fonts.googleapis.com/css2?family=Raleway&amp;display=swap" rel="stylesheet">
<link rel="stylesheet" href="styles.css"></head>
<body class="mat-typography">

<app-root></app-root>

<script src="runtime.js" type="module"></script><script src="polyfills.js" type="module"></script><script src="styles.js" defer></script><script src="vendor.js" type="module"></script><script src="main.js" type="module"></script></body>

<!-- image assets attributions:
    Photo by fauxels from Pexels (group around the table)
    Photo by Pixabay from Pexels (Gears and Cogs)
    Photo by ready made from Pexels (mobile phone displaying recycle symbol)
    -->
</html>

Implement Landing Page

Is your feature request related to a problem? Please describe.

At the moment the landing page just states "Welcome". This is wasted space.

Describe the solution you'd like

I would like to show the following information:

  • Counters for the different item types
  • Quicklinks for:
    • Documentation of Cobbler and Cobbler-Web
    • Matrix Chat
  • Tiles that trigger Cobbler Actions directly

Describe alternatives you've considered

None

Additional context

None

Profile page

Is your feature request related to a problem? Please describe.

Currently it is not possible to show the user roles one has in Cobbler or other related information.

Describe the solution you'd like

The user should see on his profile the username and the roles he has.

Describe alternatives you've considered

None

Additional context

None

Enable prettier

Is your feature request related to a problem? Please describe.
As a developer, seeing the style of Cobbler-Web is currently chaotic.

Describe the solution you'd like
Enable prettier for the project via pre-commit.

Describe alternatives you've considered
None

Additional context
Of course prettier should be checked in the CI.

Cannot build cobbler-api - Cannot find module 'typescript-xmlrpc' or its corresponding type declarations.

Describe the bug
This is my first time trying to build this project and it is failing for me. It appears that there is a circular dependency that isn't mentioned in the readme.

To Reproduce
Steps to reproduce the behavior:

  1. npm install
  2. npm run build cobbler-api

Expected behavior
Build succeeds

Screenshots

cobbler-web (main)]$ npm run build cobbler-api
> [email protected] build
> ng build cobbler-api

Building Angular Package

------------------------------------------------------------------------------
Building entry point 'cobbler-api'
------------------------------------------------------------------------------
✖ Compiling with Angular sources in Ivy full compilation mode.
projects/cobbler-api/src/lib/cobbler-api.service.ts:4:92 - error TS2307: Cannot find module 'typescript-xmlrpc' or its corresponding type declarations.

4 import {AngularXmlrpcService, MethodResponse, MethodFault, XmlRpcStruct, XmlRpcArray} from 'typescript-xmlrpc';
                                                                                             ~~~~~~~~~~~~~~~~~~~

cobbler-web (main)]$ npm run build typescript-xmlrpc
> [email protected] build
> ng build typescript-xmlrpc

Building Angular Package

------------------------------------------------------------------------------
Building entry point 'typescript-xmlrpc'
------------------------------------------------------------------------------
✔ Compiling with Angular sources in Ivy full compilation mode.
✔ Generating FESM2020
✔ Generating FESM2015
✔ Copying assets
✔ Writing package manifest
✔ Built typescript-xmlrpc

------------------------------------------------------------------------------
Built Angular Package
 - from: /home/orion/cobbler-web/projects/typescript-xmlrpc
 - to:   /home/orion/cobbler-web/dist/typescript-xmlrpc
------------------------------------------------------------------------------

Build at: 2023-10-24T02:22:26.509Z - Time: 5114ms
cobbler-web (main)]$ ./node_modules/.bin/ng serve
✔ Browser application bundle generation complete.

Initial Chunk Files   | Names         |  Raw Size
vendor.js             | vendor        |   4.52 MB | 
polyfills.js          | polyfills     | 300.00 kB | 
styles.css, styles.js | styles        | 251.98 kB | 
main.js               | main          | 203.95 kB | 
runtime.js            | runtime       |   6.53 kB | 

                      | Initial Total |   5.27 MB

Build at: 2023-10-24T02:24:04.789Z - Hash: ff587ad2cf9fdea4 - Time: 18148ms

./projects/cobbler-frontend/src/app/app.module.ts:20:0-61 - Error: Module not found: Error: Can't resolve 'cobbler-api' in '/home/orion/cobbler-web/projects/cobbler-frontend/src/app'

./projects/cobbler-frontend/src/app/login/login.component.ts:5:0-42 - Error: Module not found: Error: Can't resolve 'cobbler-api' in '/home/orion/cobbler-web/projects/cobbler-frontend/src/app/login'

Error: projects/cobbler-frontend/src/app/app.module.ts:19:46 - error TS2307: Cannot find module 'cobbler-api' or its corresponding type declarations.

19 import {COBBLER_URL, cobblerUrlFactory} from 'cobbler-api';
                                                ~~~~~~~~~~~~~


Error: projects/cobbler-frontend/src/app/app.module.ts:58:5 - error NG6001: The class 'LogInFormComponent' is listed in the declarations of the NgModule 'AppModule', but is not a directive, a component, or a pipe. Either remove it from the NgModule's declarations, or add an appropriate Angular decorator.

58     LogInFormComponent,
       ~~~~~~~~~~~~~~~~~~

  projects/cobbler-frontend/src/app/login/login.component.ts:14:14
    14 export class LogInFormComponent {
                    ~~~~~~~~~~~~~~~~~~
    'LogInFormComponent' is declared here.


Error: projects/cobbler-frontend/src/app/app.module.ts:85:5 - error NG6001: The class 'NavbarComponent' is listed in the declarations of the NgModule 'AppModule', but is not a directive, a component, or a pipe. Either remove it from the NgModule's declarations, or add an appropriate Angular decorator.

85     NavbarComponent,
       ~~~~~~~~~~~~~~~

  projects/cobbler-frontend/src/app/navbar/navbar.component.ts:17:14
    17 export class NavbarComponent {
                    ~~~~~~~~~~~~~~~
    'NavbarComponent' is declared here.


Error: projects/cobbler-frontend/src/app/login/login.component.ts:4:46 - error TS2307: Cannot find module 'cobbler-api' or its corresponding type declarations.

4 import {CobblerApiService, COBBLER_URL} from 'cobbler-api';
                                               ~~~~~~~~~~~~~


Error: projects/cobbler-frontend/src/app/login/login.component.ts:43:13 - error NG2003: No suitable injection token for parameter 'cobblerApiService' of class 'LogInFormComponent'.
  Consider using the @Inject decorator to specify an injection token.

43     private cobblerApiService: CobblerApiService,
               ~~~~~~~~~~~~~~~~~

  projects/cobbler-frontend/src/app/login/login.component.ts:43:32
    43     private cobblerApiService: CobblerApiService,
                                      ~~~~~~~~~~~~~~~~~
    This type does not have a value, so it cannot be used as injection token.


Error: projects/cobbler-frontend/src/app/navbar/navbar.component.ts:6:33 - error TS2307: Cannot find module 'cobbler-api' or its corresponding type declarations.

6 import {CobblerApiService} from 'cobbler-api';
                                  ~~~~~~~~~~~~~


Error: projects/cobbler-frontend/src/app/navbar/navbar.component.ts:30:13 - error NG2003: No suitable injection token for parameter 'cobblerApiService' of class 'NavbarComponent'.
  Consider using the @Inject decorator to specify an injection token.

30     private cobblerApiService: CobblerApiService
               ~~~~~~~~~~~~~~~~~

  projects/cobbler-frontend/src/app/navbar/navbar.component.ts:30:32
    30     private cobblerApiService: CobblerApiService
                                      ~~~~~~~~~~~~~~~~~
    This type does not have a value, so it cannot be used as injection token.


Error: projects/cobbler-frontend/src/app/services/item-settings.service.ts:2:33 - error TS2307: Cannot find module 'cobbler-api' or its corresponding type declarations.

2 import {CobblerApiService} from 'cobbler-api';
                                  ~~~~~~~~~~~~~


Error: projects/cobbler-frontend/src/app/services/item-settings.service.ts:5:24 - error TS2307: Cannot find module 'cobbler-api' or its corresponding type declarations.

5 import {Settings} from 'cobbler-api';
                         ~~~~~~~~~~~~~




** Angular Live Development Server is listening on localhost:4200, open your browser on http://localhost:4200/ **


✖ Failed to compile.

Desktop (please complete the following information):

  • OS: Fedora
  • Version Rawhide

Additional context
If I run npm run build cobbler-api the build succeeds. Is the order of the commands reversed in the readme?

Table with configurable overview for Items

Is your feature request related to a problem? Please describe.

A simple list of Items is not enough to have a good overview. We should offer a table where the user can configure what fields he would like to preview.

Describe the solution you'd like

The problem here is how to store the user preferences as there is no need server-side to save this. Also tables are hard to display on mobile devices. Maybe we need different settings for different Item types and different clients?

TODO: Define how to do this.

The Table should also enable users to do a bulk delete for items.

Describe alternatives you've considered

None

Additional context

None

Detect CORS issues

Is your feature request related to a problem? Please describe.

At the moment if the server URL is not from the same host, it is possible that the browser is preventing access to the Cobbler API due to CORS even though we have set the header on server side to all access.

Describe the solution you'd like

TODO

Describe alternatives you've considered

None

Additional context

None

Implement page for `cobbler mkloaders`

Is your feature request related to a problem? Please describe.
A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]

Describe the solution you'd like
A clear and concise description of what you want to happen.

Describe alternatives you've considered
A clear and concise description of any alternative solutions or features you've considered.

Additional context
Add any other context or screenshots about the feature request here.

Cobbler Web

Is your feature request related to a problem? No

I would like to know if there is any progress with Cobbler-Web ? Is there a working version that can be used with cobbler 3.3.4 ?

Provide a detailed description of the proposed feature

In my Production environment we still use Cobbler 3.2 as our Juniors find it easy to add systems and assign to groups etc using Cobbler-web. Ansible can be used to get dynamic inventory from cobbler and puppet also works well. However its time for us to reinstall and upgrade all CentOS 7 servers, so would be good if we could upgrade cobbler and cobbler-web.

Alternatives you've considered

Moving away from cobbler is not ideal for us, but that is the only alternate is there is no GUI for cobbler

Additional information

Add target Cobbler server to login screen

As a user it would be good to be able to specify the Cobbler server to whom someone is logging into. Currently this is hardcoded in the code.


AC:

  • New field for the target Cobbler server is added.
  • Server is remembered on next login in case the requirement in the next line is checked.
  • There is a checkbox which is called "Remember Server" which decides whether the Server URL is remembered or not.

Implement page for `cobbler signature`

Is your feature request related to a problem? Please describe.
A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]

Describe the solution you'd like
A clear and concise description of what you want to happen.

Describe alternatives you've considered
A clear and concise description of any alternative solutions or features you've considered.

Additional context
Add any other context or screenshots about the feature request here.

Authentication is broken

Describe the bug

Authentication and Authorization is dropped if the slightest thing goes wrong.

To Reproduce

Steps to reproduce the behavior:

  1. Go to any page in the UI
  2. Hit "F5", open a second tab, ...
  3. See error

Expected behavior

  • I expect that the user is redirected if he is logged out due to inactivity.
  • I expect that the user is logged in if he refreshes the page.
  • I expect that the user is logged in if he opens a second tab.
  • I expect that the user is logged out in all tabs if he logs out in one.

Screenshots

None

Desktop (please complete the following information):

  • OS: All
  • Browser: All
  • Version: All

Smartphone (please complete the following information):

  • Device: All
  • OS: All
  • Browser: All
  • Version: All

Additional context

None

Implement page for `cobbler hardlink`

Is your feature request related to a problem? Please describe.
A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]

Describe the solution you'd like
A clear and concise description of what you want to happen.

Describe alternatives you've considered
A clear and concise description of any alternative solutions or features you've considered.

Additional context
Add any other context or screenshots about the feature request here.

Replace bootstrap with material design

Is your feature request related to a problem? Please describe.

At the moment we use a lot of manually coded bootstrap elements. This should be switched to the Material Design.

Describe the solution you'd like

The dependency to the Angular Material Design Library is already set but it is not used at the moment. The big advantage is that we can integrate this much better with Angular itself and manipulate the elements.

Describe alternatives you've considered

Sticking with Bootstrap: It certainly is an option because it is lightweight. However I have worked with Angular and the Material design before and I very much like the easier mobile integration. Reusing Material Components is a big plus for us since we can safe ourselves the time of maintaining custom components that we then reuse.

Additional context

None

Implement page for `cobbler validate-autoinstalls`

Is your feature request related to a problem? Please describe.
A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]

Describe the solution you'd like
A clear and concise description of what you want to happen.

Describe alternatives you've considered
A clear and concise description of any alternative solutions or features you've considered.

Additional context
Add any other context or screenshots about the feature request here.

Docs: Explain development setup

Currently you need a running Cobbler. This can be easily achieved with a Docker Instance of Cobbler. When PR cobbler/cobbler#2599 is done I can add simplified instructions for this to our documentation so other contributors may develop easier with the project.

Implement page for `cobbler check`

Is your feature request related to a problem? Please describe.

At the moment the results of cobbler check are not visible on the frontend. This should be fixed.

Describe the solution you'd like

The user should see the output of cobbler check.

Describe alternatives you've considered

None

Additional context

None

Frontend should disable functionallity that is not availble to the user role

Is your feature request related to a problem? Please describe.

At the moment the UI assumes that you have complete control over all functionality of Cobbler. This may not be the case in all environments.

Describe the solution you'd like

Functionality that is not available to the user should be displayed but disabled. Hovering over the button should explain why this button is disabled.

Describe alternatives you've considered

None

Additional context

None

Extend collapsible navbar

Is your feature request related to a problem? Please describe.

Our navbar at the moment is a dropdown from the logo. This should be changed to a navbar that takes the complete left side.

Describe the solution you'd like

The navbar should become a navigation drawer on the left side. The hamburger menu button should close the menu and chould be located to the left side of the Cobbler logo.

Describe alternatives you've considered

None

Additional context

None

Dropdown menu for user profile

Is your feature request related to a problem? Please describe.

Currently there is only a Logout Text Button, there should be a dropdown instead.

Describe the solution you'd like

The dropdown should have two items:

  • Profile
  • Logout

Describe alternatives you've considered

None

Additional context

None

Automate the release process

Is your feature request related to a problem? Please describe.

We don't want to manually release Cobbler-Web.

Describe the solution you'd like

We do want to create a GitHub release for every tag we have. The changelog should be autogenerated.

Describe alternatives you've considered

None

Additional context

None

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.