Example #1
0
        public void CRUDSecurityGroups()
        {
            string name          = "dotnetsdk" + DateTime.Now.Ticks;
            var    createRequest = new CreateClusterSecurityGroupRequest()
            {
                ClusterSecurityGroupName = name, Description = "Description"
            };
            CreateClusterSecurityGroupResponse createResponse = Client.CreateClusterSecurityGroup(createRequest);

            try
            {
                var descResponse = Client.DescribeClusterSecurityGroups(new DescribeClusterSecurityGroupsRequest()
                {
                    ClusterSecurityGroupName = name
                });
                Assert.AreEqual(1, descResponse.ClusterSecurityGroups.Count);
                Assert.AreEqual(name, descResponse.ClusterSecurityGroups[0].ClusterSecurityGroupName);

                var authRequest = new AuthorizeClusterSecurityGroupIngressRequest()
                {
                    ClusterSecurityGroupName = name, CIDRIP = "0.0.0.0/0"
                };
                Client.AuthorizeClusterSecurityGroupIngress(authRequest);

                descResponse = Client.DescribeClusterSecurityGroups(new DescribeClusterSecurityGroupsRequest()
                {
                    ClusterSecurityGroupName = name
                });
                Assert.AreEqual(1, descResponse.ClusterSecurityGroups[0].IPRanges.Count);
                Assert.AreEqual("0.0.0.0/0", descResponse.ClusterSecurityGroups[0].IPRanges[0].CIDRIP);

                var revokeRequest = new RevokeClusterSecurityGroupIngressRequest()
                {
                    ClusterSecurityGroupName = name, CIDRIP = "0.0.0.0/0"
                };
                Client.RevokeClusterSecurityGroupIngress(revokeRequest);

                descResponse = Client.DescribeClusterSecurityGroups(new DescribeClusterSecurityGroupsRequest()
                {
                    ClusterSecurityGroupName = name
                });
                Assert.AreEqual(0, descResponse.ClusterSecurityGroups[0].IPRanges.Count);
            }
            finally
            {
                Client.DeleteClusterSecurityGroup(new DeleteClusterSecurityGroupRequest()
                {
                    ClusterSecurityGroupName = name
                });
                var descResponse = Client.DescribeClusterSecurityGroups(new DescribeClusterSecurityGroupsRequest());
                Assert.IsNull(descResponse.ClusterSecurityGroups.FirstOrDefault(x => x.ClusterSecurityGroupName == name));
            }
        }
Example #2
0
        public void CRUDSecurityGroups()
        {
            string name          = "dotnetsdk" + DateTime.Now.Ticks;
            var    createRequest = new CreateClusterSecurityGroupRequest()
            {
                ClusterSecurityGroupName = name, Description = "Description"
            };
            CreateClusterSecurityGroupResponse createResponse = null;

            try
            {
                createResponse = Client.CreateClusterSecurityGroupAsync(createRequest).Result;
                var descResponse = Client.DescribeClusterSecurityGroupsAsync(new DescribeClusterSecurityGroupsRequest()
                {
                    ClusterSecurityGroupName = name
                }).Result;
                Assert.AreEqual(1, descResponse.ClusterSecurityGroups.Count);
                Assert.AreEqual(name, descResponse.ClusterSecurityGroups[0].ClusterSecurityGroupName);

                var authRequest = new AuthorizeClusterSecurityGroupIngressRequest()
                {
                    ClusterSecurityGroupName = name, CIDRIP = "0.0.0.0/0"
                };
                Client.AuthorizeClusterSecurityGroupIngressAsync(authRequest).Wait();

                descResponse = Client.DescribeClusterSecurityGroupsAsync(new DescribeClusterSecurityGroupsRequest()
                {
                    ClusterSecurityGroupName = name
                }).Result;
                Assert.AreEqual(1, descResponse.ClusterSecurityGroups[0].IPRanges.Count);
                Assert.AreEqual("0.0.0.0/0", descResponse.ClusterSecurityGroups[0].IPRanges[0].CIDRIP);

                var revokeRequest = new RevokeClusterSecurityGroupIngressRequest()
                {
                    ClusterSecurityGroupName = name, CIDRIP = "0.0.0.0/0"
                };
                Client.RevokeClusterSecurityGroupIngressAsync(revokeRequest).Wait();

                descResponse = Client.DescribeClusterSecurityGroupsAsync(new DescribeClusterSecurityGroupsRequest()
                {
                    ClusterSecurityGroupName = name
                }).Result;
                Assert.AreEqual(0, descResponse.ClusterSecurityGroups[0].IPRanges.Count);
            }
            catch (AmazonRedshiftException e)
            {
                // This test does not work for VPC by default accounts so skip the test.
                if (!string.Equals(e.Message, "VPC-by-Default customers cannot use cluster security groups"))
                {
                    throw;
                }
            }
            finally
            {
                if (createResponse != null)
                {
                    Client.DeleteClusterSecurityGroupAsync(new DeleteClusterSecurityGroupRequest()
                    {
                        ClusterSecurityGroupName = name
                    }).Wait();
                    var descResponse = Client.DescribeClusterSecurityGroupsAsync(new DescribeClusterSecurityGroupsRequest()).Result;
                    Assert.IsNull(descResponse.ClusterSecurityGroups.FirstOrDefault(x => x.ClusterSecurityGroupName == name));
                }
            }
        }