Skip to content

Instantly share code, notes, and snippets.

@jamesbeedy
Created August 29, 2016 22:17
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save jamesbeedy/b02c701df4e34132ea622f78cb30df43 to your computer and use it in GitHub Desktop.
Save jamesbeedy/b02c701df4e34132ea622f78cb30df43 to your computer and use it in GitHub Desktop.
metadata.yaml
name: feed
summary: CreateDrive's FEED Ruby on Rails application.
maintainer: James Beedy <james.beedy@creativedrive.com>
description: |
  This charm provides 'FEED', the product cataloging, 
  sample tracking and project configuration for CreativeDrive's customers.
tags:
  - feed
  - webapp
subordinate: false
series:
  - xenial
provides:
  website:
    interface: http
requires:
  feeddb:
    interface: pgsql
  feedreportdb:
    interface: pgsql
  redis:
    interface: redis
@when('feeddb.connected')
@when_not('feeddb.requested')
def request_feed_database(pgsql):
    """Request feed db
    """

    status_set('maintenance',
               'Requesting PostgreSQL database for FEED.')
    # Request database for FEED
    pgsql.set_database("feed_%s" % RAILS_ENV)
    # Set active status
    status_set('active',
               'PostgreSQL databases requested')
    # Set state
    set_state('feeddb.requested')


@when('feeddb.master.available')
@when_not('feeddb.available')
def get_set_feeddb_data(pgsql):
    """Get/set feeddb details
    """

    # Set maintenance status
    status_set('maintenance',
               'Getting/Setting details for FEED db.')
    # Create PG_DATA dict
    FEED_DB_DATA = {'user': pgsql.master.user,
                    'pass': pgsql.master.password,
                    'host': pgsql.master.host,
                    'db': pgsql.master.dbname}
    # Set data in kv store
    kv.set('FEED_DB_DATA', FEED_DB_DATA)
    status_set('active', 'feed_%s available' % RAILS_ENV)
    # Set state
    set_state('feeddb.available')


@when('feedreportdb.connected')
@when_not('feedreportdb.requested')
def request_feed_report_database(pgsql):
    """Request reporting db for feed
    """

    status_set('maintenance',
               'Requesting reporting database for FEED.')
    # Request reporting database for FEED
    pgsql.set_database("feed_report_%s" % RAILS_ENV)
    # Set active status
    status_set('active', 'feed_report_%s available' % RAILS_ENV)
    # Set state
    set_state('feedreportdb.requested')


@when('feedreportdb.master.available')
@when_not('feedreportdb.available')
def get_set_feed_report_db_data(pgsql):
    """Get/set feedreportdb details
    """

    # Set maintenance status
    status_set('maintenance',
               'Getting/Setting details for FEED report db.')
    # Create PG_DATA dict
    FEED_REPORT_DB_DATA = {'user': pgsql.master.user,
                           'pass': pgsql.master.password,
                           'host': pgsql.master.host,
                           'db': pgsql.master.dbname}
    # Set data in kv store
    kv.set('FEED_REPORT_DB_DATA', FEED_REPORT_DB_DATA)
    # Set active status
    log('Postgres connected : %s' % str(FEED_REPORT_DB_DATA))
    status_set('active', ('%s connected.' % pgsql.master))
    # Set state
    set_state('feedreportdb.available')
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment