-
Notifications
You must be signed in to change notification settings - Fork 80
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
frontend
The frontend component provides the GUI for the NooBaa system. Most of the code resides in the app folder, while assets and scaffolding provide ...
frontend/app
frontend/assets
frontend/scaffolding
- src/noobaa-operator - Contains NooBaa operator code
src
The src directory is broken down according to functionality, its main directories are
src/agent
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.
src/api
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.
src/deploy
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.
src/endpoint
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.
src/hosted_agents
hosted agents are the components which handle using API based resources (S3, GCP, Azure blob, etc.)
src/lambda_funcs
A few examples for existing lambda functions
src/native
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.
src/rpc
NooBaa's RPC layer implementation with its various transport options (TPC, WebSocket, n2n, etc.)
src/sdk
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.
src/server
This directory contains all the backend services of NooBaa. Content is broken down according to functionality
src/server/analytic_services
Activity logs, Bucket statistics, IO statistics, Prometheus integration, and system usage.
src/server/bg_services
Background services of the system: blocks reclaimer, cluster heartbeat, db cleaner, server monitor, stats collector etc.
src/server/common_services
Auth server and Debug server.
src/server/func_services
Functions (lambda) server
src/server/mongo_services
mongo monitor
src/server/node_services
Handling the Agents (Daemon) components in the system: nodes monitor, nodes aggregator, nodes client etc.
src/server/notifications
Alerts server, Events server and notifications dispatcher.
src/server/object_services
NooBaa internal mapping services. Write/Read/Rebuild and the object server
src/server/system_services
Various components in charge of handling configuration entities in the system. For example, bucket server, tier server, pool server etc.
src/server/utils
Various server specific utils.
src/test
NooBaa's tests are located in this directory.
src/tools
Various tools (statistics, performance, analysis, etc.). See Developers Guide for more explanation on the NooBaa tests system.
src/upgrade
Upgrade server and flow.
src/utils
Various utils libraries used by the NooBaa components.