From 933452ec52c517e03aae0b53bc9d452e539e0cb5 Mon Sep 17 00:00:00 2001 From: Template builder Date: Tue, 1 Apr 2014 02:12:45 -0400 Subject: [PATCH] Creating template --- .openshift/action_hooks/README.md | 3 + .openshift/cron/README.cron | 23 +++ .openshift/cron/daily/.gitignore | 0 .openshift/cron/hourly/.gitignore | 0 .openshift/cron/minutely/.gitignore | 0 .openshift/cron/monthly/.gitignore | 0 .openshift/cron/weekly/README | 16 ++ .openshift/cron/weekly/chrono.dat | 1 + .openshift/cron/weekly/chronograph | 3 + .openshift/cron/weekly/jobs.allow | 12 ++ .openshift/cron/weekly/jobs.deny | 7 + .openshift/markers/.gitkeep | 0 README.md | 3 + deplist.txt | 13 ++ index.html | 270 ++++++++++++++++++++++++++++ node_modules/.gitkeep | 0 package.json | 35 ++++ server.js | 159 ++++++++++++++++ 18 files changed, 545 insertions(+) create mode 100644 .openshift/action_hooks/README.md create mode 100644 .openshift/cron/README.cron create mode 100644 .openshift/cron/daily/.gitignore create mode 100644 .openshift/cron/hourly/.gitignore create mode 100644 .openshift/cron/minutely/.gitignore create mode 100644 .openshift/cron/monthly/.gitignore create mode 100644 .openshift/cron/weekly/README create mode 100644 .openshift/cron/weekly/chrono.dat create mode 100755 .openshift/cron/weekly/chronograph create mode 100644 .openshift/cron/weekly/jobs.allow create mode 100644 .openshift/cron/weekly/jobs.deny create mode 100644 .openshift/markers/.gitkeep create mode 100644 README.md create mode 100644 deplist.txt create mode 100644 index.html create mode 100644 node_modules/.gitkeep create mode 100644 package.json create mode 100755 server.js diff --git a/.openshift/action_hooks/README.md b/.openshift/action_hooks/README.md new file mode 100644 index 00000000..9cd9e2ba --- /dev/null +++ b/.openshift/action_hooks/README.md @@ -0,0 +1,3 @@ +For information about action hooks supported by OpenShift, consult the documentation: + +http://openshift.github.io/documentation/oo_user_guide.html#the-openshift-directory diff --git a/.openshift/cron/README.cron b/.openshift/cron/README.cron new file mode 100644 index 00000000..9b31029a --- /dev/null +++ b/.openshift/cron/README.cron @@ -0,0 +1,23 @@ +Run scripts or jobs on a periodic basis +======================================= +Any scripts or jobs added to the minutely, hourly, daily, weekly or monthly +directories will be run on a scheduled basis (frequency is as indicated by the +name of the directory) using run-parts. + +run-parts ignores any files that are hidden or dotfiles (.*) or backup +files (*~ or *,) or named *.{rpmsave,rpmorig,rpmnew,swp,cfsaved} + +The presence of two specially named files jobs.deny and jobs.allow controls +how run-parts executes your scripts/jobs. + jobs.deny ===> Prevents specific scripts or jobs from being executed. + jobs.allow ===> Only execute the named scripts or jobs (all other/non-named + scripts that exist in this directory are ignored). + +The principles of jobs.deny and jobs.allow are the same as those of cron.deny +and cron.allow and are described in detail at: + http://docs.redhat.com/docs/en-US/Red_Hat_Enterprise_Linux/6/html/Deployment_Guide/ch-Automating_System_Tasks.html#s2-autotasks-cron-access + +See: man crontab or above link for more details and see the the weekly/ + directory for an example. + +PLEASE NOTE: The Cron cartridge must be installed in order to run the configured jobs. diff --git a/.openshift/cron/daily/.gitignore b/.openshift/cron/daily/.gitignore new file mode 100644 index 00000000..e69de29b diff --git a/.openshift/cron/hourly/.gitignore b/.openshift/cron/hourly/.gitignore new file mode 100644 index 00000000..e69de29b diff --git a/.openshift/cron/minutely/.gitignore b/.openshift/cron/minutely/.gitignore new file mode 100644 index 00000000..e69de29b diff --git a/.openshift/cron/monthly/.gitignore b/.openshift/cron/monthly/.gitignore new file mode 100644 index 00000000..e69de29b diff --git a/.openshift/cron/weekly/README b/.openshift/cron/weekly/README new file mode 100644 index 00000000..7c3e659f --- /dev/null +++ b/.openshift/cron/weekly/README @@ -0,0 +1,16 @@ +Run scripts or jobs on a weekly basis +===================================== +Any scripts or jobs added to this directory will be run on a scheduled basis +(weekly) using run-parts. + +run-parts ignores any files that are hidden or dotfiles (.*) or backup +files (*~ or *,) or named *.{rpmsave,rpmorig,rpmnew,swp,cfsaved} and handles +the files named jobs.deny and jobs.allow specially. + +In this specific example, the chronograph script is the only script or job file +executed on a weekly basis (due to white-listing it in jobs.allow). And the +README and chrono.dat file are ignored either as a result of being black-listed +in jobs.deny or because they are NOT white-listed in the jobs.allow file. + +For more details, please see ../README.cron file. + diff --git a/.openshift/cron/weekly/chrono.dat b/.openshift/cron/weekly/chrono.dat new file mode 100644 index 00000000..fc4abb87 --- /dev/null +++ b/.openshift/cron/weekly/chrono.dat @@ -0,0 +1 @@ +Time And Relative D...n In Execution (Open)Shift! diff --git a/.openshift/cron/weekly/chronograph b/.openshift/cron/weekly/chronograph new file mode 100755 index 00000000..61de949f --- /dev/null +++ b/.openshift/cron/weekly/chronograph @@ -0,0 +1,3 @@ +#!/bin/bash + +echo "`date`: `cat $(dirname \"$0\")/chrono.dat`" diff --git a/.openshift/cron/weekly/jobs.allow b/.openshift/cron/weekly/jobs.allow new file mode 100644 index 00000000..8d32abc7 --- /dev/null +++ b/.openshift/cron/weekly/jobs.allow @@ -0,0 +1,12 @@ +# +# Script or job files listed in here (one entry per line) will be +# executed on a weekly-basis. +# +# Example: The chronograph script will be executed weekly but the README +# and chrono.dat files in this directory will be ignored. +# +# The README file is actually ignored due to the entry in the +# jobs.deny which is checked before jobs.allow (this file). +# +chronograph + diff --git a/.openshift/cron/weekly/jobs.deny b/.openshift/cron/weekly/jobs.deny new file mode 100644 index 00000000..73c94500 --- /dev/null +++ b/.openshift/cron/weekly/jobs.deny @@ -0,0 +1,7 @@ +# +# Any script or job files listed in here (one entry per line) will NOT be +# executed (read as ignored by run-parts). +# + +README + diff --git a/.openshift/markers/.gitkeep b/.openshift/markers/.gitkeep new file mode 100644 index 00000000..e69de29b diff --git a/README.md b/README.md new file mode 100644 index 00000000..2bf0bc72 --- /dev/null +++ b/README.md @@ -0,0 +1,3 @@ +The OpenShift `nodejs` cartridge documentation can be found at: + +https://github.com/openshift/origin-server/tree/master/cartridges/openshift-origin-cartridge-nodejs/README.md diff --git a/deplist.txt b/deplist.txt new file mode 100644 index 00000000..c6dc5dfa --- /dev/null +++ b/deplist.txt @@ -0,0 +1,13 @@ +# +# *************************************************************************** +# +# Note: This file has been deprecated and exists for backward compatibility. +# Please use package.json to add dependencies to the Node modules +# your application requires. +# +# *************************************************************************** +# + +# +# For a list of globally installed modules - see file: npm_global_module_list. +# diff --git a/index.html b/index.html new file mode 100644 index 00000000..0465d83d --- /dev/null +++ b/index.html @@ -0,0 +1,270 @@ + + + + + + Welcome to OpenShift + + + + + +
+
+

