Jon,

that's pretty impressive for a non-developer. Although as you've stated, I'd be 
careful with making changes to any of the Cinder code base. I actually looked 
at the problem you had, and I think you might be well served to take a close 
look at what command is being execute exactly.
>From looking at eqlx.py it appears that the command doesn't necessarily run 
>inside the EQL command prompt. Instead the "Error executing EQL command" comes 
>from the static part of the string. If you look at the whole _run_ssh method 
>(line 228) you'll see that there is a bunch of debug output that should be 
>generated somewhere. If you can seem to find that, I'd try to turn that on 
>somehow, or simply try to dump it to a file temporarily.

Hope this helps, let me know if you need more pointers.

Simon

-----Original Message-----
From: crowbar-bounces On Behalf Of Jon Bayless
Sent: Friday, August 02, 2013 1:29 PM
To: crowbar
Subject: Re: [Crowbar] Using Dell Equallogic with Openstack Cinder

A follow up on this. I was able to find a solution, though I don't think it is 
really the 'right' solution.

In the cinder/volume/driver.py file I made a change as follows:

def _run_iscsiadm(self, iscsi_properties, iscsi_command, **kwargs):
         check_exit_code = kwargs.pop('check_exit_code', 0)
         (out, err) = self._execute('iscsiadm', '-m', 'node', '-T',
                                    iscsi_properties['target_iqn'],
                                    '-p', iscsi_properties['target_portal'],
                                    *iscsi_command, run_as_root=True,
                                    check_exit_code=check_exit_code)
         LOG.debug("iscsiadm %s: stdout=%s stderr=%s" %
                   (iscsi_command, out, err))
         return (out, err)

Changed to:

def _run_iscsiadm(self, iscsi_properties, iscsi_command, **kwargs):
         check_exit_code = kwargs.pop('check_exit_code', 0)
         (out, err) = utils.execute('iscsiadm', '-m', 'node', '-T',
                                    iscsi_properties['target_iqn'],
                                    '-p', iscsi_properties['target_portal'],
                                    *iscsi_command, run_as_root=True,
                                    check_exit_code=check_exit_code)
         LOG.debug("iscsiadm %s: stdout=%s stderr=%s" %
                   (iscsi_command, out, err))
         return (out, err)

This allows the Cinder service to properly use SSH to the EQL box when needed 
(most of the time for 'administrative' work) and to run commands for iscsi 
connections on itself or compute nodes etc. when needed.

I'm pretty sure this is not a great idea since that code is subject to a lot 
more fiddling and change with future releases but the eqlx driver file seems to 
have a lot more in it that would require change.

Hopefully that is helpful.

Thanks



On 8/1/2013 3:46 PM, Jon Bayless wrote:
> Hello. Hoping to find some help with an issue in my attempt to use an 
> Equallogic array for a storage back end for Cinder with OpenStack Grizzly.
>
> Since the Crowbar Grizzly release is not complete yet, we are trying 
> to use the Rackspace Private Cloud installer tool and so far it has 
> worked very well. Using it with a Ceph storage back end worked great 
> but we want to see how things work with Equallogic.
>
> We have a fresh Equallogic running 6.0.2 release firmware and have 
> installed the eqlx.py into the appropriate driver location for the 
> Cinder setup. The config is all in place and we can start the Cinder 
> volume service just fine. Creating and deleting volumes works as well.
>
> The problem comes when we try to actually use the Equallogic to 
> actually have the controller node or compute node login to an iSCSI 
> volume to put data on it (such as making a volume from an image). The 
> log result is as
> follows:
>
> 2013-08-01 13:46:20    ERROR [cinder.volume.manager] Error: ['Traceback
> (most recent call last):
> ', '  File 
> "/usr/lib/python2.7/dist-packages/cinder/volume/manager.py",
> line 250, in create_volume
>       image_location)
> ', '  File 
> "/usr/lib/python2.7/dist-packages/cinder/volume/manager.py",
> line 189, in _create_volume
>       image_id)
> ', '  File 
> "/usr/lib/python2.7/dist-packages/cinder/volume/manager.py",
> line 602, in _copy_image_to_volume
>       image_id)
> ', '  File "/usr/lib/python2.7/dist-packages/cinder/volume/driver.py",
> line 362, in copy_image_to_volume
>       iscsi_properties, volume_path = self._attach_volume( ', '  File 
> "/usr/lib/python2.7/dist-packages/cinder/volume/driver.py",
> line 398, in _attach_volume
>       try:
> ', '  File "/usr/lib/python2.7/dist-packages/cinder/volume/driver.py",
> line 304, in _run_iscsiadm
>       *iscsi_command, run_as_root=True, ', '  File 
> "/usr/lib/python2.7/dist-packages/cinder/volume/drivers/eqlx.py", line 
> 221, in _execute
>       return self._run_ssh(command, timeout=FLAGS.eqlx_cli_timeout) ', 
> '  File 
> "/usr/lib/python2.7/dist-packages/cinder/volume/drivers/eqlx.py", line 
> 73, in __inner
>       res = gt.wait()
> ', '  File "/usr/lib/python2.7/dist-packages/eventlet/greenthread.py",
> line 168, in wait
>       return self._exit_event.wait()
> ', '  File "/usr/lib/python2.7/dist-packages/eventlet/event.py", line 
> 116, in wait
>       return hubs.get_hub().switch()
> ', '  File "/usr/lib/python2.7/dist-packages/eventlet/hubs/hub.py", 
> line 187, in switch
>       return self.greenlet.switch()
> ', '  File "/usr/lib/python2.7/dist-packages/eventlet/greenthread.py",
> line 194, in main
>       result = function(*args, **kwargs) ', '  File 
> "/usr/lib/python2.7/dist-packages/cinder/volume/drivers/eqlx.py", line 
> 253, in _run_ssh
>       raise exception.Error(msg, out)
> ', "Error: (u'Error executing EQL command: stty columns 255', 
> ['iscsiadm -m node -T 
> iqn.2001-05.com.equallogic:0-8a0906-b0976c809-2160000005851fab-volume-25fea6db-dd20-4f8a-9099-f1d96c122b3d
> -p 10.64.0.5:3260', '                         ^', 'Error: Bad command',
> 'OpenStack-InternalGroup> '])
> "]
>
> I'm no programmer but from what I can tell, it seems the eqlx driver 
> is somehow causing Cinder-volume to try to run the iscsiadm command at 
> the end of that log entry via SSH on the Equallogic shell. Obviously 
> that won't work but I can't figure out why it is happening.
>
> Any insights?
>
> Thanks
>
> _______________________________________________
> Crowbar mailing list
> Crowbar@dell.com
> https://lists.us.dell.com/mailman/listinfo/crowbar
> For more information: http://crowbar.github.com/
>

_______________________________________________
Crowbar mailing list
Crowbar@dell.com
https://lists.us.dell.com/mailman/listinfo/crowbar
For more information: http://crowbar.github.com/

_______________________________________________
Crowbar mailing list
Crowbar@dell.com
https://lists.us.dell.com/mailman/listinfo/crowbar
For more information: http://crowbar.github.com/

Reply via email to