Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fix version select + add welcome page #8

Merged
merged 7 commits into from Oct 10, 2017
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
2 changes: 1 addition & 1 deletion src/config.json
@@ -1,6 +1,6 @@
{
"registryUrl": "databoxsystems/",
"storeUrl": "http://app-server:8181",
"storeUrl": "http://store.iotdatabox.com:8181",
"registryUrl_dev": "",
"storeUrl_dev": "http://app-server:8181",
"registryUrl_sdk": "registry.iotdatabox.com/",
Expand Down
57 changes: 40 additions & 17 deletions src/container-manager.js
@@ -1,3 +1,4 @@
/*jshint esversion: 6 */
const Config = require('./config.json');
const fs = require('fs');
const crypto = require('crypto');
Expand Down Expand Up @@ -25,18 +26,33 @@ const DATABOX_EXPORT_SERVICE_ENDPOINT = "https://export-service:8080";

//setup dev env
const DATABOX_DEV = process.env.DATABOX_DEV;
if (DATABOX_DEV == 1) {
Config.registryUrl = '';
Config.storeUrl = Config.storeUrl_dev;
console.log("Using dev registry::", Config.registryUrl);
}

const DATABOX_SDK = process.env.DATABOX_SDK;
if (DATABOX_SDK == 1) {
Config.registryUrl = Config.registryUrl_sdk;
Config.storeUrl = Config.storeUrl_sdk;
console.log("Using sdk registry::", Config.registryUrl);
}
let getRegistryUrlFromSLA = function (sla) {

//default to the config file
let registryUrl = Config.registryUrl;

if (sla.storeUrl) {
storeUrl = url.parse(sla.storeUrl);
if (storeUrl.hostname == "localhost" || storeUrl.hostname == "127.0.0.1") {
//its a locally installed image get it from the local system
console.log("Using local registry");
registryUrl = "";
} else {
if(sla.registry) {
//allow overriding image location in manifest for SDK
registryUrl = sla.registry+"/";
} else {
//default to databox systems
console.log("Using databoxsystems registry");
registryUrl = "databoxsystems/";
}
}
}
console.log("SETTING REG TO ::", registryUrl);
return registryUrl;
};



let arbiterAgent; //An https agent that will not reject certs signed by the CM
Expand Down Expand Up @@ -239,8 +255,10 @@ const driverConfig = function (config, sla) {

let localContainerName = sla.name + ARCH;

let registryUrl = getRegistryUrlFromSLA(sla);

let driver = {
image: Config.registryUrl + localContainerName,
image: registryUrl + localContainerName,
Env: [
"DATABOX_LOCAL_NAME=" + localContainerName,
"DATABOX_ARBITER_ENDPOINT=" + DATABOX_ARBITER_ENDPOINT,
Expand All @@ -251,7 +269,7 @@ const driverConfig = function (config, sla) {
if (sla['resource-requirements'] && sla['resource-requirements']['store']) {

if (sla['resource-requirements']['store'].length === 1) {
//TODO remove this
//TODO remove this
let storeName = sla.name + "-" + sla['resource-requirements']['store'] + ARCH;
driver.Env.push("DATABOX_STORE_ENDPOINT=https://" + storeName + ":8080");
} else {
Expand All @@ -273,8 +291,11 @@ const driverConfig = function (config, sla) {

const appConfig = function (config, sla) {
let localContainerName = sla.name + ARCH;

let registryUrl = getRegistryUrlFromSLA(sla);

let app = {
image: Config.registryUrl + localContainerName,
image: registryUrl + localContainerName,
Env: [
"DATABOX_LOCAL_NAME=" + localContainerName,
"DATABOX_ARBITER_ENDPOINT=" + DATABOX_ARBITER_ENDPOINT,
Expand All @@ -300,7 +321,7 @@ const appConfig = function (config, sla) {

if (sla['resource-requirements'] && sla['resource-requirements']['store']) {
if (sla['resource-requirements']['store'].length === 1) {
//TODO remove this
//TODO remove this
let storeName = sla.name + "-" + sla['resource-requirements']['store'] + ARCH;
app.Env.push("DATABOX_STORE_ENDPOINT=https://" + storeName + ":8080");
} else {
Expand Down Expand Up @@ -334,8 +355,10 @@ const storeConfig = function (configTemplate, sla) {
let rootContainerName = storeName;
let requiredName = sla.name + "-" + storeName + ARCH;

let registryUrl = getRegistryUrlFromSLA(sla);

let store = {
image: Config.registryUrl + rootContainerName,
image: registryUrl + rootContainerName,
volumes: [],
Env: [
"DATABOX_LOCAL_NAME=" + requiredName,
Expand Down Expand Up @@ -457,7 +480,7 @@ async function addPermissionsFromSla(sla) {
}
}

//Add permissions for dependent stores
//Add permissions for dependent stores
if (sla['resource-requirements'] && sla['resource-requirements']['store']) {

for (const storeType of sla['resource-requirements']['store']) {
Expand Down
28 changes: 8 additions & 20 deletions src/server.js
@@ -1,18 +1,9 @@
/*jshint esversion: 6 */

const Config = require('./config.json');
//setup dev env
//setup dev env
const DATABOX_DEV = process.env.DATABOX_DEV === '1';
if (DATABOX_DEV) {
Config.registryUrl = Config.registryUrl_dev;
Config.storeUrl = Config.storeUrl_dev;
}

const DATABOX_SDK = process.env.DATABOX_SDK === '1';
if (DATABOX_SDK) {
Config.registryUrl = Config.registryUrl_sdk;
Config.storeUrl = Config.storeUrl_sdk;
}

const http = require('http');
const https = require('https');
Expand All @@ -33,11 +24,9 @@ module.exports = {
const server = http.createServer(app);
const installingApps = {};

if (DATABOX_DEV) {
this.proxies.store = "http://" + Config.localAppStoreName + ":8181";
} else {
this.proxies.store = Config.storeUrl;
}
//Always proxy to the local store, app UI deals with remote stores
this.proxies.store = Config.storeUrl_dev;


app.enable('trust proxy');
app.set('views', 'src/www');
Expand Down Expand Up @@ -237,11 +226,10 @@ module.exports = {
}

const options = {'url': '', 'method': 'GET'};
if (DATABOX_DEV) {
options.url = "http://" + Config.localAppStoreName + ":8181" + '/app/list';
} else {
options.url = Config.storeUrl + '/app/list';
}

//Always use local store, app UI deals with remote stores
options.url = Config.storeUrl_dev + '/app/list';

return new Promise((resolve, reject) => {
request(options, (error, response, body) => {
if (error) {
Expand Down
4 changes: 4 additions & 0 deletions src/www/css/appstore.css
Expand Up @@ -14,6 +14,10 @@ iframe {
border: 0;
}

.mdc-textfield__input {
border-radius: 0;
}

.mdc-card {
background-color: #fff;
overflow: hidden;
Expand Down
2 changes: 1 addition & 1 deletion src/www/css/material-components-web.min.css

Large diffs are not rendered by default.

Binary file added src/www/img/boxes_coloured.png
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
2 changes: 1 addition & 1 deletion src/www/index.html
@@ -1 +1 @@
<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1"><meta name="mobile-web-app-capable" content="yes"><meta name="apple-mobile-web-app-capable" content="yes"><meta name="theme-color" content="#3f51b5"><link rel="manifest" href="icons/manifest.json"><link rel="apple-touch-icon" sizes="57x57" href="icons/apple-icon-57x57.png"><link rel="apple-touch-icon" sizes="76x76" href="icons/apple-icon-76x76.png"><link rel="apple-touch-icon" sizes="120x120" href="icons/apple-icon-120x120.png"><link rel="apple-touch-icon" sizes="152x152" href="icons/apple-icon-152x152.png"><link rel="apple-touch-icon" sizes="180x180" href="icons/apple-icon-180x180.png"><link rel="icon" type="image/png" sizes="16x16" href="icons/favicon-16x16.png"><link rel="icon" type="image/png" sizes="32x32" href="icons/favicon-32x32.png"><link rel="icon" type="image/png" sizes="96x96" href="icons/favicon-96x96.png"><link rel="icon" type="image/png" sizes="192x192" href="icons/android-icon-192x192.png"><link rel="stylesheet" href="https://fonts.googleapis.com/icon?family=Material+Icons"><link rel="stylesheet" href="css/material-components-web.min.css"><link rel="stylesheet" href="css/appstore.css"><title>Databox</title><script src="cordova.js" defer></script><script src="js/material-components-web.min.js" defer></script><script src="js/navigo.min.js" defer></script><script src="js/templates/alert.js" defer></script><script src="js/templates/app.js" defer></script><script src="js/templates/app-config.js" defer></script><script src="js/templates/app-list.js" defer></script><script src="js/templates/app-list-installed.js" defer></script><script src="js/templates/connect.js" defer></script><script src="js/templates/spinner.js" defer></script><script src="js/index.js" defer></script><script src="js/app-install.js" defer></script><script src="js/app-control.js" defer></script></head><body><header class="mdc-toolbar mdc-toolbar--fixed mdc-toolbar--fixed mdc-theme--dark"><div class="mdc-toolbar__row" id="toolbar"><section class="mdc-toolbar__section mdc-toolbar__section--align-start"><a class="mdc-icon-toggle material-icons" id="navicon">menu</a><a class="mdc-icon-toggle material-icons" id="backicon">arrow_back</a><span class="mdc-toolbar__title" id="toolbartitle">Databox</span></section><section class="mdc-toolbar__section mdc-toolbar__section--align-end mdc-toolbar__section--shrink-to-fit"><a class="mdc-icon-toggle material-icons search align-icons" id="searchicon" title="Search" href="#!/search/">search</a></section></div><div class="mdc-toolbar__row" id="toolbar-search"><section class="mdc-toolbar__section mdc-toolbar__section--align-start"><a class="mdc-icon-toggle material-icons" id="searchbackicon">arrow_back</a><label class="mdc-textfield"><input class="mdc-textfield__input" id="toolbar-search__input" placeholder="Search"></label></section></div></header><aside class="mdc-temporary-drawer mdc-typography"><nav class="mdc-temporary-drawer__drawer"><header class="mdc-toolbar mdc-theme--dark"><div class="mdc-toolbar__row"><section class="mdc-toolbar__section mdc-toolbar__section--align-start"><span class="mdc-toolbar__title" style="margin-left: 72px;">Databox</span></section></div></header><nav class="mdc-temporary-drawer__content mdc-list" id="nav"><a class="mdc-list-item" href="#!"><i class="material-icons mdc-list-item__start-detail">store</i>App Store</a><a class="mdc-list-item" href="#!/driver/store"><i class="material-icons mdc-list-item__start-detail">store</i>Driver Store</a><a class="mdc-list-item" id="sensing" href="#!/sensing"><i class="material-icons mdc-list-item__start-detail">network_check</i>Mobile Sensor Data</a><div class="mdc-list-group__subheader" style="margin: 16px 0 0 16px;">Installed</div><a class="mdc-list-item" href="#!/app/installed"><i class="material-icons mdc-list-item__start-detail">extension</i>Apps</a><a class="mdc-list-item" href="#!/driver/installed"><i class="material-icons mdc-list-item__start-detail">developer_board</i>Drivers</a><a class="mdc-list-item" href="#!/store/installed"><i class="material-icons mdc-list-item__start-detail">dns</i>Stores</a><a class="mdc-list-item" href="#!/system/installed"><i class="material-icons mdc-list-item__start-detail">settings_applications</i>System</a></nav></nav></aside></body><main class="mdc-toolbar-fixed-adjust mdc-typography" id="content"><div style="padding: 16px; display: flex; justify-content: center; margin-top: 200px;"><svg id="spinner" width="35px" height="35px" viewBox="0 0 66 66" xmlns="http://www.w3.org/2000/svg"><circle class="path" fill="none" stroke-width="6" stroke-linecap="square" cx="33" cy="33" r="30"></circle></svg></div></main></html>
<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1"><meta name="mobile-web-app-capable" content="yes"><meta name="apple-mobile-web-app-capable" content="yes"><meta name="theme-color" content="#3f51b5"><link rel="manifest" href="icons/manifest.json"><link rel="apple-touch-icon" sizes="57x57" href="icons/apple-icon-57x57.png"><link rel="apple-touch-icon" sizes="76x76" href="icons/apple-icon-76x76.png"><link rel="apple-touch-icon" sizes="120x120" href="icons/apple-icon-120x120.png"><link rel="apple-touch-icon" sizes="152x152" href="icons/apple-icon-152x152.png"><link rel="apple-touch-icon" sizes="180x180" href="icons/apple-icon-180x180.png"><link rel="icon" type="image/png" sizes="16x16" href="icons/favicon-16x16.png"><link rel="icon" type="image/png" sizes="32x32" href="icons/favicon-32x32.png"><link rel="icon" type="image/png" sizes="96x96" href="icons/favicon-96x96.png"><link rel="icon" type="image/png" sizes="192x192" href="icons/android-icon-192x192.png"><link rel="stylesheet" href="https://fonts.googleapis.com/icon?family=Material+Icons"><link rel="stylesheet" href="css/material-components-web.min.css"><link rel="stylesheet" href="css/appstore.css"><title>Databox</title><script src="cordova.js" defer></script><script src="js/material-components-web.min.js" defer></script><script src="js/navigo.min.js" defer></script><script src="js/templates/alert.js" defer></script><script src="js/templates/app.js" defer></script><script src="js/templates/app-config.js" defer></script><script src="js/templates/app-list.js" defer></script><script src="js/templates/app-list-installed.js" defer></script><script src="js/templates/connect.js" defer></script><script src="js/templates/spinner.js" defer></script><script src="js/templates/welcome.js" defer></script><script src="js/index.js" defer></script><script src="js/app-install.js" defer></script><script src="js/app-control.js" defer></script></head><body><header class="mdc-toolbar mdc-toolbar--fixed mdc-toolbar--fixed mdc-theme--dark"><div class="mdc-toolbar__row" id="toolbar"><section class="mdc-toolbar__section mdc-toolbar__section--align-start"><a class="mdc-icon-toggle material-icons" id="navicon">menu</a><a class="mdc-icon-toggle material-icons" id="backicon">arrow_back</a><span class="mdc-toolbar__title" id="toolbartitle">Databox</span></section><section class="mdc-toolbar__section mdc-toolbar__section--align-end mdc-toolbar__section--shrink-to-fit"><a class="mdc-icon-toggle material-icons search align-icons" id="searchicon" title="Search" href="#!/search/">search</a></section></div><div class="mdc-toolbar__row" id="toolbar-search"><section class="mdc-toolbar__section mdc-toolbar__section--align-start"><a class="mdc-icon-toggle material-icons" id="searchbackicon">arrow_back</a><label class="mdc-textfield"><input class="mdc-textfield__input" id="toolbar-search__input" placeholder="Search"></label></section></div></header><aside class="mdc-temporary-drawer mdc-typography"><nav class="mdc-temporary-drawer__drawer"><header class="mdc-temporary-drawer__header mdc-theme--dark"><div class="mdc-temporary-drawer__header-content" style="background: url('img/boxes_coloured.png'); background-size: cover; color: #FFF;"><div style="width: 100%;"><div class="mdc-typography--title">Databox</div><div class="mdc-typography--caption" id="hostname"></div></div></div></header><nav class="mdc-temporary-drawer__content mdc-list" id="nav"><a class="mdc-list-item" href="#!"><i class="material-icons mdc-list-item__start-detail">home</i>Welcome</a><a class="mdc-list-item" href="#!/driver/app"><i class="material-icons mdc-list-item__start-detail">store</i>App Store</a><a class="mdc-list-item" href="#!/driver/store"><i class="material-icons mdc-list-item__start-detail">store</i>Driver Store</a><a class="mdc-list-item" id="sensing" href="#!/sensing"><i class="material-icons mdc-list-item__start-detail">network_check</i>Mobile Sensor Data</a><div class="mdc-list-group__subheader" style="margin: 16px 0 0 16px;">Installed</div><a class="mdc-list-item" href="#!/app/installed"><i class="material-icons mdc-list-item__start-detail">extension</i>Apps</a><a class="mdc-list-item" href="#!/driver/installed"><i class="material-icons mdc-list-item__start-detail">developer_board</i>Drivers</a><a class="mdc-list-item" href="#!/store/installed"><i class="material-icons mdc-list-item__start-detail">dns</i>Stores</a><a class="mdc-list-item" href="#!/system/installed"><i class="material-icons mdc-list-item__start-detail">settings_applications</i>System</a></nav></nav></aside></body><main class="mdc-toolbar-fixed-adjust mdc-typography" id="content"><div style="padding: 16px; display: flex; justify-content: center; margin-top: 200px;"><svg id="spinner" width="35px" height="35px" viewBox="0 0 66 66" xmlns="http://www.w3.org/2000/svg"><circle class="path" fill="none" stroke-width="6" stroke-linecap="square" cx="33" cy="33" r="30"></circle></svg><button class="mdc-button" id="cancel_button" style="position: absolute; bottom: 16px; display: none;">Cancel</button></div></main></html>
13 changes: 11 additions & 2 deletions src/www/js/app-install.js
Expand Up @@ -123,12 +123,21 @@ router.on('/:name/config', (params) => {
});
});

function getManifest(apps, name, id) {
const manifests = apps[name];
for(const manifest of manifests) {
if(manifest._id === id) {
return manifest.manifest;
}
}
return manifests[0].manifest
}

router.on('/:name/config/:id', (params) => {
console.log(params);
listApps()
.then((apps) => {
// TODO manifest from id
const manifest = JSON.parse(JSON.stringify(apps[params.name][0].manifest));
const manifest = JSON.parse(JSON.stringify(getManifest(apps, params.name, params.id)));
listDatasources(manifest)
.then((sensors) => {
appConfigDisplay(manifest, sensors);
Expand Down