示例#1
0
def adapter_chef_data(resource_name, config_file=None):
    client = ArchitectClient()
    data = client.get_data('chef-data', resource_name)
    if config_file is None:
        print(json.dumps(data.get(resource_name, {}).get('parameters', {})))
    else:
        write_json_file(
            data.get(resource_name, {}).get('parameters', {}), config_file)
示例#2
0
def start(project='default',
          host='127.0.0.1',
          port=8181,
          username=None,
          password=None):
    '''
    Listen to state jobs events and forward state functions and node info
    '''
    state_functions = ['state.sls', 'state.apply', 'state.highstate']
    model_functions = ['architect.node_info']
    class_tag = 'architect/minion/classify'

    if __opts__['__role'] == 'master':
        event_bus = salt.utils.event.get_master_event(__opts__,
                                                      __opts__['sock_dir'],
                                                      listen=True)
    else:
        event_bus = salt.utils.event.get_event('minion',
                                               transport=__opts__['transport'],
                                               opts=__opts__,
                                               sock_dir=__opts__['sock_dir'],
                                               listen=True)

    logger.info('Architect Engine initialised')

    while True:
        event = event_bus.get_event()
        if event and event.get('fun', None) in state_functions:
            is_test_run = 'test=true' in [
                arg.lower() for arg in event.get('fun_args', [])
            ]
            if not is_test_run:
                output = ArchitectClient().push_event(event)
                logger.info("Sent Architect state function {}".format(output))
        if event and event.get('fun', None) in model_functions:
            output = ArchitectClient().push_node_info(
                {event['id']: event['return']})
            logger.info("Sent Architect node info function {}".format(output))
        if event and event.get('tag', None) == class_tag:
            output = ArchitectClient().classify_node({
                'name': event['id'],
                'data': event['data']
            })
            logger.info("Sent Architect node classification {}".format(output))
示例#3
0
def adapter_salt_top(resource_name):
    client = ArchitectClient()
    response = client.get_data('salt-top', resource_name)
    data = response.get(resource_name, {}).get('applications', [])
    if client.salt_top_prepend_host:
        new_data = []
        for datum in data:
            new_data.append(resource_name + '.' + datum)
        data = new_data
    print(yaml.safe_dump({'classes': data}))
示例#4
0
def adapter_puppet_classifier(resource_name):
    client = ArchitectClient()
    data = client.get_data('puppet-classifier', resource_name)
    print(
        yaml.safe_dump({
            'classes':
            data.get(resource_name, {}).get('applications', {}),
            'parameters':
            data.get(resource_name, {}).get('parameters', {})
        }))
示例#5
0
def test_class_url():
    test_url = 'http://test.url'
    client = ArchitectClient(test_url)
    assert test_url == client.api_url
示例#6
0
def _client():
    return ArchitectClient()
示例#7
0
def adapter_salt_pillar(resource_name):
    client = ArchitectClient()
    data = client.get_data('salt-pillar', resource_name)
    print(yaml.safe_dump(data.get(resource_name, {}).get('parameters', {})))
示例#8
0
def adapter_ansible_inventory(list):
    client = ArchitectClient()
    data = client.get_data('ansible-inventory')
    print(yaml.safe_dump(data))
示例#9
0
def client_manager_salt_create(manager_name, manager_url, manager_user,
                               manager_password):
    client = ArchitectClient()
    data = client.create_manager(manager_name, manager_url, manager_user,
                                 manager_password)
    print(yaml.safe_dump(data))
示例#10
0
def client_inventory_create(cluster_name, domain_name):
    client = ArchitectClient()
    data = client.create_inventory(cluster_name, domain_name)
    print(yaml.safe_dump(data))