Giter Club home page Giter Club logo

knots's People

Contributors

bryonjacob avatar gbolly avatar kndungu avatar laconc avatar rflprr avatar

Stargazers

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

Watchers

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

knots's Issues

KNOTS not running "Wake up, Docker"

Docker Desktop for Windows is installed, when starting KNOTS it only says "Wake up Docker".
When opening a commandline and running "docker -v" it says "Docker version 18.09.3, build 774a1f4"
What am i doing wrong?

Any ideas? :)

Support for local taps?

How hard would it be to support local taps, or other taps directly from the github source?

right now I imagine I can create and host a docker image of my tap following some spec, and then adding a new record here:

const taps = [
{
name: 'Adwords',
tapKey: 'tap-adwords',
tapImage: 'dataworld/tap-adwords:1.9.1',
repo: 'https://github.com/singer-io/tap-adwords',
specImplementation: {
usesCatalogArg: false,
usesReplication: false
}
},
{
name: 'Amazon S3',
tapKey: 'tap-s3-csv',
tapImage: 'dataworld/tap-s3-csv:0.0.3',
repo: 'https://github.com/singer-io/tap-s3-csv',
specImplementation: {
usesCatalogArg: false,
dockerParameters: `-v ${homePath}/.aws:/root/.aws`
}
},
{
name: 'Facebook',
tapKey: 'tap-facebook',
tapImage: 'dataworld/tap-facebook:1.5.9',
repo: 'https://github.com/singer-io/tap-facebook',
specImplementation: {
usesMetadata: {
selected: false,
replication_key: false,
replication_method: false
},
usesCatalogArg: false,
usesReplication: false
}
},
{
name: 'MySQL',
tapKey: 'tap-mysql',
tapImage: 'dataworld/tap-mysql:1.9.23',
repo: 'https://github.com/singer-io/tap-mysql',
specImplementation: {
usesMetadata: {
selected: false
},
usesLogBaseRepMethod: true
}
},
{
name: 'Postgres',
tapKey: 'tap-postgres',
tapImage: 'dataworld/tap-postgres:0.0.42',
repo: 'https://github.com/singer-io/tap-postgres',
specImplementation: {
usesLogBaseRepMethod: true
}
},
{
name: 'Redshift',
tapKey: 'tap-redshift',
tapImage: 'dataworld/tap-redshift:1.0.0b9',
repo: 'https://github.com/datadotworld/tap-redshift'
},
{
name: 'Salesforce',
tapKey: 'tap-salesforce',
tapImage: 'dataworld/tap-salesforce:1.4.20',
repo: 'https://github.com/singer-io/tap-salesforce',
specImplementation: {
usesCatalogArg: false
}
}
];

I'd love to be able to add to these defaults at runtime and have them stored somewhere on my fs so I can use custom taps, and also show me instructions on how to build a KNOTS ready docker image from my tap ๐Ÿ˜„

Views: (data.world) Target configuration

Set up view for data.world target configuration.

Acceptance criteria:

  • Displays form including API token and dataset fields
  • Allows API token to be set via data.world login (OAuth)
  • Displays the user's datasets in a drop-down field
  • Validates form submission

Architecture: Model/Knot structure

Design and implement in-memory model for a knot.

Acceptance criteria:

  • Reusable Node.js code
  • Represents tap and target selection, config(s), catalog, and state

Views: (RedShift) Tap execution/discovery

Set up view for RedShift tap discovery execution.

Acceptance criteria:

  • Displays loader image and message during execution
  • Displays execution logs
  • Displays execution errors

Views: (RedShift) Catalog configuration

Set up view for catalog configuration.

Acceptance criteria:

  • Displays all streams in a table
  • Allows streams to be selected
  • Allows a replication key to be selected for each selected stream
  • Displays possible replication keys for each stream in a drop-down menu
  • Allows start date to be selected
  • Validates form submission

Architecture: Define downloadable and executable knot

Users should be able to download a .zip file containing a Makefile and all the necessary configuration for running syncs outside of the Knot app.

Acceptance criteria:

  • Makefile should include install, sync and full-sync targets

Project setup: Electron app

Set project up as an Electron app.

Acceptance criteria:

  • Standard directory structure
  • Boilerplate code
  • Scripts to build and run
  • Basic documentation in CONTRIBUTING.md

