-
Notifications
You must be signed in to change notification settings - Fork 86
directory structure
This guide should serve as a general directory structure reference in the NooBaa project.
In general, NooBaa contains a few deliverables each with its own directory structure. The top-level directories in the project are:
- frontend - Contains the NooBaa frontend component, see frontend
- gocode - Contains go code for the NooBaa operator and various CLI utilities, see gocode
- src - Contains the Backend (server), agents (storage and endpoints), deployment code and tests code, see src
The frontend component provides the GUI for the NooBaa system. Most of the code resides in the app folder, while assets and scaffolding provide ...
The src directory is broken down according to functionality, its main directories are
This directory contains the agent (daemon) code. The agent is a container which can run several functions - storage, s3 endpoint, and functions endpoint. This directory contains the container code, the storage and functions endpoint.
This directory contains the jsons which describe the NooBaa RPC API. They are broken according to the "server" or component which handles their logic. So bucket_api for example would be implemented by the bucket_server component and will handle bucket creation, policy changes on a bucket, bucket data retrieval, etc.
deploy is a directory which mainly contains scripts and files related to various deployments of NooBaa. So dockerfile, RPM build, virtual appliance build, mongo schema upgrades, etc. can be found in this directory.
endpoint contains the code the various endpoint NooBaa support. In this directory, you can find the code to the s3 endpoint, blob endpoint, and lambda functions endpoint.
hosted agents are the components which handle using API based resources (S3, GCP, Azure blob, etc.)
A few exmaples for existing lambda functions
This directory holds the native code implementation for a few components in the NooBaa system. In here the implementations for the NooBaa chunk encryption, inline dedup, agents n2n, third-party libraries, and various utilities can be found.
NooBaa's RPC layer implemenetation with its various transport options (tpc, websocket, n2n, etc.)
Serves as an API layer which runs on top of NooBaa's server, receives OPs from the various endpoints and prepare the requests for the internal NooBaa components.
NooBaa's tests are located in this directory.
Various tools (statistics, performance, analysis, etc.). See Developers Guide for more explanation on the NooBaa tests system.
Upgrade server and flow.
Various utils libraries used by the NooBaa components.