Updated Branches:
  refs/heads/javelin fff6fde82 -> 0debd8a39

add more classes


Project: http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/repo
Commit: 
http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/commit/0debd8a3
Tree: http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/tree/0debd8a3
Diff: http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/diff/0debd8a3

Branch: refs/heads/javelin
Commit: 0debd8a393b6173dfe88cb80cd672e723072ee73
Parents: fff6fde
Author: Edison Su <[email protected]>
Authored: Mon Oct 29 09:32:28 2012 -0700
Committer: Edison Su <[email protected]>
Committed: Mon Oct 29 09:32:28 2012 -0700

----------------------------------------------------------------------
 .../org/apache/cloudstack/storage/EndPoint.java    |    5 +
 .../datastore/DefaultPrimaryDataStoreImpl.java     |   63 +++++++++++++++
 .../storage/datastore/PrimaryDataStore.java        |    4 +
 .../driver/DefaultPrimaryDataStoreDriverImpl.java  |   35 ++++++++
 .../datastore/driver/PrimaryDataStoreDriver.java   |   11 +++
 .../DefaultPrimaryDatastoreProviderImpl.java       |   18 ++++
 .../provider/PrimaryDataStoreProvider.java         |    7 ++
 .../provider/PrimaryDataStoreProviderManager.java  |    5 +
 .../apache/cloudstack/storage/volume/Volume.java   |   19 ++++-
 .../storage/volume/disktype/VolumeDiskType.java    |    1 -
 .../volume/disktype/VolumeDiskTypeBase.java        |   15 +++-
 .../cloudstack/storage/test/storageContext.xml     |    1 +
 .../cloudstack/storage/test/volumeServiceTest.java |   17 ++++
 .../com/cloud/utils/component/ComponentInject.java |   20 +++++
 14 files changed, 215 insertions(+), 6 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/0debd8a3/platform/storage/src/org/apache/cloudstack/storage/EndPoint.java
----------------------------------------------------------------------
diff --git a/platform/storage/src/org/apache/cloudstack/storage/EndPoint.java 
b/platform/storage/src/org/apache/cloudstack/storage/EndPoint.java
new file mode 100644
index 0000000..8cb01a1
--- /dev/null
+++ b/platform/storage/src/org/apache/cloudstack/storage/EndPoint.java
@@ -0,0 +1,5 @@
+package org.apache.cloudstack.storage;
+
+public interface EndPoint {
+       public String getEndPoint();
+}

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/0debd8a3/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
new file mode 100644
index 0000000..54f535b
--- /dev/null
+++ 
b/platform/storage/src/org/apache/cloudstack/storage/datastore/DefaultPrimaryDataStoreImpl.java
@@ -0,0 +1,63 @@
+package org.apache.cloudstack.storage.datastore;
+
+import java.util.List;
+
+import javax.inject.Inject;
+
+import org.apache.cloudstack.storage.datastore.driver.PrimaryDataStoreDriver;
+import org.apache.cloudstack.storage.volume.Volume;
+import org.apache.cloudstack.storage.volume.db.VolumeDao;
+import org.apache.cloudstack.storage.volume.db.VolumeVO;
+import org.apache.cloudstack.storage.volume.disktype.VolumeDiskType;
+
+public class DefaultPrimaryDataStoreImpl implements PrimaryDataStore {
+       protected PrimaryDataStoreDriver driver;
+       protected List<VolumeDiskType> supportedDiskTypes;
+       @Inject
+       VolumeDao volumeDao;
+       public DefaultPrimaryDataStoreImpl(PrimaryDataStoreDriver driver, 
List<VolumeDiskType> types) {
+               this.driver = driver;
+               this.supportedDiskTypes = types;
+       }
+       
+       @Override
+       public Volume getVolume(long id) {
+               VolumeVO volumeVO = volumeDao.findById(id);
+               Volume vol = new Volume(this, volumeVO);
+               return vol;
+       }
+
+       @Override
+       public List<Volume> getVolumes() {
+               // TODO Auto-generated method stub
+               return null;
+       }
+
+       @Override
+       public boolean deleteVolume(long id) {
+               // TODO Auto-generated method stub
+               return false;
+       }
+
+       @Override
+       public Volume createVolume(long id, VolumeDiskType diskType) {
+               Volume vol = this.getVolume(id);
+               if (vol == null) {
+                       return null;
+               }
+               
+               if (!this.getSupportedDiskTypes().contains(diskType)) {
+                       return null;
+               }
+               
+               vol.setVolumeDiskType(diskType);
+               this.driver.createVolume(vol);
+               vol.update();
+               return vol;
+       }
+
+       @Override
+       public List<VolumeDiskType> getSupportedDiskTypes() {
+               return this.supportedDiskTypes;
+       }
+}

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/0debd8a3/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 6fc4ed0..e7ff49a 100644
--- 
a/platform/storage/src/org/apache/cloudstack/storage/datastore/PrimaryDataStore.java
+++ 
b/platform/storage/src/org/apache/cloudstack/storage/datastore/PrimaryDataStore.java
@@ -18,11 +18,15 @@
  */
 package org.apache.cloudstack.storage.datastore;
 
