'Creates a new rule. Once created, this rule\'s resource manifest is
immutable.
topic_name:
Name of the topic.
subscription_name:
Name of the subscription.
rule_name:
Name of the rule.
fail_on_exist:
Specify whether to throw an exception when the rule exists.'

def create_rule(self, topic_name, subscription_name, rule_name, rule=None, fail_on_exist=False):

    _validate_not_none('topic_name', topic_name)
    _validate_not_none('subscription_name', subscription_name)
    _validate_not_none('rule_name', rule_name)
    request = HTTPRequest()
    request.method = 'PUT'
    request.host = self._get_host()
    request.path = (((((('/' + _str(topic_name)) + '/subscriptions/') + _str(subscription_name)) + '/rules/') + _str(rule_name)) + '')
    request.body = _get_request_body(_convert_rule_to_xml(rule))
    (request.path, request.query) = self._httpclient._update_request_uri_query(request)
    request.headers = self._update_service_bus_header(request)
    if (not fail_on_exist):
        try:
            self._perform_request(request)
            return True
        except AzureHttpError as ex:
            _dont_fail_on_exist(ex)
            return False
    else:
        self._perform_request(request)
        return True
