GithubHelp home page GithubHelp logo

noobaa / noobaa-core Goto Github PK

View Code? Open in Web Editor NEW
254.0 17.0 75.0 68.03 MB

Object-storage Transformer server for Node.js 🦾🤖🦾 (s3 => file / s3 / azure / google / erasure-code / tiering / merge / cache / logging / replicate / custom...)

Home Page: https://www.noobaa.io

License: Apache License 2.0

Shell 1.81% JavaScript 88.91% Python 0.18% C++ 4.87% Go 0.19% C 3.33% Dockerfile 0.25% Makefile 0.29% Groovy 0.10% PLpgSQL 0.08%
noobaa hybrid multi-cloud data storage s3 tiering mirroring nodejs

noobaa-core's Introduction

slack noobaa-core noobaa-operator


NooBaa is a data service for cloud environments, providing S3 object-store interface with flexible tiering, mirroring, and spread placement policies, over any storage resource that allows GET/PUT including S3, GCS, Azure Blob, Filesystems, etc.

NooBaa simplifies data administration by connecting to any of the storage silos from private or public clouds, and providing a single scalable data service, using the same S3 API and management tools. NooBaa allows full control over data placement, letting you place data based on security, strategy and cost considerations, in the granularity of an application.


Deploy to Kubernetes

To deploy NooBaa, we recommend using NooBaa CLI. Follow the instructions in https://github.com/noobaa/noobaa-operator#noobaa-operator

Once NooBaa CLI installed, simply Install the operator and noobaa with:

./noobaa install

The install output includes S3 service endpoint and credentials, as well as web management console address with credentials.

Getting this information is always available with:

./noobaa status

Remove NooBaa deployment can be done with:

./noobaa uninstall

Tutorial

YOUTUBE

(Click the image or the link to open the noobaa install demo on YouTube)

Help

  • Website
  • Wiki - articles for hackers
  • Docs - the new docs site is almost ready...

Communicate

Contribute

License

Apache License 2.0, see LICENSE

noobaa-core's People

Contributors

achouhan09 avatar alphaprinz avatar aspandey avatar baum avatar dannyzaken avatar dependabot[bot] avatar eroolgui avatar fitari avatar guymguym avatar igorpick avatar jackyalbo avatar jeniawhite avatar kfir-payne avatar liranmauda avatar nadavmiz avatar naveenpaul1 avatar nb-ohad avatar neon-white avatar nimrod-becker avatar nimrodgeva avatar nixpanic avatar paulxuzhang avatar quintinbecker avatar romayalon avatar sergii-karpiak avatar shirady avatar tamireran avatar tangledbytes avatar vh05 avatar yaelal 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  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

noobaa-core's Issues

Streaming vs downloading and playing

  1. Small files (under 10MB) should be downloaded and played.
  2. Larger files should behave as follows:
    1. If the file is not streamable/previewable download it.
    2. If there is a configured REST server, stream/preview via the REST server.
    3. In all other cases, download.

disconnecting from signalling server cause 100% cpu

simply start an agent and disconnect from the network

The result is a massive amount of messages like this and 100% cpu

INFO:socket_host_udp.cc(298)] sendto() has failed twice returning a transient error. Dropping the packet

problem writing to activity log on node.create

TypeError: Cannot read property 'name' of undefined
at transformer.js:149
at arrayFilter (tv4.js:994)
at Function.filter (nb_api.js:290)
at transformer.js:149
at angular.js:13189
at l.$get.l.$eval (angular.js:14401)
at l.$get.l.$digest (angular.js:14217)
at angular.js:14440
at e (angular.js:4905)
at angular.js:5285
transformer.js:149 RELOAD SYSTEM FAILED TypeError: Cannot read property 'name' of undefined {stack: "TypeError: Cannot read property 'name' of undefine…/ajax/libs/angularjs/1.3.14/angular.min.js:44:112", message: "Cannot read property 'name' of undefined"}message: "Cannot read property 'name' of undefined"stack: "TypeError: Cannot read property 'name' of undefined↵ at http://127.0.0.1:5001/public/js/index.js:90943:64↵ at arrayFilter (http://127.0.0.1:5001/public/js/index.js:67847:13)↵ at Function.filter (http://127.0.0.1:5001/public/js/index.js:72070:14)↵ at http://127.0.0.1:5001/public/js/index.js:90928:45↵ at http://ajax.googleapis.com/ajax/libs/angularjs/1.3.14/angular.min.js:112:20↵ at l.$get.l.$eval (http://ajax.googleapis.com/ajax/libs/angularjs/1.3.14/angular.min.js:125:305)↵ at l.$get.l.$digest (http://ajax.googleapis.com/ajax/libs/angularjs/1.3.14/angular.min.js:122:398)↵ at http://ajax.googleapis.com/ajax/libs/angularjs/1.3.14/angular.min.js:125:392↵ at e (http://ajax.googleapis.com/ajax/libs/angularjs/1.3.14/angular.min.js:40:74)↵ at http://ajax.googleapis.com/ajax/libs/angularjs/1.3.14/angular.min.js:44:112"get stack: function () { [native code] }set stack: function () { [native code] }proto: Errortransformer.js:149 (anonymous function)angular.js:13189 (anonymous function)angular.js:14401 $get.l.$evalangular.js:14217 $get.l.$digestangular.js:14440 (anonymous function)angular.js:4905 eangular.js:5285 (anonymous function)

