You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cloudstack.apache.org by bh...@apache.org on 2012/12/24 01:57:38 UTC
[11/50] [abbrv] Simulator: moving hypervisor simulator into plugin
http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/d6083ce5/agent-simulator/src/com/cloud/agent/manager/MockStorageManagerImpl.java
----------------------------------------------------------------------
diff --git a/agent-simulator/src/com/cloud/agent/manager/MockStorageManagerImpl.java b/agent-simulator/src/com/cloud/agent/manager/MockStorageManagerImpl.java
deleted file mode 100644
index cc15b20..0000000
--- a/agent-simulator/src/com/cloud/agent/manager/MockStorageManagerImpl.java
+++ /dev/null
@@ -1,1298 +0,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.
-package com.cloud.agent.manager;
-
-import java.io.File;
-import java.math.BigInteger;
-import java.net.URI;
-import java.net.URISyntaxException;
-import java.security.MessageDigest;
-import java.security.NoSuchAlgorithmException;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.UUID;
-
-import javax.ejb.Local;
-import javax.naming.ConfigurationException;
-
-import org.apache.log4j.Logger;
-
-import com.cloud.agent.api.Answer;
-import com.cloud.agent.api.AttachIsoCommand;
-import com.cloud.agent.api.AttachVolumeAnswer;
-import com.cloud.agent.api.AttachVolumeCommand;
-import com.cloud.agent.api.BackupSnapshotAnswer;
-import com.cloud.agent.api.BackupSnapshotCommand;
-import com.cloud.agent.api.ComputeChecksumCommand;
-import com.cloud.agent.api.CreatePrivateTemplateFromSnapshotCommand;
-import com.cloud.agent.api.CreatePrivateTemplateFromVolumeCommand;
-import com.cloud.agent.api.CreateStoragePoolCommand;
-import com.cloud.agent.api.CreateVolumeFromSnapshotAnswer;
-import com.cloud.agent.api.CreateVolumeFromSnapshotCommand;
-import com.cloud.agent.api.DeleteSnapshotBackupCommand;
-import com.cloud.agent.api.DeleteStoragePoolCommand;
-import com.cloud.agent.api.GetStorageStatsAnswer;
-import com.cloud.agent.api.GetStorageStatsCommand;
-import com.cloud.agent.api.ManageSnapshotAnswer;
-import com.cloud.agent.api.ManageSnapshotCommand;
-import com.cloud.agent.api.ModifyStoragePoolAnswer;
-import com.cloud.agent.api.ModifyStoragePoolCommand;
-import com.cloud.agent.api.SecStorageSetupAnswer;
-import com.cloud.agent.api.SecStorageSetupCommand;
-import com.cloud.agent.api.SecStorageVMSetupCommand;
-import com.cloud.agent.api.StoragePoolInfo;
-import com.cloud.agent.api.storage.CopyVolumeAnswer;
-import com.cloud.agent.api.storage.CopyVolumeCommand;
-import com.cloud.agent.api.storage.CreateAnswer;
-import com.cloud.agent.api.storage.CreateCommand;
-import com.cloud.agent.api.storage.CreatePrivateTemplateAnswer;
-import com.cloud.agent.api.storage.DeleteTemplateCommand;
-import com.cloud.agent.api.storage.DestroyCommand;
-import com.cloud.agent.api.storage.DownloadAnswer;
-import com.cloud.agent.api.storage.DownloadCommand;
-import com.cloud.agent.api.storage.DownloadProgressCommand;
-import com.cloud.agent.api.storage.ListTemplateAnswer;
-import com.cloud.agent.api.storage.ListTemplateCommand;
-import com.cloud.agent.api.storage.PrimaryStorageDownloadAnswer;
-import com.cloud.agent.api.storage.PrimaryStorageDownloadCommand;
-import com.cloud.agent.api.to.StorageFilerTO;
-import com.cloud.agent.api.to.VolumeTO;
-import com.cloud.simulator.MockHost;
-import com.cloud.simulator.MockSecStorageVO;
-import com.cloud.simulator.MockStoragePoolVO;
-import com.cloud.simulator.MockVMVO;
-import com.cloud.simulator.MockVm;
-import com.cloud.simulator.MockVolumeVO;
-import com.cloud.simulator.MockVolumeVO.MockVolumeType;
-import com.cloud.simulator.dao.MockHostDao;
-import com.cloud.simulator.dao.MockSecStorageDao;
-import com.cloud.simulator.dao.MockStoragePoolDao;
-import com.cloud.simulator.dao.MockVMDao;
-import com.cloud.simulator.dao.MockVolumeDao;
-import com.cloud.storage.Storage;
-import com.cloud.storage.VMTemplateStorageResourceAssoc;
-import com.cloud.storage.Storage.ImageFormat;
-import com.cloud.storage.Storage.StoragePoolType;
-import com.cloud.storage.VMTemplateStorageResourceAssoc.Status;
-import com.cloud.storage.template.TemplateInfo;
-import com.cloud.utils.component.Inject;
-import com.cloud.utils.db.Transaction;
-import com.cloud.utils.exception.CloudRuntimeException;
-import com.cloud.vm.DiskProfile;
-import com.cloud.vm.VirtualMachine.State;
-
-@Local(value = { MockStorageManager.class })
-public class MockStorageManagerImpl implements MockStorageManager {
- private static final Logger s_logger = Logger.getLogger(MockStorageManagerImpl.class);
- @Inject
- MockStoragePoolDao _mockStoragePoolDao = null;
- @Inject
- MockSecStorageDao _mockSecStorageDao = null;
- @Inject
- MockVolumeDao _mockVolumeDao = null;
- @Inject
- MockVMDao _mockVMDao = null;
- @Inject
- MockHostDao _mockHostDao = null;
-
- private MockVolumeVO findVolumeFromSecondary(String path, String ssUrl, MockVolumeType type) {
- Transaction txn = Transaction.open(Transaction.SIMULATOR_DB);
- try {
- txn.start();
- String volumePath = path.replaceAll(ssUrl, "");
- MockSecStorageVO secStorage = _mockSecStorageDao.findByUrl(ssUrl);
- if (secStorage == null) {
- return null;
- }
- volumePath = secStorage.getMountPoint() + volumePath;
- volumePath = volumePath.replaceAll("//", "/");
- MockVolumeVO volume = _mockVolumeDao.findByStoragePathAndType(volumePath);
- txn.commit();
- if (volume == null) {
- return null;
- }
- return volume;
- } catch (Exception ex) {
- txn.rollback();
- throw new CloudRuntimeException("Unable to find volume " + path + " on secondary " + ssUrl, ex);
- } finally {
- txn.close();
- txn = Transaction.open(Transaction.CLOUD_DB);
- txn.close();
- }
- }
-
- @Override
- public PrimaryStorageDownloadAnswer primaryStorageDownload(PrimaryStorageDownloadCommand cmd) {
- MockVolumeVO template = findVolumeFromSecondary(cmd.getUrl(), cmd.getSecondaryStorageUrl(),
- MockVolumeType.TEMPLATE);
- if (template == null) {
- return new PrimaryStorageDownloadAnswer("Can't find primary storage");
- }
-
- Transaction txn = Transaction.open(Transaction.SIMULATOR_DB);
- MockStoragePoolVO primaryStorage = null;
- try {
- txn.start();
- primaryStorage = _mockStoragePoolDao.findByUuid(cmd.getPoolUuid());
- txn.commit();
- if (primaryStorage == null) {
- return new PrimaryStorageDownloadAnswer("Can't find primary storage");
- }
- } catch (Exception ex) {
- txn.rollback();
- throw new CloudRuntimeException("Error when finding primary storagee " + cmd.getPoolUuid(), ex);
- } finally {
- txn.close();
- txn = Transaction.open(Transaction.CLOUD_DB);
- txn.close();
- }
-
- String volumeName = UUID.randomUUID().toString();
- MockVolumeVO newVolume = new MockVolumeVO();
- newVolume.setName(volumeName);
- newVolume.setPath(primaryStorage.getMountPoint() + volumeName);
- newVolume.setPoolId(primaryStorage.getId());
- newVolume.setSize(template.getSize());
- newVolume.setType(MockVolumeType.VOLUME);
- txn = Transaction.open(Transaction.SIMULATOR_DB);
- try {
- txn.start();
- _mockVolumeDao.persist(newVolume);
- txn.commit();
- } catch (Exception ex) {
- txn.rollback();
- throw new CloudRuntimeException("Error when saving volume " + newVolume, ex);
- } finally {
- txn.close();
- txn = Transaction.open(Transaction.CLOUD_DB);
- txn.close();
- }
- return new PrimaryStorageDownloadAnswer(newVolume.getPath(), newVolume.getSize());
- }
-
- @Override
- public CreateAnswer createVolume(CreateCommand cmd) {
- StorageFilerTO sf = cmd.getPool();
- DiskProfile dskch = cmd.getDiskCharacteristics();
- MockStoragePoolVO storagePool = null;
- Transaction txn = Transaction.open(Transaction.SIMULATOR_DB);
- try {
- txn.start();
- storagePool = _mockStoragePoolDao.findByUuid(sf.getUuid());
- txn.commit();
- if (storagePool == null) {
- return new CreateAnswer(cmd, "Failed to find storage pool: " + sf.getUuid());
- }
- } catch (Exception ex) {
- txn.rollback();
- throw new CloudRuntimeException("Error when finding storage " + sf.getUuid(), ex);
- } finally {
- txn.close();
- txn = Transaction.open(Transaction.CLOUD_DB);
- txn.close();
- }
-
- String volumeName = UUID.randomUUID().toString();
- MockVolumeVO volume = new MockVolumeVO();
- volume.setPoolId(storagePool.getId());
- volume.setName(volumeName);
- volume.setPath(storagePool.getMountPoint() + volumeName);
- volume.setSize(dskch.getSize());
- volume.setType(MockVolumeType.VOLUME);
- txn = Transaction.open(Transaction.SIMULATOR_DB);
- try {
- txn.start();
- volume = _mockVolumeDao.persist(volume);
- txn.commit();
- } catch (Exception ex) {
- txn.rollback();
- throw new CloudRuntimeException("Error when saving volume " + volume, ex);
- } finally {
- txn.close();
- txn = Transaction.open(Transaction.CLOUD_DB);
- txn.close();
- }
-
- VolumeTO volumeTo = new VolumeTO(cmd.getVolumeId(), dskch.getType(), sf.getType(), sf.getUuid(),
- volume.getName(), storagePool.getMountPoint(), volume.getPath(), volume.getSize(), null);
-
- return new CreateAnswer(cmd, volumeTo);
- }
-
- @Override
- public AttachVolumeAnswer AttachVolume(AttachVolumeCommand cmd) {
- Transaction txn = Transaction.open(Transaction.SIMULATOR_DB);
- try {
- txn.start();
- String poolid = cmd.getPoolUuid();
- String volumeName = cmd.getVolumeName();
- MockVolumeVO volume = _mockVolumeDao.findByStoragePathAndType(cmd.getVolumePath());
- if (volume == null) {
- return new AttachVolumeAnswer(cmd, "Can't find volume:" + volumeName + "on pool:" + poolid);
- }
-
- String vmName = cmd.getVmName();
- MockVMVO vm = _mockVMDao.findByVmName(vmName);
- if (vm == null) {
- return new AttachVolumeAnswer(cmd, "can't vm :" + vmName);
- }
- txn.commit();
-
- return new AttachVolumeAnswer(cmd, cmd.getDeviceId());
- } catch (Exception ex) {
- txn.rollback();
- throw new CloudRuntimeException("Error when attaching volume " + cmd.getVolumeName() + " to VM "
- + cmd.getVmName(), ex);
- } finally {
- txn.close();
- txn = Transaction.open(Transaction.CLOUD_DB);
- txn.close();
- }
- }
-
- @Override
- public Answer AttachIso(AttachIsoCommand cmd) {
- MockVolumeVO iso = findVolumeFromSecondary(cmd.getIsoPath(), cmd.getStoreUrl(), MockVolumeType.ISO);
- if (iso == null) {
- return new Answer(cmd, false, "Failed to find the iso: " + cmd.getIsoPath() + "on secondary storage "
- + cmd.getStoreUrl());
- }
-
- String vmName = cmd.getVmName();
- Transaction txn = Transaction.open(Transaction.SIMULATOR_DB);
- MockVMVO vm = null;
- try {
- txn.start();
- vm = _mockVMDao.findByVmName(vmName);
- txn.commit();
- if (vm == null) {
- return new Answer(cmd, false, "can't vm :" + vmName);
- }
- } catch (Exception ex) {
- txn.rollback();
- throw new CloudRuntimeException("Error when attaching iso to vm " + vm.getName(), ex);
- } finally {
- txn.close();
- txn = Transaction.open(Transaction.CLOUD_DB);
- txn.close();
- }
- return new Answer(cmd);
- }
-
- @Override
- public Answer DeleteStoragePool(DeleteStoragePoolCommand cmd) {
- Transaction txn = Transaction.open(Transaction.SIMULATOR_DB);
- try {
- txn.start();
- MockStoragePoolVO storage = _mockStoragePoolDao.findByUuid(cmd.getPool().getUuid());
- if (storage == null) {
- return new Answer(cmd, false, "can't find storage pool:" + cmd.getPool().getUuid());
- }
- _mockStoragePoolDao.remove(storage.getId());
- txn.commit();
- return new Answer(cmd);
- } catch (Exception ex) {
- txn.rollback();
- throw new CloudRuntimeException("Error when deleting storage pool " + cmd.getPool().getPath(), ex);
- } finally {
- txn.close();
- txn = Transaction.open(Transaction.CLOUD_DB);
- txn.close();
- }
- }
-
- @Override
- public ModifyStoragePoolAnswer ModifyStoragePool(ModifyStoragePoolCommand cmd) {
- StorageFilerTO sf = cmd.getPool();
- Transaction txn = Transaction.open(Transaction.SIMULATOR_DB);
- MockStoragePoolVO storagePool = null;
- try {
- txn.start();
- storagePool = _mockStoragePoolDao.findByUuid(sf.getUuid());
- if (storagePool == null) {
- storagePool = new MockStoragePoolVO();
- storagePool.setUuid(sf.getUuid());
- storagePool.setMountPoint("/mnt/" + sf.getUuid() + File.separator);
-
- Long size = DEFAULT_HOST_STORAGE_SIZE;
- String path = sf.getPath();
- int index = path.lastIndexOf("/");
- if (index != -1) {
- path = path.substring(index + 1);
- if (path != null) {
- String values[] = path.split("=");
- if (values.length > 1 && values[0].equalsIgnoreCase("size")) {
- size = Long.parseLong(values[1]);
- }
- }
- }
- storagePool.setCapacity(size);
- storagePool.setStorageType(sf.getType());
- storagePool = _mockStoragePoolDao.persist(storagePool);
- }
- txn.commit();
- } catch (Exception ex) {
- txn.rollback();
- throw new CloudRuntimeException("Error when modifying storage pool " + cmd.getPool().getPath(), ex);
- } finally {
- txn.close();
- txn = Transaction.open(Transaction.CLOUD_DB);
- txn.close();
- }
- return new ModifyStoragePoolAnswer(cmd, storagePool.getCapacity(), 0, new HashMap<String, TemplateInfo>());
- }
-
- @Override
- public Answer CreateStoragePool(CreateStoragePoolCommand cmd) {
- StorageFilerTO sf = cmd.getPool();
- Transaction txn = Transaction.open(Transaction.SIMULATOR_DB);
- MockStoragePoolVO storagePool = null;
- try {
- txn.start();
- storagePool = _mockStoragePoolDao.findByUuid(sf.getUuid());
- if (storagePool == null) {
- storagePool = new MockStoragePoolVO();
- storagePool.setUuid(sf.getUuid());
- storagePool.setMountPoint("/mnt/" + sf.getUuid() + File.separator);
-
- Long size = DEFAULT_HOST_STORAGE_SIZE;
- String path = sf.getPath();
- int index = path.lastIndexOf("/");
- if (index != -1) {
- path = path.substring(index + 1);
- if (path != null) {
- String values[] = path.split("=");
- if (values.length > 1 && values[0].equalsIgnoreCase("size")) {
- size = Long.parseLong(values[1]);
- }
- }
- }
- storagePool.setCapacity(size);
- storagePool.setStorageType(sf.getType());
- storagePool = _mockStoragePoolDao.persist(storagePool);
- }
- txn.commit();
- } catch (Exception ex) {
- txn.rollback();
- throw new CloudRuntimeException("Error when creating storage pool " + cmd.getPool().getPath(), ex);
- } finally {
- txn.close();
- txn = Transaction.open(Transaction.CLOUD_DB);
- txn.close();
- }
- return new ModifyStoragePoolAnswer(cmd, storagePool.getCapacity(), 0, new HashMap<String, TemplateInfo>());
- }
-
- @Override
- public Answer SecStorageSetup(SecStorageSetupCommand cmd) {
- Transaction txn = Transaction.open(Transaction.SIMULATOR_DB);
- MockSecStorageVO storage = null;
- try {
- txn.start();
- storage = _mockSecStorageDao.findByUrl(cmd.getSecUrl());
- if (storage == null) {
- return new Answer(cmd, false, "can't find the storage");
- }
- txn.commit();
- } catch (Exception ex) {
- txn.rollback();
- throw new CloudRuntimeException("Error when setting up sec storage" + cmd.getSecUrl(), ex);
- } finally {
- txn.close();
- txn = Transaction.open(Transaction.CLOUD_DB);
- txn.close();
- }
- return new SecStorageSetupAnswer(storage.getMountPoint());
- }
-
- @Override
- public Answer ListTemplates(ListTemplateCommand cmd) {
- Transaction txn = Transaction.open(Transaction.SIMULATOR_DB);
- MockSecStorageVO storage = null;
- try {
- txn.start();
- storage = _mockSecStorageDao.findByUrl(cmd.getSecUrl());
- if (storage == null) {
- return new Answer(cmd, false, "Failed to get secondary storage");
- }
- txn.commit();
- } catch (Exception ex) {
- txn.rollback();
- throw new CloudRuntimeException("Error when finding sec storage " + cmd.getSecUrl(), ex);
- } finally {
- txn.close();
- txn = Transaction.open(Transaction.CLOUD_DB);
- txn.close();
- }
-
- txn = Transaction.open(Transaction.SIMULATOR_DB);
- try {
- txn.start();
- List<MockVolumeVO> templates = _mockVolumeDao.findByStorageIdAndType(storage.getId(),
- MockVolumeType.TEMPLATE);
-
- Map<String, TemplateInfo> templateInfos = new HashMap<String, TemplateInfo>();
- for (MockVolumeVO template : templates) {
- templateInfos.put(template.getName(), new TemplateInfo(template.getName(), template.getPath()
- .replaceAll(storage.getMountPoint(), ""), template.getSize(), template.getSize(), true, false));
- }
- txn.commit();
- return new ListTemplateAnswer(cmd.getSecUrl(), templateInfos);
- } catch (Exception ex) {
- txn.rollback();
- throw new CloudRuntimeException("Error when finding template on sec storage " + storage.getId(), ex);
- } finally {
- txn.close();
- txn = Transaction.open(Transaction.CLOUD_DB);
- txn.close();
- }
- }
-
- @Override
- public Answer Destroy(DestroyCommand cmd) {
- Transaction txn = Transaction.open(Transaction.SIMULATOR_DB);
- try {
- txn.start();
- MockVolumeVO volume = _mockVolumeDao.findByStoragePathAndType(cmd.getVolume().getPath());
- if (volume != null) {
- _mockVolumeDao.remove(volume.getId());
- }
-
- if (cmd.getVmName() != null) {
- MockVm vm = _mockVMDao.findByVmName(cmd.getVmName());
- vm.setState(State.Expunging);
- if (vm != null) {
- MockVMVO vmVo = _mockVMDao.createForUpdate(vm.getId());
- _mockVMDao.update(vm.getId(), vmVo);
- }
- }
- txn.commit();
- } catch (Exception ex) {
- txn.rollback();
- throw new CloudRuntimeException("Error when destroying volume " + cmd.getVolume().getPath(), ex);
- } finally {
- txn.close();
- txn = Transaction.open(Transaction.CLOUD_DB);
- txn.close();
- }
- return new Answer(cmd);
- }
-
- @Override
- public DownloadAnswer Download(DownloadCommand cmd) {
- MockSecStorageVO ssvo = null;
- Transaction txn = Transaction.open(Transaction.SIMULATOR_DB);
- try {
- txn.start();
- ssvo = _mockSecStorageDao.findByUrl(cmd.getSecUrl());
- if (ssvo == null) {
- return new DownloadAnswer("can't find secondary storage",
- VMTemplateStorageResourceAssoc.Status.DOWNLOAD_ERROR);
- }
- txn.commit();
- } catch (Exception ex) {
- txn.rollback();
- throw new CloudRuntimeException("Error accessing secondary storage " + cmd.getSecUrl(), ex);
- } finally {
- txn.close();
- txn = Transaction.open(Transaction.CLOUD_DB);
- txn.close();
- }
-
- MockVolumeVO volume = new MockVolumeVO();
- volume.setPoolId(ssvo.getId());
- volume.setName(cmd.getName());
- volume.setPath(ssvo.getMountPoint() + cmd.getName());
- volume.setSize(0);
- volume.setType(MockVolumeType.TEMPLATE);
- volume.setStatus(Status.DOWNLOAD_IN_PROGRESS);
- txn = Transaction.open(Transaction.SIMULATOR_DB);
- try {
- txn.start();
- volume = _mockVolumeDao.persist(volume);
- txn.commit();
- } catch (Exception ex) {
- txn.rollback();
- throw new CloudRuntimeException("Error when saving volume " + volume, ex);
- } finally {
- txn.close();
- txn = Transaction.open(Transaction.CLOUD_DB);
- txn.close();
- }
- return new DownloadAnswer(String.valueOf(volume.getId()), 0, "Downloading", Status.DOWNLOAD_IN_PROGRESS,
- cmd.getName(), cmd.getName(), volume.getSize(), volume.getSize(), null);
- }
-
- @Override
- public DownloadAnswer DownloadProcess(DownloadProgressCommand cmd) {
- Transaction txn = Transaction.open(Transaction.SIMULATOR_DB);
- try {
- txn.start();
- String volumeId = cmd.getJobId();
- MockVolumeVO volume = _mockVolumeDao.findById(Long.parseLong(volumeId));
- if (volume == null) {
- return new DownloadAnswer("Can't find the downloading volume", Status.ABANDONED);
- }
-
- long size = Math.min(volume.getSize() + DEFAULT_TEMPLATE_SIZE / 5, DEFAULT_TEMPLATE_SIZE);
- volume.setSize(size);
-
- double volumeSize = volume.getSize();
- double pct = volumeSize / DEFAULT_TEMPLATE_SIZE;
- if (pct >= 1.0) {
- volume.setStatus(Status.DOWNLOADED);
- _mockVolumeDao.update(volume.getId(), volume);
- txn.commit();
- return new DownloadAnswer(cmd.getJobId(), 100, cmd,
- com.cloud.storage.VMTemplateStorageResourceAssoc.Status.DOWNLOADED, volume.getPath(),
- volume.getName());
- } else {
- _mockVolumeDao.update(volume.getId(), volume);
- txn.commit();
- return new DownloadAnswer(cmd.getJobId(), (int) (pct * 100.0), cmd,
- com.cloud.storage.VMTemplateStorageResourceAssoc.Status.DOWNLOAD_IN_PROGRESS, volume.getPath(),
- volume.getName());
- }
- } catch (Exception ex) {
- txn.rollback();
- throw new CloudRuntimeException("Error during download job " + cmd.getJobId(), ex);
- } finally {
- txn.close();
- txn = Transaction.open(Transaction.CLOUD_DB);
- txn.close();
- }
- }
-
- @Override
- public GetStorageStatsAnswer GetStorageStats(GetStorageStatsCommand cmd) {
- String uuid = cmd.getStorageId();
- Transaction txn = Transaction.open(Transaction.SIMULATOR_DB);
- try {
- txn.start();
- if (uuid == null) {
- String secUrl = cmd.getSecUrl();
- MockSecStorageVO secondary = _mockSecStorageDao.findByUrl(secUrl);
- if (secondary == null) {
- return new GetStorageStatsAnswer(cmd, "Can't find the secondary storage:" + secUrl);
- }
- Long totalUsed = _mockVolumeDao.findTotalStorageId(secondary.getId());
- txn.commit();
- return new GetStorageStatsAnswer(cmd, secondary.getCapacity(), totalUsed);
- } else {
- MockStoragePoolVO pool = _mockStoragePoolDao.findByUuid(uuid);
- if (pool == null) {
- return new GetStorageStatsAnswer(cmd, "Can't find the pool");
- }
- Long totalUsed = _mockVolumeDao.findTotalStorageId(pool.getId());
- if (totalUsed == null) {
- totalUsed = 0L;
- }
- txn.commit();
- return new GetStorageStatsAnswer(cmd, pool.getCapacity(), totalUsed);
- }
- } catch (Exception ex) {
- txn.rollback();
- throw new CloudRuntimeException("DBException during storage stats collection for pool " + uuid, ex);
- } finally {
- txn.close();
- txn = Transaction.open(Transaction.CLOUD_DB);
- txn.close();
- }
- }
-
- @Override
- public ManageSnapshotAnswer ManageSnapshot(ManageSnapshotCommand cmd) {
- String volPath = cmd.getVolumePath();
- MockVolumeVO volume = null;
- MockStoragePoolVO storagePool = null;
- Transaction txn = Transaction.open(Transaction.SIMULATOR_DB);
- try {
- txn.start();
- volume = _mockVolumeDao.findByStoragePathAndType(volPath);
- if (volume == null) {
- return new ManageSnapshotAnswer(cmd, false, "Can't find the volume");
- }
- storagePool = _mockStoragePoolDao.findById(volume.getPoolId());
- if (storagePool == null) {
- return new ManageSnapshotAnswer(cmd, false, "Can't find the storage pooll");
- }
- txn.commit();
- } catch (Exception ex) {
- txn.rollback();
- throw new CloudRuntimeException("Unable to perform snapshot", ex);
- } finally {
- txn.close();
- txn = Transaction.open(Transaction.CLOUD_DB);
- txn.close();
- }
-
- String mountPoint = storagePool.getMountPoint();
- MockVolumeVO snapshot = new MockVolumeVO();
-
- snapshot.setName(cmd.getSnapshotName());
- snapshot.setPath(mountPoint + cmd.getSnapshotName());
- snapshot.setSize(volume.getSize());
- snapshot.setPoolId(storagePool.getId());
- snapshot.setType(MockVolumeType.SNAPSHOT);
- snapshot.setStatus(Status.DOWNLOADED);
- txn = Transaction.open(Transaction.SIMULATOR_DB);
- try {
- txn.start();
- snapshot = _mockVolumeDao.persist(snapshot);
- txn.commit();
- } catch (Exception ex) {
- txn.rollback();
- throw new CloudRuntimeException("Error when saving snapshot " + snapshot, ex);
- } finally {
- txn.close();
- txn = Transaction.open(Transaction.CLOUD_DB);
- txn.close();
- }
-
- return new ManageSnapshotAnswer(cmd, snapshot.getId(), snapshot.getPath(), true, "");
- }
-
- @Override
- public BackupSnapshotAnswer BackupSnapshot(BackupSnapshotCommand cmd, SimulatorInfo info) {
- // emulate xenserver backupsnapshot, if the base volume is deleted, then
- // backupsnapshot failed
- MockVolumeVO volume = null;
- MockVolumeVO snapshot = null;
- MockSecStorageVO secStorage = null;
- Transaction txn = Transaction.open(Transaction.SIMULATOR_DB);
- try {
- txn.start();
- volume = _mockVolumeDao.findByStoragePathAndType(cmd.getVolumePath());
- if (volume == null) {
- return new BackupSnapshotAnswer(cmd, false, "Can't find base volume: " + cmd.getVolumePath(), null,
- true);
- }
- String snapshotPath = cmd.getSnapshotUuid();
- snapshot = _mockVolumeDao.findByStoragePathAndType(snapshotPath);
- if (snapshot == null) {
- return new BackupSnapshotAnswer(cmd, false, "can't find snapshot" + snapshotPath, null, true);
- }
-
- String secStorageUrl = cmd.getSecondaryStorageUrl();
- secStorage = _mockSecStorageDao.findByUrl(secStorageUrl);
- if (secStorage == null) {
- return new BackupSnapshotAnswer(cmd, false, "can't find sec storage" + snapshotPath, null, true);
- }
- txn.commit();
- } catch (Exception ex) {
- txn.rollback();
- throw new CloudRuntimeException("Error when backing up snapshot");
- } finally {
- txn.close();
- txn = Transaction.open(Transaction.CLOUD_DB);
- txn.close();
- }
-
- MockVolumeVO newsnapshot = new MockVolumeVO();
- String name = UUID.randomUUID().toString();
- newsnapshot.setName(name);
- newsnapshot.setPath(secStorage.getMountPoint() + name);
- newsnapshot.setPoolId(secStorage.getId());
- newsnapshot.setSize(snapshot.getSize());
- newsnapshot.setStatus(Status.DOWNLOADED);
- newsnapshot.setType(MockVolumeType.SNAPSHOT);
- txn = Transaction.open(Transaction.SIMULATOR_DB);
- try {
- txn.start();
- snapshot = _mockVolumeDao.persist(snapshot);
- txn.commit();
- } catch (Exception ex) {
- txn.rollback();
- throw new CloudRuntimeException("Error when backing up snapshot " + newsnapshot, ex);
- } finally {
- txn.close();
- txn = Transaction.open(Transaction.CLOUD_DB);
- txn.close();
- }
-
- return new BackupSnapshotAnswer(cmd, true, null, newsnapshot.getName(), true);
- }
-
- @Override
- public Answer DeleteSnapshotBackup(DeleteSnapshotBackupCommand cmd) {
- Transaction txn = Transaction.open(Transaction.SIMULATOR_DB);
- try {
- txn.start();
- MockVolumeVO backSnapshot = _mockVolumeDao.findByName(cmd.getSnapshotUuid());
- if (backSnapshot == null) {
- return new Answer(cmd, false, "can't find the backupsnapshot: " + cmd.getSnapshotUuid());
- }
- _mockVolumeDao.remove(backSnapshot.getId());
- txn.commit();
- } catch (Exception ex) {
- txn.rollback();
- throw new CloudRuntimeException("Error when deleting snapshot");
- } finally {
- txn.close();
- txn = Transaction.open(Transaction.CLOUD_DB);
- txn.close();
- }
- return new Answer(cmd);
- }
-
- @Override
- public CreateVolumeFromSnapshotAnswer CreateVolumeFromSnapshot(CreateVolumeFromSnapshotCommand cmd) {
- Transaction txn = Transaction.open(Transaction.SIMULATOR_DB);
- MockVolumeVO backSnapshot = null;
- MockStoragePoolVO primary = null;
- try {
- txn.start();
- backSnapshot = _mockVolumeDao.findByName(cmd.getSnapshotUuid());
- if (backSnapshot == null) {
- return new CreateVolumeFromSnapshotAnswer(cmd, false, "can't find the backupsnapshot: "
- + cmd.getSnapshotUuid(), null);
- }
-
- primary = _mockStoragePoolDao.findByUuid(cmd.getPrimaryStoragePoolNameLabel());
- if (primary == null) {
- return new CreateVolumeFromSnapshotAnswer(cmd, false, "can't find the primary storage: "
- + cmd.getPrimaryStoragePoolNameLabel(), null);
- }
- txn.commit();
- } catch (Exception ex) {
- txn.rollback();
- throw new CloudRuntimeException("Error when creating volume from snapshot", ex);
- } finally {
- txn.close();
- txn = Transaction.open(Transaction.CLOUD_DB);
- txn.close();
- }
-
- String uuid = UUID.randomUUID().toString();
- MockVolumeVO volume = new MockVolumeVO();
-
- volume.setName(uuid);
- volume.setPath(primary.getMountPoint() + uuid);
- volume.setPoolId(primary.getId());
- volume.setSize(backSnapshot.getSize());
- volume.setStatus(Status.DOWNLOADED);
- volume.setType(MockVolumeType.VOLUME);
- txn = Transaction.open(Transaction.SIMULATOR_DB);
- try {
- txn.start();
- _mockVolumeDao.persist(volume);
- txn.commit();
- } catch (Exception ex) {
- txn.rollback();
- throw new CloudRuntimeException("Error when creating volume from snapshot " + volume, ex);
- } finally {
- txn.close();
- txn = Transaction.open(Transaction.CLOUD_DB);
- txn.close();
- }
-
- return new CreateVolumeFromSnapshotAnswer(cmd, true, null, volume.getPath());
- }
-
- @Override
- public Answer DeleteTemplate(DeleteTemplateCommand cmd) {
- Transaction txn = Transaction.open(Transaction.SIMULATOR_DB);
- try {
- txn.start();
- MockVolumeVO template = _mockVolumeDao.findByStoragePathAndType(cmd.getTemplatePath());
- if (template == null) {
- return new Answer(cmd, false, "can't find template:" + cmd.getTemplatePath());
- }
- _mockVolumeDao.remove(template.getId());
- txn.commit();
- } catch (Exception ex) {
- txn.rollback();
- throw new CloudRuntimeException("Error when deleting template");
- } finally {
- txn.close();
- txn = Transaction.open(Transaction.CLOUD_DB);
- txn.close();
- }
- return new Answer(cmd);
- }
-
- @Override
- public Answer SecStorageVMSetup(SecStorageVMSetupCommand cmd) {
- return new Answer(cmd);
- }
-
- @Override
- public boolean configure(String name, Map<String, Object> params) throws ConfigurationException {
- // TODO Auto-generated method stub
- return true;
- }
-
- @Override
- public boolean start() {
- // TODO Auto-generated method stub
- return true;
- }
-
- @Override
- public boolean stop() {
- // TODO Auto-generated method stub
- return true;
- }
-
- @Override
- public String getName() {
- return this.getClass().getSimpleName();
- }
-
- @Override
- public void preinstallTemplates(String url, long zoneId) {
- Transaction txn = Transaction.open(Transaction.SIMULATOR_DB);
- MockSecStorageVO storage = null;
- try {
- txn.start();
- storage = _mockSecStorageDao.findByUrl(url);
- txn.commit();
- } catch (Exception ex) {
- txn.rollback();
- throw new CloudRuntimeException("Unable to find sec storage at " + url, ex);
- } finally {
- txn.close();
- txn = Transaction.open(Transaction.CLOUD_DB);
- txn.close();
- }
- if (storage == null) {
- storage = new MockSecStorageVO();
- URI uri;
- try {
- uri = new URI(url);
- } catch (URISyntaxException e) {
- return;
- }
-
- String nfsHost = uri.getHost();
- String nfsPath = uri.getPath();
- String path = nfsHost + ":" + nfsPath;
- String dir = "/mnt/" + UUID.nameUUIDFromBytes(path.getBytes()).toString() + File.separator;
-
- storage.setUrl(url);
- storage.setCapacity(DEFAULT_HOST_STORAGE_SIZE);
-
- storage.setMountPoint(dir);
- txn = Transaction.open(Transaction.SIMULATOR_DB);
- try {
- txn.start();
- storage = _mockSecStorageDao.persist(storage);
- txn.commit();
- } catch (Exception ex) {
- txn.rollback();
- throw new CloudRuntimeException("Error when saving storage " + storage, ex);
- } finally {
- txn.close();
- txn = Transaction.open(Transaction.CLOUD_DB);
- txn.close();
- }
-
- // preinstall default templates into secondary storage
- long defaultTemplateSize = 2 * 1024 * 1024 * 1024L;
- MockVolumeVO template = new MockVolumeVO();
- template.setName("simulator-domR");
- template.setPath(storage.getMountPoint() + "template/tmpl/1/9/" + UUID.randomUUID().toString());
- template.setPoolId(storage.getId());
- template.setSize(defaultTemplateSize);
- template.setType(MockVolumeType.TEMPLATE);
- template.setStatus(Status.DOWNLOADED);
- txn = Transaction.open(Transaction.SIMULATOR_DB);
- try {
- txn.start();
- template = _mockVolumeDao.persist(template);
- txn.commit();
- } catch (Exception ex) {
- txn.rollback();
- throw new CloudRuntimeException("Error when saving template " + template, ex);
- } finally {
- txn.close();
- txn = Transaction.open(Transaction.CLOUD_DB);
- txn.close();
- }
-
- template = new MockVolumeVO();
- template.setName("simulator-Centos");
- template.setPath(storage.getMountPoint() + "template/tmpl/1/10/" + UUID.randomUUID().toString());
- template.setPoolId(storage.getId());
- template.setSize(defaultTemplateSize);
- template.setType(MockVolumeType.TEMPLATE);
- template.setStatus(Status.DOWNLOADED);
- txn = Transaction.open(Transaction.SIMULATOR_DB);
- try {
- txn.start();
- template = _mockVolumeDao.persist(template);
- txn.commit();
- } catch (Exception ex) {
- txn.rollback();
- throw new CloudRuntimeException("Error when saving template " + template, ex);
- } finally {
- txn.close();
- txn = Transaction.open(Transaction.CLOUD_DB);
- txn.close();
- }
- }
-
- }
-
- @Override
- public StoragePoolInfo getLocalStorage(String hostGuid) {
- Transaction txn = Transaction.open(Transaction.SIMULATOR_DB);
- MockHost host = null;
- MockStoragePoolVO storagePool = null;
- try {
- txn.start();
- host = _mockHostDao.findByGuid(hostGuid);
- storagePool = _mockStoragePoolDao.findByHost(hostGuid);
- txn.commit();
- } catch (Exception ex) {
- txn.rollback();
- throw new CloudRuntimeException("Unable to find host " + hostGuid, ex);
- } finally {
- txn.close();
- txn = Transaction.open(Transaction.CLOUD_DB);
- txn.close();
- }
-
- if (storagePool == null) {
- String uuid = UUID.randomUUID().toString();
- storagePool = new MockStoragePoolVO();
- storagePool.setUuid(uuid);
- storagePool.setMountPoint("/mnt/" + uuid + File.separator);
- storagePool.setCapacity(DEFAULT_HOST_STORAGE_SIZE);
- storagePool.setHostGuid(hostGuid);
- storagePool.setStorageType(StoragePoolType.Filesystem);
- txn = Transaction.open(Transaction.SIMULATOR_DB);
- try {
- txn.start();
- storagePool = _mockStoragePoolDao.persist(storagePool);
- txn.commit();
- } catch (Exception ex) {
- txn.rollback();
- throw new CloudRuntimeException("Error when saving storagePool " + storagePool, ex);
- } finally {
- txn.close();
- txn = Transaction.open(Transaction.CLOUD_DB);
- txn.close();
- }
- }
- return new StoragePoolInfo(storagePool.getUuid(), host.getPrivateIpAddress(), storagePool.getMountPoint(),
- storagePool.getMountPoint(), storagePool.getPoolType(), storagePool.getCapacity(), 0);
- }
-
- @Override
- public StoragePoolInfo getLocalStorage(String hostGuid, Long storageSize) {
- Transaction txn = Transaction.open(Transaction.SIMULATOR_DB);
- MockHost host = null;
- try {
- txn.start();
- host = _mockHostDao.findByGuid(hostGuid);
- txn.commit();
- } catch (Exception ex) {
- txn.rollback();
- throw new CloudRuntimeException("Unable to find host " + hostGuid, ex);
- } finally {
- txn.close();
- txn = Transaction.open(Transaction.CLOUD_DB);
- txn.close();
- }
- if (storageSize == null) {
- storageSize = DEFAULT_HOST_STORAGE_SIZE;
- }
- txn = Transaction.open(Transaction.SIMULATOR_DB);
- MockStoragePoolVO storagePool = null;
- try {
- txn.start();
- storagePool = _mockStoragePoolDao.findByHost(hostGuid);
- txn.commit();
- } catch (Exception ex) {
- txn.rollback();
- throw new CloudRuntimeException("Error when finding storagePool " + storagePool, ex);
- } finally {
- txn.close();
- txn = Transaction.open(Transaction.CLOUD_DB);
- txn.close();
- }
- if (storagePool == null) {
- String uuid = UUID.randomUUID().toString();
- storagePool = new MockStoragePoolVO();
- storagePool.setUuid(uuid);
- storagePool.setMountPoint("/mnt/" + uuid + File.separator);
- storagePool.setCapacity(storageSize);
- storagePool.setHostGuid(hostGuid);
- storagePool.setStorageType(StoragePoolType.Filesystem);
- txn = Transaction.open(Transaction.SIMULATOR_DB);
- try {
- txn.start();
- storagePool = _mockStoragePoolDao.persist(storagePool);
- txn.commit();
- } catch (Exception ex) {
- txn.rollback();
- throw new CloudRuntimeException("Error when saving storagePool " + storagePool, ex);
- } finally {
- txn.close();
- txn = Transaction.open(Transaction.CLOUD_DB);
- txn.close();
- }
- }
- return new StoragePoolInfo(storagePool.getUuid(), host.getPrivateIpAddress(), storagePool.getMountPoint(),
- storagePool.getMountPoint(), storagePool.getPoolType(), storagePool.getCapacity(), 0);
- }
-
- @Override
- public CreatePrivateTemplateAnswer CreatePrivateTemplateFromSnapshot(CreatePrivateTemplateFromSnapshotCommand cmd) {
- Transaction txn = Transaction.open(Transaction.SIMULATOR_DB);
- MockVolumeVO snapshot = null;
- MockSecStorageVO sec = null;
- try {
- txn.start();
- String snapshotUUId = cmd.getSnapshotUuid();
- snapshot = _mockVolumeDao.findByName(snapshotUUId);
- if (snapshot == null) {
- snapshotUUId = cmd.getSnapshotName();
- snapshot = _mockVolumeDao.findByName(snapshotUUId);
- if (snapshot == null) {
- return new CreatePrivateTemplateAnswer(cmd, false, "can't find snapshot:" + snapshotUUId);
- }
- }
-
- sec = _mockSecStorageDao.findByUrl(cmd.getSecondaryStorageUrl());
- if (sec == null) {
- return new CreatePrivateTemplateAnswer(cmd, false, "can't find secondary storage");
- }
- txn.commit();
- } finally {
- txn.close();
- txn = Transaction.open(Transaction.CLOUD_DB);
- txn.close();
- }
-
- MockVolumeVO template = new MockVolumeVO();
- String uuid = UUID.randomUUID().toString();
- template.setName(uuid);
- template.setPath(sec.getMountPoint() + uuid);
- template.setPoolId(sec.getId());
- template.setSize(snapshot.getSize());
- template.setStatus(Status.DOWNLOADED);
- template.setType(MockVolumeType.TEMPLATE);
- txn = Transaction.open(Transaction.SIMULATOR_DB);
- try {
- txn.start();
- template = _mockVolumeDao.persist(template);
- txn.commit();
- } catch (Exception ex) {
- txn.rollback();
- throw new CloudRuntimeException("Error when saving template " + template, ex);
- } finally {
- txn.close();
- txn = Transaction.open(Transaction.CLOUD_DB);
- txn.close();
- }
-
- return new CreatePrivateTemplateAnswer(cmd, true, "", template.getName(), template.getSize(),
- template.getSize(), template.getName(), ImageFormat.QCOW2);
- }
-
- @Override
- public Answer ComputeChecksum(ComputeChecksumCommand cmd) {
- Transaction txn = Transaction.open(Transaction.SIMULATOR_DB);
- try {
- txn.start();
- MockVolumeVO volume = _mockVolumeDao.findByName(cmd.getTemplatePath());
- if (volume == null) {
- return new Answer(cmd, false, "cant' find volume:" + cmd.getTemplatePath());
- }
- String md5 = null;
- try {
- MessageDigest md = MessageDigest.getInstance("md5");
- md5 = String.format("%032x", new BigInteger(1, md.digest(cmd.getTemplatePath().getBytes())));
- } catch (NoSuchAlgorithmException e) {
- s_logger.debug("failed to gernerate md5:" + e.toString());
- }
- txn.commit();
- return new Answer(cmd, true, md5);
- } finally {
- txn.close();
- txn = Transaction.open(Transaction.CLOUD_DB);
- txn.close();
- }
- }
-
- @Override
- public CreatePrivateTemplateAnswer CreatePrivateTemplateFromVolume(CreatePrivateTemplateFromVolumeCommand cmd) {
- Transaction txn = Transaction.open(Transaction.SIMULATOR_DB);
- MockVolumeVO volume = null;
- MockSecStorageVO sec = null;
- try {
- txn.start();
- volume = _mockVolumeDao.findByStoragePathAndType(cmd.getVolumePath());
- if (volume == null) {
- return new CreatePrivateTemplateAnswer(cmd, false, "cant' find volume" + cmd.getVolumePath());
- }
-
- sec = _mockSecStorageDao.findByUrl(cmd.getSecondaryStorageUrl());
- if (sec == null) {
- return new CreatePrivateTemplateAnswer(cmd, false, "can't find secondary storage");
- }
- txn.commit();
- } catch (Exception ex) {
- txn.rollback();
- throw new CloudRuntimeException("Error when creating private template from volume");
- } finally {
- txn.close();
- txn = Transaction.open(Transaction.CLOUD_DB);
- txn.close();
- }
-
- MockVolumeVO template = new MockVolumeVO();
- String uuid = UUID.randomUUID().toString();
- template.setName(uuid);
- template.setPath(sec.getMountPoint() + uuid);
- template.setPoolId(sec.getId());
- template.setSize(volume.getSize());
- template.setStatus(Status.DOWNLOADED);
- template.setType(MockVolumeType.TEMPLATE);
- txn = Transaction.open(Transaction.SIMULATOR_DB);
- try {
- txn.start();
- template = _mockVolumeDao.persist(template);
- txn.commit();
- } catch (Exception ex) {
- txn.rollback();
- throw new CloudRuntimeException("Encountered " + ex.getMessage() + " when persisting template "
- + template.getName(), ex);
- } finally {
- txn.close();
- txn = Transaction.open(Transaction.CLOUD_DB);
- txn.close();
- }
-
- return new CreatePrivateTemplateAnswer(cmd, true, "", template.getName(), template.getSize(),
- template.getSize(), template.getName(), ImageFormat.QCOW2);
- }
-
- @Override
- public CopyVolumeAnswer CopyVolume(CopyVolumeCommand cmd) {
- Transaction txn = Transaction.open(Transaction.SIMULATOR_DB);
- boolean toSecondaryStorage = cmd.toSecondaryStorage();
- MockSecStorageVO sec = null;
- MockStoragePoolVO primaryStorage = null;
- try {
- txn.start();
- sec = _mockSecStorageDao.findByUrl(cmd.getSecondaryStorageURL());
- if (sec == null) {
- return new CopyVolumeAnswer(cmd, false, "can't find secondary storage", null, null);
- }
- txn.commit();
- } catch (Exception ex) {
- txn.rollback();
- throw new CloudRuntimeException("Encountered " + ex.getMessage() + " when accessing secondary at "
- + cmd.getSecondaryStorageURL(), ex);
- } finally {
- txn.close();
- txn = Transaction.open(Transaction.CLOUD_DB);
- txn.close();
- }
-
- txn = Transaction.open(Transaction.SIMULATOR_DB);
- try {
- txn.start();
- primaryStorage = _mockStoragePoolDao.findByUuid(cmd.getPool().getUuid());
- if (primaryStorage == null) {
- return new CopyVolumeAnswer(cmd, false, "Can't find primary storage", null, null);
- }
- txn.commit();
- } catch (Exception ex) {
- txn.rollback();
- throw new CloudRuntimeException("Encountered " + ex.getMessage() + " when accessing primary at "
- + cmd.getPool(), ex);
- } finally {
- txn.close();
- txn = Transaction.open(Transaction.CLOUD_DB);
- txn.close();
- }
-
- MockVolumeVO volume = null;
- txn = Transaction.open(Transaction.SIMULATOR_DB);
- try {
- txn.start();
- volume = _mockVolumeDao.findByStoragePathAndType(cmd.getVolumePath());
- if (volume == null) {
- return new CopyVolumeAnswer(cmd, false, "cant' find volume" + cmd.getVolumePath(), null, null);
- }
- txn.commit();
- } catch (Exception ex) {
- txn.rollback();
- throw new CloudRuntimeException("Encountered " + ex.getMessage() + " when accessing volume at "
- + cmd.getVolumePath(), ex);
- } finally {
- txn.close();
- txn = Transaction.open(Transaction.CLOUD_DB);
- txn.close();
- }
-
- String name = UUID.randomUUID().toString();
- if (toSecondaryStorage) {
- MockVolumeVO vol = new MockVolumeVO();
- vol.setName(name);
- vol.setPath(sec.getMountPoint() + name);
- vol.setPoolId(sec.getId());
- vol.setSize(volume.getSize());
- vol.setStatus(Status.DOWNLOADED);
- vol.setType(MockVolumeType.VOLUME);
- txn = Transaction.open(Transaction.SIMULATOR_DB);
- try {
- txn.start();
- vol = _mockVolumeDao.persist(vol);
- txn.commit();
- } catch (Exception ex) {
- txn.rollback();
- throw new CloudRuntimeException("Encountered " + ex.getMessage() + " when persisting volume "
- + vol.getName(), ex);
- } finally {
- txn.close();
- txn = Transaction.open(Transaction.CLOUD_DB);
- txn.close();
- }
- return new CopyVolumeAnswer(cmd, true, null, sec.getMountPoint(), vol.getPath());
- } else {
- MockVolumeVO vol = new MockVolumeVO();
- vol.setName(name);
- vol.setPath(primaryStorage.getMountPoint() + name);
- vol.setPoolId(primaryStorage.getId());
- vol.setSize(volume.getSize());
- vol.setStatus(Status.DOWNLOADED);
- vol.setType(MockVolumeType.VOLUME);
- txn = Transaction.open(Transaction.SIMULATOR_DB);
- try {
- txn.start();
- vol = _mockVolumeDao.persist(vol);
- txn.commit();
- } catch (Exception ex) {
- txn.rollback();
- throw new CloudRuntimeException("Encountered " + ex.getMessage() + " when persisting volume "
- + vol.getName(), ex);
- } finally {
- txn.close();
- txn = Transaction.open(Transaction.CLOUD_DB);
- txn.close();
- }
- return new CopyVolumeAnswer(cmd, true, null, primaryStorage.getMountPoint(), vol.getPath());
- }
- }
-}
http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/d6083ce5/agent-simulator/src/com/cloud/agent/manager/MockVmManager.java
----------------------------------------------------------------------
diff --git a/agent-simulator/src/com/cloud/agent/manager/MockVmManager.java b/agent-simulator/src/com/cloud/agent/manager/MockVmManager.java
deleted file mode 100644
index 07cf584..0000000
--- a/agent-simulator/src/com/cloud/agent/manager/MockVmManager.java
+++ /dev/null
@@ -1,83 +0,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.
-package com.cloud.agent.manager;
-
-import java.util.HashMap;
-import java.util.Map;
-
-import com.cloud.agent.api.*;
-import com.cloud.agent.api.check.CheckSshAnswer;
-import com.cloud.agent.api.check.CheckSshCommand;
-import com.cloud.agent.api.proxy.CheckConsoleProxyLoadCommand;
-import com.cloud.agent.api.proxy.WatchConsoleProxyLoadCommand;
-import com.cloud.agent.api.routing.DhcpEntryCommand;
-import com.cloud.agent.api.routing.IpAssocCommand;
-import com.cloud.agent.api.routing.LoadBalancerConfigCommand;
-import com.cloud.agent.api.routing.SavePasswordCommand;
-import com.cloud.agent.api.routing.SetFirewallRulesCommand;
-import com.cloud.agent.api.routing.SetPortForwardingRulesCommand;
-import com.cloud.agent.api.routing.SetStaticNatRulesCommand;
-import com.cloud.agent.api.routing.VmDataCommand;
-import com.cloud.simulator.MockVMVO;
-import com.cloud.utils.Pair;
-import com.cloud.utils.component.Manager;
-import com.cloud.vm.VirtualMachine.State;
-
-public interface MockVmManager extends Manager {
- public Answer stopVM(StopCommand cmd);
- public Answer rebootVM(RebootCommand cmd);
-
- public Answer checkVmState(CheckVirtualMachineCommand cmd);
- public Map<String, State> getVmStates(String hostGuid);
- public Answer getVncPort(GetVncPortCommand cmd);
-
- Answer startVM(StartCommand cmd, SimulatorInfo info);
-
- Answer getVmStats(GetVmStatsCommand cmd);
- public CheckSshAnswer checkSshCommand(CheckSshCommand cmd);
-
- Answer SetStaticNatRules(SetStaticNatRulesCommand cmd);
-
- Answer SetPortForwardingRules(SetPortForwardingRulesCommand cmd);
-
- Answer SetFirewallRules(SetFirewallRulesCommand cmd);
-
- Answer getNetworkUsage(NetworkUsageCommand cmd);
-
- Answer IpAssoc(IpAssocCommand cmd);
-
- Answer LoadBalancerConfig(LoadBalancerConfigCommand cmd);
-
- Answer AddDhcpEntry(DhcpEntryCommand cmd);
-
- Answer setVmData(VmDataCommand cmd);
- Answer CleanupNetworkRules(CleanupNetworkRulesCmd cmd, SimulatorInfo info);
-
- Answer CheckConsoleProxyLoad(CheckConsoleProxyLoadCommand cmd);
- Answer WatchConsoleProxyLoad(WatchConsoleProxyLoadCommand cmd);
-
- Answer SavePassword(SavePasswordCommand cmd);
- HashMap<String, Pair<Long, Long>> syncNetworkGroups(SimulatorInfo info);
- SecurityGroupRuleAnswer AddSecurityGroupRules(SecurityGroupRulesCmd cmd, SimulatorInfo info);
- MigrateAnswer Migrate(MigrateCommand cmd, SimulatorInfo info);
- GetDomRVersionAnswer getDomRVersion(GetDomRVersionCmd cmd);
- Map<String, MockVMVO> getVms(String hostGuid);
-
- CheckRouterAnswer checkRouter(CheckRouterCommand cmd);
-
- Answer bumpPriority(BumpUpPriorityCommand cmd);
-}
http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/d6083ce5/agent-simulator/src/com/cloud/agent/manager/MockVmManagerImpl.java
----------------------------------------------------------------------
diff --git a/agent-simulator/src/com/cloud/agent/manager/MockVmManagerImpl.java b/agent-simulator/src/com/cloud/agent/manager/MockVmManagerImpl.java
deleted file mode 100644
index 78881f2..0000000
--- a/agent-simulator/src/com/cloud/agent/manager/MockVmManagerImpl.java
+++ /dev/null
@@ -1,615 +0,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.
-package com.cloud.agent.manager;
-
-
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.concurrent.ConcurrentHashMap;
-
-import javax.ejb.Local;
-import javax.naming.ConfigurationException;
-
-import com.cloud.agent.api.*;
-import com.cloud.agent.api.routing.*;
-import com.cloud.network.router.VirtualRouter;
-import org.apache.log4j.Logger;
-
-import com.cloud.agent.api.check.CheckSshAnswer;
-import com.cloud.agent.api.check.CheckSshCommand;
-import com.cloud.agent.api.proxy.CheckConsoleProxyLoadCommand;
-import com.cloud.agent.api.proxy.WatchConsoleProxyLoadCommand;
-import com.cloud.agent.api.to.NicTO;
-import com.cloud.agent.api.to.VirtualMachineTO;
-import com.cloud.network.Networks.TrafficType;
-import com.cloud.simulator.MockHost;
-import com.cloud.simulator.MockSecurityRulesVO;
-import com.cloud.simulator.MockVMVO;
-import com.cloud.simulator.MockVm;
-import com.cloud.simulator.dao.MockHostDao;
-import com.cloud.simulator.dao.MockSecurityRulesDao;
-import com.cloud.simulator.dao.MockVMDao;
-import com.cloud.utils.Pair;
-import com.cloud.utils.Ternary;
-import com.cloud.utils.component.Inject;
-import com.cloud.utils.db.Transaction;
-import com.cloud.utils.exception.CloudRuntimeException;
-import com.cloud.vm.VirtualMachine.State;
-
-@Local(value = { MockVmManager.class })
-public class MockVmManagerImpl implements MockVmManager {
- private static final Logger s_logger = Logger.getLogger(MockVmManagerImpl.class);
-
- @Inject MockVMDao _mockVmDao = null;
- @Inject MockAgentManager _mockAgentMgr = null;
- @Inject MockHostDao _mockHostDao = null;
- @Inject MockSecurityRulesDao _mockSecurityDao = null;
- private Map<String, Map<String, Ternary<String, Long, Long>>> _securityRules = new ConcurrentHashMap<String, Map<String, Ternary<String, Long, Long>>>();
-
- public MockVmManagerImpl() {
- }
-
- @Override
- public boolean configure(String name, Map<String, Object> params)
- throws ConfigurationException {
-
- return true;
- }
-
- public String startVM(String vmName, NicTO[] nics,
- int cpuHz, long ramSize,
- String bootArgs, String hostGuid) {
-
- Transaction txn = Transaction.open(Transaction.SIMULATOR_DB);
- MockHost host = null;
- MockVm vm = null;
- try {
- txn.start();
- host = _mockHostDao.findByGuid(hostGuid);
- if (host == null) {
- return "can't find host";
- }
-
- vm = _mockVmDao.findByVmName(vmName);
- txn.commit();
- } catch (Exception ex) {
- txn.rollback();
- throw new CloudRuntimeException("Unable to start VM " + vmName, ex);
- } finally {
- txn.close();
- txn = Transaction.open(Transaction.CLOUD_DB);
- txn.close();
- }
-
- if(vm == null) {
- int vncPort = 0;
- if(vncPort < 0)
- return "Unable to allocate VNC port";
- vm = new MockVMVO();
- vm.setCpu(cpuHz);
- vm.setMemory(ramSize);
- vm.setState(State.Running);
- vm.setName(vmName);
- vm.setVncPort(vncPort);
- vm.setHostId(host.getId());
- if(vmName.startsWith("s-")) {
- vm.setType("SecondaryStorageVm");
- } else if (vmName.startsWith("v-")) {
- vm.setType("ConsoleProxy");
- } else if (vmName.startsWith("r-")) {
- vm.setType("DomainRouter");
- } else if (vmName.startsWith("i-")) {
- vm.setType("User");
- }
- txn = Transaction.open(Transaction.SIMULATOR_DB);
- try {
- txn.start();
- vm = _mockVmDao.persist((MockVMVO) vm);
- txn.commit();
- } catch (Exception ex) {
- txn.rollback();
- throw new CloudRuntimeException("unable to save vm to db " + vm.getName(), ex);
- } finally {
- txn.close();
- txn = Transaction.open(Transaction.CLOUD_DB);
- txn.close();
- }
- } else {
- if(vm.getState() == State.Stopped) {
- vm.setState(State.Running);
- txn = Transaction.open(Transaction.SIMULATOR_DB);
- try {
- txn.start();
- _mockVmDao.update(vm.getId(), (MockVMVO)vm);
- txn.commit();
- } catch (Exception ex) {
- txn.rollback();
- throw new CloudRuntimeException("unable to update vm " + vm.getName(), ex);
- } finally {
- txn.close();
- txn = Transaction.open(Transaction.CLOUD_DB);
- txn.close();
- }
- }
- }
-
- if (vm.getState() == State.Running && vmName.startsWith("s-")) {
- String prvIp = null;
- String prvMac = null;
- String prvNetMask = null;
-
- for (NicTO nic : nics) {
- if (nic.getType() == TrafficType.Management) {
- prvIp = nic.getIp();
- prvMac = nic.getMac();
- prvNetMask = nic.getNetmask();
- }
- }
- long dcId = 0;
- long podId = 0;
- String name = null;
- String vmType = null;
- String url = null;
- String[] args = bootArgs.trim().split(" ");
- for (String arg : args) {
- String[] params = arg.split("=");
- if (params.length < 1) {
- continue;
- }
-
- if (params[0].equalsIgnoreCase("zone")) {
- dcId = Long.parseLong(params[1]);
- } else if (params[0].equalsIgnoreCase("name")) {
- name = params[1];
- } else if (params[0].equalsIgnoreCase("type")) {
- vmType = params[1];
- } else if (params[0].equalsIgnoreCase("url")) {
- url = params[1];
- } else if (params[0].equalsIgnoreCase("pod")) {
- podId = Long.parseLong(params[1]);
- }
- }
-
- _mockAgentMgr.handleSystemVMStart(vm.getId(), prvIp, prvMac, prvNetMask, dcId, podId, name, vmType, url);
- }
-
- return null;
- }
-
- public boolean rebootVM(String vmName) {
- Transaction txn = Transaction.open(Transaction.SIMULATOR_DB);
- try {
- txn.start();
- MockVm vm = _mockVmDao.findByVmName(vmName);
- if (vm != null) {
- vm.setState(State.Running);
- _mockVmDao.update(vm.getId(), (MockVMVO) vm);
-
- }
- txn.commit();
- } catch (Exception ex) {
- txn.rollback();
- throw new CloudRuntimeException("unable to reboot vm " + vmName, ex);
- } finally {
- txn.close();
- txn = Transaction.open(Transaction.CLOUD_DB);
- txn.close();
- }
- return true;
- }
-
- @Override
- public Map<String, MockVMVO> getVms(String hostGuid) {
- Transaction txn = Transaction.open(Transaction.SIMULATOR_DB);
- try {
- txn.start();
- List<MockVMVO> vms = _mockVmDao.findByHostGuid(hostGuid);
- Map<String, MockVMVO> vmMap = new HashMap<String, MockVMVO>();
- for (MockVMVO vm : vms) {
- vmMap.put(vm.getName(), vm);
- }
- txn.commit();
- return vmMap;
- } catch (Exception ex) {
- txn.rollback();
- throw new CloudRuntimeException("unable to fetch vms from host " + hostGuid, ex);
- } finally {
- txn.close();
- txn = Transaction.open(Transaction.CLOUD_DB);
- txn.close();
- }
- }
-
- @Override
- public CheckRouterAnswer checkRouter(CheckRouterCommand cmd) {
- String router_name = cmd.getAccessDetail(NetworkElementCommand.ROUTER_NAME);
- int router_id = Integer.parseInt(router_name.split("-")[1]);
- if (router_id % 2 == 0) {
- s_logger.debug("Found even routerId, making it MASTER in RvR");
- CheckRouterAnswer ans = new CheckRouterAnswer(cmd, "Status: MASTER & Bumped: NO", true);
- ans.setState(VirtualRouter.RedundantState.MASTER);
- return ans;
- } else {
- s_logger.debug("Found odd routerId, making it BACKUP in RvR");
- CheckRouterAnswer ans = new CheckRouterAnswer(cmd, "Status: MASTER & Bumped: NO", true);
- ans.setState(VirtualRouter.RedundantState.BACKUP);
- return ans;
- }
- }
-
- @Override
- public Answer bumpPriority(BumpUpPriorityCommand cmd) {
- String router_name = cmd.getAccessDetail(NetworkElementCommand.ROUTER_NAME);
- int router_id = Integer.parseInt(router_name.split("-")[1]);
- if (router_id % 2 == 0) {
- return new Answer(cmd, true, "Status: MASTER & Bumped: YES");
- } else {
- return new Answer(cmd, true, "Status: BACKUP & Bumped: YES");
- }
-
- }
-
- @Override
- public Map<String, State> getVmStates(String hostGuid) {
- Transaction txn = Transaction.open(Transaction.SIMULATOR_DB);
- try {
- txn.start();
- Map<String, State> states = new HashMap<String, State>();
- List<MockVMVO> vms = _mockVmDao.findByHostGuid(hostGuid);
- if (vms.isEmpty()) {
- txn.commit();
- return states;
- }
- for (MockVm vm : vms) {
- states.put(vm.getName(), vm.getState());
- }
- txn.commit();
- return states;
- } catch (Exception ex) {
- txn.rollback();
- throw new CloudRuntimeException("unable to fetch vms from host " + hostGuid, ex);
- } finally {
- txn.close();
- txn = Transaction.open(Transaction.CLOUD_DB);
- txn.close();
- }
- }
-
- @Override
- public boolean start() {
- return true;
- }
-
- @Override
- public boolean stop() {
- return true;
- }
-
- @Override
- public String getName() {
- return this.getClass().getSimpleName();
- }
-
- @Override
- public Answer getVmStats(GetVmStatsCommand cmd) {
- HashMap<String, VmStatsEntry> vmStatsNameMap = new HashMap<String, VmStatsEntry>();
- List<String> vmNames = cmd.getVmNames();
- for (String vmName : vmNames) {
- VmStatsEntry entry = new VmStatsEntry(0, 0, 0, 0, "vm");
- entry.setNetworkReadKBs(32768); // default values 256 KBps
- entry.setNetworkWriteKBs(16384);
- entry.setCPUUtilization(10);
- entry.setNumCPUs(1);
- vmStatsNameMap.put(vmName, entry);
- }
- return new GetVmStatsAnswer(cmd, vmStatsNameMap);
- }
-
- @Override
- public CheckVirtualMachineAnswer checkVmState(CheckVirtualMachineCommand cmd) {
- Transaction txn = Transaction.open(Transaction.SIMULATOR_DB);
- try {
- txn.start();
- MockVMVO vm = _mockVmDao.findByVmName(cmd.getVmName());
- if (vm == null) {
- return new CheckVirtualMachineAnswer(cmd, "can't find vm:" + cmd.getVmName());
- }
-
- txn.commit();
- return new CheckVirtualMachineAnswer(cmd, vm.getState(), vm.getVncPort());
- } catch (Exception ex) {
- txn.rollback();
- throw new CloudRuntimeException("unable to fetch vm state " + cmd.getVmName(), ex);
- } finally {
- txn.close();
- txn = Transaction.open(Transaction.CLOUD_DB);
- txn.close();
- }
- }
-
- @Override
- public Answer startVM(StartCommand cmd, SimulatorInfo info) {
- VirtualMachineTO vm = cmd.getVirtualMachine();
- String result = startVM(vm.getName(), vm.getNics(), vm.getCpus()* vm.getSpeed(), vm.getMaxRam(), vm.getBootArgs(), info.getHostUuid());
- if (result != null) {
- return new StartAnswer(cmd, result);
- } else {
- return new StartAnswer(cmd);
- }
- }
-
- @Override
- public CheckSshAnswer checkSshCommand(CheckSshCommand cmd) {
- return new CheckSshAnswer(cmd);
- }
-
- @Override
- public Answer SetStaticNatRules(SetStaticNatRulesCommand cmd) {
- return new Answer(cmd);
- }
-
- @Override
- public Answer SetPortForwardingRules(SetPortForwardingRulesCommand cmd) {
- return new Answer(cmd);
- }
-
- @Override
- public Answer SetFirewallRules(SetFirewallRulesCommand cmd) {
- return new Answer(cmd);
- }
-
-
- @Override
- public NetworkUsageAnswer getNetworkUsage(NetworkUsageCommand cmd) {
- return new NetworkUsageAnswer(cmd, null, 100L, 100L);
- }
-
- @Override
- public MigrateAnswer Migrate(MigrateCommand cmd, SimulatorInfo info) {
- Transaction txn = Transaction.open(Transaction.SIMULATOR_DB);
- try {
- txn.start();
- String vmName = cmd.getVmName();
- String destGuid = cmd.getHostGuid();
- MockVMVO vm = _mockVmDao.findByVmNameAndHost(vmName, info.getHostUuid());
- if (vm == null) {
- return new MigrateAnswer(cmd, false, "can;t find vm:" + vmName + " on host:" + info.getHostUuid(), null);
- }
-
- MockHost destHost = _mockHostDao.findByGuid(destGuid);
- if (destHost == null) {
- return new MigrateAnswer(cmd, false, "can;t find host:" + info.getHostUuid(), null);
- }
- vm.setHostId(destHost.getId());
- _mockVmDao.update(vm.getId(), vm);
- txn.commit();
- return new MigrateAnswer(cmd, true, null, 0);
- } catch (Exception ex) {
- txn.rollback();
- throw new CloudRuntimeException("unable to migrate vm " + cmd.getVmName(), ex);
- } finally {
- txn.close();
- txn = Transaction.open(Transaction.CLOUD_DB);
- txn.close();
- }
- }
-
- @Override
- public Answer IpAssoc(IpAssocCommand cmd) {
- return new Answer(cmd);
- }
-
- @Override
- public Answer LoadBalancerConfig(LoadBalancerConfigCommand cmd) {
- return new Answer(cmd);
- }
-
- @Override
- public Answer AddDhcpEntry(DhcpEntryCommand cmd) {
- return new Answer(cmd);
- }
-
- @Override
- public Answer setVmData(VmDataCommand cmd) {
- return new Answer(cmd);
- }
-
- @Override
- public Answer CleanupNetworkRules(CleanupNetworkRulesCmd cmd, SimulatorInfo info) {
- Transaction txn = Transaction.open(Transaction.SIMULATOR_DB);
- try {
- txn.start();
- List<MockSecurityRulesVO> rules = _mockSecurityDao.findByHost(info.getHostUuid());
- for (MockSecurityRulesVO rule : rules) {
- MockVMVO vm = _mockVmDao.findByVmNameAndHost(rule.getVmName(), info.getHostUuid());
- if (vm == null) {
- _mockSecurityDao.remove(rule.getId());
- }
- }
- txn.commit();
- return new Answer(cmd);
- } catch (Exception ex) {
- txn.rollback();
- throw new CloudRuntimeException("unable to clean up rules", ex);
- } finally {
- txn.close();
- txn = Transaction.open(Transaction.CLOUD_DB);
- txn.close();
- }
- }
-
- @Override
- public Answer stopVM(StopCommand cmd) {
- Transaction txn = Transaction.open(Transaction.SIMULATOR_DB);
- try {
- txn.start();
- String vmName = cmd.getVmName();
- MockVm vm = _mockVmDao.findByVmName(vmName);
- if (vm != null) {
- vm.setState(State.Stopped);
- _mockVmDao.update(vm.getId(), (MockVMVO) vm);
- }
-
- if (vmName.startsWith("s-")) {
- _mockAgentMgr.handleSystemVMStop(vm.getId());
- }
- txn.commit();
- return new StopAnswer(cmd, null, new Integer(0), true);
- } catch (Exception ex) {
- txn.rollback();
- throw new CloudRuntimeException("unable to stop vm " + cmd.getVmName(), ex);
- } finally {
- txn.close();
- txn = Transaction.open(Transaction.CLOUD_DB);
- txn.close();
- }
- }
-
- @Override
- public Answer rebootVM(RebootCommand cmd) {
- Transaction txn = Transaction.open(Transaction.SIMULATOR_DB);
- try {
- txn.start();
- MockVm vm = _mockVmDao.findByVmName(cmd.getVmName());
- if (vm != null) {
- vm.setState(State.Running);
- _mockVmDao.update(vm.getId(), (MockVMVO) vm);
- }
- txn.commit();
- return new RebootAnswer(cmd, "Rebooted " + cmd.getVmName(), true);
- } catch (Exception ex) {
- txn.rollback();
- throw new CloudRuntimeException("unable to stop vm " + cmd.getVmName(), ex);
- } finally {
- txn.close();
- txn = Transaction.open(Transaction.CLOUD_DB);
- txn.close();
- }
- }
-
- @Override
- public Answer getVncPort(GetVncPortCommand cmd) {
- return new GetVncPortAnswer(cmd, 0);
- }
-
- @Override
- public Answer CheckConsoleProxyLoad(CheckConsoleProxyLoadCommand cmd) {
- return Answer.createUnsupportedCommandAnswer(cmd);
- }
-
- @Override
- public Answer WatchConsoleProxyLoad(WatchConsoleProxyLoadCommand cmd) {
- return Answer.createUnsupportedCommandAnswer(cmd);
- }
-
- @Override
- public GetDomRVersionAnswer getDomRVersion(GetDomRVersionCmd cmd) {
- return new GetDomRVersionAnswer(cmd, null, null, null);
- }
-
- @Override
- public SecurityGroupRuleAnswer AddSecurityGroupRules(SecurityGroupRulesCmd cmd, SimulatorInfo info) {
- if (!info.isEnabled()) {
- return new SecurityGroupRuleAnswer(cmd, false, "Disabled", SecurityGroupRuleAnswer.FailureReason.CANNOT_BRIDGE_FIREWALL);
- }
-
- Map<String, Ternary<String,Long, Long>> rules = _securityRules.get(info.getHostUuid());
-
- if (rules == null) {
- logSecurityGroupAction(cmd, null);
- rules = new ConcurrentHashMap<String, Ternary<String, Long, Long>>();
- rules.put(cmd.getVmName(), new Ternary<String,Long, Long>(cmd.getSignature(), cmd.getVmId(), cmd.getSeqNum()));
- _securityRules.put(info.getHostUuid(), rules);
- } else {
- logSecurityGroupAction(cmd, rules.get(cmd.getVmName()));
- rules.put(cmd.getVmName(), new Ternary<String, Long,Long>(cmd.getSignature(), cmd.getVmId(), cmd.getSeqNum()));
- }
-
- return new SecurityGroupRuleAnswer(cmd);
- }
-
- private boolean logSecurityGroupAction(SecurityGroupRulesCmd cmd, Ternary<String,Long, Long> rule) {
- String action = ", do nothing";
- String reason = ", reason=";
- Long currSeqnum = rule == null? null: rule.third();
- String currSig = rule == null? null: rule.first();
- boolean updateSeqnoAndSig = false;
- if (currSeqnum != null) {
- if (cmd.getSeqNum() > currSeqnum) {
- s_logger.info("New seqno received: " + cmd.getSeqNum() + " curr=" + currSeqnum);
- updateSeqnoAndSig = true;
- if (!cmd.getSignature().equals(currSig)) {
- s_logger.info("New seqno received: " + cmd.getSeqNum() + " curr=" + currSeqnum
- + " new signature received:" + cmd.getSignature() + " curr=" + currSig + ", updated iptables");
- action = ", updated iptables";
- reason = reason + "seqno_increased_sig_changed";
- } else {
- s_logger.info("New seqno received: " + cmd.getSeqNum() + " curr=" + currSeqnum
- + " no change in signature:" + cmd.getSignature() + ", do nothing");
- reason = reason + "seqno_increased_sig_same";
- }
- } else if (cmd.getSeqNum() < currSeqnum) {
- s_logger.info("Older seqno received: " + cmd.getSeqNum() + " curr=" + currSeqnum + ", do nothing");
- reason = reason + "seqno_decreased";
- } else {
- if (!cmd.getSignature().equals(currSig)) {
- s_logger.info("Identical seqno received: " + cmd.getSeqNum()
- + " new signature received:" + cmd.getSignature() + " curr=" + currSig + ", updated iptables");
- action = ", updated iptables";
- reason = reason + "seqno_same_sig_changed";
- updateSeqnoAndSig = true;
- } else {
- s_logger.info("Identical seqno received: " + cmd.getSeqNum() + " curr=" + currSeqnum
- + " no change in signature:" + cmd.getSignature() + ", do nothing");
- reason = reason + "seqno_same_sig_same";
- }
- }
- } else {
- s_logger.info("New seqno received: " + cmd.getSeqNum() + " old=null");
- updateSeqnoAndSig = true;
- action = ", updated iptables";
- reason = ", seqno_new";
- }
- s_logger.info("Programmed network rules for vm " + cmd.getVmName() + " seqno=" + cmd.getSeqNum()
- + " signature=" + cmd.getSignature()
- + " guestIp=" + cmd.getGuestIp() + ", numIngressRules="
- + cmd.getIngressRuleSet().length + ", numEgressRules="
- + cmd.getEgressRuleSet().length + " total cidrs=" + cmd.getTotalNumCidrs() + action + reason);
- return updateSeqnoAndSig;
- }
-
- @Override
- public Answer SavePassword(SavePasswordCommand cmd) {
- return new Answer(cmd);
- }
-
- @Override
- public HashMap<String, Pair<Long, Long>> syncNetworkGroups(SimulatorInfo info) {
- HashMap<String, Pair<Long, Long>> maps = new HashMap<String, Pair<Long, Long>>();
-
- Map<String, Ternary<String, Long, Long>> rules = _securityRules.get(info.getHostUuid());
- if (rules == null) {
- return maps;
- }
- for (Map.Entry<String,Ternary<String, Long, Long>> rule : rules.entrySet()) {
- maps.put(rule.getKey(), new Pair<Long, Long>(rule.getValue().second(), rule.getValue().third()));
- }
- return maps;
- }
-
-}
http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/d6083ce5/agent-simulator/src/com/cloud/agent/manager/SimulatorInfo.java
----------------------------------------------------------------------
diff --git a/agent-simulator/src/com/cloud/agent/manager/SimulatorInfo.java b/agent-simulator/src/com/cloud/agent/manager/SimulatorInfo.java
deleted file mode 100644
index dafd33a..0000000
--- a/agent-simulator/src/com/cloud/agent/manager/SimulatorInfo.java
+++ /dev/null
@@ -1,59 +0,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.
-package com.cloud.agent.manager;
-
-public class SimulatorInfo {
- private boolean enabled;
- private int timeout;
- private String hostUuid;
-
- public SimulatorInfo(boolean enabled, int timeout, String hostUuid) {
- this.enabled = enabled;
- this.timeout = timeout;
- this.hostUuid = hostUuid;
- }
-
- public SimulatorInfo() {
- this.enabled = true;
- this.timeout = -1;
- this.hostUuid = null;
- }
-
- public boolean isEnabled() {
- return this.enabled;
- }
-
- public int getTimeout() {
- return this.timeout;
- }
-
- public String getHostUuid() {
- return this.hostUuid;
- }
-
- public void setEnabled(boolean enabled) {
- this.enabled = enabled;
- }
-
- public void setTimeout(int timeout) {
- this.timeout = timeout;
- }
-
- public void setHostUuid(String hostUuid) {
- this.hostUuid = hostUuid;
- }
-}
http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/d6083ce5/agent-simulator/src/com/cloud/agent/manager/SimulatorManager.java
----------------------------------------------------------------------
diff --git a/agent-simulator/src/com/cloud/agent/manager/SimulatorManager.java b/agent-simulator/src/com/cloud/agent/manager/SimulatorManager.java
deleted file mode 100755
index 2b31b14..0000000
--- a/agent-simulator/src/com/cloud/agent/manager/SimulatorManager.java
+++ /dev/null
@@ -1,66 +0,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.
-package com.cloud.agent.manager;
-
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-
-import com.cloud.agent.api.Answer;
-import com.cloud.agent.api.Command;
-import com.cloud.agent.api.StoragePoolInfo;
-import com.cloud.agent.mockvm.MockVm;
-import com.cloud.simulator.MockVMVO;
-import com.cloud.utils.Pair;
-import com.cloud.utils.component.Manager;
-import com.cloud.vm.VirtualMachine.State;
-
-public interface SimulatorManager extends Manager {
- public static final String Name = "simulator manager";
-
- public enum AgentType {
- Computing(0), // not used anymore
- Routing(1),
- Storage(2);
-
- int value;
-
- AgentType(int value) {
- this.value = value;
- }
-
- public int value() {
- return value;
- }
- }
-
- MockVmManager getVmMgr();
-
- MockStorageManager getStorageMgr();
-
- MockAgentManager getAgentMgr();
-
- Answer simulate(Command cmd, String hostGuid);
- StoragePoolInfo getLocalStorage(String hostGuid);
-
- boolean configureSimulator(Long zoneId, Long podId, Long clusterId, Long hostId, String command, String values);
- public HashMap<String, Pair<Long, Long>> syncNetworkGroups(String hostGuid);
-
- Map<String, State> getVmStates(String hostGuid);
-
- Map<String, MockVMVO> getVms(String hostGuid);
-}
\ No newline at end of file