コード例 #1
0
        public static DescribeVpcsResponse Unmarshall(UnmarshallerContext context)
        {
            DescribeVpcsResponse describeVpcsResponse = new DescribeVpcsResponse();

            describeVpcsResponse.HttpResponse = context.HttpResponse;
            describeVpcsResponse.RequestId    = context.StringValue("DescribeVpcs.RequestId");
            describeVpcsResponse.TotalCount   = context.IntegerValue("DescribeVpcs.TotalCount");
            describeVpcsResponse.PageNumber   = context.IntegerValue("DescribeVpcs.PageNumber");
            describeVpcsResponse.PageSize     = context.IntegerValue("DescribeVpcs.PageSize");

            List <DescribeVpcsResponse.DescribeVpcs_Vpc> describeVpcsResponse_vpcs = new List <DescribeVpcsResponse.DescribeVpcs_Vpc>();

            for (int i = 0; i < context.Length("DescribeVpcs.Vpcs.Length"); i++)
            {
                DescribeVpcsResponse.DescribeVpcs_Vpc vpc = new DescribeVpcsResponse.DescribeVpcs_Vpc();
                vpc.VpcId           = context.StringValue("DescribeVpcs.Vpcs[" + i + "].VpcId");
                vpc.RegionId        = context.StringValue("DescribeVpcs.Vpcs[" + i + "].RegionId");
                vpc.Status          = context.StringValue("DescribeVpcs.Vpcs[" + i + "].Status");
                vpc.VpcName         = context.StringValue("DescribeVpcs.Vpcs[" + i + "].VpcName");
                vpc.CreationTime    = context.StringValue("DescribeVpcs.Vpcs[" + i + "].CreationTime");
                vpc.CidrBlock       = context.StringValue("DescribeVpcs.Vpcs[" + i + "].CidrBlock");
                vpc.VRouterId       = context.StringValue("DescribeVpcs.Vpcs[" + i + "].VRouterId");
                vpc.Description     = context.StringValue("DescribeVpcs.Vpcs[" + i + "].Description");
                vpc.IsDefault       = context.BooleanValue("DescribeVpcs.Vpcs[" + i + "].IsDefault");
                vpc.ResourceGroupId = context.StringValue("DescribeVpcs.Vpcs[" + i + "].ResourceGroupId");

                List <string> vpc_vSwitchIds = new List <string>();
                for (int j = 0; j < context.Length("DescribeVpcs.Vpcs[" + i + "].VSwitchIds.Length"); j++)
                {
                    vpc_vSwitchIds.Add(context.StringValue("DescribeVpcs.Vpcs[" + i + "].VSwitchIds[" + j + "]"));
                }
                vpc.VSwitchIds = vpc_vSwitchIds;

                List <string> vpc_userCidrs = new List <string>();
                for (int j = 0; j < context.Length("DescribeVpcs.Vpcs[" + i + "].UserCidrs.Length"); j++)
                {
                    vpc_userCidrs.Add(context.StringValue("DescribeVpcs.Vpcs[" + i + "].UserCidrs[" + j + "]"));
                }
                vpc.UserCidrs = vpc_userCidrs;

                List <string> vpc_natGatewayIds = new List <string>();
                for (int j = 0; j < context.Length("DescribeVpcs.Vpcs[" + i + "].NatGatewayIds.Length"); j++)
                {
                    vpc_natGatewayIds.Add(context.StringValue("DescribeVpcs.Vpcs[" + i + "].NatGatewayIds[" + j + "]"));
                }
                vpc.NatGatewayIds = vpc_natGatewayIds;

                List <string> vpc_routerTableIds = new List <string>();
                for (int j = 0; j < context.Length("DescribeVpcs.Vpcs[" + i + "].RouterTableIds.Length"); j++)
                {
                    vpc_routerTableIds.Add(context.StringValue("DescribeVpcs.Vpcs[" + i + "].RouterTableIds[" + j + "]"));
                }
                vpc.RouterTableIds = vpc_routerTableIds;

                describeVpcsResponse_vpcs.Add(vpc);
            }
            describeVpcsResponse.Vpcs = describeVpcsResponse_vpcs;

            return(describeVpcsResponse);
        }
        public static DescribeVpcsResponse Unmarshall(UnmarshallerContext _ctx)
        {
            DescribeVpcsResponse describeVpcsResponse = new DescribeVpcsResponse();

            describeVpcsResponse.HttpResponse = _ctx.HttpResponse;
            describeVpcsResponse.RequestId    = _ctx.StringValue("DescribeVpcs.RequestId");
            describeVpcsResponse.Success      = _ctx.BooleanValue("DescribeVpcs.Success");
            describeVpcsResponse.Code         = _ctx.StringValue("DescribeVpcs.Code");
            describeVpcsResponse.Message      = _ctx.StringValue("DescribeVpcs.Message");
            describeVpcsResponse.TotalCount   = _ctx.IntegerValue("DescribeVpcs.TotalCount");
            describeVpcsResponse.PageNumber   = _ctx.IntegerValue("DescribeVpcs.PageNumber");
            describeVpcsResponse.PageSize     = _ctx.IntegerValue("DescribeVpcs.PageSize");

            List <DescribeVpcsResponse.DescribeVpcs_Vpc> describeVpcsResponse_vpcs = new List <DescribeVpcsResponse.DescribeVpcs_Vpc>();

            for (int i = 0; i < _ctx.Length("DescribeVpcs.Vpcs.Length"); i++)
            {
                DescribeVpcsResponse.DescribeVpcs_Vpc vpc = new DescribeVpcsResponse.DescribeVpcs_Vpc();
                vpc.Name      = _ctx.StringValue("DescribeVpcs.Vpcs[" + i + "].Name");
                vpc.Id        = _ctx.StringValue("DescribeVpcs.Vpcs[" + i + "].Id");
                vpc.IsDefault = _ctx.BooleanValue("DescribeVpcs.Vpcs[" + i + "].IsDefault");
                vpc.CidrBlock = _ctx.StringValue("DescribeVpcs.Vpcs[" + i + "].CidrBlock");

                describeVpcsResponse_vpcs.Add(vpc);
            }
            describeVpcsResponse.Vpcs = describeVpcsResponse_vpcs;

            return(describeVpcsResponse);
        }
コード例 #3
0
        public override AmazonWebServiceResponse Unmarshall(XmlUnmarshallerContext context)
        {
            DescribeVpcsResponse response = new DescribeVpcsResponse();

            int originalDepth = context.CurrentDepth;
            int targetDepth   = originalDepth + 1;

            if (context.IsStartOfDocument)
            {
                targetDepth = 2;
            }

            while (context.ReadAtDepth(originalDepth))
            {
                if (context.IsStartElement || context.IsAttribute)
                {
                    if (context.TestExpression("vpcSet/item", targetDepth))
                    {
                        var unmarshaller = VpcUnmarshaller.Instance;
                        var item         = unmarshaller.Unmarshall(context);
                        response.Vpcs.Add(item);
                        continue;
                    }
                }
            }

            return(response);
        }
