public IWithCreate WithDnsServerNames(IList <string> dnsServerNames) { DnsConfiguration dnsConfiguration = new DnsConfiguration(); dnsConfiguration.NameServers = dnsServerNames; this.Inner.DnsConfig = dnsConfiguration; return(this); }
public async Task TestCreateDomain() { string domainName = CreateRandomDomainName(); IDnsService provider = CreateProvider(); using (CancellationTokenSource cancellationTokenSource = new CancellationTokenSource(TestTimeout(TimeSpan.FromSeconds(60)))) { DnsConfiguration configuration = new DnsConfiguration( new DnsDomainConfiguration( name: domainName, timeToLive: default(TimeSpan?), emailAddress: "admin@" + domainName, comment: "Integration test domain", records: new DnsDomainRecordConfiguration[] { }, subdomains: new DnsSubdomainConfiguration[] { })); DnsJob <DnsDomains> createResponse = await provider.CreateDomainsAsync(configuration, AsyncCompletionOption.RequestCompleted, cancellationTokenSource.Token, null); IEnumerable <DnsDomain> createdDomains = Enumerable.Empty <DnsDomain>(); if (createResponse.Status == DnsJobStatus.Error) { Console.WriteLine(createResponse.Error.ToString(Formatting.Indented)); Assert.Fail(); } else { Console.WriteLine(JsonConvert.SerializeObject(createResponse.Response, Formatting.Indented)); createdDomains = createResponse.Response.Domains; } ReadOnlyCollection <DnsDomain> domains = await ListAllDomainsAsync(provider, domainName, null, cancellationTokenSource.Token); Assert.IsNotNull(domains); if (!domains.Any()) { Assert.Inconclusive("No domains were returned by the server"); } foreach (var domain in domains) { Console.WriteLine(); Console.WriteLine("Domain: {0} ({1})", domain.Name, domain.Id); Console.WriteLine(); Console.WriteLine(await JsonConvert.SerializeObjectAsync(domain, Formatting.Indented)); } DnsJob deleteResponse = await provider.RemoveDomainsAsync(createdDomains.Select(i => i.Id), false, AsyncCompletionOption.RequestCompleted, cancellationTokenSource.Token, null); if (deleteResponse.Status == DnsJobStatus.Error) { Console.WriteLine(deleteResponse.Error.ToString(Formatting.Indented)); Assert.Fail("Failed to delete temporary domain created during the integration test."); } } }
public IWithCreate WithDnsConfiguration(IList <string> dnsServerNames, string dnsSearchDomains, string dnsOptions) { DnsConfiguration dnsConfiguration = new DnsConfiguration(); dnsConfiguration.NameServers = dnsServerNames; dnsConfiguration.SearchDomains = dnsSearchDomains; dnsConfiguration.Options = dnsOptions; this.Inner.DnsConfig = dnsConfiguration; return(this); }
public async Task TestCloneDomain() { string domainName = CreateRandomDomainName(); string clonedName = CreateRandomDomainName(); IDnsService provider = CreateProvider(); using (CancellationTokenSource cancellationTokenSource = new CancellationTokenSource(TestTimeout(TimeSpan.FromSeconds(60)))) { List <DomainId> domainsToRemove = new List <DomainId>(); DnsConfiguration configuration = new DnsConfiguration( new DnsDomainConfiguration( name: domainName, timeToLive: default(TimeSpan?), emailAddress: "admin@" + domainName, comment: "Integration test domain", records: new DnsDomainRecordConfiguration[] { }, subdomains: new DnsSubdomainConfiguration[] { })); DnsJob <DnsDomains> createResponse = await provider.CreateDomainsAsync(configuration, AsyncCompletionOption.RequestCompleted, cancellationTokenSource.Token, null); if (createResponse.Status == DnsJobStatus.Error) { Console.WriteLine(createResponse.Error.ToString(Formatting.Indented)); Assert.Fail(); } else { Console.WriteLine(JsonConvert.SerializeObject(createResponse.Response, Formatting.Indented)); domainsToRemove.AddRange(createResponse.Response.Domains.Select(i => i.Id)); } DnsJob <DnsDomains> cloneResponse = await provider.CloneDomainAsync(createResponse.Response.Domains[0].Id, clonedName, true, true, true, true, AsyncCompletionOption.RequestCompleted, cancellationTokenSource.Token, null); if (cloneResponse.Status == DnsJobStatus.Error) { Console.WriteLine(cloneResponse.Error.ToString(Formatting.Indented)); Assert.Fail(); } else { Console.WriteLine(JsonConvert.SerializeObject(cloneResponse.Response, Formatting.Indented)); domainsToRemove.AddRange(cloneResponse.Response.Domains.Select(i => i.Id)); } DnsJob deleteResponse = await provider.RemoveDomainsAsync(domainsToRemove, false, AsyncCompletionOption.RequestCompleted, cancellationTokenSource.Token, null); if (deleteResponse.Status == DnsJobStatus.Error) { Console.WriteLine(deleteResponse.Error.ToString(Formatting.Indented)); Assert.Fail("Failed to delete temporary domain created during the integration test."); } } }
public static DnsConfiguration PublicDnsConfiguration() { var dnsConfiguration = new DnsConfiguration { Id = "J8Ho6CGgFUydXUuWf58J-A", Type = DnsType.Public, Domain = "", Ip = "8.8.8.8" }; return(dnsConfiguration); }
public static DnsConfiguration PrivateExternalDnsConfiguration() { var host = Host2Configuration.Host; var dnsConfiguration = new DnsConfiguration { Id = "FD1tT-TJZku93WFXt9Ldfw", Type = DnsType.Private, Domain = host.ExternalDomainPrimary, Ip = host.ExternalHostIpPrimary }; return(dnsConfiguration); }
public static DnsConfiguration PrivateInternalDnsConfiguration() { var host = Host2Configuration.Host; var dnsConfiguration = new DnsConfiguration { Id = "BhfPEkstWUmACT6rL5vO-w", Type = DnsType.Private, Domain = host.InternalDomainPrimary, Ip = host.InternalHostIpPrimary }; return(dnsConfiguration); }
public static bool AddDnsConfiguration(DnsConfiguration conf) { if (string.IsNullOrEmpty(conf.Id)) { return(false); } var file = $"{DnsDir}/{conf.Id}{DnsConfigurationExt}"; var text = JsonConvert.SerializeObject(conf, Formatting.Indented); try { FileWithAcl.WriteAllText(file, text, "644", "root", "wheel"); } catch (Exception) { return(false); } return(File.Exists(file)); }
internal ContainerGroupData(ResourceIdentifier id, string name, ResourceType resourceType, SystemData systemData, IDictionary <string, string> tags, AzureLocation location, IList <string> zones, ManagedServiceIdentity identity, string provisioningState, IList <ContainerInstanceContainer> containers, IList <ImageRegistryCredential> imageRegistryCredentials, ContainerGroupRestartPolicy?restartPolicy, IPAddress ipAddress, OperatingSystemTypes osType, IList <ContainerInstanceVolume> volumes, ContainerGroupPropertiesInstanceView instanceView, ContainerGroupDiagnostics diagnostics, IList <ContainerGroupSubnetId> subnetIds, DnsConfiguration dnsConfig, ContainerGroupSku?sku, Models.EncryptionProperties encryptionProperties, IList <InitContainerDefinitionContent> initContainers) : base(id, name, resourceType, systemData, tags, location, zones) { Identity = identity; ProvisioningState = provisioningState; Containers = containers; ImageRegistryCredentials = imageRegistryCredentials; RestartPolicy = restartPolicy; IPAddress = ipAddress; OSType = osType; Volumes = volumes; InstanceView = instanceView; Diagnostics = diagnostics; SubnetIds = subnetIds; DnsConfig = dnsConfig; Sku = sku; EncryptionProperties = encryptionProperties; InitContainers = initContainers; }
public AntdNetwork2Module() { Get["/network2"] = x => { var physicalInterfaces = Network2Configuration.InterfacePhysical.ToList(); var bridgeInterfaces = Network2Configuration.InterfaceBridge.ToList(); var bondInterfaces = Network2Configuration.InterfaceBond.ToList(); var virtualInterfaces = Network2Configuration.InterfaceVirtual.ToList(); foreach (var vif in virtualInterfaces) { if (physicalInterfaces.Any(_ => _ == vif) || bridgeInterfaces.Any(_ => _ == vif) || bondInterfaces.Any(_ => _ == vif)) { virtualInterfaces.Remove(vif); } } var allifs = new List <string>(); allifs.AddRange(physicalInterfaces); allifs.AddRange(bridgeInterfaces); allifs.AddRange(bondInterfaces); var model = new PageNetwork2Model { PhysicalIf = physicalInterfaces, BridgeIf = bridgeInterfaces, BondIf = bondInterfaces, VirtualIf = virtualInterfaces, AllIfs = allifs, //new List <string> { "dev1", "dev2", "dev3" }, InterfaceConfigurationList = Network2Configuration.InterfaceConfigurationList, GatewayConfigurationList = Network2Configuration.GatewayConfigurationList, RouteConfigurationList = Network2Configuration.RouteConfigurationList, DnsConfigurationList = Network2Configuration.DnsConfigurationList, Configuration = Network2Configuration.Conf.Interfaces, NetworkHardwareConfigurationList = Network2Configuration.NetworkHardwareConfigurationList, LagConfigurationList = Network2Configuration.NetworkAggregatedInterfaceConfigurationList, Variables = Host2Configuration.Host, //ActiveDnsConfiguration = Network2Configuration.Conf.ActiveDnsConfiguration }; return(JsonConvert.SerializeObject(model)); }; Post["/network2/restart"] = x => { new Do().NetworkChanges(); return(HttpStatusCode.OK); }; Post["/network2/interfaceconfiguration"] = x => { string id = Request.Form.Id; string type = Request.Form.Type; var typedType = type?.ToEnum <NetworkInterfaceType>() ?? NetworkInterfaceType.Null; if (typedType == NetworkInterfaceType.Null) { return(HttpStatusCode.InternalServerError); } var index = Network2Configuration.InterfaceConfigurationList.Count(_ => _.Type == typedType); string description = Request.Form.Description; var typedVerb = typedType == NetworkInterfaceType.Internal ? NetworkRoleVerb.iif : NetworkRoleVerb.eif; var alias = $"{typedVerb.ToString()}{index:D2}"; string mode = Request.Form.Mode; var typedMode = mode?.ToEnum <NetworkInterfaceMode>() ?? NetworkInterfaceMode.Dynamic; string ip = Request.Form.Ip; string range = Request.Form.Range; var vars = Host2Configuration.Host; var hostname = ""; var subnet = ""; if (typedType == NetworkInterfaceType.Internal) { hostname = $"{vars.HostName}{typedVerb.ToString()}.{vars.InternalDomainPrimary}"; subnet = vars.InternalNetPrimaryBits; } if (typedType == NetworkInterfaceType.External) { hostname = $"{vars.HostName}{typedVerb.ToString()}.{vars.ExternalDomainPrimary}"; subnet = vars.ExternalNetPrimaryBits; } var broadcast = ""; try { broadcast = Cidr.CalcNetwork(ip, subnet).Broadcast.ToString(); } catch (Exception ex) { ConsoleLogger.Error(ex.Message); } var model = new NetworkInterfaceConfiguration { Id = string.IsNullOrEmpty(id) ? Random.ShortGuid() : id, Type = typedType, Hostname = hostname, Index = index, Description = description, RoleVerb = typedVerb, Alias = alias, Mode = typedMode, Ip = ip, Range = range, Subnet = subnet, Broadcast = broadcast }; Network2Configuration.AddInterfaceConfiguration(model); return(HttpStatusCode.OK); }; Post["/network2/interfaceconfiguration/del"] = x => { string guid = Request.Form.Guid; Network2Configuration.RemoveInterfaceConfiguration(guid); return(HttpStatusCode.OK); }; Post["/network2/gatewayconfiguration"] = x => { string id = Request.Form.Id; string description = Request.Form.Description; string gatewayAddress = Request.Form.GatewayAddress; string def = Request.Form.Default; var model = new NetworkGatewayConfiguration { Id = string.IsNullOrEmpty(id) ? Random.ShortGuid() : id, Description = description, GatewayAddress = gatewayAddress, IsDefault = !string.IsNullOrEmpty(def) && Convert.ToBoolean(def) }; Network2Configuration.AddGatewayConfiguration(model); return(HttpStatusCode.OK); }; Post["/network2/gatewayconfiguration/del"] = x => { string guid = Request.Form.Guid; Network2Configuration.RemoveGatewayConfiguration(guid); return(HttpStatusCode.OK); }; Post["/network2/lagconfiguration"] = x => { string id = Request.Form.Id; string parent = Request.Form.Parent; string children = Request.Form.Children; var model = new NetworkAggregatedInterfaceConfiguration { Id = string.IsNullOrEmpty(id) ? Random.ShortGuid() : id, Parent = parent, Children = string.IsNullOrEmpty(children) ? new List <string>() : children.SplitToList() }; Network2Configuration.AddAggregatedInterfaceConfiguration(model); return(HttpStatusCode.OK); }; Post["/network2/lagconfiguration/del"] = x => { string guid = Request.Form.Guid; Network2Configuration.RemoveAggregatedInterfaceConfiguration(guid); return(HttpStatusCode.OK); }; Post["/network2/routeconfiguration"] = x => { string id = Request.Form.Id; string destinationIp = Request.Form.DestinationIp; string destinationRange = Request.Form.DestinationRange; string gateway = Request.Form.Gateway; var model = new NetworkRouteConfiguration { Id = string.IsNullOrEmpty(id) ? Random.ShortGuid() : id, DestinationIp = destinationIp, DestinationRange = destinationRange, Gateway = gateway }; Network2Configuration.AddRouteConfiguration(model); return(HttpStatusCode.OK); }; Post["/network2/routeconfiguration/del"] = x => { string guid = Request.Form.Guid; Network2Configuration.RemoveRouteConfiguration(guid); return(HttpStatusCode.OK); }; Post["/network2/dnsconfiguration"] = x => { string id = Request.Form.Id; string type = Request.Form.Type; var typedType = type?.ToEnum <DnsType>() ?? DnsType.Null; if (typedType == DnsType.Null) { return(HttpStatusCode.InternalServerError); } string domain = Request.Form.Domain; string ip = Request.Form.Ip; var model = new DnsConfiguration { Id = string.IsNullOrEmpty(id) ? Random.ShortGuid() : id, Type = typedType, Domain = domain, Ip = ip }; Network2Configuration.AddDnsConfiguration(model); return(HttpStatusCode.OK); }; Post["/network2/dnsconfiguration/del"] = x => { string guid = Request.Form.Guid; Network2Configuration.RemoveDnsConfiguration(guid); return(HttpStatusCode.OK); }; Post["/network2/dnsconfiguration/active"] = x => { string guid = Request.Form.Guid; Network2Configuration.SetDnsConfigurationActive(guid); return(HttpStatusCode.OK); }; Post["/network2/nsupdateconfiguration"] = x => { string id = Request.Form.Id; string serverName = Request.Form.ServerName; string serverPort = Request.Form.ServerPort; string localAddress = Request.Form.LocalAddress; string localPort = Request.Form.LocalPort; string zoneName = Request.Form.ZoneName; string className = Request.Form.ClassName; string nxDomain = Request.Form.NxDomain; string yxDomain = Request.Form.YxDomain; string nxRrset = Request.Form.NxRrset; string yxRrset = Request.Form.YxRrset; string delete = Request.Form.Delete; string add = Request.Form.Add; var model = new NsUpdateConfiguration { Id = string.IsNullOrEmpty(id) ? Random.ShortGuid() : id, ServerName = serverName, ServerPort = serverPort, LocalAddress = localAddress, LocalPort = localPort, ZoneName = zoneName, ClassName = className, NxDomain = nxDomain, YxDomain = yxDomain, NxRrset = nxRrset, YxRrset = yxRrset, Delete = delete, Add = add }; Network2Configuration.AddNsUpdateConfiguration(model); return(HttpStatusCode.OK); }; Post["/network2/nsupdateconfiguration/del"] = x => { string guid = Request.Form.Guid; Network2Configuration.RemoveNsUpdateConfiguration(guid); return(HttpStatusCode.OK); }; Post["/network2/hardwareconfiguration"] = x => { string id = Request.Form.Id; string txqueuelen = Request.Form.Txqueuelen; string mtu = Request.Form.Mtu; string macAddress = Request.Form.MacAddress; var model = new NetworkHardwareConfiguration() { Id = string.IsNullOrEmpty(id) ? Random.ShortGuid() : id, Txqueuelen = txqueuelen, Mtu = mtu, MacAddress = macAddress }; Network2Configuration.AddNetworkHardwareConfiguration(model); return(HttpStatusCode.OK); }; Post["/network2/hardwareconfiguration/del"] = x => { string guid = Request.Form.Guid; Network2Configuration.RemoveNetworkHardwareConfiguration(guid); return(HttpStatusCode.OK); }; //Post["/network2/interface"] = x => { // string dev = Request.Form.Device; // string conf = Request.Form.Configuration; // string confs = Request.Form.AdditionalConfigurations; // string gwConf = Request.Form.GatewayConfiguration; // string hwConf = Request.Form.HardwareConfiguration; // string status = Request.Form.Status; // var typedStatus = status?.ToEnum<NetworkInterfaceStatus>() ?? NetworkInterfaceStatus.Down; // var model = new NetworkInterface { // Device = dev, // Configuration = conf, // HardwareConfiguration = hwConf, // Status = typedStatus, // AdditionalConfigurations = confs == null ? new List<string>() : StringExtensions.SplitToList(confs), // GatewayConfiguration = gwConf // }; // Network2Configuration.AddInterfaceSetting(model); // return HttpStatusCode.OK; //}; Post["/network2/interface2"] = x => { string conf = Request.Form.Config; var model = JsonConvert.DeserializeObject <List <NetworkInterface> >(conf); Network2Configuration.SaveInterfaceSetting(model); return(HttpStatusCode.OK); }; //Post["/network2/interface/del"] = x => { // string dev = Request.Form.Device; // Network2Configuration.RemoveInterfaceSetting(dev); // return HttpStatusCode.OK; //}; Post["/network2/add/bond"] = x => { string name = Request.Form.Name; try { CommandLauncher.Launch("bond-set", new Dictionary <string, string> { { "$bond", name } }); ConsoleLogger.Log($"created bond {name}"); } catch (Exception ex) { ConsoleLogger.Error(ex.Message); } return(HttpStatusCode.OK); }; Post["/network2/add/bridge"] = x => { string name = Request.Form.Name; try { CommandLauncher.Launch("brctl-add", new Dictionary <string, string> { { "$bridge", name } }); ConsoleLogger.Log($"created bridge {name}"); } catch (Exception ex) { ConsoleLogger.Error(ex.Message); } return(HttpStatusCode.OK); }; }
internal static ContainerGroupData DeserializeContainerGroupData(JsonElement element) { Optional <ManagedServiceIdentity> identity = default; Optional <IList <string> > zones = default; IDictionary <string, string> tags = default; AzureLocation location = default; ResourceIdentifier id = default; string name = default; ResourceType type = default; SystemData systemData = default; Optional <string> provisioningState = default; IList <ContainerInstanceContainer> containers = default; Optional <IList <ImageRegistryCredential> > imageRegistryCredentials = default; Optional <ContainerGroupRestartPolicy> restartPolicy = default; Optional <IPAddress> ipAddress = default; OperatingSystemTypes osType = default; Optional <IList <ContainerInstanceVolume> > volumes = default; Optional <ContainerGroupPropertiesInstanceView> instanceView = default; Optional <ContainerGroupDiagnostics> diagnostics = default; Optional <IList <ContainerGroupSubnetId> > subnetIds = default; Optional <DnsConfiguration> dnsConfig = default; Optional <ContainerGroupSku> sku = default; Optional <Models.EncryptionProperties> encryptionProperties = default; Optional <IList <InitContainerDefinitionContent> > initContainers = default; foreach (var property in element.EnumerateObject()) { if (property.NameEquals("identity")) { if (property.Value.ValueKind == JsonValueKind.Null) { property.ThrowNonNullablePropertyIsNull(); continue; } identity = JsonSerializer.Deserialize <ManagedServiceIdentity>(property.Value.ToString()); continue; } if (property.NameEquals("zones")) { if (property.Value.ValueKind == JsonValueKind.Null) { property.ThrowNonNullablePropertyIsNull(); continue; } List <string> array = new List <string>(); foreach (var item in property.Value.EnumerateArray()) { array.Add(item.GetString()); } zones = array; continue; } if (property.NameEquals("tags")) { Dictionary <string, string> dictionary = new Dictionary <string, string>(); foreach (var property0 in property.Value.EnumerateObject()) { dictionary.Add(property0.Name, property0.Value.GetString()); } tags = dictionary; continue; } if (property.NameEquals("location")) { location = new AzureLocation(property.Value.GetString()); continue; } if (property.NameEquals("id")) { id = new ResourceIdentifier(property.Value.GetString()); continue; } if (property.NameEquals("name")) { name = property.Value.GetString(); continue; } if (property.NameEquals("type")) { type = new ResourceType(property.Value.GetString()); continue; } if (property.NameEquals("systemData")) { systemData = JsonSerializer.Deserialize <SystemData>(property.Value.ToString()); continue; } if (property.NameEquals("properties")) { if (property.Value.ValueKind == JsonValueKind.Null) { property.ThrowNonNullablePropertyIsNull(); continue; } foreach (var property0 in property.Value.EnumerateObject()) { if (property0.NameEquals("provisioningState")) { provisioningState = property0.Value.GetString(); continue; } if (property0.NameEquals("containers")) { List <ContainerInstanceContainer> array = new List <ContainerInstanceContainer>(); foreach (var item in property0.Value.EnumerateArray()) { array.Add(ContainerInstanceContainer.DeserializeContainerInstanceContainer(item)); } containers = array; continue; } if (property0.NameEquals("imageRegistryCredentials")) { if (property0.Value.ValueKind == JsonValueKind.Null) { property0.ThrowNonNullablePropertyIsNull(); continue; } List <ImageRegistryCredential> array = new List <ImageRegistryCredential>(); foreach (var item in property0.Value.EnumerateArray()) { array.Add(ImageRegistryCredential.DeserializeImageRegistryCredential(item)); } imageRegistryCredentials = array; continue; } if (property0.NameEquals("restartPolicy")) { if (property0.Value.ValueKind == JsonValueKind.Null) { property0.ThrowNonNullablePropertyIsNull(); continue; } restartPolicy = new ContainerGroupRestartPolicy(property0.Value.GetString()); continue; } if (property0.NameEquals("ipAddress")) { if (property0.Value.ValueKind == JsonValueKind.Null) { property0.ThrowNonNullablePropertyIsNull(); continue; } ipAddress = IPAddress.DeserializeIPAddress(property0.Value); continue; } if (property0.NameEquals("osType")) { osType = new OperatingSystemTypes(property0.Value.GetString()); continue; } if (property0.NameEquals("volumes")) { if (property0.Value.ValueKind == JsonValueKind.Null) { property0.ThrowNonNullablePropertyIsNull(); continue; } List <ContainerInstanceVolume> array = new List <ContainerInstanceVolume>(); foreach (var item in property0.Value.EnumerateArray()) { array.Add(ContainerInstanceVolume.DeserializeContainerInstanceVolume(item)); } volumes = array; continue; } if (property0.NameEquals("instanceView")) { if (property0.Value.ValueKind == JsonValueKind.Null) { property0.ThrowNonNullablePropertyIsNull(); continue; } instanceView = ContainerGroupPropertiesInstanceView.DeserializeContainerGroupPropertiesInstanceView(property0.Value); continue; } if (property0.NameEquals("diagnostics")) { if (property0.Value.ValueKind == JsonValueKind.Null) { property0.ThrowNonNullablePropertyIsNull(); continue; } diagnostics = ContainerGroupDiagnostics.DeserializeContainerGroupDiagnostics(property0.Value); continue; } if (property0.NameEquals("subnetIds")) { if (property0.Value.ValueKind == JsonValueKind.Null) { property0.ThrowNonNullablePropertyIsNull(); continue; } List <ContainerGroupSubnetId> array = new List <ContainerGroupSubnetId>(); foreach (var item in property0.Value.EnumerateArray()) { array.Add(ContainerGroupSubnetId.DeserializeContainerGroupSubnetId(item)); } subnetIds = array; continue; } if (property0.NameEquals("dnsConfig")) { if (property0.Value.ValueKind == JsonValueKind.Null) { property0.ThrowNonNullablePropertyIsNull(); continue; } dnsConfig = DnsConfiguration.DeserializeDnsConfiguration(property0.Value); continue; } if (property0.NameEquals("sku")) { if (property0.Value.ValueKind == JsonValueKind.Null) { property0.ThrowNonNullablePropertyIsNull(); continue; } sku = new ContainerGroupSku(property0.Value.GetString()); continue; } if (property0.NameEquals("encryptionProperties")) { if (property0.Value.ValueKind == JsonValueKind.Null) { property0.ThrowNonNullablePropertyIsNull(); continue; } encryptionProperties = Models.EncryptionProperties.DeserializeEncryptionProperties(property0.Value); continue; } if (property0.NameEquals("initContainers")) { if (property0.Value.ValueKind == JsonValueKind.Null) { property0.ThrowNonNullablePropertyIsNull(); continue; } List <InitContainerDefinitionContent> array = new List <InitContainerDefinitionContent>(); foreach (var item in property0.Value.EnumerateArray()) { array.Add(InitContainerDefinitionContent.DeserializeInitContainerDefinitionContent(item)); } initContainers = array; continue; } } continue; } } return(new ContainerGroupData(id, name, type, systemData, tags, location, Optional.ToList(zones), identity, provisioningState.Value, containers, Optional.ToList(imageRegistryCredentials), Optional.ToNullable(restartPolicy), ipAddress.Value, osType, Optional.ToList(volumes), instanceView.Value, diagnostics.Value, Optional.ToList(subnetIds), dnsConfig.Value, Optional.ToNullable(sku), encryptionProperties.Value, Optional.ToList(initContainers))); }
public async Task TestCreateRecords() { string domainName = CreateRandomDomainName(); IDnsService provider = CreateProvider(); using (CancellationTokenSource cancellationTokenSource = new CancellationTokenSource(TestTimeout(TimeSpan.FromSeconds(60)))) { DnsConfiguration configuration = new DnsConfiguration( new DnsDomainConfiguration( name: domainName, timeToLive: default(TimeSpan?), emailAddress: "admin@" + domainName, comment: "Integration test domain", records: new DnsDomainRecordConfiguration[] { }, subdomains: new DnsSubdomainConfiguration[] { })); DnsJob <DnsDomains> createResponse = await provider.CreateDomainsAsync(configuration, AsyncCompletionOption.RequestCompleted, cancellationTokenSource.Token, null); IEnumerable <DnsDomain> createdDomains = Enumerable.Empty <DnsDomain>(); if (createResponse.Status == DnsJobStatus.Error) { Console.WriteLine(createResponse.Error.ToString(Formatting.Indented)); Assert.Fail(); } else { Console.WriteLine(JsonConvert.SerializeObject(createResponse.Response, Formatting.Indented)); createdDomains = createResponse.Response.Domains; } ReadOnlyCollection <DnsDomain> domains = await ListAllDomainsAsync(provider, domainName, null, cancellationTokenSource.Token); Assert.IsNotNull(domains); Assert.AreEqual(1, domains.Count); foreach (var domain in domains) { Console.WriteLine(); Console.WriteLine("Domain: {0} ({1})", domain.Name, domain.Id); Console.WriteLine(); Console.WriteLine(await JsonConvert.SerializeObjectAsync(domain, Formatting.Indented)); } string originalData = "127.0.0.1"; string updatedData = "192.168.0.1"; string originalCommentValue = "Integration test record"; string updatedCommentValue = "Integration test record 2"; TimeSpan?originalTimeToLive; TimeSpan?updatedTimeToLive = TimeSpan.FromMinutes(12); DomainId domainId = createResponse.Response.Domains[0].Id; DnsDomainRecordConfiguration[] recordConfigurations = { new DnsDomainRecordConfiguration( type: DnsRecordType.A, name: string.Format("www.{0}",domainName), data: originalData, timeToLive: null, comment: originalCommentValue, priority: null) }; DnsJob <DnsRecordsList> recordsResponse = await provider.AddRecordsAsync(domainId, recordConfigurations, AsyncCompletionOption.RequestCompleted, cancellationTokenSource.Token, null); Assert.IsNotNull(recordsResponse.Response); Assert.IsNotNull(recordsResponse.Response.Records); DnsRecord[] records = recordsResponse.Response.Records.ToArray(); Assert.AreEqual(recordConfigurations.Length, records.Length); originalTimeToLive = records[0].TimeToLive; Assert.AreNotEqual(originalTimeToLive, updatedTimeToLive); Assert.AreEqual(originalData, records[0].Data); Assert.AreEqual(originalTimeToLive, records[0].TimeToLive); Assert.AreEqual(originalCommentValue, records[0].Comment); foreach (var record in records) { Console.WriteLine(); Console.WriteLine("Record: {0} ({1})", record.Name, record.Id); Console.WriteLine(); Console.WriteLine(await JsonConvert.SerializeObjectAsync(record, Formatting.Indented)); } DnsDomainRecordUpdateConfiguration recordUpdateConfiguration = new DnsDomainRecordUpdateConfiguration(records[0], records[0].Name, comment: updatedCommentValue); await provider.UpdateRecordsAsync(domainId, new[] { recordUpdateConfiguration }, AsyncCompletionOption.RequestCompleted, cancellationTokenSource.Token, null); DnsRecord updatedRecord = await provider.ListRecordDetailsAsync(domainId, records[0].Id, cancellationTokenSource.Token); Assert.IsNotNull(updatedRecord); Assert.AreEqual(originalData, updatedRecord.Data); Assert.AreEqual(originalTimeToLive, updatedRecord.TimeToLive); Assert.AreEqual(updatedCommentValue, updatedRecord.Comment); recordUpdateConfiguration = new DnsDomainRecordUpdateConfiguration(records[0], records[0].Name, timeToLive: updatedTimeToLive); await provider.UpdateRecordsAsync(domainId, new[] { recordUpdateConfiguration }, AsyncCompletionOption.RequestCompleted, cancellationTokenSource.Token, null); updatedRecord = await provider.ListRecordDetailsAsync(domainId, records[0].Id, cancellationTokenSource.Token); Assert.IsNotNull(updatedRecord); Assert.AreEqual(originalData, updatedRecord.Data); Assert.AreEqual(updatedTimeToLive, updatedRecord.TimeToLive); Assert.AreEqual(updatedCommentValue, updatedRecord.Comment); recordUpdateConfiguration = new DnsDomainRecordUpdateConfiguration(records[0], records[0].Name, data: updatedData); await provider.UpdateRecordsAsync(domainId, new[] { recordUpdateConfiguration }, AsyncCompletionOption.RequestCompleted, cancellationTokenSource.Token, null); updatedRecord = await provider.ListRecordDetailsAsync(domainId, records[0].Id, cancellationTokenSource.Token); Assert.IsNotNull(updatedRecord); Assert.AreEqual(updatedData, updatedRecord.Data); Assert.AreEqual(updatedTimeToLive, updatedRecord.TimeToLive); Assert.AreEqual(updatedCommentValue, updatedRecord.Comment); await provider.RemoveRecordsAsync(domainId, new[] { records[0].Id }, AsyncCompletionOption.RequestCompleted, cancellationTokenSource.Token, null); DnsJob deleteResponse = await provider.RemoveDomainsAsync(createdDomains.Select(i => i.Id), false, AsyncCompletionOption.RequestCompleted, cancellationTokenSource.Token, null); if (deleteResponse.Status == DnsJobStatus.Error) { Console.WriteLine(deleteResponse.Error.ToString(Formatting.Indented)); Assert.Fail("Failed to delete temporary domain created during the integration test."); } } }
public async Task TestDomainExportImport() { string domainName = CreateRandomDomainName(); IDnsService provider = CreateProvider(); using (CancellationTokenSource cancellationTokenSource = new CancellationTokenSource(TestTimeout(TimeSpan.FromSeconds(60)))) { List <DomainId> domainsToRemove = new List <DomainId>(); DnsConfiguration configuration = new DnsConfiguration( new DnsDomainConfiguration( name: domainName, timeToLive: default(TimeSpan?), emailAddress: "admin@" + domainName, comment: "Integration test domain", records: new DnsDomainRecordConfiguration[] { }, subdomains: new DnsSubdomainConfiguration[] { })); DnsJob <DnsDomains> createResponse = await provider.CreateDomainsAsync(configuration, AsyncCompletionOption.RequestCompleted, cancellationTokenSource.Token, null); if (createResponse.Status == DnsJobStatus.Error) { Console.WriteLine(createResponse.Error.ToString(Formatting.Indented)); Assert.Fail("Failed to create a test domain."); } else { Console.WriteLine(JsonConvert.SerializeObject(createResponse.Response, Formatting.Indented)); domainsToRemove.AddRange(createResponse.Response.Domains.Select(i => i.Id)); } DnsJob <ExportedDomain> exportedDomain = await provider.ExportDomainAsync(createResponse.Response.Domains[0].Id, AsyncCompletionOption.RequestCompleted, cancellationTokenSource.Token, null); if (exportedDomain.Status == DnsJobStatus.Error) { Console.WriteLine(exportedDomain.Error.ToString(Formatting.Indented)); Assert.Fail("Failed to export test domain."); } Assert.AreEqual(DnsJobStatus.Completed, exportedDomain.Status); Assert.IsNotNull(exportedDomain.Response); Console.WriteLine("Exported domain:"); Console.WriteLine(JsonConvert.SerializeObject(exportedDomain.Response, Formatting.Indented)); Console.WriteLine(); Console.WriteLine("Formatted exported output:"); Console.WriteLine(exportedDomain.Response.Contents); Assert.IsNotNull(exportedDomain.Response.Id); Assert.IsNotNull(exportedDomain.Response.AccountId); Assert.IsFalse(string.IsNullOrEmpty(exportedDomain.Response.Contents)); Assert.IsNotNull(exportedDomain.Response.ContentType); DnsJob deleteResponse = await provider.RemoveDomainsAsync(domainsToRemove, false, AsyncCompletionOption.RequestCompleted, cancellationTokenSource.Token, null); if (deleteResponse.Status == DnsJobStatus.Error) { Console.WriteLine(deleteResponse.Error.ToString(Formatting.Indented)); Assert.Fail("Failed to delete temporary domain created during the integration test."); } domainsToRemove.Clear(); SerializedDomain serializedDomain = new SerializedDomain( RemoveDefaultNameserverEntries(exportedDomain.Response.Contents), exportedDomain.Response.ContentType); DnsJob <DnsDomains> importedDomain = await provider.ImportDomainAsync(new[] { serializedDomain }, AsyncCompletionOption.RequestCompleted, cancellationTokenSource.Token, null); if (importedDomain.Status == DnsJobStatus.Error) { Console.WriteLine(importedDomain.Error.ToString(Formatting.Indented)); Assert.Fail("Failed to import the test domain."); } else { Console.WriteLine(JsonConvert.SerializeObject(importedDomain.Response, Formatting.Indented)); domainsToRemove.AddRange(importedDomain.Response.Domains.Select(i => i.Id)); } deleteResponse = await provider.RemoveDomainsAsync(domainsToRemove, false, AsyncCompletionOption.RequestCompleted, cancellationTokenSource.Token, null); if (deleteResponse.Status == DnsJobStatus.Error) { Console.WriteLine(deleteResponse.Error.ToString(Formatting.Indented)); Assert.Fail("Failed to delete temporary domain created during the integration test."); } } }