<!--
   Licensed to the Apache Software Foundation (ASF) under one or more
   contributor license agreements.  See the NOTICE file distributed with
   this work for additional information regarding copyright ownership.
   The ASF licenses this file to You under the Apache License, Version 2.0
   (the "License"); you may not use this file except in compliance with
   the License.  You may obtain a copy of the License at

       http://www.apache.org/licenses/LICENSE-2.0

   Unless required by applicable law or agreed to in writing, software
   distributed under the License is distributed on an "AS IS" BASIS,
   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
   See the License for the specific language governing permissions and
   limitations under the License.
-->
<service role="AMBARIUI" name="ambariui" version="2.2.0">
    <routes>
        <route path="/ambari">
            <rewrite apply="AMBARIUI/ambari/inbound/root" to="request.url"/>
        </route>
        <route path="/ambari/**">
            <rewrite apply="AMBARIUI/ambari/inbound/path" to="request.url"/>
        </route>
        <route path="/ambari/**?**">
            <rewrite apply="AMBARIUI/ambari/inbound/query" to="request.url"/>
        </route>
        <route path="/ambari/**/app.js">
            <rewrite apply="AMBARIUI/ambari/outbound/links" to="response.body"/>
        </route>
    </routes>
    <dispatch classname="org.apache.hadoop.gateway.dispatch.PassAllHeadersDispatch"/>
</service>

