Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 9 additions & 3 deletions ci-cd-product/Dockerfile
Original file line number Diff line number Diff line change
@@ -1,14 +1,20 @@
FROM node:0.10-onbuild
FROM node:latest
MAINTAINER Don Schenck "don.schenck@gmail.com"


RUN mkdir -p /usr/local/src
WORKDIR /usr/local/src

RUN apt-get update && apt-get install -y npm
RUN apt-get update
#RUN apt-get install -y npm
#RUN yum install npm
RUN npm install restify
RUN npm install request
RUN npm install mongodb

COPY package.json package.json
COPY productws.js productws.js

EXPOSE 8080

ENTRYPOINT node productws.js
CMD node productws.js
11 changes: 11 additions & 0 deletions ci-cd-product/package.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
{
"name" : "getter",
"version" : "2.0.1",
"description" : "Microservice example -- retrieves products",
"dependencies" : {
"restify" : ">=0.0.0",
"request" : ">=0.0.0",
"mongodb" : ">=3.0.6"
},
"main" : "productws.js"
}
90 changes: 67 additions & 23 deletions ci-cd-product/productws.js
Original file line number Diff line number Diff line change
@@ -1,37 +1,81 @@
var restify = require('restify');
var request = require('request');
function listProducts(req, res, next) {
request('http://10.176.11.153:5984/kixx/_all_docs', function(error, response, body){
if (!error && response.statusCode == 200) {
var rows = JSON.parse(body);
var tablerows = rows.rows;
var output;
res.send(rows);
var mongo = require('mongodb'),
Server = mongo.Server,
Db = mongo.Db;
var server = new Server(process.env.DB_IP, process.env.DB_PORT, {
auto_reconnect: true
});
var db = new Db('guestbook', server);

var onErr = function(err, callback) {
db.close();
callback(err);
};

var findGuests = function(db, callback) {
db.open(function(err, db) {
if (!err) {
var cursor = db.collection('guests').find();
cursor.toArray(function(err, data) {
callback(err, data);
});
} else {
onErr(err, callback);
};
});
};

var findGuestById = function(db, guestId, callback) {
db.open(function(err, db) {
if (!err) {
var o_id = new mongo.ObjectID(guestId);
var cursor = db.collection('guests').find({"_id":o_id});
cursor.toArray(function(err, data) {
callback(err, data);
});
} else {
onErr(err, callback);
};
});
};

function listGuests(req, res, next) {
findGuests(db, function(err, data) {
if (!err) {
res.send(data);
} else {
res.send(err);
}
next();
db.close();
});
};

function getGuestById(req, res, next) {
findGuestById(db, req.params.id, function(err, data) {
if (!err) {
res.send(data);
} else {
res.send(err);
}
})
}
function getProduct(req, res, next) {
request('http://10.176.11.153:5984/kixx/' + req.params.id, function(error, response, body){
if (!error && response.statusCode == 200) {
var rows = JSON.parse(body);
var tablerows = rows.rows;
var output;
res.send(rows);
next();
}
})
}
next();
db.close();
});
};

function getVersion(req, res, next) {
res.send("1.0.2");
res.send("2.1.0");
}

var server = restify.createServer({
name: 'productws',
});

server.use(restify.bodyParser());
server.get('/version', getVersion);
server.get('/product', listProducts);
server.get('/product/:id', getProduct);
server.get('/guest', listGuests);
server.get('/guest/:id', getGuestById);
server.listen(8080, function() {
console.log('%s listening at %s', server.name, server.url);
});
6 changes: 1 addition & 5 deletions ci-cd-watcher/README.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,3 @@
```
docker run -d \
--volumes-from swarm-data \
-p 5000:5000 \
--name watcher \
<imageName>
docker run -d -e WHWATCH_IMAGE_NAME="donschenck/productws:latest" -e DB_IP="104.130.0.7" -e DB_PORT="32769" --volumes-from swarm-data -p 5050:5000 --name watcher donschenck/whwatch:latest
```
10 changes: 6 additions & 4 deletions ci-cd-watcher/whwatch.py
Original file line number Diff line number Diff line change
@@ -1,24 +1,26 @@
from flask import Flask, session, redirect, url_for, escape, request
import docker
import sys
import os

app = Flask(__name__)
app.debug = True

@app.route("/version", methods=['GET'])
def hello():
return "1.0.0"
return "2.0.2"

@app.route('/webhook', methods=['POST'])
def webhook():
try:
tls_config = docker.tls.TLSConfig(
client_cert=('/etc/docker/server-cert.pem', '/etc/docker/server-key.pem'),
client_cert=('/etc/docker/server-cert.pem', '/etc/docker/server-key.pem'),
verify='/etc/docker/ca.pem')
cli = docker.Client(base_url='https://swarm-manager:2376', tls=tls_config)

container_env="DB_IP=" + os.environ["DB_IP"]
container_env=",DB_POST=" + os.environ["DB_PORT"]
host_config = cli.create_host_config(port_bindings={8080: 8080})
container = cli.create_container(image="donschenck/productws", detach=True, host_config=host_config)
container = cli.create_container(image=os.environ["WHWATCH_IMAGE_NAME"], detach=True, host_config=host_config, environment="DB_IP=104.130.0.7,DB_PORT=32769")
response = cli.start(container=container.get('Id'))

except Exception:
Expand Down