diff --git a/conductor/app.py b/conductor/app.py index d5673d1..abaf74d 100644 --- a/conductor/app.py +++ b/conductor/app.py @@ -43,7 +43,7 @@ def task_received(task, message_id): reporter = reporting.Reporter(rmqclient, message_id, task['id']) command_dispatcher = CommandDispatcher( - task['name'], rmqclient, task['token'], task['tenant_id']) + 'e' + task['id'], rmqclient, task['token'], task['tenant_id']) workflows = [] for path in glob.glob("data/workflows/*.xml"): log.debug('Loading XML {0}'.format(path)) diff --git a/conductor/cloud_formation.py b/conductor/cloud_formation.py index 235fbf7..c10eb83 100644 --- a/conductor/cloud_formation.py +++ b/conductor/cloud_formation.py @@ -57,10 +57,10 @@ def prepare_user_data(context, hostname, service, unit, replacements = { '%RABBITMQ_HOST%': settings.host, '%RABBITMQ_INPUT_QUEUE%': '-'.join( - [str(context['/dataSource']['name']), + ['e' + str(context['/dataSource']['id']), str(service), str(unit)]).lower(), - '%RESULT_QUEUE%': '-execution-results-{0}'.format( - str(context['/dataSource']['name'])).lower(), + '%RESULT_QUEUE%': '-execution-results-e{0}'.format( + str(context['/dataSource']['id'])).lower(), '%RABBITMQ_USER%': settings.login, '%RABBITMQ_PASSWORD%': settings.password, '%RABBITMQ_VHOST%': settings.virtual_host @@ -86,7 +86,7 @@ def set_config_params(template_data, replacements): return template_data -counter = 0 +counters = {} def int2base(x, base): @@ -108,12 +108,23 @@ def int2base(x, base): return ''.join(digits) -def generate_hostname(**kwargs): - global counter +def generate_hostname(pattern, service_id, **kwargs): + if not pattern: + return _generate_random_hostname() + elif '#' in pattern: + counter = counters.get(service_id) or 1 + counters[service_id] = counter + 1 + return pattern.replace('#', str(counter), 1) + else: + return pattern + + +def _generate_random_hostname(): + counter = counters.get('') or 1 prefix = ''.join(random.choice(string.lowercase) for _ in range(5)) timestamp = int2base(int(time.time() * 1000), 36)[:8] suffix = int2base(counter, 36) - counter = (counter + 1) % 1296 + counters[''] = (counter + 1) % 1296 return prefix + timestamp + suffix diff --git a/conductor/commands/windows_agent.py b/conductor/commands/windows_agent.py index 2d46e63..a8e6a09 100644 --- a/conductor/commands/windows_agent.py +++ b/conductor/commands/windows_agent.py @@ -17,27 +17,27 @@ class WindowsAgentExecutor(CommandBase): self._results_queue = '-execution-results-%s' % str(stack).lower() rmqclient.declare(self._results_queue) - def execute(self, template, mappings, host, service, callback): - with open('data/templates/agent/%s.template' % template) as file: - template_data = file.read() + def execute(self, template, mappings, unit, service, callback): + with open('data/templates/agent/%s.template' % template) as t_file: + template_data = t_file.read() template_data = conductor.helpers.transform_json( json.loads(template_data), mappings) - id = str(uuid.uuid4()).lower() - host = ('%s-%s-%s' % (self._stack, service, host)).lower() + msg_id = str(uuid.uuid4()).lower() + queue = ('%s-%s-%s' % (self._stack, service, unit)).lower() self._pending_list.append({ - 'id': id, + 'id': msg_id, 'callback': callback }) msg = Message() msg.body = template_data - msg.id = id - self._rmqclient.declare(host) - self._rmqclient.send(message=msg, key=host) + msg.id = msg_id + self._rmqclient.declare(queue) + self._rmqclient.send(message=msg, key=queue) log.info('Sending RMQ message {0} to {1} with id {2}'.format( - template_data, host, id)) + template_data, queue, msg_id)) def has_pending_commands(self): return len(self._pending_list) > 0 diff --git a/data/workflows/AD.xml b/data/workflows/AD.xml index 7932a8f..5ccce21 100644 --- a/data/workflows/AD.xml +++ b/data/workflows/AD.xml @@ -13,11 +13,11 @@ - + - + + @@ -66,8 +66,8 @@ - - - - + + @@ -146,8 +146,8 @@ /$.services.activeDirectories[?(@.domain == ' + + @@ -186,8 +186,8 @@ Creating Secondary Domain Controller on unit + + diff --git a/data/workflows/AspNet.xml b/data/workflows/AspNet.xml index 3b90471..25947d4 100644 --- a/data/workflows/AspNet.xml +++ b/data/workflows/AspNet.xml @@ -13,11 +13,11 @@ - + - + + @@ -70,8 +70,8 @@ Creating IIS Web Server on unit + + @@ -92,8 +92,8 @@ Deploying Web App on unit + + diff --git a/data/workflows/Common.xml b/data/workflows/Common.xml index 5d57517..b3da0aa 100644 --- a/data/workflows/Common.xml +++ b/data/workflows/Common.xml @@ -1,7 +1,12 @@ - + + + + + diff --git a/data/workflows/IIS.xml b/data/workflows/IIS.xml index 433562e..1ea46ae 100644 --- a/data/workflows/IIS.xml +++ b/data/workflows/IIS.xml @@ -13,11 +13,11 @@ - + - + + @@ -71,8 +71,8 @@ Creating IIS Web Server on unit + +