/** * Creates subnets in a VCN and waits for the subnets to become available to use. * * @param vcnClient the service client to use to create the subnet * @param compartmentId the OCID of the compartment which owns the VCN * @param availabilityDomain the availability domain where the subnet will be created * @param cidrBlock the cidr block used to create subnet * @param vcnId the ID of the VCN which will own the subnet * @param subnetName the subnet that will be created * * @return the created subnets * */ private static async Task <List <Subnet> > CreateSubnet(VirtualNetworkClient virtualNetworkClient, string compartmentId, IdentityModels.AvailabilityDomain availabilityDomain, string vcnId) { List <Subnet> subnets = new List <Subnet>(); for (int i = 0; i < 2; i++) { CreateSubnetDetails createSubnetDetails = new CreateSubnetDetails { AvailabilityDomain = availabilityDomain.Name, CompartmentId = compartmentId, DisplayName = SubnetDisplayNames[i], CidrBlock = SubnetCidrBlocks[i], VcnId = vcnId }; CreateSubnetRequest createSubnetRequest = new CreateSubnetRequest { CreateSubnetDetails = createSubnetDetails }; CreateSubnetResponse createSubnetResponse = await virtualNetworkClient.CreateSubnet(createSubnetRequest); GetSubnetRequest getSubnetRequest = new GetSubnetRequest { SubnetId = createSubnetResponse.Subnet.Id }; GetSubnetResponse getSubnetResponse = virtualNetworkClient.Waiters.ForSubnet(getSubnetRequest, Subnet.LifecycleStateEnum.Available).Execute(); Subnet subnet = getSubnetResponse.Subnet; logger.Info($"Created Subnet: {subnet.Id}"); subnets.Add(getSubnetResponse.Subnet); } return(subnets); }
private static async Task <Subnet> createSubnet(VirtualNetworkClient virtualNetworkClient, string compartmentId, AvailabilityDomain availabilityDomain, string networkCidrBlock, Vcn vcn) { string subnetName = "oci-dotnet-sdk-example-subnet"; // In order to launch instances in a regional subnet, build this CreateSubnetDetails with // the field availablityDomain set to null. CreateSubnetDetails createSubnetDetails = new CreateSubnetDetails { AvailabilityDomain = availabilityDomain.Name, CompartmentId = compartmentId, DisplayName = subnetName, CidrBlock = networkCidrBlock, VcnId = vcn.Id, RouteTableId = vcn.DefaultRouteTableId }; CreateSubnetRequest createSubnetRequest = new CreateSubnetRequest { CreateSubnetDetails = createSubnetDetails }; CreateSubnetResponse createSubnetResponse = await virtualNetworkClient.CreateSubnet(createSubnetRequest); GetSubnetRequest getSubnetRequest = new GetSubnetRequest { SubnetId = createSubnetResponse.Subnet.Id }; GetSubnetResponse getSubnetResponse = virtualNetworkClient.Waiters.ForSubnet(getSubnetRequest, Subnet.LifecycleStateEnum.Available).Execute(); Subnet subnet = getSubnetResponse.Subnet; logger.Info($"Created Subnet: {subnet.Id}"); return(subnet); }
/** * Creates a subnet in a VCN and waits for the subnet to become available to use. * * @param vcnClient the service client to use to create the subnet. * @param compartmentId the OCID of the compartment which owns the VCN. * @param vcnId the ID of the VCN which will own the subnet. * @param availabilityDomain the availability domain where the subnet will be created. * @return the created subnet. */ private static async Task <Subnet> CreateSubnet(VirtualNetworkClient vcnClient, string compartmentId, string availabilityDomain, string vcnId) { logger.Info("Creating subnet"); CreateSubnetDetails createSubnetDetails = new CreateSubnetDetails { AvailabilityDomain = availabilityDomain, CompartmentId = compartmentId, DisplayName = SubnetName, CidrBlock = SubnetCidrBlock, VcnId = vcnId }; CreateSubnetRequest createSubnetRequest = new CreateSubnetRequest { CreateSubnetDetails = createSubnetDetails }; CreateSubnetResponse createSubnetResponse = await vcnClient.CreateSubnet(createSubnetRequest); GetSubnetRequest getSubnetRequest = new GetSubnetRequest { SubnetId = createSubnetResponse.Subnet.Id }; GetSubnetResponse getSubnetResponse = vcnClient.Waiters.ForSubnet(getSubnetRequest, Subnet.LifecycleStateEnum.Available).Execute(); Subnet subnet = getSubnetResponse.Subnet; logger.Info($"Created Subnet: {subnet.Id}"); return(subnet); }
public async Task <CreateSubnetResponse> CreateSubnetAsync(string vpcId, string cidrBlock) { var request = new CreateSubnetRequest(vpcId, cidrBlock); var response = await _cloudComputeClient.CreateSubnetAsync(request); return(response); }
/// <summary> /// 创建子网 /// </summary> public async Task <CreateSubnetResponse> CreateSubnetAsync(CreateSubnetRequest createSubnetRequest) { Dictionary <string, string> urlParam = new Dictionary <string, string>(); string urlPath = HttpUtils.AddUrlPath("/v1/{project_id}/subnets", urlParam); SdkRequest request = HttpUtils.InitSdkRequest(urlPath, "application/json;charset=UTF-8", createSubnetRequest); HttpResponseMessage response = await DoHttpRequestAsync("POST", request); return(JsonUtils.DeSerialize <CreateSubnetResponse>(response)); }
protected override void ProcessRecord() { base.ProcessRecord(); CreateSubnetRequest request; try { request = new CreateSubnetRequest { CreateSubnetDetails = CreateSubnetDetails, OpcRetryToken = OpcRetryToken }; response = client.CreateSubnet(request).GetAwaiter().GetResult(); WriteOutput(response, response.Subnet); FinishProcessing(response); } catch (Exception ex) { TerminatingErrorDuringExecution(ex); } }
private static void CreateSubnet(VpcClient client) { CreateSubnetRequest req = new CreateSubnetRequest { Body = new CreateSubnetRequestBody { Subnet = new CreateSubnetOption { Name = "test-subnet", Description = "Test subnet", Cidr = "192.168.0.0/24", GatewayIp = "192.168.0.1", VpcId = "c11800b4-9ae2-40fb-b8c6-51242fbb300c" } } }; try { var resp = client.CreateSubnet(req); Console.WriteLine(resp.Subnet.Id); Console.WriteLine(resp.HttpStatusCode); } catch (RequestTimeoutException requestTimeoutException) { Console.WriteLine(requestTimeoutException.ErrorMessage); } catch (ServiceResponseException clientRequestException) { Console.WriteLine(clientRequestException.HttpStatusCode); Console.WriteLine(clientRequestException.ErrorCode); Console.WriteLine(clientRequestException.ErrorMsg); } catch (ConnectionException connectionException) { Console.WriteLine(connectionException.ErrorMessage); } }
public async Task <IActionResult> Create([Bind("Name,Type,IPv4CIDR,SubnetSize")] Subnet subnet) { if (ModelState.IsValid) { subnet.editable = true; switch (Int32.Parse(subnet.SubnetSize)) { case 32766: subnet.IPv4CIDR = subnet.IPv4CIDR + "/17"; break; case 16382: subnet.IPv4CIDR = subnet.IPv4CIDR + "/18"; break; case 8190: subnet.IPv4CIDR = subnet.IPv4CIDR + "/19"; break; case 4094: subnet.IPv4CIDR = subnet.IPv4CIDR + "/20"; break; case 2046: subnet.IPv4CIDR = subnet.IPv4CIDR + "/21"; break; case 1022: subnet.IPv4CIDR = subnet.IPv4CIDR + "/22"; break; case 510: subnet.IPv4CIDR = subnet.IPv4CIDR + "/23"; break; case 254: subnet.IPv4CIDR = subnet.IPv4CIDR + "/24"; break; case 126: subnet.IPv4CIDR = subnet.IPv4CIDR + "/25"; break; case 62: subnet.IPv4CIDR = subnet.IPv4CIDR + "/26"; break; case 30: subnet.IPv4CIDR = subnet.IPv4CIDR + "/27"; break; case 14: subnet.IPv4CIDR = subnet.IPv4CIDR + "/28"; break; case 6: subnet.IPv4CIDR = subnet.IPv4CIDR + "/29"; break; case 2: subnet.IPv4CIDR = subnet.IPv4CIDR + "/30"; break; default: ViewData["Exception"] = "Input Invaild!"; return(View()); } VPC vpc = await _context.VPCs.FindAsync(1); subnet.VPCID = vpc.ID; DescribeSubnetsResponse response = await EC2Client.DescribeSubnetsAsync(new DescribeSubnetsRequest { Filters = new List <Amazon.EC2.Model.Filter> { new Amazon.EC2.Model.Filter { Name = "vpc-id", Values = new List <string> { vpc.AWSVPCReference } } } }); List <int> ipv6CIDR = new List <int>(); List <Amazon.EC2.Model.Subnet> subnets = response.Subnets; int ipv6Subnet = 0; string[] ipv6CIDRstr = new string[6]; DescribeVpcsResponse responseV = await EC2Client.DescribeVpcsAsync(new DescribeVpcsRequest { Filters = new List <Amazon.EC2.Model.Filter> { new Amazon.EC2.Model.Filter { Name = "vpc-id", Values = new List <string> { vpc.AWSVPCReference } } } }); Vpc vpcR = responseV.Vpcs[0]; VpcIpv6CidrBlockAssociation ipv6CidrBlockAssociation = vpcR.Ipv6CidrBlockAssociationSet[0]; ipv6CIDRstr = ipv6CidrBlockAssociation.Ipv6CidrBlock.Split(":"); if (subnets.Count != 0) { foreach (Amazon.EC2.Model.Subnet s in subnets) { List <SubnetIpv6CidrBlockAssociation> ipv6 = s.Ipv6CidrBlockAssociationSet; ipv6CIDRstr = ipv6.ElementAt(0).Ipv6CidrBlock.Split(":"); ipv6Subnet = int.Parse(ipv6CIDRstr[3].Substring(2, 2), System.Globalization.NumberStyles.HexNumber); ipv6CIDR.Add(ipv6Subnet); } Boolean flag = false; while (flag != true) { Console.WriteLine("Doing while loop"); Console.WriteLine(ipv6Subnet); Boolean passed = false; ++ipv6Subnet; foreach (int i in ipv6CIDR) { if (ipv6Subnet <= ipv6CIDR[i]) { passed = false; break; } else { passed = true; } } if (passed == true) { flag = true; } } } if (ipv6CIDRstr[5].Equals("/56")) { if (ipv6Subnet < 9) { subnet.IPv6CIDR = ipv6CIDRstr[0] + ":" + ipv6CIDRstr[1] + ":" + ipv6CIDRstr[2] + ":" + ipv6CIDRstr[3].Substring(0, 2) + "0" + ipv6Subnet.ToString() + "::/64"; } else { subnet.IPv6CIDR = ipv6CIDRstr[0] + ":" + ipv6CIDRstr[1] + ":" + ipv6CIDRstr[2] + ":" + ipv6CIDRstr[3].Substring(0, 2) + Convert.ToInt32(ipv6Subnet).ToString() + "::/64"; } } else { if (ipv6Subnet < 9) { subnet.IPv6CIDR = ipv6CIDRstr[0] + ":" + ipv6CIDRstr[1] + ":" + ipv6CIDRstr[2] + ":" + ipv6CIDRstr[3].Substring(0, 2) + "0" + ipv6Subnet.ToString() + "::" + ipv6CIDRstr[5]; } else { subnet.IPv6CIDR = ipv6CIDRstr[0] + ":" + ipv6CIDRstr[1] + ":" + ipv6CIDRstr[2] + ":" + ipv6CIDRstr[3].Substring(0, 2) + Convert.ToInt32(ipv6Subnet).ToString() + "::" + ipv6CIDRstr[5]; } } CreateSubnetRequest requestS = new CreateSubnetRequest() { CidrBlock = subnet.IPv4CIDR, VpcId = vpc.AWSVPCReference, Ipv6CidrBlock = subnet.IPv6CIDR }; try { CreateSubnetResponse responseS = await EC2Client.CreateSubnetAsync(requestS); if (responseS.HttpStatusCode == HttpStatusCode.OK) { subnet.AWSVPCSubnetReference = responseS.Subnet.SubnetId; await EC2Client.CreateTagsAsync(new CreateTagsRequest { Resources = new List <string> { responseS.Subnet.SubnetId }, Tags = new List <Tag> { new Tag("Name", subnet.Name) } }); AssociateRouteTableRequest requestRT = new AssociateRouteTableRequest { SubnetId = responseS.Subnet.SubnetId, }; if (subnet.Type == Models.SubnetType.Internet) { RouteTable Internet = await _context.RouteTables.FindAsync(2); requestRT.RouteTableId = Internet.AWSVPCRouteTableReference; subnet.RouteTableID = Internet.ID; await EC2Client.ModifySubnetAttributeAsync(new ModifySubnetAttributeRequest { SubnetId = responseS.Subnet.SubnetId, MapPublicIpOnLaunch = true }); await EC2Client.ModifySubnetAttributeAsync(new ModifySubnetAttributeRequest { SubnetId = responseS.Subnet.SubnetId, AssignIpv6AddressOnCreation = true }); } else if (subnet.Type == Models.SubnetType.Extranet) { RouteTable Extranet = await _context.RouteTables.FindAsync(3); requestRT.RouteTableId = Extranet.AWSVPCRouteTableReference; subnet.RouteTableID = Extranet.ID; } else if (subnet.Type == Models.SubnetType.Intranet) { RouteTable Intranet = await _context.RouteTables.FindAsync(2); requestRT.RouteTableId = Intranet.AWSVPCRouteTableReference; subnet.RouteTableID = Intranet.ID; } AssociateRouteTableResponse responseRT = await EC2Client.AssociateRouteTableAsync(requestRT); if (responseRT.HttpStatusCode == HttpStatusCode.OK) { subnet.AWSVPCRouteTableAssoicationID = responseRT.AssociationId; _context.Subnets.Add(subnet); await _context.SaveChangesAsync(); TempData["Result"] = "Successfully Created!"; return(RedirectToAction("Index")); } else { await EC2Client.DeleteSubnetAsync(new DeleteSubnetRequest { SubnetId = subnet.AWSVPCSubnetReference }); DescribeVpcsResponse responseD = await EC2Client.DescribeVpcsAsync(new DescribeVpcsRequest { Filters = new List <Amazon.EC2.Model.Filter> { new Amazon.EC2.Model.Filter { Name = "vpc-id", Values = new List <string> { vpc.AWSVPCReference } } } }); String[] IPBlocks = responseD.Vpcs[0].CidrBlock.Split("."); ViewData["IPCIDR"] = IPBlocks[0] + "." + IPBlocks[1]; ViewData["Exception"] = "Failed to Create!"; return(View()); } } else { DescribeVpcsResponse responseD = await EC2Client.DescribeVpcsAsync(new DescribeVpcsRequest { Filters = new List <Amazon.EC2.Model.Filter> { new Amazon.EC2.Model.Filter { Name = "vpc-id", Values = new List <string> { vpc.AWSVPCReference } } } }); String[] IPBlocks = responseD.Vpcs[0].CidrBlock.Split("."); ViewData["IPCIDR"] = IPBlocks[0] + "." + IPBlocks[1]; ViewData["Exception"] = "Failed to Create!"; ViewData["Exception"] = "Failed to Create!"; return(View()); } } catch (Amazon.EC2.AmazonEC2Exception e) { DescribeVpcsResponse responseD = await EC2Client.DescribeVpcsAsync(new DescribeVpcsRequest { Filters = new List <Amazon.EC2.Model.Filter> { new Amazon.EC2.Model.Filter { Name = "vpc-id", Values = new List <string> { vpc.AWSVPCReference } } } }); String[] IPBlocks = responseD.Vpcs[0].CidrBlock.Split("."); ViewData["IPCIDR"] = IPBlocks[0] + "." + IPBlocks[1]; ViewData["Exception"] = "Failed to Create!"; ViewData["Exception"] = e.Message; return(View()); } } else { return(View()); } }
/// <summary> /// 创建子网 /// </summary> /// <param name="request">请求参数信息</param> /// <returns>请求结果信息</returns> public async Task <CreateSubnetResponse> CreateSubnet(CreateSubnetRequest request) { return(await new CreateSubnetExecutor().Client(this).Execute <CreateSubnetResponse, CreateSubnetResult, CreateSubnetRequest>(request).ConfigureAwait(false)); }
/// <summary> /// 创建子网 /// </summary> /// <param name="request">请求参数信息</param> /// <returns>请求结果信息</returns> public CreateSubnetResponse CreateSubnet(CreateSubnetRequest request) { return(new CreateSubnetExecutor().Client(this).Execute <CreateSubnetResponse, CreateSubnetResult, CreateSubnetRequest>(request)); }
public bool load_subnet_id(string tag) { write_log(region + tag + " のサブネットを確認しています。"); try { var client = get_client(); var query_req = new DescribeSubnetsRequest(); query_req.Filters.Add(new Filter() { Name = "tag-value", Values = new List <string>() { Helper.build_name(setting_, "subnet_" + tag) } }); var query_res = client.DescribeSubnets(query_req); if (query_res.Subnets.Count != 0 && query_res.Subnets[0].VpcId.Equals(vpc_id)) { subnet_ids[tag] = query_res.Subnets[0].SubnetId; write_log(region + tag + " のサブネットは " + subnet_ids[tag] + " です"); return(true); } var create_req = new CreateSubnetRequest(); if (tag.Equals("a")) { create_req.CidrBlock = "10.0.0.0/24"; } else if (tag.Equals("b")) { create_req.CidrBlock = "10.0.1.0/24"; } else if (tag.Equals("c")) { create_req.CidrBlock = "10.0.2.0/24"; } else if (tag.Equals("d")) { create_req.CidrBlock = "10.0.3.0/24"; } else if (tag.Equals("e")) { create_req.CidrBlock = "10.0.4.0/24"; } else if (tag.Equals("f")) { create_req.CidrBlock = "10.0.5.0/24"; } else if (tag.Equals("g")) { create_req.CidrBlock = "10.0.6.0/24"; } create_req.VpcId = vpc_id; create_req.AvailabilityZone = region + tag; var create_res = client.CreateSubnet(create_req); subnet_ids[tag] = create_res.Subnet.SubnetId; write_log("サブネット " + subnet_ids[tag] + " を作成しました。"); set_name_tag(client, subnet_ids[tag], Helper.build_name(setting_, "subnet_" + tag)); } catch (Exception ex) { write_log("ERROR: " + ex.ToString()); return(false); } return(true); }