Skip to content

Commit c9b1ba0

Browse files
author
Bob Dill
committed
updated C13 to support nodejs restarts. Restart management now uses a Cloudant database to preserve user cards across nodejs restarts
1 parent b26b3be commit c9b1ba0

File tree

13 files changed

+1094
-254
lines changed

13 files changed

+1094
-254
lines changed

Diff for: Chapter13/HTML/admin.html

+1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11

22
<div><h2 id="title"></h2>
33
<h3 id='whyChange' onclick="displayAdminUpdate()" class="showfocus">Why All The Changes?</h3>
4+
<h3 class="showfocus">NodeJS last restarted: <span id='lastUpdate'></span></h3>
45
<div class="showfocus scrollingPaneLeft">
56
<h3 class="strike" id="npm"></h3>
67
<table id="profileManagement" width="98%"><tr><th id="npm_api"></th><th id="npm_param"></th></tr>

Diff for: Chapter13/HTML/index.html

+87-85
Original file line numberDiff line numberDiff line change
@@ -1,88 +1,90 @@
11
<html><head>
2-
<meta charset="utf-8">
3-
<meta name="viewport" content="width=device-width, initial-scale=1">
4-
<meta name="description" content="Chapter 11, Zero To Blockchain">
5-
<meta name="author" content="Bob Dill, IBM Distinguished Engineer">
6-
7-
<title id="title"></title>
8-
9-
</head><body class="tutorial" onLoad="initPage()">
10-
<div class="cover">
11-
<div class="navbar">
12-
<div class="container" >
13-
<div class="navbar-header">
14-
<button type="button" class="navbar-toggle" data-toggle="collapse" data-target="#navbar-ex-collapse" style="background-color: #E0E0E0">
15-
<span class="sr-only" >Toggle navigation</span>
16-
<span class="icon-bar" ></span>
17-
<span class="icon-bar" ></span>
18-
<span class="icon-bar" ></span>
19-
</button>
20-
<a class="navbar-brand" href="#" style="color: #008571;" id="titleBar"><span></span></a>
21-
</div>
22-
<div class="collapse navbar-collapse" id="navbar-ex-collapse">
23-
<ul class="nav navbar-nav ">
24-
<span class="face" id="myFace"></span>
25-
<li class="dropdown">
26-
<a href="#" class="dropdown-toggle" data-toggle="dropdown">Select Language<b class="caret" ></b></a>
27-
<ul class="dropdown-menu" id="lang_choices">
28-
</ul>
29-
</li>
2+
<meta charset="utf-8">
3+
<meta name="viewport" content="width=device-width, initial-scale=1">
4+
<meta name="description" content="Chapter 13, Zero To Blockchain">
5+
<meta name="author" content="Bob Dill, IBM Distinguished Engineer">
6+
7+
<title id="title"></title>
8+
9+
</head><body class="tutorial" onLoad="initPage()">
10+
<div class="cover">
11+
<div class="navbar">
12+
<div class="container" >
13+
<div class="navbar-header">
14+
<button type="button" class="navbar-toggle" data-toggle="collapse" data-target="#navbar-ex-collapse" style="background-color: #E0E0E0">
15+
<span class="sr-only" >Toggle navigation</span>
16+
<span class="icon-bar" ></span>
17+
<span class="icon-bar" ></span>
18+
<span class="icon-bar" ></span>
19+
</button>
20+
<a class="navbar-brand" href="#" style="color: #008571;" id="titleBar"><span></span></a>
21+
</div>
22+
<div class="collapse navbar-collapse" id="navbar-ex-collapse">
23+
<ul class="nav navbar-nav ">
24+
<span class="face" id="myFace"></span>
3025
<li class="dropdown">
31-
<a href="#" class="dropdown-toggle" data-toggle="dropdown"><span id="idx_admin"></span><b class="caret" ></b></a>
32-
<ul class="dropdown-menu" id="Z2B_resources">
33-
<li><a onclick="loadAdminUX()"><span id="idx_adminUX"></span></a></li>
34-
<li><a onclick="preLoad()"><span id="idx_preload"></span></a></li>
26+
<a href="#" class="dropdown-toggle" data-toggle="dropdown">Select Language<b class="caret" ></b></a>
27+
<ul class="dropdown-menu" id="lang_choices">
28+
</ul>
29+
</li>
30+
<li class="dropdown">
31+
<a href="#" class="dropdown-toggle" data-toggle="dropdown"><span id="idx_admin"></span><b class="caret" ></b></a>
32+
<ul class="dropdown-menu" id="Z2B_resources">
33+
<li><a onclick="loadAdminUX()"><span id="idx_adminUX"></span></a></li>
34+
</ul>
35+
</li>
36+
<li class="dropdown">
37+
<a href="#" class="dropdown-toggle" data-toggle="dropdown" id="idx_roles"><b class="caret" ></b></a>
38+
<ul class="dropdown-menu" id="Z2B_Role">
39+
<li><a onclick="singleUX()"><span id="idx_unified"></span></a></li>
40+
<li><a onclick="loadBuyerUX()"><span id="idx_buyer"></span></a></li>
41+
<li><a onclick="loadSellerUX()"><span id="idx_seller"></span></a></li>
42+
<li><a onclick="loadProviderUX()"><span id="idx_provider"></span></a></li>
43+
<li><a onclick="loadShipperUX()"><span id="idx_shipper"></span></a></li>
44+
<li><a onclick="loadFinanceCoUX()"><span id="idx_financeco"></span></a></li>
45+
</ul>
46+
</li>
3547
</ul>
36-
</li>
37-
<li class="dropdown">
38-
<a href="#" class="dropdown-toggle" data-toggle="dropdown" id="idx_roles"><b class="caret" ></b></a>
39-
<ul class="dropdown-menu" id="Z2B_Role">
40-
<li><a onclick="singleUX()"><span id="idx_unified"></span></a></li>
41-
<li><a onclick="loadBuyerUX()"><span id="idx_buyer"></span></a></li>
42-
<li><a onclick="loadSellerUX()"><span id="idx_seller"></span></a></li>
43-
<li><a onclick="loadProviderUX()"><span id="idx_provider"></span></a></li>
44-
<li><a onclick="loadShipperUX()"><span id="idx_shipper"></span></a></li>
45-
<li><a onclick="loadFinanceCoUX()"><span id="idx_financeco"></span></a></li>
46-
</ul>
47-
</li>
48-
</ul>
49-
<ul class="nav navbar-nav navbar-right">
50-
<li class="active">
51-
<a href="#">Home</a>
52-
</li>
53-
</ul>
54-
</div>
55-
</div>
56-
</div>
57-
</div>
58-
<div class="container", id="top" height="100%">
59-
<div class="container" id="body" height="100%">
60-
<div class="row">
61-
<div class="col-md-12 text-center" style="color: #008571; ">
62-
<h1 id="header"></h1>
63-
<h3 id="language"></h3>
64-
</div>
65-
</div>
66-
</div>
67-
<div class="blockchain" id="blockchain"></div>
68-
</div>
69-
70-
</div>
71-
72-
<!-- Placed at the end of the document so the pages load faster -->
73-
74-
<script src="js-utils/jquery-3.1.0.min.js"></script>
75-
<script src="js-utils/bootstrap.min.js"></script>
76-
<script src="js/z2b-utilities.js"></script>
77-
<script src="js/z2b-initiate.js"></script>
78-
<script src="js/z2b-admin.js"></script>
79-
<script src="js/z2b-buyer.js"></script>
80-
<script src="js/z2b-seller.js"></script>
81-
<script src="js/z2b-provider.js"></script>
82-
<script src="js/z2b-shipper.js"></script>
83-
<script src="js/z2b-financeCo.js"></script>
84-
<script src="js/z2b-events.js"></script>
85-
<link href="CSS/font-awesome.min.css" rel="stylesheet" type="text/css">
86-
<link href="CSS/bootstrap.css" rel="stylesheet" type="text/css">
87-
<link href="CSS/pageStyles.css" rel="stylesheet" type="text/css">
88-
</body></html>
48+
<ul class="nav navbar-nav navbar-right">
49+
<li class="active">
50+
<a href="#">Home</a>
51+
</li>
52+
</ul>
53+
</div>
54+
</div>
55+
</div>
56+
</div>
57+
<div class="container", id="top" height="100%">
58+
<div class="container" id="body" height="100%">
59+
<div class="row">
60+
<div class="col-md-12 text-center" style="color: #008571; ">
61+
<h1 id="header"></h1>
62+
<h3 id="language"></h3>
63+
<h3>NodeJS last restarted: <span id='lastUpdate'></span></h3>
64+
65+
</div>
66+
</div>
67+
</div>
68+
<div class="blockchain" id="blockchain"></div>
69+
</div>
70+
71+
</div>
72+
73+
<!-- Placed at the end of the document so the pages load faster -->
74+
75+
<script src="js-utils/jquery-3.1.0.min.js"></script>
76+
<script src="js-utils/bootstrap.min.js"></script>
77+
<script src="js/z2b-utilities.js"></script>
78+
<script src="js/z2b-initiate.js"></script>
79+
<script src="js/z2b-admin.js"></script>
80+
<script src="js/z2b-buyer.js"></script>
81+
<script src="js/z2b-seller.js"></script>
82+
<script src="js/z2b-provider.js"></script>
83+
<script src="js/z2b-shipper.js"></script>
84+
<script src="js/z2b-financeCo.js"></script>
85+
<script src="js/z2b-events.js"></script>
86+
<link href="CSS/font-awesome.min.css" rel="stylesheet" type="text/css">
87+
<link href="CSS/bootstrap.css" rel="stylesheet" type="text/css">
88+
<link href="CSS/pageStyles.css" rel="stylesheet" type="text/css">
89+
</body></html>
90+

