// 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 org.apache.cloudstack.engine.cloud.entity.api;
import java.lang.reflect.Method;
import java.util.Date;
import java.util.List;
import java.util.Map;
import javax.inject.Inject;
import org.springframework.stereotype.Component;
import org.apache.cloudstack.engine.cloud.entity.api.db.VMEntityVO;
import com.cloud.deploy.DeploymentPlan;
import com.cloud.deploy.DeploymentPlanner;
import com.cloud.deploy.DeploymentPlanner.ExcludeList;
import com.cloud.exception.AgentUnavailableException;
import com.cloud.exception.ConcurrentOperationException;
import com.cloud.exception.InsufficientCapacityException;
import com.cloud.exception.OperationTimedoutException;
import com.cloud.exception.ResourceUnavailableException;
import com.cloud.vm.VirtualMachineProfile;
@Component
public class VirtualMachineEntityImpl implements VirtualMachineEntity {
@Inject
private VMEntityManager manager;
private VMEntityVO vmEntityVO;
public VirtualMachineEntityImpl() {
}
public void init(String vmId) {
this.vmEntityVO = this.manager.loadVirtualMachine(vmId);
}
public void init(String vmId, String owner, String hostName, String displayName, int cpu, int speed, long memory, List<String> computeTags,
List<String> rootDiskTags, List<String> networks) {
init(vmId);
this.vmEntityVO.setOwner(owner);
this.vmEntityVO.setHostname(hostName);
this.vmEntityVO.setDisplayname(displayName);
this.vmEntityVO.setComputeTags(computeTags);
this.vmEntityVO.setRootDiskTags(rootDiskTags);
this.vmEntityVO.setNetworkIds(networks);
manager.saveVirtualMachine(vmEntityVO);
}
public VirtualMachineEntityImpl(String vmId, VMEntityManager manager) {
this.manager = manager;
this.vmEntityVO = this.manager.loadVirtualMachine(vmId);
}
public VirtualMachineEntityImpl(String vmId, String owner, String hostName, String displayName, int cpu, int speed, long memory, List<String> computeTags,
List<String> rootDiskTags, List<String> networks, VMEntityManager manager) {
this(vmId, manager);
this.vmEntityVO.setOwner(owner);
this.vmEntityVO.setHostname(hostName);
this.vmEntityVO.setDisplayname(displayName);
this.vmEntityVO.setComputeTags(computeTags);
this.vmEntityVO.setRootDiskTags(rootDiskTags);
this.vmEntityVO.setNetworkIds(networks);
manager.saveVirtualMachine(vmEntityVO);
}
@Override
public String getUuid() {
return vmEntityVO.getUuid();
}
@Override
public long getId() {
return vmEntityVO.getId();
}
@Override
public String getCurrentState() {
// TODO Auto-generated method stub
return null;
}
@Override
public String getDesiredState() {
// TODO Auto-generated method stub
return null;
}
@Override
public Date getCreatedTime() {
return vmEntityVO.getCreated();
}
@Override
public Date getLastUpdatedTime() {
return vmEntityVO.getUpdateTime();
}
@Override
public String getOwner() {
// TODO Auto-generated method stub
return null;
}
@Override
public Map<String, String> getDetails() {
return vmEntityVO.getDetails();
}
@Override
public void addDetail(String name, String value) {
vmEntityVO.setDetail(name, value);
}
@Override
public void delDetail(String name, String value) {
// TODO Auto-generated method stub
}
@Override
public void updateDetail(String name, String value) {
// TODO Auto-generated method stub
}
@Override
public List<Method> getApplicableActions() {
// TODO Auto-generated method stub
return null;
}
@Override
public List<String> listVolumeIds() {
// TODO Auto-generated method stub
return null;
}
@Override
public List<VolumeEntity> listVolumes() {
// TODO Auto-generated method stub
return null;
}
@Override
public List<String> listNicUuids() {
// TODO Auto-generated method stub
return null;
}
@Override
public List<NicEntity> listNics() {
// TODO Auto-generated method stub
return null;
}
@Override
public TemplateEntity getTemplate() {
// TODO Auto-generated method stub
return null;
}
@Override
public List<String> listTags() {
// TODO Auto-generated method stub
return null;
}
@Override
public void addTag() {
// TODO Auto-generated method stub
}
@Override
public void delTag() {
// TODO Auto-generated method stub
}
@Override
public String reserve(DeploymentPlanner plannerToUse, DeploymentPlan plan, ExcludeList exclude, String caller) throws InsufficientCapacityException,
ResourceUnavailableException {
return manager.reserveVirtualMachine(this.vmEntityVO, plannerToUse, plan, exclude);
}
@Override
public void migrateTo(String reservationId, String caller) {
// TODO Auto-generated method stub
}
@Override
public void deploy(String reservationId, String caller, Map<VirtualMachineProfile.Param, Object> params) throws InsufficientCapacityException,
ResourceUnavailableException {
manager.deployVirtualMachine(reservationId, this.vmEntityVO, caller, params);
}
@Override
public boolean stop(String caller) throws ResourceUnavailableException {
return manager.stopvirtualmachine(this.vmEntityVO, caller);
}
@Override
public boolean stopForced(String caller) throws ResourceUnavailableException {
return manager.stopvirtualmachineforced(this.vmEntityVO, caller);
}
@Override
public void cleanup() {
// TODO Auto-generated method stub
}
@Override
public boolean destroy(String caller, boolean expunge) throws AgentUnavailableException, OperationTimedoutException, ConcurrentOperationException {
return manager.destroyVirtualMachine(this.vmEntityVO, caller, expunge);
}
@Override
public VirtualMachineEntity duplicate(String externalId) {
// TODO Auto-generated method stub
return null;
}
@Override
public SnapshotEntity takeSnapshotOf() {
// TODO Auto-generated method stub
return null;
}
@Override
public void attach(VolumeEntity volume, short deviceId) {
// TODO Auto-generated method stub
}
@Override
public void detach(VolumeEntity volume) {
// TODO Auto-generated method stub
}
@Override
public void connectTo(NetworkEntity network, short nicId) {
// TODO Auto-generated method stub
}
@Override
public void disconnectFrom(NetworkEntity netowrk, short nicId) {
// TODO Auto-generated method stub
}
}