Giter VIP home page Giter VIP logo

roboconf-web-administration's Introduction

Roboconf

Build Status Coverage Status License Join us on Gitter.im Web site

Snapshots Maven Central

This repository contains the source code for the Roboconf platform.
This includes the manager, the agent, their default distributions, the tooling core and the Maven plugin.

What is Roboconf?

Roboconf is both a platform and framework to manage elastic applications in the cloud.
Elastic applications designate those whose deployment topology may vary over time (e.g. scaling up or down). Roboconf manages deployments, probes, automatic reactions and reconfigurations. Beyond applications, Roboconf could also be defined as a « PaaS framework »: a solution to build PaaS (Platform as a Service). Most PaaS, such as Cloud Foundry or Openshift, target developers and support application patterns. However, some applications require more flexible architectures or design. Roboconf addresses such cases.

With Roboconf, there is no constraint about the programming language, the kind of application or the operating system. You define what you put in your platform, you specify all the interactions, administration procedures and so on.

Roboconf handles application life cycle: hot reconfiguration (e.g. for elasticity issues) and consistency (e.g. maintaining a consistent state when a component starts or stops, even accidentally). This relies on a messaging queue (currently Rabbit MQ). Application parts know what they expose to and what they depend on from other parts. The global idea is to apply to applications the concepts used in component technologies like OSGi. Roboconf achieves this in a non-intrusive way, so that it can work with legacy Software.

Roboconf's workflow

Application parts use the message queue to communicate and take the appropriate actions depending on what is deployed or started. These appropriate actions are executed by plug-ins (such as bash or Puppet).

Roboconf's architecture

Roboconf is distributed technology, based on AMQP and REST / JSon. It is IaaS-agnostic, and supports many well-known IaaS (including OpenStack, Amazon Web Services, Microsoft Azure, VMWare, as well as a "local" deployment plug-in for on-premise hosts).

More information and tutorials are available on the web site.
Build instructions can be found here.
Roboconf is licensed under the terms of the Apache License v2.

roboconf-web-administration's People

Contributors

chamerling avatar diarraa avatar vincent-zurczak avatar

Stargazers

 avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

roboconf-web-administration's Issues

Replace the life cycle management display

For the moment, when one clicks an instance in the console, its state is diplayed and user actions are displayed as buttons. As an exemple, for a not deployed instance, a user can either deploy or deploy and start. Two buttons. For a deploying root instance, only undeploy is available, and only for a root instance.

Besides, depending on the screen size, the button text sometimes overlaps its border.
These buttons should be replaced by a drop-down menu. More generally, the UI will have to be revisisted once it includes debug and diagnostic features.

Add delete actions

Delete actions should be added for applications, application templates and instances.

Instance details remain when the instance was removed

  • Create an application with several instances and display them in the web admin.
  • Click an instance. A detailed block appears on the right.
  • Invoke the REST API (or use the autonomic) so that this clicked instanced is removed.

The instance will disappear from the list in the web admin.
But the detailed block will still be visible, displaying information of an instance that does not exist anymore.

Update the packaging for production

We need a light Gulp task to package our application for Karaf.
Something that won't download the entire internet...

npm install --production

... is what we need.
However, we do not want to run all the Gulp plug-ins we use in dev mode. For Karaf packaging, only minification and dependencies injection should be applied. So, we should move the associated Gulp plug-ins in the normal NPM dependencies.

We might also update our Gulp tasks to prevent code duplication.

Application Errors

  • Try to update an application that contains errors.
  • You should see some error messages then.

But the way they are displayed look awful.
An effort should be done on this.

The instance property block should be "fixed"

In the web administration, create 20 root instances with children.
Click one at the bottom of the page. You cannot see its properties. You have to scroll up to see them.

They should be positioned statically (CSS position: fixed).

Filtering application templates

We should be able to filter application templates with a search field.
Currently, we are blocked because the search field and the listing are handled by 2 different controllers.

Add Translation in the Web Administration

The web administration should be internationalized.
There are several solutions that work with AngularJS for this.

See Angular Translate.
This is what Linagora uses in other applications.

The settings page will have to be updated as well, so that users can change the language from the web interface.

No warning displayed on app listing

Make sure an application has instances in the undetermined state.
List all the applications. No warning is shown for this application.

no-warning

This is because the info field is warn and not nr, as written in the web administration.

Improve report error about missing deployment handler

I try to deploy my roboconf application on Docker containers.

If the target docker is not installed in the Roboconf DM, I'm not able to deploy my VMs without explanations from the Roboconf web-console. The error about the missing deployment target is only logged in Roboconf log files.

Please add an error displayed by the Roboconf web-console about the missing deployment target when loading the application template.

Add a safety page for application upload

Given that #15 may result in preventing users from uploading a new application, a safety page (or alternative Angular route) should be added to the web administration. If the main page bugs, we will be able to use this other page.

DM initialization does not work anymore

The message server cannot be initialized anymore from the web application.
A workaround for the moment is to set it manually in the DM instance before launching it.

Add commands listing

