private static async Task clearRouteRulesFromDefaultRouteTable(VirtualNetworkClient virtualNetworkClient, Vcn vcn) { List <RouteRule> routeRules = new List <RouteRule>(); UpdateRouteTableDetails updateRouteTableDetails = new UpdateRouteTableDetails { RouteRules = routeRules }; UpdateRouteTableRequest updateRouteTableRequest = new UpdateRouteTableRequest { UpdateRouteTableDetails = updateRouteTableDetails, RtId = vcn.DefaultRouteTableId }; await virtualNetworkClient.UpdateRouteTable(updateRouteTableRequest); WaiterConfiguration waiterConfiguration = new WaiterConfiguration { MaxAttempts = 20, GetNextDelayInSeconds = DelayStrategy.GetExponentialDelayInSeconds }; GetRouteTableRequest getRouteTableRequest = new GetRouteTableRequest { RtId = vcn.DefaultRouteTableId }; virtualNetworkClient.Waiters.ForRouteTable(getRouteTableRequest, waiterConfiguration, RouteTable.LifecycleStateEnum.Available).Execute(); logger.Info($"Cleared route rules from route table: {vcn.DefaultRouteTableId}"); }
/** * Configure the default RouteTable of the specified InternetGateway to ensure it * contains a single outbound route for all traffic. * * NB: You should restrict these routes further if you keep this piece of * OCI infrastructure. * * @param vcnClient the service client to use to query a RouteTable. * @param routeTableId of the default route table associated with the VCN. * @param igId of the RouteTable's associated InternetGateway. */ private static async Task AddInternetGatewayToDefaultRouteTable(VirtualNetworkClient vcnClient, string routeTableId, string igId) { GetRouteTableRequest getRouteTableRequest = new GetRouteTableRequest { RtId = routeTableId }; GetRouteTableResponse getRouteTableResponse = await vcnClient.GetRouteTable(getRouteTableRequest); var routeRules = getRouteTableResponse.RouteTable.RouteRules; logger.Info("Current Route Rules in Default Route Table"); logger.Info("=========================================="); routeRules.ForEach(delegate(RouteRule rule) { logger.Info($"rule: {rule.NetworkEntityId}"); }); RouteRule internetAccessRoute = new RouteRule { Destination = "0.0.0.0/0", DestinationType = RouteRule.DestinationTypeEnum.CidrBlock, NetworkEntityId = igId }; routeRules.Add(internetAccessRoute); UpdateRouteTableDetails updateRouteTableDetails = new UpdateRouteTableDetails { RouteRules = routeRules, DisplayName = RouteTableName }; UpdateRouteTableRequest updateRouteTableRequest = new UpdateRouteTableRequest { UpdateRouteTableDetails = updateRouteTableDetails, RtId = routeTableId }; UpdateRouteTableResponse updateRouteTableResponse = await vcnClient.UpdateRouteTable(updateRouteTableRequest); getRouteTableResponse = vcnClient.Waiters.ForRouteTable(getRouteTableRequest, RouteTable.LifecycleStateEnum.Available).Execute(); routeRules = getRouteTableResponse.RouteTable.RouteRules; logger.Info("Updated Route Rules in Default Route Table"); logger.Info("=========================================="); routeRules.ForEach(delegate(RouteRule rule) { logger.Info($"rule: {rule.NetworkEntityId}\n"); }); }