Code Monkey home page Code Monkey logo

roboconf-eclipse'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-eclipse's People

Contributors

bourretp avatar vincent-zurczak avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

roboconf-eclipse's Issues

Add auto-completion in instances file

Suggest component names based on the graph.
Add pre-defined templates too, to inject a whole instance (with the keywords, the name attribute, a default name and the value being preselected).

Wizard for REST Instructions script

Add a new wizard that creates a bash script with CURL instructions and examples of REST usage.
Using a bash script may be a first solution for ordered boostrap of a instances within an application.

The builder does not validate all the files

  1. Create a new valid project, with a graph and so on.
  2. Create a brand new file (graph or instances) that is not referenced by the other files.
  3. Add an error in this new file.

The builder will never try to validate it.

Invalid syntax highlighting in instances

In the following snippet, the port property should be highlighted just like name.
It is not.

instance of vm {
    name: vm1;  # the VM name

    instance of server {
        name: server;
        port: 9878;

        instance of web-app1 {
            name: web-app1-1;
        }
    }
}

Roboconf "add nature" menu should not appear on all projects

When using the Eclipse tooling for Roboconf, right clicking on any project shows the "add nature" menu. This is really annoying as most of the workspace projects are not Roboconf ones. It would be better if these actions were only visible when there exist a "src/main/model" directory.

Notice: the "add nature" menu does not appear on projects which already have it.

Invalid figure name on Oxygen

With Oxygen, creating a new facet or component results in an invalid name.

aql:'Component_'+container.components->size()

And creating a facet or a component always results in the creation of a facet.
It seems the Sirius model is not working anymore.

Annoying error in commands file

Create a command file in your Eclipse workspace.

# Create a new VM...
Define vmName  = vm_worker $(SMART_INDEX)
Create vm as ${vmName}

# ... with a single worker
Create worker as worker under ${vmName}

# Start everything
Deploy and start all $(vmName)

The following errors are shown: Instance names must respect the following pattern: [a-zA-Z_](\w|-| |.)* Instance: ${vmName}. This error should not be shown. There is no error in this file.

Roboconf wizard: set a default value for the group ID

Currently, the field is empty by default.
It should be net.roboconf by default. That wll prevent an error from appearing when a user type in a user name, and it will be possible to edit this field quite easily if it does not match. For new beginners, this will not be a problem to let this field untouched.

Auto-completion: add components descriptions

When the auto-completion submits a list of components, we should be able to read their descriptions, if they are available. We suggest to parse the direct comments that preceed a component (or a facet) definition.

Add a wizard to create a new Target Handler

This new wizard should create...

  • ... a Java Maven structure.
  • ... a sample Target Handler.
  • ... an optional .gitignore or .svnignore.
  • ... a pom.xml file.
  • ... a metadata.xml file.

The wizard should also have an option at the end to run mvn eclipse:eclipse.
If not checked, a single Maven project will be generated.

It would be a good idea to put as much as possible in the tooling-core module (in the platform).

Add auto-completion for the graph editor

Auto-completion for:

  • Component block
  • Facet block
  • Facet keyword
  • Component and facet properties
  • Component and facet names for imported variables
  • Variables names for imports
  • Known installers
  • Component facets
  • Component and facet inheritance

This will be the occasion to verify how our parser supports broken graph definitions. ๐Ÿ‘€

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.