| // 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.vm; | |
| import java.util.ArrayList; | |
| import java.util.HashMap; | |
| import java.util.List; | |
| import java.util.Map; | |
| import com.cloud.agent.api.to.DiskTO; | |
| import com.cloud.host.Host; | |
| import com.cloud.hypervisor.Hypervisor.HypervisorType; | |
| import com.cloud.network.element.NetworkElement; | |
| import com.cloud.offering.ServiceOffering; | |
| import com.cloud.template.VirtualMachineTemplate; | |
| import com.cloud.template.VirtualMachineTemplate.BootloaderType; | |
| import com.cloud.user.Account; | |
| import com.cloud.utils.db.EntityManager; | |
| /** | |
| * Implementation of VirtualMachineProfile. | |
| * | |
| */ | |
| public class VirtualMachineProfileImpl implements VirtualMachineProfile { | |
| VirtualMachine _vm; | |
| ServiceOffering _offering; | |
| VirtualMachineTemplate _template; | |
| VMInstanceDetailVO _userVmDetails; | |
| Map<Param, Object> _params; | |
| List<NicProfile> _nics = new ArrayList<NicProfile>(); | |
| List<DiskTO> _disks = new ArrayList<DiskTO>(); | |
| StringBuilder _bootArgs = new StringBuilder(); | |
| Account _owner; | |
| BootloaderType _bootloader; | |
| Float cpuOvercommitRatio = 1.0f; | |
| Float memoryOvercommitRatio = 1.0f; | |
| Host _host = null; | |
| VirtualMachine.Type _type; | |
| List<String[]> vmData = null; | |
| String configDriveLabel = null; | |
| String configDriveIsoBaseLocation = "/tmp/"; | |
| String configDriveIsoRootFolder = null; | |
| String configDriveIsoFile = null; | |
| NetworkElement.Location configDriveLocation = NetworkElement.Location.SECONDARY; | |
| public VirtualMachineProfileImpl(VirtualMachine vm, VirtualMachineTemplate template, ServiceOffering offering, Account owner, Map<Param, Object> params) { | |
| _vm = vm; | |
| _template = template; | |
| _offering = offering; | |
| _params = params; | |
| _owner = owner; | |
| if (_params == null) { | |
| _params = new HashMap<Param, Object>(); | |
| } | |
| if (vm != null) | |
| _type = vm.getType(); | |
| } | |
| public VirtualMachineProfileImpl(VirtualMachine vm) { | |
| this(vm, null, null, null, null); | |
| } | |
| public VirtualMachineProfileImpl(VirtualMachine.Type type) { | |
| _type = type; | |
| } | |
| @Override | |
| public String toString() { | |
| if (_vm != null) { | |
| return _vm.toString(); | |
| } | |
| return ""; | |
| } | |
| @Override | |
| public VirtualMachine getVirtualMachine() { | |
| return _vm; | |
| } | |
| @Override | |
| public ServiceOffering getServiceOffering() { | |
| if (_offering == null) { | |
| _offering = s_entityMgr.findById(ServiceOffering.class, _vm.getServiceOfferingId()); | |
| } | |
| return _offering; | |
| } | |
| @Override | |
| public void setParameter(Param name, Object value) { | |
| _params.put(name, value); | |
| } | |
| @Override | |
| public void setBootLoaderType(BootloaderType bootLoader) { | |
| _bootloader = bootLoader; | |
| } | |
| @Override | |
| public VirtualMachineTemplate getTemplate() { | |
| if (_template == null && _vm != null) { | |
| _template = s_entityMgr.findByIdIncludingRemoved(VirtualMachineTemplate.class, _vm.getTemplateId()); | |
| } | |
| return _template; | |
| } | |
| @Override | |
| public HypervisorType getHypervisorType() { | |
| return _vm.getHypervisorType(); | |
| } | |
| @Override | |
| public long getTemplateId() { | |
| return _vm.getTemplateId(); | |
| } | |
| @Override | |
| public long getServiceOfferingId() { | |
| return _vm.getServiceOfferingId(); | |
| } | |
| @Override | |
| public long getId() { | |
| return _vm.getId(); | |
| } | |
| @Override | |
| public String getUuid() { | |
| return _vm.getUuid(); | |
| } | |
| public void setNics(List<NicProfile> nics) { | |
| _nics = nics; | |
| } | |
| public void setDisks(List<DiskTO> disks) { | |
| _disks = disks; | |
| } | |
| @Override | |
| public List<NicProfile> getNics() { | |
| return _nics; | |
| } | |
| @Override | |
| public List<DiskTO> getDisks() { | |
| return _disks; | |
| } | |
| @Override | |
| public void addNic(int index, NicProfile nic) { | |
| _nics.add(index, nic); | |
| } | |
| @Override | |
| public void addDisk(int index, DiskTO disk) { | |
| _disks.add(index, disk); | |
| } | |
| @Override | |
| public StringBuilder getBootArgsBuilder() { | |
| return _bootArgs; | |
| } | |
| @Override | |
| public void addBootArgs(String... args) { | |
| for (String arg : args) { | |
| _bootArgs.append(arg).append(" "); | |
| } | |
| } | |
| @Override | |
| public VirtualMachine.Type getType() { | |
| return _type; | |
| } | |
| @Override | |
| public Account getOwner() { | |
| if (_owner == null) { | |
| _owner = s_entityMgr.findById(Account.class, _vm.getAccountId()); | |
| } | |
| return _owner; | |
| } | |
| @Override | |
| public String getBootArgs() { | |
| return _bootArgs.toString(); | |
| } | |
| static EntityManager s_entityMgr; | |
| static void init(EntityManager entityMgr) { | |
| s_entityMgr = entityMgr; | |
| } | |
| @Override | |
| public void addNic(NicProfile nic) { | |
| _nics.add(nic); | |
| } | |
| @Override | |
| public void addDisk(DiskTO disk) { | |
| _disks.add(disk); | |
| } | |
| @Override | |
| public Object getParameter(Param name) { | |
| return _params.get(name); | |
| } | |
| @Override | |
| public Long getHostId() { | |
| if (_host != null) { | |
| return _host.getId(); | |
| } | |
| return _vm.getHostId(); | |
| } | |
| @Override | |
| public void setHost(Host host) { | |
| this._host = host; | |
| } | |
| @Override | |
| public String getHostName() { | |
| return _vm.getHostName(); | |
| } | |
| @Override | |
| public String getInstanceName() { | |
| return _vm.getInstanceName(); | |
| } | |
| @Override | |
| public BootloaderType getBootLoaderType() { | |
| return _bootloader; | |
| } | |
| @Override | |
| public Map<Param, Object> getParameters() { | |
| return _params; | |
| } | |
| @Override | |
| public void setServiceOffering(ServiceOffering offering) { | |
| _offering = offering; | |
| } | |
| @Override | |
| public void setCpuOvercommitRatio(Float cpuOvercommitRatio) { | |
| this.cpuOvercommitRatio = cpuOvercommitRatio; | |
| } | |
| @Override | |
| public void setMemoryOvercommitRatio(Float memoryOvercommitRatio) { | |
| this.memoryOvercommitRatio = memoryOvercommitRatio; | |
| } | |
| @Override | |
| public Float getCpuOvercommitRatio() { | |
| return cpuOvercommitRatio; | |
| } | |
| @Override | |
| public Float getMemoryOvercommitRatio() { | |
| return memoryOvercommitRatio; | |
| } | |
| @Override | |
| public boolean isRollingRestart() { | |
| return Boolean.TRUE.equals(getParameter(VirtualMachineProfile.Param.RollingRestart)); | |
| } | |
| @Override | |
| public List<String[]> getVmData() { | |
| return vmData; | |
| } | |
| @Override | |
| public void setVmData(List<String[]> vmData) { | |
| this.vmData = vmData; | |
| } | |
| @Override | |
| public String getConfigDriveLabel() { | |
| return configDriveLabel; | |
| } | |
| @Override | |
| public void setConfigDriveLabel(String configDriveLabel) { | |
| this.configDriveLabel = configDriveLabel; | |
| } | |
| @Override | |
| public String getConfigDriveIsoRootFolder() { | |
| return configDriveIsoRootFolder; | |
| } | |
| @Override | |
| public void setConfigDriveIsoRootFolder(String configDriveIsoRootFolder) { | |
| this.configDriveIsoRootFolder = configDriveIsoRootFolder; | |
| } | |
| public String getConfigDriveIsoBaseLocation() { | |
| return configDriveIsoBaseLocation; | |
| } | |
| @Override | |
| public String getConfigDriveIsoFile() { | |
| return configDriveIsoFile; | |
| } | |
| @Override | |
| public void setConfigDriveIsoFile(String isoFile) { | |
| this.configDriveIsoFile = isoFile; | |
| } | |
| @Override | |
| public NetworkElement.Location getConfigDriveLocation() { | |
| return configDriveLocation; | |
| } | |
| @Override | |
| public void setConfigDriveLocation(NetworkElement.Location location) { | |
| this.configDriveLocation = location; | |
| } | |
| } |