Heat auto-discovery, keero-linux-keys -> keero-keys
This commit is contained in:
parent
600e161f6c
commit
f33bd681ab
@ -22,42 +22,43 @@ log = logging.getLogger(__name__)
|
||||
|
||||
def task_received(task, message_id):
|
||||
with rabbitmq.RmqClient() as rmqclient:
|
||||
log.info('Starting processing task {0}: {1}'.format(
|
||||
message_id, anyjson.dumps(task)))
|
||||
reporter = reporting.Reporter(rmqclient, message_id, task['id'])
|
||||
try:
|
||||
log.info('Starting processing task {0}: {1}'.format(
|
||||
message_id, anyjson.dumps(task)))
|
||||
reporter = reporting.Reporter(rmqclient, message_id, task['id'])
|
||||
|
||||
command_dispatcher = CommandDispatcher(
|
||||
task['id'], rmqclient, task['token'], task['tenant_id'])
|
||||
workflows = []
|
||||
for path in glob.glob("data/workflows/*.xml"):
|
||||
log.debug('Loading XML {0}'.format(path))
|
||||
workflow = Workflow(path, task, command_dispatcher, config,
|
||||
reporter)
|
||||
workflows.append(workflow)
|
||||
command_dispatcher = CommandDispatcher(
|
||||
task['id'], rmqclient, task['token'], task['tenant_id'])
|
||||
workflows = []
|
||||
for path in glob.glob("data/workflows/*.xml"):
|
||||
log.debug('Loading XML {0}'.format(path))
|
||||
workflow = Workflow(path, task, command_dispatcher, config,
|
||||
reporter)
|
||||
workflows.append(workflow)
|
||||
|
||||
while True:
|
||||
try:
|
||||
while True:
|
||||
result = False
|
||||
for workflow in workflows:
|
||||
if workflow.execute():
|
||||
result = True
|
||||
if not result:
|
||||
while True:
|
||||
try:
|
||||
while True:
|
||||
result = False
|
||||
for workflow in workflows:
|
||||
if workflow.execute():
|
||||
result = True
|
||||
if not result:
|
||||
break
|
||||
if not command_dispatcher.execute_pending():
|
||||
break
|
||||
if not command_dispatcher.execute_pending():
|
||||
except Exception as ex:
|
||||
log.exception(ex)
|
||||
break
|
||||
except Exception as ex:
|
||||
log.exception(ex)
|
||||
break
|
||||
|
||||
command_dispatcher.close()
|
||||
command_dispatcher.close()
|
||||
finally:
|
||||
del task['token']
|
||||
result_msg = rabbitmq.Message()
|
||||
result_msg.body = task
|
||||
result_msg.id = message_id
|
||||
|
||||
del task['token']
|
||||
result_msg = rabbitmq.Message()
|
||||
result_msg.body = task
|
||||
result_msg.id = message_id
|
||||
|
||||
rmqclient.send(message=result_msg, key='task-results')
|
||||
rmqclient.send(message=result_msg, key='task-results')
|
||||
log.info('Finished processing task {0}. Result = {1}'.format(
|
||||
message_id, anyjson.dumps(task)))
|
||||
|
||||
|
@ -1,6 +1,7 @@
|
||||
import anyjson
|
||||
import eventlet
|
||||
|
||||
import jsonpath
|
||||
from conductor.openstack.common import log as logging
|
||||
import conductor.helpers
|
||||
from command import CommandBase
|
||||
@ -20,13 +21,18 @@ class HeatExecutor(CommandBase):
|
||||
self._stack = 'e' + stack
|
||||
settings = conductor.config.CONF.heat
|
||||
|
||||
client = ksclient.Client(endpoint=settings.keystone)
|
||||
scoped_token = client.tokens.authenticate(
|
||||
client = ksclient.Client(endpoint=settings.auth_url)
|
||||
auth_data = client.tokens.authenticate(
|
||||
tenant_id=tenant_id,
|
||||
token=token).id
|
||||
token=token)
|
||||
|
||||
self._heat_client = Client('1', settings.url,
|
||||
token_only=True, token=scoped_token)
|
||||
scoped_token = auth_data.id
|
||||
|
||||
heat_url = jsonpath.jsonpath(auth_data.serviceCatalog,
|
||||
"$[?(@.name == 'heat')].endpoints[0].publicURL")[0]
|
||||
|
||||
self._heat_client = Client('1', heat_url,
|
||||
token_only=True, token=scoped_token)
|
||||
|
||||
def execute(self, command, callback, **kwargs):
|
||||
log.debug('Got command {0} on stack {1}'.format(command, self._stack))
|
||||
|
@ -46,8 +46,7 @@ rabbit_opts = [
|
||||
]
|
||||
|
||||
heat_opts = [
|
||||
cfg.StrOpt('url'),
|
||||
cfg.StrOpt('keystone')
|
||||
cfg.StrOpt('auth_url'),
|
||||
]
|
||||
|
||||
CONF = cfg.CONF
|
||||
|
@ -1,29 +1,29 @@
|
||||
import xml_code_engine
|
||||
|
||||
from openstack.common import log as logging
|
||||
log = logging.getLogger(__name__)
|
||||
|
||||
|
||||
def send_command(engine, context, body, template, service, host, mappings=None,
|
||||
result=None, **kwargs):
|
||||
if not mappings:
|
||||
mappings = {}
|
||||
command_dispatcher = context['/commandDispatcher']
|
||||
|
||||
def callback(result_value):
|
||||
log.info(
|
||||
'Received result from {3} for {0}: {1}. Body is {2}'.format(
|
||||
template, result_value, body, host))
|
||||
if result is not None:
|
||||
context[result] = result_value['Result']
|
||||
|
||||
success_handler = body.find('success')
|
||||
if success_handler is not None:
|
||||
engine.evaluate_content(success_handler, context)
|
||||
|
||||
command_dispatcher.execute(
|
||||
name='agent', template=template, mappings=mappings,
|
||||
host=host, service=service, callback=callback)
|
||||
|
||||
|
||||
import xml_code_engine
|
||||
|
||||
from openstack.common import log as logging
|
||||
log = logging.getLogger(__name__)
|
||||
|
||||
|
||||
def send_command(engine, context, body, template, service, host, mappings=None,
|
||||
result=None, **kwargs):
|
||||
if not mappings:
|
||||
mappings = {}
|
||||
command_dispatcher = context['/commandDispatcher']
|
||||
|
||||
def callback(result_value):
|
||||
log.info(
|
||||
'Received result from {2} for {0}: {1}'.format(
|
||||
template, result_value, host))
|
||||
if result is not None:
|
||||
context[result] = result_value['Result']
|
||||
|
||||
success_handler = body.find('success')
|
||||
if success_handler is not None:
|
||||
engine.evaluate_content(success_handler, context)
|
||||
|
||||
command_dispatcher.execute(
|
||||
name='agent', template=template, mappings=mappings,
|
||||
host=host, service=service, callback=callback)
|
||||
|
||||
|
||||
xml_code_engine.XmlCodeEngine.register_function(send_command, "send-command")
|
@ -1,222 +1,222 @@
|
||||
<workflow>
|
||||
<rule match="$.services.activeDirectories[?(@.domain)].units[?(not @.isMaster)]">
|
||||
<set path="domain">
|
||||
<select path="::domain"/>
|
||||
</set>
|
||||
</rule>
|
||||
|
||||
<rule match="$.services.activeDirectories[*].units[?(@.state.hostname and not @.state.instanceName)]">
|
||||
<report entity="unit">
|
||||
<parameter name="id"><select path="id"/></parameter>
|
||||
<parameter name="text">Creating instance <select path="name"/></parameter>
|
||||
</report>
|
||||
<update-cf-stack template="Windows">
|
||||
<parameter name="mappings">
|
||||
<map>
|
||||
<mapping name="instanceName">AD-<select path="::id"/>-<select path="name"/></mapping>
|
||||
<mapping name="userData">
|
||||
<prepare-user-data>
|
||||
<parameter name="hostname"><select path="state.hostname"/></parameter>
|
||||
<parameter name="unit"><select path="name"/></parameter>
|
||||
<parameter name="service"><select path="::id"/></parameter>
|
||||
</prepare-user-data>
|
||||
</mapping>
|
||||
</map>
|
||||
</parameter>
|
||||
<parameter name="arguments">
|
||||
<map>
|
||||
<argument name="KeyName">keero-linux-keys</argument>
|
||||
<argument name="InstanceType">m1.medium</argument>
|
||||
<argument name="ImageName">ws-2012-full</argument>
|
||||
</map>
|
||||
</parameter>
|
||||
|
||||
<success>
|
||||
<set path="state.instanceName"><select path="name"/></set>
|
||||
<report entity="unit">
|
||||
<parameter name="id"><select path="id"/></parameter>
|
||||
<parameter name="text">Instance <select path="name"/> created</parameter>
|
||||
</report>
|
||||
</success>
|
||||
</update-cf-stack>
|
||||
</rule>
|
||||
|
||||
<rule match="$.services.activeDirectories[*].units[?(@.state.instanceName and @.adminPassword and @.adminPassword != @.state.adminPassword)]">
|
||||
<send-command template="SetPassword">
|
||||
<parameter name="host">
|
||||
<select path="name"/>
|
||||
</parameter>
|
||||
<parameter name="service">
|
||||
<select path="::id"/>
|
||||
</parameter>
|
||||
<parameter name="mappings">
|
||||
<map>
|
||||
<mapping name="adminPassword">
|
||||
<select path="adminPassword"/>
|
||||
</mapping>
|
||||
</map>
|
||||
</parameter>
|
||||
<success>
|
||||
<set path="state.adminPassword">
|
||||
<select path="adminPassword"/>
|
||||
</set>
|
||||
</success>
|
||||
</send-command>
|
||||
</rule>
|
||||
|
||||
<rule match="$.services.activeDirectories[?(@.adminPassword and @.adminPassword != @.state.domainAdminPassword)].units[?(@.state.instanceName and @.isMaster)]">
|
||||
<send-command template="SetPassword">
|
||||
<parameter name="host">
|
||||
<select path="name"/>
|
||||
</parameter>
|
||||
<parameter name="service">
|
||||
<select path="::id"/>
|
||||
</parameter>
|
||||
<parameter name="mappings">
|
||||
<map>
|
||||
<mapping name="adminPassword">
|
||||
<select path="::adminPassword"/>
|
||||
</mapping>
|
||||
</map>
|
||||
</parameter>
|
||||
<success>
|
||||
<set path="::state.domainAdminPassword">
|
||||
<select path="::adminPassword"/>
|
||||
</set>
|
||||
</success>
|
||||
</send-command>
|
||||
</rule>
|
||||
|
||||
<rule match="$.services.activeDirectories[?(@.state.primaryDc is None)].units[?(@.state.instanceName and @.isMaster)]">
|
||||
<report entity="unit">
|
||||
<parameter name="id"><select path="id"/></parameter>
|
||||
<parameter name="text">Creating Primary Domain Controller on unit <select path="name"/></parameter>
|
||||
</report>
|
||||
<send-command template="CreatePrimaryDC">
|
||||
<parameter name="host">
|
||||
<select path="name"/>
|
||||
</parameter>
|
||||
<parameter name="service">
|
||||
<select path="::id"/>
|
||||
</parameter>
|
||||
<parameter name="mappings">
|
||||
<map>
|
||||
<mapping name="domain">
|
||||
<select path="::domain"/>
|
||||
</mapping>
|
||||
<mapping name="recoveryPassword">
|
||||
<select path="recoveryPassword"/>
|
||||
</mapping>
|
||||
</map>
|
||||
</parameter>
|
||||
<success>
|
||||
<set path="::state.primaryDc"><select path="name"/></set>
|
||||
<report entity="unit">
|
||||
<parameter name="id"><select path="id"/></parameter>
|
||||
<parameter name="text">Primary Domain Controller created</parameter>
|
||||
</report>
|
||||
</success>
|
||||
</send-command>
|
||||
</rule>
|
||||
|
||||
<rule match="$.services.activeDirectories[?(@.state.primaryDc and not @.state.primaryDcIp)].units[?(@.state.instanceName and @.isMaster)]">
|
||||
<send-command template="AskDnsIp" result="ip">
|
||||
<parameter name="host">
|
||||
<select path="name"/>
|
||||
</parameter>
|
||||
<parameter name="service">
|
||||
<select path="::id"/>
|
||||
</parameter>
|
||||
<success>
|
||||
<set path="::state.primaryDcIp">
|
||||
<select source="ip" path="0.Result.0"/>
|
||||
</set>
|
||||
<report entity="unit">
|
||||
<parameter name="id"><select path="id"/></parameter>
|
||||
<parameter name="text">DNS IP = <select source="ip" path="0.Result.0"/></parameter>
|
||||
</report>
|
||||
</success>
|
||||
</send-command>
|
||||
</rule>
|
||||
|
||||
<rule match="$..units[?(@.state.instanceName and @.domain and @.domain != @.state.domain)]">
|
||||
<set path="#unit">
|
||||
<select/>
|
||||
</set>
|
||||
<set path="#service">
|
||||
<select path="::"/>
|
||||
</set>
|
||||
<rule>
|
||||
<parameter name="match">/$.services.activeDirectories[?(@.domain == '<select path="domain"/>' and @.state.primaryDcIp)]</parameter>
|
||||
|
||||
<send-command template="JoinDomain">
|
||||
<parameter name="host">
|
||||
<select path="name" source="unit"/>
|
||||
</parameter>
|
||||
<parameter name="service">
|
||||
<select path="id" source="service"/>
|
||||
</parameter>
|
||||
<parameter name="mappings">
|
||||
<map>
|
||||
<mapping name="domain">
|
||||
<select path="domain"/>
|
||||
</mapping>
|
||||
<mapping name="domainPassword">
|
||||
<select path="adminPassword"/>
|
||||
</mapping>
|
||||
<mapping name="dnsIp">
|
||||
<select path="state.primaryDcIp"/>
|
||||
</mapping>
|
||||
</map>
|
||||
</parameter>
|
||||
|
||||
<success>
|
||||
<set path="state.domain" target="unit">
|
||||
<select path="domain"/>
|
||||
</set>
|
||||
<report entity="unit">
|
||||
<parameter name="id"><select path="id" source="unit"/></parameter>
|
||||
<parameter name="text">Unit <select path="name" source="unit"/> has joined domain <select path="domain"/></parameter>
|
||||
</report>
|
||||
</success>
|
||||
</send-command>
|
||||
</rule>
|
||||
</rule>
|
||||
|
||||
|
||||
<rule match="$.services.activeDirectories[*].units[?(@.state.domain and not @.isMaster and not @.state.installed)]">
|
||||
<report entity="unit">
|
||||
<parameter name="id"><select path="id"/></parameter>
|
||||
<parameter name="text">Creating Secondary Domain Controller on unit <select path="name"/></parameter>
|
||||
</report>
|
||||
<send-command template="CreateSecondaryDC">
|
||||
<parameter name="host">
|
||||
<select path="name"/>
|
||||
</parameter>
|
||||
<parameter name="service">
|
||||
<select path="::id"/>
|
||||
</parameter>
|
||||
<parameter name="mappings">
|
||||
<map>
|
||||
<mapping name="recoveryPassword">
|
||||
<select path="recoveryPassword"/>
|
||||
</mapping>
|
||||
<mapping name="domainPassword">
|
||||
<select path="::adminPassword"/>
|
||||
</mapping>
|
||||
</map>
|
||||
</parameter>
|
||||
<success>
|
||||
<set path="state.installed"><true/></set>
|
||||
<report entity="unit">
|
||||
<parameter name="id"><select path="id"/></parameter>
|
||||
<parameter name="text">Secondary Domain Controller created</parameter>
|
||||
</report>
|
||||
<report entity="service">
|
||||
<parameter name="id"><select path="::id"/></parameter>
|
||||
<parameter name="text">Domain <select path="::domain"/> created</parameter>
|
||||
</report>
|
||||
</success>
|
||||
</send-command>
|
||||
</rule>
|
||||
<workflow>
|
||||
<rule match="$.services.activeDirectories[?(@.domain)].units[?(not @.isMaster)]">
|
||||
<set path="domain">
|
||||
<select path="::domain"/>
|
||||
</set>
|
||||
</rule>
|
||||
|
||||
<rule match="$.services.activeDirectories[*].units[?(@.state.hostname and not @.state.instanceName)]">
|
||||
<report entity="unit">
|
||||
<parameter name="id"><select path="id"/></parameter>
|
||||
<parameter name="text">Creating instance <select path="name"/></parameter>
|
||||
</report>
|
||||
<update-cf-stack template="Windows">
|
||||
<parameter name="mappings">
|
||||
<map>
|
||||
<mapping name="instanceName">AD-<select path="::id"/>-<select path="name"/></mapping>
|
||||
<mapping name="userData">
|
||||
<prepare-user-data>
|
||||
<parameter name="hostname"><select path="state.hostname"/></parameter>
|
||||
<parameter name="unit"><select path="name"/></parameter>
|
||||
<parameter name="service"><select path="::id"/></parameter>
|
||||
</prepare-user-data>
|
||||
</mapping>
|
||||
</map>
|
||||
</parameter>
|
||||
<parameter name="arguments">
|
||||
<map>
|
||||
<argument name="KeyName">keero-keys</argument>
|
||||
<argument name="InstanceType">m1.medium</argument>
|
||||
<argument name="ImageName">ws-2012-full</argument>
|
||||
</map>
|
||||
</parameter>
|
||||
|
||||
<success>
|
||||
<set path="state.instanceName"><select path="name"/></set>
|
||||
<report entity="unit">
|
||||
<parameter name="id"><select path="id"/></parameter>
|
||||
<parameter name="text">Instance <select path="name"/> created</parameter>
|
||||
</report>
|
||||
</success>
|
||||
</update-cf-stack>
|
||||
</rule>
|
||||
|
||||
<rule match="$.services.activeDirectories[*].units[?(@.state.instanceName and @.adminPassword and @.adminPassword != @.state.adminPassword)]">
|
||||
<send-command template="SetPassword">
|
||||
<parameter name="host">
|
||||
<select path="name"/>
|
||||
</parameter>
|
||||
<parameter name="service">
|
||||
<select path="::id"/>
|
||||
</parameter>
|
||||
<parameter name="mappings">
|
||||
<map>
|
||||
<mapping name="adminPassword">
|
||||
<select path="adminPassword"/>
|
||||
</mapping>
|
||||
</map>
|
||||
</parameter>
|
||||
<success>
|
||||
<set path="state.adminPassword">
|
||||
<select path="adminPassword"/>
|
||||
</set>
|
||||
</success>
|
||||
</send-command>
|
||||
</rule>
|
||||
|
||||
<rule match="$.services.activeDirectories[?(@.adminPassword and @.adminPassword != @.state.domainAdminPassword)].units[?(@.state.instanceName and @.isMaster)]">
|
||||
<send-command template="SetPassword">
|
||||
<parameter name="host">
|
||||
<select path="name"/>
|
||||
</parameter>
|
||||
<parameter name="service">
|
||||
<select path="::id"/>
|
||||
</parameter>
|
||||
<parameter name="mappings">
|
||||
<map>
|
||||
<mapping name="adminPassword">
|
||||
<select path="::adminPassword"/>
|
||||
</mapping>
|
||||
</map>
|
||||
</parameter>
|
||||
<success>
|
||||
<set path="::state.domainAdminPassword">
|
||||
<select path="::adminPassword"/>
|
||||
</set>
|
||||
</success>
|
||||
</send-command>
|
||||
</rule>
|
||||
|
||||
<rule match="$.services.activeDirectories[?(@.state.primaryDc is None)].units[?(@.state.instanceName and @.isMaster)]">
|
||||
<report entity="unit">
|
||||
<parameter name="id"><select path="id"/></parameter>
|
||||
<parameter name="text">Creating Primary Domain Controller on unit <select path="name"/></parameter>
|
||||
</report>
|
||||
<send-command template="CreatePrimaryDC">
|
||||
<parameter name="host">
|
||||
<select path="name"/>
|
||||
</parameter>
|
||||
<parameter name="service">
|
||||
<select path="::id"/>
|
||||
</parameter>
|
||||
<parameter name="mappings">
|
||||
<map>
|
||||
<mapping name="domain">
|
||||
<select path="::domain"/>
|
||||
</mapping>
|
||||
<mapping name="recoveryPassword">
|
||||
<select path="recoveryPassword"/>
|
||||
</mapping>
|
||||
</map>
|
||||
</parameter>
|
||||
<success>
|
||||
<set path="::state.primaryDc"><select path="name"/></set>
|
||||
<report entity="unit">
|
||||
<parameter name="id"><select path="id"/></parameter>
|
||||
<parameter name="text">Primary Domain Controller created</parameter>
|
||||
</report>
|
||||
</success>
|
||||
</send-command>
|
||||
</rule>
|
||||
|
||||
<rule match="$.services.activeDirectories[?(@.state.primaryDc and not @.state.primaryDcIp)].units[?(@.state.instanceName and @.isMaster)]">
|
||||
<send-command template="AskDnsIp" result="ip">
|
||||
<parameter name="host">
|
||||
<select path="name"/>
|
||||
</parameter>
|
||||
<parameter name="service">
|
||||
<select path="::id"/>
|
||||
</parameter>
|
||||
<success>
|
||||
<set path="::state.primaryDcIp">
|
||||
<select source="ip" path="0.Result.0"/>
|
||||
</set>
|
||||
<report entity="unit">
|
||||
<parameter name="id"><select path="id"/></parameter>
|
||||
<parameter name="text">DNS IP = <select source="ip" path="0.Result.0"/></parameter>
|
||||
</report>
|
||||
</success>
|
||||
</send-command>
|
||||
</rule>
|
||||
|
||||
<rule match="$..units[?(@.state.instanceName and @.domain and @.domain != @.state.domain)]">
|
||||
<set path="#unit">
|
||||
<select/>
|
||||
</set>
|
||||
<set path="#service">
|
||||
<select path="::"/>
|
||||
</set>
|
||||
<rule>
|
||||
<parameter name="match">/$.services.activeDirectories[?(@.domain == '<select path="domain"/>' and @.state.primaryDcIp)]</parameter>
|
||||
|
||||
<send-command template="JoinDomain">
|
||||
<parameter name="host">
|
||||
<select path="name" source="unit"/>
|
||||
</parameter>
|
||||
<parameter name="service">
|
||||
<select path="id" source="service"/>
|
||||
</parameter>
|
||||
<parameter name="mappings">
|
||||
<map>
|
||||
<mapping name="domain">
|
||||
<select path="domain"/>
|
||||
</mapping>
|
||||
<mapping name="domainPassword">
|
||||
<select path="adminPassword"/>
|
||||
</mapping>
|
||||
<mapping name="dnsIp">
|
||||
<select path="state.primaryDcIp"/>
|
||||
</mapping>
|
||||
</map>
|
||||
</parameter>
|
||||
|
||||
<success>
|
||||
<set path="state.domain" target="unit">
|
||||
<select path="domain"/>
|
||||
</set>
|
||||
<report entity="unit">
|
||||
<parameter name="id"><select path="id" source="unit"/></parameter>
|
||||
<parameter name="text">Unit <select path="name" source="unit"/> has joined domain <select path="domain"/></parameter>
|
||||
</report>
|
||||
</success>
|
||||
</send-command>
|
||||
</rule>
|
||||
</rule>
|
||||
|
||||
|
||||
<rule match="$.services.activeDirectories[*].units[?(@.state.domain and not @.isMaster and not @.state.installed)]">
|
||||
<report entity="unit">
|
||||
<parameter name="id"><select path="id"/></parameter>
|
||||
<parameter name="text">Creating Secondary Domain Controller on unit <select path="name"/></parameter>
|
||||
</report>
|
||||
<send-command template="CreateSecondaryDC">
|
||||
<parameter name="host">
|
||||
<select path="name"/>
|
||||
</parameter>
|
||||
<parameter name="service">
|
||||
<select path="::id"/>
|
||||
</parameter>
|
||||
<parameter name="mappings">
|
||||
<map>
|
||||
<mapping name="recoveryPassword">
|
||||
<select path="recoveryPassword"/>
|
||||
</mapping>
|
||||
<mapping name="domainPassword">
|
||||
<select path="::adminPassword"/>
|
||||
</mapping>
|
||||
</map>
|
||||
</parameter>
|
||||
<success>
|
||||
<set path="state.installed"><true/></set>
|
||||
<report entity="unit">
|
||||
<parameter name="id"><select path="id"/></parameter>
|
||||
<parameter name="text">Secondary Domain Controller created</parameter>
|
||||
</report>
|
||||
<report entity="service">
|
||||
<parameter name="id"><select path="::id"/></parameter>
|
||||
<parameter name="text">Domain <select path="::domain"/> created</parameter>
|
||||
</report>
|
||||
</success>
|
||||
</send-command>
|
||||
</rule>
|
||||
</workflow>
|
@ -1,65 +1,65 @@
|
||||
<workflow>
|
||||
<rule match="$.services.webServers[?(@.domain)].units[*]">
|
||||
<set path="domain">
|
||||
<select path="::domain"/>
|
||||
</set>
|
||||
</rule>
|
||||
|
||||
<rule match="$.services.webServers[*].units[?(@.state.hostname and not @.state.instanceName)]">
|
||||
<report entity="unit">
|
||||
<parameter name="id"><select path="id"/></parameter>
|
||||
<parameter name="text">Creating instance <select path="name"/></parameter>
|
||||
</report>
|
||||
<update-cf-stack template="Windows">
|
||||
<parameter name="mappings">
|
||||
<map>
|
||||
<mapping name="instanceName">WS-<select path="::id"/>-<select path="name"/></mapping>
|
||||
<mapping name="userData">
|
||||
<prepare-user-data>
|
||||
<parameter name="hostname"><select path="state.hostname"/></parameter>
|
||||
<parameter name="unit"><select path="name"/></parameter>
|
||||
<parameter name="service"><select path="::id"/></parameter>
|
||||
</prepare-user-data>
|
||||
</mapping>
|
||||
</map>
|
||||
</parameter>
|
||||
<parameter name="arguments">
|
||||
<map>
|
||||
<argument name="KeyName">keero-linux-keys</argument>
|
||||
<argument name="InstanceType">m1.medium</argument>
|
||||
<argument name="ImageName">ws-2012-full</argument>
|
||||
</map>
|
||||
</parameter>
|
||||
|
||||
<success>
|
||||
<set path="state.instanceName"><select path="name"/></set>
|
||||
<report entity="unit">
|
||||
<parameter name="id"><select path="id"/></parameter>
|
||||
<parameter name="text">Instance <select path="name"/> created</parameter>
|
||||
</report>
|
||||
</success>
|
||||
</update-cf-stack>
|
||||
</rule>
|
||||
|
||||
<rule match="$.services.webServers[*].units[?(@.state.instanceName and not @.state.iisInstalled)]">
|
||||
<report entity="unit">
|
||||
<parameter name="id"><select path="id"/></parameter>
|
||||
<parameter name="text">Creating IIS Web Server on unit <select path="name"/></parameter>
|
||||
</report>
|
||||
<send-command template="InstallIIS">
|
||||
<parameter name="host">
|
||||
<select path="name"/>
|
||||
</parameter>
|
||||
<parameter name="service">
|
||||
<select path="::id"/>
|
||||
</parameter>
|
||||
<success>
|
||||
<set path="state.iisInstalled"><true/></set>
|
||||
<report entity="unit">
|
||||
<parameter name="id"><select path="id"/></parameter>
|
||||
<parameter name="text">IIS <select path="name"/> has started</parameter>
|
||||
</report>
|
||||
</success>
|
||||
</send-command>
|
||||
</rule>
|
||||
<workflow>
|
||||
<rule match="$.services.webServers[?(@.domain)].units[*]">
|
||||
<set path="domain">
|
||||
<select path="::domain"/>
|
||||
</set>
|
||||
</rule>
|
||||
|
||||
<rule match="$.services.webServers[*].units[?(@.state.hostname and not @.state.instanceName)]">
|
||||
<report entity="unit">
|
||||
<parameter name="id"><select path="id"/></parameter>
|
||||
<parameter name="text">Creating instance <select path="name"/></parameter>
|
||||
</report>
|
||||
<update-cf-stack template="Windows">
|
||||
<parameter name="mappings">
|
||||
<map>
|
||||
<mapping name="instanceName">WS-<select path="::id"/>-<select path="name"/></mapping>
|
||||
<mapping name="userData">
|
||||
<prepare-user-data>
|
||||
<parameter name="hostname"><select path="state.hostname"/></parameter>
|
||||
<parameter name="unit"><select path="name"/></parameter>
|
||||
<parameter name="service"><select path="::id"/></parameter>
|
||||
</prepare-user-data>
|
||||
</mapping>
|
||||
</map>
|
||||
</parameter>
|
||||
<parameter name="arguments">
|
||||
<map>
|
||||
<argument name="KeyName">keero-keys</argument>
|
||||
<argument name="InstanceType">m1.medium</argument>
|
||||
<argument name="ImageName">ws-2012-full</argument>
|
||||
</map>
|
||||
</parameter>
|
||||
|
||||
<success>
|
||||
<set path="state.instanceName"><select path="name"/></set>
|
||||
<report entity="unit">
|
||||
<parameter name="id"><select path="id"/></parameter>
|
||||
<parameter name="text">Instance <select path="name"/> created</parameter>
|
||||
</report>
|
||||
</success>
|
||||
</update-cf-stack>
|
||||
</rule>
|
||||
|
||||
<rule match="$.services.webServers[*].units[?(@.state.instanceName and not @.state.iisInstalled)]">
|
||||
<report entity="unit">
|
||||
<parameter name="id"><select path="id"/></parameter>
|
||||
<parameter name="text">Creating IIS Web Server on unit <select path="name"/></parameter>
|
||||
</report>
|
||||
<send-command template="InstallIIS">
|
||||
<parameter name="host">
|
||||
<select path="name"/>
|
||||
</parameter>
|
||||
<parameter name="service">
|
||||
<select path="::id"/>
|
||||
</parameter>
|
||||
<success>
|
||||
<set path="state.iisInstalled"><true/></set>
|
||||
<report entity="unit">
|
||||
<parameter name="id"><select path="id"/></parameter>
|
||||
<parameter name="text">IIS <select path="name"/> has started</parameter>
|
||||
</report>
|
||||
</success>
|
||||
</send-command>
|
||||
</rule>
|
||||
</workflow>
|
@ -4,8 +4,7 @@ debug=True
|
||||
verbose=True
|
||||
|
||||
[heat]
|
||||
url = http://172.18.124.101:8004/v1/16eb78cbb688459c8308d89678bcef50
|
||||
keystone = http://172.18.124.101:5000/v2.0
|
||||
auth_url = http://172.18.124.101:5000/v2.0
|
||||
|
||||
[rabbitmq]
|
||||
host = 172.18.124.101
|
||||
|
Loading…
Reference in New Issue
Block a user