Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Support maverick configuration load / save / edit #119

Open
SamuelDudley opened this issue Mar 21, 2019 · 8 comments
Open

Support maverick configuration load / save / edit #119

SamuelDudley opened this issue Mar 21, 2019 · 8 comments
Assignees
Labels
enhancement New feature or request
Milestone

Comments

@SamuelDudley
Copy link
Member

Maverick configuration files are JSON

Read configuration files and expose the content via graphql as name:value pairs (similar to parameters)

On save from -web archive old file and write out new one
Expose diff of JSON via graphql

@SamuelDudley SamuelDudley added the enhancement New feature or request label Mar 21, 2019
@SamuelDudley SamuelDudley self-assigned this Mar 21, 2019
@SamuelDudley
Copy link
Member Author

-web related but the editor from vscode can be embedded for editing json files...
https://www.npmjs.com/package/monaco-editor-vue

@SamuelDudley
Copy link
Member Author

https://github.com/Microsoft/monaco-editor/blob/master/monaco.d.ts#L5853

Possible to allow json comments

@SamuelDudley
Copy link
Member Author

Diffs are also possible to display. Just need to load the contents of both files.

https://microsoft.github.io/monaco-editor/playground.html#creating-the-diffeditor-multi-line-example

@SamuelDudley
Copy link
Member Author

@SamuelDudley SamuelDudley pinned this issue Jan 23, 2020
@SamuelDudley SamuelDudley added this to the 1.2 milestone Feb 2, 2020
@SamuelDudley
Copy link
Member Author

use pyinotify to watch for file changes... if not available (cloud9, vscode has taken all the file watchers) fall back to polling for changes (as per the config file of -api)

@SamuelDudley
Copy link
Member Author

SamuelDudley commented Mar 15, 2020

  1. need a graphql interface for writing individual settings. (C)
  2. need a graphql interface for reading individual settings. (R)
  3. individual settings that already exist will be overwritten via 1 (U)
  4. need a unique message for deleting settings (D)
  5. need a graphql interface for reading all settings back as a list of settings.
  6. need a graphql interface for writing an entire file from a the browser with md5 checks (power user mode)
  7. need a graphql interface for reading all available settings and supported values. (like param meta)
  8. need graphql interface for diff. changed, added, deleted
  9. need graphql interface for saving files / database entry
  10. need graphql interface for loading files / database entry
  11. need graphql interface for deleting files / database entry
  12. need graphql interface for exposing available saved files / database entries

@SamuelDudley
Copy link
Member Author

SamuelDudley commented Mar 15, 2020

on -api startup snapshot config files and check against what is stored in the database. If they are the same do nothing, otherwise create a new version revision.

While -api is active, changes to the config file will not create a new version in the database unless it is requested from -web or a maverick-configure is run. When -api / system restarts, any non-captured changes will create a new entry in the database.

It sounds a lot like git... consider using a pure python git interface to manage changes https://github.com/dulwich/dulwich

@SamuelDudley
Copy link
Member Author

SamuelDudley commented Mar 16, 2020

Note the following is a hierarchy with the top files overwriting any config set in the files below.
read the hostname, environment (~/config/maverick/maverick-environment.conf) and branch (~/config/maverick/maverick-branch.conf)

~/software/maverick/conf/hiera.yaml

mav@dev:~/software/maverick/conf$ cat hiera.yaml 
---
version: 5
defaults:
  datadir: /srv/maverick
  data_hash: json_data
hierarchy:
  - name: "localconf"
    path: "config/maverick/localconf.json"
  - name: "Local node files"
    path: "config/maverick/local-nodes/%{::hostname}.json"
  - name: "Environment node files"
    path: "software/maverick/conf/environments/%{::environment}/nodes/%{::hostname}"
  - name: "Environment defaults"
    path: "software/maverick/conf/environments/%{::environment}/defaults.json"
  - name: "Sample node files"
    path: "software/maverick/conf/sample-nodes/%{::hostname}.json"
  - name: "Maverick defaults"
    path: "software/maverick/conf/maverick-defaults.json"
  - name: "Puppet defaults"
    path: "software/maverick/conf/puppet-defaults.json"

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request
Projects
None yet
Development

No branches or pull requests

1 participant