// 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. package com.cloud.network.dao; import java.util.List; import org.springframework.stereotype.Component; import com.cloud.hypervisor.Hypervisor.HypervisorType; import com.cloud.network.Networks.TrafficType; import com.cloud.utils.Pair; import com.cloud.utils.db.DB; import com.cloud.utils.db.GenericDaoBase; import com.cloud.utils.db.GenericSearchBuilder; import com.cloud.utils.db.SearchBuilder; import com.cloud.utils.db.SearchCriteria; import com.cloud.utils.db.SearchCriteria.Op; @Component @DB() public class PhysicalNetworkTrafficTypeDaoImpl extends GenericDaoBase<PhysicalNetworkTrafficTypeVO, Long> implements PhysicalNetworkTrafficTypeDao { final SearchBuilder<PhysicalNetworkTrafficTypeVO> physicalNetworkSearch; final GenericSearchBuilder<PhysicalNetworkTrafficTypeVO, String> kvmAllFieldsSearch; final GenericSearchBuilder<PhysicalNetworkTrafficTypeVO, String> xenAllFieldsSearch; final GenericSearchBuilder<PhysicalNetworkTrafficTypeVO, String> vmWareAllFieldsSearch; final GenericSearchBuilder<PhysicalNetworkTrafficTypeVO, String> simulatorAllFieldsSearch; final GenericSearchBuilder<PhysicalNetworkTrafficTypeVO, String> ovmAllFieldsSearch; final GenericSearchBuilder<PhysicalNetworkTrafficTypeVO, String> hypervAllFieldsSearch; final GenericSearchBuilder<PhysicalNetworkTrafficTypeVO, String> ovm3AllFieldsSearch; protected PhysicalNetworkTrafficTypeDaoImpl() { super(); physicalNetworkSearch = createSearchBuilder(); physicalNetworkSearch.and("physicalNetworkId", physicalNetworkSearch.entity().getPhysicalNetworkId(), Op.EQ); physicalNetworkSearch.and("trafficType", physicalNetworkSearch.entity().getTrafficType(), Op.EQ); physicalNetworkSearch.done(); kvmAllFieldsSearch = createSearchBuilder(String.class); kvmAllFieldsSearch.and("physicalNetworkId", kvmAllFieldsSearch.entity().getPhysicalNetworkId(), Op.EQ); kvmAllFieldsSearch.and("trafficType", kvmAllFieldsSearch.entity().getTrafficType(), Op.EQ); kvmAllFieldsSearch.selectFields(kvmAllFieldsSearch.entity().getKvmNetworkLabel()); kvmAllFieldsSearch.done(); hypervAllFieldsSearch = createSearchBuilder(String.class); hypervAllFieldsSearch.and("physicalNetworkId", hypervAllFieldsSearch.entity().getPhysicalNetworkId(), Op.EQ); hypervAllFieldsSearch.and("trafficType", hypervAllFieldsSearch.entity().getTrafficType(), Op.EQ); hypervAllFieldsSearch.selectFields(hypervAllFieldsSearch.entity().getHypervNetworkLabel()); hypervAllFieldsSearch.done(); xenAllFieldsSearch = createSearchBuilder(String.class); xenAllFieldsSearch.and("physicalNetworkId", xenAllFieldsSearch.entity().getPhysicalNetworkId(), Op.EQ); xenAllFieldsSearch.and("trafficType", xenAllFieldsSearch.entity().getTrafficType(), Op.EQ); xenAllFieldsSearch.selectFields(xenAllFieldsSearch.entity().getXenNetworkLabel()); xenAllFieldsSearch.done(); vmWareAllFieldsSearch = createSearchBuilder(String.class); vmWareAllFieldsSearch.and("physicalNetworkId", vmWareAllFieldsSearch.entity().getPhysicalNetworkId(), Op.EQ); vmWareAllFieldsSearch.and("trafficType", vmWareAllFieldsSearch.entity().getTrafficType(), Op.EQ); vmWareAllFieldsSearch.selectFields(vmWareAllFieldsSearch.entity().getVmwareNetworkLabel()); vmWareAllFieldsSearch.done(); simulatorAllFieldsSearch = createSearchBuilder(String.class); simulatorAllFieldsSearch.and("physicalNetworkId", simulatorAllFieldsSearch.entity().getPhysicalNetworkId(), Op.EQ); simulatorAllFieldsSearch.and("trafficType", simulatorAllFieldsSearch.entity().getTrafficType(), Op.EQ); simulatorAllFieldsSearch.selectFields(simulatorAllFieldsSearch.entity().getSimulatorNetworkLabel()); simulatorAllFieldsSearch.done(); ovmAllFieldsSearch = createSearchBuilder(String.class); ovmAllFieldsSearch.and("physicalNetworkId", ovmAllFieldsSearch.entity().getPhysicalNetworkId(), Op.EQ); ovmAllFieldsSearch.and("trafficType", ovmAllFieldsSearch.entity().getTrafficType(), Op.EQ); ovmAllFieldsSearch.selectFields(ovmAllFieldsSearch.entity().getSimulatorNetworkLabel()); ovmAllFieldsSearch.done(); ovm3AllFieldsSearch = createSearchBuilder(String.class); ovm3AllFieldsSearch.and("physicalNetworkId", ovm3AllFieldsSearch.entity().getPhysicalNetworkId(), Op.EQ); ovm3AllFieldsSearch.and("trafficType", ovm3AllFieldsSearch.entity().getTrafficType(), Op.EQ); ovm3AllFieldsSearch.selectFields(ovm3AllFieldsSearch.entity().getOvm3NetworkLabel()); ovm3AllFieldsSearch.done(); } @Override public Pair<List<PhysicalNetworkTrafficTypeVO>, Integer> listAndCountBy(long physicalNetworkId) { SearchCriteria<PhysicalNetworkTrafficTypeVO> sc = physicalNetworkSearch.create(); sc.setParameters("physicalNetworkId", physicalNetworkId); return searchAndCount(sc, null); } @Override public boolean isTrafficTypeSupported(long physicalNetworkId, TrafficType trafficType) { SearchCriteria<PhysicalNetworkTrafficTypeVO> sc = physicalNetworkSearch.create(); sc.setParameters("physicalNetworkId", physicalNetworkId); sc.setParameters("trafficType", trafficType); if (findOneBy(sc) != null) { return true; } else { return false; } } @Override public String getNetworkTag(long physicalNetworkId, TrafficType trafficType, HypervisorType hType) { SearchCriteria<String> sc = null; if (hType == HypervisorType.XenServer) { sc = xenAllFieldsSearch.create(); } else if (hType == HypervisorType.KVM) { sc = kvmAllFieldsSearch.create(); } else if (hType == HypervisorType.VMware) { sc = vmWareAllFieldsSearch.create(); } else if (hType == HypervisorType.Simulator) { sc = simulatorAllFieldsSearch.create(); } else if (hType == HypervisorType.Ovm) { sc = ovmAllFieldsSearch.create(); } else if (hType == HypervisorType.BareMetal) { return null; } else if (hType == HypervisorType.Hyperv) { sc = hypervAllFieldsSearch.create(); } else if (hType == HypervisorType.Ovm3) { sc = ovm3AllFieldsSearch.create(); } else { assert (false) : "We don't handle this hypervisor type"; return null; } sc.setParameters("physicalNetworkId", physicalNetworkId); sc.setParameters("trafficType", trafficType); List<String> tag = customSearch(sc, null); return tag.size() == 0 ? null : tag.get(0); } @Override public PhysicalNetworkTrafficTypeVO findBy(long physicalNetworkId, TrafficType trafficType) { SearchCriteria<PhysicalNetworkTrafficTypeVO> sc = physicalNetworkSearch.create(); sc.setParameters("physicalNetworkId", physicalNetworkId); sc.setParameters("trafficType", trafficType); return findOneBy(sc); } @Override public void deleteTrafficTypes(long physicalNetworkId) { SearchCriteria<PhysicalNetworkTrafficTypeVO> sc = physicalNetworkSearch.create(); sc.setParameters("physicalNetworkId", physicalNetworkId); remove(sc); } }