public async Task <bool> OrchestrateNetworkInterfaceDeleteAsync([OrchestrationTrigger] IDurableOrchestrationContext context) { var orchestratorParameters = context.GetInput <OrchestratorParameters>(); // Get DNS Entities associated with this Resource Id var dnsEntity = await context.CallActivityAsync <DnsEntity>(nameof(SharedDurableFunctions.GetDnsEntityAsync), orchestratorParameters.ResourceId); if (dnsEntity != null) { var dnsParameters = new DnsParameters { ResourceId = orchestratorParameters.ResourceId, DnsZone = dnsEntity.DnsZone, Hostname = dnsEntity.Hostname, IpAddress = dnsEntity.IpAddress, RecordType = dnsEntity.RecordType }; if (await context.CallActivityAsync <bool>(nameof(SharedDurableFunctions.DeleteDnsRecordSetAsync), dnsParameters)) { return(await context.CallActivityAsync <bool>(nameof(SharedDurableFunctions.DeleteDnsEntityAsync), dnsEntity)); } } return(false); }
public async Task <bool> CreateDnsRecordSetAsync([ActivityTrigger] DnsParameters parameters, ILogger log) { var newRecordSet = new DnsRecordSet(aRecords: new List <ARecord> { new ARecord(parameters.IpAddress) }, ttl: 3600); var savedRecordSet = await privateDnsManagementService.CreateOrUpdateAsync(parameters.DnsZone, parameters.RecordType, parameters.Hostname, newRecordSet); return(!(savedRecordSet is null)); }
private async Task <bool> OrchestrateNetworkInterfaceCreateAsync(IDurableOrchestrationContext context, NetworkInterface nic) { // If NIC wasn't tagged [with a value] there's nothing for us to do so just return. if (nic.Tags == null || !nic.Tags.ContainsKey(hostNameTagName)) { return(true); } // If NIC tag is empty string there's nothing for us to do so just return. var hostname = nic.Tags.SingleOrDefault(s => s.Key.Equals(hostNameTagName, StringComparison.OrdinalIgnoreCase)).Value; if (string.IsNullOrWhiteSpace(hostname)) { return(true); } // Create new recordset in default private DNS zone. var dnsParameters = new DnsParameters { ResourceId = nic.Id, DnsZone = defaultPrivateDnsZone, Hostname = hostname, RecordType = RecordType.A, IpAddress = nic.IpConfigurations[0].PrivateIPAddress }; var recordSetCreated = await context.CallActivityAsync <bool>(nameof(SharedDurableFunctions.CreateDnsRecordSetAsync), dnsParameters); if (recordSetCreated) { // Save the record as Table Entity so we can delete. return(await context.CallActivityAsync <bool>(nameof(SharedDurableFunctions.CreateDnsEntityAsync), dnsParameters)); } return(false); }
public async Task <bool> DeleteDnsRecordSetAsync([ActivityTrigger] DnsParameters parameters, ILogger log) { return(await privateDnsManagementService.DeleteAsync(parameters.DnsZone, parameters.RecordType, parameters.Hostname)); }
public async Task <bool> CreateDnsEntityAsync([ActivityTrigger] DnsParameters parameters, ILogger log) { var dnsEntity = new DnsEntity(parameters.ResourceId, parameters.Hostname, parameters.DnsZone, RecordType.A, parameters.IpAddress); return(await dnsEntityService.InsertOrUpdateDnsEntityAsync(dnsEntity)); }