Diff for: Chapter13/HTML/js/z2b-admin.js

+2
Original file line numberDiff line numberDiff line change
@@ -25,11 +25,13 @@ let _blctr = 0;
2525
*/
2626
function loadAdminUX ()
2727
{
28+
let methodName = 'loadAdminUX';
2829
let toLoad = 'admin.html';
2930
$.when($.get(toLoad)).done(function (page)
3031
{$('#body').empty();
3132
$('#body').append(page);
3233
updatePage('admin');
34+
$.when($.get('/setup/getLastRestart')).done(function(_res) { $('#lastUpdate').append(_res.timeStamp); });
3335
listMemRegistries();
3436
});
3537
}

Diff for: Chapter13/HTML/js/z2b-initiate.js

+2
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,8 @@ function initPage ()
5959
console.log('looking for kubernetes at: '+_addr);
6060
// goMultiLingual() establishes what languages are available for this web app, populates the header with available languages and sets the default language to US_English
6161
goMultiLingual('US_English', 'index');
62+
// get the timestamp for when the network was last loaded
63+
$.when($.get('/setup/getLastRestart')).done(function(_res) { $('#lastUpdate').append(_res.timeStamp); })
6264
// singleUX loads the members already present in the network
6365
memberLoad();
6466
// goChainEvents creates a web socket connection with the server and initiates blockchain event monitoring