Add a page to list commands for a given application.
Execution of a command should also be handled in the page.

Create a distribution task

The Gulp tasks for development work quite well (although we might improve the regeneration). However, we should complete the distribution tasks to...

  • ... check quality (done).
  • ... minify all OUR js files and group them into a single file (partially done).
  • ... group all OUR css files into a single one.
  • ... generate a new index.html with the right file paths.
  • ... create a Gulp task called watch-dist, quite similar to the watch-dev one.

Update the instances page for version 0.4

  • Remove commands links, as commands will not be supported for this version.
  • Re-add the polling function that updates the instances.

It will be replaced by a web socket in the next version.

Display instance's states by installer

  • Root instances have 2 main states: deployed_started and not_deployed.
  • Other instances have 3 main states: the two previous ones and deployed_stopped.

Now, let's consider the following hierarchy of instances.

instance of VM {    # target
   instance of Docker {  # target
       instance of App {   # ...
              # whatever
       }
    }
}

The console should display the same options for Docker and VM.
It is not the case for the moment. Docker is considered like any instance while it is equivalent to a root instance (scoped instance).

Build is not reproductible (JS tools issue)

Depending on the system and tools versions (eg. bower, npm ?), the build is not reproductible - and may produce different files, some inducing runtime errors.
That makes the bug itself difficult to reproduce (sic).

Filtering instances

In the same way we want to filter application templates, we should be able to filter instances.

Add a page to diagnostic the messaging paths

There should be a page to test the connection between the DM and the messaging server.
It should also allow to test the connection between the DM and a given agent.

There is a REST API for this (that may need to be completed).

Should we have a Mobile version of the Web Administration?

If so, we need different HTML pages, different interactions. We cannot only rely on CSS3 mechanisms. We need a standard version and a mobile version of the web administration.

This may be manageable at the router level in Angular.

In the mobile version, the first page should only list applications, name and qualifier, no description. Touching an application would lead to another page with the description, global action and the list of instances. Clicking an instance would lead to another page with details and action buttons.

We really need different HTML and JS files, since the interactions are radically different. The mobile version must reduce the amount of displayed things, and use more transitive pages.

Wrong Display sometimes

  1. Stop the DM.
  2. Refresh the web admin. An error is shown.
  3. Start the DM.
  4. Check the web admin without refreshing.

The poller function displays instances while the initial error is still visible.

Add icons in the files packaging

Add icons in the files packaging in order to display them in GUIs (web, eclipse, ...) and automatic documentation generation.

the icons could be located side by side with scripts
for instance:
...
roboconf-examples/apache-tomcat-bash/graph/Apache/scripts
roboconf-examples/apache-tomcat-bash/graph/Apache/icons

the icons could have several sizes
roboconf-examples/apache-tomcat-bash/graph/Apache/icons/16x16
roboconf-examples/apache-tomcat-bash/graph/Apache/icons/32x32
roboconf-examples/apache-tomcat-bash/graph/Apache/icons/64x64
...

and each icon could represent a state in the lifecycle
roboconf-examples/apache-tomcat-bash/graph/Apache/icons/32x32/unknown.png
roboconf-examples/apache-tomcat-bash/graph/Apache/icons/32x32/starting
roboconf-examples/apache-tomcat-bash/graph/Apache/icons/32x32/started
...

Highlight the edited instance

When updating the state of an instance, the edited instance should be highlighted.
Sometimes, despite the instance name being written in the right part, we do not know which instance is being edited.

Diagnostic Instances

Sometimes, an instance will remain in the starting state because one of its dependencies is not there. Sometimes, we would like to be able to determine which one is missing. We should update the console to perform such a diagnostic and display its result.

Some other times, we may want to check how dependencies were resolved.
So, we should in fact be able to display how imports are resolved. This is not easy at all, because we know what an agent references for a given instance, but not what the scripts really use. We should do our best about this.

Do not always display Actions

Get the web administration.
Click an instance whose parent is not deployed and started.

Action buttons are shown.
But it does not make sense. Instead, a message should be displayed and indicating the parent is not deployed and started.

Application/Template icons are never used

In the application/template listing, the displayed icons are coloured variants of the Roboconf logo.
However, when an template archive contains (e.g.) a application.png image in the root directory, it is not taken in account by the web-admin. Same thing if the image is copied in the app/template working directory.

Worse: the platform IconServlet which is supposed to find the app/template icon is never called, which means the web-admin is missing something.

Filtering applications

In the same way we want to filter application templates, we should be able to filter applications.

Add Sorting Actions

By default, root instances are sorted alphabetically.
It would be great to be able to sort them by state (put started VMs at the top, and not deployed at the bottom).

There should be two new global actions: Sort by Name and Sort by State.

Do not sort instances paths

Currently, the application sorts instance paths for display.
However, sometimes, it does not work correctly.

Example: Tomcat_VM and Tomcat_VM2.
Instances from the first are displayed under the second.

Same thing with vmec2tomcatrubis1 and vmec2tomcatrubis10.
This is not up to the client to do this, but to the server. Consider some one wants to create its own client.

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.