Updated Branches: refs/heads/javelin d70154609 -> f36b2f997
add more files Project: http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/commit/f36b2f99 Tree: http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/tree/f36b2f99 Diff: http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/diff/f36b2f99 Branch: refs/heads/javelin Commit: f36b2f99706e92db6aeda5cea7e87a895631fe53 Parents: d701546 Author: Edison Su <[email protected]> Authored: Mon Oct 29 17:45:54 2012 -0700 Committer: Edison Su <[email protected]> Committed: Mon Oct 29 17:46:15 2012 -0700 ---------------------------------------------------------------------- .../datastore/DefaultPrimaryDataStoreImpl.java | 18 ++-- .../storage/datastore/PrimaryDataStore.java | 1 - .../storage/datastore/PrimaryDataStoreInfo.java | 31 +++++++ .../datastore/PrimaryDataStoreInfoImpl.java | 68 ++++++++++++++ .../datastore/db/PrimaryDataStoreDaoImpl.java | 2 + .../datastore/db/PrimaryDataStoreProviderDao.java | 25 +++++ .../db/PrimaryDataStoreProviderDaoImpl.java | 28 ++++++ .../datastore/db/PrimaryDataStoreProviderVO.java | 23 +++++ .../DefaultPrimaryDataStoreLifeCycleImpl.java | 70 +++++++++++++++ .../lifecycle/PrimaryDataStoreLifeCycle.java | 31 +++++++ .../DefaultPrimaryDataStoreManagerImpl.java | 44 +++++++++ .../datastore/manager/PrimaryDataStoreManager.java | 27 ++++++ .../DefaultPrimaryDatastoreProviderImpl.java | 30 ++++++- .../provider/PrimaryDataStoreProvider.java | 4 +- .../cloudstack/storage/test/volumeServiceTest.java | 7 ++- .../com/cloud/utils/component/ComponentInject.java | 7 ++ 16 files changed, 401 insertions(+), 15 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/f36b2f99/platform/storage/src/org/apache/cloudstack/storage/datastore/DefaultPrimaryDataStoreImpl.java ---------------------------------------------------------------------- diff --git a/platform/storage/src/org/apache/cloudstack/storage/datastore/DefaultPrimaryDataStoreImpl.java b/platform/storage/src/org/apache/cloudstack/storage/datastore/DefaultPrimaryDataStoreImpl.java index 54f535b..ae2d620 100644 --- a/platform/storage/src/org/apache/cloudstack/storage/datastore/DefaultPrimaryDataStoreImpl.java +++ b/platform/storage/src/org/apache/cloudstack/storage/datastore/DefaultPrimaryDataStoreImpl.java @@ -4,6 +4,7 @@ import java.util.List; import javax.inject.Inject; +import org.apache.cloudstack.storage.datastore.db.DataStoreVO; import org.apache.cloudstack.storage.datastore.driver.PrimaryDataStoreDriver; import org.apache.cloudstack.storage.volume.Volume; import org.apache.cloudstack.storage.volume.db.VolumeDao; @@ -12,12 +13,14 @@ import org.apache.cloudstack.storage.volume.disktype.VolumeDiskType; public class DefaultPrimaryDataStoreImpl implements PrimaryDataStore { protected PrimaryDataStoreDriver driver; - protected List<VolumeDiskType> supportedDiskTypes; + protected DataStoreVO pdsv; + protected PrimaryDataStoreInfo pdsInfo; @Inject - VolumeDao volumeDao; - public DefaultPrimaryDataStoreImpl(PrimaryDataStoreDriver driver, List<VolumeDiskType> types) { + public VolumeDao volumeDao; + public DefaultPrimaryDataStoreImpl(PrimaryDataStoreDriver driver, DataStoreVO pdsv, PrimaryDataStoreInfo pdsInfo) { this.driver = driver; - this.supportedDiskTypes = types; + this.pdsv = pdsv; + this.pdsInfo = pdsInfo; } @Override @@ -46,7 +49,7 @@ public class DefaultPrimaryDataStoreImpl implements PrimaryDataStore { return null; } - if (!this.getSupportedDiskTypes().contains(diskType)) { + if (!pdsInfo.isVolumeDiskTypeSupported(diskType)) { return null; } @@ -55,9 +58,4 @@ public class DefaultPrimaryDataStoreImpl implements PrimaryDataStore { vol.update(); return vol; } - - @Override - public List<VolumeDiskType> getSupportedDiskTypes() { - return this.supportedDiskTypes; - } } http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/f36b2f99/platform/storage/src/org/apache/cloudstack/storage/datastore/PrimaryDataStore.java ---------------------------------------------------------------------- diff --git a/platform/storage/src/org/apache/cloudstack/storage/datastore/PrimaryDataStore.java b/platform/storage/src/org/apache/cloudstack/storage/datastore/PrimaryDataStore.java index e7ff49a..3e06156 100644 --- a/platform/storage/src/org/apache/cloudstack/storage/datastore/PrimaryDataStore.java +++ b/platform/storage/src/org/apache/cloudstack/storage/datastore/PrimaryDataStore.java @@ -28,5 +28,4 @@ public interface PrimaryDataStore { List<Volume> getVolumes(); boolean deleteVolume(long id); Volume createVolume(long id, VolumeDiskType diskType); - List<VolumeDiskType> getSupportedDiskTypes(); } http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/f36b2f99/platform/storage/src/org/apache/cloudstack/storage/datastore/PrimaryDataStoreInfo.java ---------------------------------------------------------------------- diff --git a/platform/storage/src/org/apache/cloudstack/storage/datastore/PrimaryDataStoreInfo.java b/platform/storage/src/org/apache/cloudstack/storage/datastore/PrimaryDataStoreInfo.java new file mode 100644 index 0000000..d30a5c8 --- /dev/null +++ b/platform/storage/src/org/apache/cloudstack/storage/datastore/PrimaryDataStoreInfo.java @@ -0,0 +1,31 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +package org.apache.cloudstack.storage.datastore; + +import org.apache.cloudstack.storage.volume.disktype.VolumeDiskType; + +import com.cloud.hypervisor.Hypervisor.HypervisorType; + +public interface PrimaryDataStoreInfo { + public boolean isHypervisorSupported(HypervisorType hypervisor); + public boolean isLocalStorageSupported(); + public boolean isVolumeDiskTypeSupported(VolumeDiskType diskType); + public long getCapacity(); + public long getAvailableCapacity(); +} http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/f36b2f99/platform/storage/src/org/apache/cloudstack/storage/datastore/PrimaryDataStoreInfoImpl.java ---------------------------------------------------------------------- diff --git a/platform/storage/src/org/apache/cloudstack/storage/datastore/PrimaryDataStoreInfoImpl.java b/platform/storage/src/org/apache/cloudstack/storage/datastore/PrimaryDataStoreInfoImpl.java new file mode 100644 index 0000000..c453d33 --- /dev/null +++ b/platform/storage/src/org/apache/cloudstack/storage/datastore/PrimaryDataStoreInfoImpl.java @@ -0,0 +1,68 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +package org.apache.cloudstack.storage.datastore; + +import java.util.List; + +import org.apache.cloudstack.storage.datastore.db.DataStoreVO; +import org.apache.cloudstack.storage.volume.disktype.VolumeDiskType; + +import com.cloud.hypervisor.Hypervisor.HypervisorType; + +public class PrimaryDataStoreInfoImpl implements PrimaryDataStoreInfo { + protected List<HypervisorType> supportedHypervs; + protected List<VolumeDiskType> supportedDiskTypes; + protected long caapcity; + protected long avail; + protected boolean localStorage; + + public PrimaryDataStoreInfoImpl(List<HypervisorType> hypers, List<VolumeDiskType> diskTypes, + long capacity, long avail, boolean localStorage) { + this.avail = avail; + this.caapcity = capacity; + this.localStorage = localStorage; + this.supportedDiskTypes = diskTypes; + this.supportedHypervs = hypers; + } + + @Override + public boolean isHypervisorSupported(HypervisorType hypervisor) { + return this.supportedHypervs.contains(hypervisor) ? true : false; + } + + @Override + public boolean isLocalStorageSupported() { + return this.localStorage; + } + + @Override + public boolean isVolumeDiskTypeSupported(VolumeDiskType diskType) { + return this.supportedDiskTypes.contains(diskType) ? true : false; + } + + @Override + public long getCapacity() { + return this.caapcity; + } + + @Override + public long getAvailableCapacity() { + return this.avail; + } +} http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/f36b2f99/platform/storage/src/org/apache/cloudstack/storage/datastore/db/PrimaryDataStoreDaoImpl.java ---------------------------------------------------------------------- diff --git a/platform/storage/src/org/apache/cloudstack/storage/datastore/db/PrimaryDataStoreDaoImpl.java b/platform/storage/src/org/apache/cloudstack/storage/datastore/db/PrimaryDataStoreDaoImpl.java index 28744ab..4429499 100644 --- a/platform/storage/src/org/apache/cloudstack/storage/datastore/db/PrimaryDataStoreDaoImpl.java +++ b/platform/storage/src/org/apache/cloudstack/storage/datastore/db/PrimaryDataStoreDaoImpl.java @@ -29,6 +29,7 @@ import java.util.Map; import javax.naming.ConfigurationException; import org.apache.cloudstack.storage.datastore.DataStoreStatus; +import org.springframework.stereotype.Component; import com.cloud.storage.StoragePoolDetailVO; import com.cloud.storage.dao.StoragePoolDetailsDao; @@ -44,6 +45,7 @@ import com.cloud.utils.db.SearchCriteria.Func; import com.cloud.utils.db.SearchCriteria.Op; import com.cloud.utils.exception.CloudRuntimeException; +@Component public class PrimaryDataStoreDaoImpl extends GenericDaoBase<DataStoreVO, Long> implements PrimaryDataStoreDao { protected final SearchBuilder<DataStoreVO> AllFieldSearch; protected final SearchBuilder<DataStoreVO> DcPodSearch; http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/f36b2f99/platform/storage/src/org/apache/cloudstack/storage/datastore/db/PrimaryDataStoreProviderDao.java ---------------------------------------------------------------------- diff --git a/platform/storage/src/org/apache/cloudstack/storage/datastore/db/PrimaryDataStoreProviderDao.java b/platform/storage/src/org/apache/cloudstack/storage/datastore/db/PrimaryDataStoreProviderDao.java new file mode 100644 index 0000000..cebcacf --- /dev/null +++ b/platform/storage/src/org/apache/cloudstack/storage/datastore/db/PrimaryDataStoreProviderDao.java @@ -0,0 +1,25 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +package org.apache.cloudstack.storage.datastore.db; + +import com.cloud.utils.db.GenericDao; + +public interface PrimaryDataStoreProviderDao extends GenericDao<PrimaryDataStoreProviderVO, Long> { + +} http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/f36b2f99/platform/storage/src/org/apache/cloudstack/storage/datastore/db/PrimaryDataStoreProviderDaoImpl.java ---------------------------------------------------------------------- diff --git a/platform/storage/src/org/apache/cloudstack/storage/datastore/db/PrimaryDataStoreProviderDaoImpl.java b/platform/storage/src/org/apache/cloudstack/storage/datastore/db/PrimaryDataStoreProviderDaoImpl.java new file mode 100644 index 0000000..bd0571d --- /dev/null +++ b/platform/storage/src/org/apache/cloudstack/storage/datastore/db/PrimaryDataStoreProviderDaoImpl.java @@ -0,0 +1,28 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +package org.apache.cloudstack.storage.datastore.db; + +import org.springframework.stereotype.Component; + +import com.cloud.utils.db.GenericDaoBase; + +@Component +class PrimaryDataStoreProviderDaoImpl extends GenericDaoBase<PrimaryDataStoreProviderVO, Long> implements PrimaryDataStoreProviderDao { + +} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/f36b2f99/platform/storage/src/org/apache/cloudstack/storage/datastore/db/PrimaryDataStoreProviderVO.java ---------------------------------------------------------------------- diff --git a/platform/storage/src/org/apache/cloudstack/storage/datastore/db/PrimaryDataStoreProviderVO.java b/platform/storage/src/org/apache/cloudstack/storage/datastore/db/PrimaryDataStoreProviderVO.java new file mode 100644 index 0000000..0ec6bf0 --- /dev/null +++ b/platform/storage/src/org/apache/cloudstack/storage/datastore/db/PrimaryDataStoreProviderVO.java @@ -0,0 +1,23 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +package org.apache.cloudstack.storage.datastore.db; + +public class PrimaryDataStoreProviderVO { + +} http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/f36b2f99/platform/storage/src/org/apache/cloudstack/storage/datastore/lifecycle/DefaultPrimaryDataStoreLifeCycleImpl.java ---------------------------------------------------------------------- diff --git a/platform/storage/src/org/apache/cloudstack/storage/datastore/lifecycle/DefaultPrimaryDataStoreLifeCycleImpl.java b/platform/storage/src/org/apache/cloudstack/storage/datastore/lifecycle/DefaultPrimaryDataStoreLifeCycleImpl.java new file mode 100644 index 0000000..fe4562c --- /dev/null +++ b/platform/storage/src/org/apache/cloudstack/storage/datastore/lifecycle/DefaultPrimaryDataStoreLifeCycleImpl.java @@ -0,0 +1,70 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +package org.apache.cloudstack.storage.datastore.lifecycle; + +import java.util.Map; + +import org.springframework.stereotype.Component; + +@Component +public class DefaultPrimaryDataStoreLifeCycleImpl implements PrimaryDataStoreLifeCycle { + + @Override + public boolean registerDataStore(Map<String, String> dsInfos) { + // TODO Auto-generated method stub + return false; + } + + @Override + public boolean attach(long scope) { + // TODO Auto-generated method stub + return false; + } + + @Override + public boolean dettach(long dataStoreId) { + // TODO Auto-generated method stub + return false; + } + + @Override + public boolean unmanaged(long dataStoreId) { + // TODO Auto-generated method stub + return false; + } + + @Override + public boolean maintain(long dataStoreId) { + // TODO Auto-generated method stub + return false; + } + + @Override + public boolean cancelMaintain(long dataStoreId) { + // TODO Auto-generated method stub + return false; + } + + @Override + public boolean deleteDataStore(long dataStoreId) { + // TODO Auto-generated method stub + return false; + } + +} http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/f36b2f99/platform/storage/src/org/apache/cloudstack/storage/datastore/lifecycle/PrimaryDataStoreLifeCycle.java ---------------------------------------------------------------------- diff --git a/platform/storage/src/org/apache/cloudstack/storage/datastore/lifecycle/PrimaryDataStoreLifeCycle.java b/platform/storage/src/org/apache/cloudstack/storage/datastore/lifecycle/PrimaryDataStoreLifeCycle.java new file mode 100644 index 0000000..2e41a62 --- /dev/null +++ b/platform/storage/src/org/apache/cloudstack/storage/datastore/lifecycle/PrimaryDataStoreLifeCycle.java @@ -0,0 +1,31 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +package org.apache.cloudstack.storage.datastore.lifecycle; + +import java.util.Map; + +public interface PrimaryDataStoreLifeCycle { + public boolean registerDataStore(Map<String, String> dsInfos); + public boolean attach(long scope); + public boolean dettach(long dataStoreId); + public boolean unmanaged(long dataStoreId); + public boolean maintain(long dataStoreId); + public boolean cancelMaintain(long dataStoreId); + public boolean deleteDataStore(long dataStoreId); +} http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/f36b2f99/platform/storage/src/org/apache/cloudstack/storage/datastore/manager/DefaultPrimaryDataStoreManagerImpl.java ---------------------------------------------------------------------- diff --git a/platform/storage/src/org/apache/cloudstack/storage/datastore/manager/DefaultPrimaryDataStoreManagerImpl.java b/platform/storage/src/org/apache/cloudstack/storage/datastore/manager/DefaultPrimaryDataStoreManagerImpl.java new file mode 100644 index 0000000..dfa4663 --- /dev/null +++ b/platform/storage/src/org/apache/cloudstack/storage/datastore/manager/DefaultPrimaryDataStoreManagerImpl.java @@ -0,0 +1,44 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +package org.apache.cloudstack.storage.datastore.manager; + +import javax.inject.Inject; + +import org.apache.cloudstack.storage.datastore.PrimaryDataStore; +import org.apache.cloudstack.storage.datastore.db.PrimaryDataStoreProviderDao; +import org.apache.cloudstack.storage.datastore.lifecycle.PrimaryDataStoreLifeCycle; +import org.springframework.stereotype.Component; + +@Component +public class DefaultPrimaryDataStoreManagerImpl implements PrimaryDataStoreManager { + @Inject + PrimaryDataStoreProviderDao dataStoreProviderDao; + @Override + public PrimaryDataStore getPrimaryDataStore(long dataStoreId) { + // TODO Auto-generated method stub + return null; + } + + @Override + public PrimaryDataStoreLifeCycle getPrimaryDataStoreLifeCycle(long dataStoreId) { + // TODO Auto-generated method stub + return null; + } + +} http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/f36b2f99/platform/storage/src/org/apache/cloudstack/storage/datastore/manager/PrimaryDataStoreManager.java ---------------------------------------------------------------------- diff --git a/platform/storage/src/org/apache/cloudstack/storage/datastore/manager/PrimaryDataStoreManager.java b/platform/storage/src/org/apache/cloudstack/storage/datastore/manager/PrimaryDataStoreManager.java new file mode 100644 index 0000000..b6ac34d --- /dev/null +++ b/platform/storage/src/org/apache/cloudstack/storage/datastore/manager/PrimaryDataStoreManager.java @@ -0,0 +1,27 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +package org.apache.cloudstack.storage.datastore.manager; + +import org.apache.cloudstack.storage.datastore.PrimaryDataStore; +import org.apache.cloudstack.storage.datastore.lifecycle.PrimaryDataStoreLifeCycle; + +public interface PrimaryDataStoreManager { + public PrimaryDataStore getPrimaryDataStore(long dataStoreId); + public PrimaryDataStoreLifeCycle getPrimaryDataStoreLifeCycle(long dataStoreId); +} http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/f36b2f99/platform/storage/src/org/apache/cloudstack/storage/datastore/provider/DefaultPrimaryDatastoreProviderImpl.java ---------------------------------------------------------------------- diff --git a/platform/storage/src/org/apache/cloudstack/storage/datastore/provider/DefaultPrimaryDatastoreProviderImpl.java b/platform/storage/src/org/apache/cloudstack/storage/datastore/provider/DefaultPrimaryDatastoreProviderImpl.java index dd7e061..7ca9000 100644 --- a/platform/storage/src/org/apache/cloudstack/storage/datastore/provider/DefaultPrimaryDatastoreProviderImpl.java +++ b/platform/storage/src/org/apache/cloudstack/storage/datastore/provider/DefaultPrimaryDatastoreProviderImpl.java @@ -2,15 +2,41 @@ package org.apache.cloudstack.storage.datastore.provider; import javax.inject.Inject; +import org.apache.cloudstack.storage.datastore.DefaultPrimaryDataStoreImpl; import org.apache.cloudstack.storage.datastore.PrimaryDataStore; +import org.apache.cloudstack.storage.datastore.PrimaryDataStoreInfo; +import org.apache.cloudstack.storage.datastore.db.DataStoreVO; +import org.apache.cloudstack.storage.datastore.db.PrimaryDataStoreDao; +import org.apache.cloudstack.storage.datastore.driver.DefaultPrimaryDataStoreDriverImpl; import org.apache.cloudstack.storage.datastore.driver.PrimaryDataStoreDriver; +import org.springframework.stereotype.Component; +import com.cloud.utils.component.ComponentInject; + +@Component public class DefaultPrimaryDatastoreProviderImpl implements PrimaryDataStoreProvider { + protected PrimaryDataStoreDriver driver; @Inject - public PrimaryDataStoreDriver driver; + public PrimaryDataStoreDao dataStoreDao; + + public DefaultPrimaryDatastoreProviderImpl() { + this.driver = new DefaultPrimaryDataStoreDriverImpl(); + } + @Override + public PrimaryDataStore getDataStore(long dataStoreId) { + DataStoreVO dsv = dataStoreDao.findById(dataStoreId); + if (dsv == null) { + return null; + } + + PrimaryDataStore pds = new DefaultPrimaryDataStoreImpl(driver, dsv, null); + pds = ComponentInject.inject(pds); + return pds; + } + @Override - public PrimaryDataStore getDataStore(String dataStoreId) { + public PrimaryDataStoreInfo getDataStoreInfo(long dataStoreId) { // TODO Auto-generated method stub return null; } http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/f36b2f99/platform/storage/src/org/apache/cloudstack/storage/datastore/provider/PrimaryDataStoreProvider.java ---------------------------------------------------------------------- diff --git a/platform/storage/src/org/apache/cloudstack/storage/datastore/provider/PrimaryDataStoreProvider.java b/platform/storage/src/org/apache/cloudstack/storage/datastore/provider/PrimaryDataStoreProvider.java index 8a8d101..a346d32 100644 --- a/platform/storage/src/org/apache/cloudstack/storage/datastore/provider/PrimaryDataStoreProvider.java +++ b/platform/storage/src/org/apache/cloudstack/storage/datastore/provider/PrimaryDataStoreProvider.java @@ -1,7 +1,9 @@ package org.apache.cloudstack.storage.datastore.provider; import org.apache.cloudstack.storage.datastore.PrimaryDataStore; +import org.apache.cloudstack.storage.datastore.PrimaryDataStoreInfo; public interface PrimaryDataStoreProvider { - public PrimaryDataStore getDataStore(String dataStoreId); + public PrimaryDataStore getDataStore(long dataStoreId); + public PrimaryDataStoreInfo getDataStoreInfo(long dataStoreId); } http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/f36b2f99/platform/storage/test/org/apache/cloudstack/storage/test/volumeServiceTest.java ---------------------------------------------------------------------- diff --git a/platform/storage/test/org/apache/cloudstack/storage/test/volumeServiceTest.java b/platform/storage/test/org/apache/cloudstack/storage/test/volumeServiceTest.java index b8229e4..ca3a366 100644 --- a/platform/storage/test/org/apache/cloudstack/storage/test/volumeServiceTest.java +++ b/platform/storage/test/org/apache/cloudstack/storage/test/volumeServiceTest.java @@ -25,6 +25,7 @@ import java.util.LinkedList; import javax.inject.Inject; +import org.apache.cloudstack.storage.datastore.DefaultPrimaryDataStoreImpl; import org.apache.cloudstack.storage.datastore.provider.DefaultPrimaryDatastoreProviderImpl; import org.apache.cloudstack.storage.datastore.provider.PrimaryDataStoreProvider; import org.apache.cloudstack.storage.volume.VolumeMotionService; @@ -102,6 +103,10 @@ public class volumeServiceTest { @Test public void testStaticBean() { DefaultPrimaryDatastoreProviderImpl provider = ComponentInject.inject(DefaultPrimaryDatastoreProviderImpl.class); - assertNotNull(provider.driver); + assertNotNull(provider.dataStoreDao); + + DefaultPrimaryDataStoreImpl dpdsi = new DefaultPrimaryDataStoreImpl(null, null, null); + ComponentInject.inject(dpdsi); + assertNotNull(dpdsi.volumeDao); } } http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/f36b2f99/utils/src/com/cloud/utils/component/ComponentInject.java ---------------------------------------------------------------------- diff --git a/utils/src/com/cloud/utils/component/ComponentInject.java b/utils/src/com/cloud/utils/component/ComponentInject.java index 4578ea1..c88cd3f 100644 --- a/utils/src/com/cloud/utils/component/ComponentInject.java +++ b/utils/src/com/cloud/utils/component/ComponentInject.java @@ -9,6 +9,7 @@ import org.springframework.stereotype.Component; public class ComponentInject { private static AutowireCapableBeanFactory beanFactory; + @SuppressWarnings("unused") @Inject private void setbeanFactory(AutowireCapableBeanFactory bf) { ComponentInject.beanFactory = bf; @@ -17,4 +18,10 @@ public class ComponentInject { public static <T> T inject(Class<T> clazz) { return beanFactory.createBean(clazz); } + + public static <T> T inject(T obj) { + beanFactory.autowireBean(obj); + beanFactory.initializeBean(obj, null); + return obj; + } }
