Exemplo n.º 1
0
def _try_resolve(current, to_resolve):
    if current['resolved']:
        return

    definition = current['definition']

    pending = definition.get('executor', {}).get('actors', ())
    if definition.get('extends'):
        pending = (definition['extends'].get('name'), )

    for name in pending:
        actor = get_actor(name)

        if not actor and name in to_resolve:
            if not to_resolve[name]['resolved']:
                _try_resolve(to_resolve[name], to_resolve)
            actor = get_actor(name)

        if not actor:
            raise LookupError("Failed to resolve dependencies for {}".format(
                current['name']))

    if definition.get('extends'):
        _apply_extension_resolve(current,
                                 get_actor(definition['extends'].get('name')))
    else:
        create_actor(current['name'], definition)

    current['resolved'] = True
Exemplo n.º 2
0
def _try_resolve(i, l):
    if i['resolved']:
        return

    definition = i['definition']

    pending = definition.get('executor', {}).get('actors', ())
    if definition.get('extends'):
        pending = (definition['extends'].get('name'), )

    for name in pending:
        actor = get_actor(name)

        if not actor and name in l:
            if not l[name]['resolved']:
                _try_resolve(l[name], l)
            actor = get_actor(name)

        if not actor:
            raise LookupError("Failed to resolve dependencies for {}".format(
                i['name']))

    if definition.get('extends'):
        extends = get_actor(definition['extends'].get('name'))
        _apply_extension_resolve(i, extends)
    else:
        create_actor(i['name'], definition)

    i['resolved'] = True
Exemplo n.º 3
0
def check_target():
    """ Run multiple checks at target machine """
    targetinfo = {}
    get_actor('check_target_group')().execute(targetinfo)

    get_actor('check_target')().execute(targetinfo)
    pprint(targetinfo['targetinfo'])
Exemplo n.º 4
0
def test_extended_actor():
    """ Execute filter_kernel_packages actor to test extended actor """
    data = {
        "rpm_packages": {
            "packages": [{
                "name": "test-1",
                "version": "1"
            }, {
                "name": "kernel-2",
                "version": "1"
            }, {
                "name": "test-3",
                "version": "1"
            }, {
                "name": "kernel-1",
                "version": "1"
            }]
        }
    }

    print("Before execution")
    print("=" * 70)
    pprint(data)
    print("=" * 70)
    print("Execution result:",
          get_actor('filter_kernel_packages')().execute(data))
    print("=" * 70)
    print("After execution")
    pprint(data)
Exemplo n.º 5
0
def _try_resolve(i, l):
    if not i['resolved']:
        name = i['definition']['extends'].get('name')
        actor = get_actor(name)

        if not actor and name in l:
            if not l[name]['resolved']:
                _try_resolve(l[name], l)
            actor = get_actor(name)

        if not actor:
            raise LookupError("Failed to resolve dependencies for {}".format(
                i['name']))

        _apply_resolve(i, actor)
        i['resolved'] = True
Exemplo n.º 6
0
def test_ansible_executor():
    """ Execute ansible_setup actor to test ansible executor """
    data = {}
    print("Before execution")
    print("=" * 70)
    pprint(data)
    print("=" * 70)
    print("Execution result:",
          get_actor('ansible_setup')().execute(data))
    print("=" * 70)
    print("After execution")
    pprint(data)
Exemplo n.º 7
0
def _try_resolve(current, to_resolve):
    if current['resolved']:
        return

    definition = current['definition']

    pending = definition.get('group', ())
    for name in pending:
        actor = get_actor(name)

        if not actor and name in to_resolve:
            if not to_resolve[name]['resolved']:
                _try_resolve(to_resolve[name], to_resolve)
            actor = get_actor(name)

        if not actor:
            raise LookupError("Failed to resolve dependency '{}' for {}".format(name, current['name']))

    create_actor(current['name'], definition)

    current['resolved'] = True