コード例 #4
0
        public override void Invoke(AWSCredentials creds, RegionEndpoint region, int maxItems)
        {
            AmazonEC2Config config = new AmazonEC2Config();

            config.RegionEndpoint = region;
            ConfigureClient(config);
            AmazonEC2Client client = new AmazonEC2Client(creds, config);

            DescribeVpcsResponse resp = new DescribeVpcsResponse();

            do
            {
                DescribeVpcsRequest req = new DescribeVpcsRequest
                {
                    NextToken = resp.NextToken
                    ,
                    MaxResults = maxItems
                };

                resp = client.DescribeVpcs(req);
                CheckError(resp.HttpStatusCode, "200");

                foreach (var obj in resp.Vpcs)
                {
                    AddObject(obj);
                }
            }while (!string.IsNullOrEmpty(resp.NextToken));
        }
コード例 #5
0
        internal static void WriteVpcs(IAmazonEC2 ec2, DateTime captureTime, string accountId, string region)
        {
            DescribeVpcsResponse vpcResponse = ec2.DescribeVpcs();

            foreach (Vpc vpc in vpcResponse.Vpcs)
            {
                var topologyVPC = new Data.Vpc()
                {
                    Id = vpc.VpcId
                };
                var nameTag = vpc.Tags.Find(t => t.Key == "Name");
                if (nameTag != null)
                {
                    topologyVPC.Name = nameTag.Value;
                }
                else
                {
                    topologyVPC.Name = vpc.VpcId;
                }
                topologyVPC.CidrBlock = vpc.CidrBlock;
                string vpcJson = JsonConvert.SerializeObject(topologyVPC);
                //var vpcJson = JsonConvert.SerializeObject(vpc);
                Common.UpdateTopology(captureTime, accountId, region, "vpc", vpc.VpcId, vpcJson, "UPDATE");
            }
        }
コード例 #6
0
        public async Task <List <Vpc> > DescribeVpcs()
        {
            DescribeVpcsRequest request = new DescribeVpcsRequest();

            DescribeVpcsResponse response = await _ec2Client.DescribeVpcsAsync();

            List <Vpc> vpcs = new List <Vpc>();

            foreach (var vpc in response.Vpcs)
            {
                vpcs.Add(new Vpc(vpc.VpcId, vpc.OwnerId, vpc.CidrBlock));
            }
            return(vpcs);
        }
コード例 #7
0
        public AwsObjectRetriever(string accessKeyID, string secretKeyID, Amazon.RegionEndpoint region, ILogProvider logProvider, IStatusProvider statusProvider)
        {
            _logProvider    = logProvider;
            _statusProvider = statusProvider;

            createEC2Client(accessKeyID, secretKeyID, region);
            createLBClient(accessKeyID, secretKeyID, region);
            REGION = region.SystemName;

            _vpcs      = GetAllVpcs();
            _instances = GetAllInstances();
            _volumes   = GetAllVolumes();
            Application.DoEvents();
            _Loadbalancers = GetAllLBs();
        }
コード例 #8
0
        public DescribeVpcModel MapForDescribe(DescribeVpcsResponse describeVpcsResponse)
        {
            var viewModel = new DescribeVpcModel();

            var firstVpc = describeVpcsResponse.Vpcs.Count > 0
                ? describeVpcsResponse.Vpcs.Where(vpc => vpc.IsDefault).First()
                : new Amazon.EC2.Model.Vpc();

            viewModel.VpcId     = firstVpc.VpcId;
            viewModel.State     = firstVpc.State.ToString();
            viewModel.CidrBlock = firstVpc.CidrBlock;
            viewModel.Tenancy   = firstVpc.InstanceTenancy.ToString();
            viewModel.OwnerId   = firstVpc.OwnerId;

            return(viewModel);
        }
        public static DescribeVpcsResponse Unmarshall(UnmarshallerContext context)
        {
            DescribeVpcsResponse describeVpcsResponse = new DescribeVpcsResponse()
            {
                HttpResponse = context.HttpResponse,
                RequestId    = context.StringValue("DescribeVpcs.RequestId"),
                TotalCount   = context.IntegerValue("DescribeVpcs.TotalCount"),
                PageNumber   = context.IntegerValue("DescribeVpcs.PageNumber"),
                PageSize     = context.IntegerValue("DescribeVpcs.PageSize")
            };
            List <DescribeVpcsResponse.Vpc> vpcs = new List <DescribeVpcsResponse.Vpc>();

            for (int i = 0; i < context.Length("DescribeVpcs.Vpcs.Length"); i++)
            {
                DescribeVpcsResponse.Vpc vpc = new DescribeVpcsResponse.Vpc()
                {
                    VpcId        = context.StringValue($"DescribeVpcs.Vpcs[{i}].VpcId"),
                    RegionId     = context.StringValue($"DescribeVpcs.Vpcs[{i}].RegionId"),
                    Status       = context.StringValue($"DescribeVpcs.Vpcs[{i}].Status"),
                    VpcName      = context.StringValue($"DescribeVpcs.Vpcs[{i}].VpcName"),
                    CreationTime = context.StringValue($"DescribeVpcs.Vpcs[{i}].CreationTime"),
                    CidrBlock    = context.StringValue($"DescribeVpcs.Vpcs[{i}].CidrBlock"),
                    VRouterId    = context.StringValue($"DescribeVpcs.Vpcs[{i}].VRouterId"),
                    Description  = context.StringValue($"DescribeVpcs.Vpcs[{i}].Description"),
                    IsDefault    = context.StringValue($"DescribeVpcs.Vpcs[{i}].IsDefault")
                };
                List <string> vSwitchIds = new List <string>();
                for (int j = 0; j < context.Length($"DescribeVpcs.Vpcs[{i}].VSwitchIds.Length"); j++)
                {
                    vSwitchIds.Add(context.StringValue($"DescribeVpcs.Vpcs[{i}].VSwitchIds[{j}]"));
                }
                vpc.VSwitchIds = vSwitchIds;

                List <string> userCidrs = new List <string>();
                for (int j = 0; j < context.Length($"DescribeVpcs.Vpcs[{i}].UserCidrs.Length"); j++)
                {
                    userCidrs.Add(context.StringValue($"DescribeVpcs.Vpcs[{i}].UserCidrs[{j}]"));
                }
                vpc.UserCidrs = userCidrs;

                vpcs.Add(vpc);
            }
            describeVpcsResponse.Vpcs = vpcs;

            return(describeVpcsResponse);
        }
コード例 #10
0
        public async Task disassociateAndDeleteDhcpOptionSet(string vpcid)
        {
            DescribeVpcsResponse response = await _ec2Client.DescribeVpcsAsync(new DescribeVpcsRequest {
                VpcIds = new List <string> {
                    vpcid
                }
            });

            string dhcpOptionsId = response.Vpcs[0].DhcpOptionsId;

            await _ec2Client.AssociateDhcpOptionsAsync(new AssociateDhcpOptionsRequest {
                VpcId         = vpcid,
                DhcpOptionsId = "default"
            });

            await _ec2Client.DeleteDhcpOptionsAsync(new DeleteDhcpOptionsRequest { DhcpOptionsId = dhcpOptionsId });
        }
