ceph/romana

Name: romana

Owner: Ceph

Description: null

Created: 2015-03-02 21:41:50.0

Updated: 2018-05-16 04:20:13.0

Pushed: 2016-09-21 03:49:33.0

Homepage: null

Size: 29767

Language: JavaScript

GitHub Committers

UserMost Recent Commit# Commits

Other Committers

UserEmailMost Recent Commit# Commits

README

Ceph Manager Clients

Screenshots

summary

About

This repo is for the client code that uses the Ceph Manager RESTFul API. Rather than a single large Single Page App (SPA), the code is structured as a collection of SPAs which talk to the same RESTful backend.

The concept behind building the calamari UI this way was 2 fold:

  1. Each module can be updated independently of the others; this has advantages in maintainance and allows the possibility of swapping in completely re-written components without disturbing other parts of the UI, including using different versions of component libraries.
  2. This enforces a certain level of discipline on the front and backend components, their contract is the JSON REST API. The backend should not care what the frontend is implemented in, this allows flexibility when adding more clients like Mobile Native.
Assumptions

How to Build Clients

Note: These instructions are deliberately non-system specific. Please visit the wiki and help us write better more distro and release specific instructions.

  1. install nodejs, a recent version like 0.10.
  2. install npm, a recent version (1.4 cause troubles building package, use sudo npm install -g npm@next)
  3. install grunt-cli globally via npm
  4. Ruby gem and compass via gem
  5. make sure your system has a recent gnu compatible make binary
  6. checkout the code git clone git@github.com:ceph/romana.git
  7. cd into romana
  8. to build: make dist

This will build all the modules.

How to Rebuild a module

Assuming you have already done the previous step, e.g.

cd dashboard
grunt build

This will create a directory called dist/ which contains a deployable module which when copied into the correct location on the server will run that part of the app. Due to the tight coupling of the server to the client it is complicated to run the client code without having a server running.


MODULES

dashboard

This is the dashboard module for the Ceph Manager. It is a JavaScript client which is designed to run in the browser and interact with the Ceph Manager RESTful API.

It is primarily written in plain JavaScript using Backbone.js and Backbone.Marionette.

This is the largest mostly complex SPA thus far. It contains 3 logical parts. Dashboard, Workbench and Graphs.

This app owns all the content underneath the /dashboard URL prefix.

login

Login screen app. Just a simple re-director after getting a successful login response. Written in Backbone.js and Backbone.Marionette.

This app owns all the content underneath the /login URL prefix.

admin

Administrative tools and tasks e.g. User Management, information about Calamari. Written using Angular 1.X. This module is currently disabled as there wasn't enough functionality for the Calamari 1.2 release to justify it's use.

The plan is to re-enable this module when we have user and role management functionality implemented in the backend. It also needs an upgrade to Angular 1.2 and Bootstrap 3.

This app owns all the content underneath the /admin URL prefix.

manage

Management of Cluster application. Written in Angular 1.2.X and Bootstrap 3.

The Manage application is the first module which actively tries to change the state of the cluster. It has 4 main tasks:

This app owns all the content underneath the /manage URL prefix.

Build notes

Since build output is really distro-independent, the build is structured to build only on one distro (Ubuntu Precise, by default) in the Vagrant setups under vagrant/. Build first with vagrant/precise-build, and the resultant sources are placed into a tarball “romana-build-output.tar.gz”; then that tarball is used to feed the rest of the distro builds, which are really just repackaging.


This work is supported by the National Institutes of Health's National Center for Advancing Translational Sciences, Grant Number U24TR002306. This work is solely the responsibility of the creators and does not necessarily represent the official views of the National Institutes of Health.