<!--
   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>

        <!-- Admin View route -->
        <route path="/ambari/views/ADMIN_VIEW/**/INSTANCE/**/main.js">
            <rewrite apply="AMBARIUI/ambari/outbound/proxyroot" to="response.body"/>
        </route>

        <!-- Files view -->
        <route path="/ambari/views/FILES/**/assets/files-view.js">
            <rewrite apply="AMBARIUI/ambari/outbound/apiendpoint/noroot" to="response.body"/>
        </route>

        <!-- Capacity Scheduler view -->
        <route path="/ambari/views/CAPACITY-SCHEDULER/**/javascripts/app.js">
            <rewrite apply="AMBARIUI/ambari/outbound/apiendpoint/noroot" to="response.body"/>
        </route>

        <!-- Hive view route -->
        <route path="/ambari/views/HIVE/**/assets/hive.js">
            <rewrite apply="AMBARIUI/ambari/outbound/apiendpoint" to="response.body"/>
        </route>

        <!-- Storm View -->
        <route path="/ambari/views/Storm_Monitoring/**/scripts/models/*.js">
            <rewrite apply="AMBARIUI/ambari/outbound/apiendpoint" to="response.body"/>
        </route>

        <route path="/ambari/views/ZEPPELIN/*/*/">
            <rewrite apply="AMBARIUI/ambari/outbound/apiendpoint/html" to="response.body"/>
        </route>

        <!-- Tez View -->
        <route path="/ambari/views/TEZ/*/*/ambari-scripts/init-view.js">
          <rewrite apply="AMBARIUI/ambari/outbound/apiendpoint" to="response.body"/>
        </route>

        <!-- No need to rewrite Slider View -->
    </routes>
    <dispatch classname="org.apache.hadoop.gateway.dispatch.PassAllHeadersDispatch"/>
</service>