コード例 #11
0
        public static void GetTopology()
        {
            IAmazonEC2                  ec2 = AWSClientFactory.CreateAmazonEC2Client();
            IAmazonAutoScaling          asg = AWSClientFactory.CreateAmazonAutoScalingClient();
            IAmazonElasticLoadBalancing elb = AWSClientFactory.CreateAmazonElasticLoadBalancingClient();

            DescribeVpcsResponse vpcResponse = ec2.DescribeVpcs();

            WriteFile("vpcs.csv", vpcResponse.Vpcs);

            DescribeInstancesResponse instanceResponse = ec2.DescribeInstances();
            var reservationIndex = 0;

            foreach (var reservation in instanceResponse.Reservations)
            {
                if (reservationIndex == 0)
                {
                    WriteFile("instances.csv", reservation.Instances);
                }
                else
                {
                    AppendFile("instances.csv", reservation.Instances);
                }
                reservationIndex++;
            }

            DescribeNetworkAclsResponse naclResponse = ec2.DescribeNetworkAcls();

            WriteFile("nacls.csv", naclResponse.NetworkAcls);

            Amazon.EC2.Model.DescribeTagsResponse tagsResponse = ec2.DescribeTags();
            WriteFile("tags.csv", tagsResponse.Tags);

            DescribeVolumesResponse volumesResponse = ec2.DescribeVolumes();

            WriteFile("volumes.csv", volumesResponse.Volumes);

            DescribeLoadBalancersResponse elbResponse = elb.DescribeLoadBalancers();

            WriteFile("elbs.csv", elbResponse.LoadBalancerDescriptions);

            DescribeInternetGatewaysResponse igResponse = ec2.DescribeInternetGateways();

            WriteFile("igs.csv", igResponse.InternetGateways);
        }
コード例 #12
0
        public void GetVpcs_Ok()
        {
            // Arrange
            var vpcs = new List <Vpc> {
                new Vpc()
            };
            var response = new DescribeVpcsResponse {
                Vpcs = vpcs
            };

            Ec2ClientMock.Setup(x => x.DescribeVpcs(It.IsAny <DescribeVpcsRequest>())).Returns(response);

            // Act
            var actualVpcs = NetworkService.GetVpcs();

            // Assert
            actualVpcs.Should().BeSameAs(vpcs);
        }
コード例 #13
0
        public override void Invoke(AWSCredentials creds, RegionEndpoint region, int maxItems)
        {
            AmazonEC2Config config = new AmazonEC2Config();

            config.RegionEndpoint = region;
            ConfigureClient(config);
            AmazonEC2Client client = new AmazonEC2Client(creds, config);

            DescribeVpcsResponse resp = new DescribeVpcsResponse();
            DescribeVpcsRequest  req  = new DescribeVpcsRequest
            {
            };

            resp = client.DescribeVpcs(req);
            CheckError(resp.HttpStatusCode, "200");

            foreach (var obj in resp.Vpcs)
            {
                AddObject(obj);
            }
        }
コード例 #14
0
        public static List <TcsData.Vpc> GetVpcs()
        {
            IAmazonEC2          ec2        = AWSClientFactory.CreateAmazonEC2Client();
            DescribeVpcsRequest vpcRequest = new DescribeVpcsRequest();
            var vpcList = new List <TcsData.Vpc>();

            try
            {
                DescribeVpcsResponse ec2Response = ec2.DescribeVpcs(vpcRequest);
                int numVpcs = 0;
                numVpcs = ec2Response.Vpcs.Count;
                foreach (var vpc in ec2Response.Vpcs)
                {
                    var tcsVpc = new TcsData.Vpc();
                    //tcsVpc.AvailableVolumes = vpc.
                }
            }
            catch (AmazonEC2Exception ex)
            {
            }
            return(vpcList);
        }
コード例 #15
0
        public override AmazonWebServiceResponse Unmarshall(XmlUnmarshallerContext context)
        {
            DescribeVpcsResponse response = new DescribeVpcsResponse();

            int targetDepth = 2;

            while (context.Read())
            {
                if (context.IsStartElement || context.IsAttribute)
                {
                    if (context.TestExpression("vpcSet/item", targetDepth))
                    {
                        response.Vpcs.Add(VpcUnmarshaller.GetInstance().Unmarshall(context));

                        continue;
                    }
                }
            }


            return(response);
        }
コード例 #16
0
        public async Task <IActionResult> Create()
        {
            if (_context.VPCs.ToList().Count == 0)
            {
                return(RedirectToAction("", "Home", ""));
            }
            VPC vpc = await _context.VPCs.FindAsync(1);

            DescribeVpcsResponse response = await EC2Client.DescribeVpcsAsync(new DescribeVpcsRequest
            {
                Filters = new List <Filter>
                {
                    new Filter("vpc-id", new List <string>
                    {
                        vpc.AWSVPCReference
                    })
                }
            });

            String[] IPBlocks = response.Vpcs[0].CidrBlock.Split(".");
            ViewData["IPCIDR"] = IPBlocks[0] + "." + IPBlocks[1];
            return(View());
        }
