Beispiel #1
0
def update_connector(request):
    connector = json.loads(request.POST.get('connector', '{}'))
    saved_as = False

    if connector.get('id'):
        instance = Connector.objects.get(id=connector['id'])
        instance.name = connector['nice_name']
        instance.description = connector['description']
        instance.settings = json.dumps(connector['settings'])
        # TODO: if `sqlalchemy` interface, delete key in ENGINES
        instance.save()
    else:
        saved_as = True
        instance = Connector.objects.create(name=connector['nice_name'],
                                            description='',
                                            dialect=connector['dialect'],
                                            interface=connector['interface'],
                                            settings=json.dumps(
                                                connector['settings']))
        connector['id'] = instance.id
        connector['name'] = instance.id

    update_app_permissions()

    return JsonResponse({'connector': connector, 'saved_as': saved_as})
Beispiel #2
0
    def tearDownClass(cls):
        HuePermission.objects.all().delete()

        for reset in cls._class_resets:
            reset()

        update_app_permissions()
Beispiel #3
0
    def test_config_validator(self, has_connectors):

        with patch(
                'desktop.lib.connectors.models.CONNECTORS.get') as CONNECTORS:
            CONNECTORS.return_value = {
                'hive-1':
                Mock(
                    NICE_NAME=Mock(get=Mock(return_value='Hive')),
                    DIALECT=Mock(get=Mock(return_value='hive')),
                    INTERFACE=Mock(get=Mock(return_value='hiveserver2')),
                    SETTINGS=Mock(get=Mock(return_value=[{
                        "name": "server_host",
                        "value": "gethue"
                    }, {
                        "name": "server_port",
                        "value": "10000"
                    }])),
                )
            }

            update_app_permissions()

            connectors = _get_installed_connectors(user=self.user)
            assert_true(connectors, connectors)

            warnings = config_validator(user=self.user)

            assert_true(warnings, warnings)
            assert_equal('hive-1', warnings[0][0])
            assert_true(
                'Testing the connector connection failed' in warnings[0][1],
                warnings)
Beispiel #4
0
    def test_get_connectors_for_user(self):

        with patch(
                'desktop.lib.connectors.models.CONNECTORS.get') as CONNECTORS:
            CONNECTORS.return_value = {
                'mysql-1':
                Mock(
                    NICE_NAME=Mock(get=Mock(return_value='MySql')),
                    DIALECT=Mock(get=Mock(return_value='mysql')),
                    INTERFACE=Mock(get=Mock(return_value='sqlalchemy')),
                    SETTINGS=Mock(get=Mock(
                        return_value=[{
                            "name": "url",
                            "value": "mysql://*****:*****@hue:3306/hue"
                        }])),
                )
            }

            update_app_permissions()

            connectors = _get_installed_connectors(user=self.user)
            assert_true(connectors, connectors)

            connectors = _get_installed_connectors(user=self.alone_user)
            assert_false(connectors, connectors)
Beispiel #5
0
def new_connector(request, dialect):
  instance = _get_connector_by_type(dialect)

  instance['nice_name'] = dialect.title()
  instance['id'] = None

  update_app_permissions()

  return JsonResponse({'connector': instance})
Beispiel #6
0
def install_connector_examples(request):
    try:
        _create_connector_examples()
    except Exception as e:
        raise PopupException(_('Error installing connector examples: %s') % e)

    update_app_permissions()

    return JsonResponse({'status': 0})
Beispiel #7
0
def delete_connector(request):
  connector = json.loads(request.POST.get('connector', '{}'))

  try:
    Connector.objects.get(id=connector['id']).delete()
  except Exception as e:
    raise PopupException(_('Error deleting connector %s: %s') % (connector['name'], e))

  update_app_permissions()

  return JsonResponse({})
Beispiel #8
0
def delete_connector(request):
  connector = json.loads(request.POST.get('connector'), '{}')

  size_before = len(models.CONNECTOR_INSTANCES)
  models.CONNECTOR_INSTANCES = [_connector for _connector in models.CONNECTOR_INSTANCES if _connector['name'] != connector['name']]
  size_after = len(models.CONNECTOR_INSTANCES)

  if size_before == size_after + 1:
    update_app_permissions()
    return JsonResponse({})
  else:
    raise PopupException(_('No connector with the name %(name)s found.') % connector)
Beispiel #9
0
def install_connector_examples(request):
  message = []

  try:
    added, skipped = _create_connector_examples()
    if added:
      message.append('Added connectors: ' + ', '.join(added))
    if skipped:
      message.append('Already installed connectors: ' + ', '.join(skipped))
  except Exception as e:
    raise PopupException(_('Error installing connector examples: %s') % e)

  update_app_permissions()

  return JsonResponse({'status': 0, 'message': '. '.join(message)})
Beispiel #10
0
def update_connector(request):
  connector = json.loads(request.POST.get('connector', '{}'))
  saved_as = False

  if connector.get('id'):
    instance = _get_connector_by_id(connector['id'])
    instance.update(connector)
  else:
    saved_as = True
    instance = connector
    instance['id'] = models.CONNECTOR_IDS
    instance['nice_name'] = instance['nice_name']
    instance['name'] = '%s-%s' % (instance['dialect'], models.CONNECTOR_IDS)
    models.CONNECTOR_IDS += 1
    models.CONNECTOR_INSTANCES.append(instance)

  update_app_permissions()

  return JsonResponse({'connector': instance, 'saved_as': saved_as})
Beispiel #11
0
  def tearDownClass(cls):
    for reset in cls._class_resets:
      reset()

    update_app_permissions()