Giter VIP home page Giter VIP logo

stackdio's Introduction

stackd.io

Build Status PyPi Version Coverage Status Documentation Status

stackd.io is a web-based tool for managing, provisioning, and orchestrating cloud infrastructure without the need for a background in systems engineering.

Getting started

Please see our Quick Start Guide for a fast track to installing stackd.io

Contributing

We are an open-source project and we depend on folks like you to help move the project forward. You don't even have to know how to code to help us out! If you find problems in our documentation or screencasts, encounter bugs, or see some missing piece of functionality that would make stackd.io that more awesome, kindly drop us a note or submit an issue. If you do know how to code and you want to get your hands dirty, take a shot at one of our outstanding issues and submit a pull request. Please take a look at our contributor guidelines before submitting pull requests though.

Contact us

As always, we are constantly working to improve the usability and usefulness of stackd.io. If you ever have any questions, comments, or find any problems, please contact us at any of the places below or file an issue and we'll be glad to help!

stackdio's People

Contributors

abemusic avatar clarkperkins avatar cpenner461 avatar stevebrownlee avatar wlphoenix avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar

stackdio's Issues

Manage dead hosts that salt still knows about

Narrative

Sometimes we run into an issue where salt still keeps track of keys for hosts that have died or been deleted (usually on spot clusters). This takes a big hit on performance when salt is provisioning or orchestrating, so it would be good if we can automatically delete these keys from salt. After talking with @WLPhoenix, we think it would be good if we can have a cron job that will periodically check the status of all salt minions and delete keys for minions that are non-responsive.

Development Tasks

Write a cron job that:

  1. Purges the keys for all hosts living in terminated, or deleted stacks
  2. For any stack that has all hosts dead, change the status to either terminated or stopped depending on the status of the hosts
  3. Attempt to re-launch & re-provision stacks which have some hosts that have died
  • Part 3 could be kind of hairy, because sometimes the hosts are still alive and just the minion daemon has died
  • This will never delete a stack from the stackdio database, only alter its status
  • We DO NOT want to delete keys for stopped stacks. When you try to start them again, they reuse the same keys. Salt cloud does not regenerate keys in this case.

Note: This would all be done using some combination salt-cloud -Q to check the status of the hosts and salt manage.down to see a list of unresponsive hosts.

Owner Tags Missing

I have noticed that we are having some issues where owner tags are not being put on clusters that are stood up. I have noticed some issues with the name tag not showing up sometimes as well.

The /api/version/ endpoint returns a 500 server error

Stack trace:

Traceback:
File "/home/stackdio/.virtualenvs/stackdio/lib/python2.6/site-packages/django/core/handlers/base.py" in get_response
  113.                         response = callback(request, *callback_args, **callback_kwargs)
File "/home/stackdio/.virtualenvs/stackdio/lib/python2.6/site-packages/django/views/generic/base.py" in view
  68.             return self.dispatch(request, *args, **kwargs)
File "/home/stackdio/.virtualenvs/stackdio/lib/python2.6/site-packages/django/views/decorators/csrf.py" in wrapped_view
  77.         return view_func(*args, **kwargs)
File "/home/stackdio/.virtualenvs/stackdio/lib/python2.6/site-packages/rest_framework/views.py" in dispatch
  400.             response = self.handle_exception(exc)
File "/home/stackdio/.virtualenvs/stackdio/lib/python2.6/site-packages/rest_framework/views.py" in dispatch
  397.             response = handler(request, *args, **kwargs)
File "/home/stackdio/stackdio/stackdio/server/core/api.py" in get
  113.         from stackdio import get_version

Exception Type: ImportError at /api/version/
Exception Value: cannot import name get_version

Make image_id an editable field on profiles

There's currently no way to upgrade a backing profile without re-creating all blueprints that depend on it (either by creating a new profile or deleting it and re-creating). Making image_id editable would fix that.

Schedule termination and deletion of stacks

I would like to have the ability to schedule a stack for termination. This would give me the option of scheduling stacks to be deleted when they are no longer necessary. Say I only need a stack for 2 weeks, then I can schedule a stack to be automatically deleted in two weeks.

Blueprints can change names, but the props file doesn't get moved to the new location

Currently, the API allows you to change the name of the blueprint, which is desired. However, the location of the props file on the file system is dependent on the blueprint name, and that location isn't changed when the name is changed. Therefore, if you were to rename a blueprint, then create a new blueprint with the same name as the old one, your properties for the two blueprints would reference the same file and be forever linked.

UI improvements

The UI really needs some work to be ship-shape for a public release. Known issues include:

  • No error handling
  • Unable to edit blueprints
  • Enable/disable issues (#152 for example)

Feel free to add more as found.

We need to decide if it's worth continuing on with the current UI framework, or if it's better to cut our losses and start from scratch with something like Angular.

Blueprints with different orders across hosts

The api will allow you to create a blueprint that has different orderings for the same role on different hosts. We should catch this at blueprint creation time.

The biggest issue here is that it could cause circular requisites in the overstate file, and neither stackdio nor salt will catch this, so you end up with a "maximum recursion depth exceeded" error.

Add termination protection

We want the ability to enable termination protection on stacks in order to avoid accidentally deleting the wrong stack.

Development Tasks

  • Add 'protected' as an attribute to the Stack model
  • If 'protected' is set, turn on termination protection when launching stacks
  • Also if 'protected' is set, remove 'Delete' and 'Terminate' from the available actions.

Re-think how stackdio handles permissions

We're running into issues with administrators trying to create and manage blueprints that other users can then launch. It's worth looking at whether a [create,edit,launch,delete,etc] permission per object would make more sense than our current model of owners and admins.

Unhandled Exception after timeout on stack delete

[2014-11-03 10:06:00,059: ERROR/MainProcess] Task stacks.destroy_hosts[4063f2b2-6b80-423b-8825-299bd2b38faa] raised exception: APIException()
Traceback (most recent call last):
  File "/home/stackdio/.virtualenvs/stackdio/lib/python2.6/site-packages/celery/task/trace.py", line 233, in trace_task
    R = retval = fun(*args, **kwargs)
  File "/home/stackdio/.virtualenvs/stackdio/lib/python2.6/site-packages/celery/task/trace.py", line 420, in __protected_call__
    return self.run(*args, **kwargs)
  File "/home/stackdio/stackdio/stackdio/server/stacks/tasks.py", line 1916, in destroy_hosts
    driver.delete_security_group(security_group.name)
  File "/home/stackdio/stackdio/stackdio/server/cloud/providers/aws.py", line 540, in delete_security_group
    raise BadRequest(e.error_message)
BadRequest

It looks like what's happening is a host takes an exceptionally long time to shut down, which is fine. StackdIO gives a reasonable time-out error for that. After that, it doesn't detect that there are hosts to shut down, and proceeds to immediately try to delete the security group. Because that host still exists, it fails at the AWS level.

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.