Exemplo n.º 8
0
def test_output_processors():
    """ Execute iplist actor to test output processors """
    data = {}
    print("Before execution")
    print("=" * 70)
    pprint(data)
    print("=" * 70)
    print("Execution result:",
          get_actor('iplist')().execute(data))
    print("=" * 70)
    print("After execution")
    pprint(data)
Exemplo n.º 9
0
def test_passing_data_actor():
    """ Execute  actor providing data"""
    data = {
        "filter": {
            "value": "test"
        },
        "rpm_packages": {
            "packages": [{
                "name": "test-1",
                "version": "1"
            }, {
                "name": "tast-2",
                "version": "1"
            }, {
                "name": "test-3",
                "version": "1"
            }, {
                "name": "tast-1",
                "version": "1"
            }]
        }
    }
    get_actor('filter_packages')().execute(data)
    pprint(data)
Exemplo n.º 10
0
def main():
    loader.load(ACTOR_DIRECTORY)
    loader.load_schemas(SCHEMA_DIRECTORY)
    loader.validate_actor_types()

    logging.basicConfig(format='[%(name)s] %(levelname)s:%(message)s',
                        level=logging.DEBUG,
                        stream=NullLogSink())
    _COMMANDS = {
        'migrate-machine': _migrate_machine,
        'check-target': _check_target,
        'port-inspect': _port_inspect,
        'destroy-container': _destroy_container,
    }

    ap = _make_argument_parser()
    argcomplete.autocomplete(ap)
    parsed = ap.parse_args()

    with _stdout_socket():
        actor_data, actor_name = _COMMANDS[parsed.action](parsed)
        logging.debug("Actor %s Inputs:\n%s", actor_name, actor_data)

        actor = registry.get_actor(actor_name)
        if not actor:
            logging.error("Could not find %s actor to complete the process",
                          actor_name)
            sys.exit(-1)

        success = actor.execute(actor_data)
        logging.debug("After execution data:\n%s", actor_data)
        if success:
            logging.info("SUCCESS - %s has been completed", parsed.action)
        else:
            logging.error("ERROR: %s failed", parsed.action)
            sys.exit(-1)
Exemplo n.º 11
0
def test_group_actor():
    """ Execute group-actor to test group executor """
    data = {}
    get_actor('group-actor')().execute(data)
    pprint(data)
Exemplo n.º 12
0
import snactor.executors
from snactor.loader import load
from snactor.registry import get_actor
from pprint import pprint
import logging

logging.basicConfig(format='%(levelname)s:%(message)s', level=logging.DEBUG)
load('examples/actors')

data = {}
print "Before execution"
print "======================================================================="
pprint(data)
print "======================================================================="
print "Execution result:", get_actor('ansible_setup')().execute(data)
print "======================================================================="
print "After execution"
pprint(data)
Exemplo n.º 13
0
 def test_extends_no_actor(self):
     """ Load an actor that extends a non-existent actor """
     with self.assertRaises(LookupError):
         load(self.actors_path, tags=['extends_no_actor'])
     self.assertIsNone(get_actor('extends_no_actor'))
Exemplo n.º 14
0
 def test_incomplete_actor(self):
     """ Load aa incomplete actor """
     with self.assertRaises(LookupError):
         load(self.actors_path, tags=['incomplete_group_actor'])
     self.assertIsNone(get_actor('incomplete_group_actor'))
Exemplo n.º 15
0
 def test_load_actor_twice(self):
     """ Load an actor twice"""
     load(self.actors_path, tags=['load_twice_actor'])
     self.assertIsNotNone(get_actor('load_twice_actor'))
     with self.assertRaises(LookupError):
         load(self.actors_path, tags=['load_twice_actor'])
Exemplo n.º 16
0
 def test_extends_executor_actor(self):
     """ Load an actor with both extends and executor """
     with self.assertRaises(ValueError):
         load(self.actors_path, tags=['extends_executor_actor'])
     self.assertIsNone(get_actor('extends_executor_actor'))