コード例 #17
0
        //public Dictionary<string, XmlDocument> _documentCache = new Dictionary<string, XmlDocument>();

        public AwsObjectRetriever(string accessKeyID, string secretKeyID, Amazon.RegionEndpoint region, ILogProvider logProvider, IStatusProvider statusProvider)
        {
            _logProvider    = logProvider;
            _statusProvider = statusProvider;

            createEC2Client(accessKeyID, secretKeyID, region);
            createLBClient(accessKeyID, secretKeyID, region);
            REGION = region.SystemName;

            try
            {
                _vpcs = GetAllVpcs();
                Application.DoEvents();
                _instances = GetAllInstances();
                Application.DoEvents();
                // _volumes = GetAllVolumes();
                // Application.DoEvents();
                _Loadbalancers = GetAllLBs();
            }
            catch (Exception ex)
            {
                MessageBox.Show("Error during accessing the AWS Resources. Error Message: " + ex.Message, "Access Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }
コード例 #18
0
ファイル: Window.cs プロジェクト: yaoshixin007/migAz
        private void Load_Items()
        {
            writeLog("GetToken_Click", "Start");

            lvwVirtualNetworks.Items.Clear();
            lvwVirtualMachines.Items.Clear();

            createEC2Client();


            instResponse = getEC2Instances();
            Application.DoEvents();

            //lblStatus.Text = "BUSY: Getting the VPC details";
            vpcResponse = getVPCs();
            Application.DoEvents();
            //List Instances


            if (instResponse != null)
            {
                lblStatus.Text = "BUSY: Processing Instances";
                if (instResponse.Reservations.Count > 0)
                {
                    foreach (var instanceResp in instResponse.Reservations)
                    {
                        foreach (var instance in instanceResp.Instances)
                        {
                            ListViewItem listItem = new ListViewItem(instance.InstanceId);
                            string       name     = "";
                            foreach (var tag in instance.Tags)
                            {
                                if (tag.Key == "Name")
                                {
                                    name = tag.Value;
                                }
                            }

                            listItem.SubItems.AddRange(new[] { name });
                            lvwVirtualMachines.Items.Add(listItem);
                            Application.DoEvents();
                        }
                    }
                }
                //List VPCs
                lblStatus.Text = "BUSY: Processing VPC";
                foreach (var vpc in vpcResponse.Vpcs)
                {
                    ListViewItem listItem = new ListViewItem(vpc.VpcId);
                    string       VpcName  = "";
                    foreach (var tag in vpc.Tags)
                    {
                        if (tag.Key == "Name")
                        {
                            VpcName = tag.Value;
                        }
                    }

                    listItem.SubItems.AddRange(new[] { VpcName });
                    lvwVirtualNetworks.Items.Add(listItem);
                    Application.DoEvents();
                }
            }
            btnChoosePath.Enabled = true;
            lblStatus.Text        = "Ready";
        }
コード例 #19
0
        internal void LaunchServer(ref bool actionSucceeded, ref string actionMessage)
        {
            try
            {
                string keyPairPath = string.Empty;
                LaunchRequest.KeyPairName = $"KeyPair-{Guid.NewGuid().ToString()}";
                while (!CreateKeyPair(LaunchRequest.KeyPairName, ref keyPairPath))
                {
                    LaunchRequest.KeyPairName = Guid.NewGuid().ToString();
                }

                DescribeVpcsRequest  vpcRequest  = new DescribeVpcsRequest();
                DescribeVpcsResponse vpcResponse = Ec2Client.DescribeVpcsAsync(vpcRequest).GetAwaiter().GetResult();

                Vpc defaultVPC = vpcResponse.Vpcs.Find(x => x.IsDefault); //get the default vpc

                List <Filter> subnetFilter = new List <Filter>()
                {
                    new Filter()
                    {
                        Name = "availability-zone", Values = new List <string>()
                        {
                            LaunchRequest.AvailabilityZone
                        }
                    },
                    new Filter()
                    {
                        Name = "vpc-id", Values = new List <string>()
                        {
                            defaultVPC.VpcId
                        }
                    }
                };

                DescribeSubnetsRequest subnetRequest = new DescribeSubnetsRequest();
                subnetRequest.Filters = subnetFilter;
                DescribeSubnetsResponse subnetResponse = Ec2Client.DescribeSubnetsAsync(subnetRequest).GetAwaiter().GetResult();
                Subnet defaultSubnet = subnetResponse.Subnets.FirstOrDefault();

                Filter SGFilter = new Filter
                {
                    Name   = "vpc-id",
                    Values = new List <string>()
                    {
                        defaultVPC.VpcId
                    }
                };

                DescribeSecurityGroupsRequest SGrequest = new DescribeSecurityGroupsRequest();
                SGrequest.Filters.Add(SGFilter);
                DescribeSecurityGroupsResponse SGresponse = Ec2Client.DescribeSecurityGroupsAsync(SGrequest).GetAwaiter().GetResult();
                SecurityGroup defaultSG = SGresponse.SecurityGroups.FirstOrDefault();

                InstanceNetworkInterfaceSpecification defaultENI = new InstanceNetworkInterfaceSpecification()
                {
                    DeviceIndex = 0,
                    SubnetId    = defaultSubnet.SubnetId,
                    Groups      = new List <string>()
                    {
                        defaultSG.GroupId
                    },
                    AssociatePublicIpAddress = true
                };

                List <InstanceNetworkInterfaceSpecification> enis = new List <InstanceNetworkInterfaceSpecification>()
                {
                    defaultENI
                };

                EbsBlockDevice ebsBlockDevice = new EbsBlockDevice
                {
                    VolumeSize = 10,
                    VolumeType = GetActualStorageType(LaunchRequest.StorageType)
                };
                BlockDeviceMapping blockDeviceMapping = new BlockDeviceMapping
                {
                    DeviceName = "/dev/xvda"
                };
                blockDeviceMapping.Ebs = ebsBlockDevice;

                var launchRequest = new RunInstancesRequest()
                {
                    ImageId             = GetImageID(LaunchRequest.AMIType),
                    InstanceType        = GetActualInstanceType(LaunchRequest.InstanceType),
                    MinCount            = LaunchRequest.NumOfInstances,
                    MaxCount            = LaunchRequest.NumOfInstances,
                    KeyName             = LaunchRequest.KeyPairName,
                    Placement           = new Placement(LaunchRequest.AvailabilityZone),
                    NetworkInterfaces   = enis,
                    BlockDeviceMappings = new List <BlockDeviceMapping>()
                    {
                        blockDeviceMapping
                    }
                };

                RunInstancesResponse launchResponse = Ec2Client.RunInstancesAsync(launchRequest).GetAwaiter().GetResult();

                List <String> instanceIds = new List <string>();
                foreach (Instance instance in launchResponse.Reservation.Instances)
                {
                    Console.WriteLine(instance.InstanceId);
                    instanceIds.Add(instance.InstanceId);
                }

                actionSucceeded = true;
                actionMessage   = $"The instance(s) are being launched. Please check the AWS Console to verify. {keyPairPath}";
            }
            catch (Exception ex)
            {
                context.Logger.LogLine($"ServerOperationsHelper::LaunchServer {ex.Message}");
                context.Logger.LogLine($"ServerOperationsHelper::LaunchServer {ex.StackTrace}");
                actionSucceeded = false;
                actionMessage   = $"Could not launch the server . Please contact your administrator.";
            }
        }
コード例 #20
0
        public void toname(string accessKey, string secretKey, TreeNode subscriptionNode, ILogProvider logProvider, IStatusProvider statusProvider)
        {
            List <Amazon.RegionEndpoint> regionsList = new List <Amazon.RegionEndpoint>();

            foreach (var region in Amazon.RegionEndpoint.EnumerableAllRegions)
            {
                try
                {
                    _awsObjectRetriever = new AwsObjectRetriever(accessKey, secretKey, region, logProvider, statusProvider);
                    //// todo, not needed in this method_templateGenerator = new TemplateGenerator(_logProvider, _statusProvider, _awsObjectRetriever, telemetryProvider);

                    TreeNode amazonRegionNode = new TreeNode(region.DisplayName);
                    amazonRegionNode.Text = region.DisplayName;
                    amazonRegionNode.Tag  = region;

                    //DescribeVolumesResponse ebsVolumesResponse;

                    statusProvider.UpdateStatus("BUSY: Getting the VPC details");
                    DescribeVpcsResponse vpcResponse = getVPCs();
                    Application.DoEvents();

                    statusProvider.UpdateStatus("BUSY: Processing VPC");
                    foreach (var vpc in vpcResponse.Vpcs)
                    {
                        MigAz.AWS.MigrationSource.VirtualNetwork sourceVirtualNetwork = new MigrationSource.VirtualNetwork(_awsObjectRetriever, vpc);
                        Azure.MigrationTarget.VirtualNetwork     targetVirtualNetwork = new Azure.MigrationTarget.VirtualNetwork(sourceVirtualNetwork);

                        TreeNode vpcTreeNode = new TreeNode(sourceVirtualNetwork.Id + " - " + sourceVirtualNetwork.Name);
                        vpcTreeNode.Tag = targetVirtualNetwork;
                        amazonRegionNode.Nodes.Add(vpcTreeNode);

                        Application.DoEvents();
                    }

                    DescribeInstancesResponse instResponse = getEC2Instances();
                    Application.DoEvents();

                    if (instResponse != null)
                    {
                        statusProvider.UpdateStatus("BUSY: Processing Instances");
                        if (instResponse.Reservations.Count > 0)
                        {
                            foreach (var instanceResp in instResponse.Reservations)
                            {
                                foreach (var instance in instanceResp.Instances)
                                {
                                    string name = "";
                                    foreach (var tag in instance.Tags)
                                    {
                                        if (tag.Key == "Name")
                                        {
                                            name = tag.Value;
                                        }
                                    }

                                    TreeNode instanceTreeNode = new TreeNode(instance.InstanceId + " - " + name);
                                    instanceTreeNode.Tag = instance;
                                    amazonRegionNode.Nodes.Add(instanceTreeNode);

                                    Application.DoEvents();
                                }
                            }
                        }
                    }



                    if (amazonRegionNode.Nodes.Count > 0)
                    {
                        subscriptionNode.Nodes.Add(amazonRegionNode);
                    }
                    else
                    {
                        logProvider.WriteLog("Load_Items", "Not adding Amazon Region '" + region.DisplayName + "' to Source Node list, as it contains no resources to export.");
                    }
                }
                catch (Exception exc)
                {
                    logProvider.WriteLog("Load_Items", "AWS Exception - " + region.DisplayName + ": " + exc.Message);
                }
            }
        }
コード例 #21
0
        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());
            }
        }
