[
https://issues.apache.org/jira/browse/CLOUDSTACK-1648?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13600671#comment-13600671
]
Marcus Sorensen commented on CLOUDSTACK-1648:
---------------------------------------------
I've got a patch I'm testing for this, will post soon.
Normally, the code looks for a pool with the same uuid, and if it finds that,
and it's running, it uses it. In this case, the uuid doesn't match, but the
storage pool is ultimately the same. So this code checks all running pools for
matching path, and remove the pool so that it can be re-added with the right
name/uuid. Any existing volumes will still exist, so if they're a part of an
old installation they'll be orphaned, but it seems dangerous for us to delete
volumes so we'll assume the admin knows what they're doing. If they're somehow
a part of the current installation, they'll be ready to go.
The only thing we don't handle are pools that are defined, but inactive. This
will still throw the storage resource conflict, because we don't have java
libvirt bindings to list all pools, only active ones. I added some logging for
this though to provide the admin with some direction on what might be the issue.
Finally, I changed all storage pool creation calls to be non-persistent. They
act identically, but libvirt doesn't save the definitions locally. We did this
for VMs awhile back as well. Leaving local definitions all over, that can get
out of sync with other KVM hosts or cause conflicts like this is a bad idea.
This will only mean anything on reboot, and should help with any 'defined but
not active' storage pool conflicts.
> Unable to add KVM host
> -----------------------
>
> Key: CLOUDSTACK-1648
> URL: https://issues.apache.org/jira/browse/CLOUDSTACK-1648
> Project: CloudStack
> Issue Type: Bug
> Security Level: Public(Anyone can view this level - this is the
> default.)
> Components: KVM
> Affects Versions: 4.0.0, 4.1.0
> Reporter: Harikrishna Patnala
> Priority: Blocker
> Fix For: 4.0.2
>
>
> Trying to add a kvm host in basic zone.
> Failed after time out occured.
> Checked the agent log in KVM host, seems like conflict occurring with storage
> pool.
> Tried removing the storage pool and re-installing the cloudstack agent.
> Even then failing on the same error.
> Here is the cloudstack agent log in kvm:
> 2013-03-12 09:26:46,159 DEBUG [kvm.resource.LibvirtComputingResource]
> (Agent-Handler-1:null) cpus=2, speed=2992, ram=3846610944, dom0ram=384661094
> 2013-03-12 09:26:46,163 DEBUG [cloud.resource.ServerResourceBase]
> (Agent-Handler-1:null) Parameters for private nic: 10.147.28.22 -
> bc:30:5b:a0:a7:7f-255.255.255.0
> 2013-03-12 09:26:46,163 DEBUG [cloud.resource.ServerResourceBase]
> (Agent-Handler-1:null) Parameters for storage nic: 10.147.28.22 -
> bc:30:5b:a0:a7:7f-255.255.255.0
> 2013-03-12 09:26:46,163 DEBUG [cloud.resource.ServerResourceBase]
> (Agent-Handler-1:null) Parameters for pubic nic: 10.147.28.22 -
> bc:30:5b:a0:a7:7f-255.255.255.0
> 2013-03-12 09:26:46,163 DEBUG [kvm.resource.LibvirtComputingResource]
> (Agent-Handler-1:null) Executing:
> /usr/share/cloudstack-common/scripts/vm/hypervisor/versions.sh
> 2013-03-12 09:26:46,173 DEBUG [kvm.resource.LibvirtComputingResource]
> (Agent-Handler-1:null) Execution is successful.
> 2013-03-12 09:26:46,181 DEBUG [kvm.storage.LibvirtStorageAdaptor]
> (Agent-Handler-1:null) <pool type='dir'>
> <name>7a0e2394-dbc7-497d-bfb9-98609ca2e36f</name>
> <uuid>7a0e2394-dbc7-497d-bfb9-98609ca2e36f</uuid>
> <target>
> <path>/var/lib/libvirt/images/</path>
> </target>
> </pool>
> 2013-03-12 09:26:46,183 ERROR [kvm.storage.LibvirtStorageAdaptor]
> (Agent-Handler-1:null) org.libvirt.LibvirtException: operation failed:
> Storage source conflict with pool: '97b3188f-32c6-4637-9bc6-084fa1bbaa14'
> 2013-03-12 09:26:46,184 WARN [utils.nio.Task] (Agent-Handler-1:null) Caught
> the following exception but pushing on
> java.lang.NullPointerException
> at
> com.cloud.hypervisor.kvm.storage.LibvirtStorageAdaptor.createStoragePool(LibvirtStorageAdaptor.java:462)
> at
> com.cloud.hypervisor.kvm.storage.KVMStoragePoolManager.createStoragePool(KVMStoragePoolManager.java:103)
> at
> com.cloud.hypervisor.kvm.resource.LibvirtComputingResource.initialize(LibvirtComputingResource.java:3528)
> at com.cloud.agent.Agent.sendStartup(Agent.java:320)
> at com.cloud.agent.Agent$ServerHandler.doTask(Agent.java:871)
> at com.cloud.utils.nio.Task.run(Task.java:83)
> at
> java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110)
> at
> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603)
> at java.lang.Thread.run(Thread.java:679)
--
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