Пример #1
0
def set_loglevel(logger, level):

    logging.getLogger().setLevel(level)
    logger.setLevel(level)

    for mname, mlogger in logging.Logger.manager.loggerDict.iteritems():
        if getattr(mlogger, 'setLevel', None):
            logger.debug('setting loglevel on %s' % mname)
            mlogger.setLevel(level)

    # handle paramiko separately, its logs at INFO way too liberally

    paramiko_logger = logging.getLogger("paramiko")
    if len(paramiko_logger.handlers) == 0:
        util.setup_logger("paramiko")

    if (level == logging.INFO):
        paramiko_logger.setLevel(logging.ERROR)
        logging.getLogger("paramiko.transport").setLevel(logging.ERROR)
    elif (level == logging.DEBUG):
        paramiko_logger.setLevel(logging.DEBUG)
        logging.getLogger("paramiko.transport").setLevel(logging.DEBUG)
Пример #2
0
def set_loglevel(logger, level):

    logging.getLogger().setLevel(level)
    logger.setLevel(level)

    for mname, mlogger in logging.Logger.manager.loggerDict.iteritems():
        if getattr(mlogger, 'setLevel', None):
            logger.debug('setting loglevel on %s' % mname)
            mlogger.setLevel(level)

    # handle paramiko separately, its logs at INFO way too liberally

    paramiko_logger = logging.getLogger("paramiko")
    if len(paramiko_logger.handlers) == 0:
        util.setup_logger("paramiko")

    if (level == logging.INFO):
        paramiko_logger.setLevel(logging.ERROR)
        logging.getLogger("paramiko.transport").setLevel(logging.ERROR)
    elif (level == logging.DEBUG):
        paramiko_logger.setLevel(logging.DEBUG)
        logging.getLogger("paramiko.transport").setLevel(logging.DEBUG)
Пример #3
0
from collections import defaultdict
from cmd import Cmd
from EC2 import EC2Config

import paramiko
from dustcluster import commands, lineterm
from dustcluster import __version__
from dustcluster.cluster import ClusterCommandEngine
from dustcluster.config import DustConfig

import atexit
import shlex

from dustcluster import util
logger = util.setup_logger( __name__ )

if os.environ.get('COLORTERM') or 'color' in os.environ.get('TERM'):
    colorama.Fore.CYAN  = '\x1b[38;5;75m'
    colorama.Fore.GREEN = '\x1b[38;5;76m'

class Console(Cmd):
    ''' command line tool to control a cloud cluster '''

    dustintro  = "Dust cluster shell, version %s. Type %s?%s for help." % (__version__, colorama.Fore.GREEN, colorama.Style.RESET_ALL)

    def __init__(self):

        util.intro()

        logger.setLevel(logging.INFO)
Пример #4
0
#

''' invoke commands or a shell over ssh sessions,  demultiplex the ssh output '''  

import getpass
from threading import Thread
import select
import socket
import sys
import os, struct, fcntl

from paramiko.py3compat import u
import paramiko

from dustcluster.util import setup_logger
logger = setup_logger( __name__ )


# Once a session has been setup a program at the remote end can be  
# executed with SSH_MSG_CHANNEL_REQUEST, with string 'shell', 'exec', or 
# 'subsystem' for a default shell, single command, or subsystem. 
# Here we start a full interactive shell and invoke commands on it, 
# demultiplexing the output from all chanells onto stdout locally. 
# This allows us to execute arbitrarily interactive scripts. 

class ReceiveDemux(object):
    ''' receive demultiplexer for all open ssh interactive shells ''' 

    def __init__(self, session_mgr):
        self.refresh_callback = None
        self.chans = {} # { chan : receive_buffer }
Пример #5
0
from dustcluster.config import DustConfig

import shutil
import unittest
import mock
import os

from dustcluster import util
logger = util.setup_logger(__name__)

import logging


class TestConfig(unittest.TestCase):

    testdirs = '/tmp/dusttest'

    def setUp(self):
        logger.setLevel(logging.DEBUG)
        logging.getLogger('dustcluster.config').setLevel(logging.DEBUG)
        DustConfig.dust_dir = self.testdirs

    @unittest.skip("port to v0.2")
    def test_first_use(self):

        if os.path.exists(self.testdirs) and self.testdirs.startswith('/tmp'):
            shutil.rmtree(self.testdirs)

        config = DustConfig()

    @unittest.skip("port to v0.2")
Пример #6
0
import re
import fnmatch
import os
import yaml
import colorama
import sys

from copy import deepcopy

from dustcluster.lineterm import LineTerm
from pkgutil import walk_packages
from dustcluster import commands
from dustcluster.config import DustConfig

from dustcluster.util import setup_logger
logger = setup_logger( __name__ )

import glob

from dustcluster.EC2 import EC2Cloud


class CommandState(object):
    '''
    Commands can store arbitrary state here.  
    '''

    def __init__(self):
        self.global_state   = {}    # { command_name.var : value, where command_name can also be 'global_state' }

    def get(self, state_var):