コード例 #22
0
ファイル: AWSRetriever.cs プロジェクト: halasznandras/migAz
        public void toname(string accessKey, string secretKey, TreeNode subscriptionNode)
        {
            List <Amazon.RegionEndpoint> regionsList = new List <Amazon.RegionEndpoint>();

            foreach (var region in Amazon.RegionEndpoint.EnumerableAllRegions)
            {
                try
                {
                    _awsObjectRetriever = new AwsObjectRetriever(accessKey, secretKey, region, _LogProvider, _StatusProvider);
                    //// todo, not needed in this method_templateGenerator = new TemplateGenerator(_logProvider, _statusProvider, _awsObjectRetriever, telemetryProvider);

                    TreeNode amazonRegionNode = new TreeNode(region.DisplayName);
                    amazonRegionNode.Text = region.DisplayName;
                    amazonRegionNode.Tag  = region;

                    //DescribeVolumesResponse ebsVolumesResponse;

                    _StatusProvider.UpdateStatus("BUSY: Getting the VPC details");
                    DescribeVpcsResponse vpcResponse = getVPCs();
                    Application.DoEvents();

                    List <Azure.MigrationTarget.VirtualNetwork> targetVirtualNetworks = new List <Azure.MigrationTarget.VirtualNetwork>();
                    _StatusProvider.UpdateStatus("BUSY: Processing VPC");
                    foreach (var vpc in vpcResponse.Vpcs)
                    {
                        MigAz.AWS.MigrationSource.VirtualNetwork sourceVirtualNetwork = new MigrationSource.VirtualNetwork(_awsObjectRetriever, vpc);
                        Azure.MigrationTarget.VirtualNetwork     targetVirtualNetwork = new Azure.MigrationTarget.VirtualNetwork(sourceVirtualNetwork, null);
                        targetVirtualNetworks.Add(targetVirtualNetwork);

                        TreeNode vpcTreeNode = new TreeNode(sourceVirtualNetwork.Id + " - " + sourceVirtualNetwork.Name);
                        vpcTreeNode.Tag              = targetVirtualNetwork;
                        vpcTreeNode.ImageKey         = "VirtualNetwork";
                        vpcTreeNode.SelectedImageKey = "VirtualNetwork";
                        amazonRegionNode.Nodes.Add(vpcTreeNode);

                        //    // todo, this is foreach subnet
                        //    foreach (Subnet subnet in subnets)
                        //    {
                        //        //QUES: Single Sec group?
                        //        // add Network Security Group if exists - 2 subnets - each acl is associated with both
                        //        List<Amazon.EC2.Model.NetworkAcl> networkAcls = _awsObjectRetriever.getNetworkAcls(subnetnode.SubnetId);
                        //        List<Amazon.EC2.Model.RouteTable> routeTable = _awsObjectRetriever.getRouteTables(subnetnode.SubnetId);



                        //        //var nodes = networkAcls.SelectSingleNode("DescribeNetworkAclsResponse ").SelectSingleNode("networkAclSet").SelectNodes("item");

                        //        if (networkAcls.Count > 0)
                        //        {
                        //            NetworkSecurityGroup networksecuritygroup = BuildNetworkSecurityGroup(networkAcls[0]);

                        //            //NetworkSecurityGroup networksecuritygroup = BuildNetworkSecurityGroup(subnet.name);

                        //            // Add NSG reference to the subnet
                        //            Reference networksecuritygroup_ref = new Reference();
                        //            networksecuritygroup_ref.id = "[concat(resourceGroup().id,'/providers/Microsoft.Network/networkSecurityGroups/" + networksecuritygroup.name + "')]";

                        //            properties.networkSecurityGroup = networksecuritygroup_ref;

                        //            // Add NSG dependsOn to the Virtual Network object
                        //            if (!virtualnetwork.dependsOn.Contains(networksecuritygroup_ref.id))
                        //            {
                        //                virtualnetwork.dependsOn.Add(networksecuritygroup_ref.id);
                        //            }

                        //        }

                        //        if (routeTable.Count > 0)
                        //        {
                        //            RouteTable routetable = BuildRouteTable(routeTable[0]);

                        //            if (routetable.properties != null)
                        //            {
                        //                // Add Route Table reference to the subnet
                        //                Reference routetable_ref = new Reference();
                        //                routetable_ref.id = "[concat(resourceGroup().id,'/providers/Microsoft.Network/routeTables/" + routetable.name + "')]";

                        //                properties.routeTable = routetable_ref;

                        //                // Add Route Table dependsOn to the Virtual Network object
                        //                if (!virtualnetwork.dependsOn.Contains(routetable_ref.id))
                        //                {
                        //                    virtualnetwork.dependsOn.Add(routetable_ref.id);
                        //                }
                        //            }
                        //        }
                        //    }

                        //}

                        Application.DoEvents();
                    }

                    DescribeInstancesResponse instResponse = getEC2Instances();
                    Application.DoEvents();

                    foreach (LoadBalancerDescription loadBalancerDescription in _awsObjectRetriever.GetAllLBs().LoadBalancerDescriptions)
                    {
                        MigAz.AWS.MigrationSource.LoadBalancer sourceLoadBalancer = new MigAz.AWS.MigrationSource.LoadBalancer(loadBalancerDescription);

                        Azure.MigrationTarget.LoadBalancer targetLoadBalancer = new Azure.MigrationTarget.LoadBalancer();
                        targetLoadBalancer.SetTargetName(loadBalancerDescription.LoadBalancerName, null);

                        Azure.MigrationTarget.FrontEndIpConfiguration targetFrontEndIpConfiguration = new Azure.MigrationTarget.FrontEndIpConfiguration(targetLoadBalancer);
                        targetFrontEndIpConfiguration.Name = "ipconfig1";        // can this come from Amazon?

                        if (loadBalancerDescription.Scheme != "internet-facing") // if internal load balancer
                        {
                            foreach (Azure.MigrationTarget.VirtualNetwork targetVirtualNetwork in targetVirtualNetworks)
                            {
                                if (targetVirtualNetwork.SourceVirtualNetwork != null)
                                {
                                    AWS.MigrationSource.VirtualNetwork amazonVirtualNetwork = (AWS.MigrationSource.VirtualNetwork)targetVirtualNetwork.SourceVirtualNetwork;
                                    if (amazonVirtualNetwork.Id == loadBalancerDescription.VPCId)
                                    {
                                        targetFrontEndIpConfiguration.TargetVirtualNetwork = targetVirtualNetwork;

                                        foreach (Azure.MigrationTarget.Subnet targetSubnet in targetVirtualNetwork.TargetSubnets)
                                        {
                                            if (targetSubnet.SourceSubnet.Id == loadBalancerDescription.Subnets[0])
                                            {
                                                targetFrontEndIpConfiguration.TargetSubnet = targetSubnet;
                                                break;
                                            }
                                        }

                                        break;
                                    }
                                }
                            }

                            targetFrontEndIpConfiguration.TargetPrivateIPAllocationMethod = IPAllocationMethodEnum.Static;
                            try
                            {
                                IPHostEntry host = Dns.GetHostEntry(loadBalancerDescription.DNSName);
                                targetFrontEndIpConfiguration.TargetPrivateIpAddress = host.AddressList[0].ToString();
                            }
                            catch
                            {
                                targetFrontEndIpConfiguration.TargetPrivateIPAllocationMethod = IPAllocationMethodEnum.Dynamic;
                            }
                        }
                        else // if external (public) load balancer
                        {
                            Azure.MigrationTarget.PublicIp targetPublicIp = new Azure.MigrationTarget.PublicIp();
                            targetPublicIp.SetTargetName(loadBalancerDescription.LoadBalancerName, null);
                            targetPublicIp.DomainNameLabel = loadBalancerDescription.LoadBalancerName;

                            targetLoadBalancer.LoadBalancerType    = Azure.MigrationTarget.LoadBalancerType.Public;
                            targetFrontEndIpConfiguration.PublicIp = targetPublicIp;

                            TreeNode loadBalancerPublicIpNode = new TreeNode(targetPublicIp.TargetName);
                            loadBalancerPublicIpNode.Tag              = targetPublicIp;
                            loadBalancerPublicIpNode.ImageKey         = "PublicIp";
                            loadBalancerPublicIpNode.SelectedImageKey = "PublicIp";
                            amazonRegionNode.Nodes.Add(loadBalancerPublicIpNode);
                        }

                        TreeNode loadBalancerNode = new TreeNode(targetLoadBalancer.TargetName);
                        loadBalancerNode.Tag              = targetLoadBalancer;
                        loadBalancerNode.ImageKey         = "LoadBalancer";
                        loadBalancerNode.SelectedImageKey = "LoadBalancer";
                        amazonRegionNode.Nodes.Add(loadBalancerNode);
                    }

                    if (instResponse != null)
                    {
                        _StatusProvider.UpdateStatus("BUSY: Processing Instances");
                        if (instResponse.Reservations.Count > 0)
                        {
                            foreach (var instanceResp in instResponse.Reservations)
                            {
                                foreach (var instance in instanceResp.Instances)
                                {
                                    var selectedInstances = _awsObjectRetriever.getInstancebyId(instance.InstanceId);

//                                    List<NetworkProfile_NetworkInterface> networkinterfaces = new List<NetworkProfile_NetworkInterface>();

                                    String vpcId = selectedInstances.Instances[0].VpcId.ToString();

                                    //Process LBs
                                    var    LBs            = _awsObjectRetriever.GetAllLBs().LoadBalancerDescriptions;
                                    string instanceLBName = "";

                                    foreach (var LB in LBs)
                                    {
                                        foreach (var LBInstance in LB.Instances)
                                        {
                                            if ((LB.VPCId == vpcId) && (LBInstance.InstanceId == instance.InstanceId))
                                            {
                                                if (LB.Scheme == "internet-facing")
                                                {
                                                    // BuildPublicIPAddressObject(LB);
                                                }

                                                instanceLBName = LB.LoadBalancerName;
                                                //BuildLoadBalancerObject(LB, instance.InstanceId.ToString());
                                            }
                                        }
                                    }

                                    //Process Network Interface
                                    // todo now BuildNetworkInterfaceObject(selectedInstances.Instances[0], ref networkinterfaces, LBs);

                                    //Process EC2 Instance
                                    // todo now BuildVirtualMachineObject(selectedInstances.Instances[0], networkinterfaces, storageAccountName, instanceLBName);

                                    string name = "";
                                    foreach (var tag in instance.Tags)
                                    {
                                        if (tag.Key == "Name")
                                        {
                                            name = tag.Value;
                                        }
                                    }

                                    TreeNode instanceTreeNode = new TreeNode(instance.InstanceId + " - " + name);
                                    instanceTreeNode.Tag = instance;
                                    amazonRegionNode.Nodes.Add(instanceTreeNode);

                                    Application.DoEvents();
                                }
                            }
                        }
                    }



                    if (amazonRegionNode.Nodes.Count > 0)
                    {
                        subscriptionNode.Nodes.Add(amazonRegionNode);
                    }
                    else
                    {
                        _LogProvider.WriteLog("Load_Items", "Not adding Amazon Region '" + region.DisplayName + "' to Source Node list, as it contains no resources to export.");
                    }
                }
                catch (Exception exc)
                {
                    _LogProvider.WriteLog("Load_Items", "AWS Exception - " + region.DisplayName + ": " + exc.Message);
                }
            }
        }
