Giter Club home page Giter Club logo

wiz's Introduction

wiz

Notice: This project is under heavy development and is not recommended for production or external use. Docs are written as reference for the future direction of the project. Docs, subsystems, APIs, etc will likely change significantly until the project reaches 1.0.

Development

Make sure you have a local Go toolchain installed.

Additionally, you should run:

git config --local core.hooksPath .githooks/

to set git to use the project's provided git hooks.

Building/Installing

Simply run

go install -tags=jsoniter

wiz's People

Contributors

alexkreidler avatar

Stargazers

 avatar  avatar  avatar

Watchers

 avatar  avatar

Forkers

fossabot

wiz's Issues

Minor updates to the Manager

  1. Add a -kor -kill option to all manager commands that kill and restart the manager if is running
  2. Track the PID of the manager process in wix/default.yaml and check in maybeStartManager
  3. Move the generated pipeline into the Manager's State pipelines map so it gets serialized. Don't serialize Graph
  4. Extract UUID generation to the utils package so we can replace and slot with any set of ID libraries or even abstract the GenID function to later call a ID service (probably in the Manager API) so it has sole ID generation responsibilities. However, the design of our current UID is fine for distributed use. Also, we could mock the GenID function during testing to make tests more understandable with basic IDs like procID-1 etc.

Move to more k8s-like backend API design

Don't just move for complexity.

Abstract the simple ideas in k8s into Go library, then use that as base.

Needs strong resource support and table views to describe them.
Support actions and generic verbs

Build out Wiz Manager and setting up the initial configuration of the processors.

Should be able to:

  1. when called with pipeline spec
  2. create the pipeline, configure all processors, and if in local mode, enable auto-forwarding
  3. if in local mode, write basic state data to a file

Add basic functionality under
wiz tasks or wiz pipelines
create, get, delete, describe? - kubectl like API for managing them

Should be able to create a pipeline from a standalone pipeline file.

Also, create one when called via wiz get <package> as in #2

Setup CI

Setup CI so I get automatic coverage reports + tests are run automatically

Review all code and APIs to convert from CrapCode

  1. check for "first-time readability"
  2. centralize the docs so that they aren't scattered and necessary implementation details are in the code dirs while main user-facing/guide docs are in the docs/ dir
  3. Have a friend or someone else try to read and review the code after this. Ask for questions, suggestions etc on APIs + design, readability, understandability of functions/breaking up even more, etc

Add additional features to package mgmt v1

  • Wait on package install pipeline, don't quit CLI until it completes.
    • show error on exit, data on success
  • view running pipelines
  • optionally, as manager option, save JSON/raw output of pipeline to file as well as using Filesystem API
  • build out FS API to request files? nah, then external impls of ProcAPI will have a dependency.
    • assume FS API is setup above orchestration env layer
    • for Wiz executor though could explicitly track and allocate file locations

Build out unified CLI system for interacting with resources

We need a Kubectl-like API to interact with:

  • Managers - a daemon or tool to manage pipelines
  • Executors - an environment which runs the Wiz Executor or other processors
  • Pipelines - the logical pipeline, a graph of connected processors
  • Processors - an individual operation which processes data
  • Registries - an endpoint/API/server that contains a set of packages
  • Package - a logical Wiz Package

all of these should be able to be created, deleted, viewed, and possibly modified via the CLI.

Some of the commands may be aliased for ease of use but they should all have their own sections.

With Kubectl they chose get <resource>, create <resource> because each resource is just an HTTP endpoint/object that has the same CRUD API on the API server.
Docker however chose <resource> create etc because each resource is managed differently

Since our resources are heterogenous and may be interacting with different client API libraries, API specs, and endpoints, we should be careful about this. Additionally, some resources may not support all operations.

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.