Exemplo n.º 1
0
    def __init__(self, name):
        setproctitle.setproctitle(process_name(name))
        self.log, _ = logutil.setup(name)
        set_log_level(self.log, name)

        self.exit = Event()
        signal.signal(signal.SIGTERM, self.exit_gracefully)
Exemplo n.º 2
0
import hashlib
import os
import re
import requests
import time

from shakenfist import db
from shakenfist.config import config
from shakenfist import exceptions
from shakenfist import image_resolver_cirros
from shakenfist import image_resolver_ubuntu
from shakenfist import logutil
from shakenfist import util
from shakenfist import virt

LOG, _ = logutil.setup(__name__)

resolvers = {'cirros': image_resolver_cirros, 'ubuntu': image_resolver_ubuntu}


def _get_cache_path():
    image_cache_path = os.path.join(config.get('STORAGE_PATH'), 'image_cache')
    if not os.path.exists(image_cache_path):
        LOG.withField('image_cache_path',
                      image_cache_path).debug('Creating image cache')
        os.makedirs(image_cache_path, exist_ok=True)
    return image_cache_path


class Image(object):
    def __init__(self, url, checksum, size, modified, fetched, file_version):
Exemplo n.º 3
0
from flask_jwt_extended import get_jwt_identity

from shakenfist.daemons import daemon
from shakenfist.external_api import base as api_base
from shakenfist import db
from shakenfist.instance import Instance
from shakenfist.ipmanager import IPManager
from shakenfist import logutil
from shakenfist import net
from shakenfist.networkinterface import NetworkInterface


LOG, HANDLER = logutil.setup(__name__)
daemon.set_log_level(LOG, 'api')


def metadata_putpost(meta_type, owner, key, value):
    if meta_type not in ['namespace', 'instance', 'network']:
        return api_base.error(500, 'invalid meta_type %s' % meta_type)
    if not key:
        return api_base.error(400, 'no key specified')
    if not value:
        return api_base.error(400, 'no value specified')

    with db.get_lock('metadata', meta_type, owner,
                     op='Metadata update'):
        md = db.get_metadata(meta_type, owner)
        if md is None:
            md = {}
        md[key] = value
        db.persist_metadata(meta_type, owner, md)
Exemplo n.º 4
0
 def __init__(self, name):
     setproctitle.setproctitle(process_name(name))
     log, _ = logutil.setup(name)
     set_log_level(log, name)
Exemplo n.º 5
0
from shakenfist.config import config
from shakenfist.daemons import daemon
from shakenfist.daemons import external_api as external_api_daemon
from shakenfist.daemons import cleaner as cleaner_daemon
from shakenfist.daemons import queues as queues_daemon
from shakenfist.daemons import net as net_daemon
from shakenfist.daemons import resources as resource_daemon
from shakenfist.daemons import triggers as trigger_daemon
from shakenfist import db
from shakenfist import logutil
from shakenfist import net
from shakenfist import util
from shakenfist import virt

LOG, HANDLER = logutil.setup('main')


def restore_instances():
    # Ensure all instances for this node are defined
    networks = []
    instances = []
    for inst in list(db.get_instances(only_node=config.NODE_NAME)):
        for iface in db.get_instance_interfaces(inst['uuid']):
            if not iface['network_uuid'] in networks:
                networks.append(iface['network_uuid'])
        instances.append(inst['uuid'])

    with util.RecordedOperation('restore networks', None):
        for network in networks:
            try:
Exemplo n.º 6
0
import requests
import sys
import time
import traceback
import uuid

from shakenfist import config
from shakenfist import db
from shakenfist import exceptions
from shakenfist import logutil
from shakenfist import net
from shakenfist import scheduler
from shakenfist import util
from shakenfist import virt

LOG, HANDLER = logutil.setup('api')

TESTING = False
SCHEDULER = None


def error(status_code, message):
    global TESTING

    body = {'error': message, 'status': status_code}

    if TESTING or config.parsed.get('INCLUDE_TRACEBACKS') == '1':
        _, _, tb = sys.exc_info()
        if tb:
            body['traceback'] = traceback.format_exc()