+import java.util.List;
+
 import org.apache.cloudstack.storage.volume.Volume;
 import org.apache.cloudstack.storage.volume.disktype.VolumeDiskType;
 
 public interface PrimaryDataStore {
        Volume getVolume(long id);
+       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/0debd8a3/platform/storage/src/org/apache/cloudstack/storage/datastore/driver/DefaultPrimaryDataStoreDriverImpl.java
----------------------------------------------------------------------
diff --git 
a/platform/storage/src/org/apache/cloudstack/storage/datastore/driver/DefaultPrimaryDataStoreDriverImpl.java
 
b/platform/storage/src/org/apache/cloudstack/storage/datastore/driver/DefaultPrimaryDataStoreDriverImpl.java
new file mode 100644
index 0000000..d1e6976
--- /dev/null
+++ 
b/platform/storage/src/org/apache/cloudstack/storage/datastore/driver/DefaultPrimaryDataStoreDriverImpl.java
@@ -0,0 +1,35 @@
+package org.apache.cloudstack.storage.datastore.driver;
+
+import org.apache.cloudstack.storage.EndPoint;
+import org.apache.cloudstack.storage.volume.Volume;
+import org.springframework.stereotype.Component;
+
+@Component
+public class DefaultPrimaryDataStoreDriverImpl implements
+               PrimaryDataStoreDriver {
+
+       @Override
+       public boolean createVolume(Volume vol) {
+               // TODO Auto-generated method stub
+               return false;
+       }
+
+       @Override
+       public boolean deleteVolume(Volume vo) {
+               // TODO Auto-generated method stub
+               return false;
+       }
+
+       @Override
+       public String grantAccess(Volume vol, EndPoint ep) {
+               // TODO Auto-generated method stub
+               return null;
+       }
+
+       @Override
+       public boolean revokeAccess(Volume vol, EndPoint ep) {
+               // TODO Auto-generated method stub
+               return false;
+       }
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/0debd8a3/platform/storage/src/org/apache/cloudstack/storage/datastore/driver/PrimaryDataStoreDriver.java
----------------------------------------------------------------------
diff --git 
a/platform/storage/src/org/apache/cloudstack/storage/datastore/driver/PrimaryDataStoreDriver.java
 
b/platform/storage/src/org/apache/cloudstack/storage/datastore/driver/PrimaryDataStoreDriver.java
new file mode 100644
index 0000000..a35118a
--- /dev/null
+++ 
b/platform/storage/src/org/apache/cloudstack/storage/datastore/driver/PrimaryDataStoreDriver.java
@@ -0,0 +1,11 @@
+package org.apache.cloudstack.storage.datastore.driver;
+
+import org.apache.cloudstack.storage.EndPoint;
+import org.apache.cloudstack.storage.volume.Volume;
+
+public interface PrimaryDataStoreDriver {
+       boolean createVolume(Volume vol);
+       boolean deleteVolume(Volume vo);
+       String grantAccess(Volume vol,  EndPoint ep);
+       boolean revokeAccess(Volume vol, EndPoint ep);
+}

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/0debd8a3/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
new file mode 100644
index 0000000..dd7e061
--- /dev/null
+++ 
b/platform/storage/src/org/apache/cloudstack/storage/datastore/provider/DefaultPrimaryDatastoreProviderImpl.java
@@ -0,0 +1,18 @@
+package org.apache.cloudstack.storage.datastore.provider;
+
+import javax.inject.Inject;
+
+import org.apache.cloudstack.storage.datastore.PrimaryDataStore;
+import org.apache.cloudstack.storage.datastore.driver.PrimaryDataStoreDriver;
+
+public class DefaultPrimaryDatastoreProviderImpl implements
+               PrimaryDataStoreProvider {
+       @Inject
+       public PrimaryDataStoreDriver driver;
+       @Override
+       public PrimaryDataStore getDataStore(String dataStoreId) {
+               // TODO Auto-generated method stub
+               return null;
+       }
+       
+}

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/0debd8a3/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
new file mode 100644
index 0000000..8a8d101
--- /dev/null
+++ 
b/platform/storage/src/org/apache/cloudstack/storage/datastore/provider/PrimaryDataStoreProvider.java
@@ -0,0 +1,7 @@
+package org.apache.cloudstack.storage.datastore.provider;
+
+import org.apache.cloudstack.storage.datastore.PrimaryDataStore;
+
+public interface PrimaryDataStoreProvider {
+       public PrimaryDataStore getDataStore(String dataStoreId);
+}

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/0debd8a3/platform/storage/src/org/apache/cloudstack/storage/datastore/provider/PrimaryDataStoreProviderManager.java
----------------------------------------------------------------------
diff --git 
a/platform/storage/src/org/apache/cloudstack/storage/datastore/provider/PrimaryDataStoreProviderManager.java
 
b/platform/storage/src/org/apache/cloudstack/storage/datastore/provider/PrimaryDataStoreProviderManager.java
new file mode 100644
index 0000000..a01c96c
--- /dev/null
+++ 
b/platform/storage/src/org/apache/cloudstack/storage/datastore/provider/PrimaryDataStoreProviderManager.java
@@ -0,0 +1,5 @@
+package org.apache.cloudstack.storage.datastore.provider;
+
+public interface PrimaryDataStoreProviderManager {
+       public PrimaryDataStoreProvider getDataStoreProvider(String 
providerUuid);
+}

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/0debd8a3/platform/storage/src/org/apache/cloudstack/storage/volume/Volume.java
----------------------------------------------------------------------
diff --git 
a/platform/storage/src/org/apache/cloudstack/storage/volume/Volume.java 
b/platform/storage/src/org/apache/cloudstack/storage/volume/Volume.java
index 6780f60..fb1c37d 100644
--- a/platform/storage/src/org/apache/cloudstack/storage/volume/Volume.java
+++ b/platform/storage/src/org/apache/cloudstack/storage/volume/Volume.java
@@ -3,6 +3,8 @@ package org.apache.cloudstack.storage.volume;
 import javax.inject.Inject;
 
 import org.apache.cloudstack.platform.subsystem.api.storage.DataStore;
+import org.apache.cloudstack.storage.datastore.PrimaryDataStore;
+import org.apache.cloudstack.storage.volume.db.VolumeDao;
 import org.apache.cloudstack.storage.volume.db.VolumeVO;
 import org.apache.cloudstack.storage.volume.disktype.VolumeDiskType;
 import org.apache.cloudstack.storage.volume.disktype.VolumeDiskTypeHelper;
@@ -13,13 +15,15 @@ import com.cloud.utils.fsm.StateObject;
 
 public class Volume implements StateObject<VolumeState> {
        protected VolumeVO volumeVO;
-       protected DataStore dataStore;
+       protected PrimaryDataStore dataStore;
        @Inject
        VolumeDiskTypeHelper diskTypeHelper;
        @Inject
        VolumeTypeHelper volumeTypeHelper;
+       @Inject
+       VolumeDao volumeDao;
        
-       public Volume(DataStore dataStore, VolumeVO volumeVO) {
+       public Volume(PrimaryDataStore dataStore, VolumeVO volumeVO) {
                this.volumeVO = volumeVO;
                this.dataStore = dataStore;
        }
@@ -29,7 +33,7 @@ public class Volume implements StateObject<VolumeState> {
                return volumeVO.getState();
        }
 
-       public DataStore getDataStore() {
+       public PrimaryDataStore getDataStore() {
                return dataStore;
        }
        
@@ -44,4 +48,13 @@ public class Volume implements StateObject<VolumeState> {
        public VolumeType getType() {
                return volumeTypeHelper.getType(volumeVO.getVolumeType());
        }
+       
+       public void setVolumeDiskType(VolumeDiskType type) {
+               volumeVO.setDiskType(type.toString());
+       }
+       
+       public void update() {
+               volumeDao.update(volumeVO.getId(), volumeVO);
+               volumeVO = volumeDao.findById(volumeVO.getId());
+       }
 }

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/0debd8a3/platform/storage/src/org/apache/cloudstack/storage/volume/disktype/VolumeDiskType.java
----------------------------------------------------------------------
diff --git 
a/platform/storage/src/org/apache/cloudstack/storage/volume/disktype/VolumeDiskType.java
 
b/platform/storage/src/org/apache/cloudstack/storage/volume/disktype/VolumeDiskType.java
index c2d2804..1832fe3 100644
--- 
a/platform/storage/src/org/apache/cloudstack/storage/volume/disktype/VolumeDiskType.java
+++ 
b/platform/storage/src/org/apache/cloudstack/storage/volume/disktype/VolumeDiskType.java
@@ -1,5 +1,4 @@
 package org.apache.cloudstack.storage.volume.disktype;
 
 public interface VolumeDiskType {
-       boolean equals(String diskType);
 }

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/0debd8a3/platform/storage/src/org/apache/cloudstack/storage/volume/disktype/VolumeDiskTypeBase.java
----------------------------------------------------------------------
diff --git 
a/platform/storage/src/org/apache/cloudstack/storage/volume/disktype/VolumeDiskTypeBase.java
 
b/platform/storage/src/org/apache/cloudstack/storage/volume/disktype/VolumeDiskTypeBase.java
index 1ee3141..083d49c 100644
--- 
a/platform/storage/src/org/apache/cloudstack/storage/volume/disktype/VolumeDiskTypeBase.java
+++ 
b/platform/storage/src/org/apache/cloudstack/storage/volume/disktype/VolumeDiskTypeBase.java
@@ -4,12 +4,23 @@ public class VolumeDiskTypeBase implements VolumeDiskType {
        protected String type = "Unknown";
 
        @Override
-       public boolean equals(String diskType) {
-               if (getType().equalsIgnoreCase(diskType)) {
+       public boolean equals(Object that) {
+               if (this == that) {
                        return true;
+               }
+               if (that instanceof String) {
+                       if (getType().equalsIgnoreCase((String)that)) {
+                               return true;
+                       }
+               } else if (that instanceof VolumeDiskTypeBase) {
+                       VolumeDiskTypeBase th = (VolumeDiskTypeBase)that;
+                       if (this.getType().equalsIgnoreCase(th.getType())) {
+                               return true;
+                       }
                } else {
                        return false;
                }
+               return false;
        }
        
        @Override

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/0debd8a3/platform/storage/test/org/apache/cloudstack/storage/test/storageContext.xml
----------------------------------------------------------------------
diff --git 
a/platform/storage/test/org/apache/cloudstack/storage/test/storageContext.xml 
b/platform/storage/test/org/apache/cloudstack/storage/test/storageContext.xml
index 508848a..c32004b 100644
--- 
a/platform/storage/test/org/apache/cloudstack/storage/test/storageContext.xml
+++ 
b/platform/storage/test/org/apache/cloudstack/storage/test/storageContext.xml
@@ -13,6 +13,7 @@
   <context:annotation-config />
   <context:component-scan base-package="org.apache.cloudstack.storage" />
   <context:component-scan base-package="com.cloud.utils.db" />
+  <context:component-scan base-package="com.cloud.utils.component" />
   <context:component-scan base-package="com.cloud.storage.dao" />
  
    <context:component-scan base-package=" com.cloud.upgrade.dao" />

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/0debd8a3/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 7f4f826..b8229e4 100644
--- 
a/platform/storage/test/org/apache/cloudstack/storage/test/volumeServiceTest.java
+++ 
b/platform/storage/test/org/apache/cloudstack/storage/test/volumeServiceTest.java
@@ -25,9 +25,13 @@ import java.util.LinkedList;
 
 import javax.inject.Inject;
 
+import 
org.apache.cloudstack.storage.datastore.provider.DefaultPrimaryDatastoreProviderImpl;
+import 
org.apache.cloudstack.storage.datastore.provider.PrimaryDataStoreProvider;
 import org.apache.cloudstack.storage.volume.VolumeMotionService;
 import org.apache.cloudstack.storage.volume.VolumeService;
 import org.apache.cloudstack.storage.volume.db.VolumeDao;
+import org.apache.cloudstack.storage.volume.disktype.VHD;
+import org.apache.cloudstack.storage.volume.disktype.VMDK;
 import org.apache.cloudstack.storage.volume.disktype.VolumeDiskTypeHelper;
 import org.apache.cloudstack.storage.volume.type.VolumeTypeHelper;
 import org.junit.Before;
@@ -36,11 +40,13 @@ import org.junit.runner.RunWith;
 import org.mockito.Mock;
 import org.mockito.Mockito;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.config.AutowireCapableBeanFactory;
 import org.springframework.test.context.ContextConfiguration;
 import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
 import org.mockito.Mockito.*;
 
 
+import com.cloud.utils.component.ComponentInject;
 import com.cloud.utils.db.DB;
 
 
@@ -86,5 +92,16 @@ public class volumeServiceTest {
        public void test1() {
                System.out.println(volTypeHelper.getType("Root"));
                System.out.println(volDiskTypeHelper.getDiskType("vmdk"));
+               assertFalse(new VMDK().equals(new VHD()));
+               VMDK vmdk = new VMDK();
+               assertTrue(vmdk.equals(vmdk));
+               VMDK newvmdk = new VMDK();
+               assertTrue(vmdk.equals(newvmdk));
+       }
+       
+       @Test
+       public void testStaticBean() {
+               DefaultPrimaryDatastoreProviderImpl provider = 
ComponentInject.inject(DefaultPrimaryDatastoreProviderImpl.class);
+               assertNotNull(provider.driver);
        }
 }

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/0debd8a3/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
new file mode 100644
index 0000000..4578ea1
--- /dev/null
+++ b/utils/src/com/cloud/utils/component/ComponentInject.java
@@ -0,0 +1,20 @@
+package com.cloud.utils.component;
+
+import javax.inject.Inject;
+
+import org.springframework.beans.factory.config.AutowireCapableBeanFactory;
+import org.springframework.stereotype.Component;
+
+@Component
+public class ComponentInject {
+       
+       private static AutowireCapableBeanFactory beanFactory;
+       @Inject
+       private void setbeanFactory(AutowireCapableBeanFactory bf) {
+               ComponentInject.beanFactory = bf;
+       }
+       
+       public static <T> T inject(Class<T> clazz) {
+               return beanFactory.createBean(clazz);
+       }
+}

Reply via email to