Coder Social home page Coder Social logo

stashboard's Introduction

Stashboard

Build Status

Stashboard was written by Twilio to provide status information on our phone, SMS, and Communication APIs. We open sourced the code to provide a generic status page designed to be customized by any hosted services company to provide customers up-to-date status information. The code can be downloaded, customized with your logo, and run on any Google App Engine account.

Installation

  1. Download and install the App Engine SDK for Python
  2. git clone git://github.com/twilio/stashboard.git
  3. Add your application id to app.yaml
  4. Open the SDK, choose File > Add Existing Application... and select the stashboard folder inside the cloned repository
  5. Update the settings in settings.py
  6. Visit http://your-app-id.appspot.com/admin/setup to complete the installation

From here you can either run Stashboard locally in the App Engine development environment or deploy to Appspot. See the Getting Started guide for a basic overview of the App Engine platform.

Demo

The most recent version of Stashboard lives at http://stashboard.appspot.com

Documentation

Full documentation can be found on Read The Docs

Community

All Stashboard development and discussion happens in the Stashboard google group

To keep up to date, you can follow @stashboard on Twitter or join the #stashboard channel on freenode

Development

You'll need to install a couple more packages to hack on Stashboard

pip install -r requirements.txt

To run the unit tests,

python tests/runner.py tests

Future

The roadmap details future plans for Stashboard.

Acknowledgements

stashboard's People

Contributors

adamsb6 avatar cbarbara avatar charlie-twilio avatar dmathieu avatar hblanks avatar izmmisha avatar kelnos avatar kimberlockhart avatar kkuchta avatar kyleconroy avatar mginnard avatar resmo avatar sijis avatar szuecs avatar vamsiikrishna avatar victortrac avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

stashboard's Issues

Updating status doesn't change main page icon

If I update the status via API or even mannually, despite the status internally(DB) is right.
The status changes on the front page does not update, one workaround is to set the status of another service manually that refreshes the main page.

Alredy played with some cache options but had no luck.

Persistent Statuses

If I change the status and add a message on Feb. 4 lets say, then don't on Feb. 5, the current status will still say down but Feb 5. says Up. Also, if a service says down, but as mentioned above it wasn't the day you posted the status, if you click on the current down symbol, it gives a check mark saying nothing is wrong.

OAuth 1.0 has been officially deprecated as of April 20, 2012

Hi,

As per your documentation and link at: http://stashboard.readthedocs.org/en/latest/quickstart.html

If you’re planning on authenicating using the REST API, you need to register your application with Google to get your CONSUMER_KEY and CONSUMER_SECRET values.

