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

README.md updated with correct repo url ,remove container function, status command added #103

Open
wants to merge 17 commits into
base: master
Choose a base branch
from
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
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ Currently features are under development.
## 🚀 Install

```
$ git clone https://github.com/cloudlibz/clocal-gcp.git
$ git clone https://github.com/leopardslab/clocal-gcp.git

$ cd clocal-gcp

Expand Down
50 changes: 50 additions & 0 deletions bin/clocal-gcp
Original file line number Diff line number Diff line change
Expand Up @@ -3,9 +3,14 @@
'use strict';

let fs = require('fs');
const { exec } = require('child_process');
const program = require('commander');
const Configstore = require('configstore');
const chalk = require("chalk");

const path = require('path');
const pkg = require('../package.json');
const removeContainer = require('../src/services/cli-commands/common/removeContainer');

let commandsArray = [];
let originpath = process.cwd() + "/src/services/cli-commands/";
Expand Down Expand Up @@ -38,6 +43,51 @@ fs.readdir(originpath, function (err, items) {
console.log(commandNames);
});

program.command('status').action(()=>{
const config = new Configstore(path.join(pkg.name, '.containerList'));
const containers = config.all;

console.log(chalk.bgGreen('Service Status\n'));

Object.keys(containers).forEach(element => {
exec(`docker container inspect -f '{{.State.Running}}' ${containers[element]}`,(err,stdout,stderr) => {
if(err){
return console.log(chalk.blue(`Cloud ${element} : `),'Container is not running');
}
if(stdout.trim()){
return exec(`docker port ${containers[element]} | fgrep -w 0.0.0.0 | cut -d ':' -f2`, (err,stdout,stderr) =>{
if(err){
return console.log(chalk.blue(`Cloud ${element} : `),chalk.bgReg(`Container is running but failed to execute\n ${stderr}`));
}
return console.log(chalk.blue(`Cloud ${element} : `),`Running at http://localhost:${stdout}`);
});
}
return console.log(chalk.blue(`Cloud ${element} : `),'Stopped');
});
});
});

program.command('stop').action(()=>{
const config = new Configstore(path.join(pkg.name, '.containerList'));
console.log(config);
const containers = config.all;

console.log(chalk.bgGreen('Stopping services...\n'));

Object.keys(containers).forEach(element=>{
exec(`docker rm -f ${containers[element]}`,(err,stdout,stderr)=>{
if(err){
console.log(chalk.blue(`Stopping cloud ${element} : `),chalk.red(`Something happend while stopping. Container ID - ${containers[element]}`));
return console.log(stderr);
}
config.delete(element);
console.log(chalk.blue(`Stopping cloud ${element} : `),chalk.green(`Stopped`));
});

});

});

program.parse(process.argv);

if(process.argv.length < 3)
Expand Down
11 changes: 9 additions & 2 deletions src/services/cli-commands/cloud-bigtable/cmd.js
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ const Configstore = require('configstore');
const path = require('path');
const pkg = require('../../../../package.json');
const common = require('../common/cmd');
const removeContainer = require('../common/removeContainer');
const dockerImage = `cloudlibz/clocal-gcp-bigtable:latest`;
const defaultPort = 8087;

