Merge "DLUX - ignore paste in readOnly codemirror"
[dlux.git] / README.md
index c8ca73c85be14b5cbbfc788bc60423268bc998b8..7391578fcc46874466fb5b36adb781476350531c 100644 (file)
--- a/README.md
+++ b/README.md
 OpenDaylight DLUX is a Javascript-based stateless user interface that communicates with the service backend to provide a consistent and user-friendly interface to interact with OpenDaylight projects and base controller.\r
 \r
 \r
-## Quick Start\r
-\r
-Install Node.js then:\r
-\r
-```sh\r
-$ sudo npm -g install grunt-cli karma bower\r
-$ npm install\r
-$ bower install\r
-$ grunt watch\r
-```\r
-\r
-Finally, open `file:///path/to/ng-boilerplate/build/index.html` in your browser.\r
-\r
-If you want to run the dlux on local node server, use command\r
-\r
-$ grunt live\r
-\r
-It will start server at http://localhost:9000/. It expects your controller to be running at localhost:8080. We can change it in app.js.\r
-\r
-To generate OSGi bundle for controller, run\r
-\r
- $ mvn clean install\r
-\r
-It will generate dlux-web-0.1.0-SNAPSHOT.jar under target/.\r
-Copy this jar bundle to plugins directory inside your controller distribution. Then, you can access Dlux UI at http://localhost:8080/dlux/index.html.\r
-\r
-## Overall Directory Structure\r
-\r
-At a high level, the structure looks roughly like this:\r
-\r
-```\r
-dlux/\r
-  |- grunt-tasks/\r
-  |- karma/\r
-  |- src/\r
-  |  |- app/\r
-  |  |  |- <app logic>\r
-  |  |- assets/\r
-  |  |  |- <static files>\r
-  |  |- common/\r
-  |  |  |- <reusable code>\r
-  |  |- less/\r
-  |  |  |- main.less\r
-  |- vendor/\r
-  |  |- angular-bootstrap/\r
-  |  |- bootstrap/\r
-  |  |- placeholders/\r
-  |- .bowerrc\r
-  |- bower.json\r
-  |- build.config.js\r
-  |- Gruntfile.js\r
-  |- module.prefix\r
-  |- module.suffix\r
-  |- package.json\r
-```\r
-\r
-What follows is a brief description of each entry, but most directories contain\r
-their own `README.md` file with additional documentation, so browse around to\r
-learn more.\r
-\r
-- `karma/` - test configuration.\r
-- `src/` - our application sources. [Read more &raquo;](src/README.md)\r
-- `vendor/` - third-party libraries. [Bower](http://bower.io) will install\r
-  packages here. Anything added to this directory will need to be manually added\r
-  to `build.config.js` and `karma/karma-unit.js` to be picked up by the build\r
-  system.\r
-- `.bowerrc` - the Bower configuration file. This tells Bower to install\r
-  components into the `vendor/` directory.\r
-- `bower.json` - this is our project configuration for Bower and it contains the\r
-  list of Bower dependencies we need.\r
-- `build.config.js` - our customizable build settings; see "The Build System"\r
-  below.\r
-- `Gruntfile.js` - our build script; see "The Build System" below.\r
-- `module.prefix` and `module.suffix` - our compiled application script is\r
-  wrapped in these, which by default are used to place the application inside a\r
-  self-executing anonymous function to ensure no clashes with other libraries.\r
-- `package.json` - metadata about the app, used by NPM and our build script. Our\r
-  NPM dependencies are listed here.\r
-\r
-\r
-### The Build System\r
-\r
-The best way to learn about the build system is by familiarizing yourself with\r
-Grunt and then reading through the heavily documented build script,\r
-`Gruntfile.js`. But you don't need to do that to be very productive with\r
-`ngBoilerplate`. What follows in this section is a quick introduction to the\r
-tasks provided and should be plenty to get you started.\r
-\r
-The driver of the process is the `delta` multi-task, which watches for file\r
-changes using `grunt-contrib-watch` and executes one of nine tasks when a file\r
-changes:\r
-\r
-* `delta:gruntfile` - When `Gruntfile.js` changes, this task runs the linter\r
-  (`jshint`) on that one file and reloads the configuration.\r
-* `delta:assets` - When any file within `src/assets/` changes, all asset files\r
-  are copied to `build/assets/`.\r
-* `delta:html` - When `src/index.html` changes, it is compiled as a Grunt\r
-  template, so script names, etc., are dynamically replaced with the correct\r
-  values configured dynamically by Grunt.\r
-* `delta:less` - When any `*.less` file within `src/` changes, the\r
-  `src/less/main.less` file is linted and copied into\r
-  `build/assets/ng-boilerplate.css`.\r
-* `delta:jssrc` - When any JavaScript file within `src/` that does not end in\r
-  `.spec.js` changes, all JavaScript sources are linted, all unit tests are run,\r
-  and the all source files are re-copied to `build/src`.\r
-* `delta:coffeesrc` - When any `*.coffee` file in `src/` that doesn't match\r
-  `*.spec.coffee` changes, the Coffee scripts are compiled independently into\r
-  `build/src` in a structure mirroring where they were in `src/` so it's easy to\r
-  locate problems. For example, the file\r
-  `src/common/titleService/titleService.coffee` is compiled to\r
-  `build/src/common/titleService/titleService.js`.\r
-* `delta:tpls` - When any `*.tpl.html` file within `src/` changes, all templates\r
-  are put into strings in a JavaScript file (technically two, one for\r
-  `src/common/` and another for `src/app/`) that will add the template to\r
-  AngularJS's\r
-  [`$templateCache`](http://docs.angularjs.org/api/ng.$templateCache) so\r
-  template files are part of the initial JavaScript payload and do not require\r
-  any future XHR.  The template cache files are `build/template-app.js` and\r
-  `build/template-common.js`.\r
-* `delta:jsunit` - When any `*.spec.js` file in `src/` changes, the test files\r
-  are linted and the unit tests are executed.\r
-* `delta:coffeeunit` - When any `*.spec.coffee` file in `src/` changes, the test\r
-  files are linted, compiled their tests executed.\r
-\r
-As covered in the previous section, `grunt watch` will execute a full build\r
-up-front and then run any of the aforementioned `delta:*` tasks as needed to\r
-ensure the fastest possible build. So whenever you're working on your project,\r
-start with:\r
-\r
-```sh\r
-$ grunt watch\r
-```\r
-\r
-And everything will be done automatically!\r
-\r
-### Build vs. Compile\r
-\r
-To make the build even faster, tasks are placed into two categories: build and\r
-compile. The build tasks (like those we've been discussing) are the minimal\r
-tasks required to run your app during development.\r
-\r
-Compile tasks, however, get your app ready for production. The compile tasks\r
-include concatenation, minification, compression, etc. These tasks take a little\r
-bit longer to run and are not at all necessary for development so are not called\r
-automatically during build or watch.\r
-\r
-To initiate a full compile, you simply run the default task:\r
-\r
-```sh\r
-$ grunt\r
-```\r
-\r
-This will perform a build and then a compile. The compiled site - ready for\r
-uploading to the server! - is located in `src/main/resources/pages`, taking a cue from\r
-traditional software development. To test that your full site works as\r
-expected, open the `src/main/resources/pages/index.html` file in your browser. Voila!\r
-\r
-### Maven Build\r
-\r
-Maven is added to generate an OSGi compatible bundle that can be shipped with Opendaylight Controller.\r
-Maven internally runs grunt production ready build and generate a jar out of it.\r
-Once you successfully run 'mvn clean install', the OSGi bundle jar gets generated under target/.\r
-### Live Reload!\r
-\r
-DLUX also includes [Live Reload](http://livereload.com/), so you no\r
-longer have to refresh your page after making changes! You need a Live Reload\r
-browser plugin for this:\r
-\r
-- Chrome - [Chrome Webstore](https://chrome.google.com/webstore/detail/livereload/jnihajbhpnppcggbcgedagnkighmdlei)\r
-- Firefox - [Download from Live Reload](http://download.livereload.com/2.0.8/LiveReload-2.0.8.xpi)\r
-- Safari - [Download from Live Reload](http://download.livereload.com/2.0.9/LiveReload-2.0.9.safariextz)\r
-- Internet Explorer - Surely you jest.\r
-\r
-Note that if you're using the Chrome version with `file://` URLs (as is the\r
-default with `ngBoilerplate`) you need to tell Live Reload to allow it. Go to\r
-`Menu -> Tools -> Extensions` and check the "Allow access to file URLs" box next\r
-to the Live Reload plugin.\r
-\r
-When you load your page, click the Live Reload icon in your toolbar and\r
-everything should work magically. w00t!\r
-\r
-If you'd prefer to not install a browser extension, then you must add the\r
-following to the end of the `body` tag in `index.html`:\r
-\r
-```html\r
-<script src="http://localhost:35729/livereload.js"></script>\r
-```\r
-\r
-Boom!\r
-\r
-### Testing\r
-\r
-Tests can be run via grunt-watch command. It opens separate Chrome instance for running tests. This instance need to be open\r
-at all times (or at least during the time you want tests to be executed). Note on test execution speed - Chrome is at lower CPU \r
-priority when minimalized, or tab where are test executed is not active. This grealy decreases test execution speed, so in that \r
-case, just bring up the Chrome and/or activate tab with tests. Test are executed every time on Grunt jshint command.\r
-\r
-If you want to create/alter new task or command in Gruntfile and want to plug in test execution, you can add karma:unit to new \r
-Grunt task or karma:unit:run to Grunt command.\r
-\r
-If you are writing tests, they should be in same folder as tested file in form <TESTED_FILE>.spec.js\r
+## Build DLUX code with Karaf feature and distribution\r
+\r
+All necessary modules mentioned above such as nodesjs, bower etc. will be installed automatically, when you run the dlux build for first time.  Run following command at dlux home directory /dlux to build dlux feature and distribution along with code.\r
+Once successful, It will make dlux feature available to install and also create dlux karaf distribution. You can find karaf distribution at dlux/distribution-dlux.\r
+\r
+    $  mvn clean install\r
+\r
+__NOTE__: Some people reported about node related error while maven build. Those errors are usually environment related, mostly happens because of the permission issues or node is not installed properly. Try to reinstall node manually.\r
+\r
+### Install NodeJS manually if needed\r
+\r
+__For Windows and Mac without brew:__\r
+\r
+    Go to http://www.nodejs.org\r
+    Download and install NodeJS\r
+\r
+__For Mac with brew installed:__\r
+\r
+    $ brew update\r
+    $ brew install node\r
+\r
+__Verify NodeJS is installed:__\r
+\r
+    $ npm --version\r
+\r
+__Run DLUX in karaf distribution__\r
+\r
+Once you have dlux distribution or you have karaf distribution from integration repository. You can turn on the dlux feature to access the UI.\r
+We will take example of dlux distribution here. Navigate to directory dlux/distribution-dlux/target/assembly/bin and start the karaf via following command -\r
+\r
+    ./karaf\r
+\r
+On the karaf shell, install dlux core feature via running following command -\r
+\r
+    feature:install odl-dlux-core\r
+\r
+\r
+It will internally install odl-restconf and dlux topology application along with core dlux components. once this feature is successfully installed.\r
+Access the dlux UI at __http://localhost:8181/index.html__. Default credentials are admin/admin for login.\r
+\r
+All the applications in dlux are now karaf features. You can install other dlux applications such as nodes, yang-ui from karaf console using commands such as\r
+\r
+    feature:install odl-dlux-node\r
+    feature:install odl-dlux-yangui\r
+\r
+For more details - follow the wiki at  [dlux opendaylight](https://wiki.opendaylight.org/view/OpenDaylight_dlux:Getting_started)\r