Summary

The testAzureEventHubIngestFeed() mutation checks that an Azure Event Hubs namespace and its associated blob storage container have the correct permissions configured for ingest. Use this mutation after creating or updating an Azure Event Hub ingest feed to confirm the configuration is valid before enabling it. The mutation returns a Boolean indicating whether the permissions check passed.

Syntax

graphql
testAzureEventHubIngestFeed(
      input: TestAzureEventHubIngestFeed!
   ): Boolean!

The mutation takes a single required input argument of type TestAzureEventHubIngestFeed!. This input contains the repository name, Event Hub namespace, hub name, consumer group, checkpoint handling configuration, and authentication method. The mutation returns true if the permissions check passes, or false if it does not.

Example

Raw
graphql
mutation testAzureIngestFeed {
  testAzureEventHubIngestFeed(input: {
    repositoryName: "developer",
    checkpointHandling: {
      kind: BlobStorage
      blobStorage: {
        blobStorageEndpoint: "https://storagedtaa7rvhirbwq.blob.core.windows.net",
        containerName: "checkpointing"
      },
    },
    authentication: {
      kind: LogScaleConfig
    },

    consumerGroup: "$Default",
    eventHubName: "test-hub",
    eventHubFullyQualifiedNamespace: "evh-ingest-temp-2.servicebus.windows.net"
  })
}
Mac OS or Linux (curl)
shell
curl -v -X POST $YOUR_LOGSCALE_URL/graphql \
    -H "Authorization: Bearer $TOKEN" \
    -H "Content-Type: application/json" \
    -d @- << EOF
{"query" : "mutation testAzureIngestFeed {
  testAzureEventHubIngestFeed(input: {
    repositoryName: \"developer\",
    checkpointHandling: {
      kind: BlobStorage
      blobStorage: {
        blobStorageEndpoint: \"https://storagedtaa7rvhirbwq.blob.core.windows.net\",
        containerName: \"checkpointing\"
      },
    },
    authentication: {
      kind: LogScaleConfig
    },

    consumerGroup: \"$Default\",
    eventHubName: \"test-hub\",
    eventHubFullyQualifiedNamespace: \"evh-ingest-temp-2.servicebus.windows.net\"
  })
}"
}
EOF
Mac OS or Linux (curl) One-line
shell
curl -v -X POST $YOUR_LOGSCALE_URL/graphql \
    -H "Authorization: Bearer $TOKEN" \
    -H "Content-Type: application/json" \
    -d @- << EOF
{"query" : "mutation testAzureIngestFeed {
  testAzureEventHubIngestFeed(input: {
    repositoryName: \"developer\",
    checkpointHandling: {
      kind: BlobStorage
      blobStorage: {
        blobStorageEndpoint: \"https://storagedtaa7rvhirbwq.blob.core.windows.net\",
        containerName: \"checkpointing\"
      },
    },
    authentication: {
      kind: LogScaleConfig
    },

    consumerGroup: \"$Default\",
    eventHubName: \"test-hub\",
    eventHubFullyQualifiedNamespace: \"evh-ingest-temp-2.servicebus.windows.net\"
  })
}"
}
EOF
Windows Cmd and curl
shell
curl -v -X POST $YOUR_LOGSCALE_URL/graphql ^
    -H "Authorization: Bearer $TOKEN" ^
    -H "Content-Type: application/json" ^
    -d @'{"query" : "mutation testAzureIngestFeed { ^
  testAzureEventHubIngestFeed(input: { ^
    repositoryName: \"developer\", ^
    checkpointHandling: { ^
      kind: BlobStorage ^
      blobStorage: { ^
        blobStorageEndpoint: \"https://storagedtaa7rvhirbwq.blob.core.windows.net\", ^
        containerName: \"checkpointing\" ^
      }, ^
    }, ^
    authentication: { ^
      kind: LogScaleConfig ^
    }, ^
 ^
    consumerGroup: \"$Default\", ^
    eventHubName: \"test-hub\", ^
    eventHubFullyQualifiedNamespace: \"evh-ingest-temp-2.servicebus.windows.net\" ^
  }) ^
}" ^
} '
Windows Powershell and curl
powershell
curl.exe -X POST 
    -H "Authorization: Bearer $TOKEN"
    -H "Content-Type: application/json"
    -d '{"query" : "mutation testAzureIngestFeed {
  testAzureEventHubIngestFeed(input: {
    repositoryName: \"developer\",
    checkpointHandling: {
      kind: BlobStorage
      blobStorage: {
        blobStorageEndpoint: \"https://storagedtaa7rvhirbwq.blob.core.windows.net\",
        containerName: \"checkpointing\"
      },
    },
    authentication: {
      kind: LogScaleConfig
    },

    consumerGroup: \"$Default\",
    eventHubName: \"test-hub\",
    eventHubFullyQualifiedNamespace: \"evh-ingest-temp-2.servicebus.windows.net\"
  })
}"
}'
    "$YOUR_LOGSCALE_URL/graphql"
Perl
perl
#!/usr/bin/perl

use HTTP::Request;
use LWP;

my $TOKEN = "TOKEN";

my $uri = '$YOUR_LOGSCALE_URL/graphql';

my $query = "mutation testAzureIngestFeed {
  testAzureEventHubIngestFeed(input: {
    repositoryName: \"developer\",
    checkpointHandling: {
      kind: BlobStorage
      blobStorage: {
        blobStorageEndpoint: \"https://storagedtaa7rvhirbwq.blob.core.windows.net\",
        containerName: \"checkpointing\"
      },
    },
    authentication: {
      kind: LogScaleConfig
    },

    consumerGroup: \"$Default\",
    eventHubName: \"test-hub\",
    eventHubFullyQualifiedNamespace: \"evh-ingest-temp-2.servicebus.windows.net\"
  })
}";
$query =~ s/\n/ /g;
my $json = sprintf('{"query" : "%s"}',$query);
my $req = HTTP::Request->new("POST", $uri );

