Git Product home page Git Product logo

winery's Introduction

Eclipse Winery

Winery is a Web-based environment to graphically model TOSCA topologies and plans managing these topologies. It is an Eclipse project and thus support is available through its project page https://projects.eclipse.org/projects/soa.winery. Winery is also part of the OpenTOSCA ecosystem where more information is available at http://www.opentosca.org.

The code and the linked libraries are NOT approved by Eclipse Legal.

Runtime Requirements

  • Java 8
  • Servlet 3.0 capable container (e.g., Tomcat 7)

Development Information

Winery uses maven and bower for fetching dependencies and building. Bower is installed automatically using the frontend-maven-plugin. We recommend installing JDK8 by using choco install jdk8 to be able to update it via choco upgrade all. See at the homepage of chocolatey for more information. Please follow the the next step "Making the wars" before importing the project into an IDE.

Making the wars

Run mvn package. In case bower fails, try to investigate using mvn package -X. You can start bower manually in org.eclipse.winery.repository and org.eclipse.winery.topologymodeler by issuing bower install.

There are two WARs generated:

  • org.eclipse.winery.repository/target/winery.war and
  • org.eclipse.winery.topologymodeler/target/winery-topologymodeler.war

They can be deployed on a Tomcat runtime environment.

Branches

The master branch is always compiling and all tests should go through. It contains the most recent improvements. All other branches are real development branches and might event not compile.

There are no explicit branches for stable versions as winery is currently in development-only mode.

Projects

Model projects

Each of these projects are versioned separately.

  • org.eclipse.winery.model.csar.toscametafile: model for TOSCA meta files contained in a CSAR
  • org.eclipse.winery.model.selfservice: model for the self service portal
  • org.eclipse.winery.model.tosca: model for TOCSA

Support projects

  • org.eclipse.winery.highlevelrestapi: support library to REST calls.

Winery itself

Versioned together to ease development.

  • org.eclipse.winery.common: Used in repository and topology modeler
  • org.eclipse.winery.generators.ia: Implementation Artifact Generator, used as component in the repository
  • org.eclipse.winery.repository: the repository including a JSP-based UI
  • org.eclipse.winery.repository.client: Java-client for the repository
  • org.eclipse.winery.topologymodeler: Graph-based modeler for topology templates

Next steps

Winery currently is far from being a production ready modeling tool. The next steps are:

  • UI design improvements
    • Have Orion support XML as language. See also Bug 421284
  • Add more usability features to the topology modeler
  • Remove non-required files from components/ directory to reduce the file size of the WAR file
    • This has to be done by submitting patches to bower.json of the upstream libraries
  • Develop a plugin-system for user-defined editors. For instance, a constraint has a type. If a type is known to Winery, it can present a specific plugin to edit the type content instead of a generic XML editor.
  • Rework file storage. Currently, files are stored along with their definitions. A new storage should store all files in one place and use an SHA1 id to uniquely identify the file. Then, it does not make any difference if storing a WAR, an XSD, or an WSDL.
  • Add a real DAO layer to enable querying the available TOSCA contents using SQL or similar query language

Currently, .jsp files package HTML and JS. We plan to use frameworks such as TerrificJS to provide a better modularity. This follows Nicholas Zakas' "Scalable JavaScript Application Architecture".

Known issues

  • XSD Type declarations are not directly supported ** Declared types are converted to imports during a CSAR Import ** Editing of XSDs is not possible
  • The XSD of OASIS TOSCA v1.0 has been modified ** An Implementation Artifact may carry a name attribute ** The contents of properties of Boundary Definitions are processed in lax mode

IDE Setup

IntelliJ Ultimate setup

See [config/IntelliJ IDEA/README.md](config/IntelliJ IDEA/README.md).

Eclipse setup

See config/Eclipse/README.md.

Configure Winery (optional)

The repository location can be changed: Copy winery.properties to path-to-workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\winery.

Trouble shooting

  • IntelliJ
    • java.lang.IllegalStateException: Illegal access: this web application instance has been stopped already and java.lang.IllegalStateException: Illegal access: this web application instance has been stopped already. Could not load [org.apache.xerces.util.XMLGrammarPoolImpl].
      • mvn clean package
      • Build -> Build Artifacts... -> org.eclipse.winery.repository.war:exploded: Clean
      • Build -> Rebuild Project
    • Has issues with a new selfserivce portal model: Use everything (choco install everything) to locate all "selfservice metadata jars" and delete them. Otherwise, Winery does not compile.
  • In case some JavaScript libraries cannot be found by the browser, execute bower prune, bower install, bower update in both org.eclipse.winery.repository and org.eclipse.winery.topologymodeler.
  • If mvn package does not work in a sub project, execute mvn install in the root. Source
  • See README.md of the repository
  • See README.md of the topology modeler

Libraries

  • Do NOT update to jQuery 2.1.0. When using with firefox, line 5571 in jquery.js fails: divStyle is null. That means window.getComputedStyle( div, null ); returned null, too.
  • Do NOT update to jsPlumb 1.5.5. The new connection type determination does not play well together with Winery's usage of jsPlumb. See jsPlumb#165.

Acknowledgements

The initial code contribution has been supported by the Federal Ministry for Economic Affairs and Energy as part of the CloudCycle project (01MD11023). Current development is supported by the Federal Ministry for Economic Affairs and Energy as part of the SmartOrchestra project (01MD16001F).

License

Copyright (c) 2012-2016 University of Stuttgart.

All rights reserved. This program and the accompanying materials are made available under the terms of the Eclipse Public License v1.0 and the Apache License v2.0 which both accompany this distribution, and are available at http://www.eclipse.org/legal/epl-v10.html and http://www.apache.org/licenses/LICENSE-2.0

Contributors:

  • Oliver Kopp - initial API and implementation

Literature

About TOSCA

  • Binz, T., Breiter, G., Leymann, F., Spatzier, T.: Portable Cloud Services Using TOSCA. IEEE Internet Computing 16(03), 80--85 (May 2012). DOI:10.1109/MIC.2012.43
  • Topology and Orchestration Specification for Cloud Applications Version 1.0. 25 November 2013. OASIS Standard. http://docs.oasis-open.org/tosca/TOSCA/v1.0/os/TOSCA-v1.0-os.html
  • OASIS: Topology and Orchestration Specification for Cloud Applications (TOSCA) Primer Version 1.0 (2013)

See http://www.opentosca.org/#publications for a list of publications in the OpenTOSCA ecosystem.

Programming

  • Joshua Bloch. Effective Java, 2nd edition. Addison-Wesley

winery's People

Contributors

koppor avatar nyuuyn avatar tstadelmaier avatar hueneburg avatar nstadelmaier-dev avatar lharzenetter avatar meyerpp avatar kepplene avatar binzts avatar votealex avatar tykeal avatar balzer814 avatar lvbo163 avatar wagnerse avatar

Watchers

 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.