diff --git a/client/tomcatconf/applicationContext.xml.in b/client/tomcatconf/applicationContext.xml.in
index e6c578c5a9a..223f3453c21 100644
--- a/client/tomcatconf/applicationContext.xml.in
+++ b/client/tomcatconf/applicationContext.xml.in
@@ -786,8 +786,7 @@
-
-
+
diff --git a/core/src/com/cloud/agent/api/DownloadSnapshotFromS3Command.java b/core/src/com/cloud/agent/api/DownloadSnapshotFromS3Command.java
deleted file mode 100644
index edf683a58be..00000000000
--- a/core/src/com/cloud/agent/api/DownloadSnapshotFromS3Command.java
+++ /dev/null
@@ -1,61 +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.api;
-
-import com.cloud.agent.api.to.S3TO;
-
-public class DownloadSnapshotFromS3Command extends SnapshotCommand {
-
- private S3TO s3;
- private String parent;
-
- protected DownloadSnapshotFromS3Command() {
- super();
- }
-
- public DownloadSnapshotFromS3Command(S3TO s3, String parent,
- String secondaryStorageUrl, Long dcId, Long accountId,
- Long volumeId, String backupUuid, int wait) {
-
- super(null, secondaryStorageUrl, backupUuid, "", dcId, accountId,
- volumeId);
-
- this.s3 = s3;
- this.parent = parent;
- setWait(wait);
-
- }
-
- public S3TO getS3() {
- return s3;
- }
-
- public void setS3(S3TO s3) {
- this.s3 = s3;
- }
-
- public String getParent() {
- return parent;
- }
-
- public void setParent(String parent) {
- this.parent = parent;
- }
-
-}
diff --git a/core/src/com/cloud/agent/api/DownloadSnapshotFromSwiftCommand.java b/core/src/com/cloud/agent/api/DownloadSnapshotFromSwiftCommand.java
deleted file mode 100644
index 0711b2ef2d8..00000000000
--- a/core/src/com/cloud/agent/api/DownloadSnapshotFromSwiftCommand.java
+++ /dev/null
@@ -1,60 +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.api;
-
-import com.cloud.agent.api.LogLevel.Log4jLevel;
-import com.cloud.agent.api.to.SwiftTO;
-
-/**
- * This currently assumes that both primary and secondary storage are mounted on the XenServer.
- */
-public class DownloadSnapshotFromSwiftCommand extends SnapshotCommand {
- @LogLevel(Log4jLevel.Off)
- private SwiftTO _swift;
-
- private String _parent;
-
- protected DownloadSnapshotFromSwiftCommand() {
-
- }
-
- public DownloadSnapshotFromSwiftCommand(SwiftTO swift, String secondaryStorageUrl, Long dcId, Long accountId, Long volumeId, String parent, String BackupUuid, int wait) {
-
- super(null, secondaryStorageUrl, BackupUuid, "", dcId, accountId, volumeId);
- setParent(parent);
- setSwift(swift);
- setWait(wait);
- }
-
-
- public SwiftTO getSwift() {
- return this._swift;
- }
-
- public void setSwift(SwiftTO swift) {
- this._swift = swift;
- }
-
- public String getParent() {
- return _parent;
- }
-
- public void setParent(String parent) {
- this._parent = parent;
- }
-
-}
diff --git a/core/src/com/cloud/agent/api/DownloadTemplateFromS3ToSecondaryStorageCommand.java b/core/src/com/cloud/agent/api/DownloadTemplateFromS3ToSecondaryStorageCommand.java
deleted file mode 100644
index af61228c020..00000000000
--- a/core/src/com/cloud/agent/api/DownloadTemplateFromS3ToSecondaryStorageCommand.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.api;
-
-import com.cloud.agent.api.to.S3TO;
-
-public final class DownloadTemplateFromS3ToSecondaryStorageCommand extends Command {
-
- private final S3TO s3;
- private final Long accountId;
- private final Long templateId;
- private final String storagePath;
-
- public DownloadTemplateFromS3ToSecondaryStorageCommand(final S3TO s3,
- final Long accountId, final Long templateId,
- final String storagePath, final int wait) {
-
- super();
-
- this.s3 = s3;
- this.accountId = accountId;
- this.templateId = templateId;
- this.storagePath = storagePath;
-
- setWait(wait);
-
- }
-
- public S3TO getS3() {
- return this.s3;
- }
-
- public Long getAccountId() {
- return this.accountId;
- }
-
- public Long getTemplateId() {
- return this.templateId;
- }
-
- public String getStoragePath() {
- return this.storagePath;
- }
-
- @Override
- public boolean executeInSequence() {
- return true;
- }
-
-}
diff --git a/core/src/com/cloud/agent/api/DownloadTemplateFromSwiftToSecondaryStorageCommand.java b/core/src/com/cloud/agent/api/DownloadTemplateFromSwiftToSecondaryStorageCommand.java
deleted file mode 100644
index 79ec882c8d7..00000000000
--- a/core/src/com/cloud/agent/api/DownloadTemplateFromSwiftToSecondaryStorageCommand.java
+++ /dev/null
@@ -1,90 +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.api;
-
-import com.cloud.agent.api.LogLevel.Log4jLevel;
-import com.cloud.agent.api.to.SwiftTO;
-
-/**
- *
- *
- */
-
-public class DownloadTemplateFromSwiftToSecondaryStorageCommand extends Command {
- @LogLevel(Log4jLevel.Off)
- private SwiftTO swift;
- private String secondaryStorageUrl;
-
- private Long dcId;
- private Long accountId;
- private Long templateId;
- private String path;
-
- protected DownloadTemplateFromSwiftToSecondaryStorageCommand() {
-
- }
-
- public DownloadTemplateFromSwiftToSecondaryStorageCommand(SwiftTO swift, String secondaryStorageUrl, Long dcId, Long accountId, Long templateId, String path, int wait) {
-
- this.swift = swift;
- this.secondaryStorageUrl = secondaryStorageUrl;
- this.dcId = dcId;
- this.accountId = accountId;
- this.templateId = templateId;
- this.path = path;
- setWait(wait);
- }
-
- public SwiftTO getSwift() {
- return this.swift;
- }
-
- public void setSwift(SwiftTO swift) {
- this.swift = swift;
- }
-
- public String getSecondaryStorageUrl() {
- return secondaryStorageUrl;
- }
-
- public Long getDcId() {
- return dcId;
- }
-
- public Long getAccountId() {
- return accountId;
- }
-
- public Long getTemplateId() {
- return templateId;
- }
-
- public String getPath() {
- return path;
- }
-
- public void setPath(String path) {
- this.path = path;
- }
-
- @Override
- public boolean executeInSequence() {
- // TODO Auto-generated method stub
- return true;
- }
-
-}
diff --git a/core/src/com/cloud/agent/api/UploadTemplateToS3FromSecondaryStorageCommand.java b/core/src/com/cloud/agent/api/UploadTemplateToS3FromSecondaryStorageCommand.java
deleted file mode 100644
index 1807cd56315..00000000000
--- a/core/src/com/cloud/agent/api/UploadTemplateToS3FromSecondaryStorageCommand.java
+++ /dev/null
@@ -1,121 +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.api;
-
-import com.cloud.agent.api.to.S3TO;
-
-public class UploadTemplateToS3FromSecondaryStorageCommand extends Command {
-
- private final S3TO s3;
- private final String storagePath;
- private final Long dataCenterId;
- private final Long accountId;
- private final Long templateId;
-
- public UploadTemplateToS3FromSecondaryStorageCommand(final S3TO s3,
- final String storagePath, final Long dataCenterId, final Long accountId,
- final Long templateId) {
-
- super();
-
- this.s3 = s3;
- this.storagePath = storagePath;
- this.dataCenterId = dataCenterId;
- this.accountId = accountId;
- this.templateId = templateId;
-
- }
-
- @Override
- public boolean executeInSequence() {
- return false;
- }
-
- @Override
- public boolean equals(final Object thatObject) {
-
- if (this == thatObject) {
- return true;
- }
-
- if (thatObject == null || getClass() != thatObject.getClass()) {
- return false;
- }
-
- final UploadTemplateToS3FromSecondaryStorageCommand thatCommand =
- (UploadTemplateToS3FromSecondaryStorageCommand) thatObject;
-
- if (this.accountId != null ? !this.accountId.equals(thatCommand
- .accountId) : thatCommand.accountId != null) {
- return false;
- }
-
- if (this.dataCenterId != null ? !this.dataCenterId.equals(thatCommand
- .dataCenterId) : thatCommand.dataCenterId != null) {
- return false;
- }
-
- if (this.s3 != null ? !this.s3.equals(thatCommand.s3) : thatCommand.s3 != null) {
- return false;
- }
-
- if (this.storagePath != null ? !this.storagePath.equals(thatCommand
- .storagePath) : thatCommand.storagePath != null) {
- return false;
- }
-
- if (this.templateId != null ? !this.templateId.equals(thatCommand.templateId) :
- thatCommand.templateId != null) {
- return false;
- }
-
- return true;
- }
-
- @Override
- public int hashCode() {
- int result = this.s3 != null ? this.s3.hashCode() : 0;
- result = 31 * result + (this.storagePath != null ? this.storagePath.hashCode() : 0);
- result = 31 * result + (this.dataCenterId != null ? this.dataCenterId.hashCode() : 0);
- result = 31 * result + (this.accountId != null ? this.accountId.hashCode() : 0);
- result = 31 * result + (this.templateId != null ? this.templateId.hashCode() : 0);
- return result;
- }
-
- public S3TO getS3() {
- return this.s3;
- }
-
- public String getStoragePath() {
- return this.storagePath;
- }
-
- public Long getDataCenterId() {
- return this.dataCenterId;
- }
-
- public Long getAccountId() {
- return this.accountId;
- }
-
- public Long getTemplateId() {
- return this.templateId;
- }
-
-}
diff --git a/core/src/com/cloud/agent/api/UploadTemplateToSwiftFromSecondaryStorageCommand.java b/core/src/com/cloud/agent/api/UploadTemplateToSwiftFromSecondaryStorageCommand.java
deleted file mode 100644
index 7ba377da8c3..00000000000
--- a/core/src/com/cloud/agent/api/UploadTemplateToSwiftFromSecondaryStorageCommand.java
+++ /dev/null
@@ -1,80 +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.api;
-
-import com.cloud.agent.api.LogLevel.Log4jLevel;
-import com.cloud.agent.api.to.SwiftTO;
-
-/**
- *
- *
- */
-
-public class UploadTemplateToSwiftFromSecondaryStorageCommand extends Command {
- @LogLevel(Log4jLevel.Off)
- private SwiftTO swift;
- private String secondaryStorageUrl;
-
- private Long dcId;
- private Long accountId;
- private Long templateId;
-
- protected UploadTemplateToSwiftFromSecondaryStorageCommand() {
-
- }
-
- public UploadTemplateToSwiftFromSecondaryStorageCommand(SwiftTO swift, String secondaryStorageUrl, Long dcId, Long accountId, Long templateId, int wait) {
-
- this.swift = swift;
- this.secondaryStorageUrl = secondaryStorageUrl;
- this.dcId = dcId;
- this.accountId = accountId;
- this.templateId = templateId;
- setWait(wait);
- }
-
- public SwiftTO getSwift() {
- return this.swift;
- }
-
- public void setSwift(SwiftTO swift) {
- this.swift = swift;
- }
-
- public String getSecondaryStorageUrl() {
- return secondaryStorageUrl;
- }
-
- public Long getDcId() {
- return dcId;
- }
-
- public Long getAccountId() {
- return accountId;
- }
-
- public Long getTemplateId() {
- return templateId;
- }
-
- @Override
- public boolean executeInSequence() {
- // TODO Auto-generated method stub
- return true;
- }
-
-}
diff --git a/engine/storage/integration-test/test/org/apache/cloudstack/storage/test/ChildTestConfiguration.java b/engine/storage/integration-test/test/org/apache/cloudstack/storage/test/ChildTestConfiguration.java
index ebd6e39155b..817262c28d7 100644
--- a/engine/storage/integration-test/test/org/apache/cloudstack/storage/test/ChildTestConfiguration.java
+++ b/engine/storage/integration-test/test/org/apache/cloudstack/storage/test/ChildTestConfiguration.java
@@ -76,7 +76,6 @@ import com.cloud.storage.dao.VMTemplateZoneDaoImpl;
import com.cloud.storage.dao.VolumeDaoImpl;
import com.cloud.storage.dao.VolumeHostDaoImpl;
import com.cloud.storage.download.DownloadMonitorImpl;
-import com.cloud.storage.s3.S3Manager;
import com.cloud.storage.secondary.SecondaryStorageVmManager;
import com.cloud.storage.snapshot.SnapshotManager;
import com.cloud.tags.dao.ResourceTagsDaoImpl;
@@ -186,10 +185,6 @@ public class ChildTestConfiguration extends TestConfiguration {
return Mockito.mock(VirtualMachineManager.class);
}
- @Bean
- public S3Manager s3Mgr() {
- return Mockito.mock(S3Manager.class);
- }
@Bean
public SnapshotManager snapshotMgr() {
diff --git a/plugins/storage/image/s3/src/org/apache/cloudstack/storage/datastore/lifecycle/S3ImageStoreLifeCycleImpl.java b/plugins/storage/image/s3/src/org/apache/cloudstack/storage/datastore/lifecycle/S3ImageStoreLifeCycleImpl.java
index 2630d137863..249a4c6a1e8 100644
--- a/plugins/storage/image/s3/src/org/apache/cloudstack/storage/datastore/lifecycle/S3ImageStoreLifeCycleImpl.java
+++ b/plugins/storage/image/s3/src/org/apache/cloudstack/storage/datastore/lifecycle/S3ImageStoreLifeCycleImpl.java
@@ -40,7 +40,6 @@ import com.cloud.resource.Discoverer;
import com.cloud.resource.ResourceManager;
import com.cloud.storage.DataStoreRole;
import com.cloud.storage.ScopeType;
-import com.cloud.storage.s3.S3Manager;
public class S3ImageStoreLifeCycleImpl implements ImageStoreLifeCycle {
diff --git a/server/src/com/cloud/resource/ResourceManagerImpl.java b/server/src/com/cloud/resource/ResourceManagerImpl.java
index 39858905e46..46fd808669d 100755
--- a/server/src/com/cloud/resource/ResourceManagerImpl.java
+++ b/server/src/com/cloud/resource/ResourceManagerImpl.java
@@ -31,7 +31,6 @@ import javax.inject.Inject;
import javax.naming.ConfigurationException;
import com.cloud.dc.*;
-import com.cloud.server.ConfigurationServer;
import org.apache.log4j.Logger;
import org.springframework.stereotype.Component;
@@ -48,9 +47,6 @@ import org.apache.cloudstack.api.command.admin.host.UpdateHostPasswordCmd;
import org.apache.cloudstack.region.dao.RegionDao;
import org.apache.cloudstack.storage.datastore.db.PrimaryDataStoreDao;
import org.apache.cloudstack.storage.datastore.db.StoragePoolVO;
-import org.apache.log4j.Logger;
-import org.springframework.stereotype.Component;
-
import com.cloud.agent.AgentManager;
import com.cloud.agent.AgentManager.TapAgentsAction;
import com.cloud.agent.api.Answer;
@@ -129,7 +125,6 @@ import com.cloud.storage.VMTemplateVO;
import com.cloud.storage.dao.GuestOSCategoryDao;
import com.cloud.storage.dao.StoragePoolHostDao;
import com.cloud.storage.dao.VMTemplateDao;
-import com.cloud.storage.s3.S3Manager;
import com.cloud.storage.secondary.SecondaryStorageVmManager;
import com.cloud.template.VirtualMachineTemplate;
import com.cloud.user.Account;
@@ -189,8 +184,6 @@ public class ResourceManagerImpl extends ManagerBase implements ResourceManager,
@Inject
protected HostDao _hostDao;
@Inject
- protected S3Manager _s3Mgr;
- @Inject
protected HostDetailsDao _hostDetailsDao;
@Inject
protected ConfigurationDao _configDao;
@@ -543,8 +536,9 @@ public class ResourceManagerImpl extends ManagerBase implements ResourceManager,
@Override
public Discoverer getMatchingDiscover(Hypervisor.HypervisorType hypervisorType) {
for (Discoverer discoverer : _discoverers) {
- if (discoverer.getHypervisorType() == hypervisorType)
+ if (discoverer.getHypervisorType() == hypervisorType) {
return discoverer;
+ }
}
return null;
}
diff --git a/server/src/com/cloud/server/ManagementServerImpl.java b/server/src/com/cloud/server/ManagementServerImpl.java
index 996c6937282..b90617839ac 100755
--- a/server/src/com/cloud/server/ManagementServerImpl.java
+++ b/server/src/com/cloud/server/ManagementServerImpl.java
@@ -501,7 +501,6 @@ import com.cloud.storage.dao.GuestOSDao;
import com.cloud.storage.dao.UploadDao;
import com.cloud.storage.dao.VMTemplateDao;
import com.cloud.storage.dao.VolumeDao;
-import com.cloud.storage.s3.S3Manager;
import com.cloud.storage.secondary.SecondaryStorageVmManager;
import com.cloud.storage.snapshot.SnapshotManager;
import com.cloud.storage.upload.UploadMonitor;
@@ -672,10 +671,6 @@ public class ManagementServerImpl extends ManagerBase implements ManagementServe
DataStoreManager dataStoreMgr;
@Inject
HostTagsDao _hostTagsDao;
-
- @Inject
- S3Manager _s3Mgr;
-
@Inject
ConfigurationServer _configServer;
@Inject
diff --git a/server/src/com/cloud/storage/VolumeManagerImpl.java b/server/src/com/cloud/storage/VolumeManagerImpl.java
index 580578f139b..d7e44689d06 100644
--- a/server/src/com/cloud/storage/VolumeManagerImpl.java
+++ b/server/src/com/cloud/storage/VolumeManagerImpl.java
@@ -32,8 +32,6 @@ import javax.inject.Inject;
import javax.naming.ConfigurationException;
import com.cloud.utils.*;
-import org.apache.commons.lang.StringUtils;
-
import org.apache.log4j.Logger;
import org.springframework.stereotype.Component;
@@ -142,7 +140,6 @@ import com.cloud.storage.dao.VMTemplateS3Dao;
import com.cloud.storage.dao.VolumeDao;
import com.cloud.storage.dao.VolumeDetailsDao;
import com.cloud.storage.download.DownloadMonitor;
-import com.cloud.storage.s3.S3Manager;
import com.cloud.storage.secondary.SecondaryStorageVmManager;
import com.cloud.storage.snapshot.SnapshotApiService;
import com.cloud.storage.snapshot.SnapshotManager;
@@ -234,8 +231,6 @@ public class VolumeManagerImpl extends ManagerBase implements VolumeManager {
@Inject
protected VMTemplateS3Dao _vmTemplateS3Dao;
@Inject
- protected S3Manager _s3Mgr;
- @Inject
protected VMTemplateDao _vmTemplateDao = null;
@Inject
protected StoragePoolHostDao _poolHostDao = null;
diff --git a/server/src/com/cloud/storage/s3/S3Manager.java b/server/src/com/cloud/storage/s3/S3Manager.java
deleted file mode 100644
index 058c5caf32c..00000000000
--- a/server/src/com/cloud/storage/s3/S3Manager.java
+++ /dev/null
@@ -1,67 +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.storage.s3;
-
-import java.util.List;
-import java.util.Map;
-
-import com.cloud.agent.api.to.S3TO;
-import org.apache.cloudstack.api.command.admin.storage.AddS3Cmd;
-import org.apache.cloudstack.api.command.admin.storage.ListS3sCmd;
-
-import com.cloud.dc.DataCenterVO;
-import com.cloud.exception.DiscoveryException;
-import com.cloud.storage.S3;
-import com.cloud.storage.S3VO;
-import com.cloud.storage.VMTemplateS3VO;
-import com.cloud.storage.VMTemplateVO;
-import com.cloud.utils.component.Manager;
-
-public interface S3Manager extends Manager {
-
- S3TO getS3TO();
-
- S3TO getS3TO(Long s3Id);
-
- S3 addS3(AddS3Cmd addS3Cmd) throws DiscoveryException;
-
- void verifyS3Fields(Map params) throws DiscoveryException;
-
- Long chooseZoneForTemplateExtract(VMTemplateVO template);
-
- boolean isS3Enabled();
-
- boolean isTemplateInstalled(Long templateId);
-
- //void deleteTemplate(final Long accountId, final Long templateId);
-
- String downloadTemplateFromS3ToSecondaryStorage(final long dcId,
- final long templateId, final int primaryStorageDownloadWait);
-
- List listS3s(ListS3sCmd listS3sCmd);
-
- VMTemplateS3VO findByTemplateId(Long templateId);
-
- void propagateTemplatesToZone(DataCenterVO zone);
-
- void propagateTemplateToAllZones(VMTemplateS3VO vmTemplateS3VO);
-
- void uploadTemplateToS3FromSecondaryStorage(final VMTemplateVO template);
-
-}
diff --git a/server/src/com/cloud/storage/s3/S3ManagerImpl.java b/server/src/com/cloud/storage/s3/S3ManagerImpl.java
deleted file mode 100644
index 1f8486c88ff..00000000000
--- a/server/src/com/cloud/storage/s3/S3ManagerImpl.java
+++ /dev/null
@@ -1,609 +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.storage.s3;
-
-import static com.cloud.storage.S3VO.ID_COLUMN_NAME;
-import static com.cloud.utils.DateUtil.now;
-import static com.cloud.utils.S3Utils.canConnect;
-import static com.cloud.utils.S3Utils.canReadWriteBucket;
-import static com.cloud.utils.S3Utils.checkBucketName;
-import static com.cloud.utils.S3Utils.checkClientOptions;
-import static com.cloud.utils.S3Utils.doesBucketExist;
-import static com.cloud.utils.StringUtils.join;
-import static com.cloud.utils.db.GlobalLock.executeWithNoWaitLock;
-import static java.lang.Boolean.TRUE;
-import static java.lang.String.format;
-import static java.util.Collections.emptyList;
-import static java.util.Collections.shuffle;
-import static java.util.Collections.singletonList;
-
-import java.io.File;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Map;
-import java.util.UUID;
-import java.util.concurrent.Callable;
-
-import javax.ejb.Local;
-import javax.inject.Inject;
-import javax.naming.ConfigurationException;
-
-import org.apache.cloudstack.api.ApiConstants;
-import org.apache.cloudstack.api.command.admin.storage.AddS3Cmd;
-import org.apache.cloudstack.api.command.admin.storage.ListS3sCmd;
-import org.apache.cloudstack.engine.subsystem.api.storage.DataStore;
-import org.apache.cloudstack.engine.subsystem.api.storage.DataStoreManager;
-import org.apache.log4j.Logger;
-import org.springframework.stereotype.Component;
-
-import com.cloud.agent.AgentManager;
-import com.cloud.agent.api.Answer;
-import com.cloud.agent.api.DownloadTemplateFromS3ToSecondaryStorageCommand;
-import com.cloud.agent.api.UploadTemplateToS3FromSecondaryStorageCommand;
-import com.cloud.agent.api.to.S3TO;
-import com.cloud.configuration.dao.ConfigurationDao;
-import com.cloud.dc.DataCenterVO;
-import com.cloud.dc.dao.DataCenterDao;
-import com.cloud.exception.DiscoveryException;
-import com.cloud.host.HostVO;
-import com.cloud.host.dao.HostDao;
-import com.cloud.storage.S3;
-import com.cloud.storage.S3VO;
-import com.cloud.storage.VMTemplateHostVO;
-import com.cloud.storage.VMTemplateS3VO;
-import com.cloud.storage.VMTemplateVO;
-import com.cloud.storage.VMTemplateStorageResourceAssoc.Status;
-import com.cloud.storage.VMTemplateZoneVO;
-import com.cloud.storage.dao.S3Dao;
-import com.cloud.storage.dao.VMTemplateDao;
-import com.cloud.storage.dao.VMTemplateHostDao;
-import com.cloud.storage.dao.VMTemplateS3Dao;
-import com.cloud.storage.dao.VMTemplateZoneDao;
-import com.cloud.utils.S3Utils.ClientOptions;
-import com.cloud.utils.component.ManagerBase;
-import com.cloud.utils.db.Filter;
-import com.cloud.utils.db.SearchCriteria;
-import com.cloud.utils.exception.CloudRuntimeException;
-
-@Component
-@Local(value = { S3Manager.class })
-public class S3ManagerImpl extends ManagerBase implements S3Manager {
-
- private static final Logger LOGGER = Logger.getLogger(S3ManagerImpl.class);
-
- @Inject
- private AgentManager agentManager;
-
- @Inject
- private S3Dao s3Dao;
-
-
- @Inject
- private VMTemplateZoneDao vmTemplateZoneDao;
-
- @Inject
- private VMTemplateS3Dao vmTemplateS3Dao;
-
- @Inject
- private VMTemplateHostDao vmTemplateHostDao;
-
- @Inject
- private VMTemplateDao vmTemplateDao;
-
- @Inject
- private ConfigurationDao configurationDao;
-
- @Inject
- private DataCenterDao dataCenterDao;
-
- @Inject
- private HostDao hostDao;
-
-
- @Inject
- private DataStoreManager dataStoreManager;
-
- public S3ManagerImpl() {
- }
-
- private void verifyConnection(final S3TO s3) throws DiscoveryException {
-
- if (!canConnect(s3)) {
- throw new DiscoveryException(format("Unable to connect to S3 "
- + "using access key %1$s, secret key %2$s, and endpoint, "
- + "%3$S", s3.getAccessKey(), s3.getSecretKey(),
- s3.getEndPoint() != null ? s3.getEndPoint() : "default"));
- }
-
- }
-
- private void verifyBuckets(S3TO s3) throws DiscoveryException {
-
- final List errorMessages = new ArrayList();
-
- errorMessages.addAll(verifyBucket(s3, s3.getBucketName()));
-
- throwDiscoveryExceptionFromErrorMessages(errorMessages);
-
- }
-
- private List verifyBucket(final ClientOptions clientOptions,
- final String bucketName) {
-
- if (!doesBucketExist(clientOptions, bucketName)) {
- return singletonList(format("Bucket %1$s does not exist.",
- bucketName));
- }
-
- if (!canReadWriteBucket(clientOptions, bucketName)) {
- return singletonList(format("Can read/write from bucket %1$s.",
- bucketName));
- }
-
- return emptyList();
- }
-
- private void validateFields(final S3VO s3VO) {
-
- final List errorMessages = new ArrayList();
-
- errorMessages.addAll(checkClientOptions(s3VO.toS3TO()));
-
- errorMessages.addAll(checkBucketName("template", s3VO.getBucketName()));
-
- throwDiscoveryExceptionFromErrorMessages(errorMessages);
-
- }
-
- private void enforceS3PreConditions() throws DiscoveryException {
-
- if (!this.isS3Enabled()) {
- throw new DiscoveryException("S3 is not enabled.");
- }
-
- if (this.getS3TO() != null) {
- throw new DiscoveryException("Attempt to define multiple S3 "
- + "instances. Only one instance definition is supported.");
- }
-
- }
-
- private void throwDiscoveryExceptionFromErrorMessages(
- final List errorMessages) {
-
- if (!errorMessages.isEmpty()) {
- throw new CloudRuntimeException(join(errorMessages, " "));
- }
-
- }
-
- static String determineLockId(final long accountId, final long templateId) {
-
- // TBD The lock scope may be too coarse grained. Deletes need to lock
- // the template across all zones where upload and download could
- // probably safely scoped to the zone ...
- return join("_", "S3_TEMPLATE", accountId, templateId);
-
- }
-
- @Override
- public S3TO getS3TO(final Long s3Id) {
- return this.s3Dao.getS3TO(s3Id);
- }
-
- @Override
- public S3TO getS3TO() {
-
- final List s3s = this.s3Dao.listAll();
-
- if (s3s == null || (s3s != null && s3s.isEmpty())) {
- return null;
- }
-
- if (s3s.size() == 1) {
- return s3s.get(0).toS3TO();
- }
-
- throw new CloudRuntimeException("Multiple S3 instances have been "
- + "defined. Only one instance configuration is supported.");
-
- }
-
- @Override
- public S3 addS3(final AddS3Cmd addS3Cmd) throws DiscoveryException {
-
- this.enforceS3PreConditions();
-
- final S3VO s3VO = new S3VO(UUID.randomUUID().toString(),
- addS3Cmd.getAccessKey(), addS3Cmd.getSecretKey(),
- addS3Cmd.getEndPoint(), addS3Cmd.getBucketName(),
- addS3Cmd.getHttpsFlag(), addS3Cmd.getConnectionTimeout(),
- addS3Cmd.getMaxErrorRetry(), addS3Cmd.getSocketTimeout(), now());
-
- this.validateFields(s3VO);
-
- final S3TO s3 = s3VO.toS3TO();
- this.verifyConnection(s3);
- this.verifyBuckets(s3);
-
- return this.s3Dao.persist(s3VO);
-
- }
-
-
- @Override
- public void verifyS3Fields(Map params) throws DiscoveryException {
- final S3VO s3VO = new S3VO(UUID.randomUUID().toString(),
- params.get(ApiConstants.S3_ACCESS_KEY),
- params.get(ApiConstants.S3_SECRET_KEY),
- params.get(ApiConstants.S3_END_POINT),
- params.get(ApiConstants.S3_BUCKET_NAME),
- params.get(ApiConstants.S3_HTTPS_FLAG) == null ? false : Boolean.valueOf(params.get(ApiConstants.S3_HTTPS_FLAG)),
- params.get(ApiConstants.S3_CONNECTION_TIMEOUT) == null ? null : Integer.valueOf(params.get(ApiConstants.S3_CONNECTION_TIMEOUT)),
- params.get(ApiConstants.S3_MAX_ERROR_RETRY) == null ? null : Integer.valueOf(params.get(ApiConstants.S3_MAX_ERROR_RETRY)),
- params.get(ApiConstants.S3_SOCKET_TIMEOUT) == null ? null : Integer.valueOf(params.get(ApiConstants.S3_SOCKET_TIMEOUT)), now());
-
- this.validateFields(s3VO);
-
- final S3TO s3 = s3VO.toS3TO();
- this.verifyConnection(s3);
- this.verifyBuckets(s3);
- }
-
- @Override
- public boolean isS3Enabled() {
- return false;
- }
-
- @Override
- public boolean isTemplateInstalled(final Long templateId) {
- throw new UnsupportedOperationException(
- "S3Manager#isTemplateInstalled (DeleteIsoCmd) has not yet "
- + "been implemented");
- }
-
-
-
- @SuppressWarnings("unchecked")
- @Override
- public String downloadTemplateFromS3ToSecondaryStorage(
- final long dataCenterId, final long templateId,
- final int primaryStorageDownloadWait) {
-
- if (!isS3Enabled()) {
- return null;
- }
-
- final VMTemplateVO template = vmTemplateDao.findById(templateId);
- if (template == null) {
- final String errorMessage = String
- .format("Failed to download template id %1$s from S3 because the template definition was not found.",
- templateId);
- LOGGER.error(errorMessage);
- return errorMessage;
- }
-
- final VMTemplateS3VO templateS3VO = findByTemplateId(templateId);
- if (templateS3VO == null) {
- final String errorMessage = format(
- "Failed to download template id %1$s from S3 because it does not exist in S3.",
- templateId);
- LOGGER.error(errorMessage);
- return errorMessage;
- }
-
- final S3TO s3 = getS3TO(templateS3VO.getS3Id());
- if (s3 == null) {
- final String errorMessage = format(
- "Failed to download template id %1$s from S3 because S3 id %2$s does not exist.",
- templateId, templateS3VO);
- LOGGER.error(errorMessage);
- return errorMessage;
- }
-
- final DataStore secondaryStore = this.dataStoreManager.getImageStore(dataCenterId);
- if (secondaryStore == null) {
- final String errorMessage = format(
- "Unable to find secondary storage for zone id %1$s.",
- dataCenterId);
- LOGGER.error(errorMessage);
- throw new CloudRuntimeException(errorMessage);
- }
-
- final long accountId = template.getAccountId();
- final DownloadTemplateFromS3ToSecondaryStorageCommand cmd = new DownloadTemplateFromS3ToSecondaryStorageCommand(
- s3, accountId, templateId, secondaryStore.getName(),
- primaryStorageDownloadWait);
-
- try {
-
- executeWithNoWaitLock(determineLockId(accountId, templateId),
- new Callable() {
-
- @Override
- public Void call() throws Exception {
-
- final Answer answer = agentManager.sendToSSVM(
- dataCenterId, cmd);
-
- if (answer == null || !answer.getResult()) {
- final String errMsg = String
- .format("Failed to download template from S3 to secondary storage due to %1$s",
- (answer == null ? "answer is null"
- : answer.getDetails()));
- LOGGER.error(errMsg);
- throw new CloudRuntimeException(errMsg);
- }
-
- final String installPath = join(File.separator, "template", "tmpl", accountId, templateId);
- final VMTemplateHostVO tmpltHost = new VMTemplateHostVO(
- secondaryStore.getId(), templateId,
- now(), 100, Status.DOWNLOADED, null, null,
- null, installPath, template.getUrl());
- tmpltHost.setSize(templateS3VO.getSize());
- tmpltHost.setPhysicalSize(templateS3VO
- .getPhysicalSize());
- vmTemplateHostDao.persist(tmpltHost);
-
- return null;
-
- }
-
- });
-
- } catch (Exception e) {
- final String errMsg = "Failed to download template from S3 to secondary storage due to "
- + e.toString();
- LOGGER.error(errMsg);
- throw new CloudRuntimeException(errMsg);
- }
-
- return null;
-
- }
-
- @Override
- public List listS3s(final ListS3sCmd cmd) {
-
- final Filter filter = new Filter(S3VO.class, ID_COLUMN_NAME, TRUE,
- cmd.getStartIndex(), cmd.getPageSizeVal());
- final SearchCriteria criteria = this.s3Dao.createSearchCriteria();
-
- return this.s3Dao.search(criteria, filter);
-
- }
-
- @Override
- public VMTemplateS3VO findByTemplateId(final Long templateId) {
- throw new UnsupportedOperationException(
- "S3Manager#findByTemplateId(Long) has not yet "
- + "been implemented");
- }
-
- @Override
- public void propagateTemplatesToZone(final DataCenterVO zone) {
-
- if (!isS3Enabled()) {
- return;
- }
-
- final List s3VMTemplateRefs = this.vmTemplateS3Dao
- .listAll();
- if (LOGGER.isInfoEnabled()) {
- LOGGER.info(format("Propagating %1$s templates to zone %2$s.",
- s3VMTemplateRefs.size(), zone.getName()));
- }
-
- for (final VMTemplateS3VO templateS3VO : s3VMTemplateRefs) {
- this.vmTemplateZoneDao.persist(new VMTemplateZoneVO(zone.getId(),
- templateS3VO.getTemplateId(), now()));
- }
-
- }
-
- @Override
- public boolean configure(final String name, final Map params)
- throws ConfigurationException {
-
- if (LOGGER.isInfoEnabled()) {
- LOGGER.info(format("Configuring S3 Manager %1$s", name));
- }
-
- return true;
- }
-
- @Override
- public boolean start() {
- LOGGER.info("Starting S3 Manager");
- return true;
- }
-
- @Override
- public boolean stop() {
- LOGGER.info("Stopping S3 Manager");
- return true;
- }
-
- @Override
- public void propagateTemplateToAllZones(final VMTemplateS3VO vmTemplateS3VO) {
-
- final long templateId = vmTemplateS3VO.getId();
-
- if (!isS3Enabled()) {
- if (LOGGER.isTraceEnabled()) {
- LOGGER.trace(format(
- "Attempt to propogate template id %1$s across all zones. However, S3 is not enabled.",
- templateId));
- }
- return;
-
- }
-
- final S3TO s3 = getS3TO();
-
- if (s3 == null) {
- LOGGER.warn(format(
- "Unable to propagate template id %1$s across all zones because S3 is enabled, but not configured.",
- templateId));
- return;
- }
-
- if (vmTemplateS3VO != null) {
- final List dataCenters = dataCenterDao.listAll();
- for (DataCenterVO dataCenter : dataCenters) {
- final VMTemplateZoneVO tmpltZoneVO = new VMTemplateZoneVO(
- dataCenter.getId(), templateId, now());
- vmTemplateZoneDao.persist(tmpltZoneVO);
- }
- }
-
- }
-
- @Override
- public Long chooseZoneForTemplateExtract(VMTemplateVO template) {
-
- final S3TO s3 = getS3TO();
-
- if (s3 == null) {
- return null;
- }
-
- final List templateHosts = vmTemplateHostDao
- .listByOnlyTemplateId(template.getId());
- if (templateHosts != null) {
- shuffle(templateHosts);
- for (VMTemplateHostVO vmTemplateHostVO : templateHosts) {
- final HostVO host = hostDao.findById(vmTemplateHostVO
- .getHostId());
- if (host != null) {
- return host.getDataCenterId();
- }
- throw new CloudRuntimeException(
- format("Unable to find secondary storage host for template id %1$s.",
- template.getId()));
- }
- }
-
- final List dataCenters = dataCenterDao.listAll();
- shuffle(dataCenters);
- return dataCenters.get(0).getId();
-
- }
-
- @Override
- public void uploadTemplateToS3FromSecondaryStorage(
- final VMTemplateVO template) {
-
- final Long templateId = template.getId();
-
- final List templateHostRefs = vmTemplateHostDao
- .listByTemplateId(templateId);
-
- if (templateHostRefs == null
- || (templateHostRefs != null && templateHostRefs.isEmpty())) {
- throw new CloudRuntimeException(
- format("Attempt to sync template id %1$s that is not attached to a host.",
- templateId));
- }
-
- final VMTemplateHostVO templateHostRef = templateHostRefs.get(0);
-
- if (!isS3Enabled()) {
- return;
- }
-
- final S3TO s3 = getS3TO();
- if (s3 == null) {
- LOGGER.warn("S3 Template Sync Failed: Attempt to sync templates with S3, but no S3 instance defined.");
- return;
- }
-
- final HostVO secondaryHost = this.hostDao.findById(templateHostRef
- .getHostId());
- if (secondaryHost == null) {
- throw new CloudRuntimeException(format(
- "Unable to find secondary storage host id %1$s.",
- templateHostRef.getHostId()));
- }
-
- final Long dataCenterId = secondaryHost.getDataCenterId();
- final Long accountId = template.getAccountId();
-
- try {
-
- executeWithNoWaitLock(determineLockId(accountId, templateId),
- new Callable() {
-
- @Override
- public Void call() throws Exception {
-
- final UploadTemplateToS3FromSecondaryStorageCommand cmd = new UploadTemplateToS3FromSecondaryStorageCommand(
- s3, secondaryHost.getStorageUrl(),
- dataCenterId, accountId, templateId);
-
- final Answer answer = agentManager.sendToSSVM(
- dataCenterId, cmd);
- if (answer == null || !answer.getResult()) {
-
- final String reason = answer != null ? answer
- .getDetails()
- : "S3 template sync failed due to an unspecified error.";
- throw new CloudRuntimeException(
- format("Failed to upload template id %1$s to S3 from secondary storage due to %2$s.",
- templateId, reason));
-
- }
-
- if (LOGGER.isDebugEnabled()) {
- LOGGER.debug(format(
- "Creating VMTemplateS3VO instance using template id %1s.",
- templateId));
- }
-
- final VMTemplateS3VO vmTemplateS3VO = new VMTemplateS3VO(
- s3.getId(), templateId, now(),
- templateHostRef.getSize(), templateHostRef
- .getPhysicalSize());
-
- if (LOGGER.isDebugEnabled()) {
- LOGGER.debug(format("Persisting %1$s",
- vmTemplateS3VO));
- }
-
- vmTemplateS3Dao.persist(vmTemplateS3VO);
- propagateTemplateToAllZones(vmTemplateS3VO);
-
- return null;
-
- }
-
- });
-
- } catch (Exception e) {
-
- final String errorMessage = format(
- "Failed to upload template id %1$s for zone id %2$s to S3.",
- templateId, dataCenterId);
- LOGGER.error(errorMessage, e);
-
- }
-
- }
-
-}
diff --git a/server/src/com/cloud/storage/snapshot/SnapshotManagerImpl.java b/server/src/com/cloud/storage/snapshot/SnapshotManagerImpl.java
index 1300f02855d..2b291d3538a 100755
--- a/server/src/com/cloud/storage/snapshot/SnapshotManagerImpl.java
+++ b/server/src/com/cloud/storage/snapshot/SnapshotManagerImpl.java
@@ -58,7 +58,6 @@ import com.cloud.configuration.Config;
import com.cloud.configuration.Resource.ResourceType;
import com.cloud.configuration.dao.ConfigurationDao;
import com.cloud.dc.ClusterVO;
-import com.cloud.dc.DataCenterVO;
import com.cloud.dc.dao.ClusterDao;
import com.cloud.dc.dao.DataCenterDao;
import com.cloud.domain.dao.DomainDao;
@@ -99,7 +98,6 @@ import com.cloud.storage.dao.SnapshotPolicyDao;
import com.cloud.storage.dao.SnapshotScheduleDao;
import com.cloud.storage.dao.VMTemplateDao;
import com.cloud.storage.dao.VolumeDao;
-import com.cloud.storage.s3.S3Manager;
import com.cloud.storage.secondary.SecondaryStorageVmManager;
import com.cloud.storage.template.TemplateConstants;
import com.cloud.tags.ResourceTagVO;
@@ -180,8 +178,6 @@ public class SnapshotManagerImpl extends ManagerBase implements SnapshotManager,
@Inject
private ResourceLimitService _resourceLimitMgr;
@Inject
- private S3Manager _s3Mgr;
- @Inject
private SecondaryStorageVmManager _ssvmMgr;
@Inject
private DomainManager _domainMgr;
@@ -615,7 +611,7 @@ public class SnapshotManagerImpl extends ManagerBase implements SnapshotManager,
}
if (snapshotTypeStr != null) {
- Type snapshotType = SnapshotVO.getSnapshotType((String) snapshotTypeStr);
+ Type snapshotType = SnapshotVO.getSnapshotType(snapshotTypeStr);
if (snapshotType == null) {
throw new InvalidParameterValueException("Unsupported snapshot type " + snapshotTypeStr);
}
@@ -625,7 +621,7 @@ public class SnapshotManagerImpl extends ManagerBase implements SnapshotManager,
sc.setParameters("snapshotTypeEQ", snapshotType.ordinal());
}
} else if (intervalTypeStr != null && volumeId != null) {
- Type type = SnapshotVO.getSnapshotType((String) intervalTypeStr);
+ Type type = SnapshotVO.getSnapshotType(intervalTypeStr);
if (type == null) {
throw new InvalidParameterValueException("Unsupported snapstho interval type " + intervalTypeStr);
}
@@ -963,9 +959,10 @@ public class SnapshotManagerImpl extends ManagerBase implements SnapshotManager,
|| userVm.getHypervisorType() == HypervisorType.KVM) {
List activeSnapshots = _snapshotDao.listByInstanceId(volume.getInstanceId(),
Snapshot.State.Creating, Snapshot.State.CreatedOnPrimary, Snapshot.State.BackingUp);
- if (activeSnapshots.size() > 1)
+ if (activeSnapshots.size() > 1) {
throw new CloudRuntimeException(
"There is other active snapshot tasks on the instance to which the volume is attached, please try again later");
+ }
}
List activeVMSnapshots = _vmSnapshotDao.listByInstanceId(userVm.getId(),
diff --git a/server/src/com/cloud/template/S3SyncTask.java b/server/src/com/cloud/template/S3SyncTask.java
deleted file mode 100644
index ed179dc8961..00000000000
--- a/server/src/com/cloud/template/S3SyncTask.java
+++ /dev/null
@@ -1,94 +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.template;
-
-import static java.lang.String.*;
-
-import java.util.List;
-
-import org.apache.log4j.Logger;
-
-import com.cloud.agent.api.to.S3TO;
-import com.cloud.storage.VMTemplateVO;
-import com.cloud.storage.dao.VMTemplateDao;
-import com.cloud.storage.s3.S3Manager;
-
-final class S3SyncTask implements Runnable {
-
- private static final Logger LOGGER = Logger.getLogger(S3SyncTask.class);
-
- private final VMTemplateDao vmTemplateDao;
- private final S3Manager s3Mgr;
-
- S3SyncTask(final VMTemplateDao vmTemplateDao, final S3Manager s3Mgr) {
-
- super();
-
- assert vmTemplateDao != null;
- assert s3Mgr != null;
-
- this.vmTemplateDao = vmTemplateDao;
- this.s3Mgr = s3Mgr;
-
- }
-
- @Override
- public void run() {
-
- try {
-
- final S3TO s3 = s3Mgr.getS3TO();
-
- if (s3 == null) {
- LOGGER.warn("S3 sync skipped because no S3 instance is configured.");
- return;
- }
-
- final List candidateTemplates = vmTemplateDao
- .findTemplatesToSyncToS3();
-
- if (candidateTemplates.isEmpty()) {
- LOGGER.debug("All templates are synced with S3.");
- return;
- }
-
- for (VMTemplateVO candidateTemplate : candidateTemplates) {
-
- if (LOGGER.isInfoEnabled()) {
- LOGGER.info(format(
- "Uploading template %1$s (id: %2$s) to S3.",
- candidateTemplate.getName(),
- candidateTemplate.getId()));
- }
-
- s3Mgr.uploadTemplateToS3FromSecondaryStorage(candidateTemplate);
-
- }
-
- LOGGER.debug("Completed S3 template sync task.");
-
- } catch (Exception e) {
- LOGGER.warn(
- "S3 Sync Task ignored exception, and will continue to execute.",
- e);
- }
-
- }
-
-}
diff --git a/services/secondary-storage/src/org/apache/cloudstack/storage/resource/NfsSecondaryStorageResource.java b/services/secondary-storage/src/org/apache/cloudstack/storage/resource/NfsSecondaryStorageResource.java
index b6e14b4e3f2..0d6a23a1e97 100755
--- a/services/secondary-storage/src/org/apache/cloudstack/storage/resource/NfsSecondaryStorageResource.java
+++ b/services/secondary-storage/src/org/apache/cloudstack/storage/resource/NfsSecondaryStorageResource.java
@@ -71,9 +71,6 @@ import com.cloud.agent.api.CheckHealthCommand;
import com.cloud.agent.api.Command;
import com.cloud.agent.api.ComputeChecksumCommand;
import com.cloud.agent.api.DeleteSnapshotsDirCommand;
-import com.cloud.agent.api.DownloadSnapshotFromS3Command;
-import com.cloud.agent.api.DownloadSnapshotFromSwiftCommand;
-import com.cloud.agent.api.DownloadTemplateFromSwiftToSecondaryStorageCommand;
import com.cloud.agent.api.GetStorageStatsAnswer;
import com.cloud.agent.api.GetStorageStatsCommand;
import com.cloud.agent.api.PingCommand;
@@ -88,7 +85,6 @@ import com.cloud.agent.api.SecStorageSetupCommand.Certificates;
import com.cloud.agent.api.SecStorageVMSetupCommand;
import com.cloud.agent.api.StartupCommand;
import com.cloud.agent.api.StartupSecondaryStorageCommand;
-import com.cloud.agent.api.UploadTemplateToSwiftFromSecondaryStorageCommand;
import com.cloud.agent.api.to.DataObjectType;
import com.cloud.agent.api.to.DataStoreTO;
import com.cloud.agent.api.to.DataTO;
@@ -198,16 +194,8 @@ public class NfsSecondaryStorageResource extends ServerResourceBase implements S
return execute((ListTemplateCommand) cmd);
} else if (cmd instanceof ListVolumeCommand) {
return execute((ListVolumeCommand) cmd);
- } else if (cmd instanceof DownloadSnapshotFromSwiftCommand) {
- return execute((DownloadSnapshotFromSwiftCommand) cmd);
- } else if (cmd instanceof DownloadSnapshotFromS3Command) {
- return execute((DownloadSnapshotFromS3Command) cmd);
} else if (cmd instanceof DeleteSnapshotsDirCommand) {
return execute((DeleteSnapshotsDirCommand) cmd);
- } else if (cmd instanceof DownloadTemplateFromSwiftToSecondaryStorageCommand) {
- return execute((DownloadTemplateFromSwiftToSecondaryStorageCommand) cmd);
- } else if (cmd instanceof UploadTemplateToSwiftFromSecondaryStorageCommand) {
- return execute((UploadTemplateToSwiftFromSecondaryStorageCommand) cmd);
} else if (cmd instanceof CopyCommand) {
return execute((CopyCommand) cmd);
} else if (cmd instanceof DeleteCommand) {
@@ -590,50 +578,6 @@ public class NfsSecondaryStorageResource extends ServerResourceBase implements S
return join(asList(getRootDir(storagePath), dataPath), File.separator);
}
- private Answer execute(DownloadTemplateFromSwiftToSecondaryStorageCommand cmd) {
- SwiftTO swift = cmd.getSwift();
- String secondaryStorageUrl = cmd.getSecondaryStorageUrl();
- Long accountId = cmd.getAccountId();
- Long templateId = cmd.getTemplateId();
- String path = cmd.getPath();
- String errMsg;
- String lDir = null;
- try {
- String parent = getRootDir(secondaryStorageUrl);
- lDir = parent + "/template/tmpl/" + accountId.toString() + "/" + templateId.toString();
- String result = createLocalDir(lDir);
- if (result != null) {
- errMsg = "downloadTemplateFromSwiftToSecondaryStorageCommand failed due to Create local directory failed";
- s_logger.warn(errMsg);
- throw new InternalErrorException(errMsg);
- }
- String lPath = lDir + "/" + path;
- result = swiftDownload(swift, "T-" + templateId.toString(), path, lPath);
- if (result != null) {
- errMsg = "failed to download template " + path + " from Swift to secondary storage " + lPath
- + " , err=" + result;
- s_logger.warn(errMsg);
- throw new CloudRuntimeException(errMsg);
- }
- path = "template.properties";
- lPath = lDir + "/" + path;
- result = swiftDownload(swift, "T-" + templateId.toString(), path, lPath);
- if (result != null) {
- errMsg = "failed to download template " + path + " from Swift to secondary storage " + lPath
- + " , err=" + result;
- s_logger.warn(errMsg);
- throw new CloudRuntimeException(errMsg);
- }
- return new Answer(cmd, true, "success");
- } catch (Exception e) {
- if (lDir != null) {
- deleteLocalDir(lDir);
- }
- errMsg = cmd + " Command failed due to " + e.toString();
- s_logger.warn(errMsg, e);
- return new Answer(cmd, false, errMsg);
- }
- }
protected File downloadFromUrlToNfs(String url, NfsTO nfs, String path, String name) {
HttpClient client = new DefaultHttpClient();
@@ -732,33 +676,7 @@ public class NfsSecondaryStorageResource extends ServerResourceBase implements S
}
- private Answer execute(UploadTemplateToSwiftFromSecondaryStorageCommand cmd) {
- SwiftTO swift = cmd.getSwift();
- String secondaryStorageUrl = cmd.getSecondaryStorageUrl();
- Long accountId = cmd.getAccountId();
- Long templateId = cmd.getTemplateId();
- try {
- String parent = getRootDir(secondaryStorageUrl);
- String lPath = parent + "/template/tmpl/" + accountId.toString() + "/" + templateId.toString();
- if (!_storage.isFile(lPath + "/template.properties")) {
- String errMsg = cmd + " Command failed due to template doesn't exist ";
- s_logger.debug(errMsg);
- return new Answer(cmd, false, errMsg);
- }
- String result = swiftUpload(swift, "T-" + templateId.toString(), lPath, "*");
- if (result != null) {
- String errMsg = "failed to upload template from secondary storage " + lPath + " to swift , err="
- + result;
- s_logger.debug(errMsg);
- return new Answer(cmd, false, errMsg);
- }
- return new Answer(cmd, true, "success");
- } catch (Exception e) {
- String errMsg = cmd + " Command failed due to " + e.toString();
- s_logger.warn(errMsg, e);
- return new Answer(cmd, false, errMsg);
- }
- }
+
private ImageFormat getTemplateFormat(String filePath) {
String ext = null;
@@ -1063,73 +981,6 @@ public class NfsSecondaryStorageResource extends ServerResourceBase implements S
}
}
- public Answer execute(final DownloadSnapshotFromS3Command cmd) {
-
- final S3TO s3 = cmd.getS3();
- final String secondaryStorageUrl = cmd.getSecondaryStorageUrl();
- final Long accountId = cmd.getAccountId();
- final Long volumeId = cmd.getVolumeId();
-
- try {
-
- executeWithNoWaitLock(determineSnapshotLockId(accountId, volumeId), new Callable() {
-
- @Override
- public Void call() throws Exception {
-
- final String directoryName = determineSnapshotLocalDirectory(secondaryStorageUrl, accountId,
- volumeId);
-
- String result = createLocalDir(directoryName);
- if (result != null) {
- throw new InternalErrorException(format(
- "Failed to create directory %1$s during S3 snapshot download.", directoryName));
- }
-
- final String snapshotFileName = determineSnapshotBackupFilename(cmd.getSnapshotUuid());
- final String key = determineSnapshotS3Key(accountId, volumeId, snapshotFileName);
- final File targetFile = S3Utils.getFile(s3, s3.getBucketName(), key,
- _storage.getFile(directoryName), new FileNamingStrategy() {
-
- @Override
- public String determineFileName(String key) {
- return snapshotFileName;
- }
-
- });
-
- if (cmd.getParent() != null) {
-
- final String parentPath = join(File.pathSeparator, directoryName,
- determineSnapshotBackupFilename(cmd.getParent()));
- result = setVhdParent(targetFile.getAbsolutePath(), parentPath);
- if (result != null) {
- throw new InternalErrorException(format(
- "Failed to set the parent for backup %1$s to %2$s due to %3$s.",
- targetFile.getAbsolutePath(), parentPath, result));
- }
-
- }
-
- return null;
-
- }
-
- });
-
- return new Answer(cmd, true, format(
- "Succesfully retrieved volume id %1$s for account id %2$s to %3$s from S3.", volumeId, accountId,
- secondaryStorageUrl));
-
- } catch (Exception e) {
- final String errMsg = format(
- "Failed to retrieve volume id %1$s for account id %2$s to %3$s from S3 due to exception %4$s",
- volumeId, accountId, secondaryStorageUrl, e.getMessage());
- s_logger.error(errMsg);
- return new Answer(cmd, false, errMsg);
- }
-
- }
private String determineSnapshotS3Directory(final Long accountId, final Long volumeId) {
return join(S3Utils.SEPARATOR, SNAPSHOT_ROOT_DIR, accountId, volumeId);
@@ -1147,54 +998,6 @@ public class NfsSecondaryStorageResource extends ServerResourceBase implements S
return join(File.pathSeparator, getRootDir(secondaryStorageUrl), SNAPSHOT_ROOT_DIR, accountId, volumeId);
}
- public Answer execute(DownloadSnapshotFromSwiftCommand cmd) {
- SwiftTO swift = cmd.getSwift();
- String secondaryStorageUrl = cmd.getSecondaryStorageUrl();
- Long accountId = cmd.getAccountId();
- Long volumeId = cmd.getVolumeId();
- String rFilename = cmd.getSnapshotUuid();
- String sParent = cmd.getParent();
- String errMsg = "";
- try {
- String parent = getRootDir(secondaryStorageUrl);
- String lPath = parent + "/snapshots/" + String.valueOf(accountId) + "/" + String.valueOf(volumeId);
-
- String result = createLocalDir(lPath);
- if (result != null) {
- errMsg = "downloadSnapshotFromSwiftCommand failed due to Create local path failed";
- s_logger.warn(errMsg);
- throw new InternalErrorException(errMsg);
- }
- String lFilename = rFilename;
- if (rFilename.startsWith("VHD-")) {
- lFilename = rFilename.replace("VHD-", "") + ".vhd";
- }
- String lFullPath = lPath + "/" + lFilename;
- result = swiftDownload(swift, "S-" + volumeId.toString(), rFilename, lFullPath);
- if (result != null) {
- return new Answer(cmd, false, result);
- }
- if (sParent != null) {
- if (sParent.startsWith("VHD-") || sParent.endsWith(".vhd")) {
- String pFilename = sParent;
- if (sParent.startsWith("VHD-")) {
- pFilename = pFilename.replace("VHD-", "") + ".vhd";
- }
- String pFullPath = lPath + "/" + pFilename;
- result = setVhdParent(lFullPath, pFullPath);
- if (result != null) {
- return new Answer(cmd, false, result);
- }
- }
- }
-
- return new Answer(cmd, true, "success");
- } catch (Exception e) {
- String msg = cmd + " Command failed due to " + e.toString();
- s_logger.warn(msg, e);
- throw new CloudRuntimeException(msg);
- }
- }
private Answer execute(ComputeChecksumCommand cmd) {