示例#1
0
def main(global_config, **settings):
    """This function returns a Pyramid WSGI application."""
    if not settings.keys():
        settings = global_config

    settings = {}
    from mist.io.model import User

    # migrate settings.yaml to db.yaml
    try:
        with open('settings.yaml', 'r') as config_file:
            log.info("Found settings.yaml, migrating...")
            data = config_file.read()
            with open('db.yaml', 'w') as db_file:
                db_file.write(data)
        os.rename('settings.yaml', 'settings.yaml.backup')
        user = User()
        with user.lock_n_load():
            for key in ['core_uri', 'js_build', 'js_log_level']:
                if key in user._dict:
                    del user._dict[key]
            user.save()

        from mist.io.model import Machine
        with user.lock_n_load():
            for backend in user.backends.values():
                if 'list_of_machines' in backend._dict:
                    list_of_machines = backend._dict['list_of_machines']
                    for old_machine in list_of_machines:
                        machine_id = old_machine.get('id')
                        machine_hostname = old_machine.get('hostname')
                        print("Migrating %s(%s) for user %s" %
                              (machine_id, machine_hostname, user.email))
                        if not machine_id or not machine_hostname:
                            print " *** ERROR MIGRATING, SKIPPING *** "
                            continue
                        if machine_id not in backend.machines:
                            backend.machines[machine_id] = Machine()
                        machine = backend.machines[machine_id]
                        machine.dns_name = machine_hostname
                        machine.public_ips.append(machine_hostname)
                        machine.name = machine_hostname
                    del backend._dict['list_of_machines']
            user.save()
    except IOError as exc:
        # settings.yaml doesn't exist, continue
        pass

    configurator = Configurator(root_factory=Root, settings=settings)

    # Add custom adapter to the JSON renderer to avoid serialization errors
    json_renderer = JSON()

    def string_adapter(obj, request):
        return str(obj)

    json_renderer.add_adapter(object, string_adapter)
    configurator.add_renderer('json', json_renderer)
    configurator.add_static_view('resources', 'mist.io:static')
    configurator.add_static_view('docs', path='../../../docs/build')
    configurator.include(add_routes)
    configurator.scan()
    app = configurator.make_wsgi_app()

    return app
示例#2
0
def main(global_config, **settings):
    """This function returns a Pyramid WSGI application."""
    if not settings.keys():
        settings = global_config

    settings = {}
    from mist.io.model import User

    # migrate settings.yaml to db.yaml
    try:
        with open('settings.yaml', 'r') as config_file:
            log.info("Found settings.yaml, migrating...")
            data = config_file.read()
            with open('db.yaml', 'w') as db_file:
                db_file.write(data)
        os.rename('settings.yaml', 'settings.yaml.backup')
        user = User()
        with user.lock_n_load():
            for key in ['core_uri', 'js_build', 'js_log_level']:
                if key in user._dict:
                    del user._dict[key]
            user.save()

        from mist.io.model import Machine
        with user.lock_n_load():
            for backend in user.backends.values():
                if 'list_of_machines' in backend._dict:
                    list_of_machines = backend._dict['list_of_machines']
                    for old_machine in list_of_machines:
                        machine_id = old_machine.get('id')
                        machine_hostname = old_machine.get('hostname')
                        print ("Migrating %s(%s) for user %s" %
                               (machine_id, machine_hostname, user.email))
                        if not machine_id or not machine_hostname:
                            print " *** ERROR MIGRATING, SKIPPING *** "
                            continue
                        if machine_id not in backend.machines:
                            backend.machines[machine_id] = Machine()
                        machine = backend.machines[machine_id]
                        machine.dns_name = machine_hostname
                        machine.public_ips.append(machine_hostname)
                        machine.name = machine_hostname
                    del backend._dict['list_of_machines']
            user.save()
    except IOError as exc:
        # settings.yaml doesn't exist, continue
        pass


    configurator = Configurator(root_factory=Root, settings=settings)

    # Add custom adapter to the JSON renderer to avoid serialization errors
    json_renderer = JSON()
    def string_adapter(obj, request):
        return str(obj)
    json_renderer.add_adapter(object, string_adapter)
    configurator.add_renderer('json', json_renderer)
    configurator.add_static_view('resources', 'mist.io:static')
    configurator.add_static_view('docs', path='../../../docs/build')
    configurator.include(add_routes)
    configurator.scan()
    app = configurator.make_wsgi_app()

    return app