Diff for: Chapter13/README.md

+13-1
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,19 @@
55
## c13-database branch
66
- This branch is to replace the file folder based persistence in for member cards with a database approach
77
- Potentially required to address Cloud-Foundry based restarts of application, which causes the current folder to be deleted and recreated.
8-
8+
### Concept flow
9+
- Database is created during admin - load process
10+
- erase existing cards
11+
- if database does not exist || database exists but is empty
12+
- create database
13+
- add record to database when create card complete
14+
- else
15+
- read database
16+
- create card for each entry in database
17+
- write card to .hfc-key-store
18+
- fi
19+
- This requires a manual step to drop the database when cluster is loaded
20+
921
## (1) network information
1022
- Docker and the Kubernetes deploy use different names for the CA and for the channel
1123
- Docker

Diff for: Chapter13/controller/env.json

+13
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,19 @@
3131
"businessNetwork":"",
3232
"enrollmentSecret": "temp"
3333
},
34+
"cloudant": {
35+
"username": "{your cloudant user name}",
36+
"password": "{your cloudant password}",
37+
"host": "{your cloudant host}",
38+
"port": 443,
39+
"url": "{your cloudant url}"
40+
},
41+
"couchdb": {
42+
"url": "http://localhost:5984/",
43+
"urlBase": "localhost:5984/",
44+
"username": "{your couchdb admin id",
45+
"password": "{your couchdb password}"
46+
},
3447
"keyValStore": "/.composer-credentials",
3548
"kube_address":"0.0.0.0"
3649
}

0 commit comments

Comments
 (0)