public override void ExecuteCmdlet()
 {
     GetPSResourceGroupLogParameters parameters = new GetPSResourceGroupLogParameters
         {
             Name = Name,
             DeploymentName = DeploymentName,
             All = All.IsPresent
         };
     WriteObject(ResourcesClient.GetResourceGroupLogs(parameters), true);
 }
        /// <summary>
        /// Gets event logs.
        /// </summary>
        /// <param name="parameters">Input parameters</param>
        /// <returns>Logs.</returns>
        public virtual IEnumerable<PSDeploymentEventData> GetResourceGroupLogs(GetPSResourceGroupLogParameters parameters)
        {
            if (parameters.All)
            {
                EventDataListResponse listOfEvents =
                    EventsClient.EventData.ListEventsForResourceGroup(new ListEventsForResourceGroupParameters
                        {
                            ResourceGroupName = parameters.Name,
                            StartTime = DateTime.UtcNow - TimeSpan.FromDays(EventRetentionPeriod),
                            EndTime = DateTime.UtcNow
                        });
                return listOfEvents.EventDataCollection.Value.Select(e => e.ToPSDeploymentEventData());
            }
            else if (!string.IsNullOrEmpty(parameters.DeploymentName))
            {
                DeploymentGetResult deploymentGetResult;
                try
                {
                    deploymentGetResult = ResourceManagementClient.Deployments.Get(parameters.Name,
                                                                                   parameters.DeploymentName);
                }
                catch
                {
                    throw new ArgumentException(string.Format(Resources.DeploymentWithNameNotFound, parameters.DeploymentName));
                }

                return GetDeploymentLogs(deploymentGetResult.Deployment.Properties.CorrelationId);
            }
            else
            {
                DeploymentListResult deploymentListResult;
                try
                {
                    deploymentListResult = ResourceManagementClient.Deployments.List(parameters.Name,
                                                                            new DeploymentListParameters
                                                                                {
                                                                                    Top = 1
                                                                                });
                    if (deploymentListResult.Deployments.Count == 0)
                    {
                        throw new ArgumentException(string.Format(Resources.NoDeploymentWereFound, parameters.Name));
                    }
                }
                catch
                {
                    throw new ArgumentException(string.Format(Resources.NoDeploymentWereFound, parameters.Name));
                }

                return GetDeploymentLogs(deploymentListResult.Deployments[0].Properties.CorrelationId);
            }
        }
        /// <summary>
        /// Gets event logs.
        /// </summary>
        /// <param name="parameters">Input parameters</param>
        /// <returns>Logs.</returns>
        public virtual IEnumerable <PSDeploymentEventData> GetResourceGroupLogs(GetPSResourceGroupLogParameters parameters)
        {
            if (parameters.All)
            {
                EventDataListResponse listOfEvents =
                    EventsClient.EventData.ListEventsForResourceGroup(new ListEventsForResourceGroupParameters
                {
                    ResourceGroupName = parameters.Name,
                    StartTime         = DateTime.UtcNow - TimeSpan.FromDays(EventRetentionPeriod),
                    EndTime           = DateTime.UtcNow
                });
                return(listOfEvents.EventDataCollection.Value.Select(e => e.ToPSDeploymentEventData()));
            }
            else if (!string.IsNullOrEmpty(parameters.DeploymentName))
            {
                DeploymentGetResult deploymentGetResult;
                try
                {
                    deploymentGetResult = ResourceManagementClient.Deployments.Get(parameters.Name,
                                                                                   parameters.DeploymentName);
                }
                catch
                {
                    throw new ArgumentException(string.Format(Resources.DeploymentWithNameNotFound, parameters.DeploymentName));
                }

                return(GetDeploymentLogs(deploymentGetResult.Deployment.Properties.CorrelationId));
            }
            else
            {
                DeploymentListResult deploymentListResult;
                try
                {
                    deploymentListResult = ResourceManagementClient.Deployments.List(parameters.Name,
                                                                                     new DeploymentListParameters
                    {
                        Top = 1
                    });
                    if (deploymentListResult.Deployments.Count == 0)
                    {
                        throw new ArgumentException(string.Format(Resources.NoDeploymentWereFound, parameters.Name));
                    }
                }
                catch
                {
                    throw new ArgumentException(string.Format(Resources.NoDeploymentWereFound, parameters.Name));
                }

                return(GetDeploymentLogs(deploymentListResult.Deployments[0].Properties.CorrelationId));
            }
        }
        public void GetAzureResourceGroupLogOutputsProperties()
        {
            List<PSDeploymentEventData> result = new List<PSDeploymentEventData>();
            result.Add(new PSDeploymentEventData
                {
                    EventId = "ac7d2ab5-698a-4c33-9c19-0a93d3d7f527",
                    EventName = "Start request",
                    EventSource = "Microsoft Resources",
                    Channels = "Operation",
                    Level = "Informational",
                    Timestamp = DateTime.Now,
                    OperationId = "c0f2e85f-efb0-47d0-bf90-f983ec8be91d",
                    OperationName = "Microsoft.Resources/subscriptions/resourcegroups/deployments/write",
                    Status = "Succeeded",
                    SubStatus = "Created",
                    ResourceGroupName = "foo",
                    ResourceProvider = "Microsoft Resources",
                    ResourceUri =
                        "/subscriptions/ffce8037-a374-48bf-901d-dac4e3ea8c09/resourcegroups/foo/deployments/testdeploy",
                    HttpRequest = new PSDeploymentEventDataHttpRequest
                    {
                        Url = "http://path/subscriptions/ffce8037-a374-48bf-901d-dac4e3ea8c09/resourcegroups/foo/deployments/testdeploy",
                        Method = "PUT",
                        ClientId = "1234",
                        ClientIpAddress = "123.123.123.123"
                    },
                    Authorization = new PSDeploymentEventDataAuthorization
                    {
                        Action = "PUT",
                        Condition = "",
                        Role = "Sender",
                        Scope = "None"
                    },
                    Claims = new Dictionary<string, string>
                            {
                                {"aud", "https://management.core.windows.net/"},
                                {"iss", "https://sts.windows.net/123456/"},
                                {"iat", "h123445"}
                            },
                    Properties = new Dictionary<string, string>()
                });

            GetPSResourceGroupLogParameters expected = new GetPSResourceGroupLogParameters();

            resourcesClientMock.Setup(f => f.GetResourceGroupLogs(It.IsAny<GetPSResourceGroupLogParameters>()))
                .Returns(result)
                .Callback((GetPSResourceGroupLogParameters r) => expected = r);

            cmdlet.Name = "foo";

            cmdlet.ExecuteCmdlet();

            Assert.Equal(1, result.Count());
            Assert.Equal("foo", expected.Name);
        }