<?xml version="1.0"?>
<!--
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.
-->
<components.xml>
    <migration class="com.cloud.migration.Db21to22MigrationUtil">
        <dao name="host pod dao" class="com.cloud.dc.dao.HostPodDaoImpl" />
        <dao name="Datacenter dao" class="com.cloud.dc.dao.DataCenterDaoImpl" />
        <dao name="Configuration dao" class="com.cloud.configuration.dao.ConfigurationDaoImpl" />
        <dao name="Cluster dao" class="com.cloud.dc.dao.ClusterDaoImpl" />
        <dao name="Host dao" class="com.cloud.host.dao.HostDaoImpl" />
        <dao name="StoragePool dao" class="com.cloud.storage.dao.StoragePoolDaoImpl" />
        <dao name="Domain dao" class="com.cloud.domain.dao.DomainDaoImpl" />
        <dao name="DiskOffering20 dao" class="com.cloud.migration.DiskOffering20DaoImpl" />
        <dao name="DiskOffering21 dao" class="com.cloud.migration.DiskOffering21DaoImpl" />
        <dao name="ServiceOffering20 dao" class="com.cloud.migration.ServiceOffering20DaoImpl" />
        <dao name="ServiceOffering21 dao" class="com.cloud.migration.ServiceOffering21DaoImpl" />
        <dao name="Console Proxy dao" class="com.cloud.vm.dao.ConsoleProxyDaoImpl" />
        <dao name="Secondary Storage VM dao" class="com.cloud.vm.dao.SecondaryStorageVmDaoImpl" />
        <dao name="VM Instance dao" class="com.cloud.vm.dao.VMInstanceDaoImpl" />
        <dao name="Volume dao" class="com.cloud.storage.dao.VolumeDaoImpl" />
        <dao name="User VM dao" class="com.cloud.vm.dao.UserVmDaoImpl" />
        <dao name="User VM clone setting dao" class="com.cloud.vm.dao.UserVmCloneSettingDaoImpl" />
        <dao name="domain router dao" class="com.cloud.vm.dao.DomainRouterDaoImpl" />
        <dao name="Storage pool dao" class="com.cloud.storage.dao.StoragePoolDaoImpl" />
        <dao name="Account dao" class="com.cloud.user.dao.AccountDaoImpl" />
        <dao name="Resouce count dao" class="com.cloud.configuration.dao.ResourceCountDaoImpl" />
        <dao name="Instance group dao" class="com.cloud.vm.dao.InstanceGroupDaoImpl" />
        <dao name="Instance group vm map dao" class="com.cloud.vm.dao.InstanceGroupVMMapDaoImpl" />
    </migration>
</components.xml>
