Skip to content
Permalink
Browse files
Remember previous config, use them as defaults - closes #6
  • Loading branch information
brogand93 committed Jun 21, 2014
1 parent 4061611 commit 95fd991593e4cbb4d626cf7a3a4e034573f1ed75
Show file tree
Hide file tree
Showing 2 changed files with 58 additions and 31 deletions.
@@ -21,6 +21,8 @@
import sys

from flask import Flask
from ConfigParser import SafeConfigParser

from gstack.core import db


@@ -47,6 +49,14 @@ def _load_database():
return 'sqlite:///' + database_file


def _config_from_config_profile(config_file, profile='initial'):
config = SafeConfigParser()
config.read(config_file)

for attribute in config.options(profile):
app.config[attribute.upper()] = config.get(profile, attribute)


def configure_app(settings=None):
app.config['DATA'] = os.path.abspath(os.path.dirname(__file__)) + '/data'

@@ -57,7 +67,7 @@ def configure_app(settings=None):
else:
config_file = _load_config_file()
database_uri = _load_database()
app.config.from_pyfile(config_file)
_config_from_config_profile(config_file)
app.config['SQLALCHEMY_DATABASE_URI'] = database_uri


@@ -18,6 +18,7 @@


import os
import ConfigParser

from alembic import command
from alembic.config import Config as AlembicConfig
@@ -38,48 +39,64 @@ def _create_config_folder():


def _create_config_file(config_folder):
config_file = open(config_folder + '/gstack.conf', 'w+')
config_file_path = config_folder + '/gstack.conf'
config = _modify_config_profile(config_file_path)
config_file = open(config_file_path, 'w+')
config.write(config_file)

config_file.write('PATH = \'%s\'\n' % 'compute/v1/projects/')

gstack_address = raw_input('gstack bind address [0.0.0.0]: ')
if gstack_address == '':
gstack_address = '0.0.0.0'
config_file.write('GSTACK_BIND_ADDRESS = \'%s\'\n' % gstack_address)
def _modify_config_profile(config_file, profile='initial'):
config = ConfigParser.SafeConfigParser()
config.read(config_file)

gstack_port = raw_input('gstack bind port [5000]: ')
if gstack_port == '':
gstack_port = '5000'
config_file.write('GSTACK_PORT = \'%s\'\n' % gstack_port)
if not config.has_section(profile):
config.add_section(profile)

cloudstack_host = raw_input('Cloudstack host [localhost]: ')
if cloudstack_host == '':
cloudstack_host = 'localhost'
config_file.write('CLOUDSTACK_HOST = \'%s\'\n' % cloudstack_host)
config = _set_attribute_of_profile(
config, profile, 'gstack_bind_address', 'gstack bind address', 'localhost'
)
config = _set_attribute_of_profile(
config, profile, 'gstack_port', 'gstack bind port', '5000'
)
config = _set_attribute_of_profile(
config, profile, 'cloudstack_host', 'Cloudstack host', 'localhost'
)
config = _set_attribute_of_profile(
config, profile, 'cloudstack_port', 'Cloudstack port', '8080'
)
config = _set_attribute_of_profile(
config, profile, 'cloudstack_protocol', 'Cloudstack protocol', 'http'
)
config = _set_attribute_of_profile(
config, profile, 'cloudstack_path', 'Cloudstack path', '/client/api'
)

cloudstack_port = raw_input('Cloudstack port [8080]: ')
if cloudstack_port == '':
cloudstack_port = '8080'
config_file.write('CLOUDSTACK_PORT = \'%s\'\n' % cloudstack_port)
return config

cloudstack_protocol = raw_input('Cloudstack protocol [http]: ')
if cloudstack_protocol == '':
cloudstack_protocol = 'http'
config_file.write('CLOUDSTACK_PROTOCOL = \'%s\'\n' % cloudstack_protocol)

cloudstack_path = raw_input('Cloudstack path [/client/api]: ')
if cloudstack_path == '':
cloudstack_path = '/client/api'
config_file.write('CLOUDSTACK_PATH = \'%s\'\n' % cloudstack_path)
def _set_attribute_of_profile(config, profile, attribute, message, default):
if config.has_option(profile, attribute):
default = config.get(profile, attribute)

config_file.close()
attribute_value = _read_in_config_attribute_or_use_default(message, default)

config.set(profile, attribute, attribute_value)
return config


def _read_in_config_attribute_or_use_default(message, default):
attribute = raw_input(message + ' [' + default + ']: ')
if attribute == '':
attribute = default

return attribute


def _create_database():
directory = os.path.join(os.path.dirname(__file__), '../migrations')
config = AlembicConfig(os.path.join(
database_config = AlembicConfig(os.path.join(
directory,
'alembic.ini'
))
config.set_main_option('script_location', directory)
command.upgrade(config, 'head', sql=False, tag=None)
database_config.set_main_option('script_location', directory)
command.upgrade(database_config, 'head', sql=False, tag=None)

0 comments on commit 95fd991

Please sign in to comment.