<!-- 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. -->
<beans xmlns="http://www.springframework.org/schema/beans"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context"
  xmlns:tx="http://www.springframework.org/schema/tx" xmlns:aop="http://www.springframework.org/schema/aop"
  xsi:schemaLocation="http://www.springframework.org/schema/beans
                      http://www.springframework.org/schema/beans/spring-beans.xsd
                      http://www.springframework.org/schema/tx
                      http://www.springframework.org/schema/tx/spring-tx.xsd
                      http://www.springframework.org/schema/aop
                      http://www.springframework.org/schema/aop/spring-aop.xsd
                      http://www.springframework.org/schema/context
                      http://www.springframework.org/schema/context/spring-context.xsd">

  <context:annotation-config />

      <!-- @DB support -->
  <bean id="componentContext" class="com.cloud.utils.component.ComponentContext" />

  <bean id="transactionContextBuilder" class="com.cloud.utils.db.TransactionContextBuilder" />
  <bean id="actionEventInterceptor" class="com.cloud.event.ActionEventInterceptor" />
  <bean id="instantiatePostProcessor" class="com.cloud.utils.component.ComponentInstantiationPostProcessor">
    <property name="Interceptors">
        <list>
            <ref bean="transactionContextBuilder" />
            <ref bean="actionEventInterceptor" />
        </list>
    </property>
  </bean>

  <!--
      Network Elements
  -->
  <bean id="SecurityGroupProvider" class="com.cloud.network.element.SecurityGroupElement">
    <property name="name" value="SecurityGroupProvider"/>
  </bean>
  <bean id="VirtualRouter" class="com.cloud.network.element.VirtualRouterElement">
    <property name="name" value="VirtualRouter"/>
  </bean>
  <bean id="VpcVirtualRouter" class="com.cloud.vpc.dao.MockVpcVirtualRouterElement">
    <property name="name" value="VpcVirtualRouter"/>
  </bean>

  <!--
    Network Gurus
  -->
  <bean id="PublicNetworkGuru" class="com.cloud.network.guru.PublicNetworkGuru">
    <property name="name" value="PublicNetworkGuru"/>
  </bean>
  <bean id="PodBasedNetworkGuru" class="com.cloud.network.guru.PodBasedNetworkGuru">
    <property name="name" value="PodBasedNetworkGuru"/>
  </bean>
  <bean id="ControlNetworkGuru" class="com.cloud.network.guru.ControlNetworkGuru">
    <property name="name" value="ControlNetworkGuru"/>
  </bean>
  <bean id="DirectNetworkGuru" class="com.cloud.network.guru.DirectNetworkGuru">
    <property name="name" value="DirectNetworkGuru"/>
  </bean>
  <bean id="DirectPodBasedNetworkGuru" class="com.cloud.network.guru.DirectPodBasedNetworkGuru">
    <property name="name" value="DirectPodBasedNetworkGuru"/>
  </bean>
  <bean id="PrivateNetworkGuru" class="com.cloud.network.guru.PrivateNetworkGuru">
    <property name="name" value="PrivateNetworkGuru"/>
  </bean>

  <bean id="TestConfiguration"
    class="com.cloud.vpc.VpcTestConfiguration" />
  <bean class="org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor">
    <property name="requiredParameterValue" value="false" />
  </bean>
</beans>