$req->header("Authorization" => "Bearer $TOKEN");
$req->header("Content-Type" => "application/json");

$req->content( $json );

my $lwp = LWP::UserAgent->new;

my $result = $lwp->request( $req );

print $result->{"_content"},"\n";
Python
python
#! /usr/local/bin/python3

import requests

url = '$YOUR_LOGSCALE_URL/graphql'
mydata = r'''{"query" : "mutation testAzureIngestFeed {
  testAzureEventHubIngestFeed(input: {
    repositoryName: \"developer\",
    checkpointHandling: {
      kind: BlobStorage
      blobStorage: {
        blobStorageEndpoint: \"https://storagedtaa7rvhirbwq.blob.core.windows.net\",
        containerName: \"checkpointing\"
      },
    },
    authentication: {
      kind: LogScaleConfig
    },

    consumerGroup: \"$Default\",
    eventHubName: \"test-hub\",
    eventHubFullyQualifiedNamespace: \"evh-ingest-temp-2.servicebus.windows.net\"
  })
}"
}'''

resp = requests.post(url,
                     data = mydata,
                     headers = {
   "Authorization" : "Bearer $TOKEN",
   "Content-Type" : "application/json"
}
)

print(resp.text)
Node.js
javascript
const https = require('https');

const data = JSON.stringify(
    {"query" : "mutation testAzureIngestFeed {
  testAzureEventHubIngestFeed(input: {
    repositoryName: \"developer\",
    checkpointHandling: {
      kind: BlobStorage
      blobStorage: {
        blobStorageEndpoint: \"https://storagedtaa7rvhirbwq.blob.core.windows.net\",
        containerName: \"checkpointing\"
      },
    },
    authentication: {
      kind: LogScaleConfig
    },

    consumerGroup: \"$Default\",
    eventHubName: \"test-hub\",
    eventHubFullyQualifiedNamespace: \"evh-ingest-temp-2.servicebus.windows.net\"
  })
}"
}
);


const options = {
  hostname: '$YOUR_LOGSCALE_URL',
  path: 'graphql',
  port: 443,
  method: 'POST',
  headers: {
    'Content-Type': 'application/json',
    'Content-Length': data.length,
    Authorization: 'BEARER ' + process.env.TOKEN,
    'User-Agent': 'Node',
  },
};

const req = https.request(options, (res) => {
  let data = '';
  console.log(`statusCode: ${res.statusCode}`);

  res.on('data', (d) => {
    data += d;
  });
  res.on('end', () => {
    console.log(JSON.parse(data).data);
  });
});

req.on('error', (error) => {
  console.error(error);
});

req.write(data);
req.end();
Example Responses
Success (HTTP Response Code 200 OK)
json
{
  "data": {
    "testAzureIngestFeed": {
      "true"
    }
  }
}

Input Parameters

All fields in the TestAzureEventHubIngestFeed input are required. The authentication and checkpointHandling fields each accept a typed input object with a kind discriminant and sub-fields specific to that kind.

Table: Input Parameters & Datatypes

Parameter Type Required Default Description
This table contains all input parameters for this mutation.
repositoryName RepoOrViewName scalar yes   The name of the repository associated with the ingest feed being tested. The named repository must already exist.
eventHubFullyQualifiedNamespace string yes   The fully qualified domain name of the Azure Event Hubs namespace, in the form <namespace>.servicebus.windows.net. This must match the namespace configured on the ingest feed.
eventHubName string yes   The name of the event hub within the namespace. This must match the hub name configured on the ingest feed.
consumerGroup string yes   The Azure Event Hubs consumer group that the feed reads from. This must match the consumer group configured on the ingest feed.
checkpointHandling AzureEventHubsCheckpointHandlingInput yes   The checkpoint storage configuration to test. Provide a kind discriminant such as BlobStorage and the corresponding sub-fields for the storage backend. The mutation checks that the configured storage location is accessible with the required permissions. See the AzureEventHubsCheckpointHandlingInput datatype for all available kinds and their sub-fields.
authentication AzureEventHubsAuthenticationInput yes   The authentication configuration to test. Provide a kind discriminant value such as LogScaleConfig to use LogScale-managed Azure credentials. The mutation checks that the configured identity has the required permissions on the Event Hub and storage container. See the AzureEventHubsAuthenticationInput datatype for all available kinds and their sub-fields.

Table: TestAzureEventHubIngestFeed Input Datatype

ParameterTypeRequiredDefaultStabilityAvailabilityDescription
authenticationAzureEventHubsAuthenticationInputyes Preview Authentication method for Azure Event Hub. See AzureEventHubsAuthenticationInput.
checkpointHandlingAzureEventHubsCheckpointHandlingInputyes Preview Configuration for how the Event Hub checkpoints should be handled. See AzureEventHubsCheckpointHandlingInput.
consumerGroupStringyes Preview Consumer group for the Event Hub.
eventHubFullyQualifiedNamespaceStringyes Preview Fully qualified namespace of the Event Hub. Often structured like <namespace>.servicebus.windows.net.
eventHubNameStringyes Preview The name of the Event Hub.
repositoryNameRepoOrViewNameyes Preview The name of the repository for the ingest feed. RepoOrViewName is a scalar.

Returned Values

The mutation returns a non-null Boolean. A return value of true indicates that the Event Hubs namespace and blob storage container are accessible and have the required permissions for ingest. A return value of false indicates that one or more permission checks failed. Use this result to determine whether the feed configuration is ready to enable.