Added custom_icons attribute to autogenerated TOSCA for dashboards

Change-Id: I277eebc1913f71eeef798cee661d5fbe4d9fd544
diff --git a/views/ngXosViews/hpc/gulp/build.js b/views/ngXosViews/hpc/gulp/build.js
index 64fdaf3..a3ebe09 100644
--- a/views/ngXosViews/hpc/gulp/build.js
+++ b/views/ngXosViews/hpc/gulp/build.js
@@ -26,6 +26,9 @@
 var autoprefixer = require('autoprefixer');
 var mqpacker = require('css-mqpacker');
 var csswring = require('csswring');
+var yaml = require('js-yaml');
+var colors = require('colors/safe');
+var fs =  require('fs');
 
 const TEMPLATE_FOOTER = `
 angular.module('xos.hpc')
@@ -74,7 +77,7 @@
 
   // copy images in correct folder
   gulp.task('copyImages', ['wait'], function(){
-    return gulp.src([`${options.icon}/hpc-icon.png`,`${options.icon}/hpc-icon-active.png`])
+    return gulp.src([`${options.icon}/hpc-icon.png`, `${options.icon}/hpc-icon-active.png`])
     .pipe(gulp.dest(options.static + 'images/'))
   });
 
@@ -155,6 +158,56 @@
     }, 1000);
   });
 
+  gulp.task('tosca', function (cb) {
+
+    // TOSCA to register the dashboard in the system
+    const dashboardJson = {};
+    dashboardJson['Hpc'] = {
+      type: 'tosca.nodes.DashboardView',
+      properties: {
+        url: 'template:xosHpc'
+      }
+    };
+
+    // check for custom icons
+    if(
+      fs.existsSync(`${options.icon}/hpc-icon.png`) &&
+      fs.existsSync(`${options.icon}/hpc-icon-active.png`)
+    ){
+      dashboardJson['Hpc'].properties.custom_icon = true;
+    }
+
+    const dashboardTosca = yaml.dump(dashboardJson).replace(/'/gmi, '');
+
+    // TOSCA to add the dashboard to the user
+    const userDashboardJson = {};
+    userDashboardJson['hpc_dashboard'] = {
+      node: 'Hpc',
+      relationship: 'tosca.relationships.UsesDashboard'
+    };
+    const userJson = {
+      'padmin@vicci.org': {
+        type: 'tosca.nodes.User',
+        properties: {
+          'no-create': true,
+          'no-delete': true
+        },
+        requirements: [userDashboardJson]
+      }
+    };
+    const userTosca = yaml.dump(userJson).replace(/'/gmi, '');
+
+
+    // the output is in a timeout so that it get printed after the gulp logs
+    setTimeout(function () {
+      console.log(colors.cyan('\n\n# You can use this recipe to load the dashboard in the system:'));
+      console.log(colors.yellow(dashboardTosca));
+      console.log(colors.cyan('# And this recipe to activate the dashboard for a user:'));
+      console.log(colors.yellow(userTosca));
+    }, 1000);
+    cb();
+  });
+
   gulp.task('build', function() {
     runSequence(
       'clean',
@@ -167,7 +220,8 @@
       'copyCss',
       'copyImages',
       'copyHtml',
-      'cleanTmp'
+      'cleanTmp',
+      'tosca'
     );
   });
 };
\ No newline at end of file