The google link (https://accounts.google.com/ManageDomains) shows the following message:

Important: OAuth 1.0 has been officially deprecated as of April 20, 2012. It will continue to work as per our deprecation policy but we encourage you to migrate to OAuth 2.0 as soon as possible. For details about how to do this, see Migrating from OAuth 1.0 to OAuth 2.0. To get help on Stack Overflow, tag your questions with 'google-oauth'.

Since google had deprecated this long time back, I searched a lot for changes related to OAuth 2.0 integration. However, there were no info related to this. Could you please point me to the right direction, if it is a solved issue?
If not, I would really appreciate any help in this regard.

admin/ section is unprotected

I have tried doing a local deployment (#64) and it seems that there is no authentication on the admin/ section.

Now I understand the recommended way of using this software is on Google's servers, but I would like to avoid that for various economic and political reasons.

What is the recommended way of protecting the "write" interface to the software? Is it limited to the /admin directory? In that case it may be possible to simply use Apache or another webserver to setup a proxy with authentication...

Other ideas?

For AppEngine Datastore - Namespace implementation exists?

I am using stashbaord on AppEngine platform. But I have other services there and to build multi-tenant app. I need to change the stashboard's datastore's namespace. So stashboard will be separated from our default datastore namespace.

Is there any easy way to implement that or can we specify the datastore namespace in settings.py file?

I think it's essential for others too!

Twitter update doesn't work with unicode chars.

Hi there,

It seems that the Twitter update feature only works with ASCII characters, I was wondering if it would be possible to support Unicode ? Here is the error I get when I'm sending this char for exemple: é

'ascii' codec can't encode character u'\xe9' in position 62: ordinal not in range(128).
UnicodeEncodeError: 'ascii' codec can't encode character u'\xe9' in position 62: ordinal not in range(128).

Thank you and nice work, that project is great :)

Pascal

Problem in Using Jersey to develop StashBoard API client (POST requests)

Hello,

I am using apache jersey client libraries to develop StashBoard API client which will allow me to update status of a particular service using client program.

I am using following code in java to create Oauth consumer:
private void CreateOAuthClient() {
this.sbClient = Client.create();

    this.sbOAuthParams = new OAuthParameters();
    this.sbOAuthSecrets = new OAuthSecrets();

    this.sbOAuthParams.consumerKey(this.SB_CONSUMER_KEY).signatureMethod("HMAC-SHA1");
    this.sbOAuthSecrets.consumerSecret(this.SB_CONSUMER_SECRET);

    this.sbOAuthParams.token(this.SB_OAUTH_TOKEN_KEY).signatureMethod("HMAC-SHA1");
    this.sbOAuthSecrets.tokenSecret(this.SB_OAUTH_TOKEN_SECRET);

    this.sbOAuthClientFilter = new OAuthClientFilter(sbClient.getProviders() , sbOAuthParams, sbOAuthSecrets);                

    this.sbWebResource = this.sbClient.resource(strBaseUrl);
    this.sbWebResource.addFilter(sbOAuthClientFilter);
}

But when I try to do a POST I get HTTP 400 error. The code to call POST on /api/v1/services/{service}/events is as follows:

JSONObject newEvent = new JSONObject();
newEvent.put("status", "up");
newEvent.put("message", "working again!!!");
sbWebResource.path("services").path(prmServiceId).path("events").type(MediaType.APPLICATION_JSON_TYPE).post(newEvent);

Please let me know if I am doing something wrong.

BTW the service defination expects a JSON object right ?? (At least that is what I could find out by looking client examples for PHP/ruby on your website)

Error authorizing my account with StashBoard

Whenever I click "Authorize Now" I get a simple message immediately "Getting Request Token failed".

It doesn't matter if this is over http or https. When I leave the CONSUMER_KEY and CONSUMER_SECRET set to "anonymous" it works fine, but the moment I enter the credentials I've generated in my App Engine Dashboard it errors out.

Is there a fix to this? Is this because of OAuth1 vs OAuth 2?

Accessing Admin interface

How can I access the web-based admin interface? I saw a commit with admin.py but in the downloaded code, it is missing.

Can't update Stashboard using API

I can login to appspot.com and manually edit Stashboard, but the API fails with 403 errors using both the Python and Ruby example clients.

I'm using the consumer key and secret I got when registering the app with Google. This is from the logs when I used both example clients:

  1. 11-02 09:40PM 05.142 /api/v1/statuses 403 25ms 38cpu_ms 0kb OAuth gem v0.4.4,gzip(gfe)
    See details
  72.10.62.12 - - [02/Nov/2010:21:40:05 -0700] "POST /api/v1/statuses HTTP/1.1" 403 189 - "OAuth gem v0.4.4,gzip(gfe)" "REMOVED.appspot.com" ms=26 cpu_ms=38 api_cpu_ms=0 cpm_usd=0.001146
  1. E 11-02 09:40PM 05.160
  Unauthorized API access attempt

  1. 11-02 09:38PM 17.442 /api/v1/services 403 22ms 19cpu_ms 0kb Python-httplib2/$Rev$,gzip(gfe)
    See details
  72.10.62.12 - - [02/Nov/2010:21:38:17 -0700] "POST /api/v1/services HTTP/1.1" 403 189 - "Python-httplib2/$Rev$,gzip(gfe)" "REMOVED.appspot.com" ms=23 cpu_ms=19 api_cpu_ms=0 cpm_usd=0.000601
  1. E 11-02 09:38PM 17.458
  Unauthorized API access attempt

Nginx Question

it is possible to run with nginx? as? any documentation about this?

Getting Request Token failed

Trying to authorize with StashApp so I can post to twitter and all of that, but I'm getting the following error:

Getting Request Token failed

Any ideas?

Update to Django

Google AppEngine now seams to bundle django 1.2
That whole trouble of messing with updating django can be avoided by changing use_library('django', '1.1') to use_library('django', '1.2')

RSS Feeds not working?

Not sure if anyone has seen this yet but when you take the RSS feed and ad it to google reader it says there's not feed there. Am I missing something?

Future status changes for planned outages

This is a feature request. I don't know if this should go here or in the Google Group.

I would like to add a status for a future date to allow users to anticipate a planned outage.

A question about images license

Hi the team,

I'm sorry for getting this late.

I intended to use #stashboard; unfortunately that requires #gce account that's not at my side. So I decided to write some small scripts to provide a status dashboard. My purpose is to have a quick way to fetch data from my Zabbix console and other source. The work is here https://github.com/icy/wohstatus. In that project I use some images from your team (listed here https://github.com/icy/wohstatus/tree/master/output/images ).

I have read the license of the #stashboard, but I don't really understand if using the images are permitted. Please take a look and let me know. If there is any problem, I will remove the images from wohstatus.

Thank you very much and I'm sorry for any inconvenience.

Images on Create/Edit Status

When i create a new status, i do not have any options to choose an image. It has the title of Images, but no option box or selection.

OAuth Credentials

Having trouble accessing my /documentation/credentials page, it says I must be admin, and I'm logged into google app engine as the admin but still cannot access it. This seems super trivial, so any help would be greatly appreciated!

Thanks!

Jon

Add Pingdom support

Please can you integrate Pingdom polling so the status page can automatically update?

Question about installing

Open the SDK, choose File > Add Existing Application... and select the stashboard folder inside the cloned repository
What do you mean SDK? google cloud sdk? It's only bash basically, explain?

Default status of a service for a day

When looking at the main landing page, for any given service, the web page shows that the service is at the level NORMAL if no information for that particular date is given. Sometimes this can be too optimistic.

It would be great if we can set the default level for a service.

This only effects the web GUI.

cheers

OAuth - Authentication fails

After deploying application to Google , I was able to get API Credentials.

Customer Name - anonymous , OAuthToken -xxxxxxxxxx OAuthSecret - yyyyyyyyy.

I was able to add services via interface, but POST requests via API always fail.

I have tried Python and PHP samples, and also other java lib for OAuth , no success.

Here is what I get as a response: Response: 403 errore {"message": "Authorization Failure", "code": 403, "error": true}.

Will much appreciate any help.

{"code": 500, "error": true}

After following the directions and deploying to app engine, I only get this "{"code": 500, "error": true}". I've tried several deployments and even downgraded to version 1.1.5.

Here's what the log says:
Traceback (most recent call last):
File "/base/python_runtime/python_lib/versions/1/google/appengine/ext/webapp/init.py", line 511, in call
handler.get(_groups)
File "/base/data/home/apps/rm-status/1.345968616742131117/utils/authorized.py", line 57, in check_ssl
handler_method(self, *args, *_kwargs)
File "/base/data/home/apps/rm-status/1.345968616742131117/handlers/site.py", line 142, in get
td = default_template_data()
File "/base/data/home/apps/rm-status/1.345968616742131117/handlers/site.py", line 71, in default_template_data
greeting = users.create_login_url("/")
File "/base/python_runtime/python_lib/versions/1/google/appengine/api/users.py", line 223, in create_login_url
raise NotAllowedError
NotAllowedError

Any ideas?

history Backup

Hi,

I have missed the history of status details in my stashboard. Is there anyway to get the details again . I have run the stashboard locally.

Twitter

Would love to see a feature to push status updates to twitter. Or an RSS feed. Basically so that updates could get automatically published to various feeds.

code sample and doc fix

  • change application-id to application: in the "Deploy to AppSpot" docs
  • in the python example code, change:
    severity": 10000,
    to:
    "level": "WARNING",
    ...or ERROR, etc.
  • Update API docs to reflect that INFO is no longer available

{
"levels": [
"INFO",
"NORMAL",
"WARNING",
"ERROR",
"CRITICAL",]
}

Installation only gives "hello world" when run

I've tried a few versions including the latest (1.1.6) but every time I follow the instructions to install it, I simply see "Hello world!" after running Stashboard. When I install it on a Mac using GoogleAppEngineLauncher, there are no errors in the log, just a couple of deprecation warnings. It doesn't appear that main.py is getting installed correctly from Stashboard. This is what's in it every time I try to add a new app:

!/usr/bin/env python

Copyright 2007 Google Inc.

Licensed under the Apache License, Version 2.0 (the "License");

you may not use this file except in compliance with the License.

You may obtain a copy of the License at

http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software

distributed under the License is distributed on an "AS IS" BASIS,

WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.

See the License for the specific language governing permissions and

limitations under the License.

from google.appengine.ext import webapp
from google.appengine.ext.webapp import util

class MainHandler(webapp.RequestHandler):
def get(self):
self.response.out.write('Hello world!')

def main():
application = webapp.WSGIApplication([('/', MainHandler)],
debug=True)
util.run_wsgi_app(application)

if name == 'main':
main()

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.