'Registers an existing ISO by URL.
:param      name: Name which should be used
:type       name: ``str``
:param      url: Url should be used
:type       url: ``str``
:param      location: Location which should be used
:type       location: :class:`NodeLocation`
:rtype: ``str``'

def ex_register_iso(self, name, url, location=None, **kwargs):

    if (location is None):
        location = self.list_locations()[0]
    params = {'name': name, 'displaytext': name, 'url': url, 'zoneid': location.id}
    params['bootable'] = kwargs.pop('bootable', False)
    if params['bootable']:
        os_type_id = kwargs.pop('ostypeid', None)
        if (not os_type_id):
            raise LibcloudError('If    bootable=True,    ostypeid    is    required!')
        params['ostypeid'] = os_type_id
    return self._sync_request(command='registerIso', name=name, displaytext=name, url=url, zoneid=location.id, params=params)