in nb_api.js upon

case 'node.create':
l.category = 'nodes';
l.text = 'Added node ' + l.node.name;
break;

Race: delete_object_mapping & allocate_object_parts

A race can occur between delete object mappings and allocate object parts. In a case of a chunk which is about to be deleted, but equals in hash to a chunk being uploaded, we might use that chunk in the allocation but then delete it..

We can either protect it by locking the specific chunk, or by marking it as delete pending and waiting for the deletion for some interval (checking in the allocate if the chunk is not delete pending).
Choosing the second solution we should be careful to return the RPC context and not block it on the deletion pend.

User facing events should be issued via a framwork

Currently some events are issued to the event log.
Some issues pop up a red error message.
Some don't show anything.

Suggestion:
To force all messages to be issued vie a single framework that will get an input and will be responsible to propagate to the right place/s.

Not all DB queries handle the deleted != NULL situations

Currently our DB objects are not really deleted, merely marked as deleted.
In several of our queries we don't verify if the objects we received are marked as deleted (or don't filter non deleted).

We should fix this flows as they will cause us to crash.

RPC retries should only apply on transient errors and not persistent errors

currently we don't differentiate the two types of errors, so the RPC code doesn't have the information, so we should decide on a clear separation of errors for transient vs. persistent.

transient errors could be - network issue, resource temporarily unavailable (DB, REDIS, HEROKU).

with ICE with multiplexing we should send back an indication of in-progress for requests we are processing, so that we won't retry and just add more pressure.

File parts should be tabular

Currently expected 3 in a line (based on string length for alignment).
Result is not aligned. Need to align all lines (including sublines)

image

UI Breadcrumbs issue

Breadcrumbs-
*When entering a list (nodes list for example) there should be a way back (should add breadcrumb - nodes/ nodes list and/or add a back option). same issue on other lists.
*If "system"="overview" we should write overview/ home on bread crumbs

  • The Resources page is a little confusing since the user presses "nodes" on the menu but suddenly there is another step on the breadcrumb (System / Resources /Nodes). Same thing on files.

activity log error on obj.uploaded

case 'obj.uploaded':
l.category = 'files';
l.text = 'Upload completed ' + l.obj.key;
break;

i.obj is undefined:

TypeError: Cannot read property 'key' of undefined
at transformer.js:149
at arrayFilter (tv4.js:965)
at Function.filter (nb_api.js:231)
at transformer.js:149
at angular.js:13189
at l.$get.l.$eval (angular.js:14401)
at l.$get.l.$digest (angular.js:14217)
at angular.js:14440
at e (angular.js:4905)
at angular.js:5285

RELOAD SYSTEM FAILED TypeError: Cannot read property 'key' of undefined {stack: (...), message: "Cannot read property 'key' of undefined"

Rename tasks and windows services

Suggestions:
Service: NooBaa_device_manager
nssm.exe: NooBaa_Agnet_wd
node.exe: NooBaa_Agnet

Severity 3
This can include documentation which was incomplete or incorrect, making it difficult to know how to use a task.

Interactive installation should provide some feedback

I installed the agent manually.
After I doubleclicked it in the windows explorer I got only a single indication - the windows certificate issue.
After it's done - no success/failure indication.

Severity explanation:
Severity 3
The task that you were attempting to use behaved in a manner which is incorrect and/or unexpected, or presented misleading or confusing information.

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.