venkata swamybabu budumuru created CLOUDSTACK-4325:
------------------------------------------------------

             Summary: [Zone-Wide-PrimaryStorage] CloudStack is failing to 
pickup zone wide primary storages if both cluster and zone wide storages are 
present
                 Key: CLOUDSTACK-4325
                 URL: https://issues.apache.org/jira/browse/CLOUDSTACK-4325
             Project: CloudStack
          Issue Type: Bug
      Security Level: Public (Anyone can view this level - this is the default.)
          Components: Storage Controller
    Affects Versions: 4.2.0
         Environment: commit id # 8df22d1818c120716bea5fce39854da38f61055b
            Reporter: venkata swamybabu budumuru
            Priority: Critical
             Fix For: 4.2.0


Step to reproduce :

1. Have latest CloudStack setup with at least 1 advanced zone.
2. Above setup was created using Marvin framework using APIs
3. During the creation of zone, I have added 2 cluster wide primary storages

- PS0
- PS1

mysql> select * from storage_pool where id<3\G
*************************** 1. row ***************************
                   id: 1
                 name: PS0
                 uuid: 5458182e-bfcb-351c-97ed-e7223bca2b8e
            pool_type: NetworkFilesystem
                 port: 2049
       data_center_id: 1
               pod_id: 1
           cluster_id: 1
           used_bytes: 4218878263296
       capacity_bytes: 5902284816384
         host_address: 10.147.28.7
            user_info: NULL
                 path: /export/home/swamy/primary.campo.kvm.1.zone
              created: 2013-08-14 07:10:01
              removed: NULL
          update_time: NULL
               status: Maintenance
storage_provider_name: DefaultPrimary
                scope: CLUSTER
           hypervisor: NULL
              managed: 0
        capacity_iops: NULL
*************************** 2. row ***************************
                   id: 2
                 name: PS1
                 uuid: 94634fe1-55f7-3fa8-aad9-5adc25246072
            pool_type: NetworkFilesystem
                 port: 2049
       data_center_id: 1
               pod_id: 1
           cluster_id: 1
           used_bytes: 4217960071168
       capacity_bytes: 5902284816384
         host_address: 10.147.28.7
            user_info: NULL
                 path: /export/home/swamy/primary.campo.kvm.2.zone
              created: 2013-08-14 07:10:02
              removed: NULL
          update_time: NULL
               status: Maintenance
storage_provider_name: DefaultPrimary
                scope: CLUSTER
           hypervisor: NULL
              managed: 0
        capacity_iops: NULL
2 rows in set (0.00 sec)

Observations:

(i) SSVM and CPVM volumes got created on pool_id=1

4. Zone got setup without any issues.
5. Added following zone wide primary storages 
- test1
- test2

mysql> select * from storage_pool where id>7\G
*************************** 1. row ***************************
                   id: 8
                 name: test1
                 uuid: 4e612995-3cb1-344e-ba19-3992e3d37d3f
            pool_type: NetworkFilesystem
                 port: 2049
       data_center_id: 1
               pod_id: NULL
           cluster_id: NULL
           used_bytes: 4214658203648
       capacity_bytes: 5902284816384
         host_address: 10.147.28.7
            user_info: NULL
                 path: /export/home/swamy/test1
              created: 2013-08-14 09:49:56
              removed: NULL
          update_time: NULL
               status: Up
storage_provider_name: DefaultPrimary
                scope: ZONE
           hypervisor: KVM
              managed: 0
        capacity_iops: NULL
*************************** 2. row ***************************
                   id: 9
                 name: test2
                 uuid: 43a95e23-1ad6-30a9-9903-f68231dacec5
            pool_type: NetworkFilesystem
                 port: 2049
       data_center_id: 1
               pod_id: NULL
           cluster_id: NULL
           used_bytes: 4214658793472
       capacity_bytes: 5902284816384
         host_address: 10.147.28.7
            user_info: NULL
                 path: /export/home/swamy/test2
              created: 2013-08-14 09:50:12
              removed: NULL
          update_time: NULL
               status: Up
storage_provider_name: DefaultPrimary
                scope: ZONE
           hypervisor: KVM
              managed: 0
        capacity_iops: NULL


6. Have created a non-ROOT domain user and deployed VMs
7. Create 5 volumes as above users (volume ids : 23,24,25,26,27)
8. Tried to attach 23 & 24 volumes to the above deployed VM

Observations :