Integration: data.world dataset selection

Allow user to select from existing datasets.

Acceptance criteria:

  • Retrieves datasets the user has write access to
  • Updates view with appropriate content in dataset dropdown

Audit/improve Flow usage

Today, we don't seem to be using Flow correctly. There is room to reuse types more often and lots of FlowFixMe and FlowIssue that require attention.

Design proposal: Plug-in architecture

Today, introducing a new tap or target requires that we touch a number of different files.

I'd like us to improve that so that new taps or target can be introduced with the addition of a single module/file. Think about the lifecycle and what methods/functions that module needs to implement in order to properly describe itself (metadata), handle configuration (required, optional and default params) and render the various UI components that we require (selection tile, config form, etc).

Once implemented, this should be properly documented for the benefit of other project contributors (CONTRIBUTING.md).

IMPORTANT: This starts with a design proposal & review

Installation instructions are misleading

The README states that you can download a .dmg file and use that to install this app, but the link provided just downloads a zip of the repo. How can I actually install this without having to package it myself?

Architecture: Process execution

Define and implement a mechanism for executing containerized taps and targets.

Acceptance criteria:

  • Reusable Node.js code
  • Runs tap in discovery mode
  • Runs tap | target
  • Properly routes std IN, OUT and ERR
  • Unit tested

Facebook sdk deprecated

I cannot make tap-facebook to work cause sdk is deprecated needs to be updated to 3.2. (C.F: screenshot)

capture d ecran 2019-01-14 a 14 03 06

Tap Adwords Refresh token error

When I try to setup a Tap for Adwords when I click the generate access token for the refresh token i get a redirect uri error/mismatch.

Do you have any idea on how to fix this ?

capture d ecran 2019-01-12 a 17 37 53

Architecture: Docker dependency detection + installation

Define and implement a mechanism for detecting and installing required Docker images on demand.

Acceptance criteria:

  • Reusable Node.js code
  • Detects if Docker and docker compose are installed
  • Detects if required Docker image is installed (taking version into account)
  • Installs Docker image (taking version into account)
  • Unit tested

Views: (RedShift) Tap installation

Set up view for tap installation.

Acceptance criteria:

  • Displays loader image & message during installation
  • Displays installation errors

When running the Makefile, taps that use the catalog arg fail

I have a knot that uses the postgres tap and the data.world target. It runs great from KNOTS but when I generate an export package and attempt to sync from the Makefile, it fails. After a little digging, it appears that the postgres tap requires the use of the --catalog argument, but Makefiles will always use --properties; reference. The KNOTS sync command is able to handle such a situation; reference.

Integration: Basic error handling

Initially, error handling should be limited to displaying an error message and allowing users to retry or revisit configuration steps.

Views: Knot execution

Set up knot execution screen.

Acceptance criteria:

  • Displays basic info about tap and target (e.g. logos)
  • Displays run button
  • Displays execution logs for tap and target separately
  • Displays execution errors
  • Displays success message

Refactor file operations

The way we have implemented file operations makes the app prone to reoccurring bugs. This applies to any file in a knot, but let's take catalog.json as an example, at any point it can live in ./, ./configs, ./{knot}/tap or ./knots/{knot}/tap (also, what ./ means, changes between dev and prod builds). Instead, I'd like us to change this so:

  1. If a knot is saved, it lives in ./knots/{knot}
  2. Knots being edited live in ./tmp/{uuid}
  3. Knots being run stay in ./knots/{knot}
  4. ./tmp is garbage collected aggressively (e.g. when app is opened/closed, when wizard is entered/exited, etc)

Integration: Forwards and backwards navigation

Allow users to move forwards and backwards through the knot configuration flow.

Acceptance criteria:

  • Saves state on forwards navigation (taking form validation into account)
  • Restores view state on backwards navigation

Project setup: Dockerfiles

Define how Dockerfiles will be managed and images will be built, and implement that for tap-redshift and target-datadotworld.

Acceptance criteria:

  • Standard directory structure
  • Dockerfiles for tap-redshift and target-datadotworld
  • Basic documentation in CONTRIBUTING.md

Add support for LOG_BASED replication

Certain taps (mysql, postgres, oracle) support LOG_BASED as the replication_method, in addition to INCREMENTAL and FULL_TABLE. We should study it to understand how the best way to introduce support for it.

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.