Expand All @@ -31,13 +32,19 @@ const start = () => {
const config = new Configstore(path.join(pkg.name, '.containerList'));

exec(`docker run -p 8087:8087 -t -d ${dockerImage}`, (err, stdout, stderr) => {
if (err) console.log(chalk.bgRed(`failed to start\n${stderr}`));
config.set('bigtable', stdout.trim());
const dockerId = config.get('bigtable');
if (err){
removeContainer(dockerId);
return console.log(chalk.bgRed(`failed to start\n${stderr}`));
}
exec(
`docker exec -t -d ${dockerId} bash scripts/start.sh`,
(err, stdout, stderr) => {
if (err) console.log(chalk.bgRed(`failed to execute\n${stderr}`));
if (err){
removeContainer(dockerId);
return console.log(chalk.bgRed(`failed to execute\n${stderr}`));
}
console.log(stdout);
if (!err) console.log(chalk.green.bgWhiteBright(`gcp bigtable started ...`));
}
Expand Down
13 changes: 10 additions & 3 deletions src/services/cli-commands/cloud-datastore/cmd.js
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ const Configstore = require('configstore');
const path = require('path');
const pkg = require('../../../../package.json');
const common = require('../common/cmd');
const removeContainer = require('../common/removeContainer');
const dockerImage = `cloudlibz/clocal-gcp-datastore:latest`;
const defaultPort = 8081;

Expand All @@ -18,7 +19,7 @@ const action = (cmd, first, second, command) => {
break;
case 'stop':
stop()
break;
break;
default:
console.log(`command invalid ${cmd} ${first} ${second}`);
}
Expand All @@ -31,13 +32,19 @@ const start = () => {
const config = new Configstore(path.join(pkg.name, '.containerList'));

exec(`docker run -p 8081:8081 -t -d ${dockerImage}`, (err, stdout, stderr) => {
if (err) console.log(chalk.bgRed(`failed to start\n${stderr}`));
config.set('datastore', stdout.trim());
const dockerId = config.get('datastore');
if (err){
removeContainer(dockerId);
return console.log(chalk.bgRed(`failed to start\n${stderr}`));
}
exec(
`docker exec -t -d ${dockerId} bash scripts/start.sh`,
(err, stdout, stderr) => {
if (err) console.log(chalk.bgRed(`failed to execute\n${stderr}`));
if (err){
removeContainer(dockerId);
return console.log(chalk.bgRed(`failed to execute\n${stderr}`));
}
console.log(stdout);
if (!err) console.log(chalk.green.bgWhiteBright(`gcp datastore started ...`));
}
Expand Down
11 changes: 9 additions & 2 deletions src/services/cli-commands/cloud-firestore/cmd.js
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ const Configstore = require('configstore');
const path = require('path');
const pkg = require('../../../../package.json');
const common = require('../common/cmd');
const removeContainer = require('../common/removeContainer');
const dockerImage = `cloudlibz/clocal-gcp-firestore:latest`;
const defaultPort = 8086;

Expand All @@ -31,13 +32,19 @@ const start = () => {
const config = new Configstore(path.join(pkg.name, '.containerList'));

exec(`docker run -p 8086:8086 -t -d ${dockerImage}`, (err, stdout, stderr) => {
if (err) console.log(chalk.bgRed(`failed to start\n${stderr}`));
config.set('firestore', stdout.trim());
const dockerId = config.get('firestore');
if (err){
removeContainer(dockerId);
return console.log(chalk.bgRed(`failed to start\n${stderr}`));
}
exec(
`docker exec -t -d ${dockerId} bash scripts/start.sh`,
(err, stdout, stderr) => {
if (err) console.log(chalk.bgRed(`failed to execute\n${stderr}`));
if (err){
removeContainer(dockerId);
return console.log(chalk.bgRed(`failed to execute\n${stderr}`));
}
console.log(stdout);
if (!err) console.log(chalk.green.bgWhiteBright(`gcp firestore started ...`));
}
Expand Down
11 changes: 9 additions & 2 deletions src/services/cli-commands/cloud-function/cmd.js
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ const Configstore = require('configstore');
const path = require('path');
const pkg = require('../../../../package.json');
const common = require('../common/cmd');
const removeContainer = require('../common/removeContainer');
const dockerImage = `cloudlibz/clocal-gcp-function:latest`;
const defaultPort = 8000;

Expand Down Expand Up @@ -141,13 +142,19 @@ const start = (command) => {
const config = new Configstore(path.join(pkg.name, '.containerList'));

exec(`docker run -p ${port}:${port} -t -d ${dockerImage}`, (err, stdout, stderr) => {
if (err) console.log(chalk.bgRed(`failed to start\n${stderr}`));
config.set('function', stdout.trim());
const dockerId = config.get('function');
if (err){
removeContainer(dockerId);
return console.log(chalk.bgRed(`failed to start\n${stderr}`));
}
exec(
`docker exec ${dockerId} bash scripts/start.sh ${port}`,
(err, stdout, stderr) => {
if (err) console.log(chalk.bgRed(`failed to execute\n${stderr}`));
if (err){
removeContainer(dockerId);
return console.log(chalk.bgRed(`failed to execute\n${stderr}`));
}
console.log(stdout);
if (!err) console.log(chalk.green.bgWhiteBright(`gcp function started ...`));
}
Expand Down
7 changes: 6 additions & 1 deletion src/services/cli-commands/cloud-memory-store/cmd.js
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ const Configstore = require('configstore');
const path = require('path');
const pkg = require('../../../../package.json');
const common = require('../common/cmd');
const removeContainer = require('../common/removeContainer');
const dockerImage = `cloudlibz/clocal-gcp-memory-store:latest`;
const defaultPort = 7070;

Expand All @@ -35,8 +36,12 @@ const start = () => {
exec(
`docker run -d -p ${defaultPort}:7070 ${dockerImage}`,
(err, stdout, stderr) => {
if (err) console.log(chalk.bgRed(`failed to start\n${stderr}`));
config.set('memorystore', stdout.trim());
const dockerId = config.get('memorystore');
if (err){
removeContainer(dockerId);
return console.log(chalk.bgRed(`failed to start\n${stderr}`));
}
console.log(
chalk.green.bgWhiteBright(
`gcp memory store started. Listening on ${defaultPort}`
Expand Down
11 changes: 9 additions & 2 deletions src/services/cli-commands/cloud-pubsub/cmd.js
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ const Configstore = require('configstore');
const path = require('path');
const pkg = require('../../../../package.json');
const common = require('../common/cmd');
const removeContainer = require('../common/removeContainer');
const dockerImage = `cloudlibz/clocal-gcp-pubsub:latest`;
const defaultPort = 8085;

Expand All @@ -31,13 +32,19 @@ const start = () => {
const config = new Configstore(path.join(pkg.name, '.containerList'));

exec(`docker run -p 8085:8085 -t -d ${dockerImage}`, (err, stdout, stderr) => {
if (err) console.log(chalk.bgRed(`failed to start\n${stderr}`));
config.set('pubsub', stdout.trim());
const dockerId = config.get('pubsub');
if (err){
removeContainer(dockerId);
return console.log(chalk.bgRed(`failed to start\n${stderr}`));
}
exec(
`docker exec -t -d ${dockerId} bash scripts/start.sh`,
(err, stdout, stderr) => {
if (err) console.log(chalk.bgRed(`failed to execute\n${stderr}`));
if (err){
removeContainer(dockerId);
return console.log(chalk.bgRed(`failed to execute\n${stderr}`));
}
console.log(stdout);
if (!err) console.log(chalk.green.bgWhiteBright(`gcp pubsub started ...`));
}
Expand Down
7 changes: 6 additions & 1 deletion src/services/cli-commands/cloud-storage/cmd.js
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ const Configstore = require('configstore');
const path = require('path');
const pkg = require('../../../../package.json');
const common = require('../common/cmd');
const removeContainer = require('../common/removeContainer');
const dockerImage = `cloudlibz/clocal-gcp-storage:latest`;
const defaultPort = 8001;

Expand Down Expand Up @@ -187,8 +188,12 @@ const start = () => {
exec(
`docker run -d -p ${defaultPort}:8080 ${dockerImage}`,
(err, stdout, stderr) => {
if (err) console.log(chalk.bgRed(`failed to start\n${stderr}`));
config.set('storage', stdout.trim());
const dockerId = config.get('storage');
if (err){
removeContainer(dockerId);
return console.log(chalk.bgRed(`failed to start\n${stderr}`));
}
console.log(
chalk.green.bgWhiteBright(
`started gcp storage. Listening on ${defaultPort}`
Expand Down
15 changes: 15 additions & 0 deletions src/services/cli-commands/common/removeContainer.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
const { exec } = require('child_process');
const chalk = require('chalk');

const removeContainer = dockerId =>{
if(dockerId){
exec(`docker rm -f ${dockerId}`,(err,stdout,stderr)=>{
if(err) {
console.log(chalk.bgRed(`failed to execute\n${stderr}\n`));
console.log(chalk.bgRed(`Please remove the container manualy before start the service again.\n container ID ${dockerId}`));
}
});
}
}

module.exports = removeContainer;
2 changes: 1 addition & 1 deletion src/services/cloud-functions/Dockerfile
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
FROM node:6.11-slim
FROM node:8.9.2-slim

# Create app directory
WORKDIR /usr/src/app
Expand Down
Loading