(ii) user VMs came up on pool_id=1 and router VMs came up on pool_id=2
(iii) both the DATADISKS (23 & 24) got attached but, they got allocated on 
pool_id=1. It never picked zone wide storages and it looks like the only way 
for this to happen is through storageTags.

9. Now place the storages (PS0, PS1) in maintenance mode.

Observations:

(iv) PS0 and PS1 went to maintenance mode successfully.

10. Now tried to attach volume ids 25,26, 27 to the VM and it failed with the 
following error.

2013-08-14 17:23:36,365 ERROR [cloud.async.AsyncJobManagerImpl] 
(Job-Executor-18:job-69 = [ 8ddd30f2-fbf4-45d5-b5c8-9e67fcfc085c ]) Unexpected 
exception while executing 
org.apache.cloudstack.api.command.user.volume.AttachVolumeCmd
com.cloud.utils.exception.CloudRuntimeException: Unable to find storage pool 
when create volumetest123
        at 
com.cloud.storage.VolumeManagerImpl.createVolume(VolumeManagerImpl.java:677)
        at 
com.cloud.utils.component.ComponentInstantiationPostProcessor$InterceptorDispatcher.intercept(ComponentInstantiationPostProcessor.java:125)
        at 
com.cloud.storage.VolumeManagerImpl.createVolumeOnPrimaryStorage(VolumeManagerImpl.java:1538)
        at 
com.cloud.storage.VolumeManagerImpl.attachVolumeToVM(VolumeManagerImpl.java:1862)
        at 
com.cloud.utils.component.ComponentInstantiationPostProcessor$InterceptorDispatcher.intercept(ComponentInstantiationPostProcessor.java:125)
        at 
org.apache.cloudstack.api.command.user.volume.AttachVolumeCmd.execute(AttachVolumeCmd.java:122)
        at com.cloud.api.ApiDispatcher.dispatch(ApiDispatcher.java:158)
        at 
com.cloud.async.AsyncJobManagerImpl$1.run(AsyncJobManagerImpl.java:531)
        at 
java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471)
        at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:334)
        at java.util.concurrent.FutureTask.run(FutureTask.java:166)
        at 
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1146)
        at 
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
        at java.lang.Thread.run(Thread.java:679)

11. Tried to deploy a VM but, that as well failed with the following error 

2013-08-14 17:23:51,283 INFO  [user.vm.DeployVMCmd] (Job-Executor-19:job-70 = [ 
5da32f69-bded-4d24-9423-97d18d426f5d ]) Unable to create a deployment for 
VM[User|58f3ba16-1481-4a72-bb7d-80d8b50830dc]
com.cloud.exception.InsufficientServerCapacityException: Unable to create a 
deployment for VM[User|58f3ba16-1481-4a72-bb7d-80d8b50830dc]Scope=interface 
com.cloud.dc.DataCenter; id=1
        at 
org.apache.cloudstack.engine.cloud.entity.api.VMEntityManagerImpl.reserveVirtualMachine(VMEntityManagerImpl.java:209)
        at 
org.apache.cloudstack.engine.cloud.entity.api.VirtualMachineEntityImpl.reserve(VirtualMachineEntityImpl.java:198)
        at 
com.cloud.vm.UserVmManagerImpl.startVirtualMachine(UserVmManagerImpl.java:3404)
        at 
com.cloud.vm.UserVmManagerImpl.startVirtualMachine(UserVmManagerImpl.java:2965)
        at 
com.cloud.vm.UserVmManagerImpl.startVirtualMachine(UserVmManagerImpl.java:2951)
        at 
com.cloud.utils.component.ComponentInstantiationPostProcessor$InterceptorDispatcher.intercept(ComponentInstantiationPostProcessor.java:125)
        at 
org.apache.cloudstack.api.command.user.vm.DeployVMCmd.execute(DeployVMCmd.java:420)
        at com.cloud.api.ApiDispatcher.dispatch(ApiDispatcher.java:158)
        at 
com.cloud.async.AsyncJobManagerImpl$1.run(AsyncJobManagerImpl.java:531)
        at 
java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471)
        at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:334)
        at java.util.concurrent.FutureTask.run(FutureTask.java:166)
        at 
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1146)
        at 
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
        at java.lang.Thread.run(Thread.java:679)

Expected Behaviour:
===============

- When both PS0 and PS1 are in maintenance mode then it should automatically 
pick test1 and test2 for volumes or for new VM deployments.

Attaching all the required logs along with db dump to the bug. 

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira

Reply via email to