示例#3
0
def main(global_config, **settings):
    """This function returns a Pyramid WSGI application."""
    if not settings.keys():
        settings = global_config

    settings = {}
    from mist.io.model import User

    # migrate settings.yaml to db.yaml
    try:
        with open('settings.yaml', 'r') as config_file:
            log.info("Found settings.yaml, migrating...")
            data = config_file.read()
            with open('db.yaml', 'w') as db_file:
                db_file.write(data)
        os.rename('settings.yaml', 'settings.yaml.backup')
        user = User()
        with user.lock_n_load():
            for key in ['core_uri', 'js_build', 'js_log_level']:
                if key in user._dict:
                    del user._dict[key]
            user.save()

        from mist.io.model import Machine
        with user.lock_n_load():
            for backend in user.backends.values():
                if 'list_of_machines' in backend._dict:
                    list_of_machines = backend._dict['list_of_machines']
                    for old_machine in list_of_machines:
                        machine_id = old_machine.get('id')
                        machine_hostname = old_machine.get('hostname')
                        print("Migrating %s(%s) for user %s" %
                              (machine_id, machine_hostname, user.email))
                        if not machine_id or not machine_hostname:
                            print " *** ERROR MIGRATING, SKIPPING *** "
                            continue
                        if machine_id not in backend.machines:
                            backend.machines[machine_id] = Machine()
                        machine = backend.machines[machine_id]
                        machine.dns_name = machine_hostname
                        machine.public_ips.append(machine_hostname)
                        machine.name = machine_hostname
                    del backend._dict['list_of_machines']
            user.save()
    except IOError as exc:
        # settings.yaml doesn't exist, continue
        pass

    ## user = User()   # this automatically loads from db.yaml
    ## # try to authenticate with mist.io service if email,password are available
    ## if user.email and user.mist_api_token:
    ## from mist.io.helpers import get_auth_header
    ## try:
    ## ret = requests.post(mist.io.config.CORE_URI + '/auth',
    ## headers={'Authorization': get_auth_header(user)},
    ## verify=mist.io.config.SSL_VERIFY)
    ## except requests.exceptions.SSLError as exc:
    ## log.error("SSL Error when communicating with %s: %s",
    ## mist.io.config.CORE_URI, exc)
    ## else:
    ## if ret.status_code == 200:
    ## log.info("Succesfully authenticated to mist.io service.")
    ## ret = json.loads(ret.content)
    ## # all these are no longer used. Also settings is not a safe
    # place to put info since it's worker dependant
    ## settings['current_plan'] = ret.get('current_plan', {})
    ## # FIXME: do we really need the following params?
    ## user_details = ret.get('user_details', {})
    ## settings['user']['name'] = user_details.get('name', '')
    ## settings['user']['company_name'] = user_details.get('company_name', '')
    ## settings['user']['country'] = user_details.get('country', '')
    ## settings['user']['number_of_servers'] = user_details.get('number_of_servers', '')
    ## settings['user']['number_of_people'] = user_details.get('number_of_people', '')
    ## else:
    ## log.error("Error authenticating to mist.io service. %d: %s", ret.status_code, ret.text)

    config = Configurator(root_factory=Root, settings=settings)

    # Add custom adapter to the JSON renderer to avoid serialization errors
    json_renderer = JSON()

    def string_adapter(obj, request):
        return str(obj)

    json_renderer.add_adapter(object, string_adapter)
    config.add_renderer('json', json_renderer)
    config.add_static_view('resources', 'mist.io:static')
    config.add_static_view('docs', path='../../../docs/build')
    config.include(add_routes)
    config.scan()
    app = config.make_wsgi_app()

    return app
