package org.zstack.network.service.virtualrouter;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.transaction.annotation.Transactional;
import org.zstack.appliancevm.*;
import org.zstack.core.db.DatabaseFacade;
/**
*/
public class VirtualRouterApplianceVmFactory implements ApplianceVmSubTypeFactory {
public static final ApplianceVmType type = new ApplianceVmType(VirtualRouterConstant.VIRTUAL_ROUTER_VM_TYPE);
@Autowired
private DatabaseFacade dbf;
@Override
public ApplianceVmType getApplianceVmType() {
return type;
}
@Override
public ApplianceVm getSubApplianceVm(ApplianceVmVO apvm) {
VirtualRouterVmVO vr = dbf.findByUuid(apvm.getUuid(), VirtualRouterVmVO.class);
return new VirtualRouter(vr);
}
@Override
@Transactional
public ApplianceVmVO persistApplianceVm(ApplianceVmSpec spec, ApplianceVmVO apvm) {
VirtualRouterVmVO vr = new VirtualRouterVmVO(apvm);
VirtualRouterOfferingInventory offering = (VirtualRouterOfferingInventory) spec.getInstanceOffering();
vr.setPublicNetworkUuid(offering.getPublicNetworkUuid());
dbf.getEntityManager().persist(vr);
return vr;
}
}