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)
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))
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}))
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', {}) }))
def test_class_url(): test_url = 'http://test.url' client = ArchitectClient(test_url) assert test_url == client.api_url
def _client(): return ArchitectClient()
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', {})))
def adapter_ansible_inventory(list): client = ArchitectClient() data = client.get_data('ansible-inventory') print(yaml.safe_dump(data))
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))
def client_inventory_create(cluster_name, domain_name): client = ArchitectClient() data = client.create_inventory(cluster_name, domain_name) print(yaml.safe_dump(data))