示例#4
0
def main(global_config, **settings):
    """This function returns a Pyramid WSGI application."""
    if not settings.keys():
        settings = global_config

    settings = {}
    from mist.io.model import User

    # migrate settings.yaml to db.yaml
    try:
        with open('settings.yaml', 'r') as config_file:
            log.info("Found settings.yaml, migrating...")
            data = config_file.read()
            with open('db.yaml', 'w') as db_file:
                db_file.write(data)
        os.rename('settings.yaml', 'settings.yaml.backup')
        user = User()
        with user.lock_n_load():
            for key in ['core_uri', 'js_build', 'js_log_level']:
                if key in user._dict:
                    del user._dict[key]
            user.save()

        from mist.io.model import Machine
        with user.lock_n_load():
            for backend in user.backends.values():
                if 'list_of_machines' in backend._dict:
                    list_of_machines = backend._dict['list_of_machines']
                    for old_machine in list_of_machines:
                        machine_id = old_machine.get('id')
                        machine_hostname = old_machine.get('hostname')
                        print ("Migrating %s(%s) for user %s" %
                               (machine_id, machine_hostname, user.email))
                        if not machine_id or not machine_hostname:
                            print " *** ERROR MIGRATING, SKIPPING *** "
                            continue
                        if machine_id not in backend.machines:
                            backend.machines[machine_id] = Machine()
                        machine = backend.machines[machine_id]
                        machine.dns_name = machine_hostname
                        machine.public_ips.append(machine_hostname)
                        machine.name = machine_hostname
                    del backend._dict['list_of_machines']
            user.save()
    except IOError as exc:
        # settings.yaml doesn't exist, continue
        pass

    ## user = User()   # this automatically loads from db.yaml
    ## # try to authenticate with mist.io service if email,password are available
    ## if user.email and user.mist_api_token:
        ## from mist.io.helpers import get_auth_header
        ## try:
            ## ret = requests.post(mist.io.config.CORE_URI + '/auth',
                                ## headers={'Authorization': get_auth_header(user)},
                                ## verify=mist.io.config.SSL_VERIFY)
        ## except requests.exceptions.SSLError as exc:
            ## log.error("SSL Error when communicating with %s: %s",
                      ## mist.io.config.CORE_URI, exc)
        ## else:
            ## if ret.status_code == 200:
                ## log.info("Succesfully authenticated to mist.io service.")
                ## ret = json.loads(ret.content)
                ## # all these are no longer used. Also settings is not a safe
                # place to put info since it's worker dependant
                ## settings['current_plan'] = ret.get('current_plan', {})
                ## # FIXME: do we really need the following params?
                ## user_details = ret.get('user_details', {})
                ## settings['user']['name'] = user_details.get('name', '')
                ## settings['user']['company_name'] = user_details.get('company_name', '')
                ## settings['user']['country'] = user_details.get('country', '')
                ## settings['user']['number_of_servers'] = user_details.get('number_of_servers', '')
                ## settings['user']['number_of_people'] = user_details.get('number_of_people', '')
            ## else:
                ## log.error("Error authenticating to mist.io service. %d: %s", ret.status_code, ret.text)

    config = Configurator(root_factory=Root, settings=settings)

    # Add custom adapter to the JSON renderer to avoid serialization errors
    json_renderer = JSON()
    def string_adapter(obj, request):
        return str(obj)
    json_renderer.add_adapter(object, string_adapter)
    config.add_renderer('json', json_renderer)    
    config.add_static_view('resources', 'mist.io:static')
    config.add_static_view('docs', path='../../../docs/build')
    config.include(add_routes)
    config.scan()
    app = config.make_wsgi_app()

    return app