diff options
Diffstat (limited to 'winery/README.md')
-rw-r--r-- | winery/README.md | 184 |
1 files changed, 184 insertions, 0 deletions
diff --git a/winery/README.md b/winery/README.md new file mode 100644 index 0000000..7d3a95e --- /dev/null +++ b/winery/README.md @@ -0,0 +1,184 @@ +# 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. Dependencies are fetched from external mirrors and not from an Eclipse repository.** + +## Runtime Requirements +* Java 7 +* Servlet 3.0 capable container (e.g., Tomcat 7) + +## Development Information + +Winery uses maven and [bower] for fetching dependencies and building. +Bower has to be installed manually as described in the next section. + +## Install bower + +1. Install [nodejs]. Just use the latest version to get the latest node package manager (npm). +1. Run `npm install -g bower` +1. Ensure that `git` is in your path: Some javascript libraries are fetched via git. + + +## Make models available + +The models are versioned aside from the main project. +Go into each model directory (`org.eclipse.winery.model.csar.toscametafile`, `org.eclipse.winery.model.selfservice`, `org.eclipse.winery.model.tosca`) and do a `mvn install`. + + +## Making the wars +Run `mvn clean 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][bug421284] +* 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 + +## Eclipse setup +This howto is based on [Eclipse Standard 4.3]. +First of all, generate a war to have all dependencies fetched by maven. + +### Required plugins +* JST Server Adapters Extensions +* Eclipse Java EE Developer Tools +* Eclipse Java Web Developer Tools +* [m2e-wtp]: Maven Integration for WTP +* [AnyEdit](http://andrei.gmxhome.de/anyedit/) for ensuring that tabs are always used +** Configure: Window -> Preferences -> General / Editors / AnyEdit Tools -> "Auto - Convert EXCLUSION file list" -> "Add filter" -> "*.java", "Convert...": 4 spaces for a tab + +### Optional plugins +* [Eclipse Code Recommenders](http://www.eclipse.org/recommenders/) +* [VJET JavaScript IDE](http://www.eclipse.org/proposals/webtools.vjet/) + +### Make Winery projects known to Eclipse +1. Import all projects + * Use "Existing Maven Projects". `mvn eclips:m2eclipse` currently does not enable "maven" in eclipse. +2. For each project: right click, –> Team –> Share Project –> Git –> Next –> check "Use or create repository in parent folder of project" –> Finish +3. At `org.eclipse.winery.repository` and ` org.eclipse.winery.topologymodeler`: + * Right click -> Properties -> JavaScript -> Include Path -> Source -> Expand folder -> Select "Excluded" -> "Edit..." + * Exclusion Patterns: Add multiple -> Select "3rd party" -> "OK" + * Exclusion Patterns: Add multiple -> Select "components" -> "OK" + * "Finish" -> "OK" + +### Setup Tomcat +1. Open servers window: Window -> Show View -> Other -> Server -> Servers +2. New server wizard... -> Apache -> Tomcat v7.0 Server -> Next -> Winery -> Add -> Finish +3. Rename the Server to "Apache Tomcat v7.0" + +Now you can see the Tomcat v7.0 Server at localhost [Stopped, Republish] in your server window. +Select it and click on the green play button in the window. + +Now winery can be viewed at http://localhost:8080/winery/ + +### 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 +* 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`. +* See [README.md of the repository](org.eclipse.winery.repository/README.md) +* See [README.md of the topology modeler](org.eclipse.winery.topologymodeler/README.md) + +#### 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. + +## Acknowledgements +The initial code contribution has been supported by the [Federal Ministry of Economics and Technology] as part of the [CloudCycle project] (01MD11023). + +## License +Copyright (c) 2012-2014 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 + + [bug421284]: https://bugs.eclipse.org/bugs/show_bug.cgi?id=421284 + [bower]: https://github.com/bower/bower + [DOI:10.1109/MIC.2012.43]: http://dx.doi.org/10.1109/MIC.2012.43 + [nodejs]: http://nodejs.org/download/ + [Eclipse Public License v1.0]: http://www.eclipse.org/legal/epl-v10.html + [Eclipse Standard 4.3]: http://www.eclipse.org/downloads/ + [Apache License v2.0]: http://www.apache.org/licenses/LICENSE-2.0.html + [Federal Ministry of Economics and Technology]: http://www.bmwi.de/EN/root.html + [CloudCycle project]: http://www.cloudcycle.org/en/ + [m2eclipse]: http://eclipse.org/m2e/ + [m2e-wtp]: http://eclipse.org/m2e-wtp/ + [Scalable JavaScript Application Architecture]: http://www.slideshare.net/nzakas/scalable-javascript-application-architecture-2012 + [TerrificJS]: http://terrifically.org/ |