Code Monkey home page Code Monkey logo

ovsdb_browser's Introduction

OVSDB browser

This is an application that lets you browse the content of OVSDB databases. The content is shown in a Web GUI.

The tools coming with OVSDB provides the same functionality, and much more. However, I find the usage of these tools can be a bit complicated and the output a bit "overwhelming" for some of the tasks I'm doing.

I was not able to find any tools that made it easy browsing the databases. So that's the goal of this application.

Features

The set of features it supports is based on my needs. So you will probably find that it is missing features.

It has to main way to access the data. "Browse" the tables or "monitor" the whole database.

When browsing, you can browse or monitor individual tables. If you browse, the you have the possibility to start and stop monitoring of individual columns in the table. If you monitor the table instead, you will monitor all columns in the table.

The monitor of the whole database was added as a quick way to figure out where "sh.t happens". It shows all updates and in addition reports the notifications per second for each table. So it should be quick to drill down and figure out what gets updated frequently.

It is possible to do modification of simple values, e.g string or integers that has no dependencies.

It show a simple dependency between the tables.

GUI

Build and run

The application is written in OCaml using the Ocsigen framework. It has only been tested under Ubuntu 16.04, but it will probably run on other Linux distributions that has proper OCaml support.

It is easiest to build and install using OPAM.

Install the packages 'oscigen-start' and 'yojson'. I think that should install all the dependencies. (Version 3.2.0 of 'js_of_ocaml' has a bug, so downgrade the js_of_ocaml* packages to version 3.1.0.)

'make test.opt' will build the server and connect to the OVSDB server at '127.0.0.1:6640'. You can change the DB host with "OVSDB_HOST" and port with "OVSDB_PORT" environment variables before starting the server. A better option might be to use the default ports and use a ssh-tunnel to the DB server.

To use it, point your browser to http://127.0.0.1:8080

Deploy

If you want to run it on another node than where you have built it, you can use the script:

installer.sh <target_dir>

This will create an executable and the dependencies and put it in the target folder. You should be able to copy this to other nodes and run it there.

(I was not able to figure out how to make the whole server as a single executable, as reported on the mailing list for the framework. So the actually application is still loaded dynamically into the web-server. If I find a solution, that will be fixed at some time.)

Issues

This application is work in progress, so it still have several bugs and issues. Here is an incomplete list of known issues:

  • Notifications between the backend and the frontend leak memory. So after some (quite long) time, it will run out of resources and stop. I'm not sure if I'm doing something wrong, or it is a bug in the framework. Have reported this to the framework developers.

  • Don't handle lost connection to the database server well.

  • Table header in monitor mode should not have pop-up.

  • The pop-up should be a pop-up, not "under".

  • When selecting "browse" or "monitor", the other option should be disabled until current selection is un-selected.

  • GUI don't indicate lost connection to backend.

  • In some cases it might be issues with backend state if page is reloaded.

Improvements

Here is a un-ordered (incomplete) list of things that might be improved in the not so distant future.

  • Improve GUI with graphic elements

  • Position of elements should not move around when other elements are updated. Need better control of layout.

  • Feedback to user on failed updates

  • Delete rows, including rows that has dependencies to other tables.

  • Insert/clone rows, with help also inserting in dependent tables.

ovsdb_browser's People

Contributors

hansole avatar

Stargazers

Stéphane Legrand avatar Xavier Van de Woestyne avatar  avatar  avatar Vasiliy Tolstov avatar Seb Mondet avatar

Watchers

 avatar Alin Gabriel Serdean avatar

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.