blob: 6be6a064f469bc5cd2084efc7fb7d7bc0b2bc633 [file] [log] [blame]
#!/usr/bin/env python
# encoding: utf-8
# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements. See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership. The ASF licenses this file
# to you 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.
import os
import sys
import argparse
from flask import Flask
from ConfigParser import SafeConfigParser
from gstack.core import db
def _generate_args():
parser = argparse.ArgumentParser()
parser.add_argument(
'-p',
'--profile',
required=False,
help='The profile to run gstack with, default is initial',
default='initial'
)
parser.add_argument(
'-d',
'--debug',
required=False,
help='Turn debug on for application',
default=False
)
args = parser.parse_args()
return vars(args)
def _load_config_file():
config_file = os.path.join(
os.path.expanduser('~'),
'.gstack/gstack.conf'
)
if not os.path.exists(config_file):
sys.exit('No configuration found, please run gstack-configure')
return config_file
def _load_database():
database_file = os.path.join(
os.path.expanduser('~'),
'.gstack/gstack.sqlite'
)
if not os.path.exists(database_file):
sys.exit('No database found, please run gstack-configure')
return 'sqlite:///' + database_file
def _config_from_config_profile(config_file, profile):
config = SafeConfigParser()
config.read(config_file)
if not config.has_section(profile):
sys.exit('No profile matching ' + profile
+ ' found in configuration, please run gstack-configure -p '
+ profile)
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'
app.config['PATH'] = 'compute/v1/projects/'
db.init_app(app)
if settings:
app.config.from_object(settings)
else:
args = _generate_args()
profile = args.pop('profile')
app.config['DEBUG'] = args.pop('debug')
config_file = _load_config_file()
database_uri = _load_database()
_config_from_config_profile(config_file, profile)
app.config['SQLALCHEMY_DATABASE_URI'] = database_uri
app = Flask(__name__)
publickey_storage = {}
from gstack.controllers import *
basedir = os.path.abspath(os.path.dirname(__file__))