Skip to content

directory structure

Nimrod Becker edited this page May 6, 2019 · 6 revisions

NooBaa Directory Structure Explained

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

gocode

src

The src directory is broken down according to functionality, its main directories are

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.

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.

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.

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.

hosted_agents

hosted agents are the components which handle using API based resources (S3, GCP, Azure blob, etc.)

lambda_funcs

A few exmaples for existing lambda functions

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.

rpc

NooBaa's RPC layer implemenetation with its various transport options (tpc, websocket, n2n, etc.)

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.

server
test

NooBaa's tests are located in this directory.

tools

Various tools (statistics, performance, analysis, etc.). See Developers Guide for more explanation on the NooBaa tests system.

upgrade

Upgrade server and flow.

utils

Various utils libraries used by the NooBaa components.

Clone this wiki locally