Exemplo n.º 17
0
 def test_no_executor_actor(self):
     """ Load an actor with no executor """
     with self.assertRaises(ValueError):
         load(self.actors_path, tags=['no_executor_actor'])
     self.assertIsNone(get_actor('no_executor_actor'))
Exemplo n.º 18
0
 def test_unknown_executor_actor(self):
     """ Load an actor with an unknown executor """
     with self.assertRaises(LookupError):
         load(self.actors_path, tags=['unknown_executor_actor'])
     self.assertIsNone(get_actor('unknown_executor_actor'))
Exemplo n.º 19
0
 def test_extends_actor(self):
     """ Load an extended actor """
     load(self.actors_path, tags=['extends_actor'])
     self.assertIsNotNone(get_actor('extends_actor'))
Exemplo n.º 20
0
 def test_group_actor(self):
     """ Load a group actor """
     load(self.actors_path, tags=['group_actor'])
     self.assertIsNotNone(get_actor('group_actor'))
Exemplo n.º 21
0
 def test_simple_actor(self):
     """ Load a simple actor """
     load(self.actors_path, tags=['simple_actor'])
     self.assertIsNotNone(get_actor('simple_actor'))
Exemplo n.º 22
0
def test_python_executor():
    """ Execute osversion actor to test python executor """
    data = {}
    get_actor('osversion')().execute(data)
    pprint(data)
Exemplo n.º 23
0
import snactor.executors
from snactor.loader import load
from snactor.registry import get_actor
from pprint import pprint
import logging

logging.basicConfig(format='%(levelname)s:%(message)s', level=logging.DEBUG)
load('examples/actors')

data = {}
print get_actor('osversion')().execute(data)
pprint(data)
Exemplo n.º 24
0
import snactor.executors
from snactor.loader import load
from snactor.registry import get_actor
from pprint import pprint
import logging

logging.basicConfig(format='%(levelname)s:%(message)s', level=logging.DEBUG)
load('examples/actors')

data = {}
print "Before execution"
print "======================================================================="
pprint(data)
print "======================================================================="
print "Execution result:", get_actor('iplist')().execute(data)
print "======================================================================="
print "After execution"
pprint(data)
Exemplo n.º 25
0
logging.basicConfig(format='%(levelname)s:%(message)s', level=logging.DEBUG)
load('examples/actors')

data = {
    #    "filter": {"value": "test"},
    "rpm_packages": {
        "packages": [{
            "name": "test-1",
            "version": "1"
        }, {
            "name": "kernel-2",
            "version": "1"
        }, {
            "name": "test-3",
            "version": "1"
        }, {
            "name": "kernel-1",
            "version": "1"
        }]
    }
}
print "Before execution"
print "======================================================================="
pprint(data)
print "======================================================================="
print "Execution result:", get_actor('filter_kernel_packages')().execute(data)
print "======================================================================="
print "After execution"
pprint(data)
Exemplo n.º 26
0
from snactor.loader import load
from snactor.registry import get_actor
from pprint import pprint
import logging

logging.basicConfig(format='%(levelname)s:%(message)s', level=logging.DEBUG)
load('examples/actors', tags=['packages'])

data = {
    "filter": {
        "value": "test"
    },
    "rpm_packages": {
        "packages": [{
            "name": "test-1",
            "version": "1"
        }, {
            "name": "tast-2",
            "version": "1"
        }, {
            "name": "test-3",
            "version": "1"
        }, {
            "name": "tast-1",
            "version": "1"
        }]
    }
}
print get_actor('filter_packages')().execute(data)
pprint(data)
Exemplo n.º 27
0
def test_simple_actor():
    """ Execute simple-actor to test simple executor """
    data = {}
    get_actor('simple-actor')().execute(data)
    pprint(data)