Welcome to your Node.js application on OpenShift

+
+ + +
+
+
+

Deploying code changes

+

OpenShift uses the Git version control system for your source code, and grants you access to it via the Secure Shell (SSH) protocol. In order to upload and download code to your application you need to give us your public SSH key. You can upload it within the web console or install the RHC command line tool and run rhc setup to generate and upload your key automatically.

+ +

Working in your local Git repository

+

If you created your application from the command line and uploaded your SSH key, rhc will automatically download a copy of that source code repository (Git calls this 'cloning') to your local system.

+ +

If you created the application from the web console, you'll need to manually clone the repository to your local system. Copy the application's source code Git URL and then run:

+ +
$ git clone <git_url> <directory_to_create>
+
+# Within your project directory
+# Commit your changes and push to OpenShift
+
+$ git commit -a -m 'Some commit message'
+$ git push
+ + + +
+ +
+
+ +

Managing your application

+ +

Web Console

+

You can use the OpenShift web console to enable additional capabilities via cartridges, add collaborator access authorizations, designate custom domain aliases, and manage domain memberships.

+ +

Command Line Tools

+

Installing the OpenShift RHC client tools allows you complete control of your cloud environment. Read more on how to manage your application from the command line in our User Guide. +

+ +

Development Resources

+ + +
+
+ +
+ +
+
+ + diff --git a/node_modules/.gitkeep b/node_modules/.gitkeep new file mode 100644 index 00000000..e69de29b diff --git a/package.json b/package.json new file mode 100644 index 00000000..b62253bc --- /dev/null +++ b/package.json @@ -0,0 +1,35 @@ +{ + "name": "OpenShift-Sample-App", + "version": "1.0.0", + "description": "OpenShift Sample Application", + "keywords": [ + "OpenShift", + "Node.js", + "application", + "openshift" + ], + "author": { + "name": "OpenShift", + "email": "ramr@example.org", + "url": "http://www.openshift.com/" + }, + "homepage": "http://www.openshift.com/", + "repository": { + "type": "git", + "url": "https://github.com/openshift/origin-server" + }, + + "engines": { + "node": ">= 0.6.0", + "npm": ">= 1.0.0" + }, + + "dependencies": { + "express": "~3.4.4" + }, + "devDependencies": {}, + "bundleDependencies": [], + + "private": true, + "main": "server.js" +} diff --git a/server.js b/server.js new file mode 100755 index 00000000..5fed2f44 --- /dev/null +++ b/server.js @@ -0,0 +1,159 @@ +#!/bin/env node +// OpenShift sample Node application +var express = require('express'); +var fs = require('fs'); + + +/** + * Define the sample application. + */ +var SampleApp = function() { + + // Scope. + var self = this; + + + /* ================================================================ */ + /* Helper functions. */ + /* ================================================================ */ + + /** + * Set up server IP address and port # using env variables/defaults. + */ + self.setupVariables = function() { + // Set the environment variables we need. + self.ipaddress = process.env.OPENSHIFT_NODEJS_IP; + self.port = process.env.OPENSHIFT_NODEJS_PORT || 8080; + + if (typeof self.ipaddress === "undefined") { + // Log errors on OpenShift but continue w/ 127.0.0.1 - this + // allows us to run/test the app locally. + console.warn('No OPENSHIFT_NODEJS_IP var, using 127.0.0.1'); + self.ipaddress = "127.0.0.1"; + }; + }; + + + /** + * Populate the cache. + */ + self.populateCache = function() { + if (typeof self.zcache === "undefined") { + self.zcache = { 'index.html': '' }; + } + + // Local cache for static content. + self.zcache['index.html'] = fs.readFileSync('./index.html'); + }; + + + /** + * Retrieve entry (content) from cache. + * @param {string} key Key identifying content to retrieve from cache. + */ + self.cache_get = function(key) { return self.zcache[key]; }; + + + /** + * terminator === the termination handler + * Terminate server on receipt of the specified signal. + * @param {string} sig Signal to terminate on. + */ + self.terminator = function(sig){ + if (typeof sig === "string") { + console.log('%s: Received %s - terminating sample app ...', + Date(Date.now()), sig); + process.exit(1); + } + console.log('%s: Node server stopped.', Date(Date.now()) ); + }; + + + /** + * Setup termination handlers (for exit and a list of signals). + */ + self.setupTerminationHandlers = function(){ + // Process on exit and signals. + process.on('exit', function() { self.terminator(); }); + + // Removed 'SIGPIPE' from the list - bugz 852598. + ['SIGHUP', 'SIGINT', 'SIGQUIT', 'SIGILL', 'SIGTRAP', 'SIGABRT', + 'SIGBUS', 'SIGFPE', 'SIGUSR1', 'SIGSEGV', 'SIGUSR2', 'SIGTERM' + ].forEach(function(element, index, array) { + process.on(element, function() { self.terminator(element); }); + }); + }; + + + /* ================================================================ */ + /* App server functions (main app logic here). */ + /* ================================================================ */ + + /** + * Create the routing table entries + handlers for the application. + */ + self.createRoutes = function() { + self.routes = { }; + + self.routes['/asciimo'] = function(req, res) { + var link = "http://i.imgur.com/kmbjB.png"; + res.send(""); + }; + + self.routes['/'] = function(req, res) { + res.setHeader('Content-Type', 'text/html'); + res.send(self.cache_get('index.html') ); + }; + }; + + + /** + * Initialize the server (express) and create the routes and register + * the handlers. + */ + self.initializeServer = function() { + self.createRoutes(); + self.app = express.createServer(); + + // Add handlers for the app (from the routes). + for (var r in self.routes) { + self.app.get(r, self.routes[r]); + } + }; + + + /** + * Initializes the sample application. + */ + self.initialize = function() { + self.setupVariables(); + self.populateCache(); + self.setupTerminationHandlers(); + + // Create the express server and routes. + self.initializeServer(); + }; + + + /** + * Start the server (starts up the sample application). + */ + self.start = function() { + // Start the app on the specific interface (and port). + self.app.listen(self.port, self.ipaddress, function() { + console.log('%s: Node server started on %s:%d ...', + Date(Date.now() ), self.ipaddress, self.port); + }); + }; + +}; /* Sample Application. */ + + + +/** + * main(): Main code. + */ +var zapp = new SampleApp(); +zapp.initialize(); +zapp.start(); +