コード例 #23
0
        public async Task DoWorkAsync()
        {
            _logger.LogInformation("Update Background Service is running");
            try
            {
                _logger.LogInformation("Update Background Service is checking VPCs");
                if (context.VPCs.Any())
                {
                    DescribeVpcsResponse responseDescribeVPC = await ec2Client.DescribeVpcsAsync();

                    List <VPC> vpcs = await context.VPCs.ToListAsync();

                    foreach (VPC vpc in vpcs)
                    {
                        Boolean Flag = false;

                        foreach (Vpc AWSVPC in responseDescribeVPC.Vpcs)
                        {
                            if (vpc.AWSVPCReference.Equals(AWSVPC.VpcId))
                            {
                                Flag = true;
                                break;
                            }
                        }
                        if (Flag == false)
                        {
                            context.VPCs.Remove(vpc);
                        }
                    }
                    context.SaveChanges();
                    _logger.LogInformation("Update Background Service completed checking of VPCs");
                }
                if (context.VPCs.Any())
                {
                    VPC vpc = await context.VPCs.FindAsync(1);

                    if (context.Servers.Any())
                    {
                        _logger.LogInformation("Update Background Service is checking servers");
                        List <Server> servers = await context.Servers.ToListAsync();

                        DescribeInstancesResponse response = await ec2Client.DescribeInstancesAsync(new DescribeInstancesRequest
                        {
                            Filters = new List <Filter>
                            {
                                new Filter {
                                    Name = "vpc-id", Values = new List <string> {
                                        vpc.AWSVPCReference
                                    }
                                }
                            }
                        });

                        foreach (var server in servers)
                        {
                            foreach (var reservation in response.Reservations)
                            {
                                foreach (var instance in reservation.Instances)
                                {
                                    bool Flag = false;
                                    if (server.AWSEC2Reference.Equals(instance.InstanceId))
                                    {
                                        if (instance.State.Code == 0 && server.State != State.Starting)
                                        {
                                            server.State = State.Starting;
                                            Flag         = true;
                                        }
                                        else if (instance.State.Code == 16 && server.State != State.Running)
                                        {
                                            server.State = State.Running;
                                            Flag         = true;
                                        }
                                        else if (instance.State.Code == 64 && server.State != State.Stopping)
                                        {
                                            server.State = State.Stopping;
                                            Flag         = true;
                                        }
                                        else if (instance.State.Code == 80 && server.State != State.Stopped)
                                        {
                                            server.State = State.Stopped;
                                            Flag         = true;
                                        }
                                        if (server.Visibility == Visibility.Internet && (server.IPAddress != instance.PublicIpAddress || server.DNSHostname != instance.PublicDnsName) && server.State != State.Stopped)
                                        {
                                            server.IPAddress   = instance.PublicIpAddress;
                                            server.DNSHostname = instance.PublicDnsName;
                                            Flag = true;
                                        }
                                        else if (server.Visibility == Visibility.Internet && (server.IPAddress != instance.PublicIpAddress || server.DNSHostname != instance.PublicDnsName))
                                        {
                                            server.IPAddress   = "Public IP Address is not available when server is stopped";
                                            server.DNSHostname = "Public DNS Hostname is not available when server is stopped";
                                            Flag = true;
                                        }
                                        else if ((server.Visibility == Visibility.Extranet || server.Visibility == Visibility.Intranet) && (server.IPAddress != instance.PrivateIpAddress || server.DNSHostname != instance.PrivateDnsName))
                                        {
                                            server.IPAddress   = instance.PrivateIpAddress;
                                            server.DNSHostname = instance.PrivateDnsName;
                                            Flag = true;
                                        }
                                        if (Flag == true)
                                        {
                                            context.Servers.Update(server);
                                        }

                                        break;
                                    }
                                }
                            }
                        }
                        context.SaveChanges();
                    }
                    if (context.CloudWatchLogGroups.Any() && context.CloudWatchLogStreams.Any())
                    {
                        _logger.LogInformation("Update Background Service is checking cloudwatch groups");
                        List <CloudWatchLogGroup> allStreams = await context.CloudWatchLogGroups.ToListAsync();

                        foreach (CloudWatchLogGroup g in allStreams)
                        {
                            DescribeLogStreamsResponse response = await cwlClient.DescribeLogStreamsAsync(new DescribeLogStreamsRequest
                            {
                                LogGroupName = g.Name.Replace("@", "/")
                            });

                            foreach (LogStream ls in response.LogStreams)
                            {
                                Boolean Flag = false;
                                foreach (CloudWatchLogStream CWLS in g.LogStreams)
                                {
                                    if (ls.Arn.Equals(CWLS.ARN))
                                    {
                                        Flag = true;
                                        break;
                                    }
                                }
                                if (Flag == false)
                                {
                                    CloudWatchLogStream newS = new CloudWatchLogStream
                                    {
                                        ARN            = ls.Arn,
                                        CreationTime   = ls.CreationTime,
                                        FirstEventTime = ls.FirstEventTimestamp,
                                        LastEventTime  = ls.LastEventTimestamp,
                                        Name           = ls.LogStreamName,
                                        LinkedGroupID  = g.ID
                                    };
                                    if (g.Name.Equals("VMVPCLogs"))
                                    {
                                        newS.DisplayName = "Network Flow Log For Challenge Network Interface (" + newS.Name.Substring(0, newS.Name.Length - 4) + ")";
                                    }
                                    else if (g.Name.Equals("PlatformVPCLogs"))
                                    {
                                        newS.DisplayName = "Network Flow Log For Platform Network Interface (" + newS.Name.Substring(0, newS.Name.Length - 4) + ")";
                                    }
                                    else if (g.Name.Equals("@aws@elasticbeanstalk@User-Side@IIS-Log"))
                                    {
                                        newS.DisplayName = "IIS Logs for User Side Web Server";
                                    }
                                    else if (g.Name.Equals("@aws@elasticbeanstalk@Admin-Side@IIS-Log"))
                                    {
                                        newS.DisplayName = "IIS Logs for Admin Side Web Server";
                                    }
                                    else if (g.Name.Equals("@aws@elasticbeanstalk@User-Side@EBDeploy-Log"))
                                    {
                                        newS.DisplayName = "Elastic Beanstalk Deployment Tool Logs for User Side";
                                    }
                                    else if (g.Name.Equals("@aws@elasticbeanstalk@Admin-Side@EBDeploy-Log"))
                                    {
                                        newS.DisplayName = "Elastic Beanstalk Deployment Tool Logs for Admin Side";
                                    }
                                    else if (g.Name.Equals("@aws@elasticbeanstalk@User-Side@EBHooks-Log"))
                                    {
                                        newS.DisplayName = "Elastic Beanstalk Deployment Hook Logs for User Side";
                                    }
                                    else if (g.Name.Equals("@aws@elasticbeanstalk@Admin-Side@EBHooks-Log"))
                                    {
                                        newS.DisplayName = "Elastic Beanstalk Deployment Hook Logs for Admin Side";
                                    }
                                    else
                                    {
                                        newS.DisplayName = newS.Name;
                                    }

                                    if (!g.Name.Equals("RDSOSMetrics") || !g.Name.Contains("sns"))
                                    {
                                        context.CloudWatchLogStreams.Add(newS);
                                    }
                                }
                            }
                            foreach (CloudWatchLogStream CWLS in g.LogStreams)
                            {
                                Boolean Flag = false;
                                foreach (LogStream ls in response.LogStreams)
                                {
                                    if (CWLS.ARN.Equals(ls.Arn))
                                    {
                                        Flag = true;
                                        break;
                                    }
                                }
                                if (Flag == false)
                                {
                                    context.CloudWatchLogStreams.Remove(CWLS);
                                }
                            }
                        }
                        await context.SaveChangesAsync();
                    }
                    if (context.Templates.Any())
                    {
                        DescribeSnapshotsResponse response = await ec2Client.DescribeSnapshotsAsync(new DescribeSnapshotsRequest());

                        List <Template> templates = await context.Templates.FromSql("SELECT * FROM dbo.Templates WHERE AWSSnapshotReference = NULL").ToListAsync();

                        foreach (Template t in templates)
                        {
                            foreach (Snapshot s in response.Snapshots)
                            {
                                if (s.Description.Contains(t.AWSAMIReference))
                                {
                                    t.AWSSnapshotReference = s.SnapshotId;
                                    break;
                                }
                            }
                        }
                        await context.SaveChangesAsync();
                    }
                }
                _logger.LogInformation("Update Background Service has completed!");
            }
            catch (SqlException e)
            {
                _logger.LogInformation("Update Background Service faced an SQL exception! " + e.Message + " | " + e.Source);
                return;
            }
            catch (Exception e)
            {
                _logger.LogInformation("Update Background Service faced an exception! " + e.Message + " | " + e.Source);
                return;
            }
        }
        public static DescribeVpcsResponse Unmarshall(UnmarshallerContext _ctx)
        {
            DescribeVpcsResponse describeVpcsResponse = new DescribeVpcsResponse();

            describeVpcsResponse.HttpResponse = _ctx.HttpResponse;
            describeVpcsResponse.RequestId    = _ctx.StringValue("DescribeVpcs.RequestId");
            describeVpcsResponse.TotalCount   = _ctx.IntegerValue("DescribeVpcs.TotalCount");
            describeVpcsResponse.PageNumber   = _ctx.IntegerValue("DescribeVpcs.PageNumber");
            describeVpcsResponse.PageSize     = _ctx.IntegerValue("DescribeVpcs.PageSize");

            List <DescribeVpcsResponse.DescribeVpcs_Vpc> describeVpcsResponse_vpcs = new List <DescribeVpcsResponse.DescribeVpcs_Vpc>();

            for (int i = 0; i < _ctx.Length("DescribeVpcs.Vpcs.Length"); i++)
            {
                DescribeVpcsResponse.DescribeVpcs_Vpc vpc = new DescribeVpcsResponse.DescribeVpcs_Vpc();
                vpc.VpcId                  = _ctx.StringValue("DescribeVpcs.Vpcs[" + i + "].VpcId");
                vpc.RegionId               = _ctx.StringValue("DescribeVpcs.Vpcs[" + i + "].RegionId");
                vpc.Status                 = _ctx.StringValue("DescribeVpcs.Vpcs[" + i + "].Status");
                vpc.VpcName                = _ctx.StringValue("DescribeVpcs.Vpcs[" + i + "].VpcName");
                vpc.CreationTime           = _ctx.StringValue("DescribeVpcs.Vpcs[" + i + "].CreationTime");
                vpc.CidrBlock              = _ctx.StringValue("DescribeVpcs.Vpcs[" + i + "].CidrBlock");
                vpc.Ipv6CidrBlock          = _ctx.StringValue("DescribeVpcs.Vpcs[" + i + "].Ipv6CidrBlock");
                vpc.VRouterId              = _ctx.StringValue("DescribeVpcs.Vpcs[" + i + "].VRouterId");
                vpc.Description            = _ctx.StringValue("DescribeVpcs.Vpcs[" + i + "].Description");
                vpc.IsDefault              = _ctx.BooleanValue("DescribeVpcs.Vpcs[" + i + "].IsDefault");
                vpc.NetworkAclNum          = _ctx.StringValue("DescribeVpcs.Vpcs[" + i + "].NetworkAclNum");
                vpc.ResourceGroupId        = _ctx.StringValue("DescribeVpcs.Vpcs[" + i + "].ResourceGroupId");
                vpc.CenStatus              = _ctx.StringValue("DescribeVpcs.Vpcs[" + i + "].CenStatus");
                vpc.OwnerId                = _ctx.LongValue("DescribeVpcs.Vpcs[" + i + "].OwnerId");
                vpc.SupportAdvancedFeature = _ctx.BooleanValue("DescribeVpcs.Vpcs[" + i + "].SupportAdvancedFeature");
                vpc.AdvancedResource       = _ctx.BooleanValue("DescribeVpcs.Vpcs[" + i + "].AdvancedResource");
                vpc.DhcpOptionsSetId       = _ctx.StringValue("DescribeVpcs.Vpcs[" + i + "].DhcpOptionsSetId");
                vpc.DhcpOptionsSetStatus   = _ctx.StringValue("DescribeVpcs.Vpcs[" + i + "].DhcpOptionsSetStatus");

                List <string> vpc_vSwitchIds = new List <string>();
                for (int j = 0; j < _ctx.Length("DescribeVpcs.Vpcs[" + i + "].VSwitchIds.Length"); j++)
                {
                    vpc_vSwitchIds.Add(_ctx.StringValue("DescribeVpcs.Vpcs[" + i + "].VSwitchIds[" + j + "]"));
                }
                vpc.VSwitchIds = vpc_vSwitchIds;

                List <string> vpc_userCidrs = new List <string>();
                for (int j = 0; j < _ctx.Length("DescribeVpcs.Vpcs[" + i + "].UserCidrs.Length"); j++)
                {
                    vpc_userCidrs.Add(_ctx.StringValue("DescribeVpcs.Vpcs[" + i + "].UserCidrs[" + j + "]"));
                }
                vpc.UserCidrs = vpc_userCidrs;

                List <string> vpc_natGatewayIds = new List <string>();
                for (int j = 0; j < _ctx.Length("DescribeVpcs.Vpcs[" + i + "].NatGatewayIds.Length"); j++)
                {
                    vpc_natGatewayIds.Add(_ctx.StringValue("DescribeVpcs.Vpcs[" + i + "].NatGatewayIds[" + j + "]"));
                }
                vpc.NatGatewayIds = vpc_natGatewayIds;

                List <string> vpc_routerTableIds = new List <string>();
                for (int j = 0; j < _ctx.Length("DescribeVpcs.Vpcs[" + i + "].RouterTableIds.Length"); j++)
                {
                    vpc_routerTableIds.Add(_ctx.StringValue("DescribeVpcs.Vpcs[" + i + "].RouterTableIds[" + j + "]"));
                }
                vpc.RouterTableIds = vpc_routerTableIds;

                List <string> vpc_secondaryCidrBlocks = new List <string>();
                for (int j = 0; j < _ctx.Length("DescribeVpcs.Vpcs[" + i + "].SecondaryCidrBlocks.Length"); j++)
                {
                    vpc_secondaryCidrBlocks.Add(_ctx.StringValue("DescribeVpcs.Vpcs[" + i + "].SecondaryCidrBlocks[" + j + "]"));
                }
                vpc.SecondaryCidrBlocks = vpc_secondaryCidrBlocks;

                List <DescribeVpcsResponse.DescribeVpcs_Vpc.DescribeVpcs_Tag> vpc_tags = new List <DescribeVpcsResponse.DescribeVpcs_Vpc.DescribeVpcs_Tag>();
                for (int j = 0; j < _ctx.Length("DescribeVpcs.Vpcs[" + i + "].Tags.Length"); j++)
                {
                    DescribeVpcsResponse.DescribeVpcs_Vpc.DescribeVpcs_Tag tag = new DescribeVpcsResponse.DescribeVpcs_Vpc.DescribeVpcs_Tag();
                    tag.Key    = _ctx.StringValue("DescribeVpcs.Vpcs[" + i + "].Tags[" + j + "].Key");
                    tag._Value = _ctx.StringValue("DescribeVpcs.Vpcs[" + i + "].Tags[" + j + "].Value");

                    vpc_tags.Add(tag);
                }
                vpc.Tags = vpc_tags;

                List <DescribeVpcsResponse.DescribeVpcs_Vpc.DescribeVpcs_Ipv6CidrBlock> vpc_ipv6CidrBlocks = new List <DescribeVpcsResponse.DescribeVpcs_Vpc.DescribeVpcs_Ipv6CidrBlock>();
                for (int j = 0; j < _ctx.Length("DescribeVpcs.Vpcs[" + i + "].Ipv6CidrBlocks.Length"); j++)
                {
                    DescribeVpcsResponse.DescribeVpcs_Vpc.DescribeVpcs_Ipv6CidrBlock ipv6CidrBlock = new DescribeVpcsResponse.DescribeVpcs_Vpc.DescribeVpcs_Ipv6CidrBlock();
                    ipv6CidrBlock.Ipv6CidrBlock = _ctx.StringValue("DescribeVpcs.Vpcs[" + i + "].Ipv6CidrBlocks[" + j + "].Ipv6CidrBlock");
                    ipv6CidrBlock.Ipv6Isp       = _ctx.StringValue("DescribeVpcs.Vpcs[" + i + "].Ipv6CidrBlocks[" + j + "].Ipv6Isp");

                    vpc_ipv6CidrBlocks.Add(ipv6CidrBlock);
                }
                vpc.Ipv6CidrBlocks = vpc_ipv6CidrBlocks;

                describeVpcsResponse_vpcs.Add(vpc);
            }
            describeVpcsResponse.Vpcs = describeVpcsResponse_vpcs;

            return(describeVpcsResponse);
        }