Skip to content

Instantly share code, notes, and snippets.

@dylan-asos
dylan-asos / ClonePermissions.cs
Created February 5, 2024 15:00
Clone GitHub Team Permissions
public async Task CloneTeamPermissions()
{
var gitApi = new GitHubClient(new ProductHeaderValue("my-app"));
var tokenAuth = new Credentials("finely-grained-pat-with-repo-permissions");
gitApi.Credentials = tokenAuth;
const string organisationName = "your-org";
const string teamToClonePermissionsFrom = "your-team";
const string targetTeamToApplyPermissionsTo = "your-target-team";
{
"IsEncrypted": false,
"Values": {
"AzureWebJobsStorage": "UseDevelopmentStorage=true",
"AAD.ClientId": "your-aad-client-id",
"AAD.Secret": "the-secret-value-for-the-client",
"AAD.Tenant": "your-aad-tenant-id",
"Azure.SubscriptionId": "your-subscription-id"
}
}
"criteria": {
"odata.type": "Microsoft.Azure.Monitor.SingleResourceMultipleMetricCriteria",
"allOf": [
{
"name" : "1st criterion",
"metricName": "[parameters('metricName')]",
"metricNamespace": "[parameters('metricNamespace')]",
"dimensions":[],
"operator": "[parameters('operator')]",
"threshold" : "[parameters('threshold')]",
public async Task CalculateMetrics()
{
var processingWork = new List<Task>();
var namespaces = await _azureManagementClient.ServiceBusNamespaces.ListAsync();
foreach (var serviceBusNamespace in namespaces)
{
var namespaceProcessor = ProcessServiceBusNamespace(serviceBusNamespace);
processingWork.Add(namespaceProcessor);
public class MetricsApiAccessTokenProvider
{
private readonly CredentialConfiguration _settings;
public MetricsApiAccessTokenProvider(CredentialConfiguration settings)
{
_settings = settings;
}
public async Task<string> GetAccessToken()
public class ServiceBusPercentageUsed
{
private const string EveryFiveMinutes = "* */5 * * * *";
[FunctionName("ServiceBusPercentageUsed")]
public static async Task Run(
[TimerTrigger(EveryFiveMinutes)] TimerInfo input,
[Inject] ServiceBusPercentageUsedMetricsGenerator metricsGenerator)
{
await metricsGenerator.CalculateMetrics();
{
"time": "2019-04-01T16:34:20",
"data": {
"baseData": {
"metric": "CapacityUsedPercent",
"namespace": "ASOS Custom Metrics",
"dimNames": [
"EntityName"
],
"series": [
public static async Task Run([EventHubTrigger("HubName",
Connection = "EventHubConnectionStringSettingName",
ConsumerGroup = "Consumer-Group-If-Applicable")] EventData[] messageBatch, PartitionContext partitionContext, ILogger log)
public class EventStreamBacklogTracing
{
public static void LogSequenceDifference(EventData message, PartitionContext context)
{
var messageSequence = message.SystemProperties.SequenceNumber;
var lastEnqueuedSequence = context.RuntimeInformation.LastSequenceNumber;
var sequenceDifference = lastEnqueuedSequence - messageSequence;
var client = new TelemetryClient();
@dylan-asos
dylan-asos / Function host event hubs
Created January 23, 2019 14:03
Function host event hubs
{
"version": "2.0",
"extensions": {
"eventHubs": {
"batchCheckpointFrequency": 2,
"eventProcessorOptions": {
"maxBatchSize": 5,
"prefetchCount": 10,
"enableReceiverRuntimeMetric": true
}