Merge "Special XML tag to format the Agent exceptions"
This commit is contained in:
commit
355fe9aae1
@ -42,7 +42,7 @@
|
||||
<failure>
|
||||
<report entity="unit" level="error">
|
||||
<parameter name="id"><select path="id"/></parameter>
|
||||
<parameter name="text">Unable to deploy instance <select path="state.hostname"/> (<select path="name"/>) due to <select source="exception" path="message" default="unknown Heat error"/> </parameter>
|
||||
<parameter name="text">Unable to deploy instance <select path="state.hostname"/> (<select path="name"/>) due to <format-error error="exception"/></parameter>
|
||||
</report>
|
||||
<stop/>
|
||||
</failure>
|
||||
@ -73,7 +73,7 @@
|
||||
<failure>
|
||||
<report entity="unit" level="warning">
|
||||
<parameter name="id"><select path="id"/></parameter>
|
||||
<parameter name="text">Unable to set admin password on unit <select path="state.hostname"/> (<select path="name"/>) due to <select source="exception" path="0.messages.0" default="unknown Agent error"/> </parameter>
|
||||
<parameter name="text">Unable to set admin password on unit <select path="state.hostname"/> (<select path="name"/>) due to <format-error error="exception"/></parameter>
|
||||
</report>
|
||||
<mute/>
|
||||
</failure>
|
||||
@ -104,7 +104,7 @@
|
||||
<failure>
|
||||
<report entity="unit" level="error">
|
||||
<parameter name="id"><select path="id"/></parameter>
|
||||
<parameter name="text">Unable to set domain administrator password on unit <select path="state.hostname"/> (<select path="name"/>) due to <select source="exception" path="0.messages.0" default="unknown Agent error"/> </parameter>
|
||||
<parameter name="text">Unable to set domain administrator password on unit <select path="state.hostname"/> (<select path="name"/>) due to <format-error error="exception"/></parameter>
|
||||
</report>
|
||||
<stop/>
|
||||
</failure>
|
||||
@ -144,7 +144,7 @@
|
||||
<failure>
|
||||
<report entity="unit" level="error">
|
||||
<parameter name="id"><select path="id"/></parameter>
|
||||
<parameter name="text">Unable to create a Primary DC on unit <select path="state.hostname"/> (<select path="name"/>) due to <select source="exception" path="0.messages.0" default="unknown Agent error"/> </parameter>
|
||||
<parameter name="text">Unable to create a Primary DC on unit <select path="state.hostname"/> (<select path="name"/>) due to <format-error error="exception"/></parameter>
|
||||
</report>
|
||||
<stop/>
|
||||
</failure>
|
||||
@ -168,7 +168,7 @@
|
||||
<failure>
|
||||
<report entity="unit" level="error">
|
||||
<parameter name="id"><select path="id"/></parameter>
|
||||
<parameter name="text">Unable assign DNS IP on unit <select path="state.hostname"/> (<select path="name"/>) due to <select source="exception" path="0.messages.0" default="unknown Agent error"/> </parameter>
|
||||
<parameter name="text">Unable assign DNS IP on unit <select path="state.hostname"/> (<select path="name"/>) due to <format-error error="exception"/></parameter>
|
||||
</report>
|
||||
<stop/>
|
||||
</failure>
|
||||
@ -202,7 +202,7 @@
|
||||
<failure>
|
||||
<report entity="unit" level="error">
|
||||
<parameter name="id"><select path="id"/></parameter>
|
||||
<parameter name="text">Unit <select path="state.hostname" source="unit"/> (<select path="name" source="unit"/>) was unable to leave the domain due to <select source="exception" path="0.messages.0" default="unknown Agent error"/> </parameter>
|
||||
<parameter name="text">Unit <select path="state.hostname" source="unit"/> (<select path="name" source="unit"/>) was unable to leave the domain due to <format-error error="exception"/></parameter>
|
||||
</report>
|
||||
<stop/>
|
||||
</failure>
|
||||
@ -259,7 +259,7 @@
|
||||
<failure>
|
||||
<report entity="unit" level="error">
|
||||
<parameter name="id"><select path="id"/></parameter>
|
||||
<parameter name="text">Unit <select path="state.hostname" source="unit"/> (<select path="name" source="unit"/>) was unable to join the domain due to <select source="exception" path="0.messages.0" default="unknown Agent error"/> </parameter>
|
||||
<parameter name="text">Unit <select path="state.hostname" source="unit"/> (<select path="name" source="unit"/>) was unable to join the domain due to <format-error error="exception"/></parameter>
|
||||
</report>
|
||||
<stop/>
|
||||
</failure>
|
||||
|
@ -41,7 +41,7 @@
|
||||
<failure>
|
||||
<report entity="unit" level="error">
|
||||
<parameter name="id"><select path="id"/></parameter>
|
||||
<parameter name="text">Unable to deploy instance <select path="state.hostname"/> (<select path="name"/>) due to <select source="exception" path="message" default="unknown Heat error"/> </parameter>
|
||||
<parameter name="text">Unable to deploy instance <select path="state.hostname"/> (<select path="name"/>) due to <format-error error="exception"/></parameter>
|
||||
</report>
|
||||
<stop/>
|
||||
</failure>
|
||||
@ -65,7 +65,7 @@
|
||||
<failure>
|
||||
<report entity="unit" level="error">
|
||||
<parameter name="id"><select path="id"/></parameter>
|
||||
<parameter name="text">Unable to create a Server Farm load balancer on unit <select path="state.hostname"/> (<select path="name"/>) due to <select source="exception" path="message" default="unknown Heat error"/> </parameter>
|
||||
<parameter name="text">Unable to create a Server Farm load balancer on unit <select path="state.hostname"/> (<select path="name"/>) due to <format-error error="exception"/></parameter>
|
||||
</report>
|
||||
<stop/>
|
||||
</failure>
|
||||
@ -96,7 +96,7 @@
|
||||
<failure>
|
||||
<report entity="unit" level="warning">
|
||||
<parameter name="id"><select path="id"/></parameter>
|
||||
<parameter name="text">Unable to set admin password on unit <select path="state.hostname"/> (<select path="name"/>) due to <select source="exception" path="0.messages.0" default="unknown Agent error"/> </parameter>
|
||||
<parameter name="text">Unable to set admin password on unit <select path="state.hostname"/> (<select path="name"/>) <format-error error="exception"/></parameter>
|
||||
</report>
|
||||
<mute/>
|
||||
</failure>
|
||||
@ -127,7 +127,7 @@
|
||||
<failure>
|
||||
<report entity="unit" level="error">
|
||||
<parameter name="id"><select path="id"/></parameter>
|
||||
<parameter name="text">Unable to install IIS on <select path="state.hostname"/> (<select path="name"/>) due to <select source="exception" path="0.messages.0" default="unknown Agent error"/> </parameter>
|
||||
<parameter name="text">Unable to install IIS on <select path="state.hostname"/> (<select path="name"/>) <format-error error="exception"/></parameter>
|
||||
</report>
|
||||
<stop/>
|
||||
</failure>
|
||||
@ -164,11 +164,11 @@
|
||||
<failure>
|
||||
<report entity="unit" level="error">
|
||||
<parameter name="id"><select path="id"/></parameter>
|
||||
<parameter name="text">Unable to deploy WebApp on <select path="state.hostname"/> (<select path="name"/>) due to <select source="exception" path="0.messages.0" default="unknown Agent error"/> </parameter>
|
||||
<parameter name="text">Unable to deploy WebApp on <select path="state.hostname"/> (<select path="name"/>) <format-error error="exception"/></parameter>
|
||||
</report>
|
||||
<stop/>
|
||||
</failure>
|
||||
</send-command>
|
||||
</rule>
|
||||
|
||||
</workflow>
|
||||
</workflow>
|
||||
|
@ -85,7 +85,7 @@
|
||||
<failure>
|
||||
<report entity="unit" level="error">
|
||||
<parameter name="id"><select path="id"/></parameter>
|
||||
<parameter name="text">Unit <select path="state.hostname"/> (<select path="name"/>) was unable to join the domain due to <select source="exception" path="0.messages.0" default="unknown Agent error"/> </parameter>
|
||||
<parameter name="text">Unit <select path="state.hostname"/> (<select path="name"/>) was unable to join the domain due to <format-error error="exception"/></parameter>
|
||||
</report>
|
||||
<stop/>
|
||||
</failure>
|
||||
|
@ -42,7 +42,7 @@
|
||||
<failure>
|
||||
<report entity="unit" level="error">
|
||||
<parameter name="id"><select path="id"/></parameter>
|
||||
<parameter name="text">Unable to deploy instance <select path="state.hostname"/> (<select path="name"/>) due to <select source="exception" path="message" default="unknown Heat error"/> </parameter>
|
||||
<parameter name="text">Unable to deploy instance <select path="state.hostname"/> (<select path="name"/>) due to <format-error error="exception"/></parameter>
|
||||
</report>
|
||||
<stop/>
|
||||
</failure>
|
||||
@ -112,7 +112,7 @@
|
||||
<failure>
|
||||
<report entity="unit" level="warning">
|
||||
<parameter name="id"><select path="id"/></parameter>
|
||||
<parameter name="text">Unable to set admin password on unit <select path="state.hostname"/> (<select path="name"/>) due to <select source="exception" path="0.messages.0" default="unknown Agent error"/> </parameter>
|
||||
<parameter name="text">Unable to set admin password on unit <select path="state.hostname"/> (<select path="name"/>) due to <format-error error="exception"/></parameter>
|
||||
</report>
|
||||
<mute/>
|
||||
</failure>
|
||||
@ -151,7 +151,7 @@
|
||||
<failure>
|
||||
<report entity="unit" level="error">
|
||||
<parameter name="id"><select path="id"/></parameter>
|
||||
<parameter name="text">Unable to install prerequisites on unit <select path="state.hostname"/> (<select path="name"/>) due to <select source="exception" path="0.messages.0" default="unknown Agent error"/> </parameter>
|
||||
<parameter name="text">Unable to install prerequisites on unit <select path="state.hostname"/> (<select path="name"/>) due to <format-error error="exception"/></parameter>
|
||||
</report>
|
||||
<stop/>
|
||||
</failure>
|
||||
@ -202,7 +202,7 @@
|
||||
<failure>
|
||||
<report entity="Service" level="error">
|
||||
<parameter name="id"><select path="::id"/></parameter>
|
||||
<parameter name="text">Unable to create failover cluster for SQL Server Service <select path="::name"/> due to <select source="exception" path="0.messages.0" default="unknown Agent error"/> </parameter>
|
||||
<parameter name="text">Unable to create failover cluster for SQL Server Service <select path="::name"/> due to <format-error error="exception"/></parameter>
|
||||
</report>
|
||||
<stop/>
|
||||
</failure>
|
||||
@ -235,7 +235,7 @@
|
||||
<failure>
|
||||
<report entity="service" level="error">
|
||||
<parameter name="id"><select path="::id"/></parameter>
|
||||
<parameter name="text">Unable to configure the environment for AlwaysOn Availability Group of SQL Server Cluster service (<select path="::name"/>) due to <select source="exception" path="0.messages.0" default="unknown Agent error"/> </parameter>
|
||||
<parameter name="text">Unable to configure the environment for AlwaysOn Availability Group of SQL Server Cluster service (<select path="::name"/>) due to <format-error error="exception"/></parameter>
|
||||
</report>
|
||||
<stop/>
|
||||
</failure>
|
||||
@ -280,7 +280,7 @@
|
||||
<failure>
|
||||
<report entity="unit" level="error">
|
||||
<parameter name="id"><select path="id"/></parameter>
|
||||
<parameter name="text">Unable to install SQL Server on unit <select path="state.hostname"/> (<select path="name"/>) due to <select source="exception" path="0.messages.0" default="unknown Agent error"/> </parameter>
|
||||
<parameter name="text">Unable to install SQL Server on unit <select path="state.hostname"/> (<select path="name"/>) due to <format-error error="exception"/></parameter>
|
||||
</report>
|
||||
<stop/>
|
||||
</failure>
|
||||
@ -325,7 +325,7 @@
|
||||
<failure>
|
||||
<report entity="unit" level="error">
|
||||
<parameter name="id"><select path="id"/></parameter>
|
||||
<parameter name="text">Unable to initialize AlwaysOn AG for <select path="state.hostname"/> (<select path="name"/>) due to <select source="exception" path="0.messages.0" default="unknown Agent error"/> </parameter>
|
||||
<parameter name="text">Unable to initialize AlwaysOn AG for <select path="state.hostname"/> (<select path="name"/>) due to <format-error error="exception"/></parameter>
|
||||
</report>
|
||||
<stop/>
|
||||
</failure>
|
||||
@ -385,7 +385,7 @@
|
||||
<failure>
|
||||
<report entity="unit" level="error">
|
||||
<parameter name="id"><select path="id"/></parameter>
|
||||
<parameter name="text">Unable to initialize primary replica for SQL Server AG for <select path="state.hostname"/> (<select path="name"/>) due to <select source="exception" path="0.messages.0" default="unknown Agent error"/> </parameter>
|
||||
<parameter name="text">Unable to initialize primary replica for SQL Server AG for <select path="state.hostname"/> (<select path="name"/>) due to <format-error error="exception"/></parameter>
|
||||
</report>
|
||||
<stop/>
|
||||
</failure>
|
||||
@ -430,7 +430,7 @@
|
||||
<failure>
|
||||
<report entity="unit" level="error">
|
||||
<parameter name="id"><select path="id"/></parameter>
|
||||
<parameter name="text">Unable to initialize secondary replica for SQL Server AG for <select path="state.hostname"/> (<select path="name"/>) due to <select source="exception" path="0.messages.0" default="unknown Agent error"/> </parameter>
|
||||
<parameter name="text">Unable to initialize secondary replica for SQL Server AG for <select path="state.hostname"/> (<select path="name"/>) due to <format-error error="exception"/></parameter>
|
||||
</report>
|
||||
<stop/>
|
||||
</failure>
|
||||
|
@ -41,7 +41,7 @@
|
||||
<failure>
|
||||
<report entity="unit" level="error">
|
||||
<parameter name="id"><select path="id"/></parameter>
|
||||
<parameter name="text">Unable to deploy instance <select path="state.hostname"/> (<select path="name"/>) due to <select source="exception" path="message" default="unknown Heat error"/> </parameter>
|
||||
<parameter name="text">Unable to deploy instance <select path="state.hostname"/> (<select path="name"/>) due to <format-error error="exception"/></parameter>
|
||||
</report>
|
||||
<stop/>
|
||||
</failure>
|
||||
@ -97,7 +97,7 @@
|
||||
<failure>
|
||||
<report entity="unit" level="warning">
|
||||
<parameter name="id"><select path="id"/></parameter>
|
||||
<parameter name="text">Unable to set admin password on unit <select path="state.hostname"/> (<select path="name"/>) due to <select source="exception" path="0.messages.0" default="unknown Agent error"/> </parameter>
|
||||
<parameter name="text">Unable to set admin password on unit <select path="state.hostname"/> (<select path="name"/>) due to <format-error error="exception"/></parameter>
|
||||
</report>
|
||||
<mute/>
|
||||
</failure>
|
||||
@ -139,11 +139,11 @@
|
||||
<failure>
|
||||
<report entity="unit" level="error">
|
||||
<parameter name="id"><select path="id"/></parameter>
|
||||
<parameter name="text">Unable to install MS SQL Server on unit <select path="state.hostname"/> (<select path="name"/>) due to <select source="exception" path="0.messages.0" default="unknown Agent error"/> </parameter>
|
||||
<parameter name="text">Unable to install MS SQL Server on unit <select path="state.hostname"/> (<select path="name"/>) due to <format-error error="exception"/></parameter>
|
||||
</report>
|
||||
<stop/>
|
||||
</failure>
|
||||
</send-command>
|
||||
</rule>
|
||||
|
||||
</workflow>
|
||||
</workflow>
|
||||
|
@ -18,6 +18,7 @@ import config
|
||||
import random
|
||||
import string
|
||||
import time
|
||||
import datetime
|
||||
|
||||
import xml_code_engine
|
||||
from openstack.common import log as logging
|
||||
@ -38,7 +39,7 @@ def update_cf_stack(engine, context, body, template, result=None, error=None,
|
||||
context[error] = {
|
||||
'message': getattr(error_result, 'message', None),
|
||||
'strerror': getattr(error_result, 'strerror', None),
|
||||
'timestamp': time.time()
|
||||
'timestamp': datetime.datetime.now().isoformat()
|
||||
}
|
||||
failure_handler = body.find('failure')
|
||||
if failure_handler is not None:
|
||||
|
@ -13,6 +13,7 @@
|
||||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
import os.path
|
||||
import datetime
|
||||
from muranoconductor.commands.windows_agent import AgentTimeoutException
|
||||
from muranoconductor.commands.windows_agent import UnhandledAgentException
|
||||
|
||||
@ -42,26 +43,20 @@ def send_command(engine, context, body, template, service, unit,
|
||||
errors = []
|
||||
if isinstance(result_value, AgentTimeoutException):
|
||||
errors.append({
|
||||
'type': "timeout",
|
||||
'messages': [result_value.message],
|
||||
'timeout': result_value.timeout
|
||||
'source': 'timeout',
|
||||
'message': result_value.message,
|
||||
'timeout': result_value.timeout,
|
||||
'timestamp': datetime.datetime.now().isoformat()
|
||||
})
|
||||
else:
|
||||
if result_value['IsException']:
|
||||
msg = "A general exception has occurred in the Agent: " + \
|
||||
result_value['Result']
|
||||
errors.append({
|
||||
'type': "general",
|
||||
'messages': [msg],
|
||||
})
|
||||
|
||||
errors.append(dict(_get_exception_info(
|
||||
result_value.get('Result', [])), source='execution_plan'))
|
||||
else:
|
||||
for res in result_value['Result']:
|
||||
for res in result_value.get('Result', []):
|
||||
if res['IsException']:
|
||||
errors.append({
|
||||
'type': 'inner',
|
||||
'messages': res['Result']
|
||||
})
|
||||
errors.append(dict(_get_exception_info(
|
||||
res.get('Result', [])), source='command'))
|
||||
else:
|
||||
ok.append(res)
|
||||
|
||||
@ -77,8 +72,7 @@ def send_command(engine, context, body, template, service, unit,
|
||||
failure_handler = body.find('failure')
|
||||
if failure_handler is not None:
|
||||
log.warning(
|
||||
"Handling errors ({0}) in failure block".format(errors),
|
||||
exc_info=True)
|
||||
'Handling errors ({0}) in failure block'.format(errors))
|
||||
engine.evaluate_content(failure_handler, context)
|
||||
else:
|
||||
log.error("No failure block found for errors", exc_info=True)
|
||||
@ -92,4 +86,18 @@ def send_command(engine, context, body, template, service, unit,
|
||||
unit=unit, service=service, callback=callback, timeout=timeout)
|
||||
|
||||
|
||||
def _get_array_item(array, index):
|
||||
return array[index] if len(array) > index else None
|
||||
|
||||
|
||||
def _get_exception_info(data):
|
||||
data = data or []
|
||||
return {
|
||||
'type': _get_array_item(data, 0),
|
||||
'message': _get_array_item(data, 1),
|
||||
'command': _get_array_item(data, 2),
|
||||
'details': _get_array_item(data, 3),
|
||||
'timestamp': datetime.datetime.now().isoformat()
|
||||
}
|
||||
|
||||
xml_code_engine.XmlCodeEngine.register_function(send_command, "send-command")
|
||||
|
@ -14,6 +14,7 @@
|
||||
# limitations under the License.
|
||||
import logging
|
||||
|
||||
import anyjson
|
||||
import jsonpath
|
||||
import re
|
||||
import types
|
||||
@ -283,6 +284,10 @@ class Workflow(object):
|
||||
context['/dataSource']['temp']['_stop_requested'] = True
|
||||
|
||||
|
||||
def format_error(context, error, **kwargs):
|
||||
error_data = context[error]
|
||||
return anyjson.dumps(error_data)
|
||||
|
||||
xml_code_engine.XmlCodeEngine.register_function(
|
||||
Workflow._rule_func, 'rule')
|
||||
|
||||
@ -301,6 +306,9 @@ xml_code_engine.XmlCodeEngine.register_function(
|
||||
xml_code_engine.XmlCodeEngine.register_function(
|
||||
Workflow._select_all_func, 'select-all')
|
||||
|
||||
xml_code_engine.XmlCodeEngine.register_function(
|
||||
format_error, "format-error")
|
||||
|
||||
xml_code_engine.XmlCodeEngine.register_function(
|
||||
Workflow._select_single_func, 'select-single')
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user